バイブコーディングの概要と課題
皆さんこんにちは、矢野哲平です。この番組は、耳で学ぶAIをコンセプトに、初心者・中級者向けにAIを分かりやすく解説する番組です。
今回のテーマは、スペック駆動開発でバイブコーディングの壁を超える、について話していきます。
はい、ということで今日は、AIを使った開発について話していきます。
皆さん、AIを使った開発はしていますでしょうか?
このポッドキャストでも、たびたび紹介してきました。AIを使って開発する人、最近増えています。
ここでいう開発っていうのは、iPhoneアプリを作るような開発でもあり、個人やチームの業務を効率化するために、自分のためだけに行う開発、そういった様々なものがあります。
AIを使えば、従来できなかったプログラミングができるようになったと。
で、今までプログラミングをしたことがない人でも開発することができるようになった、そういった環境が整ってきています。
ただ、AIにプログラミングをさせる場合、01、動くものは割と簡単に実装できます。
ただ、そこから修正を加えていこうとすると、途端に厳しくなってくるという課題もあります。
AI、01は得意なんですけど、67とか78はちょっと不得意だなと。
じゃあこうしたケース、どのように回避するのかというのが、今日話す内容となります。
具体的には、スペック駆動開発というアプローチを採用して、バイブコーディングの弱点を克服しようというものです。
今回のエピソードでは、リスナーの皆さんに、AIを使った開発、これの解像度が上がるように話していきたいと思います。
AIを使った開発って具体的にどういったものなのと、そもそもバイブコーディングって何なのと、
バイブコーディングの精度をもっと上げたい、こういった方はぜひ最後までお付き合いください。
今日話すポイントは主に3つです。
1つ目に、バイブコーディングの概要とデメリット。
2つ目に、バイブコーディングの次にお勧めしたいスペック駆動開発について。
そして3点目、スペック駆動開発の具体的なアプローチについて。
これら3点を中心に話していきます。
はい、では早速話していきましょう。
まずスペック駆動開発について話す前に、なぜスペック駆動開発が注目されているのかについて深掘りしたいと思います。
端的に言うと、2025年に流行したバイブコーディングという手法。
この手法の課題が見えてきたからです。
じゃあバイブコーディングって何ですかという話になるので、まずはここから説明していきます。
バイブコーディング、簡単に言うと、AIを使ったプログラミングの手法となります。
バイブスに身を任せて雰囲気やノリでAIを使ってプログラミングを行うと。
これだけ聞くと、頭にハテナが浮かぶ人多いと思います。
バイブスに身を任せてプログラミングを行う、何を言ってるんですかと。
私も初めてバイブコーディングを知った時、何を言ってるんですかと正直思いました。
ちょっともう少しバイブコーディングの説明をすると、音声入力のAIありますよね。
人間が話した言葉がそのまま文字起こしをされてAIに渡せるというものです。
音声入力を使ってAIに話しかけて作りたいものを伝える。
例えばAIにToDoアプリを作りたいですと。
人間はキーボードにほぼ触ることがなくて、音声の指示だけで雰囲気やノリに身を任せて、
なんならビール片手にAIに話しかけて指示をしていけば、ToDoアプリが完成すると。
こういった開発の手法というのは、2026年最新の出来事でもなんでもなくて、
既に前から実現していることです。
こんな感じで、2025年の確か5月頃と記憶していますけど、バイブコーディングという手法が登場して、
ちょっとしたトレンドになりました。
ポイントは今までプログラミングをしたことがない人でも、バイブコーディングを採用して簡単に開発ができるようになったこと。
これがトレンド後押ししたと思います。
ただしばらくすると次のような声も聞こえるようになりました。
バイブコーディング、AIを使った開発、とりあえず動くものは作れるけど、
そこから先の新機能の追加や修正、そういったことをしていくと破綻することが多いなと。
スペック駆動開発の利点
つまり、AIを使ったバイブコーディングのような開発、01のようなとりあえず動くものを作ることは向いています。
でもブラッシュアップしてどんどん改良して機能を追加していくような、そんな運用になると途端に厳しくなってくると。
これいろいろ原因があるんですけど、ひとえにコンテキスト不足だと思っています。
コンテキスト、つまりその開発における背景情報が不足していると。
じゃあどうするのっていう話ですけど、それが今回話すスペック駆動開発のアプローチを採用することです。
ちなみにバイブコーディングが劣っていてスペック駆動開発が優れているとか、そういった話ではなくて、これはケースバイケースの運用と捉えています。
今から話すスペック駆動開発、確かにバイブコーディングのデメリットを克服できるアプローチとなります。
ただ、バイブコーディングに比べるとそのなんて言いますか、手軽さっていうのはなくなります。
端的に言ってバイブコーディングよりも手間がかかると。
なので、さっと動くものを作って検証したい時、そういった時はバイブコーディングのアプローチは現在も使えます。
そうではなくて、じっくり開発を進めていきたい時、バイブコーディングだと限界を感じたと、そういった時に採用するのが今回話すスペック駆動開発です。
このスペック駆動開発、何なのかというと、簡単に言うと仕様書を作って、その仕様書を最優先として開発を進めていくアプローチです。
ここでいう仕様書っていうのは、開発しているものの説明書とでも言いましょうか。
どういったアプリを開発して、そのアプリにはどういった機能があるのか、そういった情報を詳しく記載しているものです。
バイブコーディングとスペック駆動開発の違いをざっくり言うと、仕様書を用意せず、その場その場の指示で開発を進めていくのがバイブコーディング。
一方で仕様書をちゃんと用意して、人もAIもこの仕様書を見ながら開発を進めていくのがスペック駆動開発です。
こんなイメージとなります。スペック駆動開発、私たちの日頃の仕事で置き換えるとイメージしやすいと思います。
わざわざ文書化する必要のない小さめのタスク、これはもうパッとやる方が早いですよね。
でも少し大きなプロジェクトになってくると、どのような内容で何をやるのか、しっかり文書として残すことで仕事を進めやすくなります。
例えば、プロジェクトに新しくスタッフが配属されたとします。大きめのプロジェクトだと、何をやっているプロジェクトなのか、
途中参加した人には何をしてほしいのか、プロジェクトのルールとか、口頭で伝えるのってほぼ無理だと思います。
でも、これを読めばプロジェクトの全体が分かるよというもの、そういったものがあれば仕事は進めやすくなります。
スペック駆動開発はこんな感じのイメージとなります。AIって常にゼロからスタートするんですよね。
例えば、私が今日AIと一緒に何かを開発したとします。で、ある程度のところで作業を中断して、また明日作業を再開するとします。
この時って、私は頭の中に今何を開発していて、次は何をするべきかっていうのは頭の中に入っています。
でも明日AIを起動すると、AIはゼロからのスタートになります。厳密に言うと会話の途中からAIは再開したりできるわけですけど、
基本的にはAIは人間のように、その開発しているものに対しての情報というのは持っていません。
つまり、コンテキスト、背景情報が不足しているわけです。
で、私、人間側も開発するものの情報は頭の中に入っていても、例えば来週開発を再開する頃には忘れていることの方が多いと思います。
開発するもののボリュームが大きくなると、全体を把握するのも難しくなります。
こういったケースに対応するために、使用書をしっかり作成して、人もAIも参照できる情報源を作っておくと、
そしてその情報源を最優先として開発を進めていくと、これがスペック駆動開発の概要となります。
開発プロセスの構成
じゃあスペック駆動開発、具体的にどうやっていくのという話ですけど、これをちょっと今から話していきます。
いろいろアプローチはあると思うんですけど、ちょっと全体的な流れを言うと、まずAIと相談をしながら使用書を作成します。
次にその使用書を基に開発の計画を立てます。そしてその開発計画を基にAIに実装をしてもらいます。
この時点ですでに動くものが出来上がります。あとは必要に応じて機能を追加したり、バグの修正をしていきます。
いろいろ変更がかかってくると思うんですけど、そうした変更は必ず使用書に反映するようにします。
つまり常に使用書の情報が正しく最新の情報に更新されているようにプロジェクトを進めていきます。
これ結構面倒なんですけど、使用書の情報が破綻していくと全体がおかしな方向に進んでいくので、常にここをチェックするようにします。
例えばAIと新機能について壁打ちをしたとします。あれこれこう相談して、じゃあこの機能を追加しましょうと。
こうした時に、じゃあここまで話した新機能を使用書に反映してから実装してください。こんな感じで使用書が常に最新に保たれるようにします。
あとはある程度開発が進んできたら一旦手を止めて次のように指示をします。
現在のプログラムと使用書を見比べてそこがないかチェックしてくださいと。
つまり定期的に使用書と実際のプログラムの内容に違いが生じていないかというのをチェックすると。
基本的にAIに使用書のチェックをお願いするわけですけど、そこもAIに任せっきりにするのではなくて、人間のチェックも必ず挟むようにします。
プログラムのコードを見てそこから間違いを見つけるっていうのはハードルが高いと思うんですけど、
使用書を見て間違いを見つけるっていうのは割とハードルは低めです。
こんな感じで機能の追加や修正は使用書の更新とセットで作業を進めていきます。
AIエージェントの活用
私は使用書をチェックするAIエージェント、そういったものに役割分担をして作業を進めています。
こうした開発っていうのは普段使っているChatGPTやGeminiのチャット画面でもできるんですけど、
可能であればクロードコードやCodex CLIのようなプログラムに特化したAIエージェントのツールを使うと作業が楽になります。
もしChatGPTやGeminiの有料プランに加入している人は、そのままこうしたツールを使えるのでぜひ検討してみてください。
ChatGPTの有料プランに加入している人は、OpenAAが開発したCodex CLIというプログラムに特化したAIエージェントのツールを使うことができます。
Geminiの有料プランに加入している人は、Googleが開発したGemini CLIという同じようなツールを使うことができます。
iPhoneアプリを作って公開する、こういった開発も面白いと思うんですけど、
まずは自分が使うツール、自分の業務を効率化するツールを作るのがおすすめです。
私の場合だと直近で動画の無音部分、そういったものを削除するツールを作りました。
音声の無音部分を削除するツール、割とあるんですけど、動画の無音部分を削除できるツール、
使いやすいものがなかったので、これ自作しました。
で、あとはターミナルからGoogleタスクを操作できるツールなんかも作りました。
こんな感じで、自分だけが使うツール、失敗しても誰にも迷惑かけないので、
まずは自分向けにツールを作ってみる、これがおすすめのアプローチとなります。
スペック駆動開発のメリットと課題
で、最後にスペック駆動開発の課題について触れたいと思います。
ここまでスペック駆動開発のメリットなどを話してきたんですけど、
じゃあスペック駆動開発を採用すれば全部解決するのかというと、そうではないと思っています。
実際にスペック駆動開発のアプローチを採用して感じた課題なんかについてちょっと話したいと思います。
スペック駆動開発、確かにViveコーディングに比べると開発のブレ、こういったものは少なくなります。
Viveコーディングはその場その場で思いつきでAIに指示を出します。
これはこれで開発体験としてはすごくいいんですけど、そのAIとのやり取りや今作っているものがどういったものかというのは、
ドキュメントとしてしっかり残さないアプローチとなります。
結果としてAIも人間も迷子になりやすいというデメリットがあります。
じゃあスペック駆動開発にすればそういったことは一切起こらないのかというと、そうではないと実際に使ってみて感じる部分もあります。
それはどういった時かっていうと、やっぱり開発しているもののボリュームが大きくなった時、
基本的にスペック駆動開発をするときはスペック.mdという仕様書のファイルを1枚作って、そこにどんどん情報を入れていくのが好きなんですけど、
やっぱりその作っているもののボリュームが大きくなってくると当然文字数も増えてきます。
現時点のモデルでいうとそうですね、だいたい1000文字ぐらいを超えてくると結構厳しくなってくるかなと。
AIも人間も。じゃあこういった時にどうするかっていうと、仕様書を分割していくわけです。
デザイン関連の仕様書を別に分割したり、データベース関連の仕様書を別で分けると。
どのような形で仕様書を管理していくのか、その仕様書をいかに効率的に、過不足なくAIに伝えていくのか、
ここらへんの設計はどうしていくといいのかなというのが結構悩みの種になってきます。
とはいえ、Viveコーディングに比べると作っているものの規模を大きくしたい時、そういった時には向いているアプローチだと思います。
今まさにViveコーディングで何か開発をしていると、そこでちょっと課題を感じている人、
ドキュメントの重要性
そういった人は一度このスペック駆動開発のアプローチを採用してみてはいかがでしょうか。
改めて説明をすると、いきなり開発をスタートするのではなくて、AIと対話を重ねてしっかり仕様書を作ると。
そこから開発のプランをAIに作らせて、そのプラン通りに実装を進めてもらう。
いろいろ修正や機能を追加したい場合は、そういった時も必ず仕様書が最新で正しい情報になるように管理をしていくと、このようなアプローチとなります。
仕様書からAIに開発のプランを作ってもらうんですけど、AIが開発の期間も一緒に見積もってくれたりします。
ただこれ面白いのが、AIが開発の期間見積もってくれるわけですけど、その開発期間の見積もりっていうのは従来の開発手法で算定をしてくれます。
例えばフェーズ1からフェーズ5ぐらいあって、フェーズ1の開発には1週間の時間がかかりますと、
フェーズ2も1週間、合計で約1.5ヶ月ぐらいの開発期間を想定していますと、こうAIが開発プランを出してくれるわけです。
じゃあOKです、そのプランに沿って開発を進めてくださいっていうと、その約1.5ヶ月でAIが見積もった開発期間、それが10分ぐらいで完了するんですよね。
AI自身もAIを使った開発スタイルの見積もりをちゃんとできていないという。
やっぱりこういう事例を見ると、現時点における世の中のあらゆるタスクの中で一番AIと相性がいいのは開発だなと改めて思います。
こうした開発も一部のエンジニアのスキルがある人だけが使えるものではなくて、プログラミングの経験がない人間でも開発ができると。
AIを使うことで色々仕事の進め方が変わったという人もいると思うんですけど、AIと開発の組み合わせ、やっぱりこの破壊力っていうのは現時点でAI活用の最たる事例かなと思います。
このポッドキャストでも度々話しているんですけど、じゃあ人間はAIがプログラムをしてくれるので、プログラムとか全く勉強する必要がないかというと、私はそうではないと感じています。
AIを使うことで誰でも簡単に開発の領域に足を踏み入れることができるようになりました。ただ、じゃあ何でも作れるかというとそうではありません。
少なくとも現時点ではそう感じています。私の失敗談をお話しすると、AIと人間が一緒にタスク管理をできるマークダウンベースのタスク管理アプリを作ろうとしていました。
いい感じにできたなぁと思って、今度はちょっと欲を出して、これをiPhoneアプリでも操作できるようにしようとしました。
パソコンでもiPhoneアプリでも動作をするタスク管理ツール。これ結構いい感じにできたんですけど、情報を同期する部分でつまずきました。
例えばパソコンで入力した情報をiPhoneアプリの方でうまく同期できなかったり、逆のパターンもあったりと。
トゥードゥアプリとか結構いろんな端末から操作できて情報も同期できると結構簡単かなと思ったんですけど、
この情報を同期させる仕組み、結構奥が深いというか、もう私には難しすぎましたね。
大体は動作するんですけど、10回に1回ぐらいの割合で情報の同期がうまくいかないケースっていうのが出てきました。
具体的にはiPhoneで入力した情報がパソコン側にうまく反映されないとか、情報を更新したのに同期で失敗して情報が上書きされてしまうとか、
AIでとりあえず動くものは作れるんですけど、こうした細かい部分の設計、そういったものはやっぱり専門的な知識であったり経験が必要だなと改めて感じました。
やっぱり人間側にプログラムやソフトウェアの知識がある方がより良い成果物を作ることができるなと。
これは他のタスクに置き換えても言えることだと思います。
マーケティング知識ゼロの人でも、AAを使えば素晴らしいマーケティングの戦略を考えることができるかというとそうではなくて、
やっぱりマーケティングに対する深い知識や経験、こういったものがある人の方がよりAAを使いこなすことができると思います。
これは他のタスクでも同じことが言えると思います。
今回は開発の現場におけるスペック駆動開発について話しましたけど、このアプローチって割と他のタスクでも使えるかなと思っています。
例えばデザイナーの方がAIを使ってデザインのプロジェクトを進めていくと、
こうした時にしっかり仕様書、いわゆるドキュメントのようなものを最優先として、どのようなデザインをやっていくのかっていうのを文書化する。
会社のデザインのブランドイメージと言いますか、ユーザーのイメージ、
そうした情報をAIと人間がいつでも参照できるようにドキュメントとしてしっかり明記をすると。
すでにそういったアプローチを採用しているデザイナーの方多いと思うんですけど、他の仕事でも同じように言えると思います。
人もAIも参照できるドキュメントをしっかり明記して、そのドキュメントを最優先としてAIと一緒に仕事を進めていくと。
AIは仕事を再開するたびに知識がゼロになってしまうので、ちゃんと途中からでもスムーズにプロジェクト全体を把握できるように、
ドキュメントを中心に設計をする。今回はそんなお話でした。
はい、それでは今日のポイントをまとめます。
1つ目に、スペック駆動開発は仕様書を最優先とした開発手法です。
人もAIも参照できる仕様書をベースに開発を進めていきます。
2つ目に、スペック駆動開発では新機能の追加や修正など、すべての変更を常に仕様書に反映させます。
3点目、バイブコーディングはさっとプロトタイプを作りたいときに、
スペック駆動開発はじっくり腰を据えて開発を進めたいときに、ケースバイケースで使っていくと良いと思います。
はい、今日はこのへんということで、本日もお付き合いいただきありがとうございました。
今週はお便りをいただいています。ありがとうございます。読みますね。
ヤドさん、耳で学ぶAIをお聞きの皆様、こんにちは。いつも楽しく拝聴しています。
私はプログラミング知識ゼロの非エンジニアなのですが、
以前番組でAIと一緒にChrome拡張機能を作ってみることをお勧めされたのを聞き、
新しいChrome拡張機能の開発
自分にもできるかもと一念発起して挑戦してみました。
開発パートナーに選んだのはジェミニです。
壁にぶつかる度に相談し、励まされながら、まさに二人三脚でコードを書き上げました。
さらにストア出品用の画像はナノバナナプロで生成し、審査に必要なプライバシーポリシーの作成まで、
ジェミニにサポートしてもらうという、100%AIフル活用での開発です。
ちょっと補足すると、Chrome拡張機能をストアに公開するときにいろいろ手続きがあります。
そういった手続きもAIをフル活用してサポートしてもらって無事に公開できたと。
続けます。
その結果、人生初の拡張機能、ジェミニトークンカウンターをリリースすることができました。
このツールはジェミニとのチャットで使用したトークン数を可視化するもので、
コンテキストウィンドウの限界を意識しながら、スマートに新しいチャットへ切り替えるタイミングを判断できます。
さらに勢いに乗って、チャットGPT用の拡張機能、コンテキストリンカーネーション、
かっこコンテキスト転生も開発しました。
こちらはトークン表示に加え、ボタン一つで過去の会話文をコピーし、
新しいチャットへ文脈を引き継げるという、まさに会話を転生させるようなツールとなります。
なるほど、AIと会話をしていくとコンテキストウィンドウ、つまりAIの短期記憶のようなものがあって、
会話が長くなればなるほど精度が落ちていくという現象に遭遇します。
そういった課題を解決するために、ボタン一つで過去の会話文をコピーして、
新しいチャットから新規チャットを立ち上げて、スムーズに過去の会話を移行できるようなツールを作ったというようです。
続けます。AIさえあれば専門知識がなくてもここまで形にできるんだという感動を、
矢野さんとリスナーの皆様にお伝えしたくお便りを送らせていただきました。
AIを活用した学習教材の生成
これからも一歩踏み出す勇気をくれる放送を楽しみにしています。
お便りありがとうございました。
Chrome拡張の開発いいですよね。おすすめです。
なぜかというと、結構ダイレクトに自分が欲しいツールを作りやすい、これに言いつきると思います。
パソコンでChromeのブラウザを使っている人結構多いと思うんですよね。
普段の作業を効率化できるようなツールを作りやすい環境が整っていると思います。
このChrome拡張機能を開発したからといって、必ずウェブストアに公開する必要というのはありません。
自分だけが使えるようにすることもできますし、
あとは会社の同僚の方とか、自分の友人だけに限定的に公開することもできます。
AAを使った開発、手始めにChrome拡張機能を作ってみると非常におすすめです。
Chrome拡張機能の中身って、HTMLとCSSとJavaScriptで構成されています。
なので、HTMLとかCSSの勉強したいとか、JavaScriptの勉強したいっていう人にも格好の学習教材になると思います。
ちなみに、ちょっと話変わるんですけど、
AIに開発をさせて、その開発したものを学習教材に転用する、こういったアプローチもおすすめです。
こんな感じでAIに指示を出します。
私はプログラミング初心者です。
このプログラムを読み込んで、プログラミングの学習教材を作成してください。
つまり、AIで作ったもの、それを学習教材として、
AIにプログラミング学習のガイドをしてもらう。
このアプローチ、何がいいのかっていうと、
まず一つは、自分だけの学習教材を作ることができるという点です。
あとは、自分が業務で感じている課題、それを解決するために作ったプログラムなので、
一般的な学習教材に比べると、学習のモチベーションを保ちやすいです。
開発したものから学習教材を作るという、逆のアプローチも面白いと思います。
皆さんも、AIを使ってこんなものを開発したよとありましたら、ぜひお便りいただければと思います。
番組ではこのように、耳で学べるAIを毎週発信しています。
通勤中や家事の合間にAI情報をキャッチアップできます。
毎週水曜朝に更新していますので、ぜひフォローをお願いします。
そして、おすすめの生成AIツールをまとめた資料も配布しています。
興味のある方はこちらもぜひ、概要欄にリンクを貼っておきます。
お相手は、耳で学ぶAIの矢野てっぺいでした。
また次の配信でお会いしましょう。