カスタムコマンドの作成

LaravelのArtisanは、コマンドラインから様々な操作を行うための強力なツールです。Artisanには多くのビルトインコマンドが用意されていますが、開発のニーズに応じてカスタムコマンドを作成することも可能です。以下では、カスタムArtisanコマンドの作成方法について詳しく説明します。


1. カスタムコマンドの作成手順

ステップ1:Artisanでコマンドを生成

以下のコマンドを実行して、カスタムコマンドのクラスファイルを生成します:

bash
php artisan make:command SampleCommand

このコマンドにより、app/Console/Commands/SampleCommand.php というファイルが生成されます。


2. コマンドクラスの構造

生成された SampleCommand クラスには、以下のような構造があります:

php
namespace App\Console\Commands; use Illuminate\Console\Command; class SampleCommand extends Command { protected $signature = 'sample:run'; protected $description = 'サンプルのカスタムコマンドです'; public function handle() { // コマンドの処理をここに記述 $this->info('カスタムコマンドが実行されました'); } }

各プロパティの意味

プロパティ 説明
$signature コマンド名と引数/オプションの定義(例:sample:run
$description php artisan list で表示される説明文
handle() コマンドが実行されたときに処理されるロジック

3. コマンドの登録

Laravel 8以降では、生成されたコマンドは自動的に app/Console/Commands フォルダ内をスキャンして登録されます。もし自動登録が無効になっている場合やLaravel 7以前では、app/Console/Kernel.php$commands プロパティに明示的に登録します:

php
protected $commands = [ \App\Console\Commands\SampleCommand::class, ];

4. コマンドの実行

ターミナルで以下のように入力して、コマンドを実行します:

bash
php artisan sample:run

5. 引数・オプションの定義(応用)

$signature に引数やオプションを定義することも可能です:

php
protected $signature = 'sample:run {name} {--greeting=こんにちは}';
php
public function handle() { $name = $this->argument('name'); $greeting = $this->option('greeting'); $this->info("{$greeting}, {$name} さん!"); }

実行例:

bash
php artisan sample:run Yamada --greeting=おはよう

出力:

おはよう, Yamada さん!

まとめ

カスタムArtisanコマンドは、定期的な処理やデータ操作をCLIから簡単に実行するための手段として非常に便利です。以下のポイントを押さえることで、柔軟なコマンド設計が可能になります。

  • make:command で雛形を生成

  • $signature でコマンド名や引数を定義

  • handle() に処理ロジックを記述

  • 必要に応じてKernelに登録

ChatGPT4o 生成日:2025/06/23