
出典:Summit Art Creations(Shutterstock経由)
大規模言語モデルを使ってコードを生成する開発者は大きな利点を感じているが、現実は必ずしも楽観的ではない。
たとえば、AIによるコード生成を導入したプログラマーは、自身の生産性が17%向上したと推定している(GoogleのDevOps Research and Assessment(DORA)チームが9月下旬に発表した「State of AI-assisted Software Development」レポートより)。しかし、同じレポートでは、ソフトウェアのデリバリーの不安定性も約10%増加したことが分かった。全体として、開発者の60%は、開発速度の低下、ソフトウェアデリバリーの不安定性、またはその両方に悩むチームで働いている。
問題は何か?AIは、トレーニングに使われるコードベースの欠陥を増幅しやすく、またより多くのコードを生成するため、開発者は自分で書く場合のように出力を精査する時間が取れないと、クラウドプラットフォームDigital Oceanの開発者リレーション担当副社長Matt Makai氏は述べている。
「技術的負債やセキュリティ脆弱性がある場合、ツールの使い方次第で同じ問題を他の場所でも再現するかどうかに大きく影響します」と彼は言う。「最初の出力は間違いなく冗長になりがちです。なぜなら、与えられた問題を解決しようとしているからです。今日多くの実践で欠けているのは……問題を解決した後のチェックリストが何か、ということです。」
AIによるコード生成は、すでに開発者の間でほぼ一般的になっている。調査によっては、84%から97%の開発者がAIでコードを生成している。(Google DORAレポートでは、90%の開発者が業務でAIを利用しているとされる。)しかし、十分な精査やテストなしにAIでコードを生成すると、コードベースの肥大化や重大な脆弱性を持つソフトウェアにつながりやすい。これらはそれぞれ技術的負債とセキュリティ負債の例であり、いずれも将来的に追加作業が必要となる生産性のマイナスを意味する。
コードが増えるほど、チェックも必要
大規模言語モデル(LLM)に大きく依存してコードベースの多くを生成しているコーダーにとって、品質やセキュリティへの影響は明白になってきている。すなわち、コードが増えれば脆弱性も増え、セキュリティ負債も増える。
2025年には、平均的な開発者が2022年と比べて75%多くのコードをコミットしていると、GitHubデータの10月1日付分析(ソフトウェアエンジニアリングプラットフォームベンダーGitClearによる)で報告されている。同じ分析では、「10%の生産性向上は現実的に見えるが……コストも同様に現実的だ」とし、出力増加は「『チームが今後どれだけのコードをメンテナンスしなければならないか』という指標にも、各開発者の生産性向上と同じかそれ以上に当てはまる」と述べている。

AI生成コードの構文(青線)は大きく改善したが、セキュリティ脆弱性は依然として問題となっている。出典:Veracode
大部分において、AI生成コードはますます構文的・機能的な検査に合格するようになっている。しかし、アプリケーションセキュリティ企業Veracodeの調査によると、AIモデルが生成したコードの45%に既知のセキュリティ欠陥があった。
2年前、VeracodeのチーフセキュリティエバンジェリストChris Wysopal氏は、この45%という脆弱性率が改善すると予測していた。しかし、そうはなっていないという。
「全く横ばいのままです」と彼は言う。「この調査は今でも当てはまります。AI支援コーディングを使っている開発者は、使っていない開発者よりもやや悪いコードを作っています。」
コードスロップの到来
SNSはAI生成コンテンツ、いわゆるAIスロップで溢れている。職場でも「ワークスロップ」—同僚や管理職がAIで作った一見まともな成果物だが、実際には業務を前進させないもの—が増えている。同様に、開発の質が低いと「コードスロップ」—コンパイルや出力はできるが、冗長で脆弱性があり、欠陥のあるコード—が生まれる。
こうした問題の一因は、LLMが大規模なコードベースの文脈を記憶できないことにある。その結果、開発者はコードの大規模な重複を目にするようになっている。たとえば、すでに別のパッケージで実現しているにもかかわらず、ログ出力のために新たなパッケージを丸ごとインポートする、といったことが起きているとWysopal氏は述べる。
「エンジニアリングで最悪なのは、そうやってコードを重複させることです」と彼は言う。「今や2つのパッケージを更新しなければならず、2箇所で修正が必要になります。コード量の問題は確かにありますが、その現れ方が少し違うだけだと思います。」
AIシステムが生み出す膨大なコードを減らし、コミット前にコードをスキャンするプロセスがなければ、開発者はリワークに多くの時間を割くことになると、エンタープライズ向けサイバーセキュリティ・ソフトウェア企業Palo Alto Networksのプロダクトマネジメント担当副社長Sarit Tager氏は述べる。
「AIによって開発者はかつてないほど速く動けるようになりましたが、セキュリティはそのスピードに追いついていません」と彼女は言う。「セキュリティを開発の早い段階に取り込む『シフトレフト』運動も、主に検知に集中していて、予防には至っていません。多くのチームは、イノベーションのスピードが落ちることを恐れてガードレールや予防ルールの強制をためらっています。」
問題であると同時に、解決策でもある
まず第一歩は、開発者が自分の提出するコードを理解することにコミットすることだ。Palo Alto NetworksのTager氏によれば、開発者がコードを作成するのではなく、単にキュレーションするだけに移行してしまえば、この問題はすぐには改善しないだろう。
「開発者がAIモデルにプロンプトを与えると、自分でロジックを書くのではなく、出力を受け入れるか拒否するかだけになります。これにより、コードが実際にどう動くかの理解が薄れます」と彼女は言う。「時間が経つにつれ、コードのオーナーシップが失われ、セキュリティ欠陥の特定や修正が難しくなります。」

AI生成コードを適切に扱わないソフトウェア開発チームは、スループットの低下やさらなる不安定性に直面することになる。出典:Google DORA
しかし、AIが生み出す問題はAIによって解決できる可能性も高い。適切なプロセスを持つ開発チームであれば、これらの課題を緩和できる。Google DORAの調査では、特定された7タイプの開発チームのうち2つ—「プラグマティック・パフォーマー」と「ハーモニアス・ハイアチーバー」と呼ばれる—が、AIの約束を実現している。すなわち、ソフトウェアデリバリーのスループット向上と不安定性低減の両立である。
「この2グループの存在は、何が可能かという実証的な基準を示しています。組織が目指すべきベンチマークです」とGoogleレポートは述べている。「この状態を達成するのは明らかに難しいですが、これらのグループは、高速かつ高品質なソフトウェアデリバリーが理論上の理想ではなく、観察可能な現実であることを強く示しています。」
Digital OceanのMakai氏は、AI生成コードへの対応の変化を「バイブコーディング」から「バイブエンジニアリング」への移行と呼んでいる。
「これらのツールに、単に機能を作るためのコードを出力させるだけでなく、この機能の潜在的なセキュリティ脆弱性は何か?どう書き直せばいいか?このコードをどう効率化できるか?といった問いかけを必ずしてください」と彼は言う。「ツールはすべてそれが可能ですが、セキュリティレビューや効率化、データベースクエリの最適化をツールに促さなければ、それは自動的にはやってくれません。」