はじめに
開発基盤チームの桝井です。
2024/03/07~2024/03/09で開催されたPHPerKaigi 2024にいってまいりました!
今年は「ふるさと」練馬区立区民・産業プラザ Coconeriホールではなく中野セントラルパークカンファレンスが会場でした。
現地参加者6名で、そのうちの3名が関西からの遠征メンバーとなります。
レポート
そんな今年のPHPerKaigiを桝井の参加トークからの抜粋ではありますがレポートさせていただきます!
Readable 正規表現
普段書いているような(わかりづらい)正規表現は、実際のPHPのソースコードに落とし込むと絶対にかかないような深いネストのif, foreachを作ってしまっている状況である、ということを教えてくださったトークでした。
正規表現をその視点で考えたことです。結局はSRPなのですね🤔
原理原則は何にでも当てはまるものだな、と再確認できました。
Laravel OpenAPIによる "辛くない" スキーマ駆動開発
OpenAPI (Swagger)の活用が全くできていなかったのでとても参考になったトークでした。
SOLIDの依存性逆転の法則に準えて、OpenAPIをインターフェースに見立てて、APIドキュメント・仕様書やスキーマ・型情報・ツール郡との関係を図で整理されているところは本当にいい気づきでした。これが”Open”という意味なのかな!としっくり感を得ることができました。
フロントエンドエンジニアにURLを書かせたくない(意識させたくない)といった発言もされていてなるほどなと思いました。そもそもこのような視点がサーバーサイドとフロントエンドを疎結合で開発を進めるということなのだな、単にMockAPIを使えれば良いというわけでないのだな、ということです。OpenAPIに対しての知識知見理解不足も感じました。
フル活用はまだまだ遠いのでステップバイステップで開発プロセスに落とし込めれば思います。
初PHPでサーバーモデルについて考えた話
Webサーバーの技術的連続、プロセス・スレッドの話、今のPHPまわりの新しい潮流frankenPHPの話と繋がっていくトークでした。
php-fpmなどでPHPが動いた!よし!で終わらないでその仕組みを深掘りしていくところにギークさを感じました。見習わなくてなりませんね。
わたしはあまり詳しくない部分でしたのでファイルディスクリプレター, epollなど用語を知ることができただけでも大変学びになりました。スライドや動画を見返したり、FrankenPHPを触ったりしようと思います!
CSRF対策のやり方、そろそろアップデートしませんか
対策はLaravelの@csrfしておけばいい、で止まっていた知識からタイトル通りアップデートしていただいたトークでした。
トークン方式以外の方法として次の3つをオススメパターンとしてご紹介されていました。
CookieにSameSite属性の付与
サーバーサイドでのOriginヘッダーのチェック
サーバーサイドでのSec-Featch-*ヘッダーのチェック
トークン方式以外の方法をとるなら前2つはMust、もう1つは要件次第または送られてきたらチェックするといった具合です。わたし自身SPA開発しているとCSRF対策どうすればいいんだっけ?となっていたところだったのでとても参考になりました。
また使っているフレームワークの仕組みに興味を持とうというメッセージも好きです。
「わたしたちのコード」を安定させるためにフレームワークとの距離を保つ
FWの機能と密結合になっていると辛い、は実感があるのでこちらのトークは刺さりました。
現実的にLaravelから離れることは考えられないですが、ある境界を引くことはやはり大事ですね。
フレームワークに依存するAppと自分達のビジネスロジックを置くLibと境界を引く実用例、一方でLibでもDoctrineとは仲良くする決定をしているなど私たちOfferBoxのアーキテクチャ改善の参考になりそうなお話でした!
キャッシュと向き合う、キャッシュと共に生きる
なんか遅いしキャッシュしてみよう!と軽い気持ちでやると尾を引いてあとで痛い目に合いますよね。「キャッシュは麻薬」は本当に金言だと感じました。
キャッシュの効果が期待範囲に収まるか?をちゃんと見極めること、本当にキャッシュしかPf改善の方法がないのか?を考えることなど学びが本当に多かったです。
中でもイージーな選択肢に流れていないか?と常に疑問を持ち続けることが刺さりました。たとえば今Redisを使っているからRedisでいいよね、という安易な決定をしないということです。普段やりがちな思考パターンだったので改めないといけませんね。
保守開発メインでやってきたエンジニアが『リーダブルコード』を機能削除の観点から語る
複雑で他機能にも密結合な機能を削除するのは大変ですがリーダブルコードに書いてあること守れば楽になるというトークでした。そしてデジャブを感じるトークでもありました。
消すこと考えて機能を作るは確かに、という視点でした。
保守が楽しくてたまりません!とおっしゃっていたのも印象的で保守がんばろうという気持ちにさせていただけました。
超巨大!超重要!な処理のリファクタリングにどのように向き合っているか
フルフィルメントサービスのうち出庫依頼作成処理のリファクタリングを実践されて、どういうステップで進めたかというトークでした。
対象の業務ドメインが超複雑で考慮事項が膨大・全体把握ができている人がいないという状況でも堅実にステップを踏んで段階的にリファクタリングを遂行していくとなんとかできる、とのことでした。
I/O、永続化、バリデーションあたりの振る舞いに着目した仕様整理、不要機能削除を真っ先にすべきという教訓は実践していきたいですね。
また大変だったことにモチベーション維持という部分も共感でした。
リファクタリングは一気にできるものではないのでステップを踏んでやる、こまめに細かく(ボーイスカウト的に)やるが大事ですね。
感想
とにかく楽しかったですね!
セッショントークは目から鱗だ!と感じることが多く学びと刺激ありました。
それ以外のイベントも充実していて本当によかったです。
そんなイベントを運営してくださっているスタッフの皆様には本当に感謝です。
来年も是非参加したいですね。
i-plugはカンファレンスイベントを応援しています
去年に引き続きシルバースポンサーをさせていただきました🫡
PHPerKaigiの他にもPHPカンファレンスにも参加、協賛をおこなっています。
弊社プロダクト「OfferBox」の品質を向上させてより良い価値提供ができるように
こういったカンファレンスに積極的な参加を後押ししています💪
宣伝?
PHPカンファレンス福岡のLT枠でプロポーザルを出してみました!