0
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年1月】Laravel/PHP 今月のまとめ|Filament 5 と Livewire 4、公式AIドキュメントと 12.44〜12.49

0
Posted at

1月の Laravel はフロントとAIが同時に動いた。今週公開された Livewire 4 に合わせて Filament 5 が出荷され、Laravel は公式ドキュメントに AI 支援開発のセクションを新設した。コアは 12.44 から 12.49 まで6リリース。HTTP クライアントの afterResponse()、JSON:API リソース、各所での enum 対応など、地味だが実務で効く追加が続いた。Claude Code 連携ツールも豊作で、Boost の MCP 対応から簡素化プラグイン、Herd worktrees スキルまで一通りそろった。

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

TL;DR

  • Filament 5 が登場。主目的は Livewire 4 対応で、v4 から v5 への機能差は Livewire 4 サポートのみ。
  • Livewire 4 が登場。単一ファイルコンポーネント、Islands、wire:transition、楽観的UIなど過去最大の刷新。
  • Laravel が公式AIドキュメントを公開。Laravel Boost を基盤に、Claude Code 連携ツールが一気に増えた。
  • コアは 12.44〜12.49。afterResponse()、JSON:API リソース、Cache::withoutOverlapping()hasSole() などが目立つ。
  • DebugBar系のメジャー更新、Statamic 6 ベータ、キュー運用パッケージ(Balanced Queue、Fuse)も出た。

今月の目玉1:Filament 5 と Livewire 4

1月はフロント周りのメジャー更新が重なった。先に位置づけを整理しておく。

Livewire 4:単一ファイルコンポーネントと Islands

Livewire 4 が登場した。過去最大のリリースで、最も目に見える変化はコンポーネントの書き方だ。PHP クラスと Blade ファイルを行き来する代わりに、PHP と Blade、CSS、JS を1ファイルにまとめられる。これが php artisan make:livewire のデフォルトになった。

<?php // resources/views/components/⚡counter.blade.php

use Livewire\Component;

new class extends Component {
    public $count = 0;

    public function increment()
    {
        $this->count++;
    }
};
?>

<div>
    <h1>{{ $count }}</h1>
    <button wire:click="increment">+</button>
</div>

<style>
    /* Scoped CSS... */
</style>

<script>
    /* Component JavaScript... */
</script>

目玉機能は Islands。コンポーネント内に、独立して再描画される隔離領域を作れる。

<div>
    @island
        <div>
            Revenue: {{ $this->revenue }}
            <button wire:click="$refresh">Refresh</button>
        </div>
    @endisland

    <div>
        <!-- This won't re-render when the island updates -->
        Other content...
    </div>
</div>

「Refresh」を押すと island だけが再描画される。利点は DOM 更新にとどまらない。island を computed property と組み合わせると、その island が必要とするデータだけが取得される。3つの island がそれぞれ別の computed property を参照していれば、1つをリフレッシュしたときに走るのはその island のクエリだけになる。データベースからレンダリングされた HTML まで、オーバーヘッドを部分単位に切り分けられる。

リリースに先立って予告された wire:transition ディレクティブは、ブラウザの View Transitions API を使ってハードウェアアクセラレーションされたアニメーションを追加する。

@if ($showAlertMessage)
    <div wire:transition>
        <!-- Message smoothly fades in/out -->
    </div>
@endif

ほかにも、外部ライブラリ不要のドラッグ&ドロップ(wire:sort)、サーバー往復なしで即座に画面を更新する楽観的UI(wire:show / wire:text / wire:bind)、#[Json] メソッドや Interceptors といった JavaScript 連携ツールが標準搭載された。後方互換性は強く保たれており、クラスベースのコンポーネントも引き続き完全にサポートされる。インストールは次のとおり。

composer require livewire/livewire:^4.0

Filament 5:Livewire 4 に追従するためのメジャー

Filament v5 がリリースされた。発表によれば、v5 は主に、既存の Filament v4 アプリケーションに破壊的変更を持ち込むことなく Livewire v4 をサポートするために存在する。Livewire v4 対応を新たなメジャーとして出荷することで、Livewire に明示的に依存していないプロジェクトは通常のアップグレード時の予期しない破損を避けられる。チームは、v4 と v5 の間に Livewire v4 対応を超える機能的な変更はなく、新機能は今後も両メジャーに提供され続けると強調している。v5 と同時に、AI 支援ワークフローで Filament アプリの実装計画を生成するプレミアムプラグイン Filament Blueprint も登場した。

その直前には Filament v4.5 も出ている。リッチエディタのメンションや画像リサイズ、ファイルアップロードのアスペクト比強制が目立つ。便利なのが、要求した比率に合わない画像をアップロードすると簡易クロップエディタが自動で開く automaticallyOpenImageEditorForAspectRatio() だ。

use Filament\Forms\Components\FileUpload;

FileUpload::make('banner')
    ->image()
    ->imageAspectRatio('16:9')
    ->automaticallyOpenImageEditorForAspectRatio()

スキーマ内アクションをネットワークリクエストなしでブラウザ上で実行する jsAction()、保存対象から確実に外す saved()、2FA セットアップを簡略化するトレイト群(InteractsWithAppAuthentication ほか)も加わった。

今月の目玉2:Laravel が公式AIドキュメントを公開

Laravel が公式ドキュメントに AI Assisted Development セクションを新設した。Taylor は、Laravel の意見の強い設計が AI 支援開発と相性が良い理由を、規約がスタック全体から曖昧さを取り除くからだと説明している。コントローラ、ジョブ、メール、キュー、キャッシュ、スケジューリングがいずれも明確なパターンに従うため、AI エージェントは推測をやめてクリーンなコードを生み出せる、という主張だ。

このドキュメントは AI を意識した開発の基盤として Laravel Boost を位置づける。Boost は、設定やインストール済みパッケージの調査、ルートやスキーマの探索、ドキュメント検索 API、Tinker 経由の安全なコード実行といったツール群を AI エージェントに公開する。MCP 互換ツールとして Claude Code、Cursor、VS Code、PhpStorm、Gemini と統合できる。

これに前後して、Claude Code 連携のツールが一気に増えた。

  • Laravel Boost の MCP プロトコル対応:Claude Code を含む新しいエージェントがレガシーな MCP プロトコルのサポートを終了したため、Boost が直近リリースで新プロトコルに対応した。composer require laravel/boost:1.8.9 -W --dev で更新できる。
  • Claude Code 簡素化プラグイン:Taylor が公開した laravel/claude-code。Boris Cherny らがオープンソース化したコード簡素化エージェントを Laravel/PHP の慣習に合わせて移植したもの。/plugin install laravel-simplifier@laravel で導入する。
  • Laravel Boost v1.8.10:Code Simplifier プロンプトと、Livewire v3 から v4 へのアップグレード支援プロンプトを追加。
  • Laravel Boost v2.0:新しい Skills システムを搭載。GitHub から AI スキルを取得してインストールする boost:add-skill コマンドが入った。
# GitHub から AI スキルを取得してインストール
php artisan boost:add-skill vercel-labs/agent-skills
  • Boost でのパッケージガイドライン/スキル導入:Laravel パッケージ内のガイドラインとスキルを自動検出し、boost:install 時に読み込む。メンテナは resources/boost/skills/{skill-name}/SKILL.md のパターンで同梱できる。
  • Laravel Altitude:TALLスタック向けの意見の強い Claude Code エージェント群(architect / database / docs / security)と /ship /test /debug コマンド。ドキュメント参照は Boost に任せる役割分離が特徴。
  • Laravel Herd Worktree/laravel-herd-worktree 一発で、独立したワークツリー作成、Herd への紐付け、.env 設定、依存インストール、Vite 起動までを自動化する Claude Code スキル。

論考としては、Ben Bjurstrom の「Laravel は 2026 年のバイブコーディングに最適なスタックだ」も同じ方向を向く。LLM が選択を迫られる場面ほど誤りが生まれやすく、組み込みのデフォルトを多く持つ Laravel は AI のミスの余地を減らせる、という主張だ。

Laravel コアの進化(12.44 → 12.49)

1月はコアが6リリース。新機能の粒度は小さめだが、HTTP クライアントと enum 対応、キャッシュロックあたりに実用的な追加が並んだ。

12.44:HTTP クライアントの afterResponse()

レスポンス構築後に実行されるコールバックが入った。レスポンスの検査、イベント送信、独自レスポンスクラスへの変換に使える。

return Http::acceptJson()
    ->withHeader('X-Shopify-Access-Token', $shopCreds->token)
    ->baseUrl("https://{$shopCreds->shop_domain}.myshopify.com/admin/api/2025-10/")
    ->afterResponse(
        // Report any deprecation notices that were in the header
        function (Response $response) use ($shopCreds) {
            $header = $response->header('X-Shopify-API-Deprecated-Reason');
            if ($header) {
                event(new ShopifyDeprecationNotice($shopCreds->shop, $header);
            }
     })
    ->afterResponse(
        // Map the response into our own custom response class
        fn (Response $response) => new ShopifyResponse($response->toPsrResponse())
    );

ほかに、テスト向けの TestResponse::assertHeaderContains()Date ルールへの now 系メソッド(Rule::date()->andTime()->nowOrPast() など)、LocaleUpdated イベントへの直前ロケール追加も入った。

出典: https://laravel-news.com/laravel-12-44-0

12.45:JSON:API リソースと enum キーの拡充

JsonResource の代わりに JSON:API 仕様で出力する JsonApiResource が追加された。

use Illuminate\Http\Resources\JsonApi\JsonApiResource;

class UserResource extends JsonApiResource {}

make:resource--json-api フラグを付けて生成できる。あわせてセッションキーとキャッシュキーで BackedEnum を直接渡せるようになり、->value を書かずに済むよう統一が進んだ。

// Before
session()->put(CheckoutSession::Cart->value, $items);
// After (>=12.45)
session()->put(CheckoutSession::Cart, $items);

バイナリ値を扱う AsBinary キャスト、クラウドストレージからの添付ヘルパー fromCloudStorage()、変数名は見えたまま値だけ暗号化する env:encrypt --readable フラグも加わった。

出典: https://laravel-news.com/laravel-12-45-0

12.46:配列ヘルパーと enum 対応の Gate 認可

値ベースで配列をフィルタする Arr::onlyValues() / Arr::exceptValues() と、複数要素の有無を判定する Collection::containsManyItems() が入った。

$roles = ['admin', 'editor', 'viewer', 'guest'];
$allowedRoles = Arr::onlyValues($roles, ['admin', 'editor']);
// Result: [0 => 'admin', 1 => 'editor']

12.45.2 では Gate の has()UnitEnum を受け付けるようになり、型安全な認可チェックが書ける。

enum Abilities {
    case VIEW_DASHBOARD;
    case EDIT_POST;
    case DELETE_USER;
}

Gate::define(Abilities::VIEW_DASHBOARD, fn($user) => $user->isAdmin());

if (Gate::has(Abilities::VIEW_DASHBOARD)) {
    // Type-safe ability check - works with UnitEnum!
}

3バージョンとも後方互換で、composer update laravel/framework だけで導入できる。

出典: https://laravel-news.com/laravel-12-46-0

12.47:重複実行を防ぐ Cache::withoutOverlapping()

ロックを取得してブロックする定番パターンを1行で書けるメソッドが入った。

// Before
Cache::lock('processing-order-' . $orderId)
    ->block(10)
    ->get(function () use ($orderId) {
        // Process the order
    });

// After
Cache::withoutOverlapping('processing-order-' . $orderId, function () use ($orderId) {
    // Process the order - guaranteed no concurrent execution
}, seconds: 10);

キュージョブやスケジュールタスクの二重実行防止に効く。ほかに、親ビューの変数を引き継がない @includeIsolated Blade ディレクティブ、Illuminate\Notifications\Notification の macroable 化、PendingBatch::onConnection() の enum 対応、JSON API の循環参照の重複排除なども加わった。

出典: https://laravel-news.com/laravel-12-47-0

12.48:BatchFinished イベントと HTTP/CORS の小改善

バッチが失敗なく完了したときに発火する BatchFinished イベントが追加された(既存の BatchFailed を補完)。

use Illuminate\Bus\Events\BatchFinished;

Event::listen(function (BatchFinished $event) {
    $batch = $event->batch;
    Log::info("Batch {$batch->id} completed successfully");
});

HTTP クライアントの json(flags: ...) による JSON デコードフラグ指定、HandleCors::skipWhen() による条件付きスキップ、並列テスト時のコンパイル済みビューのプロセス単位分離も入った。なお、このリリースで一度入った「クエリビルダの式エイリアス」は、次の 12.49 でリバートされている点に注意。

出典: https://laravel-news.com/laravel-12-48-0

12.49:hasSole() コレクションメソッド

条件に一致する項目がちょうど1つだけ含まれるかを判定する hasSole() が追加され、従来の containsOneItem() を非推奨化した。sole() と同じフィルタシグネチャをサポートする。

$collection->hasSole();
$collection->hasSole(fn ($item) => $item->active);
$collection->hasSole('status', 'pending');
$collection->hasSole('age', '>=', 21);

リソースコレクションをフルーエントに設定できる preserveKeys()php artisan down --retry の日時文字列対応、Sessionnow() / flash()Cache::flexible() / withoutOverlapping() の enum キー対応、Arr::dot() のメモリリーク修正も含まれる。

出典: https://laravel-news.com/laravel-12-49-0

コア早見表

バージョン 目玉 種別
12.44 HTTP クライアントの afterResponse() / assertHeaderContains() 機能追加
12.45 JsonApiResource / セッションとキャッシュキーの enum 対応 機能追加
12.46 Arr::onlyValues() / Gate has()UnitEnum 対応 機能追加
12.47 Cache::withoutOverlapping() / @includeIsolated 機能追加
12.48 BatchFinished イベント / HandleCors::skipWhen() 機能追加
12.49 hasSole()containsOneItem() 非推奨化) / preserveKeys() 機能追加

Livewire 4 対応では IDE 側も動いた。Laravel VS Code 拡張 v1.4.3Route::livewire(...)<livewire:*> の補完に対応した(Livewire 3 互換も維持)。その前の v1.4.2 は Docker サポートと DDEV での Pint 修正、make コマンドのパレット実行(v1.4.0 以降)も入っている。フロント側では Inertia.js 2.3.7 が機微フィールドを履歴に残さない dontRemember() を、Inertia v2.3.10cancelAll の async/sync オプションと Firefox 等の互換性改善を加えた。CMS では Statamic 6 ベータが公開され、コントロールパネル刷新と2要素認証の標準搭載、Vue 3 移行が入った(Laravel 12 必須)。

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

キュー・運用

  • Fuse for Laravel:外部サービス障害時にキューワーカーが止まる問題を、サーキットブレーカーパターンで解決する。失敗率が閾値を超えるとリクエストを止め、ジョブをミリ秒で失敗させてキューに戻す。ジョブにミドルウェアを足すだけで導入できる。
use Harris21\Fuse\Middleware\CircuitBreakerMiddleware;

class ChargeCustomer implements ShouldQueue
{
    public function middleware(): array
    {
        return [new CircuitBreakerMiddleware('stripe')];
    }
    // ...
}
  • Laravel Balanced Queue:キューをユーザーやテナント単位のパーティションに分け、ローテーションで公平にワーカーへ割り当てる。Horizon 連携やユーザーごとの同時実行数制限も備える。

Eloquent とデータ構造

  • Data Block:ネストしたデータ構造や複雑な JSON を select / where / orderBy のチェーンで扱う PHP パッケージ。ドット記法での取得と設定、JSON/YAML へのエクスポートに対応。
  • Laravel TurboMaker:1つの Artisan コマンドで CRUD/API モジュール一式(モデル、マイグレーション、コントローラ、ルート、テスト、ビュー、ポリシー)を生成。YAML スキーマでの定義も可能。

ユーザー管理・制限

  • Laravel Invite Only:トークンベースの招待、ポリモーフィックなリレーション、自動リマインダー、イベント駆動の通知を備えたユーザー招待管理。チームや組織など任意のモデルで使い回せる。
  • Laravel Waitlist:複数ウェイトリスト、ステータス管理、メール認証、自動通知に対応。ルートやビューを押し付けない設計。
  • Laravel Prohibitions:期限付きの操作制限をDBに保存し、コード変更なしで動的に適用したり解除したりできる。個別の禁止と、それをまとめた制裁を区別して管理でき、Gate::before() と一貫して連携する。

開発支援・品質

  • Laravel Deadlock:一時的な回避策に有効期限を PHP 属性で付け、期限切れをローカルでは例外、CI ではビルド失敗として強制する。#[Workaround] で印を付け、deadlock:list で棚卸しする。
  • Laravel Vendor Cleanup:publish 済み vendor ファイルを SHA256 ハッシュで比較し、変更済み、未変更、孤立を判別する Artisan コマンド群。
  • Laravel Wayfinder ベータ:PHP のコードからルート、モデル、Enum、Inertia の props などを完全型付けの TypeScript として生成する。静的解析ツール Surveyor と Ranger も同梱。
  • Pest の withHost():ブラウザテストでサブドメインルート(Route::domain())をテストできる。マルチテナント型アプリのテストに有用。
  • PHP DebugBar v3:jQuery を排した近代的UIと Tabler の SVG アイコンを採用。ウィジェットやコレクターまわりに破壊的変更が多い。
  • Laravel Debugbar v4.0.0:所有権が fruitcake/laravel-debugbar へ移管。HTTP Client/Inertia/Octane 対応を追加し、名前空間が Fruitcake\LaravelDebugbar に変わった。旧パッケージの手動削除と再インストールが必要。

AI・その他

  • Neuron AI:本番運用に耐える AI エージェントを構築する PHP フレームワーク。Agent クラスを継承するだけでチャット履歴やツールを備えたエージェントを作れる。neuron-laravel が Laravel 統合を担う。
  • FluentVox:Resemble AI の Chatterbox を Laravel 流のAPI/CLIで包んだ TTS パッケージ。音声クローンと23言語以上の多言語モデル、GPUアクセラレーションに対応。
  • Radiance:任意の文字列から決定論的なメッシュグラデーションのアバターを生成する PHP ライブラリ。同じシードからは常に同一のアバターになる。
  • Bagisto Visual:Bagisto 向けのテーマフレームワーク兼ビジュアルエディタ。開発者は JSON で定義し、オーナーはドラッグ&ドロップで編集する。

今月のトレンド3つ

1. フロントのメジャー更新が同時着地。 Livewire 4 の単一ファイルコンポーネントと Islands、それに追従する Filament 5、Inertia や Statamic 6 の動きが重なった。Livewire 案件を抱えるチームは、v4 の後方互換の範囲と新デフォルトを早めに押さえておきたい。

2. AI支援開発が Laravel の一級市民に。 公式 AI ドキュメントの新設で、Laravel Boost を基盤にした開発が体系化された。Boost の MCP 対応、簡素化プラグイン、Altitude、Herd worktrees スキルと、Claude Code を中心に連携ツールが一気にそろった。

3. キューの障害耐性とコスト最適化。 外部障害をサーキットブレーカーで止める Fuse、テナント単位で公平に配分する Balanced Queue、12.47 の withoutOverlapping() と、キュー運用の地に足のついた改善が並んだ。Laravel News 自身の高速化事例も同じ実務志向だ。

その他の新着

  • MongoDB によるキャッシュ:すでに MongoDB を使っているなら、Redis を足さず MongoDB 自身をキャッシュストアにできる。TTL インデックスやロックの実装手順を網羅。
  • Cloudflare で Laravel News を高速化:一見動的だが実態は静的なページを、Cloudflare のページキャッシュで速くする実例。非リアクティブな Livewire を Blade に置き換えれば CDN レベルで完全キャッシュできる。
  • Laravel News を Forge から Cloud へ移行:本番アプリの移行を題材に、判断とデプロイ手順、落とし穴をライブ配信で解説。

まとめ

1月はフロント(Livewire 4 と Filament 5)とAI(公式ドキュメントと Boost 連携)という2つの基盤が同時に動いた月だった。コアの 12.44〜12.49 は HTTP クライアントと enum 対応、キャッシュロックの運用改善が中心。Livewire 4 は移行ポイントの整理から、公式AIドキュメントは Boost と Claude Code の社内導入から、どちらも実務に落としやすい。

このまとめは毎月続ける。詳細は各出典リンクから。

0
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
0
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?