Symfonyで独自のコンソールコマンドを作成する方法を完全解説!make:commandで始めるバッチ処理入門
生徒
「Symfonyって、画面を作るだけじゃなくて、裏で動く処理も作れるんですか?」
先生
「作れます。Symfonyにはコンソールコマンドという、ボタンを押さずに実行できる仕組みがあります。」
生徒
「それは何に使うんですか?」
先生
「毎日自動で動かしたい処理や、大量のデータをまとめて処理するバッチ処理に使います。今回はその作り方を見ていきましょう。」
1. Symfonyのコンソールコマンドとは?
Symfonyのコンソールコマンドとは、ブラウザを使わずに、キーボードから命令を入力して実行する仕組みです。Windowsで言うとコマンドプロンプト、Macではターミナルと呼ばれる画面から操作します。
画面の裏側で動く処理なので、メールの一括送信、古いデータの削除、定期的な集計処理などに向いています。このようにまとめて実行する処理を、一般的にバッチ処理と呼びます。
2. make:commandで何ができるのか
Symfonyには、コマンド作成を助けてくれるmake:commandという便利な機能があります。これは、コマンドのひな形を自動で作ってくれる道具です。
プログラミング初心者にとって、最初から全部書くのは大変ですが、make:commandを使えば、最低限必要なファイルや構造が最初から用意されます。料理で言えば、下ごしらえが終わった状態から始められるイメージです。
3. コマンドを作成してみよう(make:command)
まずは、Symfonyのプロジェクトフォルダで、ターミナルを開きます。そして、次の命令を入力します。
php bin/console make:command
すると、コマンドの名前を聞かれます。例えば、app:helloのように入力します。appはアプリ用という意味で、helloは内容を表します。
この操作だけで、src/Commandフォルダの中に、新しいコマンド用のPHPファイルが自動で作成されます。
4. 生成されたコマンドファイルの中身
作成されたファイルを開くと、Commandクラスというものがあります。クラスとは、処理をまとめた設計図のようなものです。
protected function execute(InputInterface $input, OutputInterface $output): int
{
$output->writeln('こんにちは、Symfonyコマンドです');
return Command::SUCCESS;
}
executeメソッドの中が、実際に動く処理です。writelnは、画面に文字を表示する命令です。returnは「正常に終わりました」という合図になります。
5. 作成したコマンドを実行してみる
作っただけでは動きません。次は実行してみましょう。次のように入力します。
php bin/console app:hello
実行すると、次のような結果が表示されます。
こんにちは、Symfonyコマンドです
これで、独自のSymfonyコンソールコマンドが動いたことになります。
6. 引数を使って動きを変える
コマンドには、引数を渡すことができます。引数とは、命令と一緒に渡す追加情報です。名前を渡して、表示を変えてみましょう。
protected function execute(InputInterface $input, OutputInterface $output): int
{
$name = $input->getArgument('name');
$output->writeln($name . 'さん、こんにちは');
return Command::SUCCESS;
}
これにより、実行時に指定した内容に応じて、表示が変わるコマンドになります。
7. バッチ処理でよく使われる場面
Symfonyのコンソールコマンドは、毎日決まった時間に動かす処理と相性が良いです。例えば、夜中にデータを整理したり、不要な情報を削除したりする処理です。
人が操作しなくても動くため、ミスが減り、作業時間も短縮できます。これが、Symfonyでバッチ処理を作る大きなメリットです。
8. 初心者がつまずきやすいポイント
初めてSymfonyのコマンドを作ると、エラーが出て驚くことがあります。その多くは、コマンド名の入力ミスや、ファイル保存忘れです。
落ち着いて、表示されているエラーメッセージを読むことが大切です。Symfonyは、比較的わかりやすい文章で原因を教えてくれます。