Yappli Tech Blog

株式会社ヤプリの開発メンバーによるブログです。最新の技術情報からチーム・働き方に関するテーマまで、日々の熱い想いを持って発信していきます。

PHP Conference Japan 2022に参加・登壇してきました!

サーバーサイドエンジニアの田実です!

PHP Conference Japan 2022 に参加・登壇してきました!今回はそのレポートになります!

登壇してきたよ

今回は業務に全く関係ない話ですが登壇してきました!

speakerdeck.com

プログラミング言語のソースコードをいつか読んでみたいなと以前から思っていたのですが、なんとなくC言語難しそう・実装難しそうというイメージが強く敬遠してました。 実際やってみると、php-srcに関する記事*1を読みつつ、1つずつステップをクリアしていった結果、ある程度読むことができました。 プログラミング言語がどうやって動くのかをコードを読んだりデバッグしたりして確認していく過程はかなり面白く、この感動体験を共有したいなという思いでCfPを提出しました。

php-src はいくらでも話せてしまうトピックではあるのですが、C言語の知識があまり無い状態で四苦八苦してコードを読んでいった自身の体験をベースに、php-srcを読んだことがない人をターゲットに構成することにしました。特にデバッグ周りの設定はかなり苦労したところで*2、デバッグができることでコードをかなり効率よく読めた実感もあったため冒頭で紹介しています。 結果としてphp-srcを読むための事前知識が9割な内容になってしまったのですが、今回の資料をきっかけとしてphp-srcを読んでみようと思ってくれた人がいたら嬉しいです!

個人的に面白かったトーク

いちユーザーが PHP に新機能を追加するまで - Random Extension 5.x

組み込みの拡張機能の提案(RFC)から実装・マージまでの道のりについてのトークでした。 トークを聞くまではRandom Extensionが組み込まれた、という結果しか知らなかったのですが、トークを聞くと実装・マージまでの道のりが大変すぎて完遂したの凄すぎです…! 知識力や実装力だけではなくコミュニケーション力・継続力のようなスキルの重要性を痛感しました。 個人的にはsorryの話が結構刺さっていて、建設的な振る舞いとして謝罪より感謝を意識しないとなと思いました。 (多分自分のコードがプロダクトをバグらせた場合、頭では謝らないほうが良いことをわかっていても脊髄反射的に謝ってしまう気がしますw)

導入から 10 年、PHP の trait は滅びるべきなのか ーーその適切な使いどころと弱点、将来について

個人的にはtraitはかなりうまく使わないと可読性や保守性が悪くなる印象があり、あまり積極的に使いたくはないなと思っていました。 とはいえ各種フレームワークでうまく利用されていることも知っていたので、どう付き合っていくべきかというのを考えていたりしたのですが このトークではtraitをオブジェクト指向の観点でメリット・デメリット、解決している課題などを掘り下げて紹介されていて、traitの理解をさらに深めることができました。 ちなみにこちらの方もtrait定数のRFCから実装まで完遂されていて凄いの一言に尽きます…w

開発組織の生産性を可視化する ~ State of DevOpsとfour keysとは ~

ヤプリではお客様により価値を提供すべくFour Keysなどの指標をうまく活用できないか検討しています。 こちらのトークでは参考文献を交えてFour Keysについてとてもわかりやすく説明されていました。 特にFour Keysの運用についても触れられていたのが興味深かったです。

スケールアウト可能なマネージドデータベースサービスTiDB Cloudのご紹介

最近はNewSQLがポツポツ出始めているように思いますが、ヤプリでもOLTPとOLAPの良いとこ取りをしたい、RDBでありながらWriteもスケールさせたい、というニーズが出てきていたりします。 TiDBはまさにそういった課題を解決するソリューションで、自前でシャーディングやETLをせずとも利用側からみて1つのDBエンドポイントでこれらを良い感じに利用できるのは便利だなと思いました。

エラーと向き合い、自信を持って サービス開発に取り組み、前に進む

組織・チームとしてエラーにどう向き合うかという話をされていました。 チーム巻き込んでうまくやっていくのがベストだと思いつつも、少し気を抜くと正論の罠に陥る感じがしているのですが、その解決策として「キレイな庭を作る」というアクションは興味深かったです。 総じてチーム開発・プロダクト開発のヒントが散りばめられておりとても学びになりました!

20年ものの巨大レガシープロダクトをPHP 8.0にアップデートした際の対策と得られた知見

ヤプリもPHP8化していかないといけないのですが、比較演算の変更大変だなぁという印象を強く受けましたw 解決方法としてphp-srcに手を入れているのは凄い…。Opcodeのハンドラー関数いじっている感じなんですかね?ぜひコードを読んでみたいなと思いましたw

Psalmで"完全に理解した"静的解析

静的解析ツールであるPsalmがどういう仕組みで動いているのかを解説されているトークでした。 最後に紹介されていたコードリーディングの豆知識で、私も難解なコードはGUIなデバッグをしたりメモ書きしたりして読んでいるのでとても共感できました。 ちなみにヤプリだとPHPStanを使って静的解析を行っており、PHPを静的型付け言語化することで不具合検知するなど大活躍中です。

Slimでサブシステムを構築してレガシーサービスにモダンな光を差し込ませた話

Slimのメリット・デメリットを実際の事例を元に紹介されているトークでした。 YappliのPHPアプリケーションでは一部独自フレームワークで実装されているのですが、テスタビリティや可読性・保守性の観点で良い感じにリファクタリングできないかと模索しております。 Slimだとフレームワークとして軽量で、ORMやテンプレートエンジンも自由に選択できるため良さそうだと思っていましたが、このトークを聞いてSlimに対する印象がさらにブラッシュアップされました。

感想

PHP Conference Japan 2022 はオンライン・オフラインのハイブリッド開催でした。 1日しか現地に行けなかったのですが、そこかしこで技術の話をしていたりオンラインでしか交流したことがない方とリアルにご挨拶できたり、オフラインの良さを感じることができました。

最後になりますが、スタッフの皆様、素晴らしいカンファレンスをありがとうございました! 登壇者・参加者の方もお疲れ様でした!

*1:特にPHP Internals BookやNikitaさんのブログ、Qiitaの記事、闇PHP界隈のスライドには大変お世話になりました

*2:登壇資料には書いてないですがmacOSのデバッグはハマりどころが多く、Linux上でのデバッグがおすすめだったりします