バイブコーディング実践編 — Claude Code を中心に AIで安全に作る力テスト戦略とデバッグ — VibeContract

VibeContract — テストで仕様を固定

読了目安 5

学習のねらい

AI にコードを書かせるとき、「何ができていればOKか」という仕様を明確に伝えることが重要です。 しかし、自然言語での指示だけでは曖昧さが残りがちで、AI が想定外のコードを生成してしまうこともあります。 そこで役立つのが VibeContract の考え方です。 これは、AI に実装を任せる前に、受入テスト(Acceptance Test、システムがユーザーの要求を満たしているかを確認するテスト)を先に書くことで、AI が満たすべき「契約(Contract)」をコードで明確にする手法です。 本レッスンでは、VibeContract を使って AI との協調開発を効率的に進める方法を学びましょう。

Contract = 受入テストで仕様を固定する

VibeContract の「Contract」とは、AI が生成するコードが満たすべき「仕様」を指します。 この仕様を、人間が書いたテストコード(主に受入テスト)として表現します。 AI に実装を依頼する前に、まずその機能が「どう動けば正しいか」をテストコードで定義してしまうのです。

このアプローチの利点は以下の通りです。

  • 曖昧さの排除: 自然言語の指示だけでは伝わりにくいニュアンスやエッジケースも、テストコードで具体的な振る舞いとして記述できます。
  • 品質保証: AI が生成したコードが、定義されたテストをパスすることで、最低限の品質が保証されます。
  • リグレッション防止: 後からコードを変更しても、既存のテストがパスし続けることで、以前動いていた機能が壊れていないか(リグレッション)を確認できます。

AI 生成の Before/After で保証する

VibeContract のワークフローは、主に以下のステップで進みます。

  1. テストファースト: まず、実装したい機能に対する受入テスト(最初は失敗するテスト)を書きます。
  2. AI に実装を依頼: 失敗するテストと、機能の概要を AI (例: Claude Code)に渡して、実装を依頼します。
  3. テストのパスを確認: AI が生成したコードでテストがパスすることを確認します。もしパスしなければ、AI に修正を依頼するか、テストコードを見直します。

この「テストを先に書き、AI に実装させ、テストで確認する」というループは、TDD(Test-Driven Development、テスト駆動開発) の考え方に非常に近いです。 AI との協調開発においては、このループを高速で回すことが生産性向上に繋がります。

失敗テストファーストの重要性

TDD の原則の1つに「Red, Green, Refactor」というものがあります。

  • Red (赤): 最初に失敗するテストを書きます。これは「まだ機能が実装されていない」という状態を示します。
  • Green (緑): テストがパスするように最小限のコードを実装します。この段階では、コードの品質や設計は二の次で構いません。AI に実装を依頼するフェーズがここにあたります。
  • Refactor (リファクタリング): テストがパスした状態を保ちながら、コードの品質を改善します。AI にリファクタリングを依頼したり、自分で手を入れたりします。

AI に実装を任せる場合でも、この「失敗テストファースト」は非常に重要です。 最初からテストがパスしてしまうと、「本当にそのテストが機能の正しさを検証しているのか?」が分からなくなってしまうことがあります。 一度失敗させてからパスさせることで、テストと実装の関連性を明確にできます。

まとめ

VibeContract は、AI にコード生成を依頼する際に、受入テストを先に書くことで仕様を明確にし、品質を保証する効果的な手法です。 「失敗テストファースト」の原則を守り、AI との TDD ループを回すことで、より信頼性の高いコードを効率的に開発できるようになります。

参考リンク


VibeContract — テストで仕様を固定 | バイブコーディング実践編 - AI研修