開発履歴の理解支援を目的としたGitクライアントの拡張
修士論文, 大阪大学
概要: 効率的なソフトウェア開発の管理を実現するためには,版管理システムを用いた開発履歴の理解が必須である.
しかし,一般的な版管理システムにおける履歴操作はgrepやdiffなどのテキストベースな操作に制限されている.
そのため,ソースコードの構文情報や意味に基づいた履歴操作は容易ではない.
ソースコード検索に関する様々な研究が行われてきたが,これらの方法では開発履歴を追うことができない.
また,一般的な開発履歴の一覧はメタ情報のみを表示しており,検索対象もメタ情報のみを排他的に検索する手法である.
そのため,上で述べたように,ソースコードの中身に基づいた検索は難しく,また,検索にヒットする結果のみを出力するので,履歴の文脈を理解することが難しくなる.
その検索方法も,開発者は基本的に版管理システムにあらかじめ用意された方法を用いており,開発者自ら設定した検索手法を用いて情報を絞り込むことは容易ではない.
本研究では,版管理システムとして広く用いられているGitを対象に,
リポジトリの履歴操作系コマンドに対してソースコード検索技術を統合する手法と,
開発履歴にコミット情報をもとにタグを付ける手法を提案する.
ソースコード検索技術の統合により使用者の関心外の情報を削除することが可能となり,効率的な情報の絞り込みが可能となる.
提案手法の実現のために,GitのJava実装であるJGitを拡張したMJgitを設計し実装した.
MJgitではgit-showやgit-diff,git-logといった過去のコミット情報を取得するコマンドに対し,
メソッド名や変数名の指定といった検索クエリを使用できる.
また,タグ付与機能の追加により,開発履歴を開発者の設定したタグで分類することが可能となり,使用者が開発履歴を理解する助けとなる.
こちらの提案手法の実現のために,同じくJGitを拡張したBJgitを設計し,実装した.
BJgitではgit-logで出力される開発履歴に,コミット情報に基づいたタグを付けたり,
タグに基づいて開発履歴のフィルタをしたりすることで,使用者の理解を支援することが可能である.
また,ユーザー自らタグを作成する機能や,タグ作成のためのフレームワークも提供した.
MJgitとBJgitの評価実験として,実際のリポジトリを用いた性能評価実験,及び被験者を用いた有用性の確認実験を行う.
@mastersthesis{佐々木美和2019,
author = {佐々木 美和},
title = {開発履歴の理解支援を目的としたGitクライアントの拡張},
school = {大阪大学},
year = {2019}
}