← 最新の論文
💬 NLP

Change2Task: From Repository Changes to Executable Coding Agent Tasks and Environments

本論文は、マージされたプルリクエストを、履歴的なリポジトリ状態の再構築と現代的なコードベース上での検証を通じて、検証済みかつ実行可能なコーディングエージェントのタスクへと自動的に変換するシステムであるChange2Taskを紹介しており、これにより既存のベースラインと比較して、セットアップコストを削減しタスクのリカバリ率を向上させつつ、学習データの供給量を大幅に増加させる。

原著者: Haomin Qi, Xingliang Wang, Xuanqi Gao, Baihui Sang, Xin Zhang, Minghua Ma, Pengfei Gao, Yu Kang, Qingwei Lin, Saravan Rajmohan, Dongmei Zhang, Qi Zhang

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

原著者: Haomin Qi, Xingliang Wang, Xuanqi Gao, Baihui Sang, Xin Zhang, Minghua Ma, Pengfei Gao, Yu Kang, Qingwei Lin, Saravan Rajmohan, Dongmei Zhang, Qi Zhang

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

コンピューターがソフトウェアエンジニアになろうと学習している世界を想像してみてください。これらの「コーディング・エージェント」は、単に一行のコードを書いて終わるのではなく、プロジェクトを開き、ファイルを読み、バグを修正し、テストを実行し、失敗したらやり直すことができる、デジタルな弟子のような存在です。しかし、ここには落とし穴があります。本当に優れたものになるためには、彼らは現実世界の課題で練習する必要があります。彼らが壊れた機能を直したり、新しい機能を追加したりするための膨大な「演習」ライブラリ、そして明確な「合格」または「不合格」の成績が必要です。

問題は、こうした練習用の演習を作成することが非常に困難で、コストがかかることです。通常、テストを作成するには、あらゆる問題に対して、完璧に隔離されたコンピューター環境(デジタルなサンドボックスのようなもの)を構築しなければなりません。もし1,000個の異なるコーディング・チャレンジを作りたいなら、1,000個の異なるサンドボックスを作る必要があり、それには膨大なストレージ容量と時間が必要になります。これは、料理のレシピを一つ学ぶたびに、そのレシピのために完全に設備が整った新しいキッチンをゼロから作り上げるようなものです。あまりにも手間がかかるため、練習問題が底をついてしまい、エージェントがエキスパートになるために必要なトレーニングを受けることができなくなってしまうのです。

ここで、Change2Taskという新しいアイデアが登場します。これは、コードのための魔法のタイムマシンのようなものです。レシピごとに新しいキッチンを作る代わりに、Change2Taskは実際のソフトウェア・プロジェクトの履歴、つまり、過去に人間の開発者がバグを修正したり機能を追加したりした際の巨大な記録簿(ログ)に注目します。そして、その古い実社会の物語を見て、「この課題を、現在のバージョンのソフトウェア上で、全く同じように再現できるか?」と問いかけるのです。

このシステムは、賢いエディターのように機能します。それは「マージされたプルリクエスト」(変更が受理され、コードに追加されたことを意味する専門用語です)を見つけ出し、それをリバースエンジニアリングしようと試みます。コンピュータに対し、その変更を「元に戻す」ことで壊れた状態を作り出し、次にコーディング・エージェントに対して、それを再び修正するという目標を設定させます。しかし、ここでの魔法のトリックは、最初から作り直すのではなく、すでに稼働している現代的で健全なバージョンのソフトウェア上で行うという点です。もし元の修正が行われた当時からコードが大きく変化している場合、Change2Taskは、古い修正を新しいコードへとマッピングするために、3つの異なる戦略を使用します。

  1. パッチ反転 (Patch Reversal): コードがあまり変わっていない場合は、単に古い修正を逆方向に反転させます。
  2. コード・マッピング (Code Mapping): コードの場所が移動している場合は、古いコードの新しい場所を見つけ出し、そこを入れ替えます。
  3. エージェント再構成 (Agent Reconstruction): コードが全く異なっている場合は、スマートなAIエージェントを使用して、新しい環境の中でどのように問題を再現するかを考え出します。

研究者たちは、これをバグ修正、新機能の追加、新しいテストの作成、古いツールの更新(API)、およびセキュリティ・パッチの適用という5つの一般的なコーディング・タスクでテストしました。彼らは、公開されているソフトウェア・プロジェクトから1,130件の実世界の変更を取り出しました。システムは、それらのうち900件を動作可能で検証済みの練習タスクへと正常に変換することに成功しました。成功率は約80%です。

これがどれほど刺激的なことかを理解するには、節約されたコストを見る必要があります。同じ「キッチン」(ソフトウェア環境)を複数の異なる練習問題で再利用することにより、環境のセットアップに必要な時間を58.4%削減し、必要なストレージ容量を71.2%削減しました。実際、以前の手法(単に古い修正を直接コピーしようとする手法)よりも、29.2%多くの検証済みタスクを作成することができました。

チームは、これらの再作成されたタスクが公平であるかどうかについても確認しました。彼らは、異なるAIコーディング・エージェントに、オリジナルの歴史的なバージョンと新しい現代的なバージョンの両方で問題を解かせました。結果はほぼ同一でした。エージェントは98%の確率で同じ「合格」または「不合格」の判定を得ました。これは、新しいタスクが単なるランダムな推測ではなく、実際の開発者の作業を忠実に再現していることを証明しています。

要するに、Change2Taskは単に多くの練習問題を見つけるだけでなく、既存のものをいかに再利用可能で効率的にするかという方法を見出したのです。それは、ソフトウェア開発の歴史を、次世代のAIコーダーを訓練するための再生可能な資源へと変え、レッスンごとに新しい世界を構築する必要はなく、ただ古い世界を新鮮な目で見る方法を知っていればよいのだということを証明しています。

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

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

Digest を試す →