1. HOME
  2. ブログ
  3. エンジニアになろう!
  4. Laravel 8.x のアップデート内容まとめ
Laravel 8.x のアップデート内容まとめ

Laravel 8.x のアップデート内容まとめ

Laravel 8.x 実装!

2020年9月8日、Laravel が半年ぶりにアップデートされ、「バージョン8.x」が実装されました。

ネットでは俄然 6.x の人気が高いようですが、最新バージョンの話題もちらほら見かけるようになりました。

今回は、「Laravel 8.x のアップデート内容」について、コードも含めて紹介していきます!

Laravel 8.x の主なアップデート項目

今回取り上げる Laravel 8.x のアップデート内容は、以下の通りです。

  1. Laravel Jetstream
  2. Models ディレクトリの配置変更
  3. Model Factory がクラスに変更
  4. レート制限の改善
  5. route の変更
  6. .env の反映が即時に変更

サポート期間

Laravel 8.x のサポート期間は General です。

LTS の最新バージョン 6.x と比較すると、サポート期間は以下のようになります。

バージョンバグ修正サポートセキュリティサポート
8.x2021年3月8日2021年9月8日
6.x2021年9月3日2022年9月3日

プロジェクト作成

Laravel 8.x の新機能を実際に試していくため、あらかじめプロジェクトを作っておきましょう!

Laravel Jetstream

Laravel 8 では、新しい認証パッケージ「Laravel Jetstream」が追加されました。

以前からあった LaravelUI を改善したもので、以下のような新機能を備えています。

  1. ログイン
  2. ユーザー登録
  3. メール認証
  4. チーム管理
  5. CSS フレームワークが TailwindCSS に変更

Bootstrap に代わって採用された「TailwindCSS」は、class でスタイル指定する部分は同じものの、よりカスタマイズ性に重きを置いたフレームワークです。

Jetstreamをインストール

まずは、以下のコマンドで Jetstream を入れます。

テンプレート言語の選択

Jetstream では、フロントエンドを「Inertia」と「Livewire」から選択できます。

フロントエンド使用するテンプレート言語
InertiaVue.js
LivewireLaravel Blade

どちらも便利ですが、今回は SPA 向けの Inertia で進めていきましょう。

ファイル構成は普通の Vue.js ですが、vue router ではなく、Laravel の route を使用します。

Inertia をインストール

マイグレーション

resources/js/jetstream 下に .vue コンポーネントがたくさん作成されているので、確認してみましょう!

teams を設定

続いて、チーム機能を有効にします。

インストール時に teams オプションを有効にしている場合は、初期状態からコメントアウトが外れています。

コマンドは以下です。

メール認証を設定

こちらも同様に、emailVerification() のコメントアウトを外しましょう。

完了!

これで、jetstream の導入は完了です!

registar から登録し、dashboard や profileを覗いてみましょう。

Laravel 8.x 新機能の素晴らしさを実感できますよ!

models ディレクトリパスが変更された

Laravel 7.x 以前は、以下のように model を作成すると、 app 直下に MyModel が配置されていました。

デフォルトでは Http やその他ディレクトリがある中にモデルファイルが生成されるので、とても違和感があるんですよね…。

8.x では app/Models が初期フォルダ

しかし、8.x では、初期状態から app/Models ディレクトリ が配置されています。

そのため、上記のコマンドを使用すると、app/Models 直下に MyModel が生成されます。

前の仕様に戻したい時は?

この機能が気に入らない場合は、app/Models を削除してください。

上記コマンド実行で、以前のように app 直下に MyModel が生成されます。

Model Factory がクラスになった

Model Facotry は、DB にデータをシーディングするためにあります。

以前は function として定義されていましたが、クラスとして再定義されました。

比べてみよう!

7.x 以前

8.x

7.x 以前は factory ファイルで実装していたため、シーダー以外では使用できませんでした。

しかし、8.x からはクラスベースでの実装となったため、他のファイルでも使用できるようになっています。

新しく Factory を作る

レート制限の改善

レート制限とは、アクセス制限のことです。

総当たり攻撃(Brute-force attack)対策や、API を配信している側のサーバー負荷対策などで多く使われています。

こちらも、かなり使いやすくなっていますよ!

比べてみよう!

7.x 以前は、以下のように Route::middleware で設定していました。

8.x

8.x では「RateLimiter::for」での設定に変更されました。

こちらの方が分かりやすいですね!

route の記述が変更

route の記述も、以下のように変更されました。

改めて考えてみると、7.x 以前の記述は冗長だったような気もしますね…

ちなみに、ネームスペースさえ付ければ 7.x 以前の指定でも大丈夫です!

.env の変更が php artisan serve 時に自動で読み込まれる

これまでは、php artisan serve でサーバーを実行した場合、.env の変更内容がすぐに反映されないため、手動で再起動する必要がありました。

しかし、今回の変更により、再起動なしで .env の内容を自動で読み取ってくれるようになりました。

git clone で Laravel プロジェクトの動作確認をする場合など、大いに役立ちそうな機能ですね!

さいごに

8.x では Laravel Jetstream を筆頭に、様々な追加や修正が行われています。

今回紹介したもの以外にも、「タイムテストヘルパー」や「動的ブレードコンポーネント」などが実装されています。

みなさんもぜひ、Laravel 8.x にトライしてみてくださいね!

こちらの記事もオススメ!


書いた人はこんな人

広告メディア事業部
広告メディア事業部
「好きを仕事にするエンジニア集団」の(株)ライトコードです!

ライトコードは、福岡、東京、大阪の3拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もり大歓迎!

また、現在「WEBエンジニア」「モバイルエンジニア」「営業」「WEBデザイナー」「WEBディレクター」を積極採用中です!
インターンや新卒採用も行っております。

以下よりご応募をお待ちしております!
https://rightcode.co.jp/recruit

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア