Skip to main content

Artisanとは

ArtisanはLaravelに同梱されているコマンドラインインターフェース(CLI)ツールです。 プロジェクトルートの artisan スクリプトとして存在し、開発・運用を効率化する多数のコマンドを提供しています。 利用可能なコマンド一覧を確認するには list コマンドを使います。
コマンドの使い方を確認するには help を先頭に付けます。
Laravel Sailを使っている場合は、php artisan の代わりに sail artisan を使ってください。 コマンドはDockerコンテナ内で実行されます。

Tinker

Laravel Tinker は、EloquentモデルやJob、イベントなど、アプリケーション全体をコマンドライン上でインタラクティブに操作できるREPL環境です。
起動後はPHPコードをそのまま実行できます。
Tinkerはデータを実際に変更します。本番環境での実行は十分注意してください。 ローカルやステージング環境での動作確認・デバッグ用途に適しています。

カスタムコマンドの作成

コマンドを生成する

make:command でコマンドクラスのひな型を生成します。
app/Console/Commands/ImportProducts.php が生成されます。

コマンドの基本構造

生成されたコマンドクラスには、$signature$descriptionhandle() という3つの主要要素があります。
Laravel 13ではPHPアトリビュートを使った書き方も利用できます。

引数とオプションの定義

$signature にコマンド名・引数・オプションをまとめて定義します。

引数とオプションの取得

handle() メソッド内で argument()option() を使って値を取得します。

input() — 型付きアクセサ

input() メソッドを使うと、HTTPリクエストと同じ型付きアクセサでコマンドの引数やオプションを取得できます。
特定の名前だけ取得したい場合は名前を直接渡します(引数とオプションの両方から検索されます)。
argument()option() が文字列を返すのに対し、input() の型付きアクセサは適切な型に変換します。日付・数値・Enum など型安全に扱いたい場合に便利です。

ユーザーとのインタラクション

メッセージの出力

コンソールに色付きのメッセージを出力するメソッドが用意されています。

ユーザーへの問い合わせ

対話的にユーザーから入力を受け付けることができます。

プログレスバー

大量データの処理中に進捗をわかりやすく表示できます。
手動で細かく制御したい場合は次の方法を使います。

実用的なユースケース

データインポートコマンド

CSVファイルから商品データをインポートする実践的なコマンドの例です。
1

コマンドを生成する

2

コマンドを実装する

3

コマンドを実行する

定期メンテナンスコマンド

古いデータの削除など、定期的に実行するメンテナンスコマンドの例です。

スケジュール実行との組み合わせ

作成したコマンドは routes/console.php でスケジュール実行できます。 詳細はタスクスケジューリングを参照してください。

コマンドのテスト

Laravelのテスト機能を使って、Artisanコマンドの動作を検証できます。
artisan() メソッドで使えるアサーションメソッドの例:

devコマンド

dev Artisanコマンドは、ローカル開発に必要な複数のプロセスを1つのターミナルウィンドウでまとめて起動します。デフォルトでは、PHP開発サーバー・キューワーカー・Pailによるログ監視・Viteのアセットコンパイルが並行して実行されます。
内部ではconcurrentlyというnpmパッケージを使ってプロセスを管理しています。各プロセスはラベル付けされ色分けされるので、ターミナル出力でどのプロセスか簡単に区別できます。いずれかのプロセスが失敗すると、他のすべてのプロセスも自動的に停止します。 デフォルトで実行されるプロセスは以下の通りです。
viteプロセスは、使用しているNodeパッケージマネージャー(npm、pnpm、Yarn、Bun)を自動検出して適切な実行コマンドを使用します。

devプロセスのカスタマイズ

devコマンドが実行するプロセスは、DevCommandsクラスを使ってカスタマイズできます。通常はアプリケーションのAppServiceProviderbootメソッド内で登録します。registerメソッドはコマンド文字列と任意のプロセス名を受け取ります。
Artisanコマンドを登録する場合は、自動的にphp artisanを前置してくれるartisanメソッドが使えます。
同様に、nodeメソッドは検出したパッケージマネージャーの実行コマンド(例: npm run)を前置し、nodeExecメソッドはパッケージマネージャーのexecコマンド(例: npx)を前置します。
デフォルトのプロセスと同じ名前でプロセスを登録すると、そのデフォルトプロセスを置き換えます。たとえば、サーバープロセスを別のポートで使うようにカスタマイズできます。
ターミナルでのプロセスラベルの色もカスタマイズできます。利用可能な色メソッドはbluepurplepinkorangegreenyellowです。colorメソッドにカスタムのhexカラーを渡すこともできます。
登録済みのdevプロセスを実際に起動せず一覧表示したい場合は、dev:listコマンドを使います。

devプロセスのフィルタリング

onlyメソッドを使うと、devコマンド実行時に特定のプロセスだけを起動するよう指定できます。同様に、exceptメソッドで特定のプロセスを除外することもできます。
ローカル開発でHorizonやReverbなどを併用する場合、DevCommands::artisan()で登録しておけばphp artisan dev一つですべて起動できて便利です。

よく使うコマンドまとめ

最終更新日 2026年7月19日