(57)【特許請求の範囲】
【請求項１】
プロセッサーとメモリーとを含む計算デバイスであって、
第１計算デバイスとしての前記計算デバイスによって、第２計算デバイスへの通信コールを開始するステップと、
前記第２計算デバイスから、第２計算デバイスについての能力情報を受信するステップであって、前記第２計算デバイスについての前記能力情報が、前記第２計算デバイスによってサポートされる第１サービスを示す、ステップと、
前記第１計算デバイスによって、前記第２計算デバイスについての前記能力情報を評価して、前記第１および第２計算デバイスが前記第１サービスにおける少なくとも１つの相互アクションをサポートすると判断するステップと、
前記第１計算デバイスによって、前記第１サービスを含む第１体験共有セッションを開始するステップと、
前記第１計算デバイスによってサポートされる前記第１サービスにおける少なくとも１つのアクションを、前記第２計算デバイスがサポートしないと判断するステップと、
前記第２計算デバイスによってサポートされない、前記第１計算デバイスの前記第１サービスにおける前記少なくとも１つのアクションを無効にするステップと、
前記第１計算デバイスによって、前記第１サービスの少なくとも１つの相互アクションの内の所与のアクションを実行するステップと、
前記第１サービスの前記所与の相互アクションについての更新情報を含む更新メッセージを送るステップと、
前記第１計算デバイスによって、第２サービスを含む第２体験共有セッションを開始するステップであって、前記第２サービスが、前記第１計算デバイスによってサポートされ、前記第２計算デバイスについての前記能力情報において示される、ステップと、
によって、前記計算デバイスにおける相互通信を前記計算デバイスに制御させるためのコンピューター実行可能命令を前記メモリーが格納する、計算デバイス。
【請求項２】
請求項１記載の計算デバイスにおいて、前記第１サービスの前記所与の相互アクションを実行する前記ステップが、前記第１サービスについて表示されるコンテンツを変化させるステップを含む、計算デバイス。
【請求項３】
請求項１記載の計算デバイスにおいて、前記更新情報が、前記第２計算デバイスにおける前記所与の相互アクションの実行を指令するデーターを含む、計算デバイス。
【請求項４】
請求項１記載の計算デバイスにおいて、前記更新情報が第１更新情報であり、
前記第１サービスについての第２更新情報を受信するステップと、
前記受信した第２更新情報に基づいて、前記第１計算デバイスにおいて前記第１サービスのコンテンツを更新するステップと、
によって、前記第１計算デバイスにおける相互通信を前記第１計算デバイスに制御させるためのコンピューター実行可能命令を前記メモリーが更に格納する、計算デバイス。
【請求項５】
請求項１記載の計算デバイスにおいて、前記第１体験共有セッションを開始する前記ステップが、前記通信コールの開始を条件とする、計算デバイス。
【請求項６】
請求項１記載の計算デバイスにおいて、前記第２計算デバイスについての前記能力情報が、更に、前記第２計算デバイスによってサポートされる第３サービスの属性を示し、
前記第１計算デバイスにおける前記第１体験共有セッション内で前記第３サービスを開始することによって、前記第１計算デバイスにおける相互通信を前記第１計算デバイスに制御させるためのコンピューター実行可能命令を前記メモリーが更に格納する、計算デバイス。
【請求項７】
コンピューター読み取り可能記憶媒体であって、
第１計算デバイスによって、第２計算デバイスへの通信コールを開始するステップと、
前記第２計算デバイスから、該第２計算デバイスについての能力情報を受信するステップであって、前記第２計算デバイスについての前記能力情報が、前記第２計算デバイスによってサポートされる第１サービスの属性を示す情報を含む、ステップと、
前記第１計算デバイスによって、前記第２計算デバイスについての前記能力情報および前記第１計算デバイスについての能力情報を評価して、前記第１および第２計算デバイス双方が、前記第１サービスの第１アクションおよび第２アクションをサポートすると判断するステップと、
前記第１計算デバイスによって、前記第１サービスを含む第１体験共有セッションを開始するステップと、
前記第２計算デバイスについての前記能力情報に基づいて、前記第１計算デバイス上の前記第１サービスにおける機能を制限して、前記第２計算デバイス上の前記第１サービスの機能に適合させるステップと、
前記第１サービスについての第１更新情報を含む第１更新メッセージを受信するステップと、
前記受信した第１更新情報に基づいて、前記第１サービスの第１アクションを実行するステップと、
前記第１計算デバイスによって、前記第１サービスの第２アクションを実行するステップと、
前記第２アクションの実行に基づいて、前記第１サービスについての第２更新情報を含む第２更新メッセージを送るステップであって、前記第２更新情報が、前記第２計算デバイスにおける前記第２アクションの実行を指令するデーターを含む、ステップと、
前記第１計算デバイスによって、第２サービスを含む第２体験共有セッションを開始するステップであって、前記第２サービスが、前記第１計算デバイスによってサポートされ、前記第２計算デバイスについての前記能力情報において示される、ステップと、
によって、前記第１計算デバイスにおける相互通信を前記第１計算デバイスに制御させるためのコンピューター実行可能命令を格納する、当該コンピューター読み取り可能記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
インターネットの使用が、人々にとって情報を交換するためのツールとして成長するに連れて、インターネット技術は、インターネットを通じてオーディオおよびビデオを伝達するための種々のツールを提供するように改造されてきた。従前からのツールにも、リアル・タイム・ビデオおよびオーディオを伝達することができるものもある。これらの従前からのツールは、リアル・タイム・ビデオおよびオーディオを伝達することが既にできるものの、これらのツールの通信能力は限られている。
【発明の概要】
【課題を解決するための手段】
【０００２】
本明細書において説明する革新(innovation)の中でもとりわけ、本開示は、サービスの双方向性(interactivity)を実現するために、１回以上の通信コールの間の体験共有セッションにおいてサービスを更新するツールおよび技法の様々な代表的な実施形態を紹介する。
【０００３】
一実施形態では、第１計算デバイスが１つ以上の他の計算デバイスとの通信コールを開始し、リアル・タイム音声および／またはオーディオ通信データーを、通信コール上でこれらの計算デバイス間で交換する。加えて、通信コールの間、この通信コールの当事者(parties)である計算デバイスは、それぞれの計算デバイスによってサポートされるサービスおよび／またはアクションを示す能力情報を交換する。また、通信コールの間、受信した能力情報によって示されるサービスの少なくとも１つの共通アクションをサポートすると判断された計算デバイス間で、双方向体験共有セッションが開始される。サービスの双方向性は、体験共有セッションの当事者である計算デバイス上にけるサービスのそれぞれのインスタンスによって実行される、共通にサポートされるアクションに応答して、体験共有セッション中において計算デバイス間でサービスについての更新メッセージを交換することによって実現される。
【０００４】
一技法例によれば、第１計算デバイスが通信コールを開始し、第２計算デバイスについての能力情報を受信する。第２計算デバイスについての能力情報は、第２計算デバイスによってサポートされるサービスの属性を示す情報を含む。加えて、第１計算デバイスは、この能力情報を評価して、そのサービスが第１および第２計算デバイスによってサポートされると判断する。また、第１計算デバイスは、そのサービスを含む体験共有セッションを開始する。サービスについての更新情報を含む更新メッセージが受信され、この受信された更新情報に基づいて、サービス・コンテンツが更新される。
【０００５】
他の技法例によれば、第１計算デバイスが通信コールを開始し、第２計算デバイスについての能力情報を受信する。第１計算デバイスは、第２計算デバイスについての能力情報を評価して、第１および第２計算デバイスがサービスの少なくとも１つの相互アクションをサポートすると判断する。加えて、第１計算デバイスは、そのサービスを含む体験共有セッションを開始し、このサービスの相互アクション（１つまたは複数）の１つを実行する。また、サービスの相互アクションについての更新情報を含む更新メッセージも送られる。
【０００６】
更に他の技法例によれば、第１計算デバイスが通信コールを開始し、第２計算デバイスについての能力情報を受信する。第１計算デバイスは、この能力情報を評価して、第１および第２計算デバイスが双方共サービスの第１および第２アクションをサポートすると判断する。第１通信デバイスは、サービスを含む体験共有セッションを開始し、そのサービスについての更新情報を含む更新メッセージを受信する。受信した更新情報に基づいて、サービスの第１アクションが実行される。また、第１計算デバイスは、サービスの第２アクションを実行し、第２アクションの実行に基づいて、このサービスについての更新情報を含む第２更新メッセージを送る。
【０００７】
この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲限定するために使用されることを意図するのでもない。本技術の以上のおよびその他の目的、特徴、ならびに利点は、添付図面を参照しながら進められる以下の詳細な説明から一層明白となろう。
【図面の簡単な説明】
【０００８】
【図１】図１は、体験共有セッションのためにサービス・コンテンツを更新する計算デバイスの一例を示す図である。
【図２】図２は、体験共有セッションのためにサービス・コンテンツを更新する方法の一例の流れ図である。
【図３】図３は、通信コールの間に１つ以上のサービスのために１つ以上の体験共有セッションを提供することができる計算デバイスの一例を示す。
【図４】図４は、体験共有セッションの間にサービスについての更新メッセージを送る方法の一例の流れ図である。
【図５】図５は、通信コールの間体験共有セッションにおいてサービスを更新するための更新メッセージを受信することおよび送信することができる計算デバイスの一例を示す図である。
【図６】図６は、通信コールの間体験共有セッションに利用可能な種々のサポート・サービス(supported service)を提供するアプリケーションを、離れて起動することができる計算デバイスの一例を示す図である。
【図７】図７は、サービスのアクション実行に基づいて、サービスについての更新メッセージを送る方法の一例の流れ図である。
【図８】図８は、開示する実施形態のいずれでも実現できる移動体デバイスの一例を示す模式図である。
【図９】図９は、開示する実施形態のいずれにも適した実現環境を一般化した例を示す模式図である。
【図１０】図１０は、開示する実施形態のいずれにも適した計算環境を一般化した例を示す模式図である。
【発明を実施するための形態】
【０００９】
体験共有セッションのためにサービス・コンテンツを更新するシステムの一例
デバイスのユーザーにとって、このユーザーのデバイスによってレンダリングまたは提供されるコンテンツを、リモート・デバイスの異なるユーザーとリアル・タイムで共有することは望ましいことであり得る。加えて、ユーザーは、単なるリアル・タイムのオーディオおよび／またはビデオ通信を超えるものを、リモート・デバイスのユーザーと共有することを望むかもしれない。リアル・タイムのオーディオおよび／またはビデオ・セッションの間、ユーザーは双方向体験共有セッションに参加する(engage)ことを望むかもしれない。双方向体験共有セッションでは、ユーザーは、仮想オブジェクトまたはデーターのような対話型コンテンツを共有し、双方のユーザーが、彼らのそれぞれのデバイスにおいてリアル・タイムに、双方向で参加することができる。
【００１０】
図１は、体験共有セッションのためにサービス１４０のコンテンツ１７０を更新する計算デバイスの一例１００を示す図である。図１において、計算デバイス１００は、１つ以上の計算デバイス１２０との通信コール１１０を開始する。通信デバイス１００、１２０は、同じフォーム・ファクタ／デバイス・タイプ、または異なるフォーム・ファクタ／デバイス・タイプを有することができる。通信コール１１０の間、計算デバイス１００は通信コール１１０に参加する１つ以上の計算デバイス１２０についての能力情報１３０を受信する。能力情報１３０は、１つ以上の計算デバイス１２０によってサポートされる１つ以上のサービスの１つ以上の属性を示す。例えば、サービスの属性は、サービスの識別子、サービスのバージョン番号、あるいはサービスによってサポートされる１つ以上のアクションおよび／またはコマンドであることができる。実施態様の中には、サービスが、アプリケーション・コンテンツまたは状態の種々のレベルの複雑さおよび／または共有の仮想オブジェクトの双方向リアル・タイム共有および制御を提供できるものもある。複雑さのレベルは、高い複雑さのレベルから低い複雑さのレベルまでの範囲を取ることができる。
【００１１】
計算デバイス１００は、体験共有モジュール１２５を使用して、受信した能力情報１３０を評価し、サービス１４０のような１つ以上のサービスが、１つ以上の計算デバイス１２０の各々によってサポートされ、更に計算デバイス１００によってもサポートされ、しかもサービス１４０のための体験共有セッション１５０のような、１つ以上の体験共有セッションに利用可能であると判断する。体験共有モジュール１２５を使用する計算デバイス１００は、１つ以上の計算デバイス１２０の各々によってサポートされるサービス１４０のための体験共有セッション１５０のような、１つ以上の体験共有セッションを開始することができる。体験共有セッションは、計算デバイス１００と１つ以上の計算デバイス１２０との間で通信チャネルを使用して、１つ以上の更新メッセージ１６０のような１つ以上のメッセージを送信することおよび／または受信することができる。体験共有セッションでは、サービスが、共有読書体験、仮想オブジェクト共有、ゲーミング、遠隔強調(remote highlighting)等のような、１つ以上の双方向体験を提供することができる。体験共有セッションは、異なる双方向体験毎に多数のサービスを含むことができる。
【００１２】
サービスの一実施態様例では、サービスは体験共有セッションの間仮想オブジェクトとの対話処理(interaction)を提供する。このサービスの体験共有セッションの間、種々のデバイス間における通信コールを通じて、ユーザーは通信コールのオーディオおよびビデオ能力を使用して、建物の平面図(floor plan)を伝達することができ、ユーザーはこのサービスの能力を使用して、論じられている建物の平面図の三次元モデルを示す仮想オブジェクトと対話処理することができる。建物のモデルとの対話処理は、このサービスのサポートされているアクションを使用して行うことができ、このサービスのコンテンツを表示し、操作し、更新する能力を提供する。
【００１３】
図１を参照すると、１つ以上の更新メッセージ１６０の少なくとも１つを受信したことに応答して、計算デバイス１００はサービス１４０のコンテンツ１７０を更新する。例えば、更新メッセージは、計算デバイスによって受信することができ、サービスによって提供されたコンテンツは、この更新メッセージにおいて提供される情報によって制御および／または指令される状態に置くことができる。例えば、対話型建物モデルとの体験共有セッションの例では、ひとりのユーザーが共通の能力にしたがってこのユーザーのデバイスにおいて建物モデルと対話処理するとき、デバイスは自動的にメッセージを他の参加デバイスに送り、他のユーザーのそれぞれのデバイス上における建物モデルに変更を反映し、他のユーザーがこのモデルに対する変更をリアル・タイムの双方向体験で見ることを可能にする。ある実施態様では、リモート・デバイス上でサービスを更新するために送られる更新メッセージが、このサービスが解釈することができるデーターを含み、変更を効率的に伝達することができる。更新メッセージは、受信されたときに、サービスの更新を制御することができ、更新メッセージは、体験共有セッションに参加する計算デバイス間に跨がって、サービスの状態を再現するまたは反映する十分な情報を含むことができる。
体験共有セッションのためのサービスのコンテンツ更新方法の一例
図２は、体験共有セッションのためにサービスのコンテンツを更新する方法の一例２００の流れ図である。図２において、第１計算デバイスが２１０において通信コールを開始する。例えば、第１計算デバイスは通信コールを開始するために、１つ以上の他の計算デバイスに招待を送ることができる。通信コールは、通信コール上にある計算デバイス間のデーター・チャネルを介したデーター転送によるリアル・タイム通信をサポートすることができる。この通信コール用データー・チャネルは、音声通信、ビデオ通信、または体験共有セッションに使用される情報の内１つ以上をサポートすることができる。例えば、通信コールは、通信データーを交換するためにボイス・オーバー・インターネット・プロトコル（ＶＯＩＰ）を使用する２つの計算デバイス間におけるビデオおよび音声コール・ストリーミング(video and voice call streaming)とすることができる。ある実施態様では、計算デバイスにおいてコンピューター実行可能命令を使用して通信コールの機能を実現する通信コール・モジュールによって、通信コールを開始し実行することができる。
【００１４】
通信コールを開始する実施態様の中には、第２計算デバイスが送られた招待の受諾を送る場合もあり、これは第１計算デバイスによって受信される。招待の受諾に応答して、第１および第２計算デバイス間の通信コールは、許可されおよび／または開始することができ、この通信コールの間データー・チャネルを通じて通信を第１および第２通信デバイス間で転送することができる。発呼および／または招待された第２計算デバイスが、通信コールを開始する招待を一旦受諾したなら、第１および第２計算デバイスは、メディア・ネゴシエーションを実行することができる。メディア・ネゴ士ネーションは、各計算デバイスによってサポートされるオーディオおよび／またはビデオ・フォーマット、サポートされる帯域幅、解像度のサポート等を決定することを含むことができる。メディア・ネゴシネーションが完了した後、メディア・ネゴシエーションの結果にしたがって、通信コールに参加している計算デバイス間で、オーディオおよび／またはビデオ・ストリームを送ることができる。
【００１５】
ある実施態様では、通信コールを開始するとき、第１計算デバイスが、他の計算デバイスとの通信コールを開始する要求を受けることができ、第１計算デバイスは、第１および第２計算デバイス間で通信コールを開始するために、要求の受諾を送ることができる。第１計算デバイスからの受諾を受けたことに応答して、第２計算デバイスは、第１計算デバイスとの通信コールを開始することができる。
【００１６】
２２０において、第２計算デバイスについての能力情報を受信する。第２計算デバイスについての能力情報は、第２計算デバイスによってサポートされるサービスの属性を示す情報を含む。例えば、第２計算デバイスは、各々１つ以上のアクションおよび／またはコマンドがある１つ以上のサービスをサポートすることができる場合もあり得る(can be capable of)。第２計算デバイスは、それがサポートする１つ以上のサービスについての情報を送ることができる。例えば、能力情報は、サービス識別子、サービス・バージョン番号、サポートされるアクション、サポートされるコマンド、サービスに利用可能なハードウェア等を含むことができる。サービス識別子は、計算デバイスによってサポートされるサービスを一意に識別することができる。加えて、能力情報は、１つ以上の方式についての情報を含むことができ、この方式にしたがって、サービスのためのデーターが編成される。また、能力情報は、デバイスに利用可能な処理容量、メモリー容量、表示解像度、およびネットワーク接続速度についての情報を含むことができる。
【００１７】
サービスは種々のバージョンを有することができ、サービス・バージョン番号はサービスのバージョンを一意に識別することができる。例えば、サービスは、１組のサポート・アクション(support action)を第１バージョンにおいて有することができる。第２バージョンでは、このサービスは、第１バージョンの１組のサポート・アクションの内１つ以上、および第１バージョンによってサポートされない１つ以上のアクションをサポートすることができる。バージョン識別子は、あるサービスが計算デバイス間で使用される互換性があることを判断するために使用することができる。例えば、種々のデバイス上におけるサービスのバージョンを比較して、互換性を調べることができる。
【００１８】
能力情報は、第２計算デバイスに利用可能な（例えば、第２計算デバイスによってサポートされる）１つ以上のサービスによってサポートされる１つ以上のアクションについての情報を含むことができる。サービスは、このサービスに利用可能な１組のアクションを有することができ、計算デバイス上において最大限または部分的にサービスをサポートすることができる。例えば、サービスは、第１デバイス上において第１組の利用可能なアクションをサポートすることができ、第２デバイスは、このサービスの第２組の利用可能なアクションをサポートすることができる。第１および第２組の利用可能なアクションは、これらの組の間で共通である１つ以上の相互アクション、または両方の組にとって共通ではない（そして１つの組に含まれるが、他の組のアクションには含まれない）１つ以上のアクションを含むことができる。例えば、表示画面が小さい第１デバイスは、あるサービスに対して部分的なサポートを有することができ、第２デバイス上においてサービスによって共有される情報の消費を考慮するサービスのアクションをサポートすることができるが、それよりも画面が大きいデバイスは、このサービスの完全なサポートを有することができ、リアル・タイムで仮想オブジェクトと対話処理し変更することをユーザーに可能にする多数のアクションをサポートすることができる。
【００１９】
能力情報は、１つのサービスに関係することができる。または、能力情報は多数のサービスに関係することができる。例えば、第２計算デバイスについての能力情報は、第２計算デバイスによってサポートされる第１サービスの属性および第２サービスの属性を示す。
【００２０】
ある実施態様では、能力情報は、種々の時点で送信されるおよび／または受信される。例えば、通信コールの開始の間および／またはメディア・ネゴシエーションの間に、能力情報を送ることができる。また、例えば、要求に応じて能力情報を送信するまたは受信することもできる。ある実施態様では、計算デバイスは、他の計算デバイスの能力情報の一部または全部を要求および／または受信することができる。例えば、ある計算デバイスが、異なるデバイスによってサポートされたサービスの１組のサービス識別子を要求することができ、異なるデバイスは、この要求に応答して、能力情報を送ることができる。また、例えば、第１計算デバイスは、他のデバイスによってサポートされるサービスの１つ以上のアクションおよび／またはコマンドについての情報、および／または他のデバイス上におけるサービスの１つまたは複数のバージョンについての情報というような、特定のサービスについての能力情報を要求することもできる。第２計算デバイスについての能力情報を受信することに加えて、またはその代わりに、第１計算デバイスは、第１計算デバイスについての能力情報を第２計算デバイス（および／または他の計算デバイス）に送り、第１計算デバイスによってサポートされるサービス（１つまたは複数）の属性を示すことができる。
【００２１】
更に一般的には、計算デバイスは、１つ以上の体験共有セッションのサービスのために、能力をネゴシエートする。異なる終点は、異なるフォーム・ファクタ（例えば、デスクトップ・コンピューター、スマートフォン、タブレット）またはリソースを有するかもしれない。所与のサービスに対して、ある計算デバイスによってサポートされるアクション、コマンド、フォーマット等は、他の計算デバイスと、ハードウェア能力についての情報と共に交換することができる。１組のアクション、コマンド、フォーマット等は、そのサービスに対しては特定的であり、それ以外では計算デバイスおよび他のサービスに対して不明瞭である(opaque)ことが可能である。
【００２２】
また、サービスに対するアクション、コマンド、フォーマット等は、方式(schema)に従うことができる。この場合、多数のサービスが同じ方式を使用することができる。例えば、サービスについてのデーターは方式に従い、アクションまたはコマンドは方式において定められたものから選択されてもよい。能力ネゴシエーションの一部として、計算デバイスはどの方式がサポートされるか示すことができる。
【００２３】
図２を参照すると、２３０において、第１計算デバイスは、第２計算デバイスについての能力情報を評価して、サービスが第１および第２計算デバイスによってサポートされると判断する。例えば、サービスの１つ以上の属性についての情報が評価され、第１計算デバイスの能力情報と比較されて、そのサービスが第１および第２計算デバイスの双方によってサポートされること、および／またはそのサービスが、体験共有セッションを有効にする相互属性を第１および第２計算デバイスにおいて有することを判断する。例えば、第２計算デバイスの能力情報は、それがサポートするサービスの識別子を含むことができ、第１計算デバイスによってサポートされる１つ以上のサービスの識別子とこれを比較して、第１計算デバイスも、識別されたサービスをサポートすると判断することができる。それぞれの計算デバイスについて比較されたサービス識別子が同じサービスを識別した場合、これらの計算デバイスはそのサービスをサポートすると判断することができる。
【００２４】
ある実施態様では、第２計算デバイスについての能力情報において示されたサービスの１つ以上のアクションを、第１計算デバイスによってサポートされるサービスの１つ以上のアクションと比較することができる。デバイスのタイプ、サービスのバージョン、または他の要因に依存して、異なるデバイスがサービスに対して異なる組のアクションをサポートすることもできる。第２計算デバイスによってサポートされ、第１計算デバイスによってもサポートされる少なくとも１つのアクション（例えば、相互アクション）がある場合、第１および第２計算デバイスによってサービスをサポートすることができ、このアクションは、体験共有セッションに利用可能であること、および／または体験共有セッションを有効にする(enable)ことができる。第１および第２計算デバイスによってサポートされる相互アクションは、体験共有セッションの間サービスを提供するために使用することができる。
【００２５】
ある実施態様では、能力情報が第１および第２計算デバイス間で交換され、第１および第２計算デバイス双方によってサポートされるサービスおよび／またはサービスのアクションがない場合、第１および第２デバイス間ではサービスのための体験共有セッションが有効にされない。この場合、共通サービスがサポートされないので、第１および第２デバイスは、サービスについてのメッセージの交換を可能にするサービスのために体験共有セッションを開始することができない。
【００２６】
２４０において、第１計算デバイスは、サービスを含む体験共有セッションを開始する。例えば、第１計算デバイスは、第１および第２計算デバイス間でサービスを提供することを可能にする体験共有セッションを開始する要求を送ることができる。体験共有セッションを開始するある実施態様では、第２計算デバイスが、第１計算デバイスから送られた、体験共有セッションを開始する要求を受けたことに応答して、受諾を送る。あるいは、第２計算デバイスが、体験共有セッションを確立する要求を送り、第１計算デバイスが、体験共有セッションを開始する一部として、この要求の受諾を送る。体験共有セッションを開始する要求が受諾された後、この受諾に応答して体験共有セッションを開始することができる。体験共有セッションは、通信チャネルが許可され、メッセージを交換して第１および第２計算デバイス間でサービスの機能を提供するために利用可能になるように開始する。ある実施形態では、第１および第２計算デバイス双方が、これらの計算デバイス間における体験共有セッションの開始の間、および体験共有セッションの間、通信コールに参加する。ある実施形態では、あるサービスのために体験共有セッションを開始する要求を、この要求を受けた計算デバイスによってもサポートされるサービスの少なくとも１つのアクションをサポートする計算デバイスから送ることができる。体験共有セッションの開始は、サービスおよび／または他の動作のためにアプリケーションを起動することを含むことができる。
【００２７】
同じ体験共有セッション内において、第１計算デバイスは、第２サービス、第３サービス等を開始することができる。これによって、これらのデバイスが体験共有セッションから設定値、リソース等を再利用すること、および新たな体験共有セッションを確立するための追加のメッセージを回避することが可能になる。あるいは、第１計算デバイスが第２サービスのために第２体験共有セッション、第３サービスのために第３体験共有セッション等を開始する。
【００２８】
２５０において、サービスについての更新情報を含む更新メッセージを受信する。例えば、サービスに対する体験共有セッションの間、第２計算デバイスは、第１計算デバイスにおいてサービスを更新するための情報を有するメッセージを送ることができる。例えば、第１計算デバイスは、第２計算デバイスによって送られた、更新情報を有する更新メッセージを受信することができる。更新メッセージは、第２計算デバイス上においてサービスの状態を変化させるアクションが実行されたことに応答して、第２計算デバイス上のサービスによって送ることができる。
【００２９】
２６０において、受信した更新情報に基づいて、サービスのコンテンツを更新する。例えば、更新メッセージの更新情報は、受信されると、第１計算デバイス上におけるサービスの機能を制御することができる。例えば、更新メッセージは、サービスによって解釈され、サービスの状態を変化させ、表示された仮想オブジェクトを変化させ、サービスの機能を実行させることができる。一般に、更新メッセージにおける情報は、更新メッセージを送ったデバイス上におけるサービスのコンテンツまたはサービスによって実行された機能に対する変化を反映するために、受信側デバイス上においてサービスの状態またはコンテンツを構成し直すための情報とすることができる。また、第１計算デバイスは、第１計算デバイスにおけるサービスのアクション（１つまたは複数）の実行に応答して、１つ以上の更新メッセージを送ることもできる。このような更新メッセージは、例えば、第２計算デバイスにおけるアクションの実行を指令する更新情報を含む。
【００３０】
更新情報は、データーのインテリジェントな交換を実現するために軽量にすることができる。この場合、更新メッセージ・ペイロードは、解釈することができる量のデーターを伝え、受信側サービスが受信側計算デバイスにおいて更新状態を判断することを可能にするようことができる。例えば、サービスの一例が共有読書サービスであり、多数のデバイスにおいて書籍がレンダリングされ、これら多数のデバイスの１つ以上から受信された同様の状態を反映する。この読書サービスでは、特定の計算デバイス上で仮想書籍が新しいページにめくられたとき、この特定の計算デバイスが、新たなページのページ数を含む更新メッセージを、体験共有セッションにおける他の計算デバイスに送ることができる。
【００３１】
更新メッセージを受信した計算デバイスは、更新メッセージ情報を使用して、送信側計算デバイス上で変更されたように、サービスの状態および／またはコンテンツを再現することができる。例えば、読書サービスでは、他の参加計算デバイスが、それらのそれぞれの仮想書籍のページをめくり、更新メッセージにおいて指示されたページを表示することができる。サービスは、更新メッセージを解釈し、独立して新たなページをレンダリングすることができる。例えば、ハイエンド・デバイスでは、サービスは、以前のページから新たなページに移動する動画効果を持たせる(provide)ことができるが、ローエンド・デバイスでは、サービスは単にテキストを変化させるだけである。ある実施態様では、更新メッセージは、サービスの更新状態によって表示される情報を含まない。これは、サービスがその情報を提供するからである。例えば、仮想書籍のページがめくられるとき、ページの色を更新メッセージから省略することができる。これは、読書体験のためのサービスが色情報を提供することができるからである。このように、更新メッセージは意味的データーを伝えることができ、受信側計算デバイス上におけるサービスによって、この意味的データーを解釈して、サービスの状態を形成し直すこと、および／または送信側計算デバイス上におけるサービスの状態と同期させることができる。
【００３２】
体験共有セッションの他の例では、第１計算デバイスのユーザーがイベントのビデオを取り込む。この体験共有サービスは、ビデオ・ブロードキャストのために強調能力(highlighting capability)を実現する１つ以上のアクションを提供するサービスのためにある。この例では、第１計算デバイスによってサポートされるサービスを使用して、ユーザーは、取り込んだビデオを種々のサブスクライバー(subscriber)の計算デバイスにブロードキャストすることができる。第２計算デバイスは、このビデオ・ブロードキャストを受信した計算デバイスの内の１つとすることができる。受信側計算デバイスのユーザーは、ビデオ・キャプチャにおけるエリアを、離れたところから強調することができ、強調されたエリアは、第１計算デバイスにおけるものを含めて、ビデオ・ブロードキャスト全体に反映させることができる。このサービスは、体験共有セッションに参加する種々の他の計算デバイスから送られる更新メッセージを受信し解釈することによって、第１計算デバイスにおいてビデオ・ブロードキャストのエリアを強調することができる。更新メッセージは、フレーム・タイムスタンプ、フレーム番号、または他のタイミング情報、更には強調された領域についての座標情報を含むことができる。体験共有セッションにおけるサービスの更新によって、計算デバイスの多数のユーザーが、通信コールにおいてリアル・タイムで通信することに加えて、サービスに参加しリアル・タイムでサービスの共有データーを操作することを可能にすることができる。
【００３３】
体験共有セッションの実施態様には、体験共有セッションが始まった後に、体験共有セッションのサービスをサポートする各参加デバイスが、サービスのコンテンツをレンダリングして、ユーザーの視聴および／または消費のためにデバイス上に表示させることができるように、結果的に得られるサービスの双方向体験をレンダリングおよび／または提供し、デバイスにおける変化および／または更新を反映する更新メッセージを送信および／または受信し、サービスの更新状態をレンダリングする役割を担うことができるものもある。その結果、各参加計算デバイスは、サービスのそれ自体のコピーおよび／またはインスタンスと共に作業することができ、他の参加計算デバイス上におけるサービスの他のコピーと同期させることができる。同期は、体験共有セッションに関与する計算デバイス上でサービスのそれぞれのコピーの状態を制御するために更新メッセージを交換することによって、実現することができる。
通信コールの間にサービスのために体験共有セッションを提供するシステムの一例
図３は、通信コールの間に１つ以上のサービスのために１つ以上の体験共有セッションに参加することができる計算デバイスの一例３００を示す図である。図３において、計算デバイス３００は、通信コール・モジュールを使用して、計算デバイス３１０との通信コール３０５を開始する。通信コール３０５を開始するとき、計算デバイス３００は、通信コール３０５を開始する招待３１５を計算デバイス３１０に送る。計算デバイス３１０は、招待３１５を受け、招待３１５の受諾３２０を送ることによって、招待３１５を受諾する。受諾３２０は計算デバイス３００によって受信される。招待３１５および受諾３２０は、１つ以上の通信チャネル３２５を使用して、データーとして伝達することができる。受諾３２０に応答して、計算デバイスは、通信チャネル３２５の１つ以上を使用して、計算デバイス３１０との通信コール３０５を開始する。通信コール３０５は、計算デバイス３００および３１０間においてリアル・タイム音声および／またはビデオ通信をサポートするビデオ・コールである。通信コール３０５は、ボイス・オーバー・インターネット・プロトコル（ＶＯＩＰ）のようなインターネット技術を使用して実現することができる。
【００３４】
計算デバイス３００が通信コール３０５に参加しているとき、計算デバイス３００によってサポートされるサービス３３０の内あるサービスは、通信コール３０５に参加している他の計算デバイスもそのサービスをサポートするのであれば、体験共有セッションに利用可能になる。通信コール３０５に参加している間、計算デバイス３００は、計算デバイス３１０の能力情報を求める要求３３５を送る。要求３３５の受信に応答して、計算デバイス３１０は、その能力情報３４０を送り、能力情報３４０は計算デバイス３００によって受信される。計算デバイス３１０についての能力情報３４０は、サービスＡ３５０の属性についての情報３４０−Ａ、サービスＢ３５１の属性についての情報３４０−Ｂ、サービスＪ３５５の属性についての情報３４０−Ｃを含む。これらのサービスは、計算デバイス３１０によってサポートされる。また、計算デバイス３００もその能力情報３４２を計算デバイス３１０に送ることができる。計算デバイス３００についての能力情報３４２は、サービスＡ３５０の属性についての情報３４２−Ａ、サービスＢ３５１の属性についての情報３４２−Ｂ、およびサービスＣ３５２の属性についての情報３４２−Ｃを含み、これらのサービスは計算デバイス３００によってサポートされる。
【００３５】
計算デバイス３００が能力情報３４０を受信した後、計算デバイス３１０によってサポートされるサービス３４５の内どれが、計算デバイス３００によってもサポートされるか評価することができる（能力情報３４０によって示される）。図３では、能力情報３４２は、計算デバイス３００がサービスＡ３５０、サービスＢ３５１、およびサービスＣ３５２をサポートすることを示す。能力情報３４０は、計算デバイス３１０がサービスＡ３５０、サービスＢ３５１、およびサービスＪ３５５をサポートすることを示す。サービスＡ３５０は、計算デバイス３００および計算デバイス３１０上においてアクションＤ３６０およびＥ３６１をサポートする。
【００３６】
サービスＢ３５１は、計算デバイス３００上においてアクションＦ，Ｇ，Ｈ３６３〜３６５をサポートする。しかしながら、サービスＢ３５１は、計算デバイス３１０上ではアクションＦ３６３、G３６４をサポートするが、計算デバイス３１０上ではアクションＨ３６５をサポートしない。計算デバイス３００および計算デバイス３１０は双方ともサービスＡ３５０、Ｂ３５１をサポートし、サービスＡ３５０、Ｂ３５１は、計算デバイス３００および３１０の双方によってサポートされるアクションＦ、Ｇを含むので、計算デバイス３００は、サービスＡ３５０、Ｂ３５１の各々がこれらの計算デバイス間における体験共有セッションに利用可能であると判断する。計算デバイス３１０はサービスＪ３５５をサポートするが、計算デバイス３００はサービスＪ３５５をサポートしないので、計算デバイス３１０は、サービスＪ３５５がこれらの計算デバイス間における体験共有セッションに利用可能ではないと判断する。加えて、計算デバイス３００はサービスＣ３５２をサポートするが、計算デバイス３１０はサービスＣ３５２をサポートしないので、計算デバイス３００は、サービスＣ３５２がこれらの計算デバイス間における体験共有セッションに利用可能でないと判断する。
【００３７】
計算デバイス３００は、計算デバイス間における体験共有セッションに利用可能であると判断されたサービスの内１つ以上に対して、計算デバイス３１０との１つ以上の体験共有セッションを開始することができる。あるサービスがデバイス間における体験共有セッションに利用できないと判断された場合、計算デバイス３００は、この利用できないサービスのためには体験共有セッションを開始しない。
【００３８】
サービスＡ３５０は体験共有セッションに利用可能であると判断されたので、計算デバイス３００はサービスＡ３５０のために体験共有セッション３７０を開始する。計算デバイス３００による体験共有セッション３７０の開始は、体験共有セッション３７０を開始する招待３７２を送ること、および招待３７２の受諾３７４を受けることを含む。招待３７２の受諾３７４は、計算デバイス３１０から計算デバイス３００に送られる。また、体験共有セッション３７０の開始は、計算デバイス３１０からの受諾３７４を受けたことに応答して、体験共有セッション３７０を開始することも含む。体験共有３７０は、計算デバイス３１０によって送られるメッセージ３７５の内１つ以上を解釈することによって、計算デバイス３００上でサポートされるサービスＡ３５０を更新することを可能にする。メッセージ３７５は、サービスＡ３５０による使用のために生成される。また、体験共有３７０は、計算デバイス３００によって送られるメッセージ３７５の内１つ以上を解釈することによって、計算デバイス３１０によってサポートされるサービスＡ３５０を更新することを可能にする。メッセージ３７５は、サービスＡ３５０による使用のために生成される。
【００３９】
メッセージ３７５の内１つのメッセージは、このメッセージを受信した計算デバイス上でサービスＡ３５０の状態を制御するおよび／または変化させるための情報を含む更新メッセージであることができる。例えば、サービスＡ３５０は、物理的オブジェクトまたは構造の三次元モデル（３−Ｄモデル）を、サービスＡ３５０をサポートする計算デバイスのディスプレイ上で種々の角度で見ることができるように、この３−Ｄモデルを三次元で方向付けさせることができる。計算デバイス３１０のユーザーは、ユーザー・インターフェースを使用して、サービスＡ３５０によってサポートされるアクションＤ３６０を呼び出すことができる。アクションＤ３６０は、結果として、計算デバイス３１０によってレンダリングおよび表示される３−Ｄモデルの方位を変化させる。計算デバイス３１０においてアクションＤ３６０を呼び出すことによって更新されたサービスに応答して、計算デバイス３１０は、更新メッセージを、計算デバイス３００上のサービスＡ３５０に送ることができる。この更新メッセージは、計算デバイス３００においてサービスＡ３５０のアクションＤ３６０を呼び出すための情報を含み、サービスＡ３５０の最終的な状態 (resulting state )を生成することができる。
【００４０】
サービスＢ３５１は、体験共有セッションに利用可能であると判断されたので、計算デバイス３００はサービスＢ３５１のために体験共有セッション３８０も開始する。体験共有３８０は、計算デバイス３１０によって送られたメッセージ３８５の内１つ以上を解釈することによって、計算デバイス３００上でサポートされるサービスＢ３５１を更新することを可能にする。メッセージ３８５は、サービスＢ３５１による使用のために生成される。計算デバイス３１０はサービスＢ３５１のアクションＨ３６５をサポートしないので、アクションＨ３６５の機能は体験共有セッション３８０には利用可能でなく、計算デバイス３００は、体験共有セッション３８０の間アクションＨ３６５を呼び出すためのメッセージを送らない。しかしながら、体験共有３８０は、計算デバイス３１０によって送られたメッセージ３８５の内１つ以上を解釈することによって、計算デバイス３００上でサポートされるサービスＢ３５１を更新することを可能にする。メッセージ３８５は、アクションＦ３６３およびアクションＧ３６４のように、体験共有セッション３８０に参加する計算デバイスの各々によってサポートされるアクションの内１つ以上の機能を呼び出すために生成することができる。
体験共有セッションの間にサービスに対して更新メッセージを送る方法の一例
図４は、体験共有セッションの間にサービスについての更新メッセージを送る方法の一例４００の流れ図である。図４では、４１０において第１計算デバイスが通信コールを開始する。例えば、第１計算デバイスは、１つ以上の計算デバイスとの通信コールを開始する招待を、データー通信チャネルを通じて送り、この招待は、招待された計算デバイスの内１つ以上によって受諾される。招待の受諾を受けたことに応答して、第１計算デバイスは、招待を受諾した計算デバイス（１つまたは複数）との通信コールを開始する。通信コールは、インターネットまたは他の通信技術を使用して、リアル・タイムの音声および／またはビデオ通信をサポートすることができる。通信コールの実施態様には、計算デバイスにおいて受信されたユーザー選択に応答して、このユーザー選択を受信した計算デバイスにおいて、通信コールのためにビデオおよび／またはオーディオを有効または無効にすることができるものもある。オーディオおよびビデオ双方をサポートする通信コールに参加する計算デバイスは、通信コールの間、オーディオおよび／またはビデオを提供するように、またはオーディオおよび／またはビデオを提供しないように構成することができる。
【００４１】
４２０において、第２計算デバイスについての能力情報を受信する。この能力情報は、第２計算デバイスによってサポートされるサービスを示す。例えば、第２計算デバイスは、第１計算デバイスとの通信コールに参加している計算デバイスであることが可能である。第２計算デバイスは、体験共有セッションにおいて使用することができる１つ以上のサービスをサポートすることができる。第２計算デバイスは、それがサポートする１つ以上のサービスの属性についての情報を、第１計算デバイスに送ることができる。ある実施態様では、第２計算デバイスは、第１計算デバイスからの能力情報を求める要求に応答して、能力情報を送る。他の実施態様では、第２計算デバイスは、通信コールの開始に応答して、通信コールの間に自動的に能力情報を第１計算デバイスに送る。
【００４２】
４３０において、第１計算デバイスは、第２計算デバイスについての能力情報を評価して、第１および第２計算デバイスが体験共有セッションのためのサービスの少なくとも１つの相互アクションをサポートすると判断する。例えば、サービスの相互アクションとは、第１および第２計算デバイスの双方がそのサービスのためにサポートするアクションとすることができる。ある実施態様では、能力情報は、第２計算デバイスによってサポートされるサービスおよびアクションについての情報を含む。第１計算デバイスは、それがサポートするサービスおよびアクションについての情報を、第２デバイスの能力情報と比較して、どのサービスおよびアクションを第１および第２計算デバイスが共通してサポートし、体験共有セッションに適合するか判断する。計算デバイスによって共通にサポートされるサービスは、相互サービスとなることができ、計算デバイスによって共通にサポートされるアクションは、相互アクションとなることができる。第１計算デバイスが、第２計算デバイスが所与のサービスに対して相互アクションを全くサポートしないと判断した場合、第１計算デバイスは、第１および第２計算デバイスによってサポートされる相互アクションによって、異なるサービスのために体験共有セッションを開始するか否か評価することができる。
【００４３】
４４０において、第１計算デバイスは、サービスを含む体験共有セッションを開始する。例えば、第１計算デバイスは、相互サービスがサポートされると判断したので、識別された相互サービスは、第１および第２計算デバイス間における体験共有セッションに利用可能である。ある実施態様では、第１計算デバイスが、体験共有セッションを開始するために招待を第２計算デバイスに送ることができ、この招待が第２計算デバイスによって受諾される。受諾を受けたことに応答して、第１計算デバイスは、招待に関連付けられたおよび／または招待によって識別された体験共有セッションを開始する。
【００４４】
４５０において、第１計算デバイスは、サービスの少なくとも１つの相互アクションの内１つを実行する。例えば、体験共有セッションの間、第１計算デバイスは、第１および第２デバイスの双方によってサポートされると識別された所与のアクションを実行する。この所与の相互アクションが実行され、第１計算デバイスにおいて、実行されたアクションの結果にしたがって、サービスが更新される。
【００４５】
４６０において、サービスの所与の相互アクションについての更新情報を含む更新メッセージを送る。例えば、実行されたサービスの相互アクションに応答して、第１計算デバイスが更新情報を第２計算デバイスに送ることができる。更新情報は、第２計算デバイスにおけるサービスによって使用され、第２計算デバイスにおいてサービスを更新するために、第２計算デバイスによってサポートされる相互アクションを実行することができる。また、第１計算デバイスは、第２計算デバイスからの更新メッセージも受信することができ、この更新メッセージにおける更新情報に基づいて、第１計算デバイスにおけるサービスのコンテンツを更新することができる。
通信コールの間における体験共有セッションの一例
図５は、通信コール５０５の間に体験共有セッションにおいてサービスを更新するための更新メッセージを受信および送信することができる計算デバイスの一例５００を示す図である。図５において、計算デバイス５００は、計算デバイス５１０との通信セッション５０５の最中である。５１２において、計算デバイス５１０は、計算デバイス５００によってもサポートされるアクション５１５を実行する。アクション５１５は、サービスの状態を更新するために、仮想オブジェクト５２０を第１方向に回転させる。サービスの状態が更新されると、仮想オブジェクト５２０は、計算デバイス５１０において実行されたアクションにしたがって、回転されて表示される。図５において、このサービスは、体験共有セッションに参加するデバイスのユーザーが共通の視点から三次元オブジェクトを見ることができるように、多数のデバイス上でサービスのユーザーがリアル・タイムで三次元仮想オブジェクトを操作することを可能にする。計算デバイス５１０においてアクション５１５が実行されたことに応答して、計算デバイス５１０は、計算デバイス５００において表示される仮想オブジェクト５２０を更新するために更新メッセージを送り、計算デバイス５００においてサービスの状態が更新される。仮想オブジェクト５２０は、デバイスの能力に基づいて、異なるデバイスでは異なる表示を行うことができる。例えば、仮想オブジェクト５２０は、計算デバイス５００においては、計算デバイス５１０におけるよりも多くの詳細が表示される。
【００４６】
サービスの実施態様には、このサービスをサポートするデバイスの能力に依存して、サービスを完全にまたは部分的にサポートすることができるものもある。体験共有セッションに参加するデバイスにおいてサービスが同様および／または同一状態になるように、このサービスのために実行されるアクションはサービスの状態を更新することができるが、種々のデバイスにおけるサービスのコンテンツは、それぞれの計算デバイス上におけるサービスのレンダリング能力にしたがって、表示することができる。
【００４７】
通信セッション５０５の間に仮想オブジェクト５２０が更新され、計算デバイス５００は通信セッションのビデオ５３０を表示する。ビデオ５３０は、計算デバイス５１０によって取り込まれ計算デバイス５００に送られたリアル・タイム・ストリーミング・ビデオである。ビデオ５３０は、計算デバイス５１０のカメラ５３５を使用して取り込むことができる。また、計算デバイス５００は、カメラ５４０を使用して、通信コール５０５の一部として、リアル・タイム・ビデオを取り込み、計算デバイス５１０に送ることができる。計算デバイス５００および計算デバイス５１０は、音声データーのようなリアル・タイム・オーディオ５４５を、通信コール５０５の一部として、１つ以上の体験共有セッションの間に伝達することができる。
【００４８】
５４７において、計算デバイス５００は、計算デバイス５００におけるサービスの状態を更新するために、仮想オブジェクト５２０を第２方向に回転させるアクション５５０を実行する。アクション５５０が実行されたことに応答して、計算デバイス５００は、サービスが計算デバイス５１０において仮想オブジェクト５２０を更新するために、体験共有セッションの一部として更新メッセージ５６０を送る。
【００４９】
計算デバイス５００上においてサービスのコピーによってサポートされるアクション５６５は、計算デバイス５１０上におけるサービスのコピーによってサポートされず、計算デバイス５００と計算デバイス５１０との間におけるサービスのための体験共有セッションの一部として実行されるために利用することはできない。
体験共有セッション中におけるアプリケーションの遠隔起動の一例
図６は、通信コール６０５の間に体験共有セッションにおいてサービスを更新するための更新メッセージを交換することができるサービスを提供するアプリケーションを、離れて起動することができる計算デバイスの一例６００を示す図である。図６において、計算デバイス６００は計算デバイス６１０との通信セッション６０５の最中である。デバイス６００のユーザーは、体験共有セッション６１５を使用して、アプリケーションのコンテンツおよび状態を、計算デバイス６１０のリモート・ユーザーと共有することができる。体験共有セッション６１５を開始するために、計算デバイス６００は招待６２０を送る。招待６２０を受信したことに応答して、計算デバイス６１０は、ユーザーが招待を受諾するかまたは招待を拒否するためのユーザー・インターフェース選択肢を表示することができる。６２５に示すように、計算デバイス６１０は、体験共有セッション６１５の開始を許可するために、招待６２０の受諾を送る。
【００５０】
ある実施態様では、体験共有セッションへの招待の受諾は、デバイス上において体験共有セッションに利用可能な１つ以上のサービスの使用を許可することができる。例えば、受諾は、体験共有セッションのために、招待において識別されたサービスの使用を許可することができ、または受諾は、受諾された体験共有セッションと共に使用するために許可された１つ以上のサービスを識別することができる。図６において、体験共有セッション６１５に対して、６２５に示すように、受諾は計算デバイス６００および計算デバイス６１０に共通して利用可能なサービスを許可する。このように、セッションの招待／受諾のためのプロトコルが完了した後、別個の招待／受諾ステップを行わずに、またはユーザーからの単純な承認ステップだけで、サービスを素早く起動することができる。
【００５１】
図６において、計算デバイス６００および計算デバイス６１０の双方に利用可能なサービスは、アプリケーション６３０によって提供されるサービス、およびアプリケーション６３５によって提供されるサービスである。１つ以上の体験共有セッションと同時に、計算デバイス６００と計算デバイス６１０との間における通信コール６０５は、ＶＯＩＰおよび／またはビデオ送信技術というような１つ以上の通信技術を使用して、デバイス６００とデバイス６１０との間においてリアル・タイム・ストリーミング・ビデオおよび／またはオーディオ・データー６４０を提供することができる。計算デバイス６００は、体験共有セッション６１５を使用して、アプリケーション６３５のサービスのコンテンツを共有することができる。例えば、計算デバイス６００のユーザーは、このユーザーが計算デバイス６００において操作しているアプリケーションのコンテンツを、計算デバイス６１０のリモート・ユーザーと、体験共有セッション６１５の一部として共有したいということもあり得る。
【００５２】
６４５において、計算デバイス６００は、アプリケーション６３５によって提供されるサービスのアクションを実行し、計算デバイス６１０におけるサービスのコピーを更新するために、更新メッセージ６４７を計算デバイス６１０に送る。更新メッセージ６４７に関連付けられたサービスを提供するアプリケーションが計算デバイス６１０において起動されていないまたは実行していない場合、このサービスに対する更新メッセージを受信したことに応答して、アプリケーションおよび／またはサービスをアクティブにすることができる。サービスが起動され利用可能になった後、更新メッセージ６４７の更新情報を使用して、サービスのコピーをある状態に設定することができ、計算デバイス６００上におけるサービスのコピーの状態を反映する。ある実施態様では、計算デバイス６１０においてアプリケーションおよび／またはサービスを起動する前に、計算デバイス６１０は、アクションの許可または拒否を示すユーザー選択を受けたことに基づいて、アクションを許可または拒否することができる。ユーザーは、計算デバイス６１０上のユーザー・インターフェースによって提供される選択肢を選択することによって、アクションの許可または拒否を示すことができる。
【００５３】
６５０において、計算デバイス６１０は、アプリケーション６３０によって提供されたサービスに対する更新メッセージ６５５を計算デバイス６００に送る。アプリケーション６３０によって提供されたサービスに対する更新メッセージ６５５を受信したことに応答して、計算デバイス６００においてアプリケーション６３０のサービスのインスタンスを更新し、計算デバイス６１０におけるサービスの状態を反映することができる。ある実施態様では、６３０のアプリケーションが起動されないおよび／またはアクティブでない場合、アプリケーション６３０によって提供されたサービスに対する更新メッセージを受信したことに応答して、アプリケーション６３０を起動することおよび／またはアクティブにすることができる。例えば、マップ・アプリケーションでは、更新メッセージは、計算デバイスの現在地を示すことができ、体験共有セッションにおいて計算デバイスの各々にその位置が表示されるようにする。また、デバイス位置の代わりに、所望の目的地の位置を、体験共有セッションにおける計算デバイス間で共有することができる。
サービスのアクションの実行に基づいてサービスに対する更新メッセージを送る方法の一例
図７は、サービスのアクションの実行に基づいて、このサービスに対して更新メッセージを送る方法の一例７００の流れ図である。図７において、第１計算デバイスが７１０において通信コールを開始する。例えば、第１計算デバイスは、通信コールを開始するための招待を第２計算デバイスが受諾したことに応答して、通信コールを開始する。
【００５４】
７２０において、第２計算デバイスについての能力情報を受信する。能力情報は、第２計算デバイスによってサポートされるサービスの１つ以上の属性を示す情報を含む。例えば、第２計算デバイスは、それがサポートするサービスについての能力情報を送り、この能力情報は第１計算デバイスによって受信される。ある実施形態では、能力情報を要求することができる。例えば、第１計算デバイスは、サポートされるサービスの１つ以上の識別子、および／またはバージョン番号および／またはサービスによってサポートされるアクションというような、サポートされるサービスについての更に詳細な情報を含む能力情報を要求することができる。
【００５５】
７３０において、第１計算デバイスは第２計算デバイスについての能力情報、および第１計算デバイスについての能力情報を評価して、第１および第２計算デバイスは双方共サービスの第１アクションおよび第２アクションをサポートすると判断する。例えば、第１計算デバイスは、第２計算デバイスの能力情報においてサポートされると示されるアクションを、第１計算デバイスによってサポートされるアクション（第１計算デバイスにおける能力情報によって示される）と比較して、第１および第２計算デバイスの双方によってサポートされるアクションを判定する。この比較に基づいて、第１計算デバイスは、第１アクションが第１および第２計算デバイス双方によってサポートされること、そして第２アクションが第１および第２計算デバイス双方によってサポートされることを判定することができる。ある実施態様では、第１アクションが第２アクションとは異なるアクションであることが可能である。ある実施態様では、相互にサポートされるアクションは、第１および第２デバイス上においてサービスの同じバージョンまたは異なるバージョンによってサポートされるアクションであることが可能である。一実施態様例では、サービスの第１バージョンが第１計算デバイス上で特定のアクションをサポートすることができ、サービスの第２バージョンが第２計算デバイス上でこの特定のアクションをサポートすることができる。アクションがサポートされるやり方は、サービスのバージョン間で異なることが可能である。
【００５６】
７４０において、第１計算デバイスは、前述のサービスを含む体験共有セッションを開始する。例えば、第１計算デバイスは、第１および第２アクションをサポートするサービスに対して体験共有セッションを開始する。ある実施態様では、第１計算デバイスは、第２計算デバイスに送られた、体験共有セッションを開始する招待の受諾を受けたことに応答して、体験共有セッションを開始する。
【００５７】
７５０において、サービスについての更新情報を含む更新メッセージを受信する。例えば、体験共有セッションの間、第２計算デバイスにおいてサービスを更新するときに、サービスの第１アクションを実行することができる。第２計算デバイスにおいて第１アクションが実行されたことに応答して、第１計算デバイスにおいてこのアクションを再現する（recreate)ための情報を含む更新メッセージを送る。例えば、更新情報は、第１計算デバイスに第１アクションを実行させることができるデーターを含み、第１計算デバイスにおけるサービスのコンテンツを、第２計算デバイスにおけるサービスのインスタンスと同様のおよび／または同一の状態にする。
【００５８】
７６０において、受信した更新情報に基づいて、サービスの第１アクションを実行する。例えば、第１計算デバイスにおけるサービスは、第２計算デバイスから送られた更新情報を受信し、更新情報にしたがってサービスの状態を更新するために、受信した更新情報を使用して、指令されたアクションを実行する。
【００５９】
７７０において、第１計算デバイスはサービスの第２アクションを実行する。例えば、第１計算デバイスのユーザーは、ユーザー・インターフェースを使用して、第１計算デバイスにおけるサービスの第２アクションの実行を行わせる。サービスの第２アクションの実行が、サービスの状態を変化させる。
【００６０】
７８０において、第２アクションの実行に基づいて、サービスについての第２更新情報を含む第２更新メッセージを送る。例えば、第２アクションを実行したことに応答して、第１計算デバイスは、体験共有セッションの間に更新メッセージを第２計算デバイスに送り、第２計算デバイスが更新情報を使用して第２計算デバイスにおけるサービスの状態を更新して、第１計算デバイスにおいて行われたアクションを反映することができる。第２更新情報が第１更新情報とは異なることがある。何故なら、第２更新情報は、第２更新情報によって指令されるように第２計算デバイスにおいて第２アクションを呼び出すおよび／または実行することによって、第１計算デバイスにおけるサービスのインスタンスによって行われるアクションを再現するために使用することができる情報を含むからである。
【００６１】
通信コールの間における体験共有セッションの実施態様には、体験共有セッションを終了することができるものもある。通信コールは、体験共有が終了した後も継続することができる。しかしながら、以前に開始された体験共有セッションの参加者間でメッセージを送ることは、もはや許可されない。体験共有セッションが終了した後、サービスのコンテンツ、および／または体験共有セッションの間に受信したデーターを格納することができる。例えば、体験共有セッションのデーターは、デバイスにおいてローカルにコンピューター読み取り可能媒体上に格納することができ、および／またはクラウド・ストレージ等にというように、オンライン・ストレージに離れてデーターを格納することができる。
【００６２】
体験共有セッションの実施態様には、体験共有セッションの間に、追加のデバイスが加入すること、または体験共有セッションが開始した後に体験共有セッションへの参加を開始することができるものもある。また、体験共有セッションの間、この体験共有セッションの当事者であり続ける計算デバイスが他に少なくとも２つあるのであれば、この体験共有セッションの当事者である計算デバイスが、体験共有セッションを終了することなく、体験共有セッションを離れることができる。ある実施態様では、体験共有セッションの少なくとも２人の参加者の内１人が体験共有セッションを離れたときに、体験共有セッションを終了することができる。
移動体デバイスの一例
図８は、全体的に８０２で示す、種々の任意のハードウェアおよびソフトウェア・コンポーネントを含む移動体デバイスの一例８００を示すシステム図である。一般に、移動体デバイス内にあるコンポーネント８０２は、他のいずれのコンポーネントとも通信することができるが、図示を容易にするために、全ての接続は示されていない。移動体デバイスは、種々の計算デバイス（例えば、セル・フォン、スマートフォン、ハンドヘルド・コンピューター、パーソナル・ディジタル・アシスタント（ＰＤＡ）等）のいずれでも可能であり、セルラまたは衛星ネットワークのような、１つ以上の移動体通信ネットワーク８０４とのワイヤレス双方向通信を可能にすることができる。
【００６３】
図示した移動体デバイス８００は、信号コード化、データー処理、入力／出力処理、電力制御、および／または他の機能というようなタスクを実行するために、コントローラーまたはプロセッサー８１０（例えば、信号プロセッサー、マイクロプロセッサー、ＡＳＩＣ、または他の制御および処理論理回路）を含むことができる。オペレーティング・システム８１２は、コンポーネント８０２の割り当ておよび使用、ならびにアプリケーション・プログラム８１４、８１５の内１つ以上のサポートを制御することができる。アプリケーション８１５は、体験共有セッションの間にサービスを更新するというような、本明細書において説明した技術の内１つ以上を実現する１つ以上のソフトウェア・モジュールを含むことができる。アプリケーション・プログラムは、一般的な移動体計算アプリケーション（例えば、電子メール・アプリケーション、カレンダー、連絡先マネージャー、ウェブ・ブラウザー、メッセージング・アプリケーション）、または任意の他の計算アプリケーションを含むことができる。アプリケーション・ストアにアクセスする機能８１３は、アプリケーション・プログラム８１４を取得し更新するためにも使用することができる。
【００６４】
図示した移動体デバイス８００は、メモリー８２０を含むことができる。メモリー８２０は、非リムーバブル・メモリー８２２および／またはリムーバブル・メモリー８２４を含むことができる。非リムーバブル・メモリー８２２は、ＲＡＭ、ＲＯＭ、フラッシュ・メモリー、ハード・ディスク、または他の周知のメモリー記憶技術を含むことができる。リムーバブル・メモリー８２４は、フラッシュ・メモリーまたはＧＳＭ（登録商標）通信システムでは周知であるサブスクライバー識別モジュール（ＳＩＭ）カード、あるいは「スマート・カード」のような他の周知のメモリー記憶技術を含むことができる。メモリー８２０は、オペレーティング・システム８１２およびアプリケーション８１４を実行するためのデーターおよび／またはコードを格納するために使用することができる。データーの例は、ウェブ・ページ、テキスト、画像、音響ファイル、ビデオ・データー、あるいは１つ以上の有線またはワイヤレス・ネットワークを介して１つ以上のネットワーク・サーバーまたは他のデバイスにおよび／またはから送られるその他のデーター集合を含むことができる。メモリー８２０は、国際移動体サブスクライバー識別（ＩＭＳＩ）のようなサブスクライバー識別子、および国際移動体機器識別子（ＩＭＥＩ）のような機器識別子を格納するために使用することができる。このような識別子は、ユーザーおよび機器を識別するために、ネットワーク・サーバーに送信することができる。
【００６５】
移動体デバイス８００は、タッチスクリーン８３２、マイクロフォン８３４、カメラ８３６、物理キーボード８３８および／またはトラックボールのような１つ以上の入力デバイス８３０、ならびにスピーカー８５２およびディスプレイ８５４のような１つ以上の出力デバイス８５０をサポートすることができる。他の可能な出力デバイス（図示せず）は、圧電型出力デバイスまたは他の触覚型出力デバイスを含むことができる。あるデバイスは、１つよりも多い入力／出力機能を供与することができる。例えば、タッチスクリーン８３２およびディスプレイ８５４を組み合わせて１つの入力／出力デバイスにすることができる。入力デバイス８３０は、自然ユーザー・インターフェース（ＮＵＩ）を含むことができる。ＮＵＩは、ユーザーが「自然な」方法でデバイスと対話処理することを可能とし、マウス、キーボード、リモコン等のような入力デバイスによって強制される人工的な制約から解放することができる、あらゆるインターフェース技術として定義することができる。ＮＵＩ方法の例は、音声認識(speech recognition)、タッチおよびスタイラス認識、画面上および画面近傍双方におけるジェスチャー認識、エア・ジェスチャー(air gesture)、頭部および視線追尾、音声(voice)および発話(speech)、視覚、タッチ、ジェスチャー、ならびに機械インテリジェンスを拠り所とするものを含む。ＮＵＩの他の例は、加速度計／ジャイロスコープを使用する運動ジェスチャー(motion gesture)検出、顔認識、３Ｄディスプレイ、頭部、視線および凝視追尾、没入型拡張現実および仮想現実システムを含み、これらの全ては、電界検知電極（ＥＥＧおよび関係する方法）を使用して脳活動を検知する技術だけでなく、一層自然なインターフェースを提供する。このように、具体的な一例では、オペレーティング・システム８１２またはアプリケーション８１４は、音声認識ソフトウェアを、ユーザーに音声コマンドによってデバイス８００を動作させる音声ユーザー・インターフェースの一部として含むことができる。更に、デバイス８００は、ゲーミング・アプリケーションまたは他のアプリケーションに入力を供給するためにジェスチャーを検出し解釈するというような、ユーザーの空間ジェスチャーによってユーザーの対話処理を可能にする入力デバイスおよびソフトウェアも含むことができる。
【００６６】
ワイヤレス・モデム８６０は、アンテナ（図示せず）に結合することができ、プロセッサー８１０と外部デバイスとの間における双方向通信をサポートすることができる。これは当技術分野では良く理解されている。モデム８６０は包括的に示され、移動体通信ネットワーク８０４と通信するためのセルラ・モデム、および／または他の無線系モデム（例えば、Ｂｌｕｅｔｏｏｔｈ（登録商標）８６４またはＷｉ−Ｆｉ８６２）を含むことができる。ワイヤレス・モデム８６０は、通例、１つのセルラ・ネットワーク内、セルラ・ネットワーク間、または移動体デバイスと公衆電話交換網（ＰＳＴＮ）との間におけるデーターおよび音声通信のためのＧＳＭ（登録商標）ネットワークのような、１つ以上のセルラ・ネットワークとの通信のために構成される。更に、移動体デバイスは、少なくとも１つの入力／出力ポート８８０、電源８８２、汎地球測位システム（ＧＰＳ）受信機のような衛星ナビゲーション・システム受信機８８４、加速度計８８６、および／または物理コネクター８９０も含むことができる。物理コネクター８９０は、ＵＳＢポート、ＩＥＥＥ１３９４（Ｆｉｒｅ    Ｗｉｒｅ）ポート、および／またはＳ−２３２ポートとすることができる。図示したコンポーネント８０２は、必須でなく、全てを含むのでもない。何故なら、いずれのコンポーネントでも削除することができ、他のコンポーネントを追加することができるからである。
実現環境の一例
図９は、説明した実施形態、技法、および技術を実現することができる、適した実現環境９００の一般化した例を示す図である。
【００６７】
環境の一例９００では、種々のタイプのサービス（例えば、計算サービス）がクラウド９１０によって提供される。例えば、クラウド９１０は、集中して配置されてもまたは分散されてもよい計算デバイスの集合体を含むことができ、クラウド・ベースのサービスを、インターネットのようなネットワークを介して接続された種々のタイプのユーザーおよびデバイスに提供する。実現環境９００は、計算タスクを遂行するために異なるやり方で使用することができる。例えば、あるタスク（例えば、ユーザー入力を処理し、ユーザー・インターフェースを提示する）はローカル計算デバイス（例えば、接続デバイス９３０、９４０、９５０）上で実行することができ、一方他のタスク（例えば、今後の処理において使用されるデーターの格納）はクラウド９１０において実行することができる。
【００６８】
環境の一例９００では、クラウド９１０が、接続デバイス(connected device)９３０、９４０、９５０のためのサービスに、種々の画面能力を提供する。接続デバイス９３０は、コンピューター画面９３５（例えば、中間サイズの画面）を有するデバイスを代表する。例えば、接続デバイス９３０は、デスクトップ・コンピューター、ラップトップ、ノートブック、ネットブック等のような、パーソナル・コンピューターとすることができる。接続デバイス９４０は、移動体デバイスの画面９４５（例えば、小型画面）を有するデバイスを代表する。例えば、接続デバイス９４０は、移動体電話機、スマートフォン、パーソナル・ディジタル・アシスタント、タブレット・コンピューター等とすることができる。接続デバイス９５０は、大型画面９５５を有するデバイスを代表する。例えば、接続デバイス９５０は、テレビジョン画面（例えば、スマート・テレビジョン）、またはテレビジョンに接続された他のデバイス（例えば、セットトップ・ボックスまたはゲーミング・コンソール）等とすることができる。接続デバイス９３０、９４０、および９５０の１つ以上はタッチスクリーン能力を含むことができる。タッチスクリーンは、異なるやり方で入力を受け入れることができる。例えば、容量式タッチスクリーンは、物体（例えば、指先またはスタイラス）が、表面を横切って走る電流を歪ませるまたは中断するときに、タッチ入力を検出する。他の例として、タッチスクリーンは、光センサーを使用して、この光センサーからのビームが中断されたときに、タッチ入力を検出することができる。画面上の表面との物理的接触は、タッチスクリーンによっては、入力が検出されるためには不要なこともある。環境の一例９００では、画面能力がないデバイスも使用することができる。例えば、クラウド９１０は、ディスプレイがない１つ以上のコンピューター（例えば、サーバー・コンピューター）にサービスを提供することができる。
【００６９】
サービスは、クラウド９１０によって、サービス・プロバイダー９２０を介して、またはオンライン・サービスの他のプロバイダー（図示せず）を介して提供することができる。例えば、クラウド・サービスは、個々の接続デバイス（例えば、接続デバイス９３０、９４０、９５０）の画面サイズ、表示能力、および／またはタッチスクリーン能力に合わせてカスタム化することができる。
【００７０】
環境の一例９００では、クラウド９１０は、本明細書において説明した技術および解決手段を、種々の接続デバイス９３０、９４０、９５０に、少なくとも部分的にサービス・プロバイダー９２０を使用して提供する。例えば、サービス・プロバイダー９２０は、種々のクラウド・ベース・サービスのために集中解決手段(centralized solution)を提供することができる。サービス・プロバイダー９２０は、ユーザーおよび／またはデバイスのために（例えば、接続デバイス９３０、９４０、９５０および／またはそれらのそれぞれのユーザーのために）サービス登録を管理することができる。クラウド９１０は、通信コールの間体験共有セッションにおいてサービスを更新するために１つ以上の更新メッセージ９２５を交換することによって、１つ以上のサービスを提供することができる。
計算環境の一例
図１０は、説明した革新を実現することができる、適した計算環境１０００の一般化した例を示す。計算環境１０００は、使用範囲や機能に関して限定を示唆することは全く意図していない。何故なら、本革新は、多様な汎用または特殊目的計算システムにおいて実現できるからである。例えば、計算環境１０００は、種々の計算デバイス（例えば、デスクトップ・コンピューター、ラップトップ・コンピューター、サーバー・コンピューター、タブレット・コンピューター、メディア・プレーヤー、ゲーミング・システム、移動体デバイス等）の内任意のものにすることができる。
【００７１】
図１０を参照すると、計算環境１０００は、１つ以上の処理ユニット１０１０、１０１５およびメモリー１０２０、１０２５を含む。図１０において、この基本構成は破線内に含まれる。処理ユニット１０１０、１０１５は、コンピューター実行可能命令を実行する。処理ユニットは、特定用途集積回路（ＡＳＩＣ）における汎用中央演算装置（ＣＰＵ）プロセッサー、または任意の他のタイプのプロセッサーとすることができる。マルチ処理システムでは、処理パワーを高めるために、多数の処理ユニットがコンピューター実行可能命令を実行する。例えば、図１０は、中央処理ユニット１０１０、およびグラフィクス処理ユニットまたは共処理ユニット１０１５を示す。有形メモリー(tangible memory)１０２０、１０２５は、揮発性メモリー（例えば、レジスター、キャッシュ、ＲＡＭ）、不揮発性メモリー（例えば、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリー等）、または処理ユニット（１つまたは複数）によってアクセス可能な、これら２つの何らかの組み合わせであってもよい。メモリー１０２０、１０２５は、本明細書において説明した１つ以上の革新を実現するソフトウェア１０８０を、処理ユニット（１つまたは複数）による実行に適したコンピューター実行可能命令の形態で格納する。
【００７２】
計算システムは追加の特徴を有することもできる。例えば、計算環境１０００は、ストレージ１０４０、１つ以上の入力デバイス１０５０、１つ以上の出力デバイス１０６０、および１つ以上の通信接続１０７０を含む。バス、コントローラー、またはネットワーク相互接続のような相互接続メカニズム（図示せず）は、計算環境１０００のコンポーネントを相互接続する。通例、オペレーティング・システム・ソフトウェア（図示せず）は、計算環境１０００において実行する他のソフトウェアのために動作環境を提供し、計算環境１０００のコンポーネントの活動を調整する。
【００７３】
有形ストレージ１０４０は、リムーバブルまたは非リムーバブルでもよく、磁気ディスク、磁気テープまたはカセット、ＣＤ−ＲＯＭ、ＤＶＤ、あるいは有形なやり方で(tangible way)で情報を格納するために使用することができ計算環境１０００内でアクセスすることができる任意の他の媒体を含む。ストレージ１０４０は、体験共有サービスにおいてサービスを更新するというような、本明細書において説明した１つ以上の革新を実現するソフトウェア１０８０の命令を格納する。
【００７４】
入力デバイス（１つまたは複数）１０５０は、キーボード、マウス、ペン、またはトラックボールのようなタッチ入力デバイス、音声入力デバイス、スキャニング・デバイス、あるいは入力を計算環境１０００に供給する他のデバイスであってもよい。ビデオ・コード化のためには、入力デバイス（１つまたは複数）１０５０は、カメラ、ビデオ・カード、ＴＶチューナー・カード、あるいはアナログまたはディジタル形態でビデオ入力を受け入れる同様のデバイス、あるいはビデオ・サンプルを計算環境１０００内に読み込むＣＤ−ＲＯＭまたはＣＤ−ＲＷであってもよい。出力デバイス（１つまたは複数）１０６０は、ディスプレイ、プリンター、スピーカー、ＣＤ−ライター、または計算環境１０００からの出力を供給する他のデバイスであってもよい。
【００７５】
通信接続（１つまたは複数）１０７０は、通信媒体を介して他の計算エンティティへの通信を可能にする。通信媒体は、コンピューター実行可能命令、オーディオまたはビデオ入力あるいは出力、あるいは他のデーターというような情報を変調データー信号内で伝達する。変調信号とは、この信号内に情報をエンコードするようなやり方で、その特性の１つ以上が設定されたまたは変化させられた信号である。一例として、そして限定ではなく、通信媒体は、電気、光、ＲＦ、または他の搬送波を使用することができる。
【００７６】
開示した方法の一部の動作は、都合のよい提示のために、特定の連続順序で説明したが、この説明のやり方は、以下に明記される特定の文言によって特定の順序付けが要求されない限り、再配列を含むことは理解されてしかるべきである。例えば、順次説明した動作は、場合によっては、配列し直しても、または同時に実行されてもよい。更に、簡略さのために、添付図面は、開示した方法を他の方法と併せて使用することができる種々のやり方を示さない場合もある。
【００７７】
開示した方法はいずれも、１つ以上のコンピューター読み取り可能記憶媒体（例えば、１つ以上の光媒体ディスク、揮発性メモリー・コンポーネント（ＤＲＡＭまたはＳＲＡＭ等）、あるいは不揮発性メモリー・コンポーネント（フラッシュ・メモリーまたはハード・ドライブ等））上に格納され、コンピューター（例えば、スマートフォンまたは計算ハードウェアを含む他の移動体デバイスを含む、任意の市販のコンピューター）上で実行されるコンピューター実行可能命令として実現することができる。容易に理解されるはずであるが、コンピューター読み取り可能記憶媒体という用語は、変調データー信号のような通信接続を含まない。開示した技法を実現するためのコンピューター実行可能命令、および開示した実施形態の実現の間に作成および使用されるデーターはいずれも、１つ以上のコンピューター読み取り可能媒体上に格納することができる。コンピューター実行可能命令は、例えば、専用ソフトウェア・アプリケーション、あるいはウェブ・ブラウザーまたは他のソフトウェア・アプリケーション（リモート計算アプリケーション等）によってアクセスまたはダウンロードされる、ソフトウェア・アプリケーションの一部であることができる。このようなソフトウェアは、例えば、１つのローカル・コンピューター（例えば、任意の適した市販のコンピューター）上で、または１つ以上のネットワーク・コンピューターを使用するネットワーク環境において（例えば、インターネット、ワイド・エリア・ネットワーク、ローカル・エリア・ネットワーク、クライアント−サーバー・ネットワーク（クラウド計算ネットワーク等）、または他のこのようなネットワークを介して）、実行することができる。
【００７８】
明確さのために、ソフトウェア・ベースの実施態様からある種の選択された態様だけについて説明した。当技術分野では周知である他の詳細は省略した。例えば、開示した技術は、いずれの特定のコンピューター言語にもプログラムにも限定されない。例えば、開示した技術は、Ｃ＋＋、Ｊａｖａ（登録商標）、Ｐｅｒｌ、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ａｄｏｂｅ  Ｆｌａｓｈ、または任意の他の適したプログラミング言語で書かれたソフトウェアによって実現することができる。同様に、開示した技術は、いずれの特定のコンピューターにもハードウェアのタイプにも限定されない。適したコンピューターおよびハードウェアのある種の詳細は、周知であり、本開示において詳細に明記される必要はない。
【００７９】
また、本明細書において説明した機能はいずれも、ソフトウェアの代わりに、少なくとも部分的に、１つ以上のハードウェア論理コンポーネントによって実行できることも、良く理解されてしかるべきである。例えば、限定ではなく、使用することができるハードウェア論理コンポーネントの代表的なタイプは、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定プログラム集積回路（ＡＳＩＣ）、特定プログラム標準製品（ＡＳＳＰ）、チップ上システム・システム（ＳＯＣ）(System-on-Chip System)、複合プログラマブル論理デバイス（ＣＰＬＤ）等を含む。
【００８０】
更に、ソフトウェア・ベースの実施形態（例えば、開示した方法の内任意のものをコンピューターに実行させるためのコンピューター実行可能命令を含む）はいずれも、適した通信手段を介して、アップロードすること、ダウンロードすること、または離れてアクセスすることができる。このような適した通信手段は、例えば、インターネット、ワールド・ワイド・ウェブ、イントラネット、ソフトウェア・アプリケーション、ケーブル（光ファイバ・ケーブルを含む）、磁気通信、電磁通信（ＲＦ、マイクロ波、および赤外線通信を含む）、電子通信、または他のこのような通信手段を含む。
【００８１】
開示した方法、装置、およびシステムは、決して限定するように解釈してはならない。代わりに、本開示は、単独での、そして互いとの種々のコンビネーションおよびサブコンビネーションにおける、種々の開示した実施形態の全ての新規で非自明な特徴および態様を対象とする。開示した方法、装置、およびシステムは、いずれの特定の態様や特徴、その組み合わせにも限定されず、開示した実施形態は、いずれの１つ以上の特定の利点が得られることも、問題が解決されることも必要としない。開示した発明の原理を適用することができる多くの可能な実施形態があることに鑑み、例示した実施形態は、本発明の好ましい例に過ぎず、本発明の範囲を限定するように捕らえてはならないことは、認識されてしかるべきである。逆に、本発明の範囲は、以下の請求項によって定められることとする。したがって、これらの請求項およびその均等の範囲内に該当する全てを、本発明として特許請求する。
【図１】
0006506171.tif 000002
【図２】
0006506171.tif 000003
【図３】
0006506171.tif 000004
【図４】
0006506171.tif 000005
【図５】
0006506171.tif 000006
【図６】
0006506171.tif 000007
【図７】
0006506171.tif 000008
【図８】
0006506171.tif 000009
【図９】
0006506171.tif 000010
【図１０】
0006506171.tif 000011