論 文Java ソフトウェア部品検索システム SPARS-J
横森 励士†

梅森 文彰†

西誠†

楠本 真二†

井上 克郎†

松下秀雄†

山本 哲男††

Java Software Component Retrieval System SPARS-J
Reishi YOKOMORI† , Fumiaki UMEMORI† , Hideo NISHI† , Tetsuo YAMAMOTO†† ,Makoto MATSUSHITA† , Shinji KUSUMOTO† , and Katsuro INOUE†

あらまし 大規模で複雑な大量のソフトウェアが開発され，様々な場所において様々な目的で利用されている．
これらのソフトウェア資産の中には新たな開発作業において活用することができるアイデアや，少しの修正を加えるだけで開発に用いることが可能なソフトウェア部品が存在していると考えられる．現在は自然言語文書用に開発された全文検索システムを用いて開発者が望む情報や部品を適宜検索するという方法が主であるが，ソフト
ウェアは自然言語文書とは違い，依存や類似といった部品間の関係の利用なしでは有効な検索は難しい．
本論文では Java ソースコード集合を対象としたソフトウェア部品検索システム SPARS-J の構築を行い，その有効性を評価した．SPARS-J は，依存や類似といったソフトウェア部品特有の特性を考慮しながら，大規模なライブラリの構築を自動的に行う．キーワードとトークン種類を検索キーとした全文検索を行い，部品および関連する詳細情報を併せて提供する．有効性評価では，既存の全文検索システムとの比較や，企業における実際のソフトウェア開発現場への適用によりシステムの有効性を確認した．
キーワード ソフトウェア部品，ソフトウェア検索，ソフトウェア再利用，Java，実験的評価

1. は じ め に越える．これらのソフトウェア資産の中には新たな開近年，大規模で複雑な大量のソフトウェアが開発さしの修正を加えるだけで開発に用いることが可能なソ発作業において活用することができるアイデアや，少れ，様々な場所において様々な目的で利用されている．

フトウェア部品が存在していると考えられる．

プログラムソースの公開と再配布を許可しているオー

そこで，大規模なライブラリの可視化によるソフト

プンソースソフトウェア開発コミュニティは，ソフトウェア資産の有効活用が重要となる．有効活用の一例

ウェアプロダクトが増加するにつれて開発基盤としとしてソフトウェア部品の再利用 [2] が挙げられる．一ての価値だけでなく，ソフトウェア資産を有する大規

般にソフトウェア部品 (Software Component) は再利

模なライブラリとしての価値も高まっている．例えば用できるように設計された部品とされ [4]，再利用の単

SourceForge [9] ではソースコードのストレージやコ位として用いられる．再利用は高品質なソフトウェア

ミュニケーションに必要なメーリングリストなどソフを一定期間内に効率良く開発するために有効な技術のトウェア開発に必要とされる物的資源を提供しており，一つとして知られているが，その効果を最大限に得る

2004 年 2 月現在 75,000 以上ものプロジェクトを保持し，開発者として登録されているユーザ数は 78 万をためには，部品を含むライブラリに関して十分な知識†の開発者が参加する開発プロジェクト内でライブラリ
大阪大学大学院情報科学研究科〒 560–8531 大阪府豊中市待兼山町
1–3

に関する知識の共有を行うことは非常に困難でコスト

Graduate School of Information Science and Technology, Os-のかかる作業である．現在は Namazu [7] などの自然

aka University 1–3, Machikaneyama-cho, Toyonaka-shi, Os-

言語文書用に開発された全文検索システムを用いてラaka 560–8531, Japan††

を再利用者が持たねばならない．しかしながら，多数

独立行政法人科学技術振興機構〒 332-0012 埼玉県川口市本町 4–

イブラリを構成し，開発者が望む情報や部品を適宜検1–8索するという方法が主である．

Japan Science and Technology Agency 4–1–8, Honmachi,
Kawaguchi-shi, Saitama 332–8531, Japan

しかし，ソフトウェア部品においては，部品間のメ

電子情報通信学会論文誌 D–I Vol. Jxx–D–I No. xx pp. 1–9xxxx 年 xx 月

1

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–D–I No. xx

ソッド呼び出しや継承などの利用関係や，コピーによSPARS-J の概要と，そこで用いる手法について簡る類似部品が多いなどの特性から，部品間の関係が非単に説明する．

常に複雑になりやすい．そのため，ソフトウェア部品

2. 1 SPARS-J の特徴の検索を目的として，単に全文検索システムを利用すソフトウェア部品検索システムとは，登録時に部品るだけでは，適切な検索結果を得ることや，検索結果を用途や信頼度に応じて分類してライブラリとして蓄を参考にして効率的に情報を取得することは難しい．

積し，検索時には検索者の指定に応じて部品を探し出

本論文では Java ソースコード集合を対象とした，

す自動化システムを指す．

ソフトウェア部品検索システム SPARS-J (Software

SPARS-J は Java の一つのクラスやインタフェース

Product Archive, analysis and Retrieval System forJava) を構築し，その有効性を評価した．SPARS-Jのソースコードを部品として扱うソフトウェア部品検は，依存や類似といったソフトウェア部品特有の特性

守といった広範な用途を想定しているため，部品の詳を考慮しながら，大規模なライブラリの構築を自動的

細の把握や，目的に応じたカスタマイズをすることがに行うシステムである．キーワードとトークン種類を可能なソースコードを部品とした．支援対象は，設計

検索キーとした全文検索を行い，ソフトウェアのソー者やプログラマなど部品を検索し使用するソフトウェ

スコードを効率良く検索することが可能である．さらア開発者と，ライブラリの部品を分類し維持管理にもに，検索結果表示の際にソフトウェア部品に関する詳責任を持つライブラリ管理者である．

索システムである．再利用並びにプログラム理解，保細情報を併せて提供する．このシステムを用いること

部品は登録時に索引付けされ，検索時には全部品ので，ライブラリの知識が無い開発者も有用なソフト

索引キーの集合から成り立つ索引をもとに部品の検索

ウェア部品やそれに付随する有益な情報を容易に入手を行う．索引キーは Java ソースコード中に現れる予することができる．

約語以外のキーワードとトークン種類の組である．まさらに，SPARS-J についてソフトウェア部品検索

た，索引キーに用いられるキーワードのことを特に索システムとしての実験的評価を行う．実験ではまず，引語と呼ぶ．同様に，検索時に用いられるキーワード

全文検索システム Namazu と SPARS-J との比較実験

を検索語と呼び，検索語と検索対象のトークン種類のを行う．実際の利用方法を想定した検索を行い，上位組を検索キーと呼ぶ．

で取得された部品の適合率をもとに評価する．次に，検索システムとしての形態は自然言語文書を対象と

SPARS-J で用いられている各順位付け手法の特徴や，した全文検索システムと似ているが，ソフトウェア部

最適な順位付け手法を調査する．SPARS-J では，利品間の利用関係や類似関係を可視化する部品群グラフ

用関係に基づく順位付け手法や，各部品における検索の構築や，利用関係に基づく順位付けにより，ソフト

キーの出現頻度に基づく順位付け手法をもとに順位付

ウェア部品検索に特化した機能を提供する．

けを行っており，上位で取得された部品の適合率や，2. 2 利用関係と類似部品

ユーザの最適順位と実際に得られた順位の差を比較す

ソフトウェアは構成要素の部品間で相互に属性や振ることで評価を行う．最後に，SPARS-J を企業におる舞いを利用し合うことで一つの機能を提供する．い

ける実際のソフトウェア開発現場に適用し，被験者にま，ある部品がある部品を利用する時，この部品間に対して実施したアンケート結果に関する考察を行う．

利用関係が存在すると言う．

SPARS-J が検索システムとしてだけでなく，部品のある部品をコピーした部品や，コピーして一部を変管理や理解を支援するシステムとしても有効であるこ

更しただけの部品を類似部品と呼ぶ．類似部品の集合とを確認する．

を部品群と呼ぶ．ある部品群に属する部品が他の部品

以降，2. 節で SPARS-J の概略を説明し，3. 節で構築したシステムについて説明する．4. 節では，各評価
実験の概要および結果を紹介し，考察を行う．最後に，

5. 節でまとめと今後の課題について述べる．

群に属する部品を利用している場合には，その 2 つの部品群間に利用関係が存在すると言う．
部品を頂点，利用関係を有向辺としたグラフを部品グラフと呼ぶ．さらに各部品群を頂点，その間の利

2. SPARS-J の概要

用関係を有向辺としたグラフを部品群グラフと言う．

本 節 で は Java ソ フ ト ウェア 部 品 検 索 シ ス テ ム

図 1(a) は部品グラフで，この場合，部品 c2 は c1 を，

2

類似部品のない部品は単一要素集合の部品群をなす．

論文／Java ソフトウェア部品検索システム SPARS-J

4

c

1

c '

C4

5

c

C5

ることも重要であると考える．なぜなら，そのような部品は利用例も多く，部品の再利用や理解をスムーズ

2

2

c

(a)

C1

1

c

c '

c

部品間の関係C2

3(b)に行い易いと考えられるからである．そのため，検索

C3

部品群間の関係

図 1 部品グラフと部品群グラフ
Fig. 1 Clustered Component Graph
表1 利用関係
Table 1 Use Relation
RelationsClass Inheritance(継承)Implementation of Abstract Class(抽象クラス実装)
Implementation of Interface(インターフェース実装)
Declared Variable Type(変数宣言の型)
Instantiate(インスタンス生成)
Field Reference(フィールド参照)
Method Invocation(メソッド呼び出し)

キーと部品の適合度を表す指標と共に，よく利用されている部品であるかを定量的に評価するための指標を用いて検索結果を順位付けする．

KR 法
索引キーの中には部品の内容と密接に関係したものもあれば，関係の薄いものも存在する．抽出された索引キーが部品の内容を表すうえでどれだけの重要度を持っているか測ることができれば，より精度の高い検索を実現できると考えられる．そこで，索引キーと検索キーの適合度に基づいて検索結果を順位付けする．
このときの適合度の算出には，任意の部品中における特定の索引キーの出現頻度 TF (Term Frequency)，おc2 , c3 は c1 を，c1 は c4 を，c1 は c5 をそれぞれ利用
していることを表している．また，部品 c1 と c1 ，部
品 c2 と c2 はそれぞれ類似した部品とする．c3 , c4 , c5

よび特定の索引キーを含む部品数の逆数 IDF (Inverse
Document Frequency) の値をもとにして適合度を算には類似部品はない．図 1(b) は，この部品群グラフ

語文書検索システムで用いられる一般的な手法である．

である．部品群に属する部品はそれぞれ

C1 = {c1 , c1 },C2 = {c2 , c2 },C3 = {c3 },C4 = {c4 }, C5 = {c5 } である．
SPARS-J における利用関係
SPARS-J では表 1 に示す 7 種類の部品間の関係を出する TF-IDF 法 [5] を用いる．TF-IDF 法は自然言

SPARS-J では，索引キーの重みを算出する際にそのトークン種類に応じて異なる重みを与えている．現
在は表 2 のように，経験的にクラス定義名やメソッド
定義名など部品の概念を表すものに対して大きな重みを設定している．本手法を KR 法 (Keyword Rank

利用関係と定めている．ライブラリに登録される部品法) と呼び，測定した適合度の値を KR 値，さらにそについて静的依存関係解析を行い利用関係を求める．

の順位付けの結果を KR と呼ぶ．

SPARS-J における類似部品の判定
SPARS-J における類似部品の判定では，部品のソー

現回数を乗算し正規化した値を求める．次に，そのスコードを複数のメトリクスで測定した値を用いて判正規化した値に，ヒットした部品数を総部品数で割っ

検索キー毎に，索引キーのトークン種類の重みと出定する．この類似部品の判定手法の詳細は [6] においた値の逆数を乗算する．その総和を部品の KR 値とて紹介されている．

する．例として，検索語に “quick sort”，検索対象のこの手法ではまずサイクロマチック数などの複数のトークン種類としてフィールド変数名，コメントが指

メトリクスによって測定された値を，部品の構造的複定された AND 検索の場合，表 3 に示す索引を持つ部

雑さを表す複雑性類似度メトリクスとする．次に，部品の KR 値は次のようになる．ここで，ライブラリの品の表層的特徴の指標として，Java 全 96 種類のトー

総部品数は 1000，“quick” でヒットする部品数が 10，

クンそれぞれの種類別出現頻度を求め，構成トークン“sort” でヒットする部品数が 30 とする．

類似度メトリクスとする．これら複雑性類似メトリクスと構成トークン類似度メトリクスに関して経験的に閾値を定め，二つの部品間でそれぞれの差が閾値内のloge (200·1)· 1000
+ loge (200·1 + 30·8 + 10·2)· 1000
10
30
CR 法

場合，類似部品と判定する．

我々はこれまでに，ソフトウェア部品間の利用関係

2. 3 検索結果の順位付けに基づいて順位付けする手法 (Component Rank 法，

ソフトウェア部品の検索を行う際，検索キーと適合度が高い部品を上位に位置づけることが重要である

CR 法) を提案している [3], [11]．CR 法では，部品群グラフを表す隣接行列における固有値 1 の固有ベクトのと同様に，よく利用されている部品を上位に提示すルを求め，ベクトルの各要素の値を CR 値，CR 値で3

電子情報通信学会論文誌 xxxx/xx Vol. Jxx–D–I No. xx
表 2 トークン種類とその重み
Table 2 Tokens and their Weights
Token
クラス定義名インタフェース名
インポート名参照フィールド変数名
変数の型名
コメント (/* */)行末コメント (//)

WT
200
50
30
10
10
30
10

Token
メソッド定義名
パッケージ名呼出しメソッド名生成したクラス名
参照する変数名
文書コメント (/** */)文字列リテラル

部品登録部

WT
200
50
10
10
1
50
1

Java

≈
quick
sort
sort
sort
≈
vector

Token
コメント
···
メソッド定義名
メソッド定義名
コメント
行末コメント···クラス定義名キーワード 検索結果
トークン種類 部品詳細

表 4 Borda の手法
Table 4 Borda’s Method
1
2
3
4
5

CR
A
E
C
D
B

KR
C
D
E
A
B

CR+KR
C
A
E (2nd)
D
B

部品検索部

Count
3
≈
1
1
8
2

A
B
C
D
E

データ表示部

クエリ

ユーザ

検索画面

図 2 システムの構成
Architecture of SPARS-Jと，登録された情報を蓄積しているデータベースから
≈

1

KR
4
5
1
2
3

Fig. 2

検索結果(順位)
部品詳細

ステムは部品登録部と部品検索部という二つの処理部構成される．構成図を図 2 に示す．

3. 1 システムの機能

表5 評 価 点
Table 5 Evaluation Value
CR
1
5
3
4
2

表示画面

部品情報
部品詳細

データベース

表 3 部品の索引
Table 3 Indexed Words
Index
add

ファイル

CR+KR
5
10
4
6
5

整列した順位を CR と呼ぶ．CR 値は，開発者が利用関係に沿って参照を行うと仮定した場合の各部品の参照されやすさを表しており，よく利用される部品や，重要な部品から利用される部品の CR 値は高くなる．
順位の統合

CR 法，KR 法はそれぞれ別の観点から部品の順位

本システムが持つ機能は以下の通りである．

•

キーワード検索

日本語を検索語とすることも可能である．また，検索対象とするパッケージや，トークン種類の指定ができる．検索結果の順位付けは，CR，KR，および
CR+KR のいずれかを検索者が選択可能である．
• 利用関係や類似部品の提示
部品間の利用関係や類似部品を提示することで，部品の使用方法に関する情報を取得できる．

•

パッケージブラウザ

パッケージ階層構造をハイパーリンクで表現しており，パッケージ内に含まれる部品の一覧を取得できる．

付けを行っている．この順位付けを統合することで，•それぞれが持つ検索アルゴリズムの特徴を考慮した結部品内で定義されているメソッドの一覧が表示され果が得られると考えられる．そこで Borda の手法 [1]る．メソッド名はメソッド定義行へのリンクになってを利用して CR 法，KR 法の順位の統合を行う．このおり，辿ると定義行へジャンプできる．

手法では，各順位に対して評価点を割り当て，その合計値をもとに統合された順位を求める．表 4 は CR 法，
KR 法，および統合された結果を，表 5 はそれに対応した各部品の評価点を表しており，表中の A，· · ·，Eはそれぞれ部品である．部品 A は CR で 1 位，KRで 4 位であり，評価点は 5 点となる．よって部品 A は順位を統合した結果 2 位となる．以下，この CR 法，

KR 法の出す順位の統合によって順位を求める手法を
CR+KR 法と呼び，得られた順位を CR+KR と呼ぶ．

3. システム構成
本節では，構築したシステムについて説明する．シ
4•

メソッド一覧表示

キーワードハイライト

ヒットしたキーワードがハイライトされて表示される．ハイライトをクリックすることで，次のハイライ
ト部分へジャンプできる．

•

アーカイブダウンロード

部品が含まれる jar ファイルなどのアーカイブをダ
ウンロードして使用することができる．

3. 2 システムの構成
データベースライブラリ中のファイル情報，登録された部品に関する情報，部品間の利用関係，索引情報の管理を行う．
ファイル，部品，索引キーには一意な ID が割り振ら論文／Java ソフトウェア部品検索システム SPARS-J

れている．検索時にはファイル名や部品名，ファイル（ 1 ） 入力されたクエリを解析

名や部品名から ID を対応付けるために正引き，逆引（ 2 ） データベースから部品を検索

き索引を持つ．

（ 3 ） KR 法による順位付け•

ファイル情報データベース

ライブラリ中の Java ファイルのファイルパス，ファイル ID，各ファイルに存在する部品の ID，更新時間などの情報が格納されている．

•

部品情報データベース（ 4 ） 順位の統合

4. 評 価 実 験
4. 1 実 験 目 的
一般的な検索システムとの順位付け性能の比較

部品名，部品 ID，部品が存在するファイル ID，ファ

この実験では，一般的な検索システムと比較して，イル中の部品の場所など部品とライブラリ中のファイ

SPARS-J が適合する部品をどれだけ十分に開発者にルを対応付けるための情報の他に，各部品中で定義さ提供できるかを評価する．比較においては，ある目れたメソッドやフィールド名，類似判定のためのメト的に応じた部品の取得を想定した検索を行い，上位

リクス，部品が属する部品群 ID，CR 値，部品中に現10 件で取得された部品の適合率をもとに評価を行う．
SPARS-J を用いることで要求するソフトウェア部品を迅速に検索でき，ソフトウェアの再利用に SPARS-J

れた索引キー ID や出現頻度，場所など部品に関する全情報が格納されている．

•

利用関係データベースが有効であることを示す．

報も格納されている．登録過程でまだ登録されていな

SPARS-J 内で利用される各順位付け手法の比較
2. 3 節で示したとおり，SPARS-J は CR 法と KR
法，更にそれらを統合した CR+KR 法という 3 種類

い部品への利用関係があった場合，その利用部品名をの順位付け手法を実現している．この実験では，適合未解決名として格納する．その後の解析において，未率やユーザが最適だと思う順位と実際に得られた順位

解決名に相当する部品が登録された場合，利用関係をとの差を求めることで，各順位付け手法の特徴や，最追加する．

適な順位付け手法を調査する．

部品間の利用関係と，その種類が格納されている．
このデータベースには利用関係とは別に，未解決名情•

索引情報データベース

登録された部品中で出現した全索引キーとその IDが格納されている．

企業内のソフトウェアに対する SPARS-J の適用
SPARS-J は部品検索機能に加えて，データベース
内における部品間の利用関係や類似部品等，部品に関

部品登録部

する様々な情報を提供することができ，部品の管理や部品登録部はライブラリ中のファイルを解析して，理解を支援するシステムとしても有効であると考えら索引，メトリクスの計算，利用関係の抽出，さらに類れる．この実験では，SPARS-J を実際のソフトウェ

似度の測定を行い，結果をデータベースに格納する．

ア開発現場に適用し，実際の開発者・管理者に対して部品登録時の流れは次のようになる．

アンケートを実施することで，それらの情報が実際の（ 1 ） ライブラリ管理者が Java ファイルを登録

開発現場ではどのように役立てられるのかを確認する．

（ 2 ） Java ファイルを解析して各種情報をデータ

4. 2 実験における評価尺度

ベースに格納実験では，以下の評価尺度を用いる．

（ 3 ） 部品群グラフ構築•

適合率（ 4 ） CR 法による順位付け

検索された部品中の適合部品数の割合を示す指標で，部品検索部適合率が高いほど検索結果に不必要な部品を含んでお検索者に指定されたクエリを解析し，検索キーをらず，よい検索結果を示しているといえる．

抽出してそれをもとに検索を行なう．得られた結果をKR 法で順位付けし，CR と KR の順位の統合を行•

ndpm 値 [10]う．検索結果と併せて，部品の詳細情報として，ソーndpm(Normalized Distance-based Performance Measure) 法とはユーザプリファレンスの概念を用いて，スコードや利用関係，メソッド一覧などを Web イン

二つの順位付けの差を定量的に評価する手法である．

タフェースを介して提供する．部品検索時の流れは次

ユーザプリファレンスとは，そのユーザの好みを明示のようになる．

的に表現したものである．ここでは部品におけるユー
5電子情報通信学会論文誌 xxxx/xx Vol. Jxx–D–I No. xx
表 6 検索キーワード
Table 6 Query Keywords

ザプリファレンスを，部品を二つ一組にして比較した
場合の，「どちらの部品がより有用である（，あるいは目的に適合する）か」を記述したものとする．
この時，D を部品の有限集合とすると，ユーザプリ
ファレンスとは，d, d ∈ D について，D 上の二項関係 u ，すなわちユーザの相対的な順序付けとなる．

npdm 法では，ユーザプリファレンスとシステムの順位付けの距離に基づいてシステムの性能を計測する．

D の各要素の全ての組み合わせに対して，ユーザ
プリファレンス (u ) とシステムの順位付けにおける順位関係 (s ) が異なる，すなわち d u d かつ
d s d(d, d ∈ D) となる d, d の組数を求める．この組数を m とし，n を部品集合 D の要素数とすると，ndpm は以下の式で求められる．
ndpm(u , s ) =

m
n C2

K1
K2
K3
K4
K5
K6
K7
K8
K9
K10

Keywords
quicksortbinarysearchclock applet
applet textarea
random number generate
stack push pop
chat server clientclassﬁle dump
zip deﬂate
write read
inputstream outputstream

PurposeAlgorithm
Algorithm
Tool
ExampleTool
Algorithm
Tool
Tool
ExampleExampleHits(class)47(89)
23(46)
16(55)
186(344)
39(51)
133(219)61(124)35(57)
29(43)
21(25)

ワードの検索結果に対する各検索システムの上位 10件の適合率の計算結果を表 7 左に示す．
適合 率について，SPARS-J の各順位付けと Na-mazu とで，対応のある平均値の差の検定 [8] を有意水
準 5%で行ったところ，有意な差が存在した．Namazu

値が小さいほど，ユーザプリファレンスとシステム

は SPARS-J の KR 法と同様に評価値に TF-IDF 法の順位付けの差が少なく，システムの順位付けが妥当を用いている．しかしながら，上位 10 件の適合率にで，ユーザの理想的な順位付けに沿ったものであると有意差が見られたのは，SPARS-J では構文解析を行いえる．[10] では，この手法が順序的尺度の測定手法

い索引語の種類によって重み付けを行っているためでとして妥当であることを示している．

あると考えられる．このことから SPARS-J は，ソフ

4. 3 評価実験 1:一般的な検索システムとの順位付
け性能の比較
本実験では，幅広い導入実績を持ち，信頼性の高い
全文検索システムである Namazu [7] と SPARS-J との検索結果の比較実験を行った．

トウェア検索において，文書検索システムと比較して優れており，部品検索システムとして機能を十分に果たすと期待できる．

4. 4 評価実験 2:SPARS-J 内で利用される各順
位付け手法の比較

一般の検索において，検索者は最初に表示される

本実験では SPARS-J における順位付け手法である，ページに該当部品が見つからなかった場合，次ページ
を見るよりはクエリを変更して再検索する傾向がある．

CR 法，KR 法，CR+KR 法それぞれの比較を行う．
SPARS-J では，順位付け手法にかかわらず検索結果

そこで本実験では，実際の利用方法を想定した検索をに含まれる部品の集合は同じであるため，各部品の順行い，上位 10 件の部品に対する適合率を求め，比較を

位付けのみが変化する．

行う．SPARS-J を用いることで迅速にソフトウェア

本実験では，評価実験 1 と同じ検索を行い，各順位

部品を検索でき，ソフトウェアの再利用に SPARS-J

付け手法における検索結果上位 10 件の適合率を求めが有効であることを確認する．

る．さらに，検索結果全体についてユーザにとっての実験においては，JDK1.4 や，SourceForge.net [9]最適な順位を作成し，ndpm 法を用いて SPARS-J のなどのオープンソース開発コミュニティなどで公開さ各順位付け手法で実際に得られた順位と最適な順位とれているソースコード，約 14 万ファイル (約 15 万クの比較を行い，順位の差を計算する．これらの指標をラス) から SPARS-J のデータベースを構築した．

もとに，各順位付け手法の特徴や，最適な順位付け手

なお，SPARS-J の検索結果は，類似部品を一つに法を調査する．検索対象となるデータベースおよび検まとめたグループ毎に順位付けを行っている．それに索キーワードは，評価実験 1 と同じものを利用した．

対応した処置として，Namazu の検索結果では，手作上記の検索対象データベースに対して，表 6 に示し

SPARS-J システムの各順位付け手法に対して，表6 に示された各キーワードの上位 10 件の検索結果に対する適合率の計算結果と，順位全体における ndpm

た検索キーワードで検索した結果を評価した．各キー値の計算結果を表 7 に示す．表 6 中の HITS 欄は，業で類似部品をまとめ一件として扱った．

6

論文／Java ソフトウェア部品検索システム SPARS-J
表 7 適合率・ndpm 値の評価結果
Table 7 The result of Precision and Ndpm
ndpm

precision
CR

KR

K1
1
K2
1
K3
0.5
K4
0.4
K5
0.4
K6
0.2
K7
0.9
K8
1
K9
0.6
K10 0.5
Ave. 0.65

1
1
0.5
0.9
0.4
0.2
1
0.8
0.7
0.7
0.72

表 8 アンケート内容とその回答
Table 8 The Results of Questionnaire

CR+KR

Namazu

1
1
0.5
0.8
0.4
0.2
1
1
0.7
0.7
0.73

0.9
0.6
0.4
0.6
0.3
0.1
0.4
0.2
0.4
0.7
0.46

CR

KR

0.036
0.194
0.133
0.123
0.208
0.184
0.081
0.047
0.190
0.210
0.143

0.048
0.261
0.117
0.200
0.192
0.184
0.103
0.109
0.305
0.324
0.178

CR+KR

0.037
0.221
0.092
0.189
0.194
0.160
0.080
0.052
0.257
0.267
0.141

Respondent
パッケージブラウザ
類似部品一覧
被利用クラス一覧
利用クラス一覧
メトリクス一覧
ソースコード取得機能
検索結果一覧の見やすさ
ハイライト表示
時間的コストの削減
ソフトウェア品質の向上
ソフトウェアの把握

A
5
5
5
5
4
3
5
5
5
3
5

B
4
2
5
5
2
5
3
5
3
3
5

C
4
4
5
5

4
3

3

D
5
5
5
1
1
1
4
5
3
5
1

E
5

1
5
5
5
5
3
3

F
3
4
5
5
4
2
3
5
4
4
2

G
3
3
5
5
5
5
5
5
1
1
1

Mode

5
5,4
5
5
4,1
5
5
5
5,3
3
5,3,1

発現場において適用した結果を紹介する．企業内のソSPARS-J において検索できた件数を部品群単位で表

フトウェアの一部 (約 2500 クラス) を用いて SPARS-J

している．またカッコ内は検出した総クラス数を表す．

のデータベースを構築し，ソフトウェア開発者・管理適合率について対応のある平均値の差の検定を行っ者合わせて 7 名の被験者に実際の業務におけるソース

たところ，KR 法と CR+KR 法は，CR 法と比較しコード管理支援を目的として本システムを用いてもらて有意水準 5%で優れているという有意差が存在した．

う．2 週間の運用後，その 7 名に対して，表 8 のような

また，ndpm 値の比較についても同様に対応のある平本システムについての 11 項目のアンケートを行った．

均値の差の検定を行ったところ，CR 法と CR+KR 法

表 8 にその回答結果を合わせて示す．回答は 1 からは，KR 法と比較して有意水準 5%で優れているとい5 までの 5 段階評価であり，各機能の有効性，利用しう有意差が存在した．

やすさや，各被験者にとっての利用頻度をもとに，総CR 法は，よく利用され中心的な役割を持つような合的に評価したものである．5 が一番良く，1 が一番部品が上位に順位付けされる．そのため，検索結果と悪い評価，また空白は無回答であったことを意味する．

して得られる件数や部品数は表 6 で示したように違い

また，表の一番右の列はその項目において最も回答がはあるが，件数の多少にかかわらず，検索結果全体の多かった評価値 (最頻値) を表す．

順位はユーザの想定する順位付けに近い．しかし，ク

表 8 のアンケート結果から，SPARS-J におけるエリとの適合性は低い中心的な役割を持つ部品も上位「パッケージブラウザの利用」，「類似部品のグループに順位付けされやすいため，上位の適合率では劣るこ化」，「被利用クラスの参照」，「利用クラスの参照」，とがわかる．

「検索結果一覧表示」，「ハイライト表示」は，実際の一方，KR 法は基本的にキーワードがよく現れる部

開発現場の開発者や管理者から高い評価を得ているこ品を上位に配置するため，検索結果上位は適合部品でとがわかる．また，具体的な感想として，SPARS-J

ある可能性が高い．しかし，キーワードが頻繁には出を用いることで，「部品を利用しているソフトウェアのてこないがクエリとの適合性は高い部品も少なからず把握」ができ，「部品改訂時の影響範囲の調査」がしや存在する．KR 法では，その部品を低く順位付けしてすいという意見もあった．これらの意見とパッケージしまうため，ユーザの想定する順位付けとの差が出やブラウザと利用クラスの参照，被利用クラスの参照とすくなる．

いう機能が高評価を得ていることを併せると，ソフト

また，CR+KR 法は CR 法と KR 法の両方の性質

ウェアシステムの全体像の把握に非常に適しているとを受け継ぎ，CR 法と KR 法の両方で高順位に順位付考えられる．加えて，CR 法による順位付けでは，ソ

けされた部品のみが上位に順位付けされることで，CR

フトウェアの中心となる部品が上位に順位付けされる法，KR 法単独の順位付けより性能が改善しているとため，利用関係をさらに有効活用できるという意見も考えられる．

あった．

4. 5 評価実験 3:企業内のソフトウェアに対するSPARS-J の適用
ここでは，企業の協力を得て SPARS-J を実際の開5. まとめと今後の課題
本論文では Java ソフトウェア部品検索システム
7電子情報通信学会論文誌 xxxx/xx Vol. Jxx–D–I No. xx

SPARS-J の構築を行い，実験的評価によってその有効性を確かめた．評価の結果，SPARS-J は全文検索システム Namazu と比較して検索結果上位 10 件の適合率に有意差が存在した．また，SPARS-J 内におけ

[8]

芝, 渡部, 石塚 編: “統計用語辞典”, 新曜社, (1984).

[9]“SOURCEFORGE.net”, http://sourceforge.net/ .

[10]との差において，2 つの順位付け手法にそれぞれ特徴“Measureing Retrieval Eﬀectivenessthe American Society for Information Science, Vol.

る各順位付け手法の比較では，検索結果上位 10 件の適合率や，検索結果全体においてのユーザの理想順位

Y. Y. Yao:

Based on User Preference of DocumentS”, Journal of[11]46, No. 2, pp. 133-145, (1995).
横森, 藤原, 山本, 松下, 楠本, 井上: “利用実績に基づくソ

フトウェア部品重要度評価システム”, 電子情報通信学会
論文誌 D-I, Vol. J86-D-I, No. 9, pp. 671-681, (2003).

が見られ，それらを統合した順位付け手法は一番有効（平成 xx 年 xx 月 xx 日受付）

であることを確認した．さらに，アンケートの結果から，SPARS-J はソフトウェアの再利用を目的とした検索だけでなく，ソフトウェアシステムの保守などを目的とした，部品の管理や把握に非常に有効であることを確認した．
これらを総合すると，SPARS-J はソフトウェア部
品検索システムとして高度な順位付けの性能を持ち，ソフトウェア開発時の部品再利用の促進・支援や保守

横森

励士 （正員）平 11 阪大・基礎工・情報卒．平 15 同大
大学院博士課程了．同年同大産学官連携研究員．博士 (工学)．プログラム構造解析の研究に従事．情報処理学会，IEEE 各会員．

時における部品の把握を支援するのに有効で，その結果，ソフトウェア品質の向上支援に利用でき，過去の資産の共有に役立つと考えられる．今後の課題として，他のソフトウェア部品検索システムとの比較，順位付
け性能以外の定量的な評価，などが挙げられる．なお，
現在 http://demo.spars.info で構築したシステムを公梅森

文彰

平 14 阪大・基礎工・情報卒．現在同大
大学院情報科学研究科博士前期課程在学中．
プログラム構造解析の研究に従事.

開中である．
謝辞 本研究は，一部，独立行政法人科学技術振興機構計算科学技術活用型特定研究開発推進事業 (ACT-JST)，日本学術振興会科学研究費補助金基盤研究（B）（課題番号：14380144）の支援を受けている．
文
[1]

西

秀雄

平 14 阪大・基礎工・情報卒．現在同大

献大学院情報科学研究科博士前期課程在学中．

J. C. Borda: “M’emoire sur les ’elections au scrutin”,

プログラム構造解析の研究に従事.

Histoire de l’Acad’emie Royale des Sciences, (1781).
[2]

C. Braun: “Reuse, in John J. Marciniak, editor”, Encyclopedia of Software Engineering, Vol. 2, John Wiley & Sons, pp. 1055-1069, (1994).

[3]

K. Inoue, R. Yokomori, H. Fujiwara, T. Yamamoto,
M. Matsushita, S. Kusumoto: “Component Rank:

[4]

山本

哲男

Relative Signiﬁcance Rank for Software Component

平 9 阪大・基礎工・情報卒．平 14 同大

Search”, Proceedings of the 25th International Conference on Software Engineering (ICSE2003), pp. 14-

大学院博士課程了．同年科学技術振興機構
研究員．博士 (工学)．ソフトウェアプロセ

24, Portland, Oregon, U.S.A., (2003).

スの研究に従事．情報処理学会，IEEE 各

I. Jacobson, M. Griss and P. Jonsson:“Software

会員．

Reuse”, Addison Wesley, (1997).
[5]

北, 津田, 獅々堀: “情報検索アルゴリズム”, 共立出版,[6](2002).
小堀, 山本, 松下, 井上: “類似度メトリクスを用いた Java

ソースコード間類似度測定ツールの試作”, 電子情報通信学会技術研究報告, SS2003-2, Vol. 103, No. 102, pp.
7-12, (2003).
[7]

8“Namazu Project”, http://www.namazu.org .

松下誠

平 5 阪大・基礎工・情報卒．平 10 同大大学院博士課程了．同年同大・基礎工・情報・
助手．平 14 阪大・情報・コンピュータサ

論文／Java ソフトウェア部品検索システム SPARS-J
イエンス・助手．博士 (工学)．ソフトウェ
アプロセス，オープンソースソフトウェア
開発の研究に従事．

楠本 真二

（正員）

昭 63 阪大・基礎工・情報卒．平 3 同大学
院博士課程中退．同年同大・基礎工・情報・
助手．平 8 同学科講師．平 11 同学科助教
授．平 14 阪大・情報・コンピュータサイ
エンス・助教授．博士 (工学)．ソフトウェ
アの生産性や品質の定量的評価，プロジェ
クト管理に関する研究に従事．情報処理学会，IEEE，IFPUG
各会員．

井上 克郎

（正員）

昭 54 阪大・基礎工・情報卒．昭 59 同大大学院博士課程了．同年同大・基礎工・情報・助手．昭 59〜昭 61 ハワイ大マノア
校・情報工学科・助教授．平 1 阪大・基礎
工・情報・講師．平 3 同学科・助教授．平7 同学科・教授．平 14 阪大・情報・コン
ピュータサイエンス・教授．博士 (工学) ソフトウェア工学の研究に従事．情報処理学会，日本ソフトウェア科学会，IEEE，
ACM 各会員．

9