# EARS形式要件記述規約

EARS（Easy Approach to Requirements Syntax）に基づく要件記述のルール。

## 原則

| 原則 | 基準 |
|------|------|
| テスト可能性 | 各受け入れ条件が自動テストまたは手動テストで検証可能であること |
| 一意性 | 1条件1振る舞い。複数振る舞いを含む場合は分割する |
| 明確性 | 曖昧な修飾語（適切に、迅速に、十分に等）を含まないこと |
| 完全性 | 正常系・異常系・境界条件を網羅すること |

## 要件構造

### 要件ID

数値IDのみ使用する。プレフィックス・アルファベットは禁止。

```
// OK
1, 1.1, 1.2, 2, 2.1

// REJECT
REQ-001, A, B, FR-1
```

### 目的文

ユーザーストーリー形式で記述する。

```markdown
**目的:** {ロール} として {機能} を実現し、{利益} を得たい。
```

### 受け入れ条件のパターン

#### イベント駆動

```
[イベント]が起きたとき、[システム]は[応答]しなければならない
```

#### 状態駆動

```
[条件]ならば、[システム]は[応答]しなければならない
```

#### 望ましくない振る舞い

```
[望ましくないイベント]が発生した場合、[システム]は[応答]しなければならない
```

#### 任意機能

```
[機能/オプション]を含む場合、[システム]は[応答]しなければならない
```

#### 常時

```
[システム]は常に[応答]しなければならない
```

## 品質チェック

| チェック | REJECT基準 |
|---------|-----------|
| 曖昧な修飾語 | 「適切に」「迅速に」「十分に」「正しく」等を含む |
| 複数振る舞い | 1条件に「および」「かつ」で複数応答を含む |
| 未定義の主語 | 「システム」のみで具体的なモジュール名がない |
| テスト不可能 | 検証手段が定義できない |
| 実装指示 | 「〜のアルゴリズムを使用して」等、HOWを含む |
