ADR-Toolsを使ってADR(Architecture Decision Record)を作る
目次
npryce/adr-toolsは、ADR(Architecture Decision Record)を管理するためのCLIです。ADRの作成や置き換えなど、いくつかの機能を提供しています。
macOSであればHomebrewでインストールできます。
% brew install adr-tools
以下のコマンドでADRのディレクトリが作成されます。デフォルトでは、/doc/adr/
となります。
% adr init
ADRとADR-Tools
ADRは、Documenting Architecture Decisionsが初出であるとのこと (Mark, Meal (2022), p.289)。
ADR-Toolsの使い方については、hasCode.com » Blog Archive » Managing Architecture Decision Records with ADR-Toolsが詳しいです。
日本語で読める書籍では、「ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ」 (Mark Richards, Neal Ford (2022))、「エンジニアリングマネージャーのしごと チームが必要とするマネージャーになる方法」 (James Stanier (2022)) に記述が見られます。
ADR-Tools
以下のようなコマンドで、ADRの雛形を生成します。“absolutely important architecture decision” の部分は自由に入力します。
% adr new absolutely important architecture decision
0003-absolutely-important-architecture-decision.md
というような名前でMarkdownファイルが作成されます。このファイル名の 0003
の部分は連番で作成されます。ファイルの中身は以下のようなものになります。「ADRの基本構造は、タイトル、ステータス、コンテキスト、決定、影響という5つの主要セクションから構成される (Mark, Meal (2022), p.289)」 という説明のとおりです。
# 3. absolutely important architecture decision
Date: 2023-08-11
## Status
Accepted
## Context
The issue motivating this decision, and any context that influences or constrains the decision.
## Decision
The change that we're proposing or have agreed to implement.
## Consequences
What becomes easier or more difficult to do and any risks introduced by the change that will need to be mitigated.
ADR-Toolsを使って嬉しい時
ADR-Toolsを用いる主なメリットとして、ソースコードと同じ(Gitなどの)リポジトリでADRを管理できることが挙げられます。また、例えばGitHubを使っている場合は、ADR作成のPull Requestを作成し、Pull Requestが承認されるまでADRの変更が可能となるでしょう(実際に試したことはないので実効性は不明)。
反対に、この方針が組織やチームのドキュメント管理方針と異なる場合は、ADR-Toolsを用いてソースコードと同じリポジトリでADRを管理するのはやめた方が良さそうです。
Reference
- npryce/adr-tools: Command-line tools for working with Architecture Decision Records(最終アクセス日:2023年8月11日)
- Documenting Architecture Decisions(最終アクセス日:2023年8月11日)
- hasCode.com » Blog Archive » Managing Architecture Decision Records with ADR-Tools(最終アクセス日:2023年8月11日)
- Mark Richards, Neal Ford, 島田浩二 (訳), (2022), ソフトウェアアーキテクチャの基礎 エンジニアリングに基づく体系的アプローチ, オライリー・ジャパン
- James Stanier, 吉羽龍太郎 (訳), 永瀬美穂 (訳), 原田騎郎 (訳), 竹葉美沙 (訳), (2022), エンジニアリングマネージャーのしごと チームが必要とするマネージャーになる方法, オライリー・ジャパン
書いている人 😎

茨城県つくば市在住のモバイルアプリケーションアーキテクト(Androidが得意です)。モバイルアプリのアーキテクチャ、自動テスト、CI/CDに興味があります。いわゆる「レガシーコード」のリファクタリング・リアーキテクチャが好きです。
👉 もっと詳しく
著書 ✍
Android 依存性注入 ヒッチハイク・ガイド🧳
Androidアプリでの依存性注入(Dependency Injection)に入門するためのガイダンスです。依存性注入の概念やメリットを理解し、Dagger Hiltを用いてAndroidアプリに適用する方法を解説しています。
ソフトウェアデザイン 2023年6月号📚
特集「クリーンアーキテクチャとは何か?」の第5章「モバイルアプリ開発における実践」を執筆しました。
Android クリーンアーキテクチャ ヒッチハイク・ガイド🧳
Androidアプリでのクリーンアーキテクチャに入門するためのガイダンスです。クリーンアーキテクチャの概念を理解し、Androidアプリに適用する方法を解説しています。
Android ユニットテスト ヒッチハイク・ガイド🧳
Androidアプリのユニットテストに入門するためのガイダンスです。初学者が混乱せずにAndroidアプリのユニットテストを書き始めることができる、ということを目的としています。
Android MVVMアーキテクチャ入門🛠
Androidアプリ開発の初学者に向けた、MVVM(Model-View-ViewModel)アーキテクチャの入門書を書きました。初学者の方を確実にネクストレベルに引き上げる技術書です。NextPublishingより出版されています。