# formulation
> Example Mappingの成果物を実行可能なGherkin仕様に変換します。
- Author: Yoda Keisuke
- Repository: yodakeisuke/BDD-prompts-with-eval
- Version: 20251214163058
- Stars: 0
- Forks: 0
- Last Updated: 2026-02-07
- Source: https://github.com/yodakeisuke/BDD-prompts-with-eval
- Web: https://mule.run/skillshub/@@yodakeisuke/BDD-prompts-with-eval~formulation:20251214163058
---
# Formulation Skill
Example Mappingの成果物を実行可能なGherkin仕様に変換します。
## Input
- Example Mappingカード (📄 黄 / 📘 青 / 📗 緑 / 📕 赤)
- Active Listningの成果物 (ビジネス価値、ペルソナ、スコープ)
## Output
- `.feature` ファイル (Gherkin形式)
- 実行可能なテストシナリオ
- 品質検証済みの受入基準
## Core Workflow
### 1. Feature + Background (5分)
Story Card → Feature定義
```gherkin
Feature: [フィーチャー名]
[ビジネス価値を含む説明]
Background:
Given [すべてのシナリオに共通する前提条件]
```
**原則:**
- フィーチャー名は3-5単語
- 説明にビジネス価値を明記
- 繰り返し出現するGivenをBackgroundに抽出
### 2. Rules (5分)
Blue Cards → Gherkin Rules
```gherkin
Rule: [ビジネスルール名]
[ルールの詳細説明]
```
**原則:**
- 1 Blue Card = 1 Rule
- ビジネス用語で記述
- 1 Featureに1-5個のRuleが適切
### 3. Examples (10-15分)
Green Cards → Given-When-Then シナリオ
```gherkin
Example: [シナリオの説明]
Given [前提条件]
When [アクション]
Then [期待される結果]
```
**変換パターン:**
```
📗 入力: "Mac" → 結果: "MacBook Pro", "MacBook Air"
↓ 展開
Example: 前方部分一致で複数商品がヒットする
Given 商品一覧画面を開いている
When 検索キーワード "Mac" を入力する
And 検索ボタンをクリックする
Then 以下の商品が表示される
| 商品名 |
| MacBook Pro |
| MacBook Air |
```
**原則:**
- 1 Green Card = 1 Example
- 1 Example = 1つの振る舞い
- 3-5ステップが目安
- 暗黙の前提を明示的なGivenに
- 結果を検証可能なThenに
### 4. Quality Check (5分)
以下の観点で検証:
**ビジネス観点:**
- [ ] ビジネス用語で記述
- [ ] ステークホルダーが理解可能
- [ ] ビジネス価値が明確
**技術観点:**
- [ ] 実行可能な形式
- [ ] 検証可能な期待結果
- [ ] 各Exampleは単一の振る舞い
- [ ] 3-5ステップ
**完全性:**
- [ ] 正常系カバー
- [ ] 異常系・エラーケース
- [ ] 境界値ケース
## Specification by Example 原則
### ✅ DO
1. **具体例から始める**: 抽象的なルールではなく具体値を使う
2. **ビジネス言語**: 技術用語・実装詳細を避ける
3. **Living Documentation**: 仕様書・受入基準・テスト・ドキュメントを兼ねる
### ❌ DON'T
1. UI要素ID・APIエンドポイントを含めない
2. 曖昧な表現を使わない (「適切に」「正しく」)
3. 技術的なセットアップを含めない (DBリセットなど)
## Advanced Patterns
**Scenario Outline** (データ駆動):
```gherkin
Scenario Outline: [シナリオ名]
Given [前提]
When [アクション] ""
Then [結果] ""
Examples:
| param | expected |
| val1 | result1 |
```
**Data Tables**:
```gherkin
Given 以下のユーザーが登録されている
| ユーザー名 | メール |
| Alice | alice@example.com |
```
**Doc Strings**:
```gherkin
When 以下のJSONを送信する
"""
{"key": "value"}
"""
```
## References
詳細パターンとアンチパターンは `reference/` を参照:
- `gherkin-patterns.md`: Given-When-Thenパターン集、品質チェックリスト
- `complete-example.md`: Example Mapping → Gherkin 完全変換例
- `anti-patterns.md`: よくある間違いと回避策
## Recovery Strategies
- **複雑すぎる** → Example Mappingに戻ってストーリー分割
- **技術的すぎる** → ビジネスステークホルダーにレビュー依頼
- **曖昧すぎる** → 具体的な値・状態を追加
- **長すぎる** → Background抽出 or シナリオ分割
---
*Gojko Adzic "Specification by Example" / Cucumber Gherkin Guide / Dan North BDD Practicesに基づく*