カテゴリ: Symfony 更新日: 2026/02/04

Symfonyで独自のコンソールコマンドを作成する方法を完全解説!make:commandで始めるバッチ処理入門

Symfonyで独自のコマンドを作成する方法(make:command)
Symfonyで独自のコマンドを作成する方法(make:command)

先生と生徒の会話形式で理解しよう

生徒

「Symfonyって、画面を作るだけじゃなくて、裏で動く処理も作れるんですか?」

先生

「作れます。Symfonyにはコンソールコマンドという、ボタンを押さずに実行できる仕組みがあります。」

生徒

「それは何に使うんですか?」

先生

「毎日自動で動かしたい処理や、大量のデータをまとめて処理するバッチ処理に使います。今回はその作り方を見ていきましょう。」

1. Symfonyのコンソールコマンドとは?

1. Symfonyのコンソールコマンドとは?
1. Symfonyのコンソールコマンドとは?

Symfonyのコンソールコマンドとは、ブラウザを使わずに、キーボードから命令を入力して実行する仕組みです。Windowsで言うとコマンドプロンプト、Macではターミナルと呼ばれる画面から操作します。

画面の裏側で動く処理なので、メールの一括送信古いデータの削除定期的な集計処理などに向いています。このようにまとめて実行する処理を、一般的にバッチ処理と呼びます。

2. make:commandで何ができるのか

2. make:commandで何ができるのか
2. make:commandで何ができるのか

Symfonyには、コマンド作成を助けてくれるmake:commandという便利な機能があります。これは、コマンドのひな形を自動で作ってくれる道具です。

プログラミング初心者にとって、最初から全部書くのは大変ですが、make:commandを使えば、最低限必要なファイルや構造が最初から用意されます。料理で言えば、下ごしらえが終わった状態から始められるイメージです。

3. コマンドを作成してみよう(make:command)

3. コマンドを作成してみよう(make:command)
3. コマンドを作成してみよう(make:command)

まずは、Symfonyのプロジェクトフォルダで、ターミナルを開きます。そして、次の命令を入力します。


php bin/console make:command

すると、コマンドの名前を聞かれます。例えば、app:helloのように入力します。appはアプリ用という意味で、helloは内容を表します。

この操作だけで、src/Commandフォルダの中に、新しいコマンド用のPHPファイルが自動で作成されます。

4. 生成されたコマンドファイルの中身

4. 生成されたコマンドファイルの中身
4. 生成されたコマンドファイルの中身

作成されたファイルを開くと、Commandクラスというものがあります。クラスとは、処理をまとめた設計図のようなものです。


protected function execute(InputInterface $input, OutputInterface $output): int
{
    $output->writeln('こんにちは、Symfonyコマンドです');
    return Command::SUCCESS;
}

executeメソッドの中が、実際に動く処理です。writelnは、画面に文字を表示する命令です。returnは「正常に終わりました」という合図になります。

5. 作成したコマンドを実行してみる

5. 作成したコマンドを実行してみる
5. 作成したコマンドを実行してみる

作っただけでは動きません。次は実行してみましょう。次のように入力します。


php bin/console app:hello

実行すると、次のような結果が表示されます。


こんにちは、Symfonyコマンドです

これで、独自のSymfonyコンソールコマンドが動いたことになります。

6. 引数を使って動きを変える

6. 引数を使って動きを変える
6. 引数を使って動きを変える

コマンドには、引数を渡すことができます。引数とは、命令と一緒に渡す追加情報です。名前を渡して、表示を変えてみましょう。


protected function execute(InputInterface $input, OutputInterface $output): int
{
    $name = $input->getArgument('name');
    $output->writeln($name . 'さん、こんにちは');
    return Command::SUCCESS;
}

これにより、実行時に指定した内容に応じて、表示が変わるコマンドになります。

7. バッチ処理でよく使われる場面

7. バッチ処理でよく使われる場面
7. バッチ処理でよく使われる場面

Symfonyのコンソールコマンドは、毎日決まった時間に動かす処理と相性が良いです。例えば、夜中にデータを整理したり、不要な情報を削除したりする処理です。

人が操作しなくても動くため、ミスが減り、作業時間も短縮できます。これが、Symfonyでバッチ処理を作る大きなメリットです。

8. 初心者がつまずきやすいポイント

8. 初心者がつまずきやすいポイント
8. 初心者がつまずきやすいポイント

初めてSymfonyのコマンドを作ると、エラーが出て驚くことがあります。その多くは、コマンド名の入力ミスや、ファイル保存忘れです。

落ち着いて、表示されているエラーメッセージを読むことが大切です。Symfonyは、比較的わかりやすい文章で原因を教えてくれます。

カテゴリの一覧へ
新着記事
New1
CodeIgniter
CodeIgniterでRESTful API開発!初心者でもわかる全体構成ガイド
New2
Symfony
Symfonyのコントローラとは?作成・構造・役割を初心者向けにやさしく解説!
New3
Symfony
Symfonyでバリデーションメッセージを多言語対応する方法!初心者でもわかる国際化の基本
New4
Symfony
Symfonyのキャッシュ機構の基本を理解しよう(HTTPとアプリ別)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのシングルアクションコントローラとは?使い方と利点
No.2
Java&Spring記事人気No2
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.3
Java&Spring記事人気No3
Laravel
LaravelのBlade構文まとめ!@if @foreach など基本ディレクティブ解説
No.4
Java&Spring記事人気No4
Laravel
Laravelでキャッシュを使う方法(ファイル・Redis・Memcached)
No.5
Java&Spring記事人気No5
Laravel
Laravelで名前付きルートを設定する方法!初心者でもわかるroute()関数の使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)
No.8
Java&Spring記事人気No8
Symfony
Symfonyの依存性注入(DI)とは?コンストラクタでの注入方法を初心者向けに徹底解説