Home
Get Started
実践ガイド
外部仕様設計
バッチ処理仕様設計
UAC 仕様設計
データ仕様設計
インフラ設計
移行計画
テスト方針・計画
開発プロセス・規約
バッチ処理共通仕様
バッチ処理の実行基盤からログ出力、エラーハンドリング、通知までを標準化し、開発チーム全体で一貫性のある実装を実現するための共通仕様を定義します。
🎯 概要
- 目的: バッチ処理全体に共通する実行基盤、ログ出力、エラーハンドリング、通知の仕様を標準化し、各バッチ開発者が一貫性のある実装を行えるようにする
- スコープ: バッチ実行環境、共通処理フロー、ログ出力、エラー処理、リトライ、通知の仕様をカバーする。個別バッチの業務ロジックは対象外
- 推奨する実施タイミング: 基本設計の初期段階で、個別バッチ設計に先立って実施する
- 関連するステークホルダー: アプリケーション開発チーム、インフラチーム、運用チーム、システムアーキテクト
📥 重要な前提知識・インプット
- 前提知識: バッチ処理の基本概念、スケジューラーの仕組み、ログ管理、エラーハンドリング、トランザクション制御
- インプット: バッチ処理要件一覧、非機能要件(処理時間、リトライ仕様)、インフラ構成、運用要件、既存バッチの実装方式
📄 成果物の定義
- ドキュメントテンプレート: 📄
[テンプレ]バッチ処理共通仕様書
- 必須要素: 実行環境仕様、共通処理フロー図、ログ出力仕様、エラー処理方針、通知仕様、リトライ仕様、バッチ処理一覧、バッチ依存関係図
✅ 品質基準・レビュー観点
✅ 品質チェックリスト:
| チェック項目 | チェック内容 |
|---|---|
| 実行環境の明確性 | 実行サーバー、ユーザー、スケジューラーが具体的に定義されているか |
| ログ出力の網羅性 | 開始・終了・エラー時のログ出力が定義されているか |
| エラー処理の妥当性 | エラー種別ごとの対応方針が明確か |
| 通知設計の適切性 | 異常時の通知先・通知内容が具体的に定義されているか |
| 依存関係の整理 | バッチ間の実行順序と依存関係が明確か |
👁️🗨️ レビュー観点:
- 要件との整合性: バッチ処理要件と非機能要件が仕様に反映されているか
- 運用性: 障害発生時の通知・ログ・リトライの仕組みが運用チームにとって十分か
- 保守性: 各バッチの実行タイミング・依存関係が明確で、メンテナンスしやすいか
- 標準化: 全バッチで一貫したログ出力・エラー処理の方針が適用されているか
🧪成果物のサンプル
# バッチ処理共通仕様
## 実行環境
| 項目 | 仕様 |
|-----|------|
| 実行サーバー | [バッチサーバー名/環境] |
| 実行ユーザー | [実行アカウント] |
| スケジューラー | [cron/TaskScheduler/その他] |
| ログ出力先 | [ログファイルパス] |
| 一時ファイル格納先 | [一時ディレクトリパス] |
## 共通処理フロー
```mermaid
graph TD
A[バッチ起動] --> B[開始ログ出力]
B --> C[パラメータチェック]
C --> D{パラメータ正常?}
D -->|異常| E[エラーログ出力]
E --> F[異常終了]
D -->|正常| G[業務処理実行]
G --> H{処理結果}
H -->|成功| I[成功ログ出力]
H -->|エラー| J[エラーログ出力]
I --> K[正常終了]
J --> L[異常終了]
K --> M[終了ログ出力]
L --> M
```
## ログ出力仕様
| ログレベル | 出力タイミング | 出力内容 |
|----------|------------|---------|
| INFO | バッチ開始時 | バッチ名、実行日時、パラメータ |
| INFO | バッチ終了時 | 処理件数、処理時間、終了ステータス |
| WARN | 警告発生時 | 警告内容、発生箇所 |
| ERROR | エラー発生時 | エラー内容、スタックトレース、発生箇所 |
## エラー処理方針
| エラー種別 | 対応方針 |
|----------|---------|
| システムエラー | 即座に処理中断、管理者へメール通知 |
| データエラー | エラーレコードをスキップして処理継続、エラーログに記録 |
| リトライ可能エラー | 最大3回リトライ、失敗時は異常終了 |
## 通知仕様
| 通知条件 | 通知先 | 通知方法 | 通知内容 |
|---------|-------|---------|---------|
| 異常終了時 | システム管理者 | メール | バッチ名、エラー内容、発生日時 |
| 処理件数0件時 | 業務担当者 | メール | バッチ名、実行日時、警告メッセージ |
| 処理時間超過時 | システム管理者 | メール | バッチ名、処理時間、閾値 |
## リトライ仕様
| 項目 | 仕様 |
|-----|------|
| リトライ対象エラー | 一時的なネットワークエラー、DB接続エラー、外部API一時障害 |
| 最大リトライ回数 | 3回 |
| リトライ間隔 | 初回: 30秒、2回目: 1分、3回目: 3分 |
| リトライ失敗時の対応 | 異常終了、管理者へメール通知 |
--- 🔄 設計の進め方・プロセス
🏗️ プロセス1: 実行環境とスケジューリング仕様の定義
設計対象:
バッチ処理を実行する環境(サーバー、実行ユーザー、スケジューラー)と、各バッチの実行タイミングを決定する。
具体例:
- どのサーバーでバッチを実行するか(バッチ専用サーバー、アプリケーションサーバーと共用など)
- どのOSユーザー・アカウントで実行するか
- スケジューラーは何を使うか(cron、Windows Task Scheduler、ジョブスケジューラー製品など)
- 各バッチの実行タイミング(日次、週次、月次、特定時刻など)
- バッチ間の実行順序と依存関係
設計原則:
- 実行時間帯の分散: 複数バッチが同時実行されないよう、処理時間を考慮して実行時刻を分散させる
- 業務への影響最小化: オンライン処理のピーク時間を避け、深夜・早朝など業務影響の少ない時間帯に実行する
- 依存関係の明確化: 前バッチの完了を待つ必要がある場合は、依存関係を明示し実行順序を制御する
- リソースの分離: バッチ処理専用のリソース(CPU、メモリ、ディスク)を確保し、オンライン処理への影響を防ぐ
文書化の推奨表現:
- 実行環境仕様表: サーバー名、実行ユーザー、スケジューラー、ログ出力先、一時ファイル格納先を表形式で整理する
- バッチ処理一覧: 各バッチのID、名称、処理概要、実行タイミング、想定処理時間、優先度を一覧化する
- 依存関係図: Mermaidなどで依存関係を視覚化し、実行順序を明確にする
🏗️ プロセス2: 共通処理フロー・ログ出力・エラー処理の標準化
設計対象:
全バッチで統一する共通処理フロー、ログ出力ルール、エラー処理方針を定義する。
具体例:
- バッチ起動時・終了時に何をログ出力するか
- ログレベル(INFO、WARN、ERROR)ごとの出力基準
- どのようなエラーでリトライするか、何回リトライするか
- エラー種別(システムエラー、データエラー、ネットワークエラー)ごとの対応方針
- パラメータチェック、トランザクション制御の共通化
設計原則:
- トレーサビリティの確保: バッチの開始・終了・エラー発生を確実にログに残し、運用時の追跡を容易にする
- 一貫性の確保: 全バッチで統一されたログフォーマット・エラー処理を適用し、運用の複雑性を低減する
- 障害対応の迅速化: エラーログにスタックトレース・発生箇所を含め、原因特定を容易にする
- リトライの適切な制御: 一時的障害はリトライで復旧を試み、恒久的障害は即座に通知して対応を促す
文書化の推奨表現:
- 共通処理フロー図: Mermaidで起動→パラメータチェック→業務処理→ログ出力→終了の流れを図示する
- ログ出力仕様表: ログレベル、出力タイミング、出力内容を表形式で定義する
- エラー処理方針表: エラー種別ごとの対応方針(即座に中断、スキップして継続、リトライなど)を明記する
- リトライ仕様表: リトライ対象エラー、最大回数、リトライ間隔、失敗時の対応を定義する
🏗️ プロセス3: 通知仕様と監視方式の定義
設計対象:
バッチ異常時の通知先・通知方法・通知内容と、バッチ処理の監視方式を決定する。
具体例:
- どのような状況で誰に通知するか(異常終了時→システム管理者、処理件数0件時→業務担当者など)
- 通知方法は何を使うか(メール、Slack、監視ツール連携など)
- 通知内容に何を含めるか(バッチ名、エラー内容、発生日時、ログファイルパスなど)
- バッチの実行状況をどう監視するか(ジョブ管理ツール、ログ監視、死活監視など)
設計原則:
- 責任の明確化: 通知先を役割ごとに分け、システム管理者と業務担当者で適切に振り分ける
- 迅速な初動対応: 異常発生時に即座に通知し、障害対応の遅延を防ぐ
- 通知疲れの回避: 重要度の低い通知を乱発せず、本当に対応が必要な事象のみ通知する
- 情報の十分性: 通知内容に原因特定・対応判断に必要な情報を含め、二次確認の手間を減らす
文書化の推奨表現:
- 通知仕様表: 通知条件、通知先、通知方法、通知内容を表形式で整理する
- 監視項目一覧: バッチの実行状況、処理時間、エラー発生の監視方法を明記する
- エスカレーション方針: 一次対応者が対応できない場合の連絡先・手順を定義する
🚨 よくある失敗と予防策
🚧 実例収集後、追記予定
📚 参考資料・関連リンク
- 参考文献: 『エンタープライズアプリケーションアーキテクチャパターン』(バッチ処理パターン)、『信頼性の高いシステム設計』
- 関連する他のガイド: 📄
アプリケーション共通処理方式、データベース設計ガイド、運用設計ガイド、ログ設計ガイド
- ツール・テンプレート: Mermaid(フロー図作成)、cron式ジェネレーター、ログ分析ツール
テンプレートサイト: 📄テンプレート集