← 最新の論文
🤖 AI

Diffs vs. Whole Files: An Empirical Comparison of Iterative Edit-Based and Direct Generation for Flutter/Dart Code Models

本論文は、Flutter/Dartコードの編集において、大規模言語モデルによる直接的なファイル全件生成が、すべての指標において反復的な差分ベースの生成を大幅に上回ることを実証的に示しており、後者はリファクタリングやエラーハンドリングといった短く局所的な編集に対してのみ競争力があることを証明している。

原著者: Andrej Andrejev

公開日 2026-09-09✓ Author reviewed
📖 1 分で読めます☕ さくっと読める

原著者: Andrej Andrejev

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

コンピュータプログラムがコード内の間違いを修正する必要があるとき、賢い機械にはその任務を遂行するための主に2つの方法があります。1つ目の方法は、ファイル全体を最初から書き直し、新鮮で完全なバージョンのドキュメントを作成する方法です。2つ目の方法は、人間の編集者のように振る舞い、一連の小さく具体的な変更を行うこと、つまり、ある文章を見つけて新しいものと入れ替えたり、一行を削除して別の行を挿入したりすることを、仕事が終わるまで繰り返す方法です。この2番目の手法は、「diff」や「パッチ」と呼ばれ、ソフトウェアの世界では一般的です。なぜなら、より少ないテキストを生成し、人間が実際に働く様子を模倣しているため、より効率的に見えるからです。小さな、的を絞った編集を行う方が、すべてを書き直すよりも優れていると考えるのは直感的です。しかし、人工知能にコードを書かせる際に、この直感が正しいかどうかは、これまで未解決の問いでした。

最近のある研究は、制御された実験の中でこれら2つのアプローチを戦わせることで、この論争に決着をつけようとしました。研究者たちは、モバイルアプリの構築に使用される特定のプログラミング言語を用いて、コードを修正する2つの異なるコンピュータモデルを訓練しました。彼らは一方のモデルのセットには、一度にファイル全体を書き直すよう教え、もう一方のモデルのセットには、一連の小さく段階的な編集を行うことで同じタスクを実行するよう教えました。そして、どちらの手法がより良い結果を生み出すかを確認するために、両方のモデルのセットを約1,800件の異なるコーディングタスクでテストしました。その結果は明白であり、かつ、やや驚くべきものでした。ファイル全体を書き直すモデルの方が、一連の反復的な変更を行おうとするモデルよりも、一貫して優れたパフォーマンスを示したのです。この優位性は、コードが実際に動作するかどうかから、正解にどれだけ一致しているかに至るまで、あらゆる成功の指標において成立していました。

研究者たちは、ステップバイステップのアプローチが失敗した原因は、通常、モデルが時間の経過切れを起こしたり、ループに陥ったりしたことによるものではないことを発見しました。実際、ほとんどの場合、ステップバイステップの手法を用いたモデルは、指示のリストを正常に完了させていました。問題は、最終的な結果がしばしば微妙に壊れていたことでした。特に、失敗の大きな割合を占めていたのは、入力コード内に同一または酷似したコードの断片が2つ以上存在する場合でした。このとき、モデルの曖昧さを解消するための仕組みが、どちらの箇所を置き換えるべきかを正しく判断できず、誤った箇所を編集してしまうのです。このメカニズムだけで、テストされた2つのアーキテクチャにおけるステップバイステップ手法の失敗の約半分から3分の2を説明できます。モデルはファイル全体を一度に見ているわけではないため、こうした選択ミスが、以前は機能していたコードの一部を誤って壊してしまうことにつながりました。これらのエラーはしばしば「サイレント」なものでした。つまり、コードは依然として実行可能ではあるものの、ユーザーが意図した通りには動作しないという状態です。

研究者が明らかな失敗を除外し、両方の手法がコンピュータにとって正常にコンパイル可能なコードを生成したタスクのみに絞り込んだ場合でも、直接的な書き直し(ダイレクト・リライティング)の手法は、より高品質な結果を生み出していました。どちらの手法が作成したものかを知らされていない状態でコードを評価した独立した人工知能の判定員も、直接生成された出力の方がより正確で、より良く書かれていると評価しました。研究では、ステップバイステップのモデルが単に学習不足であったり、あるいはタスクが分割して扱うには難しすぎたりしたという説は否定されました。研究者がこれらの要因を考慮しても、パフォーマンスの差は存続したため、生成されるコードの手法自体が、この差異の主な原因であることを示唆しています。

しかし、物語は決して一方的なものではありません。研究者たちは、ステップバイステップのアプローチにも、競合できる特定のニッチな領域があることを発見しました。それは、要求される変更が非常に小さく、ファイル内の極めて限定的な部分に留まっている場合にのみ、良好なパフォーマンスを発揮しました。例えば、タスクが単一のエラーの修正や、短く孤立したコードブロックのリファクタリングであった場合、ステップバイステップのモデルは、ファイル全体を書き直すモデルとほぼ同等の性能を示しました。しかし、タスクがより長い一連の変更を必要としたり、ファイルの異なる部分にまたがる編集を必要としたりすると途端に、ステップバイステップの手法は急速に後塵を拝することになりました。研究者たちは、編集戦略の成功はタスクの「局所性(ローカリティ)」に依存すると結論付けました。もし変更が小さく自己完結的なものであればパッチが機能するかもしれませんが、より複雑な事柄については、ファイル全体を書き直す方が安全で信頼できる選択肢となります。

この発見は、人工知能にとって小さな的を絞った編集を行うことが常に最も効率的な経路であるという一般的な仮定に疑問を投げかけています。ステップバイステップの手法は、コンピュータが生成すべきテキストの量を節約できますが、時間の経過とともに蓄積される微妙なエラーのリスクを高めます。この研究は、信頼性の高いコード編集ツールを構築するためには、モデルに常にどちらか一方の手法を強制するのではなく、タスクの性質を認識させるべきであることを示唆しています。変更が広範囲に及んだり複雑であったりする場合は、正確性を確保するためにモデルにファイル全体を書き直させるべきです。変更が小さく、特定の場所に限定されている場合にのみ、システムは一連の小さな編集に頼るべきなのです。この洞察は、開発者が使用する人工知能が、単に生成効率が良いだけでなく、実践において正確で堅牢なコードを生み出せるよう、より優れたツールを設計する方法を明確にする助けとなります。

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

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

Digest を試す →