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

Symfonyコンソールコマンド完全入門!プログレスバー表示でバッチ処理がわかる

Symfonyのコマンドでプログレスバーを表示する方法
Symfonyのコマンドでプログレスバーを表示する方法

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

生徒

「Symfonyのコンソールコマンドって、実行すると何をしているのか全然わからなくて不安です…」

先生

「コマンドは文字だけなので、今どこまで処理が進んでいるか見えにくいですよね。」

生徒

「はい。処理が止まっているのか、動いているのかも分からないです。」

先生

「Symfonyには、処理の進み具合を棒グラフのように表示できるプログレスバー機能がありますよ。」

生徒

「えっ、そんな便利なものがあるんですか?」

先生

「あります。今回は、パソコン初心者でもわかるように、最初から丁寧に説明しますね。」

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

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

Symfonyのコンソールコマンドとは、キーボードで文字を入力して実行するプログラムのことです。マウスを使わず、黒い画面(ターミナル・コマンドプロンプト)に命令を書いて処理を動かします。バッチ処理とは、たくさんの作業をまとめて自動で実行する処理のことで、夜中にデータを整理したり、大量のデータを登録するときによく使われます。

例えるなら、洗濯機に「洗い・すすぎ・脱水」をまとめてお願いするようなものです。一つずつ手で操作しなくても、自動で最後まで動いてくれます。

2. プログレスバーとは何か?

2. プログレスバーとは何か?
2. プログレスバーとは何か?

プログレスバーとは、処理がどこまで進んでいるかを視覚的に表示する棒グラフのようなものです。ダウンロード中に「50%」と表示される画面を見たことはありませんか?あれと同じ役割です。

Symfonyのコンソールコマンドでプログレスバーを表示すると、「今は全体の何%まで終わったか」「まだ時間がかかるのか」が一目でわかるようになります。初心者ほど、この表示があるだけで安心して待つことができます。

3. Symfonyでプログレスバーを使う準備

3. Symfonyでプログレスバーを使う準備
3. Symfonyでプログレスバーを使う準備

Symfonyでは、最初からProgressBarという便利な道具が用意されています。これは「進み具合を表示する専用クラス」です。クラスとは、便利な機能が詰まった箱のようなものだと思ってください。

まずは、Symfonyのコンソールコマンドの基本形を見てみましょう。


namespace App\Command;

use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class SampleCommand extends Command
{
    protected static $defaultName = 'app:sample';

    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $output->writeln('コマンドが実行されました');
        return Command::SUCCESS;
    }
}

この状態では、文字が表示されるだけで、進捗はわかりません。

4. プログレスバーを表示する基本的な書き方

4. プログレスバーを表示する基本的な書き方
4. プログレスバーを表示する基本的な書き方

ここからプログレスバーを追加します。ProgressBarは、Symfonyの「Helper」という便利機能の一つです。Helperは「お手伝いさん」だと思うと理解しやすいです。


use Symfony\Component\Console\Helper\ProgressBar;

$progressBar = new ProgressBar($output, 10);
$progressBar->start();

for ($i = 0; $i < 10; $i++) {
    sleep(1);
    $progressBar->advance();
}

$progressBar->finish();

10は「全部で10回処理がありますよ」という意味です。advance()は「1つ進める」という命令です。sleep(1)は、わざと1秒止めて、動いている様子を見せるために入れています。

5. 実行するとどう見えるのか

5. 実行するとどう見えるのか
5. 実行するとどう見えるのか

実際にコマンドを実行すると、画面には次のような表示が出ます。


 10/10 [============================] 100%

このように棒が右へ伸びていき、最後に100%になります。これだけで「ちゃんと処理が進んでいる」と安心できます。

6. 配列データを処理しながらプログレスバーを動かす

6. 配列データを処理しながらプログレスバーを動かす
6. 配列データを処理しながらプログレスバーを動かす

実際のバッチ処理では、配列(データのまとまり)を一つずつ処理することが多いです。配列とは、番号付きの箱が並んでいるイメージです。


$dataList = ['りんご', 'みかん', 'ばなな', 'ぶどう'];

$progressBar = new ProgressBar($output, count($dataList));
$progressBar->start();

foreach ($dataList as $data) {
    sleep(1);
    $progressBar->advance();
}

$progressBar->finish();

count()は「箱が何個あるか数える」命令です。データの数に合わせて、自動でプログレスバーが調整されます。

7. メッセージを表示しながら進捗を見る

7. メッセージを表示しながら進捗を見る
7. メッセージを表示しながら進捗を見る

プログレスバーと一緒に「今何をしているか」を表示すると、さらに親切になります。


$progressBar = new ProgressBar($output, 3);
$progressBar->start();

$output->writeln('データ取得中');
$progressBar->advance();

$output->writeln('データ保存中');
$progressBar->advance();

$output->writeln('完了処理中');
$progressBar->advance();

$progressBar->finish();

これにより、作業内容と進捗が同時に確認できます。

8. プログレスバーを使うメリット

8. プログレスバーを使うメリット
8. プログレスバーを使うメリット

Symfonyのコンソールコマンドでプログレスバーを表示することで、処理の見える化ができます。特に初心者は「止まっているのか不安になる」ことが多いため、プログレスバーは心強い味方です。

長いバッチ処理、大量データ処理、定期実行のコマンドなど、さまざまな場面で活躍します。Symfony標準機能なので、特別な設定も不要で安全に使えます。

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