Laravel

Laravel 11 と Docker Sail・Viteでフルスタック開発環境を構築

ⓘ本ページはプロモーションが含まれています

Contents

スポンサードリンク

1. Laravel 11 のインストールと Docker (Sail) 環境の構築

Laravel 11 は PHP 8.2 以上 が必須です(^8.2)。その前提でプロジェクトを作成し、公式が提供する Laravel Sail を使えば、ローカルと本番環境の差異を最小限に抑えた Docker 開発環境を数分で構築できます。本セクションでは、Composer でのプロジェクト生成から、Sail 用の Dockerfile と docker-compose.yml の設定ポイントまでを順を追って解説します。

1‑1. Composer で Laravel 11 プロジェクトを作成する手順

まずはローカルに PHP(8.2+)と Composer がインストールされていることを確認してください。以下のコマンドで Laravel 11 の雛形が生成されます。

作成後は .env.example をコピーし、.env として保存します。データベース名やアプリケーションキーなどの基本設定を行うだけで、すぐに Laravel の開発サーバーが起動できる状態になります。

1‑2. Sail 用 Dockerfile と docker-compose.yml の基本構成

Sail は公式イメージ laravelsail/php82-composer(PHP 8.2)をベースにしています。Laravel 11 が要求する PHP バージョンと合致させるため、php83 系列はまだ提供されていない点に注意してください。以下の例では Dockerfile で PHP バージョンを指定し、docker‑compose.yml に主要サービス(PHP・MySQL・Redis)を定義しています。

Dockerfile(プロジェクトルートに配置)

docker-compose.yml(主要サービスの定義)

ポイント
laravelsail/php82-composer が公式に提供されている最新イメージです。PHP 8.3 が必要な場合は自前で Dockerfile を作成し、FROM php:8.3-fpm 等を利用してください。
Sail の公式ドキュメントは常に最新版が公開されているので、設定変更の際は https://laravel.com/docs/11.x/sail#docker-compose-file を参照しましょう。

1‑3. コンテナ起動・停止と環境変数の調整

以下のコマンドで開発用コンテナをバックグラウンド起動できます。./vendor/bin/sail はプロジェクトに自動インストールされる CLI ツールです。

.env のデータベース設定は DB_HOST=mysql とすれば、Sail が内部 DNS で名前解決してくれます。さらに、APP_PORTWWWGROUP などのカスタマイズ項目は同ファイルで一元管理できます。


2. Node.js と Vite によるフロントエンドツールチェーンの構築

Laravel 11 はデフォルトで Vite を採用しており、HMR(Hot Module Replacement)が高速に動作します。ここでは推奨する Node バージョンと、Vite と Laravel の連携設定を具体的に示します。

2‑1. 推奨 Node.js バージョンとインストール方法

Node.js は LTS 系列の 20.x が現在のベストプラクティスです。バージョン切替が容易な nvm を使うと、チーム全体で統一した環境を保ちやすくなります。

npm はデフォルトで同梱されていますが、ワークスペース管理や高速インストールを求める場合は yarn@stable を併用しても問題ありません。

2‑2. Vite の初期設定と Laravel との連携

必要パッケージのインストール

vite.config.ts のサンプル(Laravel 用)

Blade 側での呼び出し例

公式リファレンス
Vite の詳細設定は Laravel Docs(https://laravel.com/docs/11.x/vite)をご確認ください。外部リンクとして以前紹介した Dexall 記事は 2022 年時点の情報であり、現在は公式ドキュメントが最も信頼できます。

2‑3. 開発サーバーの起動とビルド

開発中は ./vendor/bin/sail up -d と併せて実行すれば、PHP コンテナとフロントエンドがシームレスに連携します。


3. Breeze + Inertia.js による Vue 3 スキャフォールド

Laravel Breeze は軽量認証パッケージで、--inertia オプションを付与すると Vue 3 + Inertia の雛形が自動生成されます。本セクションではインストール手順と生成コードの重要ポイントを解説します。

3‑1. Breeze と Inertia の導入手順

実行後、resources/js/Pages ディレクトリに Inertia 用の Vue コンポーネントが配置され、認証関連のビューや API ルートも自動生成されます。

3‑2. 生成コードの構造とカスタマイズポイント

  • ページコンポーネント (resources/js/Pages/Dashboard.vue 等) は Inertia が受け取った props を Vue 側で直接使用できます。
  • ルーティングroutes/web.php に以下のように記述されます。

  • コントローラ例app/Http/Controllers/DashboardController.php

参考情報
Inertia の公式ガイドは https://inertiajs.com/ にあります。Laravel Breeze との統合手順は https://laravel.com/docs/11.x/starter-kits#breeze を参照してください。


4. SPA 認証を実装する Sanctum + Pinia の活用例

Vue 3 と Inertia が提供するシングルページアプリケーションでは、Laravel Sanctum によるステートフル認証が最適です。ここでは Sanctum 設定から、Pinia ストアでのユーザー状態管理、Axios のインターセプタによる CSRF 対策までを実装例とともに示します。

4‑1. Sanctum のセットアップ手順

config/sanctum.phpstateful 配列にフロントエンドのホスト(例:localhost, 127.0.0.1)を追加し、api ガードで SPA を保護します。

4‑2. Pinia ストアの実装例(認証状態管理)

インストールとストア作成

resources/js/stores/auth.ts

4‑3. Axios カスタムインスタンスと CSRF トークン取得ロジック

resources/js/axios.ts

ログインコンポーネント例(Login.vue

外部リファレンス
Sanctum の最新情報は公式ドキュメント(https://laravel.com/docs/11.x/sanctum)をご確認ください。古い記事へのリンクは削除し、公式資料に統一しました。


5. 本番ビルド最適化とデプロイ時チェックリスト

開発環境から本番環境へ移行する際は、Vite のコードスプリッティングやキャッシュ戦略を正しく設定しないと、不要なバンドルが残りページ表示速度が低下します。本章では具体的なビルドオプションと、デプロイ前に必ず確認すべき項目を表形式でまとめます。

5‑1. Vite のコードスプリッティング設定例

vite.config.tsbuild.rollupOptions.manualChunks を追加すると、サードパーティライブラリが自動的に別チャンク化されます。

5‑2. 本番環境向け環境変数とキャッシュ戦略

項目 推奨設定 理由
環境変数 .env.productionAPP_ENV=productionVITE_API_URL=https://api.example.com を記載 本番用エンドポイントとデバッグ情報の除外
HTTPS Sail の Nginx コンテナで Let’s Encrypt(本番)または自己署名証明書を利用 Mixed Content エラー防止
アセットキャッシュ Nginx に expires max; add_header Cache-Control "public, immutable"; を設定 ファイル名にハッシュが付くため長期キャッシュが安全に利用できる
Laravel キャッシュコマンド デプロイ後必ず php artisan config:cache, route:cache, view:cache を実行 設定変更が即時反映され、パフォーマンス向上

5‑3. デプロイ手順チェックリスト(箇条書き)

  1. コードのビルド
    bash
    npm run build # Vite の本番アセット生成
    composer install --optimize-autoloader --no-dev
  2. 環境変数・シークレットの配置.env.production を本番サーバーへコピー)
  3. データベースマイグレーション
    bash
    php artisan migrate --force
  4. キャッシュコマンド実行(前述表参照)
  5. Docker コンテナ再起動(Sail が利用できる場合)
    bash
    ./vendor/bin/sail up -d --build
  6. ヘルスチェック/api/user などのエンドポイントが正しく応答するか確認

最新情報は Laravel Docs(https://laravel.com/docs/11.x/deployment) を常に参照してください。過去の外部記事はバージョン差異で内容が古くなることがあります。


6. まとめと次のステップ

本ガイドでは、Laravel 11 + Vue 3(Inertia) のフルスタック開発を前提に、Docker(Sail)・Node.js・Vite・Breeze・Sanctum・Pinia といった主要ツールの設定とベストプラクティスを網羅しました。以下に実務導入時のロードマップを示します。

  1. リポジトリ作成 → Composer + npm インストール
  2. Docker(Sail)でローカル環境起動 (./vendor/bin/sail up -d)
  3. データベースと認証テーブルのマイグレーション
  4. フロントエンド開発サーバー起動 (npm run dev) → ブラウザで http://localhost 確認
  5. 機能実装(Breeze + Inertia、Pinia ストア、Sanctum 認証)
  6. 本番ビルド & デプロイnpm run build+Laravel キャッシュコマンド)

重要ポイントの再確認

  • Laravel 11 は PHP 8.2 以上 が必須。Sail の公式イメージは php82-composer を使用すること。
  • Vite と Laravel の連携は laravel-vite-plugin でシンプルに実装でき、開発中の HMR が高速化。
  • Breeze + Inertia のスキャフォールドで認証 UI と API が同時に生成され、SPA 開発が即座に開始可能。
  • Sanctum + Pinia によるステートフル認証は withCredentials 設定と CSRF Cookie 取得を忘れずに実装すれば安全。
  • 本番デプロイでは コードスプリッティングキャッシュ戦略HTTPS の三点がパフォーマンスの鍵となる。

これらの手順と注意点を踏まえてプロジェクトを立ち上げれば、最新スタックで安定かつ高速なフルスタックアプリケーションが実現できます。ぜひ本ガイドをリファレンスに、開発・運用フェーズ全体で活用してください。

スポンサードリンク

-Laravel