Laracon US 2024 まとめ
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