はじめに
こんにちはメーカーでソフトウェアエンジニアとして働いているモンゴルです。
前々から、外部のコーチから「ADR(Architecture Decision Records)いいでー」と教えてもらっていたのですが、忙しさを理由に、なかなか作れていませんでした。
しかし、来月からメンバーが加わるということで、これは「ADRを作るチャンス!」と強く感じましたので、今のうちに調べて、自分だったらこう作るなーというところを妄想しておきたいと思います。
参考にしたサイト
考えた内容
ADRに書くスコープ
- 開発者 のみ に関することで共有すること
- 開発者以外にも関わることは、他メンバーもわかるドキュメント共有ツールに書く
- 複数箇所で出現すること
- プロジェクト固有のこと
ディレクトリ構成
ADRを作成する際は、以下のディレクトリの関連するディレクトリ配下に配置する
- docs/ └ adr/ ├ 1_process/ # 開発プロセスについて ├ 2_architecture/ # アーキテクチャについて ├ 3_code/ # コードについて └ 4_ui/ # 画面、挙動について
メンバーそれぞれからADRが出てくることが予想されるので、出しやすくするために、ジャンルを分けてみました。
テンプレート
ファイル名はXXX.mdにします。
XXXの先頭はフォルダ名の1桁目になります。
# {題目} (話し合いをしていれば) - 日付 - 2021/08/24 - 参加者 - A - B ## ステータス ## コンテキスト ## 決定事項 ## 結果
それぞれの内容について
- 題目
- 内容を簡潔に
- ステータス
- もやみ提起/提案中/承認/見送り/廃止
- もやみ提起は素案なし
- 提案中は素案あり
- 承認は必須と推奨という、強制力が異なるものに分けることも検討したが、やめる
- もやみ提起/見送りというのは、私のプロジェクトでADRを出しやすくするためにステータスを足してみる
- もやみ提起/提案中/承認/見送り/廃止
- コンテキスト
- この決定を必要とする理由や、どういった選択肢があるか書く
- 決定事項
- 実現方法
- 採用する技術・設計思想
- 決定に至った理由、至らなかった理由
- 結果
- ADRを適用した後の結果を記述
ADRが決まるプロセス
パターン①:問題提起型
- 誰かが気になったことを書く
- 後日、議論しながら更新
- 皆でレビュー
パターン②:提案型
- 誰かがこうした方がいいのではということを書く
- 後日、議論しながら更新
- 皆でレビュー
パターン②:事後登録型
- 気になったことについて議論が起きる
- 議論中、議論後に誰かが内容を記載して登録
- 皆でレビュー
おわりに
まだADR導入していないですが、自分の中で整理できたと思います。 早くチームに導入してみたいなと思いました。