(57)【要約】【課題】分散環境にて大規模な更新作業を実行する場合であっても、更新作業のコンフリクトが生じる可能性があるか否かを更新者が的確に検知することが可能なシステム、方法、サーバ及びコンピュータプログラムを提供する。【解決手段】クライアントは、更新用に所定のファイルを複製する指示をサーバへ送信し、複製されたファイルを受信する。受信したファイルを更新した時点で更新に関する更新情報を生成して、生成した更新情報をサーバへ送信する。サーバは、受信した更新情報に関連する部分を含むファイルを抽出し、抽出したファイルを他のクライアントに複製して送信したか否かを判断する。他のクライアントに複製して送信したと判断した場合、ファイルを送信した他のクライアントに、別のクライアントで更新されている旨を示す警告情報を送信する。【選択図】図３
2010237870.tif 000002
【特許請求の範囲】
【請求項１】
複数のクライアントと、
複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバと
を有し、
前記クライアントは、
更新用に所定のファイルを複製する指示を前記サーバへ送信する指示送信部と、
複製されたファイルを受信するファイル受信部と、
受信したファイルを更新した時点で更新に関する更新情報を生成する生成部と、
生成した更新情報を前記サーバへ送信する第１の情報送信部と
を備え、
前記サーバは、
前記更新情報を前記クライアントから受信する第１の受信部と、
受信した更新情報に関連する部分を含むファイルを抽出する抽出部と、
抽出したファイルを他のクライアントに複製して送信したか否かを判断する複製判断部と、
該複製判断部で他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する第２の情報送信部と
を備えるシステム。
【請求項２】
前記サーバは、
前記更新情報を前記ファイルに対応付けて記憶する情報付与部と、
複製した前記ファイルを、対応付けて記憶されている前記更新情報とともに送信するファイル送信部と
を備える請求項１記載のシステム。
【請求項３】
前記クライアントは、
受信したファイルに前記更新情報が対応付けられているか否かを判断する情報判断部と、
該情報判断部で前記更新情報が対応付けられていると判断した場合、前記更新情報が対応付けられている旨を示す情報を報知する報知部と
を備える請求項２記載のシステム。
【請求項４】
前記サーバは、更新対象となるファイルの構造に関する情報を記憶する構造記憶部を備え、
前記抽出部は、該構造記憶部に記憶してあるファイルの構造に関する情報に基づいて、前記更新情報に関連する部分を含むファイルを抽出する請求項１乃至３のいずれか一項に記載のシステム。
【請求項５】
前記ファイルの構造に関する情報は、ファイル間のパラメータ受け渡しに関する情報を含む請求項４記載のシステム。
【請求項６】
前記クライアントは、前記警告情報を受信した場合、前記警告情報を受信した旨を示す情報を報知する警告報知部を備える請求項１乃至５のいずれか一項に記載のシステム。
【請求項７】
前記ファイルはプログラム開発用のプログラムファイルである請求項１乃至６のいずれか一項に記載のシステム。
【請求項８】
複数のクライアントと、
複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバと
を用いて実行することが可能な方法において、
前記サーバは、
前記クライアントにより送信された、更新用に所定のファイルを複製する指示に基づいて、所定のファイルを複製し、
複製したファイルを前記クライアントへ送信し、
前記ファイルが更新された時点で前記クライアントにて生成された更新に関する更新情報を受信し、
受信した更新情報に関連する部分を含むファイルを抽出し、
抽出したファイルを他のクライアントに複製して送信したか否かを判断し、
他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する方法。
【請求項９】
前記ファイルはプログラム開発用のプログラムファイルである請求項８記載の方法。
【請求項１０】
複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバにおいて、
複製したファイルが前記クライアントにて更新された時点で生成された、更新に関する更新情報を前記クライアントから受信する第１の受信部と、
受信した更新情報に関連する部分を含むファイルを抽出する抽出部と、
抽出したファイルを他のクライアントに複製して送信したか否かを判断する複製判断部と、
該複製判断部で他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する第２の情報送信部と
を備えるサーバ。
【請求項１１】
前記更新情報を前記ファイルに対応付けて記憶する情報付与部と、
複製した前記ファイルを、対応付けて記憶されている前記更新情報とともに送信するファイル送信部と
を備える請求項１０記載のサーバ。
【請求項１２】
更新対象となるファイルの構造に関する情報を記憶する構造記憶部を備え、
前記抽出部は、該構造記憶部に記憶してあるファイルの構造に関する情報に基づいて、前記更新情報に関連する部分を含むファイルを抽出する請求項１０又は１１記載のサーバ。
【請求項１３】
前記ファイルの構造に関する情報は、ファイル間のパラメータ受け渡しに関する情報を含む請求項１２記載のサーバ。
【請求項１４】
前記ファイルはプログラム開発用のプログラムファイルである請求項１０乃至１３のいずれか一項に記載のサーバ。
【請求項１５】
複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバで実行することが可能なコンピュータプログラムにおいて、
前記サーバを、
複製したファイルが前記クライアントにて更新された時点で生成された、更新に関する更新情報を前記クライアントから受信する第１の受信手段、
受信した更新情報に関連する部分を含むファイルを抽出する抽出手段、
抽出したファイルを他のクライアントに複製して送信したか否かを判断する複製判断手段、及び
該複製判断手段で他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する第２の情報送信手段
として機能させるコンピュータプログラム。
【請求項１６】
前記サーバを、
前記更新情報を前記ファイルに対応付けて記憶する情報付与手段、及び
複製した前記ファイルを、対応付けて記憶されている前記更新情報とともに送信するファイル送信手段
として機能させる請求項１５記載のコンピュータプログラム。
【請求項１７】
前記サーバを、
更新対象となるファイルの構造に関する情報を記憶する構造記憶手段として機能させ、
前記抽出手段を、該構造記憶手段に記憶してあるファイルの構造に関する情報に基づいて、前記更新情報に関連する部分を含むファイルを抽出する手段として機能させる請求項１５又は１６記載のコンピュータプログラム。
【請求項１８】
前記ファイルの構造に関する情報は、ファイル間のパラメータ受け渡しに関する情報を含む請求項１７記載のコンピュータプログラム。
【請求項１９】
前記ファイルはプログラム開発用のプログラムファイルである請求項１５乃至１８のいずれか一項に記載のコンピュータプログラム。
【請求項２０】
更新された複数のファイルを集約して記憶するサーバとデータ通信することが可能に接続されているクライアントで実行することが可能なコンピュータプログラムにおいて、
前記クライアントを、
更新用に所定のファイルを複製する指示を前記サーバへ送信する指示送信手段、
複製されたファイルを受信するファイル受信手段、
受信したファイルを更新した時点で更新に関する更新情報を生成する生成手段、及び
生成した更新情報を前記サーバへ送信する第１の情報送信手段
として機能させるコンピュータプログラム。
【請求項２１】
前記クライアントを、
受信したファイルに前記更新情報が対応付けられているか否かを判断する情報判断手段、及び
該情報判断手段で前記更新情報が対応付けられていると判断した場合、前記更新情報が対応付けられている旨を示す情報を報知する報知手段
として機能させる請求項２０記載のコンピュータプログラム。
【請求項２２】
前記クライアントを、
前記警告情報を受信した場合、前記警告情報を受信した旨を示す情報を報知する警告報知手段として機能させる請求項２０又は２１記載のコンピュータプログラム。
【請求項２３】
前記ファイルはプログラム開発用のプログラムファイルである請求項２０乃至２２のいずれか一項に記載のコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のクライアントを用いてファイルを更新し、更新されたファイルをサーバに集約する分散開発環境において、更新作業のコンフリクトを回避することができるシステム、方法、サーバ、及び、サーバ又はクライアントで実行することが可能なコンピュータプログラムに関する。
【背景技術】
【０００２】
大規模なシステム開発では、多数の開発者が分散環境にて開発を実行することが多い。分散環境にてシステム開発を実行する場合、開発したプログラムのソースコード管理、構築されるアプリケーションのビルド管理、バグ管理等をサーバで実行しつつ、複数のクライアントにおいてプログラム開発を実行している。各クライアントにて編集されたソースコードは、定期的にサーバへ集約され、アプリケーションと同様の形態にビルドされた状態でテストを実行する。
【０００３】
開発対象となるシステムの規模が大きくなると、同じプログラムファイルの同じ箇所を複数のクライアントが更新する等のコンフリクトが生じる可能性が高くなる。また、他のクライアントにおける編集作業により思わぬ影響が生じ、ビルド時に想定外のエラーが発生する等、全体のシステム開発を効率良く実行することが困難になる傾向にある。
【０００４】
分散環境にてシステム開発を少しでも効率良く実行するために、例えば特許文献１では、エージェントプロセスがプログラムの更新時のソースコード行数を収集して管理サーバへ集約するソフトウェア開発自動管理システムが開示されている。特許文献１では、開発者端末にてコーディングが開始された場合、ソースコードを保存するワークディレクトリをエージェントプロセスが常時監視しておき、ソースコード行数等の情報を管理サーバへ集約することにより、各開発者端末での作業進捗を管理することができる。
【０００５】
また、特許文献２では、設計資産を格納する際に、格納する設計資産を参照している設計資産を網羅的に取得して設計資産格納庫に格納するリポジトリシステムが開示されている。特許文献３では、プログラムに対して行った各更新情報を記憶しておき、要求があった時点で更新情報を各開発者へ通知する開発支援装置が開示されている。いずれも、開発者側のコンピュータから送信された、内容が更新されているプログラムを受信した時点で、更新に関する情報及び／又は関連するプログラムに関する情報を、集約して管理するサーバ側で記憶している。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００２−３６６６７４号公報
【特許文献２】特開２００７−１７２２２３号公報
【特許文献３】特開２００７−２７２４４３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかし、特許文献１では、収集する情報はソースコード行数等のプログラムの規模を推定するための情報のみであり、分散環境において更新作業のコンフリクトが生じているか否かを検知することはできない。特許文献２及び３では、開発者が使用しているコンピュータから送信された、内容が更新されているプログラムを受信した時点で、更新に関する情報及び／又は関連するプログラムに関する情報を取得することはできるが、サーバ側のデータベースに記憶されない限りプログラムの内容が更新されていることを把握することはできない。
【０００８】
斯かる問題を解決するべく、例えば開発者側のコンピュータがサーバから最新のソースコードを取得して開発者側のコンピュータでテストを実行する場合もある。しかし、第三者が編集中のソースコードについては取得することができず、タイミングによっては最新のソースコードではない状態でテストを実行することから、上記問題は解決されない。
【０００９】
また、プログラムファイルの更新前にプログラムファイルをロックすることにより、第三者による編集作業ができない状態にすることも考えられるが、ロックされている間は他の開発者が該ソースコードに対して編集作業をすることもできず、作業待ち状態が生じる等、分散環境にて開発しているメリットを享受することができないという問題点もあった。
【００１０】
その他、分散環境にてファイルを更新する場合にも、上述した問題点と同様の問題点が生じる。すなわち、第三者によるファイルの更新作業により、実行する更新作業が影響を受ける場合、例えばＨＴＭＬ言語、ＸＭＬ言語等の構造化言語による文書作成を分散環境で実行する場合等にも、文書編集作業のコンフリクトは生じうる。
【００１１】
本発明は斯かる事情に鑑みてなされたものであり、分散環境にて大規模な更新作業を実行する場合であっても、更新作業のコンフリクトが生じる可能性があるか否かを更新者が的確に検知することが可能なシステム、方法、サーバ及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために第１発明に係るシステムは、複数のクライアントと、複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバとを有し、前記クライアントは、更新用に所定のファイルを複製する指示を前記サーバへ送信する指示送信部と、複製されたファイルを受信するファイル受信部と、受信したファイルを更新した時点で更新に関する更新情報を生成する生成部と、生成した更新情報を前記サーバへ送信する第１の情報送信部とを備え、前記サーバは、前記更新情報を前記クライアントから受信する第１の受信部と、受信した更新情報に関連する部分を含むファイルを抽出する抽出部と、抽出したファイルを他のクライアントに複製して送信したか否かを判断する複製判断部と、該複製判断部で他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する第２の情報送信部とを備える。
【００１３】
また、第２発明に係るシステムは、第１発明において、前記サーバは、前記更新情報を前記ファイルに対応付けて記憶する情報付与部と、複製した前記ファイルを、対応付けて記憶されている前記更新情報とともに送信するファイル送信部とを備える。
【００１４】
また、第３発明に係るシステムは、第２発明において、前記クライアントが、受信したファイルに前記更新情報が対応付けられているか否かを判断する情報判断部と、該情報判断部で前記更新情報が対応付けられていると判断した場合、前記更新情報が対応付けられている旨を示す情報を報知する報知部とを備える。
【００１５】
また、第４発明に係るシステムは、第１乃至第３発明のいずれか１つにおいて、前記サーバが、更新対象となるファイルの構造に関する情報を記憶する構造記憶部を備え、前記抽出部は、該構造記憶部に記憶してあるファイルの構造に関する情報に基づいて、前記更新情報に関連する部分を含むファイルを抽出する。
【００１６】
また、第５発明に係るシステムは、第４発明において、前記ファイルの構造に関する情報が、ファイル間のパラメータ受け渡しに関する情報を含む。
【００１７】
また、第６発明に係るシステムは、第１乃至第５発明のいずれか１つにおいて、前記クライアントは、前記警告情報を受信した場合、前記警告情報を受信した旨を示す情報を報知する警告報知部を備える。
【００１８】
また、第７発明に係るシステムは、第１乃至第６発明のいずれか１つにおいて、前記ファイルがプログラム開発用のプログラムファイルである。
【００１９】
次に、上記目的を達成するために第８発明に係る方法は、複数のクライアントと、複数の該クライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバとを用いて実行することが可能な方法において、前記サーバは、前記クライアントにより送信された、更新用に所定のファイルを複製する指示に基づいて、所定のファイルを複製し、複製したファイルを前記クライアントへ送信し、前記ファイルが更新された時点で前記クライアントにて生成された更新に関する更新情報を受信し、受信した更新情報に関連する部分を含むファイルを抽出し、抽出したファイルを他のクライアントに複製して送信したか否かを判断し、他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する。
【００２０】
また、第９発明に係る方法は、第８発明において、前記ファイルがプログラム開発用のプログラムファイルである。
【００２１】
次に、上記目的を達成するために第１０発明に係るサーバは、複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバにおいて、複製したファイルが前記クライアントにて更新された時点で生成された、更新に関する更新情報を前記クライアントから受信する第１の受信部と、受信した更新情報に関連する部分を含むファイルを抽出する抽出部と、抽出したファイルを他のクライアントに複製して送信したか否かを判断する複製判断部と、該複製判断部で他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する第２の情報送信部とを備える。
【００２２】
また、第１１発明に係るサーバは、第１０発明において、前記更新情報を前記ファイルに対応付けて記憶する情報付与部と、複製した前記ファイルを、対応付けて記憶されている前記更新情報とともに送信するファイル送信部とを備える。
【００２３】
また、第１２発明に係るサーバは、第１０又は第１１発明において、更新対象となるファイルの構造に関する情報を記憶する構造記憶部を備え、前記抽出部は、該構造記憶部に記憶してあるファイルの構造に関する情報に基づいて、前記更新情報に関連する部分を含むファイルを抽出する。
【００２４】
また、第１３発明に係るサーバは、第１２発明において、前記ファイルの構造に関する情報は、ファイル間のパラメータ受け渡しに関する情報を含む。
【００２５】
また、第１４発明に係るサーバは、第１０乃至第１３発明のいずれか１つにおいて、前記ファイルはプログラム開発用のプログラムファイルである。
【００２６】
次に、上記目的を達成するために第１５発明に係るコンピュータプログラムは、複数のクライアントとデータ通信することが可能に接続されており、複数の前記クライアントで更新された複数のファイルを集約して記憶するサーバで実行することが可能なコンピュータプログラムにおいて、前記サーバを、複製したファイルが前記クライアントにて更新された時点で生成された、更新に関する更新情報を前記クライアントから受信する第１の受信手段、受信した更新情報に関連する部分を含むファイルを抽出する抽出手段、抽出したファイルを他のクライアントに複製して送信したか否かを判断する複製判断手段、及び該複製判断手段で他のクライアントに複製して送信したと判断した場合、前記ファイルを送信した他のクライアントに別のクライアントで更新されている旨を示す警告情報を送信する第２の情報送信手段として機能させる。
【００２７】
また、第１６発明に係るコンピュータプログラムは、第１５発明において、前記サーバを、前記更新情報を前記ファイルに対応付けて記憶する情報付与手段、及び複製した前記ファイルを、対応付けて記憶されている前記更新情報とともに送信するファイル送信手段として機能させる。
【００２８】
また、第１７発明に係るコンピュータプログラムは、第１５又は第１６発明において、前記サーバを、更新対象となるファイルの構造に関する情報を記憶する構造記憶手段として機能させ、前記抽出手段を、該構造記憶手段に記憶してあるファイルの構造に関する情報に基づいて、前記更新情報に関連する部分を含むファイルを抽出する手段として機能させる。
【００２９】
また、第１８発明に係るコンピュータプログラムは、第１７発明において、前記ファイルの構造に関する情報は、ファイル間のパラメータ受け渡しに関する情報を含む。
【００３０】
また、第１９発明に係るコンピュータプログラムは、第１５乃至第１８発明のいずれか１つにおいて、前記ファイルはプログラム開発用のプログラムファイルである。
【００３１】
次に、上記目的を達成するために第２０発明に係るコンピュータプログラムは、更新された複数のファイルを集約して記憶するサーバとデータ通信することが可能に接続されているクライアントで実行することが可能なコンピュータプログラムにおいて、前記クライアントを、更新用に所定のファイルを複製する指示を前記サーバへ送信する指示送信手段、複製されたファイルを受信するファイル受信手段、受信したファイルを更新した時点で更新に関する更新情報を生成する生成手段、及び生成した更新情報を前記サーバへ送信する第１の情報送信手段として機能させる。
【００３２】
また、第２１発明に係るコンピュータプログラムは、第２０発明において、前記クライアントを、受信したファイルに前記更新情報が対応付けられているか否かを判断する情報判断手段、及び該情報判断手段で前記更新情報が対応付けられていると判断した場合、前記更新情報が対応付けられている旨を示す情報を報知する報知手段として機能させる。
【００３３】
また、第２２発明に係るコンピュータプログラムは、第２０又は第２１発明において、前記クライアントを、前記警告情報を受信した場合、前記警告情報を受信した旨を示す情報を報知する警告報知手段として機能させる。
【００３４】
また、第２３発明に係るコンピュータプログラムは、第２０乃至第２２発明のいずれか１つにおいて、前記ファイルはプログラム開発用のプログラムファイルである。
【発明の効果】
【００３５】
本発明によれば、クライアントにてファイルを更新した時点、例えばクライアントのメモリ上でファイルが更新された時点、ワークディレクトリに更新したファイルが記憶された時点等において、更新に関する更新情報を生成し、生成した更新情報をサーバにて集約することにより、どのファイルのどの部分が更新されているかサーバにて把握することができる。受信した更新情報に関連する部分を含むファイルが他のクライアントにて更新されている場合には、他のクライアントで更新されている旨を示す警告情報を送信することにより、同一のファイルを更新している他のクライアント、更新部分が影響を与えるファイルを更新している他のクライアントが、更新作業時に無用なテストを実行することなく、更新者が的確にテスト、確認作業等の手順を工夫することにより、更新作業の歩留まりの発生を最小限に止めることが可能となる。
【図面の簡単な説明】
【００３６】
【図１】本発明の実施の形態１に係るアプリケーション開発システムの構成例を示すブロック図である。
【図２】本発明の実施の形態１に係るクライアントの構成例を示すブロック図である。
【図３】本発明の実施の形態１に係るアプリケーション開発システムにおける更新情報の流れを示す模式図である。
【図４】他のクライアントで更新されていることによりコンフリクトが生じている可能性がある旨を示す警告情報として送信する通知メールの例示図である。
【図５】エディタのビュー表示画面の例示図である。
【図６】エディタ画面の例示図である。
【図７】本発明の実施の形態１に係るアプリケーション開発サーバの機能ブロック図である。
【図８】本発明の実施の形態１に係るクライアントの機能ブロック図である。
【図９】本発明の実施の形態１に係るクライアントのＣＰＵの処理手順を示すフローチャートである。
【図１０】本発明の実施の形態１に係るアプリケーション開発サーバのＣＰＵの処理手順を示すフローチャートである。
【図１１】想定アプリケーションのクラス図である。
【図１２】想定アプリケーションのシーケンス図である。
【図１３】想定アプリケーションのソースコードを解析した、プログラムファイルの構造の例示図である。
【図１４】本発明の実施の形態２に係るアプリケーション開発サーバのＣＰＵの処理手順を示すフローチャートである。
【発明を実施するための形態】
【００３７】
以下、本発明の実施の形態に係る更新作業のコンフリクトが生じているか否かを更新者が的確に検知することが可能なシステムについて、図面に基づいて具体的に説明する。以下の実施の形態は、特許請求の範囲に記載された発明を限定するものではなく、実施の形態の中で説明されている特徴的事項の組み合わせの全てが解決手段の必須事項であるとは限らないことは言うまでもない。
【００３８】
また、本発明は多くの異なる態様にて実施することが可能であり、実施の形態の記載内容に限定して解釈されるべきものではない。実施の形態を通じて同じ要素には同一の符号を付している。
【００３９】
以下の実施の形態では、コンピュータプログラムを導入した複数のコンピュータシステムで構成されたシステムについて説明するが、当業者であれば明らかな通り、本発明はその一部をコンピュータで実行することが可能なコンピュータプログラムとして実施することができる。したがって、本発明は、コンピュータプログラムを導入した複数のコンピュータシステムで構成されたシステムとしての実施の形態、ソフトウェアとしての実施の形態、又はソフトウェアとハードウェアとの組み合わせの実施の形態をとることができる。コンピュータプログラムは、ハードディスク、ＤＶＤ、ＣＤ、光記憶装置、磁気記憶装置等の任意のコンピュータで読み取ることが可能な記録媒体に記録することができる。
【００４０】
以下に示す本発明の実施の形態では、分散環境にて大規模なプログラム開発を実行する場合を例に挙げて説明する。本発明の実施の形態では、クライアントにてプログラムファイルを更新した時点、例えばクライアントのメモリ上でプログラムファイルを更新した時点、クライアントのワークディレクトリに更新したプログラムファイルを記憶した時点等において、更新に関する更新情報を生成し、生成した更新情報をサーバにて集約することにより、どのプログラムファイルのどの部分が更新されているかサーバにて把握することができる。受信した更新情報に関連する部分を含む他のプログラムファイルが他のクライアントにて更新されている場合には、他のクライアントで更新されている旨を示す警告情報を送信することにより、同一のソースコードを更新している他のクライアント、更新部分が影響を与えるプログラムファイルを更新している他のクライアントが、更新作業時に無用なテストを実行することなく、開発者が的確にテスト手順を工夫することにより、プログラム開発作業の歩留まりの発生を最小限に止めることが可能となる。
【００４１】
（実施の形態１）
図１は、本発明の実施の形態１に係るアプリケーション開発システムの構成例を示すブロック図である。本発明の実施の形態１に係るアプリケーション開発システムは、プログラム開発の開発者が使用する複数のクライアント３、３、・・・と、アプリケーション開発サーバ１とがネットワーク２を介してデータ通信することが可能に接続されている。
【００４２】
アプリケーション開発サーバ１は、少なくともＣＰＵ（中央演算装置）１１、メモリ１２、記憶装置１３、Ｉ／Ｏインタフェース１４、通信インタフェース１５、ビデオインタフェース１６、可搬型ディスクドライブ１７及び上述したハードウェアを接続する内部バス１８で構成されている。
【００４３】
ＣＰＵ１１は、内部バス１８を介してアプリケーション開発サーバ１の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置１３に記憶されているコンピュータプログラム１００に従って、種々のソフトウェア的機能を実行する。メモリ１２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１００の実行時にロードモジュールが展開され、コンピュータプログラム１００の実行時に発生する一時的なデータ等を記憶する。
【００４４】
記憶装置１３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置１３に記憶されているコンピュータプログラム１００は、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体９０から、可搬型ディスクドライブ１７によりダウンロードされ、実行時には記憶装置１３からメモリ１２へ展開して実行される。もちろん、通信インタフェース１５を介してネットワーク２に接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。
【００４５】
また記憶装置１３は、プログラムファイル記憶部１３１、更新情報記憶部１３２、更新クライアント情報記憶部１３３、及びプログラムファイル関係情報記憶部１３４を備えている。プログラムファイル記憶部１３１は、各クライアント３で開発され、直近に更新されたプログラムファイルを記憶する。すなわち、プログラムファイル記憶部１３１に記憶されているプログラムファイルを互いに結合することで、開発対象となるアプリケーションの最新の状態を構築することができる。プログラムファイル記憶部１３１には、各クライアント３から開発が完了したプログラムファイルである旨を示す情報とともに送信（アップロード）されてきたプログラムファイルのみを記憶する。
【００４６】
更新情報記憶部１３２は、各クライアント３で更新されたプログラムファイル名、更新内容、更新部分、更新日時等の更新情報を記憶する。更新情報は、各クライアント３のワークディレクトリに更新されたプログラムファイルが記憶された時点で生成され、アプリケーション開発サーバ１へ送信される。各クライアント３が更新情報をアプリケーション開発サーバ１へ送信するタイミングは、各クライアント３のメモリ上でプログラムファイルが更新された時点であっても良いし、各クライアント３のワークディレクトリにプログラムファイルが記憶された時点であっても良いし、一定時間が経過する都度送信するようにしても良い。
【００４７】
更新クライアント情報記憶部１３３は、プログラムファイル単位で更新作業を行っているクライアント３を識別する情報を記憶する。クライアント３からの指定により、所定のプログラムファイルを更新対象となるプログラムファイルとして複製した時点で、プログラムファイル名と複製指示の送信元のクライアント３を識別する情報とを対応付けて記憶する。なお、プログラムファイル名と対応付けて記憶することに限定されるものではなく、コンピュータプログラムを一又は複数の機能単位で区分けしたプログラムファイルを識別する情報、例えばメソッド名、ブロック名等と対応付けて記憶しても良い。
【００４８】
プログラムファイル関係情報記憶部１３４は、プログラムファイル間のパラメータ、引数、ファンクション等の関係に関する情報を記憶する。ここで、プログラムファイル間の関係に関する情報とは、プログラムファイル単位でのパラメータ、引数、ファンクション等の関係に関する情報に限定されるものではなく、メソッド単位でのパラメータ、引数、ファンクション等の関係に関する情報、ブロック単位でのパラメータ、引数、ファンクション等の関係に関する情報等であっても良い。
【００４９】
また、周知の方法によりプログラムファイル間の類似度を算出し、プログラムファイル名と類似度とを対応付けてプログラムファイル関係情報記憶部１３４に記憶しておいても良い。これにより、記憶してある類似度が所定値より高い場合には、プログラム開発においてコンフリクトが生じる可能性が高いと判断することができる。
【００５０】
通信インタフェース１５は内部バス１８に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク２に接続されることにより、クライアント３、３、・・・等とデータ送受信を行うことが可能となっている。
【００５１】
Ｉ／Ｏインタフェース１４は、キーボード２１、マウス２２等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース１６は、ＣＲＴモニタ、ＬＣＤ等の表示装置２３と接続され、所定の画像を表示する。
【００５２】
図２は、本発明の実施の形態１に係るクライアント３の構成例を示すブロック図である。本発明の実施の形態１に係るクライアント３は、少なくともＣＰＵ（中央演算装置）３１、メモリ３２、記憶装置３３、Ｉ／Ｏインタフェース３４、通信インタフェース３５、ビデオインタフェース３６、可搬型ディスクドライブ３７及び上述したハードウェアを接続する内部バス３８で構成されている。
【００５３】
ＣＰＵ３１は、内部バス３８を介してクライアント３の上述したようなハードウェア各部と接続されており、上述したハードウェア各部の動作を制御するとともに、記憶装置３３に記憶されているコンピュータプログラム１０１に従って、種々のソフトウェア的機能を実行する。メモリ３２は、ＳＲＡＭ、ＳＤＲＡＭ等の揮発性メモリで構成され、コンピュータプログラム１０１の実行時にロードモジュールが展開され、コンピュータプログラム１０１の実行時に発生する一時的なデータ等を記憶する。更新対象となるプログラムファイルもメモリ３２上に展開され、メモリ３２上のプログラムファイルが更新された時点で、上述した更新情報が生成されても良い。
【００５４】
記憶装置３３は、内蔵される固定型記憶装置（ハードディスク）、ＲＯＭ等で構成されている。記憶装置３３に記憶されているコンピュータプログラム１０１は、プログラム及びデータ等の情報を記録したＤＶＤ、ＣＤ−ＲＯＭ等の可搬型記録媒体９１から、可搬型ディスクドライブ３７によりダウンロードされ、実行時には記憶装置３３からメモリ３２へ展開して実行される。もちろん、通信インタフェース３５を介してネットワーク２に接続されている外部のコンピュータからダウンロードされたコンピュータプログラムであっても良い。記憶装置３３は、開発途上のプログラムファイルを記憶するワークディレクトリ３３１を備えている。ワークディレクトリ３３１に更新されたプログラムファイルが記憶された時点で、上述した更新情報が生成されても良い。
【００５５】
通信インタフェース３５は内部バス３８に接続されており、インターネット、ＬＡＮ、ＷＡＮ等の外部のネットワーク２に接続されることにより、アプリケーション開発サーバ１、他のクライアント３、３、・・・等とデータ送受信を行うことが可能となっている。
【００５６】
Ｉ／Ｏインタフェース３４は、キーボード４１、マウス４２等のデータ入力媒体と接続され、データの入力を受け付ける。また、ビデオインタフェース３６は、ＣＲＴモニタ、ＬＣＤ等の表示装置４３と接続され、所定の画像を表示する。
【００５７】
以下、上述した構成のアプリケーション開発サーバ１を用いるアプリケーション開発システムの動作について説明する。図３は、本発明の実施の形態１に係るアプリケーション開発システムにおける更新情報の流れを示す模式図である。図３において、プログラムファイルＡの更新作業を、クライアント３Ａにて開発者Ｄｅｖｅｌｏｐｅｒ．Ａが、クライアント３Ｂにて開発者Ｄｅｖｅｌｏｐｅｒ．Ｂが、分散環境にて行っており、更新情報は、更新されたプログラムファイルがクライアント３Ａ又はクライアント３Ｂのワークディレクトリ３３１に記憶された時点で生成されるものとする。もちろん、クライアント３Ａ又はクライアント３Ｂのメモリ３２上でプログラムファイルが更新された時点であっても良い。
【００５８】
開発者Ｄｅｖｅｌｏｐｅｒ．Ａは、アプリケーション開発サーバ１のプログラムファイル記憶部１３１に記憶してあるプログラムファイルＡを複製し、複製したプログラムファイルＡをダウンロードして更新作業を行うことにより、新たなプログラムファイルＡ’を生成する。更新されたプログラムファイルＡ’は、クライアント３Ａのワークディレクトリ３３１に記憶される。なお、プログラムファイルＡをクライアント３Ａに複製した旨を示す情報は、アプリケーション開発サーバ１の更新クライアント情報記憶部１３３に記憶される。
【００５９】
一方、開発者Ｄｅｖｅｌｏｐｅｒ．Ｂも、アプリケーション開発サーバ１のプログラムファイル記憶部１３１に記憶してあるプログラムファイルＡを複製し、複製したプログラムファイルＡをダウンロードして更新作業を行うことにより、新たなプログラムファイルＡ”を生成する。更新されたプログラムファイルＡ”は、クライアント３Ｂのワークディレクトリ３３１に記憶される。なお、プログラムファイルＡをクライアント３Ｂに複製した旨を示す情報も、アプリケーション開発サーバ１の更新クライアント情報記憶部１３３に記憶される。
【００６０】
クライアント３Ａは、ワークディレクトリ３３１に新たなプログラムファイルＡ’が更新ファイルとして記憶された時点で、更新されたプログラムファイルを識別する情報、例えばプログラムファイル名Ａ、更新部分、更新内容、更新日時等を少なくとも含む更新情報Ａ’を生成し、アプリケーション開発サーバ１へ送信する。この時点では、更新されたプログラムファイルＡ’自体はアプリケーション開発サーバ１へ送信されておらず、更新情報Ａ’のみが送信される。送信された更新情報Ａ’はアプリケーション開発サーバ１の更新情報記憶部１３２に記憶される。
【００６１】
更新情報Ａ’を受信したアプリケーション開発サーバ１は、プログラムファイル関係情報記憶部１３４を照会して、更新情報Ａ’に含まれている更新内容によって更新作業に影響を与える可能性のあるプログラムファイルが存在するか否かを判断する。図３の例では、同じプログラムファイルＡがクライアント３Ｂに複製されていることから、クライアント３Ｂでの更新作業に影響を与える可能性があることが明らかである。
【００６２】
そこで、アプリケーション開発サーバ１は、更新作業に影響を受けると考えられるクライアント３Ｂへ、更新情報Ａ’を送信するとともに、クライアント３Ｂに対して更新情報Ａ’に含まれている更新内容を通知する。これにより、クライアント３Ｂで更新作業を行う開発者Ｄｅｖｅｌｏｐｅｒ．Ｂは、第三者である開発者Ｄｅｖｅｌｏｐｅｒ．ＡによってプログラムファイルＡが更新されている旨を把握することができ、開発者Ｄｅｖｅｌｏｐｅｒ．Ａによって更新されたプログラムファイルＡ’がアプリケーション開発サーバ１へアップロードされた時点でビルド結合テストを行う等、テスト手順を工夫することにより、無用なテストを実行することを回避することができ、プログラム開発作業の歩留まりを最小限に止めることが可能となる。
【００６３】
またクライアント３Ｂも、ワークディレクトリ３３１に新たなプログラムファイルＡ”が更新ファイルとして記憶された時点で、更新されたプログラムファイルを識別する情報、例えばプログラムファイル名Ａ、更新部分、更新内容、更新日時等を少なくとも含む更新情報Ａ”を生成し、アプリケーション開発サーバ１へ送信する。この時点では、更新されたプログラムファイルＡ”自体はアプリケーション開発サーバ１へ送信されておらず、更新情報Ａ”のみが送信される。送信された更新情報Ａ”もアプリケーション開発サーバ１の更新情報記憶部１３２に記憶される。
【００６４】
更新情報Ａ”を受信したアプリケーション開発サーバ１は、プログラムファイル関係情報記憶部１３４を照会して、更新情報Ａ”に含まれている更新内容によって更新作業に影響を与える可能性のあるプログラムファイルが存在するか否かを判断する。図３の例では、同じプログラムファイルＡがクライアント３Ａに複製されていることから、クライアント３Ａでの更新作業に影響を与える可能性があることが明らかである。
【００６５】
そこで、アプリケーション開発サーバ１は、更新作業に影響を受けると考えられるクライアント３Ａへ、更新情報Ａ”を送信するとともに、クライアント３Ａに対して更新情報Ａ”に含まれている更新内容を通知する。これにより、クライアント３Ａで更新作業を行う開発者Ｄｅｖｅｌｏｐｅｒ．Ａは、第三者である開発者Ｄｅｖｅｌｏｐｅｒ．ＢによってプログラムファイルＡが更新されている旨を把握することができ、開発者Ｄｅｖｅｌｏｐｅｒ．Ｂによって更新されたプログラムファイルＡ”がアプリケーション開発サーバ１へアップロードされた時点でビルド結合テストを行う等、テスト手順を工夫することにより、無用なテストを実行することを回避することができ、プログラム開発作業の歩留まりを最小限に止めることが可能となる。
【００６６】
このように、更新したプログラムファイルを各クライアント３のワークディレクトリ３３１に記憶した時点で、更新情報を生成してアプリケーション開発サーバ１へ送信することにより、更新情報に含まれる更新内容によって更新作業に影響を受けると考えられるプログラムファイルを複製して送信した他のクライアント３へ、更新内容を通知することができ、アプリケーション開発サーバ１のプログラムファイル記憶部１３１に更新されたプログラムファイルが記憶される前であっても、第三者による更新状況を把握することができる。
【００６７】
更新内容を通知する方法は、特に限定されるものではなく、電子メールに更新情報を添付して送信しても良い。例えばクライアント３Ｂに対しては、開発者Ｄｅｖｅｌｏｐｅｒ．ＢのメールアドレスＤｅｖｅｌｏｐｅｒ．Ｂ＠ｌｏｃａｔｉｏｎ．βを送信先とする通知メールに更新情報Ａ’を添付して送信し、クライアント３Ａに対しては、開発者Ｄｅｖｅｌｏｐｅｒ．ＡのメールアドレスＤｅｖｅｌｏｐｅｒ．Ａ＠ｌｏｃａｔｉｏｎ．αを送信先とする通知メールに更新情報Ａ”を添付して送信する。
【００６８】
図４は、他のクライアントで更新されていることによりコンフリクトが生じている可能性がある旨を示す警告情報として送信する通知メールの例示図である。図４に示すように、どの開発者によってどの部分が更新対象とされているかを示す通知メールが、更新対象となるブロックのソースコードとともに送信されている。更新内容に関する情報は、生成された更新情報に含まれており、通知メール作成時に読み取られている。もちろん、添付ファイルとして更新情報を直接添付した警告情報を送信しても良い。
【００６９】
通知メールではなく、例えば更新情報を警告情報として送信し、クライアント３で用いているエディタの問題ビュー等に表示しても良い。図５は、エディタのビュー表示画面の例示図である。図５の例では、エディタのビュー表示画面にソースコードの構造エラー、警告等を示すフィールドとともに「変更の衝突」というフィールドを設けてある。「変更の衝突」というフィールドにて、受信した更新情報の内容を表示することにより、更新情報を受信した時点でプログラムファイルを更新するべくエディタを起動させていなかった場合であっても、エディタ起動後にいつでも、更新作業のコンフリクトが生じているか否かを確認することができる。
【００７０】
また、アプリケーション開発サーバ１は、受信した更新情報を、更新対象となるプログラムファイルに対応付けて記憶しておき、各クライアント３へエディタを起動してプログラムファイルを更新する場合に、ダウンロードするプログラムファイルに更新情報を付与して送信する。ダウンロードしたプログラムファイルに更新情報が付与されている場合、更新情報が付与されている旨を示す情報がクライアント３にて表示される。
【００７１】
図６は、エディタ画面の例示図である。図６（ａ）に示すように、ソースコードの更新領域６０とは別に、ソースコードの行単位で、更新情報が付与されている旨を示すアイコン等を表示する表示領域６１が設けてある。図６（ｂ）に示すように、表示領域６１に更新情報が付与されている旨を示す情報６２、例えばアイコン等が警告情報を受信した旨を示す情報として表示されている場合、マウス操作でカーソルを更新情報が付与されている旨を示す情報６２上へ移動することにより、更新内容を表示するウインドウ６３が表示される。更新情報が付与されている旨を示す情報６２は、メソッドのアクセスレベル、パラメータ等のシグニチャを更新している旨を示している。
【００７２】
一方、図６（ｃ）に示すように、表示領域６１に更新情報が付与されている旨を示す情報６４が表示されている場合、マウス操作でカーソルを更新情報が付与されている旨を示す情報６４上へ移動することにより、更新内容を表示するウインドウ６５が表示される。更新情報が付与されている旨を示す情報６４は、「ｅｌｓｅ」以下のブロックを更新している旨を示している。
【００７３】
このように、ソースコードのどの部分に対する更新情報が付与されているか、視覚的に容易に把握することができるとともに、簡単な操作で更新内容に関する情報を表示することができ、プログラムファイルの更新作業のコンフリクトの発生を未然に回避することができる。
【００７４】
図７は、本発明の実施の形態１に係るアプリケーション開発サーバ１の機能ブロック図である。通常は、ネットワーク２を介して接続されている各クライアント３にてプログラムファイルの開発作業、更新作業等を行い、プログラムファイル受信部７０１にて、作業が完了したプログラムファイルを受信し、プログラムファイル記憶部１３１に記憶する。プログラムファイル記憶部１３１に記憶されているプログラムファイルが最新のプログラムファイルであり、ビルドテスト等はプログラムファイル記憶部１３１に記憶されているプログラムファイルを用いて行う。
【００７５】
更新情報受信部（第１の受信部）７０２は、クライアント３にて生成されたプログラムファイルの更新内容等に関する更新情報を受信する。受信した更新情報は更新情報記憶部１３２に記憶される。
【００７６】
プログラムファイル抽出部（抽出部）７０３は、受信した更新情報及びプログラムファイル関係情報記憶部１３４に記憶されているプログラムファイル間の関係に関する情報に基づいて、更新情報で特定される更新内容が影響を与える可能性があるプログラムファイルを抽出する。抽出されるプログラムファイルとしては、例えば同じ引数の関数が含まれているメソッド、ブロック、ソースコード等だけでなく、パラメータの受け渡し元、パラメータの受け渡し先となるプログラムファイル等も含まれる。
【００７７】
複製判断部７０４は、更新クライアント情報記憶部１３３を照会して、抽出したプログラムファイルを複製して他のクライアント３へ送信したか否か、すなわち抽出したプログラムファイルが更新される状態にあるか否かを判断する。プログラムファイルが更新される状態にある場合、更新作業のコンフリクトが生じる可能性がある。
【００７８】
警告情報送信部（第２の情報送信部）７０５は、受信した更新情報で特定されるプログラムファイルが、第三者により更新作業のコンフリクトが生じる可能性がある場合、その旨を示す警告情報を送信する。送信先は、更新クライアント情報記憶部１３３から読み出す。送信する警告情報は特に限定されるものではなく、他のクライアント３にて表示される形態についても限定されない。
【００７９】
更新情報付与部（情報付与部）７０６は、抽出したプログラムファイルに対応付けて更新情報をプログラムファイル記憶部１３１に記憶する。
【００８０】
第三者である他のクライアント３がプログラムファイルを更新するために、更新対象となるプログラムファイルの複製を指示した場合、プログラムファイル送信部（ファイル送信部）７０７は、プログラムファイル記憶部１３１に記憶されている更新情報も複製して、他のクライアント３へ送信する。したがって、更新情報がアプリケーション開発サーバ１へ送信された時点では更新が行われていなかったプログラムファイルであっても、その後第三者が更新を行う場合には更新情報を参照することができ、更新作業のコンフリクトの発生を未然に回避することができる。
【００８１】
図８は、本発明の実施の形態１に係るクライアント３の機能ブロック図である。プログラムファイル複製指示部（指示送信部）８０１は、更新対象となるプログラムファイルを指定し、アプリケーション開発サーバ１にて複製して送信するよう指示を送信する。プログラムファイル受信部（ファイル受信部）８０２は、アプリケーション開発サーバ１から送信されてきた更新対象となるプログラムファイルを受信する。
【００８２】
プログラムファイル更新部８０３は、受信したプログラムファイルの内容を更新し、更新ファイルとしてワークディレクトリ３３１に記憶する。更新作業が完了した場合には、プログラムファイル送信部８０６が、更新したプログラムファイルをアプリケーション開発サーバ１へ送信し、プログラムファイル記憶部１３１に記憶される。
【００８３】
更新情報生成部（生成部）８０４は、更新作業が途上である場合に、更新されたプログラムファイルがワークディレクトリ３３１に記憶された時点で更新情報を生成する。生成される更新情報は、クライアント３で更新されたプログラムファイル名、更新内容、更新部分、更新日時等を少なくとも含む。もちろん、メモリ３２上でプログラムファイルが更新された時点で更新情報を生成しても良い。
【００８４】
更新情報生送信部（第１の情報送信部）８０５は、生成された更新情報をアプリケーション開発サーバ１へ送信する。プログラムファイルがクライアント３にて更新された時点で生成された更新情報を送信することにより、アプリケーション開発サーバ１のプログラムファイル記憶部１３１に記憶されていない状態のプログラムファイルに関するプログラムファイル名、更新内容、更新部分、更新日時等の情報をアプリケーション開発サーバ１が取得することができ、各クライアント３でのプログラムファイルの更新内容を正しく把握することが可能となる。
【００８５】
更新情報判断部（情報判断部）８０７は、更新対象として受信したプログラムファイルに更新情報が付与されているか否かを判断する。更新情報が付与されている場合、第三者による更新作業が行われていることをクライアント３が検知することができ、更新内容も把握することができる。
【００８６】
（警告）報知部８０８は、更新情報が付与されている旨を示す情報をクライアント３を使用している開発者に報知する。また、更新情報で特定されるプログラムファイルが、第三者により更新作業のコンフリクトが生じる可能性がある場合、その旨を示す警告情報を受信したときには、警告情報を受信した旨を示す情報もクライアント３を使用している開発者に報知する。報知する方法は特に限定されるものではなく、例えば図６の例に示すように、表示領域６１に表示されるアイコン表示であっても良い。
【００８７】
図９は、本発明の実施の形態１に係るクライアント３のＣＰＵ３１の処理手順を示すフローチャートである。クライアント３のＣＰＵ３１は、更新対象となるプログラムファイルの指定を受け付ける（ステップＳ９０１）。プログラムファイルの指定の受付方法は特に限定されるものではないが、該クライアント３を使用する開発者が更新することが可能なプログラムファイルを表示装置４３に一覧表示し、マウス４２による選択を受け付けても良いし、キーボード４１により直接プログラムファイル名をキーインしても良い。
【００８８】
ＣＰＵ３１は、指定を受け付けたプログラムファイルのダウンロード指示をアプリケーション開発サーバ１へ送信する（ステップＳ９０２）。ダウンロード指示を受信したアプリケーション開発サーバ１は、指定されたプログラムファイルをプログラムファイル記憶部１３１から複製して、ダウンロード指示の送信元であるクライアント３へ送信する。そして、ダウンロード指示の送信元であるクライアント３を識別する情報、例えばクライアントＩＤに対応付けて、プログラムファイル名を更新クライアント情報記憶部１３３に記憶する。
【００８９】
ＣＰＵ３１は、アプリケーション開発サーバ１から送信されたプログラムファイルを受信し（ステップＳ９０３）、プログラムファイルのソースコード更新用のエディタを起動する（ステップＳ９０４）。エディタの起動は、プログラムファイルを受信した時点でＣＰＵ３１が起動しても良いし、開発者の入力を受け付けても良い。
【００９０】
ＣＰＵ３１は、受信したプログラムファイルに更新情報が付与されているか否かを判断する（ステップＳ９０５）。ＣＰＵ３１が、更新情報が付与されていると判断した場合（ステップＳ９０５：ＹＥＳ）、ＣＰＵ３１は、第三者の更新作業においてコンフリクトが生じる可能性があると判断して、更新情報に含まれる更新内容に関する情報を表示装置４３に表示する（ステップＳ９０６）。
【００９１】
ＣＰＵ３１が、更新情報が付与されていないと判断した場合（ステップＳ９０５：ＮＯ）、ＣＰＵ３１は、ステップＳ９０６をスキップして、更新したプログラムファイルをワークディレクトリ３３１に記憶する（ステップＳ９０７）。すなわち、ビルドテスト完了前の更新されたプログラムファイルは、ワークディレクトリ３３１に記憶される。
【００９２】
ＣＰＵ３１は、更新したプログラムファイルがワークディレクトリ３３１に記憶された時点で、新たな更新情報を生成する（ステップＳ９０８）。生成された更新情報には、少なくとも更新されたプログラムファイル名、更新内容、更新部分、更新日時等が含まれる。もちろん、メモリ３２上でプログラムファイルが更新された時点で更新情報を生成しても良いことは言うまでもない。
【００９３】
ＣＰＵ３１は、生成した更新情報をアプリケーション開発サーバ１へ送信する（ステップＳ９０９）。更新情報を受信したアプリケーション開発サーバ１は、更新作業のコンフリクトが生じているか否かを確認する処理を実行する。
【００９４】
図１０は、本発明の実施の形態１に係るアプリケーション開発サーバ１のＣＰＵ１１の処理手順を示すフローチャートである。アプリケーション開発サーバ１のＣＰＵ１１は、クライアント３から更新情報を受信したか否かを判断する（ステップＳ１００１）。ＣＰＵ１１が、更新情報を受信していないと判断した場合（ステップＳ１００１：ＮＯ）、ＣＰＵ１１は、受信待ち状態となる。
【００９５】
ＣＰＵ１１が、更新情報を受信したと判断した場合（ステップＳ１００１：ＹＥＳ）、ＣＰＵ１１は、更新情報の送信元であるクライアント３に関する情報と対応付けて、更新情報を更新情報記憶部１３２に記憶する（ステップＳ１００２）。更新情報を、送信元に関する情報と対応付けて記憶しておくことにより、どのクライアント３の更新作業においてコンフリクトが発生するか容易に特定することができる。
【００９６】
ＣＰＵ１１は、更新情報に含まれる更新内容に関する情報と関連する部分を含むプログラムファイルがプログラムファイル記憶部１３１に記憶されているか否かを判断する（ステップＳ１００３）。関連部分を含むプログラムファイルが更新された場合に、更新作業のコンフリクトが生じる可能性が高いからである。
【００９７】
ＣＰＵ１１が、更新内容に関する情報と関連する部分を含むプログラムファイルが記憶されていると判断した場合（ステップＳ１００３：ＹＥＳ）、ＣＰＵ１１は、更新内容に関する情報と関連する部分を含むプログラムファイルを抽出し（ステップＳ１００４）、更新情報を、抽出したプログラムファイルに対応付けて記憶する（ステップＳ１００５）。具体的には、プログラムファイル記憶部１３１に記憶されているプログラムファイルに更新情報を付与する。これにより、後日、更新情報が付与されたプログラムファイルが更新の対象となって複製される場合、更新情報とともに、プログラムファイルが複製されて送信されたクライアント３へ送信されることにより、更新作業のコンフリクトが生じる可能性があることを開発者が検知することができ、コンフリクトを回避する手段を採ることにより、未然にコンフリクトの発生を回避することが可能となる。
【００９８】
ＣＰＵ１１は、他のクライアント３、すなわち更新情報の送信元であるクライアント３とは異なるクライアント３に抽出したプログラムファイルが複製されているか否かを判断する（ステップＳ１００６）。ＣＰＵ１１が、他のクライアント３に複製されていると判断した場合（ステップＳ１００６：ＹＥＳ）、ＣＰＵ１１は、更新作業のコンフリクトが生じる可能性が高いと判断し、更新作業のコンフリクトが生じる可能性がある旨を示す警告情報を、プログラムファイルが複製された他のクライアント３へ送信する（ステップＳ１００７）。ＣＰＵ１１が、他のクライアント３に複製されていないと判断した場合（ステップＳ１００６：ＮＯ）、ＣＰＵ１１は、ステップＳ１００７をスキップして、処理を終了する。
【００９９】
ＣＰＵ１１が、更新内容に関する情報と関連する部分を含むプログラムファイルが記憶されていないと判断した場合（ステップＳ１００３：ＮＯ）、ＣＰＵ１１は、処理を終了する。
【０１００】
以上のように本実施の形態１によれば、クライアント３にてプログラムファイルを更新した時点、例えばクライアント３のワークディレクトリ３３１に更新したプログラムファイルを記憶した時点で、更新に関する更新情報を生成し、生成した更新情報をアプリケーション開発サーバ１に集約することにより、どのプログラムファイルのどの部分が更新されているかアプリケーション開発サーバ１にて把握することができる。受信した更新情報に関連する部分を含む他のプログラムファイルが他のクライアント３にて更新されている場合には、他のクライアント３で更新されている旨を示す警告情報を送信することにより、同一のソースコードを更新しているクライアント３、更新部分が影響を与える可能性があるプログラムファイルを更新しているクライアント３等が、更新作業時に無用なテストを実行することなく、開発者が的確にテスト手順を工夫することにより、プログラム開発作業の歩留まりの発生を最小限に止めることが可能となる。
【０１０１】
（実施の形態２）
本発明の実施の形態２に係るシステムの構成は、実施の形態１と同様であることから、同一の符号を付することにより詳細な説明は省略する。本実施の形態２は、更新に関する情報と関連する部分を含むプログラムファイルが記憶されているか否かを高い精度で判断するために、プログラムファイルのソースコードを解析して、プログラムファイルの構造に関する情報を事前に記憶しておく点で実施の形態１と相違する。
【０１０２】
例えば、以下のクラスで構成されたアプリケーションを開発する場合を例に挙げて説明する。図１１は、想定アプリケーションのクラス図である。図１１の例では、４つのクラス「ＡｂｓｔｒａｃｔＡｃｔｉｏｎ」、「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」、「Ｐｅｒｓｏｎ」、「ＰｅｒｓｏｎＦｉｎｄｅｒ」が設定されており、それぞれのクラスについて一または複数のメソッドが定義されている。
【０１０３】
クラス「ＡｂｓｔｒａｃｔＡｃｔｉｏｎ」のメソッドは、クラス「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」に承継されており、子クラスであるクラス「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」に定義されているメソッド「ｄｏＡｃｔｉｏｎ（）」によって、クラス「ＰｅｒｓｏｎＦｉｎｄｅｒ」に定義されているメソッド「ｆｉｎｄＰｅｒｓｏｎ（）」をコールする。
【０１０４】
図１２は、想定アプリケーションのシーケンス図である。図１２の例では、第三者によるメソッドコールにより、まずインスタンス「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」が生成される。そして、インスタンス「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」に定義されているメソッド「ｄｏＡｃｔｉｏｎ（）」によって、クラス「ＰｅｒｓｏｎＦｉｎｄｅｒ」に定義されているメソッド「ｆｉｎｄＰｅｒｓｏｎ（）」がコールされ、その時点でインスタンス「ＰｅｒｓｏｎＦｉｎｄｅｒ」が生成されている。インスタンス「ＰｅｒｓｏｎＦｉｎｄｅｒ」は、クラス「Ｐｅｒｓｏｎ」に基づく配列を抽出して、メソッド「ｆｉｎｄＰｅｒｓｏｎ（）」をコールしたインスタンス「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」へ戻している。
【０１０５】
図１１及び図１２のクラスを含むプログラムファイルのソースコードを基礎として、周知の方法により、クラス、メソッド、ブロックに基づいてプログラムファイルの構造を解析する。図１３は、想定アプリケーションのソースコードを解析した、プログラムファイルの構造の例示図である。図１３のプログラムファイルの構造解析の基礎としたソースコードは、図６の更新領域６０に示したソースコードである。
【０１０６】
図１３に示すように、３つのクラス「ＡｂｓｔｒａｃｔＡｃｔｉｏｎ」１３０１、「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」１３０２、「ＰｅｒｓｏｎＦｉｎｄｅｒ」１３０３のそれぞれについて、定義されているメソッド、及びソースコード中のブロック単位でプログラムファイルの構造がツリー形式で表示されている。
【０１０７】
例えばクラス「ＰｒｏｃｅｓｓＰｅｒｓｏｎＡｃｔｉｏｎ」１３０２に定義されているメソッド「ｄｏＡｃｔｉｏｎ」１３０４により、クラス「ＰｅｒｓｏｎＦｉｎｄｅｒ」１３０３に定義されているメソッド「ｆｉｎｄＰｅｒｓｏｎ」１３０５がコールされるので、メソッド「ｆｉｎｄＰｅｒｓｏｎ」１３０５のパラメータが更新された場合には、メソッド「ｄｏＡｃｔｉｏｎ」１３０４が影響を受ける。したがって、更新情報に含まれる更新内容に関する情報と関連する部分として、メソッド「ｆｉｎｄＰｅｒｓｏｎ」１３０５の更新に対してメソッド「ｄｏＡｃｔｉｏｎ」１３０４を記憶しておけば良い。
【０１０８】
同様にクラス「ＡｂｓｔｒａｃｔＡｃｔｉｏｎ」１３０１に定義されているメソッド「ｌｏｇＥｒｒｏｒ」１３０６のパラメータが更新された場合、ソースコード中でファンクション「ｌｏｇＥｒｒｏｒ」をコールしているメソッド「ｄｏＡｃｔｉｏｎ」１３０４を構成するブロック１３０７、１３０８が影響を受ける。したがって、更新情報に含まれる更新内容に関する情報と関連する部分として、メソッド「ｄｏＡｃｔｉｏｎ」１３０４に対してブロック１３０７、１３０８を記憶しておけば良い。
【０１０９】
このようにプログラムファイルの構造を事前に解析しておき、パラメータの関係、パラメータの受け渡し等の更新内容に関する情報と関連する部分を、プログラムファイル関係情報記憶部１３４に記憶しておくことにより、より高い精度で更新作業においてコンフリクトが生じるか否かを判断することができる。
【０１１０】
図１４は、本発明の実施の形態２に係るアプリケーション開発サーバ１のＣＰＵ１１の処理手順を示すフローチャートである。アプリケーション開発サーバ１のＣＰＵ１１は、更新情報の送信元であるクライアント３に関する情報と対応付けて、更新情報を更新情報記憶部１３２に記憶し（ステップＳ１００２）、更新情報に基づいて更新対象を特定する（ステップＳ１４０１）。更新対象は、プログラムファイル単位に限定されるものではく、例えばメソッド単位、ブロック単位等であっても良い。
【０１１１】
ＣＰＵ１１は、プログラムファイル関係情報記憶部１３４に記憶されているプログラムファイルの構造に関する情報を読み出し（ステップＳ１４０２）、影響を受ける更新対象として記憶されている他の更新対象が存在するか否かを判断する（ステップＳ１４０３）。ＣＰＵ１１が、他の更新対象が存在すると判断した場合（ステップＳ１４０３：ＹＥＳ）、ＣＰＵ１１は他の更新対象を抽出して（ステップＳ１４０４）、ステップＳ１００５以下の処理を継続する。ＣＰＵ１１が、他の更新対象が存在しないと判断した場合（ステップＳ１４０３：ＮＯ）、ＣＰＵ１１は、処理を終了する。
【０１１２】
以上のように本実施の形態２によれば、受信した更新情報に関連する部分を含むプログラムファイル、メソッド、ブロック等が他のクライアント３にて更新されている場合には、他のクライアント３で更新されている旨を示す警告情報を送信することにより、同一のソースコードを更新しているクライアント３、更新部分が影響を与える可能性があるプログラムファイル、メソッド、ブロック等を更新しているクライアント３等が、更新作業時に無用なテストを実行することなく、開発者が的確にテスト手順を工夫することにより、プログラム開発作業の歩留まりの発生を最小限に止めることが可能となる。
【０１１３】
なお、本発明は上記実施例に限定されるものではなく、本発明の趣旨の範囲内であれば多種の変更、改良等が可能である。例えばネットワーク２を介して本実施の形態に係るアプリケーション開発サーバ１に接続されている外部のコンピュータの記憶装置に、プログラムファイル記憶部１３１、プログラムファイル関係情報記憶部１３４等を備え、必要に応じて読み書きするようにしても良いし、ネットワーク２上の仮想ディスクに記憶するようにしても良い。また、別個にアプリケーションテストを実行するビルドサーバを設けても良い。
【０１１４】
さらに、分散環境で実行される大規模なプログラム開発に限定されるものではなく、分散環境にて実行されるあらゆる種類のファイル更新作業、例えばＨＴＭＬ言語、ＸＭＬ言語等の構造化言語による文書作成・更新作業等においても、同様の効果が期待できる。
【符号の説明】
【０１１５】
１  アプリケーション開発サーバ
２  ネットワーク
３  クライアント
１１、３１  ＣＰＵ
１２、３２  メモリ
１３、３３  記憶装置
１４、３４  Ｉ／Ｏインタフェース
１５、３５  通信インタフェース
１６、３６  ビデオインタフェース
１７、３７  可搬型ディスクドライブ
１８、３８  内部バス
２３、４３  表示装置
９０、９１  可搬型記録媒体
１００、１０１  コンピュータプログラム
１３１  プログラムファイル記憶部
１３２  更新情報記憶部
１３３  更新クライアント情報記憶部
１３４  プログラムファイル関係情報記憶部
３３１  ワークディレクトリ
【図１】
2010237870.tif 000003
【図２】
2010237870.tif 000004
【図３】
2010237870.tif 000005
【図４】
2010237870.tif 000006
【図５】
2010237870.tif 000007
【図６】
2010237870.tif 000008
【図７】
2010237870.tif 000009
【図８】
2010237870.tif 000010
【図９】
2010237870.tif 000011
【図１０】
2010237870.tif 000012
【図１１】
2010237870.tif 000013
【図１２】
2010237870.tif 000014
【図１３】
2010237870.tif 000015
【図１４】
2010237870.tif 000016