(57)【特許請求の範囲】
【請求項１】
遠隔的にアクセスされるアプリケーションに対する非連結アプリケーション拡張を提供する方法であって、
アプリケーション層と、サーバ層と、クライアント層と、を備える、階層型遠隔アクセスフレームワークであって、前記遠隔的にアクセスされるアプリケーションにアクセスしている、前記クライアント層の中のクライアントコンピューティングデバイス間で、状態モデルにおいて前記遠隔的にアクセスされるアプリケーションに関する第１の情報を通信する、階層型遠隔アクセスフレームワークを提供し、ここで状態モデルが前記クライアントコンピューティングデバイスに前記遠隔的にアクセスされるアプリケーションの論理要素をネイティブに表示することを可能にするものであることと、
前記前記遠隔的にアクセスされるアプリケーションを実行するサーバによって、前記前記遠隔的にアクセスされるアプリケーションの画面又はアプリケーションデータに従って前記状態モデルを更新し、前記状態モデルの前記更新を前記クライアント層に送信することと、
前記クライアント層の中のクライアントアクセスアプリケーションプログラムによって、クライアント層ユーザインターフェイスプログラムから受信した入力データに従って前記状態モデルを更新し、前記状態モデルの前記更新を前記サーバ層に送信することとすることと、
それぞれのクライアントコンピューティングデバイスで前記非連結アプリケーション拡張を提供することであって、前記非連結アプリケーション拡張は、前記クライアントコンピューティングデバイスにおいて、前記遠隔的にアクセスされるアプリケーションとは独立した機能を提供することによって前記遠隔的にアクセスされるアプリケーションを強化するものであることと、
前記クライアント層の中のクライアントアクセスアプリケーションによって、前記非連結アプリケーション拡張に関連付けられる前記機能が、前記クライアントコンピューティングデバイスのうちの少なくとも１つで有効となるように、前記非連結アプリケーション拡張に関する第２の情報を含むように拡張状態モデルを更新することと、
前記クライアントコンピューティングデバイスを含むセッションの間に、前記アプリケーションと前記非連結アプリケーション拡張の状態が同期するように、それぞれ、前記状態モデル及び前記拡張状態モデルを通信することと、
前記クライアントコンピューティングデバイス又は遠隔アプリケーションサーバの少なくとも１つによって、前記状態モデル更新及び前記拡張状態モデル更新を受信することと、
前記状態モデルの更新及び前記拡張状態モデルの更新に基づいて更新された状態モデルを作成し、ここで前記更新された状態モデルが前記クライアントコンピューティングデバイスに前記遠隔的にアクセスされるアプリケーションの変更された論理要素をネイティブに表示することを可能にするものであることと、を含む、方法。
【請求項２】
状態モデルが、前記遠隔的にアクセスされるアプリケーションを前記クライアントコンピューティングデバイスで表示するために用いられる、請求項１に記載の方法。
【請求項３】
前記拡張状態モデルを、前記非連結アプリケーション拡張に関連付けられる複数のタグを有するマークアップ言語文書として提供することをさらに含む、請求項１乃至２のいずれかに記載の方法。
【請求項４】
前記非連結アプリケーション拡張を前記アプリケーション層で提供することと、
アプリケーション層から前記クライアント層へと前記拡張状態モデルを通信することと、
をさらに含む、請求項１乃至３のいずれかに記載の方法。
【請求項５】
前記拡張状態モデルが、前記遠隔的にアクセスするアプリケーションによって、前記アプリケーション層で修正される、請求項１乃至４のいずれかに記載の方法。
【請求項６】
双方向デジタル表層を前記非連結アプリケーション拡張として提供することをさらに含む、請求項１乃至５のいずれかに記載の方法。
【請求項７】
前記双方向デジタル表層内で入力を受け取ることと、
前記拡張状態モデルの中の前記第２の情報において前記入力を表すことと、
をさらに含む、請求項６に記載の方法。
【請求項８】
前記入力が、前記クライアントコンピューティングデバイスのそれぞれでユーザに関連付けられる、請求項７に記載の方法。
【請求項９】
前記入力を、ｘ−ｙ座標として前記クライアントコンピューティングデバイスのディスプレイ内に表すことをさらに含む、請求項７乃至８のいずれかに記載の方法。
【請求項１０】
前記クライアントコンピューティングデバイスのそれぞれで、場所の表示をユーザに提供するために、マウスカーソル位置データをマウス入力イベントから分離することをさらに含む、請求項６乃至９のいずれかに記載の方法。
【請求項１１】
前記入力と前記遠隔的にアクセスされるアプリケーションとの間のやりとりを無効にするためのユーザコントロールを提供することをさらに含む、請求項７乃至９のいずれかに記載の方法。
【請求項１２】
前記拡張状態モデルに含まれる情報に従って、前記双方向デジタル表層において通知を提供することをさらに含む、請求項６乃至１１のいずれかに記載の方法。
【請求項１３】
前記通知は、ネットワーク状態インジケータ、ユーザ参加インジケータ、およびユーザコントロールインジケータのうちの少なくとも１つを含む、請求項１２に記載の方法。
【請求項１４】
遠隔的にアクセスされるアプリケーションに対して非連結アプリケーション拡張を提供する方法であって、
アプリケーション層と、サーバ層と、クライアント層と、を備える、階層型遠隔アクセスフレームワークであって、協働セッション中であり、および前記遠隔的にアクセスされるアプリケーションにアクセスしている、前記クライアント層の中のクライアントコンピューティングデバイス間で、状態モデルにおいて前記遠隔的にアクセスされるアプリケーションに関する第１の情報を通信する、階層型遠隔アクセスフレームワークを提供し、ここで状態モデルが前記クライアントコンピューティングデバイスに前記遠隔的にアクセスされるアプリケーションの論理要素をネイティブに表示することを可能にするものであることと、
前記前記遠隔的にアクセスされるアプリケーションを実行するサーバによって、前記前記遠隔的にアクセスされるアプリケーションの画面又はアプリケーションデータに従って前記状態モデルを更新し、前記状態モデルの前記更新を前記クライアント層に送信することと、
前記クライアント層の中のクライアントアクセスアプリケーションプログラムによって、クライアント層ユーザインターフェイスプログラムから受信した入力データに従って前記状態モデルを更新し、前記状態モデルの前記更新を前記サーバ層に送信することとすることと、
前記サーバ層、前記クライアント層、および前記アプリケーション層のうちの少なくとも１つにおいて、前記非連結アプリケーション拡張を提供することであって、前記非連結アプリケーション拡張は、前記クライアントコンピューティングデバイスにおいて、前記遠隔的にアクセスされるアプリケーションとは独立した機能を提供することによって前記遠隔的にアクセスされるアプリケーションを強化するものであることと、
前記非連結アプリケーション拡張に関連付けられる前記機能が、前記クライアントコンピューティングデバイスで有効となるように、拡張状態モデルにおいて前記非連結アプリケーション拡張に関する第２の情報を通信することと、
前記クライアントコンピューティングデバイスを含む前記協働セッションの間に、前記アプリケーションと前記非連結アプリケーション拡張の状態が同期するように、それぞれ、前記状態モデル及び前記拡張状態モデルを通信することと、
前記クライアントコンピューティングデバイス又は遠隔アプリケーションサーバの少なくとも１つによって、前記状態モデル更新及び前記拡張状態モデル更新を受信することと、
前記状態モデルの更新及び前記拡張状態モデルの更新に基づいて更新された状態モデルを作成し、ここで前記更新された状態モデルが前記クライアントコンピューティングデバイスに前記遠隔的にアクセスされるアプリケーションの変更された論理要素をネイティブに表示することを可能にするものであることと、を含む、方法。
【請求項１５】
前記非連結アプリケーション拡張として双方向デジタル表層を提供することと、
前記双方向デジタル表層内で入力を受け取ることと、
前記拡張状態モデル中の前記第２の情報において前記入力を表すことと、
をさらに含む、請求項１４に記載の方法。
【請求項１６】
前記入力は、前記クライアントコンピューティングデバイスのそれぞれでユーザに関連付けられ、前記入力は、前記協働セッション中のそれぞれのユーザに対して色分けされる、請求項１５に記載の方法。
【請求項１７】
前記協働セッション中に場所の表示をユーザに提供するために、マウスカーソル位置データをマウス入力イベントから分離することをさらに含み、前記表示は、前記協働セッション中に特定のユーザに関連付けられる、請求項１５乃至１６のいずれかに記載の方法。
【請求項１８】
前記協働セッション中のどのユーザが前記双方向デジタル表層を制御しているかを指定するために、制御機構を提供することをさらに含む、請求項１５乃至１７のいずれかに記載の方法。
【請求項１９】
前記非連結アプリケーション拡張として双方向デジタル表層を提供することと、
前記クライアントコンピューティングデバイスにおいて前記拡張状態モデルで前記第２の情報を受け取ることと、
前記第２の情報に従って前記双方向デジタル表層において通知を提供することと、
をさらに含む、請求項１４乃至１８のいずれかに記載の方法。
【請求項２０】
前記通知は、ネットワーク状態インジケータ、ユーザ参加インジケータ、およびユーザ制御インジケータのうちの少なくとも１つを含む、請求項１９に記載の方法。
【請求項２１】
コンピューティングデバイスのプロセッサによって実行されると、遠隔的にアクセスされるアプリケーションに非連結アプリケーション拡張を提供する方法を行うように、コンピュータで実行可能な命令を含む、有形コンピュータ可読媒体であって、前記方法は、
アプリケーション層と、サーバ層と、およびクライアント層と、を備える、階層型遠隔アクセスフレームワークであって、前記クライアント層の中の、前記遠隔的にアクセスされるアプリケーションにアクセスしているクライアントコンピューティングデバイス間で、状態モデルにおいて前記遠隔的にアクセスされるアプリケーションに関する第１の情報と、前記非連結アプリケーション拡張に関する第２の情報とを通信し、ここで状態モデルが前記クライアントコンピューティングデバイスに前記遠隔的にアクセスされるアプリケーションの論理要素をネイティブに表示することを可能にするものである、階層型遠隔アクセスフレームワークを提供することと、
前記クライアント層の中のクライアントアクセスアプリケーションプログラムによって、クライアント層ユーザインターフェイスプログラムから受信した入力データに従って前記状態モデルを更新し、前記状態モデルの前記更新を前記サーバ層に送信することとすることと、
前記クライアント層において、前記非連結アプリケーション拡張を提供することであって、前記非連結アプリケーション拡張は、前記クライアントコンピューティングデバイスにおいて、前記遠隔的にアクセスされるアプリケーションとは独立した機能を提供することによって前記遠隔的にアクセスされるアプリケーションを強化するものであることと、  前記クライアント層の中のクライアントアクセスアプリケーションによって、前記非連結アプリケーション拡張に関連付けられる前記機能が、前記クライアントコンピューティングデバイスのうちの少なくとも１つの中で有効となるように、前記非連結アプリケーション拡張に関する前記第２の情報を含むように拡張状態モデルを更新することと、
前記クライアントコンピューティングデバイスを含むセッションの間に、前記アプリケーションと前記非連結アプリケーション拡張の状態が同期するように、それぞれ、前記状態モデル及び前記拡張状態モデルを通信することと、
前記クライアントコンピューティングデバイス又は遠隔アプリケーションサーバの少なくとも１つによって、前記状態モデル更新及び前記拡張状態モデル更新を受信することと、
前記状態モデルの更新及び前記拡張状態モデルの更新に基づいて更新された状態モデルを作成し、ここで前記更新された状態モデルが前記クライアントコンピューティングデバイスに前記遠隔的にアクセスされるアプリケーションの変更された論理要素をネイティブに表示することを可能にするものであることと、を含む、有形コンピュータ可読媒体。
【請求項２２】
前記第１の情報にアクセスすることなく、前記非連結アプリケーション拡張を実行する命令をさらに含む、請求項２１に記載の有形コンピュータ可読媒体。
【請求項２３】
前記非連結アプリケーション拡張として、双方向デジタル表層を提供するための命令をさらに含む、請求項２１乃至２２のいずれかに記載の有形コンピュータ可読媒体。
【請求項２４】
前記双方向デジタル表層内で入力を受け取ることと、
前記拡張状態モデルの中の前記第２の情報において前記入力を表すことと、
のための命令をさらに備える、請求項２３に記載の有形コンピュータ可読媒体。
【請求項２５】
前記拡張状態モデルに含まれる情報に従って、前記双方向デジタル表層において通知を提供する命令をさらに備える、請求項２３乃至２４のいずれかに記載の有形コンピュータ可読媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
サービス、アプリケーションプログラム、およびデータに対する遍在する遠隔アクセスは、ブロードバンドならびにワイヤレスネットワークアクセスの成長および可用性によって、当たり前のものとなった。したがって、ユーザは、増え続けている種々のクライアントデバイス（例えば、モバイルデバイス、タブレットコンピューティングデバイス、ラップトップ／ノートブック／デスクトップコンピュータなど）を使用してアプリケーションプログラムおよびデータにアクセスする。データは、３Ｇおよび４Ｇモバイルデータネットワーク、例えばＷｉＦｉおよびＷｉＭａｘのようなワイヤレスネットワーク、有線ネットワークなどを含む種々のネットワークを通じて、遠隔サーバからデバイスに通信され得る。クライアントは、多くの異なるネットワーク帯域幅や待ち時間で、サービス、アプリケーションプログラムおよびデータを提供するサーバに接続し得る。
【０００２】
かかる環境において、アプリケーションはまた、協働セッションにおいて遠隔のユーザの間で共用され得る。しかしながら、共用する際、ユーザは、共用されるアプリケーションによって提供される機能のみに限定される場合があり、それ故に、協働セッションを限定する。
【発明の概要】
【０００３】
本願では、遠隔アクセスフレームワークにおいて非連結アプリケーション拡張を提供するためのシステムおよび方法が開示される。本開示に従い、遠隔的にアクセスされるアプリケーションに対して非連結アプリケーション拡張を提供する方法が提供される。本方法は、アプリケーション層と、サーバ層と、クライアント層と、を備える、階層型遠隔アクセスフレームワークであって、遠隔的にアクセスされるアプリケーションにアクセスしている、クライアントコンピューティングデバイス間で、遠隔的にアクセスされるアプリケーションに関する第１の情報を通信する、階層型遠隔アクセスフレームワークを提供することと、サーバ層において、サーバ遠隔アクセスアプリケーションを提供することと、クライアント層において、クライアント遠隔アクセスアプリケーションを提供することと、クライアント層で非連結アプリケーション拡張を提供することであって、非連結アプリケーション拡張は、クライアントコンピューティングデバイスにおいて、遠隔的にアクセスされるアプリケーションとは独立した機能を提供する、提供することと、非連結アプリケーション拡張に関連付けられる機能が、クライアントコンピューティングデバイスのうちの少なくとも１つで有効となるように、非連結アプリケーション拡張に関する第２の情報を含むように拡張状態モデルを更新することと、を含み得る。
【０００４】
他の態様に従い、遠隔的にアクセスされるアプリケーションに対して非連結アプリケーション拡張を提供する方法が提供される。本方法は、アプリケーション層と、サーバ層と、クライアント層と、を備える、階層型遠隔アクセスフレームワークであって、遠隔的にアクセスされるアプリケーションにアクセスしている、協働セッション中であるクライアントコンピューティングデバイス間で、遠隔的にアクセスされるアプリケーションに関する第１の情報を通信する、階層型遠隔アクセスフレームワークを提供することと、サーバ層において、サーバ遠隔アクセスアプリケーションを提供することと、クライアント層において、クライアント遠隔アクセスアプリケーションを提供することと、サーバ層、クライアント層、およびアプリケーション層のうちの少なくとも１つにおいて、非連結アプリケーション拡張を提供することであって、非連結アプリケーション拡張は、クライアントコンピューティングデバイスにおいて、遠隔的にアクセスされるアプリケーションとは独立した機能を提供する、提供することと、非連結アプリケーション拡張に関連付けられる機能が、クライアントコンピューティングデバイスで有効となるように、拡張状態モデルにおいて非連結アプリケーション拡張に関する第２の情報を通信することと、を含み得る。
【０００５】
また他の態様に従い、コンピューティングデバイスのプロセッサによって実行されると、遠隔的にアクセスされるアプリケーションに非連結アプリケーション拡張を提供する方法が行われるように、コンピュータで実行可能な命令を含む有形コンピュータ可読媒体が提供される。本命令は、アプリケーション層と、サーバ層と、およびクライアント層と、を備える、階層型遠隔アクセスフレームワークであって、遠隔的にアクセスされるアプリケーションにアクセスしているクライアントコンピューティングデバイス間で、遠隔的にアクセスされるアプリケーションに関する第１の情報と、非連結アプリケーション拡張に関する第２の情報とを通信する、階層型遠隔アクセスフレームワークを提供することと、クライアント層において、クライアント遠隔アクセスアプリケーションを提供することと、クライアント層において、非連結アプリケーション拡張を提供することであって、非連結アプリケーション拡張は、クライアントコンピューティングデバイスに、遠隔的にアクセスされるアプリケーションとは独立した機能を提供する、提供することと、非連結アプリケーション拡張に関連付けられる機能が、クライアントコンピューティングデバイスのうちの少なくとも１つの中で有効となるように、非連結アプリケーション拡張に関する第２の情報を含むように拡張状態モデルを更新することと、を含み得る。
【０００６】
以下の図面および詳細な説明を検討することによって、当業者には他のシステム、方法、特徴および／または利点が明らかとなる、あるいは明らかになり得る。そのようなすべての追加のシステム、方法、特徴および／または利点は、この説明に含まれ、添付のクレームによって保護されることが意図される。
【０００７】
図面における構成要素は、必ずしも互いに対して一定の縮尺であるとは限らない。同様の参照番号は、いくつかの図面を通して対応する部分を示している。
【図面の簡単な説明】
【０００８】
【図１】コンピュータネットワークを介し、遠隔デバイスにおいて、アプリケーションに対する遠隔アクセスを提供するためのシステムを例示する、簡略化されたブロック図である。
【図２】本開示に従う状態モデルである。
【図３Ａ】図１のシステムのさらなる態様を例示する。
【図３Ｂ】図１および図２の環境内の、拡張状態モデルおよびアプリケーション状態モデルのデータフローを例示する。
【図４Ａ】ＸＭＬ状態モデル文書内のツリーを例示する。
【図４Ｂ】図４ＡのＸＭＬ状態モデルに関連付けられる体軸および冠状医用画像ビューの例を例示する。
【図４Ｃ】同上。
【図５Ａ】クライアントコンピューティングデバイスのユーザの間で、協働セッション中に共用され得るアプリケーションを含む、ユーザインターフェースの例を例示する。
【図５Ｂ】同上。
【図６Ａ】図１〜図５のシステム内で行われる動作例のフロー図を例示する。
【図６Ｂ】図１〜図５のシステム内で行われる他の動作例のフロー図を例示する。
【図７】例示的なコンピューティングデバイスを例示する。
【発明を実施するための形態】
【０００９】
特に定義されない限り、本明細書において使用されるすべての技術的および科学的な用語は、当業者によって一般的に理解されるものと同一の意味を有する。本明細書において説明されるものと類似または同等の方法および用具が、本開示の実施または実験において使用され得る。実施態様は、アプリケーションに遠隔的にアクセスすることについて説明されることになるが、実施態様はそれに限定されるものではなく、遠隔デバイスを介して任意の種類のデータまたはサービスに遠隔的にアクセスすることに適用可能であることが、当業者に明らかになるであろう。
【００１０】
図１を参照すると、コンピュータネットワークを介してアプリケーション、データまたは他のサービスに対する遠隔アクセスを提供するためのシステム１００である。本システムは、例えば、インターネットなどのコンピュータネットワーク１１０を介してサーバ１０２Ｂに接続される、例えば、ＩＰＨＯＮＥ１１２ＡまたはＢＬＡＣＫＢＥＲＲＹ１１２Ｂなどの無線携帯用デバイスなどのクライアントコンピューティングデバイス１１２Ａまたは１１２Ｂを備える。同様に、クライアントコンピューティングデバイスはまた、通信ネットワーク１１０によってサーバ１０２Ｂに接続されるデスクトップ／ノートブックパーソナルコンピュータ１１２Ｃまたはタブレットデバイス１１２Ｎを含み得る。通信ネットワーク１１０への接続は、任意の種類の接続、例えば、Ｗｉ‐Ｆｉ（ＩＥＥＥ８０２．１１ｘ）、ＷｉＭａｘ（ＩＥＥＥ８０２．１６）、イーサネット、３Ｇ、４Ｇなどとすることができることに留意する。
【００１１】
サーバ１０２Ｂは、例えば、コンピュータネットワーク１１０を介してローカルエリアネットワーク（ＬＡＮ）１０９に接続されるか、あるいは、コンピュータネットワーク１１０に直接的に接続されてもよい。例えば、ＬＡＮ１０９は、病院、銀行、大企業、または政府機関等のような施設の内部コンピュータネットワークである。典型的には、そのような施設は依然として、ＬＡＮ１０９に接続されたメインフレームコンピュータ１０２Ａおよびデータベース１０８を使用する。多くのアプリケーションプログラム１０７Ａが、メインフレームコンピュータ１０２Ａのメモリ１０６Ａ内に格納され得、プロセッサ１０４Ａ上で実行され得る。同様に、多くのアプリケーションプログラム１０７Ｂが、サーバ１０２Ｂのメモリ１０６Ｂ内に格納され得、プロセッサ１０４Ｂ上で実行され得る。アプリケーションプログラム１０７Ａおよび１０７Ｂは、遠隔アクセスのために提供される「サービス」であり得る。メインフレームコンピュータ１０２Ａ、サーバ１０２Ｂ、およびクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃまたは１１２Ｎは、図７の汎用コンピューティングデバイスにおいて示したものなどのハードウェアを用いて実装され得る。
【００１２】
クライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎは、データおよび／または画像を人間に理解可能な仕方で表示するためのユーザのやりとりを提供するために、およびアプリケーションプログラムとやりとりするために受け取ったユーザ命令に従って、例えば、タッチスクリーン１１４Ａを持つ画像ディスプレイ、またはそれぞれ、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ、１１２Ｎの画像ディスプレイ１１４Ｂ／１１４Ｎおよびキーボード１１６Ｂ／１１６Ｃを用いて、ユーザ入力データを決定するために設計され得る。例えば、クライアント遠隔アクセスアプリケーションは、プロセッサ１１８Ａ、１１８Ｂ、１１８Ｃ、１１８Ｎ上で実行可能なコマンドを実行することによって行われ、コマンドはクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ、１１２Ｎのメモリ１２０Ａ、１２０Ｂ、１２０Ｃ、１２０Ｎにおいてそれぞれ格納されている。
【００１３】
代替的または追加的に、ユーザインターフェースプログラムは、サーバ１０２Ｂ上で（アプリケーションプログラム１０７Ｂの１つとして）実行され、これは次にＵＲＬを介して、例えば、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ上で実行されるウェブブラウザなどの一般的クライアントアプリケーションによってアクセスされる。ユーザインターフェースは、例えば、ハイパーテキストマークアップ言語ＨＴＭＬ５を用いて実現される。いくつかの実施態様において、サーバ１０２Ｂは、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ…１１２Ｎと協働セッションに参加し得る。例えば、アプリケーションプログラム１０７Ｂのうちの前述の１つは、サーバ１０２Ｂが、アプリケーションプログラム１０７Ａまたは別のアプリケーションプログラム１０７Ｂおよびクライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎと協働的にやりとりすることを可能にし得る。したがって、サーバ１０２Ｂおよび参加中のクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ…１１２Ｎのそれぞれは、アプリケーションプログラムのディスプレイの同期ビューを提示し得る。
【００１４】
クライアント遠隔アクセスアプリケーション（１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎのうちの任意のもの、または、アプリケーションプログラム１０７Ｂのうちの１つ）とのサーバ遠隔アクセスアプリケーション１１１Ｂの動作は、図２に例示されるように、状態モデル２００と連携して行われる。サーバ遠隔アクセスプログラムの例は、カナダ・アルバータ州のＣａｌｇａｒｙ  Ｓｃｉｅｎｔｉｆｉｃから入手可能なＰＵＲＥＷＥＢにおいて提供される。実行されると、クライアント遠隔アクセスアプリケーションは、ユーザインターフェースプログラムから受け取ったユーザ入力データに従って状態モデル２００を更新する。遠隔アクセスアプリケーションは、更新された状態モデル２００に従って制御データを生成し、サーバ１０２Ｂ上で実行しているサーバ遠隔アクセスアプリケーション１１１Ｂに制御データを提供し得る。
【００１５】
アプリケーションプログラム１０７Ａまたは１０９７Ｂからアプリケーションデータを受け取ると、サーバ遠隔アクセスアプリケーション１１１Ｂは、スクリーンまたはアプリケーションデータに従って状態モデル２００を更新し、更新された状態モデル２００に従って表示データを生成し、クライアントコンピューティングデバイス上のクライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎに表示データを提供する。状態モデル２００は、アプリケーションプログラムの論理要素と、対応するアプリケーションプログラムの状態との関連付けを含み、論理要素は階層的に構成されている。例えば、論理要素は、アプリケーションプログラムユーザインターフェースを構成する、スクリーン、メニュー、サブメニュー、ボタンなどであり得る。これは、クライアントデバイスが、例えば、論理要素をネイティブに表示することを可能にする。したがって、携帯電話上に提示されるアプリケーションプログラムのメニューは、携帯電話のネイティブメニューのように見えることになる。同様に、デスクトップコンピュータ上に提示されるアプリケーションプログラムのメニューは、デスクトップコンピュータオペレーティングシステムのネイティブメニューのように見えることになる。
【００１６】
状態モデル２００は、論理要素のそれぞれがアプリケーションプログラム１０７Ａまたは１０７Ｂの対応する状態に関連付けられるように決定される。状態モデル２００は、論理要素がユーザのやりとりに関連付けられるように決定され得る。例えば、アプリケーションプログラムの論理要素は、論理要素が遷移要素を有し、それぞれの遷移要素が状態モデル２００の変更を、制御データおよびそれに関連するアプリケーション表現データのうちの１つに関連付けるように決定される。
【００１７】
いくつかの実施態様において、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ…１１２Ｎおよび／またはサーバ１０２Ｂのうちの２つ以上は、アプリケーションプログラム１０７Ａまたは１０７Ｂと協働的にやりとりし得る。したがって、協働セッションに参加中のクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ…１１２Ｎのそれぞれおよび／またはサーバ１０２Ｂおよび／またはメインフレームコンピュータ１０２Ａ間で状態情報を通信することにより、参加中のクライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃ…１１２Ｎのそれぞれは、アプリケーションプログラム１０７Ａまたは１０７Ｂのディスプレイの同期ビューを提示し得る。
【００１８】
いくつかの実施態様に従い、システム１００は、非連結または分離アプリケーション拡張を提供し得る。かかる拡張は、サーバ遠隔アクセスアプリケーション１１１Ｂ（例えば、プラグインとして）、クライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎ（例えば、クライアントソフトウェア開発キット（ＳＤＫ）の一部として）、アプリケーション１０７Ｂのうちの１つ（例えば、サーバＳＤＫの一部として）、またはそれらの組み合わせの一部として、アプリケーションプログラム１０７Ａまたは１０７Ｂによって別様には提供されない特徴および機能を提供するために提供される。これらは、以下で図３Ａ〜図３Ｂに関連してより完全に説明される。これらの特徴および機能は、これらが遠隔アクセスアプリケーションと一体であるため、アプリケーションプログラム１０７Ａまたは１０７Ｂを修正する必要なしに提供され得る。したがって、非連結アプリケーション拡張は、アプリケーション自体に囚われることがなく、すなわち、アプリケーション拡張は、サーバ遠隔アクセスアプリケーション１１１Ｂおよびクライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎ内に表示されているアプリケーションに依存しない。さらに、アプリケーション拡張は、サーバ遠隔アクセスアプリケーション１１１Ｂまたはクライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎによって示されるコントロール内で利用可能とされ得る。
【００１９】
例えば、「双方向デジタル表層」が、協働セッションへの参加者がそのセッション中に実行中であるアプリケーションの上に注釈をつけることを可能にするために、アプリケーション拡張として提供され得る。かかる層は、そのセッション中に実行中であるアプリケーションの上に透過的に重ねられるという点において、「アセテート層」として機能し得る。双方向デジタル表層は、アプリケーションと双方向デジタル表層の両方の協働を提供するために、ユーザが線、矢印、記号、走り書きなどをアプリケーションの上に描くことを可能にするためのメモ書きツールのように機能する。図４Ａおよび図４Ｂを参照して下で説明されるように、双方向デジタル表層は、図１の環境内のコントロールとして利用可能である。
【００２０】
図３Ａ〜図３Ｂは、図１〜図２のシステム１００の態様をより詳しく例示する。図３Ａは、システム１００を、階層型ソフトウェアスタックを有するものとして例示する。クライアント遠隔アプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎは、クライアント層の中のクライアントソフトウェア開発キット（ＳＤＫ）３０４の上にあってもよい。クライアント層は、サーバ層の中のサーバ遠隔アクセスアプリケーション１１１Ｂに対して通信する。サーバ層は、アプリケーション１０７Ａ／１０７Ｂの上にある状態マネージャ３０８、およびアプリケーション層の中のサーバＳＤＫ３１２に対して通信する。上記のように、アプリケーション拡張は、この層のうちの任意のもの、すなわち、プラグイン３０６としてサーバ層内に、クライアントアプリケーション拡張３０２としてクライアント層内に、アプリケーション拡張３１０としてアプリケーション層内に、またはそれらの組み合わせにおいて実装され得る。状態モデル２００は、層間で通信され、アプリケーション拡張３０２ならびに３１０、およびプラグイン３０６によって層のうちの任意のものの中で修正され得る。
【００２１】
また別の例では、アプリケーション層において、アプリケーション拡張３１０は、アプリケーション１０７Ａ／１０７Ｂを強化するための新規の機能を含む、別個の実行可能なプログラムであり得る。アプリケーション拡張３１０は、状態モデル２００を使用することができ、およびそれ自身の文書３１４（すなわち、アプリケーション拡張３１０の状態モデル）を生成することができ、これは、（１）状態モデル２００からの情報およびアプリケーション拡張３１０に関連付けられた情報、（２）アプリケーション拡張３１０に関連付けられた情報のみ、または（３）状態モデル情報および拡張状態モデル３１４に関連付けられた情報のうちのいくらかの組み合わせを含み得る。拡張状態モデル３１４は、サーバ遠隔アクセスアプリケーション１１１Ｂに対して通信されることができ、ここでサーバ遠隔アクセスアプリケーション１１１Ｂは、拡張状態モデル３１４における情報を含むように更新された状態モデル２００を作成することができる。代替的または追加的に、クライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎは、状態モデル２００および拡張状態モデル３１４の両方を受け取ることができ、およびクライアント遠隔アクセスアプリケーションは、拡張状態モデル３１４における情報を含むように、更新された状態モデル２００を作成することができる。
【００２２】
図３Ｂは、図１および図２の環境内の拡張状態モデル３１４およびアプリケーション状態モデル２００のデータフローを例示する。例示するように、アプリケーション拡張３０２は、クライアントコンピューティングデバイス間、例えば、クライアントコンピューティングデバイス１２１Ａとクライアントコンピューティングデバイス１２１Ｂとの間で、拡張状態モデル３１４を通信する。例えば、クライアント遠隔アクセスアプリケーション１２１Ａおよび１２１Ｂは、拡張状態モデル３１４の同期を可能にするために、アプリケーション拡張３１０によって用いられる通信機構であり得る。同時に、アプリケーション状態モデル２００は、クライアントコンピューティングデバイス１２１Ａ、クライアントコンピューティングデバイス１２１Ｂ、および、例えば、サーバ１０２との間で通信される。したがって、図３Ｂのデータフローに従い、拡張３１０およびアプリケーション１０７Ｂの状態は、協働セッション中の種々な参加者間で同期され得る。追加的にまたは代替的に、状態は、アプリケーション１０７Ｂから拡張３１０を非連結するために、分離して保持される。
【００２３】
概して、双方向デジタル表層は、ユーザに情報を提供するための任意の目的のために、および／または協働セッション中のユーザによって共用されているアプリケーションとは独立した特徴および機能を提供するために用いられ得る。双方向デジタル表層は、かかる特徴を、アプリケーションの実行と同時に、またはスタンドアロン型アプリケーションとして提供し得る。例えば、双方向デジタル表層は、アプリケーションが実行しているときにユーザが表示に注釈を付けることを可能にし、ユーザによるポインティング動作を可能にするため、および状態またはユーザ可用性についての通知を提供するために用いられ得る。双方向デジタル表層は、ユーザコントロールによって有効および無効にされることができ、および協働セッション内のセッションリーダまたはそれぞれの参加者によって制御され得る。追加的な特徴が、上述のフレームワーク内で提供され得る。上記に記した特徴の詳細をここで提供する。
【００２４】
図４Ａは、双方向デジタル表層などの非連結アプリケーション拡張を記述するＸＭＬ状態モデル文書内のツリーを例示する。図４Ｂおよび図４Ｃは、協働セッション内でユーザに提示されるビューを例示するために、図４ＡのＸＭＬ状態モデルに関連付けられる体軸および冠状医用画像ビューの例を例示する。ＸＭＬツリーの内部には、１つ以上のセッションを含むと定義される協働ノードがある。セッションは、双方向デジタル表層などのアプリケーション拡張に関連付けられる。セッション中の参加者は、ＵｓｅｒＩｎｆｏタグで、例えばＧｌｅｎとＪａｃｑｕｉｅという名前によって識別される。それぞれの参加者は、双方向デジタル表層内でユーザの注釈を表すために、デフォルトの色（ＤｅｆａｕｌｔＣｏｌｏｒ）を割り当てられる（例えば、Ｇｌｅｎには青、Ｊａｃｑｕｉｅには緑）。任意の表示可能な色が協働セッションへの参加者のためのデフォルトの色として選択され得る。第１のユーザが青を割り当てられ、第２のユーザが緑を割り当てられ、第３のユーザがオレンジを割り当てられるなどのように、色の優先順位付けが定義され得る。
【００２５】
協働ノードの下にはまた、１つ以上のビューが定義される。図４Ａの例において、ＧｌｅｎとＪａｃｑｕｉｅは、医用画像アプリケーション内で協働している場合がある。したがって、定義される２つのビュー、体軸ビューおよび冠状ビュー（図４Ｂおよび図４Ｃを参照）が存在し得る。セッションはこれらのビューのそれぞれと関連付けられ、そこではセッションは協働へのユーザを含む。体軸ビューについて、Ｇｌｅｎのセッションはそこにカーソル位置（ＣＰ）およびある特定のマークアップ、例えば、走り書き、矢印および円などに関連付けられている。体軸ビューにおいて、Ｊａｃｑｕｉｅは関連付けられたカーソル位置を有するが、双方向デジタル表層に対していかなるマークアップも成していないため、Ｊａｃｑｕｉｅの体軸セッションビューに関連付けられる追加的情報は存在しない。冠状セッション下では、それぞれのユーザはそこに関連付けられるカーソル位置のみを有する。
【００２６】
上記の情報は、図４Ｂおよび図４Ｃにおける体軸ビューに例示されるようにクライアント遠隔アクセスアプリケーションによって表示され、これは、それぞれＧｌｅｎとＪａｃｑｕｉｅに関連付けられるクライアントコンピューティングデバイス上に表示される。図４Ｂにおいて、Ｇｌｅｎは中型ディスプレイを有するラップトップなどのクライアントコンピューティングデバイス上でアプリケーションを閲覧している場合がある。したがって、Ｇｌｅｎは、体軸ビューと冠状ビューの両方を一緒に閲覧することができる。図４Ｃを参照すると、Ｊａｃｑｕｉｅは、携帯用無線デバイスなどのより小型のコンピューティングデバイス上でアプリケーションを閲覧している場合がある。したがって、かかるデバイスのより限定された表示面積により、体軸ビューのみが提示され得る。
【００２７】
下記は、図４Ａのツリーに従う状態モデル２００のセクション例である。状態モデル２００は、例えば、拡張マークアップ言語（ＸＭＬ）文書によって表され得る。状態モデル２００の他の表現が用いられ得る。アプリケーションプログラムと双方向デジタル表層に関する情報とが、状態モデル２００の中で通信される。双方向デジタル表層はアプリケーションから非連結であるため、双方向デジタル表層に関する情報は、アプリケーション状態の一部ではない（すなわち、これはアプリケーションから抽出される）。むしろ、双方向デジタル表層情報、すなわち拡張状態情報は、協働タグ間に示すように、状態モデル２００において別に保持される。他の非連結アプリケーション拡張が、状態モデル２００の中で同様に定義され得る。
<ApplicationState>
<Screens>
<Screen id=”0”name=”Axial”>
<Fields>
<Field name=”name”description=”Name”default=””>
<Type fieldType=”Text”maxChars=”128”/>
<Validation/>
</Field>
</Fields>
</Screen>
<Screen id=”1”name=”Coronal”/>
</Screens>
<Screen Data>
<CurrentScreen id=”0”/>
<Screen id=”0”>
</Screen>
</ScreenData>
</ApplicationState>
<Collaboration>
<Sessions>
<UserInfo=”Glen”DefaultColor=”Blue”/>
<UserInfo=”Jacquie”DefaultColor=”Green”/>
</Sessions>
<Views>
<Axial>
<Sessions>
<UserName=”Glen”CP=”XY”Markups=”Scribble Arrow Circle”/>
<UserName=”Jacquie”CP=”XY”/>
</Sessions>
</Axial>
<Coronal>
<Sessions>
<UserName=”Glen”CP=”XY”/>
<UserName=”Jacquie”CP=”XY”/>
</Sessions>
</Coronal>
</Views>
</Collaboration>
【００２８】
アプリケーション（１０７Ａまたは１０７Ｂ）に関する情報は、ＸＭＬ状態モデルの第１の部分の中のＡｐｐｌｉｃａｔｉｏｎＳｔａｔｅノードに保持される。体軸ビューおよび冠状ビューに関連付けられるアプリケーションプログラムの異なる状態が、関連するトリガとともに定義される。例えば、体軸ビューでは、名前をユーザ入力データとして受け取り、およびこれを表示するために「フィールド」が定義される。非連結協働状態およびアプリケーション拡張状態（例えば、双方向デジタル表層）は、ＸＭＬ文書の第２の部分において保持される。
【００２９】
状態モデル２００は故に、アプリケーション自体に関する情報、アプリケーション拡張情報（例えば、双方向デジタル表層）、ビューについての情報、および注釈をどのように特定のビュー（例えば、体軸ビューに結び付けられた走り書き、矢印、円）に結び付けるかについてのセッション情報を含み得る。
【００３０】
図５Ａおよび図５Ｂは、協働セッション中に共用され得るアプリケーション５０２を含むユーザインターフェース５００の例を例示する。図５Ａおよび図５Ｂの例では、ユーザは、ユーザインターフェース５０２においてＭＩＣＲＯＳＯＦＴ  ＰＯＷＥＲＰＯＩＮＴなどのプレゼンテーションアプリケーションで協働し得る。本例では、ユーザは、例えば、会議のための食事のスケジュールを作成している。図５Ａに示すように、第１のクライアントコンピューティングデバイスのユーザは、クライアント遠隔アクセスアプリケーションを用いて共用コントロール５０４を起動し得る。共用コントロール５０４は、ユーザ間で共用され得るすべての利用可能なアプリケーションの一覧を提供し得る。本例では、５つのアプリケーション（例えば、イベントビューア、プレゼンテーションアプリケーション、スプレッドシート、動画再生プログラム、およびワードプロセッサ）が共用され得る。本開示の一態様に従い、共用コントロール５０４は、上述の双方向デジタル表層を起動する作画機能５０８を含む。共用コントロール５０４は、協働セッション中の別のユーザの遠隔クライアントコンピューティングデバイス上に示すように、ユーザインターフェースを表示する遠隔ビューミラー５１０を選択的に含み得る。
【００３１】
ユーザが作画機能５０８を起動すると、次に双方向デジタル表層は、セッション中のユーザによる注釈入力を協働的に表示するために、ユーザ入力を受け取るように動作可能である。上記のように、注釈は協働セッション中のユーザのそれぞれに色分けされ得る。図５Ｂを参照すると、双方向デジタル表層におけるアプリケーション５０２への注釈を含むユーザインターフェース５００が示される。例えば、Ｇｌｅｎは「Ｇｒｅａｔ」という単語を線で消し、「Ｓｍａｌｌ」という単語を鉛筆で書き入れている。別の例として、Ｊａｃｑｕｉｅは昼食の場所を線で消し、場所が不確定なためそれを「？」に置き換えている。このように、上記を考慮すれば、任意の種類の注釈が双方向デジタル表層を用いてなされ得ることは、当業者であれば理解するであろう。
【００３２】
図５Ｂは、例えば、協働セッション中の参加者のうちの少なくとも１人に関連付けられたネットワーク待ち時間があることを示すインジケータなどのインジケータ５２０をさらに例示する。例えば、回転する輪、グレーアウトされた領域などの反応インジケータは、待ち時間が所定の閾値を下回る際に提示され得る。かかるインジケータは、個々のユーザが異なるネットワーク応答特性を有する場合、協働中に有用であり得る。例えば、インジケータは、協働セッション中のだれかが遅れを経験しているいることがわかるように、すべてのユーザに対して提示され得る。インジケータは、例えば、閾値を下回るデータ転送速度を有する特定のリンクを計算するために用いられ得るタイミング情報について、拡張状態モデル３１４を調査する処理によって生み出され得る。
【００３３】
双方向デジタル表層の特徴に従い、ユーザは、互いのマウスカーソルを見ることができる。それぞれのクライアントは、双方向デジタル表層内で作成された注釈を消去し得る。双方向デジタル表層は、アプリケーションとは別に保存されてもよく、または元のアプリケーションによって使用され、意味のある方途で保存されてもよい。双方向デジタル表層はまた、協働セッションがダウンした場合、回復されることができるように、ブックマークを加える事ができる。
【００３４】
協働セッションの間、ユーザは、下層のアプリケーションプログラム１０７Ａ／１０７Ｂとやりとりせずに、ユーザインターフェース５００の領域を指し示すことを所望し得る。例えば、ユーザは、プレゼンテーション用のスライド資料集を作成している場合があり、ユーザインターフェース２００において表示されているスライド上の項目を「指し示す」ことを所望する場合がある。双方向デジタル表層は、かかる指示を協働セッション中の他のユーザに提供するために用いられ得る。
【００３５】
上記に対応するため、位置およびイベントデータが互いに独立してトリガされるように、マウスカーソル位置データを送信することが、マウス入力イベントをアプリケーション１０７Ａ／１０７Ｂに送信することと分離され得る。したがって、カーソル位置ツールが、そうでなければタブレットデバイス１１２Ｎのユーザがアプリケーションプログラム１０７Ａ／１０７Ｂとのかかるやりとりを所望しないときにやりとりをもたらす入力イベントなしで、カーソル情報を送信するように指図され得る。上記はカーソル位置について双方向デジタル表層を更新する単一の方法を、２つの方法に分離することによって達成されることができ、そのうちの１つは、カーソル位置更新を行い、そのうちの１つは、入力イベントを待ち行列に入れる。選択的にまたは追加的に、マウスカーソルは、かかるモードで動作しているとき、特性を変更し得る。例えば、マウスカーソルが指示目的に用いられる場合、カーソルは、他のユーザにカーソルが指示手段として使用中であることを示すため、太くなる、色を変更する、形を変更する、点滅するなどし得る。
【００３６】
上記はすべての種類のクライアントコンピュータのために実装されることができるが、特定の使用事例は、タッチセンサー式のインターフェース（例えば、タブレットデバイス１１２Ｎ）を有するモバイルデバイスのユーザが、ディスプレイ上で現在何を閲覧しているのかを他のユーザに示すことを所望する場合である。典型的に、タブレットデバイスのタッチは、アプリケーションプログラム１０７Ａ／１０７Ｂとのやりとりを表す。上記に従い、マウスカーソル位置データ（すなわち、タッチ位置）をマウス入力イベントの送信（すなわち、実際のタッチ）から分離することは、タブレットデバイス１１２Ｎのユーザがポインティングデバイスを有するクライアントコンピュータと類似の指示を出すことを可能にする。
【００３７】
上記と組み合わせ得るか、または別個に実装され得る別の態様では、注釈を、下層のアプリケーションプログラム１０７Ａ／１０７Ｂとやりとりせずに、双方向デジタル表層において作成することができ、および下層のアプリケーションプログラム１０７Ａ／１０７Ｂとのやりとりは、双方向デジタル表層内に注釈を作成するとは限らない。例えば、図５Ｂを参照すると、Ｇｌｅｎが「Ｇｒｅａｔ」という単語を線で消し、「Ｓｍａｌｌ」という単語を鉛筆で書き入れたとき、彼は下のスプレッドシート（すなわち、アプリケーションプログラム１０７Ａ／１０７Ｂ）を強調したり変更したりすることを所望しない場合がある。それ故に、共用コントロール５０４が下のアプリケーション１０７Ａ／１０７Ｂとのやりとりを無効にする選択肢とともに提供され得る。他方で、ＧｌｅｎはＪａｃｑｕｉｅにチュートリアルで同一のスプレッドシートをどのように編集するか指導することを所望し得る。この状況において、共用コントロール５０４を用いてアプリケーションプログラムとのやりとりを無効にしないことにより、双方向デジタル表層は、Ｇｌｅｎが現在マウスでどこを指しているかを指示するためのカーソルを示すことができ、下のアプリケーションプログラム１０７Ａ／１０７Ｂとのやりとりを継続することができる。
【００３８】
上記の作画機能に加えて、または代替的に、いくつかの実施態様において、双方向デジタル表層は、セッション内のユーザの表示、双方向デジタル表層を制御しているユーザ、ユーザが協働セッションに参入または退出したというインジケータ、画質の変更（ＪＰＥＧ縮小）が行われたかどうかなどの、他のインジケータを提供するために用いられ得る。概して、インジケータは、拡張状態モデル３１４において、インジケータの出現および／または消失をトリガするために用いられる情報を提供することによって有効とされ得る。いくつかの実施態様において、インジケータは、一時的にユーザに対して表示される。他の実施態様において、インジケータは、タブレットデバイス１１２Ｎ上のジェスチャ、マウスのクリックなどのユーザアクションがとられるまで留まり得る。
【００３９】
他の実施態様によれば、双方向デジタル表層は、協働セッションに参加中のユーザの名前へのアクセスを提供され得る。名前情報は、拡張状態モデル３１４において含まれてもよく、双方向デジタル表層拡張３１０を用いて協働セッション中に他のユーザに表示されてもよい。上記のように、それぞれのユーザは、双方向デジタル表層内のポインタ場所およびマークアップのために用いられ得る固有の色と関連付けられ得る。それぞれのユーザは、他のユーザのカーソル位置の可視性を切り替え得る。ユーザは、ユーザ自身のマークアップを消去してもよく、他のユーザのマークアップの可視性を切り替えてもよい。ユーザ間で、リーダが選択されてもよく、最初の作成者をデフォルトとしてもよい。リーダは、すべてのマークアップを消去してもよく、リーダシップを譲渡してもよい。リーダが協働セッションから脱落すると、リーダシップはそのセッション中の次の参加者に譲渡され得る。
【００４０】
上記を可能にするため、適切な表示およびコントロールを提供するために、拡張状態モデル３１４の中の変更に応答するためのクライアント側ＡＰＩが提供され得る。例えば、ＡＰＩは、ユーザインターフェース構成要素を組み立て、双方向デジタル表層において画像をレンダリングし、キャプチャ／クリップボード機能を提供し、取り消し／やり直し機能を提供し、画像／線の太さへの変更を提供し、フォント選択／サイズ／属性を提供し、色を選択し、テキストボックスを提供し、顔文字／アイコンを提供し、透かし（例えば、機密、下書き、ワーキングコピー）を提供するために提供され得る。
【００４１】
構成設定に基づき、ＡＰＩは、１人のユーザが双方向デジタル表層をオンにしたとき、双方向デジタル表層が全員にとって「オン」になるかどうか、個々のユーザが他のユーザとは独立して双方向デジタル表層の可視性を切り替え得るかどうか、またはリーダが双方向デジタル表層をオンに切り替えたときにのみ、これがオンになるかどうか決定し得る。ある特定の構成が、個別のクライアントが他のユーザのマークアップの可視性を切り替えるかどうか、またはリーダのみが全員のためにクライアントの可視性を制御し得るのかをＡＰＩが決定することを可能にし得る。また他の構成が、個別のクライアントが他のユーザのカーソル位置の可視性を切り替えるかどうか、またはリーダのみが全員のためにクライアントのカーソル可視性を制御し得るのかをＡＰＩが決定することを可能にし得る。リーダのみがすべての他のユーザのマークアップを消去し得るということが規定され得るが、しかしながら、誰でも自分自身のマークアップをいつでも消去することができる。
【００４２】
いくつかの実施態様において、双方向デジタル表層の状態が保存され得る。例えば、拡張状態モデル３１４は、後の読み出しのために、クライアントコンピューティングデバイス１１２Ａ、１１２Ｂ、１１２Ｃまたは１１２Ｎで保存され得る。やりとりセッションの間の期間にわたって受け取られた拡張状態モデル３１４内の状態を「再生」するために、再生オプションが提供され得る。ユーザは、双方向デジタル表層における作画を保存して、保存した画像の一覧から選択することを可能にされ得る。いくつかの実施態様において、画像は、一連のベクタとして、ユーザがその作画の編集を継続することができるようにロードされるＸＭＬファイルにおいて保存され得る。
【００４３】
それ故、前述したように、本開示は、アプリケーションの上に注釈を提供するために、独立して提供されることができ、ユーザによって協働的に用いられることができる双方向デジタル表層を提供する。また、より一般的に、本開示は、遠隔アクセス機構を通じて利用可能とされ得るアプリケーション拡張を提供する。アプリケーション拡張は、アプリケーション自体を修正する必要なしに、遠隔アクセス機構を通じてアプリケーションに強化をもたらす。
【００４４】
図６Ａは、図１〜図５のシステム内で行われる動作例のフロー図６００を例示する。前述のように、サーバ１０２Ｂのサーバ遠隔アクセスアプリケーション１１１Ｂは、１つ以上のアプリケーション１０７Ａまたは１０７Ｂにアクセスを提供し、これはクライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎによって表示される。６０２で、協働セッションへのユーザが、クライアント遠隔アクセスアプリケーションによって提供されるコントロールを起動する。コントロールは、例えば、共用コントロール５０４であり得る。
【００４５】
６０４で、双方向デジタル表層を起動するために、選択が受け取られる。例えば、ユーザは、共用コントロール６０４の中で作画機能５０８を選択し得る。６０６で、双方向デジタル表層の中でユーザ入力が受け取られる。ユーザ入力は、協働セッション中にユーザのうちの１人以上によって双方向デジタル表層上に描かれた線、矢印、くねった線、円などとして受け取られ得る。双方向デジタル表層は、そのセッション中に１人以上のユーザからの入力を協働的に受け取るように機能し得る。
【００４６】
６０８で、拡張状態モデルが更新される。例えば、拡張状態モデル３１４は、協働セッション中のユーザのそれぞれによって作成された注釈を表すために更新され得る。ユーザ入力が、円、線、四角、または他の幾何学的図形などの所定の図形である場合、拡張状態モデル３１４は、かかる図形をＸＹ座標を用いて表し得る。線については、ＸＹ座標は起点を定義することができ、あわせて線の長さも定義され得る。円については、座標点は中心であることができ、円を表すために半径がこの中心から定義され得る。くねった線は、一連の小さいベクタによって表されることができ、組み合わされるとくねった線の形を定義する。ピクセルでなく座標の使用は、協働セッションに参加しているクライアントコンピューティングデバイスの種々の表示に図形の拡大縮小を提供する。
【００４７】
６１０で、拡張状態モデルが協働セッション中の参加者に通信される。図３Ａおよび３Ｂで説明されるように、拡張状態モデル３１４は、それぞれのクライアントコンピューティングデバイスが同期されるように、クライアントコンピューティングデバイス間で受け渡され得る。状態モデル２００もまた、アプリケーションに関して、それぞれのクライアントコンピューティングデバイスおよびサーバが同期されるように、クライアントコンピューティングデバイスおよびサーバ間で受け渡され得る。６１２で、状態モデル（複数可）の内容を反映するために、参加者の表示が更新される。それぞれのクライアントコンピューティングデバイスおよびサーバのディスプレイは、拡張状態モデル３１４および／または状態モデル２００の現在の状態を反映するために更新され得る。
【００４８】
図６Ｂは、図１〜図５のシステム内で行われる、動作例のフロー図６５０を例示する。前述のように、サーバ１０２Ｂのサーバ遠隔アクセスアプリケーション１１１Ｂは、１つ以上のアプリケーション１０７Ａまたは１０７Ｂにアクセスを提供し、これはクライアント遠隔アクセスアプリケーション１２１Ａ、１２１Ｂ、１２１Ｃ、１２１Ｎによって表示される。６５２で、協働セッションへのユーザが、クライアント遠隔アクセスアプリケーションによって提供されるコントロールを起動する。コントロールは、例えば、共用コントロール５０４であり得る。
【００４９】
６５４で、双方向デジタル表層が起動される。例えば、ユーザは、共用コントロール６０４の中の機能を選択してもよく、または双方向デジタル表層はステップ６５２で自動的に起動され得る。
【００５０】
６５６で、通知関連の情報が処理される。例えば、クライアントコンピューティングデバイスで拡張状態モデル３１４が受け取られ、通知が提示されるべきかを決定するために、アプリケーションが拡張状態モデル３１４に含まれる情報を処理し得る。例えば、協働セッション中の参加者がネットワーク待ち時間を経験しているか決定するために、拡張状態モデル３１４の中のタイミング情報が調査され得る。別の例として、協働セッションへの新規ユーザの個人情報が指示され得る。
【００５１】
６５８で、必要な場合、通知が表示される。６５６での処理が、通知が提示されるべきであると決定した場合、双方向デジタル表層の中のユーザに通知が提示される。例えば、ネットワーク待ち時間が所定の閾値よりも大きくなる場合があり、インジケータ５２０がそのようにユーザに提示され得る。
【００５２】
６５６および６５８での処理は、所定のタイムアウト期間が経過した後に、通知が解除されるべきか、または通知が解除され得るかを決定するために繰り返され得る。
【００５３】
図７は、実施形態例および態様例が実装され得る例示的なコンピューティング環境を示す。このコンピューティングシステム環境は、適切なコンピューティング環境の単なる一例であり、使用または機能の範囲についての何の限定も提案することを意図されない。
【００５４】
多くの他の汎用または特別目的のコンピューティングシステム環境または構成が、使用され得る。使用に適し得る周知のコンピューティングシステム、環境、および／または構成の例は、パーソナルコンピュータ、サーバコンピュータ、携帯型またはラップトップデバイス、マルチプロセッサシステム、マイクロプロセッサを用いたシステム、ネットワークパーソナルコンピュータ（ＰＣ）、ミニコンピュータ、メインフレームコンピュータ、組み込みシステム、上記の任意のシステムまたはデバイスを含む分散コンピューティング環境、または同様のものを含むがこれらに限定されない。
【００５５】
コンピュータによって実行される、例えばプログラムモジュールなどのコンピュータで実行可能な命令が、使用され得る。一般的に、プログラムモジュールは、特定のタスクを実行する、または特定の抽象データ種類を実現するルーチン、プログラム、オブジェクト、構成要素、データ構造などを含む。分散型コンピューティング環境が、使用され得、そこでは、タスクは、通信ネットワークまたは他のデータ伝送媒体を通して接続される遠隔処理デバイスによって機能される。分散型コンピューティング環境では、プログラムモジュールおよび他のデータは、メモリ記憶デバイスを含むローカルおよび遠隔の両方のコンピュータ記憶媒体内に位置し得る。
【００５６】
図７を参照すると、本願に記載の態様を実施するための例示的システムは、コンピューティングデバイス７００などのコンピューティングデバイスを含む。もっとも基本的な構成において、コンピューティングデバイス７００は典型的に、少なくとも１つのプロセシングユニット７０２およびメモリ７０４を含む。コンピューティングデバイスの厳密な構成および種類により、メモリ７０４は、揮発性（ランダムアクセスメモリ（ＲＡＭ）など）、不揮発性（読み出し専用メモリ（ＲＯＭ）、フラッシュメモリなど）、またはこの２つのある種の組み合わせであり得る。このもっとも基本的な構成は、図７に破線７０６によって例示されている。
【００５７】
コンピューティングデバイス７００は、追加の特徴／機能を有し得る。例えば、コンピューティングデバイス７００は、磁気または光学ディスクまたはテープを含むがこれらに限定されない、追加の記憶装置（取り外し可能なおよび／または取り外し不可能な）を含み得る。かかる追加の記憶装置は、取り外し可能な記憶装置７０８および取り外し不可能な記憶装置７１０によって図７に例示されている。
【００５８】
コンピューティングデバイス７００は典型的に、さまざまなコンピュータ可読媒体を含む。コンピュータ可読媒体は、デバイス７００によってアクセスされることができる任意の利用可能な媒体であることができ、揮発性および不揮発性媒体の双方、取り外し可能なおよび取り外し不可能な媒体の双方を含む。
【００５９】
コンピュータ記憶媒体は、コンピュータ可読の命令、データ構造、プログラムモジュールまたは他のデータなどの、情報の記憶のための任意の方法または技術で実装される、揮発性ならびに不揮発性、および取り外し可能なならびに取り外し不可能な媒体を含む。メモリ７０４、取り外し可能な記憶装置７０８、および取り外し不可能な記憶装置７１０は、すべてコンピュータ記憶媒体の例である。コンピュータ記憶媒体は、ＲＡＭ、ＲＯＭ、電気的消去可能プログラム読み出し専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリまたは他のメモリ技術、ＣＤ−ＲＯＭ、デジタル多用途ディスク（ＤＶＤ）または他の光学式記憶、磁気カセット、磁気テープ、磁気ディスク記憶装置または他の磁気記憶デバイス、または所望の情報を記憶するために使用されることができ、かつコンピューティングデバイス７００によってアクセスされることができる任意の他の媒体を含むがこれらに限定されない。任意のかかるコンピュータ記憶媒体が、コンピューティングデバイス７００の一部であり得る。
【００６０】
コンピューティングデバイス７００は、デバイスが他のデバイスと通信することを可能にする通信接続（複数可）７１２を含み得る。コンピューティングデバイス７００はまた、キーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの入力デバイス（複数可）７１４を有し得る。ディスプレイ、スピーカ、プリンタなどの出力デバイス（複数可）７１６もまた含まれ得る。すべてのこれらのデバイスは、当技術分野において周知であり、ここで詳細に検討される必要はない。
【００６１】
本明細書において説明される様々な技法は、ハードウェアまたはソフトウェアに関して、あるいは適切な場合には両者の組み合わせに関して実装され得ることが理解されるべきである。それ故、ここで開示される主題の方法および装置、あるいはそれらのある特定の態様または部分は、例えばフロッピーディスケット、ＣＤ‐ＲＯＭ、ハードドライブ、または任意の他の機械で読み取り可能な記憶媒体などの有体の媒体に具現化されたプログラムコード（すなわち、命令）の形態を取り得、プログラムコードがコンピュータなどの機械にロードされ、その機械によって実行されると、機械は、ここで開示される主題を実践するための装置になる。プログラム化できるコンピュータ上のプログラムコードの実行の場合には、コンピューティングデバイスは、一般的に、プロセッサ、プロセッサによって読み取り可能な（揮発性および不揮発性メモリならびに／あるいは記憶要素を含む）記憶媒体、少なくとも１つの入力デバイス、および少なくとも１つの出力デバイスを含む。１つ以上のプログラムは、例えば、アプリケーションプログラミングインターフェース（ＡＰＩ）、再使用可能なコントロール、または同様のものの使用を通して、ここで開示される主題に関して説明される処理を実装し得るまたは利用し得る。そのようなプログラムは、コンピュータシステムと通信するための高レベルの手続き型またはオブジェクト指向プログラミング言語で実装され得る。しかしながら、プログラム（複数可）は、必要に応じて、アセンブリまたは機械言語で実装され得る。いずれの場合においても、言語は、コンパイル型またはインタプリタ型言語であり得、それは、ハードウェア実装と組み合わされ得る。
【００６２】
主題は、構造的特徴および／または方法の動作に特有の表現で説明されたが、添付の特許請求の範囲において定義される主題は、必ずしも上記特有の特徴または動作に限定されないことが理解されることになる。むしろ、上記特有の特徴または動作は、特許請求の範囲を実施する形態例として開示される。
【図１】
0006322140.tif 000002
【図２】
0006322140.tif 000003
【図３Ａ】
0006322140.tif 000004
【図３Ｂ】
0006322140.tif 000005
【図４Ａ】
0006322140.tif 000006
【図４Ｂ】
0006322140.tif 000007
【図４Ｃ】
0006322140.tif 000008
【図５Ａ】
0006322140.tif 000009
【図５Ｂ】
0006322140.tif 000010
【図６Ａ】
0006322140.tif 000011
【図６Ｂ】
0006322140.tif 000012
【図７】
0006322140.tif 000013