情報処理学会論文誌

Vol. 50

No. 3

1139–1143 (Mar. 2009)
CF showed better performance than the conventional methods and the medianof NDPM was improved from 0.55 to 0.33 for low-generality components.

テクニカルノート

ソフトウェアコンポーネント推薦における協調フィルタリングの効果
亀大井杉靖 高†1
直 樹†3

角門

田田

雅
暁照†1
人†1

柿松

元健†2
本 健 一†1

1. は じ め に
近年，Microsoft や Sun Microsystems などの開発プラットフォームベンダから，数多くのソフトウェアコンポーネント（以降，コンポーネント）が提供されており，開発者はコンポーネントを利用することで，品質の高いソフトウェアを効率良く開発ことが可能である2),3) ．しかし，提供されるコンポーネントの数が膨大となり，有用なコンポーネントを発見しにくいという問題が生じている2),3) ．

本論文では，汎用性の高い/低いコンポーネントに対する，協調フィルタリングを用いたコンポーネント推薦（亀井ら，2006 年）の効果を明らかにするために，2 つの仮説，(1) 汎用性の高いコンポーネントに対する推薦精度が従来手法（ランダム推薦法，平均値に基づく推薦法）より高い，(2) 汎用性の低いコンポーネントに対する推薦精度が従来手法より高い，を実験的に検証した．推薦精度を調べるために，29 件のプロジェクト（使用されているコンポーネントの総数は 2,558 個）を用いて評価実験を行った．その結果，仮説 (2) が支持され，協調フィルタリングを用いたコンポーネント推薦は汎用性の低いコンポーネントに対して特に効果がある（NDPM の中央値が 0.55 から 0.33 へ改善した）ことが分かった．

この問題を解決するための手法として，本論文では協調フィルタリングに着目する．協調フィルタリングは，大量に存在するアイテム（書籍や楽曲など）の中からユーザの好みに合うと予測されるアイテムを選出して推薦する手法であり，書籍の推薦などに適用した事例が報告されてきた1) ．本論文では，「開発状況が似ているプロジェクトどうしは，有用であるコンポーネントも似ているであろう」と仮定し，開発中のプロジェクトで有用であろうコンポーネントの推薦に協調フィルタリングを適用することを考える．具体的には，類似するプロジェクトで使用しており，開発中のプロジェクトで未使用のコンポーネントを推薦する．
なお，本論文ではコンポーネントをオブジェクト指向におけるクラスの意味で用いる．

The Eﬀect of Collaborative Filtering on
Software Component Recommendation

従来の書籍などのアイテムと異なり，コンポーネントには汎用性が高く多くのプロジェク
トで用いられるコンポーネントと，特定の用途にのみ用いる汎用性が低いコンポーネントがある．汎用性が低いコンポーネントは，開発者にとっては未知の可能性があり，推薦対象とYasutaka Kamei,†1 Masateru Tsunoda,†1
Takeshi Kakimoto,†2 Naoki Ohsugi,†3
Akito Monden†1 and Ken-ichi Matsumoto†1

しては汎用性が高いコンポーネントよりも重要であるが，協調フィルタリングによる推薦の効果は従来明らかでない．
そこで本論文では，2 つの仮説，(1) 汎用性の高いコンポーネントに対する推薦精度が従来手法（コンポーネントを無作為に推薦するランダム推薦法，および，平均値に基づく推薦

To clarify the eﬀect of collaborative ﬁltering (CF) on recommending highgenerality / low-generality software components, we experimentally veriﬁed twohypotheses; (1) the recommendation accuracy of CF for high-generality components is better than that of conventional methods (random algorithm anduser average algorithm) and (2) the recommendation accuracy of CF for lowgenerality components is better than that of the conventional methods. We
evaluated recommendation accuracy of CF with a dataset containing 29 open
source software development projects (including 2,558 used components). As aresult, the hypothesis (2) was supported, and the recommendation accuracy of1139

手法）より高い，(2) 汎用性の低いコンポーネントに対する推薦精度が従来手法より高い，†1 奈良先端科学技術大学院大学情報科学研究科
Graduate School of Information Science, Nara Institute of Science and Technology†2 大阪大学大学院情報科学研究科
Graduate School of Information and Science Technology, Osaka University†3 株式会社 NTT データ
NTT Data Corporation

c 2009 Information Processing Society of Japan1140

ソフトウェアコンポーネント推薦における協調フィルタリングの効果を実験的に検証する1 ．推薦精度を調べるために，29 件のプロジェクト（使用されている手順 2

その k 個の類似プロジェクトで使用されており，現在開発中のプロジェクトで未コンポーネントの総数は 2,558 個）それぞれに対して，あるバージョンの開発状況（コン使用のコンポーネントの使用回数を見積もる．使用回数の見積りには，Weighted Sum

ポーネントの使用回数）を基に，次期バージョンで用いるであろうコンポーネントを推薦

法4),9) を用いた．Weighted Sum 法は，類似度を重みとして，類似プロジェクトにおし，実際に用いられているかどうかを調べた．

けるコンポーネントの使用回数の加重平均を見積り値とする方法である．

2. 協調フィルタリングを用いたコンポーネント推薦方法
協調フィルタリング推薦法では，書籍などのアイテムを協調フィルタリングによって推薦する考え方をコンポーネント推薦に適用し，「開発状況が似ているプロジェクトどうしは，有用とするコンポーネントも似ているであろう」と仮定する．すなわち，類似するプロジェクトで使用しており，開発中のプロジェクトで未使用なコンポーネントを推薦する．

手順 3

プロジェクト pa で使用されていないコンポーネントすべてに対して予測値を算出し，見積もった使用回数が多い順に次期開発で有用であろうコンポーネントとして推薦する．

3. 評 価 実 験
3.1 実験の概要

表 1 は協調フィルタリング推薦法で用いるデータ形式であり，表 1 の pi は i 番目のプロ

本論文では，協調フィルタリング推薦法に対して 2 つの仮説，(1) 汎用性の高いコンポージェクト（従来の協調フィルタリングでは，ユーザ）を，cj は j 番目のコンポーネント（書ネントに対する推薦精度が従来手法（ランダム推薦法，平均値に基づく推薦法）より高い，籍）を表す．また，ri,j はプロジェクト pi で使用されているコンポーネント cj の使用回数(2) 汎用性の低いコンポーネントに対する推薦精度が従来手法より高い，を実験的に検証す（書籍に対するユーザの評価）を表す．

る．仮説が正しいか否かを確かるために，推薦されたコンポーネントが次期バージョンでど協調フィルタリング推薦法では，現在開発中のプロジェクトでのコンポーネントの使用回数を基に，未使用のコンポーネントを次の 3 つの手順により推薦する．
手順 1

現在開発中のプロジェクト pa と，他のプロジェクト pi との間の類似度をコンの程度用いられているかどうかを調べた．本論文において汎用性の低いコンポーネントは，全プロジェクト中，20%以下のプロジェクト（29 件中 5 プロジェクト以下）でしか使用されていないコンポーネントとした．残りのコンポーネントは汎用性が高いと見なした．

ポーネントの使用回数から算出し，k 個の類似プロジェクトを求める．プロジェクト

類似性に基づくコンポーネント推薦方法9) の比較対象として，ランダム推薦法4) と平均間の類似度計算には，Adjusted Cosine Similarity 法4),9) を用いた．Adjusted Cosine

値に基づく推薦法4),5) を用いた．ランダム推薦法は，各コンポーネントを無作為に推薦す

Similarity 法は，各プロジェクトにおけるコンポーネントの使用回数をベクトルの要素るアルゴリズム4) である．一方，平均値に基づく推薦は，他プロジェクトで平均的に高い頻とし，2 つのベクトルのなす角のコサインを類似度とする方法である．

度で使用されているコンポーネントを優先的に推薦するアルゴリズム4),5) である．

3.2 データセット
Table 1p1p2···
pi···pm

表 1 推薦に用いるデータ形式
Data format used for recommendation.

c1
r11
r21···
ri1···
rm1c2
r12r22···ri2···
rm2···············

cjr1jr2j···rij···
rmj···············cnr1nr2n···
rin···rmn

1 本論文は，筆者らの研究会原稿9) を基に実験の再検討と実施を行い，論文としてまとめたものである．

情報処理学会論文誌

Vol. 50

No. 31139–1143 (Mar. 2009)

実験に使用したデータは，オープンソースソフトウェア開発環境を提供している Source-Forge.net 2 において，Java 言語を用いて開発されているプロジェクトである．SourceForge.net においてプロジェクトの活発さを表す指標である Activity の上位 30 件のプロジェ
クトのうち，複数のバージョンが公開されているプロジェクト 29 件を用いた．29 件のプロ
ジェクト，旧/新バージョンで用いられているコンポーネントのうち，以下の条件を満たすコンポーネントを除く 2,558 個のコンポーネントを用いた．

• 全プロジェクトにおいて使用頻度が著しく高く，開発者にとって既知であると考えられ
2 http://sourceforge.net/

c 2009 Information Processing Society of Japan


1141

ソフトウェアコンポーネント推薦における協調フィルタリングの効果るコンポーネント（全プロジェクトで使用されているコンポーネント）• 全プロジェクトにおいて使用頻度が著しく低く，開発者にとって用いる機会が少ないと考えられるコンポーネント（1 つのプロジェクトでしか使用されていないコンポーネント）

3.3 実験の手順
本実験において表 1 の pi ∈ p1 , p2 , . . . , pm は 29 件の新バージョンのプロジェクトを，

cj ∈ c1 , c2 , . . . , cn は旧/新プロジェクトで使用されている 2,558 個のコンポーネントを示す．実験の手順を以下に示す．
手順 1 推薦対象のプロジェクトとして，i 番目のプロジェクト pi を選択し，pi を旧バー

図 1 実験結果（汎用性の高いコンポーネント）
Fig. 1 Experimental result for high-generality components.

ジョンに置き換える．
手順 2 旧バージョンのプロジェクト pi の j 番目のコンポーネント cj の使用回数 ri,j を未使用と仮定し，cj に対する予測値 r̂i,j を他の新バージョンのプロジェクトを用いて算出する．
手順 3

手順 2 をプロジェクト pi のすべてのコンポーネント cj で実行する．

手順 4

手順 1，2，3 をすべてのプロジェクトにおいて実行する．

3.4 評 価 基 準
提案システムの精度を実験的に評価するための基準値として，Yao が提案した NDPM
（Normalized Distance-based Performance Measure）6) を用いた．NDPM はユーザ ua が

システムに求める理想の推薦 Oa と，システムがユーザに行う推薦 Oa との差異を表す値で

図 2 実験結果（汎用性の低いコンポーネント）
Fig. 2 Experimental result for low-generality components.

あり，協調フィルタリングや情報推薦などのアルゴリズムの精度評価に広く用いられている．NDPM は [0, 1] の範囲の実数値をとり，値が小さいほど Oa と Oa の差異が小さい，す分位点）では他の 2 つの手法より小さい値であった．ただし，有意水準 5%で Wilcoxon のなわち，推薦の精度が高いことを示す．推薦の精度は，旧バージョンにおけるコンポーネン符号付順位和検定により平均値の差を検定した結果，協調フィルタリング推薦法の NDPM

トの使用回数を基に推薦されたコンポーネントが，新バージョンで実際に用いられているかの平均値は，ランダム推薦法と比べて有意に小さかったものの（p = 0.000），平均値に基づ否かで求める．推薦結果を次期開発に活かせるかという観点から評価するため，本論文におく推薦法と比べて有意に小さくなかった（p = 0.058）．仮説 (1)「汎用性の高いコンポーネける理想の推薦 Oa は，新バージョンで実際に用いられていたコンポーネントの使用回数がントに対する推薦精度が従来手法より高い」は，支持されなかった．

大きい順に推薦されていた場合とした．

平均値に基づく推薦方法は，使用回数が多い順にコンポーネントを推薦するため，使用回3.5 結果と考察数が多いコンポーネントが多く含まれる推薦では，協調フィルタリング推薦法とほぼ同程度汎用性の高いコンポーネントにおいて各手法（ランダム推薦法，平均値に基づく推薦法，の性能が得られたと考える．

協調フィルタリング推薦法）による推薦を行った場合の NDPM を図 1 に示す．グラフの縦汎用性の低いコンポーネントにおいて推薦を行った場合の NDPM を図 2 に示す．汎用性軸は NDPM を示す．協調フィルタリング推薦法は，NDPM の最大値では平均値に基づくの高いコンポーネントの場合と比べて従来手法との中央値の差が大きく，平均値に基づく推推薦より大きな値であったものの，それ以外の値（最小値，第 1 四分位点，中央値，第 3 四薦の NDPM よりも中央値が 0.22 小さかった．また，平均値の差の検定を行った結果，協情報処理学会論文誌

Vol. 50

No. 31139–1143 (Mar. 2009)

c 2009 Information Processing Society of Japan


1142

ソフトウェアコンポーネント推薦における協調フィルタリングの効果と AWT のメソッド（2090 メソッド）を対象とした評価実験を行っている．
一方で，有用なコンポーネントを発見する手段として，SPARS-J 2) ，Google CodeSearch 1 ，Koders 2 ，Jarhoo 3 といったコンポーネント検索エンジンが多数提案されている．たとえば，SPARS-J は Java ソースコード検索システムであり，ソースコードを静的解析して抽出した索引語を用いてキーワード検索を行うことができる．
上記のように，コンポーネント推薦やコンポーネント検索エンジンは今までにいくつか存在するが，本論文は，協調フィルタリングを用いたコンポーネント推薦の評価，特に汎用性
図 3 実験結果（全コンポーネント）
Fig. 3 Experimental result for all components.の高い/低いコンポーネントに対する推薦精度を実験的に評価した点が従来と異なる．

5. お わ り に調フィルタリング推薦法の NDPM の平均値は，他の 2 つの手法それぞれと比べて有意に小

本論文では，汎用性の高い/低いコンポーネントに対して協調フィルタリングを用いたコさかった（p = 0.000，p = 0.000）．仮説 (2)「汎用性の低いコンポーネントに対する推薦精ンポーネント推薦方法9) が効果があるかを明らかにするために，29 件のプロジェクト（使度が従来手法より高い」は，支持された．

用されているコンポーネントの総数は 2,558 個）を用いて評価実験を行った．その結果，協一般的に，汎用性が低いコンポーネントは，有用となるドメインが限定されており，その推薦のためには各プロジェクトの個別性を考慮することが望ましい．協調フィルタリング推調フィルタリングを用いたコンポーネント推薦は汎用性の低いコンポーネントに対して特に効果があることが分かった．

薦法は，類似するプロジェクトを求め，そのプロジェクトで使用されているコンポーネント

謝辞 本研究の一部は，文部科学省「次世代 IT 基盤構築のための研究開発」の委託に基が推薦されるため，プロジェクトの個別性が考慮され推薦精度が高かったと考えられる．協

づいて行われた．また，特別研究員奨励費（課題番号：20009220）の研究助成を受けて行調フィルタリング推薦法は，汎用性の低いコンポーネントの推薦に対して特に有用であるとわれた．

期待できる．
最後に，コンポーネント全体において推薦を行った場合の NDPM を図 3 に示す．最大値
以外では NDPM が小さく，従来手法と比べて高い精度が得られることが分かった．平均値の差の検定を行った結果，協調フィルタリング推薦法の NDPM の平均値は，他の 2 つの手法それぞれと比べて有意に小さかった（p = 0.000，p = 0.003）．

4. 関 連 研 究
協調フィルタリングを用いたコンポーネント推薦の手法がいくつか提案されている3),7),8) ．
たとえば，McCarey ら3) は，メソッドの使用順序を基に，次に用いるであろうメソッドを推薦する手法を提案している．その効果を確かめるために，Java の描画ライブラリ Swing1 http://www.google.com/codesearch2 http://www.koders.com/
3 http://www.jarhoo.com/

情報処理学会論文誌

Vol. 50

No. 31139–1143 (Mar. 2009)

参考文献

1) Herlocker, J.L., Konstan, J.A., Terveen, L.G. and Riedl, J.T.: Evaluating collaborative ﬁltering recommender systems, ACM Trans. Inf. Syst., Vol.22, No.1, pp.5–53(2004).
2) Inoue, K., Yokomori, R., Yamamoto, T., Matsushita, M. and Kusumoto, S.: Ranking Signiﬁcance of Software Components Based on Use Relations, IEEE Trans.
Softw. Eng., Vol.31, No.3, pp.213–225 (2005).
3) McCarey, F., Cinnéide, M.O. and Kushmerick, N.: Knowledge reuse for software
reuse, Web Intelligence and Agent Systems, Vol.6, No.1, pp.59–81 (2008).
4) Ohsugi, N.: A Framework for Software Function Recommendation based on Collaborative Filtering, Ph.D. Thesis, Nara Institute of Science and Technology (2004).
5) Shardanand, U. and Maes, P.: Social information ﬁltering: algorithms for automating “word of mouth”, Proc. CHI Conf. on Human Factors in Computing Systems,
pp.210–217 (1995).

c 2009 Information Processing Society of Japan1143

ソフトウェアコンポーネント推薦における協調フィルタリングの効果

6) Yao, Y.: Measuring retrieval eﬀectiveness based on user preference of documents,
Journal of the American Society for Information Science, Vol.46, No.2, pp.133–145(1995).
7) Ye, Y. and Fischer, G.: Supporting reuse by delivering task-relevant and personalized information, Proc. Int’l Conf. on Software Engineering, pp.513–523 (2002).
8) 市井 誠，山本哲男，横森励士，井上克郎：ソフトウェア部品推薦のための協調フィルタリング手法の提案と実現，電子情報通信学会技術研究報告．SS，ソフトウェアサ
イエンス，Vol.104, No.243, pp.7–12 (2004).
9) 亀井靖高，角田雅照，柿元 健，大杉直樹，門田暁人，松本健一：進行中のプロジェク
トに有用なソフトウェアコンポーネントの推薦方法，電子情報通信学会技術報告．SS，ソフトウェアサイエンス研究会，Vol.106, No.16, pp.25–30 (2006).

柿元健（正会員）

平成 15 年神戸市立工業高等専門学校専攻科電気電子工学専攻修了．平成 20 年奈良先端科学技術大学院大学情報科学研究科博士後期課程修了．
同年大阪大学情報学部特任助教．博士（工学）．ソフトウェア信頼性/開発
工数予測等の研究に従事．

大杉 直樹（正会員）
平成 13 年奈良工業高等専門学校専攻科電子情報工学専攻修了．平成 16(平成 20 年 8 月 21 日受付)

年奈良先端科学技術大学院大学情報科学研究科博士後期課程修了．同年(平成 20 年 12 月 5 日採録)

同大学研究員．平成 19 年株式会社 NTT データ入社，技術開発本部勤務．
博士（工学）．エンピリカルソフトウェア工学，コスト見積手法，要件定亀井 靖高（学生会員）

義書レビュー方法の研究に従事．

平成 17 年関西大学総合情報学部卒業．平成 19 年奈良先端科学技術大学
院大学情報科学研究科博士前期課修了．現在，同大学博士後期課程在籍．
平成 20 年日本学術振興会特別研究員（DC2）採用，現在に至る．エンピ
リカルソフトウェア工学，特にソフトウェア信頼性の研究に従事．

門田 暁人（正会員）
平成 6 年名古屋大学工学部卒業．平成 10 年奈良先端科学技術大学院大学情報科学研究科博士後期課程修了．同年同大学助手．平成 16 年同大学助教授．平成 19 年同大学准教授．平成 15〜16 年 Auckland 大学客員研究員．博士（工学）．定量的ソフトウェア開発支援，ソフトウェアプロテ

角田 雅照（正会員）

クションの研究に従事．

平成 9 年和歌山大学経済学部卒業．平成 19 年奈良先端科学技術大学院大学情報科学研究科博士後期課程修了．同年同大学特任助教．博士（工学）．
ソフトウェアメトリクス，ユビキタスコンピューテングの研究に従事．

松本 健一（正会員）
昭和 60 年大阪大学基礎工学部卒業．平成元年同大学大学院博士課程中退．同年同大学助手．平成 5 年奈良先端科学技術大学院大学情報科学研究科助教授．平成 13 年同大学教授．工学博士．エンピリカルソフトウェア
工学，特に，プロジェクトデータ収集/利用支援の研究に従事．

情報処理学会論文誌

Vol. 50

No. 31139–1143 (Mar. 2009)

c 2009 Information Processing Society of Japan