(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-09-29
(45)【発行日】2022-10-07
(54)【発明の名称】ソフトウェア開発支援システム、ソフトウェア開発支援サーバ及びソフトウェア開発支援プログラム
(51)【国際特許分類】
G06F 8/72 20180101AFI20220930BHJP
G06F 8/71 20180101ALI20220930BHJP
【FI】
G06F8/72
G06F8/71
(21)【出願番号】P 2020219816
(22)【出願日】2020-12-29
【審査請求日】2021-07-19
(73)【特許権者】
【識別番号】521490959
【氏名又は名称】ヴァシレ マーク マリアン
(74)【代理人】
【識別番号】100119758
【氏名又は名称】菊地 保宏
(72)【発明者】
【氏名】ヴァシレ マーク マリアン
【審査官】北川 純次
(56)【参考文献】
【文献】米国特許出願公開第2020/0004518(US,A1)
【文献】米国特許出願公開第2020/0192638(US,A1)
【文献】国際公開第2015/186256(WO,A1)
【文献】国際公開第2019/026248(WO,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 8/70-8/72
G06F 8/30
(57)【特許請求の範囲】
【請求項1】
複数のユーザが利用する複数のユーザ端末と、該複数のユーザ端末のそれぞれとネットワークを介して相互に通信可能なサーバと、を備え、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援システムであって、
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信部と、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信部と、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備え、
前記サーバは、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを特徴とするソフトウェア開発支援システム。
【請求項2】
複数のユーザが利用する複数のユーザ端末とネットワークを介して相互に通信可能であり、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援サーバであって、
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記ソフトウェア開発支援サーバに送信するコミットリスト作成・送信部と、
前記ソフトウェア開発支援サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記ソフトウェア開発支援サーバに送信する変更ファイル作成・送信部と、
前記ソフトウェア開発支援サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備えており、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを特徴とするソフトウェア開発支援サーバ。
【請求項3】
複数のユーザが利用する複数のユーザ端末と、該複数のユーザ端末のそれぞれとネットワークを介して相互に通信可能なサーバと、を備え、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援システムにおける前記ユーザ端末のためのソフトウェア開発支援プログラムであって、
前記複数のユーザ端末は、それぞれ、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、を備え、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作する前記ソフトウェア開発支援プログラムと、が動作可能であり、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信ステップと、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶ステップと、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信ステップと、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示ステップと、
を前記ユーザ端末に実行させることを特徴とするソフトウェア開発支援プログラム。
【請求項4】
前記変更表示ステップは、
ファイル一覧において、他のユーザによって変更されたファイルを、変更を示す態様で表示する第一の変更表示ステップと、
ソースコードエディタで現在開いているファイルにおいて、他のユーザによって変更された箇所を、変更を示す態様で表示する第二の変更表示ステップと、
を備えることを特徴とする請求項3記載のソフトウェア開発支援プログラム。
【請求項5】
前記変更表示ステップは、
コメントを入力するコメント入力ステップを備え、
前記変更ファイル作成・送信ステップは、前記コメント入力ステップにより入力されたコメントを前記第一の差分データとして作成し、
前記変更表示ステップは、他のユーザによって入力されたコメントを表示するコメント表示ステップを備えることを特徴とする請求項3又は4記載のソフトウェア開発支援プログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、Gitを用いてソフトウェア開発を行う場合のソフトウェア開発支援技術に関し、特に、Gitのホスティングサービスを利用して、複数のメンバで協働してソフトウェア開発を行う場合に好適に適用できる。
【背景技術】
【0002】
従来、Git、つまりプログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムを用いてソフトウェア開発が行われている。Gitでは、ソースコードの履歴を「リポジトリ」と呼ばれる場所で管理している。リポジトリには、全体を統括しているサーバに存在する「リモートリポジトリ」と、それぞれの開発者のデバイスに存在する「ローカルリポジトリ」と、がある。開発者は各自のローカルリポジトリにそれぞれの変更履歴を記録し、しかるべきタイミングでリモートリポジトリに反映することにより、ネットワークがつながらない環境でもバージョン管理を可能とし、全体としてソースコードの整合性を保つようにしている。
【0003】
Gitを用いてソフトウェア開発を行う場合、一般的には、より使いやすく便利な機能が組み込まれた、Gitのホスティングサービス、例えば、GitHub(登録商標)などを利用することが多い。このようなGitのホスティングサービスを利用する場合、例えば、プルリクエスト(Pull Request)は、ソースコードの変更点について他のメンバにレビュー依頼ができる機能であり、レビューにてOKとなったソースコードだけを承認して反映するので、最終的にマージされるソースコードの品質を向上させることに役立っている。
【0004】
例えば、 非特許文献1には、サーバにあるリモートリポジトリをクライアントでも管理し、クライアント間でリポジトリを連携する分散型バージョン管理システムが記載されている。
【先行技術文献】
【非特許文献】
【0005】
【文献】岩松 信洋、上川純一、まえだこうへい、小川 伸一郎著 「Gitによるバージョン管理」、オーム社、2011年
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、現状のプルリクエストを用いたソフトウェア開発では、プルリクエストの数が多く、また、他のメンバもソースコードを適切にレビューする時間が十分にないことも多く、各メンバや承認者のレビュー負担が大きいという問題がある。
【0007】
したがって、プルリクエストのレビューをすることなく、ソースコードの品質向上に役立つ仕組み、換言すれば、Gitのホスティングサービスのサーバにプッシュ(Push)、つまりファイルの追加・変更の履歴をリモートリポジトリにアップロードする以前の工程において、ソースコードの品質向上に役立つ仕組みが求められていた。
【0008】
また、現在のGitを用いたソフトウェア開発では、他のメンバがプッシュやプルリクエストを行うまでは、他のメンバのソースコードを見ることができないため、他のメンバがどのような作業を行っているのか不明であるという問題もある。
【0009】
本発明は上記の事情を鑑みてなされたものであり、Gitのホスティングサービスのサーバにプッシュする以前において、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができるソフトウェア開発支援システム、ソフトウェア開発支援サーバ及びソフトウェア開発支援プログラムを提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するため、本発明の一態様に係るソフトウェア開発支援システムは、
複数のユーザが利用する複数のユーザ端末と、該複数のユーザ端末のそれぞれとネットワークを介して相互に通信可能なサーバと、を備え、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援システムであって、
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信部と、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信部と、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備え、
前記サーバは、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを要旨とする。
【0011】
また、上記目的を達成するため、本発明の一態様に係るソフトウェア開発支援サーバは、
複数のユーザが利用する複数のユーザ端末とネットワークを介して相互に通信可能であり、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援サーバであって、
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記ソフトウェア開発支援サーバに送信するコミットリスト作成・送信部と、
前記ソフトウェア開発支援サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記ソフトウェア開発支援サーバに送信する変更ファイル作成・送信部と、
前記ソフトウェア開発支援サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備えており、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを要旨とする。
【0012】
また、上記目的を達成するため、本発明の一態様に係るソフトウェア開発支援プログラムは、
複数のユーザが利用する複数のユーザ端末と、該複数のユーザ端末のそれぞれとネットワークを介して相互に通信可能なサーバと、を備え、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援システムにおける前記ユーザ端末のためのソフトウェア開発支援プログラムであって、
前記複数のユーザ端末は、それぞれ、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、を備え、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作する前記ソフトウェア開発支援プログラムと、が動作可能であり、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信ステップと、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶ステップと、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信ステップと、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示ステップと、
を前記ユーザ端末に実行させることを要旨とする。
【発明の効果】
【0013】
本発明によれば、Gitのホスティングサービスのサーバにプッシュする以前において、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができる。
【図面の簡単な説明】
【0014】
【
図1】本発明の実施の形態に係るソフトウェア開発支援システムの概略構成図である。
【
図2】本発明の実施の形態に係るソフトウェア開発支援サーバのデータ管理の模式図である。
【
図3】本発明の実施の形態に係るソフトウェア開発支援システムの共通コミットの概念を説明する図である。
【
図4】
図5とともに、本発明の実施の形態に係るソフトウェア開発支援システムにおいて、ソフトウェア開発支援サーバとユーザ端末の間のデータ管理を模式的に示す図である。
【
図5】
図4とともに、本発明の実施の形態に係るソフトウェア開発支援システムにおいて、ソフトウェア開発支援サーバとユーザ端末の間のデータ管理を模式的に示す図である。
【
図6】本発明の実施の形態に係るソフトウェア開発支援システムにおいてユーザ端末に表示される画面例を示す図である。
【
図7】本発明の実施の形態に係るソフトウェア開発支援システムにおいてユーザ端末に表示される画面例を示す図である。
【
図8】本発明の実施の形態に係るソフトウェア開発支援システムのコミットリスト送信処理の流れを示すローチャートである。
【
図9】本発明の実施の形態に係るソフトウェア開発支援システムの変更ファイル送信処理の流れを示すローチャートである。
【
図10】本発明の実施の形態に係るソフトウェア開発支援システムの変更ファイル受信処理の流れを示すフローチャートである。
【
図11】本発明の実施の形態に係るソフトウェア開発支援システムにおけるソフトウェア開発支援サーバ及びユーザ端末の機能を説明する図である。
【発明を実施するための形態】
【0015】
以下、本発明の実施の形態について図面を用いて説明する。
【0016】
<ソフトウェア開発支援システムの構成>
図1は、本発明の実施の形態に係るソフトウェア開発支援システム10の概略構成図である。ソフトウェア開発支援システム10は、Gitを利用したソフトウェア開発を支援する情報処理システムであり、より詳しくは、例えば、GitHub(登録商標)などのGitのホスティングサービスを利用してソフトウェア開発を行う場合に好適に適用できる情報処理システムである。ソフトウェア開発支援システム10には、Gitのホスティングサービスを提供するサーバ(以下、Gitホスティングサービス提供サーバという) 4にプッシュする以前であっても、ソフトウェア開発者間のコミュニケーションを十分に図ることができるとともにソフトウェアの品質を向上させることができる仕組みが設けられている。以下、本実施の形態では、ソフトウェア開発支援システム10により提供されるサービスを、Git用ソフトウェア開発支援サービスと称して説明する。
【0017】
ソフトウェア開発支援システム10は、ソフトウェア開発支援サーバ1と、複数のユーザ端末2と、を備える。ソフトウェア開発支援サーバ1は、Git用ソフトウェア開発支援サービスを提供する事業者が管理するサーバ措置であり、ユーザ端末2は、ソフトウェア開発者(以下、ユーザという)が用いる端末装置である。ソフトウェア開発支援サーバ1及び複数のユーザ端末2は、それぞれ、例えば、インターネット網、公衆網などからなる通信ネットワーク3に接続されている。また、ソフトウェア開発支援サーバ1及びユーザ端末2は、それぞれ、通信ネットワーク3を介して、Gitホスティングサービス提供サーバ4と接続されている。
【0018】
ソフトウェア開発支援サーバ1は、記憶部11と、制御部12と、通信部13と、を備える。
【0019】
記憶部11は、例えば、メモリ及びハードディスク等から構成され、Git用ソフトウェア開発支援サービスに関するデータやGit用ソフトウェア開発支援サービスを実行するためのプログラムを記憶する。
【0020】
制御部12は、例えば、CPU及びメモリ等から構成され、記憶部11の制御や、各種データの転送、種々の演算、データの一時的な格納等を行うことにより、Git用ソフトウェア開発支援サービスの各種処理を実行する。
【0021】
通信部13は、通信ネットワーク3を介してGitホスティングサービス提供サーバ4及びユーザ端末2とデータの送受信を行う。
【0022】
なお、ソフトウェア開発支援サーバ1は、物理的に一つからなる装置の他、複数の装置がネットワーク接続されたシステムから構成されてもよく、複数の装置で構成された場合には、同一の場所にすべてが設置されていてもよいし、複数の場所に分散して設置されていてもよい。
【0023】
ユーザ端末2は、記憶部21と、制御部22と、通信部23と、UI(User Interface)部24と、を備える。ユーザ端末2は、例えば、パーソナルコンピュータが好適であるが、スマートフォンやタブレット端末でもよい。
【0024】
記憶部21は、例えば、メモリ及びハードディスク等から構成され、Gitに関するデータやアプリケーションプログラムAPを記憶する。ここで、Gitに関するデータには、Gitホスティングサービス提供サーバ4から送信されるデータ、ソフトウェア開発支援サーバ1から送信されるデータ、ユーザ自らが作成したデータなどが含まれる。アプリケーションプログラムAPには、Gitのアプリ、例えば、Visual Studio Code(登録商標)などのソースコードエディタ、ソースコードエディタ上で動作するプラグインPLなどが含まれる。このソースコードエディタ上で動作するプラグインPLは、ソフトウェア開発支援サーバ1がユーザ端末2に提供するソフトウェアである。ユーザは、ユーザ端末2にプラグインPLをインストールすることにより、Git用ソフトウェア開発支援サービスを享受することが可能となる。
【0025】
制御部22は、例えば、CPU及びメモリ等から構成され、記憶部21の制御や、各種データの転送、種々の演算、データの一時的な格納等を行うことにより、GitホスティングサービスやGit用ソフトウェア開発支援サービスのユーザ端末側の各種処理を実行する。
【0026】
通信部23は、通信ネットワーク3を介してソフトウェア開発支援サーバ1、Gitホスティングサービス提供サーバ4、及び他のユーザ端末2とデータの送受信を行う。
【0027】
UI部24は、ユーザ端末2の入力部及び出力部であり、ユーザからの入力操作を受け付けるとともに、入力操作に応じて制御部22にて処理された結果を出力するようになっている。入力部としては、例えば、キーボード、マウス、タッチパネルなどが想定され、出力部としては、例えば、ディスプレイ、スピーカなどが想定される。
【0028】
なお、ユーザ端末2においてGit用ソフトウェア開発支援サービスを利用するには、ソフトウェア開発支援サーバ1にログインする(具体的には、メールアドレスなどのユーザIDとパスワードを入力してソフトウェア開発支援サーバ1に認証される)必要がある。ユーザ端末2においてソースコードエディタを起動している状態でソフトウェア開発支援サーバ1にログインすると、ソースコードエディタ上でプラグインPLが起動し、Git用ソフトウェア開発支援サービスを利用することが可能となる。
【0029】
本実施の形態では、ソフトPLが起動した状態において作業モードが2つ用意されている。ユーザはいずれかの作業モードを選択することができる。一つは、リアルタイムモードであり、もう一つは、非リアルタイムモードである。リアルタイムモードは、他のユーザの変更作業(例えば、ソースコードの変更、コメント入力など)が自らのユーザ端末2において即時反映される作業モードであり、ソフトウェア開発支援サーバ1とユーザ端末2間のデータ同期処理が頻繁に実行されるようになっている(例えば、変更のたび即時、1秒ごとなど)。一方、非リアルタイムモードは、他のユーザの変更作業が自らのユーザ端末2においてすぐには反映されない作業モードであり、ソフトウェア開発支援サーバ1とユーザ端末2間のデータ同期処理はリアルタイムモードよりも間隔を空けて実行されるようになっている(例えば、5分ごとなど)。非リアルタイムモードは、データ同期処理の間隔も長く、また、他のユーザの作業に基づく変更表示も最小限しか表示されないので、ユーザが自分の作業に集中できる作業モードとなっている。
【0030】
なお、本実施の形態に係るGit用ソフトウェア開発支援サービスの各種処理を実行するプログラム、すなわち、ソフトウェア開発支援サーバ1用のプログラム、及びユーザ端末2のプラグインPLのプログラムは、上述したメモリなどの主記憶装置やハードディスクなどの補助記憶装置に格納されているものである。そして、このプログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disc)などのコンピュータが読み取り可能な記録媒体に記録することも、通信ネットワークを介して配信することも可能である。
【0031】
<ソフトウェア開発支援システムのデータ管理>
次に、
図2~
図5を用いて、ソフトウェア開発支援システム10のデータ管理について説明する。
図2は、ソフトウェア開発支援サーバ1のデータ管理の模式図である。
【0032】
図2に示すように、ソフトウェア開発支援サーバ1の記憶部11は、プロジェクトごとにデータを管理している。ここで、プロジェクトとは、Gitホスティングサービス提供サーバ4に作成されたレポジトリのことであり、本実施の形態では、このレポジトリ単位にデータが管理されている。また、各プロジェクトのデータは、大別して、メタデータと、ソースコートと、に分類される。メタデータは、プロジェクトに関するメタデータ、及びユーザに関するメタデータなどがある。プロジェクトに関するメタデータには、例えば、プロジェクトの難易度、ソースコードの更新頻度、プロジェクトの参加者などが含まれ、ユーザに関するメタデータには、例えば、ユーザの得意なプログラミング言語、コミュニケーション言語、レイティング(星の数など)、仕事の特徴、性格などが含まれる。
【0033】
ここで、ソースコードに着目すると、本実施の形態のソースコードは、ブランチ(branch)ごとに管理されており、さらにブランチ内ではユーザごとに管理されている。例えば、
図2に示す例は、ブランチAのソースコードをユーザA、B及びCの3人で協働してソフトウェア開発している場合、ブランチBのソースコードをユーザD及びEの2人で協働してソフトウェア開発している場合のデータ管理を模式的に示している。
【0034】
従来においては、複数のユーザが協働してソフトウェア開発を行う場合、各ユーザは、他のユーザの作業の影響を受けないようにするため、メインのブランチから自分専用のブランチを作成し、作業終了後にメインのブランチに自分のブランチの変更を取り込むという流れで作業をしていた。つまり、ユーザごとにブランチが作成されていた。本実施の形態の協働方法は、この従来のやり方とは異なり、
図2に示すようなデータ管理を行っているため、同一のブランチにおいて複数のユーザが作業することが可能となっている。勿論、従来のように異なるブランチ間で複数のユーザが作業することも可能である。
【0035】
なお、後述する
図4及び
図5において説明するが、ソースコードは、ユーザ端末2においても、ソフトウェア開発支援サーバ1と同様に、ブランチ(branch)及びユーザごとに管理されている。ソフトウェア開発支援サーバ1とユーザ端末2は、ソースコードに関して同期を取る必要があるからである。
【0036】
また、本実施の形態の記憶部11に記憶されるソースコードは、データトラフィックを考慮して、変更されたデータ(差分データ)のみであり、ソースコード全体のデータは、Gitホスティングサービス提供サーバ4において管理されている。より詳しくは、本実施の形態のソースコードの差分データは、ユーザ間における最新の共通コミット(commit)からの差分データとなっている。
【0037】
ここで、
図3を用いて最新の共通コミットの概念について説明する。
図3は、ブランチAのソースコードをユーザA、ユーザB及びユーザCの3人で作業している場合の最新の共通コミットを説明する図である。
【0038】
本実施の形態のユーザ端末2は、所定の契機(例えば、コミットした場合、ブランチ切り替えをした場合などコミット履歴が変更される場合)においてコミットリストを作成し、作成したコミットリストをソフトウェア開発支援サーバ1に送信するようになっている。ここで、コミットリストは、コミット履歴を示す一覧リストであり、コミットを一意に識別可能なID(例えば、コミットのSHA-1チェックサムなど。以下、コミットIDという)の直近数エントリ(例えば、直近10エントリなど)を、コミットした日時が新しい順序で並べた一覧リストである。例えば、
図3は、ユーザAが用いるユーザ端末2がユーザAのコミットリスト、ユーザBが用いるユーザ端末2がユーザBのコミットリスト、ユーザCが用いるユーザ端末2がユーザCのコミットリストをソフトウェア開発支援サーバ1に送信する様子を示している。
【0039】
ソフトウェア開発支援サーバ1は、同一のブランチで作業する各ユーザからコミットリストを受信すると、各コミットリストを比較して、最新の共通のコミットIDを検索する。
図3に示した例では、102が最新の共通コミットのコミットIDとなる。ソフトウェア開発支援サーバ1は、最新の共通コミットを決定すると、決定した最新の共通コミットのコミットIDを同一のブランチで作業する各ユーザに送信する。
図3に示した例では、ソフトウェア開発支援サーバ1は、ユーザA、ユーザB及びユーザCのユーザ端末2それぞれに、102を示すコミットIDを送信する。
【0040】
ユーザ端末2は、最新の共通コミットのコミットIDを受信すると、受信した最新の共通コミットのコミットIDを記憶部21に記憶する。この結果、ユーザ端末2は、ユーザがソースコードエディタ上で所定のファイルに対して作業を行い、所定のファイルのソースコードが変更された場合、この変更が発生した所定のファイルのソースコードと、記憶部21に記憶された最新の共通コミットのコミットIDが示す所定のファイルのソースコードと、を比較してその差分データを作成し、作成した差分データをソフトウェア開発支援サーバ1に送信するようになっている。そして、ソフトウェア開発支援サーバ1は、ユーザ端末2から送信された差分データを記憶部11に記憶し、サーバ側でも差分データを管理するようになっている。
【0041】
なお、差分データは、2つのファイル間の違いを出力する既存のプログラム(例えば、diffなど)を用いて作成される。差分データは、例えば、送信元のユーザを一意に示す情報(例えば、ユーザIDなど)、レポジトリ(プロジェクト)を一意に識別可能な情報、ブランチを一意に識別可能な情報、ファイル名、変更箇所を示す情報(例えば、ソースコードの行)、変更内容などの情報を含んで構成される。また、所定のファイルのソースコードが変更された場合とは、詳しくは、レポジトリにある既存ファイルに対する変更、レポジトリにない新ファイルの追加、レポジトリにある既存ファイルの削除のいずれの場合も含まれる。
【0042】
図4及び
図5は、このようなソフトウェア開発支援サーバ1とユーザ端末2間のデータ管理方法を具体的に説明する図であり、ソフトウェア開発支援サーバ1とユーザ端末2の間においてデータの整合性を保つための同期処理を説明する模式図である。なお、
図4及び
図5は、ブランチAのソースコードをユーザA、ユーザB及びユーザCの3人で作業している場合であって、ユーザAがファイルγを変更した場合を示している。また、
図4及び
図5は、所定の一ファイルをやりとりする場合を示しているが、上述した同期処理のタイミングにおいて対象となるファイルが複数ある場合には、複数のファイルのそれぞれに対して、差分データのやりとりが発生する。
【0043】
図4は、ユーザAのユーザ端末2からソフトウェア開発支援サーバ1へのファイルγのアップロードの様子を示している。ユーザAがユーザ端末Aのソースコードエディタ上においてファイルγを変更した場合、プラグインPLは、ファイルγの共通コミットからの差分データを作成し、作成したファイルγの差分データをソフトウェア開発支援サーバ1に送信する。ソフトウェア開発支援サーバ1は、ユーザAからのファイルγの差分データを受信すると、ファイルγの差分データを記憶部11のユーザAのデータを管理する領域に記憶するとともに、ユーザAによるファイルγの差分データを同一ブランチで作業をする他のユーザ、つまりユーザB及びユーザCに送信する。
【0044】
図5は、ソフトウェア開発支援サーバ1からユーザBのユーザ端末2へのファイルγのダウンロードの様子を示している。なお、ユーザCのユーザ端末2に対しても同様のダウンロードは実行されるが図示を省略する。
【0045】
ここで、ユーザBのユーザ端末2のプラグインPLは、ユーザAが変更したファイルγの差分データを受信すると、ユーザAが変更したファイルγの差分データを記憶部21に記憶するとともに同一ブランチで作業する他のユーザによってファイルγが変更されたことを示す変更表示をユーザBのユーザ端末2のソースコードエディタ上にて行う。この変更表示は、受信したファイルγの共通コミットからの差分データと、ユーザBの現在のファイルγと、を比較しての差分を表示するものである。各ユーザ端末2は、同一の共通コミットを有しているため、この共通コミットに基づいて変更表示の機能を実現することが可能となっている。なお、上述したように、この差分データの受信及び変更表示のタイミングは、ユーザの作業モードによって異なる。
【0046】
図6及び
図7に、ユーザBがリアルタイムモードで作業している場合に表示される画面例を示す。
図6及び
図7において、領域d1は、元々のソースコードエディタの画面であり、領域d2がプラグインPLの機能による画面である。つまり、領域d1は、ユーザがソフトウェア開発支援サーバ1にログインする前において表示されている領域であり(従来のソースコードエディタの表示画面)、領域d2は、ユーザがソフトウェア開発支援サーバ1にログインした後に表示される領域である。なお、
図6は、ソースコードエディタでREADME.mdを開いている状態、
図7は、ソースコードエディタでmain.jsを開いている状態を示している。
【0047】
ユーザがソフトウェア開発支援サーバ1にログインすると、Git用ソフトウェア開発支援サービスとして、作業モードがリアルタイムモードの場合、(1)他のユーザにより変更が行われたファイルのハイライト表示d201、(2)画面上に表示されているファイル(ソースコード)に対して他のユーザにより変更された変更箇所を示すハイライト表示202、(3)領域d1のスクロールバー上における変更箇所のマーカ表示203、(4)ユーザ間のコメントのやりとりの表示206が、ユーザ端末2の画面上に表示される。
【0048】
ハイライト表示d201は、現在作業をしているプロジェクトに係わる全ファイルの一覧の中から、他のユーザにより変更が行われたファイルをハイライトして表示するものである。これにより、ユーザが今開いていないファイルであっても他のユーザにより変更が行われたファイルを視覚的に把握することができる。
【0049】
ハイライト表示202は、今開いているファイル(ソースコード)において、ユーザBの現在のソースコードと他のユーザ(具体的には、ユーザA、ユーザC)のソースコードとを比較して、他のユーザにより変更が行われた箇所をハイライトして表示するものである。これは、受信した差分データに基づいて、自分のソースコードと他のユーザのソースコードの差分から変更箇所を作成し、表示するものである。例えば、
図6においては28行目及び29行目がハイライト表示されている。これにより、ユーザは今開いているファイルに関して他のユーザにより変更が行われたこと、変更が行われた箇所を視覚的に把握することができる。
【0050】
なお、このハイライト表示202は、他のユーザにより変更が行われた箇所を示すだけであり、初期表示において他のユーザによる変更内容は示されない。また、各ユーザとの差分も示されない。
【0051】
つまり、ハイライト表示202の初期表示では、他の全ユーザ(具体的には、ユーザA、ユーザC)によって変更された箇所の合計がハイライト表示される。なお、本実施の形態では、個々のユーザを選択することも可能であり、寄稿者204に表示されたユーザを選択することにより、選択されたユーザとの差分を表示することも可能である。例えば、
図6に示した画面例において、ユーザAが28行目及び29行目を変更した場合、初期表示では28行目及び29行目はハイライト表示202が行われるが、ユーザCを選択すると、ハイライト表示202は行われない。
【0052】
また、ハイライト表示202に対しては、ハイライト表示202の表示箇所をクリックすると、差分ハイライト表示202Nが行われる(
図7参照)。差分ハイライト表示202Nは、今開いているファイル(ソースコード)に対して他のユーザが変更した内容を表示するものである。これにより、ユーザは今開いているファイルに関して他のユーザの変更内容を把握することができる。このように本実施の形態では、ソースコードの変更箇所を示すだけなく、ソースコードの変更内容も示すことができる。
【0053】
マーカ表示203は、今開いているファイル(ソースコード)において、ユーザBの現在のソースコードと他のユーザ(具体的には、ユーザA、ユーザC)のソースコードとを比較して、他のユーザにより変更が行われた箇所をスクロールバー上にマーカ表示するものである。マーカ位置及びマーカ範囲は、ソースコードの変更位置及び変更範囲をスクロールバー上で相対的に示しているものである。マーカ表示203も、ハイライト表示202と同様、初期表示においては、他の全ユーザ(具体的には、ユーザA、ユーザC)によって変更された箇所の合計が表示されるが、ユーザを選択すれば、選択したユーザとの差分がマーカ表示される。
【0054】
領域d2は、ユーザ端末2に表示されているファイルと同一のファイルを作業しているユーザの一覧204と、ブランチの一覧205と、コメント表示欄206と、コメント入力欄207と、を備える。
【0055】
ユーザの一覧204は、ユーザ端末2に表示されているファイルと同一のファイルを作業しているユーザの一覧である。ユーザの一覧204においては、ユーザの選択も可能である。ユーザを選択した場合には、上述したように、ハイライト表示202及びマーカ表示203は、選択したユーザとの差分が表示されることとなる。
【0056】
ブランチの一覧205は、ブランチの一覧である。なお、本実施の形態では、同一ブランチで複数のユーザが作業していることを前提として説明をしているが、プラグインPLの機能はこれに限定されない。表示されたブランチの一覧の中からいずれかのブランチを選択することも可能である。ブランチを選択した場合には、選択したブランチとの差分が表示されることとなる。
【0057】
コメント表示欄206は、他のユーザが入力したコメントが表示される欄であり、コメント入力欄207は、ユーザが他のユーザに対してコメントを入力する欄である。コメント入力欄207に入力された事項は、デフォルトでは、現在開いているファイルに対するコメントとして入力されが、これに限定されない。本実施の形態では、所定のファイル、所定のフォルダ、プロジェクト(リポジトリ)を指定することにより、指定した対象に対するコメントとして表示させることが可能である。例えば、フォルダを指定してコメントを入力した場合には、指定したファルダ配下の全ファイルに対するコメントとして扱われる。また、プロジェクト(リポジトリ)を指定してコメントを入力した場合には、指定したプロジェクト(リポジトリ)配下の全フォルダ、全ファイルに対するコメントとして扱われる。なお、ユーザが入力したコメントデータは、前述の差分データとして作成される。例えば、ファイルを指定したコメントを入力した場合には、送信元のユーザを一意に示す情報(例えば、ユーザIDなど)、レポジトリ(プロジェクト)を一意に識別可能な情報、ブランチを一意に識別可能な情報、ファイル名、コメントなどの情報を含んで構成される。
【0058】
なお、ユーザがソフトウェア開発支援サーバ1にログインした状態であっても、作業モードが非リアルタイムモードの場合には、領域d2は表示されない。すなわち、作業モードが非リアルタイムモードの場合、領域d1だけが表示され、Git用ソフトウェア開発支援サービスとして、(1)他のユーザにより変更が行われたファイルのハイライト表示d201、(2)領域d1のスクロールバー上における変更箇所のマーカ表示203、だけがユーザ端末2の画面上に表示される(図示せず)。作業モードが非リアルタイムモードは領域d2が表示されていないことから、非リアルタイムモードを、Git用ソフトウェア開発支援サービスにおいてパネルを閉じているモード、リアルタイムモードを、Git用ソフトウェア開発支援サービスのパネルを開いているモードともいう。パネルを閉じているモードでは、領域d2が表示されず、また変更箇所の表示も最小限であることから、ユーザは、自らの作業により集中することができる。
【0059】
このように本実施の形態では、一のユーザがユーザ端末2において所定のファイルに対してソースコードを変更する作業を実行した場合、プラグインPLが、ソフトウェア開発支援サーバ1を介して、同一ブランチで作業している他のユーザのユーザ端末2に対して、変更した所定のファイルの差分データを送信するので、同一ブランチで作業している各ユーザは、ユーザ端末2において他のユーザのソースコードの変更箇所や変更内容を確認することができる。また、ソースコードに関するコメントのやりとりもできるので、Gitのホスティングサービスのサーバにプッシュする以前の工程であっても、メンバ間のコミュニケーションを十分に図ることができ、結果としてソフトウェアの品質を向上させることが可能となっている。
【0060】
<ソフトウェア開発支援システムの動作>
次に、
図8~
図10を用いて、本実施の形態に係るソフトウェア開発支援システム10の動作について説明する。なお、以下の処理は、前提として、ユーザはユーザ端末2を介してソフトウェア開発支援サーバ1にログインしている状態にあるものとして説明する。
【0061】
まず、
図8を用いて、ソフトウェア開発支援システム10のコミットリスト送信処理について説明する。
図8は、ソフトウェア開発支援システム10のコミットリスト送信処理の流れを示すフローチャートである。コミットリスト送信処理は、ユーザ端末2がソフトウェア開発支援サーバ1にコミットリストを送信する処理である。
【0062】
ユーザ端末2は、コミットリスト送信処理の実行タイミングであるか否かを判定する(ステップS1)。ここで、コミットリスト送信処理の実行タイミングとは、コミット履歴が更新されるタイミングであり、例えば、ユーザ端末2においてコミットが行われたり、ブランチの切り替えが行われたりしてコミット履歴が変更された場合である。コミットリスト送信処理の実行タイミングである場合には(ステップS1:YES)、コミットリストを作成し、作成したコミットリストをソフトウェア開発支援サーバ1に送信する(ステップS2、
図3参照)。
【0063】
ソフトウェア開発支援サーバ1は、コミットリストを受信すると(ステップS3)、受信したコミットリストを記憶部11に記憶し(ステップS4)、同一ブランチで作業している他のユーザのコミットリストを参照して、最新の共通コミットのコミットIDを決定する(ステップS5、
図3参照)。次いで、ソフトウェア開発支援サーバ1は、決定した最新の共通コミットのコミットIDを同一ブランチで作業している全ユーザのユーザ端末2に送信する(ステップS6)。
【0064】
ユーザ端末2は、最新の共通コミットのコミットIDを受信すると(ステップS7)、受信した最新の共通コミットのコミットIDを記憶部21に記憶する(ステップS8)。
【0065】
このように本実施の形態のコミットリスト送信処理によれば、プラグインPLの機能により、ユーザ端末2は、コミットリストの内容が変更されるたびにコミットリストをソフトウェア開発支援サーバ1に送信し、ソフトウェア開発支援サーバ1はコミットリストを受信するたびに最新の共通コミットを検索して、最新の共通コミットを同一のブランチで作業する全ユーザのユーザ端末2に送信するので、同一のブランチで作業する全ユーザは、最新の共通コミットを常に共有することができる。
【0066】
次に、
図9を用いて、ソフトウェア開発支援システム10の変更ファイル送信処理について説明する。
図9は、ソフトウェア開発支援システム10の変更ファイル送信処理の流れを示すフローチャートである。変更ファイル送信処理は、ユーザ端末2がソフトウェア開発支援サーバ1に変更があるファイルの差分データを送信する処理である。
【0067】
ユーザ端末2は、変更ファイル送信処理の実行タイミングであるか否かを判定する(ステップS11)。変更ファイル送信処理の実行タイミングとは、作業モードにより実行タイミングが異なる。例えば、作業モードがリアルタイムモードの場合には、1秒ごとに変更ファイル送信処理を実行し、作業モードが非リアルタイムモードの場合には、5分ごとに変更ファイル送信処理を実行してもよい。また、ユーザ端末2が最新の共通コミットを受信したタイミングを変更ファイル送信処理の実行タイミングとしてもよい。変更ファイル送信処理の実行タイミングである場合には(ステップS11:YES)、最新の共通コミットを記憶部21から取得して(ステップS12)、記憶部21の中から最新の共通コミットに対して変更されたファイルのすべてを検索する(ステップS13)。次いで、ユーザ端末2は、最新の共通コミットに対して変更されたすべてのファイルの差分データを作成し(ステップS14)、作成した変更があるファイルの差分データをソフトウェア開発支援サーバ1に送信する(ステップS15)。
【0068】
ソフトウェア開発支援サーバ1は、ユーザ端末2から変更があるファイルの差分データを受信すると(ステップS16)、変更があるファイルの差分データを記憶部11に記憶する(ステップS17、
図4参照)。
【0069】
このように本実施の形態の変更ファイル送信処理によれば、プラグインPLの機能により、一のユーザ端末2においてファイルの変更が行われると、変更があるファイルがソフトウェア開発支援サーバ1に送信されるようになっているので、ソフトウェア開発支援サーバ1は、同一ブランチで作業している全ユーザのファイル変更を一元的に管理することができる。
【0070】
次に、
図10を用いて、ソフトウェア開発支援システム10の変更ファイル受信処理について説明する。
図10は、ソフトウェア開発支援システム10の変更ファイル受信処理の流れを示すフローチャートである。変更ファイル受信処理は、ユーザ端末2がソフトウェア開発支援サーバ1に変更があるファイルの差分データを要求して受信する処理である。
【0071】
なお、
図8に示した変更ファイル受信処理は、作業モードが非リアルタイムモードの場合の変更ファイル受信処理の流れを示したフローチャートである。作業モードがリアルタイムモードの場合には、
図7で説明した変更ファイル送信処理において、ソフトウェア開発支援サーバ1が差分データを受信すること契機として、
図8のステップS24以降の工程を実行するようにしている。勿論、作業モードがリアルタイムモードの場合も、
図8に示したステップS21~S27の工程に従って実行してもよい。
【0072】
ユーザ端末2は、変更ファイル受信処理の実行タイミングであるか否かを判定する(ステップS21)。変更ファイル受信処理の実行タイミングは、作業モードにより異なるようにしてもよい。例えば、作業モードがリアルタイムモードの場合には、1秒ごとに変更ファイル受信処理を実行し、作業モードが非リアルタイムモードの場合には、5分ごとにファイル受信処理を実行してもよい。変更ファイル受信処理の実行タイミングである場合には(ステップS21:YES)、ユーザ端末2は、変更ファイルの要求をソフトウェア開発支援サーバ1に送信する(ステップS22)。
【0073】
ソフトウェア開発支援サーバ1は、変更ファイルの要求を受信すると(ステップS23)、記憶部11に記憶された全ユーザのデータの中から共通コミットに対して変更があるファイルを抽出して、抽出した変更があるファイルの差分データをユーザ端末2に送信する(ステップS24)。
【0074】
ユーザ端末2は、変更があるファイルの差分データを受信すると(ステップS25)、受信した差分データを記憶部21に記憶し(ステップS26、
図5参照)、ユーザ端末2に差分データがある旨の変更表示を行う(ステップS27、
図6、
図7参照)。なお、ユーザ端末2は、プラグインPLの作業モードに応じて表示態様を異ならせて変更表示を行う。
【0075】
このように本実施の形態の変更ファイル受信処理によれば、プラグインPLの機能により、一のユーザ端末2は、他のユーザ端末2においてファイルの変更が行われると、ソフトウェア開発支援サーバ1を介して変更があるファイルを受信するので、同一ブランチで作業している各ユーザは、他のユーザのソースコードの変更箇所や内容を確認することができる。
【0076】
<総括>
図11は、本実施の形態のソフトウェア開発支援システム10におけるソフトウェア開発支援サーバ1及びユーザ端末の機能2を説明する図である。
【0077】
まず、ソフトウェア開発支援システム10は、
図2、
図4及び
図5に示すように、ブランチ、ユーザ及びファイルごとに、ファイルの差分データを管理する構成を採用している。
【0078】
ソフトウェア開発支援サーバ1は、このようなデータ管理の下、ユーザ端末2から送信されたコミットリストを受信し、記憶する機能f1と、複数のユーザのコミットリストに基づいて最新の共通コミットを検索して、複数のユーザ端末2に通知する機能f2と、ユーザ端末2から変更があるファイルを受信した場合、受信した変更があるファイルを他のユーザ端末2に送信する機能f3と、を備えている。
【0079】
一方、ユーザ端末2は、このようなデータ管理の下、適宜、コミットリストを作成し、コミットリストをソフトウェア開発支援サーバ1に送信する機能f4と、最新の共通コミットをソフトウェア開発支援サーバ1から受信し、記憶する機能f5と、最新の共通コミットと比べて自己のファイルに変更が発生した場合、変更があるファイルの差分データを作成し、作成した差分データをソフトウェア開発支援サーバ1に送信する機能f6と、ソフトウェア開発支援サーバ1から送信された他のユーザの変更があるファイルの差分データを受信して、受信した差分データを変更表示する機能f7と、を備えている。
【0080】
本実施の形態のソフトウェア開発支援システム10は、このような機能を備えることにより、Gitのホスティングサービスのサーバにプッシュする以前において、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができる。すなわち、ソフトウェア開発支援システム10では、Gitホスティングサービス提供サーバ4に対するプルリクエストを用いなくても、ユーザ同士の作業をレビューすることができる。また、ソフトウェア開発支援システム10では、Gitホスティングサービス提供サーバ4にプッシュする以前であっても、ローカル環境(ユーザ端末2間)で他のユーザが何をやっているか視覚的に把握することができ、ユーザ端末2間でソースコードの整合性を取ることができる。その結果、チームメンバ全員に受け入れられた後にGitホスティングサービス提供サーバ4に対してプッシュすることが可能となる。また、ソフトウェア開発支援システム10では、ユーザは、ユーザ自身の状況に応じた作業モードを選択することができるので、ユーザの望む作業環境を提供することができる。
【0081】
以上から、本実施の形態のソフトウェア開発支援システム10は、従来のGitホスティングサービスを利用したソフトウェア開発の問題点、例えば、プルリクエストを用いたソフトウェア開発では、プルリクエストの数が多く、また、他のメンバもソースコードを適切にレビューする時間が十分にないことも多く、各メンバや承認者のレビュー負担が大きいという問題、現在のGitを用いたソフトウェア開発では、他のメンバがプッシュやプルリクエストを行うまでは、他のメンバのソースコードを見ることができないため、他のメンバがどのような作業を行っているのか不明であるという問題を解決することができる。
【0082】
<その他の実施の形態>
なお、上記実施の形態のソフトウェア開発支援システム10では、複数のユーザが同一のブランチで協働してソフトウェア開発を行う場合について説明したが、ソフトウェア開発支援システム10では、
図2、
図4及び
図5で示したように、ブランチ及びユーザごとにデータを管理しているため、ソフトウェア開発支援システム10は、複数のユーザが異なるブランチで協働してソフトウェア開発を行う場合にも適用は可能である。ただし、各ユーザが作業するブランチの親ブランチが同一であることが条件になる。この場合には、複数のユーザ間において共通のコミットを見つけられるからである。例えば、ユーザAがブランチAの子ブランチであるブランチB、ユーザBがブランチAの子ブランチであるブランチCで協働してソフトウェア開発をしている場合にも、ソフトウェア開発支援システム10の
図11に示した機能は実現できる。したがって、この場合にも、Gitホスティングサービス提供サーバ4の機能を用いなくても、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができる。
【0083】
また、上記実施の形態のソフトウェア開発支援システム10では、ソフトウェア開発支援サーバ1及びユーザ端末2は、変更があるファイルの差分データを管理し、この変更があるファイルの差分データを、ソフトウェア開発支援サーバ1とユーザ端末2間でやりとりしたが、ファイル全体を管理し、変更があるファイルのファイル全体(ソースコード全部)をソフトウェア開発支援サーバ1とユーザ端末2間でやりとりするようにしてもよい。すなわち、記憶部11及び記憶部21において、ブランチごと、ユーザごとにファイル全体を管理するようにしてもよい。
【0084】
また、上記実施の形態のソフトウェア開発支援システム10は、ソフトウェア開発支援サーバ1を、Gitホスティングサービス提供サーバ4とは別に設けてGit用ソフトウェア開発支援サービスを提供したが、ソフトウェア開発支援サーバ1がGitホスティングサービス提供サーバ4の機能を兼ね備えてもよい。
【0085】
また、上記実施の形態のソフトウェア開発支援システム10の変更ファイル送信処理は、最新の共通コミットからの差分データを作成し、送信していたが、一旦、最新の共通コミットからの差分データを作成し、送信した後は、最新の共通コミットが変更されるまでの間、前回送信したデータからの差分を作成し、送信するようにしてもよい。さらにトラフィックを抑制することができる。
【0086】
以上、本発明の実施の形態について説明してきたが、本発明は、上述した実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲において、本発明の実施の形態に対して種々の変形や変更を施すことができ、そのような変形や変更を伴うものもまた、本発明の技術的範囲に含まれるものである。また、発明の実施の形態に記載された、作用及び効果は、本発明から生じる最も好適な作用及び効果を列挙したに過ぎず、本発明による作用及び効果は、本発明の実施の形態に記載されたものに限定されるものではない。
【符号の説明】
【0087】
1 ソフトウェア開発支援サーバ
2 ユーザ端末
3 通信ネットワーク
4 Gitホスティングサービス提供サーバ
10 ソフトウェア開発支援システム
11,21 記憶部
12,22 制御部
13,23 通信部
24 UI部
25 AP(アプリケーションプログラム)