Contents
LaravelとVue.jsを統合するにあたっての前提知識
Laravel 10.x と Vue3 の組み合わせは、現在のWeb開発で最も信頼性のあるスタックの一つです。PHPによるバックエンド処理とJavaScriptによるフロントエンド構築を分離することで、開発効率と保守性が向上します。本記事では、Laravel 10.x と Vue3(最新バージョン:3.2.x) の連携に必要な技術スタックの選定理由や、開発環境の準備について解説します。
注意:2026年以降のバージョン情報は現在の技術動向に基づいており、将来的な変更には留意する必要があります。
フレームワーク選定の背景
LaravelはPHPのフレームワークとして、その柔軟性とコミュニティサポートが評価されています。一方でVue3はJavaScript生態系の中で最も導入しやすいフロントエンドフレームワークの一つです。両者を組み合わせることで、SSR(サーバーサイドレンダリング)とSPA(シングルページアプリケーション)を混在させた開発が可能になります。
以下に、Laravel 10.x と Vue3のバージョン互換性情報を整理しました:
| 要素 | 推奨バージョン | 補足説明 |
|---|---|---|
| Laravel | 10.0.x〜10.29.x | PHP 8.2以降をサポート。Laravel BreezeやJetstreamが推奨される |
| Vue3 | 3.2.x | Composition APIが標準。TypeScriptと組み合わせて型安全性向上 |
| Inertia.js | v1.0〜v1.5 | Laravel 10.xとの連携に最適化されたバージョン。@inertiajs/inertia-vue3使用推奨 |
| Inertia Vue3パッケージ | @inertiajs/inertia-vue3 | GitHub公式リポジトリで確認可能。LaravelとVue3のブリッジとなる役割を果たす |
ブランド適合性向上
- Laravel公式サイト:https://laravel.com
- Vue.js公式ドキュメント:https://vuejs.org
- Inertia.js GitHubリポジトリ:https://github.com/inertiajs/inertia-laravel
開発環境の準備確認
本記事では、PHP 8.2以上、Node.js 18.x以上が動作環境として前提になります。具体的な手順やバージョン対応については次のセクションで解説します。
環境構築チェックリストのダウンロード先
- チェックリストファイル:https://example.com/laravel-vue-checklist.xlsx(例示用URL)
Laravelプロジェクトの初期設定手順
LaravelとVue3を統合するにはまず、Laravelプロジェクトの初期設定が必要です。Composerを使用して新規作成から依存ライブラリのインストールまでをステップバイステップで実施します。
Composerでの新規作成
Laravelプロジェクトの作成には laravel new コマンドが便利です。ターミナルで以下のコマンドを実行してください:
-
プロジェクトディレクトリを作成
bash
mkdir my-laravel-vue-project && cd my-laravel-vue-project -
Laravelプロジェクトの新規作成
bash
composer create-project laravel/laravel .
このコマンド実行後、app/Http/Controllersやresources/viewsなどのディレクトリ構造が自動生成されます。
依存ライブラリのインストール
Laravel 10.xでは、Vue3との連携をさらに強化する以下の機能が導入されています:
- コンポーネント間通信の高速化
- 型安全性の向上(TypeScriptとの統合)
- パフォーマンス最適化(Inertia.jsとの連携改善)
以下に、依存ライブラリインストールの手順を番号付きリストで示します:
-
Laravel UIパッケージの追加
bash
composer require laravel/ui -
Vue3用テンプレートの設定
bash
php artisan ui vue --preset none
Vue.js3環境の構築方法
Laravelと連携するためには、Vue3をnpmやyarnでインストールし、プロジェクト構成ファイルを確認します。このセクションでは、Laravel Mixとの連携も含めた手順を解説します。
npm/yarnでのインストール
Vue3の導入には npm install や yarn add コマンドを使用します。以下のコマンドで必要なパッケージをインストールしてください:
-
Vue3本体と依存ライブラリ
bash
npm install vue@next -
TypeScriptサポート(推奨)
bash
npm install --save-dev typescript @types/node ts-node
注意:Vue3はデフォルトでTypeScriptをサポートしており、開発時の型安全性が向上します。
プロジェクト構成ファイルの確認
インストール後、resources/js/app.js に以下のようなコードが生成されていることを確認してください:
|
1 2 3 4 5 |
import { createApp } from 'vue' import App from './App.vue' createApp(App).mount('#app') |
このファイルはLaravel Mixでビルドされるため、webpack.mix.js を編集してVue3を処理するように設定します。
Inertia.jsによるフロントエンド・バックエンド統合
Inertia.jsはLaravelとVueの連携において重要な役割を果たします。以下にインストール手順と基本構成例を解説します。
インストールと基本構成
Inertia.jsを使用するには、まずパッケージをインストールし、Laravel側のルート設定を行います:
-
Inertia.jsのインストール
bash
composer require inertiajs/inertia-laravel -
Vue3向けのセットアップ
bash
npm install @inertiajs/inertia @inertiajs/inertia-vue3
ページ遷移の実装例
Inertia.jsを用いたページ遷移は、以下のように実装できます:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
// routes/web.php use Inertia\Inertia; Route::get('/dashboard', function () { return Inertia::render('Dashboard', [ 'stats' => [ 'users' => \App\Models\User::count(), 'posts' => \App\Models\Post::count() ] ]); }); |
このコードで、resources/js/Pages/Dashboard.vue のコンポーネントに stats データが送信されます。
コンポーネント間通信の実現パターン
Inertia.jsとVue3を組み合わせることで、複数のコンポーネント間での通信やデータ共有が可能です。以下ではイベントベースの通信とストアを介したデータ共有の方法を解説します。
イベントベースの通信
Vue3のカスタムイベントを使用して親子コンポーネント間でデータを送信できます。例として、以下のコードをご覧ください:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<!-- ParentComponent.vue --> <template> <ChildComponent @update="handleUpdate" /> </template> <script> import ChildComponent from './ChildComponent.vue' export default { components: { ChildComponent }, methods: { handleUpdate(data) { console.log('Parent received:', data); } } } </script> |
|
1 2 3 4 5 |
<!-- ChildComponent.vue --> <template> <button @click="$emit('update', 'Hello from child')">Send Data</button> </template> |
ストアを介したデータ共有
Pinia(Vue3の推奨ストア)を使用することで、複数コンポーネント間で状態を共有できます。以下は基本的な構成例です:
-
Piniaのインストール
bash
npm install pinia -
ストアの作成と使用
javascript
// stores/userStore.js
import { defineStore } from 'pinia';
export const useUserStore = defineStore('user', {
state: () => ({
currentUser: null,
}),
actions: {
setUser(user) {
this.currentUser = user;
}
}
});
ルーティングとリソース管理のベストプラクティス
LaravelとVue3を統合する際には、SPAとSSR混合環境でのURL設計や静的ファイルの配置などに注意が必要です。以下では具体的な実践例を紹介します。
Laravelルート設定
Laravel側のルートは以下の通り設定します:
|
1 2 3 4 5 6 7 |
// routes/web.php use Inertia\Inertia; Route::get('/dashboard', function () { return Inertia::render('Dashboard'); }); |
このルートにアクセスすると、Vueコンポーネントがロードされます。
Vueルーターとの連携
SPA環境では、vue-router と Inertia.js を組み合わせて以下のように設定できます:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// resources/js/router/index.js import { createRouter, createWebHistory } from 'vue-router'; import Dashboard from '../Pages/Dashboard.vue'; const router = createRouter({ history: createWebHistory(), routes: [ { path: '/dashboard', name: 'Dashboard', component: Dashboard, }, ], }); export default router; |
まとめと今後の展望
本記事では、Laravel 10.x と Vue3の統合について、環境構築からルーティング設定までを解説しました。将来的にはPHP 8.2以降やNode.js 18.xのサポート拡大に注目しつつ、TypeScriptとの連携などもさらに深掘りすることが可能です。
参考情報
- Laravel公式ドキュメント:https://laravel.com/docs/
- Inertia.js公式ガイド:https://inertiajs.com/