AI生成コード ― Vibe Coding ― は誰でもコンピュータープログラマーになれるというワクワクする可能性を秘めています。しかし、それこそが問題なのです…
問題は、Vibe Codingが過剰な数の脆弱性を生み出すことではありません。比較分析によれば、AIによる脆弱性は人間が導入するものと同程度の密度で発生しています。コードの品質が問題なのではありません。ただ、量が多すぎて速すぎる上に、良い判断力が欠けているのです。
分析を行ったOX Researchは、2つの問題点を指摘しています。第一に、脆弱性が存在する場合、それが「前例のない速さで本番環境に到達する」ため、従来のコードレビューのプロセスではすべての脆弱性を見つけきれません。すでにレビューで見逃されたVibe生成コードによる侵害も発生しています。
第二に、AIは「プログラミング初心者ガイド」を読んで理解しているかもしれませんが、長年の実務経験でしか身につかない良い習慣は学んでいません。良いコードを書いても、良いプログラムにはなりません。OXの研究者たちは、AIによって導入される10の一般的なアンチパターンを発見しました。コードにおけるアンチパターンとは、必ずしも間違いではないものの、非効率的で逆効果となり、最終的には悪い習慣とされるものです。AIコーディングにおけるアンチパターンの問題は、一度発生すると同じAIコーディングシステムが他の出力でも繰り返す可能性が高いことです。
最初で最も一般的なアンチパターンは、過剰なコメントです。人間のコーダーは他のコーダー(または将来の保守担当者)が複雑な部分を理解しやすくするためにコメントを追加しますが、AIは至る所にコメントをばらまきがちです。これはAIが親切であるとも考えられますが、研究者たちはAI自体の本質だと考えています。チャットボットがユーザーとの会話で文脈を保持するように、AIはほぼすべてにコメントを付けることで自身の内部コンテキストを提供しています。「これらはGenAIの内部動作の証であり、長期的かつスケーラブルな記憶の現状の限界を巧みに回避する方法です。」
2番目によくあるアンチパターンは、人間が持つ「完璧を求める衝動」の欠如です。AIにとっては、動けば十分です。人間の開発者なら、「もっと洗練できるのでは」「ここを微調整できるのでは」「よりスケーラブルにできるのでは」「長期的な維持性を考えよう」と考えるかもしれません。AIは単にユーザーのプロンプトに応じているだけで、もしそのユーザーがAIの助けでプログラムできる未熟な初心者(しかも長期的なプロより雇用コストが安い)なら、このアンチパターンは将来の問題の種となります。
他にも、使い捨てのソリューションを生み出し再利用可能なコンポーネントを作らない過剰な仕様化、既存のライブラリを使わずすべてを一から実装する、ローカルマシンでしか動かないコードを作るデプロイ意識の欠如、など5つの問題があります。
OXの研究者が指摘した2つの問題には、それぞれ異なる解決策があります。アンチパターンの解決には、AIシステムの改良と、コード作成者によるより良いプロンプトが必要です。前者はユーザーの手に負えません。後者は、AIコーディングツールの利用に関するベストプラクティスを開発し、すべての人(非専門プログラマーを含む)がそれを守ることで最小限に抑えられます。コーダーはアーキテクトへと進化しなければなりません。
コード開発の規模の大きさによって十分な開発レビューが排除されることは、バグだらけのソフトウェアがすり抜けるのを防ぐために現行プロセスの再考を要求します。「セキュリティガイドラインをAIワークフローに直接組み込むべきで、後から問題を見つけることに期待してはいけません」とOX Researchは提案しています。
さて…Vibe Codingは? 70年代のジョー・サウスに謝りつつ言えば、「すべての言葉を知っていて、すべてのメロディーを口ずさめても、決して歌を歌いきることはない」のです。Vibe Codingが今後進化し、今よりも良い歌を歌えるようになることを否定するのは間違いでしょう ― それは確実に進歩します。しかしOX Researchの分析が明確に示しているのは、現状のAIを使うなら、慎重に使い、目を光らせ、利用可能な予防策はすべて講じるべきだということです。
翻訳元: https://www.securityweek.com/vibe-codings-real-problem-isnt-bugs-its-judgment/