日本ソフトウェア科学会第 34 回大会 (2017 年度) 講演論文集

Codosseum: OSS プロジェクトモニタリング Webサービス
上村 恭平

中才 恵太朗

松本 健一

飯田 元

大神 勝也

畑 秀明

一ノ瀬智浩

ソフトウェア工学において，ソフトウェアの開発状況やソフトウェアの安定性などの理解を促すための，開発履歴データを可視化する試みが多数行われている．可視化されたデータは，オープンソースソフトウェア（OSS）を開発，あるいは活用する際の指標として活用される．しかし，これまでに提案されている可視化の仕組みは独立しており，利用者は独自にデータを収集し，可視化システムに入力することで活用する必要がある．そこで，我々は収集した OSS プロジェクトの開発データの分析及び可視化を行い，提供する Web サービスである Codosseum を開発した．本論では Web サービスに求められる要件の整理及び，実際に構築したシステムについて説明する．

1 はじめに2 Codosseum の目的

ソフトウェアの開発状況や安定性の理解を促すこと

Codosseum は，OSS をモニタリングし，開発へのを目的に，開発に関わる情報の可視化に関する多数の参加やプロダクト利用あるいは研究対象の収集を行研究が行われている．このような可視化された情報う際の指標を提供する．開発においては以下を目指しは，OSS のプロダクトを利用する際や，OSS の開発ている．に携わる際の指標として利用される．しかし，既存の• 研究成果の展開

可視化を目的としたシステムは独立しており，利用者• GitHub 以上にリッチな情報の提供

は個別に対象プロジェクトを可視化し，確認する必要• 健全かつ活発なソフトウェア開発への貢献がある．

研究において提案，開発したツールや可視化システ

我々はこれまで，Kataribe [3, 9] という Web サー

ムなどは，それぞれ独立に公開するだけでは使われにビスを開発，公開してきた．これは，historage [5] とくい．特にソフトウェア開発プロジェクトの分析といいう，メソッドレベルでの版管理できるリポジトリのう同一の目的をもつ研究成果を同じ Web システムでホスティングするサービスであった．この Kataribe

サービスとして提供することで，研究者だけでなく実を発展させ，可視化機能の追加やメンテナンス性の務者にも研究成果を展開しやすくなると期待できる．

強化などの拡張をし，Codosseum という新しい Webサービスとして提案，公開する †1 ．

一方，研究としては発表しにくいサービスや分析であっても，それらが GitHub などになく，有用であれば実装し，提供したいと考えている．目指すべきところは，健全かつ活発なソフトウェア開発への貢献であり，研究などを実開発へ展開する実験の場である．

Kyohei Uemura, Keitaro Nakasai, Katuya Ogami,
Hideaki Hata, Ichinose Tomohiro, KenichiMatsumoto, Hajimu Iida, 奈良先端科学技術大学院大学,
Nara Institute of Science and Technology.
†1 Codosseum: http://codosseum.naist.jp/

現在の実装で展開を試みているのは以下である．

• メソッドレベルの版管理システム historage [5]．
メソッドレベルの不具合予測などへの応用がある [4]．

• 人口ピラミッド可視化 [7, 8]．

以降，各要件について詳細を述べる．

• ソースコード都市可視化 [6]．

3. 2. 1 データの最新性

こうしたリポジトリや可視化といったデータや機能

Kataribe で提供していたのは，ある時点で GitHubを Web サービスとして統一的に提供することで，誰からクローンしたデータであった．しかし，OSS のもが Web ブラウザから手軽に利用することができる

多くは日々開発が進められており，変更が加えられてようにし，実際のソフトウェア開発への支援基盤とないる．そのため，提案システムで可視化するデータがるとともに，研究のプラットフォームとなることを目

古いまま更新されなければ，実際のソフトウェア開発指す．

への支援基盤として利用することができない．したがって，本研究で提案するシステムには，OSS の開

3 システムに求められる要件発の進捗に従い，可視化する対象のデータを更新し，本章では本研究において提案システムを開発す最新の情報を提示することが求められる．

るにあたり定めた要件について述べる．まず，先行

3. 2. 2 サービスの継続性研究で開発した Kataribe について述べる．その後，前述のように，Kataribe は既存の OSS である git-

Kataribe での問題点を踏まえて定めた要件についてlab を改変することで実現していた．しかし，この改説明する．

変はシステム全体への影響が大きく，gitlab がバージョンアップした場合に，その変更内容を反映するの

3. 1 先行研究での開発が困難であり，セキュリティ対策のため必要なアップ

我々はこれまでの研究において細粒度なソフトウェデートの適用も困難であった．継続してサービスを提アリポジトリをホスティングする web サービスであ供するためには，セキュリティ対策などのアップデー

る Kataribe を開発した．Kataribe は 1 つのプロジェ

トは必要不可欠である．従って，本研究で提案するシクト毎に 2 種類のソフトウェアリポジトリを扱う．1

ステムには，継続したサービスの提供のため，利用すつはファイル毎に変更を記録している，標準的な git

る OSS などには極力手を加えず，アップデートへのリポジトリである．また，それに加え，メソッド単追従性を高める必要がある．

位で変更を記録した git リポジトリである historage

3. 2. 3 機能拡張の容易性を提供している．これらの 2 種類のリポジトリを，前項と同様，gitlab を改変してシステムを構築して600 件のプロジェクトを対象に構築し，公開している．

いるため，Kataribe の機能の追加時には，gitlab 全

Historage は標準的な git リポジトリを変換すること体のコードを把握し，他の機能と干渉することがないで構築するが，これには時間がかかるため，あらかじよう調査するなどの作業が必要であった．これらの作

め別環境で構築したデータをシステム上に転送して業には労力を要し，後から新しい機能を拡張するのがいる．これらのシステムは，OSS で開発されている困難であった．

git ホスティングサーバである gitlab を改造することで開発した．

本研究で提案するシステムは，実際のソフトウェア開発の支援に利用することに加え，ソフトウェア工学における研究成果を活用するためのプラットフォーム

3. 2 今回の開発において定めた要件とする目的がある．そのためには，システムへの機能システムを開発するにあたり必要な要件を，先行研追加が容易に行える必要がある．

究における Kataribe の開発の経験も踏まえて，以下のように整理した．

• データの最新性• サービスの継続性• 機能の拡張の容易性

4 提案システムの機能と実装
4. 1 システム概要
図 1 にシステムの概要図を示す．提案システムは，フロントエンドサーバと計算サーバ，及び 2 つのリcodosseum
フロントエンドサーバ

計算サーバ

リポジトリクローン••••

httpサーバ
データベースHistorage変換
可視化用メトリクス計算

git
ホスティングサーバ

historage
ホスティングサーバ

git
リポジトリ

historage
リポジトリ

図1

公開

Codosseum の概要図

図3

Codosseum のダッシュボードショットである．このページでは可視化情報が提供されているプロジェクトの一覧を表示する．また，ファイル数やコミット数，コミッターの人数，及び利用されている言語などのプロジェクトの概要も合わせて表
図2

Codosseum のプロジェクト一覧示している．プロジェクト一覧からプロジェクトをクリックすることで，そのプロジェクトのダッシュボーポジトリホスティングサーバで構成される．システムドページに遷移する．

は，まず，計算サーバが提供する対象となる開発デー

ダッシュボードページの一例を図 3 に示す．ダッタを GitHub から収集する．計算サーバは GitHub

シュボードの上部には，元の GitHub へのリンクや，からクローンした git リポジトリを historage に変換

historage を提供するリンクを表示している．加えて，し，元の git リポジトリと historage をそれぞれリポ

後述する可視化機能による可視化データも表示されジトリホスティングサーバに登録する．また，git リる．可視化機能はダッシュボード上に実装されるもの

ポジトリと変換した historage を分析し，計算した可と，別ページで実装し，ダッシュボード上にはリンク視化に用いるメトリクスをフロントエンドサーバ上ののみを表示しているものがある．

データベースに登録する．フロントエンドサーバは，フロントエンドサーバの機能は Python を用いたデータベースに登録されているデータをもとに web

Web アプリケーション開発フレームワークであるページを動的に生成し，http を通じて公開する．

Pyramid を採用した．Pyramid のテンプレート機能

以降，各サーバの動作および構成について詳細を述べる．

により，各ページはアクセスされた際にデータベースからデータを読み込み，動的に生成される．データベースには sqlite3 を利用した．

4. 2 フロントエンドサーバ
フロントエンドサーバはプロジェクト一覧ページの4. 3 リポジトリホスティングサーバ

表示および，リポジトリ毎のダッシュボードページをリポジトリホスティングサーバは，ソースコードの有する．図 2 はプロジェクト一覧ページのスクリーン

標準的な git リポジトリを提供するものと，それを変換した細粒度なリポジトリである historage を提供するものの，2 つが存在する．標準的な git リポジトリを提供するサーバは，システム内部の可視化機能で利用することを目的としたもので，直接外部へ公開することを目的としたものではない．一方，historageを提供するサーバは，システム内部で利用に加え，historage を開発者や研究者へ提供することも目的としている．
リポジトリホスティングサーバには OSS で開発さ図4rocat のスクリーンショットれている gitlab を採用した．先行研究では，標準のgit リポジトリと historage の 2 種類のリポジトリを1 つのサーバで公開するために，gitlab を改変して利5 可視化機能用していた．本論で提案するシステムでは，それぞ5. 1 ソースコード都市れのリポジトリ毎にサーバを分離させることで，改ソースコードの可視化として，都市をメタファとし変することなく gitlab を利用している．これにより，た可視化システムの CodeCity というものが提案されgitlab のアップデートへの追従性を高く保っている．ている [10, 11]．CodeCity の評価実験では，Eclipseと Excel による情報源に比べ，CodeCity による可視4. 4 計算サーバ化はプログラム構造の理解や設計上の問題を解答す

計算サーバは以下の 3 つの処理を担当する．

るタスクの正確性が 24% 高く，解答にかかる時間が• GitHub から開発データのクローン

12% 少ないという結果が報告されている [11]．我々は，• git リポジトリの historage への変換

rocat というソースコード都市の可視化を Kataribe• 可視化に用いるメトリクスの計測に実装した [6]．Kataribe から Codosseum へ発展す

提供するデータの最新性を保つため，これらの処理るにあたって，rocat も開発を進めた．の変換にかかる時間は git リポジトリの大きさに依存

ソ ー ス コ ー ド 都 市 rocat は ゲ ー ム エ ン ジ ン のUnity†2 で実装された GUI プログラムであり，リし，開発期間が長いプロジェクトや，ファイル数が多ポジトリ解析で得られたプロジェクトの都市情報を読いプロジェクトなどでは時間かかる．例えば，djangoみ込んで可視化する．rocat のスクリーンショットをの変換には，12 コア，メモリ 16GB のマシン上で 6

図 4 に示す．円盤状の土台はプロジェクト内のディレ時間程度を要する．したがって，前述の処理をリアルクトリを，土台の上に建っているビルはそのディレクタイムに行い続けるのは現実的ではない．そのため，トリ直下に存在するソースコードファイルを表す．ま提案システムでは 1 週間に一度，リポジトリの更新た，ビルの高さはコードの行数（LOC）を表し，横を行うこととした．

幅はビルのレイアウトを考慮し固定値とした．ビルはは定期的に実行する必要がある．しかし，historage

計算サーバで変換された historage や，計測されたメトリクスはそれぞれリポジトリホスティングサーバ

ソースコードファイルの名前でソートして配置した．
以下に詳細を説明する．

や，フロントエンドサーバ上のデータベースに登録さディレクトリ：土台は現在可視化しているディレクれる．このように，データの構築と外部への提供を分

トリを中心とし，そのディレクトリのサブディレクト離し，各サーバの機能を最小限にすることで，機能拡リの土台が周囲に円形状に配置される．ディレクトリ

張の容易性を向上させている．の親子関係を示すために，中心の土台と周囲の土台の†2 Unity: https://unity3d.com/

図6
図5

マップ

サブディレクトリ内部への都市の再構成

間には道路が作られる．周囲の土台が配置される位置はディレクトリ数やディレクトリ内にあるファイル数に依存し，土台同士が重ならないように決定される．
ディレクトリ移動に応じたソースコード都市の再構
成：サブディレクトリの土台をクリックした際に，そのディレクトリ内にファイルなどが含まれる場合は，そのサブディレクトリを中心としてそのディレクトリ内のファイルやサブディレクトリを都市として再構成する．中心の土台または画面上部の白いボタンをクリックすることで 1 つ上のディレクトリを中心として都市が再構成される．都市の再構成の概念図を図 5

図7

コード編集量の可視化に示す．土台の上部にはその土台が示すディレクトリの名前が表示される．表示の大きさは視点との位置

操作：視点の操作はマウスとキーボードを利用する．

で変化するため，開発者は視点の遠くに土台があってEsc キーを入力することで中心の土台に視点を動かすも，その土台が示すディレクトリの名前を知ることがことができる．また，Tab キーを入力することで，カできる．画面左上には現在可視化しているディレクトメラを周囲の土台の近くに動かすことができる．Tab

リのフルパスが表示される．

キーを連続で入力すると，視点を土台が示すディレク全体像のガイド：画面右上には都市を真上から見たトリのアルファベット順に動かすことができる．これ

マップが表示される．マップの拡大図を図 6 に示す．

らの入力により，都市の大きさが大きくなっても，開マップ上の赤い目印は視点の位置と方向を示してお発者は任意の場所に容易に移動することができる．

り，開発者は現在自分が都市のどこにいるのかを一目で知ることができる．マップ上の土台をクリックする

5. 2 コード編集量

ことでも都市の再構成が可能であり，開発者は都市が

図 7 はコードの編集量に関する可視化の一例であ

大きくなっても任意のディレクトリの探索ができる．

る．可視化画面は，上部の年数が書かれたボタン，中なお，マップの見やすさやクリックの操作性を考慮

央の線グラフ，下部のテーブルによって構成される．

し，ビルはマップ上に表示していない．

中央の線グラフは，プロジェクト全体におけるコーる．最終コミットから一年以内にコミットしたコミッ

Population of mono/mono

ターを現在のプロジェクトの人口として可視化してい

36 +
33-35

る．人口構成要素としてはコミット経験月数を使用し# of contributed months

30-32
27-29ている．

24-26
21-23

横軸はコミッター数，縦軸は３ヶ月ごとのコミット

18-20
15-17

経験月数を表示している．

12-14
9-11
6-8
3-5

6 関連研究

0-2
0

2.5

5

7.5

10

12.5

15

17.5

20

Existing committers in recent one year
Highcharts.com

図8

プロジェクト Mono の人口ピラミッド

CodeCity は，ソースコードのクラスとパッケージの構造を都市のように 3D で可視化するシステムである [10, 11]．Balogh らはコンピュータゲームである
MineCraft†3 を用いてソースコードを都市のようにドの編集量の遷移を表す．緑線が追加の LOC，赤線可視化する CodeMetropolis を提案し，ソフトウェアが削除の LOC に対応しており，グラフは 1 週間ごとテストに関連するメトリクスを可視化している [1, 2]．にプロットされる．初期状態では最近の年における遷Balogh らのシステムでは関連のあるテストケースと移のみ表示されるが，上部にあるボタンを操作して過ソースコードを並べて配置して可視化することで，開去の年へ遡ることが可能である．

発者の理解を支援している．

下部のテーブルは，中央の線グラフが示す期間中

高澤らは，リポジトリマイニングのためのデータに追加と削除が行われた部分の内訳のリストを示す．

セット作成を支援するツールである RepositoryProbe

リストには変更された部分の名称，期間中に追加おを提案している [12]．

よび削除された LOC の合計，追加と削除の遷移を表す線グラフが含まれる．初期状態ではファイルレベル

7 おわりにでのリストが生成されるが，テーブルのヘッダに格納

本研究では，OSS プロジェクトモニタリング Webされたプルダウンメニューから，クラスレベルおよびサービスである Codosseum を開発した．Codosseum

メソッドレベルに変更することが可能である．クラスは細粒度なソフトウェアリポジトリである Historage

レベルおよびメソッドレベルの情報を表示する機能の公開と，それを用いた可視化機能を持ち，OSS 開は，historage が持つ細粒度性によって実現されてい発の支援と，ソフトウェア工学の研究成果を展開するる．また，中央の線グラフの月ラベル（Jan など）をプラットフォームとしての役割を担うことを目的としクリックすることにより，期間を特定の月に限定するている．

ことも可能である．

Codosseum の開発にあたり，先行研究で開発したシステムでの経験から，システム構成に求められる

5. 3 コミュニティ人口構成

要件を整理し，データの最新性，サービスの継続性，プロダクトだけでなく，ソフトウェア開発コミュニ機能の拡張性が必要であることを確認した．この要件

ティの人的側面も，OSS プロジェクトのモニタリングを満たすため，Codosseum は機能毎にサーバを分割においては重要な観点である．Onoue らは，開発コするモデルで構築した．

ミュニティを人口ピラミッドで可視化，分析すること

現在，Codosseum 上には 500 件程度のプロジェクで人口構成とその将来性を分析している [7,8]．この開トを対象に，3 種類の可視化機能を実装している．可発コミュニティの人口ピラミッド可視化を Codosseum

視化機能は今後も追加し，ソフトウェア工学の研究成においても実装する．
図 8 は，プロジェクトの人口構成の可視化例であ†3 MineCraft, http://minecraft.net/

果を公開するプラットフォームとして活用を進めていく予定である．また，OSS の開発支援として利用できるよう，対象とするプロジェクトも増やしていく予定である．

参 考 文 献[ 1 ] Balogh, G. and . Beszdes: CodeMetropolis code visualisation in MineCraft, 2013 IEEE 13th
International Working Conference on Source CodeAnalysis and Manipulation (SCAM), Sept 2013,pp. 136–141.
[ 2 ] Balogh, G., Gergely, T., . Beszdes, and Gyimthy, T.: Using the City Metaphor for Visualizing Test-Related Metrics, 2016 IEEE 23rd International Conference on Software Analysis, Evolution,and Reengineering (SANER), Vol. 2, March 2016,
pp. 17–20.
[ 3 ] Fujiwara, K., Hata, H., Makihara, E., Fujihara,Y., Nakayama, N., Iida, H., and Matsumoto, K.:
Kataribe: A Hosting Service of Historage Repositories, Proceedings of the 11th Working Conferenceon Mining Software Repositories, MSR 2014, NewYork, NY, USA, ACM, 2014, pp. 380–383.
[ 4 ] Hata, H., Mizuno, O., and Kikuno, T.: Bug prediction based on fine-grained module histories, 2012
34th International Conference on Software Engineering (ICSE), June 2012, pp. 200–210.
[ 5 ] Hata, H., Mizuno, O., and Kikuno, T.: Historage: Fine-grained Version Control System for
Java, Proceedings of the 12th International Workshop on Principles of Software Evolution and the7th Annual ERCIM Workshop on Software Evolution, IWPSE-EVOL ’11, New York, NY, USA,ACM, 2011, pp. 96–100.
[ 6 ] Ichinose, T., Uemura, K., Tanaka, D., Hata,H., Iida, H., and Matsumoto, K.: ROCAT onKATARIBE: Code Visualization for Communities,

2016 4th Intl Conf on Applied Computing and Information Technology/3rd Intl Conf on Computational Science/Intelligence and Applied Informatics/1st Intl Conf on Big Data, Cloud Computing,
Data Science Engineering (ACIT-CSII-BCD), Dec
2016, pp. 158–163.
[ 7 ] Onoue, S., Hata, H., and Matsumoto, K.: Software Population Pyramids: The Current and theFuture of OSS Development Communities, Proceedings of the 8th ACM/IEEE International Symposium on Empirical Software Engineering and Measurement, ESEM ’14, New York, NY, USA, ACM,
2014, pp. 34:1–34:4.
[ 8 ] ONOUE, S., HATA, H., MONDEN, A., and
MATSUMOTO, K.: Investigating and Projecting
Population Structures in Open Source Software
Projects: A Case Study of Projects in GitHub,
IEICE Transactions on Information and Systems,
Vol. E99.D, No. 5(2016), pp. 1304–1315.
[ 9 ] Uemura, K., Saito, Y., Fujiwara, S., Tanaka, D.,Fujiwara, K., Iida, H., and Matsumoto, K.: A hosting service of multi-language historage repositories,
2016 IEEE/ACIS 15th International Conference on
Computer and Information Science (ICIS), June
2016, pp. 1–6.
[10] Wettel, R. and Lanza, M.: CodeCity: 3D Visualization of Large-scale Software, Companion of
the 30th International Conference on Software Engineering, ICSE Companion ’08, New York, NY,USA, ACM, 2008, pp. 921–922.
[11] Wettel, R., Lanza, M., and Robbes, R.: Software
Systems As Cities: A Controlled Experiment, Proceedings of the 33rd International Conference onSoftware Engineering, ICSE ’11, New York, NY,
USA, ACM, 2011, pp. 551–560.
[12] 高澤亮平, 坂本一憲, 鷲崎弘宜, 深澤良彰: RepositoryProbe: リポジトリマイニングのためのデータセッ
ト作成支援ツール, コンピュータソフトウェア, Vol. 32,No. 4(2015), pp. 103–114.