JP7150002B2 - Software development support system, software development support server and software development support program - Google Patents
Software development support system, software development support server and software development support program Download PDFInfo
- Publication number
- JP7150002B2 JP7150002B2 JP2020219816A JP2020219816A JP7150002B2 JP 7150002 B2 JP7150002 B2 JP 7150002B2 JP 2020219816 A JP2020219816 A JP 2020219816A JP 2020219816 A JP2020219816 A JP 2020219816A JP 7150002 B2 JP7150002 B2 JP 7150002B2
- Authority
- JP
- Japan
- Prior art keywords
- commit
- file
- software development
- user
- development support
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 230000008859 change Effects 0.000 claims description 68
- 230000005540 biological transmission Effects 0.000 claims description 30
- 238000000034 method Methods 0.000 description 20
- 230000006870 function Effects 0.000 description 19
- 238000004891 communication Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 17
- 238000012545 processing Methods 0.000 description 16
- 238000010586 diagram Methods 0.000 description 11
- 238000013523 data management Methods 0.000 description 10
- 239000003550 marker Substances 0.000 description 9
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 238000012552 review Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 239000012141 concentrate Substances 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 238000007796 conventional method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012384 transportation and delivery Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Stored Programmes (AREA)
Description
本発明は、Gitを用いてソフトウェア開発を行う場合のソフトウェア開発支援技術に関し、特に、Gitのホスティングサービスを利用して、複数のメンバで協働してソフトウェア開発を行う場合に好適に適用できる。 The present invention relates to software development support technology for software development using Git, and is particularly suitable for software development in collaboration with a plurality of members using a Git hosting service.
従来、Git、つまりプログラムのソースコードなどの変更履歴を記録・追跡するための分散型バージョン管理システムを用いてソフトウェア開発が行われている。Gitでは、ソースコードの履歴を「リポジトリ」と呼ばれる場所で管理している。リポジトリには、全体を統括しているサーバに存在する「リモートリポジトリ」と、それぞれの開発者のデバイスに存在する「ローカルリポジトリ」と、がある。開発者は各自のローカルリポジトリにそれぞれの変更履歴を記録し、しかるべきタイミングでリモートリポジトリに反映することにより、ネットワークがつながらない環境でもバージョン管理を可能とし、全体としてソースコードの整合性を保つようにしている。 Conventionally, software development has been performed using Git, a distributed version control system for recording and tracking change histories of program source codes and the like. Git manages the source code history in a place called "repository". There are two types of repositories: "remote repositories" that exist on the server that controls the whole, and "local repositories" that exist on each developer's device. By recording each change history in their own local repositories and reflecting them in the remote repositories at the right time, developers can manage versions even in environments without a network connection, and maintain the integrity of the source code as a whole. ing.
Gitを用いてソフトウェア開発を行う場合、一般的には、より使いやすく便利な機能が組み込まれた、Gitのホスティングサービス、例えば、GitHub(登録商標)などを利用することが多い。このようなGitのホスティングサービスを利用する場合、例えば、プルリクエスト(Pull Request)は、ソースコードの変更点について他のメンバにレビュー依頼ができる機能であり、レビューにてOKとなったソースコードだけを承認して反映するので、最終的にマージされるソースコードの品質を向上させることに役立っている。 When developing software using Git, it is common to use a Git hosting service, such as GitHub (registered trademark), which incorporates easier-to-use and convenient functions. When using such a Git hosting service, for example, Pull Request is a function that allows other members to review changes in the source code. are approved and reflected, which helps improve the quality of the final merged source code.
例えば、 非特許文献1には、サーバにあるリモートリポジトリをクライアントでも管理し、クライアント間でリポジトリを連携する分散型バージョン管理システムが記載されている。
For example, Non-Patent
しかしながら、現状のプルリクエストを用いたソフトウェア開発では、プルリクエストの数が多く、また、他のメンバもソースコードを適切にレビューする時間が十分にないことも多く、各メンバや承認者のレビュー負担が大きいという問題がある。 However, in the current software development using pull requests, the number of pull requests is large and other members often do not have enough time to properly review the source code. is large.
したがって、プルリクエストのレビューをすることなく、ソースコードの品質向上に役立つ仕組み、換言すれば、Gitのホスティングサービスのサーバにプッシュ(Push)、つまりファイルの追加・変更の履歴をリモートリポジトリにアップロードする以前の工程において、ソースコードの品質向上に役立つ仕組みが求められていた。 Therefore, it is a mechanism that helps improve the quality of source code without reviewing pull requests. In the previous process, there was a demand for a mechanism that would help improve the quality of the source code.
また、現在のGitを用いたソフトウェア開発では、他のメンバがプッシュやプルリクエストを行うまでは、他のメンバのソースコードを見ることができないため、他のメンバがどのような作業を行っているのか不明であるという問題もある。 Also, in the current software development using Git, it is not possible to see the source code of other members until they make a push or pull request. There is also the problem that it is unclear whether
本発明は上記の事情を鑑みてなされたものであり、Gitのホスティングサービスのサーバにプッシュする以前において、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができるソフトウェア開発支援システム、ソフトウェア開発支援サーバ及びソフトウェア開発支援プログラムを提供することを目的とする。 The present invention has been made in view of the above circumstances, and is a software development method that enables sufficient communication between members and improves the quality of software before pushing it to the Git hosting service server. An object is to provide a support system, a software development support server, and a software development support program.
上記目的を達成するため、本発明の一態様に係るソフトウェア開発支援システムは、
複数のユーザが利用する複数のユーザ端末と、該複数のユーザ端末のそれぞれとネットワークを介して相互に通信可能なサーバと、を備え、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援システムであって、
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信部と、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信部と、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備え、
前記サーバは、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを要旨とする。
In order to achieve the above object, a software development support system according to one aspect of the present invention includes:
A software development support system that supports software development using Git, comprising a plurality of user terminals used by a plurality of users, and a server capable of mutually communicating with each of the plurality of user terminals via a network. hand,
Each of the plurality of user terminals,
At least an application for using Git, a source code editor, and add-in software running on the source code editor are operable,
a first storage unit that stores differential data of files managed for each branch, user, and file, and the latest common commit;
a display unit;
a commit list creation/sending unit that creates a commit list, which is a list of commit histories, and sends the commit list to the server when the commit history is changed;
a common commit reception/storage unit that receives the latest common commit from the server and stores it in the first storage unit;
When a change occurs in a predetermined file (hereinafter referred to as the first file), the differential data (hereinafter referred to as the first differential data) for the latest common commit of the first file is created and created. a change file creating/sending unit that sends the first differential data to the server;
When the differential data (hereinafter referred to as second differential data) of another user's predetermined file (hereinafter referred to as second file) is received from the server, based on the latest common commit, the received a change display unit that calculates the difference between the second difference data and the second file of itself, and displays the calculated difference on the screen of the source code editor of the display unit;
with
The server is
a second storage unit that stores the differential data of files managed for each branch, user, and file, and the commit list transmitted from the plurality of user terminals;
a commit list receiving/storage unit that, when receiving the commit list transmitted from each of the plurality of user terminals, stores the received commit list in the second storage unit;
Common commit retrieval and notification for retrieving the latest common commit based on the commit list transmitted from each of the plurality of user terminals, and transmitting the retrieved latest common commit to each of the plurality of user terminals. Department and
When the first difference data is received from one of the user terminals, the first difference data is stored in the second storage unit, and the first difference data is used as the second difference data, a change file reception/transmission unit that transmits to the other user terminal;
The gist is to provide
また、上記目的を達成するため、本発明の一態様に係るソフトウェア開発支援サーバは、
複数のユーザが利用する複数のユーザ端末とネットワークを介して相互に通信可能であり、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援サーバであって、
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記ソフトウェア開発支援サーバに送信するコミットリスト作成・送信部と、
前記ソフトウェア開発支援サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記ソフトウェア開発支援サーバに送信する変更ファイル作成・送信部と、
前記ソフトウェア開発支援サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備えており、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを要旨とする。
Further, in order to achieve the above object, a software development support server according to an aspect of the present invention includes:
A software development support server capable of communicating with a plurality of user terminals used by a plurality of users via a network and supporting software development using Git,
Each of the plurality of user terminals,
At least an application for using Git, a source code editor, and add-in software running on the source code editor are operable,
a first storage unit that stores differential data of files managed for each branch, user, and file, and the latest common commit;
a display unit;
a commit list creation/sending unit that creates a commit list, which is a list of commit histories, when the commit history is changed, and sends the commit list to the software development support server;
a common commit reception/storage unit that receives the latest common commit from the software development support server and stores it in the first storage unit;
When a change occurs in a predetermined file (hereinafter referred to as the first file), the differential data (hereinafter referred to as the first differential data) for the latest common commit of the first file is created and created. a change file creation/transmission unit that transmits the first difference data to the software development support server;
When receiving the differential data (hereinafter referred to as second differential data) of another user's predetermined file (hereinafter referred to as second file) from the software development support server, based on the latest common commit a change display unit that calculates the difference between the received second difference data and the second file of its own, and displays the calculated difference on the screen of the source code editor of the display unit;
and
a second storage unit that stores the differential data of files managed for each branch, user, and file, and the commit list transmitted from the plurality of user terminals;
a commit list receiving/storage unit that, when receiving the commit list transmitted from each of the plurality of user terminals, stores the received commit list in the second storage unit;
Common commit retrieval and notification for retrieving the latest common commit based on the commit list transmitted from each of the plurality of user terminals, and transmitting the retrieved latest common commit to each of the plurality of user terminals. Department and
When the first difference data is received from one of the user terminals, the first difference data is stored in the second storage unit, and the first difference data is used as the second difference data, a change file reception/transmission unit that transmits to the other user terminal;
The gist is to provide
また、上記目的を達成するため、本発明の一態様に係るソフトウェア開発支援プログラムは、
複数のユーザが利用する複数のユーザ端末と、該複数のユーザ端末のそれぞれとネットワークを介して相互に通信可能なサーバと、を備え、Gitを用いたソフトウェア開発を支援するソフトウェア開発支援システムにおける前記ユーザ端末のためのソフトウェア開発支援プログラムであって、
前記複数のユーザ端末は、それぞれ、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、を備え、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作する前記ソフトウェア開発支援プログラムと、が動作可能であり、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信ステップと、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶ステップと、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信ステップと、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示ステップと、
を前記ユーザ端末に実行させることを要旨とする。
Further, in order to achieve the above object, a software development support program according to one aspect of the present invention includes:
A software development support system for supporting software development using Git, comprising a plurality of user terminals used by a plurality of users, and a server capable of communicating with each of the plurality of user terminals via a network. A software development support program for a user terminal,
Each of the plurality of user terminals,
a first storage unit that stores differential data of files managed for each branch, user, and file, and the latest common commit;
a display unit;
At least an application for using Git, a source code editor, and the software development support program running on the source code editor are operable,
a commit list creation/send step of creating a commit list, which is a list of commit histories, and sending the commit list to the server when the commit history is changed;
a common commit receiving/storing step of receiving the latest common commit from the server and storing it in the first storage unit;
When a change occurs in a predetermined file (hereinafter referred to as the first file), the differential data (hereinafter referred to as the first differential data) for the latest common commit of the first file is created and created. a change file creating/sending step of sending the first differential data to the server;
When the differential data (hereinafter referred to as second differential data) of another user's predetermined file (hereinafter referred to as second file) is received from the server, based on the latest common commit, the received a change display step of calculating the difference between the second difference data and the second file of itself, and displaying the calculated difference on the screen of the source code editor of the display unit;
is to be executed by the user terminal.
本発明によれば、Gitのホスティングサービスのサーバにプッシュする以前において、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができる。 According to the present invention, it is possible to sufficiently facilitate communication between members before pushing the software to the Git hosting service server, thereby improving the quality of the software.
以下、本発明の実施の形態について図面を用いて説明する。 BEST MODE FOR CARRYING OUT THE INVENTION Embodiments of the present invention will be described below with reference to the drawings.
<ソフトウェア開発支援システムの構成>
図1は、本発明の実施の形態に係るソフトウェア開発支援システム10の概略構成図である。ソフトウェア開発支援システム10は、Gitを利用したソフトウェア開発を支援する情報処理システムであり、より詳しくは、例えば、GitHub(登録商標)などのGitのホスティングサービスを利用してソフトウェア開発を行う場合に好適に適用できる情報処理システムである。ソフトウェア開発支援システム10には、Gitのホスティングサービスを提供するサーバ(以下、Gitホスティングサービス提供サーバという) 4にプッシュする以前であっても、ソフトウェア開発者間のコミュニケーションを十分に図ることができるとともにソフトウェアの品質を向上させることができる仕組みが設けられている。以下、本実施の形態では、ソフトウェア開発支援システム10により提供されるサービスを、Git用ソフトウェア開発支援サービスと称して説明する。
<Configuration of software development support system>
FIG. 1 is a schematic configuration diagram of a software
ソフトウェア開発支援システム10は、ソフトウェア開発支援サーバ1と、複数のユーザ端末2と、を備える。ソフトウェア開発支援サーバ1は、Git用ソフトウェア開発支援サービスを提供する事業者が管理するサーバ措置であり、ユーザ端末2は、ソフトウェア開発者(以下、ユーザという)が用いる端末装置である。ソフトウェア開発支援サーバ1及び複数のユーザ端末2は、それぞれ、例えば、インターネット網、公衆網などからなる通信ネットワーク3に接続されている。また、ソフトウェア開発支援サーバ1及びユーザ端末2は、それぞれ、通信ネットワーク3を介して、Gitホスティングサービス提供サーバ4と接続されている。
A software
ソフトウェア開発支援サーバ1は、記憶部11と、制御部12と、通信部13と、を備える。
The software
記憶部11は、例えば、メモリ及びハードディスク等から構成され、Git用ソフトウェア開発支援サービスに関するデータやGit用ソフトウェア開発支援サービスを実行するためのプログラムを記憶する。
The
制御部12は、例えば、CPU及びメモリ等から構成され、記憶部11の制御や、各種データの転送、種々の演算、データの一時的な格納等を行うことにより、Git用ソフトウェア開発支援サービスの各種処理を実行する。
The
通信部13は、通信ネットワーク3を介してGitホスティングサービス提供サーバ4及びユーザ端末2とデータの送受信を行う。
The
なお、ソフトウェア開発支援サーバ1は、物理的に一つからなる装置の他、複数の装置がネットワーク接続されたシステムから構成されてもよく、複数の装置で構成された場合には、同一の場所にすべてが設置されていてもよいし、複数の場所に分散して設置されていてもよい。
The software
ユーザ端末2は、記憶部21と、制御部22と、通信部23と、UI(User Interface)部24と、を備える。ユーザ端末2は、例えば、パーソナルコンピュータが好適であるが、スマートフォンやタブレット端末でもよい。
The
記憶部21は、例えば、メモリ及びハードディスク等から構成され、Gitに関するデータやアプリケーションプログラムAPを記憶する。ここで、Gitに関するデータには、Gitホスティングサービス提供サーバ4から送信されるデータ、ソフトウェア開発支援サーバ1から送信されるデータ、ユーザ自らが作成したデータなどが含まれる。アプリケーションプログラムAPには、Gitのアプリ、例えば、Visual Studio Code(登録商標)などのソースコードエディタ、ソースコードエディタ上で動作するプラグインPLなどが含まれる。このソースコードエディタ上で動作するプラグインPLは、ソフトウェア開発支援サーバ1がユーザ端末2に提供するソフトウェアである。ユーザは、ユーザ端末2にプラグインPLをインストールすることにより、Git用ソフトウェア開発支援サービスを享受することが可能となる。
The
制御部22は、例えば、CPU及びメモリ等から構成され、記憶部21の制御や、各種データの転送、種々の演算、データの一時的な格納等を行うことにより、GitホスティングサービスやGit用ソフトウェア開発支援サービスのユーザ端末側の各種処理を実行する。
The
通信部23は、通信ネットワーク3を介してソフトウェア開発支援サーバ1、Gitホスティングサービス提供サーバ4、及び他のユーザ端末2とデータの送受信を行う。
The
UI部24は、ユーザ端末2の入力部及び出力部であり、ユーザからの入力操作を受け付けるとともに、入力操作に応じて制御部22にて処理された結果を出力するようになっている。入力部としては、例えば、キーボード、マウス、タッチパネルなどが想定され、出力部としては、例えば、ディスプレイ、スピーカなどが想定される。
The
なお、ユーザ端末2においてGit用ソフトウェア開発支援サービスを利用するには、ソフトウェア開発支援サーバ1にログインする(具体的には、メールアドレスなどのユーザIDとパスワードを入力してソフトウェア開発支援サーバ1に認証される)必要がある。ユーザ端末2においてソースコードエディタを起動している状態でソフトウェア開発支援サーバ1にログインすると、ソースコードエディタ上でプラグインPLが起動し、Git用ソフトウェア開発支援サービスを利用することが可能となる。
To use the software development support service for Git on the
本実施の形態では、ソフトPLが起動した状態において作業モードが2つ用意されている。ユーザはいずれかの作業モードを選択することができる。一つは、リアルタイムモードであり、もう一つは、非リアルタイムモードである。リアルタイムモードは、他のユーザの変更作業(例えば、ソースコードの変更、コメント入力など)が自らのユーザ端末2において即時反映される作業モードであり、ソフトウェア開発支援サーバ1とユーザ端末2間のデータ同期処理が頻繁に実行されるようになっている(例えば、変更のたび即時、1秒ごとなど)。一方、非リアルタイムモードは、他のユーザの変更作業が自らのユーザ端末2においてすぐには反映されない作業モードであり、ソフトウェア開発支援サーバ1とユーザ端末2間のデータ同期処理はリアルタイムモードよりも間隔を空けて実行されるようになっている(例えば、5分ごとなど)。非リアルタイムモードは、データ同期処理の間隔も長く、また、他のユーザの作業に基づく変更表示も最小限しか表示されないので、ユーザが自分の作業に集中できる作業モードとなっている。
In this embodiment, two work modes are prepared when the software PL is activated. The user can select either working mode. One is real-time mode and the other is non-real-time mode. The real-time mode is a work mode in which other users' modification work (for example, source code modification, comment input, etc.) is immediately reflected in their
なお、本実施の形態に係るGit用ソフトウェア開発支援サービスの各種処理を実行するプログラム、すなわち、ソフトウェア開発支援サーバ1用のプログラム、及びユーザ端末2のプラグインPLのプログラムは、上述したメモリなどの主記憶装置やハードディスクなどの補助記憶装置に格納されているものである。そして、このプログラムは、ハードディスク、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、BD(Blu-ray(登録商標) Disc)などのコンピュータが読み取り可能な記録媒体に記録することも、通信ネットワークを介して配信することも可能である。
A program for executing various processes of the software development support service for Git according to the present embodiment, that is, a program for the software
<ソフトウェア開発支援システムのデータ管理>
次に、図2~図5を用いて、ソフトウェア開発支援システム10のデータ管理について説明する。図2は、ソフトウェア開発支援サーバ1のデータ管理の模式図である。
<Data management of software development support system>
Next, data management of the software
図2に示すように、ソフトウェア開発支援サーバ1の記憶部11は、プロジェクトごとにデータを管理している。ここで、プロジェクトとは、Gitホスティングサービス提供サーバ4に作成されたレポジトリのことであり、本実施の形態では、このレポジトリ単位にデータが管理されている。また、各プロジェクトのデータは、大別して、メタデータと、ソースコートと、に分類される。メタデータは、プロジェクトに関するメタデータ、及びユーザに関するメタデータなどがある。プロジェクトに関するメタデータには、例えば、プロジェクトの難易度、ソースコードの更新頻度、プロジェクトの参加者などが含まれ、ユーザに関するメタデータには、例えば、ユーザの得意なプログラミング言語、コミュニケーション言語、レイティング(星の数など)、仕事の特徴、性格などが含まれる。
As shown in FIG. 2, the
ここで、ソースコードに着目すると、本実施の形態のソースコードは、ブランチ(branch)ごとに管理されており、さらにブランチ内ではユーザごとに管理されている。例えば、図2に示す例は、ブランチAのソースコードをユーザA、B及びCの3人で協働してソフトウェア開発している場合、ブランチBのソースコードをユーザD及びEの2人で協働してソフトウェア開発している場合のデータ管理を模式的に示している。 Focusing on the source code here, the source code of the present embodiment is managed for each branch, and within each branch, it is managed for each user. For example, the example shown in FIG. It schematically shows data management in the case of collaborative software development.
従来においては、複数のユーザが協働してソフトウェア開発を行う場合、各ユーザは、他のユーザの作業の影響を受けないようにするため、メインのブランチから自分専用のブランチを作成し、作業終了後にメインのブランチに自分のブランチの変更を取り込むという流れで作業をしていた。つまり、ユーザごとにブランチが作成されていた。本実施の形態の協働方法は、この従来のやり方とは異なり、図2に示すようなデータ管理を行っているため、同一のブランチにおいて複数のユーザが作業することが可能となっている。勿論、従来のように異なるブランチ間で複数のユーザが作業することも可能である。 In the past, when multiple users collaborated on software development, each user created his/her own branch from the main branch to avoid being affected by the work of other users. After finishing, I worked in the flow of incorporating the changes of my branch into the main branch. In other words, a branch was created for each user. Unlike this conventional method, the cooperation method of the present embodiment manages data as shown in FIG. 2, so that multiple users can work in the same branch. Of course, it is also possible for a plurality of users to work between different branches as before.
なお、後述する図4及び図5において説明するが、ソースコードは、ユーザ端末2においても、ソフトウェア開発支援サーバ1と同様に、ブランチ(branch)及びユーザごとに管理されている。ソフトウェア開発支援サーバ1とユーザ端末2は、ソースコードに関して同期を取る必要があるからである。
As will be described later with reference to FIGS. 4 and 5, the source code is managed for each branch and user in the
また、本実施の形態の記憶部11に記憶されるソースコードは、データトラフィックを考慮して、変更されたデータ(差分データ)のみであり、ソースコード全体のデータは、Gitホスティングサービス提供サーバ4において管理されている。より詳しくは、本実施の形態のソースコードの差分データは、ユーザ間における最新の共通コミット(commit)からの差分データとなっている。
In addition, the source code stored in the
ここで、図3を用いて最新の共通コミットの概念について説明する。図3は、ブランチAのソースコードをユーザA、ユーザB及びユーザCの3人で作業している場合の最新の共通コミットを説明する図である。 Here, the concept of the latest common commit will be described with reference to FIG. FIG. 3 is a diagram for explaining the latest common commit when three people, user A, user B, and user C, are working on the source code of branch A. As shown in FIG.
本実施の形態のユーザ端末2は、所定の契機(例えば、コミットした場合、ブランチ切り替えをした場合などコミット履歴が変更される場合)においてコミットリストを作成し、作成したコミットリストをソフトウェア開発支援サーバ1に送信するようになっている。ここで、コミットリストは、コミット履歴を示す一覧リストであり、コミットを一意に識別可能なID(例えば、コミットのSHA-1チェックサムなど。以下、コミットIDという)の直近数エントリ(例えば、直近10エントリなど)を、コミットした日時が新しい順序で並べた一覧リストである。例えば、図3は、ユーザAが用いるユーザ端末2がユーザAのコミットリスト、ユーザBが用いるユーザ端末2がユーザBのコミットリスト、ユーザCが用いるユーザ端末2がユーザCのコミットリストをソフトウェア開発支援サーバ1に送信する様子を示している。
The
ソフトウェア開発支援サーバ1は、同一のブランチで作業する各ユーザからコミットリストを受信すると、各コミットリストを比較して、最新の共通のコミットIDを検索する。図3に示した例では、102が最新の共通コミットのコミットIDとなる。ソフトウェア開発支援サーバ1は、最新の共通コミットを決定すると、決定した最新の共通コミットのコミットIDを同一のブランチで作業する各ユーザに送信する。図3に示した例では、ソフトウェア開発支援サーバ1は、ユーザA、ユーザB及びユーザCのユーザ端末2それぞれに、102を示すコミットIDを送信する。
When the software
ユーザ端末2は、最新の共通コミットのコミットIDを受信すると、受信した最新の共通コミットのコミットIDを記憶部21に記憶する。この結果、ユーザ端末2は、ユーザがソースコードエディタ上で所定のファイルに対して作業を行い、所定のファイルのソースコードが変更された場合、この変更が発生した所定のファイルのソースコードと、記憶部21に記憶された最新の共通コミットのコミットIDが示す所定のファイルのソースコードと、を比較してその差分データを作成し、作成した差分データをソフトウェア開発支援サーバ1に送信するようになっている。そして、ソフトウェア開発支援サーバ1は、ユーザ端末2から送信された差分データを記憶部11に記憶し、サーバ側でも差分データを管理するようになっている。
Upon receiving the commit ID of the latest common commit, the
なお、差分データは、2つのファイル間の違いを出力する既存のプログラム(例えば、diffなど)を用いて作成される。差分データは、例えば、送信元のユーザを一意に示す情報(例えば、ユーザIDなど)、レポジトリ(プロジェクト)を一意に識別可能な情報、ブランチを一意に識別可能な情報、ファイル名、変更箇所を示す情報(例えば、ソースコードの行)、変更内容などの情報を含んで構成される。また、所定のファイルのソースコードが変更された場合とは、詳しくは、レポジトリにある既存ファイルに対する変更、レポジトリにない新ファイルの追加、レポジトリにある既存ファイルの削除のいずれの場合も含まれる。 Note that the difference data is created using an existing program (for example, diff) that outputs the difference between two files. Difference data includes, for example, information that uniquely identifies the source user (e.g., user ID), information that uniquely identifies the repository (project), information that uniquely identifies the branch, file name, and changes. It includes information such as information to indicate (for example, line of source code), change content, and the like. Further, when the source code of a given file is changed, in detail, any of the cases of changing an existing file in the repository, adding a new file not in the repository, and deleting an existing file in the repository are included.
図4及び図5は、このようなソフトウェア開発支援サーバ1とユーザ端末2間のデータ管理方法を具体的に説明する図であり、ソフトウェア開発支援サーバ1とユーザ端末2の間においてデータの整合性を保つための同期処理を説明する模式図である。なお、図4及び図5は、ブランチAのソースコードをユーザA、ユーザB及びユーザCの3人で作業している場合であって、ユーザAがファイルγを変更した場合を示している。また、図4及び図5は、所定の一ファイルをやりとりする場合を示しているが、上述した同期処理のタイミングにおいて対象となるファイルが複数ある場合には、複数のファイルのそれぞれに対して、差分データのやりとりが発生する。
4 and 5 are diagrams specifically explaining the data management method between the software
図4は、ユーザAのユーザ端末2からソフトウェア開発支援サーバ1へのファイルγのアップロードの様子を示している。ユーザAがユーザ端末Aのソースコードエディタ上においてファイルγを変更した場合、プラグインPLは、ファイルγの共通コミットからの差分データを作成し、作成したファイルγの差分データをソフトウェア開発支援サーバ1に送信する。ソフトウェア開発支援サーバ1は、ユーザAからのファイルγの差分データを受信すると、ファイルγの差分データを記憶部11のユーザAのデータを管理する領域に記憶するとともに、ユーザAによるファイルγの差分データを同一ブランチで作業をする他のユーザ、つまりユーザB及びユーザCに送信する。
FIG. 4 shows how the file γ is uploaded from the
図5は、ソフトウェア開発支援サーバ1からユーザBのユーザ端末2へのファイルγのダウンロードの様子を示している。なお、ユーザCのユーザ端末2に対しても同様のダウンロードは実行されるが図示を省略する。
FIG. 5 shows how the file γ is downloaded from the software
ここで、ユーザBのユーザ端末2のプラグインPLは、ユーザAが変更したファイルγの差分データを受信すると、ユーザAが変更したファイルγの差分データを記憶部21に記憶するとともに同一ブランチで作業する他のユーザによってファイルγが変更されたことを示す変更表示をユーザBのユーザ端末2のソースコードエディタ上にて行う。この変更表示は、受信したファイルγの共通コミットからの差分データと、ユーザBの現在のファイルγと、を比較しての差分を表示するものである。各ユーザ端末2は、同一の共通コミットを有しているため、この共通コミットに基づいて変更表示の機能を実現することが可能となっている。なお、上述したように、この差分データの受信及び変更表示のタイミングは、ユーザの作業モードによって異なる。
Here, when the plug-in PL of the
図6及び図7に、ユーザBがリアルタイムモードで作業している場合に表示される画面例を示す。図6及び図7において、領域d1は、元々のソースコードエディタの画面であり、領域d2がプラグインPLの機能による画面である。つまり、領域d1は、ユーザがソフトウェア開発支援サーバ1にログインする前において表示されている領域であり(従来のソースコードエディタの表示画面)、領域d2は、ユーザがソフトウェア開発支援サーバ1にログインした後に表示される領域である。なお、図6は、ソースコードエディタでREADME.mdを開いている状態、図7は、ソースコードエディタでmain.jsを開いている状態を示している。
6 and 7 show examples of screens displayed when user B is working in the real-time mode. 6 and 7, area d1 is the screen of the original source code editor, and area d2 is the screen of the function of the plug-in PL. That is, the area d1 is the area displayed before the user logs into the software development support server 1 (the display screen of the conventional source code editor), and the area d2 is the area displayed after the user logs into the software
ユーザがソフトウェア開発支援サーバ1にログインすると、Git用ソフトウェア開発支援サービスとして、作業モードがリアルタイムモードの場合、(1)他のユーザにより変更が行われたファイルのハイライト表示d201、(2)画面上に表示されているファイル(ソースコード)に対して他のユーザにより変更された変更箇所を示すハイライト表示202、(3)領域d1のスクロールバー上における変更箇所のマーカ表示203、(4)ユーザ間のコメントのやりとりの表示206が、ユーザ端末2の画面上に表示される。
When a user logs in to the software
ハイライト表示d201は、現在作業をしているプロジェクトに係わる全ファイルの一覧の中から、他のユーザにより変更が行われたファイルをハイライトして表示するものである。これにより、ユーザが今開いていないファイルであっても他のユーザにより変更が行われたファイルを視覚的に把握することができる。 The highlight display d201 highlights and displays files that have been changed by other users from among a list of all files related to the project currently being worked on. As a result, even if the file is not currently open by the user, it is possible to visually grasp the file that has been changed by another user.
ハイライト表示202は、今開いているファイル(ソースコード)において、ユーザBの現在のソースコードと他のユーザ(具体的には、ユーザA、ユーザC)のソースコードとを比較して、他のユーザにより変更が行われた箇所をハイライトして表示するものである。これは、受信した差分データに基づいて、自分のソースコードと他のユーザのソースコードの差分から変更箇所を作成し、表示するものである。例えば、図6においては28行目及び29行目がハイライト表示されている。これにより、ユーザは今開いているファイルに関して他のユーザにより変更が行われたこと、変更が行われた箇所を視覚的に把握することができる。
なお、このハイライト表示202は、他のユーザにより変更が行われた箇所を示すだけであり、初期表示において他のユーザによる変更内容は示されない。また、各ユーザとの差分も示されない。
Note that this
つまり、ハイライト表示202の初期表示では、他の全ユーザ(具体的には、ユーザA、ユーザC)によって変更された箇所の合計がハイライト表示される。なお、本実施の形態では、個々のユーザを選択することも可能であり、寄稿者204に表示されたユーザを選択することにより、選択されたユーザとの差分を表示することも可能である。例えば、図6に示した画面例において、ユーザAが28行目及び29行目を変更した場合、初期表示では28行目及び29行目はハイライト表示202が行われるが、ユーザCを選択すると、ハイライト表示202は行われない。
That is, in the initial display of the
また、ハイライト表示202に対しては、ハイライト表示202の表示箇所をクリックすると、差分ハイライト表示202Nが行われる(図7参照)。差分ハイライト表示202Nは、今開いているファイル(ソースコード)に対して他のユーザが変更した内容を表示するものである。これにより、ユーザは今開いているファイルに関して他のユーザの変更内容を把握することができる。このように本実施の形態では、ソースコードの変更箇所を示すだけなく、ソースコードの変更内容も示すことができる。
Further, for the
マーカ表示203は、今開いているファイル(ソースコード)において、ユーザBの現在のソースコードと他のユーザ(具体的には、ユーザA、ユーザC)のソースコードとを比較して、他のユーザにより変更が行われた箇所をスクロールバー上にマーカ表示するものである。マーカ位置及びマーカ範囲は、ソースコードの変更位置及び変更範囲をスクロールバー上で相対的に示しているものである。マーカ表示203も、ハイライト表示202と同様、初期表示においては、他の全ユーザ(具体的には、ユーザA、ユーザC)によって変更された箇所の合計が表示されるが、ユーザを選択すれば、選択したユーザとの差分がマーカ表示される。
The
領域d2は、ユーザ端末2に表示されているファイルと同一のファイルを作業しているユーザの一覧204と、ブランチの一覧205と、コメント表示欄206と、コメント入力欄207と、を備える。
The area d2 includes a
ユーザの一覧204は、ユーザ端末2に表示されているファイルと同一のファイルを作業しているユーザの一覧である。ユーザの一覧204においては、ユーザの選択も可能である。ユーザを選択した場合には、上述したように、ハイライト表示202及びマーカ表示203は、選択したユーザとの差分が表示されることとなる。
The
ブランチの一覧205は、ブランチの一覧である。なお、本実施の形態では、同一ブランチで複数のユーザが作業していることを前提として説明をしているが、プラグインPLの機能はこれに限定されない。表示されたブランチの一覧の中からいずれかのブランチを選択することも可能である。ブランチを選択した場合には、選択したブランチとの差分が表示されることとなる。
The
コメント表示欄206は、他のユーザが入力したコメントが表示される欄であり、コメント入力欄207は、ユーザが他のユーザに対してコメントを入力する欄である。コメント入力欄207に入力された事項は、デフォルトでは、現在開いているファイルに対するコメントとして入力されが、これに限定されない。本実施の形態では、所定のファイル、所定のフォルダ、プロジェクト(リポジトリ)を指定することにより、指定した対象に対するコメントとして表示させることが可能である。例えば、フォルダを指定してコメントを入力した場合には、指定したファルダ配下の全ファイルに対するコメントとして扱われる。また、プロジェクト(リポジトリ)を指定してコメントを入力した場合には、指定したプロジェクト(リポジトリ)配下の全フォルダ、全ファイルに対するコメントとして扱われる。なお、ユーザが入力したコメントデータは、前述の差分データとして作成される。例えば、ファイルを指定したコメントを入力した場合には、送信元のユーザを一意に示す情報(例えば、ユーザIDなど)、レポジトリ(プロジェクト)を一意に識別可能な情報、ブランチを一意に識別可能な情報、ファイル名、コメントなどの情報を含んで構成される。
The
なお、ユーザがソフトウェア開発支援サーバ1にログインした状態であっても、作業モードが非リアルタイムモードの場合には、領域d2は表示されない。すなわち、作業モードが非リアルタイムモードの場合、領域d1だけが表示され、Git用ソフトウェア開発支援サービスとして、(1)他のユーザにより変更が行われたファイルのハイライト表示d201、(2)領域d1のスクロールバー上における変更箇所のマーカ表示203、だけがユーザ端末2の画面上に表示される(図示せず)。作業モードが非リアルタイムモードは領域d2が表示されていないことから、非リアルタイムモードを、Git用ソフトウェア開発支援サービスにおいてパネルを閉じているモード、リアルタイムモードを、Git用ソフトウェア開発支援サービスのパネルを開いているモードともいう。パネルを閉じているモードでは、領域d2が表示されず、また変更箇所の表示も最小限であることから、ユーザは、自らの作業により集中することができる。
Note that even if the user has logged into the software
このように本実施の形態では、一のユーザがユーザ端末2において所定のファイルに対してソースコードを変更する作業を実行した場合、プラグインPLが、ソフトウェア開発支援サーバ1を介して、同一ブランチで作業している他のユーザのユーザ端末2に対して、変更した所定のファイルの差分データを送信するので、同一ブランチで作業している各ユーザは、ユーザ端末2において他のユーザのソースコードの変更箇所や変更内容を確認することができる。また、ソースコードに関するコメントのやりとりもできるので、Gitのホスティングサービスのサーバにプッシュする以前の工程であっても、メンバ間のコミュニケーションを十分に図ることができ、結果としてソフトウェアの品質を向上させることが可能となっている。
As described above, in the present embodiment, when one user executes a work of changing the source code for a predetermined file on the
<ソフトウェア開発支援システムの動作>
次に、図8~図10を用いて、本実施の形態に係るソフトウェア開発支援システム10の動作について説明する。なお、以下の処理は、前提として、ユーザはユーザ端末2を介してソフトウェア開発支援サーバ1にログインしている状態にあるものとして説明する。
<Operation of Software Development Support System>
Next, operations of the software
まず、図8を用いて、ソフトウェア開発支援システム10のコミットリスト送信処理について説明する。図8は、ソフトウェア開発支援システム10のコミットリスト送信処理の流れを示すフローチャートである。コミットリスト送信処理は、ユーザ端末2がソフトウェア開発支援サーバ1にコミットリストを送信する処理である。
First, commit list transmission processing of the software
ユーザ端末2は、コミットリスト送信処理の実行タイミングであるか否かを判定する(ステップS1)。ここで、コミットリスト送信処理の実行タイミングとは、コミット履歴が更新されるタイミングであり、例えば、ユーザ端末2においてコミットが行われたり、ブランチの切り替えが行われたりしてコミット履歴が変更された場合である。コミットリスト送信処理の実行タイミングである場合には(ステップS1:YES)、コミットリストを作成し、作成したコミットリストをソフトウェア開発支援サーバ1に送信する(ステップS2、図3参照)。
The
ソフトウェア開発支援サーバ1は、コミットリストを受信すると(ステップS3)、受信したコミットリストを記憶部11に記憶し(ステップS4)、同一ブランチで作業している他のユーザのコミットリストを参照して、最新の共通コミットのコミットIDを決定する(ステップS5、図3参照)。次いで、ソフトウェア開発支援サーバ1は、決定した最新の共通コミットのコミットIDを同一ブランチで作業している全ユーザのユーザ端末2に送信する(ステップS6)。
When the software
ユーザ端末2は、最新の共通コミットのコミットIDを受信すると(ステップS7)、受信した最新の共通コミットのコミットIDを記憶部21に記憶する(ステップS8)。
Upon receiving the commit ID of the latest common commit (step S7), the
このように本実施の形態のコミットリスト送信処理によれば、プラグインPLの機能により、ユーザ端末2は、コミットリストの内容が変更されるたびにコミットリストをソフトウェア開発支援サーバ1に送信し、ソフトウェア開発支援サーバ1はコミットリストを受信するたびに最新の共通コミットを検索して、最新の共通コミットを同一のブランチで作業する全ユーザのユーザ端末2に送信するので、同一のブランチで作業する全ユーザは、最新の共通コミットを常に共有することができる。
As described above, according to the commit list transmission process of the present embodiment, the
次に、図9を用いて、ソフトウェア開発支援システム10の変更ファイル送信処理について説明する。図9は、ソフトウェア開発支援システム10の変更ファイル送信処理の流れを示すフローチャートである。変更ファイル送信処理は、ユーザ端末2がソフトウェア開発支援サーバ1に変更があるファイルの差分データを送信する処理である。
Next, change file transmission processing of the software
ユーザ端末2は、変更ファイル送信処理の実行タイミングであるか否かを判定する(ステップS11)。変更ファイル送信処理の実行タイミングとは、作業モードにより実行タイミングが異なる。例えば、作業モードがリアルタイムモードの場合には、1秒ごとに変更ファイル送信処理を実行し、作業モードが非リアルタイムモードの場合には、5分ごとに変更ファイル送信処理を実行してもよい。また、ユーザ端末2が最新の共通コミットを受信したタイミングを変更ファイル送信処理の実行タイミングとしてもよい。変更ファイル送信処理の実行タイミングである場合には(ステップS11:YES)、最新の共通コミットを記憶部21から取得して(ステップS12)、記憶部21の中から最新の共通コミットに対して変更されたファイルのすべてを検索する(ステップS13)。次いで、ユーザ端末2は、最新の共通コミットに対して変更されたすべてのファイルの差分データを作成し(ステップS14)、作成した変更があるファイルの差分データをソフトウェア開発支援サーバ1に送信する(ステップS15)。
The
ソフトウェア開発支援サーバ1は、ユーザ端末2から変更があるファイルの差分データを受信すると(ステップS16)、変更があるファイルの差分データを記憶部11に記憶する(ステップS17、図4参照)。
When the software
このように本実施の形態の変更ファイル送信処理によれば、プラグインPLの機能により、一のユーザ端末2においてファイルの変更が行われると、変更があるファイルがソフトウェア開発支援サーバ1に送信されるようになっているので、ソフトウェア開発支援サーバ1は、同一ブランチで作業している全ユーザのファイル変更を一元的に管理することができる。
As described above, according to the modified file transmission process of the present embodiment, when a file is modified in one
次に、図10を用いて、ソフトウェア開発支援システム10の変更ファイル受信処理について説明する。図10は、ソフトウェア開発支援システム10の変更ファイル受信処理の流れを示すフローチャートである。変更ファイル受信処理は、ユーザ端末2がソフトウェア開発支援サーバ1に変更があるファイルの差分データを要求して受信する処理である。
Next, change file reception processing of the software
なお、図8に示した変更ファイル受信処理は、作業モードが非リアルタイムモードの場合の変更ファイル受信処理の流れを示したフローチャートである。作業モードがリアルタイムモードの場合には、図7で説明した変更ファイル送信処理において、ソフトウェア開発支援サーバ1が差分データを受信すること契機として、図8のステップS24以降の工程を実行するようにしている。勿論、作業モードがリアルタイムモードの場合も、図8に示したステップS21~S27の工程に従って実行してもよい。
The change file reception process shown in FIG. 8 is a flow chart showing the flow of the change file reception process when the work mode is the non-real time mode. When the work mode is the real-time mode, when the software
ユーザ端末2は、変更ファイル受信処理の実行タイミングであるか否かを判定する(ステップS21)。変更ファイル受信処理の実行タイミングは、作業モードにより異なるようにしてもよい。例えば、作業モードがリアルタイムモードの場合には、1秒ごとに変更ファイル受信処理を実行し、作業モードが非リアルタイムモードの場合には、5分ごとにファイル受信処理を実行してもよい。変更ファイル受信処理の実行タイミングである場合には(ステップS21:YES)、ユーザ端末2は、変更ファイルの要求をソフトウェア開発支援サーバ1に送信する(ステップS22)。
The
ソフトウェア開発支援サーバ1は、変更ファイルの要求を受信すると(ステップS23)、記憶部11に記憶された全ユーザのデータの中から共通コミットに対して変更があるファイルを抽出して、抽出した変更があるファイルの差分データをユーザ端末2に送信する(ステップS24)。
When the software
ユーザ端末2は、変更があるファイルの差分データを受信すると(ステップS25)、受信した差分データを記憶部21に記憶し(ステップS26、図5参照)、ユーザ端末2に差分データがある旨の変更表示を行う(ステップS27、図6、図7参照)。なお、ユーザ端末2は、プラグインPLの作業モードに応じて表示態様を異ならせて変更表示を行う。
When the
このように本実施の形態の変更ファイル受信処理によれば、プラグインPLの機能により、一のユーザ端末2は、他のユーザ端末2においてファイルの変更が行われると、ソフトウェア開発支援サーバ1を介して変更があるファイルを受信するので、同一ブランチで作業している各ユーザは、他のユーザのソースコードの変更箇所や内容を確認することができる。
As described above, according to the modified file reception process of the present embodiment, when a file is modified in another
<総括>
図11は、本実施の形態のソフトウェア開発支援システム10におけるソフトウェア開発支援サーバ1及びユーザ端末の機能2を説明する図である。
<Summary>
FIG. 11 is a diagram for explaining
まず、ソフトウェア開発支援システム10は、図2、図4及び図5に示すように、ブランチ、ユーザ及びファイルごとに、ファイルの差分データを管理する構成を採用している。
First, as shown in FIGS. 2, 4, and 5, the software
ソフトウェア開発支援サーバ1は、このようなデータ管理の下、ユーザ端末2から送信されたコミットリストを受信し、記憶する機能f1と、複数のユーザのコミットリストに基づいて最新の共通コミットを検索して、複数のユーザ端末2に通知する機能f2と、ユーザ端末2から変更があるファイルを受信した場合、受信した変更があるファイルを他のユーザ端末2に送信する機能f3と、を備えている。
Under such data management, the software
一方、ユーザ端末2は、このようなデータ管理の下、適宜、コミットリストを作成し、コミットリストをソフトウェア開発支援サーバ1に送信する機能f4と、最新の共通コミットをソフトウェア開発支援サーバ1から受信し、記憶する機能f5と、最新の共通コミットと比べて自己のファイルに変更が発生した場合、変更があるファイルの差分データを作成し、作成した差分データをソフトウェア開発支援サーバ1に送信する機能f6と、ソフトウェア開発支援サーバ1から送信された他のユーザの変更があるファイルの差分データを受信して、受信した差分データを変更表示する機能f7と、を備えている。
On the other hand, under such data management, the
本実施の形態のソフトウェア開発支援システム10は、このような機能を備えることにより、Gitのホスティングサービスのサーバにプッシュする以前において、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができる。すなわち、ソフトウェア開発支援システム10では、Gitホスティングサービス提供サーバ4に対するプルリクエストを用いなくても、ユーザ同士の作業をレビューすることができる。また、ソフトウェア開発支援システム10では、Gitホスティングサービス提供サーバ4にプッシュする以前であっても、ローカル環境(ユーザ端末2間)で他のユーザが何をやっているか視覚的に把握することができ、ユーザ端末2間でソースコードの整合性を取ることができる。その結果、チームメンバ全員に受け入れられた後にGitホスティングサービス提供サーバ4に対してプッシュすることが可能となる。また、ソフトウェア開発支援システム10では、ユーザは、ユーザ自身の状況に応じた作業モードを選択することができるので、ユーザの望む作業環境を提供することができる。
The software
以上から、本実施の形態のソフトウェア開発支援システム10は、従来のGitホスティングサービスを利用したソフトウェア開発の問題点、例えば、プルリクエストを用いたソフトウェア開発では、プルリクエストの数が多く、また、他のメンバもソースコードを適切にレビューする時間が十分にないことも多く、各メンバや承認者のレビュー負担が大きいという問題、現在のGitを用いたソフトウェア開発では、他のメンバがプッシュやプルリクエストを行うまでは、他のメンバのソースコードを見ることができないため、他のメンバがどのような作業を行っているのか不明であるという問題を解決することができる。
As described above, the software
<その他の実施の形態>
なお、上記実施の形態のソフトウェア開発支援システム10では、複数のユーザが同一のブランチで協働してソフトウェア開発を行う場合について説明したが、ソフトウェア開発支援システム10では、図2、図4及び図5で示したように、ブランチ及びユーザごとにデータを管理しているため、ソフトウェア開発支援システム10は、複数のユーザが異なるブランチで協働してソフトウェア開発を行う場合にも適用は可能である。ただし、各ユーザが作業するブランチの親ブランチが同一であることが条件になる。この場合には、複数のユーザ間において共通のコミットを見つけられるからである。例えば、ユーザAがブランチAの子ブランチであるブランチB、ユーザBがブランチAの子ブランチであるブランチCで協働してソフトウェア開発をしている場合にも、ソフトウェア開発支援システム10の図11に示した機能は実現できる。したがって、この場合にも、Gitホスティングサービス提供サーバ4の機能を用いなくても、メンバ間のコミュニケーションを十分に図ることができ、ソフトウェアの品質を向上させることができる。
<Other embodiments>
In the software
また、上記実施の形態のソフトウェア開発支援システム10では、ソフトウェア開発支援サーバ1及びユーザ端末2は、変更があるファイルの差分データを管理し、この変更があるファイルの差分データを、ソフトウェア開発支援サーバ1とユーザ端末2間でやりとりしたが、ファイル全体を管理し、変更があるファイルのファイル全体(ソースコード全部)をソフトウェア開発支援サーバ1とユーザ端末2間でやりとりするようにしてもよい。すなわち、記憶部11及び記憶部21において、ブランチごと、ユーザごとにファイル全体を管理するようにしてもよい。
Further, in the software
また、上記実施の形態のソフトウェア開発支援システム10は、ソフトウェア開発支援サーバ1を、Gitホスティングサービス提供サーバ4とは別に設けてGit用ソフトウェア開発支援サービスを提供したが、ソフトウェア開発支援サーバ1がGitホスティングサービス提供サーバ4の機能を兼ね備えてもよい。
In the software
また、上記実施の形態のソフトウェア開発支援システム10の変更ファイル送信処理は、最新の共通コミットからの差分データを作成し、送信していたが、一旦、最新の共通コミットからの差分データを作成し、送信した後は、最新の共通コミットが変更されるまでの間、前回送信したデータからの差分を作成し、送信するようにしてもよい。さらにトラフィックを抑制することができる。
In addition, the change file transmission processing of the software
以上、本発明の実施の形態について説明してきたが、本発明は、上述した実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲において、本発明の実施の形態に対して種々の変形や変更を施すことができ、そのような変形や変更を伴うものもまた、本発明の技術的範囲に含まれるものである。また、発明の実施の形態に記載された、作用及び効果は、本発明から生じる最も好適な作用及び効果を列挙したに過ぎず、本発明による作用及び効果は、本発明の実施の形態に記載されたものに限定されるものではない。 Although the embodiments of the present invention have been described above, the present invention is not limited to the above-described embodiments, and various modifications can be made to the embodiments of the present invention without departing from the gist of the present invention. Modifications and modifications can be applied, and those involving such modifications and modifications are also included in the technical scope of the present invention. Further, the actions and effects described in the embodiments of the invention are merely enumerations of the most suitable actions and effects resulting from the present invention, and the actions and effects of the present invention are described in the embodiments of the invention. are not limited to those listed.
1 ソフトウェア開発支援サーバ
2 ユーザ端末
3 通信ネットワーク
4 Gitホスティングサービス提供サーバ
10 ソフトウェア開発支援システム
11,21 記憶部
12,22 制御部
13,23 通信部
24 UI部
25 AP(アプリケーションプログラム)
1 software
Claims (5)
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信部と、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信部と、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備え、
前記サーバは、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを特徴とするソフトウェア開発支援システム。 A software development support system that supports software development using Git, comprising a plurality of user terminals used by a plurality of users, and a server capable of mutually communicating with each of the plurality of user terminals via a network. hand,
Each of the plurality of user terminals,
At least an application for using Git, a source code editor, and add-in software running on the source code editor are operable,
a first storage unit that stores differential data of files managed for each branch, user, and file, and the latest common commit;
a display unit;
a commit list creation/sending unit that creates a commit list, which is a list of commit histories, and sends the commit list to the server when the commit history is changed;
a common commit reception/storage unit that receives the latest common commit from the server and stores it in the first storage unit;
When a change occurs in a predetermined file (hereinafter referred to as the first file), the differential data (hereinafter referred to as the first differential data) for the latest common commit of the first file is created and created. a change file creating/sending unit that sends the first differential data to the server;
When the differential data (hereinafter referred to as second differential data) of another user's predetermined file (hereinafter referred to as second file) is received from the server, based on the latest common commit, the received a change display unit that calculates the difference between the second difference data and the second file of itself, and displays the calculated difference on the screen of the source code editor of the display unit;
with
The server is
a second storage unit that stores the differential data of files managed for each branch, user, and file, and the commit list transmitted from the plurality of user terminals;
a commit list receiving/storage unit that, when receiving the commit list transmitted from each of the plurality of user terminals, stores the received commit list in the second storage unit;
Common commit retrieval and notification for retrieving the latest common commit based on the commit list transmitted from each of the plurality of user terminals, and transmitting the retrieved latest common commit to each of the plurality of user terminals. Department and
When the first difference data is received from one of the user terminals, the first difference data is stored in the second storage unit, and the first difference data is used as the second difference data, a change file reception/transmission unit that transmits to the other user terminal;
A software development support system comprising:
前記複数のユーザ端末は、それぞれ、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作するアドインソフトと、が動作可能であり、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記ソフトウェア開発支援サーバに送信するコミットリスト作成・送信部と、
前記ソフトウェア開発支援サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶部と、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記ソフトウェア開発支援サーバに送信する変更ファイル作成・送信部と、
前記ソフトウェア開発支援サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示部と、
を備えており、
ブランチ、ユーザ及びファイルごとに管理されたファイルの前記差分データと、前記複数のユーザ端末から送信された前記コミットリストと、を記憶する第二の記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストを受信した場合、受信した前記コミットリストを前記第二の記憶部に記憶するコミットリスト受信・記憶部と、
前記複数のユーザ端末のそれぞれから送信された前記コミットリストに基づいて、前記最新の共通コミットを検索し、検索した前記最新の共通コミットを前記複数のユーザ端末のそれぞれに送信する共通コミット検索・通知部と、
一の前記ユーザ端末から前記第一の差分データを受信した場合、前記第一の差分データを前記第二の記憶部に記憶するとともに、前記第一の差分データを前記第二の差分データとして、他の前記ユーザ端末に送信する変更ファイル受信・送信部と、
を備えることを特徴とするソフトウェア開発支援サーバ。 A software development support server capable of communicating with a plurality of user terminals used by a plurality of users via a network and supporting software development using Git,
Each of the plurality of user terminals,
At least an application for using Git, a source code editor, and add-in software running on the source code editor are operable,
a first storage unit that stores differential data of files managed for each branch, user, and file, and the latest common commit;
a display unit;
a commit list creation/sending unit that creates a commit list, which is a list of commit histories, when the commit history is changed, and sends the commit list to the software development support server;
a common commit reception/storage unit that receives the latest common commit from the software development support server and stores it in the first storage unit;
When a change occurs in a predetermined file (hereinafter referred to as the first file), the differential data (hereinafter referred to as the first differential data) for the latest common commit of the first file is created and created. a change file creation/transmission unit that transmits the first difference data to the software development support server;
When receiving the differential data (hereinafter referred to as second differential data) of another user's predetermined file (hereinafter referred to as second file) from the software development support server, based on the latest common commit a change display unit that calculates the difference between the received second difference data and the second file of its own, and displays the calculated difference on the screen of the source code editor of the display unit;
and
a second storage unit that stores the differential data of files managed for each branch, user, and file, and the commit list transmitted from the plurality of user terminals;
a commit list receiving/storage unit that, when receiving the commit list transmitted from each of the plurality of user terminals, stores the received commit list in the second storage unit;
Common commit retrieval and notification for retrieving the latest common commit based on the commit list transmitted from each of the plurality of user terminals, and transmitting the retrieved latest common commit to each of the plurality of user terminals. Department and
When the first difference data is received from one of the user terminals, the first difference data is stored in the second storage unit, and the first difference data is used as the second difference data, a change file reception/transmission unit that transmits to the other user terminal;
A software development support server comprising:
前記複数のユーザ端末は、それぞれ、
ブランチ、ユーザ及びファイルごとに管理されたファイルの差分データと、最新の共通コミットと、を記憶する第一の記憶部と、
表示部と、を備え、
少なくとも、Gitを利用するためのアプリケーションと、ソースコードエディタと、ソースコードエディタ上で動作する前記ソフトウェア開発支援プログラムと、が動作可能であり、
コミット履歴が変更された場合、コミット履歴の一覧リストであるコミットリストを作成し、前記サーバに送信するコミットリスト作成・送信ステップと、
前記サーバから、前記最新の共通コミットを受信して、前記第一の記憶部に記憶する共通コミット受信・記憶ステップと、
所定のファイル(以下、第一のファイルという)において変更が生じた場合、該第一のファイルの前記最新の共通コミットに対する前記差分データ(以下、第一の差分データという)を作成し、作成した前記第一の差分データを前記サーバに送信する変更ファイル作成・送信ステップと、
前記サーバから、他のユーザの所定のファイル(以下、第二のファイルという)の前記差分データ(以下、第二の差分データという)を受信した場合、前記最新の共通コミットに基づいて、受信した前記第二の差分データと、自己の前記第二のファイルとの差分を算出し、算出した差分を前記表示部のソースコードエディタの画面上に表示する変更表示ステップと、
を前記ユーザ端末に実行させることを特徴とするソフトウェア開発支援プログラム。 A software development support system for supporting software development using Git, comprising a plurality of user terminals used by a plurality of users, and a server capable of communicating with each of the plurality of user terminals via a network. A software development support program for a user terminal,
Each of the plurality of user terminals,
a first storage unit that stores differential data of files managed for each branch, user, and file, and the latest common commit;
a display unit;
At least an application for using Git, a source code editor, and the software development support program running on the source code editor are operable,
a commit list creation/send step of creating a commit list, which is a list of commit histories, and sending the commit list to the server when the commit history is changed;
a common commit receiving/storing step of receiving the latest common commit from the server and storing it in the first storage unit;
When a change occurs in a predetermined file (hereinafter referred to as the first file), the differential data (hereinafter referred to as the first differential data) for the latest common commit of the first file is created and created. a change file creating/sending step of sending the first differential data to the server;
When the differential data (hereinafter referred to as second differential data) of another user's predetermined file (hereinafter referred to as second file) is received from the server, based on the latest common commit, the received a change display step of calculating the difference between the second difference data and the second file of itself, and displaying the calculated difference on the screen of the source code editor of the display unit;
A software development support program characterized by causing the user terminal to execute.
ファイル一覧において、他のユーザによって変更されたファイルを、変更を示す態様で表示する第一の変更表示ステップと、
ソースコードエディタで現在開いているファイルにおいて、他のユーザによって変更された箇所を、変更を示す態様で表示する第二の変更表示ステップと、
を備えることを特徴とする請求項3記載のソフトウェア開発支援プログラム。 The change display step includes:
a first change display step of displaying a file changed by another user in a file list in a manner indicating the change;
a second change display step of displaying a portion changed by another user in a file currently open in the source code editor in a manner indicating the change;
4. The software development support program according to claim 3, comprising:
コメントを入力するコメント入力ステップを備え、
前記変更ファイル作成・送信ステップは、前記コメント入力ステップにより入力されたコメントを前記第一の差分データとして作成し、
前記変更表示ステップは、他のユーザによって入力されたコメントを表示するコメント表示ステップを備えることを特徴とする請求項3又は4記載のソフトウェア開発支援プログラム。
The change display step includes:
Equipped with a comment input step for inputting a comment,
The change file creation/transmission step creates the comment input by the comment input step as the first difference data,
5. The software development support program according to claim 3, wherein said change display step comprises a comment display step of displaying comments input by other users.
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2020219816A JP7150002B2 (en) | 2020-12-29 | 2020-12-29 | Software development support system, software development support server and software development support program |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP2020219816A JP7150002B2 (en) | 2020-12-29 | 2020-12-29 | Software development support system, software development support server and software development support program |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2022104700A JP2022104700A (en) | 2022-07-11 |
| JP7150002B2 true JP7150002B2 (en) | 2022-10-07 |
Family
ID=82361051
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2020219816A Active JP7150002B2 (en) | 2020-12-29 | 2020-12-29 | Software development support system, software development support server and software development support program |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JP7150002B2 (en) |
Families Citing this family (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN116319633A (en) * | 2022-12-23 | 2023-06-23 | 百度在线网络技术(北京)有限公司 | Instant messaging method, device, equipment and storage medium |
Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2015186256A1 (en) | 2014-06-06 | 2015-12-10 | 株式会社日立製作所 | Development support system |
| WO2019026248A1 (en) | 2017-08-03 | 2019-02-07 | 株式会社日立製作所 | Program development assistance device, program development assistance method, and program development assistance program |
| US20200004518A1 (en) | 2018-06-28 | 2020-01-02 | Atlassian Pty Ltd | Systems and methods for tracking source code deployments |
| US20200192638A1 (en) | 2017-08-22 | 2020-06-18 | Codestream, Inc. | Systems and methods for providing an instant communication channel within integrated development environments |
-
2020
- 2020-12-29 JP JP2020219816A patent/JP7150002B2/en active Active
Patent Citations (4)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2015186256A1 (en) | 2014-06-06 | 2015-12-10 | 株式会社日立製作所 | Development support system |
| WO2019026248A1 (en) | 2017-08-03 | 2019-02-07 | 株式会社日立製作所 | Program development assistance device, program development assistance method, and program development assistance program |
| US20200192638A1 (en) | 2017-08-22 | 2020-06-18 | Codestream, Inc. | Systems and methods for providing an instant communication channel within integrated development environments |
| US20200004518A1 (en) | 2018-06-28 | 2020-01-02 | Atlassian Pty Ltd | Systems and methods for tracking source code deployments |
Also Published As
| Publication number | Publication date |
|---|---|
| JP2022104700A (en) | 2022-07-11 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US10554664B2 (en) | Activity feed for hosted files | |
| US9342814B2 (en) | Presentation access tracking system | |
| EP3075158B1 (en) | Collaborative video editing in a cloud environment | |
| US8504981B2 (en) | Application development support device, program, and recording medium | |
| US12032954B2 (en) | Issue tracking system | |
| US9762664B2 (en) | Optimistic concurrency utilizing distributed constraint enforcement | |
| EP2256624A1 (en) | Application development support device, program and recording medium | |
| US20050114784A1 (en) | Rich media publishing | |
| WO2007044621A2 (en) | Systems and methods for uploading and downloading files in a distributed network | |
| TW200424868A (en) | Method for managing file replication in applications | |
| US11727190B1 (en) | Previews for collaborative documents | |
| JP2019509530A (en) | Native application collaboration | |
| KR20080039393A (en) | Copy and update files | |
| JP7150002B2 (en) | Software development support system, software development support server and software development support program | |
| JP5352225B2 (en) | Data reuse method, data reuse system, data reuse device, and data reuse program | |
| JP4714199B2 (en) | Application development support apparatus and program | |
| CN112567356A (en) | Method, device, system, medium, processor and terminal for forming fusion model | |
| JP4469818B2 (en) | Data management apparatus, data program, and data management method | |
| JP4909432B2 (en) | Content management system | |
| JP2005078224A (en) | Web site managing system | |
| JP2006120016A (en) | Data citation system | |
| CN113656052B (en) | Routing update control method and its device, equipment and medium | |
| JP2015141540A (en) | Information processor, wording association presentation system, and information processing program | |
| JP2012133499A (en) | Data management device, data management system and data management program | |
| JP2012053565A (en) | Information processor, information processing system and program |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20210331 |
|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20210719 |
|
| A711 | Notification of change in applicant |
Free format text: JAPANESE INTERMEDIATE CODE: A711 Effective date: 20211109 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20211109 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20220920 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20220927 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 7150002 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |