2.現状での課題
2.1 バージョン管理システム
バージョン管理システムとは,ファイルをいつ・誰が・どのように変更したのかという履歴をバージョンとして記録して管理するシステムである.このバージョン管理システムにはブランチ機能というものがあり,これはプロジェクトを複数の方向に分岐させることができる機能である.その分岐したブランチを合流させる機能をマージという[ikeda2014].
2.2 GitHub
Gitは,バージョン管理システムの1つである.バージョン管理システムは2000年代には,Subversionと呼ばれるバージョン管理システムを使ってソースコードを管理しているWeb系のライブラリが,多くあった.しかし,2010年代にはGitが急速に普及し,Web開発の世界ではデファクトスタンダードになっている[nikkeibp2016].
Gitを利用するには,Gitをインストールしたサーバーを用意しなければならない.しかし,Gitを使った開発を手軽に体験する方法があり,それがGitを利用できるホスティングサービス「GitHub1」を利用する手法である.現在では,多くのオープンソースプロジェクトがGitHubで公開され,誰でも自由にダウンロードしたり改良したりできる[nikkeibp2014].
2.2.1 PullRequest
プルリクエストとはGitHubによって提供されている機能で,新機能の追加やバグの修正といったコードの変更を含むパッチを送信するための機能である.例えばあるブランチを指定したブランチにマージすることをリポジトリ管理者にリクエストするための機能でありこれはGitHubによって提供されている[umemoto2014].
プルリクエストにはコメント機能もあり,レビュー目的や開発ノウハウ共有目的で主に使用されている.レビュー目的の場合はどんなフィードバックを望んでいるのかが記述されている.開発ノウハウ共有目的の場合はそのブランチで追加・修正した機能の開発方法や実装手順が記述されている.
2.2.2 GitHubAPI
GitHubAPI2とはGitHubが出しているAPIで,HTTPS経由でアクセス可能である.そして,全てのデータをJSON形式送受信している.
2.3 既存のプルリクエスト
実際のプルリクエストのコメント機能では,この表2.3-1のように実装した概要や動作確認を依頼する内容が書かれている.これを受けて共同開発者はレビューを行ったり,そのブランチ内で何を実装したのかを簡易的に把握する.
表2.3-1 プルリクエスト
また,レビュー後に共同開発者は以下の表2.3-2のようにプルリクエストのコメント機能を用いて,レビューをした手順や問題があった部分の指摘をする.
表2.3-2 プルリクエスト内コメント
このようにレビュー目的の記述はあるが、開発ノウハウ共有目的で記述している例は少ない.また,書かれていたとしても内容が不十分であることが多い.
2.4 本研究での課題
前節でも述べた通り現在の多くのプルリクエストがレビュー目的の記述はあるが、開発ノウハウ共有目的で記述している例は少なく内容も不十分である.
研究の課題として、既存のプルリクエストの多くが新機能などの開発方法や実装手順が伝えきれていない現状に着目した.これが伝えきれていない場合,チームや組織内で実装方法や開発時に得た技術的な知識などの開発ノウハウが共有できなくなる.それにより,他の開発者は類似したものを開発する際に,既存の開発を参考にしづらくなる.また,それによって開発時間が多くかかってしまったり,インターネットや書籍での検索の回数が増えることなどが起こってしまう.
後の章でこれらの課題を解決するためのシステムを提案する.