Files
gh-windschord-claude-skils-…/skills/sdd-docs/README.md
2025-11-30 09:06:31 +08:00

408 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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記法について
EARSEasy 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例
- タスク管理APIdesign.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