← 最新の論文
🤖 AI

In Line with Context: Repository-Level Code Generation via Context Inlining

本論文は、生成されたアンカー、上位の呼び出し元、および下位の呼び出し先からなる未完成関数の呼び出しグラフをプロンプトにインライン化することで、複雑なリポジトリの理解をより管理しやすい関数レベルのタスクへと変換し、リポジトリレベルのコード生成を改善する新たなフレームワークであるInlineCoderを導入する。

原著者: Chao Hu, Wenhao Zeng, Yuling Shi, Beijun Shen, Xiaodong Gu

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

原著者: Chao Hu, Wenhao Zeng, Yuling Shi, Beijun Shen, Xiaodong Gu

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

大いなるアイデア:「コールスタック」の視点でコードを書く

巨大なソフトウェア企業のために特定の関数を書くために雇われた新入社員になったと想像してください。昔は、助けを求めれば、オフィスの他の場所にある似たような文のリストが渡されるだけだったかもしれません。「計算する」や「ユーザー」といった単語を見て、何をするべきか推測することになります。これは、誰があなたに作業を依頼しているのか、あるいは部屋にどのようなツールが用意されているのかがわからないため、しばしば間違いを引き起こしました。

InlineCoderは、これらの大規模プロジェクトのためにAIがコードを記述する方法を変える新しいシステムです。AIに単に似たような文のリストを示すのではなく、新しいコードが現実世界でどこに収まるかを正確に示すために、物語を物理的に書き換えるのです。

その仕組みを簡単なステップに分解して説明します。

1. 問題:「孤立した部屋」の罠

AIが巨大なソフトウェアプロジェクト(リポジトリ)のためにコードの断片を書こうとすると、通常「孤立した部屋」に閉じ込められてしまいます。

  • 従来の方法: AIには仕事の内容(関数のシグネチャ)と、プロジェクトからいくつかのランダムで似たような文書が与えられます。これは、異なる車のエンジンに似た写真だけを手に取り、目隠しをして車のエンジンを修理しようとするようなものです。ボルトを正しくつけることはできても、ベルトがどちらの方向に回るのか、あるいは誰が車を運転しているのかはわかりません。
  • 結果: AIは単独ではそれなりに見えるコードを書きますが、新しいコードがプロジェクトの残りとどのように接続されるのかわからないため、システム全体を破綻させてしまいます。

2. 解決策:「コンテキストインライン化」

この論文の著者であるInlineCoderは、仕事を理解するためには以下の 2 つを見る必要があると気づきました。

  1. 誰があなたを呼んでいるのか?(「アップストリーム」コンテキスト:仕事を依頼する上司)。
  2. あなたが誰を呼んでいるのか?(「ダウンストリーム」コンテキスト:作業を行うために必要なツールやヘルパー)。

InlineCoderは、インライン化と呼ばれる巧妙なトリックを使用します。演劇の台本を書いていると想像してください。俳優に台詞を渡すだけでなく、その台本を取り出し、他の俳優がその俳優に話しかけているシーンの中に、その俳優の台詞を物理的に貼り付けます。すると、俳優は正確にどのようなトーンを使うべきか、どのような小道具が手渡されるのか、そして自分の台詞が会話の流れにどう適合するかを明確に把握できるようになります。

3. InlineCoderの仕組み(3 ステップのダンス)

ステップ 1:「ドラフト」(アンカー)
まず、AIはコードの簡易でラフな推測を行います。完璧ではありませんが、出発点となります。これは AI が「これがこの関数がどうあるべきかという私の最善の推測です」と言っているようなものです。

ステップ 2:「アップストリーム」インライン化(上司を見る)
システムはそのラフな推測を取り、それを呼び出す関数のコードに直接貼り付けます。

  • 比喩: あなたがシェフだと想像してください。単に「スープを作れ」と言われるのではなく、システムはウェイターが注文を渡す瞬間、ウェイターが持っている食材、そしてスープがどのように提供されるかという正確な瞬間を見せます。
  • なぜ役立つのか: AI は正確にどのようなデータが入力され、結果がどのような形式である必要があるかを把握できるようになります。推測を止めて、「呼び出し元」の特定のニーズに合わせ始めるのです。

ステップ 3:「ダウンストリーム」検索(ツールの発見)
システムは、AI が使用しようとしたツール(他の関数)を確認するためにラフな推測を調べます。その後、プロジェクトのライブラリに入り、それらのツールの実際のコードを取得し、AI が正しいバージョンを使用するようにします。

  • 比喩: シェフのドラフトに「ブレンダーを使う」と書かれている場合、システムはキッチンにある正確なブレンダーを見つけ、シェフにその使い方を示します。シェフがどの家電製品を掴むべきか推測させるのではなく、です。

4. 「自信チェック」

システムは、自分が不確実な場合を認識するほど賢くできています。ドラフトの書きやすさに基づいて「自信スコア」を計算します。

  • 高自信: 「これは良さそうだ、磨き上げよう」。
  • 低自信: 「これはリスクが高いようだ。ドラフトを捨てて、新しいコンテキストで最初からやり直そう」。
    これにより、AI が最初に書いたという理由だけで悪いアイデアに頑固に固執することを防ぎます。

5. 結果:なぜ重要なのか

この論文は、異なる AI モデルを使用して、2 つの巨大なベンチマーク(DevEval と RepoExec)でこれをテストしました。

  • 結果: InlineCoder は、ほぼすべての他の手法を圧倒的な差で凌駕しました。
  • 改善点: 一部の指標において、従来の最良の方法と比較してコードの精度がほぼ**30%**向上しました。
  • 教訓: 単に似たような単語のリストを示すのではなく、AI に「コールグラフ」(誰が誰と話すか)を示すことで、AI は実際のソフトウェアプロジェクトの複雑なネットワークの中で実際に機能するコードを書くようになります。

まとめ

InlineCoderを、単に単語を翻訳するのではなく、関係性を翻訳する翻訳者と想像してください。それはコードを孤立した文として扱うのをやめ、会話として扱うようになります。新しいコードを、その周囲で起こっている会話(呼び出し元)と、それが依存するツール(呼び出される側)に物理的に埋め込むことで、AI が既存のソフトウェアエコシステムに完璧に適合するコードを書くことを保証します。

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

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

Digest を試す →