1.はじめに
版管理システムとは作成されたソースコード等のファイルの変更履歴をコミットと呼ばれる単位でリポジトリと呼ばれるデータベース上に管理し,複数人で共有することを目的としたシステムである.版管理システムを利用することで,チーム内でのファイルの共有やソフトウェア構成管理に役立てることができる.これまで,様々な種類の版管理システムが使われてきており,現在ではGit1が数多くの開発者によって利用されている[ikeda2014].
Gitは各開発者のローカルな開発環境上やリモートサーバなど,1つのプロジェクトに対して複数の場所でリポジトリを管理する分散型と呼ばれる種類の版管理システムである.Gitを用いたチーム開発では,コミット履歴を分岐するブランチと呼ばれる機能が利用されることが多い.作成されたブランチはそれぞれ独立したコミット履歴を持ち,相互に影響を与えない.この機能を利用することで,リポジトリ中に保持されているソースコードに対してブランチを作成してから編集を行い,編集が一段落したところで,コミット履歴を統合(マージと呼ぶ)するといった開発フローが可能となる.ブランチを利用することで,正常に動作することが確認されているソースコードと新たに編集・開発されるソースコードを別々に管理することが可能となる.そのため,ブランチの利用を前提としたgit-flow[V. Driessen]などのソフトウェア開発フローが複数提案されている.Gitリポジトリのホスティングサービスを提供するGitHub2が提案するGitHub Flow[S. Chacon]もGitとGitHubの利用を前提とした開発フローの一つである.非常にシンプルな6つのルールから構成されており,常に複数人にレビューされた正常にビルド・デプロイが可能なソースコードを含むブランチを維持し続けることを目指している.
これらの開発フローでは,フローごとに定義されたルールを全開発者が遵守することで,そのフローの目的に即した状態にリポジトリを維持することができる.一方で,これらの版管理システムにおけるソフトウェア開発フローを開発者全員に遵守させることは非常に困難である.特に版管理システムの利用に不慣れな開発者が複数関与するようなケースでは,ルールの遵守が不充分であることを早期に特定し,改善を図ることが求められる.
そこで本研究では,GitHubに登録されているリポジトリを対象として,リポジトリに含まれるコミットとGitHubに登録されている情報を収集し,GitHub Flowにおけるルールの遵守状況を検出し可視化する手法についての検討を行う.
1. Git SCM, https://git-scm.com/ ↩
2. GitHub, https://github.com/ ↩