SUPPORTING
ADRはいつ書く?設計判断を残す基準・レビュー手順・廃止方法
ADRを書くべき設計判断と、書かなくてよい条件を整理。最小項目、所有者、レビュー、Accepted・Rejected・Supersededまでの運用方法を解説します。
ADR(Architecture Decision Record)は、ソフトウェアアーキテクチャ上の重要な選択について、判断だけでなく背景と結果も残す文書です。AWSのADRガイドでは、構造、非機能要件、依存関係、インターフェース、構築技法に関わる判断を対象にしています。
ADRを書くかどうかの基準
判断に迷ったら、次の順序で対象を絞ると運用負荷を抑えやすくなります。
- 構造や非機能要件など、アーキテクチャ上重要な判断か
- 影響範囲、継続期間、リスク、費用が限定的ではないか
- 判断と根拠が、別の文書ですでに扱われていないか
一方、範囲・期間・リスク・費用が限定された判断や、別の場所で記録済みの判断は、ADRを書かない候補です。architecture-decision-recordプロジェクトも、これらを書かない条件の例として挙げています。
つまり、短期間で戻せる低リスクな変更まで一律にADR化する必要はありません。判断を記録しない場合も、「影響が限定的」「既存文書に記載済み」のようにチーム内の除外基準をそろえておくと、作成漏れとの区別がしやすくなります。
最小構成は3項目
ADRに必要な最小項目は、次の3つです。
- 判断が必要になった背景
- 採用する判断
- プロジェクトや成果物への影響
これはAWSが示す最小構成に対応します。また、1件のADRでは1件のアーキテクチャ判断だけを扱うことが推奨されています。複数の判断を分ける考え方に従えば、後から一部だけを置き換える場合も関係を追いやすくなります。
費用、日程、スケーリングなど時間とともに変化し得る情報を書く場合は、その数値や前提がいつの時点のものかも明記します。同プロジェクトの指針でも、時点の記録が勧められています。
レビュー手順と状態遷移
AWSのプロセスでは、ADRはまずProposedとして作成され、レビュー後に承認、修正継続、却下のいずれかへ進みます。状態遷移の説明では、全メンバーがADRを作成できる一方、チームとして所有者を定めることも求めています。
レビュー会議は、次の流れにすると役割が明確です。
- 所有者が
ProposedのADRを共有する - 会議の冒頭に読む時間を設ける
- 承認、修正継続、却下を決める
- 所有者が状態と必要情報を更新する
AWSは会議冒頭の読解時間について、平均10~15分を目安にしています。レビュー会議の例を採用する場合、事前に読んだ人がいることを前提にせず、同じ内容を確認してから議論できます。
承認時には、所有者がタイムスタンプ、バージョン、利害関係者一覧を追加してAcceptedへ更新します。承認時の更新項目を固定すれば、誰が関わった判断かを後から確認できます。却下時は、再び同じ議論を繰り返さないよう理由を追記し、Rejectedへ変更します。却下時の手順でも、却下理由を残すことが示されています。
変更・廃止は上書きか、新規ADRか
AWSは、承認または却下されたADRを不変の文書として扱い、変更が必要なら新しいADRを作ってレビューする方式を示しています。AWSの更新方針では、新しいADRが承認されて旧判断を置き換えたら、古いADRをSupersededへ変更します。
ただし、不変性は理論上の理想であり、更新可能なADRのほうがチームで機能したという異なる運用経験も報告されています。architecture-decision-recordプロジェクトの見解も踏まえ、導入時に「確定後は新規ADRで置換する」「既存ADRの更新を許す」のどちらを採るか決めておくべきです。履歴の明確さを優先するなら前者、文書管理の簡潔さを優先するなら後者が検討候補になります。
ADRが向いていないチーム・判断
ADRは、記録とレビューの時間を確保できないチームや、短期的で低リスクな判断が大半の状況には向きません。対象を広げすぎると、重要な判断が大量の文書に埋もれる可能性があります。まず「重要なアーキテクチャ判断」に限定し、1件1判断、最小3項目、所有者ありの小さな運用から始めるのが現実的です。
AWSはADRについて、チームの足並みをそろえ、戦略的な方向性を記録し、時間のかかる意思決定の繰り返しを減らすものと説明しています。ADRの目的を達成するには、件数を増やすことではなく、後から理由を確認する価値のある判断を選ぶことが重要です。