話題のAIバイブコーディングとは–興味深い手法だが万人向けではない
今回は「話題のAIバイブコーディングとは–興味深い手法だが万人向けではない」についてご紹介します。
関連ワード (CIO/経営等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
コーディングの世界では、「バイブコーディング」と呼ばれる手法が新たなバズワードとなっている。この用語は、Andrej Karpathy氏が2月初旬に「X」(旧Twitter)に投稿したポストがきっかけとなって、多くの人が知るところとなった。
Karpathy氏は単なるXのヘビーユーザーではない。スタンフォード大学で自然言語、コンピュータービジョン、深層学習モデルの博士号を取得している。Teslaの人工知能(AI)責任者を務めた経験もあり、OpenAIの共同創設者の1人だった。現在は、AIコースウェアの制作を手がける教育スタートアップEureka Labsを経営している。
そのような経歴を持つ人物が、「バイブコーディングでは、コーダーはバイブ(雰囲気)に完全に身を任せて、指数関数を受け入れ、コードの存在すら忘れる」と主張すると、人々は耳を傾ける。
いくつかの点で、バイブコーディングは、コーディングの厄介なベストプラクティス、つまりコーディングから楽しみを奪って、つらい作業に変えるものをすべて回避するためのライセンスのように思える。そして、多くの点で、バイブコーディングは流れに身を任せることを認めてくれる。
本記事では、最初にKarpathy氏のポスト(基本的に、「バイブコーディング」とはどんなものなのかを定義している)について詳しく解説した後、このアプローチの長所と短所を議論する。
同氏によると、このアプローチの採用が可能になったのは、コーディングAIの能力が向上したからだという。「『SuperWhisper』で『Composer』と話すだけなので、キーボードに触れることさえほとんどない」(同氏)
同氏の言うComposerとは、「Cursor Composer」のことだと思う。これは、AIツールをコーディング環境に埋め込む「Visual Studio Code」(VSCode)のフォークである。SuperWhisperは、音声入力で文章を作成するためのツールだ。
「私がAIに依頼するのは、『サイドバーのパディングを半分に減らす』といった非常にばかげたことである。自分で探すのが面倒だからだ」(Karpathy氏)
これは、AIが本当に役に立つことが一般に知られている領域の1つである。実際に、筆者もAIプログラミングに関する25のヒントをまとめた記事で、同様の手法(CSS記述でのAI利用に関する25番目のヒント)を紹介している。
「私は常に『すべてを受け入れる』。差分の確認は、もうやっていない」(同氏)
同氏が言っているのは、AIが提示したコードをすべて受け入れ、AIのコードとそれによって変更されることを比較せずにコードに落とし込む、ということだ。
これは、かなり危険な手法である。Karpathy氏ほどのプログラミングスキルがあればおそらく十分に安全なはずだが、新人プログラマーには絶対にお勧めできない。同氏には、自分が壊したものを修正できるスキルがある。初心者はそうしたスキルを持っていない可能性が高い。
Karpathy氏は、「エラーメッセージが表示されたら、コメントを付与せずにコピー&ペーストするだけだ。通常は、これで問題が修正される」とも述べている。
十分なコンテキストがある場合、AIはバグとその修正方法を特定するのが非常に得意である。これは筆者も確認済みだ。実際に、AIが本格的なコーディングに対応できるかどうかを確認するベンチマークテストの一環として、筆者はデバッグテストを使用している。
バイブコーディングでも、ここではコーディングのスキルが不可欠になる。同氏は、「コードが長くなり、私が通常理解できる範囲を超えるので、時間をかけて、じっくり確認する必要がある」と話している。
自分でコードを書くときは、通常、そのコードがどのように機能して、何を実行すべきなのかが大体分かる。しかし、別のコーダー(AIは基本的に別のコーダーである)からコードを継承するときは、多くの場合、そのコードがどのように機能するのかを詳しく調べて、理解することが必要になる。この作業をAIに任せることはできない可能性がある。
実際に、Karpathy氏は次の文で、「LLM(大規模言語モデル)がバグを修正できないこともある。その場合は、回避策を見つけたり、バグがなくなるまで、さまざまな変更を手当たり次第に依頼したりするだけだ」と認めている。
筆者の経験では、コーディングを支援するAI(特に「ChatGPT」)の能力は素晴らしいこともあれば、そうでないこともある。AIが壁にぶつかって、どうしても問題を理解できないこともある。その場合、AIは役に立たなくなるか、あるいは、積極的に鈍感になる。プロンプトの表現を変えると、状況が改善することもある。それ以外の場合は、AIが極めて的外れな応答をすることにただただ驚くばかりだ。
Karpathy氏はバイブコーディングプロセスに関するポストを以下の文章で締めくくっている。「週末にやる使い捨てのプロジェクトとしては悪くないが、それでもかなり面白い。私はプロジェクトやウェブアプリを作っているが、これは実際にはコーディングではない。何かを見て、何かを言って、何かを実行して、何かをコピー&ペーストするだけだ。そして、ほとんどの場合、それでうまくいく」
筆者も同様の経験をしているが、次の点に注意しなければならない。「ほとんどの場合、うまくいく」と「出荷準備完了」の間には大きな隔たりがある。80:20の法則(パレートの法則)を肝に銘じておいてほしい。プロジェクトの80%を完了するのに必要なのは、すべての作業量の20%である。しかし、残りの20%を完了するには、すべての作業量の80%が必要だ。つまり、「ほとんど完了」と「すべて完了」の間には非常に大きな隔たりがある。