バッチ処理の身近な活用法とは。基本的なやり方からマスターしよう

情報処理において、とても大きな役割を担う『バッチ処理』は、生活の身近なところでも利用されているのはご存じでしょうか?バッチ処理の概要や、活用シーンについて解説します。また簡単なバッチ処理の作り方も紹介しますので、利用してみてください。

バッチ処理とは何か

『バッチ処理』は、わたしたちの仕事や暮らしを成り立たせる上で多くの場所で使われています。バッチ処理がどのようなものなのか、まずは概要から入っていきましょう。

大量のデータをまとめて処理できる

バッチは英語の『Batch』が由来で、『一束、一群』などの意味を持っています。バッチ処理を一言で表すと『一定量にまで蓄積したデータを一括処理するための方法』です。

バッチに登録した一連のプログラムや、ファイル転送コマンドなどを順番に実行してデータの蓄積や処理を行います。

店舗で売上管理する場合の利用方法

よくある利用方法として売上管理があります。その日のお店の売上げを勤務中にいちいちカウントするのは手間がかかりますし、コンピューターに負荷がかかってしまいます。1日に1回、閉店後に処理するようにします。

このように随時計算しておく必要のないデータ処理を、後でまとめて行うためのプログラムがバッチ処理です。現在は、店舗や企業があらゆるシーンで利用しています。

バッチファイルを作成し、実行する

バッチ処理の主な方法は『バッチファイルを作成して実行する』という手順を踏むことです。

バッチファイルというのは、バッチで使う命令文を羅列したもののことで、『cmd』もしくは『bat』の拡張子が使われます。

先の売上処理の例で言えば『ジャンルごとに集計する』『差額を計算する』『合計売上を計算する』『データを送信する』など、やらなければならない処理(コマンド)が複数あるでしょう。

これらの複数のコマンドを1ファイルにまとめ、決められた条件で実行するのが、バッチ処理を使う流れです。

バッチ処理は『コマンドプロンプト』もしくは『エクスプローラー』で実行するという2通りの方法があります。

バッチ処理のデメリット

バッチ処理は大量のデータを処理するのには便利ですが、性質上いくつかのデメリットがあります。

まず、データをリアルタイムで集計するのには不向きです。買い物で言えば、お客さん一人ひとりの購入した商品の集計や処理には、バッチ処理は利用できません。

加えて、データを逐一確認できないことから、プログラムの担当者しかバッチの中身がわからないといった問題も発生します。何か問題が起こった場合、担当者不在の際には対応が遅れてしまうのです。

データ量があまりに多すぎると処理が遅くなってしまうこともあり、その結果、予定されていた時間になっても処理が終わらず、後の業務に差し支えるといったことも発生する恐れがあります。

バッチ処理の活用シーンはさまざま

バッチ処理がどのような用途で利用されるか、代表的なものを取り上げていきましょう。

在庫管理

バッチ処理は『在庫管理』でよく利用されています。例えば、物流センターの倉庫のような場所では毎日、大量の仕入れと出荷を行います。仕入れと出荷の数が合っているか、現状の商品ごとの在庫数や配置場所などは、一つずつカウントしていくわけにもいきませんから、バッチ処理で行うのがおすすめです。

倉庫以外にも、身近な場所ではコンビニや飲食店、その他さまざまな場所の在庫管理にバッチ処理は活用されています。

テストの自動化

プログラムを開発する上では、エラーが発生しないようにテストを行います。また、プログラムが想定通りの動作を行うかといったこともテストをしなければなりません。

テストでは膨大な工程を何パターンも行わなければならないこともあり、人の手で行うのはあまりに大変です。そこでバッチ処理を活用して、テストを自動化することで手間を削減する試みが行われています。

すでに設計段階からテストを行うことで、早い段階で問題点などを発見し、より高度なシステムを組むことにつなげるのです。

銀行の夜間バッチ

日中にバッチ作業を行うと、それだけでコンピューターのメモリの大部分を使用してしまい、本来の業務に支障をきたすことがあります。

そこで、業務を終了した夜間にバッチ処理を行うのが『夜間バッチ』です。

夜間バッチが利用される代表的な例として銀行があります。ATMの利用などに支障をきたさないように、給与の振り込みや、企業間取引などの膨大なデータは、夜間バッチで行われます。

銀行の他にも、売上データや生産管理など、夜間バッチ処理を行っている企業は多くあります。

その他の処理との違い

バッチ処理以外にも、コンピューターで使う処理方式にはさまざまな種類があります。その他の処理との違いについて見ていきましょう。

リアルタイム処理

リアルタイム処理は、バッチ処理の対義語としてよく用いられます。一言で表せば『即座にデータ処理を実行する』処理方式のことです。ショップのレジや決済、ATMなどが該当します。

性質もバッチ処理とは真逆です。一つ一つのデータを即座に処理するのは得意ですが、大量のデータを1度に扱うことには向いていません。

リアルタイム処理とバッチ処理を組み合わせてデータ処理を行うシステムも多くあります。

シェルスクリプト

まずは『シェル』の意味について理解していきましょう。シェルは、人間がコンピューターに何か命令をするときに、それを仲介する役割を担うプログラムです。

シェルスクリプトとは、シェルを介したコンピューターへの命令(コマンド)を集めたもののことを言います。

コンピューターに命令を下して実行させるという点ではバッチと共通です。違いは、バッチがWindowsで使用するためのファイルなのに対し、シェルスクリプトはUNIX系で使うプログラムだという点です。

他のプログラミング言語よりも比較的簡単に扱えるのも、シェルスクリプトの大きな特徴と言えるでしょう。

Windowsでのバッチファイルの作成

Windowsでバッチファイルを作成する手順について解説します。計画の立て方から実行方法まで、一通りの流れについて知っておきましょう。

まずは計画を立てる

まずは、何のためにバッチファイルを作成するのか、計画を立てましょう。

どのデータを対象とするのか、どんなデータ処理を行うのかといった概要を決めておく必要があります。必要な時にその都度起動する『随時バッチ』として使うのか、それとも一定間隔ごとに起動する『常駐バッチ』として使うのかも重要です。

プログラムをどのように監視するのかといったセキュリティや制御の観点からも検討を行いましょう。

基本の作り方

バッチファイルはテキストで作成します。メモ帳でも作成は可能ですが、できればスクリプト向けのエディタを使うことを推奨します。バッチ用の総合開発環境などを利用すればさらに楽に作成できるでしょう。

計画に従ってコマンドを記載したら、ファイルを『.bat』の拡張子に変更してください。そのファイルをデスクトップやフォルダに配置した後、ダブルクリックをすれば、コマンドプロンプトが立ち上がり、スクリプトが実行されます。

タスクスケジューラで定期的に実行

タスクスケジューラとは、決められたプログラムを一定間隔で実行してくれる機能です。元々Windowsに導入されています。

タスクスケジューラを使うことで、決められた時間にバッチ処理を定期的に実行することが可能です。

タスクスケジューラの画面を開き、まずは『トリガー』を設定しましょう。トリガーはタスクを開始する条件のことで、毎日やPC立ち上げ時などの中から選ぶことができます。

次に『操作』のタグから『プログラムの開始』を選択し、対象プログラムに作成したバッチを設定すれば準備は完了です。決められた条件で、バッチ処理が実行されるようになります。

バッチ処理設計をする上でのポイント

バッチを設計する上でのポイントについて解説します。注意点や対策について、事前に知っておきましょう。

問題点は総合的に見直す

バッチ処理の問題点を見直す際には、データの保管場所、ネット環境、バッチスクリプトのスリム化など、見るべきところがいくつもあります。これらを総合的に見直すことが、バッチの問題点を解決する上では重要です。

データベースに蓄積されるデータは日に日に増えていきます。コマンドをスリム化するだけでは根本的な解決にならない場合がありますし、OSのバージョンとの互換性によってエラーが発生することもあります。

総合的な要因から問題点を検証していくことが重要と言えるでしょう。

ログの出力設定は重要

プログラムにおいて、ログの出力設定は非常に重要です。バッチ処理においても、それは例外ではありません。

エラーが発生した場合には、どのコマンド実行の中で、エラー発生したかを究明しなければなりません。ログが残っていれば、そこから原因を絞り込むことができるため、復旧が早くなります。

またログと一口に言っても、OSが吐き出したログなのか、それともバッチが吐き出したものなのかなど、一つの処理でもいくつかの種類があります。

どこから出力されたログなのかを、バッチの実行単位で生成できるような仕組みを作りましょう。

突き抜け発生時の対策を

バッチ処理が予定の時間に終わらないことを『突き抜け』と言います。突き抜けは、重大なトラブルの原因となることがあります。

夜間バッチの場合、昼間に実行すると業務に支障をきたしてしまうような重い処理を、夜間の誰もいない時間に行うことに意義があるものです。しかし、突き抜けが発生し、翌日の開店時間までに終わらないとなると、昼間の業務実行に障害が発生します。

実際に日本でも、とある金融機関が突き抜けによって翌日の業務に支障をきたし、ATMなどが利用できなくなるといった問題が発生したことがあるのです。

突き抜けを防止するには、普段からの対策が重要になります。データベースに蓄積されるデータは放置しておけばどんどん大きくなっていきます。データ量に合わせてストレージをスケールアップするなど、バッチ処理を高速で行えるようなソリューションを導入していきましょう。

バッチ処理やデータベースの管理を特定の担当者に任せないといった、ブラックボックス化の防止も重要です。

Photoshopで大量の写真をバッチ処理

Photoshopには、大量の画像を同じように加工したり、形式を変換して保存したりといったバッチ処理のように動作する機能がいくつか用意されています。

Photoshopで自動処理をする機能として『イメージプロセッサー』『バッチコマンド』『ドロップレット』の3つを紹介します。

イメージプロセッサー

Photoshopで画像の形式を一括変更するには『イメージプロセッサー』という機能を利用するのが便利です。複数のファイルに対して同時に変換する処理を行う機能です。次のような操作ができます。

  • JPEG・PSD・TIFF の各形式に変換。もしくは3つすべての形式に同時変換
  • 画像のサイズ変更

選択した画像に対してイメージプロセッサーを実行するだけで、上記のような操作を一括で実行してくれます。設定内容を保存しておけば、次回からも同じ処理を自動で実行できますので、バッチ処理としての役割を果たすのです。

バッチコマンド

Photoshopの『アクション』という機能を使うと、特定の操作を記録できます。次回も同じ操作をしたいときに、アクションを起動するだけで、記録した操作を自動的に実行してくれます。

Photoshopの『バッチ』コマンドを使用することで、記録したアクションを、特定のフォルダ内の画像すべてに対して一括で実行できます。

ドロップレット

Photoshopの『ドロップレット』の機能を使えば、アクションの実行がさらに簡単になります。

その名の通り、ドロップレットのアイコンの上に画像やフォルダをドラッグ&ドロップすることで、ドロップされた画像すべてに自動処理を施せるという機能です。

ファイルメニューにある『自動処理』→『ドロップレットを作成』の順に選択し、条件を入力していきましょう。終了するとデスクトップにドロップレットアイコンが作成されます。

画像ファイルや画像の入ったフォルダを、このアイコンの上にドラッグ&ドロップするだけで、設定したアクションが実行されます。

出典:ファイルのバッチ処理

まとめ

バッチ処理は大量のデータ処理を一括で行うプログラミング方式です。飲食店をはじめ物流センターなど、身近な企業やお店で多く利用されています。

Windowsを使って簡単に作成可能で、Photoshopでの画像加工などもバッチ処理によって自動操作が可能です。

ただし、蓄積するデータが大きくなりすぎるとデータ処理が想定内の時間に終わらなくなり、突き抜けなどのトラブルの原因になります。そういった要因を防止するためにも、日頃から対策をしっかり練っておくことが重要です。

この記事をシェア

関連記事


副業・フリーランス

プログラミング

デザイン

インタビュー

お金

採用・組織

転職

イベントレポート