Open1

Laracon US 2024 まとめ

MaruMaru

https://www.youtube.com/live/VmXbw9GU1SU
https://laracon.us/

2024/08/27

Nuno Maduro - Pest

PEST V3

2021 v1
2023 v2

ここまで1億8000万のダウンロードされた。

3つの新機能

1. タスクマネジメントメント

todo(assignee: 'nunomaduro', issue: 11)
でGitHubに連携できる!!
えぐい!

pest --asinnee=taylor
でアサイニーで絞ってtodoを確認可能

2. アーキテクチャテスト

いろんなチームで使ってもらいたいからデフォルトルールを用意した。

PHPプリセット

arch()->preset()->php()

die()は使えないようにする

arch()->preset()->security()

md5(), eval()が使われているのを検知する

laravel用プリセット

arch()->preset()->laravel();

  • リソースコントローラーでindex, showなどのリソース操作メソッド以外が使われていないかチェック
arch()->preset()->strict()
arch()->preset()->relaxed()

好みに合わせて異なるタイプのプリセットがある。finalをつけることを強制するかどうかなど。

3. ミューテーションテスト

pest --mutateでテストしていないコードを検知できる(単純にカバレッジを測るのとは異なる。)

例えば、、ソースコードについて各行を削除してテストが失敗しないかを計測する。
テストがちゃんと書かれていれば失敗するはず。

PEST3は来週リリース!

Pinkaryは今日オープンソース化

Luke Downing - Lessons From the Framework

Taylor Otwell - Laravel Keynote

First Party VS Code 拡張

VSCode用の公式拡張を今秋にリリース予定

  • config()やenv()のジャンプ
  • route=>Controllerアクションへのジャンプ
  • trans()の翻訳文字列へのジャンプ
  • bladeのシンタックスは依頼と
  • Inertiaサポート
  • Eloquent
    • リレーションの補完
    • フィールド名の補完
  • Test
    • Playボタンの追加

バックエンドのアップデート

ベータは来週使える!

local temporaryUrl

Storage::temporaryUrl()
localドライバーで動くように!!

Container Attribute

DIで解決されるstringなどのプリミティブな値を渡す際、Attributeでデフォルト値が設定が可能に!!

Relation charperone

N+1の解決

deferで非同期処理

defer()
Queue workerを使わずに非同期処理を実装できる。

PHP fpmなどのアプリケーションサーバーの機能を使っている

cacheの改良

Cache::flexible('metrics', [5, 10], finction () {
時間のかかる処理
})

deferを使ってバックグラウンドでキャッシュ値を再計算するため、ユーザーが待つことがなくなる!

並列処理

Concurrencyファサードで簡単に並列処理を実行できるように

$values = Concurrency::run([
 fn () => Metrics::get(),
 fn () => Metrics::get(),
 fn () => Metrics::get(),
 fn () => Metrics::get(),
 fn () => Metrics::get(),
]);

Concurrencyファサードでdeferも使える

$values = Concurrency::defer([
 fn () => Metrics::get(),
 fn () => Metrics::get(),
 fn () => Metrics::get(),
 fn () => Metrics::get(),
 fn () => Metrics::get(),
]);

Inertia 2.0

6つの新機能
10月にリリース予定

1. Async Requests

全てのリロードリクエストがデフォルトで非同期に

2. Polling

usePollでポーリングを簡単に実装可能に

3. WhenVisible

Inertia::optional()
<WhenVislble>

でページに表示された時に処理を開始する。

4. Infinite Scrolling

Inertia::merge()で無限スクロールを簡単に実装可能に

5. Prefetching

<Link href="/" prefetch>で
データの事前取得ができるように
例: ボタンホバー時にデータ取得を始める

6 Deferred Props

<Deffered data="user_count">でコンポーネントごとにデータの遅延表示が可能に

Laravel Cloud

ワンクリックでLaravelアプリケーションを公開できる!
LarvelがServeするのでAWSなどの連携も不要。Laravel版Vercel