Featured image of post EARSとBDDとは?Vibe CodingでAIに要件を即座に理解させるSpec-Driven Development (SDD)

EARSとBDDとは?Vibe CodingでAIに要件を即座に理解させるSpec-Driven Development (SDD)

AIとのコミュニケーションにまだ苦労していますか?この記事では、EARS要件構文とBDD振る舞い駆動開発を組み合わせて「厳密なプロンプト」を作成し、AIに高品質なコードを正確に生成させる方法を解説します!

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は演技の結果を確認するのを助けます。

All rights reserved,未經允許不得隨意轉載
Built with Hugo
テーマ StackJimmy によって設計されています。