[修士論文] 汎用抽象構文木を用いた言語横断学習に基づく複合コミット分割
- 01 /
-
28 2026
小林研M2の上野さんが修士論文を提出しました.
題目:汎用抽象構文木を用いた言語横断学習に基づく複合コミット分割
論文概要:
単一の変更内容・変更目的をもつコミット (STC) で開発履歴を構成することは,ソフトウェア開発における円滑な協働作業を実現するうえで重要である.しかし,実際の開発現場では,複数の異なる変更内容・変更目的が混在した複合コミット (CC) を,開発者は頻繁に作成してしまう.CCは保守作業の効率を低下させるため,確認が困難なCCを理解が容易なSTCへ自動で分割するCC自動分割の研究が進んでいる.
本研究の第一の貢献は,分割アルゴリズムの性能評価に必要な教師データを自動で大量に収集する手法を確立したことである.教師データを構築するため,従来は人間による手作業のラベル付けが必要であったものの,労力的・時間的に高コストである.本手法ではオープンソースの開発履歴から,CCとSTCの正しいペアを自動で収集しただけでなく,実際に教師データとして使用できるかも確認した.
第二の貢献は,多言語横断学習によるCC自動分割を実現したことである.ここでいう多言語横断とは,複数のプログラミング言語が混在したCCを扱うことでなく,個々のCCは単一言語でありながら,1つのモデルで複数言語のCCを分割できる能力と定義する.従来の手法では1つのモデルにつき1つの言語にしか対応できないという課題があった.本研究では,汎用抽象構文木を用いてコードを言語に依存しない共通の形式への変換,およびコードの構造的特徴を学習する深層学習を組み合わせた手法を提案する.本手法により,ある言語で学んだ適切な変更単位を,別の言語からなるCCの分割にも適用できた.
JavaとPythonによる評価の結果,本手法はベンチマークの手法による分割精度を超えたことに加え,未学習の言語に対しても高い分割精度を維持できることを確認した.両言語を混合して学習した場合には,単一の言語のみで学習した場合を上回る最良の精度 (Java: 0.782, Python: 0.775) を記録した.この結果は,複数の言語を同時に学習することで,異なる言語間に共通する本質的な構造的特徴をモデルが捉えたことを意味する.
本研究の成果により,学習データが不足している新しい言語においても,既存の他言語のデータを活用することで,高精度なCC自動分割への支援を実現できる可能性が示された.将来的には,ソフトウェア開発の自動化と品質向上に寄与することにつながる.



English