Appendix A: チェックリスト
本書で扱う「要求→要件→仕様→設計→テスト」を、作業漏れなく進めるための最小チェックリストです。プロセスの厳密さではなく、意思決定の一貫性を優先します。
A-1. 要求/要件/仕様(設計入力)のチェック
- 要求(Needs/Goals)が、要件(Shall)と仕様(Behavior)に変換されている
- To-Be(あるべき姿)と As-Is(現状)の差分が説明できる
- スコープ内/外(やらないこと)が明記されている
- 仕様(受け入れ条件)が検証可能な形式で定義されている
- 非機能の最小合意(性能/可用性/セキュリティ/運用)が定義されている
- 重要な例外系(権限、競合、失敗時、監査)が列挙されている
A-2. 設計(境界・結合)のチェック
- 依存関係トップ 10 を列挙できる(複雑性の焦点がある)
- 結合を S/D/V で説明できる(感想ではなく指標)
- 境界(責務の分離点)が言語化されている(なぜそこか)
- コア(純粋ロジック)が I/O に依存していない
- 境界を跨ぐ契約(型/DTO/インターフェース)が明確
sharedに相当する領域が肥大化していない(責務が曖昧になっていない)- 公開API(外部に漏れる契約)がどこか説明できる(UI/API/DBスキーマ等)
A-3. テスト(配分・導線)のチェック
- 価値導線(ユーザー価値)に E2E が割り当てられている(少数精鋭)
- 境界(API/DB/認可/外部連携)の契約が統合テストで検証されている
- コアの重要ロジックが単体テストで守られている
- テストが実装詳細に過度依存していない(変更耐性がある)
- 不安定要因(時刻、乱数、外部I/O)が制御可能になっている
- テストの目的が 4 本柱(価値/保守性/壊れにくさ/速度)に接続している
- E2E の増やし過ぎが発生していない(実行時間・フレークで破綻しない)
A-4. 進化(変更容易性)のチェック
- 境界強化のトリガーが明確(S/D/V 悪化、運用要件、変更頻度)
- 重要な意思決定が ADR として最小記録されている
- 設計変更がテスト戦略(配分・対象)に反映されている
- 「やらないこと(非ゴール)」が継続的に守られている
A-5. セキュリティ/観測性/運用(最小チェック)
- セキュリティ:
- 認証/認可がサーバ側で強制されている(UI の表示制御に依存しない)
- 入力検証(形式/長さ/必須)が境界(HTTP)で一貫している
- 機微情報(トークン、個人情報、パスワード相当)をログに出さない
- 権限逸脱や認可失敗が追跡できる(監査ログ/相関ID)
- 観測性:
- 主要導線の成功/失敗が観測できる(エラー率、失敗理由コード)
- 外部I/F(通知等)の失敗が検知できる(ログ/メトリクス/アラートのいずれか)
- 主要イベントが検索できる(誰が/いつ/何をしたか。最低限の監査ログ)
- 運用:
- 失敗時の期待(業務継続/停止、再送、手動復旧)が仕様として固定されている
- バックアップ/復旧の前提が合意されている(復旧の責任者と手順の所在)
- リリース/ロールバックの手順が明文化されている(属人化していない)