バイブコーディングの要件定義について

AI実装検定のご案内

バイブコーディングの要件定義とは、AIにコードを書かせる前に、「何を作るのか」「誰が使うのか」「どのような機能が必要なのか」「どの状態になれば完成なのか」といった条件を整理することです。

ただし、「バイブコーディング専用の要件定義」という正式な手法が確立されているわけではありません。

バイブコーディングは比較的新しい開発スタイルであり、一般的なソフトウェア開発で使われてきた要件定義や仕様整理の考え方を、AIを活用した開発に応用するものと考えると理解しやすいでしょう。

特にバイブコーディングでは、自然言語による指示をもとにAIがコードを生成します。

そのため、目的や条件が曖昧なまま開発を始めると、AIが不足している情報を推測し、想定とは異なる機能や仕様を実装する可能性があります。

あらかじめ重要な要件を整理しておくことで、AIとの認識のズレを減らしやすくなります。

目次

バイブコーディングで要件定義が重要な理由

AIは書かれていない要件を完全には把握できない

AIは、プロンプトやプロジェクト内の情報をもとにコードを生成します。

しかし、人間の頭の中にしか存在しない条件まで正確に把握できるわけではありません。

たとえば、AIに「美容室の予約システムを作ってください」とだけ伝えた場合でも、実際にはさまざまな条件を決める必要があります。

予約可能な時間帯はどうするのか、会員登録は必要なのか、予約キャンセルは可能なのか、管理者画面は必要なのかなど、仕様によって実装内容は大きく変わります。

こうした条件を指定しなければ、AIが一般的な実装方法をもとに補完することになります。

その結果、利用者が想定していなかった仕様になる可能性があります。

そのため、重要な部分についてはAIに推測させるのではなく、あらかじめ条件を明確にしておくことが大切です。

修正の回数を減らしやすくなる

バイブコーディングでは、AIが短時間でコードを生成できるため、試行錯誤を繰り返しながら開発を進められます。

一方で、要件が曖昧な状態では、「思っていたものと違う」という問題が起こりやすくなります。

たとえば、AIに機能を作らせた後で、「ログイン機能は必要なかった」「スマートフォン対応が必要だった」と気付けば、再び修正する必要があります。

事前に主要な要件を整理しておけば、こうした手戻りを減らしやすくなります。

AIによる不要な仕様追加を防ぎやすい

AIは、依頼内容が曖昧な場合に、一般的な開発パターンを参考に機能を補完することがあります。

そのため、依頼していない機能や処理まで追加される可能性もあります。

たとえば、ログイン機能を依頼しただけでも、AIがパスワードリセット機能やプロフィール編集機能などを提案・実装する場合があります。

こうした問題を防ぐためには、「必要な機能」だけでなく、「今回作らない機能」も明確にしておくと効果的です。

開発対象外の機能を定義することは、スコープを明確にするうえでも重要です。

バイブコーディングの要件定義で整理したい項目

システムを作る目的

最初に整理したいのが、「なぜこのシステムを作るのか」という目的です。

単に「予約システムを作る」と決めるだけではなく、「何の課題を解決するのか」まで明確にすると、AIに意図を伝えやすくなります。

たとえば、

「小規模な美容室が電話予約の対応時間を減らすために、Webから予約できるシステムを作る」

という形です。

目的が明確になれば、どの機能を優先すべきかも判断しやすくなります。

対象ユーザー

次に、「誰が使うのか」を整理します。

たとえば美容室の予約システムであれば、一般利用者だけでなく、店舗スタッフや管理者が利用する可能性があります。

対象ユーザーによって必要な画面や権限は異なります。

一般利用者は予約だけできればよい一方で、管理者はすべての予約情報を確認・変更できる必要があるかもしれません。

そのため、対象ユーザーとそれぞれの役割を明確にしておくことが重要です。

ユーザーができること

対象ユーザーを決めたら、それぞれが「何をできるのか」を整理します。

たとえば一般利用者であれば、

予約可能な日時を見る。

予約する。

予約内容を確認する。

予約をキャンセルする。

といった操作が考えられます。

要件を整理する方法として、ユーザーストーリーを利用することもできます。

たとえば、

「利用者として、予約可能な日時を確認し、そのままWeb上から予約したい」

といった形式です。

ユーザー視点で機能を整理できるため、AIに意図を伝える際にも役立ちます。

必要な機能を明確にする

必須機能と追加機能を分ける

要件定義では、必要な機能をすべて同じ優先度で扱うのではなく、必須機能と追加機能に分けると整理しやすくなります。

たとえば予約システムの場合、

予約登録。

予約一覧表示。

予約キャンセル。

管理者による予約確認。

などは初期段階で必要になる可能性があります。

一方で、

オンライン決済。

ポイント機能。

クーポン機能。

口コミ機能。

などは後から追加しても問題ないケースがあります。

MVPを設定する

バイブコーディングでも、MVPの考え方を活用できます。

MVPとは「Minimum Viable Product」の略で、ユーザーに価値を提供できる最低限の機能を備えた製品を意味します。

MVP自体はバイブコーディング固有の考え方ではありませんが、AIを使った開発とも相性があります。

最初から大量の機能をまとめて作るのではなく、必要最低限の機能から実装し、動作を確認しながら拡張していくことで、不具合や仕様のズレを発見しやすくなります。

画面要件を整理する

必要な画面を決める

Webアプリを開発する場合は、必要な画面を整理します。

たとえば予約システムであれば、

トップページ。

ログイン画面。

予約画面。

予約一覧画面。

管理画面。

などが考えられます。

ただし、画面名だけを決めるのではなく、それぞれの画面で何ができるのかまで整理することが重要です。

ユーザーフローも整理する

画面だけでなく、ユーザーがどのような順番で操作するのかも整理すると、さらに分かりやすくなります。

たとえば、

ログイン。

予約画面を開く。

日時を選択する。

予約内容を確認する。

予約を確定する。

予約完了画面を表示する。

という流れです。

ユーザーフローを決めておけば、AIが画面遷移や必要な処理を理解しやすくなります。

データ要件を整理する

保存するデータを明確にする

Webアプリや業務システムでは、どのようなデータを保存するのかも重要な要件になります。

予約システムであれば、ユーザー情報や予約情報などを扱います。

たとえばユーザー情報には、

ユーザーID。

氏名。

メールアドレス。

などがあります。

予約情報には、

予約ID。

ユーザーID。

予約日時。

予約状況。

などがあります。

重要なデータを事前に整理しておけば、後から大幅なデータ構造変更が必要になる可能性を減らせます。

非機能要件も整理する

セキュリティ

要件定義では、機能だけでなく非機能要件についても検討する必要があります。

特に本番環境で利用するサービスでは、セキュリティは重要です。

たとえば、

認証していないユーザーが管理画面へアクセスできない。

他のユーザーの個人情報を閲覧できない。

パスワードやAPIキーなどを適切に管理する。

入力値を適切に検証する。

といった条件が考えられます。

AIが生成したコードが動作しているからといって、安全であるとは限りません。

本番運用する場合は、人間によるコードレビューやセキュリティチェックも必要です。

レスポンシブ対応

スマートフォンやタブレットから利用するサービスであれば、レスポンシブ対応も要件として整理しておくとよいでしょう。

たとえば、

「スマートフォン・タブレット・PCで問題なく操作できる」

といった形で定義します。

パフォーマンス

利用者が多いサービスや大量のデータを扱うシステムでは、パフォーマンスについても検討します。

必要に応じて、

ページを一定時間以内に表示する。

大量のデータでも一覧表示できる。

同時アクセスが増えても安定して動作する。

といった条件を決めます。

アクセシビリティ

幅広いユーザーが利用するサービスでは、アクセシビリティも重要です。

たとえば、

キーボードだけでも操作できる。

フォームに適切なラベルを設定する。

文字と背景のコントラストを確保する。

スクリーンリーダーでも内容を理解できる。

などの条件が考えられます。

技術要件をどこまで決めるか

使用技術を指定する方法

バイブコーディングでは、使用する技術を事前に指定することもできます。

たとえば、

「Next.jsとSupabaseを使ってWebアプリを作る」

といった形です。

既存システムや社内の開発環境に合わせる必要がある場合は、使用技術を要件として指定した方がよいでしょう。

AIに技術候補を提案させる方法

使用技術が決まっていない場合は、AIに候補を提案させることもできます。

たとえば、

「小規模な予約Webアプリに適した技術構成を提案してください」

と指示できます。

ただし、AIが提案した技術をそのまま採用するのではなく、保守性、コスト、セキュリティ、ライセンス、将来的な拡張性などを確認することが重要です。

最終的な技術選定は、人間側で判断するのが基本です。

完成条件を明確にする

Acceptance Criteriaを設定する

バイブコーディングでは、「何ができれば完成なのか」を明確にすることが非常に重要です。

このような条件は、Acceptance Criteria、日本語では受け入れ条件と呼ばれます。

たとえば予約機能であれば、

利用者が日時を選択できる。

予約ボタンを押すとデータベースに保存される。

予約済みの時間には重複予約できない。

過去の日付は予約できない。

予約完了後に予約内容を確認できる。

といった条件です。

完成条件を明確にしておけば、「一応動いている」という感覚ではなく、具体的な条件を満たしているかどうかでAIの生成結果を確認できます。

AIに渡す要件定義の例

バイブコーディングでAIに指示する際は、次のように要件を整理すると分かりやすくなります。

プロジェクトの目的

小規模美容室向けの予約Webアプリを作成する。

電話予約の対応時間を減らし、利用者がWeb上から予約できるようにする。

対象ユーザー

一般利用者。

店舗管理者。

MVPに含める機能

予約可能日時の表示。

予約登録。

予約一覧表示。

予約キャンセル。

管理者による予約確認。

必要な画面

トップページ。

予約画面。

予約一覧画面。

管理画面。

制約

日本語で表示する。

スマートフォンに対応する。

同じ時間帯に重複予約できないようにする。

既存の認証機能は変更しない。

完成条件

利用者が日時を選択して予約すると、予約情報が保存される。

予約後は予約一覧に内容が表示される。

すでに予約されている日時は選択できない。

このように整理してAIへ渡すことで、「予約アプリを作ってください」とだけ指示するよりも、意図に近い結果を得やすくなります。

要件定義書を巨大なプロンプトにしない

プロジェクト全体の要件と作業内容を分ける

要件を整理したからといって、毎回すべての内容を巨大なプロンプトとして送る必要はありません。

実際の開発では、プロジェクト全体のルールと、今回AIに依頼する作業を分ける方法が有効です。

たとえば、

プロジェクト全体の要件。

今回実装する機能。

変更してはいけない部分。

完成条件。

という形で整理します。

変更禁止事項も伝える

AIに機能追加を依頼したときに、既存コードまで大きく変更されるケースがあります。

そのため、

「既存の認証処理は変更しない」

「データベース構造は変更しない」

「今回の作業ではUIのみ変更する」

といった変更禁止事項を伝えることも重要です。

変更範囲を限定することで、意図しない修正を防ぎやすくなります。

バイブコーディングでは要件を段階的に更新する

最初から完璧な要件を作る必要はない

バイブコーディングでは、最初からすべての要件を完全に決める必要はありません。

最低限の要件を整理したうえで、AIに実装させ、実際の動作を見ながら改善していく方法もあります。

たとえば、

要件を整理する。

AIに実装させる。

実際に動かす。

問題点を確認する。

要件を追加・修正する。

再びAIに修正させる。

という流れです。

AIによってコード生成の速度が上がることで、こうした短いサイクルを回しやすくなっています。

アジャイル開発との共通点もある

要件を段階的に更新する考え方は、バイブコーディングだけのものではありません。

アジャイル開発などでも、実際に開発しながら要件を調整していく方法は以前から使われています。

バイブコーディングでは、AIによって実装や修正を素早く行えるため、こうした反復型の開発をさらに短いサイクルで進めやすい点が特徴です。

バイブコーディングの要件定義でよくある失敗

「いい感じに作って」とだけ指示する

抽象的な指示だけでもAIはコードを生成できます。

しかし、自由度が高すぎると、利用者の意図とは異なるものが作られる可能性があります。

デザインについて「いい感じに」と伝えることはできますが、重要な機能や制約については具体的に指定する方が安全です。

一度に大量の機能を作らせる

多くの機能を一度にAIへ依頼すると、変更範囲が大きくなります。

その結果、不具合が発生した場合に原因を特定しにくくなります。

機能を小さく分割し、1つずつ実装・確認していく方が管理しやすくなります。

正常に動く場合しか考えない

要件定義では、正常系だけでなく異常系についても考える必要があります。

たとえば予約システムであれば、

入力内容に不備がある。

予約時間がすでに埋まっている。

通信エラーが発生する。

ログイン状態が切れている。

といった状況があります。

エラーが発生した場合に、システムがどのように動作するのかも決めておくことが重要です。

AIが提案した仕様をそのまま採用する

AIは要件定義を整理する際にも役立ちます。

しかし、AIが提案した内容が必ずしも最適とは限りません。

その機能が本当に必要なのか。

ユーザーの課題を解決できるのか。

コストに見合っているのか。

といった点は、人間が判断する必要があります。

要件定義そのものにもAIを活用できる

必要な機能をAIに整理させる

AIはコード生成だけでなく、要件整理にも利用できます。

たとえば、

「小規模美容室向けの予約システムを作りたいので、必要な機能をMVPと将来追加する機能に分けてください」

と指示できます。

AIが機能候補を整理した後、人間が必要かどうかを判断します。

要件の抜け漏れを確認させる

作成した要件をAIに渡して、

「不足している要件がないか確認してください」

「仕様が曖昧な部分を指摘してください」

「実装前に確認すべき質問を挙げてください」

と依頼することもできます。

AIを要件レビューの補助として活用すれば、自分だけでは気付きにくい条件を発見できる場合があります。

バイブコーディングではプロンプトだけでなく要件整理も重要

バイブコーディングでは、プロンプトの書き方が注目されがちです。

しかし、どれだけ文章が上手でも、「何を作るのか」が曖昧であれば、AIは正解を判断できません。

重要なのは、

誰が使うのか。

どのような課題を解決するのか。

何ができればよいのか。

何を作らないのか。

どの状態を完成とするのか。

といった条件を明確にすることです。

プロンプトの工夫だけでなく、要件そのものを整理する力も、バイブコーディングを効果的に進めるうえで重要になります。

まとめ

バイブコーディングの要件定義では、AIにコードの書き方を細かく指示することよりも、「何を作れば成功なのか」を明確にすることが重要です。

バイブコーディング専用の要件定義手法が確立されているわけではありませんが、一般的なソフトウェア開発で使われてきた要件定義の考え方は、AIを活用した開発でも有効です。

具体的には、

目的。

対象ユーザー。

必要な機能。

MVP。

画面。

ユーザーフロー。

データ。

非機能要件。

技術的制約。

変更してはいけない範囲。

完成条件。

などを整理すると、AIへ意図を伝えやすくなります。

また、最初から完璧な要件を作る必要はありません。

必要最低限の要件を決めてAIに実装させ、実際の動作を確認しながら仕様を修正していく方法も有効です。

バイブコーディングによってコードを書く作業を効率化できるようになっても、「何を作るべきか」「どの状態を完成とするか」を判断する役割まで不要になるわけではありません。

AIに実装を任せる範囲が広がるほど、人間側には目的や条件を整理し、生成結果が要件を満たしているか確認する力が求められるといえるでしょう。

以上、バイブコーディングの要件定義についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次