スタイル・エッジLABO技術ブログ

士業集客支援/コンサルティングのスタイル・エッジグループ スタイル・エッジLABOのエンジニアによるブログです。

バッチ処理について

はじめに

はじめまして!スタイル・エッジLABOのKKです!
昨年7月に中途入社し、ドキドキワクワクなエンジニアライフも7ヶ月目に突入しました。
本当に、早いものです。

私は未経験でエンジニアデビューしたので、最初の3ヶ月は有り難いことに、学び多き研修用Webアプリを作らせていただきました。
その後、プロジェクト配属時に意気揚々と「まずはバックエンドの処理を書けるようになりたいです!(かっこいいから..)」と話し、数あるプロジェクトの中でもバックエンド色の強いプロジェクトに配属され、日々切磋琢磨して取り組んでいます。

そんな中でも私が、かっこいい!便利!と感じる機能が「バッチ処理」です✨

初めは「バッチ処理とは..」となっていた私ですが、今ではその威力を感じる毎日です。

今回は、そんな私が普段扱っている、バッチ処理について紹介していきます!

バッチ処理とは

そもそもバッチ処理とは何か、について書いてみます。
まず"バッチ(Batch)"には「一束、一群、一回分、一団」という意味があります。
つまり、バッチ処理とは、「一定量のまとまったデータを集め一括処理」することなのです。

大量のデータに対して処理が走るので、コンピュータのリソースを圧迫して操作に支障をきたすことを防ぐため、夜間に動くものが多いです。

身近なバッチ処理でいうと、銀行の夜間バッチなどが挙げられます。
通常、ATMでお金を預け入れるような単体処理の場合、即座に反映されますが、企業の給与振り込みや企業間取引などは、膨大なデータを扱うため夜間バッチとして行われています。

今私が所属しているプロジェクトでも、夜間に大量のデータを取り込み、一定のロジックに沿って分析業務などを行なっています。

バッチ処理のメリット

ここからは、バッチ処理の良いところを書いていきます。

タスクスケジューリングによって処理を予約できる

バッチ処理の最大のメリットは、あらかじめ決められた時間に決められた処理を自動で実行可能なことです。

そのため、一度ロジックを作ってスケジューリングすれば、そこに人員は必要ありません。

例えば、 「○月●日の△時▲分に処理Aを実行する」のように特定の時間に実行させることもできれば、「毎週月曜日の深夜1時に処理Cを実行する」のように定期的に実行させることもできます。

大規模なシステムではこの方法で、人が動かない深夜帯などに処理を実行させているのですね!

また特に大量のデータを扱う処理であれば、人が操作するのは時間がかかりすぎて現実的ではないため、効率的に処理を行う上で、バッチ処理は欠かせないものです。

f:id:styleedge_tech:20220114182101p:plain

ヒューマンエラーが排除できる

通常、人がデータ処理を行うと、データの数が多いほどミスする可能性も上がってしまいますが、バッチ処理では全てのデータが決められた順番で処理を通っていくため、処理を正しく書けてさえいれば、人為的な操作ミスは起こらなくなります。

f:id:styleedge_tech:20220114182222p:plain

バッチ処理のデメリット

処理内容がブラックボックス化しやすい

私が思うバッチ処理のデメリットは、処理内容が複雑になり、ブラックボックス化しやすいことです。

大量のデータであるほど、全てのデータが全く同じ処理を通るのではなく、データの種類によって条件分岐をし処理を分けることが多いです。

また全自動で実行されるので、開発担当者しかシステムの全容を把握していない、というパターンも起こる可能性があります。

そのためスタイル・エッジLABOでは、そのロジックが誰でもわかるような設計書を作り、わかりにくいところはプログラムだけでなく、設計書も改良していくことを大切にしています!! 😎

エラーによってデータ処理が完了しないことがある

先にも述べたように、バッチ処理は重くなりやすいため、人が操作しない深夜帯などに実行されることが多いです。

ただ深夜帯に行えば全て問題ない訳ではなく、処理時間が長く、システムに負担がかかることも事実です。

そのため、SQLの書き方やアプリケーションの構造によっては、深夜帯にエラーが起きて全ての処理が完了していなかった、なんてことも起こり得るのです。

そのためスタイル・エッジLABOでは、業務で利用するチャットにエラー通知が届くようにしており、早期発見のための工夫をしています。

このように、バッチ処理を扱う際にはただプログラムを書くだけではなく、突然のエラーに常に備えている必要があります。

この辺りの対策はまだまだ私も勉強中ですが、日々システムに触っている中で、「こういう書き方をすると、データ量が多い時にエラーが起こる可能性があるんだ!」と、学んでいます!

最後に

今回は私が普段扱っているバッチ処理について書いてみましたが、いかがでしたでしょうか?
バッチ処理はとても便利で業務効率を上げてくれる反面、ブラックボックス化しやすいため、コード内に補足説明を入れることや、分かりやすい仕様書を作成して日々更新していくこと、が大切だと思っています。💪

またただ動くコードを書けばいいわけではなく、突然のエラーを起こさないための書き方やシステムのメンテナンスも必要になってきます。

とはいえ、バッチ処理は様々なシステムでその威力を発揮しています。

それくらい求められている方法ということですね!✨

システムを長く快適に使えるために、このバッチ処理を活用しながら、これからも改善を繰り返していきます!

☆スタイル・エッジLABOでは、一緒に働く仲間を募集しています☆
もし興味を持っていただけましたら、採用サイト↓も覗いてみてください!

recruit.styleedge-labo.co.jp