(57)【要約】  方法及びシステムは、連携セッションからリアルタイムなピアツーピア通信を開始するために提供される。リアルタイムなピアツーピア通信は、例えばピアツーピア会議などのようにピアツーピア接続を介してメディアコンテンツなどのコンテンツを共有することを含む。より具体的には、複数のクライアントが、例えばリモートアクセスしたアプリケーションで相互に対話する連携セッションの中から、システム及び方法は、連携セッション（例えばピアノードなど）にアクティブに参加するクライアントの検出ができるようにしてクライアントのペア間のピアツーピア接続（複数可）の開設を可能にする。
2016503547.tif 000002
【特許請求の範囲】
【請求項１】
ピアツーピアサービスに使用されるピアツーピア検出及び接続開設フレームワークであって、複数のクライアントデバイスがアプリケーションセッション内で相互に対話することを可能にするコラボレーションサービスを含み、前記コラボレーションサービスは、前記クライアントデバイスの少なくとも１つがアプリケーションセッション内で相互に対話する他のクライアントデバイスを検出することを可能にするために１つまたは複数のメッセージを前記クライアントデバイス間にパスし、クライアントデバイスのペア間でピアツーピア接続を開設するように構成された協同管理装置を含む、フレームワーク。
【請求項２】
前記協同管理装置は、複数のピアツーピア接続を開設するために１つまたは複数のメッセージをクライアントデバイス間にパスし、前記ピアツーピア接続のそれぞれはクライアントデバイスのそれぞれのペア間でなる、請求項１に記載のフレームワーク。
【請求項３】
前記クライアントデバイス間への１つまたは複数のメッセージのパスは、前記クライアントデバイスの１つからピアツーピア接続を開始するための要求を受信し、前記要求を前記クライアントデバイスに同時通信することを含む、請求項１及び２のいずれかに記載のフレームワーク。
【請求項４】
さらに、前記クライアントデバイス間への１つまたは複数のメッセージのパスは、オファーアンサープロトコルに従って前記クライアントデバイス間へオファー及び応答メッセージをパスすることを含む、請求項１〜３のいずれか１項に記載のフレームワーク。
【請求項５】
前記ピアツーピアサービスは、前記クライアントデバイスのペアがピアツーピア接続を介してメディアコンテンツを共有することを可能にする、請求項１〜４のいずれか１項に記載のフレームワーク。
【請求項６】
前記メディアコンテンツは、オーディオまたはビデオの少なくとも１つである、請求項５に記載のフレームワーク。
【請求項７】
前記メディアコンテンツは、前記コラボレーションサービスのリソースを使用することなく、前記ピアツーピア接続を介して共有される、請求項５に記載のフレームワーク。
【請求項８】
前記アプリケーションセッション内で相互に対話する前記クライアントデバイスは、前記コラボレーションサービスにより維持されるセッション情報を使用して検出される、請求項１〜７のいずれか１項に記載のフレームワーク。
【請求項９】
前記コラボレーションサービスは、前記アプリケーションセッションの状態を維持し、前記クライアントデバイス間に前記アプリケーションセッションの前記状態をパスすることで前記アプリケーションセッション内で前記クライアントデバイスが対話することを可能にする、請求項１〜８のいずれか１項に記載のフレームワーク。
【請求項１０】
前記アプリケーションセッションの前記状態は、状態モデルに維持される、請求項９に記載のフレームワーク。
【請求項１１】
前記アプリケーションセッション内で相互に対話する前記クライアントデバイスは、前記状態モデルに維持されるセッション情報を使用して検出される、請求項１０に記載のフレームワーク。
【請求項１２】
ピアツーピアサービスに使用されるピアツーピア検出及び接続を開設する方法であって、
アプリケーションセッションを容易にし、複数のクライアントデバイスが前記アプリケーションセッション内で相互に対話し、
前記クライアントデバイスの少なくとも１つが前記アプリケーションセッション内で相互に対話するクライアントデバイスを検出することを可能にし、
前記クライアントデバイスのペア間でピアツーピア接続を開設するため１つまたは複数のメッセージを前記クライアントデバイス間にパスする
ことを含む、方法。
【請求項１３】
複数のピアツーピア接続を開設するため１つまたは複数のメッセージを前記クライアントデバイス間にパスすることを含み、前記ピアツーピア接続のそれぞれは前記クライアントデバイスのそれぞれのペア間でなる、請求項１２に記載の方法。
【請求項１４】
さらに、１つまたは複数のメッセージの前記クライアントデバイス間へのパスは、前記クライアントデバイスの１つからピアツーピア接続を開始するための要求を受信し、要求を前記クライアントデバイスに同時通信することを含む、請求項１２及び１３のいずれか１項に記載の方法。
【請求項１５】
さらに、１つまたは複数のメッセージの前記クライアントデバイス間へのパスは、オファーアンサープロトコルに従って前記クライアントデバイス間へオファー及び応答メッセージをパスすることを含む、請求項１２〜１４のいずれか１項に記載の方法。
【請求項１６】
さらに、前記ピアツーピア接続を介してクライアントデバイスの前記ペア間でメディアコンテンツの共有を容易にすることを含む、請求項１２〜１５のいずれか１項に記載の方法。
【請求項１７】
前記メディアコンテンツは、オーディオまたはビデオの少なくとも１つである、請求項１６に記載の方法。
【請求項１８】
前記メディアコンテンツは、前記アプリケーションセッション外で前記ピアツーピア接続を介して共有される、請求項１６に記載の方法。
【請求項１９】
さらに、前記アプリケーションセッションを容易にすることは、前記アプリケーションセッションの状態を維持し、前記クライアントデバイス間に前記アプリケーションセッションの前記状態をパスすることを含む、請求項１２〜１８のいずれか１項に記載の方法。
【請求項２０】
前記アプリケーションセッションの前記状態は、状態モデルに維持される、請求項１９に記載の方法。
【請求項２１】
前記アプリケーションセッション内で相互に対話する前記クライアントデバイスは、前記状態モデルに維持されるセッション情報を使用して検出される、請求項２０に記載の方法。
【請求項２２】
ピアツーピアサービスに使用されるピアツーピア検出及び接続を開設する方法であって、
コラボレーションサービスからアプリケーションセッションでアクティブなローカルピアデバイスのためにローカルセッション識別子を取得し、
前記コラボレーションサービスから前記アプリケーションセッションでアクティブな少なくとも１つのリモートピアデバイスのために少なくとも１つのリモートセッション識別子を取得し、
ローカルセッション識別子がリモートセッション識別子よりも小さいか否かを決定し、もし、前記ローカルセッション識別子が前記リモートセッション識別子に満たない場合、前記ローカルピアデバイスから前記リモートピアデバイスにオファーメッセージを送信し、
前記ローカルピアデバイスで前記リモートピアデバイスから応答メッセージを受信し、前記ローカルピアデバイスとリモートピアデバイス間のピアツーピア接続を開設し、前記オファー及び応答メッセージが前記コラボレーションサービスを使用して前記ローカルピアデバイスとリモートピアデバイス間にパスされる、
方法。
【請求項２３】
前記コラボレーションサービスから複数のリモートセッション識別子を取得し、前記リモートセッション識別子のそれぞれは前記アプリケーションセッションでアクティブなリモートピアデバイスのそれぞれと関連付けられ、
前記ローカルセッション識別子が前記リモートセッション識別子のそれぞれより小さいか否かを決定する、
ことを含む請求項２２に記載の方法。
【請求項２４】
もし、前記ローカルセッション識別子が前記リモートセッション識別子に満たない場合、前記ローカルピアデバイスを使用してローカルピア接続オブジェクトを生成し、
前記ローカルピアデバイスのローカルメディアリソースを前記ローカルピア接続オブジェクトに添付し、ここで前記オファーメッセージが前記ローカルピアデバイスの１つ以上の属性を備える、
請求項２２及び２３のいずれか１項に記載の方法。
【請求項２５】
ローカルピアデバイスの１つ以上の属性は、ローカルセッション識別子を含む、請求項２２〜２４のいずれか１項に記載の方法。
【請求項２６】
さらに、前記リモートセッション識別子に基づく前記ローカルピアデバイスを使用してローカルピア接続オブジェクトを格納することを含む、請求項２４に記載の方法。
【請求項２７】
さらに、前記オファーメッセージを受信すると、前記リモートピアデバイスを使用してリモートピア接続オブジェクトを生成し、
前記リモートピアデバイスのリモートメディアリソースを前記リモートピア接続オブジェクトへ添付し、
前記リモートピアデバイスの１つ以上の属性を前記リモートピア接続オブジェクトに添付し、ここで前記応答メッセージは前記リモートピアデバイスの１つ以上の属性を備える、請求項２４に記載の方法。
【請求項２８】
前記リモートピアデバイスの前記１つ以上の属性は、前記リモートセッション識別子を含む、請求項２７に記載の方法。
【請求項２９】
さらに、前記リモートピアデバイスの前記１つ以上の属性を前記ローカルピア接続オブジェクトへ添付することを含む、請求項２８に記載の方法。
【請求項３０】
ピアツーピアサービスで使用するためのピアツーピア検出及び接続を開設する方法であって、
コラボレーションサービスからアプリケーションセッションでアクティブなローカルピアデバイスのローカルセッション識別子を取得し、
前記コラボレーションサービスから前記アプリケーションセッション内でアクティブな少なくとも１つのリモートピアデバイスの少なくとも１つのリモートセッション識別子を取得し、
前記ローカルセッション識別子が前記リモートセッション識別子よりも大きいか否かを判断し、前記ローカルセッション識別子が前記リモートセッション識別子よりも大きい場合、前記リモートピアデバイスに前記ローカルピアデバイスからオファーメッセージを送信し、
前記ローカルピアデバイスで前記リモートピアデバイスから応答メッセージを受信し、
前記ローカルピアデバイス及びリモートピアデバイス間のピアツーピア接続を開設し、ここで前記オファー及び応答メッセージは前記コラボレーションサービスを使用して、前記ローカルピアデバイス及びリモートピアデバイス間でパスされる、方法。
【請求項３１】
ピアツーピアサービスで使用するためのピアツーピア検出及び接続を開設する方法であって、
コラボレーションサービスからアプリケーションセッション内でアクティブなローカルピアデバイスのローカルセッション識別子を取得し、
前記コラボレーションサービスから前記アプリケーションセッション内でアクティブなリモートピアデバイスの複数のリモートセッション識別子を取得し、
以下で定義される関数：
ｆ（ａ，a）＝偽  及び
ａ！＝  ｂＡＮＤｆ（ｂ，ａ）＝偽  の場合にのみｆ（ａ，ｂ）＝真
を使用して前記ローカルピアデバイスでオファーメッセージを前記リモートピアデバイスのいずれかに送信するかを決定し、
前記ローカルピアデバイスで前記リモートピアデバイスからの応答メッセージを受信し、前記ローカル及びリモートピアデバイス間のピアツーピア接続を開設し、ここでオファー及び応答メッセージは前記コラボレーションサービスを使用して、前記ローカル及びリモートピアデバイス間でパスされる、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、連携アプリケーションセッションからのピアツーピア検出と接続のための方法及びシステムに関する。
［関連出願の相互参照］
この出願は、「管理及び非管理サービスを利用したコラボレーション及びピアツーピア通信を提供するための方法及びシステム」と題する、２０１２年１１月２３日に出願された米国仮特許出願第６１／７２９，４８１号の優先権を主張し、その全体が参照により本明細書に組み込まれている。
【背景技術】
【０００２】
ピアツーピアサービスは、ユーザーデバイス間でピアツーピア通信（例えば、ピアツーピア会議）をリアルタイムで可能にする。例えばピアツーピアサービスは、ペアのユーザーデバイスがピアツーピア接続を開設することを可能にし、その後ユーザーデバイスは、例えばオーディオ、ビデオ、デスクトップスクリーンスクレープ、画像ライブラリなどのメディアコンテンツを、ピアツーピア接続を介して共有することができる。しかし、ピアツーピアサービスは、潜在的なピアデバイスを検出するためのメカニズムを提供することができない。さらに、ユーザーデバイスのペア間でピアツーピア接続を開設する前に、ピアツーピアサービスは、通信するべきユーザーデバイス対のためのメカニズムを提供することができない。
【発明の概要】
【課題を解決するための手段】
【０００３】
連携セッションからのリアルタイムなピアツーピア通信を開始するために、方法及びシステムを本願で提供する。リアルタイムのピアツーピア通信は、例えばピアツーピア会議などのピアツーピア接続を介して、メディアコンテンツのようなコンテンツを共有することを含む。より具体的には、システム及び方法は、複数のクライアントが相互に、例えばリモートアクセスしたアプリケーションと対話する連携セッションの中から、アクティブに連携セッションへ参加したクライアントの検出ができるようにして（例えば、ピアノード）、クライアントのペア間のピアツーピア接続の開設を可能にする。
【０００４】
ピアツーピアサービスで使用するための例示的なピアツーピア検出及び接続開設のフレームワークは、複数のクライアントデバイスがアプリケーションセッション内で相互に対話することを可能にするコラボレーションサービスを含むことができる。換言すれば、クライアントデバイスは、連携アプリケーションセッション内で協働する参加者となることができる。さらに、コラボレーションサービスは、クライアントデバイスの少なくとも１つがアプリケーションセッション内で相互に情報交換するクライアントデバイスを検出することを可能にするために、1つまたは複数のメッセージをクライアントデバイス間にパスするように構成された協同管理装置を含むことができる。例えば、協同管理装置は参加者の一人がアプリケーションセッション内で対話する他の参加者を検出できることを可能にする。協同管理装置は、クライアントデバイスのペア間でピアツーピア接続を開設するように構成することもできる。メッセージは、クライアントデバイスのそれぞれのペア間でピアツーピア接続を開設するために使用することができる。
【０００５】
ピアツーピアサービスで使用するためのピアツーピア検出及び接続開設の例示的な方法は、複数のクライアントデバイスがアプリケーションセッション内で対話し、クライアントデバイスの少なくとも１つがアプリケーションセッション内で対話するクライアントデバイスを検出し、クライアントデバイスのペア間でピアツーピア接続を開設するために、クライアントデバイス間に1つまたは複数のメッセージをパスすることを可能にするアプリケーションセッションを容易にすることを含み得る。メッセージは、クライアントデバイスのそれどれのペア間でピアツーピア接続を開設するために使用することができる。
【０００６】
いくつかの実装では、クライアントデバイス間に1つまたは複数のメッセージをパスすることは、クライアントデバイスの１つからのピアツーピア接続を開始するための要求を受信し、クライアントデバイスに要求を送信することを含み得る。代替的または追加的に、クライアントデバイス間に1つまたは複数のメッセージをパスすることは、オファーアンサープロトコルに従ってクライアントデバイス間にオファー及びアンサーメッセージをパスすることを含み得る。
【０００７】
加えて、ピアツーピアサービスは、ピアツーピア接続を介して、クライアントデバイスのペアが、例えばメディアコンテンツなどのコンテンツを共有することを可能にする。例えば、ピアツーピア接続が開設された後（例えば、クライアントデバイス間にメッセージをパスすることによって）、ピアツーピアサービスは、ピアツーピア接続を介してメディアコンテンツを共有するために使用することができる。言い換えれば、ピアツーピア接続とピアツーピアサービスは、メディアコンテンツを共有するための通信チャネルを提供する。メディアコンテンツは、例えば、オーディオまたはビデオであってもよい。さらに、メディアコンテンツは、コラボレーションサービスのリソースを使用することなく、ピアツーピア接続を介して共有することができる（すなわち、アプリケーションセッションの外側で）。
【０００８】
いくつかの実装では、アプリケーションセッション内で対話するクライアントデバイスは、コラボレーションサービスによって維持されるセッション情報を使用して検出することができる。代替的または追加的に、コラボレーションサービスはアプリケーションセッションの状態を維持し、クライアントデバイス間にアプリケーションセッションの状態をパスすることにより、クライアントデバイスがアプリケーションセッション内で対話することを可能にする。アプリケーションセッションの状態は、例えばピアツーピア検出及び接続に使用されている状態モデルの情報と共に状態モデルに維持することができる。
【０００９】
より詳細には、ピアツーピアサービスで使用するためのピアツーピア検出及び接続開設のための例示的な方法は、連携アプリケーションセッションでアクティブなローカルピアデバイスのローカルセッション識別子及びリモートピアデバイス（例えば、ローカルピアデバイスから遠隔した）のリモートセッション識別子をコラボレーションサービスからデバイスごとに取得することを含み得る。検出及び接続は、ローカルセッション識別子がリモートセッション識別子より小さいか否かを決定することを含むことができ、もし、ローカルセッション識別子がリモートセッション識別子より小さい場合、ローカルピアデバイスからリモートピアデバイスにオファーメッセージを送信することを含むことがでる。さらに、この方法は、ローカルピアデバイスでリモートピアデバイスから応答メッセージを受信し、ローカル及びリモートピアデバイス間のピアツーピア接続を開設することを含むことができる。この方法によれば、オファーとアンサーメッセージは、コラボレーションサービスを使用して交換することができる。ピアツーピア接続が開設された後（例えば、メッセージをローカル及びリモートピアデバイス間にパスすることによって）、ピアツーピアサービスは、ピアツーピア接続を介してメディアコンテンツを共有するために使用することができる。加えて、メディアコンテンツは、コラボレーションサービスのリソースを使用することなく（すなわち、アプリケーションセッションの外側で）、ピアツーピア接続を介して共有することができる。さらに、ローカル及びリモートピアデバイスは、メディアコンテンツがピアツーピア接続で共有されている間、連携アプリケーションを通じて協働し続けることができる。
【００１０】
ピアツーピアサービスで使用するピアツーピア検出及び接続開設のための別の例示的な方法は、アプリケーションセッションでアクティブなローカルピアデバイスのローカルセッション識別子及びリモートピアデバイス（例えば、ローカルピアデバイスから遠隔した）のリモートセッション識別子を含んでコラボレーションサービスからデバイスごとにセッション識別子を取得することを含み得る。検出及び接続は、ローカルセッション識別子がリモートセッション識別子よりも大きいか否かを決定することを含むことができ、もし、ローカルセッション識別子がリモートセッション識別子より大きい場合、ローカルピアデバイスからリモートピアデバイスにオファーメッセージを送信することを含むことがでる。さらに、この方法は、ローカルピアデバイスでリモートピアデバイスから応答メッセージを受信し、ローカル及びリモートピアデバイス間のピアツーピア接続を開設することを含むことができる。この方法によれば、オファーとアンサーメッセージは、コラボレーションサービスを使用して交換することができる。ピアツーピア接続が開設された後（例えば、ローカル及びリモートピアデバイス間にメッセージをパスすることによって）、ピアツーピアサービスは、ピアツーピア接続を介してメディアコンテンツを共有するために使用することができる。さらに、メディアコンテンツは、コラボレーションサービスのリソースを使用することなく（すなわち、アプリケーションセッションの外側で）、ピアツーピア接続を介して共有することができる。さらに、ローカル及びリモートピアデバイスは、メディアコンテンツがピアツーピア接続で共有されている間、連携アプリケーションを通じて協働し続けることができる。
【００１１】
ピアツーピアサービスで使用するためのピアツーピア検出及び接続開設のためのさらに別の例示的な方法は、アプリケーションセッションでアクティブなローカルピアデバイスのローカルセッション識別子及びリモートピアデバイス（例えば、ローカルピアデバイスから遠隔した）のリモートセッション識別子を複数個含んでコラボレーションサービスからデバイスごとにセッション識別子を得ることを含み得る。検出と接続は、ローカルピアデバイスで、以下に定義された関数を使用してオファーメッセージをリモートピアデバイスのいずれかに送信するように決定し、
ｆ（ａ，a）＝偽
ａ！＝  ｂＡＮＤｆ（ｂ，ａ）＝偽の場合と場合にのみｆ（ａ，b）＝真
ローカルピアデバイスでリモートピアデバイス（例えば、オファーメッセージが送信されたリモートピアデバイス）からの応答メッセージを受信し、ローカル及びリモートピアデバイス間のピアツーピア接続を開設することを含むことができる。この方法によれば、オファーとアンサーメッセージは、コラボレーションサービスを使用して交換することができる。ピアツーピア接続が開設された後（例えば、ローカル及びリモートピアデバイス間にメッセージをパスすることによって）、ピアツーピアサービスは、ピアツーピア接続を介してメディアコンテンツを共有するために使用することができる。加えて、ローカル及びリモートピアデバイスは、メディアコンテンツがピアツーピア接続で共有されている間、連携アプリケーションを通じて協働し続けることができる。
【００１２】
上記の発明は、コンピュータ可読記憶媒体のようなコンピュータ制御装置、コンピュータプロセス、コンピューティングシステム、または製品として実装することができることを理解すべきである。
【００１３】
他のシステム、方法、特徴及び／または利点は、以下の図面及び詳細な説明を検討することにより当業者に明らかになるであろう。全てのそのような追加のシステム、方法、特徴及び／または利点は、この説明に含まれ且つ添付の特許請求の範囲によって保護されるように意図されている。
図中の構成要素は、必ずしも互いに相対的な縮尺ではない。同様な数字は、いくつかの図を通して対応する部材を示している。
【図面の簡単な説明】
【００１４】
【図１】ピアツーピア検出及び接続開設を提供するための環境を示すブロック図である。
【図２】図１の環境内でのコミュニケーションの流れを示すコールフロー図である。
【図３Ａ】複数のノード間のピアツーピア接続を示すものである。
【図３Ｂ】複数のノード間のピアツーピア接続を示すものである。
【図３Ｃ】複数のノード間のピアツーピア接続を示すものである。
【図４】コラボレーションセッションを通じてピアツーピア接続を開設するための例示的な動作を示すフロー図である。
【図５】コラボレーションセッションを通じてピアツーピア接続を開設するための別の例示的な動作を示すフロー図である。
【図６】リモートアクセス環境を示すブロック図である。
【図７】ビデオ会議との連携セッション中におけるユーザーインタフェース例を示すものである。
【図８】例示的コンピューティング装置を示すブロック図である。
【発明を実施するための形態】
【００１５】
特に定義しない限り本明細書で使用される全ての技術用語及び科学用語は、一般に当業者によって理解されるものと同じ意味を持つ。本明細書に記載のものと類似または同等の方法及び材料は、本開示の実施または試験において使用することができる。本明細書及び添付の特許請求の範囲において使用されるように、単数形“ａ”，“ａｎ”，“ｔｈｅ”は、文脈が明らかに別の規定をしない限り複数の指示対象を含むものである。本明細書で使用されるように、用語「含むｃｏｍｐｒｉｓｉｎｇ）」及びその変形物は、用語「含む（ｉｎｃｌｕｄｉｎｇ）」及びその変形物と同義に用いられ、オープンで非限定的な用語である。実装は、リモートアクセスされるアプリケーションを通じてリアルタイムのピアツーピア会議を可能にするために説明されながらも、実装がこれらに限定されないことは当業者に明らかとなるが、いずれかのタイプのコラボレーションセッションを通じてもリアルタイムなピアツーピア接続を可能にするために適用できる。
【００１６】
［概要］
本開示に関する態様によれば、ピアデバイスを検出してピアツーピア接続を開設することが可能である。上述したように、ピアツーピアのフレームワークは、潜在的なピアデバイスを検出するためのメカニズムを提供することができない。従って、ピアデバイスの検出はコラボレーションサービスよって提供することができ、これにより複数のクライアントデバイスが、例えばリモートアクセスされるアプリケーションと対話することが可能となる。その管理機能の一部として、コラボレーションサービスは、連携セッションでアクティブなクライアントデバイスの識別を含めてセッション情報を維持することができる。セッション情報は、クライアントデバイスが連携セッション中で同様にアクティブなクライアントデバイスを検出することを可能にするために使用することができる。さらに、コラボレーションサービスは、連携セッションでアクティブなクライアントデバイスへ或いはクライアントデバイスからのメッセージの送信（例えば、オファーアンサープロトコルに従うメッセージ）を提供することができ、ピアツーピア接続（複数可）の開設を可能にする。これによって、ピアツーピア接続（複数可）の開設を可能にするためにコラボレーションサービスの機能を活用することができる。
【００１７】
ピアツーピア接続を開設した後、例えばメディアコンテンツ（例としてオーディオ、ビデオなどの）のようなコンテンツは、ピアツーピア接続を介して共有することができる。メディアコンテンツはピアツーピア接続を介して共有されているので、コラボレーションサービスに負荷はかからず、例えば、コラボレーションサービスによって使用されるリソースは、メディアコンテンツの共有に巻き込まれない。言い換えれば、本明細書中で使用されるように、オーディオ及び／またはビデオを含むメディアコンテンツをピアツーピア接続（事例１）を通じて共有することは、コラボレーションセッションの間（事例２）にオーディオ及び／またはビデオを含むメディアコンテンツを共有することとは区別されるべきである。何故なら、コラボレーションサービスは事例１に関与しないからである。例えば、会議セッション中に、特にオーディオ及び／またはビデオを共有するメディアコンテンツの共有は、大量のリソースを消費し得ることを理解するべきである。それによって、この負荷は、コラボレーションサービスのリソースに代わってクライアントデバイスのリソースにシフトされることとなる。さらに、メディアコンテンツはクライアントデバイス間で直接、安全に共有される。ピアツーピア接続を介してメディアコンテンツを共有することは、例えば易感染性サーバーから傍受の可能性が減少するため、追加のセキュリティを追加することができる。
【００１８】
［環境具体例］
ここで図１を参照するが、図にはピアツーピア検出及び接続の開設を提供するための環境１００を説明するブロック図が示されている。ピアツーピア検出及び接続の開設を有効化するなど、環境１００には多くの非限定的で可能な用途がある。例えば、1つ以上のピアノードを検出するために環境１００は、ノードが連携セッション（例えば、リモートアクセスしたアプリケーションを通じてのコラボレーション）に参加できるようにすることを可能にする。また、環境１００は、連携セッションに参加する１つ以上のピアノード間で、ピアツーピア接続の開設を可能にする。環境１００は、クライアントデバイス１、１１２Ａ（本明細書ではクライアントコンピューティングデバイス１１２Ａとも呼ぶ）、クライアントデバイス２、１１２Ｂ（本明細書ではクライアントコンピューティングデバイス１１２Ｂとも呼ぶ）、クライアントデバイス３、１１２Ｃ（本明細書ではクライアントコンピューティングデバイス１１２Ｃとも呼ぶ）及びコラボレーションサービス１０６を含むことができる。本明細書では、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃは、「ピアノード」、「クライアントデバイス」及び／または「ユーザーデバイス」とも呼ぶ。さらに、ピアツーピアフレームワーク内での各デバイスは、それ自体をローカル（例えば、ローカルピア）と見做し、他のすべてのデバイスをリモート（例えば、リモートピア）と見做している。ここでは環境１００は単なる環境具体例として提供され、環境１００が図１に示すものよりもより多くの、またはより少ない構成要素を含んでもよいことが理解されるべきである。
【００１９】
クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ及び１１２Ｃは、それぞれがコラボレーションサービス１０６に通信ネットワークを介して接続された任意の適切なコンピューティングデバイスであってもよい。例えば、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ及び１１２Ｃは、それぞれ、例えばＩＯＳベースのアイフォンまたはＡＮＤＲＯＩＤ(登録商標)ベースのデバイスのようなスマートフォンなどのワイヤレス携帯用デバイス、デスクトップ／ノートブックパソコン或いはタブレットコンピュータのようなでものであってもよい。ここで、通信ネットワークへの接続は、任意のタイプであってもよく、例えばＷｉ-Ｆｉ（ＩＥＥＥ８０２．ｌｌｘ）、ＷｉＭａｘ（ＩＥＥＥ８０２．１６）、Ｅｔｈｅｒｎｅｔ(登録商標)、３Ｇ、４Ｇなどでもよい。
【００２０】
コラボレーションサービス１０６は、共有状態とメッセージパッシングを介して、例えばアプリケーションやデータなどの共有リソースへの協調的なアクセスを許可する。コラボレーションサービス１０６は、1つ以上のコンピューティングデバイスまたはサーバー（例えば、図８に関連して説明する汎用コンピューティングデバイス）と、１つ以上のアプリケーションを用いて実施することができる。コラボレーションサービス１０６は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ及び１１２Ｃが連携セッションに参加することを有効にする。コラボレーションサービス１０６は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ及び１１２Ｃが、例えばリモートアクセスされるアプリケーション１０８と対話できるようにすることが可能である。リモートアクセスしたアプリケーションを通じた連携を例として挙げているが、この開示は、コラボレーションサービス１０６が、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ及び１１２Ｃがリモートアクセスしたデータまたは他のタイプのサービスとの対話を可能にすることを企図している。コラボレーションサービス１０６は、コラボレーションサービス１０６とクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ及び１１２Ｃとの間に状態モデル２００を更新及び／または送信することにより相互に対話できるようにする。このように、連携セッションに参加するクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃのそれぞれは、リモートアクセスしたアプリケーション１０８の同期ビューを提示することができる。状態モデル２００は、リモートアクセスしたアプリケーション１０８に関するアプリケーションの状態情報及び／または連携セッションに関するセッション情報を含むことができる。状態モデル２００は、例えば拡張マークアップ言語（ＸＭＬ）ドキュメントで表すことができる。しかし、状態モデル２００は他の表現を使用することができることを理解すべきである。
【００２１】
さらに、コラボレーションサービス１０６は、連携セッション（例えば、リモートアクセスしたアプリケーション１０８を通じて連携する）に参加しているクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃへ／からのメッセージをパスするための機能を提供することが可能なコラボレーションマネジャー１１０を含むことができる。例えば、コラボレーションマネジャー１１０は、個々のクライアントコンピューティングデバイス（すなわち、「ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｓｅｎｄＭｅｓｓａｇｅ」）にメッセージをパスすることを容易にするために、及び／または複数のクライアントコンピューティングデバイス（すなわち、「ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｓｅｎｄＢｒｏａｄｃａｓｔＭｅｓｓａｇｅ」）にメッセージを同時にパスすることを容易にするために、一般的なメッセージパッシング機能（「ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ」）を提供することができる。後述するように、コラボレーションマネジャー１１０は、コラボレーションサービス１０６とクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃの間でメッセージをパスすることによって、ピアツーピア検出及び接続の開設を可能にする。
【００２２】
クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃは、例えばグラフィック表示によって人が理解できるようにデータ及び／または画像を表示し、受信したユーザー指示に従ってユーザー入力データを決定するために、ユーザーとの対話処理を可能にするべく、Ｗｅｂブラウザなどでクライアントアプリケーション１２０Ａ、１２０Ｂ、１２０Ｃを実行することができる。必要に応じて、グラフィックディスプレイは、タッチセンシティブディスプレイ（すなわち、タッチスクリーン）とすることができる。クライアントアプリケーション１２０Ａ、１２０Ｂ、１２０Ｃはコラボレーションサービス１０６と協働することも可能であり、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ間の連携を可能にする。さらに、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃは、ピアツーピアフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃを実行することができる。ピアツーピアフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃは、例えばクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃのそれぞれのペア間で開設されたピアツーピア接続（例えば、図１におけるピアツーピア接続３００）を介してメディアコンテンツなどのコンテンツの共有を可能にする。本開示は、ピアツーピア接続をオンザフライでクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃの任意のペア（複数可）との間で開設することができることを企図している。例えば、ピアツーピアフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃは、上述した通信ネットワーク上でリアルタイムのピアツーピア通信機能を提供する１つまたは複数のＡＰＩを含むことができる。ＡＰＩは、ピアツーピア接続の開設／構築（例えば、オファーアンサープロトコルを使用して）、ピアツーピア接続の管理及び／またはＷｅｂカメラ、マイクなどのローカルリソースの管理を可能にする。ピアツーピア接続を開設した後、これらに限定するものではないが、オーディオ、ビデオ、テキスト、データ、デスクトップ画面スクレープ及び画像ライブラリを含むメディアコンテンツは、ピアツーピア接続を介してリアルタイムで共有することができる。例えば、メディアコンテンツはクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃのウェブカメラ、マイクなどのローカルメディアリソースによって取り込むことができ、ピアツーピアフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃを介して共有することができる。
【００２３】
ピアツーピアフレームワークの一例は、ＷＥＢＲＴＣ（ｈｔｔｐ：／／ｗｅｂｒｔｃ．ｏｒｇで入手可能）である。ＷＥＢＲＴＣは、コンピュータネットワーク上でリアルタイムにピアツーピア通信の機能を提供するためのＨＴＭＬに統合する複数のＪａｖａＳｃｒｉｐｔ(登録商標)のＡＰＩを備えている。例えば、ＷＥＢＲＴＣは、ローカルメディアリソースへのアクセスを提供するＡＰＩ（「ｇｅｔＵｓｅｒＭｅｄｉａ」）を含み、ピアツーピア接続を介して表示及び／または通信するためにローカルメディアリソースがローカルエレメントに接続されることを可能にする。さらに、ＷＥＢＲＴＣは、クライアントコンピューティングデバイスのペア間でピアツーピア接続を管理するための機能を提供するＡＰＩ（「ＰｅｅｒＣｏｎｎｅｃｔｉｏｎ」）を含む。このＡＰＩは、伝送プロトコル、ビデオ／オーディオコーデック、ネットワークアドレス変換（ＮＡＴ）トラバーサルディテールなどを管理することによってメディアリソースの共有を交渉するための機能を提供する。このＡＰＩは、ピアツーピア接続を構築するために必要な情報を定義するオファーアンサープロトコルを提供する。このＡＰＩを使用して、メディアリソースは、ディスプレイのためにリモートエレメントに接続することができる。さらに、ＷＥＢＲＴＣは、汎用通信用生データチャネルを提供するＡＰＩを含んでいる。ＷＥＢＲＴＣは一例のフレームワークであって、本開示は同様のフレームワークを使用しての実装も企図していることが理解されるべきである。
【００２４】
しかしながら、ＷＥＢＲＴＣのようなピアツーピアフレームワークは、例えば潜在的なピアノードを発見するための機能を提供することができない。つまり、ピアツーピアフレームワークは、ピアツーピア接続（複数可）を開設するために1つのクライアントコンピューティングデバイスが１つ以上のピアクライアントコンピューティングデバイスを検出（見つける、特定するなど）することができない。以下でさらに詳細に記述するように、この機能はコラボレーションサービスによって提供することができる（例えば、図１におけるコラボレーションサービス１０６）。例えば、リモートアクセスアプリケーション１０８を通じての連携を可能にすることに加えて、コラボレーションサービス１０６は、ピアノードを検出してピアツーピア接続を開設するための機能を提供することができる。コラボレーションマネジャー１１０を使用して、コラボレーションサービス１０６は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃにメッセージ（例えば、接続要求メッセージ、オファーメッセージ、応答メッセージなど）をパスすることができ、ピアツーピア検出してクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃの任意のペア間でオンザフライのピアツーピア接続開設を可能にする。その後、ピアツーピアフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃは、ピアツーピア接続を介してメディアまたは他のコンテンツを共有するための機能を提供することができる。従って、コラボレーションサーバーとピアツーピアフレームワークは、ピアツーピア通信を可能にするため一緒に作動することができる。さらに、ピアツーピア検出及び接続の開設プロセスがコラボレーションサービスに依存している間、一旦ピアツーピア接続が開設されると、コラボレーションサービスはピアツーピア通信（例えば、メディアコンテンツの共有）に巻き込まれなくなり、これによってコラボレーションサービスの負荷が軽減される。
【００２５】
［通信フロー実施例］
ここで図２を参照するが、この図には図１の環境における通信フローを例示するコールフロー図が示されている。特に、コールフロー図は、例えばクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃの間のピアツーピア接続の開設を説明している。図２は３つのクライアントデバイス間でピアツーピア接続の開設を説明しているが、この運用は任意の数のクライアントデバイス間で接続を開設するために使用することができることを理解すべきである。コールフロー図は、ステージ、すなわちコラボレーション２３０、ピアツーピア検出２４０及びピアツーピア通信２５０の段階に分割される。コラボレーションステージ２３０の間に、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ（例えば、参加者）は、リモートアクセスしたアプリケーション（例えば、図１のリモートアクセスしたアプリケーション１０８を）を通じて連携でき、コラボレーションサービス１０６は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ間に状態モデル２００を通信するために使用される。
【００２６】
各ピアツーピア接続は、２つのノード間であることを理解すべきである。従って、上述したＰｅｅｒＣｏｎｎｅｃｔｉｏｎのようなＡＰＩは、ピアツーピア接続を開設するためにピアツーピア接続の一方で、１つのオファーを送信し前記オファーに対して１つの回答を受信するため、或いは1つのオファーを受信して1つの回答をするように提供している。２つ以上のノードを接続するには、各ノードが他のすべてのノードとのピアツーピア接続（例えば、オファー−応答メッセージを交換することによって）を開設する。しかし、ノードの各ペアに対して、一対のノードのうちの1つのみがオファーメッセージを送信する必要があり、このオファーメッセージは一対のノードのうちの他方が応答すべきものである。ここで図３Ａ−３Ｃを参照するが、この図には複数のノード間のピアツーピア接続が示されている。例えば、図３Ａ−３Ｃにおいて、３つ、４つ及び５つのノードシステムのためにはそれぞれ３個、６個及び１０個の接続が必要とされる。このことは、接続数がノードの数と共に増加することを理解すべきである。また、本開示が２つ以上の任意の数のノード間でリアルタイムなピアツーピア接続を可能にすることを意図していることも理解されるべきである。
【００２７】
再び図２を参照するが、ピアツーピア接続を開設してリアルタイムのピアツーピア通信を開始するために、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃのいずれかは、誰がコラボレーションセッションのホスティングをするかに関係なく、ピアツーピア通信を開始するためメッセージ（例えば、「ｓｔａｒｔＰｅｅｒＴｏＰｅｅｒ」）を送信することができる。例えば、図２に示すようにクライアントコンピューティングデバイス１１２Ｂは、ｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージを送信することができる（フロー２０２）。例えば、ｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージが連携セッションに参加しているすべてのノードに送信されることを保証するために、ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｓｅｎｄＢｒｏａｄｃａｓｔＭｅｓｓａｇｅを使用して送信することができる。従って、ｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージは、リモートでアクセスしたアプリケーションを通じて連携しているすべてのノードに同時通信することができる。ｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージは、例えばコラボレーションサービス１０６にクライアントコンピューティングデバイス１１２Ｂから送信することができる。そして、コラボレーションサービス１０６は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２ＣにｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージを同時通信することができる（フロー２０４）。さらに、ピアツーピア検出ステージ２４０の間に、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃは、リモートアクセスしたアプリケーションを通じて協働し続けることができる（例えば、状態モデル２００は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃとコラボレーションサービス１０６との間を通過し続ける）。コラボレーションマネジャー１１０を使用して、アクティブなセッションと参加者（例えば、クライアントコンピューティング装置１１２Ａ、１１２Ｂ、１１２Ｃ）を特定することが可能となる。
【００２８】
ｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージを受信すると、受信ノード（すなわち、ローカルピアデバイス）は、例えばｇｅｔＵｓｅｒＭｅｄｉａのようなＡＰＩを使用して、そのローカルメディアリソースにアクセスして保存することができる。ローカルピアデバイスは、連携セッション情報（すなわち、リモートピアデバイス）から１つ以上のピアデバイスを識別することができる。例えば、ローカルピアデバイスは、アクティブなセッション識別子（例えば、「ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｇｅｔＡｃｔｉｖｅＳｅｓｓｉｏｎｓ」を使用してリモートアクティブピアデバイスに関連付けられたセッション識別子）と独自のローカルセッション識別子のリストを取得することができる（「ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｇｅｔＳｅｓｓｉｏｎｌｄ」を使用して）（２０６フロー）。上述したように、コラボレーションサービス１０６は、状態モデル２００の一部として、例えば状態情報の一部としてのセッション情報を維持することができる。従って、コラボレーションマネジャー１１０を使用して、指定された時間にアプリケーションにリモートでアクセスしているデバイス（複数可）を決定することが可能である。そして、ローカルピアデバイスは、そのセッション識別子（「ｌｏｃａｌＳｅｓｓｉｏｎｌｄ」）を他のアクティブセッション識別子（「ｒｅｍｏｔｅＳｅｓｓｉｏｎｌｄ」）の各々と比較することができる。ローカルピアデバイスは、独自のセッション識別子よりも大きいアクティブなセッション識別子を識別することができる（「ｌｏｃａｌＳｅｓｓｉｏｎｌｄ＜ｒｅｍｏｔｅＳｅｓｓｉｏｎｌｄ」）。このようにして、ローカルピアデバイスは、最小限の労力を用いてオファーメッセージを送信する送信先のピアデバイスを識別することができる。言い換えれば、ローカルピアデバイスは、より大きなセッション識別子を有するピアデバイス（複数可）にオファーメッセージを送信することができ、より少ないセッション識別子を有するピアデバイス（複数可）にはオファーメッセージを送信することができない。これにより、オファーメッセージをデバイスのペアのそれぞれから、ペアの他のデバイスへの送信されることが防止される。例えば図２の３個のノードで、クライアントコンピューティングデバイス１１２Ａはオファー・メッセージをクライアントコンピューティングデバイス１１２Ｂ、１１２Ｃに送信し、クライアントコンピューティングデバイス１１２Ｂはオファーメッセージをクライアントコンピューティングデバイス１１２Ｃに送信し、そして、クライアントコンピューティングデバイス１１２Ｃは何らオファーメッセージを送信しない。このようにして、ピアツーピア接続（複数可）を開設するときに送信されるメッセージの総数を削減することが可能となる。加えて、デバイスのペア一つあたりのピアツーピア接続の数を制限することができる。また、同じ目的を達成するために、ローカルピアデバイスは、代替的にそのセッション識別子を取得された各アクティブなセッション識別子（「ｌｏｃａｌＳｅｓｓｉｏｎｌｄ＞ｒｅｍｏｔｅＳｅｓｓｉｏｎｌｄ」）と比較し、より少ないセッション識別子を有するピアデバイス（複数可）だけにオファーメッセージを送信することもできることが理解されるべきである。言い換えれば、ローカルピアデバイスは、より少ないセッション識別子を有するピアデバイス（複数可）にオファーメッセージを送信することができ、より大きいセッション識別子を有するピアデバイス（複数可）にはオファーメッセージを送信しないようすることができる。代替的又は追加的に、どのデバイスにオファーメッセージを送信するかを決定するために、ローカルピアデバイスは、以下のプロトコル（１）に従う任意の関数を使用することができる。
ｆ（ａ，a）＝偽（１）  及び
ａ！＝  ｂＡＮＤｆ（ｂ，ａ）＝偽  の場合にのみｆ（ａ，ｂ）＝真
【００２９】
そして、より大きなセッション識別子を有する各ピアデバイスのために、ローカルピアデバイスは、例えばＰｅｅｒＣｏｎｎｅｃｔｉｏｎのようなＡＰＩを使用して、ローカルピア接続オブジェクトを作成することができる。そして、ローカルピアデバイスは、上述したように保存されたそのローカルメディアリソースをローカルピア接続オブジェクトに添付することができる。ローカルピアデバイスは、宛先セッション識別子（例えば、オファーメッセージが送信されるべきデバイスのセッション識別子）に基づいて、ローカルピア接続オブジェクトを格納することができる。このようにして、各ローカルピア接続オブジェクト（すなわち、ピアツーピア接続あたり１つ）を格納することができ、後にアクセスが可能である。
【００３０】
その後、ローカルピアデバイスは、例えばＰｅｅｒＣｏｎｎｅｃｔｉｏｎのようなＡＰＩを使用して、オファーメッセージ（「ｃｒｅａｔｅＯｆｆｅｒ」）を生成することができる。オファーメッセージは、ローカルピアデバイスに関連付けられた１つ以上の属性を含むことが可能である。属性は、ピアツーピア接続を開設するために必要とされるローカルピアデバイスに関する情報を含むことができる。ローカルピアデバイスは、「ｆｒｏｍ  ｆｉｅｌｄ」のようなオファーメッセージのフィールドに自身のセッション識別子を追加することができ、これによりオファーメッセージが送信されるべきデバイスがソースデバイスを識別することを可能にする。ローカルピアデバイスは、例えば宛先ノード（すなわち、リモートピアデバイス）にオファーメッセージを送信することができる。これは、例えばＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｓｅｎｄＭｅｓｓａｇｅを用いて遂行することができる。例えば図２の３ノードセッションでは、クライアントコンピューティングデバイス１１２Ａは、オファーメッセージをクライアントコンピューティングデバイス１１２Ｂ、１１２Ｃ（例えば図２における送信（クライアント２）オファークライアント１-２、送信（クライアント３）オファークライアント１-３）に送信し、クライアントコンピューティングデバイス１１２Ｂはオファーメッセージをクライアントコンピューティングデバイス１１２Ｃ（例えば図２における送信（クライアント３）オファークライアント２-３）に送信し、そして、クライアントコンピューティングデバイス１１２Ｃはいかなるオファーメッセージも送信しない（フロー２０８）。図２に示すように、ローカルピアデバイス（複数可）は、コラボレーションサービス１０６にオファーメッセージ（複数可）を送信し、コラボレーションサービス１０６は、リモートピアデバイス（複数可）にオファーメッセージ（複数可）をパスする。例えばコラボレーションサービス１０６は、クライアントコンピューティングデバイス１１２Ａからのオファーメッセージをクライアントコンピューティングデバイス１１２Ｂ、１１２Ｃにパスし（例えば図２におけるオファークライアント１-２及びをオファークライアント１-３）、コラボレーションサービス１０６がオファーメッセージをクライアントコンピューティングデバイス１１２Ｂからクライアントコンピューティングデバイス１１２Ｃにパスする（例えば図２のオファークライアント２-３）（フロー２１０）。さらに、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃは、リモートアクセスしたアプリケーションを通じて協働し続けることができる（例えば状態モデル２００は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃとコラボレーションサービス１０６との間を通過し続ける）。
【００３１】
オファーメッセージを受信すると、リモートピアデバイスは、例えばＰｅｅｒＣｏｎｎｅｃｔｉｏｎのようなＡＰＩを使用して、リモートピア接続オブジェクトを作成することができる。リモートピアデバイスは、上述したように保存されたそのローカルメディアリソースをローカルピア接続オブジェクトに添付することができる。リモートピアデバイスは、ローカルピアデバイス（「ｓｅｔＲｅｍｏｔｅＤｅｓｃｒｉｐｔｉｏｎ」）に関連付けられた1つまたは複数の属性をリモートピア接続オブジェクトに添付することもできる。そして、リモートピアデバイスは、例えばＰｅｅｒＣｏｎｎｅｃｔｉｏｎのようなＡＰＩを使用して、応答メッセージ（「ｃｒｅａｔｅＡｎｓｗｅｒ」）を生成することができる。応答メッセージは、リモートピアデバイスに関連付けられた１つ以上の属性を含むことができる。属性は、ピアツーピア接続を開設するために必要とされるリモートピアデバイスに関するなんらかの情報を含むことができる。
【００３２】
リモートピアデバイスは、「ｆｒｏｍ  ｆｉｅｌｄ」のような応答メッセージのフィールドに自身のセッション識別子を追加することができ、これにより応答メッセージが送信されるべきデバイスがソースデバイスを識別することを可能にする。そして、リモートピアデバイスは、例えばローカルピアデバイスに応答メッセージを送り返すことができる。これは、例えばＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｓｅｎｄＭｅｓｓａｇｅを用いて達成することができる。応答メッセージを受信すると、ローカルピアデバイスはローカルピア接続オブジェクトにアクセスし、宛先セッション識別子に基づいて格納され、リモートピアデバイスに関連する１つまたは複数の属性を添付することができる（「ｓｅｔＲｅｍｏｔｅＤｅｓｃｒｉｐｔｉｏｎ」）。例えば、図２の３ノードセッションでは、クライアントコンピューティングデバイス１１２Ｃは、応答メッセージをクライアントコンピューティングデバイス１１２Ａ、１１２Ｂに送信し（例えば図２における送信（クライアント１）応答クライアント３-１及び送信（クライアント２）応答クライアント３-２）、クライアントコンピューティングデバイス１１２Ｂは、応答メッセージをクライアントコンピューティングデバイス１１２Ａに送信する（例えば図２おける送信（クライアント１）応答クライアント２-１）（フロー２１２）。また、図２に示すように、リモートピアデバイス（複数可）は、コラボレーションサービス１０６に応答メッセージ（複数可）を送信し、コラボレーションサービス１０６は、ローカルピアデバイス（複数可）に応答メッセージ（複数可）をパスする。例えば図２の３ノードのセッションでは、コラボレーションサービス１０６は、応答メッセージをクライアントコンピューティングデバイス１１２Ｃからクライアントコンピューティングデバイス１１２Ａ、１１２Ｂにパスし（例えば、図２における応答クライアント３−１及び応答クライアント３−２）、そして、コラボレーションサービス１０６は、クライアントコンピューティングデバイス１１２Ｂからの応答メッセージをクライアントコンピューティングデバイス１１２Ａへパスする（例えば図２における応答クライアント２−１）（フロー２１４）。さらに、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃは、リモートアクセスしたアプリケーションを通じて協働し続けることができる（例えば状態モデル２００は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃとコラボレーションサービス１０６との間を通過し続ける）。
【００３３】
そして、ローカル及びリモートピアデバイス間のピアツーピア接続が起動される。上述したように、オファーと応答メッセージのすべてが取り交わされた後に、ピアツーピアフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃは、ローカル及びリモートピア接続オブジェクトを接続し、デバイスのそれぞれは、ストリーミングが開始されたことを通知される（例えば「ｏｎａｄｄｓｔｒｅａｍ  ｅｖｅｎｔ」をファイアリングして）。例えば図２に示すように、それぞれのピアツーピア接続３００は、クライアントコンピューティングデバイス１１２Ａ及び１１２Ｂ、クライアントコンピューティングデバイス１１２Ａ及び１１２Ｃ、クライアントコンピューティングデバイス１１２Ｂ及び１１２Ｃとの間で提示されている。ピアツーピア接続３００を開設した後、メディアコンテンツは、クライアントコンピューティング装置１１２Ａ、１１２Ｂ、１１２Ｃの間でストリーミングすることができる。さらに、メディアコンテンツは、コラボレーションサービス１０６が管理することなくストリーミングすることができ、これによってコラボレーションサービス１０６への負荷を軽減する。例えばピアツーピア通信ステージ２５０の間、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃは、リモートアクセスしたアプリケーションを通じて協働し続ける（例えば状態モデル２００は、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃとコラボレーションサービス１０６との間をパスし続ける）。このように、コラボレーションサービス１０６を使用してピアデバイス（例えば連携セッションに参加しているピアデバイス）を発見し、ピアツーピア接続を開設することが可能となる。さらに、例えば図１に示されるフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃのようなピアツーピアフレームワークがピアツーピア接続のコンテンツを共有するために使用することができる。また、リモートアクセスアプリケーションを通じての協働、並びに、例えば会議機能のようなピアツーピア通信能力を提供することができる。ひとたび開始されると、リアルタイムのピアツーピア通信はコラボレーションサービス１０６のリソースを利用しない。従って、メディアコンテンツはコラボレーションサービス１０６を使う代わりにピアツーピア接続（複数可）を使用して共有されているので、コラボレーションサービス１０６の負荷を軽減することができる。複数のノード間にリアルタイムなピアツーピア通信を提供するには相応量のネットワークリソースを必要とし、これがコラボレーションサービスを提供するネットワークリソースに負荷を与えていることを理解すべきである。
【００３４】
加えて、新しいデバイスが既存のリアルタイムなピアツーピアセッションに追加されると、新しいデバイスがｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージを送信することができる。上述したように、ｓｔａｒｔＰｅｅｒＴｏＰｅｅｒのメッセージは複数のデバイスに同時通信することができる。そして、上述のプロセスは、受信デバイス（すなわち、ローカルピアデバイス）のそれぞれによって実行することができる。しかし、アクティブなピアツーピア接続が存在すると、ローカルピアデバイスはリモートピアデバイスに別のオファーメッセージを送信する必要がない。このように、ローカルピアデバイスは新しいデバイスにだけオファーメッセージを送信する。
【００３５】
さらに、連携セッション内で会議に参加しているデバイスは、会議から退くことができる。例えば、終了するデバイスは、明示的にＢＹＥメッセージを送信することで会議を去ることができる。終了するデバイスは、例えば任意のフィールドで、ＢＹＥメッセージの一部として、任意にそのセッション識別子を含むことができる。ＢＹＥメッセージは、連携セッションに参加している複数のデバイスにメッセージを同時に送信するためにＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｓｅｎｄＢｒｏａｄｃａｓｔＭｅｓｓａｇｅを使用して送信することができる。ＢＹＥメッセージは、会議を去ろうしている終了するデバイスを他のデバイスに通知することができる。例えば他のデバイスは、ＢＹＥメッセージのフィールド内の情報を使用して終了するデバイスを識別することができ、その後、対応するピアツーピア接続（すなわち、終了するデバイスと他のデバイスのそれぞれに接続するピアツーピア接続）を閉じる。終了するデバイスは、他のデバイスのそれぞれとのピアツーピア接続を閉じることもできる。従って、ピアツーピア接続の完全な中断を提供することが可能であり、会議は残りのデバイスで続けられることになる。
【００３６】
加えて、会議を離れることを明示することなく終了するデバイスのブラウザが閉じられた場合、終了するデバイスはBYEメッセージを送信しない。しかし、会議に参加している他のデバイスは、終了するデバイスがメディアコンテンツ（例えば、オーディオ、ビデオなど）の共有を停止したことを認識し、対応するピアツーピア接続を再接続及び／または閉じることを試みることができる。例えば、ＷＥＢＲＴＣは、コンピュータネットワークを介してピアに接続する対話型の接続確率（ＩＣＥ）と呼ばれるシステムを使用する。ＩＣＥは、ピアツーピア接続が失われたときに気が付くと再接続を試みてトリガするように構成されている。例えば、会議に残っているデバイス（すなわち、終了するデバイスに対するピアデバイス）が、ｏｎｌｃｅＣａｎｄｉｄａｔｅ  ｅｖｅｎｔをトリガすることができる。ＷＥＢＲＴＣはｏｎｌｃｅＣａｎｄｉｄａｔｅ  ｅｖｅｎｔを傾聴し、リモートセッションがまだ存在するかどうかを確認するためにアクティブなセッションのリストをチェックする（すなわち、ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｇｅｔＡｃｔｉｖｅＳｅｓｓｉｏｎｓを使用して）。リモートセッションが存在しない場合、デバイスはピアツーピア接続を閉じ、会議は残りのデバイスで続行することになる。
【００３７】
次に図４を参照して説明するが、この図にはピアツーピア検出及び接続の開設のための例示的な動作４００を説明するフロー図が示されている。４０２において連携セッションが容易になり、ここでは複数のクライアントコンピューティングデバイスがアプリケーションセッションのような連携セッション内で協働する。例えば複数のクライアントコンピューティングデバイスの連携セッションを容易にするための環境は、図１に関連して上述されている。４０４では、クライアントコンピューティングデバイスの１つが、連携セッション内で協働するするクライアントコンピューティングデバイスを検出することを可能にする。例えば、クライアントコンピューティングデバイスは、図１及び２に関連して説明したコラボレーションサービス１０６のようなコラボレーションサービスによって維持されるセッション情報からの連携セッション内で対話するクライアントコンピューティングデバイスを検出することができる。次に、４０６において、１つ以上のメッセージが連携セッション内で対話するクライアントコンピューティングデバイス間でパスされる。例えば図１及び図２に関連して説明したコラボレーションサービス１０６のようなコラボレーションサービスは、メッセージをクライアントコンピューティングデバイスと交換することができる。メッセージは、連携セッションに参加しているクライアントコンピューティングデバイスのペア間でのピアツーピア接続（複数可）を開設するために使用される。
【００３８】
ここで図５を参照して説明するが、この図にはピアツーピア検出及び接続の開設のための例示的な動作５００を説明するフロー図が示されている。５０２において、連携セッションでアクティブになっているローカルピアデバイスのローカルセッション識別子とリモートピアデバイスのリモートセッション識別子は、コラボレーションサービスから取得される。例えば、ローカル及びリモートセッション識別子は図２に関して上述したように、「ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｇｅｔＳｅｓｓｉｏｎｌＤ」を使用して取得することができる。５０４では、ローカルセッション識別子がリモートセッション識別子より小さいか否かを判断する。例えば図２に関して説明したように、これにより各ピアデバイスは、送信されるオファーメッセージの数を最小限に抑えながら、オファーメッセージを他のピアデバイスのどれに送信すべきかを決定することができるようになる。５０５では、もしローカルセッション識別子がリモートセッション識別子以上である場合、オファーメッセージはローカルピアデバイスからリモートピアデバイスに送信されない。一方、５０６において、もしローカルセッション識別子がリモートセッション識別子よりも小さい場合、オファーメッセージは、コラボレーションサービスを使用してリモートピアデバイスにローカルピアデバイスから送信される。オファーメッセージは、図２に関連して上述したように、例えば「ＣｏｌｌａｂｏｒａｔｉｏｎＭａｎａｇｅｒ＃ｓｅｎｄＭｅｓｓａｇｅ」を用いて送信することができる。５０８では、リモートピアデバイスからの応答メッセージは、コラボレーションサービスを用いてローカルピアデバイスで受信される。例えば、オファーと応答メッセージは、図１及び２に関連して説明したように、コラボレーションサービス１０６のようなコラボレーションサービスを使用して送信できる。５１０においては、ピアツーピア接続がローカル及びリモートクライアントコンピューティングデバイス間で開設される。上述したように、メディアコンテンツは、その後、ピアツーピア接続を介して共有することができる。例えば、ピアツーピア接続（例えば、ピアツーピア接続３００）を開設した後、メディアコンテンツは、図１に関連して説明したように、ピアツーピアフレームワーク１１８Ａ、１１８Ｂ、１１８Ｃのようなピアツーピアのフレームワークを使用して共有することができる。
【００３９】
図６に関して説明するが、ここにはリモートアクセス環境６００を説明するブロック図が示されている。リモートアクセス環境６００は、例えば前述の連携セッションのような連携セッションを可能にする。図６に示すように、リモートアクセス環境６００は、クライアント６０２（例えば、図１のクライアントコンピューティングデバイス１１２Ａ、１１２Ｂまたは１１２Ｃ）、サーバー６０４及びサービス６０６（例えば、図１のリモートアクセスアプリケーション１０８）を含んでいる。本開示は、コラボレーションマネジャー（例えば、図１のコラボレーションマネジャー１０６Ｂ）が、クライアント６０２、サーバー６０４及びサービス６０６の任意の組み合わせにより実装できることを企図している。リモートアクセス環境６００は、クライアント６０２とサービス６０６との間でビュー（例えば、表示要素）の同期化を可能にする。また、リモートアクセス環境６００は、クライアント６０２とサービス６０６との間のユーザー入力の同期化を可能にする。例えばサーバー６０４はアプリケーションの状態を管理することができ、アプリケーションとセッション情報も含むこともできると共に、これらに限定されず、アプリケーションの状態を管理することにより、クライアント６０２とサービス６０６との間でビュー及びユーザー入力を同期させることができる。図１及び図２に関連して上述したように、アプリケーションの状態は、状態モデルを使用して管理することができる。リモートアクセス環境６００は、ピアツーピアの検出及び接続の開設を可能にするため随意に拡張することができる。換言すれば、セッション情報を含むアプリケーション状態を管理することによって、サーバー６０４は、１人（またはそれ以上）の参加者が連携セッションでアクティブな参加者を検出することを可能にする。さらに、サーバー６０４は、連携セッション内でアクティブな参加者間のピアツーピア接続（複数可）（「コマンド」）を開設するためのメッセージ送信を容易にすることが可能である。任意であるが、リモートアクセス環境６００は、発明の名称「アプリケーションプログラムの状態へのリモートアクセスを提供するための方法及びシステム」の米国特許出願公開第２０１０／０１３１５９１号に記載のリモートアクセス環境とすることができる。たとえば、リモートアクセス環境は、カナダ国アルバータ州、カルガリーのカルガリー・サイエンティフィック社から入手できるＰＵＲＥＷＥＢである。
【００４０】
図７を参照すると、ビデオ会議との連携セッションを説明する例示的なユーザーインタフェース７００が示されている。本明細書に記載されたシステム及び方法を使用すれば連携セッション（例えば、リモートアクセスアプリケーションを通じての連携）を通じてリアルタイムなピアツーピア通信機能（例えば会議機能）を提供することが可能である。上述したように、連携セッションは、医用画像アプリケーションのようなアプリケーションを通じてリモートアクセスして協働する複数のクライアントコンピューティングデバイスを含むことができる。カナダ国アルバータ州、カルガリーのカルガリー・サイエンティフィック社から入手可能なＰＵＲＥＷＥＢプラットフォームによってウェブやモバイルでの使用を可能にした画像ソフトウェアＲＥＳＯＬＵＴＩＯＮＭＤは、医用画像アプリケーションの一例である。ＲＥＳＯＬＵＴＩＯＮＭＤを使用すればクライアントコンピューティングデバイスで、例えば医用画像（複数可）７１０を協働して見ることができる。また、本明細書に記載のシステム及び方法を使用して、連携セッションに参加しているクライアントコンピューティングデバイスのいずれかは、例えばアイコン７２０を使用してリアルタイムにピアツーピア通信を開始することができる。１つまたは複数のピアクライアントコンピューティングデバイス（例えば、リモートアクセスされたアプリケーションを通じて協働するクライアントコンピューティングデバイスのうちの１つまたは複数）は、連携セッション情報から収集した情報に基づいて特定することができ、メッセージはサーバーの間をパスして、連携セッションとクライアントコンピューティングデバイスがピアツーピア接続（複数可）を開設することを可能にする。従って、連携セッションを通じてリアルタイムなピアツーピア通信機能を提供することが可能となる。図７に示すように、ビデオ７３０（またはリアルタイムなピアツーピア通信）がユーザーインタフェース７００に提供され得る。
【００４１】
図８は、例示的な実施形態及び態様を実装することができるコンピューティング環境の一例を示すものである。コンピューティングシステム環境は、適切なコンピューティング環境の一例に過ぎず、使用または機能の範囲に関する限定を示唆するものではない。
【００４２】
他に多数の汎用または専用コンピューティングシステム環境または機器構成を用いてもよい。使用するのに適切であり得る周知のコンピューティングシステム、環境、及び／または機器構成の例としては、パーソナルコンピュータ、サーバーコンピュータ、携帯用またはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサベースのシステム、ネットワークパーソナルコンピュータ（パソコン）、ミニコンピュータ、メインフレームコンピュータ、組込みシステム、前記のシステムまたはデバイスのいずれかを含む分散コンピューティング環境などであるが、これらに限定されない。
【００４３】
コンピュータによって実行されるプログラムモジュールなどのコンピュータ実行可能命令を使用してもよい。一般に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データタイプを実行するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含む。通信ネットワークまたは他のデータ伝送媒体を介してリンクするリモート処理装置によってタスクが実行される分散コンピューティング環境を使用してもよい。分散コンピューティング環境では、プログラムモジュール及び他のデータは、メモリ記憶装置を含むローカル及びリモートコンピュータ記憶媒体の双方に配置することができる。
【００４４】
図８を参照するが、本明細書に記載の諸態様を実施するための例示的なシステムは、コンピューティングデバイス８００のようなコンピューティングデバイス含む。その最も基本的な構成では、コンピューティングデバイス８００は、典型的には少なくとも１つの処理ユニット８０２及びメモリ８０４を含む。コンピューティングデバイスの正確な構成及びタイプに応じて、メモリ８０４は、揮発性（例えば、ランダムアクセスメモリ（ＲＡＭ）などの）、不揮発性（例えばリードオンリーメモリ（ＲＯＭ）、フラッシュメモリなど）、または２つの組み合わせであってもよい。最も基本的な構成が図８に破線８０８で示されている。
【００４５】
コンピューティングデバイス８００は、付加的な特徴／機能を有することができる。コンピューティングデバイス８００は、例えば磁気または光ディスクまたはテープを含んで追加のストレージ（リムーバブル及び／または非リムーバブル）を備えてもよいが、これらに限定されない。このような追加のストレージは、図８ではリムーバブルストレージ８０８及び非リムーバブルストレージ８１０として示される。
【００４６】
コンピューティングデバイス８００は、概して様々なコンピュータ可読媒体を含む。コンピュータ可読媒体は、デバイス８００によってアクセスされ得る任意の利用可能な媒体とすることができ、揮発性及び不揮発性両方の媒体、リムーバブル及び非リムーバブル媒体を含むことができる。
【００４７】
コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュールまたは他のデータなどの情報を記憶するための任意の方法または技術で実装される揮発性及び不揮発性、リムーバブル及び非リムーバブル媒体を含む。メモリ８０４、リムーバブルストレージ８０８、及び非リムーバブルストレージ８１０はすべて、コンピュータ記憶媒体の実施例である。コンピュータ記憶媒体としては、これらに限定されるものではないが、ＲＡＭ、ＲＯＭ、電気的消去可能プログラム読み取り専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他のメモリ技術、ＣＤ-ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶装置、或いは所望の情報を格納するために使用することができ、コンピューティングデバイス８００によってアクセスすることができる任意の他の媒体を含む。このような任意のコンピュータ記憶媒体は、コンピューティングデバイス８００の一部とすることができる。
【００４８】
コンピューティングバイス８００は、デバイスが他のデバイスと通信することを可能にする通信接続（複数）８１２を含むことができる。また、コンピューティングデバイス８００は、キーボード、マウス、ペン、音声入力装置、タッチ入力装置などの入力装置（複数可）８１４を有していてもよい。ディスプレイ、スピーカー、プリンタなどの出力装置（複数可）８１６が含まれてもよい。これらのデバイスはすべて当技術分野で周知であり、ここで詳細に論じる必要はない。
【００４９】
なお、本明細書で説明した様々な技術は、ハードウェアまたはソフトウェア、或いは適切な場合には双方の組み合わせに関連して実装されてもよいことが理解されるべきである。従って、本明細書に開示した主題である方法及び装置、またはその特定の態様または部分は、プログラムコード（すなわち、命令）の形をとってもよく、フロッピー(登録商標)ディスケット、ＣＤ-ＲＯＭ、ハードドライブ、または他の任意な機械可読記憶媒体のような有形媒体で具現化し、プログラムコードがコンピュータなどの機械にロードされて実行されるとき、機械はここに開示された主題を実施するための装置となる。プログラム可能なコンピュータ上でプログラムコードを実行する場合、コンピューティングデバイスは、一般にプロセッサ、プロセッサによって読み取り可能な記憶媒体（揮発性及び不揮発性メモリ及び／または記憶要素を含む）、少なくとも１つの入力装置、及び少なくとも１つの出力装置を含む。１つまたは複数のプログラムは、例えば、アプリケーションプログラミングインターフェース（ＡＰＩ）、再利用可能なコントロール、またはその種の他のもの使用を介して、ここに開示された主題に関連して説明したプロセスを実行または利用することがでる。このようなプログラムは、コンピュータシステムと通信するハイレベルな手続き型のまたはオブジェクト指向のプログラミング言語で実装されてもよい。しかしながら、所望であればプログラム（複数可）は、アセンブリーまたは機械言語で実装してもよい。いずれにせよ、言語はコンパイル型またはインタープリタ型言語であってもよく、ハードウェア実装と組み合わせることがでる。
【００５０】
主題は構造的特徴及び／または方法論的動作に特有の言語で説明してきたが、添付の特許請求の範囲で定義される主題は、必ずしも上述の特徴または動作に限定されないことを理解すべきである。むしろ、上述の特定の特徴及び動作は、特許請求の範囲を実施する形態例として開示されている。
【符号の説明】
【００５１】
１００  環境
１０６  コラボレーションサービス
１１０  コラボレーションマネジャー
１１２Ａ、１１２Ｂ、１１２Ｃ  クライアントコンピューティングデバイス
１１８Ａ、１１８Ｂ、１１８Ｃ  ピアツーピアフレームワーク
１２０Ａ、１２０Ｂ、１２０Ｃ  クライアントアプリケーション
２００  状態モデル
３００  ピアツーピア接続
【図１】
2016503547.tif 000003
【図２】
2016503547.tif 000004
【図３Ａ】
2016503547.tif 000005
【図３Ｂ】
2016503547.tif 000006
【図３Ｃ】
2016503547.tif 000007
【図４】
2016503547.tif 000008
【図５】
2016503547.tif 000009
【図６】
2016503547.tif 000010
【図７】
2016503547.tif 000011
【図８】
2016503547.tif 000012
【国際調査報告】
2016503547.tif 000013
2016503547.tif 000014