Laravelは、美しい構文、堅牢な機能、開発者に優しいツールの数々で人気を博すPHPフレームワークです。その構造は、効率的なPHPウェブ開発をサポートし、スケーラブルで保守性の高いアプリケーションの構築を可能にします。

Kinstaは、常に時代の先端を行き、最新の技術を取り入れることに全力を投じています。Laravelアプリケーションの動向を追い、その最新のリリースや機能の改善に注目することも例外ではありません。

Laravel 11では、開発者の生産性やアプリケーションのパフォーマンスを引き上げるいくつもの革新的な機能が導入されています。設定やデバッグの合理化から柔軟性の向上まで、このバージョンで何が新しくなったのか、そして導入されたのか、早速見ていきましょう。

Laravel 11で刷新されたディレクトリ構造

Laravel 11では、開発効率を高めるためにディレクトリ構造が一新されました。この変更により、プロジェクトファイルの構成がシンプルになり、以前のLaravelバージョンに含まれていた定型的なコードが削減されました。

app/Exceptionsapp/Http/Middlewareなどの特定のディレクトリを削除することで、Laravel 11の構造は以前のバージョンよりもすっきりしています。例えば、以前のバージョンには9つのミドルウェアが含まれており、その多くはカスタマイズする可能性が低いものです。このディレクトリをなくすことで、コードがかさばるのを最小限に抑え、コードの本質的な部分に集中することができます。また、ミドルウェアをカスタマイズする必要がある場合は、App/ServiceProviderを介して行うことができます。

また、Laravel 11ではconfigフォルダが削除され、コンフィギュレーションの管理方法が変更されました。この変更点については、後のセクションで説明します。

Laravelの新しいディレクトリ構造の利点は以下の通りです。

  • コードの再利用性:定型化されたコードが少なくなるため、モジュール型の再利用可能なコンポーネントの作成に集中できます。アプリケーション全体で共通の機能を繰り返し利用できるため、効率的な開発プロセスが促進されます。
  • ナレッジ共有の改善:複雑でないディレクトリ構造により、チームメンバーや技術導入担当者間でのナレッジ共有が容易になります。製品構造の操作がシンプルになることで、コラボレーションがよりスムーズで効果的になります。
  • コーディング時間の短縮:不要なディレクトリやファイルを排除することで、開発者が不要な定型コードに費やす時間を短縮できます。コーディング、デバッグ、テストの高速化により、生産性が向上します。

合理的なディレクトリ構造は、洗練された開発プロセスを後押しし、特徴や機能の実装高速化につながります。

モデルキャストによる柔軟性の向上

Laravel 11では、メソッドベースのモデルキャストに移行し、Laravel Eloquentモデル(データベーステーブルの表現で、そのテーブルとのインタラクションの仲介役として機能する)内での属性の扱い方が変わります。

Laravelの古いバージョンでは、properties配列を使用して属性を定義していました。Laravel 11では、casts()という名前のメソッドでモデルのキャストを指定します。

このメソッドベースのモデルキャストへの移行により、コードメソッドや関数と同様に複数の利点がもたらされています。まずはコードの再利用性です。メソッド内にキャストロジックを含めることで、コードのモジュール化が進み、再利用可能になります。また、casts()メソッドで属性キャストを定義するため、コードの可読性と保守性が向上します。

また、Laravel 11が以前のバージョンとの後方互換性を保証していることも重要です。その結果、既存のコードをシームレスに移行して、Laravel 11のモデルキャスティングアプローチを使用することができます。この互換性により、Laravel 11の採用がスムーズに進むはずです。以前のバージョンにすでに慣れている場合はなおさらです。

設定の簡素化

前述したように、Laravel 11ではコンフィギュレーション管理にも変化がもたらされました。コンフィギュレーションが.envファイルという単一のソースに統合されています。これは、設定が複数のファイルにまたがっていた以前のLaravelバージョンからの顕著な違いです。

設定を.envファイルのみに配置することで、構成が大幅に改善できます。また、開発ワークフローも簡素化され、より直感的で効率的になります。

設定に関連するもう1つの重要な変更点がカスケード機能です。カスタマイズしたくない不要なオプションを削除することで設定を微調整できます。その結果、よりコンパクトな開発が可能になります。

.envファイルが1つになったことで、複数のファイルを用意する必要がなくなり、代わりに関連するすべての設定を1つの場所に保存できるようになりました。ただし、.envファイルが大きくなりすぎた場合には、設定ファイルをconfigディレクトリに戻すコマンドを使うことができます。例えば、php artisan config:publish authconfigディレクトリにauth.phpファイルを生成可能です。

特定のコンフィギュレーションを取得する機能は、あらゆる組織にとって大きな恩恵です。

Dumpableによる洗練されたデバッグ体験

Dumpableもまた、Laravel 11に追加された大事な機能です。dd()dump()メソッドなど、クラス内でおなじみのデバッグ補助を使用できるようになります。これらのメソッドからは、ターゲットオブジェクトや変数に関するリアルタイムの洞察が得られデバッグ中に役立ちます。

なお、Dumpableは、Laravelの多くのコアクラスで、既存のdddumpメソッドに取って代わる可能性があります(フレームワーク全体での一貫したデバッグ体験に寄与)。

Laravel 11のルートハンドリングの革新

Laravel 11では、ルートハンドリングが統合され、初期バージョンが大幅に改善されました。デフォルトのルートファイル4つからroutes.phpconsole.phpという2つへの削減です。この変更により定型的なコードが最小限になり、フレームワークがより直感的になっています。

これは、アプリケーションにAPIルートを組み込む場合には意図的な選択が必要になることを意味します。この仕組みは、必要なときだけAPIルートを含む、よりすっきりしたアプリケーション構造をサポートします。api.phpファイルを生成し、Laravel Sanctumを統合するには、php artisan install:apiコマンドを実行します。

Laravel 11のイベントブロードキャストも同様の方針に従っています。機能を有効にし、channels.phpファイルを作成するには、php artisan install:broadcastingを実行します。これにより、必要なファイルとセットアップを管理し、Laravelアプリケーションへのイベントブロードキャストの統合を加速させることができます。

これらの変更すべてが、モジュール型のカスタマイズに柔軟に対応したアプリケーション構造への移行につながります。特定の機能にオプトインでき、Laravel 11はルートファイル管理に対して、以前のバージョンよりもカスタマイズ向きのアプローチを採用しています。

LaravelのHTTPカーネルの進化

Laravelのカーネルは、HTTPリクエストとターミナルコマンドのエントリーポイントとして機能する、フレームワークにおける重要なコンポーネントです。カーネルは、ミドルウェアスタック、ルーティング、およびアプリケーションのリクエスト処理に貢献するその他の重要なコンポーネントを管理し、リクエストの流れをまとめあげます。

Laravel 11では、Laravelカーネルが削除され、代わりに、Bootstrap/Appクラスが使用されます。このクラスが、必須インターフェースをコンテナにバインドします。必要なコンポーネントをセットアップした後、Bootstrap/Appクラスがアプリケーションインスタンスを返します。このようにインスタンス構築をアプリケーションの実行とレスポンス処理から分離することで、よりモジュール化を意識した構造が実現します。

Laravelカーネルの削除もまた、定型的なコードを最小限におさえる役割を果たします。Bootstrap/Appクラスが重要なセットアップを行うので、アプリケーションのコアとなる機能の構築に集中することができます。アプリケーションインスタンスが実行されると、Bootstrap/Appクラスが必要なウェブリクエスト処理を担います。これで開発プロセスの簡素化、コードベースの整理が捗ります。

効率化を意識したマイグレーションの凝縮

Laravel 11では、デフォルトのマイグレーションが一新されます。2014年から2019年までの旧バージョンでは、複数のファイルにまたがる多数のデフォルトマイグレーションが存在しました。一方、最新のリリースでは、これらのファイルをわずか2つに凝縮し、整理が進んでいます。

このデフォルトマイグレーションファイルの削減により、マイグレーションのアクセスと管理がシンプルになり、データベース構造の明確性が向上し、潜在的な混乱やエラーが減少するはずです。

さらに、よりクリーンでわかりやすいデフォルトのマイグレーション設定により、複雑な定型マイグレーションファイルと格闘する手間を省きながら、プロジェクト固有の要件に時間を割くことができます。

Laravel 11の最適化を意識したデフォルトマイグレーション構造は、よりスムーズな開発体験に貢献します。シンプルさと使いやすさに定評のあるフレームワークの価値をさらに高めることになるでしょう。

PHP 8.2─Laravel 11の新常識

Laravel 11のもう一つの重要な変更点として、PHP 8.2が最低要件に設定されています。Laravel 11では、PHP 8.2がデフォルトとなり、PHP 8.3も予定されています。PHPエコシステムの最新の進歩に合わせることで、LaravelでPHPの最新(および近々リリースされる)の言語機能と最適化の互換性を保つことができます。

過去2つの主要なPHPバージョンをサポートすることで、Laravel 11はパフォーマンス、セキュリティ、開発者のエクスペリエンス向上を実現しています。PHP 8.2を最低要件とすることで、プロジェクトが将来的にも安定し、PHP言語の可能性を最大限に引き出すことができます。

まとめ

Laravel 11では、あらゆるチームそして幅広い開発者コミュニティの開発体験を高める重要なアップデートが導入されています。パフォーマンスの最適化、最新のPHPバージョンのサポート強化、ワークフロー機能の合理化により、PHP開発をスムーズかつ効率的に行うことができます。

これらの改善は、スムーズな開発ワークフロー、優れたアプリケーションパフォーマンス、そして全体的に効率的な開発プロセスにつながります。さらに、オートスケーリング、セキュアなインフラストラクチャ、Google Cloud Platformの最速マシンによるパフォーマンス強化など、Kinstaのアプリケーションホスティングサービスは、Laravel 11アプリケーションのデプロイに理想的な環境となるはずです。

Laravel 11を使用したアプリケーションの構築、そしてKinstaを使用したLaravelアプリケーションのデプロイを是非ともお試しください。

Marcia Ramos Kinsta

I'm the Editorial Team Lead at Kinsta. I'm a open source enthusiast and I love coding. With more than 7 years of technical writing and editing for the tech industry, I love collaborating with people to create clear and concise pieces of content and improve workflows.