1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【2026年7月】Laravel/PHP 今月のまとめ|13.18→13.23とLaracon US 2026(LSP・Pest 5・AI SDK)

1
Last updated at Posted at 2026-07-08

2026年7月の Laravel News を1本にまとめた確定版だ。7月はコアが6リリース(13.18→13.23)と多く、そして月末の Laracon US 2026(7/28) で大きな発表が続いた。ファーストパーティの言語サーバー Laravel LSP、Pest 5、Laravel AI SDK の Human-in-the-Loop、npx 相当の CPX などだ。

新着をすべて並べると埋もれるので、コアの変更点はコード付きで深掘りし、Laracon の発表を別立てでまとめ、パッケージはテーマ別に厳選、残りは末尾にリンクでまとめた。まわりでは、AIを本番で回すためのパッケージ(オーケストレーション、エージェント課金、プロンプトの安全)と、レート制御や認証まわりのパッケージも厚かった。

出典はすべて Laravel News の各記事。バージョン番号やメソッド名は原文に合わせている。

TL;DR

  • コアは6リリース(13.18→13.23)。画像処理の内蔵(13.20)、HTTP QUERY(13.19)、#[RouteKey](13.21)、#[BindWhen](13.22)、monthly ログ(13.23)など。
  • Laracon US 2026 の目玉:公式言語サーバー Laravel LSP、Pest 5(TIA でテスト3分→5秒)、Laravel AI SDK の Human-in-the-Loop 承認、npx 相当の CPX 2.0。
  • AI運用の層が厚い。タスク化して回す Laravel AI Tasks、AIエージェント課金の Laravel MPP(HTTP 402)、プロンプトの安全を守る Intercept、そして人手承認(HITL)。
  • レート制御・認証・品質も充実。Laravel Quota / Cooldown、パスワードレスの Email Magic Link、重複コード検出の phpcpd-next、Pint の Blade 整形、依存の最小公開日数 Heimdall。

Laravel コアの進化(13.18 → 13.23)

13.18:ワーカーメトリクスとグレースフル停止

WorkerStopping イベントが、ワーカーがシャットダウン前に何をしたかを表す2つの値を持つようになった。jobsProcessed(生存中に処理したジョブ数)と lastJobProcessedAt(最後に処理したジョブの microtime)で、正常停止でも kill でも設定される。ジョブループを自前で計装せずに、ワーカーごとのスループットを記録できる。

use Illuminate\Queue\Events\WorkerStopping;

Event::listen(function (WorkerStopping $event) {
    $event->jobsProcessed;      // int|null
    $event->lastJobProcessedAt; // microtime、何も処理していなければ null
});

schedule:workSIGINT / SIGTERM / SIGQUIT を捕捉するようになった。シグナルを受けると新しいスケジュール実行の開始を止め、進行中の schedule:run の完了を待ってから終了する。queue:work と同じ挙動で、Pod が停止時に SIGTERM を受け取る Kubernetes のようなコンテナ環境で効く(実行中タスクの中断を防ぐ)。あわせて artisan dev の dev コマンド登録が優先度ベースになり、名前が衝突したらアプリの登録が vendor に、vendor がフレームワークに勝つ。

出典: https://laravel-news.com/laravel-13-18-0

13.19:HTTP QUERY メソッド対応

HTTPクライアントに、QUERY 動詞でリクエストを送る Http::query() が加わった。QUERY はパラメータをURLではなくボディに載せる、安全でキャッシュ可能なメソッド(RFC 10008)で、GET の読み取り専用セマンティクスを保ったまま、複雑なフィルタや機微な値(メール等)をURLに載せずに送れる。テスト側にも query() / queryJson() ヘルパが入った。

$response = Http::query('https://api.example.com/search', [
    'filter' => ['status' => 'active'],
]);

// テスト
$this->queryJson('/search', ['filter' => 'active'])->assertOk();

ルーティングの Route::query() は Laravel 14 で入るが、13 でも Route::match(['QUERY'], ...) で今すぐ使える。実際に Scout の検索エンドポイントを QUERY で作る実装チュートリアルも同月に出ており、Web ルートで使うと CSRF に 419 で弾かれる回避策まで解説されている。ほかに、アキュムレータをその場で変更する reduceInto()、件数を前置した複数形を作る Str::counted() も追加。

出典: https://laravel-news.com/laravel-13-19-0

13.20:ファーストパーティの画像処理

画像のリサイズ、クロップ、フォーマット変換、保存を、サードパーティのラッパーなしで扱う Image コンポーネントが入った。画像はイミュータブルで、変換は新しいインスタンスを返す。アップロードからは Request::image() で受け取れる。

$request->image('avatar')
    ->cover(200, 200)
    ->toWebp()
    ->store('avatars');

パス、URL、生バイト、base64、ストレージディスクからも組み立てられ、backend は Intervention Image v4(GD / Imagick)。intervention/image は suggested 依存なので自分で入れる。ほかに、コントローラ属性 #[WithoutMiddleware](ミドルウェア除外)、Redis セッション専用プレフィックス、Eloquent の複数カラム quiet increment(incrementEachQuietly())、WithoutOverlapping のキーへの enum 許可などが入った。

#[Middleware(EnsureTokenIsValid::class)]
class UserController
{
    #[WithoutMiddleware(EnsureTokenIsValid::class)]
    public function profile() { /* ここだけミドルウェア除外 */ }
}

この画像処理は使いどころが広いので、アバターのアップロード処理、レスポンシブなバリアント生成、条件付き変換を実例で追う実践ガイドも出ている(cover / contain / scale の使い分けや orient()->cover()->optimize()->storePublicly() の一連が参考になる)。

出典: https://laravel-news.com/laravel-13-20-0

13.21:#[RouteKey] とルート/検証まわりの属性

ルートモデルバインディングのキーを、getRouteKeyName() の上書きではなく属性1行で宣言できる #[RouteKey] が入った。#[ObservedBy] などと同じ流れだ。

use Illuminate\Database\Eloquent\Attributes\RouteKey;

#[RouteKey('slug')]
class Post extends Model {}   // slug カラムで暗黙バインディング

ミドルウェアが解決したテナントや組織を、コントローラ引数に直接注入する #[RequestAttribute] も加わった。$request->attributes->get() と手動の型ヒントが要らなくなる。

public function index(#[RequestAttribute('org')] Organization $org) { /* ... */ }

ほかに、RFC 4648 の正準な Base64 を厳密に検証する base64 ルール、13.20 の画像コンポーネントへの PNG / GIF / AVIF / BMP 出力(toPng() / toAvif() など)の追加が入った。v13.21.0 と v13.21.1 は同日タグ(パッチはバージョン定数のみ)。

出典: https://laravel-news.com/laravel-13-21-0

13.22:条件付きバインディングの #[BindWhen]

インターフェースの具象実装を、環境だけでなくクロージャで判定して結びつける #[BindWhen] が入った。設定やフィーチャーフラグで実装を差し替えられる(クロージャ引数は PHP 8.5 機能)。

#[BindWhen(BetaPaymentGateway::class, static fn ($c) => $c->make('config')->get('features.payments.beta'))]
#[Bind(StripePaymentGateway::class)]
interface PaymentGatewayInterface {}

ほかに、DNS検証(active_url / email:dns)を実ネットワークなしでテストする Validator::fakeDnsLookups()#[Delay] 属性の Bus::batch() / Queue::bulk() 対応、queue:clear のカンマ区切り複数キューが加わった。

出典: https://laravel-news.com/laravel-13-22-0

13.23:monthly ログドライバと Postgres の USING

カレンダー月ごとに1ファイルをローテートする monthly ログドライバが入った(singledaily の中間。ログ量の少ないアプリで空に近い日次ファイルが溜まるのを避けられる)。あわせて、Postgres で型変更時の明示キャストを与える ->using() 句が加わり、「MySQL/SQLite で書いたマイグレーションが Postgres で落ちる」定番の移行トラブルを解消できる。

Schema::table('currency_rates', function (Blueprint $table) {
    $table->date('name')->using('name::date')->change();  // Postgres のみ
});

ほかに SES v2 のメッセージ単位テナント選択(X-SES-TENANT-NAME)、メンテナンスモードのバイパス秘密の hash_equals() 化などが入った。

出典: https://laravel-news.com/laravel-13-23-0

コア変更点の早見表

バージョン 目玉 種別
13.18 WorkerStopping メトリクス / schedule:work グレースフル停止 / dev コマンド優先度 機能追加
13.19 HTTP QUERY 対応(Http::query() / テストヘルパ)/ reduceInto() / counted() 機能追加
13.20 ファーストパーティ画像処理(Image)/ #[WithoutMiddleware] / Redis セッションプレフィックス 機能追加
13.21 #[RouteKey] / #[RequestAttribute] / base64 検証 / 画像出力形式(PNG/GIF/AVIF/BMP) 機能追加
13.22 #[BindWhen] / fakeDnsLookups() / #[Delay] のバッチ対応 / queue:clear 複数キュー 機能追加
13.23 monthly ログ / Postgres ->using() / SES テナント / バイパス秘密の hash_equals 機能追加/セキュリティ

なお公式ツールでは、Laravel Installer 5.31laravel package コマンドが入った。公式スケルトンから Laravel パッケージを雛形生成でき、CIのPHPバージョン自動一致や --boost-skill によるスキル同梱にも対応する。

Laracon US 2026 の発表

7/28 のボストンで開催された Laracon US 2026 では、開発体験とテスト、AI まわりで大きな発表が続いた。

  • Laravel LSP:Taylor Otwell が発表したファーストパーティの言語サーバー。config キー、ルート名、ビューパス、翻訳、ミドルウェア、コンテナバインディングなどをエディタに教える。stdio 越しに LSP を話すので、これまで VS Code 拡張頼みだった Laravel 特化の補完、診断、定義ジャンプが、Cursor / Neovim / Zed / Sublime など任意のエディタで使える。多様なエディタを使うチームの開発体験を一段引き上げる。
composer global require laravel/lsp
  • Pest 5:Nuno Maduro が発表したテストフレームワークの新メジャー。目玉の TIA(Test Impact Analysis)エンジンは、変更が影響したテストだけを再実行し残りをキャッシュ再生する(カバレッジ精度は保つ)。Laravel Cloud の19,000超テストが3分→5秒に。AI エージェントの変更を実テストで検証する Agent、LLM 出力を expect() で採点する Evals、PHPStan、Rector のプラグインも同梱。PHP 8.4 と PHPUnit 13 が新ベースライン。大規模テストのCI時間短縮に直結する。
./vendor/bin/pest --parallel --tia
# Tests: 774 passed (7 affected, 765 replayed) / Duration: 3.92s
  • Laravel AI SDK の Human-in-the-Loop:エージェントがツール実行の前に一時停止し、人間の承認、拒否、引数編集を待てる HITL API(v0.10.0)。ファイル削除や返金、顧客へのメールのような副作用を、AIに丸投げせず承認ゲートに載せられる。引数ベースの条件承認(少額は自動、高額は上長承認)も書ける。生成AIを業務に組み込む案件のガバナンス要件に直結する。
protected function needsApproval(Request $request): Approval|bool
{
    return $request['amount'] <= 2000 ? false : Approval::required('Refunds over $20 need a manager.');
}
  • CPX 2.0npx の Composer 版。未インストールの Composer パッケージのコマンドを隔離依存で実行する。2.0 でファーストパーティの laravel/cpx になり、まずプロジェクトのローカルバイナリ(vendor/bin)を優先実行、AIエージェント実行を検出すると非対話モードで1行JSONを返す。
cpx friendsofphp/php-cs-fixer fix ./src   # 未インストールでも実行
cpx pint                                   # プロジェクトの vendor/bin/pint を優先

注目パッケージ(テーマ別に厳選)

AI・エージェント運用

  • Laravel AI TasksLaravel AI SDK をトランスポート層として、その周りの運用部分を足すパッケージ。AIの処理を再利用可能なタスククラスにまとめ、同期実行、キュー投入、ストリーミングの3モードで回せる。監査ログ、テナント別予算、/ai-tasks のダッシュボードが付く。OpenAI / Anthropic / Gemini / Groq / Mistral / xAI / Ollama にマルチプロバイダ対応し、実行時切替とフォールバックチェーンを持つ。
use Fomvasss\AiTasks\Facades\AI;

$response = AI::send(new SummarizeTask($text));    // 同期実行
$runId    = AI::queue(new SummarizeTask($text));   // キュー(run ID を返す)
AI::stream(new SummarizeTask($text), function (string $chunk) {
    echo $chunk;                                    // ストリーミング
});
  • Laravel MPP:Machine Payments Protocol を実装するミドルウェア。保護ルートへのアクセスをAIエージェントに課金する。支払い無しのリクエストには署名付きチャレンジ付きの 402 Payment Required を返し、支払えるエージェントは決済してから再試行する。決済レールは Stripe Shared Payment Tokens と Tempo pathUSD の2つ。MPP と Stripe SPT はまだプレビュー仕様。
Route::get('/resource', MyPaidResource::class)
    ->middleware('mpp:0.50,USD');

#[RequiresPayment(amount: '5.00', currency: 'USD', grants: 10)]
public function report() { /* grants で1回の支払いに複数アクセスを付与 */ }
  • Intercept:HTTPでおなじみのミドルウェアパターンを、エージェントがAIプロバイダに送るプロンプトに適用する。送信前に検査、書き換え、拒否ができる。初版は PromptInjectionGuard(プロンプトインジェクション検出。block / log / warn / sanitize)と PIIRedactor(メール、電話、カード番号など6種のPIIを検出しマスク/リダクト、カードやトークンは block-on-sight)。アクセス制御や監査ログの代替ではなく、1層の防御という位置づけ。
class ConciergeAgent implements Agent, HasMiddleware
{
    public function middleware(): array
    {
        return [new PromptInjectionGuard(action: 'block'), new PIIRedactor(action: 'redact')];
    }
}

レート制御・認証

  • Laravel Quota:累積の利用量上限を追跡して強制する。「月50回のPDFエクスポート」「日1000回のAPIクエリ」のように、カレンダー境界でリセットする予算に対して消費を数える。RateLimiter(バースト抑制)とは別問題向けで、キャッシュだけでなくDBに永続化でき、成功応答時だけ消費するルートミドルウェアや原子的な block() を持つ。
Quota::for('api_queries', $user)->limit(1000)->perDay()->enforce(); // 超過で HTTP 429

Route::post('/exports/generate', [ExportController::class, 'store'])
    ->middleware('quota:exports,50,month'); // 2xx/3xx のときだけ消費
  • Laravel Cooldown:名前付きアクションに時間ロックをかける。「120秒は次のOTPを送らない」「窓が明けるまで再課金しない」といった連打防止を、所有者別にDB永続で管理する。Quota と同一作者の姉妹パッケージ。二重発火を防ぐ原子的な block() を持つ。
Cooldown::for('send_login_code', $user)->block(function () use ($smsClient, $user) {
    $smsClient->sendCode($user->phone);
}, duration: 90);
  • Email Magic Link:メールのリンクかワンタイムコードでサインインさせるパスワードレス認証パッケージ。メールスキャナがリンクを先に消費しないよう、GET は確認ページを描画するだけで POST でトークンを消費する2段階フロー。Fortify で TOTP 確認済みのユーザーは、リンク検証で即ログインせず二要素チャレンジへ回す(バイパス経路なし)。トークンは HMAC-SHA256 でハッシュ保存、単回使用。

品質・セキュリティ・データ運用

  • phpcpd-next:PHPコードの重複(コピー&ペースト)を検出するCLI。Sebastian Bergmann のアーカイブ済み phpcpd の後継で、同じ phpcpd コマンドのドロップイン置き換え。完全一致だけでなく、行の並べ替えや、間に文が挿入/削除された Type-3 の重複も拾う。出力は console / PMD-CPD XML / JSON / SARIF 2.1.0(GitHub Code Scanning 連携)。重複をテスト表明に変える PHPUnit トレイトも同梱。
composer require --dev phpcpd-next/phpcpd
vendor/bin/phpcpd --preset=laravel app/Services --min-tokens=60
  • Pint の Blade 整形:Pint 1.30 が --blade.blade.php を整形できるようになった(Blade 構文、Alpine 属性、Tailwind のクラス並べ替えなど)。整形は Node(Prettier + prettier-plugin-blade)で走り、Pint が必要 npm を確認して導入を提案する。Envoy やメールビューは対象外。PHP と Blade を1つの整形ツールで揃えられる。
  • Heimdall:Composer 依存に「最小公開日数」ポリシーをかけるプラグイン。悪意あるリリースの多くは1〜2日で報告されて削除される事実を利用し、公開から指定日数を経ていないバージョンをインストールしない。ベンダー/パッケージ単位の例外も設定でき、依存ソルバの前に候補を落とす。advisory 前の汚染リリースを避ける低コストな防御。
{ "extra": { "heimdall": { "minimum_age": 7 } } }
  • Queue-SQL:数百万行への単一 UPDATE/DELETE が長時間ロックやレプリカ遅延を起こす問題に対し、書き込みを主キー範囲で区切って並列キュージョブ(Bus::batch)に分割する。throttle で秒間ジョブ数を抑えられ、稼働中サービスのバックフィルや一括削除に効く。dryRun() でプラン確認、queue-sql:status で監視。
Order::where('status', 'complete')
    ->queue(chunk: 25000, throttle: 4)
    ->update(['status' => 'completed'])
    ->dispatch();
  • Laravel Legacy Bridge:アプリを1ルートずつ Laravel に移行する途中で、旧側(CodeIgniter や独自PHP)でログイン済みのユーザーを Laravel 側でも認証状態にする。未認証リクエストでレガシーのセッションクッキーを読み、DBからペイロードをデコードして該当ユーザーをログインさせる。ネイティブPHPセッション / JSON / Laravel の base64(serialize()) / 暗号化ペイロードに対応。初版はDBセッションのみ、Webリクエストのみ。レガシーDBが信頼境界になるため read-only 認証情報が推奨。

ローカル開発・プロファイル

  • Laravel Time Machine:リクエストの各段階(ブート、ミドルウェア、ルーティング、コントローラ、レスポンス、終了)と全SQLをミリ秒で記録し、Gantt風タイムラインで見せるプロファイラ。500ms超のリクエストや50ms超のクエリを自動ハイライトする。保存はフラットファイル(DB不要)、APP_DEBUG 連動。Telescope(全体監視)と Debugbar(現ページ)の中間で、「どのリクエストのどこが遅いか」に絞れる。TimeMachine::measure() で自前の処理も同じタイムラインに載せられる。
  • Laravel SMS Catcher:送信SMS通知を捕まえてローカルで確認する、Mailpit の SMS 版。sms チャネルの通知を横取りして storage/logs/sms-catcher.json に書き、スマホ風モックアップで折り返しを画面幅別に確認できる。本番ではブロックされ local/デバッグ時のみ。実送信せずに通知の中身を確かめられる。
  • EnvKit:Webサーバー、PHP、各種DBを1つのコントロールパネルにまとめた Windows/macOS 向けデスクトップアプリ(ベータ)。無料の Herd/Laragon 代替で、Laragon プロジェクトを無変更でインポートできる。組み込みの MCP サーバーを持ち、エディタのAIアシスタントがスタック状態を読んで診断できる。
  • Uvora:マシン上の Laravel プロジェクトをローカルの SQLite でインデックス化し、キーボードショートカットから開く macOS メニューバーアプリ。routes や models まで読み、検索は50ms未満。テレメトリなしのローカル完結(無料、ベータ)。

UI・フロントエンド

  • Pinion UI:色と形を data-themedata-tune の2つの HTML 属性に分離した、無料/MITの TALL UI ライブラリ。テーマ39種、tune 11種、各テーマのライト/ダーク対で858通りの見た目を、1つの属性を変えるだけでアプリ全体に一貫適用できる。56の Blade コンポーネントは素の Tailwind を吐き、ui:eject でロックインなし。「顧客ごとに見た目を変える」受託に効く。
<html data-theme="finance" data-tune="corporate">
  • Inertia DevTools:全 Inertia visit を記録し、Props(deferred/merged 等のバッジ付き)、HTTP、Route、Page の4タブで送受信を見せる Chrome DevTools パネル。部分リロードや prefetch を1エントリにまとめる。記録はローカル保存で機微値はリダクト。インストール不要(アダプタに同梱)。

今月のトレンド

1. Laracon US 2026 が開発体験を底上げ。 公式言語サーバー Laravel LSP でエディタ非依存の Laravel 補完が実現し、Pest 5 の TIA で大規模テストのCI時間が桁で縮む。npx 相当の CPX 2.0 も加わり、「どのエディタでも、速く、迷わず」が公式の道具でそろってきた。

2. AIは「作る」から「運用・防御・承認する」へ。 タスク化の Laravel AI Tasks、機械向け課金の Laravel MPP、プロンプトを守る Intercept に加え、Laracon で AI SDK の Human-in-the-Loop(人手承認)が入った。副作用のあるツールに承認ゲートを挟めるようになり、生成AIの業務投入がガバナンス面でも現実的になっている。

3. コアは運用改善と定番機能の内蔵、そしてサプライチェーン。 13.18 のグレースフル停止、13.19 の HTTP QUERY、13.20 の画像処理、13.23 の monthly ログと Postgres ->using()。周辺でも依存の最小公開日数(Heimdall)や重複検出(phpcpd-next)と、品質と安全の裾野が広がった。

その他の新着

ハイライトに入れなかったぶんもリンクで残しておく。

  • Vocalizer:テキスト音声合成をローカルで走らせるネイティブPHP拡張。API呼び出しなしで、8つのモデルファミリ、声のクローン、クラッシュ隔離を備える。外部にデータを出さないTTSが要る案件向け(Linux、PHP 8.4/8.5 NTS 専用)。
  • Laravel Installer 5.31laravel package コマンドで公式スケルトンからパッケージを雛形生成。CIのPHPバージョン自動一致、AIエージェントによる非対話セットアップにも対応。
  • Laravel Reverb でライブのスコアボードを作る(チュートリアル):Reverb で得点、時計、タイムラインを全タブへリアルタイム配信する実装記録。ShouldBroadcastNowbroadcastWith でペイロードを最小化し、配信は Observer 起点、時計はブラウザ側で算出。SSR 対策や本番運用(Supervisor、wss 終端、Redis 水平スケール)まで。

まとめ

7月の Laravel は、コア6リリース(13.18→13.23)の運用改善と機能内蔵に、月末の Laracon US 2026 の大きな発表(Laravel LSP、Pest 5、AI SDK の人手承認、CPX)が重なった濃い月だった。AIは「運用・防御・承認」まで、開発体験は「どのエディタでも速く」まで進み、周辺は品質やセキュリティ、移行と裾野が広い。詳細は各出典リンクから。来月も続ける。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?