【要約】Laravel 10から13へアップグレードしたら、Kernelが消えていて驚いた話 [Qiita_Trend] | Summary by TechDistill
> Source: Qiita_Trend
Execute Primary Source
// Problem
開発者がLaravelのバージョンを10から13へ引き上げる際、従来のディレクトリ構造が消失していることに直面する。従来の慣習に基づいた開発を行っていると、設定ファイルの所在が不明になり、混乱を招く。具体的には以下の問題が発生する。
- ・Http/Kernel.phpやConsole/Kernel.php、Handler.phpの廃止による設定箇所の喪失。
- ・config/app.phpにおけるService Provider登録箇所の変更。
- ・カスタムConnection等のメソッドシグネチャ変更に伴う、PHPの型エラーの発生。
// Approach
開発者は、新しいSlim Skeletonの設計思想に基づき、設定箇所を新しいファイルへ適切に移行する必要がある。ボイラープレートを排除し、アプリケーションの構成を簡素化するアプローチが取られている。具体的な手順は以下の通りである。
- ・ミドルウェア、ルーティング、例外処理をbootstrap/app.phpへ集約する。
- ・タスクスケジュールをroutes/console.phpへ記述する。
- ・Service Providerの登録をbootstrap/providers.phpへ移行する。
- ・grepコマンドを用いて独自実装を洗い出し、変更されたメソッドシグネチャを修正する。
// Result
アップグレードを適切に完了したプロジェクトは、構造の簡素化による恩恵を享受できる。ファイル数の削減により、コードの見通しと理解の速度が向上する。具体的な成果は以下の通りである。
- ・ボイラープレートの削減による、初見でのプロジェクト理解の容易化。
- ・設定箇所の一元化による、ミドルウェア等の探索コストの低減。
- ・PHP 8.4やOPcacheとの組み合わせによる、起動速度の向上(体感レベル)。
Senior Engineer Insight
> 構造の簡素化は、開発体験(DX)を劇的に向上させる。しかし、大規模な既存プロジェクトでは、コアクラスのオーバーライドが「地雷」となる。特にConnectionクラス等の引数追加は、静的解析なしでは見逃しやすい。実戦投入時は、アップグレード前に必ずgrep等で独自実装を徹底調査すべきである。パッケージの互換性確認を怠ると、デプロイ後に致命的な型エラーを招くリスクがある。