Facebookが公開し、GitHubのAPI v4にも採用されたことでも知られるGraphQL。旧来のRESTfulな形式のAPIを爆発的に置き換えていっている!とは言えませんが最近少しずつ国内でも採用事例を聞くようになりました。
このトークではGraphQLの魅力について話し懇親会で話のネタに出来るくらいに分かった気になるトークをしたいと思います。
Raspberry Pi でLEDを光らせたりするのは、Python / C だけだと思っていませんか。
このトークでは電子工作の基礎から、PHP から Raspberry Pi の GPIO を制御する方法や、OSS のライブラリを紹介します。
そんな方の背中を少しでも押せたらいいなと思います。
昨年のベストトーク賞「SOLIDの原則ってどういうふうに使うの?」でも話題になったとおり、設計の難度を上げるのは「バリエーション」です。
そのバリエーションの発生パターンの見極め・予測法こそがプログラマーとしての経験値と言っても過言ではないと思います。
いざバリエーションが発生してから「しまった…!」とならないように、発生しうるバリエーションの予測精度を上げるには設計時にどこに注目・注意すればいいか?のコツをお伝えします。
この数ヶ月、Rust版、PHP版ファミコンエミュレータを読み、Go言語に移植しています。
PHP版を元に、PHPでどのようにファミコンエミュレータを実装しているのか、Goで再実装した時に見えた違いなどを解説。
そもそも2019年にもなって何でファコミンエミュレータなのか、何が楽しいのか、魅惑のエミュレータワールドを通して体験できたコンピュータの世界をご紹介。
今話題のSwooleはPHPにイベント形式の非同期処理をエクステンションという形で導入することができます。これを利用することで、PHPのフレームワークを高速化してみようと試みます。一般に、フレームワークや外部ライブラリを利用していると、それらのソースファイルを読み込むために多くの時間がかかるようで、Swooleを使ってイベント形式のサーバを建てることで、この読み込みコストをほぼゼロにできると期待できます。今回はLaravelを例に取り、Swooleによる高速化の導入、及び、Swooleによってどれだけ高速化できたかを、apacheやfpmなどの別の形式のサーバと比較します。また、Swooleの導入によって発生する問題についても言及します。
日ごろからお世話になっているインターネット。
そのインターネットはネットワーク同士を接続した巨大なネットワークです。
そのネットワーク内でルータがどう動いているのか、ネットワークをつなげるためルータがどれだけ頑張っているのかを少しでも理解したいと思い、ソフトウェアルータを自作しました。
コアな部分はErlangで実装し、追加のモジュール部分はElixirで実装しました。
内容はL2、L3の実装、ルーティングの実装を行い、さらにL4以上をコントロールするためのモジュール実装をどのように行ったのかを話せればと思います。
ネットワークはアプリケーションにない面白いところが沢山あります。
あまり意識することのないネットワークに焦点を当ててみてはどうですか。
少しでもネットワークのことに興味を持ってもらえると嬉しいです。
プログラムを書くときに計算量を意識していますか?計算量の基本を理解することで、サービスが成長したときに問題を起こしにくいプログラムを作成することができます。簡単なプログラムを例にして、まず計算量という概念に慣れてみましょう。
長年PHPをやってきた普通のウェブエンジニアが、ある日突然コンパイラの魅力にとりこまれ、寝ても覚めてもコンパイラのことしか考えられなくなりました。
こんなに面白いものがあったのかと。
まずC言語コンパイラをCで書き(写経)、つぎにC言語コンパイラをGoで書き(移植)、気がついたらGo言語コンパイラをGo言語で書いている自分がいました。
そこで見えてきたものは、それまでWeb開発で見ていた景色とは全然違う世界でした。
値とは何か。式とは何か。解釈とは何か。
コンパイラを作る者は、それらの問に対して自分なりの答えを見つけなければなりません。
Goコンパイラに挑戦して1日目Hello wordがで動いたとき、ソフトウェアエンジニアとして非連続的な成長をしつつあるのを実感しました。
コンパイラが書きたい。もっと書きたい。
コンパイラ作りの魅力について語ります。
皆さんの日常生活には欠かせない、ドメインという仕組み。
なんとなく使っていませんか!?
例えば、何文字まで長く出来るかわかりますか?
(タイトルでネタバレ)
ドメインを最長にした際、
・メールアドレスはどうなる?
・Nginxの設定は?
・サーバーレスは?
・SSL証明書は?
今回は仕様最長のドメインで実際にサイト運営した経験を題材に、
RFCの仕様からFirebase検討までの奮闘記をお話します。
とある日に、いつものようにPHP 5.6でmbstringの関数へ引数をarray()にして挙動を楽しんでいました。
同じように当時の PHP 7.3.0 RC5 に対して、挙動を楽しんでいると、
mb_check_encodingのときに、Segfaultになりました。
報告したところ、修正いただきました。
今回は、そのバグをどう見つけて、どう報告したのかということと、
php-src上での問題か、スクリプト上の問題かを切り分ける方法、
そもそもPHPのビルトイン関数へ(わざと|誤って|たまたま)マニュアルにない引数を加えるとどうなるのか、
7.2からmb_check_encodingとmb_convert_encodingにはarrayが使えるようになっていること
などの発見したこと、報告した後の心境を共有させていただきたいなと思います。
PHPerKaigi2019にてデザインスポンサーとしてWebサイトの制作をさせていただきました!PHPerKaigi2019のサイトができるまでの過程において、デザインに込めた想いやワークフロー、Nuxt.jsでの実装の内容でお話したいと思います。
PHPでURLルーティングをつくってみた話をします。
普段フレームワークを活用していると、ルーティングの実装はフレームワークが用意したパッケージや外部ライブラリ依存であることが多く、自作するモチベーションやメリットはあまり浮かばないかもしれません。
今回、実用性のあるものを作り上げるのは難しかったですが、敢えて車輪の再発明に挑戦することで
様々なライブラリの実装パターンや実行速度のパフォーマンスの懸念点を知る機会になったり、
アルゴリズムの実装力(エンジニアの基礎体力)を鍛える良い練習にもなりました。
15分の時間内でURLルーティングを自作するメリットと楽しさについてお話できればと思います。
PhpStormを知っていますか?
PHPStormはプラグインのインストールや設定カスタマイズをしなくても様々な便利な機能がついている統合開発環境です。
しかし、自分のプロジェクトに合わせて多少の設定を行うと、コードリーディングがさらに楽になります。
このトークではPHPユーザー向けに読みたいコードを探し出すための検索機能から、静的解析連携、テスト・デバッグを使ってコードを理解する方法などを説明して、PhpStormがプログラマのコードを理解する能力をどう拡張してくれるか紹介します。
uzullaさんのPHPerKaigi2018「大統一PHP」(https://speakerdeck.com/uzulla/da-tong-php)で紹介されているSwooleという非同期かつ、Coroutineの仕組みをもったPHPのextensionがあります。
Swooleを用いたフレームワークはいくつかあります。
今回、EasySwoole(v2,v3)、Swoft、Laravel-Swooleの4つを比べてみた結果をお話しします。
それぞれのフレームワークのISUCON8予選のベンチマークの結果をお伝えします(恒例)
No.1 Swooleフレームワークはどれだ!
みなさん試行錯誤してPHPサービスを止めないように努力されていると思いますが、
現実世界上でSLA100%を完全保証することは不可能です
では最速で復帰させる為にどの様な努力を行えば宜しいのでしょうか?
僕が行っている最速で「気付く」方法を赤裸々に語ります
PHPのエラーが発生して何が起きたかを慌てるのではなくて、
発生した瞬間に認識する方法を思考します