Home

バイブコーディングとは何か?AI時代の「サイコロを振る」ようなソフトウェア開発の実態

公開日

img of バイブコーディングとは何か?AI時代の「サイコロを振る」ようなソフトウェア開発の実態
•••

大規模言語モデル(LLM)の進化に伴い、CursorやWindsurfといったAI搭載エディタが普及し、自然言語の指示(プロンプト)だけでソフトウェアを構築するスタイルが注目を集めています。Andrej Karpathy氏が「バイブコーディング」と名付けたこの手法は、コーディングの専門知識を持たない人々にも開発の門戸を開く一方で、生成されるコードの安全性や信頼性については議論が続いています。

本記事では、カリフォルニア大学アーバイン校などの研究チームが発表した論文「Building Software by Rolling the Dice: A Qualitative Study of Vibe Coding」に基づき、その実態を解説します。実際のコーディング動画の詳細な分析から明らかになった、開発者の行動パターンや直面している課題について掘り下げていきます。

バイブコーディングの定義と多様なアプローチ

研究チームは、YouTube上で公開されているライブ配信や解説動画計20本(約21時間分)を対象に、プロから初心者まで幅広い開発者の行動を詳細に分析しました。バイブコーディングとは、一般的に「コードの存在を忘れ、バイブス(雰囲気・直感)に身を任せてAIに指示を出す」スタイルとされていますが、実際の現場では、開発者のスキルやAIへの信頼度によって、そのアプローチは大きく2つに分かれることが分かりました。

開発者のスタンスの違い

  1. AIへの依存度が高い開発者(High AI Reliance)
    • 生成されたコードの中身をほとんど確認しません。
    • エラーが出た場合、エラーメッセージをそのままAIに投げ返す傾向があります。
    • プログラミングの知識が少ない「非専門プログラマー(Vernacular Programmers)」に多く見られます。
  2. AIへの依存度が低い開発者(Low AI Reliance)
    • 生成されたコード(Diff)を詳細に検査します。
    • AIの出力が不正確だと判断した場合、自らコードを修正します。
    • 専門的なプログラミングスキルを持つ開発者に多く見られます。

メンタルモデルの形成プロセス

開発者は、AIツールとの対話を通じて、独自の「メンタルモデル」を形成していきます。

図表1:バイブコーディングにおけるメンタルモデルとプロセスの概要 図表1:バイブコーディングにおけるメンタルモデルとプロセスの概要

図表1は、開発者がプロンプトを入力し、AI(Foundation Model)とツール(Wrapper UI)を介して生成物(Artifacts)を得るプロセスを示しています。

  • AI依存度が高い場合(上段): システムの出力画面やログのみを確認して評価します。
  • AI依存度が低い場合(下段): 実際のコードを直接編集・確認し、実装の詳細まで踏み込んで評価します。

このように、同じ「バイブコーディング」という言葉を使っていても、コードへの関与度には大きな幅が存在します。

「サイコロを振る」ような開発体験

論文のタイトルにある「Rolling the Dice(サイコロを振る)」という表現は、AIの出力が確率的であり、予測不可能であることを示唆しています。開発者は、まるで運試しのように何度もプロンプトを試行錯誤しています。

重複するプロンプトと「運任せ」の修正

特に技術的な背景知識が少ない開発者において、新しい情報を加えずに同じ意図のプロンプトを繰り返す行動が顕著に見られました。

図表2:開発者ごとのプロンプトの重複率(冗長性)の比較 図表2:開発者ごとのプロンプトの重複率(冗長性)の比較。手法の重複(Method-Redundant)、意図のみの重複(Intent-Redundant only)、意図の一部重複(Intent-Partially-Redundant)、重複なし(Unique)。

図表2は、各開発者(V1〜V7)が発行したプロンプトのうち、以前と同じ内容を繰り返した割合を示しています。

  • V4やV5(AI依存度が高い): 全体の約40%が「サイコロを振る」ような重複プロンプトです。エラーメッセージをそのまま貼り付けたり、具体的な修正指示なしに「直して」と頼んだりするケースです。
  • V1やV6(AI依存度が低い): 重複プロンプトは20%未満に留まります。彼らはコードを確認し、仮説を立てて具体的な指示を追加しています。

デザインへの固執

AIが最初に生成した出力に対し、開発者が過度に固執する傾向も確認されています。初期の出力が最適でなくても、代替案を探すのではなく、その出力を微修正することに時間を費やしてしまうのです。これは、AIによる提案が開発者の創造的な探索を狭めてしまうリスクを示唆しています。

開発時間の使い方はどう変わるのか

バイブコーディングは生産性を向上させると言われていますが、実際には「待ち時間」や「確認作業」に多くの時間が割かれています。

図表3:ライブストリーミングにおける時間配分の内訳 図表3:ライブストリーミングにおける時間配分の内訳

図表3の分析結果から、以下の特徴が見て取れます。

  1. AIの生成待ち時間の長さ: すべてのセッションにおいて、総時間の20%以上が「待ち時間(Waiting Duration)」でした。特にV5の事例では、セッションの半分以上を待機時間が占めています。
  2. 確認対象の違い:
    • V2・V6(スキルが高い): 緑色のバー(コード修正・確認)の割合が高く、生成されたコードを積極的にレビューしています。
    • V5・V7(スキルが低い・依存度が高い): 青色のバー(出力結果やエラーメッセージの確認)の割合が高く、コードそのものではなく、画面上の挙動で成否を判断しています。

「バイブス」とは、プログレスバーが進むのを忍耐強く待つことでもある、と一部の開発者は表現しています。

現場で採用されている実践的な戦略

AIの予測不可能性に対処するため、バイブコーダーたちは独自の戦略を編み出しています。

1. 複数のモデルとツールの使い分け

1つのAIモデルに頼り切るのではなく、状況に応じてモデルを切り替える戦略です。

  • 簡単な修正: 高速で安価なモデルを使用。
  • 複雑な推論: 高性能な有料モデルを使用。
  • 行き詰まった時: 別のモデルに切り替えて、異なる視点からの解決策を期待する。

2. コンテキストの管理

AIの「記憶」を適切に管理することが重要視されています。

  • 履歴の削除: 古い文脈が新しいタスクの邪魔をしないよう、チャット履歴をクリアする。
  • ファイルの明示: 関係のないファイルを読み込ませないよう、参照ファイルを厳選して渡す。

3. リスク管理と「YOLOモード」

不確実性に対する態度は二極化しています。

  • 慎重派: バージョン管理(Git)を頻繁に行い、AIがコードを破壊してもすぐに戻せるようにする。小さな単位で変更を加える。
  • 大胆派(YOLOモード): 「You Only Live Once(人生は一度きり)」の精神で、セキュリティリスクのあるコマンド実行も許可し、確認なしで全て承認(Accept All)する。

結論:バイブコーディングの未来に向けて

バイブコーディングは、ソフトウェア開発の敷居を下げ、迅速なプロトタイピングを可能にする強力な手法です。しかし、本研究が明らかにしたように、それは単なる魔法ではありません。

AIの出力は確率的であり、開発者はその「サイコロの目」をコントロールするために、依然として試行錯誤を繰り返しています。特にプログラミング知識が乏しい場合、品質の低いコードやセキュリティリスクを見過ごす可能性が高まります。

今後、ツール開発者には、AIの不確実性を可視化し、ユーザーが意図しない変更を防ぐ機能の提供が求められます。また、教育の現場では、AIが出力した結果を批判的に評価できる基礎的なデータリテラシーや、デバッグの原則を教えることがより重要になるでしょう。


開発生産性やチームビルディングにお困りですか? 弊社のサービス は、開発チームが抱える課題を解決し、生産性と幸福度を向上させるための様々なソリューションを提供しています。ぜひお気軽にご相談ください!

参考資料:

Author: vonxai編集部

Google Scholarで開発生産性やチーム開発に関する論文を読むことが趣味の中の人が、面白かった論文やレポートを記事として紹介しています。