# 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
何を作るか] --> B[design.md
どう作るか]
B --> C[tasks.md
どう実装するか]
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