【えーでぃーあーる】

ADR(アーキテクチャ決定記録) とは?

💡 設計判断の「議事録」
📌 このページのポイント
ADR(アーキテクチャ決定記録)のテンプレート ADR-001: データベースにPostgreSQLを採用 ステータス 承認済み(2026-01-15) コンテキスト(背景) 高い信頼性とJSON対応が必要… 決定(Decision) PostgreSQLをメインDBとして採用する 結果(Consequences) ✔ JSON型でスキーマレスデータも扱える ✘ 運用チームの学習コストが発生
ADRのテンプレート構造
ひよこ ひよこ

なぜADRを書く必要があるの?

ペンギン先生 ペンギン先生

半年後に新しいメンバーが「なんでMongoDBじゃなくてPostgreSQLにしたの?」と聞いてきた時、当時の判断理由がどこにも残っていないと困るでしょ。ADRがあれば「検討した選択肢とトレードオフ、最終決定の理由」が記録されているから、同じ議論を繰り返さずに済むんだよ

ひよこ ひよこ

ADRには何を書くの?

ペンギン先生 ペンギン先生

基本構成は①タイトル(ADR-001: 認証にFirebase Authを採用)、②ステータス(Accepted/Deprecated/Superseded)、③コンテキスト(背景と制約条件)、④決定(選んだものと理由、検討した代替案)、⑤結果(この決定によるメリット・デメリット・影響)。短くていいから「決定の理由」を必ず書くのがポイントだよ

ひよこ ひよこ

どのレベルの決定を記録するの?

ペンギン先生 ペンギン先生

「覆すのが大変な決定」を記録するのが基本。プログラミング言語の選定、データベースの選定、アーキテクチャスタイル(モノリス/マイクロサービス)、認証方式、ホスティング先など。変数の命名規則みたいな小さい判断は不要。「将来のチームメンバーが疑問に思いそうな判断」を基準にするといいよ

ひよこ ひよこ

ADRの運用を続けるコツは?

ペンギン先生 ペンギン先生

テンプレートを用意して記述コストを下げる、②PRのついでにADRも一緒にコミット、③ADRの番号を連番にして一覧しやすく、④古い決定を覆す時は新ADRを書いてステータスを「Superseded by ADR-xxx」にする。完璧に書こうとせず、A4一枚程度で十分。書かないより雑でも書く方が100倍マシだよ

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「ADR」って出てきたら「アーキテクチャの重要な決定を記録する文書」と思えればだいたいOK!
📖 おまけ:英語の意味
「Architecture Decision Record」 = アーキテクチャ決定記録
💬 Decision(決定)のRecord(記録)。Michael Nygardが2011年に提唱したプラクティスだよ
← 用語集にもどる