(57)【特許請求の範囲】
【請求項１】
サーバにアプリケーションプログラムを実行させるクライアント端末装置に、
前記クライアント端末装置が有する入力装置に対する操作によって得られる、前記サーバと前記クライアント端末装置との間で共有する画面上の前記操作の対象を表す図形の位置情報を時系列に記憶部に記憶させ、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、前記操作によって前記図形を前記画面上で同一の方向に閾値を超える速度で移動させたか否かを判定し、
前記図形を同一の方向に前記閾値を超える速度で移動させたと判定した場合、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記現在の時刻から、前記クライアント端末装置と前記サーバとの間の通信に要する通信時間を含む第１時間を経過した後の時刻における前記図形の位置情報を算出し、
算出した前記位置情報を含む操作情報を、前記サーバへ送信し、
送信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を前記サーバから受信し、
受信した前記画像情報に含まれる画像を表示する、
処理を実行させることを特徴とする仮想デスクトッププログラム。
【請求項２】
前記位置情報を算出する処理では、
前記特定の時刻から前記現在の時刻までの前記位置情報が示す位置を結ぶ線が円弧線である場合、前記現在の時刻から前記第１時間経過した後の時刻における、前記円弧線の前記方向の延長線上にある前記図形の位置情報を算出し、
前記特定の時刻から前記現在の時刻までの位置情報が示す位置を結ぶ線が直線である場合、前記現在の時刻から前記第１時間経過した後の時刻における、前記直線の前記方向の延長線上にある前記図形の位置情報を算出する、
ことを特徴とする請求項１に記載の仮想デスクトッププログラム。
【請求項３】
前記クライアント端末装置に、
前記現在の時刻における前記位置情報と、特定の視野に応じた視野幅と、に基づく、前記画面上の視野範囲を特定し、
算出した前記位置情報が表す位置が、特定した前記視野範囲に含まれない場合、算出した前記位置情報が表す位置を、特定した前記視野範囲に含まれる位置となるように補正する、
処理を実行させ、
前記サーバへ送信する処理では、
補正した前記位置情報を送信する、
ことを特徴とする請求項１または２に記載の仮想デスクトッププログラム。
【請求項４】
前記記憶部に前記位置情報を記憶させる時間間隔は、前記操作情報を前記サーバへ送信する時間間隔よりも短いことを特徴とする請求項１〜３のいずれか一つに記載の仮想デスクトッププログラム。
【請求項５】
サーバにアプリケーションプログラムを実行させるクライアント端末装置が、
前記クライアント端末装置が有する入力装置に対する操作によって得られる、前記サーバと前記クライアント端末装置との間で共有する画面上の前記操作の対象を表す図形の位置情報を時系列に記憶部に記憶させ、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、前記操作によって前記図形を前記画面上で同一の方向に閾値を超える速度で移動させたか否かを判定し、
前記図形を同一の方向に前記閾値を超える速度で移動させたと判定した場合、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記現在の時刻から、前記クライアント端末装置と前記サーバとの間の通信に要する通信時間を含む第１時間を経過した後の時刻における前記図形の位置情報を算出し、
算出した前記位置情報を含む操作情報を、前記サーバへ送信し、
送信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を前記サーバから受信し、
受信した前記画像情報に含まれる画像を表示する、
処理を実行することを特徴とする仮想デスクトップ処理方法。
【請求項６】
サーバと、
前記サーバにアプリケーションプログラムを実行させるクライアント端末装置と、
を有する仮想デスクトップシステムであって、
前記クライアント端末装置が、
前記クライアント端末装置が有する入力装置に対する操作によって得られる、前記サーバと前記クライアント端末装置との間で共有する画面上の前記操作の対象を表す図形の位置情報を時系列に記憶部に記憶させ、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、前記操作によって前記図形を前記画面上で同一の方向に閾値を超える速度で移動させたか否かを判定し、
前記図形を同一の方向に前記閾値を超える速度で移動させたと判定した場合、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記現在の時刻から、前記クライアント端末装置と前記サーバとの間の通信に要する通信時間を含む第１時間を経過した後の時刻における前記図形の位置情報を算出し、
算出した前記位置情報を含む操作情報を、前記サーバへ送信し、
送信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を前記サーバから受信し、
受信した前記画像情報に含まれる画像を表示する、
処理を実行し、
前記サーバが、
前記クライアント端末装置から前記操作情報を受信し、
受信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を生成し、
生成した前記画像情報を前記クライアント端末装置に送信する、
処理を実行することを特徴とする仮想デスクトップシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想デスクトッププログラム、仮想デスクトップ処理方法、および仮想デスクトップシステムに関する。
【背景技術】
【０００２】
従来、デスクトップ仮想化と呼ばれる技術がある。デスクトップ仮想化と呼ばれる技術では、例えば、サーバがプログラムやデータを実行および保管し、クライアント端末装置は、リモートデスクトップとしてサーバから転送された画面の画像を表示する。例えば、サーバが、資料作成、メール、ＣＡＤ（Ｃｏｍｐｕｔｅｒ  Ａｉｄｅｄ  Ｄｅｓｉｇｎ）、動画などのアプリケーションを実行し、クライアント端末装置がサーバによるアプリケーションの処理結果を表示する。
【０００３】
また、先行技術として、従来、カーソルの表示位置の履歴を履歴記憶手段に記録しておき、当該表示位置履歴に基づいて算出したカーソルの予測移動方向にカーソルを指向して表示する技術がある（例えば、以下特許文献１参照。）。
【０００４】
また、従来、ポインタデバイスでなる通常行われるポインタ移動の処理に加えて、ポインタデバイスの短時間内の利用者の操作の特徴を検出し、それに基づいて目的位置にポインタを瞬時に移動させる技術がある（例えば、以下特許文献２参照。）。
【０００５】
また、従来、移動局の位置を管理する基地局が、移動局から受信した位置座標から進行方位へ進行速度で移動しているものとして、移動局の位置をマーカ表示する時刻における位置座標の移動を予測して表示する技術がある（例えば、以下特許文献３参照。）。
【０００６】
また、従来、表示装置の表示画面に表示される現在のマウスカーソルの位置と過去のマウスカーソルの位置とにより次ステップのマウスカーソルの位置を予測し、現在のマウスカーソルの位置と次ステップのマウスカーソルの位置を表示する技術がある（例えば、以下特許文献４参照。）。
【０００７】
また、従来、各移動実績のなかでカーソルの現在位置に関連する移動実績に基づいて、該現在位置からのカーソルの移動先を決定し、決定した移動先へカーソルを移動する技術がある（例えば、以下特許文献５参照。）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−０１３５４５号公報
【特許文献２】特開２００８−１１６９９５号公報
【特許文献３】特開平０５−２６８１３４号公報
【特許文献４】特開平０４−０５４５２０号公報
【特許文献５】特開２０１５−００５２２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
しかしながら、デスクトップ仮想化において、サーバとクライアント端末装置との間のネットワークの遅延により、クライアント端末装置における入力装置への操作に対する画面変化が遅くなり、利用者の操作感が低下するという問題点がある。
【００１０】
１つの側面では、本発明は、ネットワーク遅延を気にせずに、利用者の操作感の向上を図ることができる仮想デスクトッププログラム、仮想デスクトップ処理方法、および仮想デスクトップシステムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一側面によれば、サーバにアプリケーションプログラムを実行させるクライアント端末装置に、前記クライアント端末装置が有する入力装置に対する操作によって得られる、前記サーバと前記クライアント端末装置との間で共有する画面上の前記操作の対象を表す図形の位置情報を時系列に記憶部に記憶させ、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、前記操作によって前記図形を前記画面上で同一の方向に閾値を超える速度で移動させたか否かを判定し、前記図形を同一の方向に前記閾値を超える速度で移動させたと判定した場合、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記現在の時刻から、前記クライアント端末装置と前記サーバとの間の通信に要する通信時間を含む第１時間を経過した後の時刻における前記図形の位置情報を算出し、算出した前記位置情報を含む操作情報を、前記サーバへ送信し、送信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を前記サーバから受信し、受信した前記画像情報に含まれる画像を表示する仮想デスクトッププログラム、仮想デスクトップ処理方法、および仮想デスクトップシステムが提案される。
【発明の効果】
【００１２】
本発明の一態様によれば、ネットワーク遅延を気にせずに、利用者の操作感の向上を図ることができる。
【図面の簡単な説明】
【００１３】
【図１】図１は、仮想デスクトップシステムの一動作例を示す説明図である。
【図２】図２は、仮想デスクトップシステムへの適用例を示す説明図である。
【図３】図３は、ＶＤＩ操作における処理および応答が遅れる例を示す説明図である。
【図４】図４は、現在の位置情報を送信した場合のマウス操作の応答性例を示す説明図である。
【図５】図５は、予測の位置情報を送信した場合のマウス操作の応答性例を示す説明図である。
【図６】図６は、クライアント端末装置のハードウェア構成例を示す説明図である。
【図７】図７は、サーバのハードウェア構成例を示す説明図である。
【図８】図８は、仮想デスクトップシステムの機能的構成例を示すブロック図である。
【図９】図９は、位置情報の記憶例を示す説明図である。
【図１０】図１０は、クライアント端末装置の画面上でのマウス操作例１を示す説明図である。
【図１１】図１１は、クライアント端末装置の画面上でのマウス操作例２を示す説明図である。
【図１２】図１２は、人間の視野例を示す説明図である。
【図１３】図１３は、ディスプレイ上の視野例を示す説明図である。
【図１４】図１４は、視角度と視野幅例を示す説明図である。
【図１５】図１５は、各種定数定義表例を示す説明図である。
【図１６】図１６は、ディスプレイ上の各長さの定義例を示す説明図である。
【図１７】図１７は、ディスプレイ距離簡易算出表例を示す説明図である。
【図１８】図１８は、視野範囲例を示す説明図である。
【図１９】図１９は、補正例１を示す説明図である。
【図２０】図２０は、補正例２を示す説明図である。
【図２１】図２１は、クライアント端末装置による操作情報の送信処理手順例を示すフローチャートである。
【図２２】図２２は、図２１に示す算出処理手順例を示すフローチャートである。
【図２３】図２３は、クライアント端末装置による表示処理手順例を示すフローチャートである。
【図２４】図２４は、サーバによるパケット受信処理手順例を示すフローチャートである。
【図２５】図２５は、サーバによる送信処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１４】
以下に添付図面を参照して、本発明にかかる仮想デスクトッププログラム、仮想デスクトップ処理方法、および仮想デスクトップシステムの実施の形態を詳細に説明する。
【００１５】
図１は、仮想デスクトップシステムの一動作例を示す説明図である。仮想デスクトップシステム１００は、クライアント端末装置１０２と、サーバ１０１と、を有する。クライアント端末装置１０２は、デスクトップ仮想化において、サーバ１０１にプログラムを実行させるコンピュータである。サーバ１０１は、クライアント端末装置１０２からの指示に応じてプログラムを実行するコンピュータである。ここでのプログラムは、例えば、アプリケーションプログラムである。
【００１６】
従来技術では、デスクトップ仮想化において、サーバ１０１は、プログラムやデータを実行および保管する。そして、デスクトップ仮想化において、クライアント端末装置１０２は、リモートデスクトップとしてサーバ１０１から転送された画面の画像を表示する。
【００１７】
従来技術では、デスクトップ仮想化において、サーバ１０１とクライアント端末装置１０２との間のネットワークの遅延により、クライアント端末装置１０２における入力装置への操作に対する画面変化が遅くなる。
【００１８】
例えば、利用者のマウス操作によって画面上のオブジェクトを移動させる場合、現在の時刻においてマウス操作によりオブジェクトが移動した画面がクライアント端末装置１０２において表示されるのは、現在の時刻から、少なくとも通信時間を含む経過後の時刻となる。通信時間とは、クライアント端末装置１０２からサーバ１０１へ位置情報の送信に要する時間と、サーバ１０１からクライアント端末装置１０２へ画面の画像を含む画像情報の送信に要する時間と、を少なくとも含む時間である。このため、利用者の操作感が低下するという問題点がある。画面変化が遅くなる例は、図３と図４を用いて詳細に説明する。
【００１９】
本実施の形態では、クライアント端末装置１０２は、画面上でポインタの移動が同一方向に閾値を超える速度である場合、通信後のポインタの位置を予測してサーバ１０１へ送信する。これにより、通信時間分の遅延を利用者に意識させることなく実際のポインタの位置に応じた画面の画像を表示できる。したがって、利用者の操作感の向上を図ることができる。
【００２０】
具体的に、クライアント端末装置１０２は、クライアント端末装置１０２が有する入力装置に対する操作によって得られる、画面上の操作の対象を表す図形の位置情報を時系列に記憶部１１２に記憶させる。ここで、画面は、サーバ１０１とクライアント端末装置１０２との間で共有される。記憶部１１２は、例えば、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やディスクなどの記憶装置である。
【００２１】
また、ここでの入力装置は、例えば、ポインティングデバイスである。ポインティングデバイスは、クライアント端末装置１０２が有する表示装置によって映し出される画面上に表示されるポインタやアイコンを操作するために用いる。表示装置は、例えば、ディスプレイである。具体的に、入力装置は、例えば、マウス１１１、トラックボール、タッチパネルなどが挙げられる。本実施の形態では、入力装置としてマウス１１１を例に挙げて説明する。ここでのマウス操作としては、例えば、マウス移動を対象とし、クリックポイントやホイールを対象外とする。
【００２２】
画面上の操作の対象を表す図形とは、例えば、画面上の操作対象の場所を示すマークである。該図形は、例えば、マウスポインタである。ここで、図形の位置情報は、例えば、マウス位置情報やマウスポインタの位置情報、単に位置情報などとも称する。ここでの位置情報は、例えば、画面をｘ軸とｙ軸によって定義した場合の画面上の座標値である。
【００２３】
ここで、記憶部１１２に時系列に位置情報を記憶させるとは、マウス操作が発生している際に、所定時間ごとに位置情報を取得して順に記憶させたり、任意のタイミングで位置情報を取得して取得した時刻と位置情報とを関連付けて記憶させてもよい。図１の例では、所定時間ごとに記憶部１１２に記憶させる例を説明する。所定時間は、例えば、Δｔと表す。
【００２４】
図１の例では、クライアント端末装置１０２は、マウス操作によりマウスポインタを位置ｐ１に移動させ、位置ｐ１を表す位置情報（ｘ１，ｙ１）を記憶部１１２に記憶させる。つぎに、所定時間経過後に、クライアント端末装置１０２は、マウス操作によりマウスポインタを位置ｐ２に移動させ、位置ｐ２を表す位置情報（ｘ２，ｙ２）を記憶部１１２に記憶させる。
【００２５】
さらに、所定時間経過後に、クライアント端末装置１０２は、マウス操作によりマウスポインタを位置ｐ３に移動させ、位置ｐ３を表す位置情報（ｘ３，ｙ３）を記憶部１１２に記憶させる。
【００２６】
クライアント端末装置１０２は、記憶部１１２に時系列に記憶された位置情報に基づいて、位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、操作によって図形を画面上で同一の方向に閾値を超える速度で移動させたか否かを判定する。閾値は、例えば、利用者やシステムの開発者によって設定可能である。
【００２７】
クライアント端末装置１０２は、図形を画面上で同一方向に閾値を超える速度で移動させたと判定された場合、現在の時刻から通信時間以上の時間経過した後の時刻における図形の位置情報を算出する。通信時間とは、例えば、クライアント端末装置１０２とサーバ１０１との間の通信に要する時間である。具体的には、クライアント端末装置１０２は、記憶部１１２に時系列に記憶された位置情報に基づいて、現在の時刻から通信時間以上の時間経過した後の時刻における図形の位置情報を算出する。図１の例では、クライアント端末装置１０２は、位置ｐｔを表す位置情報（ｘｔ，ｙｔ）を算出する。
【００２８】
クライアント端末装置１０２は、算出した位置情報を含む操作情報１２１を、サーバ１０１へ送信する。クライアント端末装置１０２は、送信した操作情報１２１に基づくプログラムの実行に応じた画面の画像を含む画像情報１２２をサーバ１０１から受信する。
【００２９】
クライアント端末装置１０２は、受信した画像情報１２２に含まれる画像を表示する。クライアント端末装置１０２は、例えば、受信した画像情報１２２に含まれる画像を表示装置に出力する。表示装置は、例えば、ディスプレイなどが挙げられる。
【００３０】
これにより、予測を簡単に行うことができるマウス移動において、未来のマウス位置に応じた画面の画像が作成できる。画像情報１２２を受信する時には、現在のマウス位置に対応する画面の画像を表示することができる。したがって、ネットワーク遅延を気にせずに、利用者の操作感の向上を図ることができる。操作感とは、利用者の操作に対するレスポンスのよさなどである。また、同一方向に移動しない場合や移動速度が遅い場合を位置予測の対象外とすることにより、予測がはずれる可能性が高いマウス移動を対象外とできる。
【００３１】
図２は、仮想デスクトップシステムへの適用例を示す説明図である。仮想デスクトップシステム１００は、例えば、サーバ１０１と、複数のクライアント端末装置１０２と、を有する。サーバ１０１と、複数のクライアント端末装置１０２とは、ネットワークを介して接続される。ネットワークには、有線または無線を問わず、インターネット、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＶＰＮ（Ｖｉｒｔｕａｌ  Ｐｒｉｖａｔｅ  Ｎｅｔｗｏｒｋ）などの任意の種類の通信網を採用可能である。クライアント端末装置１０２は、サーバ１０１によってプログラムを実行する。クライアント端末装置１０２の一例としては、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの固定端末装置の他、携帯電話機、ＰＨＳ（Ｐｅｒｓｏｎａｌ  Ｈａｎｄｙ  Ｐｈｏｎｅ）やＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）などの移動体端末装置などが挙げられる。また、プログラムとしては、ＯＳやアプリケーションなどである。
【００３２】
また、例えば、サーバ１０１の設置場所とクライアント端末装置１０２の利用場所とが国内であれば、ネットワークの遅延時間が５０［ｍｓ］程度である。例えば、サーバ１０１は日本に設置されているが、クライアント端末装置１０２は日本以外の国で利用されるなど、クライアント端末装置１０２が、ネットワーク通信においてサーバ１０１と遠い場所で利用する場合がある。このような場合、ネットワークの遅延時間が１００［ｍｓ］程度となる。
【００３３】
図３は、ＶＤＩ操作における処理および応答が遅れる例を示す説明図である。クライアント端末装置１０２は、利用者によるマウス操作を受け付ける（ステップＳ３０１）。そして、クライアント端末装置１０２は、クライアントＶＤＩシステム処理を行う（ステップＳ３０２）。ここでは、クライアント端末装置１０２は、サーバ１０１側へマウス位置情報を送信する。
【００３４】
マウス位置情報を含むパケットがネットワークを介してサーバ１０１へ送信中に、ネットワーク遅延が発生する（ステップＳ３０３）。つぎに、サーバ１０１は、サーバ１０１側ＶＤＩシステム処理を行う（ステップＳ３０４）。ここでは、サーバ１０１は、マウス位置情報を含むパケットを受信すると、ＯＳへマウス１１１座標値を渡す。
【００３５】
サーバ１０１は、サーバ１０１側ＯＳによる処理を行う（ステップＳ３０５）。ここでは、サーバ１０１は、サーバ１０１側ＯＳによってマウス位置情報を認識する。ここで、例えば、クライアント端末装置１０２においてマウス操作が開始されてから、サーバ１０１がＯＳによる処理を開始するまでの間の時間をｔ１とする。
【００３６】
そして、サーバ１０１は、アプリケーションによる処理を行う（ステップＳ３０６）。ここでは、サーバ１０１は、アプリケーションによりマウス位置に応じた描画を行う。サーバ１０１は、サーバ１０１側ＶＤＩシステム処理を行う（ステップＳ３０７）。ここで、サーバ１０１は、画面キャプチャを行い、キャプチャされた画面を描画するため、クライアント端末装置１０２用の描画データを生成する。描画データを含むパケットがネットワークを介してクライアント端末装置１０２へ送信中に、ネットワーク遅延が発生する（ステップＳ３０８）。
【００３７】
つぎに、クライアント端末装置１０２は、クライアントＶＤＩシステム処理を行う（ステップＳ３０９）。ここで、クライアント端末装置１０２は、描画データをデコードして画面を表示する。表示された画面がクライアント作業者の目に映る（ステップＳ３１０）。ここで、例えば、サーバ１０１がＯＳによる処理が開始されてからクライアント作業者の目に映るまでの時間をｔ２とする。時間ｔ１と時間ｔ２との合計がＴである。
【００３８】
図４は、現在の位置情報を送信した場合のマウス操作の応答性例を示す説明図である。ここでは、顔のマークを、マウス操作により移動させる例を説明する。利用者によるマウス操作の開始前に、各画面においてマウスポインタと顔のマークとは位置ｐ０にある。ここで、各時刻におけるサーバ１０１によって生成される画面はサーバ画面と称し、各時刻においてクライアント端末装置１０２によって生成される画面はクライアント画面と称する。
【００３９】
クライアント端末装置１０２は、利用者のマウス操作が開始されると、利用者のマウス操作によるマウスポインタの位置情報をサーバ１０１へ送信する。この際、クライアント画面やサーバ画面はまだ変化しない。ここで、マウスポインタの位置情報は、省略してマウス位置情報とも称する。操作開始直後の時刻に、クライアント画面では、クライアント操作によりマウスポインタは位置ｐ１にあり、顔のマークは位置ｐ０にある。操作開始直後の時刻に、サーバ画面では、マウスポインタと顔のマークは位置ｐ０にある。
【００４０】
つぎに、マウス操作開始直後の時刻から時間ｔ１経過後の時刻に、クライアント端末装置１０２は、利用者のマウス操作によりマウスポインタを位置ｐ２に移動させる。このため、クライアント端末装置１０２に表示される画面では、マウスポインタは位置ｐ２にあるが、顔のマークは位置ｐ０にある。サーバ１０１は、操作開始直後の時刻から時間ｔ１経過後の時刻に、操作開始のマウス位置情報を含む操作情報を受信する。このため、サーバ画面では、マウスポインタは位置ｐ１にあり、顔のマークは位置ｐ１にある。
【００４１】
つぎに、操作開始直後の時刻から時間（ｔ１＋ｔ２）経過後の時刻に、クライアント端末装置１０２は、例えば、クライアントのマウス操作によってマウスポインタを位置ｐ３に移動させる。サーバ１０１は、時間ｔ１経過後の時刻のマウス位置情報を含む操作情報をクライアント端末装置１０２から受信し、操作情報に応じたプログラムの実行によって画面の画像を含む画像情報を生成する。このため、操作開始直後の時刻から時間（ｔ１＋ｔ２）経過後の時刻に、サーバ画面では、マウスポインタと顔のマークとが、時間ｔ１経過後の時刻のクライアント操作による位置ｐ２にある。そして、サーバ１０１は、操作開始から時間（ｔ１＋ｔ２）経過後の時刻に、画像情報をクライアント端末装置１０２へ送信する。
【００４２】
また、時間（ｔ１＋ｔ２）経過後の時刻に、クライアント端末装置１０２は、時間ｔ１経過後の時刻にサーバ１０１から送信された画像情報を受信して画像情報に含まれる画像を表示する。このため、クライアント画面では、マウスポインタは位置ｐ３にあるが、顔のマークは位置ｐ１にある。
【００４３】
つぎに、操作開始直後の時刻から時間（ｔ１＋ｔ２＋ｔ１）経過後の時刻に、クライアント端末装置１０２は、例えば、マウス操作によってマウスポインタを位置ｐ４に移動させる。サーバ１０１は、時間（ｔ１＋ｔ２）経過後の時刻のマウス位置情報を含む操作情報をクライアント端末装置１０２から受信し、操作情報に応じたプログラムの実行によって画面の画像を含む画像情報を生成する。このため、サーバ画面では、マウスポインタと顔のマークとが、時間（ｔ１＋ｔ２）経過後の時刻のクライアント操作による位置ｐ３にある。そして、サーバ１０１は、画像情報をクライアント端末装置１０２へ送信する。
【００４４】
また、操作開始直後の時刻から時間（ｔ１＋ｔ２＋ｔ１）経過後の時刻に、クライアント端末装置１０２は、操作開始直後の時刻から時間（ｔ１＋ｔ２）経過後の時刻にサーバ１０１から送信された画像情報を受信する。このため、操作開始直後の時刻から時間（ｔ１＋ｔ２＋ｔ１）経過後の時刻に、クライアント画面では、マウスポインタは位置ｐ４にあるが、顔のマークは位置ｐ２にある。サーバ１０１とクライアント端末装置１０２との間の通信に要する時間によって、クライアント画面においてマウス操作の操作結果が反映されるのに時間がかかる。
【００４５】
図５は、予測の位置情報を送信した場合のマウス操作の応答性例を示す説明図である。上述したように、本実施の形態では、クライアント端末装置１０２は、画面上でマウス移動が同一方向に閾値を超える速度である場合、通信遅延後のマウス位置を予測してサーバへ送信する。これにより、通信時間経過後の時刻に、予測したマウス位置に応じた画面の画像を表示できる。これにより、通信遅延を気にせず、利用者の操作感の向上を図ることができる。
【００４６】
まず、操作開始前には、マウスポインタと顔のマークとが同じ位置ｐ０にある。操作開始直後の時刻に、クライアント端末装置１０２は、マウス操作によりマウスポインタをマウス位置ｐ１に移動させる。ここで、サーバ画面では、顔のマークおよびマウスポインタは位置ｐ０にある。また、クライアント画面では、顔のマークは位置ｐ０にあり、マウスポインタは位置ｐ１にある。クライアント端末装置１０２は、操作開始直後の時刻から（ｔ１＋ｔ２）経過後の時刻におけるマウス位置ｐ３’を送信する。ここでの（ｔ１＋ｔ２）経過後の時刻におけるマウス位置は、予測の位置である。
【００４７】
つぎに、操作開始直後の時刻から時間ｔ１経過後の時刻に、クライアント端末装置１０２は、マウス操作によりマウスポインタをマウス位置ｐ２に移動させる。ここで、サーバ１０１は、操作開始直後の時刻から時間ｔ１経過後の時刻に、操作開始直後の時刻にクライアント端末装置１０２から送信されたマウス位置ｐ３’を受信する。このため、サーバ画面では、マウスポインタと顔のマークとが受信したマウス位置ｐ３’にある。また、クライアント画面では、顔のマークが位置ｐ０にあり、マウスポインタが位置ｐ２にある。クライアント端末装置１０２は、操作開始直後の時刻から（ｔ１＋ｔ２＋ｔ１）経過後の時刻におけるマウス位置ｐ４’を送信する。
【００４８】
つぎに、操作開始直後の時刻から（ｔ１＋ｔ２）経過後の時刻に、クライアント端末装置１０２は、マウス操作によりマウスポインタをマウス位置ｐ３に移動させる。ここで、サーバ１０１は、操作開始直後の時刻から（ｔ１＋ｔ２）経過後の時刻に、操作開始直後の時刻からｔ１経過後の時刻にクライアント端末装置１０２から送信されたマウス位置ｐ４’を受信する。このため、サーバ画面では、マウスポインタと顔のマークとが受信したマウス位置ｐ４’にある。また、クライアント画面では、顔のマークとマウスポインタとが位置ｐ３’にある。クライアント端末装置１０２は、（ｔ１＋ｔ２）経過後の時刻から（ｔ１＋ｔ２）経過後の時刻におけるマウス位置ｐ５’を送信する。
【００４９】
つぎに、操作開始直後の時刻から（ｔ１＋ｔ２＋ｔ１）経過後の時刻に、クライアント端末装置１０２は、マウス操作によりマウスポインタをマウス位置ｐ４に移動させる。ここで、サーバ１０１は、操作開始直後の時刻から（ｔ１＋ｔ２＋ｔ１）経過後の時刻に、操作開始直後の時刻から（ｔ１＋ｔ２）経過後の時刻にクライアント端末装置１０２から送信されたマウス位置ｐ５’を受信する。このため、サーバ画面では、マウスポインタと顔のマークとが予測したマウス位置ｐ５’にある。また、クライアント画面では、顔のマークとマウスポインタとが予測したマウス位置ｐ４’にある。クライアント端末装置１０２は、（ｔ１＋ｔ２＋ｔ１）経過後の時刻から（ｔ１＋ｔ２）経過後の時刻におけるマウス位置ｐ６’を送信する。
【００５０】
（クライアント端末装置１０２のハードウェア構成例）
図６は、クライアント端末装置のハードウェア構成例を示す説明図である。クライアント端末装置１０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）６０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６０２と、ＲＡＭ６０３と、ディスクドライブ６０４と、ディスク６０５と、を有する。また、クライアント端末装置１０２は、Ｉ／Ｆ６０６と、キーボード６０７と、マウス１１１と、ディスプレイ６０８と、を有する。また、ＣＰＵ６０１と、ＲＯＭ６０２と、ＲＡＭ６０３と、ディスクドライブ６０４と、Ｉ／Ｆ６０６と、キーボード６０７と、マウス１１１と、ディスプレイ６０８とは、バス６００によってそれぞれ接続される。
【００５１】
ここで、ＣＰＵ６０１は、クライアント端末装置１０２の全体の制御を司る。ＲＯＭ６０２は、ブートプログラムなどのプログラムを記憶する。ＲＡＭ６０３は、ＣＰＵ６０１のワークエリアとして使用される。ディスクドライブ６０４は、ＣＰＵ６０１の制御にしたがってディスク６０５に対するデータのリード／ライトを制御する。ディスク６０５は、ディスクドライブ６０４の制御で書き込まれたデータを記憶する。ディスク６０５としては、磁気ディスク、光ディスクなどが挙げられる。
【００５２】
Ｉ／Ｆ６０６は、通信回線を通じてＬＡＮ、ＷＡＮ、インターネットなどのネットワーク６０９に接続され、このネットワーク６０９を介して他の装置に接続される。そして、Ｉ／Ｆ６０６は、ネットワーク６０９と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ６０６には、例えばモデムやＬＡＮアダプタなどを採用することができる。
【００５３】
キーボード６０７やマウス１１１は、利用者の操作により、各種データの入力を行うインターフェースである。ディスプレイ６０８は、ＣＰＵ６０１の指示により、データを出力するインターフェースである。
【００５４】
また、図示を省略するが、クライアント端末装置１０２には、カメラから画像や動画を取り込む入力装置やマイクから音声を取り込む入力装置が設けられていてもよい。また、図示を省略するが、クライアント端末装置１０２には、プリンタなどの出力装置が設けられていてもよい。
【００５５】
（サーバ１０１のハードウェア構成例）
図７は、サーバのハードウェア構成例を示す説明図である。サーバ１０１は、ＣＰＵ７０１と、ＲＯＭ７０２と、ＲＡＭ７０３と、ディスクドライブ７０４と、ディスク７０５と、Ｉ／Ｆ（Ｉｎｔｅｒ／Ｆａｃｅ）７０６と、を有する。
【００５６】
ＣＰＵ７０１と、ＲＯＭ７０２と、ＲＡＭ７０３と、ディスクドライブ７０４と、Ｉ／Ｆ７０６とは、バス７００によってそれぞれ接続される。
【００５７】
ここで、ＣＰＵ７０１は、サーバ１０１等の全体の制御を司る。ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）７０２は、各種プログラムを記憶する。ＲＯＭ７０２に記憶されるプログラムは、ＣＰＵ７０１にロードされることにより、コーディングされている処理をＣＰＵ７０１に実行させる。ＲＡＭ７０３はＣＰＵ７０１のワークエリアとして使用される。
【００５８】
Ｉ／Ｆ７０６は、通信回線を通じてネットワーク６０９に接続され、ネットワーク６０９を介して他の装置に接続される。そして、Ｉ／Ｆ７０６は、ネットワーク６０９と内部のインターフェースを司り、他のコンピュータからのデータの入出力を制御する。Ｉ／Ｆ７０６には、例えば、モデムやＬＡＮアダプタなどを採用することができる。
【００５９】
ディスクドライブ７０４は、ＣＰＵ７０１の制御に従ってディスク７０５に対するデータのリード／ライトを制御する。ディスク７０５は、ディスクドライブ７０４の制御で書き込まれたデータを記憶する。ディスク７０５としては、例えば、磁気ディスク、光ディスクなどが挙げられる。
【００６０】
また、サーバ１０１は、上述した構成部のほか、例えば、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、キーボード、マウス１１１、ディスプレイなどを有することにしてもよい。
【００６１】
（仮想デスクトップシステムの機能的構成例）
図８は、仮想デスクトップシステムの機能的構成例を示すブロック図である。クライアント端末装置１０２は、受付部８０１と、判定部８０２と、算出部８０３と、補正部８０４と、送信部８０５と、受信部８０６と、表示部８０７と、記憶部１１２と、を有する。受付部８０１から表示部８０７までの制御部の処理は、例えば、図６に示すＣＰＵ６０１がアクセス可能なＲＯＭ６０２、ＲＡＭ６０３、ディスク６０５などの記憶装置に記憶されたプログラムにコーディングされている。そして、ＣＰＵ６０１が記憶装置から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部の処理が実現される。また、制御部の処理結果は、例えば、ＲＡＭ６０３、ＲＯＭ６０２、ディスク６０５などの記憶装置に記憶される。記憶部１１２は、例えば、ＲＡＭ６０３、ＲＯＭ６０２、ディスク６０５などの記憶装置によって実現される。
【００６２】
サーバ１０１は、受信部８１１と、生成部８１２と、送信部８１３と、を有する。受信部８１１から送信部８１３までの制御部の処理は、例えば、図７に示すＣＰＵ７０１がアクセス可能なＲＯＭ７０２、ＲＡＭ７０３、ディスク７０５などの記憶装置に記憶されたプログラムにコーディングされている。そして、ＣＰＵ６０１が記憶装置から該プログラムを読み出して、プログラムにコーディングされている処理を実行する。これにより、制御部の処理が実現される。また、制御部の処理結果は、例えば、ＲＯＭ７０２、ＲＡＭ７０３、ディスク７０５などの記憶装置に記憶される。
【００６３】
受付部８０１は、クライアント端末装置１０２が有する入力装置に対する操作によって得られる、サーバ１０１とクライアント端末装置１０２との間で共有する画面上の操作の対象を表す図形の位置情報を、位置情報を得られる時刻ごとに記憶部１１２に記憶させる。ここでの入力装置は、例えば、ポインティングデバイスである。ポインティングデバイスは、クライアント端末装置１０２が有する表示装置によって映し出される画面上に表示されるポインタやアイコンを操作するために用いる。表示装置は、例えば、ディスプレイ６０８である。具体的に、入力装置は、例えば、マウス１１１、トラックボール、タッチパネルなどが挙げられる。本実施の形態では、入力装置としてマウス１１１を例に挙げて説明する。ここでのマウス操作としては、例えば、マウス移動を対象とし、クリックポイントやホイールを対象外とする。
【００６４】
画面上の操作の対象を表す図形とは、例えば、画面上の操作対象の場所を示すマークである。該図形は、例えば、マウスポインタである。ここで、図形の位置情報は、例えば、マウス位置情報やマウスポインタの位置情報、単に位置情報などとも称する。ここでの位置情報は、例えば、画面をｘ軸とｙ軸によって定義した場合の画面上の座標値である。
【００６５】
受付部８０１は、例えば、所定時間ごとにマウス位置情報を受け付けて記憶部１１２に記憶させる。所定時間は、例えば、Δｔと表す。また、受付部８０１は、例えば、マウス位置情報を各時刻において受け付けて、マウス位置情報と受け付けた時刻とを関連付けて記憶部１１２に記憶させる。また、所定時間Δｔ＜サーバ１０１へのマウス位置情報の送信間隔とすることにより、精度よくマウス位置情報を予測することができる。
【００６６】
具体的に、受付部８０１は、例えば、マウス操作が開始されると、所定時間Δｔごとにマウス位置情報を受け付けて、マウス位置情報と受け付けた時刻とを関連付けて記憶部１１２に記憶させる。
【００６７】
図９は、位置情報の記憶例を示す説明図である。テーブル９００は、例えば、時刻、位置情報のフィールドを有する。各フィールドに情報が設定されることによりレコード（９０１−１〜９０１−３など）として記憶される。テーブル９００には、少なくとも加速度や速度を計算する際に使用するだけの位置情報が記憶されていればよい。
【００６８】
例えば、加速度によって未来の位置情報を予測するためには、現在の時刻における位置情報を含めて過去３回分の位置情報を記憶しておけばよい。このため、記憶部１１２は、例えば、過去３回分の位置情報以外の位置情報のうち古い情報から順に上書きして記憶してもよい。これにより、省メモリ化を図ることができる。また、マウス位置情報を受け付ける時間間隔が短い場合に、位置情報の数を多くすることで、マウス位置の精度を向上させることができる。
【００６９】
受付部８０１は、例えば、所定時間Δｔごとにマウス位置情報を受け付けてテーブルに格納する。クライアント端末装置１０２において位置を算出する場合、時間Δｔ＜マウス位置情報の送信間隔とする。これにより、マウス位置の予測精度の向上を図ることができる。
【００７０】
つぎに、図８に示す判定部８０２は、記憶部１１２に時系列に記憶された位置情報に基づいて、位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、操作によって図形を画面上で同一の方向に閾値を超える速度で移動させたか否かを判定する。
【００７１】
具体的に、判定部８０２は、例えば、特定の時刻から現在の時刻までの間の位置情報に基づいて、マウスポインタが画面上で同一方向に移動されたか否かを判定する。特定の時刻とは、例えば、現在の時刻よりも所定時間Δｔ＊２前の時刻や、現在の時刻よりも所定時間Δｔ＊４前の時刻などである。
【００７２】
具体的に、判定部８０２は、例えば、特定の時刻におけるマウス位置を原点とした場合に、特定の時刻より後の時刻から現在の時刻までの間のマウス位置が同一象限にあるか否かを判定する。判定部８０２は、各マウス位置が同一象限にあると判定した場合、マウスポインタが画面上で同一方向に移動していると判定する。判定部８０２は、各マウス位置が同一象限にないと判定した場合、マウスポインタが画面上で同一方向に移動していないと判定する。
【００７３】
また、判定部８０２は、特定の時刻から現在の時刻までの間の位置情報に基づいて、マウスポインタの移動の速度を算出する。そして、判定部８０２は、算出した速度が閾値以上であるか否かを判定する。閾値については、予めＲＡＭ６０３、ＲＯＭ６０２、ディスク６０５などの記憶装置に記憶される。
【００７４】
算出部８０３は、マウスポインタが画面上で同一方向に閾値以上の速度で移動していると判定された場合、速度に基づいて、現在の時刻から所定時間経過後の時刻におけるマウス位置情報を算出する。ここでの所定時間は、例えば、サーバ１０１とクライアント端末装置１０２との間の通信に要する時間を含む。所定時間は、Ｔと表す。具体的に、所定時間Ｔは、例えば、上述した時間ｔ１と時間ｔ２との合計時間である。
ｔ１＝１／２＊ＲＴＴ（Ｒｏｕｎｔｄ  Ｔｉｍｅ  Ｔｒｉｐ）＋（クライアント端末装置１０２における所要時間）
ｔ２＝１／２＊ＲＴＴ＋（サーバ１０１における所要時間）
【００７５】
ＲＴＴは、例えば、メッセージをある離れた場所へ送って、それが戻ってくるまでの経過時間である。ここでは、ＲＴＴは、クライアント端末装置１０２からサーバへＩＰパケットを送付し、ＩＰパケットに応じた返答が戻ってくるまでの経過時間である。クライアント端末装置１０２における所要時間やサーバ１０１における所要時間は予め定めておいてもよい。
【００７６】
クライアント端末装置１０２は、例えば、マウス操作やキーボード操作などがない空き時間にネットワークの疎通を確認するためにサーバ１０１に対してＩＰパケットを発行し、このパケットが正しく届いて返答が行われるかを確認することによりＲＴＴを得る。ここでのＩＰパケットを発行するためのコマンドは、例えば、Ｐｉｎｇコマンドである。
【００７７】
算出部８０３は、例えば、上述した特許文献３などに記載のように位置情報を求めてもよい。現在の位置情報を（ｘ０，ｙ０）と表し、予測する位置情報を（ｘ１，ｙ１）と表す場合、算出部８０３は、例えば、以下のように位置情報（ｘ１，ｙ１）を算出してもよい。ｖ０は移動速度である。θ０は、移動方向である。
【００７８】
ｘ１＝ｘ０＋ｖ０＊Ｔ＊ｃоｓθ０
ｙ１＝ｙ０＋ｖ０＊Ｔ＊ｓｉｎθ０
【００７９】
また、算出部８０３は、マウスポインタが画面上で同一方向に閾値以上の速度で移動していると判定された場合、加速度に基づいて、現在の時刻から所定時間Ｔ経過後の時刻におけるマウス位置を算出してもよい。なお、加速度がマイナスの数値の場合、減速度である。具体的に、算出部８０３は、例えば、上述した特許文献４などに記載のように位置情報を求めてもよい。
【００８０】
図１０は、クライアント端末装置の画面上でのマウス操作例１を示す説明図である。例１には、マウス操作によるマウスポインタの通過点を結ぶ線が直線となる場合を示す。位置ｐ３は、現在の時刻でのマウス位置である。位置ｐ２は、現在の時刻よりも時間Δｔ前の時刻でのマウス位置である。位置ｐ１は、現在の時刻よりも時間２Δｔ前の時刻でのマウス位置である。
【００８１】
判定部８０２は、例えば、位置ｐ１を原点とした場合に、位置ｐ２と、位置ｐ３とが、同一象限にあるか否かを判定する。図１０の例では、同一象限にあるため、判定部８０２は、マウスポインタが画面上で同一方向に移動していると判定する。
【００８２】
算出部８０３は、例えば、位置ｐ１と、位置ｐ２と、位置ｐ３とに基づいて、マウス移動の速度を算出する。そして、算出部８０３は、現在の時刻から所定時間Ｔ経過後の時刻における位置ｐｐを算出する。これにより、現在の時刻から所定時間Ｔ経過後の時刻における予測の位置が求まる。そして、送信部８０５は、位置ｐｐの位置情報を含む操作情報をサーバ１０１へ送信する。
【００８３】
また、判定部８０２は、例えば、各時刻における位置情報に基づいて、マウスポインタの通過点を結ぶ線が直線であるか円弧線であるかを判定する。
【００８４】
判定部８０２は、現在の時刻を含む３つの時刻の位置情報に基づく３つの点が一直線上にあるか否かによって直線であるか否かを判定してもよい。判定部８０２は、一直線上にあると判定した場合に直線であると判定する。判定部８０２は、例えば、位置ｐ１と位置ｐ２とを結ぶ直線の傾きと、位置ｐ２と位置ｐ３とを結ぶ直線の傾きと、が同一であれば、直線であると判定する。また、判定部８０２は、位置ｐ１と位置ｐ２とを結ぶ直線の傾きと、位置ｐ２と位置ｐ３とを結ぶ直線の傾きと、の差が閾値以下であれば、３つの点が一直線上にあると判定してもよい。これにより、誤差を考慮することができる。
【００８５】
判定部８０２は、現在の時刻を含む３つの時刻の位置情報に基づいて、３点を通過する円弧線を作成可能か否かによって円弧線であるか否かを判定してもよい。３点を通過する円弧線の作成方法は既知であるため特に説明しない。直線であるか否かの判定において誤差を含めると、判定部８０２は、３つの点を結ぶ線が円弧線であり、かつ直線であるというように判定される場合がある。判定部８０２は、処理の簡単化のために、例えば、直線であると判定してもよい。また、判定部８０２は、直線でないと判定した場合に、円弧線であると判定してもよい。
【００８６】
算出部８０３は、直線であると判定した場合、直線の延長上における現在の時刻から所定時間Ｔ経過後の時刻における位置情報を算出する。直線の例は、例えば、図１０である。また、円弧線であると判定した場合、算出部８０３は、円弧線上における現在の時刻から所定時間Ｔ経過後の時刻における位置情報を算出する。
【００８７】
図１１は、クライアント端末装置の画面上でのマウス操作例２を示す説明図である。例２には、マウス操作によるマウスポインタの軌跡が円弧線となる場合を示す。算出部８０３は、例えば、位置ｐ１と、位置ｐ２と、位置ｐ３とに基づいて、円弧線分の補完を行うことにより、円弧線上における現在の時刻から所定時間Ｔ経過後の時刻における位置ｐｔの位置情報を算出する。
【００８８】
また、ここでは、円弧線であるか直線であるかの判定を行ったが、これに限らず、算出部８０３は、両方の場合における予測の位置を算出してもよい。つぎに、クライアント端末装置１０２の送信部８０５は、現在の時刻から所定時間Ｔ経過後の時刻における算出した位置ｐｔの位置情報を含む操作情報をサーバ１０１へ送信する。操作情報は、例えば、マウス位置の位置情報やヘッダ情報などを含むパケット情報である。マウス位置情報は、例えば、画面上のマウスポインタのｘ軸座標値とｙ軸座標値との情報を有する。マウス位置情報は、実際には暗号化されてある。
【００８９】
そして、サーバ１０１の受信部８１１は、例えば、クライアント端末装置１０２からの操作情報を受信する。サーバ１０１受信部８１１は、例えば、Ｉ／Ｆ７０６を用いて画像情報を受信する。サーバ１０１の生成部８１２は、操作情報に応じた画面の画像を含む画像情報を生成する。サーバ１０１の生成部８１２は、クライアント端末装置１０２とサーバ１０１間で共有しプログラムの実行に応じた画面の画像を含む画像情報を生成する。画像情報は、例えば、画像とメタデータなどの情報とを含むパケットである。画像の情報形式については、ＢＭＰ（ＢｉｔＭａＰ）、ＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃｓ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）、ＧＩＦ（Ｇｒａｐｈｉｃｓ  Ｉｎｔｅｒｃｈａｎｇｅ  Ｆｏｒｍａｔ）やＰＮＧ（Ｐｏｒｔａｂｌｅ  Ｎｅｔｗｏｒｋ  Ｇｒａｐｈｉｃｓ）などが挙げられるが、特に限定しない。また、画像情報に動画形式を用いる場合、動画形式については、ＡＶＩ（Ａｕｄｉｏ  Ｖｉｄｅｏ  Ｉｎｔｅｒｌｅａｖｅ）、ＭＰＥＧ（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）、Ｈ．２６４（ＭＰＥＧ−４  ＡＶＣ）、独自圧縮形式などが挙げられるが、特に限定しない。サーバ１０１の送信部８１３は、画像情報をクライアント端末装置１０２に送信する。
【００９０】
クライアント端末装置１０２の受信部８０６は、画像情報を受信する。クライアント端末装置１０２の受信部８０６は、例えば、Ｉ／Ｆ６０６を用いて画像情報を受信する。そして、表示部８０７は、受信部８０６が受信した画像情報に含まれる画像を表示する。
【００９１】
つぎに、本実施の形態では、クライアント端末装置１０２は、未来のマウス位置を算出する際に、マウス位置の予測が外れることにより画面上のオブジェクトの見逃しを防ぐため、推測限界点を設けることにより、算出したマウス位置を補正してもよい。画面上のオブジェクトとは、マウス操作によって移動されるコンピュータ上の物である。図４や図５の例では、オブジェクトは顔のマークである。
【００９２】
補正部８０４は、現在の時刻における位置情報と、特定の視野に応じた視野幅と、に基づく、画面上の視野範囲を特定する。そして、補正部８０４は、算出した位置情報が表す位置が、特定した視野範囲に含まれない場合、算出した位置情報が表す位置を、特定した視野範囲に含まれる位置となるように補正する。
【００９３】
ここで、補正部８０４についての詳細な説明の前に、人間の視野、画面上の視野範囲を求めるための係数などについて簡単に説明する。
【００９４】
図１２は、人間の視野例を示す説明図である。人間の眼球を動かすことなくピンポイントで視力に優れている範囲は極めて狭い。中心視野から外れることにより人間の視力が劣る。弁別視野とは、視力などの視機能が優れている中心領域である。弁別視野は、視野角が約５度以内である。有効視野とは、眼球運動だけで瞬時に情報需要できる領域である。有効視野とは、視野角が水平に約３０度以内であり、視野角が垂直に約２０度以内である。安定注視野とは、眼球と頭部運動により無理なく注視でき、効果的な情報需要ができる領域である。安定注視野とは、視野角が水平に約６０〜９０度であり、視野角が垂直に約４５〜７０度以内である。
【００９５】
例えば、算出されたマウス位置の座標値が利用者の弁別視野または有効視野から外れた位置である場合、弁別視野または有効視野を限界点とすることにより、利用者は、マウスポインタから離れたオブジェクトを見失う事態を予防する。ここで、視点位置は現在の時刻におけるマウス位置とする。
【００９６】
図１３は、ディスプレイ上の視野例を示す説明図である。眼球からディスプレイ６０８までの距離がＬｍ［ｍｍ］である。ディスプレイ６０８のサイズはＸｍ×Ｙｍ［ｍｍ］である。視点位置は［Ｘｃ，Ｙｃ］である。
【００９７】
図１４は、視角度と視野幅例を示す説明図である。垂直の視覚についての垂直角度はＷｎｖと表し、水平視覚についての水平角度はＷｎｈと表す。垂直視野の視野幅はＹｎａと表し、水平視野の視野幅は、Ｘｎａと表す。ｎは視野の種類を表す。弁別視野の場合、ｎが０である。有効視野の場合、ｎが１である。安定注視野の場合、ｎが２である。
【００９８】
図１５は、各種定数定義表例を示す説明図である。表は、例えば、定数の種類ごとに識別名と、単位と、標準値とを有する。例えば、肉眼分解能はＲｅｓと表し、単位は［ｍｍ］であり、標準値は「０．１」である。例えば、弁別視野−水平角度はＷ０ｈと表し、単位は［度］であり、標準値は「５．０」である。例えば、弁別視野−垂直角度はＷ０ｖと表し、単位は［度］であり、標準値は「５．０」である。
【００９９】
例えば、有効視野−水平角度はＷ１ｈと表し、単位は［度］であり、標準値は「３０．０」である。例えば、有効視野−垂直角度はＷ１ｖと表し、単位は［度］であり、標準値は「２０．０」である。例えば、安定注視野−水平角度はＷ２ｈと表し、単位は［度］であり、標準値は「６０．０」である。例えば、安定注視野−水平角度はＷ２ｖと表し、単位は［度］であり、標準値は「４５．０」である。
【０１００】
図１６は、ディスプレイ上の各長さの定義例を示す説明図である。ディスプレイ６０８の水平長は、［ピクセル］単位の場合にＸｐと表し、［ｍｍ］単位の場合にＸｍと表す。視点位置は、［Ｘｃ，Ｙｃ］と表す。
【０１０１】
ディスプレイ６０８の対角長は、［インチ］単位の場合にＤｉと表し、［ピクセル］単位の場合にＤｐと表し、［ｍｍ］単位の場合にＤｍと表す。ディスプレイ６０８の垂直長は、［ピクセル］単位の場合にＹｐと表し、［ｍｍ］単位の場合にＹｍと表す。
【０１０２】
つぎに、クライアント端末装置１０２は、以下基本情報については予め用意しておく。クライアント端末装置１０２は、以下Ｄｉ、Ｘｐ、Ｙｐについて実行中のＯＳから取得できる。
Ｄｉ：［インチ］単位のディスプレイ対角長
Ｘｐ：［ピクセル］単位のディスプレイ水平長
Ｙｐ：［ピクセル］単位のディスプレイ垂直長
【０１０３】
また、クライアント端末装置１０２は、［ｍｍ］単位のディスプレイ距離Ｌｍをディスプレイ距離簡易算出表に対してディスプレイ対角長を与えることにより求める。
【０１０４】
図１７は、ディスプレイ距離簡易算出表例を示す説明図である。ディスプレイ距離簡易算出表は、例えば、ディスプレイ６０８のサイズを与えることにより距離Ｌｍを得ることが可能な表である。ここで、ディスプレイ距離簡易算出表のＤｉ１とＤｉ２とは、ディスプレイ６０８の対角長である。表によれば、対角長がＤｉ１以上であり、Ｄｉ２より小さい場合に、ディスプレイ６０８と人体の目との距離Ｌｍが設定された標準値である。例えば、表によれば、対角長が１インチ以上であり８インチより小さいディスプレイ６０８であれば、距離Ｌｍは、１５０［ｍｍ］である。例えば、表によれば、対角長が８インチ以上であり、１３インチより小さいディスプレイ６０８であれば、距離Ｌｍは、２００［ｍｍ］である。
【０１０５】
クライアント端末装置１０２は、例えば、対角長Ｄｉを実行中のＯＳから取得し、取得した対角長Ｄｉをディスプレイ距離簡易算出表に与えることにより距離Ｌｍを得ることができる。クライアント端末装置１０２は、例えば、ディスプレイ６０８が変更された際などに距離Ｌｍを取得しておき、ＲＯＭ６０２、ＲＡＭ６０３、ディスク６０５などの記憶装置に記憶させておく。
【０１０６】
［ピクセル］単位のディスプレイ対角長Ｄｐは以下の式（１）によって求めることができる。
Ｄｐ＝√（Ｘｐ＾２＋Ｙｐ＾２）・・・式（１）
【０１０７】
［ｍｍ］単位のディスプレイ対角長は以下の式（２）によって求めることができる。
Ｄｍ＝Ｄｉ＊２．５４・・・式（２）
【０１０８】
［ｍｍ］単位のディスプレイ水平長は以下式（３）によって求めることができる。
Ｘｍ＝Ｘｐ＊Ｄ／Ｄｐ・・・式（３）
【０１０９】
［ｍｍ］単位のディスプレイ垂直長は以下式（４）によって求めることができる。
Ｙｍ＝Ｙｐ＊Ｄ／Ｄｐ・・・式（４）
【０１１０】
つぎに、ディスプレイ６０８上の各視野における視野幅について説明する。弁別視野の視野幅はＸ０ａ［ｍｍ］とＹ０ａ［ｍｍ］である。クライアント端末装置１０２は、視野幅Ｘ０ａを式（５）によって求め、視野幅Ｙ０ａを式（６）によって求める。Ｗ０ｈとＷ０ｖの標準値は、図１５に示すように、５．０度である。
Ｘ０ａ［ｍｍ］＝ｔａｎ（ＲＡＤ（Ｗ０ｈ／２））＊Ｌｍ＊２・・・式（５）
Ｙ０ａ［ｍｍ］＝ｔａｎ（ＲＡＤ（Ｗ０ｖ／２））＊Ｌｍ＊２・・・式（６）
【０１１１】
有効視野の視野幅はＸ１ａ［ｍｍ］とＹ１ａ［ｍｍ］である。クライアント端末装置１０２は、視野幅Ｘ１ａを式（７）によって求め、視野幅Ｙ１ａを式（８）によって求める。Ｗ１ｈとＷ１ｖの標準値は、図１５に示すように、それぞれ３０．０度と２０．０度である。
Ｘ１ａ［ｍｍ］＝ｔａｎ（ＲＡＤ（Ｗ１ｈ／２））＊Ｌｍ＊２・・・式（７）
Ｙ１ａ［ｍｍ］＝ｔａｎ（ＲＡＤ（Ｗ１ｖ／２））＊Ｌｍ＊２・・・式（８）
【０１１２】
安定注視野の視野幅はＸ２ａ［ｍｍ］とＹ２ａ［ｍｍ］である。クライアント端末装置１０２は、視野幅Ｘ２ａを式（９）によって求め、視野幅Ｙ２ａを式（１０）によって求める。Ｗ２ｈとＷ２ｖの標準値は、図１５に示すように、それぞれ６０．０度と４５．０度である。
Ｘ２ａ［ｍｍ］＝ｔａｎ（ＲＡＤ（Ｗ２ｈ／２））＊Ｌｍ＊２・・・式（９）
Ｙ２ａ［ｍｍ］＝ｔａｎ（ＲＡＤ（Ｗ２ｖ／２））＊Ｌｍ＊２・・・式（１０）
【０１１３】
図８に示す補正部８０４は、算出部８０３によって算出された位置情報がディスプレイ６０８の画面上の視野範囲に含まれるか否かを判定する。具体的に、補正部８０４は、例えば、現在の時刻の画面上の視点と、視野幅とに基づいて、視野幅に基づく画面上の視野範囲を特定する。そして、補正部８０４は、特定した視野範囲内に、算出部８０３によって算出された位置情報が含まれるか否かを判定する。ここで用いる視野幅は、弁別視野の視野幅、有効視野の視野幅、安定注視野の視野幅のいずれかを利用者によって選択させてもよい。
【０１１４】
図１８は、視野範囲例を示す説明図である。補正部８０４は、例えば、視点から視野幅に基づいて楕円の領域を視野範囲として特定してもよい。これにより、人間の視野範囲を精度よく再現できる。また、補正部８０４は、例えば、視点から視野幅に基づいて視野始点（Ｘｎｓ，Ｙｎｓ）と視野終点（Ｘｎｅ，Ｙｎｅ）とに囲われた四角の領域を視野範囲として特定してもよい。これにより、計算時間の短縮を図ることができる。
【０１１５】
補正部８０４は、例えば、視野範囲の視野始点および視野終点を以下の通り特定する。例えば、弁別視野の場合、視野始点（Ｘ０ｓ，Ｙ０ｓ）〜視野終点（Ｘ０ｅ，Ｙ０ｅ）によって特定される四角の領域が視野範囲である。補正部８０４は、例えば、以下式（１１）によって視野始点Ｘ０ｓを求め、式（１２）によって視野終点Ｘ０ｅを求める。また、補正部８０４は、例えば、弁別視野の場合、以下式（１３）によって視野始点Ｙ０ｓを求め、式（１４）によって視野終点Ｙ０ｅを求める。視野始点Ｘ０ｓと視野始点Ｙ０ｓと視野終点Ｘ０ｅと視野終点Ｙ０ｅとの単位は［ピクセル］である。
【０１１６】
Ｘ０ｓ＝Ｍｉｎ（１，Ｘｃ−（Ｘｐ／Ｘｍ＊Ｘ０ａ）／２）・・・式（１１）
Ｘ０ｅ＝Ｍａｘ（Ｘｐ，Ｘｃ−（Ｘｐ／Ｘｍ＊Ｘ０ａ）／２）・・・式（１２）
Ｙ０ｓ＝Ｍｉｎ（１，Ｙｃ−（Ｙｐ／Ｙｍ＊Ｙ０ａ）／２）・・・式（１３）
Ｙ０ｅ＝Ｍａｘ（Ｙｐ，Ｙｃ−（Ｙｐ／Ｙｍ＊Ｙ０ａ）／２）・・・式（１４）
【０１１７】
また、例えば、有効視野の場合、視野始点（Ｘ１ｓ，Ｙ１ｓ）〜視野終点（Ｘ１ｅ，Ｙ１ｅ）によって特定される四角の領域が視野範囲である。補正部８０４は、例えば、有効視野の場合、以下式（１５）によって視野始点Ｘ１ｓを求め、式（１６）によって視野終点Ｘ１ｅを求める。また、補正部８０４は、例えば、有効視野の場合、以下式（１７）によって視野始点Ｙ１ｓを求め、式（１８）によって視野終点Ｙ１ｅを求める。視野始点Ｘ１ｓと視野始点Ｙ１ｓと視野終点Ｘ１ｅと視野終点Ｙ１ｅとの単位は［ピクセル］である。
【０１１８】
Ｘ１ｓ＝Ｍｉｎ（１，Ｘｃ−（Ｘｐ／Ｘｍ＊Ｘ１ａ）／２）・・・式（１５）
Ｘ１ｅ＝Ｍａｘ（Ｘｐ，Ｘｃ−（Ｘｐ／Ｘｍ＊Ｘ１ａ）／２）・・・式（１６）
Ｙ１ｓ＝Ｍｉｎ（１，Ｙｃ−（Ｙｐ／Ｙｍ＊Ｙ１ａ）／２）・・・式（１７）
Ｙ１ｅ＝Ｍａｘ（Ｙｐ，Ｙｃ−（Ｙｐ／Ｙｍ＊Ｙ１ａ）／２）・・・式（１８）
【０１１９】
また、例えば、安定注視野の場合、視野始点（Ｘ２ｓ，Ｙ２ｓ）〜視野終点（Ｘ２ｅ，Ｙ２ｅ）によって特定される四角の領域が視野範囲である。補正部８０４は、例えば、安定注視野の場合、以下式（１９）によって視野始点Ｘ２ｓを求め、式（２０）によって視野終点Ｘ２ｅを求める。また、補正部８０４は、例えば、安定注視野の場合、以下式（２１）によって視野始点Ｙ２ｓを求め、式（２２）によって視野終点Ｙ２ｅを求める。視野始点Ｘ２ｓと視野始点Ｙ２ｓと視野終点Ｘ２ｅと視野終点Ｙ２ｅとの単位は［ピクセル］である。
【０１２０】
Ｘ２ｓ＝Ｍｉｎ（１，Ｘｃ−（Ｘｐ／Ｘｍ＊Ｘ２ａ）／２）・・・式（１９）
Ｘ２ｅ＝Ｍａｘ（Ｘｐ，Ｘｃ−（Ｘｐ／Ｘｍ＊Ｘ２ａ）／２）・・・式（２０）
Ｙ２ｓ＝Ｍｉｎ（１，Ｙｃ−（Ｙｐ／Ｙｍ＊Ｙ２ａ）／２）・・・式（２１）
Ｙ２ｅ＝Ｍａｘ（Ｙｐ，Ｙｃ−（Ｙｐ／Ｙｍ＊Ｙ２ａ）／２）・・・式（２２）
【０１２１】
図８に示す補正部８０４は、例えば、算出部８０３によって算出された位置情報が、特定した視野範囲に含まれるか否かを判定する。補正部８０４は、例えば、視野範囲に含まれると判定した場合、算出されたマウス位置の位置情報を補正しない。一方、補正部８０４は、例えば、視野範囲に含まれないと判定した場合、算出されたマウス位置情報を視野範囲に含まれる位置の位置情報に補正する。
【０１２２】
図１９は、補正例１を示す説明図である。図１９の例では、弁別視野に対応する視野範囲が、視野始点（Ｘ０ｓ，Ｙ０ｓ）〜視野終点（Ｘ０ｅ，Ｙ０ｅ）に囲われた四角の領域である。補正部８０４は、例えば、算出された位置情報が、特定した視野範囲に含まれないと判定する。
【０１２３】
このため、補正部８０４は、例えば、現在の時刻におけるマウス位置情報が示すマウス位置と、算出したマウス位置情報が示すマウス位置とを結ぶ直線と、視野範囲の外形と、の交点を特定する。そして、補正部８０４は、特定した交点を現在の時刻から時間Ｔ（ｔ１＋ｔ２）経過後の時刻におけるマウス位置としてマウス位置情報を補正する。
【０１２４】
図２０は、補正例２を示す説明図である。図２０の例では、弁別視野に対応する視野範囲が楕円の領域である。補正部８０４は、例えば、視野範囲に算出したマウス位置が含まれないと判定する。このため、補正部８０４は、例えば、現在の時刻におけるマウス位置情報が示すマウス位置と、算出したマウス位置情報が示すマウス位置とを結ぶ直線と、視野範囲の外形線と、の交点を特定する。そして、補正部８０４は、特定した交点を現在の時刻から時間Ｔ（ｔ１＋ｔ２）経過後の時刻におけるマウス位置としてマウス位置情報を補正する。
【０１２５】
（クライアント端末装置１０２が行う処理手順例）
図２１は、クライアント端末装置による操作情報の送信処理手順例を示すフローチャートである。クライアント端末装置１０２は、マウス操作を開始したか否かを判定する（ステップＳ２１０１）。マウス操作を開始していないと判定された場合（ステップＳ２１０１：Ｎｏ）、クライアント端末装置１０２は、ステップＳ２１０１へ戻る。マウス操作を開始したと判定された場合（ステップＳ２１０１：Ｙｅｓ）、クライアント端末装置１０２は、現在のマウス位置情報を受け付ける（ステップＳ２１０２）。クライアント端末装置１０２は、マウス位置情報と時刻とを関連付けて記憶する（ステップＳ２１０３）。
【０１２６】
クライアント端末装置１０２は、時間Δｔ経過したか否かを判定する（ステップＳ２１０４）。時間Δｔ経過したと判定された場合（ステップＳ２１０４：Ｙｅｓ）、クライアント端末装置１０２は、現在のマウス位置情報を受け付ける（ステップＳ２１０５）。そして、クライアント端末装置１０２は、マウス位置情報と時刻とを関連付けて記憶し（ステップＳ２１０６）、ステップＳ２１０７へ移行する。
【０１２７】
時間Δｔ経過していないと判定された場合（ステップＳ２１０４：Ｎｏ）、クライアント端末装置１０２は、マウス操作終了したか否かを判定する（ステップＳ２１０７）。マウス操作終了していないと判定された場合（ステップＳ２１０７：Ｎｏ）、クライアント端末装置１０２は、送信間隔Δｔｓｄ経過したか否かを判定する（ステップＳ２１０８）。本フローチャートの例では、送信間隔Δｔｓｄは所定時間Δｔの倍数とする。
【０１２８】
送信間隔Δｔｓｄ経過していないと判定された場合（ステップＳ２１０８：Ｎｏ）、クライアント端末装置１０２は、ステップＳ２１０４へ戻る。送信間隔Δｔｓｄ経過したと判定された場合（ステップＳ２１０８：Ｙｅｓ）、クライアント端末装置１０２は、現在の時刻を含む指定回数分のマウス位置情報に基づき速度および加速度を算出する（ステップＳ２１０９）。
【０１２９】
クライアント端末装置１０２は、マウス操作による移動方向を特定する（ステップＳ２１１０）。クライアント端末装置１０２は、マウス操作によりマウスポインタが同一方向に基準値を超える速度で移動したか否かを判断する（ステップＳ２１１１）。マウスポインタが同一方向に基準値を超える速度で移動したと判断された場合（ステップＳ２１１１：Ｙｅｓ）、クライアント端末装置１０２は、マウス位置算出処理を行う（ステップＳ２１１２）。
【０１３０】
つぎに、クライアント端末装置１０２は、時間（ｔ１＋ｔ２）経過後のマウス位置情報を含むパケットを生成して送信し（ステップＳ２１１３）、ステップＳ２１０４へ移行する。
【０１３１】
ステップＳ２１１１において、マウスポインタが同一方向に基準値を超える速度で移動していないと判断された場合（ステップＳ２１１１：Ｎｏ）、現在の時刻のマウス位置情報を含むパケットを生成して送信し（ステップＳ２１１４）、ステップＳ２１０４へ移行する。
【０１３２】
ステップＳ２１０７において、マウス操作終了したと判定された場合（ステップＳ２１０７：Ｙｅｓ）、クライアント端末装置１０２は、一連の処理を終了する。
【０１３３】
図２２は、図２１に示す算出処理手順例を示すフローチャートである。クライアント端末装置１０２は、マウス移動の軌跡が円弧線か直線かを判定する（ステップＳ２２０１）。円弧線であると判定された場合（ステップＳ２２０１：円弧線）、クライアント端末装置１０２は、円弧線分上における時間（ｔ１＋ｔ２）経過後のマウス位置情報を算出する（ステップＳ２２０２）。一方、直線であると判定された場合（ステップＳ２２０１：直線）、クライアント端末装置１０２は、直線上における時間（ｔ１＋ｔ２）後のマウス位置情報を算出する（ステップＳ２２０３）。
【０１３４】
つぎに、クライアント端末装置１０２は、補正するか否かを判定する（ステップＳ２２０４）。補正するか否かは、利用者によって選択可能である。補正すると判定された場合（ステップＳ２２０４：Ｙｅｓ）、クライアント端末装置１０２は、現在のマウス位置を始点として視野範囲を特定する（ステップＳ２２０５）。そして、クライアント端末装置１０２は、算出した位置情報が視野範囲に含まれるように補正する（ステップＳ２２０６）。クライアント端末装置１０２は、補正後の位置情報を出力し（ステップＳ２２０７）、一連の処理を終了する。
【０１３５】
補正しないと判定された場合（ステップＳ２２０４：Ｎｏ）、クライアント端末装置１０２は、算出した位置情報を出力し（ステップＳ２２０８）、一連の処理を終了する。
【０１３６】
図２３は、クライアント端末装置による表示処理手順例を示すフローチャートである。クライアント端末装置１０２は、圧縮情報を含むパケットを受信する（ステップＳ２３０１）。そして、クライアント端末装置１０２は、伸長して画像を生成する（ステップＳ２３０２）。つぎに、クライアント端末装置１０２は、生成した画像をディスプレイ６０８に表示し（ステップＳ２３０３）、一連の処理を終了する。
【０１３７】
また、図示省略するが、クライアント端末装置１０２は、マウス操作情報以外にもキーボードの操作情報などをサーバ１０１へ送信する。また、図示省略するが、クライアント端末装置１０２は、マウス操作やキーボード操作が発生しないときに、ｐｉｎｇコマンドを発行してＲＴＴを得る。そして、クライアント端末装置は、時間Ｔ（ｔ１＋ｔ２）を更新する。
【０１３８】
（サーバ１０１が行う処理手順例）
図２４は、サーバによるパケット受信処理手順例を示すフローチャートである。サーバ１０１は、パケットを受信する（ステップＳ２４０１）。つぎに、サーバ１０１は、受信したパケットに含まれるマウス操作情報またはＫＢ操作情報をＯＳに送付し（ステップＳ２４０２）、一連の処理を終了する。ＫＢ操作情報は、キーボード６０７の操作情報である。
【０１３９】
図２５は、サーバによる送信処理手順例を示すフローチャートである。サーバ１０１は、所定時間経過したか否かを判断する（ステップＳ２５０１）。ここでの所定時間は、パケットを監視する時間である。所定時間経過していないと判断された場合（ステップＳ２５０１：Ｎｏ）、サーバ１０１は、ステップＳ２５０１へ戻る。つぎに、所定時間経過したと判断された場合（ステップＳ２５０１：Ｙｅｓ）、サーバ１０１は、画面キャプチャを行い（ステップＳ２５０２）。ここでのキャプチャとは表示用の信号を画像の情報として記録することである。
【０１４０】
サーバ１０１は、現在キャプチャした画面と前回キャプチャした画面との差分を抽出する（ステップＳ２５０３）。つぎに、サーバ１０１は、差分に基づいて動画と静止画とを分離する（ステップＳ２５０４）。そして、サーバ１０１は、動画および静止画を圧縮した圧縮情報を生成する（ステップＳ２５０５）。サーバ１０１は、圧縮情報を送信し（ステップＳ２５０６）、一連の処理を終了する。サーバ１０１は、具体的には、圧縮情報を含むパケット情報を送信する。
【０１４１】
以上説明したように、クライアント端末装置１０２は、画面上でマウス移動が同一方向に閾値を超える速度である場合、通信遅延後のマウス位置を予測してサーバへ送信する。これにより、クライアント端末装置１０２は、通信時間経過後の時刻に予測したマウス位置に応じた画面の画像を表示できる。したがって、通信遅延を気にすることなく、利用者の操作感の向上を図ることができる。また、簡単かつ精度よく予測可能な場合に、通信時間経過後の時刻におけるマウス位置を予測する。これにより、計算時間による遅延を発生させることなく、予測外れの回避を図ることができる。
【０１４２】
また、クライアント端末装置１０２は、画面上のマウス移動の軌跡が直線である場合に、直線の移動方向の延長線から通信時間経過後の時刻におけるマウス位置情報を算出する。一方、クライアント端末装置１０２は、画面上のマウス移動の軌跡が円弧線である場合に、円弧線の移動方向の延長線から通信時間経過後の時刻におけるマウス位置情報を算出する。
【０１４３】
また、クライアント端末装置１０２は、算出した位置情報が表す位置が、現在の時刻における位置情報と特定の視野に応じた視野幅とに基づく画面上の視野範囲に含まれない場合、位置情報が表す位置を特定した視野範囲に含まれる位置となるように補正する。また、特定の視野は、弁別視野または有効視野である。これにより、クライアント端末装置１０２の利用者の視野から外れるような位置にオブジェクトを移動させることを抑制できる。
【０１４４】
また、視野幅は、クライアント端末装置１０２が有する表示装置のサイズに基づく値である。
【０１４５】
また、記憶部に位置情報を記憶させる時間間隔は、操作情報をサーバへ送信する時間間隔よりも短い。短時間でのマウス移動によって未来のマウス位置を予測でき、位置情報の算出精度の向上を図ることができる。また、記憶部に位置情報を記憶させる時間間隔が、操作情報をサーバへ送信する時間間隔以下の場合、サーバが未来のマウス位置を予測するような構成としてもよい。この際、クライアント端末装置１０２は、単に現在時刻におけるマウスの位置情報を送信し、サーバが、受信した位置情報をサーバが有する記憶部に時系列に格納する。そして、サーバが、受信した位置情報に基づいて未来のマウス位置を予測してもよい。
【０１４６】
また、クライアント端末装置１０２は、特定の時刻から現在の時刻までの速度を算出し、算出した速度に基づいて、現在の時刻から通信時間を含む第１時間経過した後の時刻における図形の位置情報を算出する。これにより、位置情報を簡単な演算によって容易に算出することができ、算出時間の短縮を図ることができる。
【０１４７】
また、クライアント端末装置１０２は、特定の時刻から現在の時刻までの加速度を算出し、算出した加速度に基づいて、現在の時刻から通信時間を含む第１時間経過した後の時刻における図形の位置情報を算出する。これにより、位置情報を簡単な演算によって容易に算出することができ、算出時間の短縮を図ることができる。
【０１４８】
なお、本実施の形態で説明した仮想デスクトップ処理方法は、予め用意された仮想デスクトップ処理プログラムをパーソナル・コンピュータやワークステーション等のコンピュータで実行することにより実現することができる。本仮想デスクトップ処理プログラムは、磁気ディスク、光ディスク、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）フラッシュメモリなどのコンピュータで読み取り可能な記録媒体に記録され、コンピュータによって記録媒体から読み出されることによって実行される。また、仮想デスクトップ処理プログラムは、インターネット等のネットワークを介して配布してもよい。
【０１４９】
上述した実施の形態に関し、さらに以下の付記を開示する。
【０１５０】
（付記１）サーバにアプリケーションプログラムを実行させるクライアント端末装置に、
前記クライアント端末装置が有する入力装置に対する操作によって得られる、前記サーバと前記クライアント端末装置との間で共有する画面上の前記操作の対象を表す図形の位置情報を時系列に記憶部に記憶させ、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、前記操作によって前記図形を前記画面上で同一の方向に閾値を超える速度で移動させたか否かを判定し、
前記図形を同一の方向に前記閾値を超える速度で移動させたと判定した場合、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記現在の時刻から、前記クライアント端末装置と前記サーバとの間の通信に要する通信時間を含む第１時間を経過した後の時刻における前記図形の位置情報を算出し、
算出した前記位置情報を含む操作情報を、前記サーバへ送信し、
送信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を前記サーバから受信し、
受信した前記画像情報に含まれる画像を表示する、
処理を実行させることを特徴とする仮想デスクトッププログラム。
【０１５１】
（付記２）前記位置情報を算出する処理では、
前記特定の時刻から前記現在の時刻までの前記位置情報が示す位置を結ぶ線が円弧線である場合、前記現在の時刻から前記第１時間経過した後の時刻における、前記円弧線の前記方向の延長線上にある前記図形の位置情報を算出し、
前記特定の時刻から前記現在の時刻までの位置情報が示す位置を結ぶ線が直線である場合、前記現在の時刻から前記通信時間経過した後の時刻における、前記直線の前記方向の延長線上にある前記図形の位置情報を算出する、
ことを特徴とする付記１に記載の仮想デスクトッププログラム。
【０１５２】
（付記３）前記クライアント端末装置に、
前記現在の時刻における前記位置情報と、特定の視野に応じた視野幅と、に基づく、前記画面上の視野範囲を特定し、
算出した前記位置情報が表す位置が、特定した前記視野範囲に含まれない場合、算出した前記位置情報が表す位置を、特定した前記視野範囲に含まれる位置となるように補正する、
処理を実行させ、
前記サーバへ送信する処理では、
補正した前記位置情報を送信する、
ことを特徴とする付記１または２に記載の仮想デスクトッププログラム。
【０１５３】
（付記４）前記特定の視野は、弁別視野または有効視野であることを特徴とする付記３に記載の仮想デスクトッププログラム。
【０１５４】
（付記５）前記視野幅は、前記クライアント端末装置が有する表示装置のサイズに基づく値であることを特徴とする付記３または４に記載の仮想デスクトッププログラム。
【０１５５】
（付記６）前記記憶部に前記位置情報を記憶させる時間間隔は、前記操作情報を前記サーバへ送信する時間間隔よりも短いことを特徴とする付記１〜５のいずれか一つに記載の仮想デスクトッププログラム。
【０１５６】
（付記７）前記位置情報を算出する処理では、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記特定の時刻から前記現在の時刻までの速度を算出し、
算出した前記速度に基づいて、前記現在の時刻から前記第１時間以上の時間経過した後の時刻における前記図形の位置情報を算出する、
ことを特徴とする付記１〜６のいずれか一つに記載の仮想デスクトッププログラム。
【０１５７】
（付記８）前記位置情報を算出する処理では、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記特定の時刻から前記現在の時刻までの加速度を算出し、
算出した前記加速度に基づいて、前記現在の時刻から前記第１時間経過した後の時刻における前記図形の位置情報を算出する、
ことを特徴とする付記１〜６のいずれか一つに記載の仮想デスクトッププログラム。
【０１５８】
（付記９）サーバにアプリケーションプログラムを実行させるクライアント端末装置が、
前記クライアント端末装置が有する入力装置に対する操作によって得られる、前記サーバと前記クライアント端末装置との間で共有する画面上の前記操作の対象を表す図形の位置情報を時系列に記憶部に記憶させ、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、前記操作によって前記図形を前記画面上で同一の方向に閾値を超える速度で移動させたか否かを判定し、
前記図形を同一の方向に前記閾値を超える速度で移動させたと判定した場合、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記現在の時刻から、前記クライアント端末装置と前記サーバとの間の通信に要する通信時間を含む第１時間を経過した後の時刻における前記図形の位置情報を算出し、
算出した前記位置情報を含む操作情報を、前記サーバへ送信し、
送信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を前記サーバから受信し、
受信した前記画像情報に含まれる画像を表示する、
処理を実行することを特徴とする仮想デスクトップ処理方法。
【０１５９】
（付記１０）サーバと、
前記サーバにアプリケーションプログラムを実行させるクライアント端末装置と、
を有する仮想デスクトップシステムであって、
前記クライアント端末装置が、
前記クライアント端末装置が有する入力装置に対する操作によって得られる、前記サーバと前記クライアント端末装置との間で共有する画面上の前記操作の対象を表す図形の位置情報を時系列に記憶部に記憶させ、
前記記憶部に時系列に記憶された前記位置情報に基づいて、前記位置情報を得た各時刻のうちの特定の時刻から現在の時刻までの間に、前記操作によって前記図形を前記画面上で同一の方向に閾値を超える速度で移動させたか否かを判定し、
前記図形を同一の方向に前記閾値を超える速度で移動させたと判定した場合、前記記憶部に時系列に記憶された前記位置情報に基づいて、前記現在の時刻から、前記クライアント端末装置と前記サーバとの間の通信に要する通信時間を含む第１時間を経過した後の時刻における前記図形の位置情報を算出し、
算出した前記位置情報を含む操作情報を、前記サーバへ送信し、
送信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を前記サーバから受信し、
受信した前記画像情報に含まれる画像を表示する、
処理を実行し、
前記サーバが、
前記クライアント端末装置から前記操作情報を受信し、
受信した前記操作情報に基づく前記アプリケーションプログラムの実行に応じた画面の画像を含む画像情報を生成し、
生成した前記画像情報を前記クライアント端末装置に送信する、
処理を実行することを特徴とする仮想デスクトップシステム。
【符号の説明】
【０１６０】
１００  仮想デスクトップシステム
１０１  サーバ
１０２  クライアント端末装置
１１１  マウス
１１２  記憶部
８０１  受付部
８０２  判定部
８０３  算出部
８０４  補正部
８０５，８１３  送信部
８０６，８１１  受信部
８０７  表示部
８１２  生成部
ｐ１，ｐ２，ｐ３，ｐ４，ｐ５，ｐ６  マウス位置
Ｘ０ａ，Ｙ０ａ，Ｘ１ａ，Ｙ１ａ，Ｘ２ａ，Ｙ２ａ  視野幅
Ｘ０ｓ，Ｙ０ｓ，Ｘ１ｓ，Ｙ１ｓ，Ｘ２ｓ，Ｙ２ｓ  視野始点
Ｘ０ｅ，Ｙ０ｅ，Ｘ１ｅ，Ｙ１ｅ，Ｘ２ｅ，Ｙ２ｅ  視野終点
【図１】
0006515787.tif 000002
【図２】
0006515787.tif 000003
【図３】
0006515787.tif 000004
【図４】
0006515787.tif 000005
【図５】
0006515787.tif 000006
【図６】
0006515787.tif 000007
【図７】
0006515787.tif 000008
【図８】
0006515787.tif 000009
【図９】
0006515787.tif 000010
【図１０】
0006515787.tif 000011
【図１１】
0006515787.tif 000012
【図１２】
0006515787.tif 000013
【図１３】
0006515787.tif 000014
【図１４】
0006515787.tif 000015
【図１５】
0006515787.tif 000016
【図１６】
0006515787.tif 000017
【図１７】
0006515787.tif 000018
【図１８】
0006515787.tif 000019
【図１９】
0006515787.tif 000020
【図２０】
0006515787.tif 000021
【図２１】
0006515787.tif 000022
【図２２】
0006515787.tif 000023
【図２３】
0006515787.tif 000024
【図２４】
0006515787.tif 000025
【図２５】
0006515787.tif 000026