(57)【要約】      （修正有）【課題】低レベルプリミティブと直接対話するコードを書くこと固有の複雑さによって、開発時間が増大する。時間を大幅に削減する高レベル機能を有するリアルタイムソフトウェアアプリケーションの実行をサポートする。【解決手段】パーベイシブ・リアルタイムフレームワーク12は、複数のネットワークノード(16-26)間のリアルタイム接続がパーベイシブである新たな動作環境パラダイムでの高レベル機能を有するリアルタイムソフトウェアアプリケーションの実行をサポートする。該パーベイシブ・リアルタイムフレームワーク12は、通信者、仮想領域、及びその他のネットワーク資源に接続し、並びにそれら接続をユーザ入力に応じてスイッチングするという複雑なタスクを扱い、これにより、ソフトウェアアプリケーションの開発者が高レベルリアルタイムソフトウェアアプリケーション機能の開発に集中することが可能となる。【選択図】図１
2013093034.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた接続ルール(32)における少なくとも１つの接続ターゲットの指定を、少なくとも１つのそれぞれのネットワークノード接続ハンドルへと解決し(182)、
該少なくとも１つのそれぞれのネットワークノード接続ハンドルにそれぞれ関連付けられた少なくとも１つのネットワークノードとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する(184)、
という各ステップを含む、コンピュータにより実施される方法。
【請求項２】
前記開始ステップ(184)が、前記ソフトウェアアプリケーション(28)及び前記コンピュータデータファイル(30)の少なくとも一方に関連付けられた仮想領域において実行される、請求項１に記載の方法。
【請求項３】
前記判定ステップが、前記ソフトウェアアプリケーション(28)及び前記コンピュータデータファイル(30)の少なくとも一方に関する位置により索引付けされた前記接続ルール(32)を含むデータベースに照会するステップを含む、請求項１又は請求項２に記載の方法。
【請求項４】
前記接続ルール(32)が、前記ソフトウェアアプリケーション(28)及び前記コンピュータデータファイル(30)の少なくとも一方に関して定義された対話空間における少なくとも１つのそれぞれのセクションの定義に関連付けられており、前記開始ステップが、前記接続ルール(32)及び前記対話空間における特定の位置に従って複数のネットワークノード(16-26)のうちの１つ又は２つ以上との１つ又は２つ以上のリアルタイムデータストリームの転送を開始するステップを含む、請求項１ないし請求項３の何れか一項に記載の方法。
【請求項５】
前記接続ターゲットの指定が、単一の通信者を識別する情報、１グループの通信者を識別する情報、及び少なくとも１つの通信者に関連付けられた役割の定義のうちの少なくとも１つを含む、請求項１ないし請求項４の何れか一項に記載の方法。
【請求項６】
前記接続ルール(32)が１つ又は２つ以上の接続条件を更に含み、該１つ又は２つ以上の接続条件が満たされたというそれぞれの判定に応じて少なくとも１つのネットワーク接続を確立するステップを更に含む、請求項１ないし請求項５の何れか一項に記載の方法。
【請求項７】
前記解決ステップが、
ユーザの現在の焦点に基づいて、前記ソフトウェアアプリケーション(32)及び前記コンピュータデータファイル(30)の少なくとも一方における位置の定義を判定し、
該位置の定義と前記接続ルール(32)との関連付けに基づいて該接続ルール(32)を読み出す、
という各ステップを含む、請求項１ないし請求項６の何れか一項に記載の方法。
【請求項８】
前記少なくとも１つのそれぞれの接続ハンドルに基づいて少なくとも１つの他のネットワークノードとの少なくとも１つのネットワーク接続を確立するステップを更に含む、請求項１ないし請求項７の何れか一項に記載の方法。
【請求項９】
前記開始ステップが、前記ソフトウェアアプリケーション(28)及び前記コンピュータデータファイル(30)の少なくとも一方におけるユーザの位置を記述するプレゼンスデータを前記少なくとも１つのネットワークノードへエクスポートするステップを含む、請求項１ないし請求項８の何れか一項に記載の方法。
【請求項１０】
前記少なくとも１つ接続ターゲットが特定の通信者の識別子を含み、前記エクスポートステップが、該特定の通信者へ前記プレゼンスデータをエクスポートするステップを含む、請求項９に記載の方法。
【請求項１１】
前記少なくとも１つの接続ターゲットが、１つ又は２つ以上の述語を満たす１つ又は２つ以上の属性値に関連付けられている通信者についての照会を含み、前記解決ステップが、該照会に基づいてデータベースに照会して、前記１つ又は２つ以上の述語を満たす前記１つ又は２つ以上の属性値に関連付けられている前記通信者の１つ又は２つ以上を識別する、というステップを含み、前記エクスポートステップが、該１つ又は２つ以上の識別された通信者へ前記プレゼンスデータをエクスポートするステップを含む、請求項９に記載の方法。
【請求項１２】
前記コンピュータデータファイル(30)が、ウェブブラウザアプリケーションにより提示されるウェブページであり、前記解決ステップが、ユーザの現在の焦点が該ウェブページ上にあるという判定に応じて実行される、請求項１ないし請求項１１の何れか一項に記載の方法。
【請求項１３】
前記ソフトウェアアプリケーション(28)が、１つ又は２つ以上の接続ルール(32)のそれぞれの組に関連付けられている複数のタスクを含み、ユーザの現在の焦点が該ソフトウェアアプリケーション(28)の該複数のタスクのうちの特定の１つにあるという判定に応じて、前記解決ステップが、該特定のタスクに関連付けられている１つ又は２つ以上の接続ルール(32)のそれぞれの組から少なくとも１つの接続ターゲットを判定し、及び該少なくとも１つの接続ターゲットから前記少なくとも１つのネットワークノード接続ハンドルを確認する(184)、という各ステップを含む、請求項１ないし請求項１２の何れか一項に記載の方法。
【請求項１４】
請求項１ないし請求項１３の何れか一項に記載の方法を実行するための装置。
【請求項１５】
コンピュータ読み取り可能命令を格納したコンピュータ読み取り可能媒体であって、該コンピュータ読み取り可能命令が、コンピュータによるその実行時に、請求項１ないし請求項１３の何れか一項に記載の方法を該コンピュータに実行させるものである、コンピュータ読み取り可能媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
高速ネットワーク及びコンピュータ処理資源が進歩した結果として、リアルタイム通信システム（例えば、テキストチャット、ボイス、及びビデオ通信システム）及び速い応答時間を必要とするリアルタイムデータストリーミングシステム（例えば、オンライン金融取引システム）を含む、広範な種類の異なるリアルタイムソフトウェアアプリケーションが急増することとなった。リアルタイムソフトウェアアプリケーションは、コンピュータオペレーティングシステムにより生成されたアプリケーション環境においてコンピュータ上で動作する。該コンピュータオペレーティングシステムは、典型的には、リアルタイムソフトウェアアプリケーションプログラムとコンピュータシステムハードウェアとの間に標準的な一貫性のあるアプリケーションプログラミングインタフェイス（API）を提供する。該APIは典型的には、リアルタイムソフトウェアアプリケーションが一組の低レベルプリミティブを介して標準化された態様でコンピュータシステムハードウェアと対話し又はアクセスすることを可能にする。
【発明の概要】
【発明が解決しようとする課題】
【０００２】
該低レベルプリミティブは、リアルタイムソフトウェアアプリケーションにより必要とされるリアルタイム機能をサポートする高レベル機能へと低レベル配管規則（plumbing code）により統合されなければならない。コンピュータオペレーティングシステムにより提供される最小限の開発支援は、リアルタイムソフトウェアアプリケーションの開発者に大きな負担を課すものであり、基礎的な配管規則を書くために必要となる大きな努力のみならず、低レベルプリミティブと直接対話するコードを書くこと固有の複雑さによって、リアルタイムソフトウェアアプリケーションの開発に必要となる時間が増大するのは必至である。
【課題を解決するための手段】
【０００３】
一態様では、本発明の特徴となる方法によれば、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方に関連付けられた接続ルールにおける仮想領域の指定に基づいて該仮想領域のインスタンスを判定する。該仮想領域のインスタンスに関連付けられた１つ又は２つ以上のネットワークノードが確定される。該仮想領域のインスタンスにより定義されるコンテキストで該ネットワークノードのうちの少なくとも１つとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送が開始される。
【０００４】
別の態様では、本発明の特徴となる方法によれば、特定の接続ルールにおける少なくとも１つの接続ターゲットの指定を、少なくとも１つのそれぞれのネットワークノード接続ハンドルへと解決し、ここで、該接続ルールは、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方に関連付けられたものである。該少なくとも１つのそれぞれのネットワークノード接続ハンドルにそれぞれ関連付けられた少なくとも１つのネットワークノードとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送が開始される。
【０００５】
別の態様では、本発明の特徴となる方法によれば、アプリケーションプログラミングインタフェイス（API）を発行する。該APIは、接続ルールに基づくリアルタイムデータストリームのネットワーク接続の管理を含む動作を実行する機能を宣言する。該接続ルールの各々は、仮想領域のそれぞれの指定、及び該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定のうちの少なくとも１つを含む。該APIの呼び出しに応じて、少なくとも１つのネットワークノードとのリアルタイムデータストリーム接続が、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方に関連付けられた複数の接続ルールのそれぞれと、仮想領域内の少なくとも１つの位置とに基づいて監視される。
【０００６】
別の態様では、本発明の特徴となる方法によれば、ソフトウェアアプリケーションと該ソフトウェアアプリケーションが操作することができるデータファイルとの少なくとも一方に関連付けられた接続ルールに基づいて仮想領域のインスタンスにより定義されるコンテキストで少なくとも１つの接続ターゲットとのネットワーク接続を確立する呼び出しによって、アプリケーションプログラミングインタフェイス（API）を呼び出す。該接続ルールは、仮想領域のそれぞれの指定、及び該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定を含む。該APIは、仮想領域のインスタンス内の位置に基づいてネットワーク接続を介した接続ターゲットとの少なくとも１つのリアルタイムデータストリームの転送を開始する呼び出しによって呼び出される。
【０００７】
別の態様では、本発明の特徴となる方法によれば、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方における位置の定義を含むアプリケーションプログラミングインタフェイス（API）呼び出しに応じて少なくとも以下の動作を実行する：前記位置の定義に関連付けられ仮想領域の指定を含む接続ルールを判定し、該仮想領域のインスタンスをホストし該仮想領域のインスタンスの現在の状態を記述する状態データを発行するネットワークインフラストラクチャサービスとのセッションを確立し、該状態データを定期購読し、及び該状態データの人間が認知可能な表示を描画する。
【０００８】
別の態様では、本発明の特徴となる方法によれば、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方における位置の定義を含むアプリケーションプログラミングインタフェイス（API）呼び出しに応じて少なくとも以下の動作を実行する：前記位置の定義に関連付けられ少なくとも１つの接続ターゲットの指定を含む接続ルールを判定し、複数のネットワークノードについて接続ハンドルの分配を管理するネットワークインフラストラクチャサービスとのセッションを確立し、接続オブジェクトにおいて指定された複数の接続ターゲットのうちの１つ又は２つ以上に接続する意図を前記ネットワークインフラストラクチャサービスに対して宣言し、該ネットワークインフラストラクチャサービスから少なくとも１つのそれぞれのネットワークノード接続ハンドルを受信し、該少なくとも１つのそれぞれのネットワークノード接続ハンドルに関連付けられたネットワークノードとの少なくとも１つのネットワーク接続を介した少なくとも１つのリアルタイムデータストリームの転送を開始する。
【０００９】
一態様では、本発明の特徴となる方法によれば、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方における位置の定義を含むアプリケーションプログラミングインタフェイス（API）呼び出しに応じて少なくとも以下の動作を実行する：前記位置の定義に関連付けられ少なくとも１つの接続ターゲットの指定を含む接続ルールを判定し、複数のネットワークノード間におけるプレゼンスデータの交換を管理するネットワークインフラストラクチャサービスとのセッションを確立し、前記少なくとも１つの接続ターゲットにそれぞれ対応する前記複数のネットワークノードのうちの少なくとも１つへ位置の定義を含むプレゼンスデータを出力する意図を前記ネットワークインフラストラクチャサービスに対して宣言する。
【００１０】
本発明はまた、上述した本発明の方法を実行するよう動作することが可能な装置、及び上述した本発明の方法をコンピュータに実行させるコンピュータ読み取り可能命令を格納したコンピュータ読み取り可能媒体に関するものである。
【００１１】
本発明の他の特徴及び利点は、図面及び特許請求の範囲を含む以下の説明から明らかとなろう。
【図面の簡単な説明】
【００１２】
【図１】パーベイシブ・リアルタイムフレームワーク及びネットワークインフラストラクチャサービス環境を含む動作環境の一実施形態を示す図である。
【図２】図１のパーベイシブ・リアルタイムフレームワークの一実施形態により実行される方法の一実施形態のフローチャートである。
【図３】仮想領域インスタンスにより定義される通信コンテキストでリアルタイム通信を確立する、図１のパーベイシブ・リアルタイムフレームワーク及びネットワークインフラストラクチャサービス環境の一実施形態を示すブロック図である。
【図４】共有仮想領域の２次元描写を提供するグラフィカルユーザインタフェイスを含むネットワークノードの一実施形態を示す図である。
【図５Ａ】コンピュータデータファイルの一実施形態を示すブロック図である。
【図５Ｂ】図５Ａのコンピュータデータファイルの各セクションを定義するレコードを格納するコンピュータデータファイルセクション定義データベースの一実施形態を示す図である。
【図６Ａ】ソフトウェアアプリケーションファイルの一実施形態を示すブロック図である。
【図６Ｂ】図６Ａのソフトウェアアプリケーションの各セクションを定義するレコードを格納するソフトウェアアプリケーションセクション定義データベースの一実施形態を示す図である。
【図７Ａ】図６Ａのソフトウェアアプリケーションの各セクションにマッピングされた各ゾーンを有する１つの抽象的な仮想空間の一実施形態を示す図である。
【図７Ｂ】図６Ａのソフトウェアアプリケーションの各セクションにマッピングされた各ゾーンを有する２つの視覚的な仮想空間の実施形態を示す図である。
【図８】接続オブジェクトデータベースの一実施形態におけるそれぞれのレコードを指し示す接続オブジェクト識別子に関するレコードを含む接続オブジェクト関連付けデータベースの一実施形態を示す図である。
【図９】接続オブジェクトデータベースの一実施形態を示す図である。
【図１０】図１の動作環境の一実施形態における３つの他のネットワークノードに接続される１つのネットワークノードの一実施形態のブロック図である。
【図１１】図１のネットワークインフラストラクチャサービス環境の一実施形態へのログイン方法の一実施形態を示すフローチャートである。
【図１２】図１のパーベイシブ・リアルタイムフレームワークの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【図１３】ランデブーサービスの一実施形態を介して接続ターゲットを確認する際に図１のパーベイシブ・リアルタイムフレームワークの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【図１４】領域サービスの一実施形態を介して接続ターゲットを確認する際に図１のパーベイシブ・リアルタイムフレームワークの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【図１５】図１０に示す動作環境の一実施形態を示す図である。
【図１６】オペレーティングシステムの一実施形態及び図１のパーベイシブ・リアルタイムフレームワークの一実施形態を示す図である。
【図１７】図１のパーベイシブ・フレームワークのエリア接続サービスの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【図１８】図１のパーベイシブ・フレームワークの一実施形態において領域エントリサービス、ストリームスイッチングサービス、及びストリームハンドラサービスの実施形態により実施される方法の一実施形態を示すフローチャートである。
【図１９】図１のパーベイシブ・フレームワークの一実施形態においてストリームスイッチングサービスの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【図２０】図１のパーベイシブ・フレームワークの一実施形態においてストリームスイッチングサービスの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【図２１】図１のパーベイシブ・フレームワークの一実施形態においてストリームスイッチングサービスの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【図２２】図１のパーベイシブ・フレームワークの一実施形態においてターゲット接続サービスの一実施形態により実施される方法の一実施形態を示すフローチャートである。
【発明を実施するための形態】
【００１３】
以下の説明では、同様の符号は同様の構成要素を示すために使用される。更に、図面は、実際の実施形態のあらゆる特徴を示すことを意図したものではなく、また図示の構成要素の相対的な寸法を示すことを意図したものではない（実際の縮尺で描かれていない）。
I．用語の定義
「コンピュータ」とは、コンピュータ読み取り可能媒体上に一時的に又は永久的に格納されているコンピュータ読み取り可能命令に従ってデータ処理を行うあらゆる機械、装置、又は設備である。「コンピュータオペレーティングシステム」とは、タスクの実行並びに計算及びハードウェア資源の共有を管理し調整するコンピュータシステムのソフトウェア構成要素である。「ソフトウェアアプリケーション」（ソフトウェア、アプリケーション、コンピュータソフトウェア、コンピュータアプリケーション、プログラム、及びコンピュータプログラムとも称す）とは、１つ又は２つ以上の特定の作業を行うためにコンピュータが翻訳し実行することができる一組の命令である。「アプリケーションプログラミングインタフェイス」（又はAPI）とは、ソフトウェアアプリケーションにより行われた要求を支援するためにオペレーティングシステム、ライブラリ、又はサービスが提供する機能（又は手続き）の一組の宣言である。APIは、特定のインタフェイスと該インタフェイスにおいて指定された識別子の挙動を指定するものである。APIの実施とは、該APIにより記述される機能を提供するソフトウェアアプリケーションコードを意味する。「コンピュータデータファイル」とは、ソフトウェアアプリケーションにより使用するデータを永続的に格納している情報ブロックである。
【００１４】
「対話空間」とは、ソフトウェアアプリケーション及びコンピュータデータファイルのうちの少なくとも一方の次元と、該ソフトウェアアプリケーション及び／又はデータファイルの異なるセクション（例えば、コンピュータデータファイル中の章又はプレゼンテーション用スライド、及びソフトウェアアプリケーションの様々な機能又はエントリポイント）に対応する「位置」とを有する抽象空間である。「対話空間に対するユーザの現在の焦点」とは、ソフトウェアアプリケーション及び／又はコンピュータデータファイルのセクションのうち、ユーザのネットワークノード上で現在活動中のセクションである。
【００１５】
「データベース」とは、コンピュータにより検索することができる標準化された形式で提示される組織化されたレコードの収集体である。データベースは、単一のコンピュータ読み取り可能データ記憶媒体上に格納することが可能であり、又は複数のコンピュータ読み取り可能データ記憶媒体にわたって分散させることが可能である。
【００１６】
「データシンク」（単に「シンク」とも称す）とは、データを受信する装置、装置の一部（例えばコンピュータ）、又はソフトウェアである。
【００１７】
「データソース」（単に「ソース」とも称す）とは、データを送出する装置、装置の一部（例えばコンピュータ）、又はソフトウェアである。
【００１８】
「フレームワーク」とは、一組の再使用可能な協働するクラスを構成する高レベル機能、及び低レベル機能（例えば、オペレーティングシステムのプリミティブ及びカーネルのプリミティブ）を組み合わせることができる方法を支配するプロトコル（ソフトウェアアプリケーションによりプリミティブを呼び出すことができる態様及びかかる呼び出しにフレームワークが応答する態様を定義するルールを含む）である。
【００１９】
「ネットワークノード」とは、通信ネットワーク内の分岐合流点又は接続点である。例示的なネットワークノードとして、端末、コンピュータ、及びネットワークスイッチが挙げられる（但し、それらには限定されない）。「ネットワーク接続」とは、２つの通信中のネットワークノード間のリンクである。
【００２０】
「接続ルール」とは、仮想領域及び接続ターゲットのうちの少なくとも一方を指定するものであり、適当に構成されたソフトウェアアプリケーション又はサービスの挙動をネットワーク接続の開始時に案内する１つ又は２つ以上の接続条件からなる随意選択的な一組の接続条件を含む。「接続ターゲット」とは、１つのネットワークノード上の通信者、資源、又はサービスとのネットワーク接続を確立するために使用することができる識別子又は接続ハンドル（例えば、URI（Uniform Resource Identifier））を指すものである。「接続条件」は、ネットワーク接続の確立、ネットワーク接続の管理、又はネットワーク接続にわたって送信されるデータの処理に影響を与える、１つ又は２つ以上のパラメータを指定するものである。例えば、接続条件は、ネットワーク接続が試行され又は確立される前に満たされるべき動作環境に関する述語（predicate）を記述することが可能である。
【００２１】
「オブジェクト」とは、仮想領域の幾何学的構造とは別個に便利に扱うことができる該仮想領域中のあらゆるタイプの離散的要素である。例示的なオブジェクトとして、ドア、入口、窓、ビュースクリーン、及びスピーカーフォンが挙げられる。オブジェクトは典型的には、仮想領域の属性及びプロパティとは別個の異なる属性又はプロパティを有する。「アバター」とは、仮想領域中の通信者を表すオブジェクトである。
【００２２】
「プレゼンス」とは、ネットワーク化エンティティ（例えば、通信者、サービス、又は装置）が通信する能力又は通信する意志を称するものであり、かかる意志は、ネットワーク上のエンティティの状態に関する情報を検出し取得する能力、及び該エンティティに接続する能力に影響を与えるものである。
【００２３】
「リアルタイムデータストリーム」とは、連続的な流れで構築され処理されたデータであり、遅延なく又は知覚不能な遅延を伴って受信されるよう設計されたものである。リアルタイムデータストリームは、高優先順位のハードリアルタイムデータストリーム（例えばボイスストリーム）から低優先順位のソフトリアルタイムデータストリーム（例えば画面共有データストリーム）に至る様々な優先順位カテゴリに含まれるものである。リアルタイムデータストリームは、ボイス、ビデオ、ユーザの動き、顔の表情、及びその他の物理的な現象のディジタル表現、並びに、高速送信、高速実行、又は高速送信及び高速実行の両方から恩恵を受け得るコンピューティング環境内のデータ（例えば、アバター移動命令、テキストチャット、リアルタイムデータフィード（例えば、センサデータフィード、マシン制御命令フィード、トランザクションストリームフィード、及び株価情報フィード）、及びファイル転送を含む）を含むものである。
【００２４】
「ストリームミックス」とは、同一の又は意味的に一貫したタイプの２つ又は３つ以上のリアルタイムデータストリーム（例えば、オーディオ、ビデオ、チャット、及びモーションデータ）の組み合わせである。例えば、一組のボイスストリームを単一のボイスストリーム内に組み合わせることが可能であり、又は１つのボイスストリームを１つのビデオストリームのオーディオ部分内に組み合わせることが可能である。
【００２５】
「スイッチングルール」とは、１つ又は２つ以上の先行条件の影響を受ける１つ又は２つ以上のリアルタイムデータソース及び１つ又は２つ以上のリアルタイムデータシンクの接続又は切断を指定する命令である。
【００２６】
「仮想領域」（「領域」又は「場所」とも称す）とは、コンピュータにより管理される空間又はシーンを表現したものである。仮想領域は典型的には、１次元、２次元、又は３次元で表現したものであるが、実施形態によっては、仮想領域は、単一の点に対応するものとすることが可能である。多くの場合、仮想涼気は、物理的な実世界空間をシミュレートするよう設計される。例えば、従来のコンピュータモニタを使用して、３次元のコンピュータにより生成される空間の２次元グラフィックとして仮想領域を視覚化することが可能である。しかし、仮想領域は、スイッチングルールの実施に関連する視覚化を必要としない。仮想領域は典型的には、仮想領域スキーマのインスタンスを称し、ここで、該スキーマは、変数に関する仮想領域の構造及びコンテンツを定義し、該インスタンスは、特定のコンテキストから求められた値に関して仮想領域の構造及びコンテンツを定義するものである。
【００２７】
「仮想領域仕様」とは、共有仮想領域通信環境の生成に使用される仮想領域の記述である。
【００２８】
「仮想通信環境」とは、少なくとも１つの仮想領域を含み、及び複数の通信者間のリアルタイム通信をサポートする、コンピュータにより管理される空間の表現である。
【００２９】
「ゾーン」とは、少なくとも１つのスイッチングルール又は統制ルールに関連付けられた仮想領域中の一領域である。スイッチングルールは、共有仮想領域を介して通信しているネットワークノード間のリアルタイムデータストリームのスイッチング（例えば、ルーティング、接続、及び切断）を制御する。統制ルールは、資源（例えば、領域、領域中の一領域、又は該領域又は該一領域のコンテンツ）に対する通信者のアクセス、該アクセスの範囲、及び該アクセスの後続の結果（例えば、該アクセスに関する監査記録を記録しなければならないという要件）を制御する。
【００３０】
仮想領域内の「位置」とは、仮想領域内の一点又は一面積又は一体積の場所を称するものである。一点は典型的には、仮想領域中の一領域を画定する一組の１次元、２次元、又は３次元座標（例えば、x,y,z）により表される。一面積は典型的には、仮想領域中の閉じた２次元形状の境界を画定する３つ又は４つ以上の同一平面上の頂点の３次元座標により表される。一体積は典型的には、仮想領域中の３次元形状の閉じた境界を画定する４つ又は５つ以上の同一平面上にない頂点の３次元座標により表される。
【００３１】
「通信者」とは、ネットワーク接続を介して他の人と通信し又は対話する人のことであり、この場合、該通信又は対話は、共有仮想領域との関連で生じても生じなくても良い。「ユーザ」とは、説明を目的とした特定の状況を画定する特定のネットワークノードを操作している通信者である。
【００３２】
「述語」とは、ルールの条件部である。
【００３３】
本書で用いる場合、用語「含む」とは、含むがそれに限定されないことを意味し、用語「含んでいる」とは、含んでいるがそれに限定されないことを意味している。
II．序論
本書で説明する実施形態は、ネットワークノード間の接続がパーベイシブである新たな動作環境パラダイムにおけるリアルタイムソフトウェアアプリケーションの開発に必要となる尽力及び時間を大幅に削減する高レベル機能を有するリアルタイムソフトウェアアプリケーションの実行をサポートする、パーベイシブ・リアルタイムフレームワークを提供するものである。該パーベイシブ・リアルタイムフレームワークは、通信者、仮想領域、及びその他のネットワーク資源に接続し、並びにそれら接続をユーザ入力に応じてスイッチングするという複雑なタスクを扱い、これにより、ソフトウェアアプリケーションの開発者が高レベルリアルタイムソフトウェアアプリケーション機能の開発に集中することが可能となる。
【００３４】
実施形態によっては、該パーベイシブ・リアルタイムフレームワークは、従来のオペレーティングシステム機能（例えば、プロセス管理機能、ファイル管理機能、メモリ管理機能、ストレージ管理機能、デバイス管理機能、及びネットワーク管理機能）にリアルタイム機能（例えば、リアルタイムスケジューリング機能、リアルタイム接続機能、及びリアルタイムデータストリーム操作機能）を組み込む機能を提供する。
【００３５】
実施形態によっては、パーベイシブ・リアルタイムフレームワークは、一般的なパーベイシブ・リアルタイムタスク、かかるタスクの実行をサポートするカーネル、及び該フレームワークにより提供される機能を活用することができるアプリケーションを構成し構築するためのツールに対する、予め符号化されたソリューションのライブラリを含む。このようにして、該パーベイシブ・リアルタイムフレームワークは、一組のリアルタイム高レベル機能及びプリミティブを従来のオペレーティングシステムプリミティブとピアな関係にする。
【００３６】
パーベイシブ・リアルタイムフレームワークの実施形態によっては、ソフトウェアアプリケーションの設計者がソフトウェアアプリケーション又はコンピュータデータファイルにおいて位置の意味を定義すること又はそれら位置の位置の意味を仮想領域及び接続ターゲットの少なくとも一方に関連付けることを可能にする。これらの実施形態は、空間（spatial）ネットワーク接続システムにおいてスイッチングメタファーとして位置を使用するためにソフトウェアアプリケーションにより呼び出すことができる機能を含む。これらの特徴は、ソフトウェアアプリケーション又はコンピュータデータファイルにおける位置を使用して、例えば、仮想領域に対する接続、仮想領域内への入場、通信者及びその他のリアルタイムデータストリームのソース又はシンクへの接続、及び通信者及びネットワーク資源及びサービスに関連付けられたプレゼンスデータの判定を行うことを可能とする。
III．概説
Ａ．パーベイシブ・リアルタイム（PRT）フレームワーク
図１は、コンピュータデータファイル28及びソフトウェアアプリケーション30の少なくとも一方における位置に基づいて、及びソフトウェアアプリケーション28及びコンピュータデータファイルの少なくとも一方に関連付けられた１つ又は２つ以上の接続ルール32に基づいて、様々な異なるネットワークノード14,16,18,20,22,24,26とのネットワーク接続を管理する、パーベイシブ・リアルタイム（PRT）フレームワーク12を示している。接続ルール32の各々は、仮想領域及び接続ターゲットの少なくとも一方を指定し、及び１つ又は２つ以上の接続条件からなる随意選択的な一組の接続条件を含み、該接続条件は、ネットワーク接続を管理する際に、適当に構成されたソフトウェアアプリケーション又はサービスの挙動を案内するものである。
【００３７】
図２は、PRTフレームワーク12により実施される方法の例示的な実施形態を示している。この方法によれば、PRTフレームワーク12は、接続ルール32に基づくリアルタイムデータストリームのネットワーク接続の管理を含む動作を実行する機能を宣言するアプリケーションプログラミングインタフェイス（API）を発行する（図２のブロック34）。接続ルール32の各々は、仮想領域のそれぞれの指定と該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定との少なくとも一方を含む。APIの呼び出し36に応じて、PRTフレームワーク12は、ソフトウェアアプリケーション30及びコンピュータデータファイル28の少なくとも一方と該仮想領域における少なくとも１つの位置とに関連付けられた複数の接続ルール32のそれぞれに基づいて、少なくとも１つのネットワークノードとのリアルタイムデータストリーム接続を管理する（図２のブロック38）。
【００３８】
図１に示す例示的な実施形態では、コンピュータデータファイル28は、コンピュータデータファイル28におけるそれぞれの位置（例えば、ワープロ文書中のそれぞれの段落又は章）として定義された３つのセクション（S1,S2,S3）を含み、ソフトウェアアプリケーション30は、ソフトウェアアプリケーション30におけるそれぞれの位置（例えば、ソフトウェアアプリケーションのそれぞれの機能又はエントリポイント）として定義された６つのセクション（S4,S5,S6,S7,S8,S9）を含む。コンピュータデータファイル28の各セクション（S1-S3）及びソフトウェアアプリケーション30の各セクション（S4-S9）は、複数の接続ルール32のうちの少なくとも１つに関連付けられたものである。このようにして、PRTフレームワーク12は、セクションS1-S9の各々を、１つの仮想領域もしくは１つ又は２つ以上の接続ターゲット又はその両者にリアルタイムな態様で接続することができ、この場合には、関連付けられた接続ターゲットへプレゼンス情報をエクスポートすること、関連付けられた仮想領域における通信セッションに参加するよう関連付けられた接続ターゲットを招待すること、及び関連付けられた接続ターゲットとのリアルタイム接続を確立することが含まれる。
【００３９】
図１に示す実施形態に関して図２の方法を実施する場合には、例えば、PRTフレームワーク12は、コンピュータデータファイル28及びソフトウェアアプリケーション30の少なくとも一方における報告された位置に基づいて、及び該報告された位置に関連付けられた接続ルールに基づいて、ネットワークノード14-26のうちの１つ又は２つ以上とのそれぞれのリアルタイムデータストリーム接続を管理する。報告された位置がS1である場合、PRTフレームワーク12は、該位置S1に関連付けられた接続ルールに従ってネットワークノード14（データソース1；例えば、リアルタイム株価サービス）とのリアルタイムデータストリームネットワーク接続を管理する。報告された位置がS2である場合には、PRTフレームワーク12は、該位置S2に関連付けられた接続ルールに従ってネットワークノード16,18,20（取引相手）とのビデオ会議ネットワーク接続を管理する。報告された位置がS8である場合には、PRTフレームワーク12は、該位置S8に関連付けられた接続ルールに従ってネットワークノード22（データソース2；例えば、リアルタイム音楽又はビデオストリーミングサービス）とのリアルタイムデータストリーム接続を管理する。報告された位置がS9である場合には、PRTフレームワーク12は、該位置S9に関連付けられた接続ルールに従ってネットワークノード24,26（友人）とのボイス及びテキストチャットネットワーク接続を管理する。
【００４０】
このため、PRTフレームワーク12は、ソフトウェアアプリケーションの開発者が、ソフトウェアアプリケーション、コンピュータデータファイル、及びそれらの一部との接続ルールの関連付けを介して、パーベイシブ・リアルタイム接続環境で動作することができるソフトウェアアプリケーションを構築することを可能にする。PRTフレームワーク12は、接続ルールにより必要とされた際にリアルタイム接続及びリアルタイムデータストリーム処理を管理し、これにより、ソフトウェアアプリケーションの開発者が、この新たなパーベイシブネットワーク接続パラダイムを活用することができるソフトウェアアプリケーションを作成するという付加価値のあるタスクに集中することが可能となる。
Ｂ．動作環境
図１及び図３に示すように、PRTフレームワーク12は、ネットワーク42及びネットワークインフラストラクチャサービス環境43を含む動作環境40に関して動作する。
１．ネットワーク環境
ネットワーク42は、ローカルエリアネットワーク（LAN）、メトロポリタンエリアネットワーク（MAN）、及びワイドエリアネットワーク（WAN）（例えばインターネット）の何れを含むことも可能である。ネットワーク42は典型的には、多数の異なるコンピューティングプラットフォーム、及びネットワークノード間での広範な異なるメディアタイプ（例えば、テキスト、ボイス、オーディオ、及びビデオ）の送信をサポートする転送設備を含む。
【００４１】
PRTフレームワーク12は典型的には、（管理ポリシー、ユーザプリファレンス（ユーザの存在の出力並びに領域及び接続ターゲットに対するユーザの接続に関するプリファレンス（嗜好）を含む）、及びその他の設定と共に）他のネットワークノードとのリアルタイム接続の管理に影響を与えるローカル設定58を画定するソフトウェア及びハードウェア資源を含むネットワークノード上で動作する。ネットワークノード間のネットワーク接続は、ピア・ツー・ピア・アーキテクチャ、サーバ介在アーキテクチャ、及びピア・ツー・ピア・アーキテクチャ及びサーバ介在アーキテクチャの特徴を組み合わせたハイブリッド・アーキテクチャを含む、様々な異なるストリーム操作トポロジーで構成することが可能である。この種の例示的なトポロジーが、2007年10月24日出願の米国特許出願第11/923,629号及び同第11/923,634号に記載されている。
２．インフラストラクチャサービス環境
ネットワークインフラストラクチャサービス環境43は、ネットワークノード14-26とのネットワーク接続の管理においてPRTフレームワーク12と協働する１つ又は２つ以上のネットワークインフラストラクチャサービスを提供する。該ネットワークインフラストラクチャサービスは、単一のネットワークノード上で動作することが可能であり、又は複数のネットワークノードにわたって分散させることが可能である。該ネットワークインフラストラクチャサービスは典型的には、１つ又は２つ以上の専用ネットワークノード（例えば、サーバコンピュータ又はエッジサービス（ルーティング及びスイッチング等）を実行するネットワークデバイス）上で実行される。しかし、実施形態によっては、ネットワークインフラストラクチャサービスのうちの１つ又は２つ以上を通信者のネットワークノードのうちの少なくとも１つ上で実行することが可能である。実施形態によっては、ネットワークインフラストラクチャサービスのうちの１つ又は２つ以上が１つ又は２つ以上の仮想マシン上で実行され、該１つ又は２つ以上の仮想マシンは同一の物理的なハードウェア上で実行することが可能である。例示的な動作環境40に含まれるネットワークインフラストラクチャサービスには、セキュリティサービス44、領域サービス46、ランデブーサービス48、及び対話サービス50が含まれる。
【００４２】
セキュリティサービス44は、動作環境40の資源に対する通信者のアクセスを制御する。該セキュリティサービス44により実施されるアクセス制御方法は典型的には、能力（正しい能力又は許可を有するエンティティに対してアクセスが認められる場合）又はアクセス制御リスト（リスト上にある識別子を有するエンティティに対してアクセスが認められる場合）に基づくものとなる。セキュリティサービス44が特定の通信者に対してアクセスを認めた後、該通信者は典型的には、他のネットワークインフラストラクチャサービスにより提供される機能を使用して動作環境40と対話する。
【００４３】
領域サービス46は仮想領域をホストする。このプロセスでは、領域サービス46は、要求側エンティティの能力の影響を受ける仮想領域への接続を管理し、該仮想領域に関する大域状態情報を維持し、及び該仮想領域により画定されるコンテキストで共有通信セッションに参加するネットワークノードのためのデータサーバとして働く。該大域状態情報は、仮想領域内に存在する全てのオブジェクトのリストと、該オブジェクトのそれぞれの該仮想領域内の位置とを含む。領域サービス46は、該大域状態情報を参加中のネットワークノードに定期的に送る。領域サービス46はまた、該通信セッションへの参加を要求する他のネットワークノードに対する初期化情報を登録し送信する。このプロセスでは、領域サービス46は、仮想領域仕様のコピーを参加中の各ネットワークノードへ送信する。該仮想領域仕様はローカルデータベース又はリモートデータベースに格納することが可能である。領域サービス46はまた、通信障害が発生した場合にネットワークノードへの参加を大域状態に確実に同期させることが可能なものである。
【００４４】
ランデブーサービス48は、プレゼンス情報の収集、格納、及び分配を管理し、及び要求側エンティティの能力の影響を受けるネットワークノードが（例えば接続ハンドルの分配を管理することにより）互いに通信するための機構を提供する。該ランデブーサービス48は典型的には、プレゼンスデータベース中にプレゼンス情報を格納する。
【００４５】
対話サービス50は、通信者間の対話を記録する対話データベースを維持し、及び要求側エンティティの能力の影響を受ける該対話データベース上の照会を支援する。通信者間のあらゆる対話について、動作環境43内の１つ又は２つ以上のサービス（例えば領域サービス46）が対話サービス50へ対話データを送信する。これに応じて、対話サービス50は、１つ又は２つ以上のそれぞれの対話記録を関係データベース中に生成する。各対話記録は、所与の対話のコンテキスト（脈絡）を記述したものである。例えば、実施形態によっては、対話レコードは、各通信者毎の識別子、対話の場所（例えば、仮想領域インスタンス）の識別子、対話場所の階層の記述（例えば、対話室が一層大きな領域と如何に関係しているかに関する記述）、対話の開始時刻及び終了時刻、及び対話中に共有される全てのファイル及びその他のストリームのリストを含む。このため、各リアルタイム対話毎に、対話サービス50は、対話が発生したとき、対話が発生した場所、及び対話にかかわる通信者に関して対話中に何が（例えば、出入りが）起こったか、アクティブ又は非アクティブにされているオブジェクト、及び共有されているファイルを追跡する。
【００４６】
対話サービス50は、場所に基づいてソートされた（例えば最も頻繁な又は最も最近の）順序で照会結果を対話データベース記録に提示することが可能である。該照会結果は、仮想領域内で通信者が会った者の頻度順のソート、並びに仮想領域に関わらず通信者が会った者のソート、及び通信者が最も多く出入りしている仮想領域のソートを行うために使用することが可能である。該照会結果はまた、関係に基づいて特定タスクを自動化するヒューリスティックシステムの一部としてソフトウェアアプリケーションの開発者により使用することが可能である。この種のタイプのヒューリスティックの一例として、特定の仮想領域を６回以上訪れた通信者がデフォルトでノックせずに入ることを可能にするヒューリスティック、又は、特定時刻に一領域に存在した通信者がそれと同一時刻に同一領域に存在した別の通信者により作成されたファイルの修正及び削除を行うことを可能にするヒューリスティックが挙げられる。対話データベースに関する照会は、他の検索と組み合わせることが可能である。例えば、対話データベースに関する照会は、ネットワークインフラストラクチャサービス環境43の領域外の通信システム（例えば、Skype、Facebook、及びFlickr）を用いた連絡先との対話について生成された連絡先履歴データに関する照会と組み合わせることが可能である。
３．仮想領域
図３を参照する。実施形態によっては、PRTフレームワーク12は、仮想領域インスタンス56により定義される通信コンテキスト54でのネットワークノードとのリアルタイム接続を監視する。該仮想領域インスタンス56は、抽象座標（例えば、関連付けられたコンピュータデータファイル又はソフトウェアアプリケーションにおける位置により画定される座標（カスタマサービスデータベースが１つの領域である一実施形態ではデータベース中の各レコードが１つのゾーンを構成する））に関して定義される抽象仮想空間に対応するものとすることが可能である。代替的に、仮想領域インスタンス56は、特定の視覚化に関連付けられた２次元又は３次元の幾何学座標に関して定義される視覚的な仮想空間に対応するものとすることが可能である。抽象仮想領域は、それぞれの視覚化に関連付けること又は関連付けないことが可能であり、一方、視覚的な仮想領域は、それぞれの視覚化に関連付けられる。
【００４７】
通信者は典型的には、仮想領域内の動きを判定し及び他のネットワークノードとのリアルタイムデータストリーム接続を確立することができるそれぞれのコンピューティング環境を実施するそれぞれのネットワークノードから仮想領域インスタンス56にアクセスする。通信者は典型的には、関連付けられた視覚化を有する一仮想領域内のそれぞれのアバターによって表される。該アバターは、それぞれのネットワークノードにおいて通信者により入力された入力コマンドに応じて仮想領域内を動き回る。関連付けられた視覚化を有する仮想領域インスタンスの通信者のビューは典型的には、該通信者のアバターの透視図により表され、各通信者は典型的は、該通信者の周囲の視覚的な仮想領域の任意の部分を見ることが可能であり、これにより通信者が経験する没頭の度合いが増大する。
【００４８】
図４は、コンピュータシステム60により実施される例示的なネットワークノードの一実施形態を示している。該コンピュータシステム60は、表示モニタ62、コンピュータマウス64、キーボード66、スピーカ68,70、及びマイク72を含む。該表示モニタ62は、グラフィカルユーザインタフェイス74を表示する。該グラフィカルユーザインタフェイス74は、多数のウィンドウ及びアイコン並びに１つのポインタ76を含むことができるウィンドウベースのグラフィカルユーザインタフェイスである。図示の実施形態では、グラフィカルユーザインタフェイス74は、画廊を表す３次元の視覚化に関連付けられた共有仮想領域78の２次元表示を表している。通信者は、それぞれのアバター80,82,84として仮想領域78中に表されており、その各アバターは、仮想領域78のコンテキストにおいてそれぞれの役割（例えば、学芸員、芸術家、及び訪問者）を有することが可能である。
【００４９】
以下で詳述するように、仮想領域78は、仮想領域78中のアバター80-84により表されているネットワークノード間のリアルタイムデータストリームのスイッチングを統制するそれぞれのルールに関連付けられたゾーン86,88,90,92,94を含む。（図４中のゾーン86-94の境界を定める破線は、かかるゾーン境界に関連付けられた視覚的な手掛かりではあるが、典型的な通信セッション中には通信者には見えないものである。）該スイッチングルールは、ネットワークノードの各々において実行するローカルな接続プロセスが、仮想領域78のゾーン86-94内の通信者のアバター80-84の場所に基づいて他のネットワークノードとの通信を確立する態様を指示するものである。
【００５０】
一通信セッション中に、複数の通信者ネットワークノードの各々が、それぞれの組のリアルタイムデータストリーム（例えば、モーションデータストリーム、オーディオデータストリーム、チャットデータストリーム、ファイル転送データストリーム、及びビデオデータストリーム）を生成する。例えば、各通信者は、仮想領域78中の該通信者のアバターの動きを制御するモーションデータストリームを生成する１つ又は２つ以上の入力装置（例えば、コンピュータマウス64及びキーボード66）を操作する。更に、コンピュータシステム60の近くでローカルに生成される通信者の声その他の音声がマイク72により捕捉される。該マイク72により生成されるオーディオ信号は、リアルタイムオーディオストリームへと変換される。該オーディオストリームのそれぞれのコピーが、仮想領域78中のアバターにより表される他のネットワークノードへ送信される。これらの他のネットワークノードにおいてローカルに生成された音声は、リアルタイムオーディオストリームへと変換されてコンピュータシステム60へ送信される。コンピュータシステム60は、該他のネットワークノードにより生成されたオーディオストリームを、スピーカ68,70により表現されるオーディオ信号へと変換する。前記モーションデータストリーム及びオーディオストリームは、各通信者ノードから他の通信者ネットワークノードへと直接に又は間接的に送信することが可能である。ストリーム操作トポロジーによっては、各通信者ネットワークノードは、他の通信者ネットワークノードにより送信されたリアルタイムデータストリームのコピーを受信する。別のストリーム操作トポロジーでは、複数の通信者ネットワークノードのうちの１つ又は２つ以上が、他のネットワークノードを出所とする（他のネットワークノードから発せられた）リアルタイムデータストリームから導出された１つ又は２つ以上の混合ストリームを受信する。
【００５１】
仮想領域は、仮想領域の幾何学的要素の記述及び１つ又は２つ以上のルール（スイッチングルール及び統制ルールを含む）を含む仕様により定義される。該スイッチングルールは、ネットワークノード間のリアルタイムストリーム接続を統制する。該統制ルールは、仮想領域自体、仮想領域を有する領域、及び仮想領域内のオブジェクト等の資源に対する通信者のアクセスを制御する。実施形態によっては、仮想領域の幾何学的要素は、COLLADA−ディジタル資産スキーマ、リリース1.4.1、2006年4月仕様（http://www.khronos.org/collada/）に従って記述され、スイッチングルールは、米国特許出願第11/923,629号及び第11/923,634号に記載されているCOLLADA ストリーム基準仕様に従って記述される。
【００５２】
仮想領域の幾何学的要素は典型的には、仮想領域の物理ジオメトリ及びコリジョンジオメトリを含む。物理ジオメトリは仮想領域の形状を記述する。物理ジオメトリは典型的には、三角形、四角形、又は多角形の表面から形成される。該物理ジオメトリ上に色及びテクスチャがマッピングされて、仮想領域の一層現実的な外観が生成される。例えば、視覚的ジオメトリ上に光をペイントし、該光の近くのテクスチャ、色、又は光強度を変更することにより、照明効果を提供することが可能である。コリジョンジオメトリは、仮想領域内をオブジェクトが移動できる方法を判定する不可視表面を記述する。該コリジョンジオメトリは、視覚的ジオメトリと一致すること、視覚的ジオメトリの一層単純な近似に対応すること、又は仮想領域の設計者の特定用途向けの要件に関連付けられたものとすることが可能である。
【００５３】
スイッチングルールは典型的には、仮想領域内の位置に関してリアルタイムデータストリームのソース又はシンクに接続するための条件の記述を含む。各ルールは典型的には、該ルールの適用対象となるリアルタイムデータストリームのタイプと該ルールを適用する場所である仮想領域中の１つ又は２つ以上の場所とを画定する属性を含む。実施形態によっては、各ルールは、随意選択的に、ソースに必要とされる役割、シンクに必要とされる役割、ストリームの優先順位、及び要求されたストリーム操作トポロジーを指定する、１つ又は２つ以上の属性を含むことが可能である。実施形態によっては、仮想領域の特定部分について定義された明示的なスイッチングルールが存在しない場合に、該仮想領域の該部分に対して１つ又は２つ以上の暗黙的な又はデフォルトのスイッチングルールを適用することが可能である。デフォルトスイッチングルールの一例として、ポリシールールの影響を受ける一領域内のあらゆるソースをあらゆる互換性のあるシンクに接続するルールが挙げられる。ポリシールールは、領域クライアント間の全ての接続に大域的に適用することが可能であり、又はそれぞれの領域クライアントとのそれぞれの接続のみに適用することが可能である。ポリシールールの一例として、仮想領域内で互いに所定の距離（又は半径）内にあるそれぞれのオブジェクトに関連付けられた互換性のあるシンクとのソースの接続のみを可能とする近接ポリシーが挙げられる。
【００５４】
実施形態によっては、仮想領域にアクセスする者、そのコンテンツにアクセスする者、仮想領域のコンテンツに対するアクセスの範囲（例えば、コンテンツに対してユーザができること）、及びそれらコンテンツへのアクセスに後続する結果（例えば、監査ログ及び支払要求といった記録の保持）を制御するための統制ルールが仮想領域に関係する。実施形態によっては、仮想領域全体又は仮想領域の１つのゾーンが「統制網（governance mesh）」に関連付けられる。実施形態によっては、統制網は、米国特許出願第11/923,629号及び第11/923,634号に記載されているゾーン網の実施態様と類似した態様で実施される。統制網は、ソフトウェアアプリケーションの開発者が、統制ルールを一仮想領域又は一仮想領域の一ゾーンに関連付けることを可能にする。これにより、仮想領域中のあらゆるファイルについてそれぞれの許可を生成する必要がなくなり、及びコンテキストに応じて同一の文書を異なる態様で処理する必要がある場合に生じ得る複雑さを扱う必要がなくなる。
【００５５】
実施形態によっては、仮想領域は、該仮想領域の１つ又は２つ以上のゾーンをディジタル著作権管理（DRM）機能に関連付ける統制網に関連付けられる。DRM機能は、仮想領域の１つ又は２つ以上、仮想領域内の１つ又は２つ以上のゾーン、又は仮想領域内のオブジェクトに対するアクセスを制御する。DRM機能は、通信者が仮想領域内の統制網の境界を越えるたびにトリガされる。DRM機能は、トリガ動作が許可されているか否かを判定し、トリガ動作が許可されている場合には、許可された動作の範囲、支払いが必要か否か、及び監査記録を生成する必要があるか否かを判定する。仮想領域の例示的な実施態様では、関連付けられた統制網は、通信者が仮想領域に入ることができる場合に該通信者が該仮想領域に関連付けられた全ての文書について動作（文書の操作、文書の閲覧、文書のダウンロード、文書の削除、文書の変更、及び文書の再アップロードを含む）を実行することができるように構成される。このようにして、仮想領域は、該仮想領域により定義されたコンテキストで共有され議論された情報の保存場所となることができる。
【００５６】
仮想領域の仕様に関する更なる詳細が、米国特許出願第61/042714号（2008年4月4日出願）、第11/923,629号（2007年10月24日出願）、及び第11/923,634号（2007年10月24日出願）に記載されている。
４．ソフトウェアアプリケーション及びコンピュータデータファイルにおける位置
パーベイシブ・リアルタイムフレームワーク12の幾つかの実施形態は、ソフトウェアアプリケーションの開発者が、ソフトウェアアプリケーション又はコンピュータデータファイルにおける位置の意味を定義することを可能にする。それぞれの接続ルールとの関連付けを介して、かかる位置の定義を使用して、例えば、仮想領域への接続、仮想領域への入場、通信者及びその他のリアルタイムデータストリームのソース又はシンクへの接続、及び通信者及びネットワーク資源及びネットワークサービスに関連付けられたプレゼンスデータの判定を行うことができる。
【００５７】
上記で定義したように、コンピュータデータファイルは、ソフトウェアアプリケーションにより使用するデータ（例えば、ソフトウェアアプリケーションの入力として使用され及び／又は出力として書き込まれる情報）を永続的に格納する任意の情報ブロックである。コンピュータデータファイルは、コンシューマソフトウェアアプリケーション及びビジネスソフトウェアアプリケーションを含む任意のタイプのソフトウェアアプリケーションで使用するよう設計することが可能であり、及び任意のタイプのオープン又はクローズドデータファイルフォーマットで格納することが可能である。コンピュータデータファイルは、該コンピュータデータファイルに格納されるデータの種類及び目的並びにその作成に使用されるソフトウェアに少なくとも部分的に依存する内容及び構造を有する１つ又は２つ以上の構成要素からなるものである。例えば、デスクトップパブリッシングソフトウェアアプリケーションで使用するコンピュータデータファイルは典型的には、所定のセクション又はデータカテゴリ（例えば、文、段落、見出し、及び区画という形で配置されたテキスト、図、表、行／列、頁、図面、プレゼンテーション用スライド、及びスプレッドシート、又はセキュリティ特徴又は認証特徴等の機能的な特徴）に対応する構成要素を有する。ソフトウェアアプリケーションの開発者又はエンドユーザは、コンピュータデータファイルを構成する１つ又は２つ以上の構成要素からなる該コンピュータデータファイルの１つ又は２つ以上のセクションを定義することが可能である。一セクションは、コンピュータデータファイル全体又はコンピュータデータファイルの一部を含むことが可能であり、及び別のセクションと全体的に又は部分的に重複すること可能である。
【００５８】
図５Ａは、構成要素A,B,C,D、該構成要素Bの副構成要素B(1),B(2),B(3)、及び該構成要素Cの副構成要素C(1),C(2),C(3)の階層的配列を保持するデータファイルコンテナ97を含む、例示的なコンピュータデータファイル96を示している。コンピュータデータファイル96は、３つのセクション（S1,S2,S3）に分かれており、その各々は該コンピュータデータファイル96の構成要素及び副構成要素のうちの１つ又は２つ以上に関連付けられている。例えば、セクションS1は副構成要素B(1)に関連付けられ、セクションS2は構成要素Cに関連付けられ、セクションS3は副構成要素B(3)及び構成要素Cに関連付けられている。
【００５９】
コンピュータデータファイルの構成要素及び副構成要素間の関連付けは、様々な異なるデータ構造フォーマットで格納することが可能である。例えば、図５Ｂは、コンピュータデータファイル96中のセクションを定義するレコードを含む例示的なコンピュータデータファイルセクション定義データベース98を示している。該セクション定義レコードは、レコード識別子及び該コンピュータデータファイル96の識別子により索引付けされる。実施形態によっては、コンピュータデータファイルセクション定義データベース98内のレコードを作成するためにエンドユーザが使用することができる１つ又は２つ以上のダイアログボックスを有するソフトウェアアプリケーションをソフトウェアアプリケーションの開発者が設計することを可能にする機能をＰＲＴフレームワーク12が提供する。
【００６０】
上記で定義したように、ソフトウェアアプリケーションは一組の命令であり、該命令は、記憶媒体（例えば、ハードディスクドライブ、メモリ、又はランダムアクセスメモリ）内にロードされた後にコンピュータが翻訳し実行することができるものである。ソフトウェアアプリケーションは、１つ又は２つ以上の論理的な構成要素（例えば、ハードワイヤードによる、一時的な、コンテキスト型の、テーブルルックアップ構成要素）又はソフトウェアアプリケーションの機能及びその設計のアーキテクチャに少なくとも部分的に依存する内容及び構造を有する機能的な構成要素（例えば、機能又はエントリポイント）から構成される。例えば、ソフトウェアアプリケーションによっては、多数の構成要素で構成されるコンポーネント化アーキテクチャを使用し、その各構成要素は、別個のライブラリ内に収容することが可能であり、及び主実行ファイルによりホストされることを可能にするそれぞれの組をなすインタフェイスを提示することが可能なものである。ソフトウェアアプリケーションの開発者は、１つ又は２つ以上の構成要素からなるソフトウェアアプリケーションの１つ又は２つ以上のセクションを定義することが可能である。１つのセクションは、ソフトウェアアプリケーション全体又はソフトウェアアプリケーションの一部を含むことが可能であり、及び別のセクションと全体的に又は部分的に重複することが可能である。
【００６１】
図６Ａは、構成要素E,F、該構成要素Eの副構成要素E(1),E(2),E(3)、該構成要素Fの副構成要素F(1),F(2)、該副構成要素F(1)の副構成要素F(i),F(ii)、及び該副構成要素F(2)の副構成要素F(iii)の階層的配列を保持するアプリケーションコンテナ100を含む、例示的なソフトウェアアプリケーション99を示している。該ソフトウェアアプリケーション100は、６つのセクション（S4,S5,S6,S7,S8,S9）に分かれており、その各々は、該ソフトウェアアプリケーション99の構成要素及び副構成要素のうちの１つ又は２つ以上に関連付けられている。例えば、セクションS4は副構成要素B(1)に関連付けられ、セクションS5は構成要素Fに関連付けられ、セクションS6は副構成要素F(1)に関連付けられ、セクションS7は副構成要素F(2)に関連付けられ、セクションS8は副構成要素F(ii),F(iii)に関連付けられ、及びセクションS9は副構成要素E(3),F(i)に関連付けられている。
【００６２】
ソフトウェアアプリケーションの構成要素及びセクション間の関連付けは、様々な異なるデータ構造フォーマットで格納することが可能である。例えば、図６Ｂは、ソフトウェアアプリケーション99中のセクションを定義するレコードを含む例示的なソフトウェアアプリケーションセクション定義データベース102を示している。該セクション定義レコードは、レコード識別子及び該ソフトウェアアプリケーション99の識別子により索引付けされる。実施形態によっては、ソフトウェアアプリケーションセクション定義データベース102内のデータベースレコードを作成するためにソフトウェアアプリケーションの開発者が使用することができる１つ又は２つ以上のダイアログボックスをＰＲＴフレームワーク12が提供する。
【００６３】
図７Ａ及び図７Ｂを参照する。実施形態によっては、コンピュータデータファイル又はソフトウェアアプリケーションの１つ又は２つ以上のセクションは、仮想領域のそれぞれのゾーンに関連付けられる。
【００６４】
例えば、実施形態によっては、コンピュータデータファイル又はソフトウェアアプリケーションの１つ又は２つ以上のセクションは、関連付けられたコンピュータデータファイル又はソフトウェアアプリケーション内の位置に対して一対一のマッピングを有する１次元又は多次元の抽象トポロジー空間における座標に関して定義される抽象仮想領域のそれぞれのゾーンに関連付けられる。例えば、図７Ａは、ソフトウェアアプリケーション99の構成要素及び副構成要素のそれぞれに直接マッピングする座標を有する２次元トポロジー空間内のそれぞれの座標に対するソフトウェアアプリケーション99のセクションS4-S9の例示的なマッピングを示している。
【００６５】
別の実施形態では、コンピュータデータファイル又はソフトウェアアプリケーションの１つ又は２つ以上のセクションには、１つ又は２つ以上の視覚的な仮想領域のそれぞれのゾーンに関連付けられ、該視覚的な仮想領域の各々は、それぞれの視覚化に関連付けられる１次元、２次元、又は３次元の幾何学座標に関して定義することが可能である。例えば、図７Ｂは、２つの視覚的な仮想領域104,78のそれぞれの座標に対するソフトウェアアプリケーション99のセクションS4-S9の例示的なマッピングを示している。この例では、セクションS4は視覚的な仮想領域104に関連付けられ、該視覚的な仮想領域104は会議室の３次元の視覚化に関連付けられており、セクションS5-S9は視覚的な仮想領域78のそれぞれのゾーンに関連付けられ、該視覚的な仮想領域78は画廊の３次元の視覚化に関連付けられている。
５．接続ルール
PRTフレームワーク12は、エンドユーザがコンピュータデータファイル又はソフトウェアアプリケーションを１つ又は２つ以上の接続ルールに関連付けることを可能にするツール（例えばダイアログボックス及びその類）をソフトウェアアプリケーションの開発者がソフトウェアアプリケーションに組み込むことを可能にする機能を提供する。コンピュータデータファイル又はソフトウェアアプリケーションは、様々な異なる態様で接続ルールに関連付けることが可能である。実施形態によっては、オペレーティングシステムのファイルマネージャサービスにより管理される属性データベース（例えば、オペレーティングシステムのファイルシステムレベルでコンピュータデータファイルに関連付けることができる拡張ファイル属性）に接続ルール又は接続ルールへの参照を格納することにより、コンピュータデータファイルが接続ルールに関連付けられる。実施形態によっては、ソフトウェアアプリケーションファイルのヘッダ（例えば、オペレーティングシステムのプログラムローダサービスによりソフトウェアアプリケーションをメモリ内にロードする態様を記述するヘッダ又はセグメント）に接続ルール又は接続ルールへの参照を格納することにより、ソフトウェアアプリケーションが接続ルールに関連付けられる。実施形態によっては、コンピュータデータファイル又はソフトウェアアプリケーションの識別子により索引付けされた別個のデータベースレコードに接続ルール又は接続ルールへの参照を格納することにより、コンピュータデータファイル又はソフトウェアアプリケーションが接続ルールに関連付けられる。
【００６６】
例示的な実施形態では、コンピュータデータファイル又はソフトウェアアプリケーションは、再使用可能な接続オブジェクトのインスタンスに関連付けられ、その各インスタンスは、１つ又は２つ以上の接続ルール及び１つ又は２つ以上の随意選択的な方法をカプセル化したものである。各接続ルールは、仮想領域及び接続ターゲットの少なくとも一方を指定し、及び随意選択的な一組をなす１つ又は２つ以上の接続条件を含み、該接続条件は、ネットワーク接続の確立、ネットワーク接続の管理、又はネットワーク接続を介して転送されたデータの処理に影響を与えるものである。接続オブジェクト内にカプセル化される類の方法としては、例えば、PRTフレームワーク12の機能を呼び出す方法や、PRTフレームワーク12及びオペレーティングシステムにより使用すること又はグラフィカルインタフェイスでユーザに提示することが可能な接続ルールを露呈させる方法が挙げられる。
【００６７】
コンピュータデータファイル又はソフトウェアアプリケーションのセクジョンは典型的には、コンピュータデータファイル又はソフトウェアアプリケーションの識別子及び関連付けられたセクションの識別子で各レコードを索引付けする接続オブジェクト関連付けデータベース中のそれぞれのレコードにより、それぞれの接続オブジェクトのインスタンスに関連付けられる。図８は、例示的な接続オブジェクト関連付けデータベース106を示しており、該データベース106は、コンピュータデータファイル又はソフトウェアアプリケーションの各セクション毎にそれぞれのレコードを含み、該レコードは、接続オブジェクトデータベース108において索引付けされた１つ又は２つ以上のそれぞれの接続オブジェクトへの１つ又は２つ以上の参照（例えば、O1,O2,O3,O4等）に各セクションを関連付けるものである。
【００６８】
図９は、接続オブジェクトデータベース108の一実施形態110を示しており、該データベース110は、各接続オブジェクト毎に例示的な一組の考え得る属性（又はフィールド）を含み、該属性は、オブジェクトID属性キーにより索引付けされており、該キーの値は、接続オブジェクトの識別子（例えば、O1）に対応するものである。接続オブジェクトデータベース108に含まれる例示的な属性は、領域指定属性、接続ターゲット指定属性、及び接続条件属性である。
【００６９】
領域指定属性は、仮想領域のインスタンスを識別し又はその識別に使用することができる領域指定値を含む。例えば、該領域指定値は、以下の何れかに対応するものとすることが可能である：仮想領域スキーマを識別するスキーマ識別子（例えば、スキーマ_ID）、仮想領域のインスタンスを識別する領域識別子（例えば、領域_ID）、仮想領域インスタンスの識別子を返す対話データベースに関する照会、及び別の領域（例えば、関連付けられたソフトウェアアプリケーション又はコンピュータデータファイルの領域の外側にある仮想領域）への参照。
【００７０】
接続ターゲット指定属性は、１つ又は２つ以上の接続ターゲットを識別し又はその識別に使用することができる１つ又は２つ以上の接続ターゲット指定を含む。例えば、該接続ターゲット指定は、単一の通信者を識別する情報、１グループの通信者を識別する情報、及び少なくとも１つの通信者に関する役割の定義のうちの少なくとも１つを含むことが可能である。該接続ターゲット指定は、１つ又は２つ以上の特定の接続ターゲット（例えば、固定されたネットワーク資源及び特定の通信者）の識別子、及び接続ターゲットの識別子を返す１つ又は２つ以上の照会に対応するものとすることが可能である。例示的な照会として、現在指定された仮想領域インスタンス内にある何れかの接続ターゲットについてのランデブーサービス48に対する照会、現在指定された特定の仮想領域インスタンス内にある特定の接続ターゲットについてのランデブーサービス48に対する照会、１つ又は２つ以上の属性（例えば、特定役割属性値又は特定のグループ識別子値）に関連付けられた接続ターゲットについてのランデブーサービス48に対する照会、及びユーザと対話した（及び随意選択的に１つ又は２つ以上の他の属性に関連付けられた）接続ターゲット（例えば、指定された仮想領域インスタンス又は特定役割属性値又はグループ識別子値等の指定された属性値に関連付けられた接続ターゲット）についての対話サービス50に対する照会が挙げられる。
【００７１】
接続条件属性は、１つ又は２つ以上の接続条件を指定する１つ又は２つ以上の接続条件定義を含む。各接続条件は、関連付けられた接続ルールで指定された仮想領域インスタンス又は接続ターゲットへの接続時にPRTフレームワーク12の動作に影響を与える１つ又は２つ以上のパラメータを指定する。例えば、接続ターゲットは、ネットワーク接続の確立、ネットワーク接続の管理、ネットワーク接続を介して転送されたデータの処理、及びユーザに対する接続関連情報の提示の何れかに影響を与える１つ又は２つ以上のパラメータを指定することが可能である。
【００７２】
幾つかの接続条件は、ネットワーク接続が試行され又は確立される前に満たされるべき現在の接続コンテキストについての述語を記述する。この種の例示的な条件として、ネットワーク接続が許可されるときを限定する接続条件、ネットワーク接続の確立を、指定された資源要件を満たすネットワークノードに限定する条件、ネットワーク接続の確立を、指定されたノード構成要件を満たすネットワークノードに限定する条件、ネットワーク接続の確立を、指定されたネットワークノード場所要件を満たすネットワークノードに限定する条件、及びネットワーク接続の確立を、指定された接続ターゲット可用性要件を満たすときに限定する条件が挙げられる。
【００７３】
他の接続条件として、仮想領域のインスタンス作成挙動についての条件（例えば、ソフトウェアアプリケーションが実行される度に新たな仮想領域スキーマのインスタンスが作成されるべきこと）、及び照会結果を操作する態様についての条件（例えば、ユーザに対してグラフィカルインタフェイスで結果を提示すること又は識別された単一の接続ターゲットのみが照会に応じて返された場合に接続ターゲットに対して自動的に接続すること）が挙げられる。
【００７４】
動作環境の実施態様に応じて、接続オブジェクト及びその構成要素である接続ルールを、様々な異なる機能及びサービスによって、追加し、修正し、又は削除することが可能である。例えば、実施形態によっては、ソフトウェアアプリケーションの開発者、ローカルシステム管理者、エンドユーザ、PRTフレームワーク12、又はネットワークインフラストラクチャサービス環境43における複数のネットワークインフラストラクチャサービスのうちの１つ又は２つ以上によって、接続ルールを追加し、修正し、又は削除することが可能である。
IV．システムアーキテクチャ
Ａ．概説
１．序論
通信者は典型的には、１つのネットワークノードからネットワーク42（図１参照）へ接続し、これは典型的には、汎用コンピュータシステム又は専用通信コンピュータシステム（又はネットワーク対応ビデオゲームコンソール等の「コンソール」）により行われる。該ネットワークノードは、該ネットワークノードとのリアルタイムデータストリーム接続を確立する通信プロセスを実行し、及び典型的にはユーザが入った各仮想領域のビューを提供する視覚化描画プロセスを実行する。実施形態によっては、複数の通信者が単一のネットワークノードを共有することが可能である。
【００７５】
図１０は、処理装置122、システムメモリ124、及び該コンピュータシステム120の様々な構成要素に前記処理装置122を結合させるシステムバス126を含むコンピュータシステム120により実施されるネットワークノードの一実施形態を示している。該処理装置122は、１つ又は２つ以上のデータプロセッサを含むことが可能であり、その各々は様々な市販のコンピュータプロセッサの何れの形を採っても良い。前記システムメモリ124は、コンピュータシステム120の起動ルーチンを含む基本入出力システム（BIOS）を格納するリードオンリメモリ（ROM）及びランダムアクセスメモリ（RAM）を含むことが可能である。前記システムバス126は、メモリバス、周辺機器用バス、又はローカルバスとすることが可能であり、及びPCI、VESA、マイクロチャネル、ISA、及びEISAを含む様々なバスプロトコルの何れかと互換性を有するものとすることが可能である。コンピュータシステム120はまた、永続記憶装置128（例えば、ハードディスクドライブ、フロッピー（登録商標）ディスクドライブ、CD-ROMドライブ、磁気テープドライブ、フラッシュメモリ装置、及びディジタルビデオディスク）を含み、該永続記憶装置128は、システムバス126に接続され、データ、データ構造、及びコンピュータ実行可能命令のための不揮発性の又は永続的な記憶を提供する１つ又は２つ以上のコンピュータ読み取り可能媒体ディスクを収容するものである。
【００７６】
ユーザは、１つ又は２つ以上の入力装置130（例えば、１つ又は２つ以上のキーボード、コンピュータマウス、マイク、カメラ、ジョイスティック、Wii入力装置等の物理モーションセンサ、及びタッチパッド）を使用してコンピュータシステム120と対話する（例えば、コマンド又はデータを入力する）ことが可能である。情報は、ディスプレイコントローラ134により制御されるディスプレイモニタ132上で通信者に対して提示されるグラフィカルユーザインタフェイス（GUI）を介して提示することが可能である。該コンピュータシステム120はまた、他の入出力ハードウェア136（例えば、スピーカ及びプリンタ等の出力用周辺機器）を含むことが可能である。コンピュータシステム120は、ネットワークアダプタ138（ネットワークインタフェイスカード（NIC）とも呼ばれる）を介して他のネットワークノード138,140,142に接続する。
【００７７】
オペレーティングシステム（OS）144（例えば、Microsoft Corporation（Redmond, Washington U.S.A.）から入手可能なWindows XP（登録商標）オペレーティングシステム）、PRTフレームワーク12、ドライバ146（例えば、GUIドライバ）、ネットワークプロトコル148、PRTアウェア（PRT-aware）ソフトウェアアプリケーション150、シム154を介してPRTフレームワーク12に接続するPRT非アウェア（PRT-unaware）ソフトウェアアプリケーション152、及びデータ（例えば、入力データ、出力データ、プログラムデータ、レジストリ156、及び接続ルール32）を含む、多数のプログラムモジュールをシステムメモリ124に格納することが可能である。実施形態によっては、シム154は、拡張モジュール（例えば、プラグイン）又はマクロによって実施される。
２．オペレーティングシステム
オペレーティングシステム144は、コンピュータシステム120上でランタイム実行環境を生成する基本オペレーティングシステムサービスを提供することによってソフトウェアアプリケーションをホストする。オペレーティングシステムにより一般に提供されるタイプの例示的なサービスとして、資源管理、ファイル管理、セキュリティ、認証、検証、通知、及びユーザインタフェイス（例えば、ウィンドウ、メニュー、ダイアログ等）が挙げられる。
【００７８】
コンピュータシステム120の資源（例えば、メモリ、プロセッサ、及び入出力装置）の管理に関するサービスは典型的には、カーネルにより実施される。ファイル管理は、カーネルにより実施することが可能であり、又は別個のファイルシステムマネージャ（例えば、幾つかのMicrosoft Windows（登録商標）オペレーティングシステムで提供されるインストーラブル・ファイルシステム）により実施することが可能である。ファイル（例えば、コンピュータデータファイル又はソフトウェアアプリケーションファイル）をオープンするプロセスにおいて、ファイルシステムマネージャは典型的には、ディスク上のファイルの記憶場所をマッピングするデータベース（例えば、FAT、FAT98、VFAT、MFT、及びCDFS等のファイルアロケーションテーブル）におけるファイルのディスク記憶場所をルックアップする適当なファイルシステムドライバを呼び出す。セキュリティ、認証、検証、通知、及びユーザインタフェイス等の他のオペレーティングシステム機能は、オペレーティングシステムの１つ又は２つ以上の他の構成要素（例えば、幾つかのMicrosoft Windowsオペレーティングシステムにおけるエグゼクティブサービス層）により提供することが可能である。
【００７９】
カーネルにより一般に提供されるタイプの例示的なサービスとして、プロセス管理、メモリ管理、デバイス管理、及びシステムコール操作が挙げられる。プロセス管理は、アプリケーションの実行及びコンピュータシステムのハードウェア要素に対するアプリケーションプログラミングインタフェイス（API）の提供を含む。ソフトウェアアプリケーションの実行プロセスにおいて、カーネルは典型的には、ソフトウェアアプリケーション用にメモリ中のアドレス空間を構成し、ソフトウェアアプリケーションコードを収容したファイルを該アドレス空間にロードし、該ロードされたソフトウェアアプリケーションコードを実行する。メモリ管理は、システムメモリ124に対するソフトウェアアプリケーションのアクセスを管理することを含む。デバイス管理は、デバイスドライバを介したハードウェアデバイスへのアクセスを提供することを含む。システムコール操作は、ユーザモードのソフトウェアアプリケーションに対してカーネルサービスを提示するAPIを提供することを含む。該APIを（例えばプロセス間通信機構及びシステムコールを介して）呼び出すことにより、ソフトウェアアプリケーションは、カーネルからのサービスを要求し、パラメータを渡し、及び該要求に応じて該サービスにより生成された結果を受信することができる。
【００８０】
オペレーティングシステム144は典型的には、ハードウェア及びソフトウェア構成情報、ユーザプリファレンス、及びセットアップ情報を、レジストリ156に格納する。例えば、レジストリ156は典型的には以下の情報を含む：システムのブート及び設定に必要なパラメータ、オペレーティングシステム144の動作を制御するシステム全体のソフトウェア設定、セキュリティデータベース、及びユーザ毎のプロファイル設定。実施形態によっては、接続ルール32が、別個のデータベースの代わりにレジストリ156に格納される。
３．ネットワークプロトコル
ネットワークプロトコル148は、コンピュータシステム120と他のネットワークノードとの間の接続、通信、及びデータ転送を制御し利用可能にする。例示的なタイプのネットワークプロトコルとして、TCP/IP（Transmission Control Protocol/Internet Protocol）、UDP/IP（User Datagram Protocol/Internet Protocol）、及びRTP（Realtime Transport Protocol）が挙げられる。
【００８１】
TCP/IPは、TCP部分およびIP部分を含む。該プロトコルのTCP部分は、１つのメッセージを複数の小さなパケットに分割し、該パケットを通信ネットワークの他端で再び組み立て、及び途中で損失したパケットを再送することにより、伝送機能を提供する。該プロトコルのIP部分は、宛先ネットワーク及び該宛先ネットワークにおけるターゲットノードのアドレスを該データパケットに割り当てることにより、経路指定機能を提供する。TCP/IPを用いて通信される各データパケットは、TCP及びIP情報を含むヘッダ部を含む。IPは、通信スタックの上位層に対してパケット配信の保証を提供しない。一方、TCPは、逐次のパケット配信を保証するコネクション型のエンド・ツー・エンド伝送サービスを提供する。このようにして、TCPプロトコルは、信頼性のあるトランスポート層接続を提供する。
【００８２】
UDPは、信頼性のある配信が必要とされない場合にTCPの代わりに使用することが可能である。例えば、UDP/IPは、リアルタイムオーディオ・ビデオ・トラフィックのために使用することが可能であり、この場合には、再送信する時間がない、又は全体的なデータ品質の劣化が許容可能なものである、といった理由により、損失したデータパケットは単純に無視される。
【００８３】
RTPは、オーディオ及びビデオをネットワーク接続を介して配信するための標準化されたパケットフォーマットを定義するものである。ネットワークノード間でのRTPデータの送受信には、ピア・ツー・ピア・ネットワークフレームワーク、TCPソケットを単独で使用し又はUDPと組み合わせて使用する集中型サーバ、及びマルチキャストプロトコルを含む、様々なネットワークプロトコルを使用することが可能である。
４．デバイスドライバ
デバイスドライバ146は典型的には、他のソフトウェアアプリケーション（例えば、ユーザモードのソフトウェアアプリケーション及びオペレーティングシステム）がコンピュータシステム120に接続されたハードウェアデバイスと対話することを可能にするソフトウェアアプリケーションにより実施される。デバイスドライバは典型的には、ソフトウェアアプリケーションとハードウェアデバイスとの間で転送されるコマンド及びデータを翻訳するために他のソフトウェアアプリケーションにより呼び出すことができる機能のためのAPIを提供する。
５．PRTフレームワーク
PRTフレームワーク12は、PRT API及びPRTカーネルを含む。
【００８４】
PRT APIは、ネットワークノード間のリアルタイム接続がパーベイシブに行われる新しい動作環境パラダイムでのリアルタイムソフトウェアアプリケーションの開発に必要な尽力と時間を大幅に削減する高レベル機能を提示するものである。かかる機能の幾つかは、コンピュータデータファイル又はソフトウェアアプリケーションにおける位置を使用して、仮想領域への接続、仮想領域への入場、通信者及びその他のリアルタイムデータストリームのソース及びシンクへの接続、及び通信者及びネットワーク資源及びサービスに関するプレゼンスデータの判定を制御する。
【００８５】
PRTカーネルは、コンピュータシステム120とその他のネットワークノード128,140,142との間でのリアルタイムデータストリームのスイッチングを制御するサービスを含む。実施形態によっては、PRTカーネルはまた、仮想領域及び該仮想領域内のオブジェクトのビューのディスプレイモニタ132上での表示を制御するプロセスを含む。これに関連して、PRTカーネルは、仮想領域のビューを表示し及び該仮想領域内での対話を通信者が制御することを可能にするために、ドライバ148と通信するオペレーティングシステム機能と連携して、ディスプレイコントローラ134との間のコマンド及びデータ並びにユーザ入力130を翻訳する。
【００８６】
PRT API及びPRTカーネルの実施態様は、如何なる特定のハードウェア、ファームウェア、又はソフトウェア構成にも限定されない１つ又は２つ以上の離散的モジュール又はライブラリ（例えば、ダイナミックリンクライブラリ）を含む。一般に、これらのモジュールは、ディジタル電子回路（例えば、ディジタル信号プロセッサ（DSP）等の特定用途集積回路）、又はコンピュータハードウェア、ファームウェア、デバイスドライバ、若しくはソフトウェアを含む、あらゆるコンピューティング又はデータ処理環境で実施することが可能である。実施形態によっては、複数のモジュールの機能が単一のデータ処理要素中に組み込まれる。実施形態によっては、複数のモジュールのうちの１つ又は２つ以上のそれぞれの機能が、複数のデータ処理要素のそれぞれの組により実行される。実施形態によっては、PRT API及びPRTカーネルの実施態様により実行される方法を実施するための処理命令（例えば、コンピュータソフトウェア等のコンピュータ読み取り可能コード）並びにそれにより生成されるデータは、１つ又は２つ以上のコンピュータ読み取り可能媒体に格納される。これらの命令及びデータを実際に実施するのに適した記憶装置として、例えばEPROM、EEPROM、及びフラッシュメモリ等の半導体メモリデバイス、内蔵ハードディスク及びリムーバブルハードディスク等の磁気ディスク、光磁気ディスク、DVD-ROM/RAM、及びCD-ROM/RAMを含む、あらゆる形態の不揮発性のコンピュータ読み取り可能記憶手段が挙げられる。
６．例示的なシステムレベル機能
PRTフレームワーク12は、コンピュータシステム120とその他のネットワークノード138,140,142との間のネットワーク接続の管理においてネットワークインフラストラクチャサービス環境43と協働する。ネットワーク接続の管理プロセスに含まれる例示的なシステムレベル機能として、ネットワークインフラストラクチャサービス環境43へのログイン及び接続ルールに基づくPRTフレームワーク動作の実行（仮想領域のインスタンスの判定及びランデブーサービス48及び領域サービス46の少なくとも一方を介した接続ターゲットの確認を含む）が挙げられる。
ａ．ネットワークインフラストラクチャサービス環境へのログイン
実施形態によっては、ネットワークインフラストラクチャサービス環境43による認証は、PRTフレームワーク12が起動される度に実行される。該認証プロセスは典型的には、コンピュータシステム120にＰＲＴフレームワーク12がインストールされるときにユーザに対してセキュアに発行された信用情報に基づくものである。該信用情報は典型的には、認証局により署名された証明書である。該証明書は、秘密鍵及び公開鍵を含む。PRTフレームワーク12は、公開鍵のみを含む新たな信用情報を作成し、秘密鍵をコンピュータシステム120上にセキュアに格納する。コンピュータのPRTフレームワーク12は、ユーザにより提供されたパスワードのダイジェストを秘密鍵を使用して暗号化して署名を作成し、該署名をセキュリティサービス44へ送信する。該セキュリティサービス44は、該ダイジェストを回復させ、それをユーザの識別機密情報として格納する。
【００８７】
図１１は、セキュリティサービス44がユーザの識別機密情報を受信した後にPRTフレームワーク12がネットワークインフラストラクチャサービス環境43にログインする方法の一実施形態を示している。この方法によれば、PRTフレームワーク12は、セキュリティサービス44とのセッションを確立して、ユーザの信用情報を該セキュリティサービス44へ送信する（図１１のブロック160）。セキュリティサービス44はPRTフレームワーク12から受信した信用情報の認証を行う（図１１のブロック162）。ユーザの信用情報が認証された場合にはセキュリティサービス44はPRTフレームワーク12へ認証トークンを送り、それ以外の場合にはセキュリティサービス44は認証に失敗したことをPRTフレームワーク12へ通知する（図１１のブロック164）。認証に失敗した場合には（図１１のブロック166）、PRTフレームワーク12はユーザに通知してログインプロセスを停止させる（図１１のブロック168）。ユーザの信用情報の認証に成功した場合には（図１１のブロック166）、PRTフレームワーク12は、セキュリティサービス44から受信したトークンの妥当性を確認する（図１１のブロック170）。トークンの妥当性が確認された場合には（図１１のブロック170）、PRTフレームワーク12は、処理を続行する前にソフトウェアアプリケーション又はオペレーティングシステムコールによるPRT APIの呼び出しを待機する（図１１のブロック172）。それが確認された後、セキュリティサービストークンは、複数のネットワークインフラストラクチャサービスの何れかに対してユーザを認証することができる。実施形態によっては、PRTフレームワーク12は、PRT APIの呼び出しを待機している間にバックグランドタスク（例えば、接続を管理し及びその他のタスクを実行する際のPRTフレームワーク12の応答性を増大させるための対話データ及びその他の資源のキャッシュ処理）を実行することが可能である。
ｂ．接続ルールに基づくPRTフレームワーク動作
i．概説
接続ルールは、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方に関して定義される対話空間内の少なくとも１つのそれぞれのセクションに関連付けることができる。PRTフレームワークは、前記対話空間内の前記少なくとも１つのセクションに関連付けられた現在のフォーカスに少なくとも部分的に基づいて接続ルールを判定し、次いで該接続ルールに従って複数のネットワークノードのうちの１つ又は２つ以上との１つ又は２つ以上のリアルタイムデータストリームの転送を開始することができる。かかる実施形態では、PRTフレームワーク12はPRT APIコールを用いて呼び出され、該PRT APIコールには典型的にはソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方における位置の定義が含まれる。該位置の定義は、例えば、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方により定義される対話空間に対するユーザの現在のフォーカスを判定するPRTアウェアソフトウェアアプリケーションにより提供することが可能である。代替的に、該位置の定義は、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方に関連付けられた（例えば、ソフトウェアアプリケーションファイルのヘッダ内又はコンピュータデータファイルに関連付けられたファイル属性データベース内の）メタデータから又はウィンドウ環境を制御するオペレーティングシステムのユーザインタフェイスサービスから位置の定義を判定するオペレーティングシステムサービス（例えば、プログラムローダサービス又はファイルマネージャサービス）により提供することが可能である。
【００８８】
図１２は、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方における位置定義を含むPRT APIに応じてPRTフレームワーク12により実施される方法の一実施形態を示している。
【００８９】
この方法によれば、PRTフレームワーク12は、ソフトウェアアプリケーション及びコンピュータデータファイルの少なくとも一方に関連付けられた１つ又は２つ以上の接続ルールを読み出す（図１２のブロック174）。実施形態によっては、PRTフレームワーク12は、PRT APIコールに含まれる位置定義に対応するソフトウェアアプリケーション又はコンピュータデータファイルのセクションに関連付けられた少なくとも１つのオブジェクトの識別子について接続オブジェクト関連付けデータベース106（図８）に照会を行う。PRTフレームワーク12は、該接続オブジェクト識別子に対応する接続オブジェクトを接続オブジェクトデータベース108（図８）から読み出し、該接続オブジェクトにおいて定義されている少なくとも１つの接続ルールを判定する。
【００９０】
上記で説明したように、接続ルールは、仮想領域及び接続ターゲットの少なくとも一方を指定し、及びネットワーク接続を管理する際に適当に構成されたソフトウェアアプリケーション又はサービスの挙動を案内する１つ又は２つ以上の随意選択的な接続条件を含むことが可能である。接続ルールにおいて仮想領域が指定されている場合には、PRTフレームワーク12は、該仮想領域指定に基づいて仮想領域インスタンスを判定する（図１２のブロック176）。PRTフレームワーク12は、接続ルールに従って１つ又は２つ以上の接続ターゲットを確認する（図１２のブロック178）。例えば、接続ターゲットは、接続ルールにおけるその指定を介して、又は仮想領域インスタンスとのその関連付けを介して、確認することが可能である（例えば、確認された接続ターゲットとは、仮想領域インスタンス中に現在存在するオブジェクトに関連付けられたターゲットである）。接続ルールが仮想領域を指定せずに１つ又は２つ以上の接続ターゲットを指定している場合には、PRTフレームワーク12は典型的には、該接続ターゲットをランデブーサービス48を介して確認する。接続ルールが仮想領域を指定している場合には、PRTフレームワーク12は典型的には、領域サービス46及びランデブーサービス48の一方又は両方を介して接続ターゲットを確認する。
【００９１】
接続ターゲットが確認された後、PRTフレームワーク12は、該接続ターゲットのうちの１つ又は２つ以上とのそれぞれのリアルタイムデータストリーム接続を開始する（図１２のブロック180）。
ii．ランデブーサービスを介した接続ターゲットの確認
図１３は、ランデブーサービス48を介して接続ターゲットに接続するプロセスにおいてPRTフレームワーク12により実施される方法の一実施形態を示している。
【００９２】
図１３の方法によれば、PRTフレームワーク12は、接続ルールにおける少なくとも１つの接続ターゲットの定義を少なくとも１つのそれぞれのノード接続ハンドルへと解決する（図１３のブロック182）。このプロセスにおいて、PRTフレームワーク12は、セキュリティサービス44から受信したトークンを用いてランデブーサービス48に対してユーザを認証する。ユーザが認証された後、PRTフレームワーク12はランデブーサービス48とのセッションを確立する。PRTフレームワーク12は次いで、接続ルールにおける接続ターゲット指定に対応する各接続ターゲット毎のそれぞれの接続ハンドルの要求をランデブーサービス48に対して送信する。
【００９３】
ランデブーサービス48は、前記接続ターゲット指定に対応する１つ又は２つ以上の接続ターゲットを識別する。接続ルールが、ターゲット識別子を用いて特定の接続ターゲットを指定している場合には、ランデブーサービス48は、該指定されたターゲット識別子に対応する接続ターゲットの状態及び能力要件についてプレゼンスデータベースに照会する。接続ルールが、一組をなす１つ又は２つ以上の属性値を用いて接続ターゲットを指定している場合には、ランデブーサービス48は、該指定された属性値と一致する属性値を有する接続ターゲットに関連付けられている状態及び能力要件についてプレゼンスデータベースに照会する。ランデブーサービス48は、ユーザの能力を、識別された接続ターゲットの各々に関連付けられた能力要件と比較する。ランデブーサービス48は、能力要件が満たされている識別された接続ターゲットの各々の接続ハンドルをPRTフレームワーク12へ送信する。
【００９４】
ランデブーサービス48から照会結果を受信した後、PRTフレームワーク12は、接続ルールに含まれるあらゆる接続条件の適用可能性を判定する。例えば、接続ルールは、ランデブーサービス48により返された照会結果を操作すべき態様に関する条件を含むことができる。例えば、接続条件は、ユーザが通信することを希望する適合する接続ターゲットのうちの１つ又は２つ以上を該ユーザが選択することができるようにPRTフレームワーク12がグラフィカルインタフェイスで該ユーザへ結果を提示すべきことを指定することが可能である。別の実施形態では、接続条件は、照会結果で接続ハンドルが返される接続ターゲットにPRTフレームワーク12が自動的に接続すべきことを指定することが可能である。接続ルールはまた、ネットワーク接続が行われる前に満たされるべき現在の接続コンテキストについての述語を記述する接続条件を含むことが可能である。この種の例示的な条件には、ネットワーク接続が許可されるときを限定する接続条件、ネットワーク接続の確立を、指定された資源要件を満たすネットワークノードに限定する条件、ネットワーク接続の確立を、指定されたノード構成要件を満たすネットワークノードに限定する条件、ネットワーク接続の確立を、指定されたネットワークノード場所要件を満たすネットワークノードに限定する条件、及びネットワーク接続の確立を、指定された接続ターゲット可用性要件を満たすときに限定する条件が含まれる。
【００９５】
図１３を再び参照する。接続ターゲットの指定を少なくとも１つのそれぞれの接続ハンドルへと解決した後（図１３のブロック182）、PRTフレームワーク12は、接続ルールで指定された適用可能なあらゆる接続条件の影響を受ける接続ハンドルに関連付けられたネットワークノードと少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する（図１３のブロック184）。上記で説明したように、PRTフレームワーク12とその他のネットワークノードとの間の接続は、ピア・ツー・ピア接続又はサーバ介在接続とすることが可能である。ピア・ツー・ピア接続に関し、接続ターゲットのネットワークノード及びPRTフレームワーク12は典型的には、互いに認証を行い、次いでリンクを確立し、該リンクを介して該接続ターゲットへ又は該接続ターゲットから前記少なくとも１つのリアルタイムデータストリームを転送する。該リンクは典型的には一方向のものであり、送信側から要求され、及び受信側により許容され又は拒絶される。
iii．領域サービスを介した接続ターゲットの確認
図１４は、領域サービス46を介して仮想領域へ接続するプロセスにおいてPRTフレームワーク12により実施される方法の一実施形態を示している。
【００９６】
図１４の方法によれば、PRTフレームワーク12は、接続ルールにおける仮想領域の指定に基づいて仮想領域のインスタンスを判定する（図１４のブロック186）。このプロセスにおいて、PRTフレームワーク12は、ユーザがセキュリティサービス44から受信したトークンを用いて領域サービス46に対して該ユーザを認証する。ユーザが認証された後、PRTフレームワーク12は該領域サービス46とのセッションを確立する。PRTフレームワーク12は次いで、接続ルールにおいて指定された仮想領域のインスタンスに接続するための要求を領域サービス46へ送信する。
【００９７】
領域サービス46は、接続ルールにおける仮想領域指定に対応する仮想領域のインスタンスを判定する。このプロセスは典型的には、仮想領域が指定される態様（例えば、スキーマ識別子、仮想領域インスタンス識別子、又は１つ又は２つ以上の照会属性による指定）によって決まる。
【００９８】
接続ルールが、スキーマ識別子への参照により仮想領域を指定する場合には、領域サービス46は、該スキーマ識別子に対応するスキーマを読み出し、該読み出されたスキーマのインスタンスを、関連付けられた仮想領域インスタンス識別子を用いて作成する。ユーザの能力が、仮想領域インスタンスに関連付けられた能力要件を満たす場合には、領域サービス46はPRTフレームワーク12へ構成データを返す。該構成データは典型的には、仮想領域インスタンスの定義、及び現在仮想領域インスタンス内にあるオブジェクトの登録簿を含む。
【００９９】
接続ルールが、インスタンス識別子への参照により仮想領域を指定する場合には、領域サービス46は、識別された仮想領域インスタンスの状態を判定する。該仮想領域インスタンスが利用可能（例えば、現在実行中）であり、ユーザの能力が該仮想領域インスタンスに関連付けられた能力要件を満たす場合には、領域サービス46はPRTフレームワーク12へ構成データを返し、この場合、該構成データは典型的には、仮想領域インスタンスの定義、及び現在仮想領域インスタンス内にあるオブジェクトの登録簿を含む。仮想領域インスタンスが利用不能である（例えば、仮想領域インスタンスが現在実行中でなく又は如何なる新たな通信者の接続も受け入れていない）が、ユーザの能力が仮想領域インスタンスに関連付けられた能力要件を満たしている場合には、領域サービス46は、当初のインスタンスのスキーマに基づいて仮想領域の新たなインスタンスを作成し、及びPRTフレームワーク12へ構成データを返すことが可能である。ここで、該構成データは典型的には、新たな仮想領域インスタンスの定義、及び現在該新たな仮想領域インスタンス内にあるオブジェクトの登録簿を含む。
【０１００】
接続ルールが、一組をなす１つ又は２つ以上の照会属性値を用いて仮想領域を指定する場合には、領域サービス46は、指定された属性値と一致する属性を有する全ての仮想領域インスタンスについて対話データベースを照会するための要求を対話サービス50へ送信する。領域サービス46は、該対話サービス50により返された照会結果において識別された仮想領域インスタンスに関連付けられている状態及び能力要件を判定する。領域サービス46は、能力要件が満たされている識別された仮想領域インスタンスのそれぞれの識別子をPRTフレームワーク12へ送信する。領域サービス46から照会結果を受信した後、PRTフレームワーク12は、接続ルールに含まれているあらゆる接続条件の適用可能性を判定する。例えば、接続ルールは、領域サービス46により返された照会結果を操作すべき態様に関する条件を含むことができる。例えば、接続条件は、ユーザが入場することを希望する適合する仮想領域インスタンスを該ユーザが選択することができるようにPRTフレームワーク12がグラフィカルインタフェイスで該ユーザへ結果を提示すべきことを指定することが可能である。別の実施形態では、接続条件は、指定された基準（例えば、最も頻繁に訪問したこと）に基づいてPRTフレームワーク12が複数の仮想領域インスタンスのうちの１つにユーザを自動的に入場させるべきことを指定することが可能である。
【０１０１】
図１４を再び参照する。仮想領域インスタンスを判定した後（図１４のブロック186）、PRTフレームワーク12は、該仮想領域のインスタンスに関連付けられた１つ又は２つ以上のネットワークノードを確認する（図１４のブロック188）。このプロセスにおいて、PRTフレームワーク12は、現在仮想領域インスタンス内にあるオブジェクトに関連付けられているネットワークノードを判定するために、領域サービス46から受信したオブジェクト登録簿を読み出す。実施形態によっては、PRTフレームワーク12はまた、前節で説明したように、ランデブーサービス48を介して接続ルールにおいて指定された接続ターゲットに関連付けられたネットワークノードを確認する。
【０１０２】
PRTフレームワーク12は、仮想領域のインスタンスにより定義されたコンテキストで確認されたネットワークノードのうちの少なくとも１つとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する（図１４のブロック190）。PRTフレームワーク12とその他のネットワークノードとの間の接続は、ピア・ツー・ピア接続又はサーバ介在接続とすることが可能である。ピア・ツー・ピア接続に関し、接続ターゲットのネットワークノード及びPRTフレームワーク12は典型的には、互いに認証を行い、次いでリンクを確立し、該リンクを介して該接続ターゲットへ又は該接続ターゲットから前記少なくとも１つのリアルタイムデータストリームを転送する。該リンクは典型的には一方向のものであり、送信側から要求され、及び受信側により許容され又は拒絶される。
【０１０３】
上記で説明したように、各リアルタイムデータストリーム接続の開始は、接続ルールで指定された適用可能なあらゆる接続条件の影響を受けるものである。例えば、接続ルールは、ネットワーク接続が行われる前に満たされるべき現在の接続コンテキストについての述語を記述する接続条件を含むことが可能である。この種の例示的な条件には、ネットワーク接続が許可されるときを限定する接続条件、ネットワーク接続の確立を、指定された資源要件を満たすネットワークノードに限定する条件、ネットワーク接続の確立を、指定されたノード構成要件を満たすネットワークノードに限定する条件、ネットワーク接続の確立を、指定されたネットワークノード場所要件を満たすネットワークノードに限定する条件、及びネットワーク接続の確立を、指定された接続ターゲット可用性要件を満たすときに限定する条件が含まれる。
Ｂ．例示的なシステムアーキテクチャの実施形態
１．序論
図１５は、コンピュータシステム120の一実施形態200、及びネットワークノード140の一実施形態202を含む、図１０の動作環境の一実施形態を示している。
【０１０４】
ネットワークノード202（ノードC）は領域サービス46をホストする。該領域サービス46は、大域状態情報を維持し、ネットワークノード202は、ネットワークノード200,138,142のためのデータサーバとして働く。領域サービス46により維持される大域状態情報には、仮想領域の現在の仕様204、該仮想領域内にあるオブジェクトの現在の登録簿206、及びネットワークノード202により現在生成されているあらゆる混合ストリームのリスト208が含まれる。
【０１０５】
オブジェクト登録簿206は典型的には、仮想領域内の各オブジェクト毎にそれぞれのオブジェクト識別子（例えば、オブジェクトを一意に識別するラベル）、オブジェクトに関連付けられたネットワークノードとのネットワーク接続の確立を可能にする接続ハンドル（例えば、IPアドレス等のURI）、及びオブジェクトに関連付けられたリアルタイムデータソース及びシンク（例えば、オブジェクトに関連付けられたネットワークノードのソース及びシンク）を識別するインタフェイスデータを含む。オブジェクト登録簿206はまた典型的には、各オブジェクト毎に１つ又は２つ以上の随意選択的な役割識別子を含み、該役割識別子は、通信者又は領域サービス46によりオブジェクトに対して明示的に割り当てることが可能なものであり、又はオブジェクトの他の属性から推論することが可能なものである。実施形態によっては、オブジェクト登録簿206はまた、仮想領域内のオブジェクトに関連付けられたネットワークノードから受信したリアルタイムモーションデータストリームの分析から領域サービス46により求められた仮想領域内のオブジェクトの各々の現在位置を含む。これに関し、領域サービス46は、仮想領域内のオブジェクトに関連付けられたネットワークノードからリアルタイムモーションデータストリームを受信し、該モーションデータに基づいて、仮想領域内に入る、仮想領域から出る、及び仮想領域内を動き回る通信者のアバターその他のオブジェクトを追跡する。領域サービス46は、追跡したオブジェクトの現在位置に従ってオブジェクト登録簿206を更新させる。
【０１０６】
コンピュータシステム200は、PRTフレームワーク12の一実施形態210を含む。その他の機能としては、PRTフレームワーク210は、他のネットワークノードとのリアルタイムデータストリーム接続を管理する。このプロセスにおいて、PRTフレームワーク210は、インタフェイスデータ212、ゾーンリスト214、及び現在仮想領域内にあるオブジェクトの位置216を含む、一組の構成データを維持する。インタフェイスデータ212は、コンピュータシステム200に関連付けられた各オブジェクト毎に、該オブジェクトに関連付けられたリアルタイムデータストリームタイプの全てのソース及びシンクのそれぞれのリストを含む。ゾーンリスト214は、コンピュータシステム200に関連付けられたアバターが現在居住している仮想領域内の全てのゾーンの登録簿である。ユーザが最初に仮想領域に入った際に、PRTフレームワーク210は典型的には、ネットワークノード202からダウンロードした位置初期化情報を用いて現在オブジェクト位置データベース216を初期化する。その後、PRTフレームワーク210は、例えばコンピュータマウス218及びネットワークノード138,202,142のうちの１つ又は２つ以上から受信したリアルタイムモーションデータストリームの分析から求められた仮想領域内のオブジェクトの現在位置で、前記現在オブジェクト位置データベース216を更新させる。PRTフレームワーク210により維持される構成データはまた、オブジェクト登録簿206、混合ストリームリスト208、及び仮想領域仕様204のそれぞれのコピー220,222,224を含み、これらのコピー220,222,224は典型的には、領域サービス46からダウンロードされ、それらデータのローカルキャッシュを表すものとなる。実施形態によっては、オブジェクト位置216は、オブジェクト登録簿220に組み込まれる。
２．オペレーティングシステム
図１６は、オペレーティングシステム144の一実施形態230を示している。
【０１０７】
該オペレーティングシステム230は、OS API 234及びOSカーネル236を含む。OS API 234は、ファイルマネージャサービス238、ユーザインタフェイスサービス240、及びOSカーネル236のサービスにより提供される機能を含む、オペレーティングシステム230により提供される機能を提示する。ファイルマネージャサービス238は、コンピュータデータファイル及びソフトウェアアプリケーションファイルに関するファイル及びメタデータ（例えば、ファイル属性）の格納及び読み出しを管理する。ユーザインタフェイスサービス240は、ディスプレイ132上でのダイアログボックス及びグラフィクスの表示を含むウィンドウ環境を管理する。図１６に示す例示的な実施形態では、OSカーネル236は、プログラムローダサービス242、デバイスマネージャサービス244、及びメモリマネージャサービス246を含む。プログラムローダサービス242は、ソフトウェアアプリケーションの実行を管理する（例えば、ソフトウェアアプリケーションの少なくとも１つの実行可能ファイルをメモリにロードし、該実行可能ファイルを実行すべく準備し、該準備された実行可能ファイルを実行する）。デバイスマネージャサービス244は、デバイスドライバを介したハードウェアデバイスへのアクセスを管理する。メモリマネージャサービス246は、コンピュータシステムメモリ124及び永続記憶装置128に対するアクセスを管理する。
３．PRTフレームワーク
ａ．序論
図１６はまた、ＰＲＴフレームワーク12の一実施形態232を示している。
【０１０８】
該PRTフレームワーク232は、PRT API 250、一組のPRT非カーネルサービス、及び一組のPRTカーネルサービスを含むPRTカーネル252を含む。PRT API 250は、PRTフレームワーク232により提供される全てのサービスを提示する。PRT非カーネルサービスは、接続オブジェクトマネージャサービス253、領域接続サービス254、領域エントリサービス255、ターゲット接続サービス256、及びプレゼンスエクスポートサービス260を含む。それぞれの機能を実行するプロセスにおいて、PRT非カーネルサービス254-260は、必要に応じてPRTカーネル252及びオペレーティングシステム230のサービスを呼び出すことが可能である。PRTカーネルサービスは、ログオンマネージャサービス262、セッションマネージャサービス264、ストリームスイッチングサービス266、ストリームハンドラサービス268、リアルタイムスケジューラサービス270、視覚化エンジンサービス272、及び帯域幅モニタサービス274を含む。それぞれの機能を実行する際に、PRTカーネルサービス262-274もまた、オペレーティングシステム230のサービスを呼び出すことが可能である。サービス254-274の少なくとも幾つかの実施には、従来のオペレーティングシステム機能（例えば、プロセス管理機能、ファイル管理機能、メモリ管理機能、ストレージ管理機能、デバイス管理機能、及びネットワーク管理機能）をカーネルにより提供されるリアルタイム機能（例えば、リアルタイムスケジューリング機能、リアルタイム接続機能、及びリアルタイムデータストリーム操作機能）と統合させることを伴う。このようにして、リアルタイムプリミティブと従来のオペレーティングシステムプリミティブがピアな関係でソフトウェアアプリケーションの開発者に提示される。
ｂ．PRTカーネルサービス
PRTフレームワーク232が起動されるたび（典型的にはコンピュータシステム200が始動された際に）、ログオンマネージャサービス262が、ネットワークインフラストラクチャサービス環境43にログインするためのプロセスを実施する。実施形態によっては、ログオンマネージャサービス262は、図１に関して上述したように、セキュリティサービス44を介してネットワークインフラストラクチャサービス環境43にログインする機能を実行する。ログオンマネージャサービス262はまた典型的には、ネットワークインフラストラクチャサービス環境43からのサインアウトを操作する。
【０１０９】
セッションマネージャサービス264は、コンピュータシステム120とターゲットとなる他のネットワークノードとの間のセッションを管理する。（プロセス間通信機構又はシステムコールを介した）セッションマネージャサービス264の呼び出しに応じて、セッションマネージャサービス264は、ターゲットネットワークノードとのリンクをネゴシエートする。このプロセスにおいて、セッションマネージャサービス264は典型的には、（例えば、セキュリティサービス44から受信したセキュリティトークンに基づいて）ターゲットネットワークノードに対してユーザを認証し、ストリーム転送プロトコルをネゴシエートし、及びストリーム暗号化機構をネゴシエートする。セッションマネージャサービス264とターゲットネットワークノードとの間でのメッセージの送信は、様々な異なるメッセージングパラダイムに従って実行することが可能である。実施形態によっては、メッセージが複数のクラスへとセグメント化されるパブリッシュ／サブスクライブモデルに従って同期的にメッセージが交換され、サブスクライバは１つ又は２つ以上のメッセージクラスへの関心を表現し、パブリッシャはサブスクライブされたクラスに対応するメッセージの送信のみを行う。実施形態によっては、セッションマネージャサービス264はまた、不正終了した接続を再確立するための接続回復機構を提供することが可能である。
【０１１０】
ストリームスイッチングサービス266は、仮想領域により定義されるスイッチングルールに従ってネットワーク接続のスイッチングを管理する。ストリームスイッチングサービス266は、コンピュータシステム200に関連付けされたアバター及びその他のオブジェクトによる仮想領域への出入りを操作する。ストリームスイッチングサービス266はまた、コンピュータシステム200とその他のネットワークノード138,202,142との間のリアルタイムデータストリームを切り換える（例えば、経路指定し、接続し、及び切断する）態様を自動的に判定する。ストリームスイッチングサービス266は、かかる判定を、仮想領域仕様に含まれるスイッチングルール、仮想領域内のアバターその他のオブジェクトの現在位置、及び仮想領域内のアバターその他のオブジェクトに関連付けられたリアルタイムデータストリームタイプに基づいて行う。実施形態によっては、ストリームスイッチングサービス266はまた、かかる判定に（帯域幅モニタサービス274により判定されるような）コンピュータシステム200及びその他のネットワークノード138,202,142の何れかのアップロード及びダウンロード帯域幅の制約を考慮する。更に、ストリームスイッチングサービス266は、イベント（例えば、アップロード又はダウンロード帯域幅の欠陥、及び仮想領域へ入り又は仮想領域から出るための要求）に応じて、定期的に、又はイベントに応じると共に定期的に、現在の一組の接続を再評価する。現在の接続を再評価した結果として、ストリームスイッチングサービス266は、例えば、以下の何れかのアクションを起こすことが可能である：ネットワークノード202からの混合ストリームの要求、ネットワークノード202からの混合ストリームの廃棄、他のネットワークノード138,142のうちの１つ又は２つ以上との１つ又は２つ以上の直接的なリンクの切断、又は他のネットワークノード138,142のうちの１つ又は２つ以上との１つ又は２つ以上の直接的なリンクの形成。
【０１１１】
ストリームハンドラサービス268は、コンピュータシステム200とその他のネットワークノードとの間で転送される各種のリアルタイムデータストリーム（例えば、モーションデータストリーム、オーディオデータストリーム、チャットデータストリーム、ファイル転送データストリーム、及びビデオデータストリーム）を処理するためのそれぞれのストリームハンドラサービスを含む。リアルタイムデータストリーム処理は典型的には、リアルタイムデータストリームに対する変換の適用を含む。実施形態によっては、リアルタイムデータストリームが共有されている仮想領域のコンテキストで処理される際に、ストリームハンドラサービス268が、仮想領域仕様により定義されたストリーム処理設定に従ってリアルタイムデータストリームを処理する。実施形態によっては、複数のストリームハンドラサービス268のうちの１つ又は２つ以上が、一組のストリーム処理オブジェクトを、仮想領域仕様により定義されるストリーム処理設定に従って有向グラフへとまとめる、マネージャを含む。
【０１１２】
実施形態によっては、コンピュータシステム200のローカルなテキスト入力装置（例えばキーボード）から受信した送出テキストメッセージのためのインタフェイス、及び他のネットワークノード138,202,142から受信した到来チャットストリームのためのインタフェイスを提供する、チャットストリームハンドラサービスを含む。チャットストリームハンドラサービスは、通信者によりテキスト入力装置を介して入力されたテキストメッセージをリアルタイムチャットストリームへと処理し、該リアルタイムチャットストリームをデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244が、該チャットストリームを、ネットワークノード42を介して他のネットワークノード138,202,142へ送信することができるフォーマットへと変換する。該チャットストリームハンドラサービスはまた、到来テキストストリームを処理し、該処理済みのテキストストリームをデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244が、該テキストストリームを、ディスプレイモニタ132上に描画できる信号へと変換する。
【０１１３】
実施形態によっては、他のネットワークノード138,202,142から受信した到来オーディオ信号を処理するオーディオストリームハンドラサービスを含む。該オーディオストリームハンドラサービスは、処理済みの到来オーディオ信号をデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244が、該オーディオ信号を、通信者のヘッドセット282のスピーカ278,280により演奏できるフォーマットへと変換する。該オーディオストリームハンドラサービスはまた、ヘッドセット282のマイク284により生成された送出オーディオ信号を処理する。オーディオストリームハンドラサービスは、処理済みの送出オーディオ信号をデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244が、該オーディオ信号を、ネットワーク42を介して他のネットワークノード138,202,142へ送信できるフォーマットへと変換する。
【０１１４】
実施形態によっては、他のネットワークノード138,202,142から受信した到来ビデオ信号を処理するビデオストリームハンドラサービスを含む。該ビデオストリームハンドラサービスは、処理済みの到来ビデオ信号をデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244は、該ビデオ信号を、ディスプレイ132により描画し通信者のヘッドセット282のスピーカ278,280により演奏できるフォーマットへと変換する。該ビデオストリームハンドラサービスはまた、例えばコンピュータシステム200に取り付けられたローカルなカメラにより生成された送出ビデオ信号を処理する。該ビデオストリームハンドラサービスは、処理済みの送出ビデオ信号をデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244が、該ビデオ信号を、ネットワーク42を介して他のネットワークノード138,202,142へ送信できるフォーマットへと変換する。
【０１１５】
実施形態によっては、他のネットワークノード138,202,142から受信した到来モーションデータ信号を処理するモーションデータストリームハンドラサービスを含む。該モーションデータストリームハンドラサービスは、処理済みの到来モーションデータ信号を視覚化エンジンサービス272へ渡す。該視覚化エンジンサービス272は、該モーションデータ信号を利用してディスプレイ132上の共有仮想領域の通信セッションの表現を更新させる。該モーションデータストリームハンドラサービスはまた、ユーザ入力装置により生成された送出モーションデータ信号を処理する。該モーションデータストリームハンドラサービスは、処理済みの送出モーションデータ信号をデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244は、該モーションデータ信号を、ネットワーク42を介して他のネットワークノード138,202,142へ送信できるフォーマットへと変換する。
【０１１６】
実施形態によっては、他のネットワークノード138,202,142から受信したファイル信号を処理するファイル転送ストリームハンドラサービスを含む。該ファイル転送ストリームハンドラサービスは、処理済みのファイル信号をメモリマネージャサービス246へ渡し、該メモリマネージャサービス246が、該ファイル信号を、永続記憶装置128に格納できるフォーマットへと変換する。該ファイル転送ストリームハンドラサービスはまた、前記メモリマネージャサービス246を呼び出して、前記永続記憶装置128からコンピュータデータファイルを読み出し、該コンピュータデータファイルをファイル信号ストリームへと処理し、及び該処理済みのファイル信号をデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244が、該ファイル信号を、ネットワーク42を介して他のネットワークノード138,202,142へ送信できるフォーマットへと変換する。
【０１１７】
前記視覚化エンジンサービス272は、仮想領域及び該仮想領域内にあるあらゆるオブジェクトのビューをディスプレイモニタ132上に提示する。このプロセスにおいて、視覚化エンジンサービス272は、仮想領域仕様データ224、オブジェクト登録簿220、及び現在オブジェクト位置データベース216を読み出す。実施形態によっては、該視覚化エンジンサービス272はまた、仮想領域内に通信者のアバターを描画するのに必要なイメージを含む通信者アバターデータベース248を読み出す。この情報に基づき、視覚化エンジンサービス272は、仮想領域内の通信者のアバターの視点（位置及び向き）から、該仮想領域及び該仮想領域内のオブジェクトの１次元、２次元、又は３次元の表現（すなわちイメージ）を生成する。視覚化エンジンサービス272は次いで、仮想領域の表現をオペレーティングシステム230のデバイスマネージャサービス244へ渡し、該デバイスマネージャサービス244が、ディスプレイモニタ132上での仮想領域のイメージの描画を制御する。実施形態によっては、視覚化エンジンサービス272は、ディスプレイモニタ132上で見ることができる仮想領域の部分について交換し、処理し、及び描画しなければならないデータの量を制限するために、通信者のアバターの視界を判定する。
【０１１８】
ユーザは、入力装置（例えば、コンピュータマウス218）からオペレーティングシステム230のユーザインタフェイスサービス240へコマンドを送信することにより、仮想領域のビュー又は該仮想領域中のアバターの位置を制御することができる。視覚化エンジンサービス272は、現在オブジェクト位置データベース216における更新された位置に従って仮想領域のビュー及び該仮想領域内のオブジェクトの位置を更新し、更新されたバージョンの仮想領域のグラフィック表現を再描画してディスプレイモニタ132上に表示させる。視覚化エンジンサービス272は、定期的に、又は仮想領域内のオブジェクトのうちの１つ又は２つ以上の運動のみに応じて、描画されたイメージを更新させることが可能である。
【０１１９】
リアルタイムスケジューラサービス270は、リアルタイム実行を達成するために、他のPRTカーネルサービス（例えば、ストリームハンドラサービス）により実行されるタスクのスケジューリングを管理する。例えば、実施形態によっては、リアルタイムスケジューラサービス270は、処理性能と性能目標との比較に少なくとも部分的に基づいてタスクのスケジューリングを行う。実施形態によっては、リアルタイムスケジューラサービス270は、PRTフレームワークタスクの実行を管理するカーネルモジュール又はドライバプロセスによって実施される。実施形態によっては、リアルタイムスケジューラサービス270は更に、決定論的実行及び阻止時間が提供されるように、オペレーティングシステムタスク（例えば、スケジューリング及びメモリ管理）及び同期プリミティブ（例えば、セマフォー及び信号及びメッセージ受け渡し機構）の実行を管理する。
【０１２０】
一実施形態では、リアルタイムスケジューラサービス270は、優先順位ベース又はプロポーショナルシェアリングベースのスケジューリングモデルに従い、コンピュータシステム200の資源のそれぞれの資源要件に基づいて、１つ又は２つ以上の実行中のソフトウェアアプリケーション間で該資源を多重化する。かかる実施形態では、各資源は典型的には、タスクが資源にアクセスする順序を制御するそれぞれのスケジューラに関連付けされる。この種の例示的なスケジューラには、処理装置122内の１つ又は２つ以上のプロセッサへのアクセスを多重化するプロセッサスケジューラ、永続記憶装置128の帯域幅を多重化するメモリスケジューラ、及びネットワークアダプタ138のリンク帯域幅を多重化するネットワークスケジューラが含まれる。大域スケジューラは典型的には、個々のスケジューラのポリシーを設定する。
【０１２１】
実施形態によっては、リアルタイムスケジューラサービス270は、ベストエフォート型のリアルタイムスケジューリングプロセスにより実施される。該プロセスは、リアルタイムソフトウェアアプリケーションの限界を満たすようベストを尽くすが、該ソフトウェアアプリケーションがかかる限界を満たすことを保証しないものである。かかる実施形態によっては、リアルタイムスケジューラサービス270は、高優先順位スレッドを獲得し及び複数のストリームハンドラサービス268のうちの１つ又は２つ以上により指定された処理速度（例えば、目標フレームレート）を保証しようとする、ユーザモードプロセスとして動作する。かかる実施形態によっては、リアルタイムスケジューラサービス270は、複数のストリームハンドラサービス268のうちの１つにより実行される少なくとも１つの処理中のタスクの性能を監視し、測定された性能に少なくとも部分的に基づいて、一定の又は適応型の性能目標に関して該処理中のタスクのスケジューリングを行う。例えば、リアルタイムスケジューラサービス270は、デバイスドライバ（例えば、オーディオドライバ）へ供給されるデータの目標フレームレートを満足させるために、監視中のストリームハンドラサービスの設定を適応的に変更することが可能である。
ｃ．PRT非カーネルサービス
図１６に示す例示的な実施形態では、PRTフレームワーク232の非カーネルサービスは、接続オブジェクトマネージャサービス253、領域接続サービス254、領域エントリサービス255、ターゲット接続サービス256、及びプレゼンスエクスポートサービス260を含む。接続オブジェクトマネージャサービス253は、接続オブジェクトを管理し及びPRT APIコールに応じて接続オブジェクトをインスタンス化するための機能を提供する。領域接続サービス254は、仮想領域へ接続するための機能を提供する。領域エントリサービス255は、仮想領域へ入場するための機能を提供する。プレゼンスエクスポートサービス260は、他のネットワークノードへプレゼンス情報をエクスポートするための機能を提供する。PRT非カーネルサービスは典型的には、ソフトウェアアプリケーション、他のPRTフレームワークサービス、及びオペレーティングシステムサービスの何れからのコールによっても呼び出すことが可能である。
【０１２２】
PRTフレームワーク232の非カーネルサービスにより提供される機能については以下の節で説明する。
i．接続オブジェクトの管理
接続オブジェクトマネージャサービス253は、接続オブジェクトの追加、接続オブジェクトの修正、及び接続オブジェクトの削除を含む、接続オブジェクトを管理するための機能を提供する。これに関し、接続オブジェクトマネージャサービス253は、PRT API 250に対する幾つかの接続オブジェクト管理に関連付けられたソフトウェアアプリケーションコールに応じて、オペレーティングシステム230のユーザインタフェイスサービス240を呼び出して、ユーザ（例えば、通信者又はローカルシステム管理者）が接続オブジェクト並びにコンピュータデータファイル及びソフトウェアアプリケーションとの該接続オブジェクトのそれぞれの関連付けの追加、修正、及び削除を行うことを可能にするダイアログボックス及びその類を生成する。
【０１２３】
実施形態によっては、ソフトウェアアプリケーションは、コンピュータデータファイル（例えば、デスクトップパブリッシングソフトウェアアプリケーションにより生成された文書ファイル）又はソフトウェアアプリケーションのセクションに関連付けられた接続オブジェクトをユーザが管理することを可能にするツールを含むことが可能である。かかるツールは、新しい接続オブジェクトインスタンスをコンピュータデータファイル又はソフトウェアアプリケーションに関連付けるためのコマンド、コンピュータデータファイル又はソフトウェアアプリケーションに関連付けられている接続オブジェクトインスタンスを修正するためのコマンド、及びコンピュータデータファイル又はソフトウェアアプリケーションに関連付けられている接続オブジェクトインスタンスを削除するためのコマンドを含むことが可能である。
【０１２４】
新しい接続オブジェクトインスタンスをコンピュータデータファイル又はソフトウェアアプリケーションのセクション（例えば、ユーザの現在の注目対象に対応するセクション）に関連付けるためのコマンドの選択に応じて、ソフトウェアアプリケーションは、接続オブジェクトマネージャサービス253を呼び出すPRT API 250をコールする。接続オブジェクトマネージャサービス253は、新しい接続オブジェクトインスタンスを作成し、該インスタンスをコンピュータデータファイル又はソフトウェアアプリケーションの指定されたセクションに関連付ける。該関連付けは、該指定されたセクションの識別子、及び該コンピュータデータファイル又はソフトウェアアプリケーションの識別子により索引付けされたレコードを接続オブジェクト関連付けデータベース内に作成することにより行われる。接続オブジェクトは、呼び出し側のソフトウェアアプリケーション又はコンピュータデータファイルに関連付けられたデフォルト接続オブジェクトのインスタンスとすることが可能であり、又はPRT APIコールで指定された特定の接続オブジェクトとすることが可能である。新しい接続オブジェクトインスタンスを作成した後、接続オブジェクトマネージャサービス253は、ユーザインタフェイスサービス240を呼び出して、接続オブジェクトインスタンスの属性の値をユーザが指定することを可能にするダイアログボックスを生成する。
【０１２５】
コンピュータデータファイル又はソフトウェアアプリケーションのセクション（例えば、ユーザの現在の注目対象に対応するセクション）に関連付けられた接続オブジェクトインスタンスを修正するためのコマンドの選択に応じて、ソフトウェアアプリケーションは、接続オブジェクトマネージャサービス253を呼び出すPRT API 250をコールする。接続オブジェクトマネージャサービス253は、コンピュータデータファイル又はソフトウェアアプリケーションの各セクションを少なくとも１つのそれぞれの接続オブジェクトインスタンスに関連付ける接続オブジェクト関連付けデータベースに対して照会を行う。該照会は、接続オブジェクトインスタンス識別子を返す。接続オブジェクトマネージャサービス253は、該接続オブジェクト識別子に対応する接続オブジェクトインスタンスを作成する。該接続オブジェクトインスタンスを作成した後、接続オブジェクトマネージャサービス253は、ユーザインタフェイスサービス240を呼び出して、接続オブジェクトインスタンスの属性の値をユーザが追加し、修正し、又は削除することを可能にするダイアログボックスを生成する。
【０１２６】
コンピュータデータファイル又はソフトウェアアプリケーションのセクション（例えば、ユーザの現在の注目対象に対応するセクション）に関連付けられた接続オブジェクトインスタンスを削除するためのコマンドの選択に応じて、ソフトウェアアプリケーションは、接続オブジェクトマネージャサービス253を呼び出すPRT API 250をコールする。接続オブジェクトマネージャサービス253は、コンピュータデータファイル又はソフトウェアアプリケーションの各セクションを少なくとも１つのそれぞれの接続オブジェクトインスタンスに関連付ける接続オブジェクト関連付けデータベースに対して照会を行う。該照会は、コンピュータデータファイル又はソフトウェアアプリケーションの前記セクションに関連付けられた接続オブジェクトインスタンスに対応する接続オブジェクト識別子を返す。接続オブジェクトマネージャサービス253は、ユーザインタフェイスサービス240を呼び出して、識別された接続オブジェクトインスタンスを削除するユーザの意志を確認するダイアログボックスを生成する。
ii．コンピュータデータファイル又はソフトウェアアプリケーションにおける位置に基づくリアルタイム接続のためのPRT APIコールの操作
接続オブジェクトマネージャサービス253はまた典型的には、コンピュータデータファイル又はソフトウェアアプリケーションにおける指定された位置を含むソフトウェアアプリケーション及びオペレーティングシステムサービス（例えば、プログラムローダサービス242及びファイルマネージャサービス238）からの初期のPRT APIコールを操作する。このプロセスでは、接続オブジェクトマネージャサービス253は、コンピュータデータファイル又はソフトウェアアプリケーションの各セクションを少なくとも１つのそれぞれの接続オブジェクトインスタンスに関連付ける接続オブジェクト関連付けデータベースに対して照会を行う。該照会は、PRT APIコールで指定されたコンピュータデータファイル又はソフトウェアアプリケーションにおける位置に関連付けられた接続オブジェクトインスタンスに対応する接続オブジェクト識別子を返す。接続オブジェクトマネージャサービス253は、該接続オブジェクト識別子に対応する接続オブジェクトインスタンスを作成する。該接続オブジェクトインスタンスを作成した後、接続オブジェクトマネージャサービス253は、該作成された接続オブジェクトインスタンスの属性値に従って仮想領域又は接続ターゲットへの接続を確立する１つ又は２つ以上の他の複数のPRTサービスを呼び出す。
iii．仮想領域への接続
図１７は、仮想領域への接続を要求するPRT APIコールに応じてPRTフレームワーク232の領域接続サービス254により実施される方法の一実施形態を示している。
【０１２７】
図１７の方法によれば、領域接続サービス254は、仮想領域の指定を判定する（図１７のブロック290）。実施形態によっては、領域接続サービス254は、仮想領域の指定を含むPRT APIコールを用いて、ソフトウェアアプリケーション、オペレーティングシステムサービス、及びPRTフレームワークサービスの何れかにより呼び出される。例えば、コンピュータデータファイル又はソフトウェアアプリケーションに関連付けられた接続オブジェクトのインスタンスから接続オブジェクトマネージャサービス253が抽出した仮想領域の指定を含むPRT APIコールを用いて、領域接続サービス254を呼び出すことが可能である。
【０１２８】
領域接続サービス254は、指定された仮想領域をホストするネットワークインフラストラクチャサービスとのセッションを確立する（図１７のブロック292）。このプロセスにおいて、領域接続サービス254は、セッションマネージャサービス264を呼び出して、上述した態様で領域サービス46とのセッションを確立する。領域接続サービス254は次いで、指定された仮想領域へ接続するための要求を該領域サービス46へ送信する。該領域サービス46は、領域接続サービス254から受信した要求において指定された仮想領域のインスタンスを判定する。上述したように、このプロセスは典型的には、仮想領域が指定される態様によって（例えば、スキーマ識別子、仮想領域インスタンス識別子、又は１つ又は２つ以上の照会属性によって）決まるものである。仮想領域のインスタンスを判定した後、領域サービス46は、ユーザの能力が該仮想領域インスタンスに関連付けられた能力要件を満たすか否かを判定する。ユーザの能力が該能力要件を満たしている場合には、領域サービス46は、仮想領域インスタンスの現在の状態を記述する状態データ（例えば、現在仮想領域インスタンス内にあるオブジェクト並びに該オブジェクトに関連付けられた通信者の名称のリスト）の可用性を示すメッセージを送信する。
【０１２９】
領域接続サービス254は、状態データを購読する（図１７のブロック294）。購読要求に応じて、領域サービスは、セッションマネージャサービス264と領域サービス46との間のリンクにおける１チャネルへ状態データを発行する。
【０１３０】
領域接続サービス254は、オペレーティングシステム230のユーザインタフェイスサービス240を呼び出して、状態データの人間により知覚可能なビューを描画する（図１７のブロック296）。例えば、領域接続サービス254は、インタフェイスサービス240を呼び出して、ディスプレイ132上の領域内に現在あるオブジェクトに関連付けられた通信者の各々の表現を描画することが可能である。実施形態によっては、通信者は、アイコン、サムネイルイメージ、又は通信者の名称が随意選択的にラベル付けされたその他のグラフィックにより表すことが可能である。実施形態によっては、状態データは、領域接続サービス254の呼び出しをトリガしたソフトウェアアプリケーションのグラフィカルインタフェイスにおいて提示される。実施形態によっては、状態データは、2008年4月4日出願の米国特許出願第61/042714号に記載されているヘッドアップディスプレイ（HUD）の一実施形態において提示される。
iv．仮想領域への入場
仮想領域インスタンスとの接続が確立された後、領域接続サービス254の呼び出しをトリガしたソフトウェアアプリケーションは、仮想領域インスタンス内への入場を要求するための選択肢をユーザへ提供することができ、又はユーザに代わって仮想領域インスタンス内への入場を自動的に要求することができる。
【０１３１】
図１８は、仮想領域内への入場を要求するPRT APIコールに応じてPRTフレームワーク232の領域エントリサービス255、ストリームスイッチングサービス266、及びストリームハンドラサービス268により実施される方法の一実施形態を示している。
【０１３２】
図１８の方法によれば、領域エントリサービス255は、仮想領域をホストするネットワークインフラストラクチャサービスに対して仮想領域に入場する意図を宣言する（図１８のブロック298）。このプロセスにおいて、領域エントリサービス255は、該宣言を含むメッセージを領域サービス46へ送る。次いで該メッセージを、領域サービス46との既存のリンクの１チャネルに送ることが可能であり、又はセッションマネージャ264が領域サービスと確立した新しいリンクを介して送ることが可能である。これに応じて、領域サービス46は、ユーザの能力が仮想領域インスタンスに関連付けられている能力要件を満たしているか否かを判定する。ユーザの能力が該能力要件を満たしている場合には、領域サービス46は領域エントリサービス255へ構成データを返す。該構成データは、仮想領域インスタンスの仕様に従って、仮想領域インスタンスの定義、現在仮想領域インスタンス内にあるオブジェクトの登録簿、及び仮想領域内のオブジェクトに関連付けられた一組のリアルタイムデータストリームソース及びシンクを含むものである。
【０１３３】
ストリームスイッチングサービス266は、仮想領域中の少なくとも１つのオブジェクトにそれぞれ関連付けられた少なくとも１つのリアルタイムデータストリームソースとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する（図１８のブロック300）。このプロセスにおいて、ストリームスイッチングサービス266は、領域サービス46から受信した構成データに基づいて仮想領域のインスタンスに関連付けられた１つ又は２つ以上のネットワークノードを確認する。ストリームスイッチングサービス266は次いで、該確認されたネットワークノードのうちの少なくとも１つとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する。ストリームスイッチングサービス266と他のネットワークノードとの間の接続は、ピア・ツー・ピア接続又はサーバ介在接続とすることが可能である。ピア・ツー・ピア接続に関し、接続ターゲットネットワークノード及びセッションマネージャサービス264は典型的には、互いに認証を行い、次いで前記少なくとも１つのリアルタイムデータストリームを該接続ターゲットへ又は該接続ターゲットから送信するためのリンクを確立する。該リンクは典型的には、一方向であり、送信側により要求され、受信側により許容され又は拒絶される。
【０１３４】
図示の実施形態では、ストリームハンドラサービス268は、開始されたリアルタイムデータストリームを仮想領域インスタンスの仕様における少なくとも１つのストリーム操作定義に従って処理する（図１８のブロック302）。このプロセスにおいて、複数のストリームハンドラサービス268のうちの１つ又は２つ以上は、一組のストリーム処理オブジェクトを仮想領域仕様において定義されるストリーム処理設定に従って有向グラフへとまとめるマネージャを含む。
【０１３５】
図１９は、ユーザが一仮想領域に入ったとき又は一仮想領域のゾーン間の境界を横切ったときに行うべき一組のリアルタイムデータストリーム接続を判定するためにストリームスイッチングサービス266の一実施形態が領域サービス46から受信した構成データを処理する際に該ストリームスイッチングサービス266の一実施形態が従う方法の一実施形態を示している。上記で説明したように、構成データは、仮想領域仕様204（図１５）のコピー及び更新されたオブジェクト登録簿206（図１５）のコピーを含む。実施形態によっては、構成データは更に、領域サービス46により現在生成されているネットワークノード138,142により生成されるリアルタイムデータストリームの混合（又は組み合わせ）を識別する混合ストリームリスト208（図１５参照）を含む。
【０１３６】
ストリームスイッチングサービス266は、領域サービス46から受信したオブジェクト登録簿206のコピーでローカルオブジェクト登録簿220（図１５参照）を初期化する（図１９のブロック304）。ストリームスイッチングサービス266はまた、領域サービス46から受信した混合ストリームリスト208のコピーでローカル混合ストリームリスト222（図１５参照）を初期化する（図１９のブロック306）。ストリームスイッチングサービス266は更に、領域サービス46から受信した仮想領域仕様204のコピーでローカル仮想領域仕様キャッシュ224を初期化する（図１９のブロック308）。
【０１３７】
ストリームスイッチングサービス266は、仮想領域仕様224及び仮想領域インスタンスにおけるユーザのアバターの位置から居住中のゾーンのリスト214（図１５）を構築する（図１９のブロック310）。このプロセスにおいて、ストリームスイッチングサービス266は、仮想領域インスタンス内のアバターの現在位置の座標を含む現在オブジェクト位置データベース216から仮想領域インスタンス内のユーザのアバターの現在位置を読み出す。かかる座標は、コンピュータマウス218等の入力装置から受信したリアルタイムモーションデータストリームから求められる。ストリームスイッチングサービス266は次いで、ユーザのアバターの現在位置を仮想領域仕様204におけるゾーン定義と比較する。ストリームスイッチングサービス266は、ユーザのアバターの現在位置と一致する仮想領域仕様中の全てのゾーンから居住ゾーンリスト214を作成する。例えば、実施形態によっては、居住ゾーンリスト214は、ユーザのアバターの現在位置を含むメッシュを有するゾーンの全てから構成される。
【０１３８】
ストリームスイッチングサービス266は、居住ゾーンリスト214中の各ゾーン毎に定義された一組のターゲットリアルタイムデータストリームタイプと、クライアントのクラスを説明する（例えば、「ボイス機能のみのクライアント」対「フル機能のクライアント」）ターゲットサポート機能リストとを判定する（図１９のブロック312）。ストリームスイッチングサービス266は次いで、仮想領域仕様224で定義されている一組のターゲットリアルタイムデータストリームタイプ、仮想領域インスタンス内のオブジェクトの位置、及びスイッチングルールから、一組の必要とされるリアルタイムデータストリームデータを判定する（図１９のブロック314）。一組のターゲットリアルタイムデータストリームタイプを判定するプロセス及び一組の必要とされるリアルタイムデータストリームデータを判定するプロセスに関する更なる詳細については、米国特許出願第11/923,629号及び同第11/923,634号に記載されており、その何れも2007年10月24日に出願されたものである。
【０１３９】
例示的な実施形態によっては、ストリームスイッチングサービス266は、共有仮想領域インスタンス内の他のネットワークノードとの協働的な通信セッションにユーザが参加することを可能にする一組のリアルタイムデータストリームデータを判定した後（図１９のブロック314）、該ストリームスイッチングサービス266は、必要とされるデータストリームをコンピュータシステム200へ配信することになるリアルタイムデータストリーム接続を判定する。
【０１４０】
これら実施形態の幾つかにおいては、ストリームスイッチングサービス266は、一組のリアルタイムデータストリームをコンピュータシステム200へ配信するリアルタイムデータストリーム操作トポロジーを該コンピュータシステム200の帯域幅能力に少なくとも部分的に基づいて判定する。このプロセスでは、ストリームスイッチングサービス266は、混合されていないリアルタイムデータストリーム及びリアルタイムデータストリームの組み合わせから導出された混合ストリームからリアルタイムデータストリームの各々を受信する個々の形式を判定する。ストリームスイッチングサービス266はまた、リアルタイムストリームの各々が直接的なピア・ツー・ピアネットワーク経路から受信されることとなるネットワーク経路、及び他のネットワークノードのうちの１つ又は２つ以上が介在するネットワーク経路を判定する。ストリーム操作トポロジーが判定された後、ストリームスイッチングサービス266は、該判定されたストリーム操作トポロジーに従って、コンピュータシステム200と他のネットワークノードとの間のリアルタイムデータストリーム接続を確立する。
【０１４１】
図２０は、必要とされるデータストリームデータをコンピュータシステム200へ配信するリアルタイムデータストリーム接続のトポロジーを判定するプロセスにおいてストリームスイッチングサービス266により実施される方法の一実施形態を示している。
【０１４２】
この方法によれば、ストリームスイッチングサービス266は、他のネットワークノードから直接に一組の必要とされるリアルタイムデータストリームデータ316を受信するための十分な帯域幅をコンピュータシステム200が有しているか否かを判定する（図２０のブロック318）。このプロセスにおいて、他のネットワークノードはコンピュータシステム200へリンク要求を送信する。該リンク要求は、コンピュータシステム200により必要とされるそれぞれの組のリアルタイムデータストリームを送信するためのそれぞれの帯域幅要件を示すものである。ストリームスイッチングサービス266は、必要とされる直接接続を確立するために必要な全帯域幅を、帯域幅モニタサービス274（図１６参照）により報告されたコンピュータシステム200に対して現在利用可能なダウンロード帯域幅と比較する。
【０１４３】
該利用可能な帯域幅が該必要な全帯域幅と等しい場合には、ストリームスイッチングサービス266は、必要とされるリアルタイムデータストリームデータを提供する他のネットワークノードとの直接接続を確立する（図２０のブロック320）。このプロセスにおいて、セッションマネージャサービス264は、コンピュータシステム200と１つ又は２つ以上の他のネットワークノード138,202,142との間にソケット（例えば、TCPソケット又は性能が最適化された特殊なリアルタイムソケット）を生成する。該生成されるソケットは典型的には、各リアルタイムデータストリームタイプ毎に、リアルタイムデータストリームを伝送する１つのソケットと、関連付けられたリアルタイムデータストリームパケットの送受信に関する制御情報（例えば、サービス品質（QoS）情報）を伝送するための１つのソケットとを含む。ストリームハンドラサービス268によるリアルタイムデータストリームの処理には、リアルタイムデータストリームの暗号化、リアルタイムデータストリームの記録、及びユーザインタフェイスへの描画及びネットワーク42を介した送信のために必要に応じて視覚化エンジンサービス272、オペレーティングシステムのユーザインタフェイスサービス240、及びオペレーティングシステムのデバイスマネージャサービス244へ処理済みのデータストリームを配送することが含まれる。
【０１４４】
利用可能な帯域幅が前記必要とされる帯域幅よりも小さい場合には（図２０のブロック318）、ストリームスイッチングサービス266は、混合ストリームリスト222（図１５参照）をチェックして、必要とされるリアルタイムデータストリームデータを提供する混合ストリームが領域サービス46により現在生成されているか否かを判定する（図２０のブロック322）。必要とされる混合ストリームが利用可能である場合には、ストリームスイッチングサービス266は、必要とされるリアルタイム混合データストリームのコピーを領域サービス46からコンピュータシステム200へ送信するための接続を領域サービス46と確立する（図２０のブロック324）。必要とされる混合ストリームが利用可能でない場合には、ストリームスイッチングサービス266は、領域サービス46へ混合ストリーム要求を送る（図２０のブロック326）。可能である場合には、領域サービス46は、該混合ストリーム要求に応じて、必要とされる混合ストリームを生成する。
v．接続ターゲットへの接続
図２１は、接続ターゲットへの接続を要求するPRT APIコールに応じてPRTフレームワーク232のターゲット接続サービス256により実施される方法の一実施形態を示している。
【０１４５】
図２１の方法によれば、ターゲット接続サービス256は、少なくとも１つの接続ターゲットの指定を判定する（図２１のブロック330）。実施形態によっては、ターゲット接続サービス256は、接続ターゲット指定を含むPRT APIコールを用いて、ソフトウェアアプリケーション、オペレーティングシステムサービス、及びPRTフレームワークサービスの何れかにより呼び出される。例えば、接続オブジェクトマネージャサービス253は、コンピュータデータファイル又はソフトウェアアプリケーションに関連付けられた接続オブジェクトのインスタンスから接続オブジェクトマネージャサービス253が抽出した接続ターゲット指定を含むPRT APIコールを用いてターゲット接続サービス256を呼び出すことが可能である。
【０１４６】
ターゲット接続サービス256は、複数のネットワークノードについての接続ハンドルの分配を管理するネットワークインフラストラクチャサービスとのセッションを確立する（図２１のブロック332）。このプロセスにおいて、領域ターゲット接続サービス256は、セッションマネージャサービス264を呼び出して、上述した態様でランデブーサービス48とのセッションを確立する。
【０１４７】
ターゲット接続サービス256は、接続ターゲット指定に対応する複数の接続ターゲットのうちの１つ又は２つ以上に接続する意図をネットワークインフラストラクチャサービスに対して宣言する（図２１のブロック334）。ランデブーサービス48は、接続ターゲット指定に対応する１つ又は２つ以上の接続ターゲットを識別する。接続ルールが、ターゲット識別子を用いて特定の接続ターゲットを指定している場合には、ランデブーサービス48は、該指定されたターゲット識別子に対応する接続ターゲットの状態及び能力要件をプレゼンスデータベースに照会する。接続ルールが、一組をなす１つ又は２つ以上の属性値を用いて接続ターゲットを指定する場合には、ランデブーサービス48は、該指定された属性値と一致する属性値を有する接続ターゲットに関連付けられた状態及び能力要件をプレゼンスデータベースに照会する。ランデブーサービス48は、ユーザの能力を、識別された接続ターゲットの各々に関連付けられた能力要件と比較する。ランデブーサービス48は、識別された接続ターゲットのうち能力要件が満たされた各接続ターゲットの接続ハンドルを接続サービス256へ送信する。
【０１４８】
少なくとも１つのそれぞれのネットワークノード接続ハンドルをネットワークインフラストラクチャサービスから受信した後（図２１のブロック336）、ターゲット接続サービス256は、ストリームスイッチングサービス266を呼び出して、少なくとも１つのそれぞれのネットワークノード接続ハンドルに関連付けられたネットワークノードとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する（図２１のブロック338）。ストリームスイッチングサービス266と他のネットワークノードとの間の接続は、ピア・ツー・ピア接続又はサーバ介在接続とすることが可能である。ピア・ツー・ピア接続に関し、接続ターゲットネットワークノード及びセッションマネージャサービス264は典型的には、互いに認証を行い、次いで前記少なくとも１つのリアルタイムデータストリームを接続ターゲットへ又は接続ターゲットから送信するためのリンクを確立する。該リンクは典型的には、一方向であり、送信側により要求され、受信側により許容され又は拒絶される。
vi．プレゼンスのエクスポート
図２２は、コンピュータデータファイル又はソフトウェアアプリケーションの少なくとも一方におけるユーザの現在位置を記述するプレゼンス情報の１つ又は２つ以上の接続ターゲットへのエクスポートを要求するPRT APIコールに応じてプレゼンスエクスポートサービス260により実施される方法の一実施形態を示している。
【０１４９】
図２２の方法によれば、プレゼンスエクスポートサービス260は、少なくとも１つの接続ターゲットの指定を判定する（図２２のブロック340）。実施形態によっては、プレゼンスエクスポートサービス260は、接続ターゲット指定及びユーザの位置の定義を含むPRT APIコールを用いて、ソフトウェアアプリケーション、オペレーティングシステムサービス、及びPRTフレームワークサービスの何れかにより呼び出される。例えば、接続オブジェクトマネージャサービス253は、コンピュータデータファイル又はソフトウェアアプリケーションに関連付けられた接続オブジェクトのインスタンスから接続オブジェクトマネージャサービス253が抽出した接続ターゲット指定を含むPRT APIコールを用いてプレゼンスエクスポートサービス260を呼び出すことが可能である。
【０１５０】
プレゼンスエクスポートサービス260は、ネットワークノード間のプレゼンスデータの交換を管理するネットワークインフラストラクチャサービスとのセッションを確立する（図２２のブロック342）。このプロセスにおいて、プレゼンスエクスポートサービス260は、セッションマネージャサービス264を呼び出して、上述の態様でランデブーサービス48とのセッションを確立する。
【０１５１】
プレゼンスエクスポートサービス260は、ユーザの位置を記述するプレゼンスデータを接続ターゲット指定に対応するネットワークノードのうちの少なくとも１つへエクスポートする意図をネットワークインフラストラクチャサービスに対して宣言する（図２１のブロック334）。該宣言に応じて、ランデブーサービス48は、接続ターゲット指定に対応する１つ又は２つ以上の接続ターゲットを識別する。接続ルールが、ターゲット識別子を用いて特定の接続ターゲットを指定している場合には、ランデブーサービス48は、該指定されたターゲット識別子に対応する接続ターゲットの状態及び能力要件をプレゼンスデータベースに照会する。接続ルールが、一組をなす１つ又は２つ以上の属性値を用いて接続ターゲットを指定している場合には、ランデブーサービス48は、該指定された属性値と一致する属性値を有する接続ターゲットに関連付けられた状態及び能力要件をプレゼンスデータベースに照会する。ランデブーサービス48は、ユーザの能力を、識別された接続ターゲットの各々に関連付けられた能力要件と比較する。ランデブーサービス48は、識別された接続ターゲットのうち能力要件を満たす各接続ターゲットへユーザのプレゼンスデータを送信する。
ｄ．PRTフレームワーク機能の呼び出し
PRTフレームワーク232の機能は、PRT API 250に対するコールによって呼び出される。かかるコールは、様々な異なる態様で生成することが可能である。例示的な実施形態では、PRT API 250に対するコールは、コンピュータシステム200又はリモートネットワークノード上で実行されているソフトウェアアプリケーション、コンピュータシステム200又はリモートネットワークノード上で実行されているオペレーティングシステム、及びネットワークインフラストラクチャサービスの何れかにより行うことが可能である。
【０１５２】
実施形態によっては、ソフトウェアアプリケーションの開発者は、ソフトウェアアプリケーションを実行するためのリアルタイムアプリケーション環境を確立するためにPRT API 250を呼び出すように該ソフトウェアアプリケーションを設計する。これに関し、ソフトウェアアプリケーションは、アプリケーションにおける１つ又は２つ以上の特定の位置で（例えば、起動時又はソフトウェアアプリケーションの特定の機能が呼び出されたときに）又はソフトウェアアプリケーションのセクション間の境界をユーザが越える度にPRT API 250を呼び出すよう設計することが可能である。これらの実施形態では、ソフトウェアアプリケーションは典型的には、該ソフトウェアアプリケーション及び該ソフトウェアアプリケーションによる処理中のコンピュータデータファイルの少なくとも一方における現在のセクションの定義を含むコールを用いてPRT API 250を呼び出す。
【０１５３】
これらの実施形態の幾つかにおいては、ソフトウェアアプリケーションは、少なくとも１つの接続ターゲットとのネットワーク接続を確立するコールを用いてPRT API 250を呼び出すよう構成される。例えば、ソフトウェアアプリケーションは、コンピュータデータファイル又はソフトウェアアプリケーションにおける指定された位置を用いて接続オブジェクトマネージャサービス253を呼び出すことが可能である。接続オブジェクトマネージャサービス253は、コンピュータデータファイル又はソフトウェアアプリケーションにおける位置に関連付けられた接続オブジェクトインスタンスを作成する。該接続オブジェクトは典型的には、仮想領域のそれぞれの指定、及び仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定を含む。ソフトウェアアプリケーションは、仮想領域への入場又は複数の接続ターゲットのうちの１つ又は２つ以上への接続を行うための選択肢をユーザへ提示することが可能である。ユーザが仮想領域への入場又は接続ターゲットへの接続を選択した場合には、ソフトウェアアプリケーションは、仮想領域インスタンスにおける位置に基づいてネットワーク接続を介した接続ターゲットとの少なくとも１つのリアルタイムデータストリームの転送を開始するPRT APIコールを用いてPRT API 250を呼び出す。例えば、該PRT APIコールに応じて、接続オブジェクトマネージャサービス253は、作成された接続オブジェクトインスタンスの属性値に従って仮想領域又は接続ターゲットとの接続を確立する他のPRTサービス（例えば、領域接続サービス254又はターゲット接続サービス256）のうちの１つ又は２つ以上を呼び出す。オペレーティングシステム230及びPRTフレームワーク232の複数のサービスのうちの１つ又は２つ以上が、人間にとって知覚可能な出力（例えば、ディスプレイ132上の視覚的イメージ又はスピーカ278,280を介したオーディオ出力）として表現することができるフォーマットへとリアルタイムデータストリームを処理する。
【０１５４】
実施形態によっては、PRT API 250は、ソフトウェアアプリケーションを呼び出すため又はコンピュータデータファイルをオープンするための、コンピュータオペレーティングシステムにより実施された方法において、呼び出される。
【０１５５】
例えば、PRT API 250は、コンピュータデータファイルをオープンするプロセスにおいてオペレーティングシステム230のファイルマネージャサービス240により呼び出すことができる。実施形態によっては、このプロセスは、コンピュータデータファイルに関連付けられたファイル名拡張子とのソフトウェアアプリケーションの関連付けに基づいて、関連付けられたソフトウェアアプリケーションを識別し、該関連付けられたソフトウェアアプリケーションを実行してコンピュータデータファイルをオープンする、という各ステップを含む。かかる実施形態によっては、オペレーティングシステムのPRTアウェアファイルマネージャサービスは、関連付けられたコンピュータデータファイルがPRT機能を用いて構成されているか否かを示すPRT対応属性を含むファイル属性データベース（例えば、オペレーティングシステムのファイルシステムレベルでコンピュータデータファイルに関連付けることができる拡張ファイル属性）を管理する。コンピュータデータファイルをオープンするための要求に応じて、ファイルマネージャサービス238は、ファイル属性データベースに対して読み出しを行う。PRT対応属性値が、コンピュータデータファイルがPRT機能を用いて構成されていることを示す場合には、ファイルシステムマネージャサービスは、該コンピュータデータファイルの識別子を含むPRT API 250に対するコールを用いて接続オブジェクトマネージャサービス253を呼び出す。これらの実施形態によっては、ファイル属性データベースは更に、コンピュータデータファイル内の初期位置の随意選択的な定義を含む。かかる実施形態では、ファイルマネージャサービス238は、該初期位置定義をPRT APIコールにおいて接続オブジェクトマネージャサービス253へ渡す。接続オブジェクトマネージャサービス253は、該初期位置定義を使用して、コンピュータデータファイルに関連付けられた接続オブジェクトを判定する。
【０１５６】
PRT API 250はまた、ソフトウェアアプリケーションのための初期動作環境を生成するプロセスにおいてオペレーティングシステム230のプログラムローダサービス242により呼び出すことができる。実施形態によっては、このプロセスは、ソフトウェアアプリケーションの少なくとも１つの実行可能ファイルをメモリ内にロードし、該実行可能ファイルを実行すべく準備し、及び該準備された実行可能ファイルを実行する、という各ステップを含む。かかる実施形態によっては、ソフトウェアアプリケーションファイルはまた、PRTアウェアファイルマネージャサービスにより読み出すことができるPRT対応属性に関連付けることが可能である。かかる実施形態では、ソフトウェアアプリケーションを実行するためのユーザの要求は、コンピュータデータファイルの識別子を含み及び初期位置定義を随意選択的に含むPRT API 250に対するコールを用いて接続オブジェクトマネージャサービス253を呼び出すようファイルシステムマネージャサービスをトリガする。実施形態によっては、ソフトウェアアプリケーションの開発者は、PRT対応属性又は接続オブジェクトへの参照をソフトウェアアプリケーションファイルのヘッダ（例えば、オペレーティングシステムのプログラムローダサービスによりソフトウェアアプリケーションをメモリ内にロードする態様を記述するヘッダ又はセグメント）に組み込む。かかる実施形態によっては、ソフトウェアアプリケーションヘッダは更に、ソフトウェアアプリケーションにおける初期位置の随意選択的な定義を含む。かかる実施形態では、ソフトウェアアプリケーションヘッダにおけるコマンドラインは、コンピュータデータファイルの識別子を含み及び初期位置定義を随意選択的に含むPRT API 250に対するコールを用いて接続オブジェクトマネージャサービス253を呼び出すようプログラムローダサービスに命令することができる。ソフトウェアアプリケーションヘッダが、接続オブジェクトデータベースにおいて索引付けされている接続オブジェクトへの参照を格納している場合には、ソフトウェアアプリケーションヘッダ内のコマンドラインは、該接続オブジェクトへの参照を含むコールを用いて接続オブジェクトマネージャサービス253を呼び出すようプログラムローダサービスに命令することができる。
V．例示的なアプリケーション
パーベイシブ・リアルタイムフレームワーク12は、ネットワークノード間のリアルタイム接続がパーベイシブになる新しい動作環境パラダイムを活用することができる広範なリアルタイムソフトウェアアプリケーションの開発をサポートする。
【０１５７】
第１の実施形態では、個人情報マネージャソフトウェアアプリケーション（例えば、Microsoft Outlook（登録商標）ソフトウェアアプリケーション）が、PRTフレームワーク12により提供される機能を活用するよう（当初から又はプラグインモジュール又はマクロを介して）設計される。この実施形態では、個人情報マネージャソフトウェアアプリケーションは、電子メールタスク、カレンダータスク、及び連絡先管理タスクを含む。これらのタスクの各々は、別個のセクションとして定義され、及びそれぞれの接続オブジェクトに関連付けられる。電子メールタスクに対応するセクションは、例えば、指定されたワークグループ内の複数の連絡先のうちの何れかへ又はその何れかから送信された電子メッセージを読むときを指定する接続オブジェクトに関連付けることが可能であり、PRTフレームワーク12は、該ネットワークグループに関連付けられた指定された仮想領域に接続して、該仮想領域内に現在存在しないワークグループ中の連絡先へプレゼンス情報をエクスポートすべきである。
【０１５８】
該第１の実施形態では、ユーザの注目対象が電子メールタスクにおける電子メールメッセージである場合に、個人情報マネージャソフトウェアアプリケーションは、電子メールタスクに対応する位置の定義並びに電子メールメッセージの送信者及び受信者のリストを含むPRT APIコールを用いて、接続オブジェクトマネージャサービス253を呼び出す。接続オブジェクトマネージャサービス253は、前記位置情報に基づいて電子メール機能に関連付けられた接続オブジェクトを読み出す。接続オブジェクトマネージャサービス253は、領域接続サービス254を呼び出し、該領域接続サービス254は、ユーザのプリファレンス及び仮想領域の能力要件の影響下にある接続オブジェクトにおいて指定されている仮想領域への接続を試行する。接続オブジェクトマネージャサービス253はまた、ターゲット接続サービス256を呼び出し、該ターゲット接続サービス256は、ユーザのプリファレンス及び仮想領域の能力要件の影響下にある仮想領域内に現在存在しないワークグループ中の連絡先へのプレゼンス情報のエクスポートを試行する。このようにして、個人情報マネージャソフトウェアアプリケーションの電子メールタスクは、該電子メールタスクにおけるユーザの注目対象に基づいて関連付けられた連絡先とのリアルタイム接続を該ユーザに提供するために、PRTフレームワーク12の機能を活用することができる。個人情報マネージャソフトウェアアプリケーションの他のタスクもまた、PRTフレームワーク12の機能を活用するよう設計することが可能である。
【０１５９】
第２の実施形態では、ウェブブラウザソフトウェアアプリケーション（例えば、Microsoft Internet Explorer（登録商標）ソフトウェアアプリケーション、Firefox（登録商標）ソフトウェアアプリケーション、及びSafari（登録商標）ソフトウェアアプリケーション）が、PRTフレームワーク12により提供される機能を活用するよう（当初から又はプラグインモジュール又はマクロを介して）設計される。この実施形態では、ウェブブラウザソフトウェアアプリケーションは、ユーザがトップレベルウィンドウを切り換えることを必要とすることなく異なるウェブページを切り換えることを可能にするタブ付きドキュメントインタフェイスを含む。１つ又は２つ以上のウェブページ（例えば、デフォルトのホームウェブページ及びカスタマーサービスウェブページ）はそれぞれの接続オブジェクトに関連付けられている。ホームウェブページに対応するセクションは、例えば、ウェブブラウザソフトウェアアプリケーションのタブ内でホームウェブページを見るときを指定する接続オブジェクトに関連付けることが可能であり、PRTフレームワーク12は、ユーザに関連付けられた指定された仮想領域（例えば、ユーザの個人的な仮想領域又はユーザのワークグループに関連付けられた仮想領域）へ接続すべきである。カスタマーサービスウェブページに対応するセクションは、ウェブブラウザソフトウェアアプリケーションのタブ内でカスタマーサービスウェブページを見るときを指定する接続オブジェクトに関連付けることが可能であり、PRTフレームワーク12は、指定されたカスタマーサービス仮想領域に接続し、及びカスタマーサービスの代表者に対応する役割属性値を有する該カスタマーサービス仮想領域内のあらゆる通信者に自動的に接続すべきである。
【０１６０】
該第２の実施形態では、ユーザの注目対象がデフォルトのホームページを提示しているタブである場合に、ウェブブラウザソフトウェアアプリケーションは、該デフォルトのホームページドキュメントに対応する位置の定義を含むPRT APIコールを用いて、接続オブジェクトマネージャサービス253を呼び出す。該接続オブジェクトマネージャサービス253は、前記位置の定義に基づいてデフォルトのホームページドキュメントに関連付けられた接続オブジェクトを読み出す。接続オブジェクトマネージャサービス253は、領域接続サービス254を呼び出し、該領域接続サービス254は、ユーザのプリファレンス及び仮想領域の能力要件の影響下にある接続オブジェクトにおいて指定されている仮想領域への接続を試行する。
【０１６１】
ユーザの注目対象がカスタマーサービスウェブページを提示しているタブである場合には、ウェブブラウザソフトウェアアプリケーションは、カスタマーサービスウェブページドキュメントに対応する位置の定義を含むPRT APIコールを用いて、接続オブジェクトマネージャサービス253を呼び出す。該接続オブジェクトマネージャサービス253は、該位置の定義に基づいてデフォルトのホームページドキュメントに関連付けられた接続オブジェクトを読み出す。接続オブジェクトマネージャサービス253は、領域接続サービス254を呼び出し、該領域接続サービス254は、ユーザのプリファレンス及び仮想領域の能力要件の影響下にある接続オブジェクトにおいて指定されている仮想領域への接続を試行する。仮想領域内の現在の居住者の何れかが、カスタマーサービスの代表者の役割属性値を有する場合には、接続サービス254が領域エントリサービス255を呼び出し、該領域エントリサービス255が、ユーザのプリファレンス及び仮想領域の能力要件の影響下にある仮想領域への入場を試行する。該仮想領域への入場の試行が成功した場合には、ストリームスイッチングサービス266は、仮想領域内のオブジェクト（例えば、アバター）に関連付けられたネットワークノードとの接続を自動的に開始する。
【０１６２】
第３の実施形態では、スプレッドシートソフトウェアアプリケーション（例えば、Microsoft Excel（登録商標）ソフトウェアアプリケーション）が、PRTフレームワーク12により提供される機能を活用するよう（当初から又はプラグインモジュール又はマクロを介して）設計される。この実施形態では、スプレッドシートソフトウェアアプリケーションは、ユーザがトップレベルウィンドウを切り換えることを必要とすることなく異なるワークシートを切り換えることを可能にするタブ付きワークシートインタフェイスを含む。１つ又は２つ以上のワークシート（例えば、株価分析ワークシート）はそれぞれの接続オブジェクトに関連付けられる。株価分析ワークシートに対応するセクションは、例えば、スプレッドシートソフトウェアアプリケーションのタブ内で株価分析ワークシートを見るときを指定する接続オブジェクトに関連付けることが可能であり、PRTフレームワーク12は、ユーザに関連付けられた指定された仮想領域（例えば、特定のタイプの財務分析に関連付けられた仮想領域）へ接続すべきであり、及び特定のデータ又はデータタイプ（例えば、株価分析ワークシートに列挙された一組の株についてのリアルタイム株価情報）の要求を用いて、指定されたデータソース接続ターゲット（例えば、オンライン株価情報サービス）へ接続すべきである。
【０１６３】
該第３の実施形態では、ユーザの注目対象が株価分析ワークシートを提示しているタブである場合に、スプレッドシートソフトウェアアプリケーションは、該株価分析ワークシートに対応する位置の定義を含むPRT APIコールを用いて、接続オブジェクトマネージャサービス253を呼び出す。該接続オブジェクトマネージャサービス253は、前記位置の定義に基づいて株価分析ワークシートに関連付けられた接続オブジェクトを読み出す。接続オブジェクトマネージャサービス253は、領域接続サービス254を呼び出し、該領域接続サービス254は、ユーザのプリファレンス及び仮想領域の能力要件の影響下にある接続オブジェクトにおいて指定されている仮想領域への接続を試行する。接続オブジェクトマネージャサービス253はまた、ターゲット接続サービス256を呼び出し、該ターゲット接続サービス256は、指定されたデータソースへの接続及び要求されたデータ又はデータタイプの読み出しを試行する。該接続の試行が成功した場合には、株価分析ワークシートにより又は仮想領域により提供することが可能なリアルタイム処理仕様に従ってリアルタイム株価情報の変換を行うべくリアルタイム処理オブジェクトの有向グラフを作成するようにストリームハンドラサービス268を構成することが可能である。
VI．結論
本書で説明した実施形態は、ネットワークノード間の接続がパーベイシブである新たな動作環境パラダイムでのリアルタイムソフトウェアアプリケーションの開発に必要となる尽力及び時間を大幅に削減する高レベル機能を有するリアルタイムソフトウェアアプリケーションの実行をサポートする、パーベイシブ・リアルタイムフレームワークを提供するものである。該パーベイシブ・リアルタイムフレームワークは、通信者、仮想領域、及びその他のネットワーク資源に接続し、並びにそれら接続をユーザ入力に応じてスイッチングするという複雑なタスクを扱い、これにより、ソフトウェアアプリケーションの開発者が高レベルリアルタイムソフトウェアアプリケーション機能の開発に集中することが可能となる。
【０１６４】
他の実施形態は、特許請求の範囲内のものである。
【０１６５】
以下においては、本発明の種々の構成要件の組み合わせからなる例示的な実施形態を示す。
１．ソフトウェアアプリケーション及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた接続ルール(32)における仮想領域の指定に基づいて該仮想領域のインスタンス(56)を判定し、
該仮想領域のインスタンス(56)に関連付けられた１つ又は２つ以上のネットワークノード(16-26)を確認し、
前記仮想領域のインスタンス(56)により定義されるコンテキストで前記ネットワークノード（16-26）のうちの少なくとも１つと少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する、
という各ステップを含む、コンピュータにより実施される方法。
２．前記判定ステップ、前記確認ステップ、及び前記開始ステップが、コンピュータオペレーティングシステムにより実施されるソフトウェアアプリケーション(28)を呼び出す方法においてコンピュータ(60)上で実行される、前項１に記載の方法。
３．前記コンピュータオペレーティングシステムにより実施される方法が、前記ソフトウェアアプリケーション(28)の実行を含む動作を行う１つ又は２つ以上の方法を含む１つ又は２つ以上のオブジェクトのインスタンスを作成するステップを更に含む、前項２の記載の方法。
４．前記ソフトウェアアプリケーション(28)の実行が、該ソフトウェアアプリケーション(28)の少なくとも１つの実行可能ファイルをメモリ内にロードし、該実行可能ファイルを実行すべく準備し、該準備された実行可能ファイルを実行する、という各ステップを含む、前項３に記載の方法。
５．前記判定ステップ、前記確認ステップ、及び前記開始ステップが、コンピュータオペレーティングシステムにより実施されるコンピュータデータファイル(30)をオープンする方法においてコンピュータ(60)上で実行される、前項１に記載の方法。
６．前記コンピュータオペレーティングシステムにより実施される方法が、コンピュータデータファイル(30)をそれに関連付けられたソフトウェアアプリケーション(28)を用いてオープンするステップを含む動作を実行する１つ又は２つ以上の方法を含む１つ又は２つ以上のオブジェクトのインスタンスを作成するステップを更に含む、前項５の記載の方法。
７．前記コンピュータデータファイル(30)をオープンするステップが、該コンピュータデータファイル(30)に関連付けられたファイル名拡張子とのソフトウェアアプリケーション(28)の関連付けに基づいて、該コンピュータデータファイル(30)に関連付けられたソフトウェアアプリケーション(28)を識別し、該関連付けられたソフトウェアプリケーション(28)を実行して該コンピュータデータファイル(30)をオープンする、という各ステップを含む、前項６に記載の方法。
８．前記判定ステップ、前記確認ステップ、及び前記開始ステップが、アプリケーションプログラミングインタフェイス（API）の少なくとも１回の呼び出しに応じて該APIを実施することによりコンピュータ上で実行される、前項１に記載の方法。
９．前記APIの少なくとも１回の呼び出しに応じて、前記判定ステップ、前記確認ステップ、及び前記開始ステップを含む動作を実行する１つ又は２つ以上の方法を含む１つ又は２つ以上のオブジェクトのインスタンスを作成する、前項８に記載の方法。
１０．前記判定ステップが、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた１つ又は２つ以上の接続オブジェクトを呼び出すステップを含み、該接続オブジェクトの各々が、それぞれの組をなす１つ又は２つ以上の接続ルールを含む、前項１に記載の方法。
１１．前記呼び出しステップが、１つ又は２つ以上のレコードを含むデータベース(106)に照会するステップを含み、該レコードの各々が、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方を前記接続オブジェクトのうちの少なくとも１つに関連付けする、前項１０に記載の方法。
１２．前記照会ステップが、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方の識別子を含む照会を用いて前記データベース(106)に照会するステップを含む、前項１１に記載の方法。
１３．前記照会が、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関する位置の定義を更に含む、前項１２に記載の方法。
１４．前記判定ステップが、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関する位置によって前記接続ルール(32)を索引付けするデータベースに照会するステップを含む、前項１に記載の方法。
１５．前記接続ルール(32)が、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関して定義された対話空間における少なくとも１つのそれぞれのセクションの定義に関連付けられたものであり、前記開始ステップが、該接続ルール(32)及び前記対話空間における特定の位置に従って複数のネットワークノードのうちの１つ又は２つ以上との１つ又は２つ以上のリアルタイムデータストリームの転送を開始するステップを含む、前項１に記載の方法。
１６．前記対話空間に関するユーザの現在の焦点の定義を受信するステップを更に含み、
前記判定ステップが、前記対話空間における少なくとも１つのセクションに関する現在の焦点に少なくとも部分的に基づいて前記接続ルール(32)を判定するステップを含み、
前記確認ステップが、前記現在の焦点に関連付けられた前記ネットワークノード(16-26)のうちの１つ又は２つ以上を確認するステップを含み、
前記開始ステップが、前記現在の焦点に関連付けられていることが判定された１つ又は２つ以上の接続ルール(32)に従って、前記現在の焦点に関連付けられていることが確認された前記ネットワークノード(16-26)のうちの１つ又は２つ以上とのリアルタイムデータストリームのそれぞれの転送を開始するステップを含む、
前項１５に記載の方法。
１７．前記判定ステップが、仮想領域の指定を該仮想領域のインスタンス(56)の定義へと少なくとも部分的に解決するよう動作することが可能なネットワークインフラストラクチャサービス(43)へ仮想領域の指定を渡すステップを含む、前項１に記載の方法。
１８．前記接続ルール(32)が、１つ又は２つ以上の接続ターゲットの接続ターゲット指定を更に含み、前記確認ステップが、該指定を、１つ又は２つ以上のネットワークノード(16-26)のうちの少なくとも１つのそれぞれの接続ハンドルへと解決するステップを含む、前項１に記載の方法。
１９．前記解決ステップが、１つ又は２つ以上のネットワークノードの接続ハンドルの分配を管理するネットワークインフラストラクチャサービス(43)へ接続ターゲット指定を渡すステップを含む、前項１８に記載の方法。
２０．前記接続ターゲット指定が、単一の通信者を識別する情報、１グループの通信者を識別する情報、及び少なくとも１つの通信者に関連付けられた役割の定義のうちの少なくとも１つを含む、前項１８に記載の方法。
２１．前記確認ステップが、仮想領域に入る意図をネットワークインフラストラクチャサービス(43)に宣言し、該ネットワークインフラストラクチャサービス(43)から仮想領域内のオブジェクトに関連付けられたネットワークノードのリストを受信する、という各ステップを含む、前項１に記載の方法。
２２．前記接続ルール(32)が１つ又は２つ以上の接続条件を更に含み、該１つ又は２つ以上の接続条件が満たされたというそれぞれの判定に応じて少なくとも１つのネットワーク接続を確立するステップを更に含む、前項１に記載の方法。
２３．前記接続ルール(32)が、前記確立が許可されるときを限定する接続条件を含む、前項２２に記載の方法。
２４．前記接続ルール(32)が、指定された資源要件を満たすネットワークノードに前記確立を限定する条件を含む、前項２２に記載の方法。
２５．前記接続ルール(32)が、指定されたノード構成要件を満たすネットワークノードに前記確立を限定する条件を含む、前項２２に記載の方法。
２６．複数の前記接続ルール(32)のうちの少なくとも１つが、指定されたネットワークノード場所要件を満たすネットワークノードに前記確立を限定する条件を含む、前項２２に記載の方法。
２７．複数の前記接続ルール(32)のうちの少なくとも１つが、指定された接続ターゲット可用性要件を満たすときに前記確立を限定する条件を含む、前項２２に記載の方法。
２８．リアルタイムデータストリームを人間により知覚可能な出力へと処理するステップを更に含む、前項１に記載の方法。
２９．性能目標に関する前記処理ステップの測定された性能に少なくとも部分的に基づいて該処理ステップにおいて実行される少なくとも１つのタスクをスケジューリングするステップを更に含む、前項２８に記載の方法。
３０．前記判定ステップ、前記確認ステップ、及び前記開始ステップが、少なくとも１つのコンピュータ(60)上で実行される、前項１に記載の方法。
３１．コンピュータ(60)により実行された際に、
ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた接続ルール(32)における仮想領域の指定に基づいて該仮想領域のインスタンス(56)を判定し、
該仮想領域のインスタンス(56)に関連付けられた１つ又は２つ以上のネットワークノード(16-26)を確認し、
前記仮想領域のインスタンス(56)により定義されるコンテキストで前記ネットワークノードのうちの少なくとも１つとの少なくとも１つのネットワーク接続を介した少なくとも１つのリアルタイムデータストリームの転送を開始する、
という各ステップを含む動作を前記コンピュータ(60)に実行させるコンピュータ読み取り可能命令を格納した少なくとも１つのコンピュータ読み取り可能媒体(124,128)。
３２．コンピュータ読み取り可能命令を格納するコンピュータ読み取り可能メモリ(124,128)と、
該メモリに接続されたデータ処理装置(122)であって、前記命令を実行するよう動作可能であり、及び該命令の実行に少なくとも部分的に基づいて、
ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた接続ルール(32)における仮想領域の指定に基づいて該仮想領域のインスタンス(56)を判定し、
該仮想領域のインスタンス(56)に関連付けられた１つ又は２つ以上のネットワークノード(16-26)を確認し、
前記仮想領域のインスタンス(56)により定義されるコンテキストで前記ネットワークノードのうちの少なくとも１つとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する、
という各ステップを含む動作を実行するよう動作可能である、データ処理装置(122)と
を含む装置。
３３．ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた接続ルール(32)における少なくとも１つの接続ターゲットの指定を、少なくとも１つのそれぞれのネットワークノード接続ハンドルへと解決し(182)、
該少なくとも１つのそれぞれのネットワークノード接続ハンドルにそれぞれ関連付けられた少なくとも１つのネットワークノードとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する(184)、
という各ステップを含む、コンピュータにより実施される方法。
３４．前記解決ステップ(182)及び前記開始ステップ(184)が、コンピュータオペレーティングシステムにより実施されるソフトウェアアプリケーション(28)を呼び出す方法において、１つのコンピュータ(60)上で実行される、前項３３に記載の方法。
３５．前記解決ステップ(182)及び前記開始ステップ(184)が、コンピュータオペレーティングシステムにより実施されるデータファイル(30)をオープンする方法において、１つのコンピュータ(60)上で実行される、前項３３に記載の方法。
３６．前記解決ステップ(182)及び前記開始ステップ(184)が、アプリケーションプログラミングインタフェイス（API）の少なくとも１回の呼び出しに応じて該APIを実施することにより１つのコンピュータ上で実行される、前項３３に記載の方法。
３７．前記APIの少なくとも１回の呼び出しに応じて、前記解決ステップ(182)及び前記開始ステップ(184)を含む動作を実行する１つ又は２つ以上の方法を含む１つ又は２つ以上のオブジェクトのインスタンスを作成する、前項３６に記載の方法。
３８．前記開始ステップ(184)が、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた仮想領域により定義されたコンテキストで実行される、前項３３に記載の方法。
３９．前記判定ステップが、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関する位置により索引付けされた接続ルール(32)を含むデータベースに照会するステップを含む、前項３３に記載の方法。
４０．前記接続ルール(32)が、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関して定義された対話空間における少なくとも１つのそれぞれのセクションの定義に関連付けられており、前記開始ステップが、前記接続ルール(32)及び前記対話空間における特定の位置に従って複数のネットワークノード(16-26)のうちの１つ又は２つ以上との１つ又は２つ以上のリアルタイムデータストリームの転送を開始するステップからなる、前項３３に記載の方法。
４１．前記解決ステップ(182)が、１つ又は２つ以上のネットワークノードについての接続ハンドルの分配を管理するネットワークインフラストラクチャサービスへ接続ターゲット指定を渡し、該ネットワークインフラストラクチャサービスから少なくとも１つのそれぞれのネットワークノード接続ハンドルを受信する、という各ステップを含む、前項３３に記載の方法。
４２．前記接続ターゲット指定が、単一の通信者を識別する情報、１グループの通信者を識別する情報、及び少なくとも１つの通信者に関連付けられた役割の定義のうちの少なくとも１つを含む、前項３３に記載の方法。
４３．前記接続ルール(32)が１つ又は２つ以上の接続条件を更に含み、該１つ又は２つ以上の接続条件が満たされたというそれぞれの判定に応じて少なくとも１つのネットワーク接続を確立するステップを更に含む、前項３３に記載の方法。
４４．コンピュータ(60)により実行された際に、
ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた接続ルール(32)における少なくとも１つの接続ターゲットの指定を、少なくとも１つのそれぞれのネットワークノード接続ハンドルへと解決し(182)、
該少なくとも１つのそれぞれのネットワークノード接続ハンドルにそれぞれ関連付けられた少なくとも１つのネットワークノードとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する(184)、
という各ステップを含む動作を前記コンピュータ(60)に実行させるコンピュータ読み取り可能命令を格納した少なくとも１つのコンピュータ読み取り可能媒体(124,128)。
４５．コンピュータ読み取り可能命令を格納するコンピュータ読み取り可能メモリ(124,128)と、
該メモリに接続されたデータ処理装置(122)であって、前記命令を実行するよう動作可能であり、及び該命令の実行に少なくとも部分的に基づいて、
ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方に関連付けられた接続ルール(32)における少なくとも１つの接続ターゲットの指定を、少なくとも１つのそれぞれのネットワークノード接続ハンドルへと解決し(182)、
該少なくとも１つのそれぞれのネットワークノード接続ハンドルにそれぞれ関連付けられた少なくとも１つのネットワークノードとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する(184)、
という各ステップを含む動作を実行するよう動作可能である、データ処理装置(122)と
を含む装置。
４６．接続ルール(32)に基づくリアルタイムデータストリームのネットワーク接続の管理を含む動作を実行する機能を宣言するアプリケーションプログラミングインタフェイス（API）を発行し(34)、該接続ルール(32)の各々が、仮想領域のそれぞれの指定と該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定との少なくとも一方を含み、
該APIの呼び出しに応じて、ソフトウェアアプリケーション(30)及びコンピュータデータファイル(28)の少なくとも一方と仮想領域における少なくとも１つの位置とに関連付けられた複数の接続ルール(32)のそれぞれに基づいて、少なくとも１つのネットワークノードとのリアルタイムデータストリーム接続を管理する(38)、
という各ステップを含む、コンピュータにより実施される方法。
４７．前記管理ステップ(38)が、ソフトウェアアプリケーション(28)による前記APIの呼び出しに応じて、及びソフトウェアアプリケーション(28)と該ソフトウェアアプリケーション(28)が操作可能なコンピュータデータファイル(30)との少なくとも一方に関連付けられた接続ルール(32)に基づいて実行される、前項４６に記載の方法。
４８．前記管理ステップ(38)が、ソフトウェアアプリケーション(28)の少なくとも１つの実行可能ファイルをメモリ内へロードし、該実行可能ファイルを実行すべく準備し、該準備された実行可能ファイルを実行する、という各ステップを含む動作を実行するローダオペレーティングシステム構成要素による前記APIの呼び出しに応じて実行される、前項４６に記載の方法。
４９．前記管理ステップ(38)が、コンピュータデータファイル(30)をオープンするステップを含む動作を実行するファイルマネージャオペレーティングシステム構成要素による前記APIの呼び出しに応じて実行される、前項４６に記載の方法。
５０．前記管理ステップ(38)が、リアルタイムデータストリーム接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始し、及び該リアルタイムデータストリームを処理する、という各ステップを含む、前項４６に記載の方法。
５１．前記管理ステップ(38)が、それぞれの接続ルール(32)における仮想領域の指定に基づいて該仮想領域のインスタンス(56)を判定し、該仮想領域のインスタンス(56)に関連付けられた１つ又は２つ以上のネットワークノード(16-26)を確認し、及び該仮想領域のインスタンス(56)により定義されるコンテキストでリアルタイムデータストリームの転送を開始する、という各ステップを含む、前項５０に記載の方法。
５２．前記管理ステップ(38)が、それぞれの接続ルール(32)における少なくとも１つの接続ターゲットの指定を、少なくとも１つのそれぞれのネットワークノード接続ハンドルへと解決し、該少なくとも１つのそれぞれのネットワークノード接続ハンドルに関連付けられたネットワークノードとのリアルタイムデータストリームの転送を開始する、という各ステップを含む、前項５０に記載の方法。
５３．前記処理ステップが、コンピュータハードウェア装置とのインタフェイスを提供するドライバを介してリアルタイムデータストリームを処理するステップを含む、前項５０に記載の方法。
５４．性能目標に関する前記処理ステップの測定された性能に少なくとも部分的に基づいて該処理ステップにおいて実行される少なくとも１つのタスクをスケジューリングするステップを更に含む、前項５０に記載の方法。
５５．前記発行ステップ(34)及びリアルタイムデータストリーム接続の管理ステップ(38)が、少なくとも１つのコンピュータ(60)上で実行される、前項５０に記載の方法。
５６．コンピュータ(60)により実行された際に、
接続ルール(32)に基づくリアルタイムデータストリームのネットワーク接続の管理を含む動作を実行する機能を宣言するアプリケーションプログラミングインタフェイス（API）を発行し(34)、該接続ルール(32)の各々が、仮想領域のそれぞれの指定と該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定との少なくとも一方を含み、
該APIの呼び出しに応じて、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方と該仮想領域における少なくとも１つの位置とに関連付けられた複数の接続ルール(32)のそれぞれに基づいて、少なくとも１つのネットワークノードとのリアルタイムデータストリーム接続を管理する(38)、
という各ステップを含む動作を前記コンピュータ(60)に実行させるコンピュータ読み取り可能命令を格納した少なくとも１つのコンピュータ読み取り可能媒体(124,128)。
５７．コンピュータ読み取り可能命令を格納するコンピュータ読み取り可能メモリ(124,128)と、
該メモリに接続されたデータ処理装置(122)であって、前記命令を実行するよう動作可能であり、及び該命令の実行に少なくとも部分的に基づいて、
接続ルール(32)に基づくリアルタイムデータストリームのネットワーク接続の管理を含む動作を実行する機能を宣言するアプリケーションプログラミングインタフェイス（API）を発行し(34)、該接続ルール(32)の各々が、仮想領域のそれぞれの指定と該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定との少なくとも一方を含み、
該APIの呼び出しに応じて、ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方と仮想領域における少なくとも１つの位置とに関連付けられた複数の接続ルール(32)のそれぞれに基づいて、少なくとも１つのネットワークノードとのリアルタイムデータストリーム接続を管理する(38)、
という各ステップを含む動作を実行するよう動作可能である、データ処理装置(122)と
を含む装置。
５８．接続ルール(32)に基づき仮想領域のインスタンス(56)により定義されるコンテキストで少なくとも１つの接続ターゲットとのネットワーク接続を確立するコールを用いて、アプリケーションプログラミングインタフェイス（API）を呼び出し、該接続ルール(32)が、ソフトウェアアプリケーション(28)及び該ソフトウェアアプリケーション(28)が操作することが可能なデータファイルの少なくとも一方に関連付けられ、及び仮想領域のそれぞれの指定と該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定とを含み、
仮想領域インスタンスにおける位置に基づきネットワーク接続を介して接続ターゲットとの少なくとも１つのリアルタイムデータストリームの転送を開始するコールを用いて、前記APIを呼び出し、
該リアルタイムデータストリームから導出された人間により知覚可能な出力を提示する、
という各ステップを含む、コンピュータにより実施される方法。
５９．前記呼び出しがソフトウェアアプリケーション(28)により実行される、前項５８に記載の方法。
６０．コンピュータ(60)により実行された際に、
接続ルール(32)に基づき仮想領域のインスタンス(56)により定義されるコンテキストで少なくとも１つの接続ターゲットとのネットワーク接続を確立するコールを用いて、アプリケーションプログラミングインタフェイス（API）を呼び出し、該接続ルール(32)が、ソフトウェアアプリケーション(28)及び該ソフトウェアアプリケーション(28)が操作することが可能なデータファイルの少なくとも一方に関連付けられ、及び仮想領域のそれぞれの指定と該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定とを含み、
仮想領域インスタンスにおける位置に基づきネットワーク接続を介して接続ターゲットとの少なくとも１つのリアルタイムデータストリームの転送を開始するコールを用いて、前記APIを呼び出し、
該リアルタイムデータストリームから導出された人間により知覚可能な出力を提示する、
という各ステップを含む動作を前記コンピュータ(60)に実行させるコンピュータ読み取り可能命令を格納した少なくとも１つのコンピュータ読み取り可能媒体(124,128)。
６１．コンピュータ読み取り可能命令を格納するコンピュータ読み取り可能メモリ(124,128)と、
該メモリに接続されたデータ処理装置(122)であって、前記命令を実行するよう動作可能であり、及び該命令の実行に少なくとも部分的に基づいて、
接続ルール(32)に基づき仮想領域のインスタンス(56)により定義されるコンテキストで少なくとも１つの接続ターゲットとのネットワーク接続を確立するコールを用いて、アプリケーションプログラミングインタフェイス（API）を呼び出し、該接続ルール(32)が、ソフトウェアアプリケーション(28)及び該ソフトウェアアプリケーション(28)が操作することが可能なデータファイルの少なくとも一方に関連付けられ、及び仮想領域のそれぞれの指定と該仮想領域に関連付けられた１つ又は２つ以上の接続ターゲットのそれぞれの指定とを含み、
仮想領域インスタンスにおける位置に基づきネットワーク接続を介して接続ターゲットとの少なくとも１つのリアルタイムデータストリームの転送を開始するコールを用いて、前記APIを呼び出し、
該リアルタイムデータストリームから導出された人間により知覚可能な出力を提示する、
という各ステップを含む動作を実行するよう動作可能である、データ処理装置(122)と
を含む装置。
６２．ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方における位置の定義を含むアプリケーションプログラミングインタフェイス（API）コールに応じて、
前記位置の定義に関連付けられ及び仮想領域の指定を含む接続ルール(32)を判定し(290)、
仮想領域のインスタンス(56)をホストし及び仮想領域インスタンスの現在の状態を記述する状態データを発行するネットワークインフラストラクチャサービスとのセッションを確立し(292)、
該状態データを購読し(294)、
該状態データの人間により知覚可能なビューを提示する(296)、
という各ステップを含む、コンピュータにより実施される方法。
６３．仮想領域インスタンス(56)に入る意図をネットワークインフラストラクチャサービスに宣言するステップを更に含む、前項６２に記載の方法。
６４．仮想領域内の少なくとも１つのオブジェクトにそれぞれ関連付けられた少なくとも１つのリアルタイムデータストリームソースとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始するステップを更に含む、前項６３に記載の方法。
６５．仮想領域インスタンス(56)の仕様における少なくとも１つのストリーム操作定義に従って少なくとも１つのリアルタイムデータストリームを処理するステップを更に含む、前項６４に記載の方法。
６６．ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方における位置の定義を含むアプリケーションプログラミングインタフェイス（API）コールに応じて、
該位置の定義に関連付けられ及び少なくとも１つの接続ターゲットの指定を含む接続ルール(32)を判定し(330)、
複数のネットワークノードについての接続ハンドルの分配を管理するネットワークインフラストラクチャサービスとのセッションを確立し(332)、
接続オブジェクトにおいて指定された複数の接続ターゲットのうちの１つ又は２つ以上に接続する意図を前記ネットワークインフラストラクチャサービスに宣言し(334)、
該ネットワークインフラストラクチャサービスから少なくとも１つのそれぞれのネットワークノード接続ハンドルを受信し(336)、
該少なくとも１つのそれぞれのネットワークノード接続ハンドルに関連付けられたネットワークノードとの少なくとも１つのネットワーク接続を介して少なくとも１つのリアルタイムデータストリームの転送を開始する(338)、
という各ステップを含む、コンピュータにより実施される方法。
６７．ソフトウェアアプリケーション(28)及びコンピュータデータファイル(30)の少なくとも一方における位置の定義を含むアプリケーションプログラミングインタフェイス（API）コールに応じて、
該位置の定義に関連付けられ及び少なくとも１つの接続ターゲットの指定を含む接続ルール(32)を判定し(340)、
複数のネットワークノード間におけるプレゼンスデータの交換を管理するネットワークインフラストラクチャサービスとのセッションを確立し(342)、
前記少なくとも１つの接続ターゲットにそれぞれ対応する複数のネットワークノードのうちの少なくとも１つへ前記位置の定義を含むプレゼンスデータをエクスポートする意図を前記ネットワークインフラストラクチャサービスに宣言する(344)、
という各ステップを含む、コンピュータにより実施される方法。
【図１】
2013093034.tif 000003
【図２】
2013093034.tif 000004
【図３】
2013093034.tif 000005
【図４】
2013093034.tif 000006
【図５Ａ】
2013093034.tif 000007
【図５Ｂ】
2013093034.tif 000008
【図６Ａ】
2013093034.tif 000009
【図６Ｂ】
2013093034.tif 000010
【図７Ａ】
2013093034.tif 000011
【図７Ｂ】
2013093034.tif 000012
【図８】
2013093034.tif 000013
【図９】
2013093034.tif 000014
【図１０】
2013093034.tif 000015
【図１１】
2013093034.tif 000016
【図１２】
2013093034.tif 000017
【図１３】
2013093034.tif 000018
【図１４】
2013093034.tif 000019
【図１５】
2013093034.tif 000020
【図１６】
2013093034.tif 000021
【図１７】
2013093034.tif 000022
【図１８】
2013093034.tif 000023
【図１９】
2013093034.tif 000024
【図２０】
2013093034.tif 000025
【図２１】
2013093034.tif 000026
【図２２】
2013093034.tif 000027