CTC 教育サービス
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes
今回からは、2025年に公開された論文「FreshBrew: A Benchmark for Evaluating AI Agents on Java Code Migration」に基づいて、大規模言語モデル(LLM)によるJavaコードの自動マイグレーションに対するベンチマークデータセット(FreshBrew)を紹介していきます。今回は、このようなデータセットが求められる背景とFreshBrewの特徴を解説します。
大規模言語モデル(LLM)によるコード生成の性能向上により、アプリケーション開発のさまざまな側面でLLMが利用されるようになりました。LLMによるコードマイグレーションもそのようなユースケースの1つです。冒頭の論文では、特に、Javaのバージョンアップに伴うコード変更をLLMで自動化するタスクに着目しています。Javaのアプリケーションでは何らかのフレームワークを利用することが多く、セキュリティ対応のためにフレームワークをアップデートする際に、ベースとなるJavaそのもののバージョンアップが必要となるケースがあります。しかしながら、Javaはバージョンアップに伴う後方互換性を保証しておらず、マイナーアップデートを含むすべてのアップデートの約1/3に後方互換性を損なう変更が含まれるという調査結果が報告されています。そのため、セキュリティ対応などを含めて、Javaのアプリケーションを健全な状態に保つには、Javaのバージョンアップに伴う非自明なコードマイグレーションを定期的に実施する必要があります。この作業をLLMで自動化できる可能性がありますが、このような移行タスクの性能を適切に評価する方法が定まっていないという課題があります。冒頭の論文では、コードマイグレーションの性能評価の方法について議論した上で、GitHubで公開されているオープンソースのアプリケーションコードを用いた独自のベンチマークデータセットについて解説しています。
コードマイグレーションの成否を判定する際は、移行後のコードがコンパイルできるだけではなく、適切なテストにパスすることの確認が必要です。この際、テストのカバレッジが低いと、成否判定の信頼性が低くなります。また、Javaのバージョンアップを行う際は、アプリケーション本体だけではなく、テストコードの修正も必要になります。LLMによるコードマイグレーションでは、テストコードもLLMで修正するため、失敗するテストをスキップするようにテストコードを修正するなどの「報酬ハッキング」と呼ばれる現象が発生することがあります。そこで、冒頭の論文では、マイグレーションの成否を適切に評価できるデータセット、および、評価方法として、次のような手法を提案しています。
(1) JDK 8 ベースのオープンソースプロジェクトで、行数で50%以上のカバレッジのテストを伴ったものを集める
(2) LLMによる移行後のコードが新しいバージョンのJDKでコンパイルできて、すべてのテストにパスして、テストカバレッジが移行前後で5%ポイント以上減少していないことを確認する
(1)をより詳細に説明すると、図1のようになります。ビルドシステムにMavenを使っているプロジェクトの中で、Java 8ではコンパイルできるが、Java 17ではコンパイルできないものを選定した上で、テストカバレッジが50%以上、そして、ベンチマークデータとしての使用にライセンス上の問題が無いものをフィルタリングして抽出します。GitHubのスターカウントが多い30,000個のリポジトリからスタートして、最終的に228個のリポジトリが選定されました。

図1 ベンチマーク対象プロジェクトの選定手順(論文より抜粋)
選定されたリポジトリの特徴は、図2、図3のようにまとめられます。図2は、依存する主要なライブラリ、および、オープンソースライセンスの分布を表します。図3は、依存するライブラリの数、ファイル数、コードの行数、モジュール数、単体テストの数、テストカバレッジのそれぞれの分布を箱ひげ図で示したものです。

図2 選定されたリポジトリの特徴1(論文より抜粋)

図3 選定されたリポジトリの特徴2(論文より抜粋)
先の(2)では、マイグレーションの成否の判定として、「テストカバレッジが移行前後で5%ポイント以上減少していないことを確認する」という条件がありました。これは、報酬ハッキングが行われると、テストカバレッジが減少する可能性が高いという想定に基づきます。これを裏付けるデータとして、論文では、図4の結果が示されています。

図4 報酬ハッキングの有無によるコードカバレッジの変化の違い(論文より抜粋)
ここでは、LLMによるコードマイグレーションの実行例を50ケース集めて、報酬ハッキングの有無によるコードカバレッジの変化の違いを分布図として示しています。横軸は、コードカバレッジの減少量(%ポイント)を表します。紫のグラフは報酬ハッキングが発生しなかった場合で、緑のグラフは報酬ハッキングが発生した場合に対応します。この結果を見ると、報酬ハッキングが発生しなかった場合、コードカバレッジの減少は5%ポイント以下に抑えられています。そこで、コードマイグレーションが成功したと判断する条件として、コードカバレッジの減少が5%ポイント以下という条件を設定しています。ただし、図4の分布からわかるように、これで報酬ハッキングの発生を完全に除外できるわけではない点には注意が必要です。
今回は、2025年に公開された論文「FreshBrew: A Benchmark for Evaluating AI Agents on Java Code Migration」に基づいて、LLMによるJavaマイグレーションのベンチマークデータセット(FreshBrew)について、このようなデータセットが求められる背景とFreshBrewの特徴を解説しました。次回は、FreshBrewを用いた評価の具体例を紹介します。
Disclaimer:この記事は個人的なものです。ここで述べられていることは私の個人的な意見に基づくものであり、私の雇用者には関係はありません。
[IT研修]注目キーワード Python Power Platform 最新技術動向 生成AI Docker Kubernetes