生成AIに「暴走」させない技術――仕様駆動開発という考え方
「ChatGPTにコードを書いてもらったら、思ってたのと全然違うものができた」という経験、ありませんか?
最近、ChatGPTやClaude、Geminiといった生成AIを使って、業務効率化やシステム開発に取り組む企業が増えています。確かに生成AIは便利で、簡単な指示を出すだけでコードを書いてくれたり、提案をしてくれたりします。
しかし、使ってみると「あれ? なんか思ってたのと違う…」という経験をされた方も多いのではないでしょうか。
生成AIは優秀ですが、時には「想定外の動き」をします。良かれと思って、こちらが頼んでいない機能まで追加してしまうこともあるのです。
今回は、そんな生成AIを上手にコントロールするための考え方のひとつ、**「仕様駆動開発」**についてお話しします。IT用語に馴染みのない方にも分かりやすく解説していきますので、ぜひ最後までお付き合いください。
生成AIは「創造的すぎる」ことがある
生成AIの素晴らしいところは、人間の曖昧な指示からでも「察して」動いてくれることです。たとえば「売上を管理するシステムを作って」と伝えるだけで、データベースを設計し、入力画面を作り、集計機能まで提案してくれます。
しかし、ここに落とし穴があります。
AIは「良かれと思って」、こちらが頼んでいない機能まで追加してしまうことがあるのです。たとえば:
- 売上管理だけでよかったのに、グラフ表示機能や予測分析機能まで勝手に追加された
- シンプルな入力フォームが欲しかっただけなのに、複雑な検索機能やフィルター機能がついてきた
- 社内だけで使う想定だったのに、外部公開を前提とした認証機能が組み込まれていた
こうした「余計な機能」は、小規模なツールであれば「あ、便利かも」で済むこともあります。しかし、本格的なシステム開発になると話は別です。意図しない機能が増えることで、システムが複雑になり、結果として「使いにくい」「メンテナンスできない」という問題につながってしまいます。
これが、生成AIの「良くも悪くも創造的に動いてしまう」という特性です。
AIに「道」を示す――ガードレールという考え方
では、どうすれば生成AIを上手にコントロールできるのでしょうか。
そこで重要になるのが、ガードレールという考え方です。
ガードレールとは、AIが進んでいい範囲を明確にすることです。高速道路のガードレールと同じで、「ここまではOK、ここから先はNG」という境界線を引いてあげるのです。
ガードレールを引く方法はいろいろあります:
- プロンプト設計: 指示の出し方を工夫して、AIが余計なことをしないようにする
- テスト駆動開発: 先にテストを書いておき、そのテストに通るコードだけを生成させる
- 仕様駆動開発: しっかりした仕様書をAIに読ませて、その範囲内で作らせる
今回注目したいのが、この仕様駆動開発です。
仕様書を作ることで、AIに「こういうものを作ってほしい」という明確な道筋を示すことができます。AIにとっての「地図」や「レール」になるわけです。
仕様書がAIの「地図」になる
では、仕様書があるとなぜAIをコントロールできるのでしょうか。
それは、曖昧な指示と明確な仕様書では、AIの動き方が全く変わるからです。
曖昧な指示の例
「在庫管理機能を作ってください」
この指示だと、AIは以下のような判断を「勝手に」してしまいます:
- どんな情報を管理するのか?(商品名だけ? コードや単価も?)
- どうやって在庫を増減させるのか?(手入力? 自動計算?)
- 在庫が少なくなったらどうする?(何もしない? 通知する?)
結果として、AIは「たぶんこういうことだろう」と推測して、余計な機能を追加したり、逆に必要な機能を省いたりしてしまいます。
明確な仕様書の例
一方、こんな風に仕様を明確にするとどうでしょうか。
【在庫管理機能の仕様】
1. 入力項目
- 商品コード(必須、半角英数字8桁)
- 商品名(必須、50文字以内)
- 在庫数(必須、0以上の整数)
2. 動作
- 入力された情報を在庫テーブルに保存する
- 在庫数が10以下になった場合、画面上部に赤文字で「在庫少」と表示
- それ以外の場合は何も表示しない
3. 制約
- グラフ表示機能は不要
- 予測分析機能は不要
- 検索機能は不要
このように細かく伝えると、AIは迷いません。
「商品コード、商品名、在庫数を入力できて、保存して、在庫が10以下なら赤文字で警告を出す。それ以外は何もしない」という明確な道筋ができるからです。
仕様書は、AIにとっての「地図」であり「レール」なのです。
仕様書を作っても、それだけでは足りない理由
ここまで読んで、「なるほど、じゃあ仕様書をしっかり作ればいいんだ」と思われたかもしれません。
実は、それだけでは不十分なのです。
なぜなら、AIは仕様書を「読み飛ばす」こともあるからです。
生成AIは優秀ですが、人間のように文章を丁寧に読むわけではありません。長い仕様書を渡されると、重要な部分を見落としたり、曖昧な表現を勝手に解釈したりすることがあります。
そのため、仕様書を作る際には以下のような工夫が必要です:
1. AIが理解しやすい形式で書く
- 箇条書きや番号付きリストを使う
- 1文を短くする
- 「〜など」「適当に」といった曖昧な表現を避ける
2. 構造化する
- 「入力」「処理」「出力」のように、セクションを明確に分ける
- 優先度を明記する(必須、推奨、不要)
3. テストと組み合わせる
- 仕様書だけでなく、「こういう入力をしたらこういう出力になるべき」というテストケースも一緒に渡す
4. 人間がレビューする
- AIが生成したコードを、必ず人間が確認する
- 仕様通りに動いているか、余計な機能が追加されていないかをチェック
テイルウインドでは、生成AIを使った開発において「AIが読みやすい仕様書フォーマット」を日々研究しています。まだまだノウハウは蓄積中ですが、基本的な考え方は共通しています。
仕様をAIが把握できる形で作り込むこと。
これが、生成AI時代のシステム開発において、ますます重要になってきているのです。
まとめ
今回は、生成AIを使ったシステム開発における「仕様駆動開発」という考え方についてお話ししました。
ポイントをおさらいすると、
- 生成AIは便利だが、「暴走」するリスクもある: 良かれと思って余計な機能を追加してしまうことがある
- ガードレールを引くことで、AIを制御できる: AIが進んでいい範囲を明確にすることが大切
- その第一歩が「仕様駆動開発」: しっかりした仕様書を作ることで、AIに道筋を示す
- 仕様書をAIが理解できる形で作ることが成功の鍵: ただ作るだけでなく、AIが読みやすい形式や構造を意識する
生成AIは確かに強力なツールですが、「お任せ」で使うのではなく、適切にコントロールすることで初めて、その真価を発揮します。
「生成AIを使ったシステム開発に興味があるけど、どう進めればいいかわからない」という方は、ぜひ一度ご相談ください。テイルウインドでは、AI開発の”ガードレール”設計も含めて伴走支援しています。
まずは無料相談からお気軽にどうぞ。一緒に、御社に合った生成AI活用の形を考えましょう。