- カテゴリ: artisan
- 掲載バージョン: Laravel 12・PHP 8.4
- 名前空間 / FQCN / コマンド:
php artisan optimize - 関連:
config:cache/route:cache/view:cache/event:cache/optimize:clear - 変更履歴: 5.5で非推奨→5.6で削除。その後のバージョンで構成/イベント/ルート/ビューの一括キャッシュとして提供(Laravel 12の公式ドキュメントに記載)。(Laravel News)
要点(TL;DR)
- 何に使うか:本番デプロイ時に、設定・イベント・ルート・ビューを一括キャッシュして起動/初回レスポンスを速くする。(Laravel)
- 最低限の使い方:
php artisan optimize - よくある罠:
注:キャッシュ再生成は変更時にデプロイで実行するのが基本。定期実行は必要なときだけ。(Laravel)
概要
optimize は本番向けの一括最適化コマンドです。config:cache / event:cache / route:cache / view:cache を順に実行し、ファイルシステムへのアクセスやコンパイルの回数を減らします。CI/CD のデプロイ手順の一部として呼ぶのが基本です。(Laravel)
構文 / シグネチャ
php artisan optimize
- 引数(オプション)
| 引数 | 型 | 必須 | 既定値 | 説明 |
|—|—|—:|—|—|
| なし | — | いいえ | — | Laravel 12 時点で特別なオプションは不要。 | - 戻り値:終了コード(0=成功)
- 例外/副作用:
bootstrap/cache配下にキャッシュファイルを生成/上書き。権限不足で失敗。(Laravel)
使用例
最小例
# 本番サーバで
php artisan optimize
実務例(GitHub Actionsでのデプロイジョブ)
# .github/workflows/deploy.yml(一部)
- name: Install deps
run: composer install --no-dev --prefer-dist --optimize-autoloader
- name: Build caches
run: php artisan optimize
- name: Health check
run: curl -fsS https://example.com/up
ポイント:optimize は config / events / routes / views を一括でキャッシュします。個別に実行する代わりに一行で済みます。(Laravel)
よくある落とし穴・注意
env()の位置:config:cache後は.envを読まないため、env()は設定ファイル内だけで使用。コード本体ではconfig()から取得。(Laravel)- ルートの書き方:
route:cacheは一部ケースでクロージャルートと相性が悪い。コントローラメソッドへ移行。(Laravel) - 権限:
bootstrap/cacheとstorageは Webサーバユーザーに書込可にする。(Laravel) - 開発環境では不要:ローカル開発中は頻繁に変更するため、基本はキャッシュしない。(Laravel)
代替・関連APIとの比較
optimize:4つ(config/events/routes/views)を一括。デプロイの定番。(Laravel)- 個別実行:
config:cache/event:cache/route:cache/view:cacheを用途別に実行。トラブル切り分け時に有効。(Laravel) - クリア系:
optimize:clearは各種キャッシュファイルと既定キャッシュドライバのキーをまとめて削除。全消ししたい時に。(Laravel)
テスト例(Pest)
<?php
use Illuminate\Support\Facades\Artisan;
it('builds caches on deploy', function () {
// 実際に最適化を走らせる
expect(Artisan::call('optimize'))->toBe(0);
// 代表的なキャッシュファイルの存在を確認(環境に合わせて調整)
expect(base_path('bootstrap/cache/config.php'))->toBeFile();
});
トラブルシュート(エラー別)
| 症状/エラー | 原因 | 対処 |
|---|---|---|
env() が null になる | config:cache 後は .env を読まない | 設定値は config/ に集約し、アプリでは config() で参照。(Laravel) |
Route cache file could not be written など | bootstrap/cache の権限不足 | Webサーバユーザーに書込権限を付与。(Laravel) |
| ルートキャッシュで例外(クロージャ使用) | 一部クロージャルートがキャッシュ非対応 | ルートをコントローラに移行。(Laravel) |
| 何を消せばいいかわからない | 個別に消すと漏れがち | php artisan optimize:clear で一括クリア。(Laravel) |
参考リンク
- Laravel公式:Deployment / Optimization(optimize・optimize:clear と各キャッシュ) (Laravel)
- Laravel公式:Artisan(コマンド一覧) (Laravel)
- Laravel公式:Configuration Caching(
config:cacheの注意点) (Laravel) - Laravel News:Laravel 5.6で
optimize削除(履歴) (Laravel News)

