Laravel8へバージョンアップ:全14個の変更点と新機能まとめ

Laravelバージョンアップ・ニュース
スポンサーリンク

Laravel8が2020年9月8日にリリースされました。

Laravel7との違い、便利な新機能情報、旧バージョンのサポートなど、まとめました。

下記の公式ブログに書かれた項目はすべて網羅しております。

実体験レポートも掲載しておりますので、Laravelユーザーの方、使ってみようかなと思っている方は、参考にしてください。

スポンサーリンク

Laravel8の新機能

公式ファイルに書かれていたアップデート項目は、下記の通りです。

私の目線ですが、影響が多きそうな項目にだけ★をつけておきました。

すべてチェックするのが面倒な場合には、部分だけご確認ください。

  • Laravel Jetstream :新たな認証機能追加
  • Models Directory :モデルファイルの場所変更
  • Models Factory Classes :ダミーデータ作成がより便利に
  • Migration Squashing : 不要なマイグレーションファイルの処理
  • Job Batching :ジョブのバッチ機能追加
  • Rate Limitingの改善 :アクセス制限などが便利に
  • Improved Maintenance Mode :メンテナンスモード改良
  • Closure Dispatch / Chain :失敗したときの処理
  • Dynamic Blade Components :コンポーネントを便利に指定
  • Event Listener Improvements :イベントリスナー処理の改良
  • Time Testing Helpers :新たな時間変更の関数が利用可能に
  • Artisan serve Improvements: Artisan Serveコマンドの改良
  • Tailwind Pagination Views:ページネーションビュー変更
  • Routing Namespace Updates:ルートファイルの名前空間の変更

Laravel Jetstream :新たな認証機能追加

ログイン・認証機能です。

使用する際には、コンポーザーを使ってインストールします。

このあと、LivewireまたはInertiaのどちらかのライブラリを選択します。

LivewireはBlade、InertiaはVue.jsを使用します。

ユーザーログイン・登録・メール認証・2段階認証・セッション管理などを便利にしてくれる機能ながら、どうも使いにくいという声もあり。

とりあえずはこれまでおりの方法を使っていこうとおもいます。

Models Directory :モデルファイルの場所変更

これまでモデルファイルはappフォルダの直下にありました。

コントローラーやビューファイルはちゃんと「Controller」フォルダ、「View」フォルダに入っているのにどうして?

って感じしますよね。

同じように感じたユーザーが多かったようで、今回のアップデートにより、モデルファイルも app/Modelsフォルダの中に格納されるようになりました。

Models Factory Classes :ダミーデータ作成がより便利に

Laravelには、ダミーデータを作れる機能があります。

モデルファクトリを使うと、大量のダミーデータを作ることができます。

今回のバージョンアップで、モデルファクトリを非常に便利に作れるようになりました。

特にリレーションがある場合に、便利です。

たとえばuserモデルがpostsモデルとの間にリレーションがある場合、下記のように【hasPosts】という関数が使えます。

なおLaravel8でダミーデータを作成する方法については、こちらの記事に詳細を解説しています。

Migration Squashing : 不要なマイグレーションファイルの処理

マイグレーションを度々実行すると、マイグレーションファイルの量が増えていきますよね。

Laravel 8では、 マイグレーションファイルを圧縮保存するコマンドができました。

コマンドを実行すると、database/shemaディレクトリにshemaファイルができ、このなかにマイグレーションのデータが格納されます。

マイグレーション実行時には最初にshcemaファイルのマイグレーションを実行します。

こうすることで、処理の高速化が可能に。

実行時に既存のマイグレーションファイルを削除したい場合は、–prune を付けます。

Job Batching :ジョブのバッチ機能追加

then, catch, finally の三段階で処理を指定したりもできます。

どこかでうまくいかなくても処理を継続させることも可能。

 Rate Limitingの改善 :アクセス制限などが便利に

Laravelでは、RouteにURLにアクセスしたときの処理を記述します。

Rate limitingを使えば、このRouteで設定されたアクセスにレート制限をかけることができます。

たとえばIPアドレスごとに1分間に100回のアクセスを可能にすることも可能。

レート制限を超えたときのレスポンスも独自に設定できます。

Improved Maintenance Mode :メンテナンスモード改良

これまでも php artisan down とするとメンテナンスモードにできました。

今回はここに secretオプションを使って、メンテナンス中もページを見れるトークンを特定できるようになりました。

工事中の場所を迂回してサイトにアクセスするような感じですね。

Closure Dispatch / Chain :失敗したときの処理

新たな catchメソッドを使うことで、もしClosure処理が無事行えなかった場合に実行する処理を設定できます。

Dynamic Blade Components :コンポーネントを便利に指定

コンポーネントファイルとは、テンプレートファイルのようなものです。

コンポーネントを使うとき、場合によってはどのコンポーネントが使われるか判断できない場合があります。

下記のように【dynemic-component】を使って指定しておけば、実行時の変数や値をもとにコンポーネントが受け渡されます。

Event Listener Improvements :イベントリスナー処理の改良

イベントリスナー機能を使う際、Laravelがそのタイプのイベントをリスナーが処理するか、調べられるようになりました。

Time Testing Helpers :新たな時間変更の関数が利用可能に

Time Testing Helpersが使えるようになりました。

Ruby on Railsの機能だったようですね。

現在時刻をもとに、設定した時間に変更して、テストができる機能。

Artisan serve Improvements: Artisan Serveコマンドの改良

PHP Artisan Serveコマンドを実行すると、自動で.envファイルの変更を読み込んでくれるようになりました。

Tailwind Pagination Views:ページネーションビュー変更

Laravelのページネーターは、Thaiwindページネーションビューをデフォルトで使用するようになりました。

Bootstrap3と4のビューもこれまでどおり利用可能です。

Routing Namespace Updates:ルートファイルの名前空間の変更

以前はRouteServiceProviderファイルに、 名前空間(フォルダの場所)がデフォルトで入っていました。

そのため、ルートファイルに記入する必要はありませんでした。

Laravel 8ではデフォルトでは名前空間が含まれていないため、ルートファイルにコントローラーの記述が必要です。

これまでの方法がよければ、RouteServiceProviderファイルに入力してしまえば、毎回ルートファイルに名前空間を入れる必要はなくなります。

Laravelの旧バージョンのサポート

Laravelは6か月ごとにバージョンを更新します。

新しいバージョンが出たら、古いバージョンのサポートはどうなるのか?

しばらくはサポートを継続してくれますが、期限付きです。

Laravelのバージョンごとのサポート期間は、次のようになっています。

バージョンリリース日バグ修正サポートセキュリティ修正サポート
62019-09-03 00:00:002021-09-03 00:00:002022-09-03 00:00:00
72020-03-03 00:00:002020-10-06 00:00:002021-03-03 00:00:00
82020-09-08 00:00:002021-04-06 00:00:002021-09-08 00:00:00

*参考サイト:Laravel公式サイト

あまり古いバージョンは更新していったほうが良さそうですね。

なおLaravel バージョン6はLTS版(長期間サポート版)であるため、サポート期間が長めに設定されています。

!2021年2月追記:今後のバージョンはアップは1年に1度ペースになるとのこと!

詳しくはこちらをどうぞ。

コメント

タイトルとURLをコピーしました