Laravel×Inertia.js構成のSPAで、CSVから5,000件のデータを取得し複数テーブルを参照して表示する処理を実装した結果、ユーザーは真っ白な画面を十数分待つことになってしまいました。
まずEloquentのlazyById()で1,000件ずつ分割処理を試みましたが、すべての処理完了まで画面表示できず、5分待たされます。次にInertia.jsのlazyプロパティを導入したところ、初回表示が短縮され、重い処理は後から非同期で読み込まれるようになり、ユーザー体験は大きく改善しました。
さらにlazyに関して調査を進めると、Inertia.js v2.0で追加された「Deferred Props」という機能に出会いました。実際に導入してみると、lazyよりもパフォーマンスが向上し、コードもシンプルになりました。しかし、なぜDeferredの方が優れているのでしょうか。
本セッションでは、lazy propsとDeferred Propsの違いを内部実装から読み解きます。具体的には、HTTPリクエストの発生タイミング、サーバーサイドでのデータ解決の仕組み、なぜDeferredの方がパフォーマンスが良いのかを、LaravelとInertia.jsのコードベースを追いながら解説します。そして最後に、実践的な使い分けパターンをお伝えします。
このトークは、Inertia.jsを使っているけど遅延読み込み機能を使ったことがない方、v2.0の新機能が気になる方、大量データ表示で困っている方、「なぜ速くなるのか」を理解したい方に是非聞いていただきたいセッションです。
ムナカタ 「コードレビューお願いします」と投げたプルリクエストが、いつまでも待ち行列に並んでいる・・・。
そんな状況に心当たりはないでしょうか?
私たちのチームではレビュー待ちが大量に溜まっている状態が当たり前になっていました。
開発速度は落ち、レビュー品質の劣化、コンフリクト多発、リリースサイクルの悪化、
そんな悪循環をなんとか断ち切るべく、様々なことに取り組みました。
・PHPStanによる静的解析の導入
・プルリクエストのテンプレート改善
・AIコードレビューの導入
しかし、これらを実施してもレビュー待ちは減らず、最終的に効いたのは「毎日決まった時間にレビューする」という固定時間制の運用でした。
カレンダーに事前にスケジュール登録することで差し込み会議を防ぎ、優先度が下がりがちなレビューに強制的に着手する仕組みを運用したことでレビュー待ちが劇的に改善したのです。
このトークでは、レビュー待ちがチームにもたらす悪影響についてや、静的解析やAIでは解決しなかった理由、
シンプルな運用ルールがなぜ劇的に効いたのかを、実体験をもとにお話しします。
こっしー 「間違いたくない」「正解を出したい」
かつての私は、はじめから完璧を目指しすぎて、かえって大きな手戻りを生んでしまっていました。
どうすれば、手戻りを減らせるだろうか?
試行錯誤の末に見えてきたのは、「はやく失敗する」ことの重要性でした。
このLTでは、手戻りの多さに悩んでいた新卒1年目の自分に伝えたい、はやく失敗するメリットと、その実現のために日々の開発で実践していることについてお話しします。
似た悩みを持つ方にとって私の経験が参考になれば嬉しいです!
いとこー 皆さんはLaravelのアップデートを定期的に行っていますか?
私たちのチームは段階的にLaravelのアップデートを行い、最終的に9から12まで上げることに成功しました。
その過程の中、10→11の段階でアップデートしようとしてみたところ
composer updateの実行で何のエラーログもなく実行エラーとなってしまいました。
最初は原因が分からず困惑しましたが、なんとか解決し
その過程でLaravelが起動される時の流れをいい感じに学ぶことになりました。
今回はLTでその流れをご紹介したいと思います。
Shunki Tamura 「PdMとのコミュニケーションに課題を感じる」「PdMが技術の壁を理解してくれない」と感じているエンジニアの皆さん、それは相互理解の機会不足かもしれません。本LTは、非エンジニアのPdMである私が、PHPコミュニティ(広島/香川スタッフ)での活動を通じて得た知見を共有します。PdMをPHPカンファレンスに送り込むべき明確な理由と、エンジニアの皆さんがPdMを巻き込むことで得られる3つの具体的なメリットをお話しします。プロダクト開発におけるPdMとエンジニアの連携の質を高めるヒントを持ち帰ってください。