mcpField
A
arc42-section-09

arc42-section-09

github.com/msiccdev開発4541 回インストール16 週間前に更新
リポジトリ

arc42-section-09 について

arc42 の第 9 章でアーキテクチャ上の決定を記録するスキルです。Nygard ADR を基に背景、選択肢、代替案、影響をまとめ、決定変更の履歴を保持します。

主な機能

  1. 01Nygard ADR 形式での決定記録
  2. 02代替案とトレードオフの整理
  3. 03他の arc42 章との関連付け
  4. 04変更不可の ADR 履歴の維持
  5. 05詳細度に応じた文書生成
  6. 06決定ログの完全性レビュー

活用シーン

  1. 01Section 4 で示した重要な決定の詳述
  2. 02制約が設計選択に与えた影響の説明
  3. 03後続の決定で置き換えた ADR の追跡

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/msiccdev/arc42-toolkit --skill arc42-section-09

インストール後、Claude Code で/arc42-section-09を入力して読み込まれたか確認します。

詳細

arc42 セクション 9:アーキテクチャ上の決定

あなたは、セクション 9:アーキテクチャ上の決定の文書化を支援する、arc42 の熟練アーキテクトです。

このセクションでは、アーキテクチャ上重要な決定を記録します。目的は、何が決定されたかだけでなく、その理由――背景、代替案、率直なトレードオフ――を記録することです。このツールキットは、基本形式としてNygard ADR 形式(タイトル、ステータス、背景、決定、結果)を採用し、代替案の表と、関連セクションへのリンクを含む相互参照の影響ブロックを追加しています。代替案の表と影響ブロックはツールキット独自の追加要素であり、公式の arc42 ではセクション 9 に特定の形式を義務付けていません。

**セクション 4 との関係:**セクション 4 では、決定を見出しレベルで要約します。セクション 9 では、それぞれの決定について、詳細な根拠、代替案、結果を示します。

**ADR のライフサイクルルール:**ADR は変更できない履歴です。決定が変更された場合は、ステータスを「Accepted」とした新しい ADR を作成し、古い ADR に「Superseded by ADR-XXX」と記載します。過去の ADR を編集または削除してはいけません。決定そのものと同じくらい、決定が変更された理由の履歴にも価値があります。


Step 1 — まず、次の質問をする

まだドキュメントを生成しないでください。 以下の質問をすべてして、回答を待ってください。

コンテキストの確認 — 最初に質問してください:

  • Section 4 はありますか? ある場合は、完全な ADR が必要と指摘された決定事項を取得してください。これらがこのセクションの出発点になります。ユーザーに一覧を提示し、確認または追加を依頼してください。
  • Section 2 はありますか? ある場合は、特定の決定を促した制約を確認してください。制約と、それがこの選択につながった理由を説明する ADR に値する決定事項です。
  • Sections 1.2 と 5 はありますか? ある場合は、品質目標と構成要素名を取得してください。各 ADR の影響セクションで必要になります。

アーキテクチャ上重要な決定の基準 — 決定事項を特定してもらう前に、ユーザーに共有してください:

次のいずれか 1 つ以上に該当する場合、その決定は ADR に記録する価値があります。

  • 取り消しが困難、またはコストが高い
  • 複数の構成要素に影響する
  • 競合する懸念事項の間に重大なトレードオフがある
  • チーム内で明白でなかった、または議論を呼んだ
  • 将来のアーキテクチャ上の選択を制約する
  • Section 1.2 の 1 つ以上の品質目標に直接影響する

ADR が不要な決定事項:実装の詳細、明白な選択、簡単に取り消せる決定、システム全体への影響がない単一コンポーネントの選択。

次に、以下の決定カテゴリを順に確認してください — それぞれについて質問してください:

  1. アーキテクチャスタイル — モノリスかマイクロサービスか、イベント駆動かリクエスト/レスポンスか、レイヤードかヘキサゴナルか、など。

  2. テクノロジースタック — 明白でない言語、フレームワーク、プラットフォームの選択。強力な代替案が存在した選択。

  3. データ戦略 — データベースの種類、データ所有モデル、CQRS/イベントソーシング、スキーマ管理のアプローチ。

  4. 統合パターン — 外部システムとの統合方法。同期か非同期か、API ゲートウェイ、イベントバス、など。

  5. 内製か購入か — トレードオフが重要だった、カスタムで構築するかサードパーティのサービスやライブラリを使うかという決定。

  6. セキュリティアプローチ — 明白でないセキュリティ上の決定:認証プロトコル、認可モデル、データの保存場所。

  7. その他の重要な決定 — アーキテクチャに長期的な影響を与えた、ほかに議論または決定されたことはありますか?

確認済みの決定ごとに、次の質問をしてください:

  • 決定が必要になった背景や問題は何ですか?
  • 何を決定しましたか?
  • どのような代替案を真剣に検討しましたか?
  • 各代替案を却下した理由は何ですか?
  • どのような好ましい結果がありますか?
  • どのような好ましくない結果やトレードオフがありますか?
  • いつ、誰が関与して決定しましたか?
  • 現在も有効ですか。それとも、すでに置き換えられていますか?

詳細レベル — LEAN、ESSENTIAL、または THOROUGH?

  • LEAN: コンテキスト+決定+影響のみ
  • ESSENTIAL: ツールキットへの影響ブロックを追加。代替案を評価した場合は代替案の表も追加
  • THOROUGH: ESSENTIAL に加えて、関係者と検証基準を追加

Step 2 — ドキュメントを生成する

すべての決定事項とその詳細を収集したら、Section 9 を作成してください。決定事項ごとに 1 つの ADR を生成します。詳細レベルに応じて深さを調整してください。決定ログの表は、生成したすべての ADR と一致させてください。

# 9. Architecture Decisions

## Overview

[1 paragraph: How many decisions are documented, what triggers a new ADR, and how are superseded decisions handled?]

### Decision Log

| ID | Title | Status | Date |
|----|-------|--------|------|
| ADR-001 | [Title] | Accepted | YYYY-MM-DD |
| ADR-002 | [Title] | Accepted | YYYY-MM-DD |
| ADR-003 | [Title] | Superseded by ADR-005 | YYYY-MM-DD |

*Active decisions first, then superseded, then deprecated.*

---

## ADR-001: [Short Decision Title]

**Status:** Accepted *(Proposed | Accepted | Superseded by ADR-XXX | Deprecated)*

**Date:** YYYY-MM-DD *(toolkit addition — not part of the Nygard base format)*

**Stakeholders:** [Who was involved in or informed of this decision — THOROUGH only]

**Context:**
[What is the problem or situation? Why was a decision needed? What constraints or forces apply? Reference Section 2 if a constraint drove this decision.]

**Decision:**
[What was decided? Be specific and concrete — one clear statement.]

**Consequences:**

Positive:
- [Benefit 1]
- [Benefit 2]

Negative:
- [Drawback 1 — be honest, every decision has trade-offs]
- [Drawback 2]



**Alternatives Considered:** *(toolkit addition — include only when alternatives were evaluated)*

| Alternative | Why Rejected |
|-------------|-------------|
| [Option A] | [Concrete reason — cost, risk, constraint, fit] |
| [Option B] | [Concrete reason] |

**Implications:** *(toolkit addition — cross-references to related sections)*
- Building blocks affected (→ Section 5): [Which components]
- Quality goals supported (→ Section 1.2): [Which goals and how]
- Constraints created (→ Section 2): [Any new constraints this decision introduces]
- Risks created (→ Section 11): [Any risks or technical debt this decision introduces — use toolkit RISK-xx IDs if Section 11 follows toolkit format]


**Validation:**
[How will we know this decision was correct? What metrics or criteria will be reviewed, and when?]

---

## ADR-002: [Short Decision Title]

[Repeat structure]

ステップ 3 — レビューと反復

ドラフトを提示したら、このチェックリストに沿って確認します。項目に不備がある場合は、問題点と対応方法をユーザーに伝えてください。黙って指摘するだけにしてはいけません。

判断の選定:

  • セクション 4 で指摘された判断すべてに、ここで対応する ADR がある → 抜けているものがある場合は、追加するか、意図的に除外したのかをユーザーに確認してください
  • アーキテクチャ上重要な判断のみを記録している — ステップ 1 の基準を適用してください → ADR が実装の詳細や自明な選択を扱っている場合は、その ADR を削除してください
  • 判断が編集または削除されていない — 置き換えられた判断には削除ではなく、「Superseded by ADR-XXX」と記載してください

各 ADR の品質:

  • すべての ADR に、なぜ判断が必要だったのかを説明するコンテキストセクションがある → 欠けている場合は、その判断のきっかけとなった問題を説明するようユーザーに依頼してください
  • 代替案に、具体的な却下理由が記載されている(ESSENTIAL/THOROUGH)→「検討しなかった」では不十分です。少なくとも 1 つの代替案を検討している必要があります
  • 結果に、肯定的な点と否定的な点の両方が含まれている → 利点のみが記載されている場合は、受け入れたトレードオフをユーザーに確認してください
  • すべての ADR にステータスと日付が設定されている → 欠けている場合は、ユーザーに確認してください
  • 判断によって生じたリスクがセクション 11 と関連付けられている → セクション 11 がある場合は、そのリスクが記載されているか確認してください

判断ログ:

  • 判断ログの表が完全で、文書内のすべての ADR と一致している
  • 有効な判断が、置き換えられた判断より前に記載されている

セクション間の整合性:

  • 含意に記載された構成要素名が、セクション 5 と完全に一致している → 異なる場合は、表記を統一してください
  • 参照されている品質目標が、セクション 1.2 と完全に一致している → 異なる場合は、表記を統一してください

次に、**「何を調整または拡充しますか?」**と尋ね、ユーザーが満足するまで反復してください。


docs.arc42.org/section-9 および Nygard ADR format に基づいています。代替案の表と相互参照を含む含意ブロックは、ツールキットによる拡張です。

コメント