# 要件記述形式とバリデーション
## 概要
wassdenプロジェクトでの要件記述形式とバリデーション基準を定義します。
## 要件記述形式
wassdenでは「システムは...すること」形式で機能要件を記述します:
```
システムは<動作>すること
```
## OK例
```
システムはユーザー認証機能を提供すること
システムはAPIリクエストに対してJSON形式でレスポンスを返すこと
システムはファイルアップロード時にプログレスを表示すること
```
## NG例
```
❌ システムは高速に動作する (「すること」がない)
❌ ユーザーが満足する機能 (主語が「システム」でない)
❌ 必要に応じて処理実行 (動作が不明確)
```
## IDフォーマット
### 機能要件ID
- 形式: `REQ-XX` (XXは01-99)
- 例: `REQ-01`, `REQ-02`, `REQ-15`
- 00は無効
### 非機能要件ID
- 形式: `NFR-XX` (XXは01-99)
- 例: `NFR-01`, `NFR-02`
### KPI ID
- 形式: `KPI-XX` (XXは01-99)
- 例: `KPI-01`, `KPI-02`
## バリデーション基準
1. **ID形式チェック**: 正規表現 `^REQ-\d{2}$` に適合
2. **ID重複チェック**: 同一ID使用禁止
3. **必須セクション**: サマリー、用語集、スコープ、制約、非機能要件、KPI、機能要件
4. **文書構造**: Markdown形式でセクション見出し(## セクション名)
5. **100%トレーサビリティ**: 全要件は必ずdesign.mdとtasks.mdで参照されること
## 正規表現パターン
```regex
# 機能要件ID
^REQ-\d{2}$
# 非機能要件ID
^NFR-\d{2}$
# KPI ID
^KPI-\d{2}$
# セクション見出し
^## \d*\.?\s*セクション名
```