バイブコーディングの弱点と長所

チョン・ドヒョン - ROBOCO首席コンサルタント
先のバイブコーディングの生産性についての記事でも述べたとおり、バイブコーディングの生産性は二つの要素に大きく左右されます。一つは人の生産性、すなわち開発者の問題解決能力と分析能力です。もう一つは、それを補完し強化するツールやプロセスの生産性です。ここでいう生産性とは、単にコードを速く書く能力だけを指すものではありません。計画を立て、問題を分析し、解決策を見つけるという全般的な力量までを含みます。
TL;DR
- バイブコーディングの生産性は、AIツールの性能だけでなく、開発者の問題分析力と作業設計能力に大きく左右されます。
- 仕様が明確な作業、移植(ポーティング)、入力と出力がはっきりしたスクリプト的な作業では、とりわけ強みを発揮します。
- 何を作るのかが不明確な作業や、コンテキストが複雑な作業では、人の判断と範囲の限定が依然として重要です。
私は実際にいくつものプロジェクトを進めながら、バイブコーディングが得意な作業とそうでない作業を経験的に分類してみました。どんな仕事であれ、ツールが得意なことと不得意なことを知っておくのが大切です。うまく活用するには、ツールの特性をよく知る必要があるということです。
まずは、バイブコーディングがとりわけ得意な作業から見ていきましょう。
第一に、仕様が明確に定義された作業です。バイブコーダーが細部のすべてを把握していなくても、作業の内容と進行順序がきちんと文書化されていれば、AIは驚くほど正確な成果物を出してきます。明確な文書化こそが、AIの能力を最大限に引き出す鍵というわけです。
第二に、移植作業です。すでに別の言語やプラットフォーム、フレームワークで完成しているプロジェクトがあれば、そのコード自体が完璧な仕様書の役割を果たします。AIは既存コードを参照して、高い完成度で移植作業を素早く進められます。とくに既存プロジェクトに自動化されたテストが不足している場合は、AIを使って単体テスト(UT)、結合テスト(IT)、エンドツーエンドテスト(E2E)を先に生成し、それを移植対象のプロジェクトに適用すれば、はるかに正確かつ効率的に作業を進められます。
第三に、簡単なスクリプトやユーティリティの作業です。入力と出力が明確に決まっている作業であれば、AIはまるで光の速さで仕事をこなします。使い捨ての作業であっても、テスト駆動開発(TDD)の方式を取り入れれば、速く進めながら信頼性も高められます。
しかし、すべての仕事がそれほど単純なわけではありません。バイブコーディングが不得意な作業もあります。
第一に、何を作るべきかが不明確な作業です。ソフトウェア開発ではしばしばあることで、実際の実装過程を通じて少しずつ仕様を改善しながら進めなければならない作業があります。DevOps関連のツールや、複雑なワークフローの設計がその例です。こうした作業は、ChatGPTのような対話型AIサービスを通じてさまざまな状況をAIとの対話でシミュレーションしながら方向性を定めたうえで実装するのが賢明です。
第二に、複雑なコンテキストを抱えた作業です。とくに複雑なリレーショナルデータベースを備えたモノリシックアーキテクチャのようなプロジェクトは、コンテキストが膨大で入り組んでおり、人ですら迷い込みやすいものです。理想的にはマイクロサービスの形に分割して作業するのがよいのですが、現実的には難しい場合も少なくありません。そんなときは、プロンプトエンジニアリングによってAIが処理するコンテキストの大きさを制限する方法があります。作業ごとに関連する文書やコードだけを選び、ルールファイルとして与える方式です。もちろん作業のたびにルールを動的に更新しなければならない手間はありますが、最近はTaskMaster AIやBMAD-METHODのようなツールが登場し、この部分まで自動化できるようになりつつあります。
このように、バイブコーディングを効果的に活用できるかどうかは、結局のところAIと人が互いの強みと弱みをよく理解して使いこなせるかにかかっています。明確に定義された作業ではAIの処理の速さと正確さが光りますが、複雑で曖昧な作業では人の判断力と分析力が依然として重要です。
今この瞬間にも、世界中のバイブコーダーが絶えず実験を重ねています。すでにバイブコーディングで作れる作業は実際に実装されており、まだ実現していない複雑な問題についても、解決しようとする試みが途切れることなく続いています。ツールには限界があるかもしれませんが、そのツールを活用する人間の創造力と挑戦する精神に限界はありません。