カテゴリ: 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のコントローラでリクエストをログ出力する方法を初心者向けに解説
New2
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
New3
Symfony
Symfonyのセッション管理完全ガイド!初心者でもわかるセッションドライバ設定(file・Redis)
New4
Laravel
Laravelのエラーメッセージをカスタマイズする方法|初心者向けガイド
人気記事
No.1
Java&Spring記事人気No1
Laravel
LaravelでBasic認証を実装するミドルウェアの使い方!初心者向けガイド
No.2
Java&Spring記事人気No2
Symfony
SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方
No.3
Java&Spring記事人気No3
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
No.4
Java&Spring記事人気No4
Laravel
Laravelのデータベース設定方法を完全ガイド!初心者でもわかる.envファイルの使い方
No.5
Java&Spring記事人気No5
Laravel
LaravelでファクトリとSeederを組み合わせてダミーデータを生成する方法!初心者でも簡単にテストデータ作成
No.6
Java&Spring記事人気No6
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説
No.7
Java&Spring記事人気No7
Laravel
LaravelのテストでCSRFやセッションの扱いをやさしく理解しよう!初心者向け完全ガイド
No.8
Java&Spring記事人気No8
Symfony
Symfonyでメモリキャッシュ(APCu)を活用する方法を初心者向けに完全解説