富士通研究所は4月27日、大規模なオープンソースソフトウェア(Open Source Software:OSS)を利用したタイムリーな開発ができるように、ソースコードの機能追加など変更箇所を短時間で追跡する技術を開発したと発表した。

OSSは、多数の開発者によって頻繁に機能追加やバグ修正などのソースコードの変更が行われるため、OSSを利用するソフトウェア開発においては更新ごとに変化した場所の確認に時間がかかるという課題がある。

OSSの利用形態

この課題を解決するため、同社はソースコードから関数の呼び出し経路を分析することにより、ソースコードの変化を高速に比較できる2つの技術「関数の呼び出し経路を高速に比較し、図示する技術」「類似する名前を効率的に検出する技術」を開発した。

同じソフトウェアの異なる版数のソースコードの変化を追跡する場合、変更の箇所が、ある特定の関数からの呼び出し経路上に集中する傾向がある。このことに着目し、ある1つの関数を起点とした呼び出し経路において、呼び出し経路上の位置ごとに2つのソースコードの差異を比較することにより、比較する対象を大幅に絞り込み、一目でわかるよう図示する技術を開発。これにより差分を抽出する時間が従来の組合せ比較より44%削減されたという。

経路の位置単位比較

また、大規模なOSSでは、類似する名前の関数が大量に存在することに注目し、関数名の検索入力において、文字入力ごとに検索結果が一致する組み合わせをあらかじめ列挙し、保持しておくデータ構造を新たに開発することで、応答性の良い部分一致検索を実現した。

大量類似名の検索

今回開発した技術を用いることで、OSSの変更箇所を、知りたい呼び出し経路を起点に繰返し検索することができるようになる。その結果、380万行のプログラム中、約400の変更箇所があるテストケースにおいて、影響箇所の特定にかかる作業時間が従来のテキスト比較では約26時間かかったところ、約6.5時間となり4分の1程度と大幅に削減されたという。

変更箇所の把握方法

今後、富士通研究所では、スクリプト言語など対応言語の拡充を進め、2016年度中の実用化を目指す。