教育

いまさら聞けない「バッチ処理」とは?使う前におさらいしよう

いまさら聞けない「バッチ処理」とは?使う前におさらいしようのイメージ

「バッチ処理」という言葉を耳にしたことがある方もいれば、まったく聞いたこともないという人もいますよね。また、聞いたことはあるけどどういう意味か分からないという人もいらっしゃるでしょう。

「バッチ処理」とは、コンピュータのプログラムが仕事をするやり方のこと。

一般的には、プログラムの仕事のやり方はこの「バッチ処理」と「リアルタイム処理」に分類されます。しかしこの二つの処理方法、いったいどのような違いがあるのでしょう。また、それぞれどんな特徴を持っていてどのように使い分けられているのでしょうか。

そこで今回は、この「バッチ処理」の基本の「き」から、その特徴やメリットまでプログラム初心者の方にもわかりやすいように徹底解説します。

バッチ処理って何だろう

バッチ処理って何だろうのイメージ

「バッチ(=batch)」とは英語で「一束」や「一つにまとめる」といった意味を表す言葉です。つまり、「バッチ処理」とは、たくさんの処理を一つにまとめること、ということができます。

と言っても、あまりピンときませんよね?では、人間が行う具体的な例をもとに説明することにしましょう。

あなたはある会社で働いているとします。会社では、取引先や支店、支社などに日々たくさんの郵便物を送らなければなりません。しかも、送らなければならない郵便物が発生するタイミングはバラバラです。そんなたくさんの郵便物を、発生するたびに郵便局に持って行ったり、ポストに投函したりしていたのでは効率が悪すぎます。

でも、例えば毎日午後三時に、それまでに溜まった郵便物をまとめて郵便局に持っていくというルールを作ったとしましょう。そうすれば、郵便局に行くのは1日に1回でいいことになりますから、大幅に効率は良くなりますよね。

そう、プログラムの「バッチ処理」も、これと同様です。

日々、時々刻々と発生する膨大な数の処理をその都度行っていては、メモリやCPUなどのリソースを無駄遣いしてしまって効率が悪くなってしまいます。それを例えば、1日分の処理をある時間にまとめて行うというルールを作ってプログラムしてしまえば、1日1回の処理で済んでしまうのでリソースも有効に活用することができるでしょう。

実は身近なところにも「バッチ処理」は存在します。みなさんが毎日のように使っているPCやスマートフォン、ここにも実は「バッチ処理」は潜んでいるのです。

PCやスマートフォンを起動したとき、環境構築や各種設定、アプリケーションの自動実行などがバッチ処理されており、これらの処理は先ほども述べたようにメモリやCPUなどのコンピュータリソースを消費します。

ですから、起動して何かの作業を始めてから処理が始まると、作業の妨げになりかねませんよね。だから、起動したときにまとめてやってしまおうということなんです。

リアルタイム処理との違いは?

リアルタイム処理との違いは?のイメージ

ところでバッチ処理の反対は何でしょうか?それは「リアルタイム処理」と呼ばれるも。(インタラクティブ処理と呼ばれることもあります。)その名のとおり、リアルタイムでシステムに対して処理を行う方法です。

私たちが、日ごろPCやスマートフォンでアプリケーションを使って行っている処理はそのほとんどがこの「リアルタイム処理」であるといってもいいでしょう。例えば、買い物をしたときにレジでポイント使って買い物しようとしてアプリをスキャンすれば、すぐさまポイントが減りますよね。

これは紛れもなく「リアルタイム処理」です。

また、PCで表計算ソフトや文書作成ソフトを使って資料を作成し、保存すればすぐさまサーバ上やPC上に記録されますよね。これもリアルタイムに処理が行われているからこそできることです。

「まとめて処理しちゃいましょう」というバッチ処理とは異なり、「その都度ちゃんと処理しましょう」というのが「リアルタイム処理」なのです。

ではなぜこのように2つの処理が存在するのでしょうか?「効率がいいのならば全部バッチ処理にしちゃえばいいのに」と考えてしまいますよね。

でも待ってください。先ほどの例に挙げたポイントカードアプリのことを思い出してください。ポイントを使ったという処理をバッチ処理にして、毎日深夜0時に処理したとします。すると、もう使ってしまったはずのポイントが深夜0時まで残ったままになってしまいます。これは、ポイントというシステムの性格上非常に都合が悪いですよね。ですから、ポイントを使ったという処理はたとえ効率が悪くともリアルタイムに処理する必要があるのです。

一方、買い物をしてポイントがたまるときのことを思い出してみてください。「買い物したはずなのにすぐにポイントが増えていない」という経験をしたことはないでしょうか。ポイントが付くのは時間がたってから、というのはよくあることですよね。しかしポイントが増えることに関してはたとえ少し時間差があったとしても、多少利便性が悪くなるものの決定的な不都合が生じることはありません。ですから、ポイントの付与はバッチ処理で行われる場合があるのです。

まとめると、「急がないからまとめて処理しちゃいましょう」というのがバッチ処理、「急いでるから効率悪いけどその都度処理しなきゃ」というのがリアルタイム処理となります。

バッチ処理を使うメリットとは

バッチ処理を使うメリットとはのイメージ

2つの処理の違いについて説明してきましたが。、バッチ処理を使うとどんなメリットがあるのでしょうか。

時間や場所にとらわれない処理

バッチ処理は、一定の処理をまとめて自動で行います。ですから、オペレーターが居合わせる必要がありません。大量の処理を深夜のコンピュータリソースに余裕のある時間帯などにまとめて行ったりします。

大規模なデータ処理に有効

その都度処理するリアルタイム処理では到底追いつかないような大量のデータも効率的に処理することができます。

コンピュータリソースの有効活用

先ほども述べたように、まとめて処理することによってコンピュータリソースを最大限に活用することができます。ですから、投資対効果という観点からもバッチ処理は非常に有効。

ヒューマンエラーの排除

バッチ処理は基本的に、プログラムされたとおりに処理されるため、入力ミスなどといったヒューマンエラーが発生しません。データの処理において、ヒューマンエラーは大きなロスとなりますので、データ量が多くなればなるほどバッチ処理は大きなメリットを発揮するのです。

バッチ処理を使う時に注意すること

バッチ処理を使う時に注意することのイメージ

先ほどのポイントカードのポイント引き去りの例でも説明しましたが、即時にデータが反映されなければ不都合が生じるというケースには、バッチ処理は適していません。これは、バッチ処理を検討する際に必ず注意しなければならない点です。

また、まとめて処理するからと言っても限度があります。

昨今ビッグデータの活用が叫ばれ、企業などで扱うデータの量も指数関数的に増えてきています。いくらバッチ処理するといってもデータの量が増えてしまうと、これまで深夜の時間帯に終わっていたものが、極端な例では朝になっても終わらないということも考えられるのです。

ですから、バッチ処理を検討する際にはデータ量の増加についても考慮する必要があります。

そしてもう一つ。

バッチ処理は多くの処理を一括で行うので、プログラムがブラックボックス化したり複雑化してしまう恐れがあります。

そのためメンテナンスが難しく、情報システム担当者が変わった際などに確実な引継ぎが欠かせませんので注意しましょう。

 

コンピュータのイメージ

今回は、「バッチ処理」について、その特徴やメリット、注意すべき点などについて詳しく説明してきました。

「急がないからあとでまとめて処理しちゃいましょう」というのが「バッチ処理」。一方で、「急いでるから効率悪いけどその都度処理しなきゃ」というのが「リアルタイム処理」でした。

バッチ処理はメモリやCPUといったコンピュータリソースを有効に活用することができるので、即時性を求めないのであれば基本的にはバッチ処理にするのが効果的です。ですが、ビッグデータを処理する場合などは、いくらバッチ処理といっても処理が遅延する恐れがあることは注意しておかなくてはなりません。

バッチ処理なんて聞いたこともない、聞いたことはあるけど何のことかさっぱりという方も、これで少しはバッチ処理について理解が深まりましたよね。それでは今度はぜひバッチ処理を活用してみましょう。

トップへ戻る
タイトルとURLをコピーしました