カテゴリ: CodeIgniter 更新日: 2026/03/06

CodeIgniterのCLI(Spark)とは?バッチ処理の基本概念を徹底解説

CodeIgniterのCLI(Spark)とは?できることと基本概念
CodeIgniterのCLI(Spark)とは?できることと基本概念

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

生徒

「PHPのフレームワーク、CodeIgniter(コードイグナイター)について勉強中なのですが、Spark(スパーク)という言葉が出てきました。これは何ですか?」

先生

「Sparkは、CodeIgniter 4に用意されている便利な『コマンドラインツール』のことです。画面をポチポチ操作するのではなく、黒い画面に文字を打って命令を出す道具ですよ。」

生徒

「文字で命令を出すなんて、少し難しそうです。バッチ処理というのも、このSparkで行うのでしょうか?」

先生

「その通りです!バッチ処理、つまり自動的に裏側で動くお掃除プログラムのようなものを作るのにもSparkは欠かせません。基本から順番に、初心者の方にも分かりやすく説明しますね。」

1. CodeIgniterのCLIとSparkの正体を知ろう

1. CodeIgniterのCLIとSparkの正体を知ろう
1. CodeIgniterのCLIとSparkの正体を知ろう

まず、CLI(シーエルアイ)という言葉から解説します。これは「Command Line Interface」の略で、マウスを使わずにキーボードで文字を入力してコンピューターを動かす仕組みのことです。皆さんが普段見ているインターネットの画面(ブラウザ)はGUI(グラフィカル・ユーザー・インターフェース)と呼ばれ、CLIはその正反対の「文字だけの世界」だと考えてください。

CodeIgniter(コードイグナイター)というPHPのフレームワーク(アプリを作るための土台)には、このCLIで使える専用の道具箱が入っています。その道具箱の名前がSpark(スパーク)です。パソコンの設定画面などをいちいち開かなくても、たった一行の命令を入力するだけで、プログラムのファイルを作ったり、データベースの設定を確認したりできる、魔法の杖のような役割を果たします。

プログラミング未経験の方は「黒い画面に文字を打つなんて怖い」と思うかもしれませんが、実は初心者にこそ使ってほしい機能です。なぜなら、手作業でファイルを作ると名前を間違えたり保存場所を間違えたりするミスが起きますが、Sparkを使えば正確に、一瞬で準備が整うからです。

2. Sparkでできること!開発を支える便利な機能

2. Sparkでできること!開発を支える便利な機能
2. Sparkでできること!開発を支える便利な機能

Sparkには、開発を楽にするための機能がたくさん詰まっています。主な機能をいくつか挙げてみましょう。

  • 自動生成機能: プログラムの雛形(テンプレート)をコマンドひとつで作ってくれます。
  • データベース管理: テーブルの作成やデータの初期投入を簡単に行えます。
  • アプリの起動: 開発用のサーバーを立ち上げて、すぐに自分の作ったサイトを確認できます。
  • 情報の表示: 現在のアプリの設定や、どのURLがどのプログラムに繋がっているかを確認できます。

例えば、プログラムを書くための「新しいファイル」を自分で作るのは意外と大変です。フォルダを探して、右クリックして、名前を付けて…。しかし、Sparkを使えば「この名前でファイルを作って!」と命令するだけで、正しい場所に正しい形式でファイルが出来上がります。この効率の良さが、プログラミングの世界では非常に重要視されています。

3. バッチ処理とは?日常の例えで理解する仕組み

3. バッチ処理とは?日常の例えで理解する仕組み
3. バッチ処理とは?日常の例えで理解する仕組み

次に、バッチ処理についてお話しします。バッチ処理とは、簡単に言うと「一定量のデータをまとめて、自動的に一括処理すること」です。対義語として「リアルタイム処理(オンライン処理)」があります。

分かりやすくお料理で例えてみましょう。

  • リアルタイム処理: お客さんが注文してから、その場で一人分のチャーハンを作る。
  • バッチ処理: 明日の給食のために、夜のうちに100人分の野菜をまとめて切っておく。

このように、人間が寝ている深夜や、決まった時間にまとめて行う作業がバッチ処理です。例えば、ネットショップで「毎日深夜1時に在庫の数を数え直す」とか「一ヶ月分の請求書をまとめて作成する」といった作業は、人間が手動で行うと大変ですし、忘れてしまうかもしれません。これをプログラム(バッチ処理)に任せることで、正確に自動化できるのです。

4. Sparkを使ってバッチ処理を作る準備

4. Sparkを使ってバッチ処理を作る準備
4. Sparkを使ってバッチ処理を作る準備

CodeIgniterでバッチ処理を作るには、Sparkコマンドを使って「コマンドクラス」というものを作成します。これがバッチ処理の「本体」になります。まずは、基本的なコマンドの打ち方を見てみましょう。パソコンのターミナル(Mac)やコマンドプロンプト(Windows)を開いて、プロジェクトのフォルダへ移動した後に次のように入力します。


// 新しいコマンド(バッチ処理の雛形)を作成する命令
php spark make:command HelloBatch

これを実行すると、app/Commandsというフォルダの中に、HelloBatch.phpというファイルが自動で作られます。自分でイチからファイルを作る必要はありません。中身には最初から最低限必要なプログラムが書かれているので、あとは「何をさせたいか」を書くだけです。

ここで出てくるphp sparkというのは、「PHPというプログラミング言語を使って、Sparkというツールを動かしますよ」という宣言です。その後に続くmake:commandが具体的な命令の内容になります。このように、単語を並べて命令を送るのがCLIの基本です。

5. 実際に動くバッチ処理のプログラムを書いてみる

5. 実際に動くバッチ処理のプログラムを書いてみる
5. 実際に動くバッチ処理のプログラムを書いてみる

それでは、画面にメッセージを表示するだけの簡単なバッチ処理を書いてみましょう。自動生成されたファイルの中に、実際の動作を書く場所があります。今回はシンプルに「バッチ処理を開始しました!」という文字を表示させてみます。


namespace App\Commands;

use CodeIgniter\CLI\BaseCommand;
use CodeIgniter\CLI\CLI;

class HelloBatch extends BaseCommand
{
    // コマンドの名前(呼び出すときに使う)
    protected $group       = 'Custom';
    protected $name        = 'batch:hello';
    protected $description = '挨拶を表示するバッチです。';

    public function run(array $params)
    {
        // 画面に青い文字でメッセージを表示
        CLI::write('バッチ処理を開始しました!', 'cyan');
        
        // 実際の処理をここに書く
        CLI::write('現在の日時は ' . date('Y-m-d H:i:s') . ' です。');
        
        CLI::write('バッチ処理が完了しました。', 'green');
    }
}

このプログラムでは、CLI::writeという命令を使っています。これは「画面に文字を書いてください」という意味です。また、'cyan''green'と書くことで、文字の色を変えることもできます。プログラミング未経験の方でも、なんとなく「ここで文字を出しているんだな」とイメージがつくのではないでしょうか。このように、バッチ処理は自分で行いたい作業を上から順番に書いていくのが基本です。

6. 作成したバッチ処理を実行する方法と結果

6. 作成したバッチ処理を実行する方法と結果
6. 作成したバッチ処理を実行する方法と結果

プログラムが書けたら、実際に動かしてみましょう。これもSparkコマンドを使います。先ほど設定した名前(batch:hello)を使って呼び出します。


php spark batch:hello

このコマンドを入力してエンターキーを押すと、コンピューターがプログラムの内容を読み取って実行してくれます。実行結果は、黒い画面に次のように表示されます。


バッチ処理を開始しました!
現在の日時は 2026-01-08 13:30:00 です。
バッチ処理が完了しました。

どうでしょうか?自分が書いたプログラムが動くと、とてもワクワクしますよね。実際のシステム開発では、このプログラムの中に「データベースから古いデータを削除する」とか「ユーザーにメールを送る」といった複雑な処理を書き込んでいきます。たった一文字のコマンドで、何百件、何千件というデータを一瞬で処理できるようになるのです。

7. 条件分岐を取り入れた少し高度なバッチ処理

7. 条件分岐を取り入れた少し高度なバッチ処理
7. 条件分岐を取り入れた少し高度なバッチ処理

バッチ処理の中では、状況に合わせて動きを変えることもよくあります。例えば「土日だけはお休みする」とか「データがある時だけ処理する」といった具合です。ここで、以前に学んだ「if文(条件分岐)」が登場します。以下の例は、現在の時間が夜間かどうかを判断するプログラムです。


public function run(array $params)
{
    $hour = (int)date('H'); // 現在の「時」を取得

    if ($hour >= 22 || $hour < 6) {
        CLI::write('現在は夜間メンテナンス時間です。', 'yellow');
    } else {
        CLI::write('通常稼働時間です。処理を続行します。', 'white');
    }
}

このプログラムは、今が夜の10時(22時)以降、または朝の6時より前であれば「メンテナンス中です」と表示し、それ以外なら「続行します」と表示します。ifは「もし〜なら」という意味、elseは「そうでなければ」という意味です。バッチ処理の中にこのような判断基準を設けることで、より賢い自動プログラムを作ることができます。

8. Sparkコマンドを一覧で確認して仲良くなろう

8. Sparkコマンドを一覧で確認して仲良くなろう
8. Sparkコマンドを一覧で確認して仲良くなろう

「どんなコマンドがあるか覚えられない!」と不安になる必要はありません。Sparkには、自分ができることを教えてくれる機能もあります。何も付けずに下記のコマンドを打ってみてください。


php spark list

これを実行すると、CodeIgniterで使えるすべてのコマンドがズラリと表示されます。自分が作ったバッチ処理の名前も、このリストの中に表示されるようになります。実行結果のイメージは以下の通りです。


CodeIgniter v4.x.x Command Line Tool - Server Time: 2026-01-08 13:35:00 JST

Custom
  batch:hello          挨拶を表示するバッチです。
Generators
  make:command         Creates a new spark command.
  make:controller      Creates a new controller file.
  make:model           Creates a new model file.
...(他にもたくさん表示されます)

このように、ツールが自分自身の使い方を教えてくれるので、迷ったときはlistと打てば大丈夫です。まずは基本のコマンドをいくつか触ってみて、少しずつ黒い画面に慣れていきましょう。

9. なぜWeb開発でCLIやSparkを学ぶ必要があるのか

9. なぜWeb開発でCLIやSparkを学ぶ必要があるのか
9. なぜWeb開発でCLIやSparkを学ぶ必要があるのか

最後に、なぜプログラミング未経験の方がこれらを学ぶべきなのかをお話しします。現代のWeb開発において、手作業を減らして「自動化」することは非常に大切です。バッチ処理を使えば、人間が24時間パソコンの前にいなくても、プログラムが代わりに働いてくれます。そして、そのプログラムを管理し、実行を助けてくれるのがSparkというCLIツールなのです。

プログラミングは、単にコードを書くだけではありません。「いかに楽をするか」「いかにミスを減らすか」を考える仕事でもあります。Sparkを使いこなせるようになると、開発スピードは劇的に上がります。最初は難しく感じる用語も、実際に手を動かしてphp sparkと打ち込んでいくうちに、自然と身体が覚えていくはずです。焦らず、一歩ずつ進んでいきましょう。

関連記事:

関連記事なし

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelでコマンド(artisan)のテストを行う方法を初心者向けにやさしく解説
New2
CodeIgniter
CodeIgniterのCLI(Spark)とは?バッチ処理の基本概念を徹底解説
New3
Laravel
Laravelでコントローラを作成する方法(artisanコマンド)
New4
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelでモデルからデータを取得・保存・更新・削除する方法を完全ガイド!初心者でもわかるEloquent ORM入門
No.2
Java&Spring記事人気No2
Laravel
Laravelのマイグレーション履歴を確認する方法を徹底解説!migrate:statusの使い方
No.3
Java&Spring記事人気No3
Laravel
LaravelでBasic認証を実装するミドルウェアの使い方!初心者向けガイド
No.4
Java&Spring記事人気No4
Laravel
Laravelでログを出力する方法(Monolog・storage/logs)
No.5
Java&Spring記事人気No5
Laravel
Laravelのルート一覧を確認する方法!初心者でもわかるphp artisan route:listの使い方
No.6
Java&Spring記事人気No6
Symfony
SymfonyでTwigテンプレートを表示する方法を完全ガイド!初心者にもわかるHTMLとの違いや使い方
No.7
Java&Spring記事人気No7
Laravel
Laravelで動的パラメータをルートに渡す方法!初心者にもやさしいルートパラメータの使い方入門
No.8
Java&Spring記事人気No8
Symfony
Symfonyのコントローラでリダイレクトする方法を徹底解説!初心者にもやさしく解説