• 検索結果がありません。

プログラム作成者の開発スキルを考慮したソースコード検索システム

N/A
N/A
Protected

Academic year: 2021

シェア "プログラム作成者の開発スキルを考慮したソースコード検索システム"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

DEIM Forum 2016 G2-5

プログラム作成者の開発スキルを考慮した

ソースコード検索システム

築地 勇人

鷹野 孝典

†神奈川工科大学情報学部 情報工学科 〒243-0292 神奈川県厚木市下荻野 1030

E-mail: †{s1221109, s1321033}@cce.kanagawa-it.ac.jp, ‡[email protected]

あらまし ソフトウェア開発時におけるソースコード検索において,ユーザはソースコード検索エンジンに特定

の関数名や定数名を問い合わせとして入力する必要があり,ソフトウェア開発に特化した専門的な検索スキルが必

須である.また,検索結果として得られたソースコードの使用法などについて,開発者自身がそれらを吟味する必

要があるため,目的のソースコードのサンプルを獲得するために多くの時間と労力がかかる.本研究では,まず,

分散バージョン管理システムの共同開発履歴に基づいてソフトウェア開発者を特徴付ける役割や開発スキルの抽出

を試みる.次に,ソースコードとその開発者の役割や開発スキルを関連付けることにより,ソースコード開発者の

開発実績や経験に応じて,ソースコードをランキングする手法について示す.本研究では,分散バージョン管理シ

ステム

GitHub 上のソフトウェア開発プロジェクトを対象とした実験により,提案システムの実現可能性を検証す

る.

キーワード ソースコード検索, 特徴抽出, 開発者スキル, ソフトウェア開発, 分散バージョン管理システム

1. は じ め に

ソ フ ト ウ ェ ア 開 発 時 に お け る ,Web 検 索 エ ン ジ ン や ソ ー ス コ ー ド 検 索 エ ン ジ ン を 利 用 し た ソ ー ス コ ー ド 獲 得 結 果 が , ソ フ ト ウ ェ ア 開 発 の 生 産 性 に 大 き く 影 響 す る よ う に な っ て い る . し か し , 既 存 の 検 索 エ ン ジ ン か ら 目 的 の 情 報 を 得 る た め に は , ユ ー ザ は 特 定 の 関 数 名 や 定 数 名 を 問 い 合 わ せ と し て 入 力 す る 必 要 が あ り , ソ フ ト ウ ェ ア 開 発 に 特 化 し た 専 門 的 な 検 索 ス キ ル が 必 須 で あ る . ま た , 既 存 の 検 索 エ ン ジ ン に は , 検 索 結 果 と し て 得 ら れ た ソ ー ス コ ー ド の 機 能 性 や 信 頼 性 な ど を 評 価 す る 仕 組 み が な い た め , 開 発 者 自 身 が そ れ ら を 吟 味 す る 必 要 が あ る . こ の た め , 多 く の 開 発 者 が 検 索 エ ン ジ ン を 用 い て 目 的 の ソ ー ス コ ー ド の サ ン プ ル を 獲 得 す る た め に , 非 常 に 多 く の 時 間 と 労 力 を 費 や し て い る . 我 々 は こ れ ま で , ソ フ ト ウ ェ ア 開 発 者 の 役 割 や ス キ ル に 関 す る 特 徴 を 分 析 す る こ と を 目 的 と し た , 分 散 ソ ー ス コ ー ド 管 理 シ ス テ ム の 共 同 開 発 履 歴 に 基 づ い た 開 発 者 の 特 徴 抽 出 手 法 を 提 案 し て き た[6]. こ の 方 式 は , MVC フ レ ー ム ワ ー ク に 着 目 す る こ と で ,フ ォ ル ダ 構 成 , フ ァ イ ル 名 , フ ァ イ ル 拡 張 子 等 か ら , 開 発 者 が 開 発 に 携 わ っ て い る プ ロ グ ラ ム の 開 発 層 を 抽 出 し , 開 発 層 ご と に 開 発 者 の 役 割 や 開 発 ス キ ル に つ い て の 特 徴 抽 出 を 行 う . 本 研 究 で は , 開 発 者 の プ ロ グ ラ ム 開 発 実 績 や 経 験 を 考 慮 し た ソ ー ス コ ー ド 検 索 シ ス テ ム を 提 案 す る . 本 研 究 で は , ま ず , 文 献[6]の 方 式 を 適 用 す る こ と に よ り , 分 散 バ ー ジ ョ ン 管 理 シ ス テ ム の 共 同 開 発 履 歴 に 基 づ い て ソ フ ト ウ ェ ア 開 発 者 を 特 徴 付 け る 開 発 ス キ ル の 抽 出 を 試 み る . 次 に , ソ ー ス コ ー ド と そ の 開 発 者 の 開 発 ス キ ル を 関 連 付 け る こ と に よ り , ソ ー ス コ ー ド 開 発 者 の 開 発 ス キ ル に 応 じ て , ソ ー ス コ ー ド を ス コ ア 化 し , ラ ン キ ン グ す る 手 法 に つ い て 示 す . 本 研 究 で は , 分 散 バ ー ジ ョ ン 管 理 シ ス テ ム GitHub[20]上 の ソ フ ト ウ ェ ア 開 発 プ ロ ジ ェ ク ト を 対 象 と し た 実 験 に よ り , 提 案 シ ス テ ム の 実 現 可 能 性 を 検 証 す る .

2. 関 連 研 究

ソ ー ス コ ー ド 検 索 に 関 し て , こ れ ま で 多 く の 研 究 者 が 様 々 な 方 式 や ツ ー ル を 提 案 し て い る . ソ ー ス コ ー ド 検 索 シ ス テ ム で は , 問 い 合 わ せ と し て 入 力 し た 関 数 名 や ク ラ ス 名 を 含 む コ ー ド 断 片 検 索 機 能 を 基 本 要 件 と し て い る も の が 多 数 提 案 さ れ て い る . 文 献[3]で は ,ソ ー ス コ ー ド 中 の 複 数 の モ ジ ュ ー ル に ま た が る 概 念 や コ ー ド 断 片 を 検 索 す る こ と を 目 的 と し た ソ ー ス コ ー ド 検 索 を 実 現 す る た め に , デ ー タ 構 造 で あ る And/Or/Call グ ラ フ 及 び そ の グ ラ フ 上 の 検 索 ア ル ゴ リ ズ ム を 提 案 し て い る .文 献[5]で は ,制 御 文 及 び メ ソ ッ ド 名 か ら な る ス テ ー ト メ ン ト の シ ー ケ ン ス を 検 索 条 件 と し , 検 索 条 件 か ら を 派 生 さ せ た 有 意 な 検 索 条 件 の す べ て に 対 し て 検 索 を 実 現 す る 構 造 派 生 検 索 モ デ ル を 用 い た 検 索 手 法 を 提 案 し て い る .Mcmillan 等 の 提 案 す る Portfolio で は ,開 発 者 が ソ ー ス コ ー ド の 断 片 よ り も , 関 数 定 義 や そ の 使 用 方 法 を 知 り た い と 考 え て い る こ と に 着 目 し , 問 い 合 わ せ に 関 連 す る 関 数 の 内 容 や そ の 使 用 方 法 を 検 索 し , 可 視 化 し て ユ ー ザ に 提 示 す る[15]. 協 調 フ ィ ル タ フ ィ ル タ リ ン グ の 利 用 や , ソ ー ス コ ー ド の 再 利 用 性 , ソ ー ス コ ー ド の 人 気 度 等 に 着 目 し た 推

(2)

薦 手 法 を 適 用 し た も の も 見 受 け ら れ る .文 献[11]で は , ユ ー ザ の 検 索 履 歴 に 対 し て 協 調 フ ィ ル タ リ ン グ 手 法 を 適 用 し , ユ ー ザ に 必 要 と 思 わ れ る 部 品 を 推 薦 す る た め の ソ フ ト ウ ェ ア コ ン ポ ー ネ ン ト 手 法 を 提 案 し て い る . 亀 井 等 は , 進 行 中 の プ ロ ジ ェ ク ト と コ ン ポ ー ネ ン ト の 利 用 状 況 が 類 似 す る 過 去 の プ ロ ジ ェ ク ト を 見 つ け る こ と に よ り , 進 行 中 の プ ロ ジ ェ ク ト に 有 用 な コ ン ポ ー ネ ン ト を 協 調 フ ィ ル タ リ ン グ の 適 用 に よ り 推 薦 す る ソ フ ト ウ ェ ア コ ン ポ ー ネ ン ト 推 薦 手 法[7]を 提 案 し ,さ ら に , 29 件 の プ ロ ジ ェ ク ト を 用 い て 評 価 実 験 を 行 う こ と に よ り , 汎 用 性 の 高 い コ ン ポ ー ネ ン ト 及 び 低 い コ ン ポ ー ネ ン ト に 着 目 し た 場 合 , 協 調 フ ィ ル タ リ ン グ を 用 い た コ ン ポ ー ネ ン ト 推 薦 方 法 は , 汎 用 性 の 低 い コ ン ポ ー ネ ン ト に 対 し て 効 果 が あ る こ と を 示 し た[8]. 文 献 [12]で は , 問 い 合 わ せ と し て , ク ラ ス 名 や メ ソ ッ ド 名 を 指 定 し た 際 の 優 先 順 位 や , ソ ー ス コ ー ド の 人 気 度 に 応 じ た ソ ー ス コ ー ド の ラ ン キ ン グ 手 法 を 提 案 し て い る . 文 献 [10]で は ,従 来 手 法 に お い て ,メ ソ ッ ド や ク ラ ス 等 の プ ロ グ ラ ミ ン グ 言 語 単 位 で コ ー ド 片 を 提 示 す る の に 対 し , 過 去 に 再 利 用 さ れ た コ ー ド 片 を 検 出 し , そ の 中 か ら ユ ー ザ の 入 力 す る ク エ リ と 関 連 す る 機 能 を 持 つ コ ー ド 片 を 提 示 す る 手 法 を 提 案 し て い る . ま た , 競 技 プ ロ グ ラ ム 参 加 者 や プ ロ グ ラ ミ ン グ 初 学 者 を 対 象 と し た 応 用 研 究 も な さ れ て い る .文 献[1]で は , 既 存 の 回 答 ソ ー ス コ ー ド の 再 利 用 を 支 援 す る こ と を 目 的 と し て , 競 技 プ ロ グ ラ ム の テ ス ト ケ ー ス で あ る 大 量 の 回 答 ソ ー ス コ ー ド を , 解 法 に よ っ て 回 答 ソ ー ス コ ー ド を 分 類 す る こ と に よ り , 検 索 す る 手 法 を 提 案 し て い る .文 献 [4]で は ,検 索 開 始 時 点 で は プ ロ グ ラ マ が 検 索 す べ き 具 体 的 な 条 件 ・ キ ー ワ ー ド を よ く 把 握 し て い な い 点 に 着 目 し , 検 索 キ ー ワ ー ド に 関 連 す る 識 別 子 を 提 示 し て ユ ー ザ に選択させることで, 対 話 的 な 検 索 条 件 の 試 行 錯 誤 を 支 援 す る シ ス テ ム の 実 現 に よ り , 検 索 時 間 の 低 減 を 図 っ て い る . コ ー ド ク ロ ー ン 検 出 に 着 目 し た 研 究 と し て は , 文 献 [2][9][19]等 が あ る .曽 和 等 は ,コ ー ド ク ロ ー ン 検 出 に 膨 大 な 時 間 コ ス ト が か か る こ と を 問 題 意 識 と し て , メ ソ ッ ド か ら の 戻 り 値 や 引 数 の 数 , ロ ー カ ル 変 数 の 数 に 着 目 し た ソ フ ト ウ ェ ア メ ト リ ク ス を 用 い た オ ー プ ン ソ ー ス 再 利 用 の た め の ソ ー ス コ ー ド 絞 込 み 手 法 を 提 案 し て い る[2].ま た ,文 献 [9][19]で は ,高 速 化 に コ ー ド ク ロ ー ン 検 出 を 行 う こ と が 可 能 な コ ー ド ク ロ ー ン 検 出 ツ ー ル CCFinder 及 ソ フ ト ウ ェ ア 保 守 を 支 援 す る た め の 検 索 ツ ー ル が 提 案 さ れ て い る . さ ら に , ソ ー ス コ ー ド 検 索 に 関 連 し て , 様 々 な 応 用 研 究 や 調 査 が な さ れ て い る .CodeGenie は , 検 索 結 果 と し て 獲 得 し た ソ ー ス コ ー ド を , 検 索 者 自 身 の 開 発 し て い る ソ ー ス コ ー ド に 組 み 込 み , テ ス ト を 実 施 す る こ と で , そ の 適 合 性 を 判 定 す る 仕 組 み を 導 入 し て い る [13][14]. Subramanian 等 は ,JavaScript や Java で 作 成 さ れ た プ ロ グ ラ ム を 対 象 と し て , ソ ー ス コ ー ド 内 で 使 用 さ れ て い るAPI を 該 当 す る API ド キ ュ メ ン ト へ 関 連 付 け を 行 う 手 法 を 提 案 し て い る .文 献[17]で は ,ソ ー ス コ ー ド の 属 す る カ テ ゴ リ を 抽 出 す る こ と で , ソ ー ス コ ー ド 検 索 の 精 度 改 善 が 可 能 で あ る こ と を 示 し て い る . 文 献[18]で は , 開 発 者 が ソ ー ス コ ー ド 検 索 時 に 求 め て い る も の を 調 査 ・ 分 析 し ,開 発 者 は 主 に API の 使 用 方 法 , ソ ー ス コ ー ド の 機 能 , エ ラ ー の 原 因 , ソ ー ス コ ー ド の 場 所 等 を 検 索 結 果 と し て 期 待 し て い る こ と を 示 し た .

3. 分 散 ソ ー ス コ ー ド 管 理 シ ス テ ム の 共 同 開 発

履 歴 に 基 づ い た 開 発 者 の 特 徴 抽 出 方 式

文 献[6]で 示 さ れ て い る 分 散 ソ ー ス コ ー ド 管 理 シ ス テ ム の 共 同 開 発 履 歴 に 基 づ い た 開 発 者 の 特 徴 抽 出 方 式 の 概 要 ( 図 1) に つ い て 説 明 す る . 図 1 開 発 者 の 特 徴 抽 出 方 式 の 概 要 本 方 式 は ,(1) MVC フ レ ー ム ワ ー ク を 構 造 分 析 す る こ と に よ り ,MVC 層 ご と に ,新 規 ソ ー ス・プ ロ グ ラ ム 作 成 数 の 分 析 , 他 者 開 発 ソ ー ス ・ プ ロ グ ラ ム 修 正 数 の 分 析 , 共 通 関 数 作 成 数 の 分 析 を 行 う . こ れ ら の 分 析 に 基 づ い て , プ ロ ジ ェ ク ト に お け る 開 発 者 の 役 割 , 貢 献 度 ,サ ポ ー ト 性 ,リ ー ダ ー 性 に 関 す る 特 徴 抽 出 を 行 う . [(A)開 発 箇 所 ( 層 ) の 抽 出 ] MVC フ レ ー ム ワ ー ク を 対 象 と し て , コ ン ト ロ ー ル , ビ ュ ー , モ デ ル の 各 開 発 層 の 作 成 ・ 修 正 フ ァ イ ル 数 を 数 え る こ と に よ り , 開 発 者 の 役 割 を 抽 出 す る . コ ン ト ロ ー ル , ビ ュ ー , モ デ ル の 各 層 ご と に , 新 規 作 成 し た ソ ー ス ・ プ ロ グ ラ ム , お よ び 他 者 開 発 ソ ー ス ・ プ ロ グ ラ ム を 修 正 し た 割 合 が , し き い 値 α%よ り 大 き い 場 合 に ,そ の 開 発 層 の 中 心 的 役 割 を 担 っ て い る と 判 断 す る . [(B)貢 献 度 の 抽 出 ] 開 発 者 の 貢 献 度 は , 質 的 な 貢 献 度 と 量 的 な 貢 献 度 に 分 け て 抽 出 す る . 質 的 な 貢 献 度 は , プ ロ ジ ェ ク ト 中 の 重 要 な モ ジ ュ ー

(3)

ル 群 の 開 発 量 に 応 じ て 算 出 す る . こ こ で は , ラ イ ブ ラ リ 関 数 の よ う な 参 照 回 数 の 多 い 関 数 の 作 成 数 が し き い 値 β よ り 大 き い 場 合 , そ の ラ イ ブ ラ リ 関 数 の 開 発 者 は プ ロ ジ ェ ク ト の 質 的 な 貢 献 度 が 高 い と 判 定 す る .ま た , 量 的 な 貢 献 度 は , コ ン ト ロ ー ル , ビ ュ ー , モ デ ル の 各 層 全 体 に お い て , 新 規 作 成 し た ソ ー ス ・ プ ロ グ ラ ム お よ び 他 者 開 発 ソ ー ス ・ プ ロ グ ラ ム を 修 正 し た 割 合 に 応 じ て , 量 的 な 貢 献 度 を 算 出 す る . [(C)サ ポ ー ト 性 の 抽 出 ] サ ポ ー ト 性 は , 他 の 開 発 者 へ の 援 助 の 度 合 を 表 す 性 質 で あ り , 他 者 開 発 ソ ー ス ・ プ ロ グ ラ ム の う ち , 修 正 し た ソ ー ス ・ プ ロ グ ラ ム か ら 算 出 す る . 他 者 開 発 フ ァ イ ル の 修 正 数 が し き い 値 δ 以 上 な ら ば , そ の 開 発 者 は サ ポ ー ト 性 が あ る と す る . [(D)先 導 性 の 抽 出 ] 設 定 フ ァ イ ル や ラ イ ブ ラ リ 定 義 フ ァ イ ル 等 , シ ス テ ム 環 境 構 築 に 必 要 な ソ ー ス ・ プ ロ グ ラ ム を 率 先 し て 作 成 す る こ と は , プ ロ ジ ェ ク ト に 参 加 す る 他 の 開 発 者 が 効 率 よ く 開 発 を 進 め る 上 で 重 要 あ る . こ の た め , シ ス テ ム 環 境 構 築 に 必 要 な プ ロ グ ラ ム の コ ミ ッ ト 数 が 多 い 開 発 者 は , 先 導 性 が 高 い と 判 定 す る . [(E)リ ー ダ ー 性 の 抽 出 ] リ ー ダ ー 性 は ,(A)~ (D)で 抽 出 し た , 開 発 層 の 視 点 に 基 づ い た 役 割 , 貢 献 性 , サ ポ ー ト 性 , 先 導 性 の 複 合 条 件 に よ っ て 決 定 す る . 例 え ば , サ ポ ー ト 性 と 先 導 性 が あ る こ と を リ ー ダ ー 性 の 条 件 と す れ ば , こ の2 つ の 性 質 を 同 時 に 満 た す 開 発 者 に リ ー ダ ー 性 が あ る と 判 定 す る .

4. 提 案 方 式

図 2 提 案 方 式 の 概 要 提 案 方 式 の 概 要 図 を 図2 に 示 す .提 案 方 式 で は ,3 章 で 述 べ た 方 式 に 従 っ て 抽 出 し た ソ ー ス コ ー ド 開 発 者 の 役 割 や ス キ ル を , そ の 開 発 者 が 作 成 し た ソ ー ス コ ー ド に 関 連 付 け る こ と に よ り , ソ ー ス コ ー ド を ラ ン キ ン グ す る 方 式 で あ る . ソ ー ス コ ー ド 検 索 モ ジ ュ ー ル の 実 現 に つ い て は , 図 2 に 示 す よ う に , 全 文 検 索 型 ソ ー ス コ ー ド 検 索 エ ン ジ ン を 適 用 す る . 本 方 式 で は , ソ ー ス コ ー ド の ラ ン キ ン グ ・ ス コ ア を 下 記 の よ う に 算 出 し , 検 索 結 果 と し て 提 示 す る . Step-1: 3 章 で 述 べ た 方 式 に 従 っ て 抽 出 し た ソ ー ス コ ー ド 開 発 者 の 特 徴 に 従 っ て , 開 発 者 ご と に ポ イ ン ト を 集 計 す る . 表 1 に 示 す 例 の よ う に , 開 発 者 の 特 徴 に 応 じ た ポ イ ン ト を あ ら か じ め 決 め て お き , 開 発 者 が リ ー ダ ー 性 や サ ポ ー ト 性 が あ る ご と に ポ イ ン ト を 加 算 す る . 表 1 開 発 者 の 特 徴 に 応 じ た ポ イ ン ト 例 特 徴 ポ イ ン ト ポ イ ン ト 例 リ ー ダ ー 性 p(leader) 3 サ ポ ー ト 性 P(support) 1 貢 献 性 p(contribution) 2 先 導 性 p(initiative) 1 例 え ば ,3 名 の 開 発 者 d1,d2,d3に 対 し て , 下 記 の よ う な 特 徴 が 抽 出 さ れ た と す る . d1 = { leader, support } d2 = { support } d3 = { initiative } こ の 場 合 , 各 開 発 者 に 対 す る ポ イ ン トp1,p2,p3は 次 の よ う に 計 算 さ れ る . p1 = p(leader) + p(support) = 3 + 1 = 4 p2 = p(support) = 1 p3 = p(initiative) = 2 Step-2:ソ ー ス コ ー ド ・ フ ァ イ ル の ス コ ア を 決 定 す る . ソ ー ス コ ー ド ・ フ ァ イ ル ご と に そ の 開 発 者 全 員 に つ い て ,Step-1 で 算 出 し た ポ イ ン ト を 加 算 し ,平 均 を と る . 例 え ば , ソ ー ス コ ー ド ・ フ ァ イ ル Source1,Source2, Source3の 開 発 者 が 下 記 の よ う で あ っ た と す る . Source1の 開 発 者 = { d1, d2, d3 } Source2の 開 発 者 = { d3 } Source3の 開 発 者 = { d2 } こ の 場 合 ,各 ソ ー ス コ ー ド・フ ァ イ ルSource1,Source2, Source3の ス コ ア は , 下 記 の よ う に 算 出 さ れ る .

(4)

Score(Source1) = (p1 + p2 + p3) / 3 = (4 + 1 + 2) / 3 = 2.33 Score(Source2) = p2 = 1 Score(Source3) = p3 = 2 Step-3: ソ ー ス コ ー ド 検 索 時 に , Step-2 で 求 め た ソ ー ス コ ー ド の ス コ ア と 全 文 検 索 ス コ ア を 考 慮 し て ソ ー ス コ ー ド の ラ ン キ ン グ ・ ス コ ア を 算 出 す る . RankingScore(Source, {QueryKeywords}) = α x Score(Source) + (1 - α) x TextSeachScore(Source, {QueryKeywords}) (1) こ こ で ,α (0≦ α≦ 1)は 重 み 係 数 ,{QueryKeywords}は 問 い 合 わ せ に 用 い た キ ー ワ ー ド 集 合 で あ る . 例 え ば , 問 い 合 わ せ キ ー ワ ー ド’explode’に 対 す る , 各 ソ ー ス フ ァ イ ル の 全 文 検 索 ス コ ア が 下 記 の よ う に 算 出 さ れ た と す る .

TextSeachScore (Source1, { ’explode’ }) = 1

TextSeachScore (Source1, { ’explode’ }) = 2

TextSeachScore (Source3, { ’explode’ }) = 2

さ ら に , α = 0.5 と す れ ば , ラ ン キ ン グ ・ ス コ ア は 下 記 の よ う に 算 出 さ れ る .

RankingScore (Source1, { ’explode’ })

= 0.5 x 2.33 + 0.5 x 1 = 1.67 RankingScore (Source2, { ’explode’ })

= 0.5 x 1 + 0.5 x 2 = 1.50 RankingScore (Source3, { ’explode’ })

= 0.5 x 2 + 0.5 x 2 = 2.00 Step-4: Step-3 で 求 め た ラ ン キ ン グ ・ ス コ ア で ソ ー ト し て , ユ ー ザ へ 検 索 結 果 を 提 示 す る . Step-3 の 例 で は , 問 い 合 わ せ キ ー ワ ー ド ’explode’に 対 し て , 表2 の 検 索 結 果 が 得 ら れ る . 表 2 問 い 合 わ せ キ ー ワ ー ド ’explode’に 対 す る 検 索 結 果 の 例 順 位 ソ ー ス コ ー ド ・ フ ァ イ ル ラ ン キ ン グ ・ ス コ ア 1 Source3 2.00 2 Source2 1.67 3 Source1 1.50

5. 実 験

分 散 バ ー ジ ョ ン 管 理 シ ス テ ム GitHub 上 の ソ フ ト ウ ェ ア 開 発 プ ロ ジ ェ ク ト を 対 象 と し た 実 験 に よ り , 提 案 シ ス テ ム の 実 現 可 能 性 を 検 証 す る . 今 回 の 実 験 で は ,4 章 で 示 し た ソ ー ス コ ー ド の ラ ン キ ン グ ・ ス コ ア 算 出 式(1)に つ い て , 重 み 係 数 α を 0.5 に 設 定 し た . ま た , 全 文 検 索 ス コ ア と し て は , 問 い 合 わ せ キ ー ワ ー ド を grep し た 結 果 に つ い て ,ソ ー ス フ ァ イ ル が ヒ ッ ト す る 毎 に 1 点 ず つ 加 算 し た 値 を 用 い た . 表3 に ,分 析 対 象 の 開 発 プ ロ ジ ェ ク ト に つ い て 示 す . 表 3 分 析 対 象 の 開 発 プ ロ ジ ェ ク ト プ ロ ジ ェ ク ト 名 開 発 者 数 ソ ー ス コ ー ド 数 Gitlabhq [21] 16 183 Ghost [22] 61 931 October [23] 20 402 Gitlabhq プ ロ ジ ェ ク ト ,Ghost プ ロ ジ ェ ク ト ,お よ び October プ ロ ジ ェ ク ト に 参 加 す る 開 発 者 を 対 象 と し た , 開 発 者 ポ イ ン ト の 算 出 結 果 を 表 4~ 6 に 示 す .ま た ,各 プ ロ ジ ェ ク ト の ソ ー ス コ ー ド ・ ス コ ア の 算 出 結 果 の 例 を , そ れ ぞ れ 表 7~ 9 に 示 す . 表 4 の 結 果 よ り , 例 え ば ,Gitlabhq プ ロ ジ ェ ク ト に お い て , 開 発 者 ’ Douwe Maan’ さ ん と ’ Sullivan SENECHAL’ さ ん が リ ー ダ ー 性 や サ ポ ー ト 性 が 抽 出 さ れ て お り , 開 発 者 ポ イ ン ト も 7 と 高 い 値 に な っ て い る こ と が わ か る . ま た , 表 8 の 結 果 よ り , 例 え ば ,Ghost プ ロ ジ ェ ク ト 中 の ソ ー ス コ ー ド ・ フ ァ イ ル’ gh-nav-menu.hbs’は , 5 名 の 開 発 者 に よ っ て 開 発 さ れ て お り ,ソ ー ス コ ー ド・ス コ ア が 7.00 と 高 い 値 が 算 出 さ れ て い る こ と が わ か る . さ ら に ,Gitlabhq プ ロ ジ ェ ク ト 上 の フ ァ イ ル 群 に 対 し て ,関 数 名’User.find()’を 問 い 合 わ せ キ ー ワ ー ド と し て 入 力 し た 場 合 の ソ ー ス コ ー ド 検 索 結 果 を 表 10 に 示 す . ま た ,Ghost プ ロ ジ ェ ク ト 上 の フ ァ イ ル 群 に 対 し て , 関 数 名’User.get()’を 問 い 合 わ せ キ ー ワ ー ド と し て 入 力 し た 場 合 の ソ ー ス コ ー ド 検 索 結 果 を 表 11 に 示 す . こ こ で ,’User.find()’や ’User.get()’は , PHP フ レ ー ム ワ ー ク で あ る Laravel [24]で 用 意 さ れ て い る 関 数 で あ る . 表8 と 表 9 の 結 果 に お い て , ヒ ッ ト 件 数 は そ れ ぞ れ 14 件 と 2 件 で あ っ た .ま た ,そ れ ぞ れ の 問 い 合 わ せ キ ー ワ ー ド を 用 い て grep し た 結 果 ,各 ソ ー ス フ ァ イ ル の ヒ ッ ト 数 は 1 件 ず つ で あ っ た の で , 全 文 検 索 ス コ ア は 全 て 1.00 と な っ て い る .表 8 と 9 の 結 果 よ り ,ソ ー ス コ ー ド 検 索 に お い て , 単 に 問 い 合 わ せ キ ー ワ ー ド を 用 い て grep し た だ け で は ラ ン キ ン グ で き な か っ た ソ ー ス コ ー ド 群 が , 提 案 方 式 を 用 い る こ と に よ っ て , ソ ー ス コ ー ド 開 発 者 の 開 発 実 績 や 経 験 に 応 じ て , ソ ー ス コ ー ド を ラ ン キ ン グ 可 能 で あ る 事 が 確 認 で き る .

(5)

表 4 開 発 者 ポ イ ン ト の 算 出 結 果 ( Gitlabhq) 開 発 者 名 ポ イ ン ト 特 徴 Steve Norman 1 開 発 層:Model

貢 献 性:低 Douwe Maan 7 開 発 層: Model ,View, Control 貢 献 性:高 サ ポ ー ト 性: True リ ー ダ ー: True Jason Hollingsworth 2 開 発 層: View 貢 献 性:高 Sullivan SENECHAL 7 開 発 層:View 貢 献 性:True サ ポ ー ト 性: True リ ー ダ ー: True Drew Blessing 3 開 発 層: View, Control

貢 献 性:高 表 5 開 発 者 ポ イ ン ト の 算 出 結 果 ( Ghost) 開 発 者 名 ポ イ ン ト 特 徴 Kevin Ansfield 7 開 発 層: Model ,View, Control 貢 献 性:高 サ ポ ー ト 性: True リ ー ダ ー: True Austin Burdine 7 開 発 層: Model ,View, Control 貢 献 性:高 サ ポ ー ト 性: True リ ー ダ ー: True Ivan Votti 1 開 発 層: Control 貢 献 性

:低 vdemedes 5 開 発 層: Model 貢 献 性:低 サ ポ ー ト 性: True リ ー ダ ー: True Brandon Hops 1 開 発 層: Model

貢 献 性:低 表 6 開 発 者 ポ イ ン ト の 算 出 結 果 ( October) 開 発 者 名 ポ イ ン ト 特 徴 Samuel Georges 7 開 発 層: Model ,View, Control 貢 献 性:高 サ ポ ー ト 性: True リ ー ダ ー: True Dave Shoreman 1 開 発 層: Control 貢 献 性

:低 gergo85 3 開 発 層貢 献 性: Control

:高 Jeremy

GAULIN 1 貢 献 性 :低 Stefan Talen 6 開 発 層貢 献 性: Model

:高 表 7 ソ ー ス コ ー ド ・ ス コ ア の 算 出 結 果 ( Gitlabhq) ソ ー ス コ ー ド ・ フ ァ イ ル 名 ス コ ア 開 発 者 数 broadcast_messages_controller.rb 5.00 4 authenticates_with_two_factor.rb 7.00 1 _discussion.html.haml 7.00 5 edit.html.haml 6.20 5 accounts_controller.rb 7.00 2 avatars_controller_spec.rb 3.00 1 users_controller.rb 5.20 5 key_spec.rb 4.14 7 slack_service.rb 5.29 7 imports_controller.rb 7.00 3 表 8 ソ ー ス コ ー ド ・ ス コ ア の 算 出 結 果 ( Ghost) ソ ー ス コ ー ド ・ フ ァ イ ル 名 ス コ ア 開 発 者 数 delete-user.js 7.00 4 signin.hbs 7.00 7 role.js 5.00 5 tags.hbs 6.00 6 gh-nav-menu.hbs 7.00 5 gh-menu-toggle.hbs 4.00 2 user.js 6.00 6 app-setting.js 4.00 2 gh-activating-list-item.hbs 7.00 3 index.hbs 5.80 5 表 9 ソ ー ス コ ー ド ・ ス コ ア の 算 出 結 果 ( October) ソ ー ス コ ー ド ・ フ ァ イ ル 名 ス コ ア 開 発 者 数 AccessLogs.php 5.75 4 EditorPreferences.php 5.17 6 Files.php 7.00 1 Index.php 6.75 4 Users.php 5.83 6 Media.php 7.00 2 Themes.php 6.75 4 BackendPreferences.php 3.57 7 ThemeImport.php 4.00 2 File.php 5.25 4 ま た ,Ghost プ ロ ジ ェ ク ト と October プ ロ ジ ェ ク ト の 両 方 に PHP 標 準 関 数 で あ る ’trim()’を 問 い 合 わ せ キ ー ワ ー ド と し た 場 合 の ソ ー ス コ ー ド 検 索 結 果 を 表 10 に 示 す . こ の よ う に , 異 な る プ ロ ジ ェ ク ト を ま た が っ た ソ ー ス コ ー ド 検 索 も 可 能 で あ る が , 開 発 者 ポ イ ン ト の 算 出 は , 各 プ ロ ジ ェ ク ト で の そ の 開 発 者 の 開 発 状 況 に 依 存 し て い る た め , プ ロ ジ ェ ク ト 間 で 開 発 者 ポ イ ン ト を 正 規 化 す る 仕 組 み を 導 入 す る 必 要 が あ る .

6. ま と め

本 研 究 で は , ソ ー ス コ ー ド と そ の 開 発 者 の 役 割 や 開 発 ス キ ル を 関 連 付 け る こ と に よ り , ソ ー ス コ ー ド 開 発 者 の 開 発 実 績 や 経 験 を 考 慮 し た ソ ー ス コ ー ド ・ ラ ン キ ン グ 手 法 に つ い て 提 案 し た . 分 散 バ ー ジ ョ ン 管 理 シ ス テ ム GitHub 上 の ソ フ ト ウ ェ ア 開 発 プ ロ ジ ェ ク ト を 対 象 と し た 実 験 に よ り , 単 に 問 い 合 わ せ キ ー ワ ー ド を 用

(6)

い て grep し た だ け で は ラ ン キ ン グ で き な か っ た ソ ー ス コ ー ド 群 が , 提 案 方 式 を 用 い る こ と に よ り , 検 索 対 象 と な っ て い る ソ ー ス コ ー ド 群 の 開 発 者 の 開 発 実 績 や 経 験 に 応 じ て , ソ ー ス コ ー ド を ラ ン キ ン グ 可 能 で あ る 事 が 確 認 で き た . 今 後 の 課 題 と し て , 実 験 考 察 と し て 述 べ た よ う に , 異 な る プ ロ ジ ェ ク ト を ま た が っ た ソ ー ス コ ー ド 検 索 に 適 用 す る た め に , 各 プ ロ ジ ェ ク ト に お い て 算 出 し た 開 発 者 ポ イ ン ト を 正 規 化 す る 機 能 を 組 み 込 む 予 定 で あ る . ま た , 現 在 ソ ー ス コ ー ド の 構 文 解 析 機 能 を 実 装 し て お り , 一 部 の プ ロ グ ラ ミ ン グ 言 語 を 対 象 と し て ク ラ ス 名 や メ ソ ッ ド 名 を 抽 出 可 能 と な っ て い る . 今 回 の 実 験 で は ,grep コ マ ン ド を 全 文 検 索 エ ン ジ ン と し て 代 用 し た が , ク ラ ス 名 や メ ソ ッ ド 名 を 全 文 検 索 エ ン ジ ン に 索 引 付 け す る こ と で , 全 文 検 索 エ ン ジ ン を 用 い た 評 価 実 験 の 実 施 を 検 討 し て い る . 今 後 さ ら に , よ り 多 く の 開 発 プ ロ ジ ェ ク ト を 対 象 と し た 開 発 者 の 特 徴 抽 出 , お よ び ソ ー ス コ ー ド 検 索 結 果 を 評 価 す る と と も に , 他 の ソ ー ス コ ー ド 検 索 シ ス テ ム と の 比 較 実 験 に よ り , 提 案 方 式 の 有 効 性 を 検 証 し て い く 予 定 で あ る . 表 10 ラ ン キ ン グ 結 果 ( Gitlabhq) 順 位 ソ ー ス コ ー ド ・ フ ァ イ ル 名 ス コ ア (1) (2) 1 admin/keys_controller.rb 4.00 7.00 1.00 2 profiles/keys_controller.rb 4.00 7.00 1.00 3 identities_controller.rb 4.00 7.00 1.00 4 models/user_spec.rb 3.54 3.04 1.00 5 models/member.rb 3.50 3.00 1.00 6 snippets_controller.rb 3.44 2.44 1.00 7 users_controller.rb 3.10 2.60 1.00 8 sessions_controller.rb 2.93 2.43 1.00 9 admin/users_controller.rb 2.80 2.30 1.00 10 autocomplete_controller.rb 2.34 1.84 1.00 (1) ソ ー ス コ ー ド・ス コ ア ,(2) 全 文 検 索 ス コ ア 表 11 ラ ン キ ン グ 結 果 ( Ghost) 順 位 ソ ー ス コ ー ド ・ フ ァ イ ル 名 ス コ ア (1) (2) 1 models/user.js 6.00 5.50 1.00 2 post.js 4.00 3.50 1.00 (1) ソ ー ス コ ー ド・ス コ ア ,(2) 全 文 検 索 ス コ ア 表 12 ラ ン キ ン グ 結 果 ( Ghost と October) 順 位 ソ ー ス コ ー ド ・ フ ァ イ ル 名 ス コ ア (1) (2) 1 index.js (Ghost) 5.40 5.40 1.00 2 User.php (October) 4.34 3.84 1.00 3 post.js (Ghost) 3.50 3.00 1.00 4 user.js (Ghost) 3.11 2.61 1.00 (1) ソ ー ス コ ー ド ・ ス コ ア , (2) 全 文 検 索 ス コ ア

参 考 文 献

[1] 藤 原 新 , 畑 秀 明 , 門 田 暁 人 , 松 本 健 一 , “プ ロ グ ラ ミ ン グ 初 学 者 の た め の ソ ー ス コ ー ド 再 利 用 支 援”, 研 究 報 告 ソ フ ト ウ ェ ア 工 学( SE),Vol. 2015-SE-190 (16), pp.1-7, 2015. [2] 曽 和 寛 史 ,尾 花 将 輝 ,深 海 悟 ,“ソ フ ト ウ ェ ア メ ト リ ク ス を 用 い た ソ ー ス コ ー ド 検 索 手 法 の 提 案”, 第77 回 全 国 大 会 講 演 論 文 集 ,Vol. 2015 (1),pp.309-311, 2015. [3] 神 谷 年 洋 , “And/Or/Call グ ラ フ の 提 案 と ソ ー ス コ ー ド 検 索 へ の 応 用”, 研 究 報 告 ソ フ ト ウ ェ ア 工 学 (SE), Vol. 2013-SE-182 (27), pp.1-6, 2013. [4] 平 山 拓 朗 ,丸 山 一 貴 ,寺 田 実 ,“対 話 的 な ソ ー ス コ ー ド 検 索 ツ ー ル の 提 案”, 第 76 回 全 国 大 会 講 演 論 文 集 ,Vol. 2014 (1), pp.395-396, 2014. [5] 宇 田 川 佳 久 , ”構 造 派 生 機 能 を 有 す る 検 索 モ デ ル の ソ ー ス コ ー ド 検 索 へ の 応 用”, 研 究 報 告 情 報 シ ス テ ム と 社 会 環 境(IS),2013-IS-123 (4),pp.1-8, 2013. [6] 李 書 ,鷹 野 孝 典 ,”分 散 ソ ー ス コ ー ド 管 理 シ ス テ ム の 共 同 開 発 履 歴 に 基 づ い た 開 発 者 の 特 徴 抽 出 手 法 の 検 討” , 研 究 報 告 デ ー タ ベ ー ス シ ス テ ム (DBS), 2015-DBS-162 (1), pp.1-8, 2015. [7] 亀 井 靖 高 ,角 田 雅 照 ,柿 元 健 ,大 杉 直 樹 ,門 田 暁 人 ,松 本 健 一 ,”進 行 中 の プ ロ ジ ェ ク ト に 有 用 な ソ フ ト ウ ェ ア コ ン ポ ー ネ ン ト の 推 薦 方 法”, 電 子 情 報 通 信 学 会 技 術 研 究 報 告. SS, ソ フ ト ウ ェ ア サ イ エ ン ス ,Vol. 106 (16), pp.25-30, 2006. [8] 亀 井 靖 高 ,角 田 雅 照 ,柿 元 健 ,大 杉 直 樹 ,門 田 暁 人 ,松 本 健 一 ,“ソ フ ト ウ ェ ア コ ン ポ ー ネ ン ト 推 薦 に お け る 協 調 フ ィ ル タ リ ン グ の 効 果”, 情 報 処 理 学 会 論 文 誌 , Vol. 50 (3), pp.1139-1143, 2009. [9] 泉 田 聡 介 ,植 田 泰 士 ,神 谷 年 洋 ,楠 本 真 二 ,井 上 克 郎 ,“ソ フ ト ウ ェ ア 保 守 の た め の 類 似 コ ー ド 片 検 索 ツ ー ル”, 電 子 情 報 通 信 学 会 論 文 誌 . Vol. J86-D-I (12), pp.906-908, 2003. [10] 石 原 知 也 ,堀 田 圭 佑 ,肥 後 芳 樹 ,楠 本 真 二 ,“再 利 用 実 績 に 基 づ い た コ ー ド 片 検 索 手 法 の 提 案”, 電 子 情 報 通 信 学 会 技 術 研 究 報 告. SS, ソ フ ト ウ ェ ア サ イ エ ン ス , Vol. 113 (269), pp.61-66, 2013. [11] 市 井 誠 ,山 本 哲 男 ,横 森 励 士 ,井 上 克 郎 ,”ソ フ ト ウ ェ ア 部 品 推 薦 の た め の 協 調 フ ィ ル タ リ ン グ 手 法 の 提 案 と 実 現”, 電 子 情 報 通 信 学 会 技 術 研 究 報 告 ,SS,ソ フ ト ウ ェ ア サ イ エ ン ス ,Vol.104 (243), pp.7-12, 2004.

[12] S. Bajracharya, T. Ngo, E. Linstead, Y. Dou, P. Rigor, P. Baldi, and C. Lopes, “Sourcerer: a search engine for open source code supporting structure-based search”, Proceeding of the 21st ACM SIGPLAN symposium on Object-oriented programming systems, languages, and applications (OOPSLA '06), pp.681-682, 2006.

[13] O. Augusto, L. Lemos, S. K. Bajracharya, and J. Ossher, “CodeGenie:: a tool for test-driven source code search”, Proceedings of the 22nd ACM SIGPLAN conference on Object-oriented programming systems and applications (OOPSLA '07 ), pp.917-918, 2007.

[14] O. Augusto, S. Bajracharya, J. Ossher, P. C. Masiero, and C. Lopes, “Applying test-driven code search to the reuse of auxiliary functionality”, Proceedings of the 2009 ACM symposium on Applied Computing (SAC '09), pp.476-482, 2009.

[15] C. Mcmillan, D. Poshyvanyk, M. Grechanik, Q. Xie, and C. Fu, “Portfolio: Searching for relevant

(7)

functions and their usages in millions of lines of code”, ACM Transactions on Software Engineering and Methodology (TOSEM) - Testing, debugging, and error handling, formal methods, lifecycle concerns, evolution and maintenance, Vol. 22, Issue 4, Article No. 37, 2013.

[16] S. Subramanian, L. Inozemtseva, and R. Holmes, “Live API documentation”, Proceedings of the 36th International Conference on Software Engineering (ICSE 2014), pp.643-652, 2014.

[17] F. A. Durão, T. A. Vanderlei, E. S. Almeida, and S. R. de L. Meira, “Applying a semantic layer in a source code search tool”, Proceedings of the 2008 ACM symposium on Applied computing (SAC '08), pp.1151-1157, 2008.

[18] C. Sadowski, K. T. Stolee, and S. Elbaum, “How developers search for code: a case study”, Proceedings of the 2015 10th Joint Meeting on Foundations of Software Engineering, pp.191-201, 2015.

[19] T. Kamiya, S. Kusumoto, and K. Inoue, “CCFinder: A multilinguistic token-based code clone detection system for large scale source code”, IEEE Trans on Soft. Eng., 28(7), pp.654-670, 2002.

[20] GitHub, https://github.com, (visited on Jan. 9, 2016) [21] Gitlabhq, https://github.com/gitlabhq/gitlabhq,

(visited on Jan. 9, 2016)

[22] Ghost, https://github.com/tryghost/Ghost, (visited on Jan. 9, 2016)

[23] October, https://github.com/octobercms/october, (visited on Feb. 12, 2016)

[24] Laravel, https://laravel.com/, (visited on Feb. 12, 2016)

表   4   開 発 者 ポ イ ン ト の 算 出 結 果 ( Gitlabhq )

参照

関連したドキュメント

The mGoI framework provides token machine semantics of effectful computations, namely computations with algebraic effects, in which effectful λ-terms are translated to transducers..

An example of a database state in the lextensive category of finite sets, for the EA sketch of our school data specification is provided by any database which models the

A NOTE ON SUMS OF POWERS WHICH HAVE A FIXED NUMBER OF PRIME FACTORS.. RAFAEL JAKIMCZUK D EPARTMENT OF

(The origin is in the center of each figure.) We see features of quadratic-like mappings in the parameter spaces, but the setting of elliptic functions allows us to prove the

A lemma of considerable generality is proved from which one can obtain inequali- ties of Popoviciu’s type involving norms in a Banach space and Gram determinants.. Key words

Thus, if we color red the preimage by ζ of the negative real half axis and let black the preimage of the positive real half axis, then all the components of the preimage of the

de la CAL, Using stochastic processes for studying Bernstein-type operators, Proceedings of the Second International Conference in Functional Analysis and Approximation The-

[3] JI-CHANG KUANG, Applied Inequalities, 2nd edition, Hunan Education Press, Changsha, China, 1993J. FINK, Classical and New Inequalities in Analysis, Kluwer Academic