JP5973091B2 - 開発支援システム - Google Patents
開発支援システム Download PDFInfo
- Publication number
- JP5973091B2 JP5973091B2 JP2015556316A JP2015556316A JP5973091B2 JP 5973091 B2 JP5973091 B2 JP 5973091B2 JP 2015556316 A JP2015556316 A JP 2015556316A JP 2015556316 A JP2015556316 A JP 2015556316A JP 5973091 B2 JP5973091 B2 JP 5973091B2
- Authority
- JP
- Japan
- Prior art keywords
- branch
- information
- development
- repository
- social coding
- 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
- 238000011161 development Methods 0.000 title claims description 158
- 238000012545 processing Methods 0.000 claims description 69
- 238000000034 method Methods 0.000 claims description 33
- 230000008569 process Effects 0.000 claims description 28
- 230000008859 change Effects 0.000 claims description 24
- 230000007547 defect Effects 0.000 description 60
- 238000012937 correction Methods 0.000 description 34
- 238000010586 diagram Methods 0.000 description 16
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 238000012552 review Methods 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 230000010365 information processing Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008676 import Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000007257 malfunction Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Description
本発明は、プログラム開発の技術に関し、特に、ソーシャルコーディングシステムを利用したプログラム開発を支援する開発支援システムに適用して有効な技術に関するものである。
近年では、プログラム開発において、ソースコードや設計資料、仕様書などの開発成果物をリポジトリに登録してバージョン管理や変更履歴管理等を行ういわゆるリポジトリ管理システムに加え、開発案件における課題(Issue)管理の機能や、成果物のレビュー、リポジトリへの反映などの開発プロセスの管理機能などを有するいわゆるソーシャルコーディングシステムが利用されつつある。ソーシャルコーディングシステムでは、例えば、リポジトリにおいて開発・修正用のブランチを作成する機能や、開発成果物を含むブランチをリポジトリにマージするためのPullリクエスト機能などを有している。ソーシャルコーディングシステムとしては、例えば、GitHub(非特許文献1)などがある。
また、これに関連する技術として、例えば、特開2013−191003号公報(特許文献1)には、リポジトリ管理システムと、懸案管理システムとを連携させ、懸案登録から自動的にブランチを作成するブランチリポジトリ管理システムが記載されている。
GitHubホームページ、[平成26年4月23日検索]、インターネット<URL:https://github.com>
非特許文献1等に記載されたソーシャルコーディングシステムは、例えば、課題管理機能を用いて、開発成果物と課題とを関連付けて管理するとともに、設計者等が不具合や新規機能について議論を行った後、開発者が実際にソースコード等を修正し、その修正差分を公開し、レビュアーによるソースコードレビューを実施し、問題がなければリポジトリにマージ(統合)する、といった流れでプログラム等のソフトウェアの開発を支援するツールである。
しかしながら、例えば、ソースコードの修正差分を管理するために、ソースコードの修正を実施する前にリポジトリ上でブランチを手動で作成する必要がある。また、ソースコードレビューを実施する際に、どの課題(Issue)で議論された内容に係る修正なのかをレビュアーが把握可能とするために、例えば、ソースコードの修正を登録(コミット)する際のコメント(コミットコメント)に課題(Issue)を識別する番号等を手動で付与して関連付けする必要がある。また、修正対象のソースコードについて、レビューが完了した後にどのブランチにマージすべきかの情報を予め手動で指定しておくことも必要となる。
このように、課題(Issue)、ブランチ、コミット等の関連付けを手動で行う必要があることから、ユーザの負担が大きいとともに、例えば、関連付けを失念してしまったり、ミスにより間違って関連付けされてしまったりする場合があるという課題があった。
また、特許文献1に記載されたブランチリポジトリ管理システムは、ソーシャルコーディングシステムを想定したシステムではなく、単に懸案とブランチとの関連付けとしてブランチの生成を自動的に行うものであり、ソーシャルコーディングシステムにおける上記の課題を解決できるものではない。また、特許文献1に記載されたブランチリポジトリ管理システムを、ソーシャルコーディングシステムを用いたプログラム開発に適用した場合、細かい単位で課題(Issue)を登録することが推奨されることから、多くの課題(Issue)が登録され、その結果多くのブランチが作成されてしまい、ブランチの選択や表示などのブランチ操作の操作性が大きく低下するという課題があった。
そこで本発明の目的は、ソーシャルコーディングシステムにおいて、課題(Issue)に対応するブランチの生成数を抑えつつ、課題(Issue)、ブランチ、コミット等の関連付けを自動的に行う開発支援システムを提供することにある。
本発明の前記ならびにその他の目的と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、以下のとおりである。
本発明の代表的な実施の形態による開発支援システムは、開発成果物およびその変更履歴をリポジトリに保持するリポジトリ管理システムと、前記開発成果物と課題とを関連付けて管理するソーシャルコーディングシステムと、を有する開発支援システムであって、前記ソーシャルコーディングシステムは、前記課題の情報を管理する課題管理部と、前記リポジトリにおいてブランチの生成を行うブランチ処理部と、を有し、前記ブランチ処理部は、指定された前記課題の情報に基づいて、分岐元となる第1のブランチを特定し、前記第1のブランチから分岐させて、前記課題に対応する第2のブランチを生成するものである。
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
すなわち、本発明の代表的な実施の形態によれば、ソーシャルコーディングシステムにおいて、課題(Issue)に対応するブランチの生成数を抑えつつ、課題(Issue)、ブランチ、コミット等の関連付けを自動的に行うことで、ソースコード修正作業、ひいてはソフトウェア開発作業における作業効率を向上させることが可能となる。
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一の符号を付し、その繰り返しの説明は省略する。また、以下においては、本発明の特徴を分かり易くするために、従来の技術と比較して説明する。
<概要>
図14は、ソーシャルコーディングシステムを利用した従来の開発支援システムの構成例について概要を示した図である。開発支援システム1は、ソーシャルコーディングシステム100およびリポジトリ管理システム200の各情報処理システムと、複数のユーザの情報処理端末であるユーザ端末400とがネットワーク500を介して接続される構成を有している。さらに課題の管理を個別に行う課題管理システム300を有していてもよい。
図14は、ソーシャルコーディングシステムを利用した従来の開発支援システムの構成例について概要を示した図である。開発支援システム1は、ソーシャルコーディングシステム100およびリポジトリ管理システム200の各情報処理システムと、複数のユーザの情報処理端末であるユーザ端末400とがネットワーク500を介して接続される構成を有している。さらに課題の管理を個別に行う課題管理システム300を有していてもよい。
リポジトリ管理システム200は、例えば、リポジトリデータベース(DB)201に保持されたリポジトリを管理するリポジトリ管理部210、リポジトリ上で作成されているブランチを管理するブランチ管理部220、およびリポジトリにおいて開発のために作成し分岐させたブランチを分岐元のブランチにマージ(統合)するマージ処理部230などを有する。これらの各部は、例えば、ソフトウェアプログラムによって実装される。
一方、ソーシャルコーディングシステム100は、例えば、開発者等のユーザに対して認証等の処理を行うユーザ認証部110、課題DB101に保持された開発案件における課題(Issue、以下では単に「課題」と記載する場合がある)を管理する課題管理部120、およびリポジトリ管理システム200を介してリポジトリ上でのブランチに対する各種の処理を行うブランチ処理部130などを有する。これらの各部も、例えば、ソフトウェアプログラムによって実装される。ソーシャルコーディングシステム100としては、例えば、上述したGitHubやGitLabなどが知られている。なお、課題管理部120は、課題管理システム300の課題管理部310によって代替してもよいし、並列的に課題DB101を管理する構成であってもよい。
各開発者等が使用するユーザ端末400は、それぞれ、ソーシャルコーディングシステム100のクライアントアプリケーションであるソーシャルコーディングクライアント410を有する。ソーシャルコーディングクライアント410は、各開発者が課題に係る開発を行うため、開発用に作成されたブランチを含むリポジトリの一部もしくは全部を、必要に応じてリポジトリDB201からローカルリポジトリDB401に取り込むことができ、リポジトリに係る処理を行うためのリポジトリ処理部411や、開発対象の課題の管理を行う課題処理部412などの各部を有する。なお、ソーシャルコーディングクライアント410は、全部もしくは一部が専用のクライアントアプリケーションプログラムとして実装されていてもよいし、ソーシャルコーディングシステム100と連携してWebブラウザ上で稼働するWebアプリケーションとして実装されていてもよい。
図15は、ソーシャルコーディングシステムを利用した従来の開発支援システムにおける開発時の作業フローの例について概要を示した図である。まず、新規の機能開発もしくは不具合(バグ)対策についての検討が設計者や開発リーダー等により行われる(S1)。このとき、検討結果として作成された課題を新たに課題DB101に登録する。具体的には、当該課題を表象する情報として、例えば、機能開発の場合は変更票、不具合対策の場合は不具合票をシステム上発行する。
次に、登録された課題(発行された変更票もしくは不具合票)に基づいて、対応を開始する(S2)。具体的には、リポジトリDB201上で、当該課題に係る開発を行うための管理用のブランチを作成する。なお、ここまでの処理は、ソーシャルコーディングシステム100およびリポジトリ管理システム200上で、設計者や開発リーダー、プロジェクトマネージャー等(以下ではこれらを総称して「リーダー」と記載する場合がある)により行われるのが通常である。
次に、開発の準備として、開発者が上記の管理用ブランチをローカルリポジトリDB401に取り込んで、開発者用のブランチを作成する(S3)。その後、開発者は、作成された開発者ブランチに対応する開発を行う(S4)。具体的には、ソースコードを作成・修正し、手動でのテストを行い、テストが完了したソースコードを開発者ブランチに対して登録(コミット)する。さらに、開発した部分について、管理用ブランチへの取り込み要求(Pullリクエスト)を行う(S5)。具体的には、リポジトリDB201からローカルリポジトリDB401に対して最新の管理用ブランチを取り込み、これを開発者ブランチに反映させた上で、リポジトリ管理システム200に対して管理用ブランチへの取り込み要求(Pullリクエスト)を行う。
Pullリクエストがされると、リーダーは、ソーシャルコーディングシステム100上で開発者ブランチにおける開発内容をレビューし、必要に応じて自動テスト等を行い、問題がなければこれを管理用ブランチにマージすることで取り込む(S6)。その後、さらに課題としてのレビューを行い、必要に応じて自動テスト等を行い、問題がなければこれをメインブランチにマージすることで取り込むとともに本番環境等にリリースする(S7)。
ここで、例えば、ステップS2やS3においては、機能開発や不具合対応の案件毎に管理用ブランチを作成し、さらに複数の開発者での分散開発を可能とするよう、開発者毎に開発者ブランチを作成することになるが、従来の開発支援システムにおける開発では、これらのブランチは手動で作成する必要があり、煩雑で作業負荷が高い状況となっている。
また、ステップS4でソースコードの開発が行われてテストが完了すると、開発用ブランチに対してコミットが行われるが、各コミットは、ステップS1で作成された課題に対応することから、コミット毎に対応する課題との関連付けを行うことが必要となるが、これも現状では手動で行う必要があり、煩雑で作業負荷が高い状況となっている。
さらに、ステップS5で、ステップS4で行ったコミットに係る開発部分を対応する管理用ブランチにマージするために、Pullリクエストを作成するが、当該処理はブランチ間でのマージが前提となる。従って、Pullリクエストの際にマージ元となる開発者ブランチとマージ先となる管理用ブランチを指定する必要があるが、これも現状では手動で行う必要がある。
図16〜図18は、上述したような従来の開発支援システムにおける開発での状況をより詳細に説明した図である。図16は、従来の開発支援システムにおける開発で取り扱われるデータの関連の例を表したクラス図である。図示するように、ソーシャルコーディングシステム100もしくは課題管理システム300では、課題が管理される。さらに、ソーシャルコーディングシステム100では、Pullリクエストが管理される。また、リポジトリ管理システム200(ユーザ端末400上のローカルリポジトリDB401を含む)では、ブランチとコミットが管理される。
課題は、上述したように、機能追加項目を管理する変更票と、不具合修正を管理する不具合票とに分けられる。開発作業を開始する際には、リポジトリ管理システム200のリポジトリ上の管理用ブランチとして、課題に対応する機能開発用ブランチもしくは不具合修正用ブランチを作成する。しかしながら、上述したように、これらのブランチは現状では手動で作成する必要がある。従って、変更票や不具合票と、機能開発用ブランチや不具合修正用ブランチとの間の関連付け(リンク作成)についても手動で行う必要がある(図中では点線で関連を表している)。なお、特許文献1に記載された技術では、変更票(特許文献1における懸案に相当)に対応する機能開発用ブランチについては自動的に作成することができるが、不具合票に対応する不具合修正用ブランチについては言及されていない。
開発作業時には、上述したように、複数の開発者がそれぞれ独立して並行的に分散開発ができるよう、開発者毎に開発者ブランチ(機能開発用開発者ブランチもしくは不具合修正用開発者ブランチ)を作成することになるが、従来の開発支援システムにおける開発では、これらの開発者ブランチも手動で作成する必要がある。なお、特許文献1に記載された技術では、開発者ブランチに相当するブランチの作成については言及されていない。
開発者ブランチの作成後、ソースコードの作成・修正、テスト等の開発が行われ、完了したものを1つのコミットとして登録するが、上述したように、各コミットは課題に対応する。従って、コミット毎に対応する課題(実際は対応する変更票もしくは不具合票)との関連付けを行うことが必要となるが、これも現状では手動で行う必要がある(図中では点線で関連を示している)。なお、図示するように、コミットは1つの課題に対して複数に分割して登録することができる。
そして、コミットに対応する開発用ブランチを、対応する管理用ブランチ(機能開発用ブランチもしくは不具合修正用ブランチ)にマージ(統合)するために、Pullリクエストが作成される。実際のブランチのマージ処理は、Pullリクエストに対するレビュー、承認等を経た後に行われる。上述したように、Pullリクエストでは、マージ元となる開発者ブランチとマージ先となる管理用ブランチを指定する必要があるが、これも現状では手動で行う必要がある。また、Pullリクエストは、必ずいずれかの課題(実際は対応する変更票もしくは不具合票)に対応しているが、これらを関連付けてシステム上で管理するには、例えば、Pullリクエストのコメントに対応する課題の識別情報を手動で記載するなどの作業が必要となる(図中では点線でこれらの関連を示している)。
なお、Pullリクエストには複数のコミットが関連付けられるが、マージ元の開発用ブランチとマージ先の管理用ブランチが指定されると、マージ先の管理用ブランチにはない、マージ元の開発用ブランチ内のコミット、すなわち、マージ先の管理用ブランチからマージ元の開発用ブランチに分岐して登録された全てのコミットとして特定される。通常、リポジトリ管理システム200においては、ブランチは必ず1つの親ブランチから派生して作成されている、すなわち、どのブランチも必ず親ブランチのある部分から分岐して作成されているので、上記のようにPullリクエストに対応するコミットを特定することができる。
図17は、上述したような、課題、管理用ブランチ、開発用ブランチ、コミット、およびPullリクエストの間の具体的な対応関係について例を示した図である。すなわち、機能開発案件においては、変更票と機能開発用ブランチとが1対1で関連付けられ、機能開発用ブランチには開発者毎の機能開発用開発者ブランチが1対多で関連付けられる。また、機能開発用開発者ブランチには、複数のコミット(機能開発修正コミット)が1対多で関連付けられる。そして、複数の機能開発修正コミットは、1つのPullリクエスト(機能開発修正Pullリクエスト)に多対1で関連付けられ、この機能開発修正Pullリクエストは変更票に1対1で関連付けられる。
機能開発用ブランチと機能開発用開発者ブランチとの対応は、機能開発修正Pullリクエストと1対1で関連付けられる。すなわち、各開発者の機能開発用開発者ブランチに係る開発部分は、1つの機能開発修正Pullリクエストによって機能開発用ブランチにマージされることを示している。なお、上記のような対応関係は、不具合対策案件においても同様であるため、再度の説明は省略する。
図18は、リポジトリ管理システム200とソーシャルコーディングシステム100における処理イメージの例について概要を示した図である。リポジトリ管理システム200のローカルリポジトリDB201には、ブランチの階層構造が保持されている状態を示している。このリポジトリの内容の全部もしくは一部について、開発者毎のユーザ端末400のローカルリポジトリDB401ではクローン(コピー)が作成され、これに基づいて開発が行われる。完了した開発内容が登録されたローカルリポジトリDB401上のリポジトリは、リポジトリ管理システム200のリポジトリDB201に対してプッシュ(反映)される。
ソーシャルコーディングシステム100(もしくは課題管理システム300)上では、課題(図18の例では“変更票(C0001)”や“不具合票(B0011)”など)が作成され、これらの課題と、課題に対応してリポジトリDB201上に作成されたブランチとの関連付けが行われる。また、ソーシャルコーディングシステム上では、リポジトリDB201に対して開発内容を反映させるためのPullリクエスト(図18の例では“Pullリクエスト(#1)”など)が作成され、Pullリクエストと課題との間の関連付けが行われる。これらの関連付けは、上述したように、現状では手動で行う必要があり、煩雑で作業負荷が高い。
上述したように、特許文献1に記載された技術では、課題(特許文献1における懸案に相当)管理システム上で新しい課題が登録されると自動的に対応するブランチを作成し、作成されたブランチと課題との関連付けを管理することができるため、上記のような作業負荷をある程度低減させることができる。しかしながら、リポジトリ管理システム200としてはSubversion(登録商標)などの公知のバージョン管理ツールを前提としており、ブランチの階層構造における分岐元は特定のブランチ(例えば“trunk”)に限定され、課題別にブランチを分けることができないという制約がある。
また、課題数が多い場合にブランチ数が膨大となり、管理が困難になるとともに、ユーザインタフェース上において多数のブランチからのブランチの選択・切替が困難になったり、グラフ表示の可視性が悪くなるなどの問題を有する。また、ブランチの作成時の状態でブランチを分岐するため、分岐のタイミングによっては他の修正に係る取り込み作業が無駄に発生する場合がある。
そこで、本実施の一実施の形態である開発支援システムは、ブランチ作成が必要なタイミングでブランチを自動的に作成することでブランチの数をできるだけ抑え、可能な限り最新の状態から開発作業に着手できるようにする。また、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うことで、作業負荷を低減させ、ソフトウェア開発作業における作業効率を向上させる。
具体的には、例えば、課題が作成され、もしくは状態が変化したときに、自動的に当該課題に対応したブランチを作成する。その際、作成された課題の情報に基づいて、分岐元となるブランチを自動的に指定する。これにより、課題の作成等のタイミングでブランチを自動的に作成するとともに、課題とブランチとの関連付けも自動的に行う(例えば、ブランチの命名規則などによる)。
また、ブランチの情報(例えば、命名規則に従ったブランチの名称)に基づいて、当該ブランチに対応する変更票もしくは不具合票の識別情報を判断し、その情報をコミットコメントに付与する。これにより、コミットと課題(変更票もしくは不具合票)との関連付けを自動的に行う。
また、ブランチの情報(例えば、命名規則に従ったブランチの名称)に基づいて、マージ先(分岐元)となるブランチを判断し、その情報に基づいて、Pullリクエストの作成時に必要となるマージ先およびマージ元のブランチ名を自動的に指定・補完する。これにより、Pullリクエストとブランチおよび課題との関連付けを自動的に行う。
<システム構成>
図1は、本発明の一実施の形態である開発支援システムの構成例について概要を示した図である。本実施の形態の開発支援システム1は、図14に示した従来の開発支援システム1と同様に、ソーシャルコーディングシステム100およびリポジトリ管理システム200の各情報処理システムと、複数のユーザの情報処理端末であるユーザ端末400がネットワーク500を介して接続される構成を有している。さらに課題の管理を個別に行う管理システム300を有していてもよい。ソーシャルコーディングシステム100(もしくは課題管理システム300)は、課題DB101を有しており、リポジトリ管理システム200は、リポジトリDB201を有している。
図1は、本発明の一実施の形態である開発支援システムの構成例について概要を示した図である。本実施の形態の開発支援システム1は、図14に示した従来の開発支援システム1と同様に、ソーシャルコーディングシステム100およびリポジトリ管理システム200の各情報処理システムと、複数のユーザの情報処理端末であるユーザ端末400がネットワーク500を介して接続される構成を有している。さらに課題の管理を個別に行う管理システム300を有していてもよい。ソーシャルコーディングシステム100(もしくは課題管理システム300)は、課題DB101を有しており、リポジトリ管理システム200は、リポジトリDB201を有している。
ソーシャルコーディングシステム100およびリポジトリ管理システム200は、アプリケーションサーバであり、課題DB101およびリポジトリDB201は、DBサーバとして構成される。これらのアプリケーションサーバやDBサーバは、いずれも、サーバ機器によって構成されていてもよいし、サーバ機器やクラウドコンピューティングサービス上に構成された仮想サーバの1インスタンスによって構成されていてもよい。また、これらの混在により構成されていてもよい。
また、図中では、これらの各サーバはそれぞれ独立した構成となっているが、全部もしくは一部を1つのサーバ機器等に集約してもよい。また、ソーシャルコーディングシステム100と課題DB101との間や、リポジトリ管理システム200とリポジトリDB201との間の接続は、専用線に限らず、ネットワーク500を介して接続されていてもよい。ネットワーク500は、インターネット、イントラネットのいずれであってもよく、また、物理レイヤーも、有線LAN(Local Area Network)、無線LAN、パケット回線など、特に限定されない。
リポジトリ管理システム200は、例えば、図14に示した従来の開発支援システム1と同様に、リポジトリDB201に保持されたリポジトリを管理するリポジトリ管理部210、リポジトリ上で作成されているブランチを管理するブランチ管理部220、およびリポジトリにおいて開発のために作成し分岐させたブランチを分岐元のブランチにマージするマージ処理部230などを有する。これらの各部は、例えば、ソフトウェアプログラムによって実装される。
本実施の形態では、リポジトリ管理システム200として、例えば、オープンソースの分散リポジトリ管理ツールであるGitを想定しているが、Mercurial(hg)などの他の分散リポジトリ管理ツールを利用することも可能である。なお、例えば、Subversion(登録商標)等の集中リポジトリ管理ツールであっても、ユーザ端末400においてローカルリポジトリDB401が不要となるなど構成は変わるものの、原理的には本実施の形態の開発支援システム1に適用することは可能である。ただし、実際のソーシャルコーディングでは複数の開発者により頻繁に開発や修正が行われることからリポジトリの排他処理により他の開発作業が止まってしまう場合が多い。従って、分散リポジトリ管理ツールを利用するのが望ましい。
ソーシャルコーディングシステム100は、例えば、図14に示した従来の開発支援システム1と同様に、開発者等のユーザに対して認証等の処理を行うユーザ認証部110、課題DB101に保持された開発案件における課題を管理する課題管理部120、およびリポジトリ管理システム200を介してリポジトリ上でのブランチに対する各種の処理を行うブランチ処理部130を有する。これらの各部は、例えば、ソフトウェアプログラムによって実装される。課題管理部120は、課題管理システム300の課題管理部310によって代替してもよいし、並列的に課題DB101を管理する構成であってもよい。
本実施の形態のソーシャルコーディングシステム100は、さらに、各ユーザ端末400からのPullリクエストを受け付けてこれに関する処理を行うPullリクエスト処理部140を有する。本実施の形態における課題管理部120やブランチ処理部130、Pullリクエスト処理部140は、上述したような、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うための機能を有している。これらの機能の詳細については後述する。
ユーザ端末400は、開発者がそれぞれ使用するPC(Personal Computer)等の情報処理端末であるが、スマートフォンやタブレット端末などの携帯型端末であってもよい。ユーザ端末400は、図14に示した従来の開発支援システム1と同様に、ソーシャルコーディングシステム100のクライアントアプリケーションであるソーシャルコーディングクライアント410およびローカルリポジトリDB401を有する。ソーシャルコーディングクライアント410は、リポジトリに係る処理を行うためのリポジトリ処理部411や、開発対象の課題の管理を行う課題処理部412などの各部を有する。
本実施の形態のソーシャルコーディングクライアント410は、さらに、開発されたソースコード等を開発用ブランチに対してコミット(登録)するための処理を行うコミット処理部413、およびリポジトリ管理システム200上の管理用ブランチへの取り込みを要求するPullリクエストの作成に係る処理を行うPullリクエスト作成部414などの各部を有する。本実施の形態におけるソーシャルコーディングクライアント410の各部は、ソーシャルコーディングシステム100と連携して、上述したような、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うための機能を有している。
<前提となるブランチ運用>
図2は、本実施の形態におけるリポジトリ上のブランチの分岐による構成例について概要を示した図である。また、図3は、図2に示したブランチの種類および命名規則をまとめた表である。図2では、横方向に時系列(左から右へ時刻tが経過)、縦方向にブランチの種別を表している。黒丸印はコミット、すなわち確定したソースコードの修正差分を表している。
図2は、本実施の形態におけるリポジトリ上のブランチの分岐による構成例について概要を示した図である。また、図3は、図2に示したブランチの種類および命名規則をまとめた表である。図2では、横方向に時系列(左から右へ時刻tが経過)、縦方向にブランチの種別を表している。黒丸印はコミット、すなわち確定したソースコードの修正差分を表している。
図2に示すように、本実施の形態では、最新の開発ブランチを“trunk”としている。これは、最新バージョンの全ての機能が追加されているブランチ(「最新開発ブランチ」と呼ぶ)であり、新規の機能開発(エンハンス開発)におけるメインブランチとなる。図2の例において、機能開発(エンハンス開発)では、“trunk”ブランチから上方向に分岐して“feature/C001/DEV”というブランチが作成されている。これは、新規の機能“C001”をチームで開発するための管理用のブランチ(総称して「機能開発用ブランチ」と呼ぶ)であり、チーム全体の開発成果物を格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別と機能名(図2の例では“C001”)を把握することができる。
図2の例では、“feature/C001/DEV”ブランチから、さらに分岐して“feature/C001/user2”というブランチが作成されている。これは、機能“C001”を開発する開発者“user2”専用のブランチ(総称して「機能開発用開発者ブランチ」と呼ぶ)であり、“user2”個人の作業成果物を格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別と機能名(図2の例では“C001”)および開発者(図2の例では“user2”)を把握することができる。
一方、図2の例では、“trunk”ブランチから下方向に分岐して“stable/v0001”および“stable/v0002”というブランチが作成されている。これらは、例えば、パッケージ製品など、既に出荷してしまい、それに対する不具合対応等のメンテナンスが必要となるものについて、基準となるバージョンを格納するブランチ(総称して「安定ブランチ」と呼ぶ)であり、不具合修正におけるメインブランチとなる。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別とバージョン(図2の例では、“v0001”や“v0002”)を把握することができる。
図2の例では、“stable/v0001”ブランチから、さらに分岐して“fix/B011/v0001/DEV”というブランチが作成されている。これは、不具合“B011”に対してチームで対応するための管理用のブランチ(総称して「不具合修正用ブランチ」と呼ぶ)であり、不具合“B011”に対してチーム全体で作成された修正コードを格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別とバージョン(図2の例では“v0001”)および不具合名(図2の例では“B011”)を把握することができる。
図2の例では、“fix/B011/v0001/DEV”ブランチから、さらに分岐して“fix/B011/v0001/user1”というブランチが作成されている。これは、不具合“B011”への対応を行う開発者“user1”専用のブランチ(総称して「不具合修正用開発者ブランチ」と呼ぶ)であり、“user1”個人の作業成果物を格納するブランチである。図3に示した命名規則によってブランチ名が付されることにより、ブランチ名からブランチの種別とバージョン(図2の例では“v0001”)、不具合名(図2の例では“B011”)および開発者(図2の例では“user1”)を把握することができる。
なお、例えば、開発者用のブランチ(「機能開発用開発者ブランチ」や「不具合修正用開発者ブランチ」など)は、機能開発や不具合修正をチームではなく開発者個人で直接行う場合には作成しない運用とすることも可能である。
また、ブランチの命名規則(ネーミングルール)は、図3に示したものに限られないが、上述したように、「最新開発ブランチ」/「機能開発用ブランチ」/「機能開発用開発者ブランチ」、および「安定ブランチ」/「不具合修正用ブランチ」/「不具合修正用開発者ブランチ」のように、ブランチ間に親子関係が成立しており、その関係がブランチ名から把握できるようにネーミングされていることを前提とする。
<データ構成>
以下では、ソーシャルコーディングシステム100もしくは課題管理システム300が管理する課題DB101のデータ構成について説明する。図4は、課題DB101内のテーブルの1つである課題管理情報101aのデータ構成および具体的なデータの例について概要を示した図である。図4(a)ではデータ構成を示しており、図4(b)ではデータの具体的な例を示している。課題管理情報101aは、課題毎にその内容に関する情報を保持するテーブルであり、例えば、課題ID、タイトル、内容詳細、担当者、マイルストーン、状態、およびラベルIDリストなどの各項目を有する。
以下では、ソーシャルコーディングシステム100もしくは課題管理システム300が管理する課題DB101のデータ構成について説明する。図4は、課題DB101内のテーブルの1つである課題管理情報101aのデータ構成および具体的なデータの例について概要を示した図である。図4(a)ではデータ構成を示しており、図4(b)ではデータの具体的な例を示している。課題管理情報101aは、課題毎にその内容に関する情報を保持するテーブルであり、例えば、課題ID、タイトル、内容詳細、担当者、マイルストーン、状態、およびラベルIDリストなどの各項目を有する。
課題IDの項目は、各課題を一意に識別することができるIDやシーケンス番号等の情報を保持する。タイトルの項目は、対象の課題に付されたタイトルや名称の情報を保持する。タイトルのフォーマットを、図4(b)に示すように、例えば“[課題識別子]_テキスト”として、各課題を一意に識別することができる課題識別子(例えば“C001”など)の情報を含めるようにしてもよい。課題識別子として上記の課題IDの項目の値を用いる場合には特にタイトルの項目に課題識別子を含めなくてもよい。
内容詳細の項目は、対象の課題の内容についての詳細情報を保持する。例えば、対応する機能開発や不具合修正の内容を説明する情報などを含むことができる。担当者の項目は、対象の課題の担当者や管理者、責任者などを特定する情報を保持する。マイルストーンの項目は、対象の課題をどのバージョンのリリースで対応するかというマイルストーンの情報を保持する。状態の項目は、対象の課題の状態やステータスの情報を保持する。ラベルIDリストの項目は、対象の課題に対して設定された1つ以上のラベルを特定するラベルIDのリストの情報を保持する。各ラベルIDは、後述するラベル情報のテーブルに定義されている。
なお、課題管理情報101aは、例えば、課題が機能開発である場合、もしくは不具合修正である場合に、それぞれに特化してその内容に関する情報を保持することができるよう、機能開発と不具合修正のそれぞれの課題毎に個別にテーブルを有していてもよい。図5は、課題が機能開発である場合に特化して、開発対象の機能の内容に関する情報を保持する開発機能情報101bのデータ構成の例について概要を示した図である。また、図6は、課題が不具合修正である場合に特化して、修正対象の不具合の内容に関する情報を保持する不具合情報101cのデータ構成の例について概要を示した図である。開発機能情報101bの開発機能ID、および不具合情報101cの不具合IDの項目は、それぞれ、課題管理情報101aの課題IDに対応する項目である。また、不具合情報101cでは、対象の不具合が発生したバージョンの情報を保持する発生バージョンの項目を有している。
図7は、課題DB101内のテーブルの1つであるラベル情報101dのデータ構成および具体的なデータの例について概要を示した図である。ラベル情報101dは、課題に設定される各種文字列等の情報をラベル化、コード化したものの定義内容を保持するマスタテーブルであり、例えば、ラベルID、およびラベル名などの各項目を有する。ラベルIDの項目は、各ラベルを一意に識別することができるIDやシーケンス番号等の情報を保持する。ラベル名の項目は、ラベルIDに対応するラベルの文字列等の情報を保持する。
なお、上述の図4〜図7で示した各テーブルのデータ構成(項目)はあくまで一例であり、同様のデータを保持・管理することが可能な構成であれば、他のテーブル構成やデータ構成であってもよい。
<1.ブランチの自動生成>
本実施の形態では、上述したように、例えば、図15のステップS1において課題(変更票もしくは不具合票)が作成され、もしくは課題の状態が変化したときに、図15のステップS2やS3において課題の情報に基づいて自動的に当該課題に対応したブランチを生成することができる。以下では、このブランチの自動生成の処理について説明する。
本実施の形態では、上述したように、例えば、図15のステップS1において課題(変更票もしくは不具合票)が作成され、もしくは課題の状態が変化したときに、図15のステップS2やS3において課題の情報に基づいて自動的に当該課題に対応したブランチを生成することができる。以下では、このブランチの自動生成の処理について説明する。
図15のステップS2における管理用のブランチ(「機能開発用ブランチ」や「不具合修正用ブランチ」)を自動生成する場合、例えば、図1の例に示したユーザ端末400の課題処理部412において、ユーザからの指示・操作により課題(変更票もしくは不具合票)が新規に作成され、もしくは修正されると、これに連携して、ソーシャルコーディングシステム100の課題管理部120が当該課題を課題DB101に登録もしくは修正する。そして、課題DB101への登録・修正をトリガに、ブランチ処理部130が呼び出され、ブランチ処理部130が当該課題に対応するブランチを生成する。
図8は、ブランチ処理部130におけるブランチの自動生成処理の流れの例について概要を示したフローチャートである。まず、課題の情報から、当該課題を一意に特定することができる課題識別子を抽出する(S01)。課題識別子の例としては、機能開発における開発項目や、不具合修正における指摘不具合に対応して割り当てられたIDがある。例えば、機能開発における開発項目毎に発行された変更票のID(例えば“C001”など)や、不具合修正における指摘不具合毎に発行された不具合票のID(例えば“B011”など)を用いることができる。本実施の形態では、例えば、変更票の場合はIDの先頭文字を“C”(Change)とし、不具合票の場合はIDの先頭文字を“B”(Bug)とすることで、課題識別子から変更票か不具合票かを判定可能としている。なお、課題を一意に特定することができる文字列であれば他の項目を課題識別子として用いてもよい。
課題識別子の情報は、例えば、ソーシャルコーディングシステム100のブランチ処理部130や課題管理部120が課題DB101にアクセスして、対象の課題の課題IDや、タイトルの項目から課題識別子に相当する部分を抽出することができる。本実施の形態では、上述したように、課題DB101の課題管理情報101aにおいて、課題のタイトルのフォーマットを、例えば“[課題識別子]_テキスト”としており、タイトルの文字列から課題識別子の情報を抽出することが可能である。また、不具合修正に係る課題をバージョン毎に管理する場合は、後述する処理によりバージョン情報を取得して、これを課題識別子の情報に付加するようにしてもよい。
本実施の形態では、ソーシャルコーディングシステム100が課題DB101を有して課題を管理する構成を前提に説明したが、ソーシャルコーディングシステム100とは独立した課題管理システム300により課題を管理する構成の場合には、課題管理システム300が管理する課題情報を参照して課題識別子を抽出するようにしてもよい。
次に、課題が不具合対応であるか否かを判定し(S02)、不具合対応である場合には、不具合が発生したバージョンの情報を取得する(S03)。課題が不具合対応ではない機能開発の場合には、ステップS03を行わずにステップS04に進む。ステップS03での処理としては、例えば、ブランチ処理部130や課題管理部120が課題DB101にアクセスして、課題管理情報101aから、対象の課題についてのラベルIDリストの項目の値を取得する。そして、ラベルIDリスト内の各ラベルIDについて、ラベル情報101dからラベル名の項目の値を取得することで、課題に対応したラベルをすべて取得する。
このとき、バージョンを表すラベルが含まれるか否かを判定する。例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、ラベルIDリストとして“1,3,5”の文字列が得られる。これをカンマ(“,”)で分割して、ラベルIDとして“1”、“3”、“5”の3つを得る。そして、これらのラベルIDについて、図7(b)の例に示したラベル情報101dでは、それぞれ、“v0100”、“不具合”、“WIP”の文字列(ラベル)を得ることができる。その後、得られた各ラベルについて、バージョンを表す文字列であるか否かを、例えば所定の正規表現(例えば、“/v[0−9]{4}”など)に合致するか否かにより判定し、合致する場合にはバージョンを表す文字列とする。
なお、本実施の形態では、上述したように、不具合修正の課題の情報からバージョン情報を抽出する際に、課題管理情報101aのラベルIDリストの項目と、ラベル情報101dのラベルIDの項目とを対応付けて、ラベル情報101dのラベル名から取得しているが、これに限られない。例えば、課題情報の管理が、課題管理情報101aではなく、不具合修正に特化した形で図6の不具合情報101cのようなデータ構成によって管理している場合には、不具合情報101cにおける発生バージョンの項目の値をそのまま用いるようにしてもよい。
次に、ソーシャルコーディングシステム100のブランチ処理部130等により、課題に対応するブランチがあるか否かを判定する(S04)。ステップS04での処理としては、例えば、ステップS01において抽出した課題識別子が、機能開発の課題に係るものである場合は、当該課題識別子に基づいて生成したブランチ名について、リポジトリ管理システム200のブランチ管理部220を介してリポジトリDB201を検索し、対象のブランチの有無を判定する。
例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“1”のレコードの課題の場合は、ステップS01においてタイトルの項目から課題識別子として“C001”が得られるので、図3に示した機能開発用ブランチの命名規則に従って“feature/C001/DEV”というブランチ名を生成し、リポジトリDB201上でその有無を確認する。
また、ステップS01において抽出した課題識別子が、不具合修正の課題に係るものである場合は、当該課題識別子と、ステップS03で取得した発生バージョンとに基づいて生成したブランチ名について、リポジトリ管理システム200のブランチ管理部220を介してリポジトリDB201を検索し、対象のブランチの有無を判定する。
例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、ステップS01においてタイトルの項目から課題識別子として“B003”が得られる。また、ステップS02において、ラベルID=“1”に対応するラベル名として、図7(b)に示したラベル情報101dの例から、発生バージョンとして“v0100”が得られるので、図3に示した不具合修正用ブランチの命名規則に従って“fix/B003/v0100/DEV”というブランチ名を生成し、リポジトリDB201上でその有無を確認する。
ステップS04において課題に対応するブランチが既にリポジトリ上にある場合は、何もせずに(NOP:No OPeration)(S08)、ブランチの自動生成処理を終了する。一方、ステップS04において課題に対応するブランチがまだない場合は、次に、対象の課題のステータスが作業中であるか否か、すなわち、対象の課題の課題情報に作業中であることを表すラベルがあるか否かを判定する(S05)。
ラベルの取得は、対象の課題について課題管理情報101aからラベルIDリストの項目の値を取得し、リストに含まれる各ラベルIDについて、ラベル情報101dからそれぞれ対応するラベル名を取得する。取得した各ラベルについて、作業中であることを表す“WIP(Work In Progress)”を表すラベルがあるか否かを判定する。例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、上述したように、課題管理情報101aからは、ラベルIDとして“1”、“3”、“5”の3つを得ることができ、さらに、図7(b)の例に示したラベル情報101dから、それぞれ、“v0100”、“不具合”、“WIP”のラベルを得ることができる。この中に、作業中を表す“WIP”のラベルが含まれていることから、対象の課題は作業中であると判定する。
ステップS05において課題が作業中ではない場合は、何もせずに(NOP)(S08)、ブランチの自動生成処理を終了する。一方、ステップS05において課題が作業中である場合は、ステップS04において生成したブランチ名に基づいて、これを生成する際の分岐元となるブランチを特定する(S06)。分岐元となるブランチは、例えば、図3に示した各ブランチとその分岐元のブランチについての命名規則の情報に基づいて特定することができる。例えば、ステップS05において生成したブランチ名が“fix/B003/v0100/DEV”である場合、図3の表の命名規則から「(バージョンv0100に対する)不具合B003修正用ブランチ」であることが分かり、さらにその分岐元のブランチのブランチ名が“stable/v0100”であることを特定することができる。
その後、リポジトリ管理システム200のブランチ管理部220を介して、ステップS06で特定した分岐元のブランチ名に係るブランチから、ステップS04において生成したブランチ名に係るブランチを新規に生成し(S07)、ブランチの自動生成処理を終了する。
上記の一連の処理を、課題が作成されたタイミングや、課題のステータスが修正されたタイミングで実行する、もしくは定期的に実行することで、例えば、ステータスが“作業中”に変わったタイミングで自動的にブランチを生成することもできる。
図15のステップS3における開発者のブランチ(「機能開発用開発者ブランチ」や「不具合修正用開発者ブランチ」)を自動生成する場合も、基本的な処理は上述の図8に示した処理内容と同様である。開発者ブランチを生成する場合は、さらに開発者の情報を得るため、追加の処理として例えば、ステップS01の処理の前に、ソーシャルコーディングシステム100の課題管理部120が課題DB101にアクセスし、課題管理情報101aにおける対象の課題に係る担当者の項目の値を取得する処理を行う。この処理で担当者の情報を取得できなかった場合は、何もせずに(NOP)(S08)、ブランチの自動生成処理を終了する。
また、ステップS04でブランチ名を生成する際に、図3に示したブランチの命名規則において従う規則を、開発者ブランチのものとする。例えば、図4(b)に示した課題管理情報101aの例において、対象の課題が課題ID=“5”のレコードの課題の場合は、担当者の項目から“s−naka”が得られる。また、ステップS01においてタイトルの項目から課題識別子として“B003”が得られる。また、ステップS02において、ラベルID=“1”に対応するラベル名として、図7(b)に示したラベル情報101dの例から、発生バージョンとして“v0100”が得られる。これらから図3に示したブランチの命名規則に従ってブランチ名を生成する際に、“fix/B003/v0100/DEV”ではなく、“fix/B003/v0100/s−naka”というブランチ名を生成する。
これにより、開発者ブランチについても課題との関連付けを行いつつ自動生成することができる。なお、開発者ブランチについては、課題の作成時に管理用のブランチの新規生成と合わせて生成してもよいし、この時点で担当者が設定されていない場合は、後に担当者が設定された際に、そのイベントをトリガとして開発者ブランチを自動生成するようにしてもよい。
<2.コミットコメントの自動追加>
本実施の形態では、上述したように、開発者ブランチの作成後、図15のステップS4において、ソースコードの作成・修正、テスト等の開発が行われ、完了したものを1つのコミットとして登録する際に、コミットと課題(変更票もしくは不具合票)との関連付けに係る情報をコミットコメントに自動的に追加することができる。以下では、このコミットコメントの自動追加の処理について説明する。
本実施の形態では、上述したように、開発者ブランチの作成後、図15のステップS4において、ソースコードの作成・修正、テスト等の開発が行われ、完了したものを1つのコミットとして登録する際に、コミットと課題(変更票もしくは不具合票)との関連付けに係る情報をコミットコメントに自動的に追加することができる。以下では、このコミットコメントの自動追加の処理について説明する。
開発者がユーザ端末400上でソーシャルコーディングクライアント410を用いて開発を行い、コミットを実行すると、ソーシャルコーディングクライアント410のコミット処理部413が呼び出され、コミットコメントの追加の処理が行われる。図9は、コミット処理部413におけるコミットコメントの自動追加処理の流れの例について概要を示したフローチャートである。まず、コミットの対象のブランチ名から、対応する課題識別子を抽出する(S11)。
図3に示した命名規則に従えば、例えば、機能開発における「機能開発用ブランチ」や「機能開発用開発者ブランチ」では、いずれも、ブランチ名が“feature/CXXX/〜”となるため、ブランチ名を“/”で分割した文字列の先頭から2番目を取得すれば、課題識別子(この場合は“CXXX”)を得ることができる。同様に、不具合修正における「不具合修正用ブランチ」や「不具合修正用開発者ブランチ」でも、いずれも、ブランチ名が“fix/BXXX/〜”となるため、ブランチ名を“/”で分割した文字列の先頭から2番目を取得すれば、課題識別子(この場合は“BXXX”)を得ることができる。
次に、コミット処理部413は、ネットワーク500を介してソーシャルコーディングシステム100の課題管理部120にアクセスし、課題管理部120を介して、課題DB101にステップS11で抽出した課題識別子に係る課題の情報が保持されているか否かを判定する(S12)。課題識別子に係る課題の情報が課題DB101に保持されている(当該課題が課題管理部120による管理対象となっている)か否かは、例えば、課題管理情報101aのタイトルの項目に対象の課題識別子が含まれているものがあるか否かによって判断することができる。タイトルの項目に代えて、もしくはこれに加えて内容詳細の項目に対象の課題識別子が含まれるか否かによって判断するようにしてもよい。
ステップS12において対象の課題が課題DB101に保持されていない場合は、何もせずに(NOP)(S14)、コミットコメントの自動追加処理を終了する。一方、ステップS12において対象の課題が課題DB101に保持されている場合は、コミット処理部413は、ソーシャルコーディングシステム100の課題管理部120を介して対象の課題に係る課題IDの項目とタイトルの項目の値を取得し、これらをコミット時のコメントに追加して(S13)、コミットコメントの自動追加処理を終了する。
<3−1.Pullリクエスト時のブランチの自動指定>
本実施の形態では、上述したように、図15のステップS5においてPullリクエストを行う際に、ブランチの情報に基づいてマージ先(分岐元)となるブランチを判断し、マージ先およびマージ元のブランチ名を自動的に指定・補完することで、Pullリクエストとブランチおよび課題との関連付けを自動的に行うことができる。以下では、このPullリクエスト時のブランチの自動指定の処理について説明する。
本実施の形態では、上述したように、図15のステップS5においてPullリクエストを行う際に、ブランチの情報に基づいてマージ先(分岐元)となるブランチを判断し、マージ先およびマージ元のブランチ名を自動的に指定・補完することで、Pullリクエストとブランチおよび課題との関連付けを自動的に行うことができる。以下では、このPullリクエスト時のブランチの自動指定の処理について説明する。
図10は、ユーザ端末400上でソーシャルコーディングクライアント410により表示されるリポジトリ表示画面の例について概要を示した図である。開発者が、ユーザ端末400上でソーシャルコーディングクライアント410を用いて開発を完了し、Pullリクエストを行う際に、図10に示したようなリポジトリ表示画面において、“ブランチ名”として開発成果物が含まれるマージ元の開発者ブランチを指定し、“Pullリクエスト”ボタンを押下する。これにより、ソーシャルコーディングクライアント410のPullリクエスト作成部414が呼び出される。本実施の形態では、Pullリクエスト作成部414は、ネットワーク500を介してソーシャルコーディングシステム100のPullリクエスト処理部140を呼び出し、マージ先(分岐元)のブランチの自動指定の処理を行う。
図11は、Pullリクエスト処理部140におけるブランチの自動指定処理の流れの例について概要を示したフローチャートである。まず、図10の例に示したリポジトリ表示画面において現在表示されている(指定されている)ブランチ、すなわちマージ元となるブランチのブランチ名の情報を取得する(S21)。例えば、ソーシャルコーディングクライアント410のPullリクエスト作成部414がリポジトリ表示画面から取得して、ソーシャルコーディングシステム100のPullリクエスト処理部140を呼び出す際にパラメータとして追加することで、Pullリクエスト処理部140は当該ブランチの情報を取得することができる。
次に、ステップS21で取得したマージ元のブランチ名からマージ先のブランチを特定する(S22)。本実施の形態では、各ブランチが図3に示したような命名規則に従ってネーミングされていることを前提とし、これに基づいてマージ先となるブランチ名を特定する。すなわち、マージ元のブランチ名が図3に示した命名規則におけるどのブランチに該当するかを判定し、対応する分岐元(マージ先)のブランチ名の命名規則に基づいてマージ先のブランチ名を生成する。例えば、マージ元のブランチ名が“fix/B002/v0100/h−naka”であった場合、「不具合B002の開発者h−naka用ブランチ」(図3の表の最下段)であるため、分岐元ブランチのブランチ名として、命名規則に基づいて“fix/B002/v0100/DEV”を得ることができる。
その後、Pullリクエスト処理部140は、ステップS21で取得したブランチ名をマージ元ブランチ、ステップS22で生成したブランチ名をマージ先ブランチとしてPullリクエスト画面を生成し、ユーザ端末400のソーシャルコーディングクライアント410に送信して画面表示させる(S23)。図12は、ユーザ端末400上でソーシャルコーディングクライアント410により表示されるPullリクエスト画面の例について概要を示した図である。図示するように、マージ元およびマージ先のリポジトリ名、ブランチ名が自動的に設定・選択された状態で画面を表示させることができる。
なお、このPullリクエスト画面において“Pullリクエスト送信”ボタンを押下すると、ソーシャルコーディングクライアント410のPullリクエスト作成部414によりPullリクエストが作成され、ソーシャルコーディングシステム100のPullリクエスト処理部140に送信されて、Pullリクエストに係る処理が実行される。
<3−2.Pullリクエストへのコメントの自動追加>
本実施の形態では、上記のPullリクエストを行う際に、さらに、当該Pullリクエストに対してコメントを自動的に追加することができる。これにより、Pullリクエストに対してレビュー等を行うリーダー等が、当該Pullリクエストがどの課題に対応したものであるのか等の情報を容易に把握することが可能となる。
本実施の形態では、上記のPullリクエストを行う際に、さらに、当該Pullリクエストに対してコメントを自動的に追加することができる。これにより、Pullリクエストに対してレビュー等を行うリーダー等が、当該Pullリクエストがどの課題に対応したものであるのか等の情報を容易に把握することが可能となる。
具体的には、上述の図11で示したPullリクエスト時のブランチの自動指定の処理において、例えば、ステップS22でソーシャルコーディングシステム100のPullリクエスト処理部140が、マージ元のブランチ名から、図3に示した命名規則に基づいてマージ先のブランチ名を特定した際に、合わせて、マージ元のブランチ名に対応する課題の情報を取得する処理を行う。課題の情報は、例えば、上述の図9に示した処理のステップS11、S12と同様に、マージ元のブランチ名から、図3に示した命名規則に基づいて課題識別子を抽出し、当該課題識別子に係る課題情報が課題DB101に保持されているか否かを判定することで取得することができる。
マージ元のブランチに対応する課題の情報が課題DB101から得られた場合は、課題管理情報101aにおける課題IDやタイトルなどの情報をPullリクエストに対するコメントとして自動的に追加した上で、図11のステップS23でPullリクエスト画面を生成する。図13は、ユーザ端末400上でソーシャルコーディングクライアント410により表示されるPullリクエスト画面の例について概要を示した図である。図示するように、マージ元のブランチに対応する課題(図13の例では不具合“B002”)に係る課題IDやタイトルの情報が自動的にコメントとして設定された状態で画面を表示させることができる。
以上に説明したように、本発明の一実施の形態である開発支援システム1によれば、必要なタイミングでブランチを自動的に作成することでブランチの数をできるだけ抑え、可能な限り最新の状態から開発作業に着手させることが可能である。また、課題、ブランチ、コミット、Pullリクエストの間の関連付けを自動的に行うことで、作業負荷を低減させ、ソフトウェア開発作業における作業効率を向上させることができる。
具体的には、課題が作成されたり、ステータスが変わったり、開発者がアサインされたりなどのタイミングで、自動的に当該課題に対応したブランチを命名規則に従って作成する。また、作成された課題の情報に基づいて、分岐元となるブランチを自動的に指定する。これにより、課題の作成等のタイミングでブランチを自動的に作成するとともに、課題とブランチとの関連付けも自動的に行うことができる。
また、コミット対象のブランチ名の情報に基づいて、ブランチの命名規則から、当該ブランチに対応する変更票もしくは不具合票の識別情報を判断し、その情報をコミットコメントに付与する。これにより、コミットと課題(変更票もしくは不具合票)との関連付けも自動的に行うことができる。
また、マージ元のブランチ名の情報に基づいて、ブランチの命名規則から、マージ先(分岐元)となるブランチを判断し、その情報に基づいて、Pullリクエストの作成時に必要となるマージ先およびマージ元のブランチ名を自動的に指定・補完する。また、マージ元のブランチ名の情報に基づいて、対応する課題の情報を取得し、これをPullリクエストの作成時にコメントとして自動的に追加する。これらにより、Pullリクエストとブランチおよび課題との関連付けを自動的に行うことができる。
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は上記の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記の実施の形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、上記の実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
本発明は、ソーシャルコーディングシステムを利用したプログラム開発を支援する開発支援システムに利用可能である。
1…開発支援システム、
100…ソーシャルコーディングシステム、101…課題DB、101a…課題管理情報、101b…開発機能情報、101c…不具合情報、101d…ラベル情報、110…ユーザ認証部、120…課題管理部、130…ブランチ処理部、140…Pullリクエスト処理部、
200…リポジトリ管理システム、201…リポジトリDB、210…リポジトリ管理部、220…ブランチ管理部、230…マージ処理部、
300…課題管理システム、310…課題管理部、
400…ユーザ端末、401…ローカルリポジトリDB、410…ソーシャルコーディングクライアント、411…リポジトリ処理部、412…課題処理部、413…コミット処理部、414…Pullリクエスト作成部、
500…ネットワーク。
100…ソーシャルコーディングシステム、101…課題DB、101a…課題管理情報、101b…開発機能情報、101c…不具合情報、101d…ラベル情報、110…ユーザ認証部、120…課題管理部、130…ブランチ処理部、140…Pullリクエスト処理部、
200…リポジトリ管理システム、201…リポジトリDB、210…リポジトリ管理部、220…ブランチ管理部、230…マージ処理部、
300…課題管理システム、310…課題管理部、
400…ユーザ端末、401…ローカルリポジトリDB、410…ソーシャルコーディングクライアント、411…リポジトリ処理部、412…課題処理部、413…コミット処理部、414…Pullリクエスト作成部、
500…ネットワーク。
Claims (6)
- 開発成果物およびその変更履歴をリポジトリに保持するリポジトリ管理システムと、
前記開発成果物と課題とを関連付けて管理するソーシャルコーディングシステムと、を有する開発支援システムであって、
前記ソーシャルコーディングシステムは、
前記課題の情報を管理する課題管理部と、
前記リポジトリにおいてブランチの生成を行うブランチ処理部と、を有し、
前記ブランチ処理部は、指定された前記課題の情報に基づいて、分岐元となる第1のブランチを特定し、前記第1のブランチから分岐させて、前記課題に対応する第2のブランチを生成する、開発支援システム。 - 請求項1に記載の開発支援システムにおいて、
前記ソーシャルコーディングシステムの前記ブランチ処理部は、指定された前記課題の状態が所定の状態になっていることを条件に、前記第2のブランチを生成する、開発支援システム。 - 請求項1に記載の開発支援システムにおいて、
前記ソーシャルコーディングシステムの前記ブランチ処理部は、指定された前記課題の情報から、ブランチおよび分岐元のブランチの命名規則の情報に基づいて、前記第1のブランチおよび前記第2のブランチの名称を特定する、開発支援システム。 - 請求項3に記載の開発支援システムにおいて、
さらに、前記ソーシャルコーディングシステムを介して前記リポジトリに前記開発成果物を登録するソーシャルコーディングクライアントを有し、
前記ソーシャルコーディングクライアントは、前記リポジトリにおいて前記第2のブランチに前記開発成果物を登録するためのコミット処理を行うコミット処理部を有し、
前記コミット処理部は、前記第2のブランチの名称から前記命名規則の情報に基づいて、前記第2のブランチに対応する前記課題を特定する情報を取得し、前記ソーシャルコーディングシステムの前記課題管理部において、前記課題が管理対象となっている場合に、前記課題管理部を介して前記課題に係る情報を取得して、取得した情報をコミット処理を行う際のコメントに追加する、開発支援システム。 - 請求項3に記載の開発支援システムにおいて、
さらに、前記ソーシャルコーディングシステムを介して前記リポジトリに前記開発成果物を登録するソーシャルコーディングクライアントを有し、
前記ソーシャルコーディングシステムは、さらに、前記リポジトリにおいて前記開発成果物が登録された前記第2のブランチを前記第1のブランチに反映させるためのPullリクエストを受け付けて、前記Pullリクエストに係る処理を行うPullリクエスト処理部を有し、
前記ソーシャルコーディングシステムの前記Pullリクエスト処理部は、前記ソーシャルコーディングクライアントから指定された前記Pullリクエストに係る前記第2のブランチの情報を取得し、前記第2のブランチの名称から前記命名規則の情報に基づいて、マージ先となる前記第1のブランチの名称を特定し、マージ元を前記第2のブランチ、マージ先を前記第1のブランチとした前記Pullリクエストを作成するための画面を前記ソーシャルコーディングクライアントを介して表示させる、開発支援システム。 - 請求項5に記載の開発支援システムにおいて、
前記ソーシャルコーディングシステムの前記Pullリクエスト処理部は、前記ソーシャルコーディングクライアントから指定された前記Pullリクエストに係る前記第2のブランチの情報を取得し、前記第2のブランチの名称から前記命名規則の情報に基づいて、前記第2のブランチに対応する前記課題を特定する情報を取得し、前記ソーシャルコーディングシステムの前記課題管理部において、前記課題が管理対象となっている場合に、前記課題管理部を介して前記課題に係る情報を取得して、取得した情報を前記Pullリクエストに対するコメントとして追加した前記Pullリクエストを作成するための画面を前記ソーシャルコーディングクライアントを介して表示させる、開発支援システム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2014/065140 WO2015186256A1 (ja) | 2014-06-06 | 2014-06-06 | 開発支援システム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP5973091B2 true JP5973091B2 (ja) | 2016-08-23 |
JPWO2015186256A1 JPWO2015186256A1 (ja) | 2017-04-20 |
Family
ID=54766348
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015556316A Active JP5973091B2 (ja) | 2014-06-06 | 2014-06-06 | 開発支援システム |
Country Status (2)
Country | Link |
---|---|
JP (1) | JP5973091B2 (ja) |
WO (1) | WO2015186256A1 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109284106A (zh) * | 2018-07-18 | 2019-01-29 | 平安科技(深圳)有限公司 | 业务规则的发布管理方法、电子装置及可读存储介质 |
WO2021040512A1 (en) * | 2019-08-30 | 2021-03-04 | Mimos Berhad | Managing changes and package integrity in an integrated development system |
JP7150002B2 (ja) * | 2020-12-29 | 2022-10-07 | マーク マリアン ヴァシレ | ソフトウェア開発支援システム、ソフトウェア開発支援サーバ及びソフトウェア開発支援プログラム |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090319552A1 (en) * | 2007-04-02 | 2009-12-24 | Juniper Networks, Inc. | Software merging utility |
JP2013191003A (ja) * | 2012-03-14 | 2013-09-26 | Hitachi Solutions Ltd | ブランチリポジトリ管理システム |
-
2014
- 2014-06-06 JP JP2015556316A patent/JP5973091B2/ja active Active
- 2014-06-06 WO PCT/JP2014/065140 patent/WO2015186256A1/ja active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090319552A1 (en) * | 2007-04-02 | 2009-12-24 | Juniper Networks, Inc. | Software merging utility |
JP2013191003A (ja) * | 2012-03-14 | 2013-09-26 | Hitachi Solutions Ltd | ブランチリポジトリ管理システム |
Non-Patent Citations (1)
Title |
---|
JPN6015003935; 石川武志 外3名: '「ソフトウェア開発時における版管理システムを利用したコミュニケーション支援システムの提案」' 情報処理学会研究報告 第2001巻,第92号, 20010919, pp.23-30, 社団法人情報処理学会 * |
Also Published As
Publication number | Publication date |
---|---|
WO2015186256A1 (ja) | 2015-12-10 |
JPWO2015186256A1 (ja) | 2017-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11966409B2 (en) | Extensible attributes for data warehouses | |
US10055113B2 (en) | System and method for modifying user interface elements | |
US9811394B1 (en) | Application programming interface recipe cloning | |
US9754242B2 (en) | Deployment mechanism for non-versioning business process artifacts | |
US10261893B2 (en) | Implicit coordination of deployment and regression testing across data centers and system clusters | |
US8863119B2 (en) | Methods and systems for generating a dynamic workflow in a multi-tenant database environment | |
US8966442B2 (en) | Custom code innovation management | |
US11468229B2 (en) | Describing changes in a workflow based on changes in structured documents containing workflow metadata | |
US11977872B2 (en) | Method and system for code maintenance | |
EP3113016A1 (en) | Tracing dependencies between development artifacts in a development project | |
JP5973091B2 (ja) | 開発支援システム | |
JP4786998B2 (ja) | ソフトウェア再利用部品管理システム | |
US9262556B2 (en) | Embedded search results within the context of a process | |
US20160253157A1 (en) | Software refactoring | |
US20190354511A1 (en) | Database and file structure configurations for managing text strings to be provided by a graphical user interface | |
JP2001356907A (ja) | 処理コード情報を有するデータベース・システムおよび情報処理システム | |
JP6336919B2 (ja) | ソースコードレビュー方法及びそのシステム | |
JP2015165366A (ja) | データベースの再構成方法、データベースの再構成プログラム、及び、データベースの再構成装置 | |
JP6865042B2 (ja) | ナレッジ管理装置、ナレッジ管理方法およびコンピュータプログラム | |
JP2006268121A (ja) | Webアプリケーションシステム、そのプログラム | |
US20180267678A1 (en) | Techniques and architectures for managing text strings to be provided by a graphical user interface | |
JP2007115155A (ja) | プログラム構造管理装置及びプログラム構造管理プログラム | |
US10769183B2 (en) | Identifying resources in user interfaces for feedback | |
US11704093B2 (en) | Rapid prototyping of user experience components and related application functionality | |
JP2017091027A (ja) | システム開発支援システム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
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: 20160621 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160713 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 5973091 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |