
今回は、バッチ処理とは?から、反対語として位置づけられるリアルタイム処理との違いまで、バッチ処理の理解を深めるための基礎知識について触れてみたいと思います!
バッチ処理とは
バッチ処理とは、データをほしい結果に「まとめて処理」すること。
一言であらわすと、これに尽きます!(キリっ!)
Wikipedia(※)の解説文も、参考までに見てみましょう。
コンピュータでプログラム群を処理目的ごとに区切り、この区切り毎に順次実行してゆく一連の処理のこと。
ひとつの設備である程度まとまった時間、または単位操作ごとに処理を区切り、原材料をこの区切りごとにまとめて投入する処理のこと。
反対語は対話処理・インタラクティブ処理またはリアルタイム処理
なんとなくはわかる気がしますが、少し理解に時間がかかる気がしますね…
リアルタイム処理もバッチ処理の一部
「バッチ処理とは、データをほしい結果に「まとめて処理」すること」と前述しましたが、ここで言うところの「処理」とは、「データ操作を行う」処理のことを意味しています。
データ操作を行う、とは具体的には下記のようなことです。
・複数のデータをキーで結合
・明細データの合計値を計算
・単純に「A」という文字を「B」という文字に変換
・「1」という値があったら「A」というデータに変換
・入力の項目と出力の項目を自動で関連づけ
複数のデータをキーで結合イメージ

明細データの合計値を計算イメージ

文字変換、データ加工イメージ

このように
「データを一括で加工して、ほしい結果にする一連の行為」
これが「バッチ処理」なわけです。
「??」
ここで疑問がでてきたあなた!とてもするどいです!
Wikipediaの定義をよくみると、バッチ処理の反対語に「リアルタイム処理」とあります。
「データを一括で加工して、ほしい結果にする一連の行為」
これがバッチ処理の定義だとすると、
システム間でデータを加工しながら受け渡しをする処理はリアルタイムでもできてしまいます。
となると...リアルタイム処理もバッチ処理に入ってしまうのか..!?
こんなことを書いていると、
「バッチ処理は大量のデータを扱うからリアルタイムではない?」
とか
「リアルタイム処理は即時実行だからバッチではないでしょ?」
とか
こんな声が聞こえてきそうです。
真相をお伝えしますと
リアルタイムで実行されるプログラムも、実はバッチ処理です!
すでに書いたように
「データを欲しい結果にまとめて出す行為」
このことをバッチ処理と定義するならば
リアルタイム処理で受け渡すプログラムもバッチ処理です。
もう、頭の中がぐるぐるしている..
混乱してきた..
という方も、もう少しお付き合いください。
ここから、
「バッチ処理」と「リアルタイム処理」の切り分け
をしていきたいと思います。
バッチ処理とリアルタイム処理の特徴と違い
「バッチ処理」と「リアルタイム処理」との大きな違いのポイントは2つあります。
1.プログラムが実行される起点
2.プログラムの実行間隔の違い
この2つのポイントについてそれぞれ説明していきます。
1.プログラムの実行される起点による違い、切り分け
■リアルタイム処理
「処理対象のデータに対して何かしらのイベントが発生したら自動で処理する」
など、イベントを起点としてバッチ処理を動かす行為
■バッチ処理
「ある決められたタイミングで定期的に処理する」
など、バッチ処理が起動される行為
2.プログラムの実行間隔の違いによる切り分け
■リアルタイム処理
「数秒~数分」レベルの短いタイミングで定期的にプログラムを実行する場合
■バッチ処理
「1日に1回」「1か月に1回」「1年に1回」というように実行間隔が長く開き
定期的にプログラムを実行する場合
バッチ処理とリアルタイム処理の違いについて上記のように解説しました。ただ、実際は杓子定規でその違いについて考えることはできません。
今回の切り分けの中で、バッチ処理は「ある決められたタイミングなど定期的」に実行されるものと記載しましたが、数秒に1回、数分に1回実行される場合、時間軸で考えるとリアルタイムにデータを操作しているので、この処理を「リアルタイム処理」とすることもあります。

私もお客様と会話する中で
「バッチ処理とリアルタイム処理の軸は本当にさまざまだ!」
と日々感じている身です。
もし新しい切り分け方法がありましたら、コバヤシにも教えてくださいませ。
バッチ処理の基礎 まとめ
バッチ処理の基礎知識についてまとめますと、ポイントは3つあります。
バッチ処理の基礎、ポイントまとめ
バッチとは「データを欲しい結果データにまとめて一括で処理すること」である
バッチ処理とリアルタイム処理の特徴と違いは「バッチプログラムの実行される起点」である
バッチ処理とリアルタイム処理の違いは、バッチプログラムの実行タイミングの「長短」で区分けされる場合もある
簡単ではありますが、バッチ処理の考え方と処理イメージについて解説してみました。
バッチ処理にまつわるオススメ資料

データ連携/バッチ処理の要件で、開発方法を検討する際に役立つ資料です。設計・開発・テストのフェーズに分け、スクラッチとETLツールでの開発生産性を比較。スクラッチ開発による 属人化 や ブラックボックス化が引き起こす様々な課題を、ETLツールで改善するアプローチを解説し、費用対効果をご紹介いたします。
バッチ処理の成功事例をご紹介
あわせて読みたい記事
(※出典:Wikipedia「バッチ処理」 )
この記事を書いたスタッフ
小林 良平
小林 良平


