「要件定義書はどこ?」「この設計、どの要件から来てるの?」「あれ、このリンク切れてる…」
チームが大きくなると、要件や設計ドキュメントが散らばり始めます。Confluence 、Notion 、Excel、Wiki、Markdown…ツールはバラバラ、リンクは切れ、誰も全体像を把握できません。
SARA (Solution Architecture Requirement for Alignment)は、この問題を「Markdown + Git + 知識グラフ(ドキュメント同士の関係をグラフ構造で表したもの)」で解決するCLIツールです。要件をMarkdownで書き、YAMLフロントマター(Markdown先頭のメタ情報)で関係を定義するだけで、トレーサビリティ(要件から実装までを辿れる性質)を自動で検証できます。
SARAとは?
SARAは、要件・設計ドキュメントを知識グラフとして管理するRust 製のCLI(コマンドラインで操作するツール)です。Apache 2.0ライセンスで利用できます。
主な特徴:
- Markdown-first: プレーンテキストで要件を管理(ベンダーロックイン=特定ツールに縛られにくい)
- 複数リポジトリ対応: チーム横断でドキュメントを集約
- トレーサビリティ検証: リンク切れ・循環依存・孤児アイテムを自動検出
- Git統合: ブランチ間の差分比較、PRでの自動検証
- カバレッジレポート: 要件の実装状況を可視化
何ができるのか
SARAが提供する主要コマンド:
| コマンド | 用途 |
|---|---|
sara init <FILE> |
Markdownファイルに要件メタデータを追加 |
sara parse |
ドキュメントを解析して知識グラフを構築 |
sara validate |
リンク切れ・循環依存・孤児を検出 |
sara query <ID> |
要件の上流/下流を追跡 |
sara report coverage |
実装カバレッジを出力 |
sara report matrix |
トレーサビリティマトリクスを生成 |
sara diff <REF1> <REF2> |
Git参照間で要件の変更を比較 |
実例: 要件のトレーサビリティを追跡
|
|
実例: リンク切れを検出
|
|
Markdownで要件を書く
SARAの要件ドキュメントは、YAMLフロントマター付きのMarkdownファイルです。ドキュメント同士の関係(派生・満たす・依存など)をIDでつなぎます。
|
|
要件の階層構造
SARAは9種類のドキュメントタイプを認識します:
graph TD
SOL[Solution
顧客向けソリューション]
UC[Use Case
顧客ニーズ]
SCEN[Scenario
システム振る舞い]
SYSREQ[System Requirement
システム要件]
SYSARCH[System Architecture
プラットフォーム実装]
HWREQ[Hardware Requirement
HW要件]
SWREQ[Software Requirement
SW要件]
HWDD[HW Detailed Design
HW実装]
SWDD[SW Detailed Design
SW実装]
SOL --> UC
UC --> SCEN
SCEN --> SYSREQ
SYSREQ --> SYSARCH
SYSARCH --> HWREQ
SYSARCH --> SWREQ
HWREQ --> HWDD
SWREQ --> SWDD
リレーションシップの種類
| リレーション | 方向 | 用途 |
|---|---|---|
refines / is_refined_by |
上流 / 下流 | Solution ↔ Use Case ↔ Scenario |
derives_from / derives |
上流 / 下流 | Scenario ↔ System Requirement |
satisfies / is_satisfied_by |
上流 / 下流 | Requirement ↔ Architecture/Design |
depends_on / is_required_by |
同レベル | 同じタイプの要件間の依存関係 |
リレーションは片方向だけ定義すればOKです。SARAが自動的に逆方向のリンクを推論します。
実務での使い方
0. 10分で試す(最小構成)
まずはローカルで、小さな要件セットを作って動かしてみます。
前提:
- Rustが入っていること(未導入ならrustup )
1. SARAをインストール
|
|
2. サンプル要件を作って検証
別ディレクトリで、要件Markdownを作ります。
|
|
この時点で、リンク切れや循環依存があると sara validate が落ちます。PR(Pull Request)でこれが動くと、ドキュメントの「壊れ」を早めに潰せます。
1. プロジェクト初期化
|
|
2. 要件ドキュメント作成
|
|
生成されたファイル:
|
|
3. CI/CDでの自動検証
CI/CD(継続的インテグレーション/継続的デリバリー)で、要件の整合性チェックを自動化できます。
GitHub Actions
での例(PRで sara validate を必須化):
|
|
4. リリース前の差分確認
|
|
どんなチームに刺さるか
SARAが特に有効なケース:
✅ 向いているチーム
- 複数リポジトリで開発: マイクロサービス、モノレポ、チーム横断プロジェクト
- Git運用が成熟: PRレビュー、ブランチ戦略、CI/CDが整備されている
- トレーサビリティが必須: 医療機器、自動車、航空宇宙、金融など規制産業
- ドキュメントがMarkdown: 既にREADME、ADR(Architecture Decision Record)、RFC(Request for Comments)をMarkdownで管理している
❌ 向いていないケース
- 非技術者が主体: Markdownに慣れていないステークホルダーが多い
- Gitを使わない: バージョン管理がない、またはGit以外のVCS(バージョン管理システム)
- 要件が少ない: 小規模プロジェクト(10件未満の要件)
- リアルタイム共同編集が必要: Notion、Confluenceのようなリッチエディタが必須
Mermaidとの組み合わせ
SARAの知識グラフは、Mermaid (テキストから図を生成する記法)で可視化できます。
現時点では、SARAの出力をそのままMermaidに落とす機能は見当たりませんでした(少なくともREADME上は)。ただ、sara query の結果を見ながら、最低限の関係図をMermaidで残すのは現実的です。
graph LR
SCEN001[SCEN-001: User Login]
SYSREQ001[SYSREQ-001: Response Time]
SYSARCH001[SYSARCH-001: Auth Architecture]
SCEN001 -->|derives| SYSREQ001
SYSREQ001 -->|is_satisfied_by| SYSARCH001
まとめ
SARAは「要件をMarkdownで書く」という選択肢を、実用レベルに引き上げるツールです。
SARAを試すべき理由:
- ベンダーロックインなし: プレーンテキストなので、いつでも他ツールに移行可能
- Git統合: 既存のワークフロー(PR、レビュー、CI/CD)にそのまま乗る
- 自動検証: 人間が見落とすリンク切れや循環依存を機械的に検出
- チーム横断: 複数リポジトリの要件を一元管理
次のアクション:
- SARAのリポジトリをクローン
cargo install --path sara-cliでインストール- サンプルプロジェクト(
examples/smart-home)を試す - 自分のプロジェクトで
sara initを実行
要件管理を「Excelの呪縛」から解放したい方は、ぜひ試してみてください。