← 最新の論文
🤖 AI

Characterizing the Quality Profile of AI-Generated C++ in Production

本番環境における352万件のC++変更を対象としたこの大規模な実証研究は、AIが生成したコードが人間が書いたコードと比較して特定の非効率性と高いリソースコストをもたらすことを明らかにしているが、一方で、分類学に基づいた的を絞ったフィードバックが、これらの品質およびパフォーマンスの問題を効果的に軽減できることを示している。

原著者: Michael Tran, Fred Lewis, Kun Yang, Saksham Thakur, Aditya Kini, Aditya Patil, Milad Hashemi, Parthasarathy Ranganathan

公開日 2026-08-10
📖 1 分で読めます☕ さくっと読める

原著者: Michael Tran, Fred Lewis, Kun Yang, Saksham Thakur, Aditya Kini, Aditya Patil, Milad Hashemi, Parthasarathy Ranganathan

原論文は CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) でライセンスされています。 これは以下の論文のAI生成解説です。著者が執筆または承認したものではありません。技術的な正確性については原論文を参照してください。 免責事項の全文を読む

私たちの世界を動かしているソフトウェア——スマートフォンのアプリ、お気に入りのゲームを支えるシステム、グローバルな銀行業務の背後にある目に見えないエンジン——を、巨大で賑やかな一つの都市だと想像してみてください。何十年もの間、この都市は、すべての橋が重さに耐え、すべてのパイプが漏れることなく水を運ぶことを保証するために、厳格な設計図に従う人間の建築家と建設作業員によって完全に築かれてきました。しかし最近、新しい種類の助っ人がやってきました。人工知能(AI)です。AIを、数秒で設計図をドラフトできる、超高速で非常に熱心な見習いだと考えてみてください。AIはスピードには長けていますが、膨大な古い計画のライブラリから学習しているため、見た目は整っていても、実際の世界では非効率的だったり、ぎこちなかったりするパターンをコピーしてしまうことがあります。エンジニアにとっての大きな問いは、「AIがそれを構築できるか?」ではなく、「その建物は完成した後に、しっかりと立ち、スムーズに稼働し、一般に公開された際にエネルギーを無駄にしないか?」なのです。これが、私たちがこれから探求しようとしている物語の核心です。AIが書いたコードが、実際の、極めて重要な生産用ソフトウェアの世界で実際にどのように機能するのかについての深い考察です。

この論文は、ある巨大なテック企業のエンジニアチームによって行われた、一年間にわたる大規模な探偵小説のようなものです。彼らは、何十億もの人々が毎日使用する巨大なシステムのためのコードを書く際に、AIがどのように役立つのかを知りたいと考えました。単にコードが機能するかどうか(アプリがクラッシュするかどうか)を確認するだけでなく、彼らはコードの「品質プロファイル」を調査しました。それは、コードが乱雑か? コンピュータのパワーを使いすぎていないか? ソフトウェアを遅くしたり、実行コストを高くしたりしていないか? ということです。

研究者たちは、2025年4月から2026年4月の間に作成された350万件以上のコード変更を追跡しました。その結果、AIが作業の大部分を担っていることが分かりました。調査終了時には、出自が判明しているコードのほぼ70%がAIによって生成されていました。しかし、ここにひねりがあります。AIは高速ではありましたが、特定の不具合を引き起こす独特の「個性」を持っていたのです。

AIが生成したコードを、数学の問題を解かされた際、誰もが使うショートカットの公式があるにもかかわらず、計算の全ステップを手書きで書き出そうとする学生のようなものだと考えてみてください。論文によると、C++(高性能システムに使用される言語)におけるAIのコードには、次のような傾向がありました。

  1. 単純なことを複雑にしすぎる: 標準的で効率的なツール(既製の関数など)を使う代わりに、AIはしばしば独自の長く明示的なループを記述しました。それは、標準的なタイヤがあれば十分なのに、車のためにカスタムホイールを作るようなものでした。
  2. コピー&ペーストをしすぎる: AIは不必要にデータを複製する傾向がありました。これは、念のために同じ靴を3足スーツケースに詰め込むようなものです。これにより、メモリや処理能力が浪費されました。
  3. 「結合」の負担を生む: コードがシステムの異なる部分同士をあまりに密接に結びつけてしまうことが多く、これにより、後で何かを修正したり更新したりする際に、他の部分を壊さずに進めることが困難になります。

これらは単なる、目に見えない小さな不具合ではありませんでした。これらは現実世界でのコストとなって現れました。研究によると、主にAIによって書かれたコードは、主に人間によって書かれたコードよりも、約5〜8%多くのコンピューティングリソース(CPUパワーやメモリなど)を消費していました。また、人間のレビュアーが修正する際にも、より多くの労力を要しました。AIが生成した変更には、コードの提出を阻止するフィードバックである「ブロッキング・コメント」が、ほぼ2倍多く寄せられ、マージにかかる時間も長くなっていました。

しかし、物語は「AIは悪い」という結論で終わるわけではありません。研究者たちは、AIが壊れているのではなく、単に「導き手」がいないだけであることを発見しました。研究者たちが、「分類学(タクソノミー)」(「不必要にデータをコピーするのをやめる」や「標準ライブラリを使用する」といった、最も一般的な間違いを分類したリスト)に基づいた具体的なフィードバックをAIに与えたところ、AIは劇的に改善しました。あるテストでは、この的を絞ったフィードバックによって、特定の静的解析の警告が11.1%減少し、コードの効率スコアが31%向上しました。

では、判定はどうなるのでしょうか? この論文は、AIが生成したコードが本質的に危険であったり壊れていたりするわけではないが、非効率的で冗長になりやすいという、予測可能な「スタイル」を持っていることを示唆しています。幸いなことに、私たちはこれを修正できます。これらの特定のパターンを理解し、AIにより良い指示を与えることで、AIによるスピードアップの恩恵を維持しながら、ソフトウェアが高速で効率的であり、かつメンテナンスしやすい状態を保つことができます。この研究は、適切なフィードバックループがあれば、AIという名の見習いに対して、単に速いだけでなく、賢いものを作る方法を教えられることを証明しているのです。

自分の分野の論文に埋もれていませんか?

研究キーワードに一致する最新の論文のダイジェストを毎日受け取りましょう——技術要約付き、あなたの言語で。

Digest を試す →