投稿日
Architecture Decision Records導入事例
もくじ
- はじめに
- サマリ
- この活動への取り組みについての情報
- ArchitectureDecisionRecordsについて
- 導入の動機
- 不透明な意思決定
- やみくもな意思決定
- 時間がかかる新規アサインメンバーへの情報共有
- ADRの導入
- ADRの使用の合意
- ADRの運用
- 参加者
- 運用に当たり工夫した事
- ADRの対象を明確化
- ADRの受理を議論する人数を削減
- 得られた効果と懸念事項
- 得られた効果
- 懸念事項
- おわりに
- 付録:本事例で作成したADR
- ADRを使用する
- コンテキスト
- 決定事項
- ステータス
- 結果
- 複数戻り値
- コンテキスト
- 決定を必要とする理由
- 決定事項
- ステータス
- 結果
- 例外が保持するプロパティ
- コンテキスト
- 決定事項
- クラス階層の変更
- プロパティ
- コード値の種類を決定
- ステータス
- 結果
ADRを使用する
コンテキスト
本プロジェクトではアーキテクチャの決定、構築、改善を行うため、以下の点でADRが必要になる。
- アーキテクチャの意思決定のプロセスに透明性と規律を与えるため
- アーキテクチャの意思決定が一方的に決定されることを防ぐため
- 以前のアーキテクチャの意思決定が効果的であったか評価するため
- 周囲の状況の変化に合わせて再度検討する必要があるのかを判断するため
- 新規にアサインされたメンバに対してアーキテクチャの意思決定の記録を提示するため
ADRの詳しい情報は以下を参照
決定事項
アーキテクチャに関する決定をすべてADRによってドキュメントし、決定内容を記録する。手順は以下。
- 提案内容をドキュメント化する。作成時はステータスが「提案中」。提案はADRを作った人または作るプロセスにかかわった人が行う。
- 関係者で内容を話し合う。話し合う内容に合わせてドキュメントを更新。
- 関係者でドキュメントを「受理」または、「廃止」にする合意をとる。合意に至った過程も合わせて記述。
- 「受理」された場合、決定事項に合わせてソースコードを変更する。
- 「廃止」された場合、決定事項の内容をソースコードに反映しない。
- 再検討する場合、新規にADRを作成し、古いADRを参照する。そのため、ADRは一切破棄しない。
ADRは以下の内容で管理し、更新に合わせて対象のリポジトリに含めソースコードと同様Gitで管理する。
- 書式
- Mark Down ファイル
- 配置場所
- 対象リポジトリ内の
doc/adr
ディレクトリ
- 対象リポジトリ内の
- ファイル名
adr-<3桁の数字>-<タイトル>
- 3桁の数字は連番で一意
ADRの対象は「ソフトウェアの複数箇所に関係する内容」かつ「プロジェクト固有の意思が入った内容」に限る。
ADRは原則、以下の内容に沿って記述する
- タイトル
- ADRのタイトル -「ADR : 」から始め、内容を簡潔に表現
- コンテキスト
- この決定を必要とする理由
- 取り巻く状況・技術・社会的背景
- 選択肢
- 決定事項
- 実現方法
- 採用する技術・設計思想
- 決定に至った理由
- 決定に至らなかった理由
- ステータス
- ADRの状態
- 下の表のラベルのいずれか
- 結果
- ADRを適用した後の結果を記述
ラベル | 内容 |
---|---|
提案中 | 同意がなされていない状態 |
受理 | 同意がなされている状態 |
廃止 | 変更あるいは取り消しされている状態 |
ステータス
受理