協調フィルタリングを用いたソフトウェア技術者向け開発技術
推薦の試み
角田 雅照*，秋永

知宏*, (注 1)，引地

門田 暁人*，松本健一*

一将*, (注 2)，大杉

直樹**，柿元健***，

A Development Technique Recommendation Method
for Software Engineers Using Collaborative Filtering
Masateru TSUNODA*, Tomohiro AKINAGA*, (1), Kazumasa Hikichi*, (2), Naoki OHSUGI**,
Takeshi KAKIMOTO***,Akito MONDEN*, Ken-ichi MATSUMOTO*
It is important for software engineers to improve their skills by self-learning existing software development
techniques. However, it is not easy for engineers to find out which techniques should be learned because there
are so many existing techniques and also new techniques are emerging continuously. To support software engineers’ self-learning, we propose a development technique recommendation method using collaborative filtering(CF). In our method, a user (engineer) gives ratings to development techniques based on his/her interest or benefit, then development techniques are recommended based on similarity measure of CF. The similarity is computed based on co-occurrence of terms of development techniques on web pages. We conducted an experiment toevaluate the recommendation accuracy of the proposed method. As a result, the average NDPM was 0.41 forrecommending development techniques that are unfamiliar to software engineers.
キーワード：学習支援，協調フィルタリング，クローリング，共起関係

技術者のスキルの向上には，自発的学習が大きな役

1. はじめに割を果たす．ニッセイ基礎研究所の調査(3)によると，専ソフトウェア開発において，技術者のスキルを高め

門スキルの獲得方法として，自発的学習を挙げている

ることは非常に重要である．例えば，経済産業省が組

労働者の割合は，企業の規模により異なるが 49%～63%

込みソフトウェア産業の事業責任者を対象に行った調であり，OJT（On the Job Training）に次ぐ 2 番目である．

査(1)では，設計品質の向上，開発期間の短縮，生産性の大企業（従業員が 301 人以上の企業）の場合，勤務先向上のためには，技術者のスキル向上が最も有効であが実施する研修により専門スキルを獲得する労働者のるとの回答が最多であった．また，日本情報システム・

割合は 36%であり，研修も比較的大きな役割を果たし

ユーザー協会が行った調査(2)によると，IT 要員数は足りているが(4)，中小企業の場合，同割合は 11～21%であり，ているが能力が不足していると回答している企業の割

自発的学習の重要性がより大きい．また，近年オープ合が 22%，要員数も能力も不足していると回答していンソースソフトウェア（OSS）の開発が盛んであるが，る企業の割合が 57%あった．すなわち，スキル向上は

OSS を開発する技術者（学生や研究者の場合もある）

重要な課題であるにも関わらず，十分に解決されていの多くは，業務と無関係に開発を行っており，自発的ないのが現状であるといえる．

学習に頼らざるを得ない．

*

奈良先端科学技術大学院大学 情報科学研究科 ( Graduate School of Infor-mation Science, Nara Institute of Science and Technology)
株式会社 NTT データ (NTT DATA Corporation)***
香川高等専門学校 電気情報工学科 (Department of Electrical and Computer Engineering, Kagawa National College of Technology)(注 1)
現在，日立ソフトウェアエンジニアリング株式会社 (Presently with Hitachi Software Engineering Co., Ltd.)(注 2)
現在，株式会社日立製作所 (Presently with Hitachi, Ltd.)**1ただし，ソフトウェア開発に関する技術を，技術者に多数のユーザがそれぞれのアイテム（開発技術）に自ら学習することは容易ではない．技術者がスキルアついて評価を行っている必要があるが，提案する方式

ップするためには，情報処理技術者試験で扱われていの場合，ユーザ数の多寡，他ユーザの評価の有無に関るような，ある程度普遍的な技術を学習することに加わらず，推薦が可能となる．

え，最新の開発技術を学習する必要がある．前者の技

以降，2 章において協調フィルタリングについて述べ，

術は体系的に整理されており，技術者はある程度容易

3 章で提案する推薦方式について説明する．4 章では評に学習すべき技術を特定することができる．後者の技

価実験について説明し，5 章において関連研究について

術については，最新の技術が多数提案され続けており，述べる．最後に 6 章で結論と今後の課題について述べその中から学習すべき技術を特定することは容易では

る．

ない．

2. 協調フィルタリング

そこで本論文では，技術者の学習支援を目的として，

協調フィルタリングは，ユーザにとって好ましい，

学習すべき技術を推薦する方式を提案する．有用な推または役立つと考えられるアイテム（書籍，音楽など）

薦は技術者によって大きく異なる．例えば，Web アプを推薦するための手法として用いられている(5)(6)(7)．
「協リケーションを開発するための技術を学習している技

調」とは，ユーザの知識を利用することを意味し，「フ

術者に対して，JSP（Java Server Pages）関連の技術を推ィルタリング」とは，大量のアイテムの中から，役立薦することは有用であると考えられるが，ERP パッケ

つアイテムだけを選び出して推薦することを意味する．

ージ関連の技術を推薦することはミスマッチである．

一般的な協調フィルタリングで推薦を行う場合，各ユ提案方式では，協調フィルタリング(5)(6)(7)の考え方に基ーザが各アイテムを（5 段階の数値などで）評価していづき，現在学習している（興味を持っている）開発技

ることが前提となる（システムによっては，ユーザが術と関連の強い技術の推薦が有用であると考え，推薦

そのアイテムを閲覧したかどうかを評価の代わりに用を行う．協調フィルタリングとは，主に書籍や音楽ないることもある）．あるユーザが未評価のアイテムが，どのアイテムを推薦するシステムで用いられてきた技

そのユーザにとって役立つと考えられる場合，そのア術である．

イテムを推薦する．

提案方式では，開発技術の関連の強さを求めるため

協調フィルタリングの主なアルゴリズムとして，ユに，インターネット上での情報を利用する．ソフトウ

ーザベース手法とアイテムベース手法の 2 つがある．

ェア開発技術の多くは，様々な Web ページで紹介，解ユーザベース手法は，「アイテムの評価（好み）が似た説されている．このとき，関連の強い技術同士は，同ユーザは，どのアイテムに対しても似た評価を行う」

じ Web ページ上に記述されている可能性が高いと考えと仮定し，推薦を行う．具体的には，各ユーザの各アられる．筆者らが調べた範囲では，Web ページでの開イテムに対する評価を要素とするベクトルを，ユーザ発技術の解説記事では，組み合わせて使う技術，及びごとに作成し，そのベクトルのなす角をユーザの類似

類似した技術との対比が記述されることが多い．例え度とする．そして推薦対象のユーザが未評価で，かつば，典型的な解説ページ(8)では，CGI（MySQL）と組み類似したユーザの評価が高いアイテムを推薦する．ユ

合わせて用いる Ruby が紹介されるとともに，Ruby とーザベース手法を用いた推薦システムとして，Resnick

対比される Perl，Java，C++について記述されている（調ら(6)の GroupLens が挙げられる．GroupLens は，Usenet

査を行ったわけではないが，一般に技術に関する解説にある多数のニュース記事から，ユーザの好みに合うページ（例えば統計学など）では，同様の傾向が見らと予測される記事を選び出して推薦するシステムであれると考えられる）．

る．

そこでインターネット上の多数の Web ページにおけアイテムベース手法は Sarwar(7)らによって提案される共起関係に基づいて単語間の関連の強さを求めるアたアルゴリズムであり，アイテム間の類似度に基づいルゴリズム(9)を適用し，開発技術間の関連を求める．従て推薦を行う．アイテムベース手法の場合も，各ユー来の協調フィルタリングのアルゴリズムでは，推薦時

2ザの各アイテムに対する評価を要素としてベクトルを

表 1 提案方式で想定するデータ作成するが，ユーザごとにベクトルを作成するのでは

t1

t2

…

tj

…

tn

なく，アイテムごとに作成し，類似度を計算する．す

p1

r11

r12

…

r1j

…

r1n

なわち，
「あるグループのユーザに高評価されるアイテ

p2

r21

r22

…

r2j

…

r2n

ムは，類似の性質を持っている」と仮定し，推薦対象

…

…

…

…

…

…

…

のユーザが高い評価を行っているアイテムと類似度の

pi

ri1

ri2

…

rij

…

rin

高いアイテムを推薦する．本論文では，利用者以外の

…

…

…

…

…

…

…

ユーザの登録，評価を不要なシステムとするため，ア

pm

rm1

rm2

…

rmj

…

rmn

イテムベース手法に Web ページにおける単語の共起関係に基づく類似度計算法を組み合わせた方式を提案すに当てはめて求められるが(9)，本論文では協調フィルタ

る．詳細については次章で述べる．

リングで一般的なコサイン類似度 (10)に当てはめて計算を行う．

3. 提案方式

表 1 のデータを使ってアイテムベースのコサイン類

3.1 推薦アルゴリズム

似度を計算する場合，開発技術 tb と tj の類似度 sim(tb, tj)

提案方式では，協調フィルタリングのアイテムベーは以下の式により計算される．

ス手法に基づいて推薦を行う．ただし，他ユーザの評価を利用する代わりに，Web ページにおける単語の共起関係に基づいて関連の強さを求めるアルゴリズム

m

r r

simtb , t j  (9)を適用し，開発技術（を指す単語）の Web ページでの

m

r
f 1

共起関係に基づいて類似度を計算する．すなわち，「1つの Web ページ内で同時に紹介，解説されることが多

fb

f 1

2
fb

fj

(1)

m

r
f 1

2
fj

ここで，Web ページ pf に開発技術 tb が含まれる場合，

い開発技術同士は関連が強い」と仮定し，推薦対象のrfb は 1 となり，rfb2 も 1 となる．pf に tb が含まれない場

ユーザが高い評価を行っている開発技術と類似度の高合，rfb2 は 0 となる．すなわち，い（Web ページにおける共起関係が類似している）開

m

r
f 1

発技術を推薦する．これにより，推薦対象のユーザ以

2
fb

は tb を検索エンジンで検索した場合のヒット数に等しくなる．また，rfb

外の評価なしで推薦が可能となる．

× rfj は pf に tb と tj が含まれる場合のみ 1 となる．すな

提案方式での類似度計算は，表 1 のような m×n のマm r  r は tb と tj を検索エンジンでアンド検索

わち，

トリックス形式のデータを想定している．pi∈{p1, p2, ...,f 1pm}は i 番目の Web ページを表し，tj∈{t1, t2, ..., tn}は jfbfj

した場合のヒット数に等しくなる．よって以下の式に番目の開発技術（の単語）を表す．また，rij∈{r11, r12, ...,

より，式(1)を使った場合と同等の類似度が得られる．

rmn}は Web ページ pi に開発技術 tj が含まれているかどうかを表し，含まれている場合は 1，含まれていない場合

sim(tb , t j ) 

は 0 となる．
ただし，膨大な数の Web ページそれぞれについて，

hbj

(2)

hb h j

ここで hb，hj はそれぞれ開発技術 tb，tj を検索エンジ多数存在する推薦候補の単語が含まれているかどうかンで検索した場合のヒット数，hbj は tb と tj を検索エンを調べるのは膨大な時間を要する．そこで提案方式でジンでアンド検索した場合のヒット数を表す．

は，検索エンジンで検索を行った場合のヒット数を用

類似度 sim(tb, tj)に基づき，ユーザが未評価の開発技術

いた類似度計算法を適用し(9)，表 1 のデータを使った

tb に対する予測評価値 êb を以下の式（類似度を重みとし場合と同等の計算結果を得て推薦を行う．この場合のた加重平均）により求める．

類似度は，検索エンジンから得られるヒット数を，何らかの類似度計算法（Jaccard 係数や Overlap 係数など）

3

推薦システム

手順1
ユーザ評価

技術者
プロフィール
データベース

手順5

開発技術
データベース

技術者

PythonJSPJavaBeans
.....

手順2

オンライン
技術用語辞典

手順3

開発技術

検索エンジン
Webページ
データベース

HIT数

手順4

図 1 ソフトウェア技術者向け開発技術推薦システムの概要

eˆb 

ンド検索する．得られたヒット数は Web ペー e  sim(t , t )jjk  nearestTechsbj sim(t , t )jk  nearestTechsb

ジデータベースに記録する．

(3)

手順 4 システムは，開発技術データベースと Web ペjージデータベースを用いて，開発技術間の類似
ここで，ej はユーザの開発技術 tj に対する評価値を表す．

度を計算する．

また，k-nearestTechs は，ユーザが評価を行っており，

手順 5 システムは，各データベースを用いて，ユーザ

かつ tb との類似度が高い k 個の開発技術の集合を表す．

が興味を持っている技術と類似しており，かつk-nearestTechs はあらかじめ決めておく必要がある．式 3

ユーザが知らない（未評価の）開発技術を，興の計算結果に基づき，予測評価値の高い順に開発技術味が高いと推定される順番にリスト形式で表をユーザに推薦する．

示する．

3.2 開発技術推薦システムの概要

対象としたオンライン技術用語辞典には，情報処理

提案方式に基づくシステムの概要を図 1 に示す．シ

技術者試験とオーバラップする部分もあるが，情報処

ステムでは，最初にユーザ（技術者）が任意の開発技

理技術者試験に含まれない（新しい）技術用語も多く術に対して（興味があるかなどに基づき）評価を行う．

登録されており，システムで利用する対象としてふさ

システムはその評価に基づき，ユーザに適した（ユー

わしいと考える．例えば e-words(12)には，クイックソー

ザの評価が高い開発技術と類似した）開発技術を推薦

ト（情報処理技術者試験に含まれる技術用語）などがする．推薦候補となる開発技術は，オンライン技術用登録されているが，Ruby on Rails や PostgreSQL（情報語辞典(11)(12)から抽出する．開発技術の類似度は，開発処理技術者試験に含まれない技術用語）などの技術用技術を紹介，解説している Web ページにおける，開発

語も数多く登録されている．

(13)

技術の共起関係を Googleなどの検索エンジンの検索

図 2 に各データベースのイメージを示す．ユーザが結果に基づいて計算する．推薦の手順を以下に示す．

評価する開発技術（技術者プロフィールデータベース

手順 1 ユーザは任意の開発技術に対して 4 段階で評の開発技術）は，オンライン技術用語辞典（システム

価を行い，システムに入力する．得られた情報の推薦候補の開発技術）に含まれていなくてもよい．

は技術者プロフィールデータベースと開発技

ただし，実際にユーザに推薦される開発技術は，オン

術データベースに記録する．

ライン技術用語辞典に含まれているもののみとなる．

手順 2 システムは，推薦候補となる開発技術をオンラ

また，オンライン技術用語辞典以外でも，何らかのサ

イン技術用語辞典から抽出し，開発技術データ

イトから開発技術に関する単語を抽出し，それらを推ベースに追加する．

薦候補とすることができる．さらに，人手で開発技術

手順 3 システムは，開発技術データベースから，2 つに関する単語を入力し，それらを推薦候補とすることの開発技術（ユーザが評価済みの技術と未評価が可能である．提案方式では，推薦候補となる開発技の技術）を選択し，それらを検索エンジンでア術の単語だけあればよく，単語間の関連はシステムに

4

技術者プロフィール
データベース
開発技術 評価
CGI
4
Perl
3
Java
2

Webページデータベース
検索語
CGI
PythonCGI, Python
・・・

開発技術データベース
開発技術
評価
CGI
済
Perl
済
Java
済
Python未
Ruby
未Java Server Pages 未
・・・
・・・

ヒット数
97,700,000
2,600,000
789,000
・・・

技術者プロフィール
データベースに含まれる開発技術(オンライン技術
用語辞典に含まれていな
い場合がある)

図 3 入力画面のイメージ
が「http://e-words.jp/p/*」となっているページ）を保存する．次に，保存したファイルから，定型句（e-words

推薦対象の開発技術(オンライン技術用語辞典に含まれている)の場合，「<a href="../w/Python.html"> Python</a>」など）
により，技術用語を特定する．

図 2 各データベースのイメージ

手順 3 では，まず，検索エンジンでキーワード（開発技術データベースの開発技術）を検索するための入力する必要がない．

URL （ Google

ユーザは，開発技術データベースに含まれている技

search?hl=ja&q=CGI+Perl など）を生成する．次に，生術全てを評価しなければならないわけではなく，1 つ以成した URL でアクセスし，検索結果の Web ページ（最上の開発技術を評価すれば推薦可能となる．例えば，初のページのみ）をファイルとして保存する．最後に，ユーザは「CGI」だけを評価しており，開発技術データ保存したファイルから，定型句（Google の場合，「<title>ベースにはユーザが評価していない「Python」，「Perl」，

CGI Python - Google 検索」や「<div id=resultStats>約「Ruby」があったとする．この場合，「CGI」とそれぞ

789,000 件」など）により，検索したキーワードとヒッ

れの開発技術の Web 上での共起関係と，「CGI」に対す

ト数を特定する．

るユーザの評価に基づいて，各技術の推薦が行われる．

手順 4 は前節で詳説したので省略する．
手順 5 では，

各手順について詳説する．手順 1 では，ユーザは図 3

図 4 のような画面イメージで推薦結果が出力される．

のような画面によって，任意の（知っている）開発技

それぞれの推薦技術ごとに，用語辞典による解説ペー

術 10～20 個程度について名称を入力するとともに，4ジのサマリ，関連の強い技術（ユーザが評価したもの），

段階で評価を行い，システムに入力する．

共起関係が見られた Web ページのサマリが出力される．

手順 2 において，技術用語はオンライン技術用語辞

サマリを出力する理由は，用語辞典の解説では，関連典の索引ページから取得する．取得方法は用いる辞典の強い開発技術と推薦技術をどのように組み合わせてにより異なるが，本論文で用いる辞典の場合，用語が使うかまでは記述されていない場合があるためである．

「ア」「イ」「ウ」などの頭文字ごとに別々のページにさらに[詳細]のリンクをクリックすることにより，用語掲載されているため，まずこれらのページ（e-words の辞典による解説ページが表示され，[検索結果一覧]をク

場合，トップページからリンクされており，かつ，URL

推薦技術1
・用語辞典による解説ページのサマリ [詳細]・関連の強い技術（ユーザが評価したもの）
・関連の強い技術とのAND検索で得られたWebページのサマリ
推薦技術2
・用語辞典による解説ページのサマリ [詳細]・関連の強い技術（ユーザが評価したもの）
・関連の強い技術とのAND検索で得られたWebページのサマリ

推薦技術3
・用語辞典による解説ページのサマリ [詳細]・関連の強い技術（ユーザが評価したもの）
・関連の強い技術とのAND検索で得られたWebページのサマリの 場 合 ， http://www.google.co.jp/

リックすることにより，検索エンジンによる共起関係
抽出時の結果一覧が表示される．

4. 評価実験[検索結果一覧]

4.1 概要提案方式の有効性を確かめるために，開発技術の推[検索結果一覧]

薦精度を実験により確かめた．実験では，技術者の個別性に考慮しない，知名度の高い開発技術の推薦（単[検索結果一覧]

純推薦）の精度と，開発技術のランダムな推薦の精度・・・を，提案方式による推薦の精度と比較した．単純推薦

図 4 出力画面のイメージ

5

では，「多くの Web ページに掲載されている開発技術は，

Measure）(14)を用いた．NDPM はユーザがシステムに求知名度が高い」と仮定し，検索エンジン（Google(13)）

める理想の推薦 Oa と，システムがユーザに行う推薦 Oa’を利用して開発技術を検索し，ヒット数の大きい順にとの差異を表す値であり，推薦システムの精度評価に推薦を行った．

広く用いられている(15)(16)(17)．推薦システムの評価実験

4.2 利用したデータ

では，ユーザのアイテムに対する評価値が既知のデー

ソフトウェア開発技術者 29 人，情報科学専攻の大学

タを用い，評価値が未知と仮定して推薦を行う．理想院生 25 人，およびソフトウェア工学の研究者 11 人の計の推薦とは，ユーザ評価値の実測値が大きい順にアイ

65 人が開発技術の評価を行ったデータに対して，推薦

テムを推薦した状態を指す．これに対し，システムにを行った．評価では，まず各開発技術を知っているか

よる推薦では，ユーザ評価値の予測値が大きい順にアどうか（開発技術の概要を説明できるかどうか）を回

イテムを推薦する．

答してもらった．知っている場合，その開発技術に対NDPM は[0,1]の範囲の実数値を取り，値が小さいほする興味の度合いを 4 段階（1: 興味がない，2: 少し興

ど Oa と Oa’の差異が小さい，すなわち，推薦の精度が味がある，3: 興味がある，4: 大変興味がある）で評価高いことを示す．また，中間値である 0.5 はランダムにしてもらった．

推薦を作成した場合（ランダム推薦）の NDPM の理論

推薦候補とした開発技術を図 5 に示す．提案方式に値である．ランダム推薦の NDPM は，未知でかつ有用

基づくシステムでは推薦候補の開発技術はオンラインと考えられる機能の候補を全て推薦する場合の NDPM

用語辞典から収集するが，実験では比較的知名度が高と理論的に等価であり，推薦アルゴリズムが最低限備

く，かつ多様な開発技術を著者らが選定した．これは，えるべき精度である（NDPM が 0 に近いほど推薦精度実験に用いる評価指標（4.3 節で後述する NDPM）ではが高く，0.5 に近いほど推薦精度が低い）．NDPM は式(4)

実際の評価値と予測された評価値を比較するが，知名で計算される．

度の低い開発技術では，実際の評価値が欠損値となり，推薦精度を評価することができないためである．

NDPM (Oa , Oa ' ) 

図 5 は開発技術に対する技術者の評価と知名度を示 dpm(o , o , o ' , o ' ) dpmNormalizer (o , o )ok Oa Oa ' ol Oa Oa 'akok Oa Oa ' ol Oa Oa '

al

ak

al

ak

al

(4)

している．縦軸は開発技術の項目を示し，横軸はその開発技術を知っていた技術者の割合を示す．さらに，

ここで，oak は理想の推薦 Oa における開発技術 tk の推

評価 3（興味がある）を閾値として，技術者を色分けし薦順位を表し，oak’はシステムがユーザに行う推薦 Oa’ている．グラフを見ると，UML のように全員が知ってにおける開発技術 tk の推薦順位を表す．
理想の推薦は，おり，さらに技術者の多くが「興味あり」と評価して技術者の評価値が大きい順に推薦を行った場合を表す．

いる開発技術や，Pascal のようにほとんどの技術者が知関数 dpm と関数 dpmNormalizer の定義を式(5)，(6)に示っているにもかかわらず，その多くが「興味なし」とす．

評価している開発技術があった．また，全社的品質管理などのように，知らない技術者が多いが，知っている技術者の半分以上が「興味あり」と評価している開発技術，さらに，Visual Component Library のように，多くの技術者が知らず，知っている技術者でさえ，「興味なし」と評価している開発技術もあった．このように，  (rak  ral )  (rik  ril )  0  (rak  ral )  (rik  ril )    (rak  ral )  (rik  ril )   (r  r )  (rik  ril ) 
dpm(rak , ral , rik , ril )  1 ak al   (rak  ral )  (rik  ril )   (rak  ral )  (rik  ril ) 2   (rak  ral )  (rik  ril ) (5)

1 (rak  ral )dpmNormalizer (rak , ral )  
2 (rak  ral )(6)

開発技術によって，技術者の評価や知名度が大きく異なっていることが分かる．
4.3 評価指標

推薦精度を評価するための基準として，Yao が提案しなお，知名度の高い開発技術は，すでに技術者が知た NDPM （ Normalized Distance-based Performance6

知名度 低知名度 高

なお，技術者が知らなかった開発技術は，技術者に
XML
UML
C言語
オブジェクト指向設計
Webサービス
Java
Visual BasicPerl.NETフレームワーク
構造化設計
PascalCOBOL
CGIWindowsAPI
ファンクション・ポイント法
Ruby
エクストリームプログラミング
Java Server Pages
Enterprise Java Beans
CMMI
SW-CMM
J2SESDK
ISO9000
Hypertext Preprocessor
LISP
SOAP
COCOMO
パーソナルソフトウェアプロセス
ラショナル統一プロセス
サービス指向アーキテクチャ
Active Server Pages
COCOMOII
PythonMicrosoft Foundation Classes
Goal Question Metric アプローチ
チームソフトウェアプロセスPMBOK
SWEBOK
全社的品質管理
総合的品質管理K Desktop Environment
統計的品質管理リーン・ソフトウェア開発
Visual Component Library
スクラム
Qtライブラリ
適応型ソフトウェア開発
フィーチャ駆動型開発
エクストリームモデリング
AgileCOCOMO
クリスタル・ファミリ0%よる評価が不明である（実際に有用であるかどうかがわからない）ため，NDPM の評価対象外としている．
これは，協調フィルタリングのアルゴリズムの精度評
価では一般的な方式である(6)(7)(10)（推薦後のアンケートが不要となり，より多くのユーザによる実験が可能となるため）．
4.5 結果図 6 に，知名度の低い開発技術を各手法により推薦した場合の NDPM の箱ひげ図を示す（NDPM が小さいほど精度が高い）．提案方式の推薦精度が最も高く，単純推薦の精度が最も低くなっていた．また，Wilcoxonの順位和検定で代表値の差の検定を行った結果，有意水準 5%で，提案方式の NDPM は単純推薦，ランダム推
薦と差があるといえた（それぞれ p=0.0%）．
図 5 を見るとわかるように，知名度の低い開発技術
では，興味を持つ技術者の割合が全体の 50%を超える
興味あり

開発技術は存在しない．興味を持つ技術者の絶対数が

興味なし
25%

50%

75%

少なくなるため，単純推薦の精度が低くなったと考え

100%られる．逆に提案方式では，「ある技術者が興味を持つ知名度

開発技術と関連の強い開発技術は，同様にその技術者

図 5 開発技術に対する技術者の評価と知名度に興味を持たれる」，「同じ Web ページで紹介，解説さっていることが多いため，実際には推薦対象となるこれる開発技術は関連が強い」という仮定が，ある程度とは少ないが，実験では知名度の高い開発技術も知ら現実と合致していたため，推薦精度が高かったと考えないとみなして推薦を行っている．そこで，実験の正られる．提案方式は，知名度の低い（実際に推薦が必

確性を高めるため，全開発技術，知名度の高い（実際要である場合が多い）開発技術の推薦に対して特に有には推薦が不要な）開発技術，知名度の低い（実際に用であると期待できる．

推薦が必要な）開発技術の 3 つの場合の推薦精度を評

図 7 に，知名度の高い開発技術を各手法により推薦価した．開発技術が 2 等分されるように，知名度 74%

した場合の NDPM の箱ひげ図を示す．提案方式の推薦

以上の場合を知名度の高い開発技術，それ以外を知名

精度が最も高く，次に単純推薦の精度が高かった．た

度の低い開発技術とした．

だし，Wilcoxon の順位和検定で差の検定を行った結果，

4.4 手順

有意水準 5%で提案方式の NDPM はランダム推薦と差実験では，それぞれの開発技術が未評価であると仮があるといえたが（p=0.3%），単純推薦とは差があると定し，以下の手順により推薦を行った．

はいえなかった（p=9.4%）．図 5 より，知名度の高い（実手順 1 i 人目の技術者 ui を推薦対象とする．

際には推薦が不要な場合が多い）開発技術では，興味手順 2 j 番目の開発技術 tj の値を未評価（開発技術をを持つ技術者の割合が全体の 50%を超える開発技術が知らない）とみなし，評価値の予測を行う．

いくつか存在し，興味を持つ技術者の絶対数が多くな

手順 3 全ての開発技術に対して手順 2 を繰り返す．

るため，単純推薦と提案方式の精度の差が小さくなっ

手順 4 評価値の予測値が大きい順に開発技術を推薦たと考えられる．

したとみなして，NDPM を計算する．

最後に図 8 に，全ての開発技術を各手法により推薦

手順 5 全ての技術者に対して手順 1～4 を繰り返す．

した場合の NDPM の箱ひげ図を示す．提案方式の推薦

7

精度が最も高く，単純推薦とランダム推薦の差はほとんどなかった．Wilcoxon の順位和検定で代表値の差の検定を行った結果，有意水準 5%で，提案方式の NDPM
は単純推薦，ランダム推薦と差があるといえた（それぞれ p=0.3%，p=0.0%）．
4.6 考察提案方式は，2 つの前提「関連の強い技術同士が同じ
Web ページ上に記述されている可能性が高い」，「ある技術者が興味を持つ開発技術と関連の強い開発技術は，同様にその技術者に興味を持たれる」に基づいて推薦

図 6 知名度の低い開発技術を推薦した場合の NDPMを行っている．前者については，実験において類似度の高かった開発技術のうちのいくつかは，用語辞典の関連用語として現れていたため，ある程度妥当であると考えられる．例えば e-words において，「Python」と最も関連が高かった「Perl」は，「Python」の関連用語に含まれていた．
さらに，ある技術者が興味を持つ開発技術と関連の強い開発技術を推薦した（上記の考察より，提案方式
は，ある技術者が興味を持つ開発技術と関連の強い技術を推薦しているといえる）結果，ランダム推薦よりも推薦精度が高かったことから，後者についても，ある程度妥当であると考えられる．

図 7 知名度の高い開発技術を推薦した場合の NDPM

推薦が高精度でなかった理由は，一部の開発技術のヒット件数に，開発技術以外の一般の単語のヒット件数が含まれてしまうためであると考えられる．例えば，
Ruby の場合，宝石の Ruby．スクラムの場合，ラグビー
用語のスクラムがヒット件数に含まれる．これらを除外し，さらに推薦精度を高めることは今後の課題のひとつである．
推薦において，オンライン技術用語辞典での分野分
類や関連用語を用いて類似度を計算することも可能であり，今後比較すべきであると考えるが，十分な精度が期待できない．なぜならば，分野分類はあまり細分

図 8 全ての開発技術を推薦した場合の NDPM

化されておらず，分類内の単語の関連はそれほど強くないからである．例えば，e-words では，「サーバ（分類

用語解説においても，関連用語として提示されない．

「WWW」の下層）」という分類の中に，用語が 60 個以

さらに，技術者が開発技術を自習するために，オン

上含まれている．また，関連用語についても，（推薦のライン技術用語辞典を利用することを想定した場合，ために利用することを考慮すると）十分整理されてい上記の理由により，学習すべき技術を容易に見つける

るとはいえない．例えば，CGI に Ruby が用いられるこことができる（学習のために十分に体系化されている）とがしばしばあり，提案方式では CGI は Ruby と最も類とはいえない．

似度が高くなっているのに対し，CGI，Ruby どちらの8

5. 関連研究

リに含まれる，各要素が推薦対象である）．そのため，学習支援のために，最適なアイテムを協調フィルタ

推薦方式が異なる．具体的には，コーディング中のソリングにより推薦するシステムいくつか提案されていースコードを解析した結果に基づいて推薦を行うため，る．例えば岩下ら(18)は，学習者に英語リスニング教材

開発技術の推薦に適用することはできない．

を推薦するためのシステムを提案している．提案シス

6. まとめテムでは，学習者の教材に対する評価に基づき，ユー

本論文では，技術者の学習支援を目的として，協調

ザベース手法により推薦を行っている．また，高橋ら(19)フィルタリングに基づいて，多数存在する開発技術のは e-ラーニングのコンテンツの閲覧履歴から，ユーザ

中から，有用な開発技術を技術者に推薦する方式を提ベース手法によりコンテンツの推薦を行っている．

案した．提案システムは，Web ページにおける開発技

これらの研究はユーザベース手法による推薦であり，術の共起関係に基づき開発技術を推薦する．評価実験

推薦時に多数のユーザがそれぞれのアイテムについての結果，特に知名度の低い開発技術の推薦に対して，評価している必要がある．ただし，ユーザベース法に提案システムが有効であることが確認された．

基づいて推薦を行うためには，多数存在する開発技術

本論文の貢献は，技術者に対する開発技術の推薦ををシステム利用者が評価している必要があり，その実前提に，推薦システムのユーザ数の多寡，他ユーザの現は容易ではない．そこで本論文では，Web ページで評価の有無に関わらず推薦を可能とするために，協調の開発技術の単語の共起関係に基づく類似度計算と，フィルタリングと Web ページでの単語の共起関係抽出

アイテムベース手法を組み合わせることにより，推薦を組み合わせた推薦方式を提案したことと，技術者に対象のユーザ以外の評価を不要とした方式を提案して対する開発技術の推薦に，協調フィルタリングが有効おり，この点が従来研究と異なる．

に機能することを実験的に示したことである．今後のWeb ページでの単語の共起関係に着目して，検索エ

課題は，提案手法をシステムとして完成させ，技術者

ンジンのヒット件数から類似度を計算するアルゴリズに広く利用してもらうことである．

ムは，推薦システム以外の分野（例えば企業間の関係

謝辞の抽出など (20)）には適用されているが，推薦システムの類似度計算に適用した事例は，筆者らの知る限り存

本研究の一部は，「次世代 IT 基盤のための研究開発」

在しない．奥ら(21)は，ユーザの地元にはなく，かつ旅の委託に基づいて行われた．また，本研究の一部は，先にしかないスポット（飲食店や観光場所）を推薦す

文部科学省科学研究補助費（若手 B：課題番号る方式を提案しており，検索エンジンのヒット件数か22700034）による助成を受けた．

参 考 文ら類似度を計算するアルゴリズムを方式の一部に利用

献(1) 経済産業省：“2009 年版組込みソフトウェア産業実している．ただし，推薦のための類似度計算ではなく，態調査報告書”，経済産業省 (2009)

スポットと無関係な用語の除去のために利用しており，(2) 日本情報システム・ユーザー協会：“企業 IT 動向調

奥らの方式を情報技術の推薦に適用することはできな

査 2009” ，日本情報システム・ユーザー協会，東い．

京 (2009)

また，技術者に対する開発技術の推薦に，協調フィルタリングを適用した研究も存在しない．プログラム(3) ニッセイ基礎研究所：“働く人の就業実態・就業意

ライブラリを推薦する方式はいくつか提案されており識に関する調査”，ニッセイ基礎研究所，東京(22)(23)(2004)，これらの方式ではユーザ数の多寡，他ユーザの(4) 中小企業庁：“2005 年版中小企業白書”， 中小企業評価の有無に関わらず推薦が可能である．ただし，プ

庁 (2005)

ログラムライブラリは学習すべき開発技術ではなく，(5) Goldberg, D., Nichols, D., Oki, B. M. and D. Terry:

コーディング中のプログラムに直接適用するためのものであり，本論文で扱う開発技術の概念とは全く粒度“Using Collaborative Filtering to Weave an Informationが異なる（開発技術の一つであるプログラムライブラ

Tapestry”, Communications of the ACM, Vol.35, No.12,9(18) 岩下文香，来住伸子：“協調フィルタリングを利用

pp.61-70 (1992)(6) Resnick, P., Iacovou, N., Suchak, M., Bergstrom, P. andした英語教材推薦アルゴリズムの研究”，情報処理

Riedl, J.: GroupLens: “An Open Architecture for Col-

学会研究報告，Vol.2007，No.34，pp.53-60 (2007)

laborative Filtering of Netnews”, Proc. of the ACM(19) 高橋泰樹，松澤俊典，山口未来，土肥紳一，和田Conf. on Computer Supported Cooperative Work雄次：“学習者に適した学習教材の推薦と配信”，情(CSCW’94), pp.175-186 (1994)

報処理学会研究報告，Vol.2007，No.12，pp.157-162(7) Sarwar, B., Karypis, G., Konstan, J. and Riedl, J.:(2007)“Item-Based Collaborative Filtering Recommendation(20) 金英子，松尾豊，石塚満：“Web 上の情報を用いた

Algorithms”, Proc. of the 10th Intl. World Wide Web

企業間関係の抽出”，人工知能学会論文誌，Vol.22,

Conference (WWW10), pp. 285-295 (2001)

No.1, pp.48-57 (2007)(8) 鶴長鎮一，渡辺恭弘：“Ruby で作るデータベース(21) 奥健太，服部文夫：“地域限定性を考慮した情報推

CGI”，快速 MySQL でデータベースアプリ！，第 7薦方式に関する基礎検討”，Web とデータベースに回，アイティメディア，

関するフォーラム，Vol.2009，No.3，1A-1 (2009)(22) 亀井靖高，角田雅照，柿元健，大杉直樹，門田暁

http://www.atmarkit.co.jp/flinux/rensai/mysql07/mysql

人，松本健一：“ソフトウェアコンポーネント推薦

07a.html(9) Bollegala, D., Matsuo, Y. and Ishizuka, M.: “Measuring

における協調フィルタリングの効果”，情報処理学
会論文誌，Vol.50，No.3，pp.1139-1143 (2009)

Semantic Similarity between Words Using Web SearchEngines”, Proc. of the 16th International World Wide(23) McCarey, F., Cinnéide, M.O. and Kushmerick, N.:

Web Conference (WWW 2007), pp.757-766 (2007)“Knowledge reuse for software reuse,” Web Intelli-(10) Breese, J. S., Heckerman, D. and Kadie, C.: “Empiricalgence and Agent Systems, Vol.6, No.1, pp.59-81 (2008)

Analysis of Predictive Algorithms for Collaborative
Filtering,” Proc. the 14th Conf. on Uncertainty in Artificial Intelligence, Wisconsin, pp.43-52 (1998)(11) アイティメディア：“IT 情報マネジメント用語事典”，
http://www.atmarkit.co.jp/im/terminology/(12) インセプト：“IT 用語辞典 e-Words”，
http://e-words.jp/(13) Google: “Google”, http://www.google.co.jp/(14) Yao, Y.Y.: “Measuring Retrieval Effectiveness Based onUser Preference of Documents”, Journal of the American Society for Information Sciences, Vol.46, No.2,
pp.133-145 (1995)(15) Balabanovic, M. and Shoham, Y.: “Fab: Content-based
Collaborative Recommendation”, Communications of
the ACM, Vol.40, No.3, pp.66-72 (1997)(16) Balabanovic, M.: “An Adaptive Web Page Recommendation Service”, Proc. 1st Intl. Conf. on Autonomous
Agents (Agents ’97), pp.378-385 (1997)(17) Pretschner, A. and Gauch, S.: “Ontology Based Personalized Search,” Proc. the 11th IEEE Intl. Conf. on Tools
with Artificial Intelligence, pp.391-398 (1999)

10