バイブコーディング時代のADRベストプラクティス
pair programming / mob programming 型のリアルタイム協業で、会話に埋もれる設計判断をどうADRとして残すか。Nygard型、MADR、レビュー導線、テンプレート、運用コストを整理します。
- adr
- architecture
- vibe-coding
- pair-programming
- mob-programming
- documentation
- decision-records
- ai-agent
- 情報確認
- 参考リンク
- 20件
- 更新性
- 定期更新
- 読了目安
- 約11分
仕様・料金・提供範囲が変わりやすいテーマは、公開日・更新日・情報確認日を分けて管理します。 導入前には必ず記事末尾の一次情報と公式ドキュメントで最新状況を確認してください。
この記事では、バイブコーディングを pair programming / mob programming 型のリアルタイム協業として扱います。つまり、1人が黙って設計し、あとで実装する開発ではなく、複数人とAIエージェントが会話しながら、設計・実装・テスト・レビューを同時に進める状況です。
この開発では、意思決定が速くなります。一方で、決定の理由も速く蒸発します。コードは「何を作ったか」は示せますが、何を却下したか、どの制約に縛られたか、どのトレードオフを受け入れたかまでは残してくれません。
そこで必要になるのが ADR、Architecture Decision Record です。ADR は、アーキテクチャ上重要な判断を、背景・選択肢・決定・結果とともに残す短い文書です。
結論は明快です。
- ADR はすべてを書く文書ではない
- 構造、品質特性、難逆性に効く判断だけを書く
- バイブコーディングでは、決定後の清書より 決定形成中のdraft が効く
- 既定は Nygard 型で軽く始める
- 横断影響、監査性、高リスク判断だけ MADR 相当へ拡張する
- accepted 後のADRは原則書き換えず、変更時は新ADRで supersede する
なぜ今ADRか
mob programming の代表的な説明では、チーム全員が同じものを、同じ時間に、同じ空間で、同じコンピュータ上で扱います。実装だけでなく、設計、テスト、デプロイ準備、顧客やステークホルダーとの作業も working meeting として進めます。分散 pair programming の研究でも、pair は同じ設計・アルゴリズム・コードについて継続的に会話することが前提です。
つまり、判断は設計書の前ではなく、会話の中で発生します。
AIエージェントを含むバイブコーディングでは、この傾向がさらに強まります。Claude Code、Codex、Cursor、Cline のようなエージェントは、実装案、修正案、テスト案を短時間で複数出します。人間はそれを見ながら、会話の中で選びます。
このとき、ADRがないと次の問題が起きます。
- 半年後に「なぜこの方式にしたのか」が分からない
- 却下した案が再提案され、同じ議論が蒸し返される
- 新メンバーが設計意図をコードから推測するしかない
- AIエージェントが過去の判断に反する実装を提案する
- チームをまたぐ判断がSlack、PR、Issue、議事録に散る
ADR は、この「理由の負債」を抑えるための最小限の制御面です。後で読むための重い設計書ではなく、同期協業で生まれた判断を、非同期共有、将来変更、オンボーディング、他チーム伝達へつなぐ薄いインターフェースだと考えると実務に乗せやすくなります。
関連するAIエージェント時代の文書設計は、次の記事も近いテーマです。
ADRの定義
Google Cloud は、ADR を「利用可能な主要オプション、決定を推進する主な要件、設計上の決定事項を捉えるもの」と説明しています。AWS は、ソフトウェアアーキテクチャの重要な側面についてチームが選んだ内容、コンテキスト、結果を記録する文書と整理しています。Azure Well-Architected Framework は、ADRに含めるべき対象を、構造、主要品質特性、戻しにくい選択に限定するよう勧めています。
ここで重要なのは、ADR は「実装手順書」ではなく「判断の記録」だという点です。
| ADRに書く | ADRに書かない |
|---|---|
| なぜその判断が必要だったか | 実装手順の詳細 |
| どの選択肢を比較したか | 日々の作業ログ |
| 何を決めたか | 仕様書の全文 |
| どんな良い結果・悪い結果を受け入れたか | コミットメッセージの代替 |
| いつ再評価すべきか | 会議の逐語録 |
コードは「現在の姿」を示します。ADR は「その姿になった理由」を示します。
歴史
設計判断を第一級の知識として扱う流れは、2004年の Philippe Kruchten による設計判断オントロジーに遡ります。そこでは、設計判断と相互依存関係を保存することが、進化と保守を支えると論じられました。
2005年には Jeff Tyree と Art Akerman が、Issue、Decision、Status、Assumptions、Constraints、Positions、Argument、Implications などを含む詳細な decision template を提示しました。これは説明責任や統治には強い一方、日常の開発には重くなりがちです。
2011年に Michael Nygard が、短いテキストファイルとしての軽量 ADR を提案しました。基本構成は、Title、Status、Context、Decision、Consequences です。現在の多くのADR運用はこの Nygard 型から始まっています。
2018年前後には MADR、Markdown Architectural Decision Records が広がりました。MADR は Markdown を前提にしながら、decision drivers、considered options、pros/cons、decision outcome、confirmation、metadata を明示できる構造化テンプレートです。MADR 公式では 4.0.0 を選択肢として扱うADRも公開されています。
2025年には GOV.UK の Architectural Decision Record Framework が公開され、公的機関の横断ガバナンスでも ADR が明示的に採用されました。2026年には Nygard、MADR、Tyree/Akerman、arc42、Y-statements を比較する arXiv 論文も出ており、Nygard は簡潔さと採用しやすさ、MADR は構造的な詳細と特定のアーキテクチャ要件の表現に強い、という整理が示されています。
テンプレートの選び方
ADRのテンプレート選定で失敗しやすいのは、最初から「完璧な形式」を決めようとすることです。実務では、判断の重さに応じて使い分けるほうが長続きします。
| 形式 | 向く場面 | 強み | 弱み |
|---|---|---|---|
| Nygard型 | 日常的な設計判断、短サイクル、小規模チーム | 軽い、書きやすい、読みやすい | 選択肢比較や相談先が薄くなりやすい |
| MADR | 横断影響、高リスク、複数ステークホルダー | 選択肢、理由、pros/cons、confirmationを残せる | 書く負荷が上がる |
| Tyree/Akerman型 | 監査、規制、アーキテクチャボード | 前提、制約、論拠、影響を詳細に残せる | 日常運用には重い |
| Y-statement | 短い意思決定要約 | 一文で理由とトレードオフを表せる | 単独では履歴管理に弱い |
推奨は、lean を既定、rich を昇格です。
日常のバイブコーディングでは Nygard 型で十分です。横断影響が出る、セキュリティやSREの確認が必要、監査可能性が必要、将来の説明責任が重い、と分かった時点で MADR 相当へ昇格します。
何をADRにするか
ADRにするかどうかは、次の3条件で判断します。
| 判断軸 | ADRにする | ADRにしない |
|---|---|---|
| 構造 | サービス分割、依存方向、データ境界、API契約 | クラス名、関数分割、局所的な整理 |
| 品質特性 | 可用性、性能、セキュリティ、運用性、保守性に影響 | UI文言、軽微な表示調整 |
| 難逆性 | 戻すのに複数スプリント、移行、契約変更が必要 | 1PRで戻せる実験的変更 |
具体例です。
ADRにするもの:
- モノリスを分割する境界
- REST ではなく GraphQL を採用する
- 認証方式をセッションからJWTに変える
- APIゲートウェイでレート制限する
- キュー基盤として Pub/Sub、SQS、Kafka のどれを選ぶか
- フロントエンド状態管理を特定方式に寄せる
- 監査ログの責務をアプリ層か基盤層に置く
ADRにしないもの:
- 変数名や関数名の変更
- 一時的な設定値変更
- 実装中に見つけた小さなリファクタ
- 単なるライブラリのpatch更新
- 仕様書そのもの
- 会議メモの全文
迷ったら、将来のメンバーがコードを見て「なぜこうしたのか」と聞きそうかで決めます。
バイブコーディングでの書き方
従来のADRは、設計会議の後にテックリードが清書する運用になりがちでした。バイブコーディングでは、それだと遅いです。判断はセッション中に次々と発生し、あとから思い出すほど理由が薄まります。
推奨フローは次です。
| タイミング | やること | 目安 |
|---|---|---|
| セッション中 | ADR draft を作る | 3分 |
| セッション中 | 文タイトル、背景、選択肢、未解決点だけ固定 | 5分以内 |
| セッション直後 | Decision / Consequences / Confirmation を整える | 10〜15分 |
| その日中 | draft PR または Discussion に出す | 1営業日以内 |
| レビュー後 | status=accepted でマージ | 合意後すぐ |
| 前提変更時 | 新ADRで supersede | 変更判断時 |
ポイントは、議論を止めずに残すことです。最初から完成文書にしようとすると書かれません。まずは、会話中に次の4行だけ残せば十分です。
# APIゲートウェイのレート制限はエッジ層で実施する
## Context各サービスで個別にレート制限しており、ルール差異と監視のばらつきが出ている。
## Options- 各サービスで実装する- APIゲートウェイで実施する- CDN / WAF 側でのみ実施する
## Open Questions- 例外ルールをどこで管理するか- ゲートウェイ障害時のフェイルオープン/フェイルクローズをどうするかこの段階では draft です。合意形成のための作業台として使います。
推奨テンプレート
以下は、Nygard 型をベースに、MADR の metadata、選択肢比較、confirmation を足した実務向けテンプレートです。バイブコーディング中に起票しやすく、あとで監査やレビューにもつなげやすい形にしています。
---id: ADR-0042status: proposeddate: 2026-05-11decision-makers: - "@tech-lead" - "@backend-lead"consulted: - "@security" - "@sre"informed: - "@product"related-issues: - ISSUE-128related-prs: - PR-932related-commits: - abc1234session-log: - pair-session-2026-05-11-amsupersedes:superseded-by:---
# APIゲートウェイのレート制限はエッジ層で実施する
## Context現在のレート制限は各アプリケーションで個別実装されており、実装の重複、ルール差異、監視のばらつきが生じている。モバイルAPIと管理画面APIの増加に伴い、横断的な制御点が必要になった。
## Decision Drivers- DoS・濫用対策を統一したい- サービスごとの実装差分を減らしたい- 運用時に閾値変更を一元管理したい- 将来的なマルチサービス構成に耐えたい
## Considered Options- 各サービスでアプリケーションレベルに実装する- APIゲートウェイ / エッジ層で一括実施する- CDN / WAF 側でのみ実施する
## DecisionAPIゲートウェイ / エッジ層でレート制限を一括実施する。横断一貫性と運用変更容易性を最も高い水準で満たし、サービス実装の重複も減らせるため。
## Consequences- Good: 実装重複が減り、監視・変更点が集約される- Good: 横断ポリシーを一箇所で管理できる- Bad: ゲートウェイ障害時の影響範囲が広い- Bad: 例外ルールは設計を丁寧にしないと複雑化しやすい
## Pros and Cons of the Options
### 各サービスで実装する- Good: サービスごとの柔軟性が高い- Bad: 実装重複と逸脱が増える- Bad: 監視・変更が分散する
### APIゲートウェイ / エッジ層で一括実施する- Good: 横断一貫性が高い- Good: 運用変更を集約できる- Bad: 共通基盤への依存が強まる
### CDN / WAF 側でのみ実施する- Good: 早い段階で遮断できる- Bad: アプリケーション文脈を使った細粒度制御が難しい
## Confirmation- アーキテクチャレビューで制御点の責務分離を確認する- 負荷試験で閾値動作とフェイルオーバーを確認する- 運用Runbookに閾値変更手順を追加する
## Revisit Triggers- サービス数が2倍を超える- ゲートウェイを分割する- B2B APIの個別契約が増える
## Links- ADR-0037: 認証方式- ADR-0039: API分割方針- PR-932このテンプレートの肝は、decision-makers、consulted、informed を分けることです。全員を「承認者」にすると重くなります。相談した人、知らせる人、決める人を分けると、分散チームでも責任がぼやけません。
レビューと承認
GDS Way は、ADR の提案状態を GitHub の draft PR として扱う運用を紹介しています。GOV.UK のADR Framework も、判断のスコープに応じて適切な decision-making body へ review / approval する流れを示しています。
実務では、次の3パターンを使い分けると軽く回ります。
| 媒体 | 向く場面 | 注意点 |
|---|---|---|
| draft PR | コードと一緒にレビューしたい | 実装PRとADR PRを分けるか決めておく |
| GitHub Discussions | 議論を長めに残したい | accepted な本文をどこに固定するか決める |
| docs repository | 横断ADRを集約したい | 各サービスのローカルADRと相互リンクする |
バイブコーディングでは、最初は Discussion で議論し、accepted になった本文だけ docs/adr/ に入れる運用も現実的です。ENECHANGE の事例では、GitHub Discussions が Markdown、コメント、ID、ラベル、議論の記録を持つ点が ADR と相性がよいとされています。
accepted後は書き換えない
AWS、Azure、GDS、Martin Fowler の整理はいずれも、受理済みADRの履歴を残すことを重視しています。accepted なADRを後からこっそり書き換えると、当時の判断が失われます。
運用ルールは次で十分です。
proposed中は更新してよいaccepted後は、誤字やリンク修正以外は原則変更しない- 前提が変わったら、新しいADRを書く
- 古いADRは
superseded by ADR-00xxとする - 新しいADRには
supersedes ADR-00yyを書く
これは面倒に見えますが、長期的には効きます。いつ、どの前提で、どの判断が有効だったのかを追えるからです。
バイブコーディングチームと従来チームの違い
| 観点 | バイブコーディングを行うチーム | 従来のチーム |
|---|---|---|
| 決定の発生点 | pair/mob セッション中に連続的に発生しやすい | 設計会議、担当者作業、レビュー会議で発生しやすい |
| ADR下書きの最適時点 | セッション中または直後 | 設計レビュー前後 |
| 主な記録責任 | scribe / driver が起草し、decision-makers を複数明示 | テックリードやアーキテクトが起草しやすい |
| 合意形成 | draft PR、Discussion、working meeting | 設計レビュー会議、PR、承認会 |
| 向くテンプレート | Nygard型から始め、必要時にMADRへ昇格 | 最初からMADR相当を使いやすい |
| 主要価値 | 会話の外部記憶化、再議論防止、同期判断の非同期共有 | 長期記録、監査容易性、正式統治との接続 |
| 失敗モード | 会話は多いが理由が残らない | 記録は残るが更新が遅い |
| 運用の肝 | 速く起票して軽く回す | 重みづけと承認経路を明確にする |
バイブコーディングでは、ADRを書くこと自体がコラボレーションの一部です。清書担当があとで作文するより、その場で「この決定のタイトルは何か」「却下した案は何か」「何を確認したら完了か」を話すほうが、判断の品質も上がります。
実践ワークフロー
導入初期は、次の流れで十分です。
- セッション中に、構造・品質特性・難逆性に影響する判断が出たら止める
- ADR候補かどうかを30秒で判定する
- scribe を1人決める
- 文タイトル、Context、Options、Open Questions だけ書く
- セッション後に Decision、Consequences、Confirmation を追記する
- draft PR または Discussion に出す
- consulted / informed を明示してレビュー依頼する
- accepted になったら
docs/adr/に置く - 実装PR、Issue、コミットから ADR をリンクする
- 前提が変わったら新ADRで supersede する
コミットメッセージはADRの代替ではありません。ただし、相互参照には使えます。
Implement edge rate limiting
ADR: ADR-0042Refs: ISSUE-128PR本文には、次のように入れます。
## Architecture Decision
Implements ADR-0042: APIゲートウェイのレート制限はエッジ層で実施する
## Confirmation
- [ ] 閾値動作の負荷試験を追加- [ ] Runbook更新- [ ] SREレビュー完了この程度で、会話、判断、実装、確認が一本につながります。
運用コスト
ADRは無料ではありません。書く時間、読む時間、レビューする時間がかかります。だからこそ対象を絞ります。
実務上の目安は次です。
| 運用 | 作業 | 目安 |
|---|---|---|
| 軽量Nygard型 | draft 3〜7分、整形10〜20分、レビュー2名×10分 | 1件あたり0.6〜1.1人時 |
| MADR相当 | 骨子5〜10分、記述20〜45分、レビュー2〜3名×15〜30分 | 1件あたり1.5〜3.0人時 |
| 四半期棚卸し | status、リンク切れ、supersede関係の確認 | 20件あたり1〜2時間 |
これは厳密な統計値ではなく、制度設計の初期見積りです。重要なのは、ADRの費用をゼロと見なさないことです。価値がある判断だけADR化します。
CIと検索性
ADRは「書いて終わり」だと腐ります。最低限、次の仕組みを入れます。
docs/adr/README.mdに一覧を置く- ファイル名は
0042-edge-rate-limiting.mdのように番号 + 短いslugにする - front matter に
status、date、tags、decision-makersを持たせる - markdownlint をCIで回す
- accepted / superseded の整合性を棚卸しする
- 横断ADRは中央リポジトリにも索引を持つ
ECSA 2024 の実務研究では、ADRは documentation culture、knowledge transfer、何を記録すべきかの優先順位づけには効く一方、分散コンポーネントをまたぐ課題は残ると報告されています。また、どこに文書を置くかが有用性に大きく影響するとされています。
したがって、保管場所は一枚岩にしません。
| ADRの種類 | 推奨保管場所 |
|---|---|
| サービス内の判断 | そのサービスのリポジトリ |
| 複数サービスに効く判断 | 中央docs + 各リポジトリからリンク |
| セキュリティ・SRE・共通基盤 | 横断ADRレジストリ |
| 会話ログ | Discussion / Issue / PRに残し、ADRからリンク |
「コードの近く」と「横断検索性」は両方必要です。
導入チェックリスト
最初の2週間は、次だけ決めれば始められます。
- ADRを書く判断基準を3つに絞る: 構造、品質特性、難逆性
-
docs/adr/を作る -
0001-record-architecture-decisions.mdを作る - Nygard型テンプレートを既定にする
- MADR相当へ昇格する条件を決める
- proposed / accepted / superseded のstatusだけ使う
- draft PR または Discussion のどちらでレビューするか決める
- accepted後は書き換えず、supersedeするルールを明文化する
- PRテンプレートに
Related ADR欄を追加する - 四半期棚卸しの担当を決める
AIエージェントを使うチームなら、AGENTS.md や CLAUDE.md に次のようなルールを入れておくと効果があります。
## ADR
- 構造、品質特性、難逆性に影響する判断を提案する場合は、ADR候補として明示する。- accepted ADR に反する実装を行う前に、既存ADRを参照し、新しいADRでsupersedeが必要か確認する。- ADRは `docs/adr/` に置く。- 日常判断はNygard型、横断影響や監査性が必要な判断はMADR相当に拡張する。限界
ADRは万能ではありません。
まず、悪いコラボレーションをADRだけで直すことはできません。pair/mob の研究では、疲労、役割交代の失敗、参加者の沈黙、支配的な参加者などが問題になります。ADRは判断を残す道具であり、心理的安全性やファシリテーションの代替ではありません。
次に、ADRは分散システムの依存関係を自動で解きません。共有コンポーネント、複数リポジトリ、複数チームをまたぐ判断には、検索、タグ、中央索引、所有者設計が必要です。
最後に、テンプレートを重くしすぎると書かれません。2026年のADRテンプレート比較論文でも、Nygardは簡潔で客観的な文書化に向き、MADRは構造的詳細や特定のアーキテクチャ要件の表現に向くとされています。どちらか一方を全件に強制するより、判断の重さで切り替えるほうが現実的です。
まとめ
バイブコーディング時代のADRは、設計書ではなく、同期協業で発生した判断の外部記憶です。
最小ルールはこれで十分です。
- ADRは、構造・品質特性・難逆性に効く判断だけに使う
- セッション中に draft を起こす
- Nygard型で軽く始める
- 横断影響や監査性が必要ならMADRへ昇格する
- accepted 後は書き換えず、supersede する
- コード、PR、Issue、会話ログ、コミットを相互リンクする
会話が速いチームほど、理由は速く失われます。ADRは、その速度を落とすための文書ではありません。速い判断を、将来のチームが再利用できる知識に変えるための、いちばん軽い仕組みです。
参考リンク
- Michael Nygard: Documenting Architecture Decisions
- Architectural Decision Records GitHub organization
- MADR: Markdown Architectural Decision Records
- MADR: ADR Template
- AWS Prescriptive Guidance: ADR process
- AWS Prescriptive Guidance: ADR best practices
- Google Cloud: Architecture decision records overview
- Microsoft Azure Well-Architected Framework: ADR
- The GDS Way: Documenting architecture decisions
- GOV.UK: Architectural Decision Record Framework
- Martin Fowler: Architecture Decision Record
- adr-tools
- arXiv: One Size Fits All? An Empirical Comparison of ADR Templates
- ECSA 2024: Introducing Architecture Decision Records in Practice
- Distributed Pair Programming: A Systematic Literature Review
- Knowledge transfer in pair programming: An in-depth analysis
- Agile Alliance: Mob Programming - A Whole Team Approach
- 一休.com Developers Blog: ADRを1年間書いてみた感想
- ZOZO TECH BLOG: ZOZOFITにおけるADRを利用した意思決定を残す文化作り
- ENECHANGE Developer Blog: ADRsとGitHub Discussionsを使ってみた話
一次情報・参考リンク
- Michael Nygard: Documenting Architecture Decisions https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions
- Architectural Decision Records GitHub organization https://adr.github.io/
- MADR: Markdown Architectural Decision Records https://adr.github.io/madr/
- MADR: ADR Template https://adr.github.io/madr/decisions/adr-template.html
- AWS Prescriptive Guidance: ADR process https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/adr-process.html
- AWS Prescriptive Guidance: ADR best practices https://docs.aws.amazon.com/prescriptive-guidance/latest/architectural-decision-records/best-practices.html
- Google Cloud: Architecture decision records overview https://docs.cloud.google.com/architecture/architecture-decision-records
- Microsoft Azure Well-Architected Framework: ADR https://learn.microsoft.com/ja-jp/azure/well-architected/architect-role/architecture-decision-record
- The GDS Way: Documenting architecture decisions https://gds-way.digital.cabinet-office.gov.uk/standards/architecture-decisions.html
- GOV.UK: Architectural Decision Record Framework https://www.gov.uk/government/publications/architectural-decision-record-framework/architectural-decision-record-framework
- Martin Fowler: Architecture Decision Record https://martinfowler.com/bliki/ArchitectureDecisionRecord.html
- adr-tools https://github.com/npryce/adr-tools
- One Size Fits All? An Empirical Comparison of ADR Templates https://arxiv.org/abs/2604.27333
- ECSA 2024: Introducing Architecture Decision Records in Practice https://conf.researchr.org/details/ecsa-2024/ecsa-2024-research-papers/9/Introducing-Architecture-Decision-Records-in-Practice-An-Action-Research-Study
- Distributed Pair Programming: A Systematic Literature Review https://www.sciencedirect.com/science/article/pii/S0950584915000476
- Knowledge transfer in pair programming: An in-depth analysis https://www.sciencedirect.com/science/article/pii/S1071581914001207
- Agile Alliance: Mob Programming - A Whole Team Approach https://agilealliance.org/resources/experience-reports/mob-programming-agile2014/
- 一休.com Developers Blog: ADRを1年間書いてみた感想 https://user-first.ikyu.co.jp/entry/2023/12/13/115112
- ZOZO TECH BLOG: ZOZOFITにおけるADRを利用した意思決定を残す文化作り https://techblog.zozo.com/entry/adr-culture-of-zozofit
- ENECHANGE Developer Blog: ADRsとGitHub Discussionsを使ってみた話 https://tech.enechange.co.jp/entry/2022/11/01/100000
関連して読む
- · 参考リンク 5件
AIエージェント開発2026: Vibe Coding後半破綻と設計原則
Vibe Codingの後半破綻、CLAUDE.md、モノレポ、Cursor 3、GPT-5.3-Codexを軸に、2026年の開発設計を整理します。
- · 参考リンク 3件
2026-05-27 朝のIT・AIニュース3本
今日のIT・AIニュースから、MCPセキュリティ、AI検索、AIコーディングの3点を選び、開発者・サイト運用者目線で確認点を整理します。
- · 参考リンク 4件
Google I/O 2026で何が変わったか。検索は「探す」から「動くAI」へ
Google I/O 2026の検索エージェント、Gemini 3.5 Flash、Gemini Omni、Gemini Sparkを、AIエージェント実務の視点で整理します。