LaravelのArtisanコマンド徹底解説|最速チートシート&現場ノウハウ

Laravelのコマンド、「artisan」は、Laravel開発に欠かせないベストパートナーです。…とはいえ、コマンドが増え続ける中で「毎回ググる」「バージョン差で挙動が違う」「本番でキャッシュを壊しがち」——そんな小さなつまずきが積み重なっていませんか?

本記事は、最速で引けるチートシートと、現場で効くノウハウを一枚にまとめた“即戦力”となります。上から順に読み進めなくてもOK。冒頭の早見表でコマンドをコピペ → 必要に応じて詳解・レシピ・落とし穴へ飛ぶ使い方を想定しています(ブックマーク推奨です)。

カバー範囲は以下です。

  • 生成系(make:*)から DB(migrate/seed/rollback)キャッシュ(config/route/view)運用(queue/schedule/vendor:publish/storage:link) までをカテゴリ別に最短距離で。
  • やりたいこと別レシピ:デプロイ時の一連フロー、DB初期化の安全手順、キャッシュ更新の“正しい順番”。
  • 環境別の呼び出し:素の php artisan/Docker/Sail/(必要なら)Herd の実行例。
  • よくある落とし穴route:cache でのクロージャ問題、freshrefresh の選び分け、キャッシュ周りの事故防止チェック。

対象は、これから覚える人実務で毎日叩く人まで。

初心者には「まず覚える10コマンド」を、実務者には「本番で失敗しない手順」と「トラブル時の最短リカバリ」を提示します。
それでは、LaravelのArtisanを“迷わず・壊さず・速く”使うための決定版、はじめましょう。

まず覚える10コマンド(最速チートシート)

コマンド一覧 / ヘルプ

php artisan list
php artisan <command> -h

迷ったらまずここ。利用可能なコマンドの全体像と各コマンドの使い方を即確認できます。

ルートの確認

php artisan route:list      # ルート一覧(-v / -vvで詳細)

エンドポイントやミドルウェアの把握・デバッグに必須。

モデル / コントローラなどの生成(make系)

php artisan make:model Post -mcr   # モデル+migration/Controller/Resource
php artisan make:controller PostController --resource

雛形を一気に作って開発速度を底上げ。

マイグレーション実行・やり直し

php artisan migrate
php artisan migrate:rollback --step=1
php artisan migrate:fresh
php artisan migrate:refresh

スキーマを進める・戻す・作り直すの基本4点。freshrefresh の違いは後段で詳解。

シーディング(初期データ投入)

php artisan db:seed --class=DatabaseSeeder

テストやE2E前の下ごしらえに。

設定・ルート・ビュー・イベントのキャッシュ作成

php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan event:cache

本番デプロイ時の定番。起動やルーティング登録を高速化。

まとめて最適化 / 一括クリア

php artisan optimize
php artisan optimize:clear

各種キャッシュの作成と全消しをワンショットで。

ストレージ公開

php artisan storage:link

public/storage へのシンボリックリンクを作成。公開ファイル配信の基本設定。

パッケージ資産の公開

php artisan vendor:publish --tag=config

パッケージの設定・ビューなどをアプリ側へコピーしてカスタマイズ可能に。

Tinker / about(環境把握)

php artisan tinker
php artisan about --only=environment

REPLでモデル操作や小実験、現在の環境情報の素早い確認に。

実務レシピ #1:本番デプロイの安全手順(最短版)

php artisan down --render="errors::503"           # 任意:メンテ画面へ
php artisan migrate --force                       # 破壊的変更は必ず --force
php artisan optimize                              # config/route/view/event を一括キャッシュ
php artisan up

メモ:

  • ルートをクロージャで定義していると route:cache(= optimize 内部)が失敗します。コントローラへ移すのが正解。
  • アプリ設定・ルーティングを頻繁に更新する環境は、個別の config:cache / route:cache を明示して制御してもOK。
  • うまくいかない時は php artisan optimize:clear を一発。

実務レシピ #2:DBを“クリーンにやり直し”たい時

ゼロから作り直す(開発初期/検証)

php artisan migrate:fresh --seed

直前の変更だけ巻き戻して再実行(差分検証)

php artisan migrate:rollback --step=1
php artisan migrate

いったん全部戻して再実行(履歴を付け直す)

php artisan migrate:refresh --seed

判断のコツ:

  • テーブルごと全部捨てたい」→ fresh
  • 一部だけやり直したい」→ rollback --step
  • 履歴をリセットして作り直し」→ refresh

実務レシピ #3:キャッシュ更新の“正しい順番”

php artisan config:cache
php artisan event:cache
php artisan route:cache
php artisan view:cache
# すべてリセットしたい: php artisan optimize:clear

ポイント:

  • ルートや設定を変更したら再キャッシュが必要。挙動が怪しい時はまず optimize:clear
  • 開発中は route:cache を無理に使わない(毎回再生成が面倒)。本番で効果的。

環境別:Artisanの呼び出し

  • 素のPHP環境php artisan <command>
  • Docker/Sail./vendor/bin/sail artisan <command>sail artisan のエイリアスでも可)
  • Docker Compose(独自)docker compose exec app php artisan <command>
  • macOS Herdherd php artisan <command>(バージョン切り替え下での実行に便利)

逆引き早見(やりたいこと別)

APIの下地を一気に作る

php artisan make:model Post -mcr
php artisan make:request StorePostRequest
php artisan make:resource PostResource

認可(Policy)を作る

php artisan make:policy PostPolicy --model=Post

フォームバリデーションを整理する

php artisan make:request UpdatePostRequest

非同期処理(キュー)を仕込む

php artisan make:job GenerateReport
php artisan queue:work --tries=3
php artisan queue:restart

イベント駆動で後処理

php artisan make:event ReportGenerated
php artisan make:listener SendReportNotification --event=ReportGenerated
php artisan event:cache

パッケージの設定やアセットを取り込む

php artisan vendor:publish --tag=config

公開ストレージを有効化

php artisan storage:link

よくあるエラーと最短リカバリ

  • 「Unable to prepare route […] for serialization」
    ルートのクロージャ定義が原因。コントローラに置き換える → route:cache 再実行。
  • 「Target class […] does not exist」/クラスが見つからない
    名前空間やPSR-4のズレ。composer dump-autoload を実行、クラスの namespace を確認。
  • Seeder/Factory が見つからない
    Laravel 8+ は Database\Seeders 名前空間が既定。クラスの置き場所と namespace を合わせる。
  • 「Nothing to migrate」なのにテーブルが壊れている/差分が合わない
    迷ったら migrate:fresh --seed で白紙から作り直す(開発環境限定)。
  • ログ書き込み権限エラー
    storage / bootstrap/cache のパーミッションを見直し。Docker ではユーザ/グループIDの不一致に注意。

付録:カテゴリ別早見表

基本操作list / help / about
生成(make:*)model controller request resource factory seeder migration middleware job event listener policy rule cast
DBmigrate migrate:rollback migrate:refresh migrate:fresh db:seed
キャッシュ/最適化config:cache|clear route:cache|clear view:cache|clear event:cache|clear optimize optimize:clear
運用queue:work|retry|restart schedule:run storage:link vendor:publish
開発/診断serve test tinker env(.env表示は避ける運用を)

まとめ

Artisanは、Laravel開発を「迷わず・壊さず・速く」進めるための中核ツールです。

まずは list-h で自走できる地図を持ち、make:* で雛形を量産し、migrate / seed / rollback を安全に回す基礎体力を固めましょう。キャッシュは本番で効く武器ですが、変更時は必ず再生成し、挙動が不安定なら optimize:clear で一度リセットするのが最短の復旧ルートです。

DBを白紙から作り直したいのか、直前の差分だけ検証したいのかで、freshrefresh/rollback を使い分ける判断軸を持つと事故が減ります。ルートをキャッシュするならクロージャ定義は避け、コントローラに寄せる——この一点だけでも運用の安定度は大きく変わります。

現場では「レシピ化」と「自動化」が成果を分けます。

本記事のチートシートをチームのドキュメントやCI/CDに組み込み、デプロイ時は migrate --force → optimize の一連手順をスクリプト化。Docker/Sail など環境別の呼び出しコマンドもテンプレート化して、誰が実行しても同じ結果になる状態を作っておくと、学習コストもヒューマンエラーも同時に下がります。

最後に、Artisanはバージョンで小さく進化し続けます。公式の更新を定期的に確認しつつ、自分たちの“よくある作業”をコマンド列として育てる。今日の一回を明日の定型にすることで、Laravel開発はもっと快適で再現性の高いものになります。