インストールと設定
このガイドでは、Laravel Spectrumのインストールから初期設定までを詳しく説明します。
📋 要件
- PHP 8.1以上
- Laravel 10.x、11.x、12.x
- Composer 2.0以上
🚀 インストール
Laravel 11のセットアップ
Laravel 11では、APIルートがまだ存在しない場合は、最初にインストールする必要があります:
php artisan install:api
このコマンドは以下を実行します:
- Laravel Sanctumをインストール
routes/api.php
ファイルを作成- API認証を設定
Composerでインストール
composer require wadakatu/laravel-spectrum --dev
Laravelの自動検出
Laravel 5.5以降では、サービスプロバイダーは自動的に登録されます。
⚙️ 設定ファイルの公開
デフォルト設定をカスタマイズする場合は、設定ファイルを公開します:
php artisan vendor:publish --provider="LaravelSpectrum\SpectrumServiceProvider" --tag="config"
これにより、config/spectrum.php
ファイルが作成されます。
🔧 基本設定
APIの基本情報
// config/spectrum.php
return [
'title' => env('APP_NAME', 'Laravel') . ' API',
'version' => '1.0.0',
'description' => 'API documentation generated by Laravel Spectrum',
];
ルートパターン
ドキュメントに含めるルートのパターンを指定します:
'route_patterns' => [
'api/*',
'api/v1/*',
'api/v2/*',
],
除外ルート
特定のルートをドキュメントから除外する場合:
'excluded_routes' => [
'api/health',
'api/ping',
'_debugbar/*',
],
🔐 認証設定
Bearer Token(JWT/Sanctum)
'authentication' => [
'default' => 'bearer',
'flows' => [
'bearer' => [
'type' => 'http',
'scheme' => 'bearer',
'bearerFormat' => 'JWT',
],
],
],
API Key認証
'authentication' => [
'default' => 'api_key',
'flows' => [
'api_key' => [
'type' => 'apiKey',
'in' => 'header',
'name' => 'X-API-Key',
],
],
],
🎨 カスタマイズ
タグの設定
エンドポイントを整理するためのタグマッピング:
'tags' => [
'api/v1/auth/*' => 'Authentication',
'api/v1/users/*' => 'User Management',
'api/v1/posts/*' => 'Blog Posts',
'api/v1/admin/*' => 'Administration',
],
レスポンス例のカスタマイズ
'example_generation' => [
'use_faker' => true,
'faker_locale' => 'ja_JP',
'faker_seed' => 12345, // 一貫した例データを生成
'custom_generators' => [
'status' => fn($faker) => $faker->randomElement(['active', 'inactive']),
'role' => fn($faker) => $faker->randomElement(['admin', 'user']),
],
],
📁 出力設定
出力先の変更
'output' => [
'openapi' => storage_path('app/public/api-docs/openapi.json'),
'postman' => storage_path('app/public/api-docs/postman.json'),
'insomnia' => storage_path('app/public/api-docs/insomnia.json'),
],
キャッシュ設定
大規模プロジェクトでのパフォーマンス向上:
'cache' => [
'enabled' => true,
'ttl' => 3600, // 1時間
'directory' => storage_path('app/spectrum/cache'),
],
⚠️ 重要な注意事項
コントローラーベースのルートのみサポート
Laravel Spectrumはコントローラーベースのルートのみをサポートしています。クロージャルートはサポートされていません:
// ❌ サポートされない - クロージャルート
Route::get('/api/test', function () {
return ['message' => 'test'];
});
// ✅ サポートされる - コントローラールート
Route::get('/api/test', [TestController::class, 'index']);
クロージャルートをコントローラールートに変換する方法:
- コントローラーを作成:
php artisan make:controller Api/TestController
- クロージャのロジックをコントローラーメソッドに移動
- ルートをコントローラーを使用するように更新
設定ファイル
設定ファイルが自動的に公開されない場合は、手動でコピーしてください:
cp vendor/wadakatu/laravel-spectrum/config/spectrum.php config/spectrum.php
ルートパターンマッチング
ルートパターンでワイルドカードを正しく使用してください:
'route_patterns' => [
'api/*', // api/users、api/postsにマッチ
'api/**', // ネストされたパス用(すべてのバージョンで動作しない場合があります)
'api/v1/*', // api/v1/users、api/v1/postsにマッチ
],
🚨 トラブルシューティング
権限エラー
ストレージディレクトリへの書き込み権限を確認:
chmod -R 775 storage
chmod -R 775 bootstrap/cache
ルートが検出されない
-
route:cache
をクリアする:php artisan route:clear
-
ルートパターンが正しいか確認:
// config/spectrum.php
'route_patterns' => [
'api/*', // すべてのAPIルート
],