408 lines
15 KiB
Markdown
408 lines
15 KiB
Markdown
# SDD-Docs - ソフトウェア設計ドキュメント管理スキル
|
||
|
||
Claude Codeのための構造化されたソフトウェア設計ドキュメント(SDD)作成・管理スキルです。EARS記法を用いた要件定義、技術設計、タスク管理の3つのドキュメントを一貫したプロセスで作成・維持します。
|
||
|
||
---
|
||
|
||
## 目次
|
||
|
||
- [特徴](#特徴)
|
||
- [クイックスタート](#クイックスタート)
|
||
- [EARS記法について](#ears記法について)
|
||
- [ドキュメント構成](#ドキュメント構成)
|
||
- [使い方](#使い方)
|
||
- [ワークフロー](#ワークフロー)
|
||
- [ベストプラクティス](#ベストプラクティス)
|
||
- [FAQ](#faq)
|
||
- [トラブルシューティング](#トラブルシューティング)
|
||
- [リファレンス](#リファレンス)
|
||
|
||
---
|
||
|
||
## 特徴
|
||
|
||
### 解決する課題
|
||
|
||
- 曖昧で測定不可能な要件定義
|
||
- 技術的決定事項の記録不足
|
||
- タスク分解と進捗管理の困難さ
|
||
- ドキュメントの一貫性の欠如
|
||
|
||
### 提供する価値
|
||
|
||
- **明確性**: EARS記法による曖昧さのない要件定義
|
||
- **追跡可能性**: 要件→設計→タスクの明確な紐付け
|
||
- **テスト可能性**: すべての要件が検証可能
|
||
- **一貫性**: 統一されたドキュメント構造
|
||
|
||
---
|
||
|
||
## クイックスタート
|
||
|
||
### 1. スキルを有効化
|
||
|
||
Claude Codeでこのスキルが自動的に提案されます。
|
||
|
||
### 2. プロジェクトでドキュメントを初期化
|
||
|
||
```
|
||
docsディレクトリを初期化してください
|
||
```
|
||
|
||
### 3. 生成されるドキュメント
|
||
|
||
```
|
||
your-project/
|
||
└── docs/
|
||
├── requirements.md # 要件定義書(EARS記法)
|
||
├── design.md # 設計書
|
||
└── tasks.md # タスク管理書
|
||
```
|
||
|
||
### 4. 使用例
|
||
|
||
**要件を追加:**
|
||
```
|
||
ユーザー認証機能の要件を追加してください
|
||
```
|
||
|
||
**設計を文書化:**
|
||
```
|
||
認証システムのアーキテクチャを設計書に追加してください
|
||
```
|
||
|
||
**タスクに分解:**
|
||
```
|
||
認証機能を実装可能なタスクに分解してください
|
||
```
|
||
|
||
---
|
||
|
||
## EARS記法について
|
||
|
||
EARS(Easy Approach to Requirements Syntax)は、明確で曖昧さのない要件を記述するための構造化された記法です。
|
||
|
||
### 5つの基本パターン
|
||
|
||
| パターン | 形式 | 使用場面 | 例 |
|
||
|---------|------|----------|-----|
|
||
| **基本** | システムは〜しなければならない | 常時適用される要件 | システムはパスワードをbcryptで暗号化しなければならない |
|
||
| **イベント** | 〜の時、システムは〜しなければならない | イベント駆動要件 | ユーザーがログインボタンをクリックした時、システムは認証処理を開始しなければならない |
|
||
| **条件** | もし〜ならば、システムは〜しなければならない | 状態依存要件 | もし認証が失敗した場合、システムはエラーメッセージを表示しなければならない |
|
||
| **継続** | 〜の間、システムは〜しなければならない | 継続的要件 | ファイルアップロード中、システムは進捗バーを表示しなければならない |
|
||
| **場所** | 〜において、システムは〜しなければならない | コンテキスト固有要件 | EU地域において、システムはGDPR同意バナーを表示しなければならない |
|
||
|
||
### EARS記法の利点
|
||
|
||
- **一貫性**: すべての要件が同じ構造に従う
|
||
- **明確性**: 曖昧な表現を排除
|
||
- **テスト可能性**: 各要件が検証可能
|
||
- **完全性**: トリガー、条件、動作が明確
|
||
|
||
詳細: [EARS記法リファレンス](references/ears_notation_ja.md)
|
||
|
||
---
|
||
|
||
## ドキュメント構成
|
||
|
||
### 3つの必須ドキュメント
|
||
|
||
```mermaid
|
||
graph LR
|
||
A[requirements.md<br/>何を作るか] --> B[design.md<br/>どう作るか]
|
||
B --> C[tasks.md<br/>どう実装するか]
|
||
C --> D[実装]
|
||
D --> A
|
||
```
|
||
|
||
#### 1. requirements.md - 要件定義書
|
||
|
||
**目的**: 何を作るかを定義
|
||
|
||
**含まれる内容**:
|
||
- ユーザーストーリー(私は〜として、〜したい、なぜなら〜)
|
||
- EARS記法による受入基準(REQ-001, REQ-002...)
|
||
- 非機能要件(NFR-001, NFR-002...)
|
||
|
||
**例**:
|
||
```markdown
|
||
### ストーリー1: ユーザーログイン
|
||
**私は** 登録済みユーザーとして
|
||
**ログインしたい**
|
||
**なぜなら** 個人データにアクセスできるから
|
||
|
||
#### 受入基準
|
||
- REQ-001: ユーザーがログインボタンをクリックした時、システムは2秒以内に認証を完了しなければならない
|
||
- REQ-002: もしパスワードが誤っている場合、システムはエラーメッセージを表示しなければならない
|
||
```
|
||
|
||
#### 2. design.md - 設計書
|
||
|
||
**目的**: どのように作るかを文書化
|
||
|
||
**含まれる内容**:
|
||
- アーキテクチャ図(Mermaid形式)
|
||
- コンポーネント設計(目的、責務、インターフェース)
|
||
- データモデル・スキーマ
|
||
- 技術的決定事項と根拠
|
||
|
||
**例**:
|
||
```markdown
|
||
### コンポーネント: 認証サービス
|
||
**目的**: ユーザー認証とセッション管理
|
||
**責務**:
|
||
- JWT トークンの生成・検証
|
||
- パスワードのハッシュ化(bcrypt)
|
||
- セッションの管理
|
||
|
||
**インターフェース**:
|
||
- POST /auth/login - ログイン
|
||
- POST /auth/logout - ログアウト
|
||
```
|
||
|
||
#### 3. tasks.md - タスク管理書
|
||
|
||
**目的**: どのように実装するかを計画
|
||
|
||
**含まれる内容**:
|
||
- フェーズごとのタスク分解
|
||
- 各タスクの受入基準
|
||
- 依存関係と見積もり時間
|
||
- ステータス管理(TODO/IN_PROGRESS/BLOCKED/REVIEW/DONE)
|
||
|
||
**例**:
|
||
```markdown
|
||
#### タスク1.1: ログインエンドポイント実装
|
||
**説明**: POST /auth/loginエンドポイントの実装
|
||
**受入基準**:
|
||
- [ ] メール/パスワード検証
|
||
- [ ] JWTトークン生成
|
||
- [ ] エラーハンドリング
|
||
**依存関係**: なし
|
||
**推定工数**: 4時間
|
||
**ステータス**: `TODO`
|
||
```
|
||
|
||
---
|
||
|
||
## 使い方
|
||
|
||
### 基本的な使用フロー
|
||
|
||
1. **要件定義から開始**
|
||
```
|
||
ユーザー認証機能の要件を定義してください
|
||
```
|
||
→ `docs/requirements.md`にEARS記法で要件が追加される
|
||
|
||
2. **設計を文書化**
|
||
```
|
||
認証機能のアーキテクチャを設計してください
|
||
```
|
||
→ `docs/design.md`にコンポーネント設計が追加される
|
||
|
||
3. **タスクに分解**
|
||
```
|
||
認証機能の実装タスクを作成してください
|
||
```
|
||
→ `docs/tasks.md`に実装可能なタスクが追加される
|
||
|
||
4. **実装とレビュー**
|
||
```
|
||
タスク1.1を実装してください
|
||
```
|
||
→ コードが実装され、タスクステータスが更新される
|
||
|
||
5. **ドキュメントの検証**
|
||
```
|
||
ドキュメントをレビューしてください
|
||
```
|
||
→ チェックリストに基づいてレビューが実行される
|
||
|
||
### 高度な使用例
|
||
|
||
**既存プロジェクトのドキュメント化:**
|
||
```
|
||
このプロジェクトの既存コードから要件と設計を抽出してください
|
||
```
|
||
|
||
**要件の検証:**
|
||
```
|
||
requirements.mdの要件がEARS記法に従っているか確認してください
|
||
```
|
||
|
||
**タスクの進捗確認:**
|
||
```
|
||
完了したタスクと残りのタスクをリストアップしてください
|
||
```
|
||
|
||
---
|
||
|
||
## ワークフロー
|
||
|
||
### 標準的な開発フロー
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────┐
|
||
│ 1. 要件定義(requirements.md) │
|
||
│ ↓ ユーザーストーリーとEARS記法で「何を作るか」を定義 │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 2. 設計(design.md) │
|
||
│ ↓ アーキテクチャとコンポーネントで「どう作るか」記述 │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 3. タスク計画(tasks.md) │
|
||
│ ↓ 実装可能な粒度に分解して「どう実装するか」計画 │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 4. 実装 │
|
||
│ ↓ タスクを実行し、ステータスを更新 │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 5. レビュー │
|
||
│ ↓ ドキュメントとコードの整合性を確認 │
|
||
├─────────────────────────────────────────────────────────┤
|
||
│ 6. 反復 │
|
||
│ ↓ 新しい要件や変更に応じてドキュメントを更新 │
|
||
└─────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### ドキュメント検証チェックリスト
|
||
|
||
**requirements.mdの確認項目:**
|
||
- [ ] すべての要件がEARS記法に従っている
|
||
- [ ] 要件IDが一意である(REQ-XXX、NFR-XXX)
|
||
- [ ] 各要件がテスト可能である
|
||
- [ ] 非機能要件が含まれている
|
||
- [ ] 具体的な数値が使用されている
|
||
|
||
**design.mdの確認項目:**
|
||
- [ ] アーキテクチャ概要がある
|
||
- [ ] 主要コンポーネントが定義されている
|
||
- [ ] インターフェースが明確である
|
||
- [ ] 技術的決定事項と根拠が記載されている
|
||
- [ ] 図表が含まれている(Mermaid推奨)
|
||
|
||
**tasks.mdの確認項目:**
|
||
- [ ] タスクが適切な粒度に分解されている(半日〜2日程度)
|
||
- [ ] 各タスクに受入基準がある
|
||
- [ ] 依存関係が明確である
|
||
- [ ] 見積もり時間が記載されている
|
||
- [ ] ステータスが有効な値である
|
||
|
||
---
|
||
|
||
## ベストプラクティス
|
||
|
||
### 1. 具体的で測定可能な値を使用
|
||
|
||
**悪い例**: システムは速くなければならない
|
||
**良い例**: システムはユーザークエリに200ミリ秒以内に応答しなければならない
|
||
|
||
### 2. 1要件1文の原則
|
||
|
||
**悪い例**: システムはデータを検証し、保存し、メールを送信しなければならない
|
||
**良い例**:
|
||
- REQ-001: システムはデータを検証しなければならない
|
||
- REQ-002: データが有効な場合、システムは保存しなければならない
|
||
- REQ-003: データ保存後、システムは確認メールを送信しなければならない
|
||
|
||
### 3. 曖昧な用語を避ける
|
||
|
||
**避けるべき**: すべきである、できる、かもしれない、おそらく、一般的に
|
||
**使用する**: しなければならない
|
||
|
||
### 4. 依存関係を明確にする
|
||
|
||
タスク間の依存関係を明記して、実装順序を明確にします。
|
||
|
||
### 5. 図表を積極的に活用
|
||
|
||
Mermaid記法でアーキテクチャ図、シーケンス図、ER図を作成します。
|
||
|
||
### 6. 継続的な同期を維持
|
||
|
||
プロジェクトの進展に応じて、ドキュメントを常に最新の状態に保ちます。
|
||
|
||
---
|
||
|
||
## FAQ
|
||
|
||
**Q: EARS記法は必須ですか?**
|
||
A: 推奨されますが、プロジェクトに応じて調整可能です。ただし、EARS記法を使用することで要件の明確性が大幅に向上します。
|
||
|
||
**Q: 既存プロジェクトにも適用できますか?**
|
||
A: はい。既存のコードベースから要件と設計を抽出して、ドキュメント化することができます。
|
||
|
||
**Q: 英語版はありますか?**
|
||
A: 現在は日本語版のみですが、将来的に英語版テンプレートの追加を検討しています。
|
||
|
||
**Q: タスクのステータス管理はどうすればいいですか?**
|
||
A: マークダウンファイル内で直接更新します。Claude Codeを使用すると自動的に更新されます。
|
||
|
||
**Q: 他のツール(Jira、GitHub Issues)との連携は?**
|
||
A: 将来的な拡張機能として検討中です。現在はマークダウンベースでの管理のみです。
|
||
|
||
---
|
||
|
||
## トラブルシューティング
|
||
|
||
### 問題: スキルが認識されない
|
||
|
||
**原因**: スキルファイルのパスが正しくない
|
||
**解決策**:
|
||
1. `.claude-plugin/marketplace.json`のパスを確認
|
||
2. `sdd-docs/SKILL.md`が存在するか確認
|
||
|
||
### 問題: テンプレートが見つからない
|
||
|
||
**原因**: テンプレートファイルのパスが間違っている
|
||
**解決策**:
|
||
```bash
|
||
ls -la assets/templates/
|
||
```
|
||
で3つのテンプレートファイルが存在するか確認
|
||
|
||
### 問題: EARS記法が正しく適用されない
|
||
|
||
**原因**: パターンの理解不足
|
||
**解決策**: [EARS記法リファレンス](references/ears_notation_ja.md)を参照し、5つの基本パターンを確認
|
||
|
||
---
|
||
|
||
## リファレンス
|
||
|
||
### 詳細ドキュメント
|
||
|
||
- **EARS記法の完全ガイド**: [ears_notation_ja.md](references/ears_notation_ja.md)
|
||
- **実装例集**: [examples_ja.md](references/examples_ja.md)
|
||
- ECショッピングカート(requirements.md例)
|
||
- タスク管理API(design.md例)
|
||
- ユーザー認証機能(tasks.md例)
|
||
|
||
### テンプレート
|
||
|
||
- [requirements_template_ja.md](assets/templates/requirements_template_ja.md)
|
||
- [design_template_ja.md](assets/templates/design_template_ja.md)
|
||
- [tasks_template_ja.md](assets/templates/tasks_template_ja.md)
|
||
|
||
### ディレクトリ構造
|
||
|
||
```
|
||
sdd-docs/
|
||
├── SKILL.md # スキル定義ファイル
|
||
├── README.md # このファイル
|
||
├── assets/
|
||
│ └── templates/ # ドキュメントテンプレート
|
||
│ ├── requirements_template_ja.md
|
||
│ ├── design_template_ja.md
|
||
│ └── tasks_template_ja.md
|
||
└── references/ # リファレンス資料
|
||
├── ears_notation_ja.md # EARS記法詳細ガイド
|
||
└── examples_ja.md # 実装例集
|
||
```
|
||
|
||
---
|
||
|
||
## 謝辞
|
||
|
||
- **EARS記法**: Alistair Mavin et al.による"EARS - The Easy Approach to Requirements Syntax"
|
||
- **標準規格**: IEEE 830-1998, ISO/IEC/IEEE 29148:2018
|