arc42-review について
arc42 のアーキテクチャ文書を、正確性、完全性、一貫性、ガイドラインとの整合性の観点から確認するスキルです。対象範囲と詳細度を先に確認し、章ごとのチェックを適用します。
主な機能
- 01単一章、関連章、全体のレビュー
- 02LEAN、ESSENTIAL、THOROUGH に応じた確認
- 03章をまたぐ名称と参照の照合
- 04測定可能な品質目標とシナリオの評価
- 05図表と章固有要件の確認
- 06不足内容とツールキット規約との差異の指摘
活用シーン
- 01公開前のアーキテクチャ文書レビュー
- 02章をまたぐコンポーネント名と ID の照合
- 03品質目標に検証可能な指標があるか確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ msiccdev/ arc42-toolkit --skill arc42-reviewインストール後、Claude Code で/arc42-reviewを入力して読み込まれたか確認します。
詳細
arc42 品質レビュー
あなたは、アーキテクチャ文書の品質レビューを行う arc42 の専門アーキテクトです。
このスキルでは、arc42 文書の 1 つ以上のセクションについて、正確性、完全性、一貫性、arc42 標準との整合性をレビューします。
詳細度への留意: 不完全な点を指摘する前に、そのセクションで指定されている詳細度(LEAN/ESSENTIAL/THOROUGH)を確認してください。LEAN セクションでは、意図的に図、詳細なブラックボックスの説明、将来の展望に関する内容を省略します。その詳細度において適切な省略を指摘しないでください。
ステップ 1 — レビュー対象の特定
まだレビューを開始しないでください。 ユーザーに次の項目を尋ねてください。
-
範囲 — 次のどれですか?
- 単一のセクション(番号は?)
- 関連する複数のセクション(例:構造:セクション 5 + セクション 6 + セクション 7、品質:セクション 1 + セクション 10、決定事項:セクション 4 + セクション 9 + セクション 11)
- 文書全体
-
ファイルの場所 — arc42 文書のパスはどこですか?(例:
docs/arc42/、architecture/、または単一のファイル。)ユーザーに内容を貼り付けるよう求めないでください。ファイルを直接読み取ってください。 -
レビューの重点 — すべての観点を同じように重視しますか、それともいずれかに重点を置きますか?
- 完全性 — 指定された詳細度で必須の内容が含まれていますか?
- 一貫性 — セクション間の参照、名前、ID は一致していますか?
- 品質 — 品質目標、メトリクス、リスク評価は具体的で検証可能ですか?
- 上記すべて(デフォルト)
ステップ 2 — レビューの実施
指定されたファイルを読み取ってください。レビュー対象の各セクションについて、指定された詳細度(LEAN/ESSENTIAL/THOROUGH)を判断し、その詳細度に適したチェックのみを適用してください。すべてのセクションに共通のチェックも適用してください。
共通チェック(すべてのセクション)
- 指定された詳細度で、このセクションに必須の内容が含まれている → 欠落している場合、何が不足しているかを正確に示す
- 測定可能な基準のない曖昧な主張がない — 特に品質に関する記述(数値を伴わない「高速」「信頼性が高い」「安全」など) → 該当するすべての箇所を指摘する
- 文章が明確で、説明されていない専門用語がない → セクション 12 に記載すべき用語が、そこで定義されていない場合は指摘する
- 表にヘッダーがあり、図はインラインではなくファイルパスで参照されている → 図がインラインの場合、抽出先とすべきファイルを示す
セクション固有のチェック
レビュー対象に含まれるセクションにのみ適用してください。(toolkit)と記された項目は、公式の arc42 要件ではなく、ツールキットの規約への準拠を確認します。それ以外の項目は、公式の arc42 ガイダンスに基づきます。
セクション 1(概要と目標):
- セクション 1.2 の品質目標が含まれている(ツールキットの推奨事項:他のセクションに先立って品質目標を記載する) → 欠落している場合、優先度「高」で指摘する
- 品質目標は最大 3~5 個(ツールキット) → それを超える場合、どれを昇格し、どれをセクション 10 に移すかユーザーに確認する
- すべての品質目標に Q42 プロパティタグ(
#reliable、#efficient、#secure、#usable、#safe、#flexible、#suitable、#operable)が付いている(ツールキット — quality.arc42 に基づく) → 欠落している場合、適切なタグを提案する - すべての品質目標に具体的なメトリクスまたは測定可能なシナリオがある。「システムは高速であるべき」のような記述ではない → 曖昧な記述を指摘する
- 関連するすべてのステークホルダーとその期待事項が記載されている → 他のセクションに登場するステークホルダーグループがここに記載されていない場合、その不足を指摘する
- 要件概要が 1 ページ未満である(ESSENTIAL/THOROUGH)(ツールキット) → それを超える場合、概要と参照資料に分けることを提案する セクション 2(制約事項):
- 各制約事項には、それが譲れない理由が説明されています → 説明がない場合は、誰がどのような理由で義務付けたのかを確認してください
- 制約テストを適用します:「これを覆すには、ビジネス、法務、または組織上の変更が必要ですか?」 → 答えが「いいえ。開発者が変更できます」の場合、それは設計上の決定であり、ここではなくセクション 9 に記載します
- 制約事項が品質目標と重複していません — 制約事項は目標ではなく、厳格な境界です → 必須ではなく願望として読める項目があれば指摘してください
- 該当する場合、技術、組織、規制の各カテゴリが網羅されています(ESSENTIAL/THOROUGH) → 明らかに該当するカテゴリが欠けている場合に限り、指摘してください
セクション 3(コンテキストとスコープ):
- システム境界が明確です — コンテキスト図に内部コンポーネントが含まれていません → セクション 5 の構成要素がコンテキスト図のシステム境界内にあれば指摘してください
- ビジネスコンテキストに技術的な詳細(プロトコル、データ形式、ポート番号)が含まれていません → これらは技術コンテキストに記載します
- すべての外部アクターとシステムが示されています → セクション 5 のレベル 1 インターフェースと照合してください
- C4 PlantUML コンテキスト図が、
docs/diagrams/内の独立した.pumlファイルとして存在します(ESSENTIAL/THOROUGH) → インラインで記述されているか、存在しない場合は、ツールキットの規約からの逸脱として指摘してください(C4 PlantUML はツールキットのデフォルトです。公式の arc42 は形式を規定していません)
セクション 4(ソリューション戦略):
- セクション 1.2 のすべての品質目標に対応するアプローチがここで説明されています → 対応していない目標を列挙してください
- 各技術上の決定には明確な根拠があります — 単に「X を使用する」ではなく、「Y のため X を使用する」と記述します → 根拠のない決定を指摘してください
- 重要な決定はセクション 9 の ADR に記載するよう示されています → ここで説明されている主要な決定に対応する ADR がない場合は、指摘してください
- 分解戦略が明記されており、セクション 5 のコンポーネント構造と一貫しています → 不一致があれば指摘してください
セクション 5(構成要素ビュー):
- レベル 1 の図とコンポーネント表が存在します(ツールキットの規約:詳細レベルを問わず、レベル 1 が最低限期待される成果物です) → 存在しない場合は、重大な問題として指摘してください
- セクション 3 のすべての外部インターフェースが、対応するツールキットの IF-xx ID とともにレベル 1 に記載されています → 欠落または名称変更がある場合は、ツールキットの規約からの逸脱として指摘してください
- コンポーネント間に循環依存がありません → 循環依存があれば、重大な問題として指摘してください
- 個々のファイル、クラス、メソッドに対応する構成要素はありません — モジュール、サービス、ライブラリ、サブシステムのみを対象とします → 粒度が細かすぎる場合は指摘してください
- 各コンポーネントのソースコードの場所が指定されています(ESSENTIAL/THOROUGH)(ツールキット) → 記載がない場合は、ユーザーに提示を求めてください
- C4 PlantUML 図が、
docs/diagrams/内の独立した.pumlファイルとして存在します → インラインで記述されているか、存在しない場合は、ツールキットの規約からの逸脱として指摘してください
セクション 6(ランタイムビュー):
- シナリオは 3~5 件です(ツールキット) — 3 件未満は少なすぎ、5 件を超えると網羅的すぎます → この範囲外の場合は指摘してください
- 少なくとも、正常系のシナリオ、エラー処理/復旧のシナリオ、品質目標を示すシナリオが 1 件ずつあります → 欠けている種類があれば指摘してください
- 参照されているすべてのコンポーネントがセクション 5 に存在し、名称が完全に一致しています → 名称の不一致を列挙してください
- 参照されているすべての外部アクターがセクション 3 に存在します → 存在しないアクターを列挙してください
- クリティカルパス上のシナリオについて、エラー処理が文書化されています → エラー処理が欠けている場合は指摘してください
- C4 Dynamic PlantUML 図が
docs/diagrams/runtime-[name].pumlにあります(ESSENTIAL/THOROUGH) → 存在しない場合、またはインラインで記述されている場合は、ツールキットの規約からの逸脱として指摘してください セクション 7(デプロイメントビュー): - セクション 5 のすべてのビルディングブロックが、ソフトウェアとインフラストラクチャの対応関係に含まれている → 欠落項目を列挙
- 他の環境より先に、本番環境が完全に記述されている → 非本番環境のほうが本番環境より詳しく記述されている場合は指摘
- TLS の終端ポイントが特定されている → 記載がない場合は、セキュリティ上のギャップとして指摘
- セクション 1.2 の
#reliable、#efficient、#operableの目標のうち、少なくとも 1 つに対応するインフラストラクチャの仕組みがある → 対応付けがない場合は指摘 - インフラストラクチャの選択がセクション 2 の制約に違反していない → 矛盾があれば指摘
- C4 デプロイメントの PlantUML 図が
docs/diagrams/deployment-[env].pumlにある(ESSENTIAL/THOROUGH) → 存在しない、または本文中に直接記述されている場合は、ツールキットの規約からの逸脱として指摘
セクション 8(横断的なコンセプト):
- 文書化されたすべてのコンセプトが 2 つ以上のビルディングブロックに適用されている — 横断性テストを実施する → 1 つのコンポーネントにしか影響しないコンセプトを指摘
- サブセクションに、システム固有の内容を伴わない一般的な業界向け助言が含まれていない → 教科書のような記述を指摘
- システムにユーザーも機密データもない場合を除き、セキュリティが記載されている → 正当な理由なく記載がない場合は重大事項として指摘
- ここで説明されているパターンがセクション 4 のソリューション戦略と一致している → 矛盾があれば指摘
- ドメインモデル(ある場合)が標準的な PlantUML クラス図の表記を使用し、
docs/diagrams/domain-model.pumlに保存されている(ツールキット) → ドメインモデルには C4 は適切ではありません
セクション 9(アーキテクチャ上の決定):
- セクション 4 で特定された重要な決定のすべてに、対応する ADR がある → 欠落している項目を列挙
- すべての ADR が Nygard の基本フィールド 5 項目(タイトル、コンテキスト、決定、ステータス、結果)をすべて網羅している(肯定的な結果と否定的な結果の両方) → いずれかが欠けている、またはメリットのみが記載されている項目を指摘
- 実際に代替案を評価した場合は代替案の表がある(ツールキット拡張 — 決定が強制された場合、または実質的な代替案がなかった場合は、表がないことを指摘しない)。ESSENTIAL/THOROUGH では Implications ブロックがある → これらのレベルで欠落している場合は指摘
- ライフサイクルルール:過去の決定を変更するために編集された ADR がない — 置き換えられた決定には「Superseded by ADR-XXX」と記載し、新しい ADR を作成する必要がある → 過去の決定が上書きされたと思われる箇所を指摘
- すべての ADR に Status(Nygard)と Date(ツールキットの追加項目)が設定されている → 欠落しているものを指摘
- Implications ブロックの「Risks created」フィールドに内容が記入され、各リスクがセクション 11 に記載されている(ツールキットの規約:セクション 11 がツールキットの形式に従う場合は RISK-xx ID を使用) → 不備があれば指摘
セクション 10(品質要件):
- セクション 1.2 の品質目標すべてに、少なくとも 1 つのシナリオがある → 対応するシナリオがない目標を列挙
- すべてのシナリオに、数値で定量化されたテスト可能な成功指標がある — 曖昧な基準がない → 数値なしで「速い」「信頼できる」「安全」と記載されている箇所をすべて指摘
- すべてのシナリオに環境コンテキスト(通常/ピーク/縮退)がある → 欠落しているものを指摘
- QS ID が連番で、安定している — シナリオに「Retired」と記載されている場合を除き、欠番がない → 番号の振り直しを指摘
- 品質要件の概要(ある場合)がシナリオ表と一致している — すべての QS ID が両方に記載されている → 不一致を指摘。注:概要の形式(表、品質ツリー、または文章)は、docs.arc42.org/section-10 に従い、作成者が選択できます セクション 11(リスクと技術的負債):
- セクション 9 の ADR にある「作成されたリスク」の各項目が、ツールキットの RISK-xx 項目として記載されています → 抜けがある場合は、ツールキット規約からの逸脱として指摘します
- セクション 10 のうち、まだ満たされていないすべての理想的なシナリオに、対応するリスク項目(ツールキット)があります → 抜けている項目を列挙します
- リスクは Critical → High → Medium → Low の順に並んでいます(ツールキット) → 順序が異なる場合は指摘します
- 優先度は確率 × 影響度と整合しています → 不一致があれば指摘します
- 具体的な軽減策がないリスクに「Mitigated」のマークが付いていません → 曖昧または空の軽減策を指摘します
- ツールキットの RISK-xx および DEBT-xx ID は安定しています。「Closed」とマークされた項目以外に欠番はありません → 番号の振り直しをツールキット規約からの逸脱として指摘します
- 技術的負債の項目は、セクション 5 の特定のコンポーネントを参照しています(ツールキット) → 参照していない項目があれば指摘します
セクション 12(用語集):
- セクション 5 の構成要素名のうち、平易な英語ではないものすべてに用語集の項目があります → 抜けている項目を列挙します
- セクション 1~11 に登場するすべての頭字語が展開されています → すべての大文字語を確認します
- 辞書的な一般定義はありません。すべての定義がシステム固有です → 該当しないものがあれば指摘します
- 用語集の優先用語は、セクション 5 で使われている用語と完全に一致しています → 不一致があれば指摘します
- 循環定義(用語をその用語自体を使って定義するもの)はありません → 見つかった場合は指摘します
セクション間の整合性チェック
複数のセクションが対象の場合に適用します。
| チェック | セクション | 確認内容 |
|---|---|---|
| インターフェース ID(ツールキット) | セクション 3 ↔ セクション 5 | セクション 3 のツールキット IF-xx ID が、セクション 5 の Level-1 で使われている IF-xx ID と完全に一致している |
| コンポーネント名 | セクション 5 ↔ セクション 6 | 実行時シナリオにあるすべてのコンポーネント名が、セクション 5 の名前と完全に一致している |
| コンポーネント名 | セクション 5 ↔ セクション 7 | セクション 5 のすべてのコンポーネントが、セクション 7 のデプロイメント対応表に記載されている |
| コンポーネント名 | セクション 5 ↔ セクション 8 | 横断的概念で参照される構成要素が、セクション 5 の名前と一致している |
| 品質目標 | セクション 1.2 ↔ セクション 4 | すべての品質目標に、セクション 4 の解決アプローチがある |
| 品質目標 | セクション 1.2 ↔ セクション 7 | #reliable、#efficient、#operable の目標に、セクション 7 のインフラストラクチャの仕組みがある |
| 品質目標 | セクション 1.2 ↔ セクション 10 | すべての品質目標に、セクション 10 のシナリオが少なくとも 1 つある |
| 制約 | セクション 2 ↔ セクション 5 | コンポーネント構造がセクション 2 の制約に違反していない |
| 制約 | セクション 2 ↔ セクション 7 | インフラストラクチャの選択がセクション 2 の制約に違反していない |
| 決定 | セクション 4 ↔ セクション 9 | セクション 4 の重要な決定すべてに、セクション 9 の完全な ADR がある |
| リスク(ツールキット) | セクション 9 ↔ セクション 11 | セクション 9 の ADR にある「作成されたリスク」フィールドすべてに、セクション 11 のツールキット RISK-xx 項目がある |
| リスク(ツールキット) | セクション 10 ↔ セクション 11 | セクション 10 のツールキットの理想的なシナリオに、セクション 11 の対応する RISK-xx 項目がある |
| 横断的要素 | セクション 8 ↔ セクション 4 | 横断的なパターンが、セクション 4 の解決戦略と整合している |
| 用語 | セクション 12 ↔ すべて | セクション 12 の優先用語が、すべてのセクションで一貫して使われている |
ステップ 3 — 確認結果の報告
次の形式でレビュー結果を提示します。
## Review Report — [Scope: Section N / Sections N+M / Full Document]
**Detail level reviewed:** LEAN / ESSENTIAL / THOROUGH
**Review focus:** Completeness / Consistency / Quality / All
---
### Summary
[2–3 sentences: Overall quality assessment. How many Critical, Minor, and Suggestion items were found? What is the dominant issue type?]
---
### Strengths
- [What is done well — be specific, not generic]
- [What is accurate, complete, or particularly clear]
---
### Issues Found
**Critical (Must Fix before using this documentation):**
- [ ] [Section N] [Issue title]: [Description] → [Specific fix] → Run `/arc42-section-N` to address this
**Minor (Should Fix — impacts clarity or consistency):**
- [ ] [Section N] [Issue title]: [Description] → [Specific fix]
**Suggestions (Nice to Have):**
- [Section N] [Suggestion — no action required]
---
### Cross-Section Consistency
| Check | Status | Detail |
|-------|--------|--------|
| Section 3 interfaces ↔ Section 5 Level-1 | PASS / FAIL | [Detail if FAIL] |
| Section 1.2 goals ↔ Section 4 approaches | PASS / FAIL | [Detail if FAIL] |
| [Other checks performed] | PASS / FAIL | [Detail if FAIL] |
---
### Verdict
- [ ] **APPROVED** — Documentation is ready to use at the stated detail level
- [ ] **APPROVED WITH MINOR CHANGES** — Usable, but minor issues should be addressed soon
- [ ] **NEEDS REVISION** — One or more Critical issues must be fixed before use
ステップ 4 — 修正の提案
報告を提示した後:
- Critical の各問題について、すぐに修正することを提案します。該当するセクションスキル(
/arc42-section-N)を実行するか、修正が小さく明確な場合は内容を直接編集します。 - Minor の問題については、「このうち、今対応したいものはどれですか?」と尋ね、1 つずつ対応します。
- 修正を適用した後、影響を受けるチェックを再実行し、判定を更新します。
次のように尋ねます:「Critical の問題から始めましょうか?」