Architecture Decision Records (ADR)
本ドキュメントは、TASHIKA における ADR の採番ルール・フォーマット・管理プロセスを定義します。
NOTE
要件(What): OP-001 保守性 / Architecture Decision RecordsADR 保管場所: docs/conventions/decisions/ ディレクトリ
目的
重要なアーキテクチャ・技術的判断を「なぜそうしたか」「何を却下したか」「どんなトレードオフがあるか」と共に記録する。
ADR がない場合に生じる問題:
- 後から参加したメンバーが「なぜこの設計か」を理解できない
- 法改正・スケールアップ時に過去の判断の前提が分からず誤った変更をしてしまう
- 設計の決定が再び議論されて時間を浪費する
ADR の採番
ADR-{3桁連番}ADR-001から開始、ゼロ埋め3桁- 廃止された ADR は欠番とし、番号を再利用しない
- ステータスが
Supersededに変わっても ADR 自体は削除しない
フォーマット(テンプレート)
markdown
# ADR-NNN: タイトル
- **ステータス**: Proposed / Accepted / Deprecated / Superseded by ADR-XXX
- **日付**: YYYY-MM-DD
- **決定者**: (例: アーキテクトチーム)
## コンテキスト
なぜこの判断が必要になったか。背景・課題・制約を記述する。
## 決定
採用したアーキテクチャ・技術・パターンを一言で述べる。
## 理由
なぜこの決定をしたか。採用した理由を具体的に述べる。
## 却下した代替案
| 代替案 | 却下理由 |
|--------|---------|
| 案A | 理由 |
| 案B | 理由 |
## トレードオフ・リスク
採用によって生じる制約・デメリット・リスクを正直に記述する。
## 結果
この決定が影響するドキュメント・コンポーネント・要件を列挙する。管理プロセス
| フェーズ | 内容 |
|---|---|
| 1. 起票 | 設計判断が必要になったタイミングで ADR を Proposed として起票 |
| 2. レビュー | PR レビュー(コードレビューと同様)で議論。代替案・リスクの妥当性を確認 |
| 3. 確定 | マージ時に Accepted へ更新 |
| 4. 廃止 | 設計変更時に旧 ADR を Superseded by ADR-XXX に更新し、新 ADR を起票 |
初期 ADR 一覧
| ID | タイトル | ステータス |
|---|---|---|
| ADR-001 | CQRS without Event Sourcing | Accepted |
| ADR-002 | PostgreSQL RLS によるマルチテナント分離 | Accepted |
| ADR-003 | スナップショット方式の申告履歴管理 | Accepted |
| ADR-004 | React SPA + BFF アーキテクチャの採用 | Accepted |
| ADR-005 | Sentry + OpenTelemetry ハイブリッドによるエンドツーエンドトレーサビリティ | Accepted |
| ADR-006 | Roselliパターンによるドメイン特化入力コンポーネント | Accepted |
| ADR-007 | 決済基盤に Stripe を採用 | Accepted |