Vibe Codingの開発プロセス中に、AIが生成したコードが論理的な抜け穴だらけで、修正しながら人生に疑問を感じたことはありませんか?
従来の開発では、仕様(Spec)が正義です。しかし、AIと協働する場合、私たちはより「監督」に近い存在です。
あの才能はあるけれど時々「暴走」するAI俳優に良い演技をさせるには、2つの強力なツールが必要です:EARS(脚本ロジック) と BDD(受け入れスチル) です。
EARS:要件を「論理ブロック」に変える
「システムをもっと使いやすくしてほしい」「処理速度を速くしてほしい」といった要件を書くPMに会ったことがあるでしょう。これはコードを書く際には災害です。
EARS (Easy Approach to Requirements Syntax) とは、簡単に言えば、これらの「曖昧な形容詞」を「正確な命令」に変換することです。
EARSはトップクラスのPrompt Engineeringのようなもので、閉じた論理で話すことを強制します。主要な5つの文型により、いつでも要件の境界を「ロック」できます:
| タイプ | 説明 |
|---|---|
| Ubiquitous (普遍型) | システムは...しなければならない(呼吸のように、常に遵守する必要がある)。 |
| Event-driven (イベント駆動型) | [イベントが発生]したとき、システムは...しなければならない。 |
| Unwanted Behavior (望ましくない振る舞い) | もし[悪いこと]が起きたら、システムは...しなければならない(これがエラー処理の魂です)。 |
| State-driven (状態駆動型) | [特定の状態]の間、システムは...しなければならない。 |
| Optional Feature (オプション機能) | [機能が含まれる]場合、システムは...しなければならない。 |
EARSは厳格なルールを設定するのに役立ちます
AIが論理的に「真顔でナンセンスを話す」ことを不可能にします。
BDD:テストを「映画の脚本」に変える
EARSが厳格な契約書なら、BDD (Behavior Driven Development) は「血の通った物語」です。それは a == b をテストするのではなく、「ユーザーが何が起こったと感じるか」をテストします。
BDDで使用される構文は Gherkin(ピクルス、パリッとして爽やかであるべき!)と呼ばれ、核心となる三部作は以下の通りです:
| 構文 | 説明 |
|---|---|
| 🎬 Given (背景) | 撮影前のシーン設定(例:ポケットに100ドル持っている)。 |
| ⚡ When (アクション) | 監督がアクションと叫ぶ瞬間(例:激辛イカを注文した)。 |
| ✅ Then (結果) | 観客が見る結末(例:香りの良いイカを受け取り、財布が60ドル減った)。 |
この「物語を語る」方法を通じて、エンジニアでなくても私たちとコミュニケーションがとれ、AIもこれらの「実例」を通してあなたの真の意図を理解できます。
EARS vs BDD の違いは何ですか?
これら2つはそれぞれの義務を果たし、組み合わせることで真に「無敵」になります。
| 特徴 | EARS (要件構文) | BDD (振る舞い駆動) |
|---|---|---|
| 核心精神 | 正確な定義 (曖昧さの排除) | 合意と検証 (物語を語る) |
| 書く感覚… | 法的条項 | 映画の脚本 |
| 主な聴衆 | PM、アーキテクト、ルール作成者 | エンジニア、QA、AIアシスタント |
| 解決する課題 | 「作ったものが思っていたものと違う!」 | 「ロジックは正しいが、使い物にならない!」 |
簡単に言えば:EARSはルールの設定を助け、BDDは結果の確認を助けます。
EARS 高度な応用:Vibe Coding 実践
私たちはEARSのルールとBDDの脚本を直接プロンプトに詰め込み、AIに開発させます。
「電子ウォレットの引き落とし」を開発する際、次のような指示を出してみてください:
# タスク:引き落としAPIの実装を手伝ってください
## EARS ロジック (厳密に遵守してください):
- [Event-driven]: リクエストを受信したとき、残高を検証しなければならない。
- [Unwanted]: 残高不足の場合、400エラーコード 'INSUFFICIENT_FUNDS' を返さなければならない。
- [State-driven]: ウォレットが 'Frozen' 状態の間、すべての引き落としを拒否しなければならない。
## BDD 受け入れスクリプト (Jestテスト用):
Scenario: 残高不足による引き落とし失敗
Given ユーザー残高は 50 ドル
When 100 ドルの引き落としリクエストを受信
Then API は HTTP 400 を返すべき
And エラーコードは 'INSUFFICIENT_FUNDS' であるべき
これをAIに投げてみてください。生成されるコードは目標から大きく外れることはありません!
結論
日常の開発であれVibe Codingであれ、EARSとBDDは効率を向上させるための神器です。
EARSは厳格なルールを設定するのを助け、BDDは演技の結果を確認するのを助けます。