記事一覧へ戻る
コーディングAI

コード生成AIは「正しく削除する」ことが苦手なのか

読了目安 3 分

導入

AI コーディング支援は、関数の生成やバグ修正では急速に実用化が進んでいる。しかし論文「To Add Is Machine, To Delete Is Human」は、より地味だが重要な問題を取り上げる。大規模言語モデルは、追加よりも「正しい場所を削除し、そこで止める」ことに弱いという問題だ。著者らはこれを deletion avoidance、つまり削除回避と呼ぶ。

主要ポイント

  • テスト合格は品質保証ではない。 SWE-bench Verified の公式リーダーボードにある 5 つの主要モデルを調べたところ、全モデルが解けたタスクでも、開発者パッチに含まれる削除箇所の再現率は最大 71.7% にとどまった。モデルは必要な削除があるファイルには 92% 超の割合で到達するが、正確な行を削る割合は 52% 未満だった。
  • 典型例は Guard-and-Go。 古いロジックを消す代わりに、guard、fallback、条件分岐の中に残すパターンが多い。研究では、テストに通ったパッチの 29.0% がこの形だった。既存テストには通っても、保守性の低いコードが残る。
  • 既存テストは「消えたこと」を見ない。 研究チームが 34 の削除中心タスクに、対象コードが残っていれば失敗するテストを追加すると、4 つのフロンティアモデルの解決率は 63.2% から 41.9% に低下した。これは、ベンチマークが古いコードの温存を見逃している可能性を示す。
  • CanItDelete は削除だけを測る。 実際の修正では追加と削除が混在するため、著者らは実コミットから、編集内容が削除のみである 200 タスクを集めた。追加作業を取り除いても、最良モデルでさえ約 5 件に 1 件は失敗した。
  • 行番号を与えても十分ではない。 削除すべき正確な行を提示すると漏れは減るが、今度は範囲を超えて消したり、不要なコードを追加したりする問題が出る。

意味と影響

この研究の重要性は、コード生成AIの評価を「テストに通るか」から「保守可能な変更か」へ広げた点にある。人間のエンジニアにとって、不要な処理を消し、境界を守り、余計な迂回路を残さないことは修正の一部だ。AI エージェントが古いロジックを条件分岐の裏に隠すだけなら、本番コードにはまだ不安が残る。

一方で、改善の余地も示された。削除に焦点を当てた少量の後学習データにより、不完全な削除が減り、SWE-bench Verified の性能も改善したという。ただし過剰削除も増えたため、「最後まで削除する能力」と「削り過ぎない能力」は別々に鍛える必要がある。

今後のコードAI評価では、生成量だけでなく、消えるべきコードが本当に消えたかを検査する仕組みが重要になる。

出典:Hugging Face Daily Papers

コメント

ログイン状態を確認中…

コメントを読み込み中…

関連記事

CCTest · Blog
コーディングエージェントの性能を左右するHarness設計
コーディングAI
cctest.ai
コーディングAI

コーディングエージェントの性能を左右するHarness設計

コーディングエージェントのHarnessを計画、アクション空間、コンテキスト管理に分解して比較した実証研究が示された。最適な構成は、モデルの能力、タスクの性質、コンテキスト予算によって変わる。

続きを読む
CCTest · Blog
Bend、証明と並列実行でAI生成コードを制約する言語
コーディングAI
cctest.ai
コーディングAI

Bend、証明と並列実行でAI生成コードを制約する言語

Bendは、AIエージェントにコードを書かせるだけでなく、定義されたルールを満たすことまで証明させようとする新しい言語です。Python風の構文、ネイティブコンパイル、CPUとGPU向けの並列ランタイムを組み合わせています。

続きを読む
CCTest · Blog
Harnessかモデルか:同一モデル比較が示すコーディングエージェントの盲点
コーディングAI
cctest.ai
コーディングAI

Harnessかモデルか:同一モデル比較が示すコーディングエージェントの盲点

私有ベンチマークによると、モデルを同じにした場合、ベンダー純正のharnessが一貫して優位とは言えない。タスクの種類、タイムアウトの扱い、利用量データの欠落が評価結果を大きく左右した。

続きを読む