メインコンテンツへスキップ

Wayfinderとは

Laravel Wayfinder は、LaravelバックエンドとTypeScriptフロントエンドをゼロフリクションで橋渡しするパッケージです。コントローラーとルートから完全に型付けされたTypeScript関数を自動生成するため、フロントエンドのコードからLaravelのエンドポイントを関数として直接呼び出せます。 URLのハードコーディング、ルートパラメーターの手動管理、バックエンド変更の手作業同期——これらがすべて不要になります。
WayfinderはBeta版です(現在 v0.1.x)。v1.0.0 のリリースまでに API が変更される可能性があります。重要な変更はすべて CHANGELOG に記録されます。

ZiggyとWayfinderの違い

Ziggyとは

Ziggy は長年にわたってLaravelエコシステムで広く使われてきたルートヘルパーです。Laravelのルート定義をJavaScript側に公開し、route('posts.show', { id: 1 }) のような形でURLを生成できました。

なぜWayfinderに置き換えられたか

Ziggyはルート名とパラメーターを文字列で扱うため、TypeScriptとの相性に限界がありました。ルート名のタイポや間違ったパラメーター名はランタイムエラーにしかなりません。 WayfinderはTypeScriptファーストの設計で、コントローラーのメソッドを インポート可能な関数 として生成します。 Inertia ベースのLaravelスターターキット(React・Vue・Svelte)では、Wayfinder が標準で採用されています。

インストール

1. Composerでサーバーサイドパッケージをインストール

2. NPMでViteプラグインをインストール

3. vite.config.js にプラグインを追加

Viteプラグインを追加すると、開発サーバー起動中にPHPファイルやルートファイルが変更されるたびに自動的にTypeScriptファイルが再生成されます。

TypeScript定義ファイルの生成

wayfinder:generate コマンドで TypeScript ファイルを生成します。
デフォルトでは resources/js 以下に3つのディレクトリが生成されます。
生成されるファイルはビルドのたびに完全に再生成されるため、.gitignore に追加することを推奨します。wayfinder, actions, routes の3ディレクトリをまとめて除外してください。
出力先を変更したい場合は --path オプションを使います。
コントローラーアクションのみ、またはルートのみ生成することも可能です。

基本的な使い方

アクションのインポートと使用

PostControllershow メソッドに対応するURLを生成する例です。
URLだけが必要な場合は .url() を使います。
特定の HTTP メソッドを指定することもできます。

パラメーターの渡し方

Wayfinder の関数はさまざまな形式のパラメーターを受け付けます。
ルートにキーバインディングが指定されている場合 (/posts/{post:slug}) はその値を使えます。

コントローラー全体のインポート

コントローラー全体をインポートしてメソッドを呼び出すこともできます。
コントローラー全体をインポートするとツリーシェイキングが効かず、すべてのアクションがバンドルに含まれます。個別にインポートするほうが最終バンドルサイズを小さく保てます。

単一アクションコントローラー

単一アクションコントローラー(Invokable Controller)は、インポートした関数をそのまま呼び出します。

名前付きルートのインポート

ルート名でアクセスするには routes/ 配下のファイルを使います。

クエリパラメーター

すべてのWayfinder関数は query オプションでクエリパラメーターを追加できます。
現在のURLのクエリパラメーターとマージするには mergeQuery を使います。

フォームバリアント

従来のHTMLフォームで使う場合は --with-form オプションを付けて生成し、.form バリアントを使います。

InertiaとWayfinderの組み合わせ

InertiaのフォームヘルパーとWayfinderを組み合わせると、URLの文字列を一切書かずにフォーム送信ができます。
Link コンポーネントでも同様に使えます。

スターターキットでの採用

laravel new で新規プロジェクトを作成し、React・Vue・Svelteを選ぶと、Wayfinderが自動セットアップされた構成が提供されます。スターターキットには以下が含まれます。
  • Composerパッケージ laravel/wayfinder
  • NPMパッケージ @laravel/vite-plugin-wayfinder
  • vite.config.js にプラグイン設定済み
  • .gitignore に生成ディレクトリ追加済み
既存プロジェクトへの手動導入も上記の手順で対応できます。

予約語と競合するメソッド名の処理

deleteimport など、JavaScriptの予約語と同名のコントローラーメソッドには Method サフィックスが付きます。

現在の状況(v0.1.x)

現在の安定版は v0.1.x ブランチで提供されています。2026年3月時点の最新バージョンは v0.1.15 です。

v0.1.x 系の主な変更履歴


nextブランチで開発中の次世代機能

next ブランチでは、現在の v0.1.x から大幅に機能が拡張された次期バージョンが開発されています。
next ブランチは dev-next 制約でインストールできますが、APIが大きく変わる可能性があります。本番環境での使用は推奨されません。

生成される TypeScript の範囲が大幅に拡大

v0.1.x がルートとコントローラーアクションのみを対象としているのに対し、次期バージョンは以下をすべて TypeScript として生成します。

Form Request の TypeScript 型生成

上記のForm Requestから以下の型が生成されます。

Eloquent モデルの型生成

上記のモデルから types.d.ts に型が生成されます。

PHP Enum の TypeScript 変換

型と定数の両方が生成されます。

出力ディレクトリの変更

v0.1.x では actions/routes/wayfinder/ の3ディレクトリに分かれていましたが、次期バージョンでは resources/js/wayfinder 以下にまとめられます。

v0.1.x から next への主な変更点

  • インポートパスが @/actions/... から @/wayfinder/... に変更
  • --skip-actions--skip-routes--with-form フラグが廃止され、設定ファイルへ移行
  • types.tstypes.d.ts に変更

まとめ

Laravel Wayfinder は、Ziggyが提供していた「LaravelのルートをJavaScriptから参照する」という機能を、TypeScriptファーストで再設計したパッケージです。生成された関数をインポートして使うアプローチにより、型安全性・IDEサポート・ツリーシェイキングのすべてで大きく改善しています。 現在の v0.1.x でもルートとコントローラーアクションの型安全な参照が実現できており、InertiaベースのLaravelスターターキットで標準採用されています。next ブランチで開発中の次期バージョンでは、Form Request・Eloquent モデル・Enum・Inertia ページプロップまで TypeScript として生成する、より包括的な型安全基盤へと進化する予定です。

Laravel Wayfinder GitHub

ソースコード、CHANGELOG、Issue はこちら。

Vite Plugin Wayfinder

Viteプラグインの設定オプション詳細はこちら。
最終更新日 2026年4月5日