(57)【特許請求の範囲】
【請求項１】
少なくとも２のクライアント・コンピュータ（以下、クライアントという）と当該クライアントにネットワークを介して接続されうるサーバ・コンピュータ（以下、サーバという）とを備えるコンピューティング環境において、前記少なくとも２のクライアントのうちの１つのクライアント（以下、第１のクライアントという）上で実行されるアプリケーションのローカル環境を共有可能にする方法であって、前記サーバが、
前記第１のクライアントのユーザからの前記ローカル環境のクローン（以下、クローン環境という）の構築の要請に応じて、前記第１のクライアントと異なる少なくとも１つの他のクライアント（以下、第２のクライアントという）から、前記クローン環境に参加する通知を受信するステップと、
前記第１のクライアントが保持する前記ローカル環境についての情報を使用して、前記クローン環境を当該サーバ上に構築するステップと、
前記第１のクライアント及び前記クローン環境に参加する通知を送信した第２のクライアントが前記クローン環境上でコンテンツを編集し又は閲覧することを可能にするステップと
を実行すること含む、前記方法。
【請求項２】
前記構築するステップが、
前記ローカル環境についての情報を使用して、当該情報に基づいて前記クローン環境を構築するための環境の構成要素を当該サーバに関連付けられたレポジトリから取り出すステップと、
前記取り出された構成要素に、前記第１のクライアントが保持する前記アプリケーションのローカル環境の構成要素をマージするステップと
を含む、請求項１に記載の方法。
【請求項３】
前記クローン環境上でコンテンツを編集し又は閲覧することを可能にすることが、前記第１のクライアントに、当該第１のクライアントの画面上のローカル環境を前記クローン環境に切り替えさせること、又は、前記第１のクライアントに、当該第１のクライアントの画面上に前記クローン環境のウィンドウを表示させることによって実現される、請求項１に記載の方法。
【請求項４】
前記サーバが、
前記参加する通知の受信に応答して、前記第２のクライアント又は当該第２のクライアントに関連付けられたユーザが前記クローン環境に参加することの許否を、前記第１のクライアントに問い合わせるステップ
を実行することさらに含み、
前記第２のクライアント又は当該第２のクライアントに関連付けられたユーザが前記クローン環境に参加することの承認を前記第１のクライアントから受信することに応じて、前記構築するステップが実行される、請求項１に記載の方法。
【請求項５】
前記サーバが、前記クローン環境で行われた編集又は閲覧の操作ログである変更セットを、当該サーバに関連付けられた記憶装置内に保存するステップ、又は前記第１のクライアントに送信するステップを実行することをさらに含む、請求項１に記載の方法。
【請求項６】
前記サーバが、前記クローン環境での参加者の識別子、又は、作業の開始時間及び終了時間を当該サーバに関連付けられた記憶装置内に保存するステップを実行することをさらに含む、請求項１に記載の方法。
【請求項７】
前記ローカル環境についての情報が、開発環境のランタイム情報、前記アプリケーションにおいて使用するファイル、ドキュメント又はコードのベースライン情報、又はプライベート・ファイル情報である、請求項１に記載の方法。
【請求項８】
前記開発環境のランタイム情報が、統合開発環境の種類、仮想マシンのバージョン、又はソフトウェア構成管理サーバ名である、請求項７に記載の方法。
【請求項９】
前記ベースライン情報が、ファイル、ドキュメント又はコードのバージョン管理情報である、請求項７に記載の方法。
【請求項１０】
前記プライベート・ファイル情報が、編集対象であるコンテンツに関連付けられたソース又はライブラリである、請求項８に記載の方法。
【請求項１１】
前記構築するステップが、前記ローカル環境についての情報及び前記ローカル環境の構成要素を前記第１のクライアントから受信するステップをさらに含む、請求項２に記載の方法。
【請求項１２】
前記アプリケーションのローカル環境が、統合開発環境、オフィス・アプリケーション環境又は教育支援環境である、請求項１〜１１のいずれか一項に記載の方法。
【請求項１３】
前記コンテンツが、ドキュメント、コード、オフィス・アプリケーション・データ又は教育支援ファイルである、請求項１〜１２のいずれか一項に記載の方法。
【請求項１４】
少なくとも２のクライアント・コンピュータ（以下、クライアントという）と当該クライアントにネットワークを介して接続されうるサーバ・コンピュータ（以下、サーバという）とを備えるコンピューティング環境において、前記少なくとも２のクライアントのうちの１つのクライアント（以下、第１のクライアントという）上で実行されるアプリケーションのローカル環境を共有可能にする方法であって、前記サーバが、
前記第１のクライアントのユーザからの前記ローカル環境のクローン(以下、クローン環境という)の構築の要請に応じて、前記第１のクライアントが保持する前記ローカル環境についての情報を使用して、前記クローン環境を当該サーバ上に構築するステップと、
前記第１のクライアントと異なる少なくとも１つの他のクライアント（以下、第２のクライアントという）から、前記クローン環境に参加する通知を受信するステップと、
前記第１のクライアント及び前記クローン環境に参加する通知を送信した第２のクライアントが前記クローン環境上でコンテンツを編集し又は閲覧することを可能にするステップと
を実行すること含む、前記方法。
【請求項１５】
前記サーバが、
前記参加する通知の受信に応答して、前記参加する通知を送信した第２のクライアント又は当該第２のクライアントに関連付けられたユーザが前記クローン環境に参加することの許否を、前記第１のクライアントに問い合わせるステップ
を実行することさらに含み、
前記参加する通知を送信した第２のクライアント又は当該第２のクライアントに関連付けられたユーザが前記クローン環境に参加することの承認を前記第１のクライアントから受信することに応じて、前記編集し又は閲覧することを可能にするステップが実行される、請求項１４に記載の方法。
【請求項１６】
少なくとも２のクライアント・コンピュータ（以下、クライアントという）と当該クライアントにネットワークを介して接続されうるサーバ・コンピュータ（以下、サーバという）とを備えるコンピューティング環境において、前記少なくとも２のクライアントのうちの１つのクライアント（以下、第１のクライアントという）上で実行されるアプリケーションのローカル環境を共有可能にするサーバであって、
前記第１のクライアントのユーザからの前記ローカル環境のクローン（以下、クローン環境という）の構築の要請に応じて、前記第１のクライアントと異なる少なくとも１つの他のクライアント（以下、第２のクライアントという）から、前記クローン環境に参加する通知を受信する受信手段と、
前記第１のクライアントが保持する前記ローカル環境についての情報を使用して、前記クローン環境を当該サーバ上に構築する構築手段と、
前記第１のクライアント及び前記ローカル環境に参加する通知を送信した第２のクライアントが前記クローン環境上でコンテンツを編集し又は閲覧することを可能にするクローン処理手段と
を備えている、前記サーバ。
【請求項１７】
少なくとも２のクライアント・コンピュータ（以下、クライアントという）と当該クライアントにネットワークを介して接続されうるサーバ・コンピュータ（以下、サーバという）とを備えるコンピューティング環境において、前記少なくとも２のクライアントのうちの１つのクライアント（以下、第１のクライアントという）上で実行されるアプリケーションのローカル環境を共有可能にするサーバであって、
前記第１のクライアントのユーザからの前記ローカル環境のクローン（以下、クローン環境という）の構築の要請に応じて、前記第１のクライアントが保持する前記ローカル環境についての情報を使用して、前記クローン環境を当該サーバ上に構築する構築手段と、
前記第１のクライアントと異なる少なくとも１つの他のクライアント（以下、第２のクライアントという）から、前記クローン環境に参加する通知を受信する受信手段と、
前記第１のクライアント及び前記ローカル環境に参加する通知を送信した第２のクライアントが前記クローン環境上でコンテンツを編集し又は閲覧することを可能にするクローン処理手段と
を備えている、前記サーバ。
【請求項１８】
少なくとも２のクライアント・コンピュータ（以下、クライアントという）と当該クライアントにネットワークを介して接続されうるサーバ・コンピュータ（以下、サーバという）とを備えるコンピューティング環境において、前記少なくとも２のクライアントのうちの１つのクライアント（以下、第１のクライアントという）上で実行されるアプリケーションのローカル環境を共有可能にするサーバに、請求項１〜１５のいずれか一項に記載の方法の各ステップを実行させるコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数のクライアント・コンピュータからコンテンツを共同で編集し又は閲覧をすることを可能にする技法に関し、特にはクライアント・コンピュータ上で実行されるアプリケーションのローカル環境のクローンをサーバ・コンピュータ上に構築する技法に関する。
【背景技術】
【０００２】
ペア・プログラミングは、複数の開発者（例えば二人の開発者）が同一のプログラムの開発作業を協力して行うエクストリーム・プログラミング（eXtreme Programming（ＸＰとも呼ばれる））のプラクティスのひとつである。ペア・プログラミングでは、開発者が物理的に同じ場所で（例えば隣の席同士で）開発作業をする。ペア・プログラミングは特に、コード品質を向上させるなどの面で利点がある。しかし、開発者のペアは動的であり、例えば、午前中にペアになっていた開発者が、午後には別の開発者とペアを組んでいる場合もある。
【０００３】
下記特許文献１は、開発者および／または他のユーザのチームによって開発中の特定のソフトウェアアプリケーションに関するリアルタイムのアクティブメタモデル情報をストアするために中央データベースまたは他の情報ストアを使用するシステムを提供することを記載する（段落００１０）。中央データベースは開発者のチームによって使用中のソフトウェア開発アプリケーションによってアクセスされ、チームがアクティブメタモデル情報にアクセスできるようにする（段落００１０）。この情報にアクセスできるようにすると、開発者は、他の人々のチームによって開発中のアプリケーションのアクティブステートに関するリアルタイムの関連情報を得ることができる（段落００１０）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−５２２３９７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
近年の分散開発環境において、各開発者のスケジュールが異なる場合が多い。そのために、ペア・プログラミングを実践するためには開発者間でまとまった時間の調整が必要である。しかし、その調整は困難であることが多い。また、時間の調整が困難であるために、開発に要する作業時間が増大しがちである。さらに、各開発者が離れた空間又は距離にいる場合もあり、ペア・プログラミングを実践するために開発者が同じ場所に集まることは困難である。そこで、開発者がペア・プログラミングを必要とする時に、共有可能な開発環境上でペア・プログラミングを可能にする技法が望まれている。
【０００６】
また、プログラミング開発は、各開発者のローカル環境で行われている。しかし、各開発者は、このローカル環境を他の開発者によって変更又は破壊されることを望まない。そこで、クライアントのローカル環境を維持したまま、共有可能な開発環境上でペア・プログラミングを可能にする技法が求められている。
【０００７】
また、ペア・プログラミングにおいて、ペア・プログラミングの必要なドキュメント又はコードのみを各クライアントのユーザが編集対象とする技法が望まれる。
【課題を解決するための手段】
【０００８】
本発明は、少なくとも２のクライアント・コンピュータ（以下、クライアントともいう）と当該クライアントにネットワークを介して接続されうるサーバ・コンピュータ（以下、サーバともいう）とを備えうるコンピューティング環境において、当該少なくとも２のクライアントのうちの１つのクライアント（以下、第１のクライアントという）上で実行されるアプリケーションのローカル環境（以下、第１のクライアントのローカル環境ともいう）のクローン（以下、クローン環境ともいう）をサーバ上に構築する技法を提供する。各クライアントのユーザは、当該クローン環境を使用して、オンデマンドでコンテンツの編集又は閲覧をすることが可能である。
【０００９】
本発明の実施態様において、アプリケーションのローカル環境は、例えば、統合開発環境（Integrated Development Environment，以下、ＩＤＥともいう）、オフィス・アプリケーション環境、及び教育支援環境を包含する。アプリケーションのローカル環境は、特にはアプリケーション開発のローカル環境である。
【００１０】
本発明の実施態様において、クローン環境は、クライアントのローカル環境と同等の環境を、サーバ上の分散開発環境上に作成したものである。サーバ上の分散開発環境は例えば、開発に必要な情報（例えば、障害報告、又はタスクなどの変更管理情報）を備えうる。クローン環境は、作業終了後においても、例えば、検証の為にサーバ上に保存しておくことが可能である。
【００１１】
本発明の実施態様において、コンテンツは、例えば、ドキュメント、コード、オフィス・アプリケーション・データ、及び教育支援ファイルを包含する。ドキュメントは、例えば、プログラム開発において使用されるファイルである。コードは、例えば、ソフトウェア開発におけるソースファイルである。オフィス・アプリケーション・データは、例えば、文書データ、表計算データ、プレゼンテーション・データ及び描画データを包含する。教育支援ファイルは、例えば、生徒と教師との間で、又は、生徒と教育支援アプリケーションとの間で使用されうるデータである。
【００１２】
本発明は、第１のクライアントのローカル環境のクローン（クローン環境）をサーバ上に構築する第１の方法を提供する。当該第１の方法は、
上記第１のクライアントのユーザからの上記クローン環境の構築の要請に応じて、上記第１のクライアントと異なる少なくとも１つの他のクライアント（以下、第２のクライアントという）から、上記クローン環境に参加する通知を受信するステップと、
上記第１のクライアントが保持する上記ローカル環境についての情報を使用して、上記クローン環境を当該サーバ上に構築するステップと、
上記第１のクライアント及び上記クローン環境に参加する通知を送信した第２のクライアントが上記クローン環境上でコンテンツを編集し又は閲覧することを可能にするステップと
を含む。
【００１３】
本発明の１つの実施態様において、上記第１の方法は、上記参加する通知の受信に応答して、上記参加する通知を上記第１のクライアントに送信した第２のクライアント又は当該第２のクライアントに関連付けられたユーザが上記クローン環境に参加することの許否を、上記第１のクライアントに問い合わせるステップをさらに含む。そして、上記参加する通知を送信した第２のクライアント又は当該第２のクライアントに関連付けられたユーザが上記クローン環境に参加することの承認を上記第１のクライアントから受信することに応じて、上記クローン環境が当該サーバ上に構築される。
【００１４】
本発明の１つの実施態様において、上記第１の方法は、上記クローン環境の構築の要請に応じて、クライアントに上記クローン環境に参加するかどうかを問い合わせるステップをさらに含む。
【００１５】
本発明は、第１のクライアントのローカル環境のクローン（クローン環境）をサーバ上に構築する第２の方法を提供する。当該第２の方法は、
上記第１のクライアントのユーザからの上記クローン環境の構築の要請に応じて、上記第１のクライアントが保持する上記ローカル環境についての情報を使用して、上記クローン環境を当該サーバ上に構築するステップと、
上記第１のクライアントと異なる少なくとも１つの他のクライアント（第２のクライアント）から、上記サーバ上に構築された上記クローン環境に参加する通知を受信するステップと、
上記第１のクライアント及び上記クローン環境に参加する通知を送信した第２のクライアントが上記クローン環境上でコンテンツを編集し又は閲覧することを可能にするステップと
を含む。
【００１６】
本発明の１つの実施態様において、上記第２の方法は、上記参加する通知の受信に応答して、上記参加する通知を上記第１のクライアントに送信した第２のクライアント又は当該第２のクライアントに関連付けられたユーザが上記クローン環境に参加することの許否を、上記第１のクライアントに問い合わせるステップをさらに含む。そして、上記参加する通知を送信した第２のクライアント又は当該第２のクライアントに関連付けられたユーザが上記クローン環境に参加することの承認を上記第１のクライアントから受信することに応じて、上記コンテンツを編集し又は閲覧することが可能になる。
【００１７】
本発明の１つの実施態様において、クローン環境を上記サーバ上に構築するステップは、
上記ローカル環境についての情報を使用して、当該情報に基づいて上記クローン環境を構築するための環境（例えば、開発環境）の構成要素を当該サーバに関連付けられたレポジトリ（例えば、ソフトウェア構成管理（ＳＣＭ：Software Configuration Management）サーバ）、又は、クライアント環境の構成要素を保持するデータベースから取り出すステップと、
上記取り出された構成要素に、上記第１のクライアントが保持する上記アプリケーションのローカル環境の構成要素をマージするステップと
を含む。
【００１８】
本発明の１つの実施態様において、コンテンツの編集を可能にするステップは、
当該サーバ上でファイルの編集が開始されることに応じて、当該ファイル名に関連付けられた情報が上記第１のクライアントから送信されてきているかどうかをチェックするステップと、
上記ファイル名に関連付けられた情報が上記第１のクライアントに送信されてきていないことに応じて、
上記ファイル名を上記第１のクライアントに送信するステップと、
上記送信したファイル名に関連付けられた情報を上記第１のクライアントから取得するステップと、
上記取得された情報に対応するパラメータを当該サーバ上にあるレジストリから取り出すステップと、
上記ファイル名に関連付けられた情報が上記第１のクライアントに送信されてきていることに応じて、
上記記ファイル名に関連付けられた情報に対応するパラメータを当該サーバ上にあるレジストリから取り出すステップと、
上記取り出されたパラメータに、上記第１のクライアントが保持する上記アプリケーションのローカル環境のパラメータをマージするステップと
を含む。
【００１９】
本発明の１つの実施態様において、クローン環境上でコンテンツを編集し又は閲覧することを可能にすることが、上記第１のクライアントの画面上のローカル環境を上記サーバ上のクローン環境に当該第１のクライアントに切り替えさせること、又は、上記第１のクライアントの画面上に上記サーバ上のクローン環境のウィンドウを当該第１のクライアントに表示させることによって実現される。
【００２０】
また、本発明は、サーバに、上記方法の各ステップを実行させるコンピュータ・プログラムを提供する。
【００２１】
また、本発明は、第１のクライアントのローカル環境のクローン（クローン環境）をサーバ上に構築するサーバを提供する。当該サーバは、
上記第１のクライアントと異なる少なくとも１つの他のクライアント（第２のクライアント）から、上記クローン環境に参加する通知を受信する受信手段と、
上記第１のクライアントが保持する上記ローカル環境についての情報を使用して、上記クローン環境を当該サーバ上に構築する構築手段と、
上記第１のクライアント及び上記クローン環境に参加する通知を送信した第２のクライアントが上記クローン環境上でコンテンツを編集し又は閲覧することを可能にするクローン処理手段と
を備えている。
【発明の効果】
【００２２】
本発明の実施態様に従うと、クローン環境を使用して、複数のユーザが同時に、クライアント・コンピュータ上で編集されうるコンテンツを編集し又は閲覧することが可能である。また、各クライアントのユーザによるコンテンツの編集又は閲覧においてクローン環境を使用することから、クライアントのローカル環境が変更又は破壊されることがない。また、当該クローン環境はクライアントのユーザ要求に応じてオンデマンドで生成されることから、当該ユーザの必要なときにコンテンツの編集又は閲覧をサーバ上で開始することが可能である。
【図面の簡単な説明】
【００２３】
【図１】本発明の実施態様におけるコンピュータ・ハードウェアの基本的なブロック図を示す。
【図２】図１に示すコンピュータ・ハードウェアの機能を有し、本発明の実施態様に従うサーバ及びクライアントの機能ブロック図を示す。
【図３】本発明の実施態様に従う、コンピューティング環境の概要図である。
【図４】本発明の第１の実施態様に従う、クローン環境をサーバ上に構築するプロセスのフローチャートを示す。
【図５】本発明の第２の実施態様に従う、クローン環境をサーバ上に構築するプロセスのフローチャートを示す。
【図６】本発明の実施態様に従う、サーバ上にクローン環境を構築するために、クライアントのローカル環境についての情報をクライアントからサーバに転送するプロセスのフローチャートを示す。
【図７】本発明の実施態様に従う、サーバ上にクローン環境を構築するプロセスのフローチャートを示す。
【図８】本発明の実施態様に従う、サーバ上に構築されたクローン環境に参加するかどうかの通知を送信するプロセスのフローチャートを示す。
【図９】本発明の実施態様に従う、サーバ上に構築されたクローン環境の補完をするプロセスのフローチャートを示す。
【図１０】本発明の実施態様に従う、ペア・プログラミングを終了するプロセスのフローチャートを示す。
【図１１】本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境をサーバ上に構築することを要請する画面の例を示す。
【図１２】本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でペア・プログラミングを行う相手を許可する画面の例を示す。
【図１３】本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でコンテンツを編集又は閲覧するための画面（ローカル環境の画面と置換されている）の例を示す。
【図１４】本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でコンテンツを編集又は閲覧するための画面（別ウィンドウで表示されている）の例を示す。
【図１５】本発明の実施態様に従う、第２のクライアント（エンジニアＢ）におけるクローン環境への参加の募集通知の画面の例を示す。
【図１６】本発明の実施態様に従う、第２のクライアント（エンジニアＢ）におけるクローン環境上でコンテンツを編集又は閲覧するための画面の例を示す。
【図１７】本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でのペア・プログラミングを終了するための画面の例を示す。
【発明を実施するための形態】
【００２４】
本発明の実施態様を、以下に図面に従って説明する。以下の図を通して、特に断らない限り、同一の符号は同一の対象を指す。本発明の実施態様は、本発明の好適な態様を説明するためのものであり、本発明の範囲をここで示すものに限定する意図はないことを理解されたい。
【００２５】
図１は、本発明の実施態様におけるコンピュータ・ハードウェアの基本的なブロック図を示す。
コンピュータ（１０１）は、ＣＰＵ（１０２）とメイン・メモリ（１０３）とを備えており、これらはバス（１０４）に接続されている。ＣＰＵ（１０２）は好ましくは、３２ビット又は６４ビットのアーキテクチャに基づくものであり、例えば、インテル社のＣｏｒｅ  ｉ（商標）シリーズ、Ｃｏｒｅ  ２（商標）シリーズ、Ａｔｏｍ（商標）シリーズ、Ｘｅｏｎ（商標）シリーズ、Ｐｅｎｔｉｕｍ（登録商標）シリーズ、Ｃｅｌｅｒｏｎ（登録商標）シリーズ、ＡＭＤ社のＰｈｅｎｏｍ（商標）シリーズ、Ａｔｈｌｏｎ（商標）シリーズ、Ｔｕｒｉｏｎ（商標）シリーズ又はＳｅｍｐｒｏｎ（商標）が使用されうる。バス（１０４）には、ディスプレイ・コントローラ（１０５）を介して、ディスプレイ（１０６）、例えば液晶ディスプレイ（ＬＣＤ）が接続されうる。ディスプレイ（１０６）は、コンピュータの管理のために、通信回線を介してネットワークに接続されたコンピュータについての情報と、そのコンピュータ上で動作中のソフトウェアについての情報を、適当なグラフィック・インタフェースで表示するために使用される。バス（１０４）にはまた、ＳＡＴＡ又はＩＤＥコントローラ（１０７）を介して、記憶装置（１０８）、例えばハードディスク又はソリッド・ステート・ドライブと、ドライブ（１０９）、例えばＣＤ、ＤＶＤ又はＢＤドライブとが接続されうる。バス（１０４）にはさらに、キーボード・マウスコントローラ（１１０）又はＵＳＢバス（図示せず）を介して、キーボード（１１１）及びマウス（１１２）が接続されうる。
【００２６】
ディスク（１０８）には、オペレーティング・システム、Ｊ２ＥＥなどのＪａｖａ（登録商標）処理環境、Ｊａｖａ（登録商標）アプリケーション、Ｊａｖａ（登録商標）仮想マシン（ＪＶＭ）、Ｊａｖａ（登録商標）実行時（ＪＩＴ）コンパイラを提供するプログラム、その他のプログラム、及びデータが、メイン・メモリにロード可能に記憶されている。
ドライブ（１０９）は、必要に応じて、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ又はＢＤからプログラムをディスク（１０８）にインストールするために使用される。
【００２７】
通信インタフェース（１１４）は、例えばイーサネット（登録商標）・プロトコルに従う。通信インタフェース（１１４）は、通信コントローラ（１１３）を介してバス（１０４）に接続され、コンピュータ（１０１）を通信回線（１１５）に物理的に接続する役割を担い、コンピュータ（１０１）のオペレーティング・システムの通信機能のＴＣＰ／ＩＰ通信プロトコルに対して、ネットワーク・インタフェース層を提供する。なお、通信回線は、有線ＬＡＮ環境、又は例えばＩＥＥＥ８０２．１１ａ／ｂ／ｇ／ｎなどの無線ＬＡＮ接続規格に基づく無線ＬＡＮ環境であってもよい。
【００２８】
図２は、図１に示すコンピュータ（１０１）のハードウェア機能を有し、本発明の実施態様に従うサーバ及びクライアントの機能ブロック図を示す。
サーバ（２０１）は、複数のクライアント（２０２−１〜２０２−ｎ）とネットワーク（２０５）を介して接続されている。サーバ（２０１）及び各クライアント（２０２−１〜２０２−ｎ）とネットワーク（２０５）との接続は、有線又は無線のいずれであってもよい。
【００２９】
また、サーバ（２０１）は、１又は複数のソフトウェア構成管理（ＳＣＭ）サーバ（２０３）とネットワーク（２０５）を介して接続されうる。なお、別の態様として、サーバ（２０１）それ自体が、ソフトウェア構成管理サーバ（２０３）の機能を併せ持つように構成されうる。例えば、サーバ（２０１）は複数の仮想論理区画を備えており、そのうちの少なくとも１つの仮想論理区画がＳＣＭサーバの機能を備えうる。
【００３０】
サーバ（２０１）、複数のクライアント（２０２−１〜２０２−ｎ）、及びネットワーク（２０５）が、本発明の実施態様でいうコンピューティング環境を構成する。当該コンピューティング環境は、例えば統合開発環境、オフィス・アプリケーション・コラボレーション環境、及び教育支援コラボレーション環境でありうる。統合開発環境は、例えばコラボレーション・フレームワークである。コラボレーション・フレームワークは、例えばＪａｚｚ（ＩＢＭの商標である）でありうる。Ｊａｚｚは、コラボレーティブ・ソフトウェア・デリバリーのためのＩＢＭ（商標）  Ｒａｔｉｏｎａｌの新しいテクノロジー・プラットフォームである。
【００３１】
サーバ（２０１）は、図１に示す例えばＣＰＵ（１０２）、メイン・メモリ（１０３）及び記憶装置（１０８）に加えて、クローン環境構築手段（２１１）、受信手段（２１２）及びクローン環境処理手段（２１３）を備えている。また、コンピュータ（２０１）は、さらにレジストリ（２２１）を備えうる。なお、記憶装置（１０８）がレジストリ（２２１）の機能を持ち合わせていてもよい。
【００３２】
クローン環境構築手段（２１１）は、クローン環境の構築を要請するユーザに関連付けられたクライアント（第１のクライアント）が保持するローカル環境に対するクローン環境をサーバ（２０１）上に構築する。当該クローン環境の構築は、例えば、第１のクライアント（２０２−１）からの当該クローン環境の構築の要請を受信することに応じて、又は、第１のクライアント（２０２−１）と異なる少なくとも１つの他のクライアント（第２のクライアント）からの当該クローン環境に参加する通知を受信することに応じて行われる。
【００３３】
また、クローン環境構築手段（２１１）は、クローン環境の構築の要請に応じて、当該クローン環境に参加するかどうかを、所定のクライアントに問い合わせる。クローン環境構築手段（２１１）は、第２のクライアントから送信された参加する通知の受信に応答して、第２のクライアント又は当該第２のクライアントに関連付けられたユーザがクローン環境に参加することの許否を、第１のクライアント（２０２−１）に問い合わせる。
【００３４】
また、クローン環境構築手段（２１１）は、第１のクライアント（２０２−１）が保持するローカル環境についての情報を使用して、当該情報に基づいてクローン環境を構築するための開発環境の構成要素をサーバ（２０１）に関連付けられたＳＣＭサーバ（２０３）、又は、クライアント環境の構成要素を保持するデータベース（図示せず）から取り出し、当該取り出された構成要素に、第１のクライアント（２０２−１）が保持するアプリケーションのローカル環境の構成要素をマージする。
また、クローン環境構築手段（２１１）は、サーバ（２０１）上でファイルの編集が開始されることに応じて、当該ファイルのファイル名を第１のクライアント（２０２−１）に送信し、当該送信したファイル名に関連付けられた情報を第１のクライアント（２０２−１）から取得し、当該取得された情報に対応するパラメータをサーバ（２０１）上にあるレジストリから取り出し、当該取り出されたパラメータに、第１のクライアント（２０２−１）が保持するアプリケーションのローカル環境のパラメータをマージする。
【００３５】
受信手段（２１２）は、クローン環境の構築の要請を第１のクライアント（２０２−１）から受信する。また、受信手段は、第２のクライアントからの当該クローン環境に参加する通知を受信する。
【００３６】
クローン環境処理手段（２１３）は、上記クローン環境がサーバ（２０１）上に構築された後に、第１のクライアント（２０２−１）及び第２のクライアントが当該クローン環境上でコンテンツを編集し又は閲覧することを可能にする。また、クローン環境処理手段（２１３）は、第１のクライアント（２０２−１）及び第２のクライアントによる編集操作のログを記録する。コンテンツの同時編集は、例えばＣｏｌａを使用して行いうる。また、第１のクライアント（２０２−１）のユーザと第２のクライアントのユーザとは、音声通話又は共有ホワイトボードなどのコラボレーション環境でコミュニケーションを互いに行うことが可能である。
【００３７】
また、クローン環境処理手段（２１３）は、第１のクライアント（２０２−１）の画面上のローカル環境をサーバ（２０１）上のクローン環境に当該第１のクライアント（２０２−１）に切り替えさせること、又は、第１のクライアント（２０２−１）の画面上にサーバ（２０１）上のクローン環境のウィンドウを当該第１のクライアント（２０２−１）に表示させることによって実現される。
【００３８】
レジストリ（２２１）は、第１のクライアント（２０２−１）が保持するローカル環境についての情報に対応するクローン環境情報パラメータを格納する。
【００３９】
各クライアント（２０２−１〜２０２−ｎ）は、図１に示す例えばＣＰＵ（１０２）、メイン・メモリ（１０３）及び記憶装置（１０８）に加えて、クローン環境構築要請手段（２３１）、情報セット生成手段（２３２）、情報セット送信手段（２３３）、編集／閲覧手段（２３４）及びローカル環境情報レジストリ（２３５）を備えている。なお、記憶装置（１０８）がローカル環境情報レジストリ（２３５）の機能を持ち合わせていてもよい。
【００４０】
各クライアント（２０２−１〜２０２−ｎ）は、１つの実施態様として、そのローカル環境上で、アプリケーションを実行しうる。または、各クライアント（２０２−１〜２０２−ｎ）は、他の実施態様として、開発用サーバ（図示せず）にネットワークを介して接続し、当該開発用サーバ上でアプリケーションをローカル環境と同様に実行しうる。本発明において、「クライアント上で実行されるアプリケーションのローカル環境」という場合、上記２つの態様を包含する。アプリケーションは、例えば、統合開発環境アプリケーション、オフィス・アプリケーション、及び教育支援アプリケーションを包含する。
【００４１】
クローン環境構築要請手段（２３１）は、サーバ（２０１）上に当該クライアントのローカル環境のクローン（クローン環境）を構築することを当該サーバ（２０１）に要請する。クライアントのローカル環境が例えばＩＤＥ環境である場合、当該クローン環境の構築の要請は例えばペア・プログラミングの要請である。クライアントのローカル環境が例えばオフィス・アプリケーション環境である場合、当該クローン環境の構築の要請は例えば文書の共同編集又は校正の要請でありうる。クライアントのローカル環境が例えば教育支援環境である場合、当該クローン環境の構築の要請は例えば個別授業又は指導の要請でありうる。
【００４２】
情報セット生成手段（２３２）は、サーバ（２０１）に転送する情報セットを格納する領域を当該クライアント（２０２−１）のメモリ中に作成する。また、情報セット生成手段（２３２）は、当該クライアント（２０２−１）のローカル環境（例えば、クライアントの統合開発環境）から、サーバ（２０１）に転送すべき情報を取得する。
【００４３】
情報セット送信手段（２３３）は、情報セット生成手段（２３２）によって作成された情報セットをサーバ（２０１）に送信する。
【００４４】
編集／閲覧手段（２３４）は、クライアントのローカル環境において、アプリケーションの編集又は閲覧を可能にする。また、編集／閲覧手段（２３４）は、サーバ（２０１）上に構築されたクローン環境において、クライアントからのアプリケーションの編集又は閲覧を可能にする。
【００４５】
ローカル環境情報レジストリ（２３５）は、ローカル環境についての情報を格納しうる。
【００４６】
ソフトウェア構成管理（ＳＣＭ）サーバ（２０３）は、ソフトウェア開発プロジェクトをその成果物を通して、制御及び管理するサーバである。ＳＣＭは、ドキュメント又はコードなどの成果物の変更履歴を管理し、製品のバージョン又はリビジョンに個々の成果物のどのバージョンが対応しているかを識別し、任意のバージョンの製品を再現可能にする。
【００４７】
図３は、本発明の実施態様に従う、コンピューティング環境の概要図である。
下記に本発明の実施態様を概略的に説明する。
サーバ（２０１）は、クライアント（２０２−１〜２０２−４）とネットワーク（図示せず）を介して接続されている。クライアント（２０２−１〜２０２−４）の数は例示であり、これに制限されるものでない。また、サーバ（２０１）は、ＳＣＭサーバ（２０３）とネットワーク（図示せず）を介して接続されている。
【００４８】
図３では、クライアント（２０２−１）がクローン環境の構築を要請するクライアント（すなわち、第１のクライアント）であり、クライアント（２０２−２、２０２−３、２０２−４）が、上記要請に応じてサーバ（２０１）上に構築されるクローン環境に参加しうるクライアント（すなわち、第２のクライアント）であるとする。クローン環境の構築の要請は、例えばペア・プログラミングの募集、オフィス・アプリケーションの共同編集の依頼、又は教育支援の開始の依頼である。
【００４９】
クローン環境の構築の要請がペア・プログラミングの募集である場合、各クライアントのユーザは例えば、エンジニアＡ〜Ｄでありうる。クローン環境の構築の要請がオフィス・アプリケーションの共同編集である場合、第１のクライアント（２０２−１）のユーザが例えば部下であり、第２のクライアントのユーザが例えば上司でありうる。クローン環境の構築の要請が教育支援の開始の依頼の場合、第１のクライアント（２０２−１）のユーザが例えば生徒であり、第２のクライアントのユーザが例えば先生でありうる。
【００５０】
以下では、クローン環境の構築の要請がペア・プログラミングの募集である場合を例として説明をするが、クローン環境の構築の要請がオフィス・アプリケーションの共同編集の依頼、教育支援の開始の依頼など、その他の場面においても適用しうることは当業者に明白である。
【００５１】
第１のクライアント（２０２−１）のエンジニアＡは、当該第１のクライアント（２０２−１）のローカル環境上でプログラミング開発を行っている。第１のクライアント（２０２−１）は、当該クライアント上のローカル環境上の画面（３１１）を表示装置上に表示する。
【００５２】
エンジニアＡが、ペア・プログラミングをしたいと考えており、当該サーバ（２０１）にクローン環境の構築を要請する（３０１）。当該要請は、ペア・プログラミングのペア募集でもある。なお、募集するペアの人数は一人に限定されない。当該要請において、第１のクライアント（２０２−１）からサーバ（２０１）に送信される情報は、ペア・プログラミングの場合、例えば、タスクの概要、又は障害報告である。
【００５３】
サーバ（２０１）は、第２のクライアント（２０２−２、２０２−３、２０２−４）（すなわち、エンジニアＢ〜Ｄ）に対してエンジニアＡからのペア募集に対して参加するかどうかのペア募集を通知しうる（３０２）。または、第１のクライアント（２０２−１）が統合開発環境を使用して、当該統合開発環境に接続された第２のクライアントに対してエンジニアＡからのペア募集に対して参加するかどうかのペア募集を直接的に通知しうる（図示せず）。
【００５４】
第１のクライアント（２０２−１）は、サーバ（２０１）上でクローン環境を構築するために必要とされるローカル環境についての情報（例えば、統合開発環境情報）を当該サーバ（２０１）上にアップロードする（３０３）。統合開発環境情報は、例えば、ベースライン情報、未チェックイン・ファイルである。
【００５５】
サーバ（２０１）は、第１のクライアント（２０２−１）からの開発環境情報に基づいてクローン環境を構築するための開発環境の構成要素をＳＣＭサーバ（２０３）（レポジトリ）又は当該サーバ（２０１）上にあるレジストリから取り出して、クローン環境を構築する（３０４）。開発環境の構成要素は、例えば、ソースファイル、バイナリのライブラリ・ファイル、ビルドパスの設定情報である。
【００５６】
第１のクライアント（２０２−１）は、サーバ（２０１）上に構築されたクローン環境にペア・プログラミングをするために参加する（３０５）。また、第２のクライアント（２０２−２、２０２−３、２０２−４）のうち、ペア募集の通知に対して、ペア参加又はオブザーバ参加することをサーバ（２０１）に通知し且つ第１のクライアント（２０２−１）によってその参加が認められた第２のクライアントが、サーバ（２０１）上に構築されたクローン環境にペア・プログラミングをするために又はオブサーバとして参加する（３０６）。第１のクライアント（２０２−１）及び、ペア・プログラミング又はオブザーバ参加をしている第２のクライアントはそれぞれ、サーバ（２０１）上のクローン環境上の画面（３１２）を表示装置上に表示する。
【００５７】
ペア・プログラミングが終了することに応じて、サーバ（２０１）は、クローン環境上での変更セットをＳＣＭサーバ（２０３）に保存する。または、サーバ（２０１）は、必要に応じて、クローン環境上での変更セットを第１のクライアント（２０２−１）に送付する。第１のクライアント（２０２−１）は、サーバ（２０１）から送信されてきた変更セットをそのローカル環境上のデータとマージする。
【００５８】
図４は、本発明の第１の実施態様に従う、クローン環境をサーバ上に構築するプロセスのフローチャートを示す。
ステップ４０１では、第１のクライアント（２０２−１）は、サーバ（２０１）上でクローン環境を構築するというユーザ命令を待つ。
【００５９】
ステップ４０２では、エンジニアＡがペア・プログラミングを開始することを第１のクライアント（２０２−１）の画面を通じて入力する（図１１を参照）。当該入力に応じて、第１のクライアント（２０２−１）は、サーバ（２０１）上でクローン環境を構築することを当該サーバ（２０１）に要請する。エンジニアＡは、当該要請をするに際して、タスク番号（Defect ID＃など）、編集対象であるファイル名、ソースコードの部分を指定しうる（図１１の画面を参照）。また、第１のクライアント（２０２−１）は、サーバ上で構築されうるクローニング環境に参加要請するエンジニアの名前をユーザが指定できるようにしうる。第１のクライアント（２０２−１）は、上記要請に付随して、ユーザによって指定されたタスク番号、編集対象であるファイル名、ソースコードの部分、及び／又は参加要請するエンジニアの名前を送信しうる。編集対象であるファイル名は、例えば、ペア・プログラミングの対象のソースファイル名、及び当該ソースファイルのパスを包含する。ソースコードの部分は、例えば行、段落、チャプター、関数名及びブロック名を包含する。参加要請するエンジニアの名前は、例えば、当該エンジニアの識別ＩＤ、並びに当該エンジニアが使用するクライアントのＩＤ及びＩＰアドレスを包含する。
【００６０】
ステップ４０３では、サーバ（２０１）は、チーム・メンバーであるエンジニアＢ〜Ｄの各クライアントに対してペア・プログラミングに参加をするかどうかの問い合わせをする。または、第１のクライアント（２０２−１）は、サーバ（２０１）を経由せずに、当該第１のクライアント（２０２−１）の統合開発環境を使用して、当該統合開発環境に接続されている他のクライアント（２０２−２、２０２−３、２０２−４）に直接的に参加するかどうかの問い合わせを送付するようにしうる。当該問い合わせにおいて、各クライアントの統合開発環境が、第１のクライアント（２０２−１）と第２のクライアント（２０２−２、２０２−３、２０２−４）との接続のために使用されている。
【００６１】
チーム・メンバーは、例えば、第１のクライアント（２０２−１）から指定されたメンバー、同じプロジェクトに所属するメンバー、同じ組織に所属するメンバー、サーバ（２０１）に予め登録されたメンバー、所定のＩＰアドレスを有するメンバー、ユーザからのタスク番号に関連付けられたメンバー、又はサーバ（２０１）に接続されたメンバー全てとしうる。上記問い合わせは、例えば、各エンジニアの画面上（例えば、統合開発環境の画面）上に例えばダイアログを表示したり（例えば図１５を参照）、各エンジニアのメール・アドレスに参加の要請を送信したり、例えば各エンジニアが共有しうる電子掲示板（例えば、Ｌｏｔｕｓ（ＩＢＭの商標である）  Ｎｏｔｅｓ上の掲示板）上で告知したりすることによって行われうる。サーバ（２０１）から上記参加要請を受信したチーム・メンバーの各クライアントは上記参加要請を受諾する場合に、参加する通知をサーバ（２０１）に送信する。
【００６２】
ステップ４０４では、サーバ（２０１）は、上記参加要請を受諾したクライアントから上記参加する通知を受信する。
【００６３】
ステップ４０５では、サーバ（２０１）は、上記参加要請を受諾したクライアントがあることに応じて、第１のクライアント（２０２−１）に、当該第１のクライアント（２０２−１）のローカル環境についての情報を送信する要求を送信する。第１のクライアント（２０２−１）は、サーバ（２０１）からの上記要請に応じて、ローカル環境についての上記情報をサーバ（２０１）に送信しうる。または、第１のクライアント（２０２−１）がステップ４０２の要請をしたことに応じて自発的に、ローカル環境についての上記情報をサーバ（２０１）に送信しうる。サーバ（２０１）は、第１のクライアント（２０２−１）から、ローカル環境についての上記情報を受信する。
【００６４】
ステップ４０６では、サーバ（２０１）は、ローカル環境についての情報に対応するクローン環境構築パラメータを当該サーバ（２０１）上にあるレジスタから取り出す。サーバ（２０１）は、当該取り出したクローン環境構築パラメータを使用して、クローン環境を構築する。
当該クローン環境が構築されることに応じて、第１のクライアント（２０２−１）及び参加要請を受諾したクライアントは、サーバ（２０１）上に構築されたクローン環境を使用してペア・プログラミングを開始する準備ができる。当該ペア・プログラミングの開始前に、第１のクライアント（２０２−１）は、上記参加要請を受諾したクライアントがペア・プログラミングに参加又は閲覧することを許可するかどうかを決定しうる。当該決定は、ユーザによって個々に判断されてもよいし、第１のクライアント（２０２−１）に予め格納された許可テーブルの内容から判断されてもよい。または、当該決定は、開発プロジェクトのリーダはデフォルトで参加が許可されるように、プロジェクト管理サーバにおいて自動的に判断されるようにしうる。
【００６５】
ステップ４０７では、サーバ（２０１）は、編集対象であるファイルについて作業をするために、クローニング環境上で実行環境の補完が必要であるかどうかを判断する。実行環境の補完が必要である場合とは、例えば、エンジニアＡが編集しているファイルが依存するファイルを有しており、当該依存するファイルがサーバにまだ送信されてない場合である。実行環境の補完が必要ない場合、サーバ（２０１）はステップ４０８の処理に進む。一方、実行環境の補完が必要である場合、サーバ（２０１）はステップ４０９の処理に進む。
【００６６】
ステップ４０８では、サーバ（２０１）は、第１のクライアント（２０２−１）及び当該第１のクライアント（２０２−１）によって参加を許可された第２のクライアント（以下、参加中の第２のクライアントともいう）がクローン環境上でコンテンツを編集し又は閲覧することを許す。第１のクライアント（２０２−１）は、編集が終わると、ペア・プログラミングを終了することをサーバ（２０１）に伝える。または、参加中の第２のクライアントは、編集が終わると、ペア・プログラミングを終了することをサーバ（２０１）に伝える。
【００６７】
ステップ４０９では、サーバ（２０１）は、実行環境の補完に必要な情報を第１のクライアント（２０２−１）又はサーバ（２０１）上のレジストリから入手する。
【００６８】
ステップ４１０では、サーバ（２０１）は、第１のクライアント（２０２−１）又は参加中の第２のクライアントからのペア・プログラミングの終了の通知を受信したかどうかを判断する。サーバ（２０１）が、ペア・プログラミングの終了の通知を受信することに応じて、処理はステップ４１１に進む。一方、サーバ（２０１）は、第１のクライアント（２０２−１）及び参加中の第２のクライアントからのペア・プログラミングの終了の通知を受信していない場合、ステップ４０８に戻る。
【００６９】
ステップ４１１では、エンジニアＡがペア・プログラミングを終了することを第１のクライアント（２０２−１）の画面を通じて入力する（図１７を参照）。第１のクライアント（２０２−１）からのペア・プログラミングの終了の通知を受信することに応じて、サーバ（２０１）は、ペア・プログラミングを終了（すなわち完了）する。
または、ステップ４１１では、参加中の第２のクライアントのエンジニアがペア・プログラミングを終了することを当該第２のクライアント画面を通じて入力する（図１６を参照）。参加中の第２のクライアントからのペア・プログラミングの終了の通知を受信することに応じて、サーバ（２０１）は、ペア・プログラミングを終了する。
サーバ（２０１）は、クローン環境で行われた操作を変更セットとして記録する。変更セットは、例えば、操作ログである。また、サーバ（２０１）は、クローン環境で行われた操作に関連する情報を記録する。当該操作に関連する情報は、例えば、ペア・プログラミングに参加したクライアントの情報（例えばＩＰアドレス）、ユーザ名、作業の開始又は終了時間を包含する。サーバ（２０１）は、変更セットをＳＣＭサーバ（２０３）に登録する。また、サーバ（２０１）は、必要に応じて、変更セットを第１のクライアント（２０２−１）に送信する。第１のクライアント（２０２−１）は、上記変更セットをサーバ（２０１）から受信し、ローカル環境の対応するデータにマージしうる。
【００７０】
図５は、本発明の第２の実施態様に従う、クローン環境をサーバ上に構築するプロセスのフローチャートを示す。
図５は、図４のステップ４０３〜４０４とステップ４０５〜４０６との順番が入れ替わった実施態様（ステップ５０３〜５０６）である。
ステップ５０１〜５０２及びステップ５０７〜５１１それぞれは、ステップ４０１〜４０２及びステップ４０７〜４１１に対応する。
【００７１】
ステップ５０１はステップ４０１に対応するので、ここではそれらの説明を省略する。
【００７２】
ステップ５０２では、第１のクライアント（２０２−１）は、サーバ（２０１）上でクローン環境を構築することを当該サーバ（２０１）に要請する。第１のクライアント（２０２−１）は、上記要請に付随して、ユーザによって指定されたタスク番号、編集対象であるファイル名、ソースコードの部分、及び／又は参加要請するエンジニアの名前を送信しうる。
【００７３】
ステップ５０３では、サーバ（２０１）は、上記参加要請を受信することに応じて、第１のクライアント（２０２−１）に、当該第１のクライアント（２０２−１）のローカル環境についての情報を送信する要求を送信する。第１のクライアント（２０２−１）は、サーバ（２０１）からの上記要請に応じて、ローカル環境についての上記情報をサーバ（２０１）に送信しうる。または、第１のクライアント（２０２−１）がステップ４０２の要請をしたことに応じて自発的に、ローカル環境についての上記情報をサーバ（２０１）に送信しうる。サーバ（２０１）は、第１のクライアント（２０２−１）から、ローカル環境についての上記情報を受信する。
【００７４】
ステップ５０４では、サーバ（２０１）は、ローカル環境についての情報に対応するクローン環境構築パラメータを当該サーバ（２０１）上にあるレジスタから取り出す。サーバ（２０１）は、当該取り出したクローン環境構築パラメータを使用して、第１のクライアント（２０２−１）のローカル環境のクローン環境を構築する。
【００７５】
ステップ５０５では、サーバ（２０１）は、当該サーバ（２０１）上にクローン環境が構築されることに応じて、チーム・メンバーであるエンジニアＢ〜Ｃの各クライアントに対してペア・プログラミングに参加をするかどうかの問い合わせをする。サーバ（２０１）から上記参加要請を受信したチーム・メンバーの各クライアントは上記参加要請を受諾する場合に、参加する通知をサーバ（２０１）に送信する。
【００７６】
ステップ５０６では、サーバ（２０１）は、上記参加要請を受諾したクライアントから上記参加する通知を受信する。
【００７７】
ステップ５０７〜ステップ５１１それぞれはステップ４０７〜４１１に対応するので、ここではそれらの説明を省略する。
【００７８】
図６は、本発明の実施態様に従う、サーバ上にクローン環境を構築するために、クライアントのローカル環境についての情報をクライアントからサーバに転送するプロセスのフローチャートを示す。
図６のフローチャートは、図４のステップ４０５及び図５のステップ５０３のステップの内容を詳しく説明したフローチャートである。
【００７９】
ステップ６０１は、図４のステップ４０４又は図５のステップ５０２が終了することに応じて開始される。
【００８０】
ステップ６０２では、クライアント（２０２−１）の情報セット生成手段（２３２）は、サーバ（２０１）に転送する情報セットを格納する領域を当該クライアント（２０２−１）のメモリ中に作成する。当該格納する領域は、例えばリストでありうる。
【００８１】
ステップ６０３では、情報セット生成手段（２３２）は、当該クライアントのローカル環境（例えば、クライアントの統合開発環境）から、サーバ（２０１）に転送すべきローカル環境についての情報（以下、ローカル環境についての情報ともいう）を取得する。ローカル環境についての情報は、例えば、エンジニアＡの統合開発環境から取得しうる。ローカル環境についての情報は、例えば、統合開発環境のランタイム情報、アプリケーションにおいて使用するファイル、ドキュメント又はコードのベースライン情報、及びプライベート・ファイル情報を包含する。統合開発環境のランタイム情報は、例えば、統合開発環境の種類、仮想マシン（例えばＪＶＭ）のバージョン、及びＳＣＭサーバ名を包含する。アプリケーションにおいて使用するファイル、ドキュメント又はコードのベースライン情報は、例えば、ペア・プログラミングの対象であるファイル、ドキュメント又はコードのバージョン管理情報を包含する。また、当該ベースライン情報は、例えば、ＳＣＭのベースライン情報である。プライベート・ファイル情報は、エンジニアＡの統合開発環境において、指定された部分（例えば、ソースコードの行、関数、ブロックのように特定された部分である）に含まれるプライベート・ファイル情報、及び当該指定された部分に関連するプライベート・ファイル情報を包含する。プライベート・ファイル情報は、例えば、コラボレーション・フレームワーク・サーバに存在しないファイル情報、例えばＳＣＭサーバ（２０３）に新しく追加されてまだチェックインしていないファイル情報である。また、プライベート・ファイル情報は、エンジニアＡの統合開発環境におけるソース又はライブラリ等のうち、ユーザによって指定されたタスク又はソースの部分に関連するソース又はライブラリ等を包含する。
【００８２】
ステップ６０４では、情報セット生成手段（２３２）は、上記取得したローカル環境についての情報を、ステップ６０２で作成した領域に追加する。
【００８３】
ステップ６０５では、情報セット送信手段（２３３）は、上記領域に格納された情報をサーバ（２０１）に転送する。
【００８４】
ステップ６０６では、クライアント（２０２−１）は、上記転送が終了することに応じて、ローカル環境についての情報を転送する上記プロセスを終了する。
【００８５】
図７は、本発明の実施態様に従う、サーバ上にクローン環境を構築するプロセスのフローチャートを示す。
図７のフローチャートは、図４のステップ４０６及び図５のステップ５０４のステップの内容を詳しく説明したフローチャートである。
【００８６】
ステップ７０１は、図６のステップ６０６の「終了」に応じて開始される。
【００８７】
ステップ７０２では、サーバ（２０１）の受信手段（２１２）は、図６に示すフローチャートに従い、第１のクライアント（２０２−１）から転送されたローカル環境についての情報を取得する。
【００８８】
ステップ７０３では、サーバ（２０１）のクローン環境構築手段（２１１）は、転送されたローカル環境についての情報のうち、統合開発環境のランタイム情報に基づいて、当該サーバ（２０１）上の作業領域に統合開発環境を用意する。代替の実施態様として、サーバ（２０１）は、例えば、クラウドにより仮想マシンを使用して統合開発環境を使用しうる。
【００８９】
ステップ７０４では、クローン環境構築手段（２１１）は、転送されたローカル環境についての情報のうち、ＳＣＭ及びベースライン情報に基づいて、使用するファイル群をＳＣＭサーバ（２０３）又はソースファイル若しくはドキュメントを管理するサーバ（図示せず）から取得する。当該使用するファイル群は、例えば、ソースファイル、ドキュメント、及びバイナリのライブラリ・ファイルを包含する。
【００９０】
ステップ７０５では、クローン環境構築手段（２１１）は、ＳＣＭサーバ（２０３）から取得したファイル群をサーバ（２０１）の上記作業領域に用意された統合開発環境に登録する。
【００９１】
ステップ７０６では、クローン環境構築手段（２１１）は、転送されたローカル環境についての情報のうち、プライベート・ファイル情報に基づいて、必要なソース又はライブラリをＳＣＭサーバ（２０３）から取得し、当該取得したソース又はライブラリをサーバ（２０１）上の統合開発環境に上書きする。上書きするファイルがＳＣＭサーバ（２０３）において管理されている場合、必要に応じてチェックアウトする。
【００９２】
ステップ７０７では、サーバ（２０１）は、当該サーバ（２０１）上にクローン環境を構築するプロセスを終了する。
【００９３】
図８は、本発明の実施態様に従う、サーバ上に構築されたクローン環境に参加するかどうかの通知を送信するプロセスのフローチャートを示す。
図８のフローチャートは、図４のステップ４０３及び図５のステップ５０５のステップの内容を詳しく説明したフローチャートである。
【００９４】
ステップ８０１では、サーバ（２０１）は、当該サーバ（２０１）上に構築されたクローン環境に参加するかどうかの通知を送信するプロセスを開始する。または、第１のクライアント（２０２−１）が、上記クローン環境に参加するかどうかの通知を送信するプロセスを統合開発環境を使用して開始しうる。
【００９５】
ステップ８０２では、サーバ（２０１）は、当該サーバ（２０１）上に構築されたクローン環境に参加するかどうかの通知をする相手であるチーム・メンバーのリストを取得する。当該リストは、第１のクライアント（２０２−１）から提供されてもよく、又はサーバ（２０１）が第１のクライアント（２０２−１）用のチーム・メンバーのリストを予め有していてもよい。
【００９６】
ステップ８０３では、第１のクライアント（２０２−１）のユーザであるエンジニアＡがペア・プログラミングをするチーム・メンバーを指定した場合、サーバ（２０１）は、当該指定されたメンバーをステップ８０２のチーム・メンバーのリストに記録する。
【００９７】
ステップ８０４では、サーバ（２０１）は、ステップ８０２のチーム・メンバーのリストから又はステップ８０３で指定されたチーム・メンバーから、メンバーを一人取得する。チーム・メンバーのリストにおいてメンバーに優先順位が関連付けられている場合、サーバ（２０１）は、当該優先順位に従いメンバーを取得する。チーム・メンバーのリストにおいてメンバーに優先順位が関連付けられていない場合、サーバ（２０１）は、例えば、メンバー名のアルファベット順、組織名のアルファベット順、グループ名のアルファベット順を利用して、メンバーを取得する。
【００９８】
ステップ８０５では、サーバ（２０１）は、取得したメンバーがエンジニアＡにより指定された又はエンジニアＡに関連性があるかどうかを判定する。関連性は、例えば、エンジニアＡとプロジェクト上関連しているか、又はエンジニアＡと指定した情報（例えばタスク）と関連するかで判断されうる。取得したメンバーがエンジニアＡにより指定された又はエンジニアＡに関連性がある場合、サーバ（２０１）はステップ８０６の処理に進む。一方、取得したメンバーがエンジニアＡにより指定されていず且つエンジニアＡに関連性がない場合、サーバ（２０１）はステップ８０７の処理に進む。
【００９９】
ステップ８０６では、サーバ（２０１）は、当該メンバーに、当該サーバ（２０１）上に構築された又は構築されうるクローン環境に参加するかどうかの通知をメンバーに通知する。
【０１００】
ステップ８０７では、サーバ（２０１）は、ステップ８０２のチーム・メンバーのリストのメンバー全て、又は、ステップ８０３で指定されたチーム・メンバーの全てを処理したかどうかを判定する。当該全てのメンバーが処理されているいる場合、サーバ（２０１）はステップ８０８の処理に進む。当該全てのメンバーが処理されていない場合、サーバ（２０１）はステップ８０４の処理に戻る。
【０１０１】
ステップ８０８では、サーバ（２０１）は、当該サーバ（２０１）上に構築されたクローン環境に参加するかどうかの通知を送信するプロセスを終了する。
【０１０２】
図８では、サーバ（２０１）がチーム・メンバーに対して個別に通知する実施態様を説明した。その他の実施態様としてサーバ（２０１）は、チーム・メンバー全員に対して一斉に、特定の範囲のＩＰアドレス毎に、特定の組織（例えば、会社組織）毎に、又は特定のグループ（例えば、チーム、プロジェクト）毎に通知するようにしうる。
【０１０３】
図９は、本発明の実施態様に従う、サーバ上に構築されたクローン環境の補完をするプロセスのフローチャートを示す。
図９のフローチャートは、図４のステップ４０７及び図５のステップ５０７のステップの内容を詳しく説明したフローチャートである。コンテンツの新規編集又はコンテンツの編集中において、図７のフローチャートに従い構築されたクローン環境に組み込まれなかったファイルなどが当該編集において必要になった場合に、当該クローン環境の補完が行われうる。
【０１０４】
ステップ９０１では、サーバ（２０１）のクローン環境構築手段（２１１）は、当該サーバ（２０１）上に構築されたクローン環境の補完をするプロセスを開始する。
【０１０５】
ステップ９０２では、第１のクライアント（２０２−１）又は当該第１のクライアント（２０２−１）によって参加を許可された第２のクライアントがクローン環境上でコンテンツ、例えばファイルの編集を新規に開始する。なお、ファイルの編集が開始された場合であって、クローン環境の補完が必要な場合、ステップ９０７のクローン環境の補完のプロセスが終了するまで、当該編集はペンディング状態となる。なお、クローン環境の補完が必要でない場合、クローン環境の補完をするプロセスは終了するか、又は当該プロセスはクローン環境の補完が必要になるまでサーバ（２０１）のバックグラウンドで待機する。
【０１０６】
ステップ９０３では、クローン環境構築手段（２１１）は、エンジニアＡのローカル環境（すなわち、第１のクライアント（２０２−１）のローカル環境）に、新規に編集が開始されたファイル名を送信する。
【０１０７】
ステップ９０４では、第１のクライアント（２０２−１）は、サーバ（２０１）から送信されたファイル名に関連付けられた情報を、当該第１のクライアント（２０２−１）のローカル環境において列挙する。第１のクライアント（２０２−１）は、当該関連付けられた情報を、例えば、当該第１のクライアント（２０２−１）のレジストリから取得する。第１のクライアント（２０２−１）は、当該関連付けられた情報が第１のクライアント（２０２−１）のローカル環境上で変更されているかどうかをチェックする。ローカル環境上で変更されているとは、例えば、ベースラインで特定されるファイルのバージョンに変更が加えられている場合である。当該関連付けられた情報が変更されている場合、当該プロセスはステップ９０４に進む。一方、当該関連付けられた情報が変更されていない場合、クローン環境の補完をするプロセスは終了するか、又は当該プロセスはクローン環境の補完が必要になるまでサーバ（２０１）のバックグラウンドで待機する。これは、第１のクライアント（２０２−１）のローカル環境で変更がないので、第１のクライアント（２０２−１）から上記関連付けられた情報がサーバ（２０１）に送信されていなくても、第１のクライアント（２０２−１）の当該関連付けられた情報は、サーバ（２０１）がＳＣＭサーバ（２０３）から取得した情報と同じであるからである。
【０１０８】
ステップ９０５では、第１のクライアント（２０２−１）は、エンジニアＡのローカル環境で変更が加えられていて且つサーバ（２０１）に転送されていない上記情報をサーバ（２０１）に転送する。このような条件を有する情報をサーバに転送する理由は、サーバ（２０１）上において最初にクローン環境を構築する際に、エンジニアＡのローカル環境上で変更中の全ての情報がサーバ（２０１）に転送されているとは限らないからである。サーバ（２０１）に転送されていない情報は、例えば、サーバ（２０１）上で編集を開始したファイルがエンジニアＡのローカル環境上で変更中のファイルである場合は、その編集を開始したファイル若しくはその差分、又は当該ファイルに関係するファイルである。関係ファイルとは、上記編集を開始したファイルと他のファイルとの依存関係を記述したファイル（例えば、ビルドのためのMakeFile）に依存しうる。
【０１０９】
ステップ９０６では、受信手段（２１２）は第１のクライアント（２０２−１）からの上記情報を受信する。クローン環境構築手段（２１１）は、当該受信した情報又は当該受信した情報で指定されている情報をサーバ（２０１）上のクローン環境のレジストリから取得する。クローン環境構築手段（２１１）は、当該受信した情報又は当該取得した情報を当該サーバ（２０１）上に用意された統合開発環境に上書きして、クローン環境を更新する。当該更新によって、サーバ上に構築されたクローン環境が、上記新規に編集が開始されたコンテンツの編集が可能になるように補完される。
【０１１０】
ステップ９０７では、サーバ（２０１）は、当該サーバ（２０１）上に構築されたクローン環境の補完をするプロセスを終了する。当該プロセスの終了によって、第１のクライアント（２０２−１）及び当該第１のクライアント（２０２−１）によって参加を許可された第２のクライアントがクローン環境上でコンテンツの同時編集を行うことが可能になる。
【０１１１】
図１０は、本発明の実施態様に従う、ペア・プログラミングを終了するプロセスのフローチャートを示す。
図１０のフローチャートは、図４のステップ４１０及び図５のステップ５１０のステップの内容を詳しく説明したフローチャートである。
【０１１２】
ステップ１００１では、サーバ（２０１）は、ペア・プログラミングを終了するプロセスを開始する。当該プロセスは、例えば、エンジニアＡが第１のクライアント（２０２−１）の画面上に表示される「ペア終了」のボタンをマウス等でクリックすることによって開始される（図１３の１３２２、図１４の１４２２、図１７の１３２２を参照）。または、当該プロセスは、エンジニアＢが第２のクライアント（２０２−２）の画面上に表示される「ペア終了」のボタンをマウス等でクリックすることによって開始される（図１６の１５２２を参照）。
【０１１３】
ステップ１００２では、第１のクライアント（２０２−１）は、エンジニアＡからコンテンツの編集又は閲覧の終了の指示を受信する。当該受信に応じて、第１のクライアント（２０２−１）は、サーバ（２０１）にコンテンツの編集又は閲覧を終了する指示を渡す。また、当該終了において、当該コンテンツの編集又は閲覧に参加している他のエンジニアの同意が必要であるようにしうる。係る場合、サーバ（２０１）は、コンテンツの編集又は閲覧を終了する指示を第１のクライアント（２０２−１）から受信すると、クローン環境に参加している第２のクライアントに、コンテンツの編集又は閲覧の終了をする指示がエンジニアＡからあったことを伝えるようにしうる。
【０１１４】
ステップ１００３では、第１のクライアント（２０２−１）は、エンジニアＡからクローン環境上での変更セットのマージ先の提示を受信する。マージ先は、複数指定されてもよい。当該マージ先の受信に応じて、第１のクライアント（２０２−１）は、サーバ（２０１）にマージ先を伝える。なお、ステップ１００３のマージ先の提示は、ステップ１００２の指示と同時に行われてもよい。すなわち、第１のクライアント（２０２−１）が、エンジニアＡからコンテンツの編集又は閲覧の終了の指示と、上記変更セットのマージ先の提示とを同時に受信するようにしうる。係る場合、上記指示及び上記マージ先の提示の受信に応じて、第１のクライアント（２０２−１）は、サーバ（２０１）にコンテンツの編集又は閲覧を終了する指示及びマージ先を伝える。
【０１１５】
ステップ１００４では、サーバ（２０１）は、当該サーバ（２０１）上のクローン環境である統合開発環境から変更セットを取得して、マージ先に転送する。
【０１１６】
ステップ１００５では、転送先において、変更セットがマージされる。マージ先が第１のクライアント（２０２−１）である場合、第１のクライアント（２０２−１）は、当該変更セットをローカル環境のデータ（例えば、ソース・ファイル）とマージしうる。マージ先がＳＣＭサーバ（２０３）である場合、ＳＣＭサーバ（２０３）が、必要に応じて、チェックアウト、マージ、チェックイン等を行うようにしうる。
【０１１７】
ステップ１００６では、サーバ（２０１）は、タスク（例えば、ＣＭタスク）に、編集作業に関する情報を追加する。編集に関する情報は、例えば、参加者の識別子（ＩＤ）（例えば、第２のクライアント又はそのユーザの名前若しくは管理番号）、及び作業の開始時間及び終了時間を包含する。
【０１１８】
ステップ１００７では、サーバ（２０１）は、ペア・プログラミングを終了するプロセスを終了する。サーバ（２０１）上のクローン環境は、ペア・プログラミングの作業終了後においても、各クライアントによる変更の経過を検証するために保存しておくことが可能である。係る場合、サーバ（２０１）は、第１のクライアント（２０２−１）のローカル環境と適宜同期を取ることが可能である。
また、ペア・プログラミングの終了に応じて、第１のクライアント（２０２−１）の画面は、クローン環境の画面（例えば下記図１３を参照）からローカル環境の画面（例えば下記図１１を参照）に自動的に切り替わる。または、当該終了に応じて、第１のクライアント（２０２−１）の画面から、クローン環境のウィンドウ（例えば下記図１４を参照）が消える。
【０１１９】
図１１は、本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境をサーバ上に構築することを要請する画面の例を示す。
図１１は、エンジニアＡのクライアント（２０２−１）の画面（１１０１）を示す。画面（１１０１）は、ＩＤＥアプリケーションの編集画面を示す。エンジニアＡは、ペア・プログラミングの募集（サーバ上でのクローン環境の構築の要請）をしたいとする。エンジニアＡは、画面（１１０１）上のボタン「ペア募集」（１１２１）をマウス等でクリックする。それに応じて、ペア募集ダイアログのウィンドウ（１１３１）が画面（１１０１）上に表示される。ペア募集ダイアログのウィンドウ（１１３１）は、例えば、ＩＤＥアプリケーションのタスク番号を指定するためのダイアログ・ボックス（１１３２）、編集するファイルを選択するためのダイアログ・ボックス（１１３３〜１１３４）、ペア候補を指定するためのダイアログ・ボックス（１１３５〜１１３７）、ペア開始時期を指定するためのダイアログ・ボックス（１１３８）、並びに「ＯＫ」ボタン（１１３９）及び「キャンセル」ボタン（１１４０）を有する。エンジニアＡは、タスク番号をダイアログ・ボックス（１１３２）に指定可能である。また、エンジニアＡは、ペア・プログラミングを行う編集対象であるファイルをダイアログ・ボックス（１１３３）に入力又は指定可能である。また、例えば、ソースコードの行の指定は、例えば、ソースファイルをブラウズするダイアログで行うようにすることができる。また、エンジニアＡは、ペア・プログラミングを行うペア候補を入力又は指定可能である。なお、入力又は指定において、エンジニアの各名前を直接入力するだけでなく、チーム名、グループ名又は組織名が選択可能なようにしうる。また、エンジニアＡは、ペア開始時期を指定しうる。なお、エンジニアＡは、ペア開始時期を、別途、統合開発環境のスケジュール管理機能又はカレンダ機能を使用して指定しうる。タスク番号、編集するファイル、ペア候補、及び／又はペア開始時期が入力又は指定された後に、エンジニアＡが、「ＯＫ」ボタンを押すことによって、エンジニアＡのクライアント（２０２−１）から、サーバ（２０１）にペア募集の通知が送信される。そして、サーバ（２０１）上に、クライアント（２０２−１）の現在のワークスペースと同等のクローン環境が構築される。当該クローン環境の構築において、クライアント（２０２−１）の現在のワークスペースで使用されているベースラインと、編集するファイル一覧で指定されたファイル情報とが使用されうる。
【０１２０】
図１２は、本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でペア・プログラミングを行う相手を許可する画面の例を示す。
図１２は、エンジニアＡのクライアント（２０２−１）の画面（１１０１）を示す。当該画面（１１０１）は、ペア応募者ダイアログ（１２３１）を有する。ここで、エンジニアＡのペア募集に対して、エンジニアＢ（２０２−２）、エンジニアＣ（２０２−３）及びエンジニアＤ（２０２−４）が応募したとする。ペア応募者ダイアログ（１２３１）は、エンジニアＡに対して、エンジニアＢ（２０２−２）、エンジニアＣ（２０２−３）及びエンジニアＤ（２０２−４）のうちの誰とペア・プログラミングをするかの選択を許すためのダイアログ・ボックス（１２３３、１２３４及び１２３５）を表示する。エンジニアＡは、応募者の全て又は一部（例えばエンジニアＢさんとエンジニアＤさん）とペア・プログラミングすることを許可することも可能であり、又は応募者の全てとのペア・プログラミングを拒否することも可能である。エンジニアＡがエンジニアＢとのペア・プログラミングを希望したとする。エンジニアＡがダイアログ・ボックス（１２３３）をマウス等でクリックし、「ＯＫ」ボタンを押すことによって、エンジニアＡのクライアント（２０２−１）から、サーバ（２０１）に許可された（すなわち、ペア・プログラミングを行う）相手がエンジニアＢである情報が送信される。そして、サーバ（２０１）は、エンジニアＢに関連付けられたコンピュータ（２０２−２）に、ペア開始可能であることを伝える。一方、エンジニアＡによって選択されなかったエンジニアＣ及びＤについては、エンジニアＣ及びＤにそれぞれ関連付けられたコンピュータ（２０２−３及び２０２−４）に、ペア開始が拒否されたことを伝える。
【０１２１】
図１３は、本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でコンテンツを編集又は閲覧するための画面（ローカル環境の画面と置換されている）の例を示す。
図１３は、エンジニアＡのクライアント（２０２−１）の画面を示す。当該画面では、ローカルのＩＤＥアプリケーションの編集画面（以下、ローカル環境における編集画面ともいう）（１１０１）が、サーバ（２０１）上に構築されたクローン環境におけるＩＤＥアプリケーションの編集画面（以下、クローン環境における編集画面ともいう）（１３０１）に置き換わっている例を示す。クローン環境における編集画面（１３０１）であることをエンジニアＡに示すために、クローン環境における編集画面（１３０１）はクローンであることを示す表示（１３２２）を有しうる。または、クローン環境における編集画面（１３０１）の背景色をローカル環境における編集画面（１１０１）の背景色と異なる色に設定し、エンジニアＡに対してクローン環境における編集画面（１３０１）であることを示すことが可能である。
また、クローン環境における編集画面（１３０１）は、ペア・プログラミングを実行中であること、その編集対象であるタスクが「１２３」であること、及びペア・プログラミングを行っているエンジニアの名称を表示しうる（１３１４ａ）。
ペア・プログラミングにおいて、コードに対する変更は変更作業をしたクライアントからサーバ（２０１）に送信される。サーバ（２０１）は、各クライアントから送信された変更内容を編集ログとして保存する。
【０１２２】
図１４は、本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でコンテンツを編集又は閲覧するための画面（別ウィンドウで表示されている）の例を示す。
図１４は、エンジニアＡのクライアント（２０２−１）の画面を示す。当該画面では、エンジニアＡのローカルにおけるＩＤＥアプリケーションの編集画面（ローカル環境における編集画面）のウィンドウ（１１０１）上に、サーバ（２０１）上に構築されたクローン環境におけるＩＤＥアプリケーションの編集画面（クローン環境における編集画面）のウィンドウ（１４０１）が別に表示されている。クローン環境における編集画面（１４０１）のウィンドウであることをエンジニアＡに示すために、クローン環境における編集画面はクローンであることを示す表示（１４２３）を有しうる。または、クローン環境における編集画面（１４０１）の背景色をローカル環境における編集画面の背景色と異なる色に設定し、エンジニアＡに対していずれの画面であるかを示すことが可能である。
また、クローン環境における編集画面は、ペア・プログラミングを実行中であること、その編集対象であるタスクが「１２３」であること、及びペア・プログラミングを行っているエンジニアの名称を表示しうる（１４１４）。
また、クライアント（２０２−１）は、クローン環境における編集画面のウィンドウ（１４０１）が消去されるまで、ローカル環境における編集画面のウィンドウ（１１０１）をアクティブにできないように設定しうる。すなわち、クライアント（２０２−１）は、ペア・プログラミングが終了することに応じて、クローン環境における編集画面のウィンドウ（１４０１）を消去するとともに、ローカル環境における編集画面のウィンドウ（１１０１）をアクティブにしうる。
【０１２３】
図１５は、本発明の実施態様に従う、第２のクライアント（エンジニアＢ）におけるクローン環境への参加の募集通知の画面の例を示す。
図１５は、エンジニアＡとペア・プログラミングを行う相手であるエンジニアＢのクライアント（２０２−２）の画面（１５０１）を示す。画面（１５０１）は、エンジニアＡからのペア参加ダイアログ（１５３１）を表示する。ペア参加の募集は、例えば、エンジニアＢのクライアント（２０２−２）の統合開発環境、ダッシュボード、又はメール若しくはインスタント・メッセンジャを通じてエンジニアＢに通知されうる。ペア参加ダイアログ（１５３１）は、例えば、ペア要請者の名前、「今すぐ参加」可能であること又は後に参加可能であること（例えば「下記予定で参加」）を知らせるためのダイアログ・ボックス（１５３３、１５３４）を有する。エンジニアＢが「今すぐ参加」のダイアログ・ボックス（１５３３）を選択し、「ＯＫ」ボタンを押すことによって、今すぐにペア参加可能であることがサーバ（２０１）に伝えられる。また、エンジニアＢが今すぐにペア参加せずに参加可能である予定日付及び必要に応じて時間を指定した場合、その参加可能である予定日付及び時間がサーバ（２０１）に伝えられる。また、ペア参加ダイアログ（１５３１）、コンテンツの編集又は閲覧のいずれを行うかを選択可能なチェックボックスを有しうる（図示せず）。
【０１２４】
図１６は、本発明の実施態様に従う、第２のクライアント（エンジニアＢ）におけるクローン環境上でコンテンツを編集又は閲覧するための画面の例を示す。
図１６は、エンジニアＢのクライアント（２０２−２）の画面（１５０１）を示す。当該画面（１５０１）は、サーバ（２０１）上に構築されたクローン環境におけるＩＤＥアプリケーションの編集又は閲覧画面を有する（１６１１、１６１２、１６１３、１６１４）。また、画面（１５０１）は、ペア・プログラミングを実行中であること、その編集対象であるタスクが「１２３」であること、及びペア・プログラミングを行っているエンジニアの名前を表示しうる（１６１４）。
【０１２５】
図１７は、本発明の実施態様に従う、第１のクライアント（エンジニアＡ）におけるクローン環境上でのペア・プログラミングを終了するための画面の例を示す。
図１７は、エンジニアＡの第１のクライアント（２０２−１）の画面（１３０１）を示す。エンジニアＡはペア・プログラミングの終了をしたいとする。エンジニアＡは、画面（１３０１）上のボタン「ペア終了」（１３２２）をマウス等でクリックする。それに応じて、ペア終了ダイアログのウィンドウ（１７３１）が画面（１３０１）上に表示される。ペア終了ダイアログのウィンドウ（１７３１）は、現在編集中のタスク番号を示すボックス（１７３２）、コメントを記載するためのボックス（１７３３）、及び編集結果をマージするマージ先候補のダイアログ・ボックス（１７３４、１７３５、１７３６）、並びに「ＯＫ」ボタン（１７３７）及び「キャンセル」ボタン（１７３８）を有する。エンジニアＡは、マージ先をダイアログ・ボックス（１７３４、１７３５、１７３６）から選択可能である。マージ先は、例えば、第１のクライアント（２０２−１）（１７３４）及びＳＣＭサーバ（２０３）（１７３５）である。エンジニアＡは、１又は複数のマージ先を指定し、必要に応じてコメントを記入して、「ＯＫ」ボタンを押す。当該「ＯＫ」ボタンが押されることに応じて、ペア・プログラミングが終了する。また、ペア・プログラミング中の編集結果が、指定されたマージ先に格納される。また、ペア・プログラミングが終了することに応じて、エンジニアＡのクライアント（２０２−１）の画面（１３０１）は、ローカル環境の画面に切り替わる。
【図１】
0005649171.tif 000002
【図２】
0005649171.tif 000003
【図３】
0005649171.tif 000004
【図４】
0005649171.tif 000005
【図５】
0005649171.tif 000006
【図６】
0005649171.tif 000007
【図７】
0005649171.tif 000008
【図８】
0005649171.tif 000009
【図９】
0005649171.tif 000010
【図１０】
0005649171.tif 000011
【図１１】
0005649171.tif 000012
【図１２】
0005649171.tif 000013
【図１３】
0005649171.tif 000014
【図１４】
0005649171.tif 000015
【図１５】
0005649171.tif 000016
【図１６】
0005649171.tif 000017
【図１７】
0005649171.tif 000018