(57)【要約】共同システムは、作業空間内の多数のアクティブなクライアントをサポートするよう構成されており、当該作業空間は、異なるオブジェクトのグループに分散している。作業空間に参加している間、第１アクティブクライアントは、第２アクティブクライアントのビューポートをフォローするように、自身のビューポートを設定することができる。この設定は、第２アクティブクライアントのビューポートの変換またはズームを含めて、第１アクティブクライアントのビューポートを、第２アクティブクライアントのビューポートに同期させる。本システムは、第２アクティブクライアントが、第１アクティブクライアントによってフォローされていることを通知されるように構成することができる。作業空間に参加している間、第１アクティブクライアントは、位置マーカの一覧を表示及び検索し、位置マーカの選択に応答して、自身のビューポートを、ズームレベルを変更することなく選択されたマーカの位置に更新することができる。【選択図】図２
2018524661.tif 000002
【特許請求の範囲】
【請求項１】
共同システムで使用するための、第１ネットワークノードであって、
物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを備え、前記プロセッサは、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記ローカル・クライアント・ビューポートの前記仮想作業空間における前記位置及び前記大きさを決定するロジックにより構成され、
前記決定するロジックは、
（ｉ）前記第１ネットワークノードでのユーザ入力に応答して、前記ローカル・クライアント・ビューポートを変更する第１モードと、
（ｉｉ）前記１以上のネットワークノードにおける第２ネットワークノードからの、リモート・クライアント・ビューポートの前記仮想作業空間内における位置及び位置の変化を含むメッセージを監視し、前記メッセージに含まれる前記位置及び前記位置の変化を用いて前記ローカル・クライアント・ビューポートを変更する第２モードを備えることを特徴とするネットワークノード。
【請求項２】
前記物理的表示空間を用いたグラフィカル・ユーザ・インタフェースを備え、
前記グラフィカル・ユーザ・インタフェースは、前記第２ネットワークノードの選択のためのユーザ入力構成物を備える請求項１に記載のネットワークノード。
【請求項３】
前記ローカル・クライアント・スクリーン空間は、前記物理的表示空間内の静的な大きさを有する請求項１に記載のネットワークノード。
【請求項４】
前記ローカル・クライアント・スクリーン空間は縦横比を有し、位置及び位置の変化を含む前記メッセージは前記参加クライアント・ビューポートの縦横比を有する大きさの明細事項を備え、
前記ローカル・クライアント・ビューポートを変更する前記ロジックは、前記ローカル・クライアント・スクリーン空間の前記縦横比と前記リモート・クライアント・ビューポートの前記縦横比との差分の関数として、前記ローカル・クライアント・ビューポートの大きさを定義する請求項１に記載のネットワークノード。
【請求項５】
前記ローカル・クライアント・スクリーン空間は、画素数を含む静的解像度を有し、前記ローカル・クライアント・ビューポートの前記大きさは、前記仮想作業空間における仮想画素数を含む可変解像度を定義し、
マッピングを計算する前記ロジックは、前記静的解像度と前記可変解像度における差分に基づいて拡大率を決定する請求項４に記載のネットワークノード。
【請求項６】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項１に記載のネットワークノード。
【請求項７】
前記イベントのログは、ローカル及びリモート・クライアント・ビューポートの変更を識別するエントリを含む請求項６に記載のネットワークノード。
【請求項８】
前記セッションにおいて前記仮想作業空間内の位置マーカの一覧を表示するユーザインタフェースを備え、前記位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定する前記ロジックは、前記選択された位置マーカを示す前記入力に応答して、前記ローカル・クライアント・ビューポートの前記位置を前記マークされた位置に更新する請求項１に記載のネットワークノード。
【請求項９】
他のネットワークノードにメッセージを送信するロジックを備え、前記メッセージは、前記ローカル・クライアント・ビューポートの前記第１モードで行われた位置と位置の変更を識別する請求項１に記載のネットワークノード。
【請求項１０】
物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを備えるネットワークノードの操作方法であって、
１以上の他のネットワークノードとの通信を確立する工程と、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存する工程を備え、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画する工程と、
前記ローカル・クライアント・ビューポートの前記仮想作業空間における前記位置及び前記大きさを決定する工程を備え、前記決定する工程は、
（ｉ）第１モードにおいて、前記第１ネットワークノードでのユーザ入力に応答して、前記ローカル・クライアント・ビューポートを変更する工程と、
（ｉｉ）第２モードにおいて、前記１以上のネットワークノードにおける第２ネットワークノードからの、リモート・クライアント・ビューポートの前記仮想作業空間内における位置及び位置の変化を含むメッセージを監視し、前記メッセージに含まれる前記位置及び前記位置の変化を用いて前記ローカル・クライアント・ビューポートを変更する工程が含まれることを特徴とする方法。
【請求項１１】
前記物理的表示空間を用いたグラフィカル・ユーザ・インタフェースを実行する工程を備え、
前記グラフィカル・ユーザ・インタフェースは、前記第２ネットワークノードの選択のためのユーザ入力構成物を備える請求項１０に記載の方法。
【請求項１２】
前記ローカル・クライアント・スクリーン空間は、前記物理的表示空間内の静的な大きさを有する請求項１０に記載の方法。
【請求項１３】
前記ローカル・クライアント・スクリーン空間は縦横比を有し、位置及び位置の変化を含む前記メッセージは前記参加クライアント・ビューポートの縦横比を有する大きさの明細事項を備え、
前記ローカル・クライアント・スクリーン空間の前記縦横比と前記リモート・クライアント・ビューポートの前記縦横比の差分の関数として、前記ローカル・クライアント・ビューポートの大きさを定義する工程を備える請求項１０に記載の方法。
【請求項１４】
前記ローカル・クライアント・スクリーン空間は、画素数を含む静的解像度を有し、前記ローカル・クライアント・ビューポートの前記大きさは、前記仮想作業空間における仮想画素数を含む可変解像度を定義し、
前記静的解像度と前記可変解像度における差分に基づいて拡大率を決定する工程を備える請求項１３に記載の方法。
【請求項１５】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項１０に記載の方法。
【請求項１６】
ローカル及びリモート・クライアント・ビューポートの変更を、前記イベントのログに記録する工程を備える請求項１５に記載の方法。
【請求項１７】
前記セッションにおいて前記仮想作業空間内の位置マーカの一覧を表示するユーザインタフェースを提供する工程を備え、前記位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記選択された位置マーカを示す前記入力に応答して、前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定し、前記ローカル・クライアント・ビューポートの前記位置を前記マークされた位置に更新する工程を備える請求項１０に記載の方法。
【請求項１８】
他のネットワークノードにメッセージを送信し、前記メッセージは、前記ローカル・クライアント・ビューポートの前記第１モードで行われた位置と位置の変更を識別する工程を備える請求項１０に記載の方法。
【請求項１９】
持続性コンピュータ可読メモリ、及び、物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを有する第１ネットワークノードで使用するための、前記メモリ内に保存されたコンピュータプログラムを備える製品であって、
前記コンピュータプログラムは、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記ローカル・クライアント・ビューポートの前記仮想作業空間における前記位置及び前記大きさを決定するロジックを有し、
前記決定するロジックは、
（ｉ）前記第１ネットワークノードでのユーザ入力に応答して、前記ローカル・クライアント・ビューポートを変更する第１モードと、
（ｉｉ）前記１以上のネットワークノードにおける第２ネットワークノードからの、リモート・クライアント・ビューポートの前記仮想作業空間内における位置及び位置の変化を含むメッセージを監視し、前記メッセージに含まれる前記位置及び前記位置の変化を用いて前記ローカル・クライアント・ビューポートを変更する第２モードを備えることを特徴とする製品。
【請求項２０】
前記ロジックは、前記物理的表示空間を用いたグラフィカル・ユーザ・インタフェースを備え、
前記グラフィカル・ユーザ・インタフェースは、前記第２ネットワークノードの選択のためのユーザ入力構成物を備える請求項１９に記載の製品。
【請求項２１】
前記ローカル・クライアント・スクリーン空間は、前記物理的表示空間内の静的な大きさを有する請求項１９に記載の製品。
【請求項２２】
前記ローカル・クライアント・スクリーン空間は縦横比を有し、位置及び位置の変化を含む前記メッセージは前記参加クライアント・ビューポートの縦横比を有する大きさの明細事項を備え、
前記ローカル・クライアント・ビューポートを変更する前記ロジックは、前記ローカル・クライアント・スクリーン空間の前記縦横比と前記リモート・クライアント・ビューポートの前記縦横比との差分の関数として、前記ローカル・クライアント・ビューポートの大きさを定義する請求項１９に記載の製品。
【請求項２３】
前記ローカル・クライアント・スクリーン空間は、画素数を含む静的解像度を有し、前記ローカル・クライアント・ビューポートの前記大きさは、前記仮想作業空間における仮想画素数を含む可変解像度を定義し、
マッピングを計算する前記ロジックは、前記静的解像度と前記可変解像度における差分に基づいて拡大率を決定する請求項２２に記載の製品。
【請求項２４】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項１９に記載の製品。
【請求項２５】
前記イベントのログは、ローカル及びリモート・クライアント・ビューポートの変更を識別するエントリを含む請求項２４に記載の製品。
【請求項２６】
前記プログラムは、
前記セッションにおいて前記仮想作業空間内の位置マーカの一覧を表示するユーザインタフェースを備え、前記位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定する前記ロジックは、前記選択された位置マーカを示す前記入力に応答して、前記ローカル・クライアント・ビューポートの前記位置を前記マークされた位置に更新する請求項１９に記載の製品。
【請求項２７】
前記プログラムは、他のネットワークノードにメッセージを送信するロジックを備え、前記メッセージは、前記ローカル・クライアント・ビューポートの前記第１モードで行われた位置と位置の変更を識別する請求項１９に記載の製品。
【請求項２８】
データプロセッサ、
仮想作業空間内にイベントを位置付け、共同ディスプレイに対して通信リソースを提供する空間的イベントマップを含む共同データを保存するメモリ、
ローカル・ディスプレイ上にスクリーン空間を有する該ローカル・ディスプレイ、
仮想作業空間内のビューポートを識別し、前記ビューポート内に位置を有する空間的イベントマップ内のイベントによって特定される図形オブジェクトを描画し、入力信号に応答して前記ビューポートを変更し、変更された前記ビューポート内に位置を有する空間的イベントマップ内のイベントによって特定される図形オブジェクトを描画するロジック、及び、
変化に応答してビューポート変更イベントを生成するロジックを備える共同システム。
【請求項２９】
共同システムで使用するための、第１ネットワークノードであって、
物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを備え、前記プロセッサは、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記作業空間内の位置マーカの一覧を表示するユーザインタフェースを提供し、位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定し、前記ローカル・クライアント・ビューポートの前記位置を、前記選択された位置マーカの前記マークされた位置に更新することを含み、
前記スクリーン空間上に、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを描画するロジックにより構成されていることを特徴とするネットワークノード。
【請求項３０】
前記ローカル・クライアント・ビューポートの前記位置及び前記大きさを決定する前記ロジックは、前記ローカル・クライアント・ビューポートの移動またはズームを示す前記第１ネットワークノードでのポインタまたはタッチベースのユーザ入力ジェスチャに応答して、前記ローカル・クライアント・ビューポートを変更するロジックを有する請求項２９に記載のネットワークノード。
【請求項３１】
位置マーカの一覧を表示するユーザインタフェースが、更に、前記作業空間に関するデフォルト位置に対して選択可能なエントリを表示し、前記選択可能なエントリが選択されると、前記ローカル・クライアント・ビューポートの前記位置を前記デフォルト位置に更新するロジックを含む請求項２９に記載のネットワークノード。
【請求項３２】
前記選択された位置マーカの前記選択に応答して、前記ローカル・クライアント・ビューポートの位置が、前記仮想作業空間における大きさを変更することなく変更される請求項２９に記載のネットワークノード。
【請求項３３】
位置マーカの一覧を表示するユーザインタフェースが、位置マーカタグの照会に基づく検索機能を有する請求項２９に記載のネットワークノード。
【請求項３４】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項１９に記載のネットワークノード。
【請求項３５】
前記イベントのログ内の前記イベントの記録において使用可能な前記動作は、位置マーカの作成、移動、削除を含む請求項３４に記載のネットワークノード。
【請求項３６】
他のネットワークノードにメッセージを送信するロジックを備え、前記メッセージは、位置マーカの作成または移動を含むイベントを識別し、前記ロジックは、第２ネットワークノードからのメッセージの受領に応答して、前記位置マーカの一覧を更新する請求項３５に記載のネットワークノード。
【請求項３７】
位置マーカの選択のための方法であって、
１以上の他のネットワークノードとの通信を確立する工程と、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存する工程を備え、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画する工程と、
前記作業空間内の位置マーカの一覧を表示するユーザインタフェースを提供し、位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付ける工程と、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定し、前記ローカル・クライアント・ビューポートの前記位置を、前記選択された位置マーカの前記マークされた位置に更新する工程と、及び、
前記スクリーン空間上に、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを描画する工程を含む方法。
【請求項３８】
前記ローカル・クライアント・ビューポートの移動またはズームを示す前記第１ネットワークノードでのポインタまたはタッチベースのユーザ入力ジェスチャに応答して、前記ローカル・クライアント・ビューポートを変更する工程を備える請求項９に記載の方法。
【請求項３９】
位置マーカの一覧を表示するユーザインタフェースが、更に、前記作業空間に関するデフォルト位置に対して選択可能なエントリを表示し、前記選択可能なエントリが選択されると、前記ローカル・クライアント・ビューポートの前記位置を前記デフォルト位置に更新する工程を備える請求項９に記載の方法。
【請求項４０】
前記選択された位置マーカの前記選択に応答して、前記ローカル・クライアント・ビューポートの位置が、前記仮想作業空間における大きさを変更することなく変更される請求項９に記載の方法。
【請求項４１】
位置マーカの一覧を表示するユーザインタフェースが、位置マーカタグの照会に基づく検索機能を有する請求項９に記載の方法。
【請求項４２】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項９に記載の方法。
【請求項４３】
前記イベントのログ内の前記イベントの記録において使用可能な前記動作は、位置マーカの作成、移動、削除を含む請求項４２に記載のネットワークノード。
【請求項４４】
他のネットワークノードにメッセージを送信し、前記メッセージは、位置マーカの作成または移動を含むイベントを識別し、第２ネットワークノードからメッセージの受領に応答して、前記位置マーカの一覧を更新する工程を備える請求項４３に記載のネットワークノード。
【請求項４５】
持続性コンピュータ可読メモリ、及び、前記メモリ内に保存された機械可読データ構造を備える製品であって、前記機械可読データ構造が、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記作業空間内の位置マーカの一覧を表示するユーザインタフェースを提供し、位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定し、前記ローカル・クライアント・ビューポートの前記位置を、前記選択された位置マーカの前記マークされた位置に更新することを含み、
前記スクリーン空間上に、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを描画するロジックを備えることを特徴とする製品。
【請求項４６】
前記ローカル・クライアント・ビューポートの前記位置及び前記大きさを決定する前記ロジックは、前記ローカル・クライアント・ビューポートの移動またはズームを示す前記第１ネットワークノードでのポインタまたはタッチベースのユーザ入力ジェスチャに応答して、前記ローカル・クライアント・ビューポートを変更するロジックを有する請求項４５に記載の製品。
【請求項４７】
位置マーカの一覧を表示するユーザインタフェースが、更に、前記作業空間に関するデフォルト位置に対して選択可能なエントリを表示し、前記選択可能なエントリが選択されると、前記ローカル・クライアント・ビューポートの前記位置を前記デフォルト位置に更新するロジックを含む請求項４５に記載の製品。
【請求項４８】
前記選択された位置マーカの前記選択に応答して、前記ローカル・クライアント・ビューポートの位置が、前記仮想作業空間における大きさを変更することなく変更される請求項４５に記載の製品。
【請求項４９】
位置マーカの一覧を表示するユーザインタフェースが、位置マーカタグの照会に基づく検索機能を有する請求項４５に記載の製品。
【請求項５０】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項４５に記載の製品。
【請求項５１】
前記イベントのログ内の前記イベントの記録において使用可能な前記動作は、位置マーカの作成、移動及び削除を含む請求項５０に記載の製品。
【請求項５２】
他のネットワークノードにメッセージを送信するロジックを備え、前記メッセージは、位置マーカの作成または移動を含むイベントを識別し、前記ロジックは、第２ネットワークノードからメッセージの受領に応答して、前記位置マーカの一覧を更新する請求項５１に記載の製品。
【発明の詳細な説明】
【関連出願】
【０００１】
参照により取り込まれる２０１５年５月６日付出願の“共有された作業空間内のビューポートのエミュレーションのためのシステム及び方法”と題する米国仮出願第６２／１５７９１１号について利益が主張される。
【０００２】
２０１３年１１月２６日付出願の“空間的イベントマップを備えた共同システム”と題する、本出願と同時係属中であり、所有者を共通とする、米国特許出願第１４／０９０，８３０号（代理人整理番号：ＨＡＷＴ１０１１−２）が、本明細書に完全に記載されているかのように、参照により取り込まれる。
【技術分野】
【０００３】
開示される技術は、デジタル共同のための装置、方法、及びシステムに関し、特に、複数ユーザが同時にグローバル作業空間データへアクセスするのを容易にするデジタルディスプレイシステムに関する。
【背景技術】
【０００４】
デジタルディスプレイは、ホワイトボートと類似の方法で、対話的プレゼンテーションや他の目的のためによく使用される。一方のディスプレイ上で表示画像に加えられた修正が別のディスプレイ上で複製されるように、ディスプレイ同士がネットワーク接続され、共同制作のための利用を可能としたものもある。本出願の出願人による同時係属中の２０１３年１１月２６日付出願の“空間的イベントマップを備えた共同システム”と題する米国特許出願第１４／０９０，８３０号（米国特許公開公報２０１４／０２２２９１６、２０１４年８月７日付公開）に記載されているように、共同システムは、異なるクライアントプラットフォームにいるユーザが作業空間を共有する共同セッションを操作するように構成することができる。こうしたシステムの分散的性質により、異なる場所にいる複数のユーザが、同じ作業空間内のデータとの対話及び当該データの変更を同時に行い、また、当該作業空間を見ている他のユーザがいない時にもそれを行うことが可能となる。また、システムによっては、作業空間は非常に大きく、本質的に無限となり得る。
【０００５】
大きな作業空間を用いる共同システムに関する１つの問題は、当該作業空間におけるナビゲーションに関連する。作業空間は本質的に無限となり得ること、及び、ユーザが図形オブジェクトを作業空間のどこにでも配置することができることから、共同作業者によって行われる作業の発見及び追跡が困難となることがある。
【発明の概要】
【０００６】
夫々が複数の装置及び位置を横断してアクセス可能な、複数の共同セッションの保存及び追跡を支援するシステムが開示される。開示される技術には、共同作業空間内で、一クライアントが、別のクライアントによって生成されたトランザクションを、自身のディスプレイ上で発見し、追跡する方法が含まれる。
【０００７】
本明細書で説明される一システムは、対応する作業空間に関して１または複数の作業データ構造を備えたデータベースのためのコンピュータプログラムを保存するメモリを備えた１または複数のデータプロセッサを備える。作業空間データ構造は、特定の作業空間に関して空間的イベントマップを含むことができる。
【０００８】
説明されるシステムは、物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ及び通信ポートを有する第１ネットワークノードを備える。第１ネットワークノードは、１以上の他のネットワークノードとの通信を確立するロジックで構成することができ、例えば、サーバ側ネットワークノードと、作業空間セッションにおける参加クライアントとしてピア（peer）クライアント側ネットワークノードを備えることができる。第１ネットワークノードは、作業空間セッションで使用される仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存するメモリを備える、または、メモリへアクセスすることができる。共同データは、本明細書で説明されるように、各図形ターゲットの仮想作業空間内における位置を含む、空間的イベントマップ、或いは、他のタイプのデータ構造とすることができる。本システムにおける第１ネットワークノードは、作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートを定義し、及び、第１ネットワークノードにおける物理的表示空間内のローカル・クライアント・スクリーン空間にローカル・クライアント・ビューポートをマッピングするロジックを有する。第１ネットワークノードは、他のネットワークノードで当該セッションに参加しているクライアントの一覧を表示し、当該一覧から選択された他の参加クライアントを示す入力を受け取るためのユーザインタフェースも提供することができる。第１ネットワークノードは、選択された他の参加クライアントで使用中の参加クライアントビューポートの作業空間内における位置を含むメッセージを受信することができる。当該参加クライアントビューポートの位置を用いて、第１ネットワークノードは、ローカル・クライアント・ビューポートの位置を、選択された他の参加クライアントで使用中の参加クライアントビューポートの識別された位置に更新し、当該更新されたローカル・クライアント・ビューポート内に位置を有する図形ターゲットをスクリーン空間上に描画（render）することができる。これにより、共同セッションにおけるクライアントに関する随意的な行動を実施する。これを“フォロー（follow）”と呼ぶことができる。
【０００９】
共同システムで使用するためのノードは以下のように説明される。前記ノードは、物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを備え、前記プロセッサは、以下のモードを実施するロジックで構成される。前記ロジックは、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記ローカル・クライアント・ビューポートの前記仮想作業空間における前記位置及び前記大きさを決定するよう構成され、
前記決定するロジックは、
（ｉ）パン及びズームを行うタッチスクリーン及びマウスのジェスチャ等のローカルコントロールの下で、前記第１ネットワークノードでのユーザ入力に応答して、前記ローカル・クライアント・ビューポートを変更する第１モードと、
（ｉｉ）前記１以上のネットワークノードにおける第２ネットワークノードからの、リモート・クライアント・ビューポートの前記仮想作業空間内における位置及び位置の変化を含むメッセージを監視し、前記メッセージに含まれる前記位置及び前記位置の変化を用いて前記ローカル・クライアント・ビューポートを変更する第２モード或いはフォローモードを備える。
【００１０】
ネットワークノードにおける前記ローカル・クライアント・スクリーン空間は、縦横比と、前記ネットワークノードにおけるディスプレイ及びディスプレイドライバによって決定される画素数を含む解像度を有する。解像度は、フォローモードにおけるローカル・クライアント・ビューポートが変更される間に変化しないという意味で静的である。位置及び位置の変化を含むメッセージには、リモート・クライアント・ビューポートの縦横比を有する大きさの明細事項（specification）が含まれる。ローカル・クライアント・ビューポートを変更するロジックは、ローカル・クライアント・スクリーン空間の縦横比とリモート・クライアント・ビューポートの縦横比間の差の関数として、ローカル・クライアント・ビューポートの大きさを定義することができる。このように、リモート・クライアント・ビューポートを用いて、リモート・クライアント・スクリーン空間上に描画された図形オブジェクトが、クリッピングをすることなく、ローカル・クライアント・ビューポートを用いて、ローカル・クライアント・スクリーン空間上に再生される。
【００１１】
また、ローカル・クライアント・スクリーン空間は、静的で画素数を含むスクリーン空間解像度を有し、ローカル・クライアント・ビューポートの大きさは、仮想作業空間における仮想画素数を含む可変解像度を定義する。マッピングを計算するロジックは、静的なスクリーン空間解像度と可変解像度における差分に基づいて拡大率を決定する。
【００１２】
共同システムで使用するためのノードは以下のように説明される。前記ノードは、物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを備え、前記プロセッサは、動的な位置マーカの作成、移動、検索、選択を実施するロジックで構成されている。特定のネットワークにおける当該ロジックは、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記作業空間内の位置マーカの一覧を表示するユーザインタフェースを提供し、位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定し、前記ローカル・クライアント・ビューポートの前記位置を、前記選択された位置マーカの前記マークされた位置に更新することを含み、
前記スクリーン空間上に、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを描画するように構成されている。
【００１３】
前記ローカル・クライアント・ビューポートの前記位置及び前記大きさを決定する前記ロジックは、前記ローカル・クライアント・ビューポートの移動またはズームを示す前記第１ネットワークノードでのポインタまたはタッチベースのユーザ入力ジェスチャに応答して、前記ローカル・クライアント・ビューポートを変更するロジックを有する。
【００１４】
位置マーカの一覧を表示する前記ユーザインタフェースが、更に、前記作業空間に関するデフォルト位置に対して選択可能なエントリを表示し、前記選択可能なエントリが選択されると、前記ローカル・クライアント・ビューポートの前記位置を前記デフォルト位置に更新するロジックを含む。
【００１５】
前記選択された位置マーカの前記選択に応答して、前記ローカル・クライアント・ビューポートの位置が、前記仮想作業空間における大きさを変更することなく変更されるように、前記ロジックが構成される。
【００１６】
本明細書で説明される実施形態において、位置マーカの一覧を表示する前記ユーザインタフェースが、位置マーカタグの照会に基づく検索機能を有する。
【００１７】
イベントのログ内のイベントの記録において使用可能な動作は、位置マーカの作成、移動、削除を含む。
【００１８】
前記ネットワークノードは、他のネットワークノードにメッセージを送信するロジックを備え、前記メッセージは、位置マーカの作成または移動を含むイベントを識別し、前記ロジックは、第２ネットワークノードからのメッセージの受領に応答して、前記位置マーカの一覧を更新する。
【００１９】
説明される実施例では、第１ネットワークノードは、ローカル・クライアント・ビューポートの変更に関連するイベントを生成するユーザ入力装置からの入力データを受け付け、作業空間内におけるローカル・クライアント・ビューポートの位置を定義するクライアント・ビューポート・データ・オブジェクトを作成することができる。第１ネットワークノードは、フォローオプションをサポートするために、セッションに参加している１または複数の他のネットワークノードに、当該クライアント・ビューポート・データ・オブジェクトを送信することができる。
【００２０】
また、セッションにおいて作業空間内における位置マーカの一覧を表示するユーザインタフェースを提供する第１ネットワークノードを備え、位置マーカは、作業空間内にマークされた位置を有するシステムについて説明する。ユーザインタフェースは、一覧から選択された位置マーカを示す入力を受け取ることができる。選択された位置マーカの選択に応答して、当該システムは、ローカル・クライアント・ビューポートの位置をマークされた位置に更新し、更新されたローカル・クライアント・ビューポート内に位置を有する図形ターゲットをスクリーン空間に描画することができる。
【００２１】
別の実施例では、システムは、データプロセッサ、仮想作業空間内にイベントを配置し、共同ディスプレイに対して通信リソースを提供する空間的イベントマップを保存するメモリを備える、空間的イベントマップシステムを備えることができる。
【００２２】
また、本明細書で説明される共同セッションでクライアントノードを操作する方法、及び、共同セッションにおけるクライアントに関して、本明細書で説明される論理関数を実行するコンピュータプログラムを保存する持続性コンピュータ可読媒体について説明する。
【００２３】
上記の要約は本明細書で説明される共同システムのいくつかの態様についての基本的理解を提供することを目的としている。この要約は、開示される技術の鍵または重要な要素を特定する、或いは、開示される技術の範囲を詳説することを意図するものではない。
【図面の簡単な説明】
【００２４】
本出願に含まれる図面は、説明を目的とし、本開示の１または複数の実施例に関する構造及びプロセス操作の例を提供する。これらの図面は、形式及び詳細において、本開示の精神及び範囲から逸脱することなく当業者によって成され得る如何なる変更も全く制限するものではない。以下の図面と併せて考慮される場合に、詳細な説明及び請求の範囲を参照することによって、主題に対するより完全な理解が得られる。尚、図面全体を通して、同じ参照番号は、類似する要素を参照している。開示される技術は、その具体的な実施形態に関して説明され、以下の正確な縮尺では表されていない図面について参照される。
【００２５】
【図１Ａ】（図１Ａ、１Ｂ、１Ｃをまとめて図１とする）仮想作業空間内で共同するネットワークノードのシステムの一実施例を表す図。
【図１Ｂ】仮想作業空間内で共同するネットワークノードのシステムの一実施例を表す図。
【図１Ｃ】仮想作業空間内で共同するネットワークノードのシステムの一実施例を表す図。
【００２６】
【図２】無限の仮想作業空間の別個の領域にビューポートを有する２つのネットワークノードの一実施例を表す図。
【００２７】
【図３】一のネットワークノードのビューポートが、どのように他のネットワークノードのビューポートに影響を及ぼすことなく変更が可能であるかを表す図。
【００２８】
【図４Ａ】（図４Ａ、４Ｂ、４Ｃをまとめて図４とする）第２ネットワークノードに“フォロー（follow）”する第１ネットワークノードを表す図。
【図４Ｂ】第２ネットワークノードに“フォロー（follow）”する第１ネットワークノードを表す図。
【図４Ｃ】第２ネットワークノードに“フォロー（follow）”する第１ネットワークノードを表す図。
【００２９】
【図５】第２ネットワークノードにフォローする第１ネットワークノードの一実施例を表すフローチャート。
【００３０】
【図６】第１クライアント側ネットワークノードが第２クライアント側ネットワークノードにフォローする際の、第１クライアント側ネットワークノード、サーバ側ネットワークノード、第２クライアント側ネットワークノード間のメッセージマップを表す図。
【００３１】
【図７Ａ】（図７Ａ、７Ｂ、７Ｃをまとめて図７とする）位置マーカの例を表す図。
【図７Ｂ】位置マーカの例を表す図
【図７Ｃ】位置マーカの例を表す図
【００３２】
【図８Ａ】（図８Ａ、８Ｂをまとめて図８とする）メニューからの位置マーカの選択を表す図。
【図８Ｂ】メニューからの位置マーカの選択を表す図。
【００３３】
【図９Ａ】（図９Ａ、９Ｂ、９Ｃをまとめて図９とする）仮想作業空間に位置マーカを追加する例を表す図。
【図９Ｂ】仮想作業空間に位置マーカを追加する例を表す図。
【図９Ｃ】仮想作業空間に位置マーカを追加する例を表す図。
【００３４】
【図１０】メニューからの位置マーカの選択を表すフローチャート。
【００３５】
【図１１】ネットワークノード間の位置マーカの通信に関するメッセージマップを表す図。
【００３６】
【図１２】デジタルディスプレイ共同環境の例を表す図。
【００３７】
【図１３】デジタルディスプレイ共同環境の更なる例を表す図。
【００３８】
【図１４Ａ】（図１４Ａ、１４Ｂ、１４Ｃ、１４Ｄ、１４Ｅ、１４Ｆをまとめて図１４とする）共同サーバ１３０５でデータベースによって維持される作業空間データの部分となり得るデータ構造を表す図。
【図１４Ｂ】共同サーバ１３０５でデータベースによって維持される作業空間データの部分となり得るデータ構造を表す図。
【図１４Ｃ】共同サーバ１３０５でデータベースによって維持される作業空間データの部分となり得るデータ構造を表す図。
【図１４Ｄ】共同サーバ１３０５でデータベースによって維持される作業空間データの部分となり得るデータ構造を表す図。
【図１４Ｅ】共同サーバ１３０５でデータベースによって維持される作業空間データの部分となり得るデータ構造を表す図。
【図１４Ｆ】共同サーバ１３０５でデータベースによって維持される作業空間データの部分となり得るデータ構造を表す図。
【００３９】
【図１５】分散共同システムでクライアント側機能またはサーバ側機能を実施するために使用可能な、コンピュータシステムまたはネットワークノードの簡略化されたブロック図。
【発明を実施するための形態】
【００４０】
以下の記載は当業者が開示される技術を構成し、利用するのを可能とするために提示され、特定の応用とそれに必要な条件の文脈で提供される。開示された実施形態の様々な修正は、当業者にとって明白であり、本明細書に定義される一般原理は、開示される技術の精神及び範囲を逸脱することなく他の実施形態及び応用に適用され得る。したがって、開示される技術が示される実施形態に限定されることは意図されず、本明細書に開示の原理及び特徴と矛盾しない最も広い範囲が認められる。
【００４１】
“無限の作業空間”問題はどのようにして人と機器が作業空間と時間とともに対話するかを追跡する必要を含む。一実施例では、これは、第１のシステムを第２のシステムの動作にフォロー（follow）させることで対処が可能である。別の実施例では、第１のシステムが位置マーカで位置を保存し、その位置マーカを第２のシステムで利用可能とすることができる。この核となる問題を解決するために、Spatial Event Mapが作成された。これは、複数の空間的イベントマップと複数の共同グループを用いて共同作業をサポートするシステム構成を備える。このSpatial Event Mapは、作業空間内のオブジェクト及びイベントを定義するために必要な情報を含む。Spatial Event Mapは、仮想共同空間内に位置を有するイベントを規定するデータ構造を備える。イベント、当該空間内のイベントのマップ、及び、複数同時ユーザを含む複数のユーザによる当該空間へのアクセスが、地球全体のユーザからの共同をサポートする。
【００４２】
空間：所定の共同セッションに対し無限量の空間的情報をサポートするため、例えば１つまたは両方の次元において本質的に無限の二次元の直交座標平面によって特徴付けられる、作業空間と称する仮想空間を、例えば、新しい内容を当該空間に追加できる、内容を当該空間内で配置及び再配置できる、ユーザが当該空間の一部から別の一部へとナビゲート（navigate）できる、ユーザが当該空間内で必要なものを必要な時に容易に見つけられる、といったように組織する方法を提供する。
【００４３】
イベント：作業空間との対話はイベントとして処理される。人（触知できるユーザインタフェースデバイスを介して）及びシステムは、作業空間と対話する。イベントは物理的ディスプレイ上に表示されるターゲット図形オブジェクトを定義又は指し示すデータ、ターゲット図形オブジェクトの作業空間内における作成、変更、移動及び削除としての動作、及び、これらに関連したメタデータを有する。メタデータは起案者、日付、時刻、作業空間内における位置、イベントタイプ、セキュリティ情報、及び他のメタデータ等の情報を含み得る。
【００４４】
作業空間内のイベントの追跡は、システムが、作業空間内の空間的イベントを現在の状態で提示するだけでなく、それを複数ディスプレイ上で複数ユーザと共有し、その内容に係る関連する外部情報を共有することを可能にし、且つ、空間的データが時間とともにどのように発展するかの理解を可能とする。また、空間的イベントマップは境界のない作業空間を定義するものでありながら、必要なデータ量としては合理的なサイズを有することができる。
【００４５】
システムにおいて、いくつかの異なる種類のイベントがあり得る。イベントは永続的イベントに分類され得る。永続的イベントは、履歴イベントとも呼ばれ、永久に、或いは、システムがその有用寿命の間に作業空間を維持するために必要とする期間、保存される。イベントは、短期間においてのみ有用又は関心があり、セッションに参加している他のクライアント同士でライブ共有される一時的イベントに分類され得る。永続的イベントは取り消し／再生イベントストリーム内に保存される履歴イベントを含み得る。当該イベントストリームはセッションの空間的イベントマップと同じか、空間的イベントマップから派生したものであり得る。一時的イベントはシステムの取り消し／再生イベントストリームに保存されないイベントを含み得る。（複数の）空間的イベントマップは、永続的イベントと一時的イベントの両方がシステムの作業空間上に設けられた実施形態において、作業空間内の時刻と場所を追跡するために共同システムによって利用され得る。
【００４６】
マップ：作業空間内のイベントのマップは、作業空間内に位置を有する図形オブジェクトに関連する離散的な空間的イベント全ての合計を含むことができる。作業空間のマップ内のイベントは、本明細書ではスクリーン空間と称される特定のサイズの表示可能領域を有する物理的ディスプレイ又はスクリーンに“マップ”される。クライアントは、作業領域内に位置と大きさを持つ、作業領域内のビューポートを特定し、そのビューポート領域のイベントを表示のためにスクリーン空間にマップする。
【００４７】
複数ユーザアクセス：１つの鍵となる特性は、同時に作業空間上で作業している全てのユーザ、又は複数ユーザが、リアルタイムに近い方法で他のユーザの対話内容を把握する必要のある点である。空間的イベントマップは異なる物理的位置にディスプレイを有するユーザが、彼らの個々のビューポート内で、任意の所定の作業空間上にいる全てのユーザに対し、永続的イベントと一時的イベントの両方を含む、リアルタイムに近いイベントを経験することを可能にする。本明細書内に記載の共同システム構成は、多くの作業空間と多くのユーザグループの操作を可能にする。
【００４８】
ウィジェット：ウィジェットとは、ユーザが対話する、または、見ることができる、メモ帳、画像、時計、ウェブブラウザ、ビデオプレーヤー、位置マーカ等の作業空間の構成要素である。ウィンドウは、２つの対角線上に対向する角を持つ長方形の領域であるウィジェットである。たいていのウィジェットは、ウィンドウでもある。
【００４９】
共同環境において、他者がその環境内で何に取り組んでいるかを見ることは有益である。開示される技術によって、第１ネットワークノードは、ネットワーク利用を著しく増加させることなく、第２ネットワークノード上で起きたイベントをフォローすることが可能となる。これは、ネットワークノード間で画像を送信するのではなく、ＪＳＯＮデータ構造等を含む簡単なテキストのイベント記録を運搬するメッセージの交換によって実現できる。第１ネットワークノードは、仮想作業空間内の他の全ての参加ネットワークノードからイベントの記述を受信し、少なくともその幾つかをローカルログに保存する。また、第１ネットワークノードは、自身のイベントを生成し、少なくともその幾つかをローカルログに保存する。第１ネットワークノードは、イベントによって定義される幾つもの図形ターゲットを含むことができる仮想作業空間へのビューポートを有する。第１ネットワークノードは、イベント記録によって記述され、そのビューポート内に座標を持つオブジェクトを描画し、そのビューポートの外に位置する図形オブジェクトに関するイベントを記述したイベント記録は無視する。
【００５０】
１つの例では、第１ネットワークノードのオペレータは、第２ネットワークノードのビューポート内で起こっているイベントを、それらの発生時に、且つ、第２ネットワークノードのビューポートが作業空間内で移動している時に、ウォッチングすることに関心があるかもしれない。第１ネットワークノードは、第２ネットワークノードのビューポートと当該ビューポート内の図形ターゲットを記述した、第２ネットワークノードのローカルログからイベント情報を抽出し、ローカルスクリーン空間にそれらの図形ターゲットを描画することができる。別の例では、第１ネットワークノードのオペレータは、第２ネットワークノードによって位置マーカとして保存された作業空間内の場所を訪問したいと思うかもしれない。第１ネットワークノードは、第２ネットワークノードによって保存された位置マーカを識別するために、作業空間を記述したローカルログからイベント情報を抽出し、そのビューポートを位置マーカの位置に移動させることができる。
【００５１】
環境は、図形ターゲットとビューポートを備える仮想作業空間及びスクリーン空間を説明した図１Ａ〜１Ｃによって示されている。図１Ａは、共同セッションでの使用に割り当てられたスクリーン空間１０５を含む物理的表示空間１０３を有する第１ネットワークノード１０１を表している。示されているように、スクリーン空間１０５は、第１ネットワークノードでの物理的表示空間１０３と同じ対象を指してもよく、或いは、ウィンドウのように、物理的表示空間内の割り当てられた部分で構成されていてもよい。物理的表示空間は、作業空間とは独立したローカル・ネットワーク・ノードによって設定される画素数と縦横比に関して解像度を有する。作業空間の解像度は、使用される座標系に基づいており、仮想作業空間における位置を識別可能な、本質的に無限の数の仮想点を含むことができる。１つの例では、スクリーン空間１０５は、物理的表示空間１０３の表示可能領域全体を含み、物理的表示空間１０３と同じ解像度を持っている。別の例では、スクリーン空間を、物理的表示空間よりも小さくすることが可能である。
【００５２】
図示された例では、ネットワークノードは、ユーザ入力デバイスとして機能するスクリーン空間１０５上のタッチセンサを備える。ネットワークノード上の共同システムのクライアントは、現在使用している作業空間の内容を表す空間的イベントマップまたは他のタイプのデータ構造を定義するイベント記録を保存できるローカルログファイル１１１にアクセスできる。この例では、一連の図形ターゲット１９１及び位置マーカ１９５が、スクリーン空間１０５に表示される。
【００５３】
図１Ｂは、仮想作業空間１６５、当該作業空間に位置及び大きさを持つ、第１ビューポート１７５、第２ビューポート１７７を示している。複数の図形ターゲット１９１及び第１位置マーカ１９５タイプの図形ターゲットが、第１ビューポート１７５内に位置を有している。図形ターゲット１９３は、第２ビューポート１７７内に位置を有している。第２位置マーカ１９７は、第１ビューポート１７５と第２ビューポート１７７両方の境界の外の仮想作業空間１６５内に位置を有している。
【００５４】
図１Ｃは、物理的表示空間１５３とスクリーン空間１５５を備える第２ネットワークノード１５１を示している。図示された例では、ネットワークノードは、ユーザ入力デバイスとして機能するタッチセンサを備えることができる。当該ノードは、第１ネットワークノードで現在使用されているのと同じ作業空間等の、仮想作業空間の内容を表す、空間的イベントマップ、または、他のタイプのデータ構造を定義するイベント記録を保存できるローカルログファイル１６１にアクセスできる。この例において、第２ネットワークノードのビューポートは、ビューポート１７７であり、スクリーン空間１５５にマップされる。当該マッピングの結果、一連の図形ターゲット１９３がスクリーン空間１５５に表示される。
【００５５】
ネットワークノードは、仮想作業空間内のテキストボックス、位置マーカ、ウェブページ等の図形ターゲット、または、ビューポートの生成を記録するために、イベントを生成できる。当該イベントは、仮想作業空間内における図形ターゲットの位置、イベントの時刻、図形ターゲットのターゲット識別子を含む。ネットワークノードは、次に、当該イベントを、作業空間に参加している他のネットワークノードに伝達できる。各参加ネットワークノードは、そのイベントを自身のローカルログ１１１及び１６１に保存できる。この例では、仮想作業空間１６５内の図形ターゲット１９１及び１９３、位置マーカ１９５及び１９７、ビューポート１７５及び１７７を生成、変更、移動させるイベントの夫々に関して、ローカルログ１１１及び１６１にイベントが存在する。各イベントの図形ターゲットは、図形ターゲットを描画するロジックでプロセッサによってスクリーン空間１０５及び１５５に描画され得る。
【００５６】
プロセッサは、ビューポートに位置を有する図形ターゲットをスクリーン空間に描画し、これらの図形ターゲットのみ、または、ビューポートの境界内にある図形ターゲットの部分のみを、ローカルスクリーン空間解像度とローカル・クラインアント・ビューポートの大きさの関数であるズームレベルを用いて、描画するロジックを備える。
【００５７】
スクリーン空間は、固定の縦横比と、行当りの画素及びスクリーン当りの行に関して固定の解像度を有する。この縦横比と解像度は、ビューポートのスクリーン空間へのマッピングを計算するために使用される。例えば、作業空間内の最初のビューポートは、１０００点×１０００行のアレイを含むことができる。スクリーン空間は、１０００×１０００の同じ解像度を有する。しかし、ユーザがズームアウト操作を実行すると、スクリーン空間解像度は変わらないが、作業空間解像度は例えば２０００点×２０００行に増加する。この場合、大きいビューポートにおけるイベントの図形ターゲットは、拡大率の関数であるスクリーン空間内の少ない画素数内に適合するようにスケーリングされる。同様に、ユーザがズームイン操作を実行すると、スクリーン空間解像度は変わらないが、作業空間解像度は例えば５００点×５００行に減少する。この場合、小さいビューポートにおけるイベントの図形ターゲットは、スクリーン空間内の多い画素数内に適合するようにスケーリングされる。ビューポートは、作業空間内における位置、クライアントスクリーン空間の縦横比、ズームレベルまたはスクリーン空間の解像度に対するビューポートの解像度の比によって規定される。
【００５８】
これにより、モバイル機器、コンピュータ、壁（wall）等の様々なデバイスが、各スクリーン空間に適合した共通のズームレベル及び縦横比で、各ビューポート表示することが可能となる。開示される技術によって、クライアントはビューポートを個別に規定することができるため、２つのビューポートが重なることもあり得る。１つの例では、第１ユーザが、第２ユーザのビューポートに既に含まれている領域を含むように、ビューポートを変更する。この例では、ビューポートは互いに独立しており、１つのビューポートを他のビューポートに影響することなく変更することが可能である。別の例では、第１ユーザが第２ユーザを“フォロー”することで、第１ユーザのビューポートが、第２ユーザのビューポートの仕様によって決定される。この場合、各スクリーン空間が同じ縦横比と解像度を有していれば、第１ユーザのスクリーン空間は同じ図形ターゲットを表示し、第２ユーザのスクリーン空間の複写のようにすることができる。縦横比及び／または解像度が合っていない場合、フォローしているノードが、ローカル・クライアント・スクリーン空間の縦横比と解像度に基づいて、リモート・クライアント・ビューポートの大きさをローカル・クライアント・ビューポートに変換する。
【００５９】
図２、３、４は、第１ネットワークノードが、第２ネットワークノードで使用中のビューポートにフォローするプロセスを表している。
【００６０】
図２は、仮想作業空間の個別の領域にビューポートを持つ２つのネットワークノードの一実施例を表している。図２は、第１ビューポート２３０と第２ビューポート２２０を備える仮想作業空間２１０を示している。第１ビューポート２３０に位置を有する一連の図形ターゲット２３５、第２ビューポート２２０に位置を有する一連の図形ターゲット２２５及び図形ターゲット２１５が示されている。図２はまた、第１ネットワークノードにおける第１スクリーン空間２５０と、第２ネットワークノードにおける第２スクリーン空間２７５も示している。この説明では、一連の図形ターゲット２３５を含む第１ビューポート２３０は、第１スクリーン空間２５０にマップされ、一連の図形ターゲット２３５は第１スクリーン空間２５０に描画されている。第２スクリーン空間２７５は第２ビューポート２２０内の図形ターゲット（２２５及び２１５）を描画している。各ビューポートは、図形ターゲットの異なる集合を含む。別の例では、図形ターゲットの一部または全部が、各ビューポートの外に存在していてもよい。
【００６１】
図３は、一のネットワークノードのビューポートが、どのように他のネットワークノードのビューポートに影響を及ぼすことなく変更が可能であるかを表している。図３では、第２ネットワークノードが、第１ネットワークノードのビューポート３３０に影響を及ぼさずに、ビューポート３２０の作業空間における大きさを変更している。この例では、図３は図２に基づいている。図３は、第１ビューポート３３０と第２ビューポート３２０を備える仮想空間３１０を示している。第１ビューポート３３０は、一連の図形ターゲット３３５を包含している。第２ビューポートは、一連の図形ターゲット３２５を包含している。図形ターゲット３１５は、第１ビューポート３３０または第２ビューポート３２０によって包含される領域の外の仮想作業空間３１０内に存在している。図３はまた、第１スクリーン空間３５０と第２スクリーン空間３７５を示している。第１スクリーン空間３５０は、一連の図形ターゲット３３５を含む第１ビューポート３３０を描画している。第２スクリーン空間３７５は、一連の図形ターゲット３２５を含む第２ビューポート３２０を描画している。仮想作業空間３１０内の図形ターゲット３１５は、ビューポート３３０または３２０の外側に存在しており、第１スクリーン空間３５０または第２スクリーン空間３７５には描画されていない。
【００６２】
図２と図３の違いは、ビューポート３２０が、図３では図形ターゲット３１５を除外するように変更されている点にある。ビューポートは、例えば、マウスのズームホイール、キーボードで押されるキーの組み合わせ等、様々な入力デバイス及びジェスチャを用いて当該ビューポートのズームレベルを変更することで変更される。また、ビューポートは、マウスや他のポインタでスクリーン空間上の位置を“つかんで（grabbing）”マウスを動かすことを含む、タッチスクリーンまたはマウスのジェスチャによっても変更可能である。
【００６３】
ディスプレイは、画素のアレイからなるデバイスである。壁１２０２等の複雑なディスプレイは、長方形のアレイ状で複数のディスプレイを備え、コントローラによって管理されるＸ及びＹ座標に連続した画素を有する。一実施例では、ディスプレイは、夫々が別個のスクリーン空間を備える複数のウィンドウを備える。
【００６４】
例えば、作業空間は、抽象的な単位で、ｘ０＝−１００００とｙ０＝４５００、及び、ｘ１＝５２００とｙ１＝−１４００の間にレイアウトされた一連のオブジェクトを有する。クライアントが当該一連のオブジェクトを見たい場合は、これらの座標でビューポートを定義し、作業空間の抽象的な単位を表示可能な画素の物理的単位にマッピングして、当該ビューポートをそのスクリーン空間内に描画する。クライアントが作業空間についてもっと見たい場合は、より分散したビューポートのｘ０、ｙ０、ｘ１、ｙ１座標を、スクリーン空間内の利用可能な空間にマップされるように、ズームアウトすることができる。クライアントが作業空間のより小さい領域を見たい場合は、所望する何らかのｘ０’、ｙ０’、ｘ１’、ｙ１’座標にズームインし、これらの座標が当該クライアントのスクリーン空間にマップされる。ビューポートをスクリーン空間に描画する際、当該ビューポートの内容のスケーリングは、標準的なグラフィカル・スケーリング技法で実現できる。
【００６５】
ビューポートへの変更は、イベントとして特徴付けられ、当該イベントは、この例では、 “ｖｃ”（ビューポート変更（Viewport Change））記録をローカルログで生成、保存させ、共同作業空間に参加している他のクライアントに伝達させる。以下で説明するようなＡＰＩで使用する“ｖｃ”記録の例は以下のように表される。
// server <--> client
[sender-id, "vc", viewport-rect]
●viewport-rect  ［ｘ１、ｙ１、ｘ２、ｙ２］形式のアレイであり、送信クライアント上でビューポートとして使用されている作業空間のセクションの各コーナーを表す。
【００６６】
共同作業空間に参加している他のネットワークノードは、“ｖｃ”記録を受け取り、受け取られた“ｖｃ”記録は、ローカルログに保存される。他のネットワークノードは、当該“ｖｃ”記録を生成したネットワークノードにフォローするロジックを起動しない限り、当該“ｖｃ”記録について動作を起こすことはない。
【００６７】
図４Ａ、４Ｂ、４Ｃは、第２ネットワークノードで使用中のビューポートにフォローする第１ネットワークノードを示している。図４Ａは、第１ビューポート４３０、第２ビューポート４２０Ａ、第３ビューポート４２０Ｂを備える仮想作業空間４１０を示している。図４Ａはまた、第１スクリーン空間４５０及び第２スクリーン空間４７５も示している。第１ビューポート４３０は、仮想作業空間４１０において、一連の図形ターゲット４３５を包含する領域を規定している。第１ネットワークノード４３０は、スクリーン空間４５０及び４７５上にマップされず、例えば、別のローカル・クライアント・ビューポートに対応する。第２ビューポート４２０Ａは、仮想作業空間４１０において、一連の図形ターゲット４２５を包含する領域を規定しており、スクリーン空間４５０を操作するローカルクライアントによってスクリーン空間４５０にマップされる。第３ビューポート４２０Ｂは、仮想作業空間４１０において、第１スクリーン空間４５０のビューポートをフォローする操作においてスクリーン空間４７５を操作するローカルクライアントによって、スクリーン空間４７５にマップされる領域を規定する。図形ターゲット４１５は、第１ビューポート４３０または第２ビューポート４２０Ａ及び４２０Ｂによって囲まれた領域の外の仮想作業空間４１０内に存在している。
【００６８】
第１スクリーン空間４５０は、第１縦横比を有し、第２ビューポート４２０Ａ内に位置を有するオブジェクト（図形ターゲット４２５の集合）を表示する。第２ビューポートは、一致（matching）する縦横比を有する。作業空間の仮想空間におけるビューポートの大きさは、縦横比の倍数であり、スクリーン空間４５０における画素数による大きさとは異なる。縦横比の倍数は、第１スクリーン空間４５０におけるズームレベルを設定し、この倍数はローカル・クライアント・ビューポートによって変更され得る。
【００６９】
第２スクリーン空間４７５は、第２縦横比を有し、第２スクリーン空間と同じ縦横比を有するビューポート４２０Ｂを使用し、第１ビューポート４２０Ａを包含する。第３ビューポート４２０Ｂは、第１スクリーン空間を操作するクライアントからのビューポート変更メッセージ、及び、第２スクリーン空間４７５のパラメータを用いて決定される大きさを有する。この例では、第３ビューポート４２０Ｂは、第１ビューポート４２０Ａと同じズームレベル、同じ中心点を有するため、第２ビューポート４２０内に位置を有するオブジェクト（図形ターゲット４２５の集合）を表示し、第２スクリーン空間と一致する縦横比を有する。仮想作業空間４１０内の図形ターゲット４１５Ａは、４２０Ａの外に存在するが、ビューポート４２０Ｂと重なっている。したがって、図形ターゲット４１５Ａは、第１スクリーン空間４５０には描画されず、部分的に第２スクリーン空間４７５上に描画される。図形ターゲット４１５Ｂは、ビューポート４２０Ａ、４２０Ｂ、４３０の外に存在するため、スクリーン空間４５０にもスクリーン空間４７５にも現れない。
【００７０】
図４Ｂは、フォロー操作のために第１ネットワークノードを選択する前の第２ネットワークノードを表しており、ローカルスクリーン空間４７５に関してビューポート４３０を規定している（この例では、スクリーン空間４７５は、ディスプレイ全体ではなく、ディスプレイ上のウィンドウである）。第１ビューポート４３０内の一連の図形ターゲット４３５は、第１スクリーン空間４５０上に描画される。
【００７１】
図４Ｃは、フォローする第２ネットワークノードを選択するロジックの、第２ネットワークノードにおける効果を示している。これは、第１スクリーン空間４５０に関して第１ノードで使用中のビューポート仕様を決定し、第２ノードに関してビューポート仕様を生成するロジックによって行われる。計算によって、上述したように第２スクリーン空間４７５と一致する縦横比を有する一方で、ビューポート４２０Ａと同じズームレベル及び中心点を有し、作業空間内の同じ領域を包含するビューポート４２０Ｂに関して、ローカル・クライアント・ビューポート仕様が作成される。これは、ローカルスクリーン空間４７５の縦横比（高さ／幅）を、フォローされるビューポート４２０Ａの縦横比と比較するロジックによって実現可能である。縦横比が１以下の場合、高さは幅と同じかそれより大きい。この場合、ローカル・クライアント・ビューポート４２０Ｂは、作業空間において、フォローされるビューポート４２０Ａの作業空間における高さを持ち、スクリーン空間４７５の縦横比によって決定される作業空間における幅を持つように規定される。縦横比が１より大きい場合、高さは幅より小さい。この場合、ローカル・クライアント・ビューポート４２０Ｂは、フォローされるビューポート４２０Ａの作業空間における幅を持ち、スクリーン空間４７５の縦横比によって決定される作業空間における高さを持つように規定される。このように、ビューポート４２０Ａの全ては、たとえ縦横比が合っていなくても、ビューポート４２０Ｂの範囲に含まれる。
【００７２】
この実施例において、参加ネットワークノードは、この例で“ユーザ”と名付けられたメニュータブ４８２といったオブジェクトを含むグラフィカル・ユーザ・インタフェースを実行する。このメニュータブは、スクリーン空間４７５内またはスクリーン空間４７５の隣に配置することができる。（この図では、スクリーン空間４７５は、縦横比が合っていることを説明する目的で、ディスプレイ上の小さいウィンドウとしている。他のシステムでは、スクリーン空間には、ディスプレイ上の表示可能領域の異なる部分を含んでいてもよく、表示可能領域の全部を含んでいてもよい。）メニュータブを選択することで、ユーザメニューが現れ、当該ユーザメニューは、共同作業空間に参加しているクライアントの、好ましくは、全てのクライアントのＩＤ（identity）を列挙する。この例では、共同作業空間の参加者は第１ノード４８４と第２ノード４８６である。第１ノード４８４は、スクリーン空間４５０に関連するユーザ名である。第２ノード４８６は、図４Ａのスクリーン空間４７５に関連するユーザ名である。
【００７３】
クライアントは、ユーザメニューリストからアイテムを選択すると、“ｂｆ”（フォロー開始）タイプの“ｖｅ”（一時的イベント）が、後述のテンプレートフォームであるＡＰＩを用いて、以下のように生成される。
// server <--> client
[client-id, "ve", target-id, event-type, event-properties]
●client-id（文字列）  送信元クライアントのＩＤ
●target-id（文字列）  このイベントに関連するターゲットウィンドウのＩＤ
●event-type（文字列）  一時的イベントタイプ
●properties（オブジェクト）  イベントの関連するキー／値を記述するＪＳＯＮオブジェクト
【００７４】
フォローモードに関連するこのテンプレートで使用可能な一時的イベントタイプには以下を含むことができる。
●bf  フォロー開始：ユーザＡがユーザＢへのフォローを開始する。ユーザＢがフォローしていることをユーザＡに通知するために使用される。
●ef  フォロー終了：ユーザＢがもうユーザＡをフォローしていない。ユーザＢがもうフォローしていないことをユーザＡに通知するために使用される。
【００７５】
第１ノード４８４は、client-idによって識別され、第１スクリーン空間４５０に関連付けられ、第２ノード４８６は、target-idによって識別され、図４Ａの第２スクリーン空間４７５に関連付けられる。
【００７６】
この実施例では、スクリーン空間４７５を備える第２ノード４８６は、スクリーン空間４５０を備える第１ノード４８４にフォローすることを選択する。第２ノード４８４のネットワークノードは、第１ノード４８４のフォローを開始していることを共同セッションに通知するために、“ｂｆ”タイプの“ｖｅ”記録を生成し、送信することができる。第２ノード４８６は、ローカルログを通読して、第１ノード４８４からの一番最近のビューポート変更“ｖｃ”記録を見つける。“ｖｃ”記録からの第１ノード４８６のビューポート４２０Ａの仕様は、第２ノード４８４のビューポート４２０Ｂの仕様を作成するために使用される。第２ノード４８４は次に、ローカルビューポート４２０Ｂを使って、スクリーン空間４７５上に描画されるローカルビューポート４２０Ｂ内の図形ターゲット４２５（図４Ａを参照）を見つけることができる。
【００７７】
第１ノード４８４の、位置やズームレベルといったビューポート４２０Ａにおける何らかの変更は、セッション内で共有され、第２ノード４８６が第１ノード４８４にフォローしている限り、第２ノード４８６のローカルビューポート４２０Ｂを更新するために使用される。
【００７８】
図５は、第２ネットワークノードの制御の下でビューポートをフォローするローカルビューポートを生成するために、第１ネットワークノードで実行されるロジックの一実施例を示すフローチャートである。開示される技術によって、複数のサブジェクトユーザが、作業空間内で単一のターゲットのクライアント側ネットワークノードの活動をフォローすることが可能になる。
【００７９】
図５は、クライアント側ネットワークノードによって実行されるユーザ入力を解釈するためのプロセスの簡略化されたフロー図である。この簡略化されたフロー図で示される順番は、説明のために提供され、特定の実施例に合うように変更され得る。例えば、ステップの多くは、並行して実行することができる。この実施例では、作業空間内の全てのユーザは、当該作業空間内で生じる全ての履歴イベント及び一時的イベントを受信する。クライアントのビューポートが作業空間内に特定の位置及び大きさを有する一方で、作業空間は本質的には無限であり得る。複数のクライアントは、重複したビューポートを備える作業空間内で共同することができる。当該複数のクライアントは、自身のビューポートの外に座標を有するオブジェクトに関連するイベントを受信し、記録することができる。
【００８０】
この例では、第１ネットワークノードは、共同作業空間に参加している１または複数の他のネットワークノードとの通信を確立する（５１０）。これには、サーバでのセッションへのログイン、当該サーバを介しての他のネットワークノードまたは他の通信経路への伝達が含まれる。
【００８１】
初期化のために、第１ネットワークノードは、作業空間内で起きた履歴イベントのログの形をした空間的イベントマップ、或いは、作業空間内での図形オブジェクトの位置を識別する他のデータ構造等の共同データを受信する。第１ネットワークノードはまた、例えば、履歴イベントのログの一部として、または別の方法で、セッションに参加しているネットワークノードの一覧も受信する。第１ネットワークノードは、作業空間セッションで使用される仮想作業空間に位置を有する図形ターゲットを識別する共同データを保存することができ、共同データには各図形ターゲットの仮想作業空間内における位置が含まれている（５２０）。この初期化の一部として、第１ネットワークノードは、最初の“ｖｃ”（ビューポート変更）記録のインスタンスを作成し、この記録を作業空間の他の参加クライアントに伝達する。最初の“ｖｃ”記録は、以前のセッションからのログから検索できる。最初の“ｖｃ”記録はまた、作業空間内ではデフォルトの“ｖｃ”記録であるか、作業空間で最も使用されている領域を識別するロジックといった他の方法によってインスタンスが作成される。第１ネットワークノードは、仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートを、ローカル・クライアント・スクリーン空間にマップする（５３０）。“フォロー”フラグを設定するために、第１ネットワークノードと関連付けされた第１サブジェクトユーザに、他のネットワークノードでのセッションの参加者の一覧を表示するユーザインタフェースが提供される（５４０）。第１サブジェクトユーザは次に、識別されたユーザの一覧からターゲットユーザを選択する。第１ネットワークノードは、“ｖｅ：ｂｆ”記録を生成し、当該記録を、選択されたユーザのネットワークノードを含み得る作業空間の参加ネットワークノードへ伝達する。第１サブジェクト・ネットワーク・ノードは、今、選択されたネットワークノードを“フォロー”している。
【００８２】
第１ネットワークノードは、選択された他の参加クライアントで使用中の参加クライアントビューポートの作業空間における位置を含むメッセージを含めて、セッションの他の参加者からメッセージの受信を続ける（５５０）。第１ネットワークノードは、選択されたユーザのビューポートの座標内に現れているこれらの図形ターゲットのみを描写する。選択された他の参加クライアントが選択されたネットワークノードのビューポートを変更する時、第１ネットワークノードは、ローカル・クライアント・ビューポートの位置を、選択された他の参加クライアントで使用中の参加クライアントビューポートの識別された位置に更新する（５６０）。
【００８３】
第１ネットワークノードは次に、スクリーン空間上に、更新されたローカル・クライアント・ビューポート内に位置を有する図形ターゲットを描画する（５７０）。
【００８４】
開示される技術は、ビューポートの内容をローカルスクリーン空間上に描画することができ、ローカルスクリーン空間の縦横比、高さ、幅等の属性の考えられる差異を説明する。選択されたユーザのビューポートと交差する図形ターゲットの追加、削除、変更といった仮想作業空間への変更もまた、第１ネットワークノードのスクリーン空間上に描画される。
【００８５】
また、第３ユーザは、第１ネットワークノード、選択されたユーザのネットワークノード、または、他のネットワークノードをフォローするために、自身のネットワークノード内にフォローフラグを設定する。どの点においても、第１ユーザは、フォローフラグを無効にし、自身の元のビューポートに戻ることができる。
【００８６】
この例において、作業空間内の複数のクライアントは、“フォロー方法”に関して、サブジェクト・ネットワーク・ノードまたはターゲット・ネットワーク・ノードになることができる。一実施例では、ネットワークノードは複数のターゲットをフォローすることができ、１つのビューポートでターゲットをフォローすることと、第２ビューポートで共同することの両方を同時に行うことができる。
【００８７】
図６は、第１クライアント側ネットワークノードが第２クライアント側ネットワークノードをフォローする際の、第１クライアント側ネットワークノード、サーバ側ネットワークノード、第２クライアント側ネットワークノード間のメッセージマップを示している。
【００８８】
最初に、この実施例では、第２クライアント側ネットワークノード６１９が共同作業空間に参加している。第２クライアント側ネットワークノード６１９はイベントを生成し、このイベントは、サーバ側ネットワークノード６１５上の空間的イベントマップを介して他のネットワークノードと共有される。第２クライアント側ネットワークノード６１９もまた、サーバ側ネットワークノード６１５を介して他のクライアント側ネットワークノードからイベントを受信する。イベントの送信は、１または複数のクライアント側ネットワークノードとサーバ側ネットワークノード間のイベント６２０の通信を通じて生じる。この例では、サーバ側ノードは、イベントを他の参加ネットワークノードに分配する。
【００８９】
この例では、第１クライアント側ネットワークノード６１１は、サーバ側ネットワークノード６３０との通信を確立することにより共同作業空間に参加する。サーバ側ネットワークノードは、ユーザ一覧、ネットワークノードのビューポート変更記録、空間的イベントマップ、位置マーカを含む共同データを、第１クライアント側ネットワークノード６４０に送信する。第１クライアント側ネットワークノードは次に、共同データをローカルログに保存する。第１クライアント側ネットワークノード６１１は、図５に示されているように、最初のビューポートを設定し、そのビューポートと交差するローカルログ内で図形ターゲットのイベント記録を発見する。当該ビューポートと交差する図形ターゲットは、スクリーン空間上に描画される。
【００９０】
第１クライアント側ネットワークノード６１１と第２クライアント側ネットワークノード６１９は、いずれも、作業空間内のイベントを生成、送信、受信し、それらのビューポート内で発生したイベントを見ることができる。イベントは、サーバ側ネットワークノード６５０を介して全ての参加ネットワークノードに伝達される。開示される技術によって、第１ユーザは、第２ユーザにフォローすることができる。この例では、第１クライアント側ネットワークノード６１１は、自身のローカルログ内のユーザ一覧から、第２クライアント側ネットワークノード６１９で作業しているターゲットユーザのＩＤを選択する。この選択によって、第１クライアント側ネットワークノードはフォロー開始“ｖｅ：ｂｆ”記録を生成し、当該記録は、サーバ側ネットワークノード６６０を介して第２クライアント側ネットワークノードに伝達される。イベントは、更に、全ての参加ネットワークノードに伝達される。しかし、第１クライアント側ネットワークノードは、第２クライアント側ネットワークノードで特定されたビューポートを包含するローカル・クライアント・ビューポートを生成し、更新されたローカル・クライアント・ビューポートと交差するイベントのみを表示し、実際には、第２クライアント側ネットワークノードのビューポートをフォローする。イベントは、第２クライアント側ネットワークノード６１９、または、図６には示されていない第３クライアント側ネットワークノードによって生成される。しかし、この例では、第１クライアント側ネットワークノード６１１は、“フォロー・ミー”モードの間は、作業空間の表示可能な内容を変更するイベントを生成しないが、他のネットワークノード６７０によって生成されたイベントを受信し続ける。
【００９１】
この例では、第２クライアント側ネットワークノード６１９は、自身のビューポートを変更できる。ビューポートにおける変更によって、第２クライアント側ネットワークノードが新しいビューポート変更“ｖｃ”記録を生成し、当該記録を作業空間６８０の他の参加者に送信する。第１クライアント側ネットワークノードは、第２クライアント側ネットワークノードにフォローする一方で、合致するローカル・クライアント・ビューポートを変更し、その新しいローカル・クライアント・ビューポートと交差する図形ターゲットをログから描画する。
【００９２】
別のビューポートを発見する技術では、作業空間に位置を有する位置マーカを設定するイベントは、空間的イベントマップまたは他の種類の共有データ構造で共有される。第１ネットワークノードにおける第１ユーザは、任意の時に、任意の参加者によって設定された位置マーカを選択することができる。位置マーカは、第２ユーザの、今居る場所ではなく、これまで居た場所の記録として使用できる。
【００９３】
図７Ａ、７Ｂ、７Ｃは、（クライアントの現在のビューポート内に位置する）位置マーカの例と、それらによって発生し得るイベントの一部と共にスクリーン空間を示している。図７Ａは、スクリーン空間内に第１位置マーカ７２１、第２位置マーカ７２３、第３位置マーカ７２５を含む複数の位置マーカと図形ターゲット７５１を示している。
【００９４】
図７Ｂは、図７Ａのオブジェクトを示している。図７Ｂはまた、第３位置マーカ７２５の名称を示しており、ユーザが位置マーカをマウスで一回クリックすると、第３位置マーカの名称が現れる。この例では、位置マーカ７２５の名称は、“位置Ａ”である。
【００９５】
図７Ｃは、（スクリーン空間の大きさは固定された状態で）現在のビューポートの大きさを変更することで生じる作業空間へのズームインを示している。第２位置マーカ７２３は、例えば、第２位置マーカ上でのダブルクリック等の、ポインタまたはタッチベースのユーザ入力ジェスチャの後、スクリーン空間の中心座標（０，０）となる。ダブルクリックのジェスチャによって、ローカルクライアントは、（この例では位置マーカ上にある）作業空間におけるダブルクリックの位置を中心とし、ダブルクリックの結果増加したズームレベルを有するローカルビューポートに関して、新しいビューポートの仕様を計算する。この例では、第３位置マーカ７２５の名称は消えて、ビューポートの大きさが作業空間内のより小さな空間を定義するよう変更される。尚、当該ビューポートの中心は、ダブルクリックの位置、すなわち、第２位置マーカ７２３であり、スクリーン空間の中心もまた、ダブルクリックの位置である。第１位置マーカ７２１は、もはやビューポート内にはなく、第３位置マーカ７２５の図形ターゲットのみがスクリーン空間内に部分的に見えており、第３位置マーカの一部は、ビューポートの外側にある。ビューポートは、もはや図形ターゲット７５１全体を含んでおらず、当該ビューポート内に適合する図形ターゲットの一部のみを含んでいる。
【００９６】
図８Ａ及び８Ｂは、メニューから位置マーカを選択するために使用される構成物を有するグラフィカル・ユーザ・インタフェースを示している。図８Ａは、位置Ａに関する第１位置マーカ８２１、位置Ｂに関する第２位置マーカ８２３、位置Ｃに関する第３位置マーカ８２５、図形ターゲット８５１を含む複数のオブジェクトを示している。また、位置アイコン８０３も示されている。メニューバーで位置アイコン８０３をクリックすると、ゼロまたは複数のエントリを有する位置メニュー８０１が現れる。この例では、位置メニュー８０１は５個のエントリ（位置を追加、ビューポートを既定の原点に変更、３つの位置マーカ）を有する。スクリーン空間に表示されていないメニューには他の位置マーカが存在する。この例ではメニューのエントリを選択すると、図８Ｂに示されるように、ローカルビューポートに関するビューポート仕様が更新され、選択時のズームレベルを維持しながら、選択された位置マーカがスクリーン空間の中心座標（例えば０，０）に移動する。位置マーカの一覧を表示するこのユーザインタフェースは、位置マーカの一覧に加えて、作業空間に関するデフォルトの位置または既定の原点の位置に関して選択可能なエントリ（“原点”）も表示する。クライアントは、“原点”の選択可能なエントリが選択されると、選択時のズームレベルを維持しながら、ローカル・クライアント・ビューポートの位置を、デフォルトの位置に更新するロジックを備える。
【００９７】
図８Ｂに示されるように、位置メニュー８０１内には、位置Ａと名付けられた選択可能なアイテム８１４がある。位置Ａ８１４を選択すると、ビューポートは第１位置マーカ８２１をビューポートの中心として使用して、スクリーン空間の内容が上及び右へ移動して表示される。第２位置マーカ８２３及び図形ターゲット８５１は、スクリーン空間内に部分的に見えているのみであり、第３位置マーカ８２５はもはやスクリーン空間内には見えていない。この例では、ローカル・クライアント・ビューポートはサイズを変えることなく作業空間内で移動する。結果として、ズームレベルは一定のままである。
【００９８】
位置マーカ名は、仮想作業空間内に位置を有する素材の内容を反映する検索可能なタグである。多数の位置マーカを含む作業空間においては、ユーザインタフェースは、位置マーカタグの問い合わせに基づく検索機能を有する。
【００９９】
図９Ａ、９Ｂ、９Ｃは、位置マーカを仮想作業空間に追加する例を示している。図９Ａは、第１位置マーカ９２１、第２位置マーカ９２３、第３位置マーカ９２５、図形ターゲット９５１を含む複数のオブジェクトを示している。また、位置アイコン９０３、及び、０または複数のエントリを有する位置メニュー９０１も示されている。この例では、位置メニュー９０１の第１エントリが、位置の追加９１１である。位置の追加９１１エントリを選択すると、位置マーカタイプ９１５（表示される位置マーカ作成イベントの図形ターゲットの選択に使用される）、位置マーカ名のフィールド９１６、マーカ作成ボタン９１７を含む、図９Ｂに示されるサブメニューアイテムを起動する。新しい位置マーカの作成には、マーカタイプ９１５の選択が含まれる。この実施例では、利用可能なマーカタイプは、位置マーカの種々のカテゴリを示すために色分けされている。次のステップは、この例では、“新しい位置マーカ”である位置マーカ名のフィールド９１６に値を入力することである。最後のステップは、マーカ作成ボタン９１７を選択することである。図９Ｃに示すように、この選択によって、サブメニューが消え、“新しい位置マーカ”と称する新しい位置マーカ９２７がスクリーン空間の中央に現れる。次に“he:markercreate”記録が生成され、他の参加ネットワークノードに分配される。
[client-id, "he", new-widget-id, "markercreate",{
"creationTime":1387565966,
"name":"New Location Marker",
"y":1828,
"x":-875,
"color":0
}]
【０１００】
新しい位置マーカを作成するネットワークノード内で動作するクライアントは、位置マーカの作成または移動を含むイベントを識別するメッセージを他のネットワークノードに送信するロジックを含む。また、ネットワークノード及び共同システムの他のネットワークノードで動作するクライアントの当該ロジックは、別の（第２）ネットワークノードからのマーカ作成またはマーカ移動イベントを運搬するメッセージの受領に応答して、位置マーカの一覧を更新する。
【０１０１】
図１０は、メニューからの位置マーカの選択を示すフローチャートである。図１０は、クライアント側ネットワークノードによって実行されるユーザ入力を解釈するプロセスの簡略化されたフロー図である。この簡略化されたフロー図で示される順番は、説明の目的で提供され、特定の実施例に合うように変更され得る。例えば、ステップの多くは、並行して実行することができる。この実施例では、作業空間内の全てのユーザは、当該作業空間内で生じる全ての履歴イベント及び一時的イベントを受信する。クライアントのビューポートが当該クライアントのビューポートと交差する作業空間の部分の内容を含むことができる一方で、作業空間は本質的には無限であり得る。複数のクライアントは、ビューポートが重なりながら作業空間内で共同することができる。クライアントは、自身のビューポートの外に座標を持つイベント記録によって定義されるオブジェクトを受信し、記録する。
【０１０２】
この例では、第１ネットワークノードが、共同作業空間セッションにおける参加クライアントとして、１または複数の他のネットワークノードとの通信を確立する（１０１０）。第１ネットワークノードは、位置マーカの作成または移動を含む、図形ターゲットに関するイベントのログの少なくとも一部を保存する。イベントのターゲットは、作業空間セッションで使用される仮想作業空間に位置を有し、イベントの図形ターゲットの仮想作業空間内における位置を含むログのエントリ、図形ターゲットに関連する動作、イベントの時刻、図形ターゲットのターゲット識別子を有する（１０２０）。第１ネットワークノードは、ローカル・クライアント・ビューポートを、第１ネットワークノードで物理的表示空間内のローカル・クライアント・スクリーン空間にマップする（１０３０）。位置マーカは作業空間内にマークされた位置を有し、ネットワークノードは、セッション内の作業空間の位置マーカの一覧を表示し、当該一覧から選択された位置マーカを示す入力を受信するためのユーザインタフェースを提供する（１０４０）。
【０１０３】
選択された位置マーカの選択に応答して、ローカル・ネットワーク・ノードは、ローカル・クライアント・ビューポートの位置を、マークされた位置に更新し（１０５０）、スクリーン空間上に、更新されたローカル・クライアント・ビューポート内に位置を有する図形ターゲットを描画する（１０６０）。
【０１０４】
図１１は、ネットワークノード間の位置マーカの通信に関するメッセージマップを示している。図１１は、第１クライアント側ネットワークノードが第２クライアント側ネットワークノードにフォローする際の、第１クライアント側ネットワークノード、サーバ側ネットワークノード、第２クライアント側ネットワークノード間のメッセージマップを示している。
【０１０５】
最初に、この実施例では、第２クライアント側ネットワークノード１１１９が、共同作業空間に参加している。第２クライアント側ネットワークノード１１１９は、サーバ側ネットワークノード１１１５上の空間的イベントマップを通じて他のネットワークノードと共有されるイベントを生成する。また、第２クライアント側ネットワークノード１１１９は、サーバ側ネットワークノード１１１５を介して他のクライアント側ネットワークノードからイベントを受信する。１または複数のクライアント側ネットワークノードとサーバ側ネットワークノード間で、イベントの通信１１２０を通じて、イベントの伝達が生じる。
【０１０６】
この例では、第１クライアント側ネットワークノード１１１１は、サーバ側ネットワークノード１１３０との通信を確立することで、共同作業空間に参加する。サーバ側ネットワークノードは、位置マーカといった図形ターゲットを含む共同データを、第１クライアント側ネットワークノード１１４０に送信する。第１クライアント側ネットワークノードは、次に、共同データをローカルログに保存する。第１クライアント側ネットワークノード１１１１は、図５で説明したように、最初のビューポートを設定し、次に、そのビューポートと交差するローカルログ内の図形ターゲットのイベント記録を発見する。ビューポートと交差するイベントの図形ターゲットは、スクリーン空間上に描画される。
【０１０７】
第１クライアント側ネットワークノード１１１１及び第２クライアント側ネットワークノード１１１９は、どちらも、作業空間内でイベントを生成、送信、受信し、それらのビューポート内で生じたイベントを見ることができる。イベントは、サーバ側ネットワークノード１１５０を通じて全ての参加しているネットワークノードに伝達される。開示される技術によって、第１ユーザは、第２ユーザと共有される位置マーカが作成できる。この例では、第１クライアント側ネットワークノード１１１１は、図９に示したように、位置マーカを追加することができる。これにより、“he:markercreate”記録が生成され、“he:markercreate”記録はサーバ側ネットワークノードを介して第２クライアント側ネットワークノードに伝達される（１１６０）。以後は、位置マーカは、作業空間内の他の参加者に伝達され（１１７０）、選択可能である。位置マーカを起動すると、結果としてローカルビューポートが更新され、参加ノードは他の参加者にビューポート変更“ｖｃ”イベントを送信できる。
【０１０８】
図１２はデジタルディスプレイ共同環境の態様の一例を説明するものである。この例では、複数のユーザ１２０１ａ〜ｈ（総称して１２０１）が、複雑な画像、音楽、動画、文書、及び／又は他のメディア（全て、図１２において１２０３ａ〜ｄ（総称して１２０３）として示されている）の創作においてお互いに共同を望むことがあり得る。図示された例におけるユーザは、互いに共同するために、例えばタブレット１２０２ａ、パーソナルコンピュータ（ＰＣ）１２０２ｂ、及び、多数の大画面ディスプレイ１２０２ｃ、１２０２ｄ、１２０２ｅ（総称してデバイス１２０２）のような、電子的ネットワークノードとして構成された種々のデバイスを使用する。図示された例において大画面ディスプレイ１２０２ｃは、本明細書中で「壁」と呼ばれることもあるが、１より多いユーザ（例えば、ユーザ１２０１ｃと１２０１ｄ、ユーザ１２０１ｅと１２０１ｆ、及び、１２０１ｇと１２０１ｈ）に対応する。クライアント側ネットワークノードと呼ばれるユーザデバイスは、作業空間内のイベントを表示するためのスクリーン空間が割り当てられたディスプレイを有している。所定のユーザのスクリーン空間は、事実上無限の空間の作業空間と比較して限られた領域又は空間を有する、ディスプレイのスクリーン全体、スクリーンの一部、スクリーンに表示されるウィンドウ等を含み得る。
【０１０９】
図１３はデジタルディスプレイ共同環境の態様の更なる例を示している。図１２に示されるように、「壁」と呼ばれることもある大画面ディスプレイ１２０２ｃ、１２０２ｄ、１２０２ｅは、サーバ側物理的ネットワークノードとして構成された中央の共同サーバ１３０５とネットワーク通信を行う夫々のクライアント側通信ネットワーク１３０４によって制御され、中央共同サーバ１３０５は複数の作業空間のための空間的イベントマップスタックを記憶するデータベース１３０６とアクセス可能である。
【０１１０】
本明細書中において、物理ネットワークノードはネットワークに取り付けられた動作中の電子機器であり、通信チャネルを介して情報を送信し、受信し、又は転送することが可能である。ネットワークノードとして採用され得る電子機器の例は、任意の種類のコンピュータ、ワークステーション、ラップトップコンピュータ、ハンドヘルドコンピュータ、及びスマートフォンを含む。本明細書中において、用語「データベース」は必ずしも任意の単一構造を意味しない。例えば、２つ以上の別々のデータベースは、一緒にまとめることを考慮すると、本明細書の用語における「データベース」を構成する。
【０１１１】
共同サーバ１３０５で実行されるアプリケーションは、Ａｐａｃｈｅ又はｎｇｉｎｘのようなウェブサーバソフトウェア、或いは、Ｎｏｄｅ．ｊｓのようなランタイム環境を用いて実行されることができる。例えば、ＬＩＮＵＸのようなオペレーティングシステムを実行する仮想マシン上で実行されることがあり得る。サーバ１３０５は図１３において単一のコンピュータとしてヒューリスティックに図示されている。しかしながら、サーバ構成には、大規模クラウドベースサービスに一般的な、サーバアプリケーションを実行する多数のコンピュータからなるシステムを含み得る。サーバ構成は、共同セッション中の夫々のクライアント毎に１より多いチャネルを含んで、様々なタイプの通信チャネル用に構成されることのできる通信モジュールを含む。例えば、ネットワークを介したリアルタイムに近い更新で、クライアントソフトウェアは、例えばＷｅｂＳｏｃｋｅｔプロトコルに基づいたメッセージベースのチャネルを使ってサーバ通信モジュールと通信することができる。最初の大容量作業空間データの受信と同様、ファイルのアップロードに際して、クライアントソフトウェアはサーバ通信モジュールとＨＴＴＰＳを介して通信する。サーバは、例えばＲｕｂｙ  ｏｎ  Ｒａｉｌｓを実装したＪａｖａＳｃｒｉｐｔで記述されたフロントエンドプログラムを実行し、例えばＯａｕｔｈに基づいた認証／承認をサポートし、多数の分散したクライアント同士の調整を支援することができる。サーバ通信モジュールは、作業空間データ内のユーザの動作を記録し、ユーザ動作を適用可能として他のクライアントに中継する機能を実行する、ＷｅｂＳｏｃｋｅｔアプリケーションのようなメッセージベース通信プロトコルスタックを含み得る。このシステムは例えばＮｏｄｅ．ｊｓプラットホーム上、或いは高負荷ソケットアプリケーションを扱うために設計された他のサーバ技術上で動作する。
【０１１２】
データベース１３０６は、夫々のセッションの空間的イベントマップについて、ディスプレイキャンバス上に表示可能なオブジェクトに関するイベントを含み、又は識別することのできる作業空間データセットのデジタル表現を保存している。作業空間データセットは空間的イベントスタックの形式で実装されることができ、少なくとも永続的空間イベント（履歴イベントと称される）が、取消動作の間、先入れ後出しのパターンで、スタックに追加され（プッシュ）、スタックから取り出される（ポップ）ように管理される。多数の異なる作業空間毎に作業空間データセットがあり得る。所定の作業空間のためのデータセットはデータベース内に構成されるか、又は作業空間と結びついた機械により可読な文書として構成され得る。作業空間は無限の、又は事実上無限の大きさを有し得る。作業空間データは、表示クライアントによってディスプレイ壁上の表示領域内に表示可能なオブジェクトを識別するイベントデータ構造を含み、作業空間内の時間と場所を当該イベントデータ構造によって識別されたオブジェクトと関連付ける。デバイス１２０２の夫々は全体の作業空間のうち一部だけを表示する。ディスプレイ壁はオブジェクトを表示するための表示領域を有し、表示領域は作業空間内の対応する領域にマップされる。当該対応する領域は、作業空間内のユーザ位置を中心とする、或いはそうでない場合作業空間内のユーザ位置から定まるビューポートに対応する。作業空間内の対応するビューポートへの表示領域のマッピングは、表示クライアントによりディスプレイ上に描画されるべき表示領域内にある作業空間データ内のオブジェクトを識別し、ディスプレイ上の表示領域内の位置におけるユーザのタッチ入力とリンクするオブジェクトを識別するのに利用できる。
【０１１３】
サーバ１３０５及びデータベース１３０６は、作業空間内に位置を有する図形ターゲットに関するイベントのログ、イベントに係る図形ターゲットの作業空間内における位置を含む当該ログ内のエントリ、イベントの時刻、及び、イベントに係る図形ターゲットのターゲット識別子を保存するメモリを備え、サーバ側ネットワークノードを構成することができる。サーバは、複数のアクティブなクライアント側ネットワークノードとの接続を確立し、作業空間内に位置を有する図形ターゲットの修正及び作成に関するイベントを識別するメッセージを受信し、当該メッセージに応答してログにイベントを追加し、及び、特定のクライアント側ネットワークノードから受信したメッセージのうち識別されたイベントに関するメッセージを他のアクティブなクライアント側ネットワークノードへ配信するためのロジックを含み得る。
【０１１４】
サーバ１３０５のロジックは、アプリケーション・プログラム・インタフェースを含むことができ、規定の手順及びパラメータの組を備え、これによってログの一部を運搬するメッセージをクライアント側ネットワークノードに送信し、作業空間内に位置を有する図形ターゲットに関するイベントを識別するデータを運搬するメッセージをクライアント側ネットワークノードから受信することができる。
【０１１５】
また、サーバ１３０５のロジックは、あるクライアント側ネットワークノードから受信したイベントを他のクライアント側ネットワークノードへ配信する処理を備えたアプリケーションインタフェースを含み得る。
【０１１６】
ＡＰＩに準拠したイベントは、ログに保存され、且つ他のクライアント側ネットワークノードへ配信される第１種のイベント（履歴イベント）と、他のクライアント側ネットワークノードへ配信されるがログに保存されない第２種のイベント（一時的イベント）を含み得る。
【０１１７】
サーバ１３０５は複数の作業空間に対し作業空間のデータセットを保持でき、セッションに参加する表示クライアントに作業空間データを提供することができる。作業空間データは、その後、表示クライアントソフトウェアを含む適当なソフトウェア１３１２を備えたコンピュータシステム１３１０によって、ディスプレイ上に表示する画像を決定し、対話対象のオブジェクトをディスプレイ面上の位置に割り当てるのに利用される。サーバ１３０５は、異なる共同セッションに対して、多数の作業空間を保持及び維持する。夫々の作業空間はユーザのグループにより関連付けられ、グループ内の承認されたユーザのみがアクセス可能に構成することができる。
【０１１８】
いくつかの代替する構成では、サーバ１３０５は、そのデバイス上で視認可能なキャンバス内の部分を示す「ビューポート」をデバイス１２０２毎に追跡し、当該ビューポートを描画するのに必要なデータを各デバイス１２０２に提供することができる。
【０１１９】
線画オブジェクトの描画、ユーザ入力の処理、及びサーバとの通信を担うクライアントデバイスで実行されるアプリケーションソフトウェアは、ＨＴＭＬ５或いは他のマークアップベースの手続に基づくものであることができ、ブラウザ環境で実行されるものであり得る。これは多数の異なるクライアントのオペレーティングシステム環境への容易な対応を可能とする。
【０１２０】
データベース１３０６に保存されるユーザインタフェースデータは、イメージビットマップ、ビデオオブジェクト、多ページ文書、スケーラブル・ベクタ・グラフィックス等の図形構成物を含む様々な種類のオブジェクトを含む。デバイス１２０２は、夫々、通信ネットワーク１３０４を介して共同サーバ１３０５と通信している。通信ネットワーク１３０４はＬＡＮ、ＷＡＮ、ルータ、スイッチ、ＷｉＦｉコンポーネント、セルラーコンポーネント、有線及び光学コンポーネント、及びインターネット等の全ての形式のネットワークコンポーネントを含み得る。ある状況では２以上のユーザ１２０１は同じ部屋内におり、彼らのデバイス１２０２がＷｉｆｉを介して共同サーバ１３０５と通信する。別の状況では２以上のユーザ１２０１は何千マイルも互いに離れていて、彼らのデバイス１２０２がインターネットを介して共同サーバ１３０５と通信する。壁１２０２ｃ、１２０２ｄ、１２０２ｅは、画像を表示するだけではなく、スタイラス又は１以上の指のような体の一部の何れかで表示面に触れることによって提示されるユーザジェスチャを検知することができるマルチタッチデバイスであり得る。いくつかの実施形態において、壁（例えば１２０２ｃ）は１または複数の指（或いは、例えば手全体）によるタッチとスタイラスによるタッチを区別することができる。ある実施形態では、壁は赤外光を出射し受光した光を検出することによって、ユーザの指からの反射光が壁が受光した周辺光と区別する特性を有することから、タッチを検知する。スタイラスは、壁が周辺光とユーザの指からの反射光の両方を区別できる方法で、自身の赤外光を出射する。壁１２０２ｃは、例えば、フィンランド国ヘルシンキに所在地を有するＭｕｌｔｉＴｏｕｃｈ社製造のモデルＮｏ．ＭＴ５５３ＵＴＢＬ  ＭｕｌｔｉＴａｃｔｉｏｎセルが、水平方向及び垂直方向にタイルされた配列であり得る。表現手段の多様性を提供するため、壁１２０２ｃは「状態」を維持するように動作される。即ち、それは所定の入力に対し、とりわけ入力の順序に依存して異なった反応をし得る。例えば、ツールバーを使用して、ユーザは多数の利用可能なブラシスタイル及び色の何れかを選択できる。一度選択されると、壁は、続くスタイラスによるストロークが選択されたブラシスタイル及び色を使用して線を描く状態にある。
【０１２１】
図示された実施形態において、ディスプレイ配列は、合計で高さ６フィート幅３０フィートの、複数ユーザが壁の異なる部分に立って同時に操作するのに十分な大きさの、スクリーン空間として使用できる表示可能領域を有することができる。
【０１２２】
図１４Ａ〜１４Ｆは、共同サーバ１３０５のデータベースによって維持される作業空間データの一部となり得るデータ構造を表している。図１４Ａにおいて、あるイベントデータ構造が図示されている。イベントは作業空間データとの対話であり、当該作業空間データの変化を招き得る。したがって、イベントはイベント識別子、時刻印（timestamp）、セッション識別子、イベント型パラメータ、client-idであるクライアント識別子、及び作業空間内における位置の配列を含み、対応するイベントの１または複数を含むことができる。例えば時刻印は、競争するイベントが同一オブジェクトに影響を及ぼす競争的状況の可能性を最小にするために、ミリ秒或いはより細かい分解能を有することが望ましい。また、イベントデータ構造は、クライアントディスプレイでのタッチスクリーン上のストローク（stroke）と結びついている作業空間内のオブジェクトを識別するＵＩターゲットを含み得る。イベントは、例えばストロークの表示パラメータを示すスタイルイベントを含み得る。イベントは、テキストオブジェクトの作業空間内における登録、修正又は移動を示すテキスト型イベントを含み得る。イベントは、カード型オブジェクトの作業空間内における作成、修正又は移動を示すカード型イベントを含み得る。イベントは、ストロークの位置配列、及び、例えば色や線幅等のストロークの表示パラメータを識別するストローク型イベントを含み得る。イベントは、フォロー開始イベント及びビューポート変更イベントを含み得る。イベントは、マーカ作成イベントを含み得る。
【０１２３】
イベントは永続的な履歴イベントと一時的イベントに分類される。作業空間データに追加するためのイベントの処理、及びユーザ間での共有は、イベントの分類に依存し得る。この分類はイベント型パラメータに固有のものであるか、イベントデータ構造内の付加的なフラグ又はフィールドが分類を示すために使用され得る。
【０１２４】
空間的イベントマップは履歴イベントのエントリを有するイベントのログを含み、夫々のエントリは図１４Ａに図解されるような構造を含んでいる。サーバ側ネットワークノードは一時的及び履歴イベントを運搬するメッセージをクライアント側ネットワークノードから受信し、当該一時的イベントを、イベントが対応するエントリとしてログに追加されるサーバへは転送せずに他のクライアント側ネットワークノードに送信し、当該履歴イベントを、イベントが対応するエントリとしてログに追加されるサーバへ転送する一方で他のクライアント側ネットワークノードにも送信するためのロジックを含む。
【０１２５】
図１４Ｂはカードデータ構造を図示している。カードデータ構造は、セッション識別子、カードタイプ識別子、配列識別子、クライアント識別子、カードの大きさ、カードに関連付けられたファイルのタイプ、及び、作業空間内のセッションの位置を含む、作業空間内のオブジェクトについての現在状態の情報を識別する属性のキャッシュを提供し得る。
【０１２６】
図１４Ｃはチャンクと呼ばれる、多数のイベント及びオブジェクトを１つのキャッシュ可能な組み合わせに統合したデータ構造を図示している。データ構造はセッションＩＤ、チャンク内に含まれるイベントの識別子、及び、チャンクが生成された時刻印を含む。
【０１２７】
図１４Ｄは選択された作業空間内のセッションに参加しているユーザへのリンクのためのデータ構造を図示している。このデータ構造はアクセストークン、セッションに係る表示クライアントのクライアント識別子、表示クライアントとリンクしたユーザ識別子、ユーザがセッションにアクセスした最後の時刻と有効期限を示すパラメータ、セッションについての種々の情報を運搬するクッキーを含み得る。この情報は例えば、ユーザの作業空間内の現在位置を維持することができ、ユーザがログインした夫々の時刻において、ログインと関連付けられた表示クライアントに表示するための作業空間データを決定するのに利用し得る。
【０１２８】
図１４Ｅはディスプレイ配列データ構造を図示しており、夫々が表示クライアントを有する連合ディスプレイにより実装される大規模ディスプレイに関連して利用され得る。当該連合ディスプレイの表示クライアントは単一のディスプレイとして機能するように協力する。作業空間データは配列ＩＤによってディスプレイの配列を識別し、夫々のディスプレイのセッション位置を識別するディスプレイ配列データ構造を維持することができる。夫々のセッション位置は連合ディスプレイの領域内におけるｘオフセットとｙオフセット、セッション識別子、及び深さを含み得る。
【０１２９】
システムはクライアント側ネットワークノードとの通信を暗号化し、空間的イベントマップが保存されるデータベースを暗号化することができる。また、クライアント側ネットワークノード上において、いくかの実施形態では、クライアント側コンピュータへのアクセスを得た侵入者によるデータの不正アクセスを防ぐため、空間的イベントマップのキャッシュコピーが暗号化される。
【０１３０】
図１４Ｆは、アクティブなクライアントをアクティブな作業空間にマップするのに使用されるグローバル・セッション・アクティビティ・テーブル（ＧＳＡＴ）を示している。データ構造には、作業空間名、デバイスの種類、クライアントＩＤ、セッションＩＤ、行為者（actor）ＩＤを含む。
【０１３１】
図１５は、分散型共同システムにおいて、クライアント側の機能（例えば、コンピュータシステム１３１０）又はサーバ側の機能（例えば、サーバ１３０５）を実現するために使用され得るコンピュータシステム又はネットワークノードの簡略化されたブロック図である。コンピュータシステムは、典型的に、多数の周辺機器とバスサブシステム１５１２を介して通信するプロセッササブシステム１５１４を含む。周辺機器は、メモリサブシステム１５２６及びファイルストレージサブシステム１５２８を備えたストレージサブシステム１５２４、ユーザインタフェース入力デバイス１５２２、ユーザインタフェース出力デバイス１５２０、及び、通信モジュール１５１６内のネットワークインタフェースサブシステムを含み得る。入力及び出力デバイスはコンピュータシステムとのユーザ対話を可能にする。通信モジュール１５１６は、通信ネットワーク１３０４とのインタフェースを含んで、外部ネットワークとのインタフェースとして物理的な通信プロトコルサポートを提供し、他のコンピュータシステムの対応する通信モジュールと通信ネットワーク１３０４を介して接続している。通信ネットワーク１３０４は、多数の相互接続されたコンピュータシステム及び通信接続を含み得る。これら通信接続は、有線接続、光接続、無線接続、或いは他の任意の情報通信のための機構であり得るが、典型的には、少なくともその肢部において、ＩＰベースの通信ネットワークである。一実施形態においては、通信ネットワーク１３０４はインターネットであり、他の実施形態では、通信ネットワーク１３０４は任意の適したコンピュータネットワークであり得る。
【０１３２】
ネットワークインタフェースの物理ハードウェア要素は、時々ネットワークインタフェースカード（ＮＩＣ）と呼ばれるが、それらは必ずしもカードの形をしている必要はなく、例えばマザーボード上に直接取り付けられた集積回路（ＩＣ）とコネクタの形式、或いはコンピュータシステムの他の要素と一緒に単一の集積回路上に実装されるマクロセルの形式であり得る。
【０１３３】
ユーザインタフェース入力デバイス１５２２はキーボード、マウス、トラックボール、タッチパッド、又はグラフィックタブレット、スキャナ、ディスプレイに組み込まれたタッチスクリーン（大規模デジタルディスプレイ１２０２ｃのタッチセンサ部分を含む）のような指示デバイス、音声認識システム、マイクのような音声入力デバイス、及び他の形の触知できる入力デバイスを含み得る。一般に、用語「入力デバイス」の使用は、コンピュータシステム内に、又は通信ネットワーク１３０４上に情報を入力するための全ての可能な型式のデバイス及び方法を含むことが意図される。
【０１３４】
ユーザインタフェース出力デバイス１５２０はディスプレイサブシステム、プリンタ、ファックス機、或いは音声出力デバイスのような視覚以外のディスプレイを含み得る。ディスプレイサブシステムは陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）のようなフラットパネルデバイス、投影デバイス、或いは他の可視画像を作成する機構を含み得る。図１２の実施形態において、それは大規模デジタルディスプレイ１２０２ｃの表示機能を含む。一般に、用語「出力デバイス」の使用は、コンピュータシステムからユーザ又は他の機械又はコンピュータシステムに情報を出力するための全ての可能な型式のデバイス及び方法を含むことが意図される。
【０１３５】
ストレージサブシステム１５２４は、開示される技術の特定の実施形態の機能性を提供する基本プログラム及びデータ構造体を保存する。ストレージサブシステム１５２４は、空間的イベントマップ共同システムクライアントまたは空間的イベントマップ共同システムサーバを実装するコンピュータプログラム命令を含み、“フォロー・ミー”及び“位置マーカ”といったモジュールに関するロジックを含むことができる。
【０１３６】
ストレージサブシステム１５２４は、サーバ側ネットワークノードの実装に使用される場合、イベントを作業空間内に配置する空間的イベントマップを含む機械読み出しが可能なデータ構造を記憶する持続性コンピュータ可読媒体を含んだ製品を備える。当該空間的イベントマップは、イベントのログ、イベントに係る図形ターゲットの作業空間内における位置及び時刻を有する当該ログのエントリを含む。また、ストレージサブシステム１５２４は、サーバ側ネットワークノードに関連して本明細書中に記載された手続を実行するための実行可能な命令を含んだ製品を備える。
【０１３７】
ストレージサブシステム１５２４は、クライアント側ネットワークノードの実装に使用される場合、イベントを作業空間内に配置する空間的イベントマップを含む機械読み出しが可能なデータ構造を、以下に説明されるキャッシュコピーの形で記憶する持続性コンピュータ可読媒体を含んだ製品を備える。当該空間的イベントマップは、イベントのログ、イベントに係る図形ターゲットの作業空間内における位置及び時刻を有する当該ログのエントリを含む。また、ストレージサブシステム１５２４は、クライアント側ネットワークノードに関連して本明細書中に記載された手続を実行するための実行可能な命令を含んだ製品を備える。
【０１３８】
例えば、開示される技術の特定の実施形態の機能性を実現する種々のモジュールが、ストレージサブシステム１５２４内に保存され得る。これらのソフトウェアモジュールは一般にプロセッササブシステム１５１４によって実行される。
【０１３９】
メモリサブシステム１５２６は、典型的には、プログラム実行の間に命令及びデータを保持するための主ランダムアクセスメモリ（ＲＡＭ）１５３０、及び、固定の命令が保存された読み出し専用メモリ（ＲＯＭ）１５３２を含む多数のメモリを備える。ファイルストレージサブシステム１５２８はプログラム及びデータファイルの永久的な保管を提供し、ハードディスクドライブ、フロッピーディスクドライブと関連する着脱可能媒体、ＣＤ−ＲＯＭドライブ、光学ドライブ、又は着脱可能媒体カートリッジを含み得る。開示される技術の特定の実施形態の機能性を実現するデータベース及びモジュールは、１または複数のＣＤ−ＲＯＭのようなコンピュータ可読媒体で提供されており、ファイルストレージサブシステム１５２８によって保存され得る。ホストメモリサブシステム１５２６は、とりわけ、プロセッササブシステム１５１４により実行されると、コンピュータシステムに本明細書に記載の機能を動作又は実行させるためのコンピュータ命令を含む。本明細書中において、「ホスト」又は「コンピュータ」内又は上で実行するとしたプロセス及びソフトフェアは、命令及びデータのための他の任意のローカルの又はリモートのストレージを含んだホストメモリサブシステム１５２６内のコンピュータ命令及びデータに応答して、プロセッササブシステム１５１４上で実行される。
【０１４０】
バスサブシステム１５１２は、コンピュータシステムの種々の要素及びサブシステムを互いに意図したとおりに通信させるための機構を提供する。バスサブシステム１５１２は模式的に単一バスとして示されているが、バスサブシステムの代替実施形態は複数バスを使用してもよい。
【０１４１】
コンピュータシステムそれ自身は、パーソナルコンピュータ、ポータブルコンピュータ、ワークステーション、コンピュータ端末、ネットワークコンピュータ、テレビ、メインフレーム、サーバファーム、又は他のデータ処理システム或いはユーザデバイスを含み、様々な種類があり得る。一実施形態において、コンピュータシステムは、夫々が大規模ディスプレイ１２０２ｃを構成するタイルの１つを制御する複数個のコンピュータシステムを含む。コンピュータ及びネットワークの絶えず変化する性質によって、図１５に示されたコンピュータシステム１３１０の記載は開示される技術の好ましい実施形態を図示するための具体的な一例を意図したに過ぎない。図１５に示したコンピュータシステムよりも要素の多いまたは少ないコンピュータシステムの他の構成が多数可能である。同一の要素及び変形は、共同サーバ１３０５と表示データベース１３０６のほか、図１３の共同環境における他のデバイス１２０２の夫々を構成することもできる。
ＡＰＩ
【０１４２】
フォロー・ミー機能及び位置マーカ機能と共に空間的イベントマップの使用をサポートするアプリケーション・プログラム・インタフェース（ＡＰＩ）の態様について、本明細書に記載する技法を実施する技術を例示することを目的として、ここに説明する。
【０１４３】
ソケット・リクエスト・サーバ（ＷｅｂＳｏｃｋｅｔ）―接続されると、関連データ（新しいストローク、カード、クライアント等）でクライアントを更新するために使用される。また、最初の接続ハンドシェイクを取り扱う。
【０１４４】
サービス・リクエスト・サーバ（ＨＴＴＰＳ／ＲＥＳＴ）―投稿データ（画像、カード等）だけでなくキャッシュ可能な応答に使用される。
【０１４５】
クライアント側ネットワークノードは、ＡＰＩに従って構成されており、対応するソケット・リクエスト・クライアント及びサービス・リクエスト・クライアントを備える。
【０１４６】
全てのメッセージは、個々のＵＴＦ−８で符号化されたＪＳＯＮ配列である。例えば、
[sender-id, message-type, ...]
●sender-id  メッセージを送信するクライアントのＩＤ、或いは、メッセージがサーバから生じた場合は“-1”。sender-idは、サーバに接続する全てのクライアント間で一意である。
●message-type  残りの引数及び意図された動作を識別するショートコード。
接続の確立
【０１４７】
クライアントは、環境に関する設定情報を検索するために、コンフィギュレーション・サービスを使用する。ソケット・サーバＵＲＬが、ws_collaboration_service_addressキーによって提供される。
１）ＷｅｂＳｏｃｋｅｔをオープンし、特定の作業空間に参加する
<collaboration_service_address>/<workspaceId>/socket?device=<device>array=<array_name>
●workspaceId（文字列）  参加する作業空間のＩＤ。
●device（文字列）  デバイスの種類。サポートされる値：壁、その他。
●array（文字列）  複数のスクリーンのインスタンスに関する識別子（任意）。
２）ロビー（lobby）に参加する
【０１４８】
ロビーによって、クライアントは、表示する特定の作業空間を知る前に、ウェブソケットをオープンできる。ロビーは、ユーザが自身の個人的なデバイス（デスクトップ／ｉＯＳ）から壁に作業空間を送信するのに使用する５桁のＰＩＮも提供する。
<collaboration_service_address>/lobby/socket?device=<device>&array=<array_name>
●device（文字列）  デバイスの種類。サポートされる値：壁、その他。
●array（文字列）  複数のスクリーンのインスタンスに関する識別子（任意）。
３）サーバ応答
【０１４９】
クライアントがサーバと新しいウェブソケット接続を確立すると、サーバは、最初に、一意的なクライアントＩＤを選択し、それを“ＩＤ”メッセージでクライアントに送信する。
４）メッセージ構造
【０１５０】
各メッセージ配列の最初の要素は、当該メッセージを発生したクライアントを指定するsender-idである。sender-idは、サーバ上の全てのセッション間で一意である。サーバからクライアントに送信される当該ＩＤ及びｃｒメッセージは、“-1”等のデフォルト値に設定されたsender-idを有する。各メッセージ配列の第２の要素は、２文字のコードである。このコードは、意図された動作と共に配列の残りの引数を定義する。-1のsender-idで送信されたメッセージは、サーバから発生したメッセージである。
メッセージタイプ
【０１５１】
以下のメッセージタイプは、公式にサポートされている。２０１３年春以降、可能な場合は、新しいトップレベルのメッセージタイプを追加する代わりにhe及びveを使う努力がなされてきた。
１）cs  セッション変更
２）echo  エコー
３）error  エラー
４）id  クライアントＩＤ
５）jr  部屋に参加する
６）rl  部屋リスト
７）un  取り消し（undo）
８）up  ユーザ許可
９）vc  ビューポート変更
１０）he  履歴イベント
１１）ve  一時的イベント
１２）disconnect  切断
１３）ls  リスト・ストリーム
１４）bs  ストリーム開始
１５）es  ストリーム終了
１６）ss  ストリーム状態
１７）oid  オブジェクトＩＤ予約
１）ｃｓ  セッション変更
【０１５２】
ディスプレイ配列で、作業空間が変更されたことをクライアントまたは兄弟（siblings）に通知する。サーバは、作業空間を壁に送信する要求を受信すると、このメッセージをクライアントに送信する。
// server --> client
[sender-id, "cs", workspaceId]
●sender-id  常に-1（サーバから生じたメッセージであることを示す）
●workspaceId（文字列）はスイッチする作業空間のＩＤ。
２）ｅｃｈｏ  エコー
【０１５３】
送信元クライアントに任意の本体部をエコーバックする。ソケット接続及びサーバは依然として健康であることを確認するために使用される。
// client --> server
[sender-id, "echo", "foo", "bar"...]
// server --> client
[-1, "echo", "foo", "bar"...]
【０１５４】
「エコー」の後に、メッセージは何らかの引数を持つことができる。これらの引数は全て、サービスとクライアントのソケット接続が健康（healthy）な場合、変更されずにクライアントへエコーバックされる。ソケットの健康を確認するエコーメッセージを使用する場合には、以下を推奨する。
●エコーメッセージの間は、少なくとも５秒待つ。
●２連続でエコーが失敗した場合にネットワークまたはサーバに問題があると考える。
【０１５５】
Ｃｈｒｏｍｅ及び他のサポートされているブラウザでのＷｅｂＳｏｃｋｅｔの現在の実装は、ネットワーク接続が切れている場合は、ｒｅａｄｙＳｔａｔｅを正しく変更しない、または、ｏｎＣｌｏｓｅを正しく起動しないため、このメッセージはプロトコルに追加された。
３）ｅｒｒｏｒ  エラー
【０１５６】
クライアントにサーバ側のエラーを通知する。
// server -> client
["-1", "error", target-id, message]
●target-id  エラーが影響するセッションのオブジェクトについてのＧＵＩＤである。
●message  エラーについてのメッセージ。
【０１５７】
このメッセージは、サーバによってのみ送信され、現在は、非同期処理の間にアップロードが失敗した際にのみ使用される。
４）ｉｄ  クライアントＩＤ
【０１５８】
クライアントがソケットに接続する際に、サーバがこのメッセージを送信する。クライアントは、次のソケット要求で使用するために割り振られたクライアントＩＤを保存することが求められる。
// server --> client 
["-1", "id", client-id]
●client-id（文字列）  新規に参加したクライアントのＩＤ。
５）ｊｒ  部屋に参加
【０１５９】
部屋は、クライアントが登録（subscribe to）できる通信チャネルである。ディスプレイ配列のために、或いは、潜在的に他のクライアントのグループのために、特定の作業空間（セッション）に関するチャネルが存在する。サーバは、イベントが当該部屋で生じた際に、特定の部屋に接続された全ユーザへ、メッセージを繰り返すまたは送信する。クライアントは、当該ディスプレイ配列または作業空間（セッション）のためのメッセージを得るために、部屋に参加する。部屋への参加要求には幾つかの種類がある。
一般的なｊｒ
【０１６０】
ＩＤが分かっていればどの部屋でも参加する。
// server <-- client
[sender-id, "jr", room-id, [data]]
●room-idには、ロビーと作業空間ＩＤの何れかを含むことができる。
●dataは、部屋を初期化するのに用いられる引数のワイルドカードの組み合わせである。
ロビーｊｒ
【０１６１】
ロビーチャネルに参加する。作業空間を表示しない一方で、ウェブソケットのオープンを維持したいクライアントによって使用される。
// server <-- client
[sender-id, "jr", "lobby"]
セッションｊｒ
【０１６２】
特定の作業空間（セッション）に関する部屋に参加する。
// server <-- client
[sender-id, "jr", "session", workspace-id]
●workspace-id  作業空間のＩＤ（作業空間）
配列ｊｒ
【０１６３】
特定のディスプレイ配列に関する部屋に参加する。
// server <-- client
[sender-id, "jr", "array", {
arrayId: "myArrayId",
x: 0,
y: 0,
width: 1920,
height: 1080
}]
●arrayId（文字列）  ディスプレイ配列のＩＤ
●x（整数）  このディスプレイのxオフセット
●y（整数）  このディスプレイのｙオフセット
●width（整数）  このディスプレイの幅
●height（整数）  このディスプレイの高さ
部屋への参加に対する応答：
【０１６４】
サーバは、成功した部屋参加（jr）メッセージに対して、部屋メッセージで応答する。
一般的な部屋
// server --> client
["-1", "room", [room-id], [databag]]
●room-idは、ロビーと作業空間の何れかを含む。
●databagは、変数の部屋特有のバグである。
ロビー部屋
// server --> client
["-1", "room", "lobby", {pin: pin-code}]
●pinは、壁認証のためのｐｉｎを含む。
セッション部屋
// server --> client
["-1","room","session",{"uid":"SU5DVpxbfnyGCesijBou","name":"Dec 16 Release","sharing_link":"https://portal.Bluescape.com/sessions/1357/shares"}]``
●uid  作業空間のＩＤ
●name  クライアントで表示する作業空間の名称
●sharing_link  ユーザがこの作業空間を他人と共有できるポータルページへのリンク。
６）ｒｌ  部屋リスト
【０１６５】
クライアントに部屋のメンバーシップを通知する。部屋のメンバーシップは、当該クライアントと同じ部屋を訪れているクライアントに関する情報を含む。
// server --> client
["-1", "rl", roomMembershipList]
●roomMembershipList（部屋のメンバーシップオブジェクトの配列）
部屋のメンバーシップオブジェクトは、以下のキーを持つハッシュである。
●name  ユーザまたはデバイス名
●device_type（廃止予定）  ユーザが接続しているデバイスの種類、現在のところは壁またはその他。
●clientId  このデバイスのクライアントＩＤ
●clientType  クライアントの種類（ブラウザ、ｉＰａｄ、壁）
●ビューポート（任意）  クライアントがviewport-rectを提供すると、サーバは、それを全クライアントにリピートする。
７）ｕｎ 取り消し（undo）
【０１６６】
直近の取消可能な動作（移動、テキスト設定、ストローク等）を取り消す。
// server <-- client
[sender-id, "un", region-id]
// server --> client
[client-id, 'undo', target-id, removedEventId]
取消例：ウィンドウを移動し、その後、当該移動を取り消す。
【０１６７】
以下の例では、移動、及び、その移動の取り消し方法を示す。
// Client sends move
["5122895cff31fe3509000001","he","5122898bff31fe3509000002","position",{
"rect":[257,357,537,517],
"order":2
}]
// Server response
["5122895cff31fe3509000001","he","5122898bff31fe3509000002","5122898efde0f33509000008","position",{
"rect":[257,357,537,517]
,"order":2
}]
// Client sends undo [<clientId>, 'un', <canvasRegionId>]
["5122895cff31fe3509000001","un",null]
// Server response
// [<clientId>, 'undo', <targetId>, <removedMessageId>]
["-1","undo","5122898bff31fe3509000002","5122898efde0f33509000008"]
【０１６８】
サーバは、作業空間履歴から履歴イベントを削除し、部屋に登録している全クライアントに、この記録はもはや作業空間の履歴の時系列の一部ではないことを通知する。ＨＴＴＰ  ＡＰＩを介したその後の履歴要求には、（やり直し（redo）を実施するまで）取消イベントを含まない。
８）ｕｐ  ユーザ許可
現在のユーザがこの作業空間に関して持っている許可を得る。クライアントが特定のユーザに関してエージェントとしてふるまっている時にのみ関連し、パブリックキー認証（壁）を用いている時は関連しない。
// server --> client
[sender-id, "up", permissions]
●許可  認証されたユーザが許可を有しているかを示す、許可タイプのハッシュ及び真／偽。現在のところ、唯一の許可は、作業空間を他人と共有することのできるユーザを示す“can_share”である。
９）ｖｃ  ビューポート変更
【０１６９】
１つのクライアントのビューポートが変更されたことをセッション内の他のクライアントに教える。これは、“ユーザのビューへジャンプ”及び“フォロー・ミー”特徴をサポートするよう設計されている。クライアントは、最初にセッションに入った時に、ビューポート変更“ｖｃ”イベントを送信する。これにより、他のクライアントがそれらの動きをフォローすることができる。入ってくるビューポート変更“ｖｃ”イベントを処理する際に、クライアントは、クライアントＩＤでキー付けされたビューポートのキャッシュを保持する。これは、ビューポートを失った部屋リストメンバーシップ（ｒｌ）イベントが、関連するＶＣイベントの後に到達する場合の状況に対処するためである。ターゲットビューポートの変更されたターゲットビューポートへの変化には、１または他方或いは両方の寸法におけるビューポートのサイズの変更を含み、当該変更はビューポートの縦横比を維持しない。ターゲットビューポートの変更はまた、ビューポートのページ拡大における変更も含む。“ユーザのビューへジャンプ”及び“フォロー・ミー”モードにおけるサブジェクトクライアント側ビューポートが最初の“ｖｃ”記録を受け取る時、それは、サブジェクトクライアント側ビューポートの表示可能領域をターゲットビューポートの領域に対してマッピングするための命令である。続く“ｖｃ”記録によって、サブジェクトクライアント側ビューポートの表示可能領域が、ターゲットビューポートに対して再マッピングされる。“ユーザのビューへジャンプ”及び“フォロー・ミー”特徴が使用不可の時、サブジェクトクライアント側ビューポートは、その前のウィンドウに戻る。
// server <--> client
[sender-id, "vc", viewport-rect]
●viewport-rect  送信クライアント上で視認可能な作業空間のセクションを表す形式[x1, y1, x2, y2]における配列
１０）ｈｅ 履歴イベント
【０１７０】
履歴イベントは、データベースに永続的に保持されるデータの要素である。視覚的作業空間を再作成するのに必要な情報は、heメッセージを介して共同サービスに送信される。
例：
●ノート、画像、その他のウィジェットの作成
●ウィジェットの移動
●ウィジェット（ノートテキスト、マーカ位置）の属性の設定または更新
●ウィジェットの削除
【０１７１】
サーバは履歴イベントを受信すると、以下を行う。
●イベントに一意的なＩＤを割り当てる。
●イベントをデータベースに永続的に保持する。
●イベントをそのＩＤと共に、作業空間に接続された全クライアントに放送する。
履歴イベントの基本メッセージ形式
// server <-- client
[client-id, "he", target-id, event-type, event-properties]
●client-id（文字列）  送信元クライアントのＩＤ
●target-id（文字列）  このイベントが関連するターゲットのオブジェクト／ウィジェット／アプリのＩＤ
●event-type（文字列）  任意のイベントタイプ
●properties（オブジェクト）  イベントの関連するキー／値を記述するＪＳＯＮオブジェクト
○regionId（文字列）  オブジェクトがキャンバス領域に作成された場合のキャンバス領域識別子（任意。クライアントによって送信された履歴イベントに含まれていた場合、含まれる）
【０１７２】
メッセージに含まれる全てのプロパティはサーバに保存され、クライアントにエコーバックされる。それらはまた、ＨＴＴＰで送信された履歴にも含まれる。
// server --> client
[client-id, "he", target-id, event-id, event-type, event-properties]
●client-id（文字列）  送信元クライアントのＩＤ
●target-id（文字列）  このイベントが関連するターゲットウィンドウのＩＤ
●event-id（文字列）  データベース内のイベントのＩＤ
●event-type（文字列）  任意のイベントタイプ
●properties（オブジェクト）  イベントの関連するキー／値を記述するＪＳＯＮオブジェクト
○regionId（文字列）  オブジェクトがキャンバス領域に作成された場合のキャンバス領域識別子（任意。クライアントによって送信された履歴イベントに含まれていた場合、含まれる）
バッチ履歴イベント
【０１７３】
密結合イベントの順序を確実にするために、イベントペイロードをイベントペイロードの配列となるように変更することで、多くがバッチメッセージで送信される。
// server <‐‐ client
[client‐id, "bhe", [event1, event2, event3, event4]]
【０１７４】
この場合、各イベントは、標準ウェブソケット履歴メッセージであるパケット送信である。
イベント構造は、以下の通りである。
[targetId, eventType, props]
///
【０１７５】
したがって、clientId部分は繰り返されないが、他の全ては標準イベントとして繰り返される。
現在の履歴イベントタイプ
●create  作業空間にウィジェットを追加する。
●delete  作業空間からウィジェットを削除する。
●position  作業空間内のウィジェットのサイズまたは位置を更新する。
●template  カードテンプレート（背景色）を変更する。
●membership  ターゲットチルドレンを更新。グループに使用される。
●pin  ウィジェットをピンで止める、または、ウィジェットからピンを外す。
●stroke  ウィジェットにペン、または、消しゴムのストロークを追加する。
●text  ノートのテキスト及び／またはテキスト形式を設定または更新する。
●markercreate  位置マーカを作成する。
●markermove  既存の位置マーカを移動する。
●markerdelete  既存の位置マーカを削除する。
●tsxappevent  ウェブブラウザ等のtsxウィジェットの作成、削除、更新に使用される。
●navigate  グループ文書（ＭＳdocs/ＰＤＦ）内の異なるページにナビゲートするために使用される。
ウィジェット及び履歴イベントの表     
2018524661.tif 000003
【０１７６】
＊ブラウザクライアントは、これらのメッセージの代替版の受信をサポートしているが、他のクライアントへは送信しない。
履歴イベント詳細
コメント
コメントは、履歴データベースに保存されるが、平面上の位置ではなく、特定のオブジェクトと関連付けられる。
// client ‐‐> server
[client‐id, "he", target‐id, "create", {
"id":"5123e7ebcd18d3ef5e000001",
"type":"comment",
"text":"text of the comment",
"parent":"5123e7ebcd18d3ef5e000000"}]
サーバは、プロパティオブジェクトへのコメントの本体部に“名称”を付け加える。親プロパティは任意であり、ＩＤである。
[client‐id, "he", comment‐id, "delete"}]
[client‐id, "he", comment‐id, "text", {"text":"text of the comment"}]
作成
【０１７７】
クライアントは、共同サーバに“create”を送信して、作業空間にウィジェットを追加する。“create”メッセージに関して、target-idは、含まれる要素のＩＤであり、通常は作業空間ＩＤである。
典型的なウィジェットの作成例
// client --> server
[client-id, "he", workspace-id, "create", {
"id":"5123e7ebcd18d3ef5e000001",
"type":"widget",
"regionId":null
}]
●プロパティ
○id（文字列）  ウィジェットの一意的な識別子
○type（文字列）  ウィジェットのタイプ
○regionId（文字列）  オブジェクトがキャンバス領域に作成された場合、当該キャンバス領域
【０１７８】
たいていのウィジェットは、通常は矩形及び順位だが潜在的にはポイントまたは他の表現である位置プロパティも有する。
カード作成例
// client --> server
[client-id, "he", workspace-id, "create", {
"id":"5123e7ebcd18d3ef5e000001",
"baseName":"sessions/all/Teal",
"ext":"JPEG",
"rect":[-1298,-390,-1018,-230],
"actualWidth":560,
"actualHeight":320,
"order":4,
"type":"note",
"regionId":null,
"hidden":false,
"text":"some text for the note",
"styles": {
"font-size" : "42px",
"font-weight" : "400",
"text-transform" : "inherit"
}
}]
●プロパティ
○id（文字列）  ウィンドウの一意的な識別子
○baseName（文字列）  背景画像のファイル名
○ext（文字列）  背景画像ファイルの拡張子
○rect（オブジェクト）  ウィンドウの位置
○actualWidth（整数）  画素単位での背景画像の幅
○actualHeight（整数）  画素単位での背景画像の高さ
○order（整数）  ｚオーダー
○type（文字列）  テキストを有するオブジェクトの場合“ノート”であり、他のオブジェクトの場合“画像”となる。
○regionID（文字列）  オブジェクトがキャンバス領域に作成された場合、当該キャンバス領域
○hidden（ブール値）  ウィンドウが現在隠れているか否か
○text（文字列）  ノートに含まれるテキスト（任意）
○styles（オブジェクト）  ノートに含まれるテキストのスタイル（任意）
ＰＤＦ作成例
// server --> client
[client-id,
"he",
target-id,
event-id,
"create",
{"type":"pdf",
"id":"5307ec25a294d9250bf65fce",
"assetPath":"sessions/objects/s7t6mNHxfpqWxAYqYXLF/5307ec25a294d9250bf65fce.pdf",
"rect":[1770,284,2994,1076],
"actualWidth": 1224,
"actualHeight": 792,
"filename":"5617_FSPLT1_018078.pdf",
"title":"Record of Decision",
"hidden":false,
"pin":false
"pages":73}]
●プロパティ
○type（文字列）  “ＰＤＦ”
○id（文字列）  ＰＤＦの一意的な識別子
○assetPath（文字列）  アセットサーバ上のこのアセットの位置。アセット・ベース・パスを得るためのコンフィギュレーション・サービスを使用する。
○rect（オブジェクト）  作業空間内のウィンドウの位置
○actualWidth（整数）  “バウンディングボックス（bounding box）”を作るために、actualHeightと組み合わせられる、ＰＤＦ内で最も横方向に長い頁の幅
○actualHeight（整数）  “バウンディングボックス（bounding box）”を作るために、actualWidthと組み合わせられる、ＰＤＦ内で最も縦方向に長い頁の高さ
○filename（文字列）  ＰＤＦの元のファイル名
○order（整数）  ｚオーダー
○hidden（ブール値）  ウィンドウが現在隠れているか否か
○pin（ブール値）  ＰＤＦが作業空間上のある位置にピン止めされているか否か
○regionId（文字列）  オブジェクトがキャンバス領域に作成された場合、当該キャンバス領域（任意）
グループ作成例
// client "-> server
[client"id,
"he" ,
target-id,
"create" ,
{"type" : "group" ,
-id" : "S3aS2b392S8f62fce" ,
-children" : []}]
●プロパティ
○type（文字列）  “グループ”
○id（文字列）  グループの一意的な識別子
○children（配列）  グループの一部となるべきウィジェットのtarget-idの配列
典型的なグループ位置の例
//client --> server
[client-id, he, groupid, 'position' , {" rect" : [0, 0 , 0 , 0 ], "order" :4}]
●プロパティ
○rect（オブジェクト）  グループの矩形。ｘ１，ｙ１，ｘ２，ｙ２と規定される。
○order（整数）  ターゲットグループのｚオーダー
メンバーシップ
ターゲットオブジェクトのチルドレンを置換する。アイテムをグループ化する際に用いられる。
// server <‐‐ client
[client‐id, "he", target‐id, "membership", {"children" : [53a52b39250f62fce, 53a52b39250f62fce]}]
// server ‐‐> client
[client‐id, "he", target‐id, event‐id, "membership", {"children" : [53a52b39250f62fce, 53a52b39250f62fce]}]
●プロパティ
○children（配列）  必須。グループに含める少なくとも１つのウィジェットＩＤを含む配列。全てのチルドレンを削除するには、代わりに削除メッセージが使用される。
グループ文書作成例
// server ‐‐> client
[client‐id,
"he",
target‐id, // group document id
event‐id,
"create",
{
"type":"document",
"rect":[x1,y1,x2,y2]
"maxWidth":123,
"maxHeight":456,
"layout":"stacked",
"title":"title of this document",
"assetURL": "xxx/xxx/xxx.docx",
"hidden": true,
"pin": false,
"activeChildId": "id1838094221",
"children": [
"id0398749123",
"id1838094221",
"id2849239042",
"id3849012830"]}]
●プロパティ
○type（文字列）  “グループ文書”
○activeChildId（文字列）  現在表示されているＰＤＦ／Ｄｏｃのページ等のアクティブなチャイルドＩＤ
○children（文字列）  チャイルド（ページ）オブジェクトＩＤの配列。配列の順序はチャイルド（ページ）の順序を表す。
○layout（文字列）  このグループ文書を描画するためにクライアントレイアウトを定義する。
プレゼンテーション作成例
// client ‐‐> server
[client‐id,
"he",
target‐id,
"create",
{"type":"presentation",
"id":"53a52b39250f62fce",
"children": []}]
●プロパティ
○type（文字列）  “プレゼンテーション”
○id（文字列）  グループの一意的な識別子
○children（配列）  プレゼンテーションの順にプレゼンテーションの一部となるウィジェットのtarget-idの配列
プレゼンテーション作成例
// server ‐‐> client
[ client‐id,
"he",
target‐id, // presentation id
event‐id,
"create",
{
"type":"presentation",
"children": [
"id0398749123",
"id1838094221",
"id2849239042",
"id3849012830"]}]
●プロパティ
○type（文字列）  「プレゼンテーション」
○children（配列）  チャイルド（ページ）オブジェクトＩＤの配列。配列の順序はチルドレン（ページ）の順序を表す。
削除
【０１７９】
作業空間からウィジェットを削除する。
// server <-- client
[client-id, "he", target-id, "delete", {"hidden":true}]
// server --> client
[client-id, "he", target-id, event-id, "delete", {"hidden":true}]
位置
移動、フリング、リサイズ等の後、ウィジェットの位置を保存するために使用される。
典型的なウィジェット位置の例
// server <-- client
[client-id, "he", target-id, "position", {new-position}]
// server --> client
[client-id, "he", target-id, event-id, "position", {new-position}]
●プロパティ
○new-position（オブジェクト）  オブジェクトの新しい位置を表す方法。ウィンドウの例を参照。
典型的なウィンドウ位置の例
// server <-- client
[client-id, "he", target-id, "position", {"rect":[-1298,-390,-1018,-230],"order":4}]
// server --> client
[client-id, "he", target-id, event-id, "position", {"rect":[-1298,-390,-1018,-230],"order":4}]
●プロパティ
○rect（オブジェクト）  ターゲットウィンドウの位置。ｘ１，ｙ１，ｘ２，ｙ２と規定される。
○order（整数）  ターゲットウィンドウのｚオーダー
テンプレート
【０１８０】
ノートのテンプレートを変更するために用いられる。これにより、背景色を変更できる。
ノートのテンプレート例
// server --> client
[client-id, "he", workspace-id, event-id, "template", {"baseName": "sessions/all/Beige"}]
●プロパティ
○baseName（文字列）  新しい背景のファイル名。ファイルは、既に共同サーバ上にある。テンプレートの一覧は、/card_templates.jsonにおけるＨＴＴＰプロトコルを介して利用可能である。
【０１８１】
ウィジェットをピン止めして、ユーザがそのウィジェットを移動またはリサイズすることを防止するために使用される。既存のピンの削除にも使用される。
典型的なウィジェット位置の例
// server --> client
[client-id, "he", workspace-id, event-id, "pin", {"pin": true}]
●プロパティ
○pin（ブール値）  真の場合ピン止めされ、偽の場合ピン止めされていない。
ストローク
【０１８２】
ウィジェットまたは作業空間背景にストロークを追加するために使用される。
典型的なストロークの例
// server <-- client
[client-id, "he", target-id, "stroke", {
"size": 10,
"brush": 1,
"color": [255, 153, 0, 1],
"locs": [850, 616, 844, 617],
"regionId": 59.1
}]
// server --> client
[client-id, "he", target-id, event-id, "stroke", {
"size": 10,
"brush": 1,
"color": [255, 153, 0, 1],
"locs": [850, 616, 844, 617],
"regionId": 59.1
}]
●プロパティ
○size（整数）  含まれるオブジェクトの座標空間を用いるストロークの大きさ。ウィジェット上のストロークは、自身の親のウィジェット空間でサイズ指定されるのに対し、キャンバス上のストロークはワールドスペースでサイズ指定される。
○brush（整数）  ストロークを描画する際に用いるブラシタイプ。１は線描（draw）ブラシ、２は削除ブラシ。
○color（数）  ストロークの色に対するr/g/bの値。削除ストロークに対しては（依然として存在はするものの）無視される。
○locs（配列）  座標が配列においてペアになる［ｘ，ｙ，ｘ，ｙ，ｘ，ｙ，...］場合の、フォーマットにおけるストローク位置：［１０，１，１０，２，１２，３］。サイズと同様に、位置は、含まれるオブジェクトの座標空間内にある。
○regionId（文字列）  ストロークがキャンバス領域に作成された場合、当該キャンバス領域（任意）
【０１８３】
描画の注釈：ストロークは、当該ストロークの最初と最後の点上に夫々中心があるエンドキャップで描画される。エンドキャップの大きさは、ブラシサイズと同じである。エンドキャップの描画は、各クライアントの役割（responsibility）である。
テキスト
【０１８４】
ウィジェット上のテキストとテキストのスタイルを設定する。テキストの属性とスタイルの属性は任意である。
典型的なテキスト例
// server <-- client
[client-id, "he", target-id, "text", {
"text" : "abcdef",
"styles" : {"font-size" : "42px","font-weight" : "400","text-transform" : "inherit"}
}]
// server --> client
[client-id, "he", target-id, event-id, "text", {
"text" : "abcdef",
"styles" : {
"font-size" : "42px",
"font-weight" : "400",
"text-transform" : "inherit"
}
}]
●プロパティ
○text（文字列）  ウィジェット上に表示するテキスト文字列
○styles（ハッシュ）  テキストに適用するｃｓｓスタイル
マーカ作成
【０１８５】
作業空間内の特定の場所に位置マーカ（地図マーカ、ウェイポイント）を作成する。
例
// server <-- client
[client-id, "he", new-widget-id, "markercreate",{
"creationTime":1387565966,
"name":"my marker",
"y":1828,
"x":-875,
"color":0
}]
// server --> client
[client-id, "he", new-widget-id, event-id, "markercreate",{
"creationTime":1387565966,
"name":"my marker",
"y":1828,
"x":-875,
"color":0
}]
●プロパティ
○creationTime（整数）  作成時刻（ＵＮＩＸ時間）
○name（文字列）  位置マーカのラベル
○y（数値）  マーカのｙ位置
○ｘ（数値）  マーカのｘ位置
○template（文字列）  マーカテンプレート名
ブラウザクライアントによって受け付けられる代替フォーム
// server <-- client
[client-id, "he", session-id, "create",{
"id":"52b0f86ac55697ad30003b21"
"type":"locationMarker",
"creationTime":1387565966,
"name":"my marker",
"y":1828,
"x":-875,
"template":"red"
}]
// server --> client
[client-id, "he", session-id, event-id, "create",{
"id":"52b0f86ac55697ad30003b21"
"type":"locationMarker",
"creationTime":1387565966,
"name":"my marker",
"y":1828,
"x":-875,
"template":"red"
}]
マーカ移動
【０１８６】
作業空間において、既存の位置マーカ（マップマーカ、ウェイポイント）を新しい場所に移動させる。
例
// server <-- client
[client-id, "he", marker-id, "markermove",{
"y":1828,
"x":-875,
}]
// server --> client
[client-id, "he", marker-id, event-id, "markermove",{
"y":1828,
"x":-875,
}]
●プロパティ
○ｙ（数値）  マーカのｙ位置
○ｘ（数値）  マーカのｘ位置
ブラウザクライアントによって受け付けられる代替フォーム
// server <-- client
[client-id, "he", target-id, "position",{
"y":1828,
"x":-875,
}]
// server --> client
[client-id, "he", target-id, event-id, "position",{
"y":1828,
"x":-875,
}]
マーカ削除
【０１８７】
既存の位置マーカを削除する。
例
// server <-- client
[client-id, "he", marker-id, "markerdelete",{}]
// server --> client
[client-id, "he", marker-id, event-id, "markerdelete",{}]
ブラウザクライアントによって受け付けられる代替フォーム
// server <-- client
[client-id, "he", target-id, "delete",{
"hidden":true,
}]
// server --> client
[client-id, "he", target-id, event-id, "delete",{
"hidden":true,
}]
ｔｓｘａｐｐｅｖｅｎｔ
【０１８８】
TSXappeventは、ＴＳＸシステム上の種々のウィジェットに履歴イベントを送信する。
例
// server <-- client
[client-id, "he", target-id, "tsxappevent",{
"payload":
{
additional-properties
},
"messageType":message-type,
"targetTsxAppId":tsx-app-id
}]
// server --> client
[client-id, "he", target-id, event-id, "tsxappevent",{
"payload":
{
additional-properties
},
"messageType":message-type,
"targetTsxAppId":tsx-app-id
}]
●プロパティ
○payload（オブジェクト）  このtsxappeventに必要なプロパティ
○messageType（文字列）  メッセージのタイプ
ウェブブラウザ作成例
// server <-- client
[client-id,"he",new-browser-id,"tsxappevent",{
"payload": {
"y":709,
"x":1517,
"worldSpaceWidth":800,
"worldSpaceHeight":600,
"windowSpaceWidth":800,
"windowSpaceHeight":600,
"version":1,
"url":"http://www.google.com/",
"order":735880
},
"messageType":"createBrowser",
"targetTsxAppId":"webbrowser"
}]
// server --> client
[client-id,"he",new-browser-id, event-id, "tsxappevent", {
"payload": {
"y":709,
"x":1517,
"worldSpaceWidth":800,
"worldSpaceHeight":600,
"windowSpaceWidth":800,
"windowSpaceHeight":600,
"version":1,
"url":"http://www.google.com/",
"order":735880
},
"messageType":"createBrowser",
"targetTsxAppId":"webbrowser"
}]
●プロパティ
○payload（オブジェクト）  ブラウザの作成に必要とされる詳細
■x（数値）  マーカのｘ位置
■y（数値）  マーカのｙ位置
■worldSpaceWidth（数値）  ワールドスペース内の幅
■worldSpaceHeight（数値）  ワールドスペース内の高さ
■windowSpaceWidth（数値）  ウィンドウ空間内の幅
■windowSpaceHeight（数値）  ウィンドウ空間内の高さ
■version（数値）  ＃ＴＯＤＯ
■url（数値）  このブラウザウィジェットは、当該ＵＲＬで、ブラウザを作成するためのmessageType*（文字列）“createBrowser”、ウェブ・ブラウザ・ウィジェットのためのtargetTsxAppId*（文字列）“webbrowser”を指す。
ウェブブラウザを削除する例
// client --> server
[client-id,"he",target-id,"tsxappevent",{
"messageType":"deleteBrowser",
"targetTsxAppId":"webbrowser",
"payload":{"version":1}
}]
ナビゲート
【０１８９】
ペイロード内の異なるアイテムにナビゲートする例。例えば、これは、ＵＲＬにナビゲートするブラウザウィジェットに使用されるかもしれない。
[
client‐id,
"he",
target‐id, //Group/presentation or maybe Browser URL ID
"navigate",
payload // navigate to this page
]
１１）ｖｅ  一時的イベント
【０１９０】
一時的イベントはデータベースには記録されないため、スクリーンの方々でカードをドラッグする等の進行中のストリームイベントに有効であり、ユーザが指を持ち上げると、履歴イベントはその最後の場所を記録するのに使用される。
一時的イベントの基本メッセージフォーマット
// server <--> client
[client-id, "ve", target-id, event-type, event-properties]
●client-id（文字列）  送信元のクライアントのＩＤ
●target-id（文字列）  このイベントが関連するターゲットウィンドウのＩＤ
●event-type（文字列）  任意のイベントタイプ
●properties（オブジェクト）  イベントの関連するキー／値を記述するＪＳＯＮオブジェクト
現時点の一時的イベントタイプ
●sb  新しいストロークを開始する。
●sc  前に開始されたストロークを続ける。
●se  ストロークを終了する。
●position  永続的でない他のクライアントと位置を共有するために使用される。例えば、リアルタイムでドラッグされているウィンドウを示す。
●bf  フォロー開始：ユーザＡがユーザＢへのフォローを開始する。ユーザＢがフォローしていることをユーザＡに通知するために使用される。
●ef  フォロー終了：ユーザＢがもうユーザＡをフォローしていない。ユーザＢがもうフォローしていないことをユーザＡに通知するために使用される。
ウィジェットタイプによる一時的イベント
2018524661.tif 000004
作業空間
●sb  ストロークを開始する。一のクライアントでストロークを描画しつつ、それらを別のクライアント上でも描画するために使用する。
●sc  以前に開始したストロークを、ストロークに含めるべき別の点を与えることにより継続する。ストロークを描画しつつ、それが別のクライアント上で描画されるために使用する。
●se  以前に開始したストロークを終了する。
●bf  フォロー開始：ユーザＡがユーザＢへのフォローを開始する。ユーザＢがフォローしていることをユーザＡに通知するために使用される。
●ef  フォロー終了：ユーザＢがもうユーザＡをフォローしていない。ユーザＢがもうフォローしていないことをユーザＡに通知するために使用される。
ノート
●position  別のユーザによって移動中のノートの位置を自動更新する。
●sb  ストロークを開始する。一のクライアントでストロークを描画しつつ、それが別のクライアント上で描画されるために使用する。
●sc  以前に開始したストロークを、ストロークに含めるべき別の点を与えることにより継続する。ストロークを描画しつつ、それが別のクライアント上で描画されるために使用する。
●se  以前に開始したストロークを終了する。
画像
●position  別のユーザによって移動中の画像の位置を自動更新する。
●sb  ストロークを開始する。一のクライアントでストロークを描画しつつ、それが別のクライアント上で描画されるために使用する。
●sc  以前に開始したストロークを、ストロークに含めるべき別の点を与えることにより継続する。ストロークを描画しつつ、それが別のクライアント上で描画されるために使用する。
●se  以前に開始したストロークを終了する。
一時的イベントの詳細
【０１９１】
以下のフィールドは幾つかの一時的イベントのプロパティである。
●stroke-id   stroke-idはクライアントによって選択される。現在のところ、それらは、ドットによって区切られた増加する整数で構成されたsender-idである。これは、全てのクライアント間におけるサーバコンテクスト内でそれを一意にするためである。
●target-id  ストロークは、作業空間内の特定のターゲット（コンテナ）に貼りつけられることがある。ウィジェットに属するストロークの場合、ターゲットＩＤフィールドは、ウィジェットのＩＤを含む。作業空間内の主キャンバスに向かうストロークは、それらのターゲットＩＤを作業空間ＩＤと同じにすることによって指定される。
位置−ｖｅ
【０１９２】
作業空間内でのウィンドウ移動の途中ステップを放送するために使用される。
典型的な位置の例
// server <--> client
[client-id, "ve", target-id, "position", {position-info}]
●プロパティ
〇position-info  ウィジェットの新しい位置についての情報
ウィンドウ位置の例
// server <--> client
[client-id, "ve", target-id, "position", {"rect":[-1298,-390,-1018,-230],"order":4}]
●プロパティ
〇rect（オブジェクト）  ターゲットウィンドウの位置
〇order（整数）  ターゲットウィンドウのｚオーダー
ｓｂ
【０１９３】
// server <--> client
[client-id, "ve", target-id, "sb",{
"brush":1,
"size":2,
"color":[214,0,17,1],
"x":100,
"y":300,
"strokeId":"395523d316e942b496a2c8a6fe5f2cac"
}]
●プロパティ
○x, y（整数）  このストロークの開始ポイント
○strokeId（文字列）  新しいストロークのＩＤ
ｓｃ：
【０１９４】
ストロークＩＤによって特定されるストロークを継続する。
// server <--> client
[client-id, "ve", target-id, "sc", {"x":100, "y":300, "strokeId":"395523d316e942b496a2c8a6fe5f2cac"}]
●プロパティ
○x, y（整数）  ストロークの新しい終了ポイント
○strokeId（文字列）  新しいストロークのＩＤ
ｓｅ：
【０１９５】
ストロークＩＤにより特定されるストロークを終了する。
// server <--> client
[client-id, "ve", target-id, "se", {"strokeId":"395523d316e942b496a2c8a6fe5f2cac"}]
●strokeId（文字列）  継続されたストロークのＩＤ
ｂｆ：
【０１９６】
フォロー開始：ユーザＡがユーザＢへのフォローを開始する。ユーザＢがフォローしていることをユーザＡに通知するために使用される。このグローバルな一時的イベントに関しては、ターゲットＩＤは、セッションＩＤである。フォローされているユーザは、ユーザＢがフォローしていることを示すためにＵＩを更新する。
// server <‐‐> client
[follower‐client‐id, "ve", session‐id, "bf", {"clientId":"395523d316e942b496a2c8a6fe5f2cac"}]
●プロパティ
○clientId（文字列）  フォローされているクライアントのＩＤ
ｅｆ：
【０１９７】
フォロー終了：ユーザＢがもうユーザＡをフォローしていない。ユーザＢがもうフォローしていないことをユーザＡに通知するために使用される。このグローバルな一時的イベントに関しては、ターゲットＩＤは、セッションＩＤである。フォローされているユーザは、ユーザＢがもうフォローしていないことを示すためにＵＩを更新する。ユーザＢがセッションに残っている場合、ユーザＡはユーザＢを含まない部屋リストメッセージを受信する。次に、ユーザＡの部屋リストは再構築され、ユーザＢをフォロワーとしては表示しない。
// server <‐‐> client
[follower‐client‐id, "ve", session‐id, "ef", {"clientId":"395523d316e942b496a2c8a6fe5f2cac"}]
●プロパティ
○clientId（文字列）  もはやフォローされていないクライアントのＩＤ
対話の例：オブジェクト移動
【０１９８】
履歴イベント／一時的イベント関連の変更の幾つかを示す良い例が、オブジェクトの移動である。オブジェクトがドラッグによって移動／リサイズされる間、一連の一時的イベント（ＶＥ）はサーバに送信され、作業空間に登録されている全てのクライアントに再放送される。
// client sends the following volatile events during the move
// client->server format is: [<clientId>, <messageType>, <targetId>, <eventType>, <messageProperties>]
["511d6d429b4aee0000000003","ve","511d6f9c9b4aee0000000039","position",{
"rect":[-493,73,-2,565],
"order":0
}]
["511d6d429b4aee0000000003","ve","511d6f9c9b4aee0000000039","position",{
"rect":[-493,73,-2,565],
"order":0
}]
["511d6d429b4aee0000000003","ve","511d6f9c9b4aee0000000039","position",{
"rect":[-538,91,-47,583],
"order":0
}]
["511d6d429b4aee0000000003","ve","511d6f9c9b4aee0000000039","position",{
"rect":[-538,91,-47,583],
"order":0
}]
【０１９９】
ユーザがオブジェクトの移動を終了すると、クライアントが履歴イベントを送信し、オブジェクトの矩形及び順位を特定する。
["511d6d429b4aee0000000003","he","511d6f9c9b4aee0000000039","position",{
"rect":[-492,73,-1,565],
"order":0
}]
【０２００】
サーバは、新しく永続的に保持されたhe記録で応答する。尚、当該記録のイベントＩＤが含まれることに留意する。
// server-> client format of 'he' is: [<clientId>, <messageType>, <targetId>, <eventId>,
//                                   <eventType>, <messageProps>]
["511d6d429b4aee0000000003","he","511d6f9c9b4aee0000000039","511d9165c422330000000253","position",{
"rect":[-492,73,-1,565],
"order":0
}]
注：イベントＩＤは、ＨＴＴＰ  ＡＰＩを介してフェッチされる履歴にも含まれる。
１２）ｄｉｓｃｏｎｎｅｃｔ  切断
【０２０１】
接続のクローズ及び再接続の試みの中止を行うために、同じユーザによってオープンされた他のアプリのインスタンスを通知する。これは、２つのタブが同じ作業空間内でオープンされている場合に見られる「慌ただしい（frantic）再接続」を避けるために、ブラウザクライアントによって処理（consume）される。
// server --> client
[-1, "disconnect"]
１３）ｌｓ  リストストリーム
【０２０２】
クライアントにリスト内の現在のストリームについて通知する。部屋リストと同様に、他のイベントによって起動される。
// server ‐‐> client
[send‐id, "ls", [Stream List for Session]]
●sender-id  常に−１（サーバがメッセージの送信元であることを示す）。
ストリームリストは、オブジェクトの配列であり、オブジェクトの夫々は、以下のフィールドを含む。
●sessionId（文字列）は、会議（conference）を含む作業空間のＩＤである。
●conferenceId（文字列）  この作業空間内の全ユーザが接続する会議セッションのＩＤ
●clientId（オブジェクトＩＤ）  この特定のストリームを放送するクライアントのＩＤ
●streamId（文字列）  この特定のＡＶストリームのＩＤ
１４）ｂｓ  ストリーム開始
【０２０３】
サーバに、新しいＡＶストリームが開始したことを通知する。サーバは、リスト・ストリーム・メッセージで応答する。
// server <‐‐ client
[sender‐id, "bs", conferenceId, conferenceProvider, streamId, streamType]
●sender-id  ストリームを開始するユーザのクライアントＩＤ
●conferenceId（文字列）  この作業空間内の全ユーザが接続する会議セッションのＩＤ
●conferenceProvider（文字列）  例えばＴｏｋＢｏｘやＴｗｉｌｉｏといった、会議のタイプ
●streamId（文字列）  この特定のＡＶストリームのＩＤ
●streamType（文字列）  音声または映像またはScreenShare
１５）ｅｓ  ストリーム終了
【０２０４】
ザーバに新しいＡＶストリームが終了したことを通知する。サーバは、リスト・ストリーム・メッセージで応答する。
// server <‐‐ client
[sender‐id, "es", conferenceId, streamId]
●sender-id  ストリームを開始したユーザのクライアントＩＤ
●conferenceId（文字列）  この作業空間内の全ユーザが接続する会議セッションのＩＤ
●streamId（文字列）  この特定のＡＶストリームのＩＤ
１６）ｓｓ  ストリーム状態
【０２０５】
サーバに既存のＡＶストリームの状態が変化したことを通知する。サーバは、リスト・ストリーム・メッセージで応答する。
// server <‐‐ client
[sender‐id, "ss", streamId, streamType]
●sender-id  ストリームを開始したユーザのクライアントＩＤ
●streamId（文字列）  この特定のＡＶストリームのＩＤ
●streamType（文字列）  音声または映像またはScreenShare
１７）ｏｉｄ  オブジェクトＩＤの予約
【０２０６】
オブジェクトを作成する新しい履歴イベントを生成するのにふさわしい新しい一意的なオブジェクトＩＤを作成するために、これを用いる。
```javascript
// server <-- client
[sender-id, "oid"]
サーバは以下で応答する。
// server --> client
["-1", 'oid', <new-object-id>]
【０２０７】
上述のＡＰＩはメッセージ構造の一例である。他の構造も、特定の実施例に適した形で同様に利用してもよい。
【０２０８】
本明細書中において、一項目の情報の「識別」は、情報の当該項目について直接の特定を必ずしも必要とするものではない。情報は、１または複数の間接レイヤを介した実際の情報を単に参照することによって、或いは、組み合わせることで情報の実際の項目を判断するのに十分となる異なる情報の１または複数の項目を識別することによって、フィールド内で「識別」され得る。加えて、用語「示す（indicate）」は、本明細書中において「識別する（identify）」と同じ意味で用いられる。
【０２０９】
また、本明細書中において、所定の信号、イベント又は値は、先行する信号、イベント又は値が当該所定の信号、イベント又は値に影響を与えるものであれば、当該先行する信号、イベント又は値に「応答」する。さらに、介在する処理要素、ステップ又は期間があるときも、当該所定の信号、イベント又は値は、先行する信号、イベント又は値に「応答」する。介在する処理要素又はステップが１を超える信号、イベント又は値を組み合わせる場合、当該処理要素又はステップの信号出力は「夫々の」信号、イベント又は値入力に対して「応答」すると考えられる。所定の信号、イベント又は値が、先行する信号、イベント又は値と一致する場合は、単に劣化した場合に過ぎず、当該所定の信号、イベント又は値が、当該先行する信号、イベント又は値に「応答」すると考えられる。他の信号、イベント又は値に対する所定の信号、イベント又は値の「依存性」については同様に定義される。
【０２１０】
出願人は、本明細書に記載された個々の特徴の夫々、及び、当該特徴の２以上の組み合わせを、当業者の共通の一般的知識に照らして全体として現明細書に基づいて実現が可能な当該特徴又は組み合わせの範囲内において、当該特徴又は特徴の組み合わせが本明細書に記載された課題を解決するかに拘らず、また、特許請求の範囲が限定されることなく、ここに、分離して開示する。出願人は開示された技術の態様が任意の当該特徴又は特徴の組み合わせから構成され得ることを示す。前述の記載を鑑み、開示された技術の範囲内で種々の修正がなされ得ることは、当業者にとって明白である。
【０２１１】
開示された技術の好ましい実施形態についての前述の記載は、図示及び説明のために提供されたものである。網羅的であること、又は開示された技術を開示された正にその形式に限定することを意図するものではない。言うまでもなく、多数の修正や変形は熟練の実施者にとって明白であろう。例えば、本明細書中に記載したディスプレイは大型のものであるが、小型のディスプレイを配列させて複数の描画領域を利用することも可能である。もっとも、複数の描画領域は少なくとも幅１２フィートの大きさを有するディスプレイにおいてより有益である。特に、限定なく、本出願の背景技術の欄、又は参考文献に含まれる内容により記載され、示唆される任意の及び全ての変形が、本明細書の開示された技術の実施形態の記載中に参照により具体的に取り込まれる。加えて、任意のある実施形態に関して本明細書に記載され、示唆され、又は参照により取り込まれた任意の及び全ての変形は、他の全ての実施形態に対しても教示されると考えられる。本明細書中に記載の実施形態は、開示された技術の原理及びその実際の応用を最も良く説明し、これにより、様々な実施形態について、及び熟考される特定の使用に適した様々な修正について、開示された技術の理解を他の当業者に可能とするために選択され記載されたものである。開示された技術の範囲は以下の請求の範囲とその均等物によって規定されることが意図される。
【０２１２】
本出願の全てのフローチャートと同様に、実現される機能に影響することなく、ステップの多くが組み合わされ、並行して実行され、異なる順序で実行されることが可能である。幾つかの場合には、読者が理解するように、ステップの再配置は、特定の他の変更も同様に行われる場合においてのみ、同じ結果が得られる。他の場合には、読者が理解するように、ステップの再配置は、ある条件が満たされる場合にのみ、同じ結果が得られる。更に、本出願のフローチャートは、開示された技術の理解に関するステップのみを示しており、他の機能を実現するための多数の更なるステップが、示されたステップの前、後、間に実行され得る。
【０２１３】
開示された技術は、上記で詳細を説明した好ましい実施形態及び例を参考することによって開示される一方で、これらの例は、限定する意味ではなく、説明する意味で意図されていると理解される。開示された技術の精神及び以下の請求の範囲の範囲内の変形及び組み合わせは、当業者によって容易に想到されるものと思われる。本明細書に開示された技術は、空間的イベントマップとは異なる共同データ構造を用いて実施可能である。
【図１Ａ】
2018524661.tif 000005
【図１Ｂ】
2018524661.tif 000006
【図１Ｃ】
2018524661.tif 000007
【図２】
2018524661.tif 000008
【図３】
2018524661.tif 000009
【図４Ａ】
2018524661.tif 000010
【図４Ｂ】
2018524661.tif 000011
【図４Ｃ】
2018524661.tif 000012
【図５】
2018524661.tif 000013
【図６】
2018524661.tif 000014
【図７Ａ】
2018524661.tif 000015
【図７Ｂ】
2018524661.tif 000016
【図７Ｃ】
2018524661.tif 000017
【図８Ａ】
2018524661.tif 000018
【図８Ｂ】
2018524661.tif 000019
【図９Ａ】
2018524661.tif 000020
【図９Ｂ】
2018524661.tif 000021
【図９Ｃ】
2018524661.tif 000022
【図１０】
2018524661.tif 000023
【図１１】
2018524661.tif 000024
【図１２】
2018524661.tif 000025
【図１３】
2018524661.tif 000026
【図１４Ａ】
2018524661.tif 000027
【図１４Ｂ】
2018524661.tif 000028
【図１４Ｃ】
2018524661.tif 000029
【図１４Ｄ】
2018524661.tif 000030
【図１４Ｅ】
2018524661.tif 000031
【図１４Ｆ】
2018524661.tif 000032
【図１５】
2018524661.tif 000033
【手続補正書】
【提出日】平成30年3月14日(2018.3.14)
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
共同システムで使用するための、第１ネットワークノードであって、
物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを備え、前記プロセッサは、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記ローカル・クライアント・ビューポートの前記仮想作業空間における前記位置及び前記大きさを決定するロジックにより構成され、
前記決定するロジックは、
（ｉ）前記第１ネットワークノードでのユーザ入力に応答して、前記ローカル・クライアント・ビューポートを変更する第１モードと、
（ｉｉ）前記１以上のネットワークノードにおける第２ネットワークノードからの、リモート・クライアント・ビューポートの前記仮想作業空間内における位置及び位置の変化を含むメッセージを監視し、前記メッセージに含まれる前記位置及び前記位置の変化を用いて前記ローカル・クライアント・ビューポートを変更する第２モードを備えることを特徴とするネットワークノード。
【請求項２】
前記物理的表示空間を用いたグラフィカル・ユーザ・インタフェースを備え、
前記グラフィカル・ユーザ・インタフェースは、前記第２ネットワークノードの選択のためのユーザ入力構成物を備える請求項１に記載のネットワークノード。
【請求項３】
前記ローカル・クライアント・スクリーン空間は、前記物理的表示空間内の静的な大きさを有する請求項１に記載のネットワークノード。
【請求項４】
前記ローカル・クライアント・スクリーン空間は縦横比を有し、位置及び位置の変化を含む前記メッセージは前記参加クライアント・ビューポートの縦横比を有する大きさの明細事項を備え、
前記ローカル・クライアント・ビューポートを変更する前記ロジックは、前記ローカル・クライアント・スクリーン空間の前記縦横比と前記リモート・クライアント・ビューポートの前記縦横比との差分の関数として、前記ローカル・クライアント・ビューポートの大きさを定義する請求項１に記載のネットワークノード。
【請求項５】
前記ローカル・クライアント・スクリーン空間は、画素数を含む静的解像度を有し、前記ローカル・クライアント・ビューポートの前記大きさは、前記仮想作業空間における仮想画素数を含む可変解像度を定義し、
マッピングを計算する前記ロジックは、前記静的解像度と前記可変解像度における差分に基づいて拡大率を決定する請求項４に記載のネットワークノード。
【請求項６】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項１に記載のネットワークノード。
【請求項７】
前記イベントのログは、ローカル及びリモート・クライアント・ビューポートの変更を識別するエントリを含む請求項６に記載のネットワークノード。
【請求項８】
前記セッションにおいて前記仮想作業空間内の位置マーカの一覧を表示するユーザインタフェースを備え、前記位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定する前記ロジックは、前記選択された位置マーカを示す前記入力に応答して、前記ローカル・クライアント・ビューポートの前記位置を前記マークされた位置に更新する請求項１に記載のネットワークノード。
【請求項９】
他のネットワークノードにメッセージを送信するロジックを備え、前記メッセージは、前記ローカル・クライアント・ビューポートの前記第１モードで行われた位置と位置の変更を識別する請求項１に記載のネットワークノード。
【請求項１０】
物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを備えるネットワークノードの操作方法であって、
１以上の他のネットワークノードとの通信を確立する工程と、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存する工程を備え、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画する工程と、
前記ローカル・クライアント・ビューポートの前記仮想作業空間における前記位置及び前記大きさを決定する工程を備え、前記決定する工程は、
（ｉ）第１モードにおいて、前記第１ネットワークノードでのユーザ入力に応答して、前記ローカル・クライアント・ビューポートを変更する工程と、
（ｉｉ）第２モードにおいて、前記１以上のネットワークノードにおける第２ネットワークノードからの、リモート・クライアント・ビューポートの前記仮想作業空間内における位置及び位置の変化を含むメッセージを監視し、前記メッセージに含まれる前記位置及び前記位置の変化を用いて前記ローカル・クライアント・ビューポートを変更する工程が含まれることを特徴とする方法。
【請求項１１】
前記物理的表示空間を用いたグラフィカル・ユーザ・インタフェースを実行する工程を備え、
前記グラフィカル・ユーザ・インタフェースは、前記第２ネットワークノードの選択のためのユーザ入力構成物を備える請求項１０に記載の方法。
【請求項１２】
前記ローカル・クライアント・スクリーン空間は、前記物理的表示空間内の静的な大きさを有する請求項１０に記載の方法。
【請求項１３】
前記ローカル・クライアント・スクリーン空間は縦横比を有し、位置及び位置の変化を含む前記メッセージは前記参加クライアント・ビューポートの縦横比を有する大きさの明細事項を備え、
前記ローカル・クライアント・スクリーン空間の前記縦横比と前記リモート・クライアント・ビューポートの前記縦横比の差分の関数として、前記ローカル・クライアント・ビューポートの大きさを定義する工程を備える請求項１０に記載の方法。
【請求項１４】
前記ローカル・クライアント・スクリーン空間は、画素数を含む静的解像度を有し、前記ローカル・クライアント・ビューポートの前記大きさは、前記仮想作業空間における仮想画素数を含む可変解像度を定義し、
前記静的解像度と前記可変解像度における差分に基づいて拡大率を決定する工程を備える請求項１３に記載の方法。
【請求項１５】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項１０に記載の方法。
【請求項１６】
ローカル及びリモート・クライアント・ビューポートの変更を、前記イベントのログに記録する工程を備える請求項１５に記載の方法。
【請求項１７】
前記セッションにおいて前記仮想作業空間内の位置マーカの一覧を表示するユーザインタフェースを提供する工程を備え、前記位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記選択された位置マーカを示す前記入力に応答して、前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定し、前記ローカル・クライアント・ビューポートの前記位置を前記マークされた位置に更新する工程を備える請求項１０に記載の方法。
【請求項１８】
他のネットワークノードにメッセージを送信し、前記メッセージは、前記ローカル・クライアント・ビューポートの前記第１モードで行われた位置と位置の変更を識別する工程を備える請求項１０に記載の方法。
【請求項１９】
持続性コンピュータ可読メモリ、及び、物理的表示空間を有するディスプレイ、ユーザ入力デバイス、プロセッサ、通信ポートを有する第１ネットワークノードで使用するための、前記メモリ内に保存されたコンピュータプログラムを備える製品であって、
前記コンピュータプログラムは、
１以上の他のネットワークノードとの通信を確立し、
仮想作業空間内に位置を有する図形ターゲットを識別する共同データを保存し、前記共同データは識別される前記図形ターゲットの前記仮想作業空間内における位置を含み、
前記仮想作業空間内に位置及び大きさを有するローカル・クライアント・ビューポートの、前記物理的表示空間内に大きさを有するローカル・クライアント・スクリーン空間へのマッピングを計算し、前記マッピングの機能として、前記ローカル・クライアント・ビューポート内に位置を有する図形ターゲットを、前記ローカル・クライアント・スクリーン空間に描画し、
前記ローカル・クライアント・ビューポートの前記仮想作業空間における前記位置及び前記大きさを決定するロジックを有し、
前記決定するロジックは、
（ｉ）前記第１ネットワークノードでのユーザ入力に応答して、前記ローカル・クライアント・ビューポートを変更する第１モードと、
（ｉｉ）前記１以上のネットワークノードにおける第２ネットワークノードからの、リモート・クライアント・ビューポートの前記仮想作業空間内における位置及び位置の変化を含むメッセージを監視し、前記メッセージに含まれる前記位置及び前記位置の変化を用いて前記ローカル・クライアント・ビューポートを変更する第２モードを備えることを特徴とする製品。
【請求項２０】
前記ロジックは、前記物理的表示空間を用いたグラフィカル・ユーザ・インタフェースを備え、
前記グラフィカル・ユーザ・インタフェースは、前記第２ネットワークノードの選択のためのユーザ入力構成物を備える請求項１９に記載の製品。
【請求項２１】
前記ローカル・クライアント・スクリーン空間は、前記物理的表示空間内の静的な大きさを有する請求項１９に記載の製品。
【請求項２２】
前記ローカル・クライアント・スクリーン空間は縦横比を有し、位置及び位置の変化を含む前記メッセージは前記参加クライアント・ビューポートの縦横比を有する大きさの明細事項を備え、
前記ローカル・クライアント・ビューポートを変更する前記ロジックは、前記ローカル・クライアント・スクリーン空間の前記縦横比と前記リモート・クライアント・ビューポートの前記縦横比との差分の関数として、前記ローカル・クライアント・ビューポートの大きさを定義する請求項１９に記載の製品。
【請求項２３】
前記ローカル・クライアント・スクリーン空間は、画素数を含む静的解像度を有し、前記ローカル・クライアント・ビューポートの前記大きさは、前記仮想作業空間における仮想画素数を含む可変解像度を定義し、
マッピングを計算する前記ロジックは、前記静的解像度と前記可変解像度における差分に基づいて拡大率を決定する請求項２２に記載の製品。
【請求項２４】
前記共同データは、前記作業空間内に位置を有する前記図形ターゲットに関するイベントのログを含み、前記ログにおけるエントリにはイベントの記録が含まれ、
イベントの記録には、動作の識別子、前記動作の図形ターゲットの前記仮想作業空間内における位置、前記動作の時間、前記図形ターゲットのターゲット識別子が含まれる請求項１９に記載の製品。
【請求項２５】
前記イベントのログは、ローカル及びリモート・クライアント・ビューポートの変更を識別するエントリを含む請求項２４に記載の製品。
【請求項２６】
前記プログラムは、
前記セッションにおいて前記仮想作業空間内の位置マーカの一覧を表示するユーザインタフェースを備え、前記位置マーカは前記作業空間内にマークされた位置を有し、前記ユーザインタフェースは前記一覧から選択された位置マーカを示す入力を受け付け、
前記ローカル・クライアント・ビューポートの前記仮想作業空間内における前記位置及び前記大きさを決定する前記ロジックは、前記選択された位置マーカを示す前記入力に応答して、前記ローカル・クライアント・ビューポートの前記位置を前記マークされた位置に更新する請求項１９に記載の製品。
【請求項２７】
前記プログラムは、他のネットワークノードにメッセージを送信するロジックを備え、前記メッセージは、前記ローカル・クライアント・ビューポートの前記第１モードで行われた位置と位置の変更を識別する請求項１９に記載の製品。
【請求項２８】
データプロセッサ、
仮想作業空間内にイベントを位置付け、共同ディスプレイに対して通信リソースを提供する空間的イベントマップを含む共同データを保存するメモリ、
ローカル・ディスプレイ上にスクリーン空間を有する該ローカル・ディスプレイ、
仮想作業空間内のビューポートを識別し、前記ビューポート内に位置を有する空間的イベントマップ内のイベントによって特定される図形オブジェクトを描画し、入力信号に応答して前記ビューポートを変更し、変更された前記ビューポート内に位置を有する空間的イベントマップ内のイベントによって特定される図形オブジェクトを描画するロジック、及び、
変化に応答してビューポート変更イベントを生成するロジックを備える共同システム。
【国際調査報告】
2018524661.tif 000034
2018524661.tif 000035