【保存版】Laravel環境構築から始める!プロジェクト作成完全ガイド2025

Laravel環境構築の基礎知識

Laravelの開発環境を構築するには、いくつかの重要なコンポーネントが必要です。このセクションでは、それぞれのコンポーネントのインストール方法と設定について、順を追って解説します。

PHPとComposerのインストール方法

Laravel 10.xでは、PHP 8.1以上が必要です。以下の手順で、PHPとComposerをインストールしていきましょう。

PHPのインストール

Windowsの場合:

# Chocolateyを使用する場合
choco install php

# インストールの確認
php -v

macOSの場合:

# Homebrewを使用する場合
brew install php

# インストールの確認
php -v

必要なPHP拡張機能の確認

# 以下の拡張機能が有効になっていることを確認
php -m | grep -E "ctype|fileinfo|json|mbstring|openssl|pdo|tokenizer|xml"

Composerのインストール

  1. 公式インストーラーを使用する方法:
# Windowsの場合
# Composer-Setup.exeをダウンロードして実行

# macOS/Linuxの場合
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php composer-setup.php
sudo mv composer.phar /usr/local/bin/composer
  1. インストールの確認:
composer --version

Node.jsとnpmの準備手順

フロントエンド開発やアセットのコンパイルに必要なNode.jsとnpmをインストールします。

Node.jsのインストール

推奨バージョン: LTS版(長期サポート版)を使用

# Windowsの場合
# Node.jsのインストーラーをダウンロードして実行

# macOSの場合(Homebrew使用)
brew install node

# インストールの確認
node --version
npm --version

npmの設定

# npmのアップデート
npm install -g npm@latest

# 主要なグローバルパッケージのインストール
npm install -g yarn

Laravelインストーラーのセットアップ方法

Laravel公式のインストーラーを使用することで、新規プロジェクトの作成が簡単になります。

# Composerグローバルで Laravel インストーラーをインストール
composer global require laravel/installer

# PATHの設定確認
echo $PATH | grep composer
# ~/.composer/vendor/binが含まれていない場合は、
# ~/.bashrcや~/.zshrcに以下を追加
# export PATH="$PATH:$HOME/.composer/vendor/bin"

# インストールの確認
laravel --version

トラブルシューティング

よくある問題と解決方法:

  1. Composerのメモリ不足エラー
# php.iniのmemory_limitを変更
# または、以下のコマンドを実行
COMPOSER_MEMORY_LIMIT=-1 composer require laravel/installer
  1. PATHの問題
# シェル設定ファイルの再読み込み
source ~/.bashrc  # または ~/.zshrc
  1. 権限の問題
# 必要なディレクトリの権限を確認
ls -la ~/.composer
# 権限がない場合は所有者を変更
sudo chown -R $USER:$USER ~/.composer

これで、Laravel開発に必要な基本的な環境が整いました。次のセクションでは、この環境を使って実際にプロジェクトを作成する手順を説明します。

Laravel プロジェクトの作成手順

プロジェクトの作成方法には、Laravel インストーラーを使用する方法と、Composerを直接使用する方法があります。それぞれの特徴と具体的な手順を見ていきましょう。

Laravel インストーラーを使用した新規プロジェクト作成

Laravel インストーラーを使用する方法は、最も推奨される方法です。必要な設定が自動的に行われ、すぐに開発を始められます。

基本的なプロジェクト作成

# 最新バージョンで作成
laravel new my-project

# プロジェクトディレクトリに移動
cd my-project

# 開発サーバーの起動
php artisan serve

Gitリポジトリの初期化を含めた作成

# --gitオプションを使用
laravel new my-project --git

# 特定のブランチ名を指定
laravel new my-project --git --branch="main"

JetStreamを含めた作成

# Livewireスタック
laravel new my-project --jet

# Inertiaスタック
laravel new my-project --jet --stack=inertia

Composer を使った代替的なプロジェクト作成方法

Composerを使用する方法は、より細かな制御が必要な場合や、特定のバージョンを指定する場合に適しています。

最新バージョンでの作成

composer create-project laravel/laravel my-project

特定のバージョンを指定して作成

# Laravel 9.xを指定
composer create-project laravel/laravel:^9.0 my-project

# 特定のマイナーバージョンを指定
composer create-project laravel/laravel:9.5.* my-project

プロジェクト作成時のオプション設定解説

プロジェクト作成時には、様々なオプションを指定できます。主要なオプションとその使用例を紹介します。

認証機能の追加

# Breeze(軽量な認証スカフォールド)
laravel new my-project --breeze

# JetStream(フル機能な認証プラットフォーム)
laravel new my-project --jet

フロントエンドプリセットの選択

# Vueを使用
laravel new my-project --breeze --stack=vue

# Reactを使用
laravel new my-project --breeze --stack=react

# Blade(デフォルト)を明示的に指定
laravel new my-project --breeze --stack=blade

DBの設定

# SQLiteを使用
laravel new my-project --database=sqlite

# PostgreSQLを使用
laravel new my-project --database=pgsql

重要なオプション一覧

オプション説明使用例
--gitGitリポジトリを初期化laravel new my-project --git
--branchデフォルトブランチを指定laravel new my-project --branch="develop"
--breezeLaravel Breezeをインストールlaravel new my-project --breeze
--jetLaravel Jetstreamをインストールlaravel new my-project --jet
--stackフロントエンドスタックを指定laravel new my-project --stack=vue
--databaseデフォルトDBを指定laravel new my-project --database=mysql
--pestPestテストフレームワークを使用laravel new my-project --pest
--prompt対話的なセットアップを実行laravel new my-project --prompt

プロジェクト作成後の初期確認

  1. 環境の確認
# PHP開発サーバーの起動
php artisan serve

# 依存パッケージの確認
composer show

# アプリケーションキーの確認
php artisan key:status
  1. フロントエンド環境の確認
# 依存パッケージのインストール
npm install

# 開発ビルド
npm run dev

# 本番ビルド
npm run build

これで基本的なプロジェクト作成は完了です。次のセクションでは、作成したプロジェクトの初期設定とベストプラクティスについて説明していきます。

プロジェクト初期設定のベストプラクティス

プロジェクトを作成した直後の初期設定は、アプリケーションの安全性と保守性に大きな影響を与えます。このセクションでは、実務で活用できる具体的な設定方法とベストプラクティスを解説します。

環境設定ファイル(.env) の適切な設定方法

環境設定ファイルは、アプリケーションの重要な設定値を管理する場所です。適切な設定と管理方法を見ていきましょう。

基本的な設定手順

# .env.exampleをコピーして.envを作成
cp .env.example .env

# アプリケーションキーの生成
php artisan key:generate

重要な環境変数の設定例

# アプリケーション設定
APP_NAME="My Laravel App"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8000

# データベース設定
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel_db
DB_USERNAME=laravel_user
DB_PASSWORD=secure_password

# キャッシュ・セッション設定
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120

# メール設定
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDRESS="no-reply@example.com"
MAIL_FROM_NAME="${APP_NAME}"

環境別の推奨設定

設定項目開発環境本番環境説明
APP_DEBUGtruefalseデバッグ情報の表示
APP_ENVlocalproduction環境の識別
LOG_LEVELdebugerrorログの詳細度
QUEUE_CONNECTIONsyncredis/databaseキューの処理方法

データベース接続の設定と確認手順

データベース接続の設定は、アプリケーションの基盤となる重要な要素です。

データベースの作成と設定

# MySQLの場合
mysql -u root -p
CREATE DATABASE laravel_db;
CREATE USER 'laravel_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT ALL PRIVILEGES ON laravel_db.* TO 'laravel_user'@'localhost';
FLUSH PRIVILEGES;

接続テストとマイグレーション

# データベース接続テスト
php artisan db:monitor

# マイグレーションの実行
php artisan migrate

# シーダーの実行(開発環境のみ)
php artisan db:seed

トラブルシューティング

# データベース設定のクリア
php artisan config:clear

# 接続情報の確認
php artisan tinker
DB::connection()->getPdo();

アプリケーションキーの生成と管理方法

アプリケーションキーは、暗号化やセッション管理に使用される重要な要素です。

キーの生成と確認

# 新しいキーの生成
php artisan key:generate

# 現在のキーの状態確認
php artisan key:status

セキュリティのベストプラクティス

  1. キーの管理
# キーのバックアップ(本番環境)
echo "APP_KEY=$(php artisan key:generate --show)" > .env.key.backup
  1. 環境ごとの個別キー設定
# 開発環境と本番環境で異なるキーを使用
# .env.developmentと.env.productionを用意
  1. キーローテーションの手順
# 1. 新しいキーの生成
php artisan key:generate --show

# 2. 古いセッションのクリア
php artisan session:flush

# 3. キャッシュのクリア
php artisan cache:clear

重要な設定値のチェックリスト

  • [ ] アプリケーションキーが生成されているか
  • [ ] データベース接続情報が正しく設定されているか
  • [ ] 環境に応じたデバッグモードが設定されているか
  • [ ] セッションドライバーが適切に選択されているか
  • [ ] キャッシュドライバーが設定されているか
  • [ ] メール送信の設定が完了しているか
  • [ ] ファイルアップロード用のディスク設定が行われているか

これらの初期設定が完了したら、次のセクションで説明する開発環境の最適化設定に進むことができます。

開発環境の最適化設定

効率的な開発を行うためには、開発環境を最適化することが重要です。このセクションでは、開発効率を向上させるための具体的な設定方法とツールの活用方法を解説します。

開発用サーバーの起動と設定方法

開発用サーバーの設定を最適化することで、より快適な開発環境を実現できます。

基本的なサーバー起動

# 標準的な起動方法
php artisan serve

# ホストとポートを指定して起動
php artisan serve --host=0.0.0.0 --port=8080

サーバー設定のカスタマイズ

// config/app.php
return [
    // 開発環境での表示設定
    'debug' => env('APP_DEBUG', true),
    'debug_blacklist' => [
        '_ENV' => [
            'APP_KEY',
            'DB_PASSWORD',
        ],
        '_SERVER' => [
            'DB_PASSWORD',
        ],
    ],

    // タイムゾーンの設定
    'timezone' => 'Asia/Tokyo',

    // ローカライゼーション
    'locale' => 'ja',
    'fallback_locale' => 'en',
];

デバッグモードの設定とログの確認方法

効果的なデバッグのために、適切なツールと設定を活用します。

デバッグツールの設定

# Laravel Debugbarのインストール
composer require barryvdh/laravel-debugbar --dev

# IDEヘルパーの生成
php artisan ide-helper:generate
php artisan ide-helper:models
php artisan ide-helper:meta

ログ設定のカスタマイズ

// config/logging.php
'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily', 'slack'],
    ],
    'daily' => [
        'driver' => 'daily',
        'path' => storage_path('logs/laravel.log'),
        'level' => 'debug',
        'days' => 14,
    ],
],

デバッグ用コマンド集

# キャッシュのクリア
php artisan cache:clear
php artisan config:clear
php artisan route:clear
php artisan view:clear

# 全キャッシュのクリア
php artisan optimize:clear

# ルート一覧の確認
php artisan route:list

# イベントリスナーの確認
php artisan event:list

hot reloadingの設定による開発効率化

Viteを使用したホットリロードの設定で、開発効率を大幅に向上させることができます。

Viteの基本設定

// vite.config.js
import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
    plugins: [
        laravel({
            input: [
                'resources/css/app.css',
                'resources/js/app.js',
            ],
            refresh: true,
        }),
    ],
});

NPMスクリプトの設定

{
    "scripts": {
        "dev": "vite",
        "build": "vite build",
        "watch": "vite build --watch"
    }
}

開発環境での使用方法

# 開発サーバーの起動
npm run dev

# ビルドと監視
npm run watch

効率的な開発のためのVSCode設定

{
    "editor.formatOnSave": true,
    "php.suggest.basic": false,
    "php.validate.enable": true,
    "php.validate.run": "onType",
    "[php]": {
        "editor.defaultFormatter": "bmewburn.vscode-intelephense-client"
    }
}

推奨される開発用拡張機能

拡張機能用途インストールコマンド
Laravel IDE Helperコード補完composer require --dev barryvdh/laravel-ide-helper
Laravel Debugbarパフォーマンス分析composer require --dev barryvdh/laravel-debugbar
PHP CS Fixerコード整形composer require --dev friendsofphp/php-cs-fixer
PHPStan静的解析composer require --dev nunomaduro/larastan

開発環境を最適化することで、以下のメリットが得られます:

  • コードの変更がリアルタイムで反映
  • デバッグ情報の迅速な確認
  • コーディング規約の自動適用
  • エラーの早期発見

次のセクションでは、開発中によく遭遇するエラーとその解決方法について説明します。

よくあるエラーとトラブルシューティング

Laravel開発中に遭遇する可能性のある一般的なエラーと、その解決方法を紹介します。このセクションを参考に、開発中のトラブルを効率的に解決しましょう。

権限関連エラーの解決方法

storage/logsディレクトリやbootstrap/cacheディレクトリに関する権限エラーは、特によく発生します。

ストレージ権限の設定

# storage/およびbootstrap/cacheディレクトリの権限設定
chmod -R 775 storage bootstrap/cache

# Webサーバーユーザーをグループに追加(Apache使用時)
sudo chown -R $USER:www-data storage bootstrap/cache

一般的な権限エラーと解決方法

  1. 書き込み権限エラー
# エラーメッセージ例
The stream or file "storage/logs/laravel.log" could not be opened: failed to open stream: Permission denied

# 解決方法
sudo chown -R www-data:www-data storage
sudo chmod -R 775 storage
  1. キャッシュ関連の権限エラー
# 全キャッシュのクリアと権限再設定
php artisan cache:clear
php artisan config:clear
sudo chown -R www-data:www-data bootstrap/cache

依存関係エラーへの対処手順

Composerの依存関係で発生する問題への対処方法を説明します。

一般的な依存関係エラーの解決

# Composerキャッシュのクリア
composer clear-cache

# 依存関係の再インストール
composer install --prefer-dist

# autoload設定の再生成
composer dump-autoload -o

バージョン競合の解決

# 依存関係の確認
composer why package-name
composer why-not package-name

# 特定パッケージのアップデート
composer update vendor/package

# 依存関係の更新とロック
composer update --with-dependencies
composer update --lock

メモリ制限エラーの解決

# PHP Memory Limitの一時的な引き上げ
php -d memory_limit=-1 composer require large/package

# composer.jsonでの設定
{
    "config": {
        "memory-limit": "2G"
    }
}

環境設定関連問題解決ガイド

環境設定に関連する一般的な問題とその解決方法を紹介します。

データベース接続エラー

# エラーメッセージ例
SQLSTATE[HY000] [2002] Connection refused

# 解決手順
1. .env設定の確認
DB_HOST=127.0.0.1
DB_PORT=3306

2. データベースサービスの状態確認
sudo systemctl status mysql

3. 接続テスト
php artisan tinker
DB::connection()->getPdo();

キャッシュ関連の問題解決

# 設定キャッシュのクリア
php artisan config:clear

# 新しい設定のキャッシュ
php artisan config:cache

# ルートキャッシュのクリア
php artisan route:clear

# ビューキャッシュのクリア
php artisan view:clear

トラブルシューティングチェックリスト

1. 基本的な確認事項
   - [ ] .envファイルが存在するか
   - [ ] APP_KEYが設定されているか
   - [ ] 必要な権限が付与されているか
   - [ ] Composerの依存関係が正しいか

2. データベース関連
   - [ ] データベースサービスが起動しているか
   - [ ] 接続情報が正しいか
   - [ ] ユーザー権限が適切か
   - [ ] マイグレーションが実行されているか

3. キャッシュ関連
   - [ ] 設定キャッシュが最新か
   - [ ] ルートキャッシュが正しいか
   - [ ] ビューキャッシュに問題はないか

4. ログ確認
   - [ ] storage/logs/laravel.logを確認
   - [ ] PHPエラーログを確認
   - [ ] Webサーバーのエラーログを確認

デバッグのベストプラクティス

  1. エラーの特定
// .envでデバッグモードを有効化
APP_DEBUG=true

// 詳細なエラー情報の表示
error_reporting(E_ALL);
ini_set('display_errors', 1);
  1. ログの活用
// ログへの書き込み
Log::debug('デバッグ情報:', ['context' => $data]);
Log::error('エラー情報:', ['error' => $e->getMessage()]);

// ダンプとダイ
dd($variable);
dump($variable);

次のセクションでは、プロジェクトのデプロイ準備について説明します。

プロジェクトのデプロイ準備

本番環境へのデプロイは慎重に行う必要があります。このセクションでは、安全で効率的なデプロイのための準備と、本番環境特有の設定について解説します。

本番環境用の最適化設定

本番環境では、パフォーマンスとセキュリティを最優先に考えた設定が必要です。

キャッシュの最適化

# ルートのキャッシュ
php artisan route:cache

# 設定のキャッシュ
php artisan config:cache

# ビューのキャッシュ
php artisan view:cache

# Composerのオートロード最適化
composer install --optimize-autoloader --no-dev

パフォーマンス設定

// config/cache.php
return [
    'default' => env('CACHE_DRIVER', 'redis'),
    'stores' => [
        'redis' => [
            'driver' => 'redis',
            'connection' => 'cache',
        ],
    ],
];

// config/session.php
return [
    'driver' => env('SESSION_DRIVER', 'redis'),
    'lifetime' => env('SESSION_LIFETIME', 120),
    'secure' => true,
];

本番環境の.env設定例

APP_ENV=production
APP_DEBUG=false
APP_URL=https://your-domain.com

CACHE_DRIVER=redis
SESSION_DRIVER=redis
QUEUE_CONNECTION=redis

# メール設定
MAIL_MAILER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=587
MAIL_ENCRYPTION=tls

# ログ設定
LOG_CHANNEL=stack
LOG_LEVEL=error

セキュリティ設定の確認事項

本番環境では、セキュリティを徹底的に確保する必要があります。

セキュリティヘッダーの設定

// app/Http/Middleware/SecurityHeaders.php
namespace App\Http\Middleware;

class SecurityHeaders
{
    public function handle($request, Closure $next)
    {
        $response = $next($request);

        $response->headers->set('X-Frame-Options', 'SAMEORIGIN');
        $response->headers->set('X-XSS-Protection', '1; mode=block');
        $response->headers->set('X-Content-Type-Options', 'nosniff');
        $response->headers->set('Referrer-Policy', 'strict-origin-when-cross-origin');
        $response->headers->set('Content-Security-Policy', "default-src 'self'");

        return $response;
    }
}

重要なセキュリティチェック項目

  1. SSL/TLS設定
# Apacheの設定例
<VirtualHost *:443>
    SSLEngine on
    SSLCertificateFile /path/to/certificate.crt
    SSLCertificateKeyFile /path/to/private.key
    SSLCertificateChainFile /path/to/chain.crt

    # HTTPSリダイレクト
    RewriteEngine On
    RewriteCond %{HTTPS} off
    RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
</VirtualHost>
  1. ファイルアクセス権限
# 重要ファイルの権限設定
chmod 644 .env
chmod 644 config/*.php
chmod 755 public/index.php
  1. データベースセキュリティ
-- 本番用DBユーザーの作成と権限制限
CREATE USER 'prod_user'@'localhost' IDENTIFIED BY 'secure_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON database.* TO 'prod_user'@'localhost';
FLUSH PRIVILEGES;

デプロイ前のチェックリスト

1. アプリケーションの確認

- [ ] 環境変数の確認
  - [ ] APP_ENV=production
  - [ ] APP_DEBUG=false
  - [ ] APP_KEY が設定済み

- [ ] キャッシュの最適化
  - [ ] config:cache実行済み
  - [ ] route:cache実行済み
  - [ ] view:cache実行済み

- [ ] Composer最適化
  - [ ] --no-dev オプションでインストール
  - [ ] オートローダーの最適化

2. セキュリティチェック

- [ ] 機密情報の漏洩防止
  - [ ] .envがgitignoreに含まれている
  - [ ] デバッグモードが無効
  - [ ] ログレベルが適切

- [ ] アクセス制御
  - [ ] 重要ファイルの権限設定
  - [ ] ストレージディレクトリの権限
  - [ ] Webサーバーの設定

3. パフォーマンス最適化

- [ ] アセットの最適化
  - [ ] npm run buildの実行
  - [ ] アセットの圧縮

- [ ] データベース設定
  - [ ] インデックスの確認
  - [ ] クエリの最適化

- [ ] キャッシュ設定
  - [ ] Redisの設定
  - [ ] セッション設定

デプロイコマンド例

# デプロイスクリプトの例
#!/bin/bash

# メンテナンスモードの開始
php artisan down

# コードの更新
git pull origin main

# 依存関係の更新
composer install --no-dev --optimize-autoloader

# データベースの更新
php artisan migrate --force

# キャッシュのクリアと再生成
php artisan optimize:clear
php artisan optimize

# アセットのビルド
npm ci
npm run build

# メンテナンスモードの解除
php artisan up

これらの準備と確認を慎重に行うことで、安全で効率的なデプロイが可能になります。