$30 off During Our Annual Pro Sale. View Details »

Laravel8.xまでの大きな変更点を振り返る

 Laravel8.xまでの大きな変更点を振り返る

namizatork

May 29, 2021
Tweet

More Decks by namizatork

Other Decks in Programming

Transcript

  1. www.bengo4.com
    Laravel8.xまでの
    大きな変更点を振り返る
    2021.05.29 namizato

    View Slide

  2. はじめに
    2

    View Slide

  3. Bengo4.com, Inc. 3
    「大きな変更点」とタイトルを付けていますが、主語がデカすぎました()
    パフォーマンスの向上とかよりも個人的に気になった変更点や、
    実装している上でこれは便利になったなーと感じた追加機能などについてお話しします。
    ノリでタイトル決めるのだめ絶対

    View Slide

  4. 4
    4
    並里 辰也(ナミザト タツヤ)
    自己紹介
    沖縄PHPカンファレンス2021 実行委員(広報)
    弁護士ドットコム株式会社 在籍そろそろ1年
    Laravelが好きでたまにQiitaに投稿してます
    @namizatork

    View Slide

  5. Bengo4.com, Inc.
    弁護士ドットコム
    というサービス
    ● 一般市民と弁護士を結びつ
    け、お悩み解決を目指す
    ● 2005年サービス開始
    ● 約900万セッション/ 月
    ● 約300件の法律相談/ 日
    5

    View Slide

  6. Bengo4.com, Inc.
    目次
    ● Laravelが人気の訳
    ● セマンティック・バージョニング
    ● PHP6.xでの追加・変更点
    ● PHP7.xでの追加・変更点
    ● PHP8.xでの追加・変更点
    6

    View Slide

  7. Laravelが人気な訳
    7
    今更感がありますが、あえて説明しておきます

    View Slide

  8. Bengo4.com, Inc.
    Laravelが人気の訳
    ● 日本語含めてドキュメントが豊富
    ● MVCが標準サポートされているので、開発者によって実装が左右されにくい
    ● XSS/CSRF/SQLインジェクションなどのセキュリティ対応がされている
    ● 柔軟な設計が可能( DDD/クリーンアーキテクチャなど簡単に導入ができる)
    ● ORM(Eloquent)が標準サポートされているので、柔軟なデータ操作が可能
    ● PHPのコードでDBを管理できるマイグレーションに標準対応
    ● クラスの依存関係を管理するサービスコンテナ
    ● クラスインスタンス化せずとも staticメソッドの様に呼び出すことができる Facade
    ● Controllerの前後にフィルタリングを設定できるミドルウェア
    ● etc..
    8

    View Slide

  9. セマンティック・
    バージョニング
    9

    View Slide

  10. Bengo4.com, Inc.
    セマンティック・バージョニング
    2021年5月現在最新の LTS は Laravel6.x(2021年9月に次のLTS最新9.xリリース予定)
    このリリースを機に Laravel では セマンティック・バージョニング が採用されました。
    これまでの Laravel(5.x) では 5.1 > 5.2 > 5.3 と上がっていたのに対して、
    6 > 7 > 8 の様にアップデートされる様になりました。
    つまり 6.x は実質 5.9(5.xの最新が5.8のため) の様な扱い
    10

    View Slide

  11. Laravel6.xの
    追加・変更点
    11

    View Slide

  12. Bengo4.com, Inc.
    文字列と配列のヘルパの
    変更
    str_ と array_ ヘルパが使用できな く
    なりました(別パッケージへ移行され
    ました)
    Laravel5.8からアップグレードした時
    にこの辺りで引っかかることが多々あ
    りました。
    12
    これまで
    6.x

    View Slide

  13. Bengo4.com, Inc.
    認証機能のUIが分離された
    laravel6.xから認証機能が
    laravel/ui という別パッケージで管
    理される様になりました。
    これによって5.xまでは標準で組み込
    まれていたBootstrapとVueがデ
    フォルトから外され、スカフォールドを
    任意のFWから選ぶことができる様に
    なりました。
    13
    これまで
    6.x

    View Slide

  14. Bengo4.com, Inc.
    Laravel6.xその他追加・変更点
    ● Lazy Collection
    ● ジョブミドルウェア
    ● Eloquentサブクエリの向上
    ● 認可レスポンスの向上
    ● etc...
    14

    View Slide

  15. Laravel7.xの
    追加・変更点
    15

    View Slide

  16. Bengo4.com, Inc.
    Guzzleをラップした
    HTTP Client
    これまでは GuzzleHttpClient を
    使用する必要がありましたが、
    Laravel7.x から Guzzle をラップした
    HTTP Client が標準で搭載される
    様になりました。
    これにより、Guzzleの長いコードを書
    かなくて済むようになりました。
    16
    これまで
    7.x

    View Slide

  17. Bengo4.com, Inc.
    Sanctumの導入
    SPAに対しての認証機能を容易に提
    供してくれるLaravelのパッケージで
    す。(元々は AirLock という名前だっ
    た)
    Token を利用した API Tokens と
    Cookie を利用したSPA
    Authentication の2つの機能があ
    ります
    17

    View Slide

  18. Bengo4.com, Inc.
    ViewComponentの導入
    Blade のコンポーネントクラスやタグ
    が利用できるようになりました。
    Blade(ビュー)とロジックの責務が分
    けれる様になり、さらにコンポーネント
    化により共通化もできる様になった。
    18

    View Slide

  19. Bengo4.com, Inc.
    Laravel7.xその他追加・変更点
    ● ルートキャッシュスピードの向上
    ● カスタムEloquentキャスト
    ● ルートモデル結合の向上
    ● etc...
    19

    View Slide

  20. Laravel8.xの
    追加・変更点
    20

    View Slide

  21. Bengo4.com, Inc.
    マイグレーションの圧縮
    プロジェクトが大規模になるにつれて
    増えていくマイグレーションファイルを
    圧縮することができます。
    やり方は簡単で右のコマンドを入力
    するだけで database/schema に
    書き込まれます。
    21
    既存のマイグレーションを削除する option

    View Slide

  22. Bengo4.com, Inc.
    Jetstreamの導入
    ログイン、ユーザー登録、メール認
    証、二要素認証、セッション管理、
    Laravel SanctumによるのAPIサ
    ポート、およびオプションのチーム管
    理が用意されている。
    Tailwind CSSを使用していて、
    Livewire か Inertia のどちらかのス
    カフォールドを選択できます。
    22

    View Slide

  23. Bengo4.com, Inc.
    Livewireの導入
    Bladeを利用していればJavaScript
    を書かずにPHPだけでSPAを実装で
    きる様にしたパッケージ
    開発者曰く、Laravelを知っている人
    なら誰でも書けるので学習コストが低
    いらしい()
    23

    View Slide

  24. Bengo4.com, Inc.
    Laravel8.xその他追加・変更点
    ● モデルファクトリクラス
    ● Modelsディレクトリをデフォルト化
    ● ジョブバッチ
    ● レート制限の向上
    ● イベントリスナの向上
    ● タイムトラベル(時間操作テスター)
    ● etc...
    24

    View Slide

  25. ご清聴ありがとう
    ございました。
    25

    View Slide