前回に引き続き今回はLaravel10系の新機能や変更点について振り返ります。
前回の記事は以下です。
主要な新機能・変更点
Laravel10の位置づけ
Laravelは、概ね1年ごとに新しいメジャーバージョンがリリースされます。
Laravel9はLTS(Long Term Support)バージョンとして長期サポートが行われますが、Laravel10はLTSではありません。
そのため、安定運用を重視する場合はLaravel9を選ぶケースもありますが、新しい言語機能や改善点を取り入れたい場合にはLaravel10へのアップデートも検討する価値があります。
PHP8.1以上が必須要件に
Laravel10では、PHP8.1以上が必須要件となりました。
Laravel9でもPHP8系は推奨でしたが、Laravel10ではより新しいPHPバージョンを前提にします。
PHP8.1にはEnums(列挙型)や改良されたFibers、パフォーマンス改善などが含まれ、これらを活用できることで、より快適な開発体験が期待できます。
古い機能の整理とクリーンアップ
Laravel10では、以前から非推奨(deprecated)となっていた機能が一部削除され、コードベースがよりシンプルに整理されました。
これにより、フレームワーク内部が洗練され、保守性が向上しています。
つまり、Laravel10は不要なレガシーコードを排除し、最新のベストプラクティスに合わせて整えられた状態で提供されるようになっています。
コードスタイルツール「Laravel Pint」の推奨
Laravel10では、公式のコード整形ツールである「Laravel Pint」が注目されています。
PintはPHP-CS-Fixerをベースにした、Laravelプロジェクト向けのコードスタイル整形ツールで、プロジェクト内のPHPコードのフォーマットを自動的に整えてくれます。
これにより、チーム開発時にコードスタイルが統一され、レビューや保守が容易になります。
Pintの利用例
# Laravelプロジェクト直下で、以下のコマンドを実行
./vendor/bin/pint
# これでプロジェクト内のPHPファイルがLaravel推奨スタイルに自動整形されます。
Pint自体はLaravel10限定ではありませんが、Laravel10移行時に合わせて利用することで、よりモダンでクリーンなコードベースを維持しやすくなります。
Processファサードの導入
Laravel10では「Process」ファサードが新たに追加されました。
これにより、PHPコード内から簡単にシェルコマンドを実行することができます。
これまでもexec
やsymfony/process
コンポーネントで同様のことは可能でしたが、Processファサードを使うことでLaravelらしい統一的な記法で外部コマンド実行を行えます。
Processファサードの使用例(Laravel10)
use Illuminate\Support\Facades\Process;
use Illuminate\Support\Facades\Route;
Route::get('/run-command', function () {
$result = Process::run('echo "Hello from shell"');
if ($result->successful()) {
return $result->output();
} else {
return 'コマンド実行に失敗しました。';
}
});
この例では、/run-command
にアクセスすると、echo "Hello from shell"
コマンドが実行され、その結果が返されます。
シンプルなコードで外部コマンドを扱えるため、デプロイ作業やバッチ処理時の利便性が向上します。
テスト関連の改善
Laravel10では、テスト周りの改善も行われています。
これには、テスト実行時のパフォーマンス向上や、テスト用ヘルパーメソッドの充実化などが含まれます。
上記以外での主な新機能・変更点
ネイティブ型宣言の導入
- フレームワーク全体で、メソッドや関数に引数と戻り値の型宣言が追加され、コードの堅牢性と可読性が向上しました。
Laravel Pennant
- 新しいファーストパーティパッケージであるLaravel Pennantを導入。フィーチャーフラグを管理し、新機能の段階的な展開やA/Bテストが容易になりました。
呼び出し可能なバリデーションルール
- バリデーションルールの定義がシンプルになり、
__invoke
メソッドを使用して直接バリデーションロジックを記述できます。
アーティザンコマンドのプロンプト機能
php artisan make:*
コマンドで、必要な入力を対話的に求めるプロンプト機能が追加され、コマンド実行時の柔軟性が向上しました。
Pestのスキャフォールディングサポート
- 新しいプロジェクト作成時に、
--pest
オプションを使用してPestテストフレームワークのスキャフォールディングを生成できます。
パスワード生成ヘルパー
Str::password()
メソッドを使用して、強力なランダムパスワードを簡単に生成できます。
Laravel9とLaravel10の違い
PHP8.1以上必須化による最新PHP機能の活用、非推奨機能の削除によるコードベースのクリーンアップ、公式コード整形ツールLaravel PintやProcessファサードの追加など、新旧機能の整理と拡張が行われています。
Laravel9がLTSで長期サポートに向くのに対し、Laravel10は最新技術を活用したモダンな環境で開発を進めたい場合に最適です。
まとめ
Laravel10ではPHP8.1以上が必須要件になったり、非推奨機能の削除など新機能追加以外のメンテナンス面の向上などだんだんフレームワークとして成熟してきた感じを受けました。
確かに利用者も増え、度重なるバージョンアップにより大分安定したフレームワークになってきたのでしょうね。
機能も大分増えてきているのでなるべく多くの機能を把握してうまく使いこなしていこうと思います。