目次
こんにちは!ともです(@_tomo_engineer)!
この記事ではLaravelでよく利用するArtisanコマンドに自作のコマンドを登録する方法についてまとめます。
目次
- Artisanコマンドとは
- カスタムコマンドの作成
- カスタムコマンドの登録
Artisanコマンドとは
Artisanについて、ドキュメントは以下の様に書かれています。
ArtisanはLaravelに含まれているコマンドラインインターフェイスです。アプリケーション開発全体で役に立つ、数多くのコマンドを提供しています。
ArtisanはLaravelのコマンドラインインターフェース(CI)です。
php artisan make:migrate
これはLaravelを利用していると頻繁に利用するコマンドの1つであり、php artisan 以降が登録されている機能になりますので、上記はmake:migrateコマンドを実行しています。
この様なCIを自作するにはどの様にすれば良いのでしょうか。
すでに登録済みのArtisanコマンドは
php artisan list
listコマンドで確認する事ができます。

この様にArtisanコマンドを確認する事ができました。
ここに新たなコマンドを追加する方法を以降でご説明致します。
カスタムコマンドの作成方法
コマンドを生成するコマンドもLaravelは提供しており、次のコマンドで作成する事ができます。
php artisan make:command CSVCommand
このコマンドによりCSVCommandという名前のファイルをApp\Console\Commands下にCSVCommand.phpが生成されます。

CSVCommand.phpに設定を記述することにより、カスタムコマンドを作成する事ができます。
- CSVCommand.php
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class CSVCommand extends Command
{
// コマンド名
protected $signature = 'command:name';
// コマンドの説明
protected $description = 'Command description';
// コンストラクタ
public function __construct()
{
parent::__construct();
}
// 実行内容
public function handle()
{
//
}
}
コメントを振りましたが、プロパティとメソッドの説明は以下です。
$signature | コマンド名 |
$description | コマンドに関する説明 |
handle() | コマンドの実行内容 |
コマンド名とコマンドに関する説明
CSVCommand.phpを作成した状態で、
php artisan list
をしてみましょう。

CSVCommand.phpの$signature, $descriptionで設定した内容が反映されています。
では、このプロパティを修正してみます。
// コマンド名
protected $signature = 'csv:user';
// コマンドの説明
protected $description = ' CSV import';
Usersテーブルにcsvファイルからデータをインポートするコマンドを作成するとこうでしょうか。この状態でArtisanコマンドのリストを表示してみます。

command => csv にコマンド名が変更されています。
コマンドの実行内容
コマンドの実行内容はhandleメソッドに記述します。
この状態で
// 実行内容
public function handle()
{
dd('pass handle');
}
handleメソッドに上記のdd()を追加しました。この状態で
php artisan csv:user
を実行してみます。

実行したい内容を実行できている事がわかります。
あとはCSV出力の内容をhandleメソッドに記述するだけですね。今回は省略致します。
カスタムコマンドの登録
カスタムコマンドの登録はapp\Console\Kernel.phpで設定します。
- app\Console\Kernel.php
// コマンドをアプリケーションに登録する
protected function commands()
{
$this->load(__DIR__.'/Commands');
require base_path('routes/console.php');
}
Commandディレクトリ下をロードしている事が分かります。
php artisan make:command
では、Commandsディレクトリ下に設定ファイルを生成されます。よって自動的にロードされる訳であり登録作業は不要です。
// クラス名を登録
protected $commands = [
Commands\CSVCommand::class
];
$commandsプロパティに配列で与えることによりアプリケーションにコマンドを登録することも可能です。
まとめ
Artisanコマンドに自作のコマンドを追加する方法を紹介しました。
自作のコマンドを作成する事で開発の効率を上げる事ができます。コマンドから簡単に行いたい作業がある場合はArtisanコマンドに登録しておくと便利ですね。