0
0

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年3月】Laravel/PHP 今月のまとめ|Laravel 13 が正式リリース、Inertia v3 もGAへ

0
Posted at

3月の Laravel は、メジャーバージョンの Laravel 13 が正式リリースされた。最低要件は PHP 8.3 に上がり、PHP 属性のファーストクラスサポート、公式の AI SDK、ベクトル検索が一斉に入った。フロント側では Inertia.js v3.0.0 が GA となり、必須依存だった Axios が外れた。コアのマイナーも 12.54 と 13.2 が出ている。

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

TL;DR

  • Laravel 13 が GA。PHP 8.3 必須化、PHP 属性のネイティブ対応、公式 AI SDK、JSON:API リソース、Queue::route()、ベクトル検索、Cache::touch() が目玉。破壊的変更は最小限に抑えた方針。
  • Inertia.js v3.0.0 が正式リリース。組み込み XHR クライアントで Axios がオプションに、useHttp フックと第一級の楽観的更新を追加。ベータからの通算。
  • コアのマイナーは 12.54.0(Model::withoutRelation())と 13.2.0(対称的なモデル属性、キュー属性の enum 対応)。
  • AI 関連の道具立てが厚い月。Polyscope、LaraCopilot、Prompt Deck、Prism Workers AI、Spatie の Markdown 配信パッケージ。
  • 開発体験まわりも動いた。NativePHP v3.1 の10倍高速化、Laravel Pint の FQCN 自動 import、Laravel Prompts の task()/stream()、Filament v5.3、Debugbar v4.2。

Laravel 13 が正式リリース

Laravel 13 がリリースされた。今回のサイクルは破壊的変更を最小限に抑え、既存アプリを壊さない使い勝手の改善を一年かけて出荷する方針が取られている。最低要件は PHP 8.2 を打ち切って PHP 8.3 以上になった。バグ修正は2027年Q3まで、セキュリティ更新は2028年Q1まで提供される。

PHP 属性のファーストクラスサポート

開発者にとって最も大きい変更は、フレームワーク全体にわたる PHP 属性のネイティブ対応だ。プロパティで振る舞いを設定する代わりに、属性でインラインに宣言できる。

// EXAMPLE MODEL

#[Table('users', key: 'user_id', keyType: 'string', incrementing: false)]
#[Hidden(['password'])]
#[Fillable(['name', 'email'])]
class User extends Model {}

対象はモデル、ジョブ、コンソールコマンドなど15以上の箇所に及ぶ。これは完全にオプションで、後方互換性がある。

Laravel AI SDK とベクトル検索

公式の Laravel AI SDK が入った。テキスト生成、ツール呼び出しエージェント、埋め込み、音声、画像、ベクトルストア統合を統一 API で扱う。あわせてネイティブのベクトルクエリサポートも入り、クエリビルダから直接セマンティック検索を書ける。

$documents = DB::table('documents')
    ->whereVectorSimilarTo('embedding', 'Best wineries in Napa Valley')
    ->limit(10)
    ->get();

PostgreSQL と pgvector を組み合わせれば、文字列から生成した埋め込みに対する類似検索を素直に構築できる。

JSON:API リソースとキューのルーティング

ファーストパーティの JSON:API リソースが同梱され、リソースオブジェクトのシリアライズ、リレーションのインクルード、スパースフィールドセット、JSON:API 準拠のレスポンスヘッダーを扱えるようになった。

キューには Queue::route() でクラス単位のルーティングが加わり、ジョブごとの既定キューやコネクションを一箇所で定義できる。

Queue::route(ProcessPodcast::class, connection: 'redis', queue: 'podcasts');

Cache::touch()

値を取り出して保存し直すことなく、キャッシュアイテムの TTL だけを延長する Cache::touch() が入った。

// Extend by seconds
Cache::touch('user_session:123', 3600);

// Extend with a DateTime
Cache::touch('analytics_data', now()->addHours(6));

// Extend indefinitely
Cache::touch('report_cache', null);

従来は TTL 延長に get のあとの put が必要で、キャッシュ値をネットワーク越しに無駄に転送していた。Cache::touch() は Redis なら EXPIRE、Memcached なら TOUCH、DB ドライバなら単一の UPDATE で済ませる。成功時は true、キーが無ければ false を返し、Array、APC、Database、DynamoDB、File、Memcached、Memoized、Null、Redis の全ドライバで実装されている。

アップグレードは Laravel Shift が、レビューしやすいアトミックなコミットの PR を作ってくれる。

Laravel コアの進化(12.54 → 13.2)

メジャーと並んで、コアのマイナーも2本出ている。

12.54.0:Model::withoutRelation()

Laravel 12.54.0Model::withoutRelation() を追加した。元のモデルを変更せずに、特定のリレーションだけを外したクローンを作る。すべて外す withoutRelations() と、その場で変更する unsetRelation() のあいだを埋めるメソッドだ。

// Remove a single relation from a clone
$lightweight = $post->withoutRelation('comments');

// Remove multiple relations
$lightweight = $post->withoutRelation(['comments', 'tags']);

// Original is untouched
$post->relationLoaded('comments'); // true

循環参照の処理、キュー投入時のペイロード削減、シリアライズ前の整理に効く。ほかにリクエストデータを CarbonInterval に変換する interval()、jobs テーブルへの (queue, reserved_at, available_at) 複合インデックス、queue:monitor での最古の保留ジョブ表示、PostgreSQL の tsvector カラム型などが入った。

13.2.0:対称的なモデル属性

Laravel 13.2.0 は、複数の関心事を1つに詰め込む #[Table] に代わり、単機能で対称的な属性群を追加した。

// Before
#[Table(timestamps: false, dateFormat: 'U')]
class Post extends Model {}

// After
#[DateFormat('U')]
#[WithoutTimestamps]
class Post extends Model {}

#[Queue]#[Connection] が backed enum を直接受け取れるようになり、->value を書かずに済む。

// Before
#[Queue(Queues::LOGS_INGESTION->value)]
final class IngestAuditLog implements ShouldQueue {}

// After
#[Queue(Queues::LOGS_INGESTION)]
final class IngestAuditLog implements ShouldQueue {}

ほかに withoutOverlapping()releaseOnSignal(終了シグナルでロックを解放し、スケジューラ再起動時に即再実行。pcntl 拡張が必要)、UniqueConstraintViolationException がカラム名とインデックス名を公開、schedule:list がタスクごとのタイムゾーンで cron 式を表示、#[Backoff] の可変長引数対応などがある。

コア早見表

バージョン 目玉 種別
12.54.0 Model::withoutRelation() / jobs 複合インデックス / tsvector 機能追加
13(GA) PHP 8.3 必須 / PHP 属性 / AI SDK / ベクトル検索 / Cache::touch() メジャー
13.2.0 対称的なモデル属性 / キュー属性の enum 対応 / releaseOnSignal 機能追加

Inertia.js v3.0.0 がGAへ

Inertia.js v3.0.0 が正式リリースされた。コアと React / Vue / Svelte の3アダプタすべてが対象で、今年初めのベータ(XHR クライアント、useHttp、楽観的更新、インスタント遷移などを先行搭載)に、ベータ期間中の修正と改良を重ねた内容だ。

最大の変更は、必須依存だった Axios を組み込みの XHR クライアントが置き換えた点。デフォルトで Axios(gzip 約15KB)と qs をバンドルから外せる。Axios のインターセプタが要る場合はオプションのピア依存として残せる。

ナビゲーションを起こさずに HTTP リクエストを投げる useHttp フックも入った。processing / errors / progress / isDirty を返し、useForm と同じ開発体験を保つ。

const http = useHttp({
    query: '',
})

const search = () => {
    http.get('/api/search').then((results) => {
        console.log('Found:', results.length)
    })
}

router、useFormuseHttp をまたいだ第一級の楽観的更新も追加された。変更は即座にページ状態へ適用され、2xx 以外のレスポンスで自動ロールバックする。

// Fluent
router
    .optimistic((props) => ({
        todos: [...props.todos, { id: Date.now(), name, done: false }],
    }))
    .post('/todos', { name })

// Inline option
router.post('/todos', { name }, {
    optimistic: (props) => ({
        todos: [...props.todos, { id: Date.now(), name, done: false }],
    }),
})

ほかにレイアウト props API、Vite 開発モードでの SSR、Svelte 5 アダプタ、引数なしの createInertiaApp() などがある。フレームワーク要件の更新、ESM-only 化、API のリネームを含むメジャーなので、アップグレード前に公式アップグレードガイドを確認したい。Laravel 側のツールも追従しており、Laravel Boost v2.3.0 は Inertia v2 から v3 への移行を案内する MCP プロンプトを追加した(導入アダプタを自動検出して該当フレームワーク向けの内容だけを表示する)。あわせて Monolog の JSON 形式ログ対応、Artisan の薄いラッパーだった6つの MCP ツールの削除(破壊的変更。AI エージェントが CLI を直接叩く方針へ)も入っている。

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

AI・エージェント開発

  • Polyscope:Beyond Code の Marcel Pociot による、複数の AI エージェントを同時に動かす無料のオーケストレーション環境。コピーオンライト方式のクローンで高速にエージェントを分岐でき、組み込みプレビューブラウザからビジュアルにプロンプトを与えられる。macOS 向け。
  • LaraCopilot:アイデアを書いた単一プロンプトから、フロントとバックを含む Laravel の MVP を丸ごと生成するツール。
  • Prompt Deck:AI プロンプトをコード内の文字列ではなく、ディスク上のバージョン管理 markdown ファイルとして扱う。{{ $variable }} での差し込み、A/B テスト、laravel/ai との HasPromptTemplate トレイト連携を備える。
  • Prism Workers AI:Prism PHP と Laravel AI SDK に Cloudflare Workers AI プロバイダを足す。AI Gateway の /compat 経由でルーティングし、テキスト生成、ストリーミング、埋め込み、マルチステップのツール呼び出し、推論モデルの思考抽出に対応する。
  • Laravel Markdown Response:Spatie 製。ボットや AI エージェントのアクセスを検知して HTML の代わりにクリーンな Markdown を返す。コントローラやビューを変えずミドルウェアで変換し、結果をキャッシュする。

セキュリティ・品質

  • Ward:Laravel の構造を理解して動く、Go 製のコマンドラインセキュリティスキャナー。env、config、依存関係、ルールの4エンジンで誤設定や漏洩シークレットを検出し、JSON / SARIF / HTML / Markdown 出力と CI/CD 連携、ベースライン管理に対応する。
  • Laravel Boost v2.4.0add-skill コマンドにスキルインストール前のセキュリティ監査を追加。新スキル laravel-best-practices も入り、Herd MCP 連携は Herd CLI に置き換えられた。
  • Laravel Pint の FQCN 自動 import:Laravel プリセットに fully_qualified_strict_types ルールが加わり、完全修飾クラス名を短縮して use 文を自動追加する。型ヒント、戻り値型、PHPDoc タグ、インライン参照に対応。laravel プリセット利用なら自動で有効で、更新後の初回に一度きりの差分が出る。
  • Lens for Laravel:Axe-core で稼働中アプリの WCAG 違反をスキャンし、各問題を Blade テンプレートのファイルと行番号にひも付ける。lens:audit コマンドと、Gemini / OpenAI / Anthropic 対応の AI 修正提案を備える(自動検出は違反の約20〜30%にとどまる点も明記されている)。

Eloquent・データベース

  • Kit:トークンベース認証とセキュリティ優先の既定値を据えた、意見の強い API スターターキット。バージョン管理されたルート、Invokable コントローラ、Form Request 検証、JSON:API レスポンス、ULID 主キー、エンドポイント廃止用の Sunset ミドルウェアを標準で持つ。
  • Laravel Ingest:設定駆動の ETL パッケージ。その場しのぎのインポートスクリプトを宣言的なインポータークラスに置き換え、Generator と Queue でファイルサイズに依らずメモリを一定に保つ。リレーション自動解決、重複処理戦略、ドライラン、失敗行トラッキングを備える。
  • Tyro Checkpoint:ローカル開発の SQLite に対し、Git のコミットのような名前付きスナップショットを作成し、復元できる開発専用パッケージ。マイグレーションやシーダーを再実行せずに DB 状態を一瞬で戻せる。
  • Laravel USPS:USPS API v3 をラップする多機能パッケージ。20 の API ドメインと80以上のエンドポイントをカバーし、住所検証、逆引き、荷物追跡を Usps ファサードで扱える。

開発支援・その他ツール

  • php-attribute-reader:Spatie 製。冗長になりがちなリフレクションでの属性読み取りを、Attributes クラスの静的メソッド(get / has / onMethod / find など)で包む。
  • Artisan Browse:Artisan コマンドの発見、検索、実行をターミナル上で行う対話 TUI。php artisan browse で一覧し、引数やオプションを順に入力して実行前に最終コマンドを確認できる(dev 専用)。
  • spatie/crawler v9:Guzzle のプロミスでサイトを並行クロールする PHP パッケージ。CrawlResponse オブジェクト、スコープ制御の改善、fake() によるテストユーティリティが入った。
  • SlideWire:Livewire コンポーネントと Blade でブラウザ用プレゼンスライドを作る。各スライドはフルページの Livewire コンポーネントで、Phiki のシンタックスハイライトや Mermaid 図に対応する。
  • Circuit Breaker:サーキットブレーカーパターンを Laravel に持ち込み、障害の連鎖を防ぐ。closed / open / half-open の3状態、サービス単位で分離する名前付きサーキット、run() でのラップと Guzzle ミドルウェアを備える。
  • Liminal:PHP 8.4 を WebAssembly で動かし、サーバもローカル PHP も不要でブラウザ内だけで Laravel を開発し、プレビューできる IDE。ファイル変更を URL に埋め込んで共有できる。
  • OG Kit:自前の HTML と CSS で動的な Open Graph 画像を生成するサービス。ページに <template> タグとクライアントスクリプトを足すだけで動き、Laravel 10/11/12 対応の公式パッケージもある。
  • Debugbar v4.2.0:Laravel Boost 向けスキルを追加。boost:install の再実行でインストールでき、最新リクエストの閲覧、重複検出を含むクエリ概要、EXPLAIN 結果つきのクエリ詳細を確認できる。
  • PHP Debugger:ステップデバッグだけを残して Xdebug から分岐した拡張。プロファイラやカバレッジを削り、未使用時のオーバーヘッドを Xdebug 比で最大97%削減する。xdebug.* 互換のドロップイン置き換えで、PhpStorm や VS Code を設定変更なしに使える。
  • Laravel Community モバイルアプリ:Laracon や地域ミートアップを場所や日付で探せる公式アプリ。QR コードプロフィールで連絡先を交換できる。

今月のトレンド3つ

1. メジャー2本の同時着地。 Laravel 13 のサーバ側と Inertia v3 のフロント側が同じ月に GA を迎えた。前者は PHP 属性と AI SDK で書き味と機能を、後者は Axios 依存の削減と楽観的更新で UX を押し上げる。Laravel Boost が両方のアップグレードプロンプトを抱えているのも、移行が現実の作業になっていることの表れだ。

2. AI を Laravel の中で組む道具立て。 公式 AI SDK を軸に、エージェントを並列実行する Polyscope、プロンプトをファイルで管理する Prompt Deck、Cloudflare Workers AI を足す Prism Workers AI、AI 向けに Markdown を配信する Spatie パッケージが揃った。LLM 連携が外部フレームワーク頼みから、Laravel エコシステム内の選択へ移りつつある。

3. 開発体験とパフォーマンスの底上げ。 NativePHP v3.1 は Persistent Runtime でレスポンスを 200-300ms から 5-30ms へ縮め、Filament がモバイルで標準動作するようにした。Laravel Pint の FQCN 自動 import、Laravel Prompts の task()/stream()、PHP Debugger のアイドル時オーバーヘッド削減と、日々の作業を軽くする更新が並んだ。

その他の新着

  • NativePHP v3.1:Laravel を1度だけ起動してカーネルを再利用する Persistent Runtime を導入し、レスポンスを 5-30ms へ短縮。ZTS PHP、専用スレッドのバックグラウンドキュー、Android 8+ 対応、iOS の完全 ICU 対応を備える。破壊的変更のないドロップイン更新。
  • Laravel Prompts v0.3.15task()stream()autocomplete()、select の動的 info、title()notify() といった CLI プリミティブを追加。task() で包んだ AI エージェントの出力を stream() で流すなど、AI 駆動のターミナルアプリを組みやすくなった。
  • Filament v5.3.0:タブバッジの遅延読み込み、カラムマネージャのモーダル/スライドオーバー対応、RichEditor プラグインの拡張など10機能を追加。レート制限のユーザーID/メール対応、ナビゲーショングループの UnitEnum 対応も入った。
  • 競合状態の検出と修正:Eloquent の read-modify-write が同時アクセスで競合状態を生む問題を、MongoDB のアトミック演算子($inc$set)を raw() で使い DB 内で完結させて解消する。同時リクエストを再現するフィーチャーテストで検出する手法も解説。
  • トランザクション安全なマルチドキュメント操作DB::connection('mongodb')->transaction() で複数コレクションをまたぐ処理の整合性を保つ。トランザクションは DB 操作だけに絞り、メールや外部 API はコミット後に出すのが信頼性と速度の鍵(実例で 450ms から 150ms へ)。
  • Laracon AU 2026:2026年11月4日〜6日にブリスベンで開催。実運用のアーキテクチャやパターンなど深い技術コンテンツを重視する構成で、登壇募集の締切は4月17日。

まとめ

3月はメジャーが2本そろった月だった。Laravel 13 は PHP 属性と AI SDK で書き方と機能を更新し、Inertia v3 は Axios 依存を外して楽観的更新を標準化した。どちらも破壊的変更を含むので、移行はアップグレードガイドと Boost のプロンプトを併用して慎重に進めたい。新規案件なら 13 と Inertia v3 を前提に設計できる段階に入った。

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

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?