Comments
Transcript
NAIST-IS-MT0551022 修士論文 E メールアーカイブのクラスタリング
NAIST-IS-MT0551022 修士論文 E メールアーカイブのクラスタリングによる ソフトウェア開発コンテキストの可視化手法 大蔵 君治 2007 年 2 月 1 日 奈良先端科学技術大学院大学 情報科学研究科 情報システム学専攻 本論文は奈良先端科学技術大学院大学情報科学研究科に 修士(工学) 授与の要件として提出した修士論文である. 大蔵君治 審査委員: 飯田元教授 (主指導教員) 宮崎純助教授 (副指導教員) 小山正樹教授 (副指導教員) 松本健一教授 (副指導教員) Eメールアーカイブのクラスタリングによる ソフトウェア開発コンテキストの可視化手法* 大蔵君治 内容梗概 ソフトウェア開発において,開発者の多くは過去の経験をうまく活用できてお らず,同じ失敗を繰り返しがちである.同じ失敗を繰り返さないためには,プロ ジェクトの事後分析が重要であるが,膨大なプロジェクトデータから人の手によ って事後分析を行うことは容易ではない.また,ソフトウェア開発プロジェクト の分析において,記録が義務づけられているような形式張ったレポートからは直 接知ることのできない開発のコンテキストを把握することは分析を進める上で 重要である.本研究では,コンテキストを明らかにするための方法として,Eメ ールアーカイブを用いた手法を提案する.本手法では始めに自然言語処理による 各メールからの特徴語抽出を行い,次に抽出した特徴語を基にベクトル空間法に よる類似度計算,及び計算された類似度とクラスタリングアルゴリズムに基づい たメール内容の分類を行う.最後に,分類されたそれぞれのクラスタを時系列上 へプロットし,他の時系列チャートと組み合わせることによりソフトウェア開発 コンテキストを可視化する.本研究では,ソフトウェア開発プロジェクト再現ツ ール“プロジェクトリプレイヤ”に提案手法を実装した.また,実験を行い,本 分析手法が実際にソフトウェア開発のコンテキストを抽出可能であることを確 認した. キーワード Eメール, コンテキスト, クラスタリング, ソフトウェアプロジェクト, ソフ トウェアプロセス *奈良先端科学技術大学院大学情報科学研究科情報システム学専攻修士論文, NAIST-ISMT0551022, 2007 年2 月1 日. A Method of Visualizing Context in Software Projects using Email Clustering* Kimiharu Ohkura Abstract In many software development projects, people tend to repeat same mistakes due to lack of shared knowledge from past experiences. Generally, it is very difficult to manually find out valuable phenomena from huge data. Invisible context, which cannot be known directly from software documents or formal reports, is an important factor to these difficulties. We propose a new method to find contexts based on analysis to email archives in a project repository. In this method, we first apply natural language processing to extract keywords from email messages. Next, similarities among the messages are calculated based on the extracted keywords, and the messages are classified into clusters according to the similarities. The clustering result can be presented with other information such as code growth graph or schedule charts. This method is implemented as an extension to the Project Replayer, a tool to review past project data. Pilot analysis confirms that a researcher could grasp important contexts of failures in actual projects using the Project Replayer. Keywords: Email, context, clustering, software project, software process .*Master’s Thesis, Department of Information Systems, Graduate School of Information Science, Nara Institute of Science and Technology, NAIST-IS-MT0551022, February 1, 2007. 関連発表論文 国際会議 1. Kimiharu Ohkura, Keita Goto, Noriko Hanakawa, Shinji Kawaguchi, and Hajimu Iida "Project Replayer with Email Analysis - Revealing Contexts in Software Development",the 13th Asia-Pacific Software Engineering Conference (APSEC2006), pp.453-460, Dec 2006 2. Keita Goto, Kimiharu Okura, Noriko Hanakawa, Hajimu Iida, "The Project Replayer for Knowledge Feedback Cycle in Software Development", International Symposium on Empirical Software Engineering (ISESE2005) Poster, Nov 2005 研究会・シンポジウム 1. 大蔵君治,後藤慶多,川口真司,花川典子,飯田元,"ソフトウェア開発にお ける知識還元のためのプロジェクト再現ツール",ソフトウェアエンジニアリ ン グ 最 前 線 2006 , ソ フ ト ウ ェ ア エ ン ジ ニ ア リ ン グ シ ン ポ ジ ウ ム 2006 , pp.75-78,Oct 2006 目次 1 はじめに ............................................................................................................. 1 2 関連研究 ............................................................................................................. 3 3 目的とアプローチ ............................................................................................... 5 3.1. 概要................................................................................................................ 5 3.2. プロジェクトリプレイヤ ................................................................................ 5 4 E メールアーカイブ分析 ..................................................................................... 9 4.1. 概要................................................................................................................ 9 4.2. ステップ 1: 特徴語抽出 ............................................................................. 10 4.2.1. TF-IDF .................................................................................................. 10 4.2.2. ストップワードリスト ........................................................................... 11 4.3. ステップ 2: ベクトル空間法による類似度計算 .......................................... 11 4.3.1. 索引語の決定方法 .................................................................................. 12 4.3.2. 距離関数 ................................................................................................ 12 4.4. ステップ 3: メールのクラスタリング ........................................................ 13 4.4.1. クラスタリングアルゴリズム ................................................................. 13 4.4.2. クラスタ名の決定 .................................................................................. 16 4.4.2. クラスタ名の決定 .................................................................................. 17 4.5. ステップ 4: 時系列上へプロット ............................................................... 17 5 実験 .................................................................................................................. 19 5.1. 実験手順....................................................................................................... 19 5.1.1. 実験 1 .................................................................................................... 19 5.1.2. 実験 2 .................................................................................................... 19 5.2. 実験結果....................................................................................................... 22 5.2.1. コンテキストの抽出 .................................................................................. 22 5.2.2. グラフ変化の原因抽出 ............................................................................... 23 (1) コード行数の急増原因 ................................................................................ 23 (2) コード行数の急減少原因 ............................................................................ 23 6 考察 .................................................................................................................. 25 6.1. メールアーカイブに情報が存在しないケース ............................................... 25 6.2. クラスタリング精度の問題........................................................................... 25 7 まとめ ............................................................................................................... 26 謝辞 ........................................................................................................................ 28 参考文献 ................................................................................................................. 30 1 はじめに 近年,ソフトウェア開発の需要増加に伴い,開発プロジェクトにおいて繰り返 される失敗が深刻な問題となってきている [1][2].失敗が繰り返される理由の一 つとして,開発者が過去の経験からうまく知識を得られていないことが挙げられ る.ソフトウェア開発において有用な,共有すべき知識を得るための方法として, これまで多くの分析手法 [3][4] が提案されてきた. しかしながら,開発プロジ ェクトにおいて記録される大量のデータに対して手動で分析を行い,有益な情報 を見つけ出すことは依然として困難である.理由として,数値データから得られ る情報には限界があり,データの異常を発見したとしても原因の分析には更なる 精査や,プロジェクトメンバーへのレビューが必要であることが挙げられる. プロジェクトには,開発に関するドキュメントや義務的に残された形式的なレ ポートからは知ることのできない暗黙的な背景事情が存在する.例として,報告 されない細かなトラブルや,インフォーマルな議論の存在が挙げられる.本研究 では その よ うな 背景 事 情を ソ フト ウェ ア 開発 プロ ジェ ク トのコ ン テ キ ス ト と呼 ぶ.コンテキストはプロジェクトの分析において重要な要素であるが,先に述べ たように,事後分析においてそのような情報を発見するにはプロジェクトメンバ ーへのレビューが必要であった.そこで,本研究ではソフトウェア開発における コンテキストを抽出し,分析に活用できる形で提示する手法を提案する.本研究 では,コンテキストを明らかにする方法として,ソフトウェア開発においてよく 使用されるコミュニケーションツールである E メールに着目し,分析を行う. E メールのア ーカイ ブに は開発 に関す る議論 やミーテ ィン グに関 する情 報と いった様々な情報が含まれているが,アーカイブが肥大化しがちなソフトウェア 開発において,大量のメールを手動で分析することは多大な時間が掛かり,また 話題の種類や議論の流れといったメール内容の把握も困難である.そこで,本研 究で は 自然 言語 解 析と ク ラス タ リン グ アル ゴ リズ ム を用 いて メ ール を 自動 で 話 題ごとに分類する.更に時系列上に分類されたそれぞれの話題をプロットし,コ ード 行 数の 推移 と いっ た 他の 時 系列 デ ータ と 連携 す るこ とに よ りソ フ トウ ェ ア 開発コンテキストの可視化を行う.話題の分布と,他の時系列データと重ね合わ せることにより,数値データだけでは得ることのできなかったグラフ変化の原因 1 を知ることができる. 他の時系列データとの連携を行うために,本研究ではデータの可視化ツールと して,ソフトウェア開発プロジェクト再現ツール“プロジェクトリプレイヤ” [5] を用いた.本研究で提案するメールアーカイブの分析手法は,プロジェクトリプ レイヤの拡張モジュールとして実装される. 本章以下,第 2 章では関連する研究について取り上げ,第 3 章において本研究 の目的とアプローチを述べる.第 4 章では提案する分析手法の詳細を説明し,第 6 章にて行った2つの実験についての説明を行う.第 7 章にて実験結果をふまえ た考察を行い,第 8 章にて本論文のまとめを述べる. 2 2 関連研究 E メールをコミュニケーションツールとして用いる共同作業において,議論の 進捗を把握することや話題を認識することは,円滑なコミュニケーションを行う ための重要な要素である.ソフトウェアプロセスの分野においても,これまで自 然言語処理を用いた様々なメールアーカイブの分析手法が提案されてきた. Murakoshi らの提案する討議構造モデル [6] は,言語的手がかりをもとにメー リングリストにおける議論の進捗状況を自動構築するためのモデルである.この モデルでは一つのメール内で同一の話題に関して言及している文章を“発話”と 呼ぶ.また,発話の内容を,相手からの返答を求めず議論に直接の影響を与えな い“宣言的な発話”,質問や提案等,相手に対しての返答要求を示唆する“返答 を要求する発話”,同意や受託といった話題の終結を示唆する“話題を終結する 発話”と分類している.モデルでは,あらかじめ定義された言語的手が掛かりを もとに発話内容を自動で分類し,討議構造木と呼ばれる木構造をユーザに提示す ることで議論の把握を支援している.討議構造木は,議論の流れを可視化するう えで非常に有用な手法であるが,大規模なプロジェクトにおいてどのような話題 がどのようなタイミングで発生したかといった,時系列での情報を抽出すること は想定しておらず,プロジェクト全体の状況を把握するには不向きであると言え る. また,開発者同士の関連をメールアーカイブから考察する研究も行われている. Bird ら [1] の研究では,E メールを多用するオープンソースソフトウェアプロ ジェクトに着目し,メーリングリストの参加者を“開発者”, “バグ報告者”, “コ ントリビュータ(修正パッチを作成するユーザ)”,“それ以外の一般ユーザ”と 分類し,メールヘッダに含まれる送信者,送信日時,返信先の情報からソーシャ ルネットワークを構築し,その関連性を調べている. E メールアーカイブを含む開発ログデータを用いたその他の研究としては,作 業漏れを防止するために関連成果物を提示する手法 [7][8],同様の作業を行って いる関連深い開発者の抽出を行う手法 [9] などが提案されてきた.これらの手法 では,開発プロセス全体の理解支援ではなく,開発履歴を利用した成果物や開発 者間の関連抽出が主な目的となっている. 3 クラ ス タリ ン グを 用 いた 文 書の 分 類は 情 報検 索の 分 野に お いて 広 く使 わ れて いる [10].しかし ながら,大 規模なデー タに 対して分析に有 用な情報 を抽出 す るためには,ユーザが適切なクエリを与える必要があった. 本研究は,メールアーカイブの分析結果を一般的に用いられている時系列チャ ート と 組み 合わ せ るこ と によ っ てソ フ トウ ェ ア開 発 プロ ジェ ク トに お ける コ ン テキストの可視化を行い,プロジェクトの事後分析を支援する. 4 3 目的とアプローチ 3.1. 概要 本研究の目的は開発者,及びプロジェクトの分析を行う研究者に負担をかけず にソフトウェア開発プロジェクトの分析支援を行うことである.プロジェクトの 分析にあたって,グラフによる数値データの可視化がしばしば用いられる.数値 データの可視化は異常の発見に役立つ.しかし,異常の原因を調べるためには手 動による詳細な分析や,プロジェクトメンバーに対するレビューを実施すること でプロジェクトのコンテキストを明らかにする必要があり,プロジェクト全体の 分析にかかる労力や時間は増大する傾向にあった.本研究では,そういった数値 データにはあらわれないソフトウェア開発プロジェクトのコンテキストを,開発 に用いられたメールのアーカイブから自動で抽出し,他の時系列グラフと連携し て表示することによって,プロジェクトの事後分析を支援する.本手法を適用す るためには,開発に用いたメールアーカイブの他,連携して時系列データを可視 化するツールが必要である.本研究では,連携するプロジェクトの可視化ツール として“プロジェクトリプレイヤ”を用いる. 3.2. プロジェクトリプレイヤ プロジェクトリプレイヤは開発プロジェクトを再現するソフトウェアで,プロ ジェクトの事後分析を用意に行うために作られた.開発者は,プロジェクトリプ レイ ヤ を用 いて 過 去に 実 施さ れ たプ ロ ジェ ク トを 容 易に レビ ュ ーす る こと が で きる一方,研究者はプロジェクトリプレイヤを用いて分析対象のプロジェクトを より詳細に把握することができる.プロジェクトリプレイヤのフレームワークを 図 1 に示す.プロジェクトリプレイヤは,EPM (Empirical Project Monitor) [11] によって収集されたデータを用いてプロジェクトの再現を行う(図 1 参照).EPM は様々な開発ツールのログを自動で収集することが可能で,開発者が意識的に事 後分析のための記録を残す必要がなく,負担をかけない.収集されるデータは主 にバージョン管理ツール,バグトラッキングツール,メーリングリストのログで ある.プロジェクトリプレイヤはこれらのデータを基にプロジェクトを再現し, 5 開発支援環境ログ CVS XML GNATS EPM Mailman イベント取りだし (プロジェクトデータ) プロジェクトリプレイヤ 基本モジュール イベント データ プロジェクト再現 拡張モジュール 図 1. プロジェクトリプレイヤのフレームワーク 当該プロジェクトの流れを容易に把握することができる.プロジェクトリプレイ ヤは,基本となる 4 つのモジュールに加え,拡張モジュールとしてビューを追加 できるインターフェイスを持っている.以下に,プロジェクトリプレイヤが扱う 情報と機能について,図 2 を用いて説明する. 現在の日時 画面下部のタイムバーによって再生する日時を変更できる.また,左下部のボ タンによって,ビデオプレイヤーのように逐次再生・停止を行うことができる. 現在の再生日は右下部のボックスに表示される. ログデータのサマリ イベントリストビューにて,現在の再生日に発生した様々なイベント(コミッ ト,バグ登録,修正,メール送受信等)を一覧することができる.表示できる情 報は,イベントの発生者と発生時間,そしてイベントの内容である.例えば,あ る開 発 者が 何時 に ソー ス ファ イ ルを コ ミッ ト した と いっ た情 報 を得 る こと が で きる.これらの情報は開発ツールのログデータから得られたものである. 開発者の振るまい メンバービューによって,現在の再生日に各開発者が何を行っていたかを表示 することができる.イベントリストビューがイベント単位で情報を表示していた 6 ことに対し,メンバービューでは開発者を単位として,開発者がその日にどのよ うなイベントを発生させていたかを知ることができる.例えば,開発者 A がその 日に 行 った コミ ッ トの 回 数や 修 正し た ソー ス ファ イ ルの 一覧 と いっ た 情報 を 知 ることができる. ソースファイルの完成度 プロジェクト終了時を 100%として,各ソースファイルの完成度を累積変更コ ード行数から算出し,インジケータで表示することができる. コード行数の推移 プロジェクト開始から終了までの,コード行数の推移をグラフで表示すること ができる.また,現在再生している日時には印が付き,プロジェクトにおける再 生日現在の状況を把握することができる. プロジェクトリプレイヤは以上に述べた 4 つのビュー(基本モジュール)とタ イムバーから構成されている.本研究では更に,拡張モジュールとして次に述べ るメールビューを追加した. メールアーカイブ分析の結果 本研究で提案する手法では,メールアーカイブをクラスタリングすることによ って話題の分類を行う.メールビューは,現在の再生日に存在する話題(クラス タ)一覧を表示し,更に一覧からクラスタ名をクリックすることによってその話 題を構成している一連のメールをユーザに提示する. 7 グラフビュー グラフビュー コード行数の推移を表示する コード行数の推移を表示する イベントリストビュー イベントリストビュー その日に発生したイベントの その日に発生したイベントの 一覧を表示する 一覧を表示する メールビュー(拡張モジュール) メールビュー(拡張モジュール) メールアーカイブの メールアーカイブの 分析結果を表示する 分析結果を表示する ファイルビュー ファイルビュー 各ソースファイルの完成度(累積変 各ソースファイルの完成度(累積変 更コード行数より算出)を表示する 更コード行数より算出)を表示する メンバービュー メンバービュー 開発者の情報を表示する 開発者の情報を表示する タイムバー タイムバー 再現する日付を指定する 再現する日付を指定する 図 2. プロジェクトリプレイヤのスクリーンショット 8 4 E メールアーカイブ分析 4.1. 概要 ソフトウェア開発では,コミュニケーションツールとして E メールがよく用い られる.E メールアーカイブには,問題解決の手段や開発者同士のやり取りとい った,分析において有用となる様々な情報が含まれている.しかしながら,頻繁 にやりとりを行うソフトウェア開発において,メールアーカイブのサイズは増大 する傾向にある.そういった膨大な量のメールを手動で分析することは難しく, 多大な時間を要する.また,プロジェクトの分析には時間軸チャートがよく用い られるが,数値データを単純に時間軸で表示しただけでは,プロジェクトのコン テキストは得られにくい.例として,コード行数の推移を表したグラフを図 3 に 示す.通常,推移的に変化するコード行数グラフだが,2 箇所に異常な変化が見られる. しかし,何が原因でこのような変化が起こっているかはグラフから知ることはで きず,原因を知るためには手動によるドキュメントの精査や,プロジェクトメン バーへのレビューを行う必要があった. 本研究では,自然言語処理に基づいた E メールアーカイブの分析と時間軸チャ ートを組み合わせることで,ソフトウェア開発プロジェクトのコンテキストを自 動的に可視化し,プロジェクトの分析を支援する.E メールアーカイブの分析は 主に次の 4 ステップから成る. ステップ 1. 特徴語抽出 自然言語処理を用いて各メールから,そのメールを特徴 付けている単語(特徴語)を抽出する. ステップ 2. 類似度計算 抽出した特徴語を用いて,各メール間の類似度をベクト ル空間法によって計算する. ステップ 3. クラスタリング 計算した類似度をもとに,メールをクラスタに分類 し,話題に分ける. ステップ 4. 時間軸上へプロット メールヘッダに含まれる送信時刻をもとに,各 9 コード行数 05/09/28 05/10/05 05/10/12 05/10/19 05/10/26 時間 図 3. コード行数グラフの例 クラスタを時系列上にプロットする. 次節以降では各ステップの詳細について述べる. 4.2. ステップ1: 特徴語抽出 4.2.1. TF-IDF ステップ 1 では,形態素解析を用いて各メールの本文から単語を抽出し,抽出 した単語それぞれを TF-IDF (Term Frequency - Inverse Document Frequency) [12] を用いて単語のスコアリングを行う.TF-IDF はその単語の頻度と,単語が 出現する文書数から,その単語がどれだけその文書を特徴付けているかを計算す る手法で, 情報検 索の分野 におい て広く用 い られている .スコ アは次の 式(1)で 計算される. スコア: w(t, d ) tf (t, d ) idf (t ) TF: tf (t , d ) = 文書 d における単語 t の頻度 N idf ( t ) log 1 IDF: df (t ) N: 総文書数 10 (1) df (t ) :単語 t を含む文書数 TF はある文書におけるその単語の頻度である.しかし,“私”や”それ”といった あらゆる文書に普遍的にあらわれる単語は特徴語として不適切であるため,その 単語の希少さをあらわす値である IDF を乗ずることによって重みに補正を加え ている. 4.2.2. ストップワードリスト TF-IDF を用いても,文章が極端に短い場合などには“私”や“それ”といっ た単語がその文書においてスコアのランキング上位に位置することがある.本研 究では,特徴語に使用しない単語(ストップワード)を予め外部ファイルに定義 している.これは,後述する索引語の決定の際に,ありふれた単語が索引語とし て用いら れない ように するた めであ る.ス ト ップワー ドの選 定は, 幾つか の E メールアーカイブに対して先だって分析を行い,TF-IDF によって低くスコアリ ングされた単語をリストアップし,手動で行った. 4.3. ステップ2: ベクトル空間法による類似度計算 ステップ 2 では,メールの内容がどれだけ似ているかを示す類似度をベクトル 空間法 [13] によって計算する.ベクトル空間法は情報検索に広く用いられてい るアルゴリズムの一つで,文書をベクトルで表現することにより,文書間の関連 度をベクトル演算によって計算する.図 4 左図にて文書のベクトル化について説 明する.文書をベクトル化する際には,索引語と呼ばれる単語を用いる方法がよ く使われる.本研究においても,各メールに含まれている索引語の頻度をベクトルと して表現している.このように生成されたベクトルを文書ベクトルと呼ぶ.文書ベクト ルの距離が近ければ,同じ単語を多く含んでいることになり,すなわち類似した話題で あると見なすことができる. 11 4.3.1. 索引語の決定方法 本手法ではメールのベクトル表現として,索引語の頻度を用いている.索引語 には各メールから抽出したスコア(TF-IDF 値)の高い単語の和集合を使用した. ただし,ベクトルの次元数が肥大化すると計算量が膨大になるため,各メールに おいてスコアの高い上位 2 語のみを索引語として用いた. 4.3.2. 距離関数 ベクトル間の距離を測る尺度には様々なものがあり,対象によって適切な尺度 を選ぶ必要がある [14][15].幾つかの代表的な距離関数を次に挙げる. コサイン尺度 2 つのベクトルが成す角度から類似度を計算する. ユークリッド距離 三平方の定理に基づいて計算される 2 点間の最短距離. マンハッタン距離(市街地距離) 差の絶対値の総和で表される距離. マハラノビスの汎距離 データの分散を考慮した距離尺度. 本研究では,情報検索で広く用いられているコサイン尺度を距離関数として使 用する. 12 文書ベクトル 2 0 0 … blackout exception Mail1 単語の 出現頻度 compile error 索引語 類似度行列 Mail1 Mail2 Mail3 … Mail1 1.00 0.00 0.65 Mail2 0.00 1.00 0.50 Mail3 0.65 0.50 1.00 … … 文書ベクトル Mail2 0 1 1 … 類似度計算 類似度計算 Mail3 … 1 … 0 0 … … … … … … … … … … … 図 4. メールのベクトル化と類似度行列の生成 4.4. ステップ3: メールのクラスタリング 4.4.1. クラスタリングアルゴリズム ステップ 2 ではベクトル空間法による全てのメール間での類似度を計算した. この計算結果は類似度行列として表すことができる.図 4 右図に類似度行列の例 を示す.類似度行列は全文書ベクトル間の類似度(距離)を表す.本研究で提案 する手法はメール間の類似度に基づいて全てのメールをクラスタ分けする.先に 述べたように,索引語の頻度を基にメールのベクトル化を行っているため,形成 されたクラスタは本文に同じような語を持つメールの集まり,すなわち類似した 内容の文章であると考えられる.本研究では一つのクラスタを一つの話題として 扱う. 分類を行うためのクラスタリングアルゴリズムには様々なものがあり,分析の 対象によって適 切なアル ゴリズムを 選択する 必要がある [16].アルゴリズ ムは 大きく分類して階層型と非階層型に分けられる.それぞれの代表的なアルゴリズ ムを次に挙げる. 13 最近隣法 2 つのクラスタ間で最も近い要素同士の距離をクラスタ間の距離とする方法. 階層型クラスタリングアルゴリズムの一つである. Cluster 1 Cluster 2 最遠隣法(最長距離法) 2 つのクラスタ間で最も遠い要素同士の距離をクラスタ間の距離とする方法. 階層型クラスタリングアルゴリズムの一つである. Cluster 1 Cluster 2 14 群平均法(UPGMA) 2 つのクラスタ間の要素同士の距離の平均を,クラスタ間の距離とする方法. 階層型クラスタリングアルゴリズムの一つである. Cluster 1 Cluster 2 Ward 法 クラスタ内の分散が最小となるようにクラスタ分けを行うアルゴリズム.階層 型クラスタリングアルゴリズムの一つである. クラスタ A,B 間の距離 d(A,B)は以下の式(2)で計算される. d ( A, B ) E( A B) E ( A) ( x x)2 E(C) x (2) (3) x C ただし, E ( B) はクラスタ C の重心を表す. 15 k-means 法 k 個の初期値を決め,重心値計算を繰り返して全ての要素を k 個のクラスタに 分割していくアルゴリズム.分割型と呼ばれる非階層型クラスタリングアルゴリ ズムの一つであり,アルゴリズムの単純さから,計算機を用いたクラスタリング 処理に広く用いられている. Cluster 2 Cluster 4 Cluster 1 Cluster 3 16 4.4.2. クラスタ名の決定 クラスタリングによって話題分けを行ったとしても,各クラスタ(話題)がど のような内容であるかがわからなければ分析を行うことができない.本手法では, 各クラスタにそのクラスタの内容を特徴付ける名前を付ける(以降クラスタ名と 呼ぶ).クラスタ名には,そのクラスタに多く出現する索引語の上位 5 語をカン マで区切った文字列を用いた. 4.5. ステップ4: 時系列上へプロット 他の時系列データとの連携を行うために,クラスタを時系列上にプロットする. クラスタの要素は全て E メールであるため,通常の文書とは違い,メールヘッダ から送信日時を得ることによって時系列上へプロットすることができる.各クラ スタを縦軸におき,横軸を時系列にすることで,話題の分布を可視化することが できる.図 5 にその概念図を示す.このとき,他の時系列データと併せてグラフ 表示することにより,数値データだけではわからないグラフ異常の原因や,開発 現場の背景といったプロジェクトのコンテキストを可視化することができる.図 6 はコード行数グラフとの連携例である.数値データだけではわからないグラフ 変化の原因を,E メールアーカイブ分析を用いて可視化している.例では,簡単 のためクラスタ名を一語としたが,本研究では先に述べたように 5 つの索引語を クラスタ名として用いている. 17 deadline Cluster5 overwork Cluster4 blackout Cluster3 compile error Cluster2 Cluster1 exception 05/09/28 05/10/05 05/10/12 05/10/19 05/10/26 Time 図 5. 時系列プロットの例 LoC 停電により開発が 停電により開発が 一時ストップ 一時ストップ deadline blackout overwork compile error exception 05/09/28 05/10/05 05/10/12 05/10/19 オーバーワークにより開 オーバーワークにより開 発効率が低下している 発効率が低下している 05/10/26 Time 締め切りが近いので 締め切りが近いので 開発を急いでいる 開発を急いでいる 図 6. 連携表示の例 18 5 実験 5.1. 実験手順 本手法が実際にソフトウェア開発プロジェクトのコンテキストを抽出し,事後 分析を支援することが可能であるか,その有効性を検証するために二つの実験を 行った.実験 1 では小規模なプロジェクトを対象とし,本手法によって,プロジ ェク ト に参 加し て いな い 外部 研 究者 が 数値 デ ータ か ら得 られ な い開 発 プロ ジ ェ クトのコンテキストを抽出できるか確認する.実験 2 では,大規模なプロジェク トを対象とし,観測された数値データの異常がどのような要因によってもたらさ れたものであるのかを本手法を用いて明らかにできるかどうかを確認する.いず れの実験もクラスタリングアルゴリズムには k-means を用いている.これは, 大規模なデータに対して階層型クラスタリングを用いた場合,一般的に膨大な処 理時間がかかってしまうためである.各実験の詳細を以降で述べる. 5.1.1. 実験1 実験 1 では,特定の要因を探すのではなく,非プロジェクトメンバーである一 人の外部研究者が,事後分析によって対象プロジェクトをどれだけ把握できるか 確認する.対象となるプロジェクトは数人の学生による小規模なプロジェクトで あり,プロジェクト内でやりとりされた E メールと,開発に用いられたツールの ログから,そのプロジェクトの流れ・コンテキストを本手法によって抽出できる か確認する.対象プロジェクトの詳細を表 1 上部に示す. 5.1.2. 実験2 実験 2 では,観測されたグラフ変化の要因をメールアーカイブ分析によって明 らかにできるか確認する.対象はソフトウェア開発企業より提供を受けた保守フ ェーズのデータである(表 1 下部に詳細を示す). 対象プロジェクトのデータをプロジェクトリプレイヤで可視化したところ,図 19 7 に示すようなコード行数グラフの変化が 2 箇所発見された.通常,コード行数 は急激な変化は伴わず,推移的に変化する.しかし,グラフでは 2 箇所において グラフの急な変化が見られた.1 つはコード行数の急上昇,もう 1 つはコード行 数の急減少である.これら 2 つの原因について,メールアーカイブ分析を用いて 明らかにできるかを実験した.分析を行うのはプロジェクトに参加していない外 部研究者 2 名で,観測された 2 つのグラフ変化の原因について別々に 分 析し た . 20 コード行 数 急減少 急上昇 →日時 図 7. コード行数グラフの異常 表 1. 実験の詳細 実験 1 対象 学生によるオープンキャンパス用ゲームプログラム 開発プロジェクトのデータ 規模 小規模(開発期間 26 日・開発者 7 人) 被験者 1 人(開発に参加していない外部研究者) 実験 2 対象 ソフトウェア開発企業のデータ(保守フェーズ) 規模 大規模(データ収集期間約 500 日・開発者数 10 人以上) 被験者 2 人(開発に参加していない外部研究者) 21 5.2. 実験結果 5.2.1. コンテキストの抽出 実験 1 の結果,研究者は次に挙げる 3 つのコンテキストを明らかにすることが できた. コンテキスト 1. 小規模なミーティングの存在 対象プロジェクトでは開発に関するミーティングが 3 回行われている.ミー ティングはいずれも小規模なものであったた め,記録は残されていなかった. 研究者は分析された E メールアーカイブの結果の調査によって,ミーティング の存在を明らかにすることができた. コンテキスト 2. 開発中断期間の存在 対象プロジェクトはある一定期間,開発が中断されている.この期間は CVS コミットとバグレポートも中断されている.これらの現象は,研究者に対して 異常が発生していることを印象づけることとなった.しかし,中断の理由を明 らかにすることはできなかった. コンテキスト 3. 開発におけるメールの役割 メールの大半は開発スケジュールの調整や,コード修正のアナウンス,リソ ースのアップロードといった種々の通知に用いられていた.詳細な打ち合わせ のほとんどはコンテキスト 1 で示されたミーティングで行われていたと研究者 は予測できた. これらのコンテキストは 2 時間程度の精査によって明らかになった.以上の結 果から,研究者はプロジェクトリプレイヤとメールアーカイブ分析を用いたプロ ジェクトの精査によってそのプロジェクトの流れのみならず,背景に存在する数 値デ ー タに はあ ら われ な い様 々 なコ ン テキ ス トを 効 率よ く発 見 でき る こと が 確 認できた. 22 5.2.2. グラフ変化の原因抽出 (1) コード行数の急増原因 コード行数が急増している日時に存在するクラスタは 52 クラスタで,全要素 数(メール件数)は 9533 であった.クラスタの一部を表 2 に示す.52 のクラス タのうち,ソフトウェア開発に関連の深い名前であると被験者 A が考えたクラス タ(クラスタ名:“ソース,ライブラリ,ファイル,展開,スパン”)は 1 つであ った.当該クラスタに含まれる要素の数は 28 であったため,被験者はこれら 28 通のメールを調べた.これにより,被験者 A はコード行数急増の原因が“開発デ ータの中央集約化の為に行った CVS 環境の新構築”であるとわかった.更に被 験者 A は,何故開発データの中央集約化を行ったのかを調べるために,その前日 に存在するクラスタを調べた.急増した日に中央集約化が行われているのであれ ば,その原因はその日より過去に存在すると考えたためである.その結果,前日 に存在するクラスタから,中央集約化を行うことになった理由が“旧 CVS サー バのハードディスク障害”であることが判明した. (2) コード行数の急減少原因 同様にしてコード行数が急減少している日時に存在するクラスタを,被験者 B が調べた.該当日に存在するクラスタは 46 クラスタで要素数は 8250 であった. しかし,このクラスタの中から急減少の要因が含まれていそうなクラスタを,名 前で絞り込むことはできなかった.よって,被験者 B はクラスタを巡覧すること によって対象プロジェクトのコンテキストを精査した.その結果,コード行数急 減少の原因が“開発言語の変更に伴う不要ファイルの一斉削除”であることがわ かった. 23 表 2. クラスタリストの一部 クラスタ ID クラスタ名 23 リリース,データ,(人名), (業務内容),(人名) 65 (業務内容),パスワード,こと,ID,ログイン 68 障害,プロジェクト,(業務内容),(業務内容),対応 83 分類,バグ,データ,回答,担当 99 予定,(人名),(人名),連絡,(人名) 107 問い合わせ,管理,(人名),ファイル, (業務内容) 113 (業務内容), (業務内容),データ,確認,送信 117 ソース,ライブラリ,ファイル,展開,スパン 133 (人名), (社名),(人名),(地域名),開発 144 連絡,本日,ため,疲れ,休み 149 利用,規約,システム,連絡,(人名) 182 ファイル,添付,除去,説明,以外 215 事務所, (業務内容),データ, (業務内容),送付 245 (人名),(社名),(地域名),打ち合わせ,から 261 項目,定義,帳票,画面,ドキュメント 274 (業務内容),ファイル,クリック,ダウンロード,表示 313 印刷, (業務内容),ファイル, (業務内容),添付 24 6 考察 実験によって,提案するメールアーカイブ分析がソフトウェア開発プロジェク トのコンテキストを抽出できることを確認できた.しかしながら,実験 1 におい てプロジェクト中断の理由を明らかにできなかった点,実験 2 においてクラスタ 名で対象を絞り込めなかった点等,幾つかの問題が残った.コンテキスト抽出の 失敗要因は二つ考えられる.一つは,メールアーカイブに情報自体が存在しない ケース,もう一つはクラスタリング精度の問題である. 6.1. メールアーカイブに情報が存在しないケース 実験 1 の対象プロジェクトでは,そもそもメーリングリストの利用法がミーテ ィングの日時設定やリソースのアップロード報告等に限られていた.また,プロ ジェクト自体が小規模で短期間の開発であったため,実際に対面して会話を行う 機会が多く,メールを利用する必要が無かったこともコンテキスト抽出失敗の要 因として考えられる. 6.2. クラスタリング精度の問題 実験 2 では,コード行数急減少原因をクラスタ名から絞り込むことができなか った.これは,対象プロジェクトの規模に比べてクラスタリングの精度が荒く, 話題の分け方が大雑把になっていたからだと考えられる.実験で用いたクラスタ リングアルゴリズムは k-means であるが,k-means では分割したいクラスタの 個数である k 値を最初に指定しなければならない.実験 1 では,経験的に最もう まく話題を分割できる k 値を調べた.その結果,全要素数を 6 で割った値を k としていた.実験 2 においても同じ k 値の決定法を用いていたが,実験 1 とはプ ロジェクトの規模が異なるため,精度に問題が出たと考えられる.実験では,処 理時間の都合上 k-means のみを用いて分析を行っていたが,初期値を必要とし ない最遠隣法や Ward 法を用いることによって,この問題は解決できると考えら れる.しかし,階層型クラスタリングは一般的に膨大な処理時間が必要となるた め,主成分分析による次元数の削減などを試みる必要がある. 25 7 まとめ 本論文では,コンテキストを明らかにするためのメールアーカイブ分析手法を 提案し,分析手法の詳細について説明した.手法は形態素解析と TF-IDF を用い た特徴語抽出,ベクトル空間法を用いた類似度計算,クラスタリングアルゴリズ ムを用いたメールアーカイブの分類,時系列上へのプロットによるクラスタの可 視化によって実現される.本手法はソフトウェアプロジェクトの再現ツール プ ロジェクトリプレイヤの拡張モジュールとして実装した. 提案手法の有効性を確認するために,二つの実験を行った.実験 1 の対象は, オー プ ンキ ャン パ スの た めに 学 生に よ って 行 われ た タイ ピン グ ゲー ム プロ グ ラ ムの開発プロジェクトである.実験では,対象プロジェクトに参加していない外 部の研究者を被験者とし,本手法を用いて開発プロジェクトのコンテキストを抽 出できるかどうかを実験した.実験の結果,研究者がメールアーカイブ分析を実 装したプロジェクトリプレイヤを用いて,開発者のミーティングについての情報 や開発中断期間の存在,開発におけるメールの役割といった幾つかのコンテキス トを把握できたことを確認した. 実験 2 では,企業が行った開発プロジェクトを対象とし,事前に観測されたグ ラフの異常な変化が何故起こったのか,その原因を本手法によって明らかにでき るかどうかを実験した. 企業の開発データは非常にデータ数が多いため分析が 難しく,また多くの時間が必要である.実験 2 でも,実験 1 と同様にメールアー カイブ分析を実装したプロジェクトリプレイヤを用いて,外部研究者の手によっ てプロジェクトのコンテキストを明らかにできるかを実験した. 実験の結果, グラフ変化の原因となったハードディスクドライブの障害,CVS 環境の新構築, 開発言語の切り替えといった幾つかの非常に重要なコンテキストを,分析したメ ールのクラスタから明らかにすることができた. 本手法による分析結果の一部は研究者の能力に依存しており,話題内容を認識 するためのクラスタ名も一部不適切であった.今後,本手法をより良いものにす るための改善点として,クラスタリングの手法や,結果の表示についての見直し, クラスタ名として適切な単語を選定するための工夫等が挙げられる.例として, Speech Act を用いた E メールアーカイブの分類 [17] や,同じ単語であっても文 脈によって意味の異なる語を識別する手法 [18] の適用が考えられる.これらの 26 点について改善を行うことで,本研究の更なる有用性を期待できる. 27 謝辞 本研究を遂行するにあたり,大変多くの方々にご指導,ご協力を頂きました. ここに感謝の意を表させて頂きたいと思います.本当にありがとうございました. 奈 良先 端 科 学技 術 大 学院 大 学 情報 科 学 研究 科 ソ フ ト ウェ ア 設 計 学講 座 の飯 田元教授におかれましては,本研究の主指導教員として,終始本研究の全般に対 するご指導,ご協力を頂きました他,研究に対する姿勢や対外発表に関するご指 導,また,研究以外の場においても様々なアドバイスをして頂きました.心より 厚く御礼申し上げます. 奈良先端科学技術大学院大学 情報科学研究 科 データベース学講座 宮崎純助 教授におかれましては,副指導教員として,自然言語処理に関する具体的なご助 言や,研究発表におけるご指導を頂きました.深い感謝の意を表させて頂きます. 奈良先端科学技術大学院大学 情報科学研究 科 ソフトウェア設計学講座 小山 正樹教授におかれましては,副指導教員として,本研究の発表において新しい視 点からの貴重なご意見,ご指摘を頂きました.深く感謝いたします. 奈良先端科学技術大学院大学 情報科学研究 科 ソフトウェア工学講座 松本健 一教授におかれましては,本研究に対し様々なご助言,ご支援を頂きました他, 研究生活を送る上での心構えや研究のあり方について,多大なるご指導を頂きま した.心より,厚く御礼申し上げます. 阪南大学 経営情報学科 花川典子助教授におかれましては,本研究全般におい て,また研究生活に関わる様々な点について,長期に渡り,多大なご支援を頂き ました.心より,厚く御礼申し上げます. SRA 先端技術研究所 阪井誠様におかれましては,本研究の初期から手法に関す るご助言やご提案に多大な時間を割いて頂き,更に実験に必要なデータや情報の 提供を行って頂きました.心より,厚く御礼申し上げます. 奈良先端科学技術大学院大学 情報科学研究 科 ソフトウェア設計学講座 川口 真司助手におかれましては,本研究を進める上でのご指導はもちろん,日々の研 究生活においても多大なるご支援,ご協力を頂きました.心より厚く御礼申し上 げます. 奈良先端科学技術大学院大学 情報科学研究 科 ソフトウェア工学講座 上野秀 剛氏には,本論文を執筆するにあたって様々なご助力を賜りました.深く感謝い たします. 28 最後に,日々の研究生活において私を支えて下さった奈良先端科学技術大学院 大学 情報科学研究科の皆様,特に,ソフトウェア設計学講座,ソフトウェア工 学講座の皆様に深い感謝の意を述べさせて頂きます.皆様の励まし,尽力,支援 無くして,本研究を続けることはできませんでした.改めて,厚く御礼申し上げ ます.本当にありがとうございました. 29 参考文献 [1] 科 学 技 術 振 興 機 構 失 敗 知 識 デ ー タ ベ ー ス http://shippa i.jst.go.jp/f kd/Sea r ch [2] 畑 村 洋 太 郎 , 失 敗 学 のすすめ. 講 談 社 , (2000) [3] Bir d, C., Gour ley, A., D eva nbu, P., Ger tz , M. a nd Swa mina tha n, A.: Mining E ma il Soc ia l N et wor ks, In Pr oc e edings of the I nt er na tiona l Wor ks hop on Mining Soft war e R epos it or ies (2006) [4] Sca cc hi, W., Jens en, C., Noll, J. a nd Elliott , M.: Multi- moda l modeling, a na lys is, a nd va lida tion of op en sour c e softwar e develop ment pr oc ess es, In Pr oc eedings of the Fir st Int er na tiona l Conf er enc e on Op en Sour ce Syst ems, (2005) [5] Kimihar u Ohkura , K eita Goto, Nor iko Ha na ka wa , Shinji Ka wa guc hi, a nd Ha jimu Iida "Pr oject R epla yer with E ma il Ana lysis - Revea ling Cont exts in Softwa r e D evelop ment" , the 13th As ia -Pa cif ic Soft war e Engineer ing Conf er enc e ( APSEC2006), pp.453-460, (2006) [6] Mura kos hi, H., Ya ma mi, T., Shima zu, A. a nd Ochimizu, K.: Constr uction of Multi-Par ty Delib er ation Str uctur e Using Ma iling List in a Coop er a tiv e Wor k, 19th Int er na tiona l Conf er enc e on Comput er Pr oc ess ing of Or ienta l La ngua ges (ICCPOL'2001), pp. 359- 364 ,(2001) [7] D. Cubra nic, G. C. Mur phy, J. Singer , a nd K. S. Boot h, "Hip ika t, "A pr oject memor y f or soft wa r e develop ment " IE EE Tra nsa ctions on Softwa r e Engineer ing, 31(6):pp.446-465, (2005) [8] M. Ma tsushita, K. Sa sa ki, a nd K. Inou e, "Cox R: Open Sour c e D evelop ment Histor y Sea r ch Syst em", In Pr oc eedings of 12th Asia -Pa cific Soft wa r e Engineer ing Conf er enc e, Ta ip ei, (2005) [9] P. A. Wa gstr om, J. D. H er bsleb, a nd K. Car ley, "A socia l net wor k a ppr oa c h to fr ee/ op en sour c e soft wa r e simu la tion" In Pr oc eedings Fir st Int er na tiona l Conf er enc e on Op en Sour c e Systems, pp.16-23, (2005) [10] Sur vey of T ext Mining: Cluster ing, Cla ssific ation, a nd Retr ieva l. Mic ha el W. Berr y, (2003) [11] Ohira , M., Yokomor i, R., Sa ka i, M., Matsu moto, K., Inou e, K., Bar ker , M. 30 a nd T or ii, K.: E mp ir ica l Pr oject Monitor : A Syst em f or Ma na ging Soft wa r e Develop ment Pr ojects in R ea l T ime, Pr oc eeding of ISESE2004, pp. 37-38, (2004) [12] G. Sa lton a nd C. Buc kley, "T er m weighting appr oa c hes in automa tic t ext r etr ieva l", Inf or ma tion Pr oc essing a nd Ma na gement, Vol. 24(5), (1988) [13] G. Sa lton, A. Wong, a nd C. S. Ya ng, "A vector spa c e model for a utoma tic indexing", Commu nica tions of the ACM, 18(11), pp.613-620, (1975) [14] 神 嶌 敏 弘 , "データマイニング分 野 のク ラスタリ ング手 法 (1) - クラスタリング を使 ってみよう! -", 人 工 知 能 学 会 誌 , vol.1 8, no.1, pp.59-65, (2003) [15] 神 嶌 敏 弘 , "データマイニング分 野 のクラスタリング手 法 (2) - 大 規 模 データ への挑 戦 と次 元 の呪 いの克 服 - ", 人 工 知 能 学 会 誌 , vol.18, no.2, pp.170-176, (2003) [16] A. K. Ja in, M. N. Murty a nd P. J. Flynn "Da ta Clust er ing: A R eview" ACM Computing Sur veys, vol.31, no.3, (1999) [17] Willia m W. Cohen, Vitor R. Car va lho, a nd T om M. Mitc hell. L ear ning to Classif y E ma il into ``Sp eec h Acts'' . In Pr oc eedings of EMNLP 2004, pp. 309–316, Associa tion for Computa tiona l Linguistics, (2004) [18] Amr uta Pura ndar e a nd T ed Peder s en, Wor d Sens e Discr imina tion b y Cluster ing Cont exts in Vect or a nd Simila r ity Spa c es. In: Pr oc eedings of CoNLL-2004, pp. 41-48, (2004) 31