よく使う機能を汎用化して共通利用するのはプログラミングの基本です。開発や保守の工数も減りますし、類似機能を複数持つことによるバグも防げます。
とはいえ私は初めて共通機能を設計したときに、どんな機能を切り出せばいいのか最初はピンときませんでした。
本記事では、インターフェース設計を進める中で共通機能として切り出したもののサンプルを紹介します。
環境設定
共通機能と呼ぶのはおおげさかもしれませんが、複数のプログラムで利用するものは環境設定ファイルで一元化します。
以環境設定ファイルに書くものの例は以下の通りです。
- バッチジョブ名
- ディレクトリ名(ルート、実行プログラム格納先、ログ出力先)
- サーバ情報(接続文字列、ID、パスワード)
ファイル移動処理
FTP転送されたファイルの到着確認や受信フォルダからの移動を行います。
- ファイル名を引数に到着チェック
- ファイルの種類に応じた処理(コピー、移動)を行う
- ファイルの存在有無に応じた返り値を設定する
- 返り値によっては監視アラート出力を行う
- ログ出力を行う
ヘッダ、フッタ情報処理
ファイルに含まれるヘッダとフッタレコードを処理します。
- 対象ファイルのヘッダに記載された基準日と、フッターに記載された件数を読み込み、テーブルに登録
- ヘッダ、フッタを削除
ワークテーブルへのロード処理
OracleのSQL*Loaderのようなロードユーティリティを使ってワークテーブル(一時テーブル)にデータを取り込みます。
- 受信ファイル到着チェック
- badファイル確認
- badファイル削除
- ロード(CTLファイルと取込ファイルを引数に指定)
- ログ出力
ワークテーブルのロード結果確認処理
ワークテーブルにロードされた件数とロード元ファイルの件数に差異がないか確認する。
PL/SQL起動処理
PL/SQLプログラムを起動する。
- 受信ファイル到着チェック
- PLSQL起動
- PLSQLファイルがない場合、PLSQLの警告・異常終了の場合にアラート通知する
- ログ出力
受信ファイルリネーム処理
固定のファイル名で受信したファイルを上書きされないようタイムスタンプなどを付与する処理。
前回テーブル更新処理
前回処理からの差分データを抽出するための前回データ保存テーブルのデータを更新する処理。
終わりに
当たり前に見えるものもあったかもしれませんが2つ以上のプログラムで使用しそうなものは他でも使う可能性はありえます。
後から置き換えるのは手間がかかりますので面倒がらずに共通機能として切り出していくことをおすすめします。