PHPカンファレンス福岡2024に行ってきました。PHPカンファレンスが初参加で不安6割、楽しみ4割だったのですが結果的に会場や人から良いエネルギーを貰えた気がするので、熱が冷めないうちに感想や会場で感じた雰囲気などをまとめたいと思います。
(当日は情報量がすごく、まとめたことに誤りがあるかもしれません…。それを前提に置いた上で個人の感想として捉えていただけると幸いです。)
感想は以下の構成で述べます。
(感想ではタメ口きいてますが、リスペクトを持って述べてるので許してください…。)
- 発表名
- 一言まとめ
- 感想
視聴したものについての感想
- PHPコードの実行モデルを理解する
- PHPはPHPコードからOPコードにコンパイルされたものをプログラムとして実行する
PHPの文脈でコンパイルという単語を聞くとは思っていなかった。別の登壇との知識とも併せてPHPコードがZend Engineと言う仮想マシン(コンパイラ?)により、OPコードにされて実行されると言う話を聞いて、以前学んだPythonも仮想マシンによりコンパイルされると言うのを思い出し、意外な共通点があると言うことが分かった。
- PHPはPHPコードからOPコードにコンパイルされたものをプログラムとして実行する
- 並行処理を学びGuzzleと仲良くなる
- GuzzileはHTTPリクエストを扱いやすくしてくれている
並行処理と並列処理の話から始まり、この時点でだいぶ着いて行けなかったのだが、最後のまとめで発された上記の一文だけは頭に刻み込まれた。並行処理は一つのCPUが同時に実行しているように見せかけているもので、並列処理は複数のCPUが同時に処理を行うこと、みたいな理解であっているだろうか…
- GuzzileはHTTPリクエストを扱いやすくしてくれている
- 書き込み処理をスケールさせるために必要な非同期処理の基本と考え方
- DBのパフォーマンスチューニングのアプローチ
- 垂直分散、水平分散
- パーティショニング
- CQRS
「データベースのスケールアップには、限界がある」と言う話から始まり、DBのパフォーマンスチューニングに関する話がメインだった。会場の席をテーブルに例えるなど話の抽象化が自然でイメージがしやすかった。個人的に感じたこととして口語で発表されていたことでなんだか親近感?を覚えることができ、分からないながらも楽しく話を聞くことができた気がする。特に印象に残ったのは、「良い仕様は良い設計を生む」というニュアンスの言葉。仕様をよくするために業務知識(ドメイン)に対する理解を深めようという締めだった。
- DBのパフォーマンスチューニングのアプローチ
- PHPStanの中を知ってコントリビュートしよう
- PHPStanすごい!(脳死)
PHPStanの前提知識ゼロ + 展開される話が高度(に思えた) ということでほとんど着いて行くことが出来なかったです。ただ、PHPに型を付ける事が出来ることを「良し」と思うひとは多くいるので、自分もその感覚を覚えられるようになりたいなと思いました。
- PHPStanすごい!(脳死)
- ぼくらの画面にhello worldが届くまで
- PHPの処理系はC言語で書かれており、その中に独自の言語も書かれており色々とすごい
他の参加者の方から「低レイヤ寄りの話が聞ける」と言うような情報をいただいていたのでどんなものかと思っていたら、想像以上だった。まず、C言語と言う単語が出てくるとは思わなかった。後半にいくに連れて話がコード寄りで高度になっていき、着いていくことができなかった。ただ、前半では、モチベーションに関する話がされており「実装を知ることは楽しい、美味しさ2倍」という愉快な文言やコードの読み方についての話がされており、聞いていてとても励みになった。特に「読み解くコード」とそのメモを並べて理解を進めていると言うことを聞いて自分にもできそうと思わせてくれた。
- PHPの処理系はC言語で書かれており、その中に独自の言語も書かれており色々とすごい
- WebサーバーとPHP実行方式をきちんと理解してPHPランタイムを適切に使い分ける
- NginxとApacheの違いはPHPの実行方式にある
以前にこの方のphp-fpmについて解説するzennの記事を見て、それについて詳しく聞けるかもと思い視聴。実際はまた別の切り口で話が展開されたが、それも含めて面白かった。「NginxとApacheの違いはC10K問題によるもの」と言う認識を改めてPHPの実行方式による違いという話が印象深かった。ただ、その後の詳細はまた難しくどんな話だったかを思い出せない…。mod_phpはモジュール単位で実行し、Nginxはプロセス単位で実行する…みたいな話だった気がする。Youtubeにアーカイブが欲しい(切実)
- NginxとApacheの違いはPHPの実行方式にある
- PHPUnit 11 概論
- PHPUnit11で非推奨になり、PHP12で削除になるものがある
登壇者の02さんと会場で話す機会があり、Laravelの理解の深め方を過去の経験から話してくださり、非常にためになったので気になり参加。PHPのテストについて前提知識ゼロだったが、スライドが分かりやすくどういう構成でどういう話なのかをなんとなく掴むことが出来た。PHPUnitのGitHubのissueから抜粋して非推奨になるものは「設計に問題がある」という話が印象的だった。
- PHPUnit11で非推奨になり、PHP12で削除になるものがある
- AWS SDK for PHPによるAmazonECS構成管理
- IaCツールは偉大
PHPのAWS SDKを使ってコンテナの構成でアプリケーションを建てて最終的に動かす所までできているのが印象的だった。話の着地点としてAWS CDKの差分デプロイの便利さなどにスポットライトが当てられていることにおもむきを感じた。AWS CDKは数少ない自分が触ったことのある技術なので比較的、話に着いていけている感じがあって少し嬉しかった。
- IaCツールは偉大
- 過去や未来を扱うのは難しい?過去と未来に立ち向かうための勘所
- 過去、未来を扱う複雑さは状態を扱う複雑さに起因する
アプリケーション構成の話と ジョブとキュー のような単語が出てきた気がする。「データの更新は前のデータを書き換えて、古いデータは消えるので削除と同じ」という話が出てきて「確かに~」と思った。考え方寄りの話が続いて興味深かった。元データを削除すると紐づくデータも削除されるということの対策として元データをそもそも更新せず、元データの参照用のテーブルを作ってそれを更新するようにするという話が聞いたことがない考え方で学びになった。理解できているかは分からない…
- 過去、未来を扱う複雑さは状態を扱う複雑さに起因する
- composer dump-autoloadを「なんとなく使う」から「理解して使う」になる
- PSR-4とclassmapの両方が設定にハマった時はclassmapが優先される
autoloadには、PSR-4、classmap、files の主に3つの方式があるという話から始まり、最終的にcomposer dump-autoloadがどんな時に必要でどんな時に不要なのかという話に着地した。先輩が業務でhelper関数を用意した際にリモートから持ってきたコードが動かなくて、composer dump-autoload をするように言われて実行したら動いたということがあったが、その時何故動いたのかが何となく分かった気がした。
- PSR-4とclassmapの両方が設定にハマった時はclassmapが優先される
LTE
- ゼロから始める型安全なGraqhQL開発 with Laravel + LightHouse + TypeScript
- GraphQLは開発者体験が良い?
並んでいる技術スタックからモダンな雰囲気とキラキラした感じが伝わって眩しかった。LaravelでもGraphQLが使えるというのは知らなかったので、ここで知ったことがいつか活きるといいなと思った。
- GraphQLは開発者体験が良い?
- 凝集性から考えるLaravelのmiddleware, routingに書くかPolicyに書くか?
- 認可は操作と関連度が強い
正直難しかった。業務の管理画面などのコードでPolicyは使われているのを覗いたことがあるがEntityやObject・Valueというアーキテクチャ?よりの話が出てきて最後は着いていけなかった。
- 認可は操作と関連度が強い
- 倒して、倒して、倒しまくれ!–PHP&Laravelのバージョンアップの戦い
- スライドの完成度、声の大きさ、ガッツに溢れていた
辛そうな題材に反して、冒険RPG風のスライドと気合の入った発表で展開されてアーティストのライブを見ているようだった。会場も笑いに溢れており、途中で疲れが出ている感じもライブ感を強調していた。バージョンが上がるに連れて移行の難易度が下がっているような感じが印象的だった。ラスボスのCentOSからのサーバー移行のくだりは失敗のプロセスも含めて少し感動した。
- スライドの完成度、声の大きさ、ガッツに溢れていた
後から思った「こうしておけばよかったな」と思うこと
- 参加の前に戦略を立てておくべきだった。
- ざっくりとした目標はあった
-> 福岡のPHPエンジニアの知り合いを増やす
結果としては、参加者で話した人のほとんどが県外の人で奇跡的な確率で福岡の人と話すことが出来ませんでした。
-> 県外から来る人は、アクティブな人多めなので自分でもコミュニケーションが取れたのかもと雑に考察してみる…
- ざっくりとした目標はあった
僕みたいなしくじりをしないよう以下にイベントについて興味がある人、参加を考えている人向けに戦略を考えてみました。
- 参加者とのコミュニケーションについて
前提にあると良さげなマインド
- 参加者は色々な人と話したいという人が多い
- 自分が話さなくてもいい、他の人の話を聞くスタンスが心理的ハードルを下げる
上記のマインドは自分が会場で実際に感じたこと、他の参加者の方から聞いたことです。話のきっかけは難しいかもしれませんが、「3分だけ話しどうですか?」みたいな感じで時間の制約を作って色々な人に話しかけてみるのはアリかもしれません。あと、技術に焦点を当て過ぎなくても相手も人間なので世間話とか会場にあるお菓子の話題から入るとかもアリだと思いました。自分はこの辺りで話をすることにきっかけを求めたり、技術の話をすることにこだわり過ぎた節があり、会話のハードルを自分で上げてしまいました。
ただ、ほとんど受け身的だったのにも関わらず、両手で数え切れるくらいの人とは話が出来たというかお話をさせてもらえたのでコミュ力に自信が無い方でも参加できると思います。
早めに会場に着いておくと、同じく早めに会場に着いた人と共通点が生まれるので話しやすくなるかもしれません(自分がそうでした笑)
まとめ
全体的に登壇する人の言語化力や県外から参加する人のアクティブさなど目が行く所はたくさんありましたが、振り返ってみると「楽しむことが出来たんだなぁ」と思いました。当日知り合った方たちとご飯を食べに行くなど貴重な体験もできたのも含めて参加して良かったです。
コメント