Edited at

【設計時の見落とし】バッチ系とシステム系の考慮について


はじめに

これは設計時の見落とし Advent Calendar 2018の25日目の記事となります。

業務アプリケーションの設計をするときに、見落としがちなところに焦点をあてて紹介します。

下流工程からの手戻りを少なくして 双方の負担を減らしましょう。

バッチ系とシステム系について書いてみます。ただ元記事が10年前なので今となっては古いところがあるかも知れません。


これまでの記事一覧


バッチ系


バッチ系の考慮点


  1. いつ行うか(日次/週次/月次の処理頻度)

  2. どの程度処理に時間がかかるのか(1回当たりの処理件数)

  3. バッチ処理中はその期間内のデータ更新を不可としているか

  4. 許容時間より処理がかかった場合はどうするのか

  5. DB更新ならCommitする単位(件数)をどうするのか

  6. ログ出力が考慮されているのか(異常箇所の把握)

  7. 異常終了した場合の再実行の考慮をしているか(運用含め)

    再実行する場合、データ全体を処理前に戻して再実行する方法と、異常終了した時点から再実行する方法があります。

  8. 仮処理(締め前に現在の集計結果をみたい)でバッチを流すことも考慮する(完了フラグを更新するかしないかの違い)

バッチの場合、バインド変数を使わずリテラルSQLにした方がいい場合もあります。

【Oracle】クエリパラメータ(バインド変数)を使うとパフォーマンスが悪くなることもあるバインドピーク問題


日次バッチ


  • 事前の入力が完了しているかどうかチェックする。

    入力が未完了なのに、集計しても意味がありません

  • 二重実行かどうかチェックする。

    一日に二回実行すると二回集計されてしまい、倍の値が 入ってしまうのでは意味がありません。


月次バッチ・年次バッチ


  • 月に一度や年に一度の処理は忘れやすいので、忘れていることに気が付くような工夫があるといい。

  • 事前の処理が完了しているか(月次バッチ未完了で年次バッチの処理はしてはいけない)

  • 許容時間にかぎりがあるので、計算結果だけ専用テーブルに格納するなどの考慮するといい。


システム系


マスタの考慮点


  • マスタ名に正式名と略名をもたせた場合に使い分けをはっきりさせる。

  • マスタのある項目をある時をもって変更した場合に、 過去のデータを参照すると最新のマスタ内容で出力される。

マスタの履歴を考慮するとか、変更されることが考えられるマスタはトランデータにマスタの内容ごとセットするとかの考慮が必要。

マスタを変更すると過去のデータを参照した場合も、最新のマスタ内容で出力されることをユーザーに周知しておく必要がある。


採番の取得

採番する単位をどうするのか?

所属ごと分けるのか、全社共通とするのかなど


採番の飛び番の発生の確認

伝票番号など飛び番があると、あとで問題になることがあります。

例外エラーの発生等により飛び番で作成されてしまう場合がありますので、ユーザーに了解を得ておく必要があるかと思われます。

ログなどで追える考慮は必要かもしれませんね。

※上場企業では伝票番号の飛び番は許されません、不正があると思われるため


途中登録の考慮

途中登録をどうするのか?

例えば見積入力画面では「保存」、「確定」の2つの状態が存在する。

業務担当者が忙しいなどの理由で完全な情報として登録出来ない場合には「保存」を行いデータベースに書き込む、この状態の場合には見積りとして確定させない。


戻し処理の確認

順序を追って処理する場合、登録した行為を戻す処理を考えておく。

≪例≫


  • 受注して出庫した後の戻し

  • 売上を計上した後の戻し

  • 請求書を発行したけど、間違えてたから戻して再処理

どこまでシステムで対応するか、どこまで手で対応するか?

それとも放置なのか?


アクセスログの確認

アクセスログをどの単位で、どこまでとるのか?

個人情報保護により調査する必要性も考慮し、かつ、アクセスログを取ることで動作が遅くならないか・・・などなど


システム運用の確認


  • データの保存期間はどのくらいとするのか
    何年間まで保存するのかユーザに確認しておく

  • サーバ機器電源のオン/オフ操作・データバックアップ処理(容量、サイクル等)

  • ウィルスを検知するパターンファイルのダウンロード

  • 配布・ウィルス検知処理・Windows Updateの更新


その他


  • DB名や変数名などのローマ字使用

    訓令式かヘボン式のどちらからに統一させる

  • システム日付の統一

    DBを使うなら、DBのシステム日付に統一する。

  • 伝票の修正伝票の打ち間違い処理方法

    赤伝票を発行して調整する。

  • コードの始値の統一

    区分など項目値は0からか、1から始めるのか

    0:しない / 1:する

    1:する / 2:しない


最後に

設計時の見落とし Advent Calendar 2018の最後の記事でした。

参加して頂いた皆様ありがとうございます。

最後の3日くらいは箇条書き状態になってしまいました。本来はもっと一つ一つに焦点をあてて記事を書ければ良かったのですが、まだ至らないところです。

設計時の見落としについては、ネタがあればたまに書いていきたいと思っています。