信学技報
TECHNICAL REPORT OF IEICE.

社団法人 電子情報通信学会
THE INSTITUTE OF ELECTRONICS,INFORMATION AND COMMUNICATION ENGINEERS

リビジョン情報と電子メールを用いたオープンソース開発向き
情報検索システム佐々木 啓†

松下誠†

井上 克郎†† 大阪大学大学院情報科学研究科コンピュータサイエンス専攻 〒 560–8531 大阪府豊中市待兼山町 1–3
E-mail: †{k-sasaki,matusita,inoue}@ist.osaka-u.ac.jp
あらまし

オープンソースソフトウェアの開発を行う際には，リビジョン管理システムや，電子メールを用いたメーリングリストシステムが用いられる．これらのシステムの履歴情報には将来の開発に活用することのできる情報が多く含まれている．しかし，それらの情報は膨大なものであるため，開発者が必要とする情報を的確に取得することは容易ではない．そこで，本研究では，開発者が必要とする情報の抽出とそれに関連するデータの表示を行うシステムの試作を行った．さらに，実際のオープンソース開発で用いられた版管理システムの開発履歴情報とメーリングリス
トアーカイブを用いて，本システムの評価を行った．その結果，本システムを用いることで，開発者は有益な情報を入手することが可能となり，現状の問題点が解決されることが確認できた．
キーワード

オープンソースソフトウェア開発，リビジョン管理，ソースコード検索

E-mail and Source Code Revision Information Retrieval System forOpen Source Software Development
Kei SASAKI† , Makoto MATSUSHITA† , and Katsuro INOUE†† Graduate School of Information Science and Technology, Osaka University
1–3, Machikaneyama-cho, Toyonaka-shi, Osaka 560–8531, Japan
E-mail: †{k-sasaki,matusita,inoue}@ist.osaka-u.ac.jp
Abstract In the case of open sourse software development, developers use Repository control system. and mailinglist system These system store development histories of the products. Divelopers can obtain a deeper understanding
about former development by reviewing an archive in the case of software development, and it is expectable thatthey help developers. But, it is not easy to retrieve the information from the stored information that developers
require. In this research, I establish software development supporting system for searching development history
information. Also, I applied this system to real data in open source development for applicable experimentation. Asa result, I confirmed this system enables developers to retrieve more useful information, and solve recent problems.
Key words Open Source Software Development，Revision Control，Source Code Searching

1. は じ め にルを用いたメーリングリストシステムを用いることが多くなっ

オープンソースソフトウェアの開発規模の増大に伴い, そのリポジトリと呼ばれるデータベースに格納して管理する．メー開発形態は多人数化, 分散化している．大規模なオープンソー

リングリストでは，開発者相互の意志疎通や進捗状況の報告な

スソフトウェア開発では，複数の開発者が互いにソースコードどが行われる．これらのシステムでは開発者が行ったプロダクを共有しながら同時に一つの開発作業に携わることが一般的

トへの変更履歴や送信した電子メールは全て個別のアーカイブになりつつある．またインターネットに代表されるネットワーとして保存されており，その履歴の中には，将来の開発に活用

ク環境の発展にともない，分散した多くの開発者が異なる場所することのできる情報が多く蓄積されている．ソフトウェア再で開発作業を行うことも多い．このよう複雑化しているソフト利用の際にこれらのアーカイブを閲覧することによって，以前ウェアシステムを効率よく管理するため，近年のオープンソーの開発についてより深い理解が得られ開発の手助けになる [1]．

スソフトウェア開発では，リビジョン管理システムや電子メーこのように，オープンソースソフトウェア開発を行う上で，過ている．リビジョン管理システムは，プロダクトの開発履歴を—1—

去に開発されたコードを参照することや再利用することは効率開発者が要求したキーワードを開発履歴データベースで検索し，的な手法であると言える．

キーを持つデータがあれば全て表示する．

しかし，蓄積された膨大な情報の中から，開発者が必要とする情報を的確に取得することは容易ではない．必要とするプロ（ 4 ） ファイルパス・電子メールリストを用いた検索開発者が，視覚的に開発履歴情報の構造を見ることで検索する．

グラムは複数のファイルやリポジトリに分かれて蓄積されてい（ 5 ） 関連情報検索る可能性もある．このため，開発者は参照すべきリポジトリやキーワード検索と同様で，開発者が要求した関連情報（開発者・ファイルの履歴を見れば良いかを知ることは困難となる．

更新日時など）を使ってデータを検索する．

本研究ではこの問題を解決することができるソフトウェア開本システムは，3 つの部分から構成される．(図 1 参照)

発支援環境の構築を行う．具体的には，先に私の所属する研究• 類似コード検索部 (CoDS 部)

グループにおいて作成されたソースコード修正支援システム• 開発履歴データベース管理部 (SPxR 部)(CoDS) [7] とオープンソース開発支援のためのソースコード及びメールの履歴対応表示システム (SPxR) [5] を統合すること• データ表示部
類似コード検索部では，(1) の機能を実現し，開発履歴データにより，開発者が必要とする情報の抽出とそれに関連するデー

ベース管理部では残りの (2)(3)(4)(5) の機能を実現する．デー

タの表示を行うシステムの試作を行った．本システムは特定のタ表示部は，上の二つの部分と開発者を結ぶインターフェイス

情報を用いることによって，該当するファイルや電子メール情である．

報とそれに関連する情報を検索することができるシステムであり，それらの情報を提供することでオープンソースソフトウェ

g_hmiYkml

ア開発の支援を行う．
また，実際のオープンソースソフトウェア開発で用いられたリビジョン管理システムとメーリングリストアーカイブを用いuserて，本システムの評価を行った．その結果，本システムを用いることで，開発者は有益な情報を入手することが可能となり，ウェア開発支援環境を構築することで，効率よく開発作業がJLKNMPOLQSRUTWV

zm{ DBg_hjiPkmlonApq123 "ZUM.[OLQS\]RY[_X ^`La.bc.dNe:Xf
"0#$%4#$  &'(*),+"-.

! "#$% &'(*),+"-/"#$%
rts_u_v DB w_x_y

CVS 5.68789:5

実現可能となり，開発者の負担を軽減し，より質の高いソフトウェアを開発するための基礎とすることができると考えられる．

Co R Server(CGI main) 

現状の問題点が解決されることが確認できた．
以上のことから本システムを用いたオープンソースソフト   |PM }0OLQL~.RW:XN:
`LaPbc.deXf
U:;=<?>A@CBED8@GF=HGI

図 1 システム構成図

2. 節では，システムの説明を行う．3. 節で実装について述べる．4. 節では，そのシステムに対して検証を行う．最後に，5.
節で本研究のまとめと今後の課題について述べる．

2. リビジョン情報と電子メールの検索システム

2. 2 類似コード検索部 (CoDS 部)
この部分は，類似コード検索 DB，データベース作成ツール，字句解析ツール，トークン比較ツールの 4 部分からなる．利用者はあらかじめ版管理システムのリビジョン情報から類似コー

本研究では，版管理システム CVS を用いたオープンソース

ド検索 DB を作成しておく．作成後，入力したソースコード片開発を対象として，CVS の履歴情報とメーリングリストからは字句解析をすることでトークンに分解する．類似コード検索

開発者が必要とする情報を容易に取得することの出来る開発開DB 中の差分情報との類似度を計測し，一定以上の類似度を持発支援環境の構築を目指している．本システムを用いて，特定つソースコードの情報をデータ表示部へ渡す処理を行う．のソースコードや開発履歴情報から，それらに関連する情報を

2. 2. 1 字 句 解 析

入手することが出来れば，開発にかかるコストを軽くすること

字句解析では，ソースコード片をプログラミング言語の文法が出来ると考える．本節では，リビジョン情報と電子メールのに従って，整数で表されたトークン列に変換する．ソースコー

開発履歴情報検索システムについて説明する．

ド中の空白とコメントは無視する．さらに，ユーザ定義の変2. 1 システムの機能と構成数，関数，型等は名前が異なっていても等価なトークンとみな本システムでは，以下の方法で開発者が必要とする開発情報す．言語仕様やライブラリ等で定義されている手続き・関数等とその関連情報を検索することができる．の名前についてはそれぞれ別のトークンに変換する．これらの（ 1 ） ソースコードを用いた検索

トークンと予約語を合わせて，本論文では「キートークン」と開発者が手持ちのソースコード片を入力することで，類似する呼ぶ．出力の際には，整数で表されたトークンの番号に加え，ソースコードを検索し，該当する CVS 情報を表示する．

そのトークンが出現する行番号も付加する．当該ソースコード（ 2 ） ファイル・ディレクトリ名検索

片に出現するキートークンの行番号もこの部分に付加する．

検索対象となるリポジトリを選択した後で，該当するファイル・

2. 2. 2 トークン比較

ディレクトリを検索する

ソースコードの比較部分では，上記の字句解析によって変換（ 3 ） キーワード検索

されたトークンを 1 つの文字とみなし，文字列の一致問題を解—2—

くことで，類似コードの検索を行う．

2. 5. 1 類似コード検索データベース

その際に，CoDS [7] 同様，類似部分を抽出する系列比較アル類似コード検索 DB は，開発者が指定したリポジトリ内にあゴリズムとして，” 局所アラインメント [4]” を用いている．局

るすべての C 言語のソースファイルから以下の情報を収集する．

所アラインメントは，与えられた 2 つの系列の中のそれぞれの（ 1 ） ファイル名 F

部分系列のうち等価で最長のものを 1 つ求める問題である．等

ファイルが一意に特定できるように，リポジトリ内のソース価な部分系列は，完全に一致している必要はなく，異なる要素ファイル名を，フルパスで取得する．

が存在してもよい．

（ 2 ） リビジョン番号の対 p,q

2. 2. 3 検索効率の向上

1 のどのリビジョン間における変更の情報であるかを特定する

局所アラインメントは時間計算量が 2 文字列の長さの積のための情報である．p の次のリビジョンが q である．

オーダーと大きく，膨大な回数の比較を行う場合，実用的な時（ 3 ） q のコミット日時間で検索が行われない．そこで，トークンの比較を時間効率よリビジョン q のコミット日時の情報である．

く行うため，利用者は，入力としたソースコードの中で重要と（ 4 ） q のログメッセージ

思うキートークンを「特性キートークン」として指定する．指コミットログは，直前のリビジョンからの差分を自然語で記定がない場合は，利用者から入力されたソースコード片の中述したものであり，検索結果が目的としているものであるかどの全てのキートークンを特性キートークンとする．なお，キーうかを利用者が判断することができる．

トークンが含まれていないソースコード片については，アライ（ 5 ） リビジョン p において，次のリビジョン q までに変更ンメントを求める対象としない．

された部分（前後の数行を含む））に関する差分情報 c(F, p, q)

2. 3 開発履歴データベース管理部 (SPxR 部)

ソースコード片を検索する際，入力されたソースコード片 I とこの部分は，CVS 情報管理部，電子メール情報管理部，統データベースのこの部分をトークン単位で比較する．その検索合情報管理部の 3 つの部分に分けることができる．それぞれの効率化のため，c を字句解析（2. 2. 1 節参照）し，トークンの部分はデータベース (DB) とデータベース作成ツールからな列に変換したものを格納する．

る．利用する際には，あらかじめ版管理システム CVS と，電2. 5. 2 CVS 情報データベース

子メールのアーカイブから情報を取得しそれぞれデータベース

CVS リポジトリからリビジョン情報を取得し，CVS 情報デー化する．また，それらの統合情報を抽出して統合用データベータベースを作成する． CVS の固有情報は RCS 形式のリビジョスを作成し管理する．データ表示部で検索する際にそれらの情ン情報を解析することで取得する．

報を開発者に提供することで，開発者の作業を支援する．

データベース内のそれぞれのデータ構造は図 2 の通り．

2. 4 データ表示部
この部分は開発者から検索要求を受けると履歴データベースと連結し，要求されたデータを表示する．

2. 4. 1 類似コード検索結果表示
検索結果を表示するのに必要な情報は，以下の通り．
（ 1 ） ファイル名とリビジョン番号の組 (F , p, q)

図 3 mail 情報データベース構成図
図 2 CVS 情報 DB 構成（ 2 ） q のコミット日時・更新者・ログメッセージ（ 3 ） 入力ソースコード I と類似している，リビジョン p における部分トークン列

内部識別番号は，データベース作成時に各レコードごとに割り与える個別の識別番号．ファイルパス，リビジョン番号は，2. 4. 2 CVS・電子メールの開発履歴情報表示

CVS 情報の中から特定の情報を指定するために用いる情報でこの部分は開発者が，直接 CVS リポジトリのディレクトリある．更新作業者，更新日時は，CVS のファイルのコミットし構造と電子メールのリスト一覧を見て検索することが出来る．

た更新者とその日時である．キーワードは，リビジョン情報に開発者が何らかの CVS 情報・電子メール情報 I1 をキーとして含まれているログメッセージを解析し，出現頻度が高いファイ与えると，SPxR 部の CVS 情報 DB・電子メール情報 DB 内ルパスを取得する．関連情報識別子は，CVS 情報の中で「同一で I1 と一致する情報を検索する．該当するものがあればその時間に更新された」「同一更新者に更新された」「キーワードが一覧を表示する．その際，統合情報 DB からそれに関連する開同じ」などの共通点がある場合，それらの内部識別番号を関連

発情報 I10 があれば，それも表示する．表示された情報をキー識別番号として登録する．

I2 として，さらに必要な情報を絞り込むことも可能である．
2. 5 データベース

2. 5. 3 電子メール情報データベース
電子メールアーカイブに蓄積された電子メールを解析し，必本システムは 4 つのデータベースを用いて情報の検索を行う．

要な情報を抽出していく．ここで対象になる電子メールは以下• 類似コード検索データベースの 2 種類に分けられる．

• CVS 情報データベース• コミットメール• 電子メール情報データベース

CVS リポジトリのリビジョンが更新された際に，CVS から送• 統合用データベース

信されるメール．この中には更新されたリビジョンの更新情報—3—が記述されている．

• 議論メール様に基づいて，トークンのリストを出力する．本字句解析ツー
ルは C 言語を用いて実装を行った．

コミットメール以外の全ての電子メール．開発作業に関連する

トークン比較ツール (mathcing.c,alignment.c)

話題が記述されているため，開発作業の内容理解に役立つ．

入力された 2 つのトークン列 S， T の間でアラインメントをデータベース内のそれぞれのデータ構造は図 3 の通り．

行い，最大のスコアと，マッチしている部分の（トークン列 T

内部識別番号は，データベース作成時に各レコードごとに個別の元のソースコード片における）行番号の範囲を出力する．Cに割り当てられる識別番号．送信者，送信日時は，電子メール言語で実装している．の送信者名と送信日時である．サブジェクトは，ファイルの概3. 2 開発履歴データベース管理部

要を表すもので，容易にメールの内容をチェックできる情報．

ツールはすべて Perl 言語で実装し，DB は，PostgreSQL と，キーワードは，電子メールアーカイブ内のログメッセージを解BerkeleyDB を利用した．設定ファイル (.commsysconf) は読析し，出現頻度が高いファイルパスや単語を取得する．関連情み出し開始するルートディレクトリなどを管理する．

報識別子は，コミットメールに対する返信メールなど，ある電• CVS 情報生成ツール (cvsinfogen3.pl)

子メールと関連のある電子メールに対してそれらの内部情報識

ルートディレクトリから，CVS リポジトリ内のディレクトリ別子をお互いに関連情報識別子として取得する．更新作業者，構造を再帰的に辿って，各 RCS ファイルの解析を行い，リビ更新日時，更新ファイルパス・リビジョン番号はコミットメー

ジョン情報を取得する．その情報を CVS 情報 DB に登録する．

ルにのみ含まれる情報で，それぞれ CVS 情報と関連を調べる際に用いる．

• CVS 情報 DB
開発者から検索キーを受けると，ハッシュデータベースの中で2. 5. 4 統合情報データベースそれと一致する内部識別番号の集合を探す．その内部識別番号

上記の CVS 情報 DB と電子メール情報 DB の情報の情報ををもとに PostgreSQL から各レコードが持つ情報を表示する．

それぞれのデータベースから取り出して比較し，互いに関連性があればその情報を統合し，統合用データベースに格納する．

• 内部識別番号
電子メール (CVS) 情報 DB の内部識別番号．関連する CVS(電子メール) 情報があればその内部識別番号を登録する．

• 関連識別番号
CVS(電子メール) 情報 DB の内部識別番号．関連する電子メー
ル (CVS) 情報があればその内部識別番号を登録する．
電子メール情報と CVS 情報の関連性は以下の判断基準をもとに判定するようにした．
（ 1 ） 「更新日時」が一致する• 電子メール情報生成ツール (mailinfogen3.pl)
ルートディレクトリから，電子メールアーカイブのディレクトリ構造を再帰的に辿り，解析を行い，電子メール情報を生成して，電子メール情報データベースに登録する．

• 電子メール情報 DB
CVS 情報 DB と同様．
• 統合情報生成ツール (integinfogen3.pl)
CVS，電子メール情報 DB から情報を取得して，両者のデータを比較する．相互に関連を持つ情報であれば，両者を結合して統合情報を生成し，統合情報 DB に登録する．

• 統合情報 DB（ 2 ） 「ファイルパス」と「リビジョン番号」が一致する

CVS 情報 DB と電子メール情報 DB の関連する一方の内部識（ 3 ） 「キーワード」が一致する

別番号を検索を行うと，それをもとに関連する CVS 情報 DB・

この DB は CVS と電子メールの関連を知るためだけに用い電子メール情報 DB の内部識別番号を返す．

られ，詳しい情報はそれぞれの DB から抽出する．

3. システムの実装

3. 3 データ検索・表示部
データ検索・表示部では開発者からの検索要求を受けて，類似コード検索部・開発履歴データベース管理部に検索を依頼し，これまで述べた手法に基づいてシステムの実装を行った．

開発者が必要とする情報を参照する．このシステムの実装は全3. 1 類似コード検索部て Perl 言語で行った．

類似コード検索部は，C 言語で書かれたソースコードを対象とし，版管理システムとして CVS を用いていることを前提と

4. 適 用 実 験している．また，内部で RCS のコマンドを呼び出しているた

本節では実際にシステムを動作し，結果について考察する．

め，RCS がインストールされている必要がある．

4. 1 実 験 対 象

データベース作成ツール (getdb.pl)本システムの適用実験を行うために，実際のオープンソース指定されたディレクトリ以下にある C 言語のソースファイル

開発の中からオープンソフトウェアの代表例である FreeBSD [9]の履歴ファイルに関してデータベース作成の処理を行う．また，の開発をモデルとして仮想的なオープン開発環境を用意する．

Perl でデータベースを扱うルーチンは，ハッシュとファイルを• CVS リポジトリ結びつけることができるように GNU GDBM 1.8.0 を用いる．

FreeBSD の CVS リポジトリを複製した．ファイル総数 51379,

C 言語で実装を行った．

リビジョン総数 511054 を対象とする．

字句解析ツール (scanner.c)

C 言語で記述されたソースコードを入力とし，上で述べた仕• 電子メール
2001 年の FreeBSD のメーリングリストアーカイブを複製した．
—4—

packet_put_string(response_stren(response)

49736 件の電子メールを対象とする．
4. 2 実験の概要→ ssh_put_password(response) は 記 載 し て あ る が ，関 数本システムの評価実験として以下の２つの実験を行った．

ssh_put_password についてはこれ以上記載されていない．

• 検索実例に基づいたデータ検索

そこで，関連情報の検索を行う．ここで考えられる検索方法

利用者が FreeBSD 開発を行っていると想定して，過去の修正としては類似コード検索により出力された結果を用いる. 検索

事例をもとに類似コードとその関連情報を検索を行う.

方法として以下の 4 つを考えられる.

• 検索速度評価（ 1 ） 開発者 green による検索

CoDS では検索に一つのキートークンしか用いなかったが，本（ 2 ） 更新日時が 2001/03/20 02:06:40 前後のファイル検索

システムは複数のキートークンを用いることで類似度を測定す（ 3 ） それに伴うコミットメール情報の検索る範囲を絞り込むことができる．この部分について評価する．

（ 4 ） キーワード「openssh」による検索

4. 3 検索実例に基づいたデータ検索

その結果，(2) の同時間帯にコミットされたファイル sshcon-

今，利用者は OpenSSH のパスワードの送信を行うソース

nection.c の中に関数 ssh put password の内容が記載されていコードの開発を行っているとする．このコードはパスワードをる部分を検索できた.(図 10，図 11 参照)

ソケットで送信する際にパスワードの長さもデータとして送信
void
ssh_put_password(char *password){
int size;char *padded;してしまう．そのため，これを用いたパスワード攻撃が行われる可能性が指摘されている．利用者はその問題点を解消する

size = roundup(strlen(password) + 1, 32);
padded = xmalloc(size);memset(padded, 0, size);
strlcpy(padded, password, size);
packet_put_string(padded, size);memset(padded, 0, size);
xfree(padded);

ためにパケット送信の際に長さを隠蔽子して送信している利用例を検索する. なお，入力として与えるソースコードは以下の通り．

}

図 9 関数 ssh put password

if (i != 0)
error("Permission denied, please try again.");password = read_passphrase(prompt, 0);
packet_start(SSH_CMSG_AUTH_PASSWORD);
packet_put_string(password, strlen(password));memset(password, 0, strlen(password));xfree(password);¡¡ ¡¡packet_send();packet_write_wait();

図 4 入力ソースコード

上のソースコードを用いて類似コードの特定を行い．その関連情報を参照することでバグ修正に役立てるものかどうかを検証する．類似したソースコードは複数存在した．(図 7 参照)
その中で複数の類似コードが検索された検索結果の一つとしてファイル sshconection1.c-リビジョン 1.8(更新者：green) で
図 5，図 6 のような類似コードが検索された．
Make password attacks based on traffic
analysis harder by requiring that"nonechoed" characters are still echoedback in a null packet, as well as pad
passwords sent to not give hints to thelength otherwise.

図 5 コミットログ

error("Permission denied, please try again.");password = read_passphrase(prompt, 0);
packet_start(SSH_CMSG_AUTH_PASSWORD);
ssh_put_password(response);* memset(password, 0, strlen(password));xfree(password);¡¡ ¡¡packet_send();packet_write_wait();

図 6 類似コード

図 10 更新日時間帯による検索

図 11 関数 ssh put password

本システムを用いて実例に基づいた適用実験を行った結果，類似コードによる検索で修正部分の特定が可能となることが分かる．しかし，その情報だけでは完全に利用者の要求を満たすことはできなかった．そのため関連情報の中から必要となる情報を取得することができた．

4. 4 検索速度評価
ここでは 3 つの類似検索データベースに対し，3 つのソースコードを与えて検索時間の計測を行った．表 1 のデータを評価に用いた．これは FreeBSD の CVS リポジトリ内のソースコードについての情報を取得したものである．
デ ー タ 習 得 ファ 差分数 総ファイル数
イル数

図 7 検索結果の例

図 8 差分の表示

src/crypto/openssh

676382

src/usr.bin

763

18403

251
827

src/contrib

318

31542

5395

表 1 データベースに用いたリポジトリに関するデータコミットログから「パスワード送信の際に長さが分からないように送る」と記述してあることから，利用者が必要とする情報だといえる. しかし，中身を見ると関数の変更

また，入力として与えたソースコード片 X・Y・Z に関するデータは表 4 に示す．特性キートークンを変えて計測する．

—5—

行数 トークン数でいるため，入力として与えるキートークンが間違っていれば，特性キートークンX

5

28 (if),(if,return),(if,return,fopen)

利用者が本当に必要としている情報を切り落としてしまう可能Y

25

134 (if),(if,return),(if,return,fopen)性がある．今後，文字列一致の計算方法を改良することにより，Z

38

206 (if),(if,return),(if,return,fopen)

情報全体の検索時間を速くすることによりさらなる改善が見込

表 2 与えた入力に関するデータ

まれる．

XYZX

openssh32

3232

openssh 10 18 20

usr.bin55

7480

usr.bincontrib

111 113 191

contrib

表 3 検索の所要時間 (if)YZ

5. ま と め

20 27 30

本研究では，オープンソースソフトウェア開発で蓄積された

47 59 67

膨大なソフトウェアプロダクトの履歴を開発者が有効に利用で表 4 検索の所要時間 (if,return)

きることを目的とし，先に私の所属する研究グループでこれらの問題点を解決するために開発されたソースコード修正支援シX

YZ

openssh2

45

usr.bin7

9 10

contrib

9 14 15

表 5 検索の所要時間 (if,return,fopen)

ステム（CoDS）と，オープンソースソフトウェア開発支援のためのソースコード及びメールの履歴対応表示システム（SPxR）の統合を図り，新システムの実装を行った．
また，実際のオープンソースソフトウェア開発で用いられるデータを用いて本システムの実験を行った．その結果，本シス以上のデータを用いて類似コード検索の速度の検証を行った.
単位時間は全て秒である.

CoDS では，入力として与える特性キートークンに出現頻度が少ないものを用いると速くなることが分かっている [7]．本シ
ステムでは，特性キートークンを複数個用いて，比較対象の範囲を絞り込んだ結果，さらに検索速度が上昇することが分かる.

4. 5 考察

今回の適用実験から，利用者は手持ちのコードを用いることで類似した部分の情報を検索することができることが分かる．
また，情報の関連情報を検索することにより，そのプロジェクトの全体に対する理解を深めることができることが分かる．
情報検索を容易にするには, 基本情報の特定が必要である. そのために，利用者自身が情報を絞り込む作業が必要となる．しかし，適用実験や開発途中の利用例からソースコードやキーワードを用いて情報を絞り込めば，そこから関連情報を検索することが出来る．また，コミットメールや同一更新者・同一時間帯に保存された開発履歴は関連性が強いことも確認できた．
一方で解決に至っていない部分も存在する．たとえば，キーワード検索はデータ作成の際にコミットログやメールの内容に大きく影響を受けるので，必ずしも有用な検索ができるとは限らない．また，表示された情報が全て利用者の求める情報であるとは限らないため，多くの情報に捕らわれて検索を繰り返していくうちに本来必要な情報を見落としてしまう恐れもある．
キーワードの問題はデータ取得の方法を改善したり，あるキーワードを持つファイルに対して他の情報で関連性を持つと思われるファイルも同時に表示できるようにすることで改善できると考える．また，キーとして与える情報を複数にすることにより一度に表示する情報の精度を上げることにより情報の見落としを防ぐことができるようになる．今後，これらの点を改善できればさらなる開発支援が期待できる．
検索速度においては，CoDS に対してさらに情報を絞り込むことにより，本システムでは検索速度が上がることを確認できた．しかし，この方法は始めに検索対象となる範囲を絞り込んテムは大規模なオープンソースソフトウェア開発に適用した場合でも実時間で動作し，実用的であることを確認した．さらに，本システムを用いることにより，開発者が必要とする情報を提供することが可能になることを確認した．
本システムの改善点としては実行速度の向上や関連情報の充実などが挙げられる．実行速度の向上については，検索手法のさらなる改善やデータベースを効率的に構築することが挙げられる．関連情報の充実については，関連性の有無だけではな
く，情報のスコア付けを行う手法を用いることや検索方法を増やすことなどが考えられる．これらの改善点を踏まえてオープンソースソフトウェア開発支援用の検索システムとしての充実を目指し，オープンソースソフトウェア開発環境支援に貢献することを目指す．
文

献[1] Peter H. Feiler, “Configuration Management Models inCommercial Environments”, CMU/SEI-91-TR-7 ESD-9TR-7, March, 1991.
[2] Karl Fogel, “Open Source Development with CVS”, The
Coriolis Group, 2000.
[3] 藤原晃, “ソースコード間の関係を用いた再利用性評価手法の提案”, 情報処理学会研究報告, 2002-SE-136, Vol.2002, No.23,
pp.155-162, 2002.
[4] Dan Gusfield, “Algorithms on Strings, Trees, and Sequences”, Cambridge University Press, 1997.
[5] 石川武志, 山本哲男, 松下誠, 井上克郎, “ソフトウェア開発時における版管理システムを利用したコミュニケーション支援システムの提案”, 情報処理学会研究報告, 2001-SE-133, Vol.2001,
No.92, pp.23–30, 2001.
[6] 鯉江英隆, 西本卓也, 馬場肇, “バージョン管理システム (CVS)の導入と活用”, SOFT BANK, December, 2000
[7] 田原靖太, “既存ソフトウェアの変更履歴を利用したソースコード修正支援手法の提案”, 情報処理学会研究報告, 2002-SE-136,
Vol.2002, No.23, pp.57-64, 2002.
[8] 寺口正義, 松下誠, 井上克郎, “バージョン間の差分を利用したデバグ手法の提案”, 電子情報通信学会技術研究報告, SS99-52,
pp.17–24, 2000.
[9] The FreeBSD Project, The FreeBSD Project,
http://www.freebsd.org/.
[10] 山本 哲男, 松下 誠, 井上 克郎, “バージョン管理ファイルシステ
ムを用いた保守支援ツールの提案”, 電子情報通信学会技術研究
報告 Vol.99, No.164, SS98-23, pp. 65–72, 1999.7.9.

—6—