(57)【要約】【課題】リモートデスクトップのサーバ側とクライアント側との画像の不整合を抑制しつつスクロール操作の遅延を改善すること。【解決手段】情報処理装置から最後に受信された画像と一つ前に受信された画像とを比較して、スクロールバーに対する操作を検出し、最後に受信された画像においてスクロールバーに対応する領域の画像を記憶部に記憶し、表示対象とされた画像に含まれるスクロールバーに対する操作を、指示位置の動きに基づいて検出し、指示位置の移動量に基づいて、表示対象とされた画像における前記領域内の画像の移動量を算出し、記憶部に記憶されている画像のうち、表示対象とされた画像における領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を取得して、前記領域内の画像を置き換え、スクロールバーに対する操作も、サーバに通知し、該通知に応じて受信される画像によって、表示対象を置き換える。【選択図】図８
2016110335.tif 000002
【特許請求の範囲】
【請求項１】
表示対象の画像に対する操作をネットワークを介して接続される情報処理装置に通知する通知部と、
前記操作の通知に応じて前記情報処理装置から送信される画像を受信する受信部と、
前記受信部によって画像が受信されるたびに、最後に受信された画像と当該画像の一つ前に前記受信部によって受信された画像とを比較して、比較された二つの画像に含まれるスクロールバーに対する操作を検出する第一の検出部と、
前記第一の検出部によって前記スクロールバーに対する操作が検出された場合に、前記最後に受信された画像において前記スクロールバーに対応する領域の画像を記憶部に記憶する記憶処理部と、
前記表示対象を前記最後に受信された画像に置き換える表示制御部と、
前記表示制御部によって表示対象とされた画像に含まれる前記スクロールバーに対する操作を、指示位置の動きに基づいて検出する第二の検出部と、
前記指示位置の移動量に基づいて、前記表示対象とされた画像における前記領域内の画像の移動量を算出する第一の算出部と、
前記記憶部に記憶されている画像のうち、前記表示対象とされた画像における前記領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を、前記記憶部から取得する取得部と、
前記取得部によって取得された画像によって、前記表示対象とされた画像における前記領域内の画像を置き換える置換部と、を有し、
前記通知部は、前記スクロールバーに対する操作についても、前記情報処理装置に通知し、
前記表示制御部は、前記スクロールバーに対する操作の通知に応じて前記受信部が受信する画像によって、前記表示対象を置き換える、
ことを特徴とする画像表示装置。
【請求項２】
前記最後に受信された画像と前記一つ前に受信された画像との比較に基づいて、前記スクロールバーに関する第一のスクロール位置を算出する第二の算出部を有し、
前記第一の算出部は、前記指示位置の移動量に基づいて、前記スクロールバーに関する第二のスクロール位置を算出し、
前記表示制御部は、前記一つ前に受信された画像に関して算出された前記第二のスクロール位置と、前記第一のスクロール位置とが一致する場合に、前記表示対象を、前記最後に受信された画像に置き換える、
ことを特徴とする請求項１記載の画像表示装置。
【請求項３】
前記記憶処理部は、前記記憶部に記憶する各画像のそれぞれについて、相互に当該画像を記憶する際に算出された前記第一のスクロール位置に基づくずれを有するように前記各画像を重ね合わせる、
ことを特徴とする請求項２記載の画像表示装置。
【請求項４】
コンピュータが、
表示対象の画像に対する操作をネットワークを介して接続される情報処理装置に通知し、
前記操作の通知に応じて前記情報処理装置から送信される画像を受信し、
画像が受信されるたびに、最後に受信された画像と当該画像の一つ前に受信された画像とを比較して、比較された二つの画像に含まれるスクロールバーに対する操作を検出し、
前記スクロールバーに対する操作が検出された場合に、前記最後に受信された画像において前記スクロールバーに対応する領域の画像を記憶部に記憶し、
前記表示対象を前記最後に受信された画像に置き換え、
前記表示対象とされた画像に含まれる前記スクロールバーに対する操作を、指示位置の動きに基づいて検出し、
前記指示位置の移動量に基づいて、前記表示対象とされた画像における前記領域内の画像の移動量を算出し、
前記記憶部に記憶されている画像のうち、前記表示対象とされた画像における前記領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を、前記記憶部から取得し、
取得された画像によって、前記表示対象とされた画像における前記領域内の画像を置き換える処理を実行し、
前記通知する処理は、前記スクロールバーに対する操作についても、前記情報処理装置に通知し、
前記表示対象を置き換える処理は、前記スクロールバーに対する操作の通知に応じて受信される画像によって、前記表示対象を置き換える、
ことを特徴とする画像表示方法。
【請求項５】
コンピュータに、
表示対象の画像に対する操作をネットワークを介して接続される情報処理装置に通知し、
前記操作の通知に応じて前記情報処理装置から送信される画像を受信し、
画像が受信されるたびに、最後に受信された画像と当該画像の一つ前に受信された画像とを比較して、比較された二つの画像に含まれるスクロールバーに対する操作を検出し、
前記スクロールバーに対する操作が検出された場合に、前記最後に受信された画像において前記スクロールバーに対応する領域の画像を記憶部に記憶し、
前記表示対象を前記最後に受信された画像に置き換え、
前記表示対象とされた画像に含まれる前記スクロールバーに対する操作を、指示位置の動きに基づいて検出し、
前記指示位置の移動量に基づいて、前記表示対象とされた画像における前記領域内の画像の移動量を算出し、
前記記憶部に記憶されている画像のうち、前記表示対象とされた画像における前記領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を、前記記憶部から取得し、
取得された画像によって、前記表示対象とされた画像における前記領域内の画像を置き換える処理を実行させ、
前記通知する処理は、前記スクロールバーに対する操作についても、前記情報処理装置に通知し、
前記表示対象を置き換える処理は、前記スクロールバーに対する操作の通知に応じて受信される画像によって、前記表示対象を置き換える、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像表示装置、画像表示方法、及びプログラムに関する。
【背景技術】
【０００２】
リモートデスクトップは、ユーザが直接操作するクライアントにネットワークを介して接続された他のコンピュータ（以下、「サーバ」という。）において生成されるＧＵＩ（Graphical User Interface）を、当該クライアントにおいて操作可能とする技術である。クライアントにおける操作はサーバに通知され、サーバが、当該操作に応じた処理を実行する。当該処理によってＧＵＩが変化すると、変化後のＧＵＩを示す画像が、サーバからクライアントに送信される。
【０００３】
このように、リモートデスクトップでは、クライアントにおける入力結果がＧＵＩに反映されるまでの間に、クライアント及びサーバ間を往復する通信が必要とされる。したがって、リモートデスクトップは、クライアント側でアプリケーションを動作させる場合に比べて、ユーザの操作に応じたＧＵＩの変化に関して、レイテンシが大きくなるという問題がある。スクロール等、連続的なマウス操作に応じて逐次ＧＵＩが変化する処理においては、特にレイテンシの影響が顕著となる。
【０００４】
そこで、デスクトップ画像のうち、一度表示した部分をクライアント側のバッファにキャッシュしておき、スクロール操作によって当該部分が再表示される場合は、キャッシュされている画像を利用することが検討されている（例えば、特許文献１参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４１７３６号公報
【特許文献２】特表２０１１−５２０２０９号公報
【特許文献３】特表２０１０−５３１４８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、一度表示した部分がキャッシュされてから、スクロールが行われて当該部分が再び表示対象に含まれるまでの間に、当該部分の表示内容に変化が発生する可能性の有るコンテンツに関しては、キャッシュされている画像と、本来表示されるべき画像（サーバ側の画像）との間に不整合が発生する可能性が有る。
【０００７】
そこで、一側面では、リモートデスクトップのサーバ側とクライアント側との画像の不整合を抑制しつつスクロール操作の遅延を改善することを目的とする。
【課題を解決するための手段】
【０００８】
一つの案では、画像表示装置は、表示対象の画像に対する操作をネットワークを介して接続される情報処理装置に通知する通知部と、前記操作の通知に応じて前記情報処理装置から送信される画像を受信する受信部と、前記受信部によって画像が受信されるたびに、最後に受信された画像と当該画像の一つ前に前記受信部によって受信された画像とを比較して、比較された二つの画像に含まれるスクロールバーに対する操作を検出する第一の検出部と、前記第一の検出部によって前記スクロールバーに対する操作が検出された場合に、前記最後に受信された画像において前記スクロールバーに対応する領域の画像を記憶部に記憶する記憶処理部と、前記表示対象を前記最後に受信された画像に置き換える表示制御部と、前記表示制御部によって表示対象とされた画像に含まれる前記スクロールバーに対する操作を、指示位置の動きに基づいて検出する第二の検出部と、前記指示位置の移動量に基づいて、前記表示対象とされた画像における前記領域内の画像の移動量を算出する第一の算出部と、前記記憶部に記憶されている画像のうち、前記表示対象とされた画像における前記領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を、前記記憶部から取得する取得部と、前記取得部によって取得された画像によって、前記表示対象とされた画像における前記領域内の画像を置き換える置換部と、を有し、前記通知部は、前記スクロールバーに対する操作についても、前記情報処理装置に通知し、前記表示制御部は、前記スクロールバーに対する操作の通知に応じて前記受信部が受信する画像によって、前記表示対象を置き換える。
【発明の効果】
【０００９】
一側面によれば、リモートデスクトップのサーバ側とクライアント側との画像の不整合を抑制しつつスクロール操作の遅延を改善することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施の形態におけるリモートデスクトップシステムの構成例を示す図である。
【図２】本発明の実施の形態におけるクライアント装置のハードウェア構成例を示す図である。
【図３】本発明の実施の形態におけるリモートデスクトップシステムのソフトウェア構成例を示す図である。
【図４】本発明の実施の形態の概要を説明するための図である。
【図５】本発明の実施の形態の概要を説明するための図である。
【図６】本発明の実施の形態の概要を説明するための図である。
【図７】本発明の実施の形態の概要を説明するための図である。
【図８】本発明の実施の形態におけるクライアント装置の機能構成例を示す図である。
【図９】フレーム受信処理部が実行する処理手順の一例を説明するためのフローチャートである。
【図１０】スクロールバーの操作状態の判定処理の処理手順の一例を説明するためのフローチャートである。
【図１１】パラメータ記憶部の構成例を示す図である。
【図１２】スクロール属性の算出処理の処理手順の一例を説明するためのフローチャートである。
【図１３】受信フレームの表示処理の処理手順の一例を説明するためのフローチャートである。
【図１４】スクロールバッファの更新処理の処理手順の一例を説明するためのフローチャートである。
【図１５】カーソル移動処理部が実行する処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１１】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態におけるリモートデスクトップシステムの構成例を示す図である。図１において、サーバ装置２０とクライアント装置１０とは、ＬＡＮ（Local Area Network）又はインターネット等のネットワークを介して相互に通信可能に接続される。
【００１２】
クライアント装置１０は、リモートデスクトップシステムにおけるクライアント側のコンピュータである。すなわち、クライアント装置１０には、サーバ装置２０において描画されたデスクトップ画像が表示される。クライアント装置１０は、当該デスクトップ画像に対する操作（イベント）を、サーバ装置２０に通知する。クライアント装置１０は、当該イベントに応じてサーバ装置２０から返信されるデスクトップ画像によって、表示内容を更新する。なお、例えば、ＰＣ（Personal Computer）、スマートフォン、又はタブレット端末等が、クライアント装置１０として利用されてもよい。
【００１３】
サーバ装置２０は、リモートデスクトップシステムにおけるサーバ側のコンピュータである。すなわち、サーバ装置２０には、各種のアプリケーション２４０が実装されており、当該アプリケーション２４０に関する処理は、サーバ装置２０において実行される。また、サーバ装置２０は、各種のアプリケーション２４０のＧＵＩ（Graphical User Interface）を含むデスクトップ画像を描画する。サーバ装置２０は、クライアント装置１０からイベントを受信すると、当該イベントに応じた処理を実行する。サーバ装置２０は、当該処理の実行により更新されたデスクトップ画像を、クライアント装置１０に返信する。なお、サーバ装置２０において、デスクトップ画像は、表示装置に表示されなくてもよい。
【００１４】
図２は、本発明の実施の形態におけるクライアント装置のハードウェア構成例を示す図である。図２のクライアント装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００１５】
クライアント装置１０での処理を実現するプログラムは、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１６】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってクライアント装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等であり、様々な操作指示を入力させるために用いられる。
【００１７】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００１８】
図３は、本発明の実施の形態におけるリモートデスクトップシステムのソフトウェア構成例を示す図である。
【００１９】
図３に示されるように、クライアント装置１０には、ＯＳ１２０及びリモートデスクトップクライアント１３０等のプログラムがインストールされている。ＯＳ１２０は、汎用的なＯＳ（Operating System）である。リモートデスクトップクライアント１３０は、例えば、ＶＮＣ（Virtual Network Computing）のクライアント側のプログラムである。なお、ＯＳ以外に、リモートデスクトップクライアント１３０が利用する下位のプログラムが、クライアント装置１０にインストールされてもよい。
【００２０】
サーバ装置２０には、ＯＳ２２０、リモートデスクトップサーバ２３０、及びアプリケーション２４０等がインストールされている。ＯＳ２２０は、汎用的なＯＳである。リモートデスクトップサーバ２３０は、例えば、ＶＮＣのサーバ側のプログラムである。アプリケーション２４０は、各種のアプリケーション２４０プログラムである。なお、ＯＳ以外に、リモートデスクトップサーバ２３０又はアプリケーション２４０が利用する下位のプログラムが、サーバ装置２０にインストールされてもよい。
【００２１】
本実施の形態におけるリモートデスクトップシステムが実行する処理概要について説明する。図４〜図７は、本発明の実施の形態の概要を説明するための図である。なお、本実施の形態では、説明の便宜上、垂直スクロールバーが考慮されるが、本実施の形態と同様の原理が、水平スクロールバーに適用されてもよい。
【００２２】
図４において、リモートデスクトップシステムにおけるサーバ装置２０では、６行分の内容を含むコンテンツデータのうち、１行目から３行目までが、或るアプリケーション２４０のウィンドウｗ１の表示対象とされている。この状態において、サーバ装置２０側のフレームバッファに描画されたデスクトップ画像ｄＧ１が、クライアント装置１０に送信されると（Ｓ１１）、クライアント装置１０は、デスクトップ画像ｄＧ１を表示する。クライアント装置１０は、また、所定のタイミングで、ウィンドウｗ１内の画像を、スクロールバッファ１４に記憶（キャッシュ）する（Ｓ１２）。スクロールバッファ１４は、ウィンドウｗ１のスクロール操作を円滑化するために、ウィンドウｗ１内に表示された画像を記憶しておくためのバッファである。
【００２３】
図４の状態において、クライアント装置１０においてウィンドウｗ１が１行分だけ下方にスクロールされると、当該スクロール操作が、クライアント装置１０からサーバ装置２０に通知される。その結果、サーバ装置２０では、２行目から４行目が、ウィンドウｗ１の表示対象となる。図５では、この状態において実行される処理が示されている。ウィンドウｗ１内の表示内容が更新されたデスクトップ画像ｄＧ２が、クライアント装置１０に送信されると（Ｓ２１）、クライアント装置１０は、デスクトップ画像ｄＧ２を表示する。クライアント装置１０は、また、所定のタイミングで、デスクトップ画像ｄＧ２におけるウィンドウｗ１内の画像を、スクロールバッファ１４に書き込む（Ｓ２２）。この際、スクロール分のずれが考慮されて、既に記憶されている画像と新たに書き込まれる画像とが重ね合わされる。すなわち、スクロールバッファ１４に記憶されている画像のうち、２行目以下に係る画像が、デスクトップ画像ｄＣにおけるウィンドウｗ１内の画像によって更新される。その結果、実質的に、４行目に係る画像が、スクロールバッファ１４に追加される。
【００２４】
続いて、図６に示されるように、デスクトップ画像ｄＧ２が表示されている状態において、ウィンドウｗ１が１行分だけ上方にスクロールされると（Ｓ３１）、クライアント装置１０は、スクロールバッファ１４に記憶されている画像のうち、１行目〜３行目に係る画像を利用して、デスクトップ画像ｄＧ２のウィンドウｗ１内の領域を更新する（Ｓ３３）。図６では、当該領域の更新後のデスクトップ画像が、デスクトップ画像ｄＧ３として示されている。
【００２５】
クライアント装置１０は、また、当該スクロール操作を、サーバ装置２０に通知する（Ｓ３４）。その結果、サーバ装置２０においても、ウィンドウｗ１内の表示対象は、１行目から３行目となる。但し、サーバ側において、１行目の表示態様は当初に比べて変化しているとする。その結果、サーバ装置２０におけるフレームバッファの内容は、例えば、デスクトップ画像ｄＧ４に示される通りとなる。デスクトップ画像ｄＧ４において、ウィンドウｗ１の１行目は、斜体によって表現されている。これは、１行目の表示態様が、スクロールバッファ１４に記憶されている状態と異なることを示す。
【００２６】
続いて、サーバ装置２０は、図５と同様に、デスクトップ画像ｄＧ４を、クライアント装置１０に送信する。当該送信は、図７において、ステップＳ４１として示されている。当該送信に応じて、クライアント装置１０は、図５と同様の処理を実行する。すなわち、クライアント装置１０には、デスクトップ画像ｄＧ４が表示される。また、クライアント装置１０は、所定のタイミングで、デスクトップ画像ｄＧ４におけるウィンドウｗ１内の画像を、スクロール分のずれを考慮して、スクロールバッファ１４に書き込む（Ｓ４２）。その結果、図６のステップＳ３４の直後において発生していた、クライアント装置１０側のデスクトップ画像ｄＧ３と、サーバ装置２０側のデスクトップ画像ｄＧ４とのウィンドウｗ１内における表示内容の不整合が解消される。
【００２７】
このように、本実施の形態では、クライアント装置１０に表示されたデスクトップ画像内において、スクロール対象とされた領域の画像は、スクロールバッファ１４に記憶される。スクロール操作が行われた場合、スクロールバッファ１４内に記憶されていう画像に、スクロール先の範囲が含まれていれば、当該範囲に係る画像が用いられて、デスクトップ画像が更新される。したがって、この場合、スクロール操作の通知に対するレスポンスがサーバ装置２０から返信される前に、スクロール操作の操作結果がデスクトップ画像に反映されることになる。
【００２８】
また、クライアント装置１０は、スクロールバッファ１４内に記憶されている画像を用いてデスクトップ画像を更新可能な場合であっても、サーバ装置２０との通信を、通常通り継続する（例えば、ステップＳ３４、Ｓ４１）。すなわち、スクロール操作の通知に応じてサーバ装置から返信される画像によって、クライアント装置１０のデスクトップ画像が更新される（置き換えられる）。その結果、スクロールバッファ１４に記憶されている画像について、サーバ装置２０における表示状態との間に不整合が発生した場合であっても、当該不整合を解消することができる。なお、不整合の解消は、サーバ装置２０からのレスポンスが受信された後に行われるため、一瞬の遅延が見込まれる。しかし、ユーザから見た場合、スクロール操作がスムーズに実行された後に、瞬間的に、一部の表示内容が切り替わるため、スクロール操作自体に遅延が発生する場合に比べて、デスクトップ画像の操作性は向上するものと考えられる。
【００２９】
上記において概説した処理を実現するため、クライアント装置１０は、例えば、図８に示されるような機能構成を有する。
【００３０】
図８は、本発明の実施の形態におけるクライアント装置の機能構成例を示す図である。図８において、クライアント装置１０は、フレーム受信処理部１１及びカーソル移動処理部１２等を有する。これら各部は、リモートデスクトップクライアント１３０及びＯＳ１２０等、クライアント装置１０にインストールされた１以上のプログラムが、ＣＰＵ１０４に実行させる処理により実現される。クライアント装置１０は、また、前フレームバッファ１３、スクロールバッファ１４、及びパラメータ記憶部１５等を利用する。これらバッファ又は記憶部は、メモリ装置１０３又は補助記憶装置１０２等を用いて実現可能である。
【００３１】
フレーム受信処理部１１は、サーバ装置２０から送信されるフレームの受信に応じた処理を実行する。フレームとは、クライアント装置１０からのイベントの通知と当該通知に応じたサーバ装置２０からのデスクトップ画像の返信を１サイクルとした場合に、１サイクル分の返信に含まれているデスクトップ画像をいう。
【００３２】
図８において、フレーム受信処理部１１は、フレーム受信部１１１、スクロール状態検出部１１２、スクロール属性算出部１１３、フレーム表示制御部１１４、及びバッファ更新部１１５等を含む。
【００３３】
フレーム受信部１１１は、サーバ装置２０から返信（送信）されるフレームを受信する。スクロール状態検出部１１２は、各フレームを比較することにより、スクロールバーに関する操作状態を検出する。各フレームとは、例えば、最後に受信されたフレーム（以下、「受信フレーム」という。）と、当該フレームの一つ前に受信されたフレーム（以下、「前フレーム」という。）とである。スクロールバーに関する操作状態とは、例えば、スクロールが開始された、スクロールが継続している、スクロールが行われていない、スクロールが終了した等の状態である。
【００３４】
スクロール属性算出部１１３は、受信フレームと前フレームとを比較して、スクロール量や、スクロール対象とされた領域（ウィンドウ）の画像の移動量等を算出する。スクロール量とは、スクロールバーのノブの移動量である。スクロール属性算出部１１３は、また、スクロール位置をも算出する。スクロール位置とは、スクロール対象の領域の画像について、或る時点の位置を基準位置（例えば、０）とした場合の、相対的なスクロール方向（垂直方向）の位置である。
【００３５】
なお、受信フレームと前フレームとの比較に基づいてスクロール属性算出部１１３によって算出されるスクロール位置を、特に、「レスポンス側スクロール位置」という。本実施の形態において、スクロール位置には、レスポンス側スクロール位置の他に、「リクエスト側スクロール位置」が有る。リクエスト側スクロール位置は、カーソル等のユーザによる指示位置の移動に基づいて算出されるスクロール位置をいう。すなわち、クライアント装置１０でスクロール操作が行われてから、サーバ装置２０でスクロール処理が実行されて、スクロール処理後のフレームがクライアント装置１０に返信されるまで、タイムラグが存在する。したがって、スクロール操作の結果として表示されるべき画像のスクロール位置（リクエスト側スクロール位置）と、その直後に受信されるフレームのスクロール位置（レスポンス側スクロール位置）とは、一時期において、必ずしも一致しない。例えば、スクロール操作が継続されている場合、当該フレームが受信された時には、クライアント装置１０側では、スクロール位置は、既に先に進んでいる可能性が有るからである。したがって、レスポンス側スクロール位置は、リクエスト側スクロール位置を追従する。
【００３６】
フレーム表示制御部１１４は、受信フレームについて表示制御を行う。フレーム表示制御部１１４は、全ての受信フレームを表示するとは限らず、クライアント装置１０におけるスクロール状態が特定の状態である場合には、受信フレームの表示を行わない。
【００３７】
バッファ更新部１１５は、スクロールバッファ１４及び前フレームバッファ１３を更新する。スクロールバッファ１４は、図４〜図７において説明したバッファである。前フレームバッファ１３は、前フレームを記憶しておくためのバッファである。
【００３８】
一方、カーソル移動処理部１２は、カーソルの移動に応じた処理を実行する。図８において、カーソル移動処理部１２は、スクロール検出部１２１、移動量算出部１２２、予測画像取得部１２３、予測画像表示部１２４、及び操作通知部１２５等を含む。なお、本実施の形態では、ユーザによる指示位置をカーソルとして説明するが、例えば、表示装置１０６にタッチパネル等が利用される場合、ユーザの指等の接触位置が指示位置に相当する。
【００３９】
スクロール検出部１２１は、カーソルの動きに基づいてスクロール操作を検出する。移動量算出部１２２は、カーソルの移動量に基づいて、スクロール量及びスクロール対象の画像の移動量を算出すると共に、リクエスト側スクロール位置を更新する。
【００４０】
予測画像取得部１２３は、スクロール検出部１２１によってスクロール操作が検出された場合に、スクロールバッファ１４に記憶されている画像から、スクロール後に表示されるべき範囲に係る画像（以下、「予測画像」という。）を取得する。予測画像表示部１２４は、スクロール対象とされた画像を、予測画像によって置き換える。操作通知部１２５は、スクロール操作をサーバ装置２０に通知する。
【００４１】
なお、パラメータ記憶部１５は、フレーム受信処理部１１及びカーソル移動処理部１２によって使用される各種のパラメータを記憶する。
【００４２】
以下、クライアント装置１０のフレーム受信処理部１１及びカーソル移動処理部１２のそれぞれが実行する処理手順について説明する。図９は、フレーム受信処理部が実行する処理手順の一例を説明するためのフローチャートである。
【００４３】
フレーム受信部１１１は、サーバ装置２０から送信されるフレームの受信を待機している（Ｓ１０１）。サーバ装置２０から送信されたフレームが、フレーム受信部１１１によって受信されると（Ｓ１０１でＹｅｓ）、スクロール状態検出部１１２は、クライアント装置１０において表示中のデスクトップ画像内におけるスクロールバーの操作状態を判定する（Ｓ１０２）。なお、以下において、ステップＳ１０１において受信されたフレームを、「受信フレーム」という。
【００４４】
続いて、スクロール属性算出部１１３は、受信フレームと前フレームとを比較して、スクロールバーのノブ（つまみ）の移動量、スクロールされた画像の移動量、及びスクロールバーのノブの位置を算出する（Ｓ１０３）。続いて、フレーム表示制御部１１４は、受信フレームの表示処理を実行する（Ｓ１０４）。続いて、バッファ更新部１１５は、スクロールバッファ１４の更新処理を実行する（Ｓ１０５）。続いて、バッファ更新部１１５は、前フレームバッファ１３の内容を、受信フレームによって更新する（Ｓ１０６）。すなわち、受信フレームが、前フレームとして前フレームバッファ１３に記憶される。
【００４５】
以上によって、１回のフレームの受信によって実行される処理が完了する。ステップＳ１０２以降は、サーバ装置２０からフレームが受信されるたびに実行される。
【００４６】
続いて、ステップＳ１０２の詳細について説明する。図１０は、スクロールバーの操作状態の判定処理の処理手順の一例を説明するためのフローチャートである。
【００４７】
ステップＳ２０１において、スクロール状態検出部１１２は、前フレームバッファ１３に前フレームが記憶されているか否かを判定する。前フレームは、前回のフレーム受信時において受信されたフレームである。したがって、クライアント装置１０の起動後において最初に受信されたフレームに関しては、前フレームは記憶されていないと判定される。
【００４８】
前フレームバッファ１３に前フレームが記憶されていない場合（Ｓ２０１でＮｏ）、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール無し」を代入する（Ｓ２０２）。変数Ｍｏｄｅは、スクロールの操作状態を示す値を記憶するための変数である。「スクロール無し」は、スクロールが行われていない状態を示す。
【００４９】
前フレームバッファ１３に前フレームが記憶されている場合（Ｓ２０１でＹｅｓ）、すなわち、２回目以降のフレームの受信の場合、スクロール状態検出部１１２は、受信フレームと前フレームとのそれぞれの画像を比較して、相違点の有無を判定する（Ｓ２０３）。なお、例えば、所定数以下の画素の違いが相違点として検出されるのが適切でない場合、相違点として検出される画素数に関して閾値が設定されてもよい。
【００５０】
受信フレームと前フレームとの間に相違点が無い場合（Ｓ２０３でＮｏ）、スクロール状態検出部１１２は、パラメータ記憶部１５に記憶されているパラメータの一つであるバッファ中フラグの値がＴｒｕｅであるか否かを判定する（Ｓ２０４）。
【００５１】
図１１は、パラメータ記憶部の構成例を示す図である。図１１には、パラメータ記憶部１５に記憶されているパラメータごとに、パラメータ名及び初期値が示されている。
【００５２】
バッファ中フラグは、スクロールバッファ１４に画像データが記憶されているか否か（スクロールバッファ１４の内容が有効であるか否か）を示すフラグである。スクロールバッファ１４に画像データが記憶されていない場合、バッファ中フラグの値はＦａｌｓｅである。スクロールバッファ１４に画像データが記憶されている場合、バッファ中フラグの値はＴｒｕｅである。なお、スクロールバッファ１４には、スクロール操作が検出された場合に、スクロール対象の画像データが記憶される。
【００５３】
バッファ中フラグの値がＦａｌｓｅである場合（Ｓ２０４でＮｏ）、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール無し」を代入する（Ｓ２０２）。バッファ中フラグの値がＴｒｕｅである場合（Ｓ２０４でＹｅｓ）、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール継続（停止）」を代入する（Ｓ２０５）。「スクロール継続（停止）」とは、スクロールバッファ１４への記憶対象とされている領域（ウィンドウ）の画像について、スクロールが継続される可能性が有る状態において、少なくとも前フレームと受信フレームとの間では、スクロールが停止している状態を示す。なお、ステップＳ２０５は、受信フレームと前フレームとの間に相違点が無い場合に実行される。したがって、ステップＳ２０５は、例えば、一度スクロールが実行された後、スクロールが停止している状態において実行される。
【００５４】
一方、受信フレームと前フレームとの間に相違点が有る場合（Ｓ２０３でＹｅｓ）、スクロール状態検出部１１２は、当該相違点に係る領域を差分領域として特定する（Ｓ２０６）。続いて、スクロール状態検出部１１２は、受信フレームと前フレームとのそれぞれの差分領域に係る画像に基づいて、スクロール操作が発生したか否かを判定する（Ｓ２０７）。例えば、受信フレームと前フレームとの相違点が、スクロールバーのノブの部分であり、かつ、差分領域に関して、受信フレームの画像と前フレームの画像とが垂直方向に一定のずれを有している場合、スクロール状態検出部１１２は、スクロール操作が発生したと判定する。なお、画像中におけるスクロールバー及びスクロールバーのノブについては、例えば、パターンマッチング等を利用して検出されてもよい。
【００５５】
スクロール操作は発生していないと判定される場合（Ｓ２０７でＮｏ）、スクロール状態検出部１１２は、バッファ中フラグがＴｒｕｅであるか否かを判定する（Ｓ２０８）。バッファ中フラグがＴｒｕｅでない場合（Ｓ２０８でＮｏ）、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール無し」を代入する（Ｓ２０９）。例えば、或るウィンドウが新たに表示された場合や、スクロール対象でないウィンドウ内の表示内容がスクロール以外の原因で変化した場合に、ステップＳ２０９が実行される。
【００５６】
一方、バッファ中フラグがＴｒｕｅである場合（Ｓ２０８でＹｅｓ）、スクロール状態検出部１１２は、差分領域の範囲が、バッファ対象領域の範囲に一致するか否かを判定する（Ｓ２１０）。バッファ対象領域とは、スクロールの対象とされているウィンドウの表示領域（スクロールバー等を含むウィンドウ枠を除く、コンテンツが表示される矩形領域）をいう。バッファ対象領域の範囲は、パラメータ記憶部１５（図１１）に記憶されている。当該範囲は、例えば、デスクトップ画像の左上頂点を原点とする、バッファ対象領域の左上頂点の座標（ｘ，ｙ）と、バッファ対象領域の高さ及び幅（ｗ，ｈ）とに基づいて特定される。例えば、バッファ対象領域の範囲は、（ｘ，ｙ，ｗ，ｈ）の形式で、パラメータ記憶部１５に記憶されている。
【００５７】
差分領域の範囲とバッファ領域の範囲とが異なる場合（Ｓ２１０でＮｏ）、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール継続（停止）」を代入する（Ｓ２１１）。例えば、スクロールが行われていたウィンドウが存在する場合において、或るウィンドウが新たに表示された場合や、スクロール対象でないウィンドウ内の表示内容がスクロール以外の原因で変化した場合に、ステップＳ２１１が実行される。この場合、スクロールが行われていたウィンドウに表示されている画像は変化していない。したがって、スクロール対象の画像に関して再びスクロールが行われる可能性が有る。したがって、ステップＳ２１１では、変数Ｍｏｄｅに、「スクロール継続」が代入される。
【００５８】
差分領域の範囲とバッファ領域の範囲とが一致する場合（Ｓ２１０でＮｏ）、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール終了」を代入する（Ｓ２１２）。「スクロール終了」は、スクロール対象とされていたウィンドウに表示されていた画像に関して、これ以上スクロールが行われることが無い状態を示す値である。例えば、当該ウィンドウの表示対象のコンテンツが切り替わった場合にステップＳ２１１が実行される。この場合、前フレームまでに当該ウィンドウに表示されていた画像に関してスクロールが行われることは無い。したがって、ステップＳ２１２では、変数Ｍｏｄｅに「スクロール終了」が代入される。
【００５９】
また、ステップＳ２０７において、スクロール操作が発生したと判定される場合（Ｓ２０７でＹｅｓ）、スクロール状態検出部１１２は、バッファ中フラグがＴｒｕｅであるか否かを判定する（Ｓ２１３）。バッファ中フラグがＦａｌｓｅである場合（Ｓ２１３でＮｏ）、スクロール状態検出部１１２は、差分領域の範囲を、バッファ対象領域の範囲としてパラメータ記憶部１５に記憶する（Ｓ２１４）。
【００６０】
なお、スクロールが発生した場合における差分領域には、スクロールバーに関する部分は含まれない。すなわち、スクロールが行われた場合、受信フレームと前フレームとの間では、スクロールバーのノブの位置も異なる。したがって、厳密には、前フレームにおけるノブの部分と受信フレームにおけるノブの部分とについても相違点として検出されるが、スクロールバーに関する部分は、差分領域には含まれない。すなわち、スクロールが行われたウィンドウの表示領域が、差分領域に含まれる。
【００６１】
続いて、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール開始」を代入する（Ｓ２１５）。例えば、スクロールが継続されているウィンドウが無い状態において、或るウィンドウに関してスクロールが行われた場合に、ステップＳ２１５が実行される。この場合、当該ウィンドウの表示領域の範囲が、バッファ対象領域の範囲として記憶される。
【００６２】
一方、バッファ中フラグの値がＴｒｕｅである場合（Ｓ２１３でＹｅｓ）、スクロール状態検出部１１２は、差分領域の範囲とバッファ対象領域の範囲とが異なるか否かを判定する（Ｓ２１６）。差分領域の範囲とバッファ対象領域の範囲とが一致する場合（Ｓ２１６でＮｏ）、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール継続（移動）」を代入する（Ｓ２１７）。「スクロール継続（移動）」とは、デスクトップ画像内のウィンドウのうち、スクロールバッファ１４への記憶対象とされている画像について、スクロールが継続される可能性が有る状態において、前フレームと受信フレームとの間でスクロールが発生している状態を示す。例えば、スクロール対象のウィンドウが、まさにスクロール中である場合にステップＳ２１７が実行される。なお、以下において、「スクロール継続（移動）」と「スクロール継続（停止）」とを区別しない場合、「スクロール継続」と記す。
【００６３】
一方、差分領域の範囲とバッファ対象領域の範囲とが異なる場合（Ｓ２１６でＹｅｓ）、スクロール状態検出部１１２は、差分領域の範囲をバッファ対象領域の範囲としてパラメータ記憶部１５に記憶する（Ｓ２１８）。続いて、スクロール状態検出部１１２は、変数Ｍｏｄｅに、「スクロール切替」を代入する（Ｓ２１９）。「スクロール切替」は、スクロール対象のウィンドウが切り替わった状態を示す。
【００６４】
続いて、図９のステップＳ１０３の詳細について説明する。図１２は、スクロール属性の算出処理の処理手順の一例を説明するためのフローチャートである。
【００６５】
ステップＳ３０１において、スクロール属性算出部１１３は、変数Ｍｏｄｅの値が、「スクロール開始」、「スクロール継続（移動）」、又は「スクロール切替」であるか否かを判定する。変数Ｍｏｄｅの値が、これらのいずれかである場合（Ｓ３０１でＹｅｓ）、スクロール属性算出部１１３は、受信フレームと前フレームとを比較して、スクロールバーのノブの移動量（δ１）を算出する（Ｓ３０２）。例えば、前フレームにおけるノブの位置と、受信フレームにおけるノブの位置との差分（例えば、画素数）がノブの移動量（δ１）として算出される。
【００６６】
続いて、スクロール属性算出部１１３は、受信フレームにおけるバッファ対象領域の画像と前フレームのバッファ対象領域の画像とを比較して、当該画像の移動量（δ２）を算出する（Ｓ３０３）。例えば、前フレームと受信フレームとの間における当該画像のずれ量（例えば、画素数）が、当該画像の移動量（δ２）として算出される。
【００６７】
続いて、スクロール属性算出部１１３は、スクロール倍率を算出する（Ｓ３０４）。スクロール倍率とは、スクロールバーのノブの移動量（δ１）に対する、バッファ対象領域の画像の移動量（δ２）の倍率である。すなわち、スクロールバーのノブを１ピクセル移動させた場合の、画像の移動量である。したがって、スクロール倍率は、以下の式によって算出される。
【００６８】
スクロール倍率＝δ２÷δ１
続いて、スクロール属性算出部１１３は、パラメータ記憶部１５（図１１）のスクロール倍率の値を、ステップＳ３０４の算出結果によって更新する（Ｓ３０５）。
【００６９】
ステップＳ３０５、又はステップＳ３０１でＮｏの場合に続いて、スクロール属性算出部１１３は、変数Ｍｏｄｅの値が、「スクロール無し」、「スクロール終了」、「スクロール開始」、又は「スクロール切替」であるか否かを判定する（Ｓ３０６）。変数Ｍｏｄｅの値が、「スクロール無し」、「スクロール終了」、「スクロール開始」、又は「スクロール切替」である場合（Ｓ３０６でＹｅｓ）、スクロール属性算出部１１３は、パラメータ記憶部１５（図１１）に記憶されているレスポンス側スクロール位置を０に初期化する。なお、変数Ｍｏｄｅの値が、「スクロール開始」、又は「スクロール切替」である場合、受信フレームにおけるバッファ対象領域内の画像は、既にスクロールによる移動後の画像であり、スクロールバーのノブが上限に有る状態ではないが、このような状況であっても、レスポンス側スクロール位置は、０に初期化されてよい。レスポンス側スクロール位置の値は、或る時点を基準とした相対値でよく、本実施の形態では、ステップＳ３０７の時点が、当該或る時点とされているに過ぎないからである。なお、ステップＳ３０７が実行される場合において、図９のステップＳ１０５においてスクロールバッファ１４に記憶される画像データの位置が、基準位置としてスクロールバッファ１４に記憶される。
【００７０】
一方、変数Ｍｏｄｅの値が、「スクロール継続」である場合（Ｓ３０６でＮｏ）、スクロール属性算出部１１３は、バッファ対象領域に表示中の画像に関して、レスポンス側スクロール位置を算出する（Ｓ３０７）。レスポンス側スクロール位置は、以下の式に基づいて算出される。
【００７１】
レスポンス側スクロール位置＝レスポンス側スクロール位置＋スクロールによる画像の移動量
ここで、右辺のレスポンス側スクロール位置は、パラメータ記憶部１５に記憶されている値である。また、スクロールによる画像の移動量は、ステップＳ３０３において算出された値である。
【００７２】
続いて、スクロール属性算出部１１３は、算出されたレスポンス側スクロール位置を、パラメータ記憶部１５に書き込む（Ｓ３０９）。すなわち、パラメータ記憶部１５に記憶されているレスポンス側スクロール位置の値が更新される。
【００７３】
続いて、図９のステップＳ１０４の詳細について説明する。図１３は、受信フレームの表示処理の処理手順の一例を説明するためのフローチャートである。
【００７４】
ステップＳ４０１において、フレーム表示制御部１１４は、変数Ｍｏｄｅの値が、「スクロール開始」、「スクロール継続」、又は「スクロール切替」であるか否かを判定する。変数Ｍｏｄｅの値が、「スクロール無し」及び位「スクロール終了」のいずれでもない場合（Ｓ４０１でＮｏ）、すなわち、変数Ｍｏｄｅの値が、「スクロール無し」又は「スクロール終了」である場合、フレーム表示制御部１１４は、受信フレームを表示させる（Ｓ４０３）。具体的には、クライアント装置１０に表示されているデスクトップ画像が、受信フレームによって更新される。
【００７５】
一方、変数Ｍｏｄｅの値が、「スクロール開始」、「スクロール継続」、又は「スクロール切替」である場合（Ｓ４０１でＹｅｓ）、フレーム表示制御部１１４は、パラメータ記憶部１５に記憶されている予測画像表示中フラグの値がＴｒｕｅであるか否かを判定する（Ｓ４０３）。予測画像表示中フラグは、予測画像を表示中であるか否かを識別するためのパラメータである。予測画像とは、スクロールバッファ１４に記憶されている画像データをいう。すなわち、予測画像表示フラグは、現時点においてバッファ対象領域（スクロール対象のウィンドウの表示領域）に表示されている画像データが、スクロールバッファ１４から取得された画像データであるか否かを示すパラメータである。予測画像を表示中である場合、画像表示中フラグの値はＴｒｕｅである。予測画像を表示中でない場合、画像表示中フラグの値はＦａｌｓｅである。なお、予測画像表示中フラグの更新（すなわち、予測画像の表示）は、カーソルの移動に応じて実行される。
【００７６】
予測画像表示中フラグの値がＦａｌｓｅである場合（Ｓ４０３でＮｏ）、フレーム表示制御部１１４は、受信フレームを表示させる（Ｓ４０２）。一方、予測画像表示中フラグの値がＴｒｕｅである場合（Ｓ４０３でＹｅｓ）、フレーム表示制御部１１４は、パラメータ記憶部１５に記憶されている、リクエスト側スクロール位置とレスポンス側スクロール位置とが一致しているか否かを判定する（Ｓ４０４）。リクエスト側スクロール位置は、カーソルの移動に基づいて予測される、スクロール後におけるバッファ対象画像領域の画像の位置である。すなわち、スクロールバーが操作された場合、当該操作がサーバ装置２０に通知されてから、当該操作に応じたフレームが受信されるまでの間において、クライアント装置１０は、予測画像を利用して、バッファ対象領域の画像の更新を試みる。この際に、リクエスト側スクロール位置に基づいて、スクロールバッファ１４から予測画像として利用される画像の範囲が特定される。したがって、スクロール中において、リクエスト側スクロール位置とレスポンス側スクロール位置との間にずれが生じる可能性が有る。換言すれば、両者が一致するということは、スクロール操作が停止しているか、又はスクロール操作に応じたフレームの受信に関して、ほとんど遅延が生じていない状況であることを意味する。
【００７７】
両者が一致している場合（Ｓ４０４でＹｅｓ）、フレーム表示制御部１１４は、受信フレームを表示させる（Ｓ４０２）。両者が異なる場合（Ｓ４０４でＮｏ）、フレーム表示制御部１１４は、受信フレームを表示しない（Ｓ４０５）。例えば、受信フレームは破棄される。この場合、スクロール操作に応じて、予測画像を用いてバッファ対象領域を更新中であり、仮に、受信フレームが表示されると、ユーザには、スクロール操作が後戻りしてしまったように見える可能性が有るからである。なお、斯かる不都合が許容される場合、受信フレームが常に表示されるようにしてもよい。
【００７８】
続いて、図９のステップＳ１０５の詳細について説明する。図１４は、スクロールバッファの更新処理の処理手順の一例を説明するためのフローチャートである。
【００７９】
ステップＳ５０１において、バッファ更新部１１５は、変数Ｍｏｄｅの値が、「スクロール開始」、「スクロール継続」、又は「スクロール切替」であるか否かを判定する。変数Ｍｏｄｅの値が、「スクロール無し」又は「スクロール終了」である場合（Ｓ５０１でＮｏ）、バッファ更新部１１５は、スクロールバッファ１４を初期化する（Ｓ５０２）。例えば、スクロールバッファ１４に記憶されている画像データが削除される。続いて、バッファ更新部１１５は、パラメータ記憶部１５（図１１）のバッファ中フラグの値をＦａｌｓｅに更新する（Ｓ５０３）。
【００８０】
一方、変数Ｍｏｄｅの値が、「スクロール開始」、「スクロール継続」、又は「スクロール切替」である場合（Ｓ５０１でＹｅｓ）、バッファ更新部１１５は、受信フレームから、バッファ対象領域の画像データを切り出す（Ｓ５０４）。なお、受信フレームにおけるバッファ対象領域の範囲は、パラメータ記憶部１５に記憶されているバッファ対象領域の範囲の値に基づいて特定される。
【００８１】
続いて、バッファ更新部１１５は、変数Ｍｏｄｅの値が、「スクロール開始」又は「スクロール切替」であるか否かを判定する（Ｓ５０５）。変数Ｍｏｄｅの値が「スクロール継続」である場合（Ｓ５０５でＮｏ）、バッファ更新部１１５は、ステップＳ５０４において切り出された画像データを、スクロールバッファ１４に書き込む（Ｓ５０６）。この際、パラメータ記憶部１５のレスポンス側スクロール位置が示すオフセット位置に当該画像データが書き込まれる。オフセット位置とは、スクロールバッファ１４の基準点（レスポンス側スクロール位置＝０）に対するオフセット位置である。その結果、例えば、スクロールバッファ１４は、図４のステップＳ１２又は図５のステップＳ２２において説明したように更新される。なお、当該画像データとの重複部分が、スクロールバッファ１４に記憶されている場合、当該重複部分は、当該画像データによって上書きされてよい。
【００８２】
続いて、バッファ更新部１１５は、パラメータ記憶部１５（図１１）のバッファ中フラグの値をＴｒｕｅに更新する（Ｓ５０７）。
【００８３】
一方、変数Ｍｏｄｅの値が、「スクロール開始」又は「スクロール切替」である場合（Ｓ５０５でＹｅｓ）、バッファ更新部１１５は、ステップＳ５０２と同様に、スクロールバッファ１４を初期化する（Ｓ５０８）。続いて、バッファ更新部１１５は、ステップＳ５０４において切り出された画像データを、スクロールバッファ１４に書き込む（Ｓ５０９）。当該画像データの範囲が、基準点（レスポンス側スクロール位置＝０）に対応する範囲となる。この際、バッファ更新部１１５は、前フレームからバッファ対象領域内の画像データを切り出し、当該画像データをスクローバッファに書き込んだ後に、ステップＳ５０４において切り出された画像データをスクロールバッファ１４に書き込んでもよい。すなわち、ステップＳ５０９が実行される場合、当該切り出された画像データは、わずかながらにスクロールされている画像データである。一方、前フレームのバッファ対象領域から切り出される画像データは、スクロール前の画像データである。したがって、前フレームのバッファ対象領域から切り出される画像データをスクロールバッファ１４に書き込むことで、バッファ対象領域に関して過去に表示された画像データの全ての範囲をスクロールバッファ１４に記憶しておくことができる。このようにする場合、図１２のステップＳ３０６の分岐において、変数Ｍｏｄｅの値が「スクロール開始」又は「スクロール切替」である場合は、レスポンス側スクロール位置が０に初期化された後に、ステップＳ３０８及びＳ３０９が実行されるようにしてもよい。そうすることで、レスポンス側スクロール位置が、ステップＳ５０４において切り出された画像データと、前フレームのバッファ対象領域から切り出される画像データとのオフセットを示すことになり、当該オフセットに基づいて、二つの画像データを重ね合わせることができる。
【００８４】
続いて、バッファ更新部１１５は、パラメータ記憶部１５（図１１）のバッファ中フラグの値をＴｒｕｅに更新する（Ｓ５０７）。
【００８５】
続いて、カーソル移動処理部１２が実行する処理手順について説明する。図１５は、カーソル移動処理部が実行する処理手順の一例を説明するためのフローチャートである。
【００８６】
カーソルの押下及び移動を示す操作が検出されると、スクロール検出部１２１は、当該操作が、スクロール操作であるか否かを判定する（Ｓ６０１）。スクロール操作とは、スクロールバーのノブを移動させる操作をいう。例えば、カーソルの位置が、ノブに重なっている状態で、マウスのドラッグが検出された場合に、スクロール検出部１２１は、スクロール操作を検出する。なお、その他の方法によって、スクロール操作が検出されてもよい。
【００８７】
スクロール操作が検出された場合（Ｓ６０１でＹｅｓ）、スクロール検出部１２１は、カーソルの移動量に基づいて、スクロール量を特定する（Ｓ６０２）。垂直スクロールバーであれば、例えば、カーソルの垂直方向の移動量が、スクロール量として特定される。スクロール量は、スクロールの方向をも示す値である。例えば、カーソルの上方の移動であれば負の値であり、カーソルの下方の移動であれば正の値であってもよい。
【００８８】
なお、カーソルの移動量とは、厳密に、デスクトップ画像上におけるカーソルの移動量でなくてもよい。マウス等の入力装置１０７の操作に基づいてクライアント装置１０側で導出される、カーソルが移動すべき位置に基づいて、当該移動量が算出されてもよい。
【００８９】
続いて、移動量算出部１２２は、スクロールによるバッファ対象領域の画像の移動量の予測値を算出する（Ｓ６０３）。予測値と表現されているのは、当該移動量は、スクロール操作が反映されたフレームがサーバ装置２０から受信される前に算出される値だからである。当該予測値は、ステップＳ６０２において特定されたスクロール量に、スクロール倍率を乗じることにより得ることができる。
【００９０】
続いて、移動量算出部１２２は、デスクトップ画像（すなわち、現在表示中のフレーム）から、バッファ対象領域の画像データを切り出す（Ｓ６０４）。バッファ対象領域の範囲は、パラメータ記憶部１５を参照して特定可能である。続いて、移動量算出部１２２は、切り出された画像データについて、スクロールバッファ１４に記憶されている画像データに対する範囲を特定する（Ｓ６０５）。すなわち、スクロールバッファ１４に記憶されている画像データ内において、切り出された画像データの全部に一致する範囲が特定される。
【００９１】
続いて、移動量算出部１２２は、パラメータ記憶部１５に記憶されているリクエスト側スクロール位置の値を更新する（Ｓ６０６）。例えば、移動量算出部１２２は、ステップＳ６０５において特定された範囲について、基準点からのずれ量を求め、当該ずれ量に対して、ステップＳ６０３において算出された予測値を加算して値を、新たなリクエスト側スクロール位置とする。
【００９２】
続いて、予測画像取得部１２３は、スクロールバッファ１４において、リクエスト側スクロール位置に対応する範囲に記憶されている画像データを、予測画像として取得する（Ｓ６０７）。
【００９３】
予測画像の全部を取得できない場合（Ｓ６０８でＮｏ）、予測画像取得部１２３は、パラメータ記憶部１５に記憶されている予測画像表示フラグにＦａｌｓｅを設定する（Ｓ６０９）。この場合、予測画像の表示は行われない。したがって、スクロール操作の反映は、サーバ装置２０からのフレームの受信後に行われる。なお、予測画像の全部を取得できない場合とは、リクエスト側スクロール位置に対応する範囲のうちの一部の画像データしかスクロールバッファ１４に記憶されていない場合、又はリクエスト側スクロール位置に対応する範囲に含まれる画像データがスクロールバッファ１４に全く記憶されていない場合である。
【００９４】
一方、予測画像の全部を取得できた場合（Ｓ６０８でＹｅｓ）、予測画像表示部１２４は、デスクトップ画像のバッファ対象領域を、取得された予測画像によって置換する（Ｓ６１０）。その結果、ユーザからは、スクロールが発生したように見える。続いて、予測画像表示部１２４は、パラメータ記憶部１５に記憶されている予測画像表示フラグの値にＴｒｕｅを設定する（Ｓ６１１）。
【００９５】
ステップＳ６０１でＮｏの場合、ステップＳ６０９、又はステップＳ６１１に続いて、操作通知部１２５は、カーソル位置及びカーソルの移動量をサーバ装置２０に送信する（Ｓ６１２）。ステップＳ６１２は、一般的なリモートデスクトップシステムにおいて行われている処理である。ステップＳ６１２は、図１５の他のステップと並列的に実行されてもよい。
【００９６】
なお、サーバ装置２０は、ステップＳ６１２において送信された情報に応じた処理を実行する。例えば、当該情報がアプリケーション２４０やＯＳ２２０に通知され、アプリケーション２４０やＯＳ２２０によって当該情報に応じた処理が実行される。その結果、デスクトップ画像に変化が発生すると、サーバ装置２０は、当該デスクトップ画像を示すフレームをクライアント装置１０に送信する。クライアント装置１０は、当該フレームの受信に応じて、図９において説明した処理を実行する。
【００９７】
上述したように、本実施の形態によれば、スクロールバッファ１４を使用して高速にスクロール先の画像（予測画像）が表示される場合であっても、スクロール操作がサーバ装置２０に通知され、当該通知に応じてサーバ装置２０から返信されるフレームによって、クライアント装置１０のデスクトップ画像の更新が行われる。したがって、リモートデスクトップについてサーバ側とクライアント側との画像の不整合を抑制しつつスクロール操作の遅延の改善することができる。
【００９８】
なお、スクロールバー等のウィンドウ部品の表示状態に関してもサーバ装置２０によって更新されるリモートデスクトップシステムにおいては、予測画像が使用されてクライアント装置１０に表示されているデスクトップ画像に高速にスクロール操作が反映される場合、ユーザから見た場合、一瞬、スクロールバーのノブの移動が、画像の移動に遅れるように見える可能性が有る。但し、ユーザが注目しているのはスクロール対象とされたウィンドウ内の画像であり、当該画像が高速にスクロールされることに鑑みれば、ノブの移動の一瞬の遅れは、本実施の形態により得られる利便性を大きく損なうほどの不利益ではないと考える。
【００９９】
または、バッファ更新部１１５は、バッファ対象領域に係るウィンドウのスクロールバーの画像とノブの画像とについても、スクロールバッファ１４に記憶するようにしてもよい。予測画像取得部１２３は、表示対象の予測画像と共に、スクロールバッファ１４に記憶されているスクロールバーの画像とノブの画像とを取得してもよい。予測画像表示部１２４は、取得されたスクロールバーの画像とノブの画像によって、バッファ対象領域に係るウィンドウのスクロールバーの部分を置き換えてもよい。この際、予測画像表示部１２４は、図１５のステップＳ６０２において算出されるスクロール量に基づいて特定される位置に、ノブの画像を重ね合わせてもよい。そうすることで、スクロールバーのノブも高速に移動するように見せることができる。
【０１００】
なお、本実施の形態において、操作通知部１２５は、通知部の一例である。フレーム受信部１１１は、受信部の一例である。スクロール状態検出部１１２は、第一の検出部の一例である。バッファ更新部１１５は、記憶処理部の一例である。フレーム表示制御部１１４は、表示制御部の一例である。スクロール検出部１２１は、第二の検出部の一例である。移動量算出部１２２は、第一の算出部の一例である。予測画像取得部１２３は、取得部の一例である。予測画像表示部１２４は、置換部の一例である。スクロール属性算出部１１３は、第二の算出部の一例である。クライアント装置１０は、画像表示装置の一例である。サーバ装置２０は、情報処理装置の一例である。
【０１０１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０１０２】
以上の説明に関し、更に以下の項を開示する。
（付記１）
表示対象の画像に対する操作をネットワークを介して接続される情報処理装置に通知する通知部と、
前記操作の通知に応じて前記情報処理装置から送信される画像を受信する受信部と、
前記受信部によって画像が受信されるたびに、最後に受信された画像と当該画像の一つ前に前記受信部によって受信された画像とを比較して、比較された二つの画像に含まれるスクロールバーに対する操作を検出する第一の検出部と、
前記第一の検出部によって前記スクロールバーに対する操作が検出された場合に、前記最後に受信された画像において前記スクロールバーに対応する領域の画像を記憶部に記憶する記憶処理部と、
前記表示対象を前記最後に受信された画像に置き換える表示制御部と、
前記表示制御部によって表示対象とされた画像に含まれる前記スクロールバーに対する操作を、指示位置の動きに基づいて検出する第二の検出部と、
前記指示位置の移動量に基づいて、前記表示対象とされた画像における前記領域内の画像の移動量を算出する第一の算出部と、
前記記憶部に記憶されている画像のうち、前記表示対象とされた画像における前記領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を、前記記憶部から取得する取得部と、
前記取得部によって取得された画像によって、前記表示対象とされた画像における前記領域内の画像を置き換える置換部と、を有し、
前記通知部は、前記スクロールバーに対する操作についても、前記情報処理装置に通知し、
前記表示制御部は、前記スクロールバーに対する操作の通知に応じて前記受信部が受信する画像によって、前記表示対象を置き換える、
ことを特徴とする画像表示装置。
（付記２）
前記最後に受信された画像と前記一つ前に受信された画像との比較に基づいて、前記スクロールバーに関する第一のスクロール位置を算出する第二の算出部を有し、
前記第一の算出部は、前記指示位置の移動量に基づいて、前記スクロールバーに関する第二のスクロール位置を算出し、
前記表示制御部は、前記一つ前に受信された画像に関して算出された前記第二のスクロール位置と、前記第一のスクロール位置とが一致する場合に、前記表示対象を、前記最後に受信された画像に置き換える、
ことを特徴とする付記１記載の画像表示装置。
（付記３）
前記記憶処理部は、前記記憶部に記憶する各画像のそれぞれについて、相互に当該画像を記憶する際に算出された前記第一のスクロール位置に基づくずれを有するように前記各画像を重ね合わせる、
ことを特徴とする付記２記載の画像表示装置。
（付記４）
コンピュータが、
表示対象の画像に対する操作をネットワークを介して接続される情報処理装置に通知し、
前記操作の通知に応じて前記情報処理装置から送信される画像を受信し、
画像が受信されるたびに、最後に受信された画像と当該画像の一つ前に受信された画像とを比較して、比較された二つの画像に含まれるスクロールバーに対する操作を検出し、
前記スクロールバーに対する操作が検出された場合に、前記最後に受信された画像において前記スクロールバーに対応する領域の画像を記憶部に記憶し、
前記表示対象を前記最後に受信された画像に置き換え、
前記表示対象とされた画像に含まれる前記スクロールバーに対する操作を、指示位置の動きに基づいて検出し、
前記指示位置の移動量に基づいて、前記表示対象とされた画像における前記領域内の画像の移動量を算出し、
前記記憶部に記憶されている画像のうち、前記表示対象とされた画像における前記領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を、前記記憶部から取得し、
取得された画像によって、前記表示対象とされた画像における前記領域内の画像を置き換える処理を実行し、
前記通知する処理は、前記スクロールバーに対する操作についても、前記情報処理装置に通知し、
前記表示対象を置き換える処理は、前記スクロールバーに対する操作の通知に応じて受信される画像によって、前記表示対象を置き換える、
ことを特徴とする画像表示方法。
（付記５）
前記コンピュータが、前記最後に受信された画像と前記一つ前に受信された画像との比較に基づいて、前記スクロールバーに関する第一のスクロール位置を算出し、
前記移動量を算出する処理は、前記指示位置の移動量に基づいて、前記スクロールバーに関する第二のスクロール位置を算出し、
前記表示対象を置き換える処理は、前記一つ前に受信された画像に関して算出された前記第二のスクロール位置と、前記第一のスクロール位置とが一致する場合に、前記表示対象を、前記最後に受信された画像に置き換える、
ことを特徴とする付記４記載の画像表示方法。
（付記６）
前記記憶する処理は、前記記憶部に記憶する各画像のそれぞれについて、相互に当該画像を記憶する際に算出された前記第一のスクロール位置に基づくずれを有するように前記各画像を重ね合わせる、
ことを特徴とする付記５記載の画像表示方法。
（付記７）
コンピュータに、
表示対象の画像に対する操作をネットワークを介して接続される情報処理装置に通知し、
前記操作の通知に応じて前記情報処理装置から送信される画像を受信し、
画像が受信されるたびに、最後に受信された画像と当該画像の一つ前に受信された画像とを比較して、比較された二つの画像に含まれるスクロールバーに対する操作を検出し、
前記スクロールバーに対する操作が検出された場合に、前記最後に受信された画像において前記スクロールバーに対応する領域の画像を記憶部に記憶し、
前記表示対象を前記最後に受信された画像に置き換え、
前記表示対象とされた画像に含まれる前記スクロールバーに対する操作を、指示位置の動きに基づいて検出し、
前記指示位置の移動量に基づいて、前記表示対象とされた画像における前記領域内の画像の移動量を算出し、
前記記憶部に記憶されている画像のうち、前記表示対象とされた画像における前記領域内の画像に一致する範囲に対して前記移動量に応じたずれを有する範囲の画像を、前記記憶部から取得し、
取得された画像によって、前記表示対象とされた画像における前記領域内の画像を置き換える処理を実行させ、
前記通知する処理は、前記スクロールバーに対する操作についても、前記情報処理装置に通知し、
前記表示対象を置き換える処理は、前記スクロールバーに対する操作の通知に応じて受信される画像によって、前記表示対象を置き換える、
ことを特徴とするプログラム。
（付記８）
前記コンピュータが、前記最後に受信された画像と前記一つ前に受信された画像との比較に基づいて、前記スクロールバーに関する第一のスクロール位置を算出し、
前記移動量を算出する処理は、前記指示位置の移動量に基づいて、前記スクロールバーに関する第二のスクロール位置を算出し、
前記表示対象を置き換える処理は、前記一つ前に受信された画像に関して算出された前記第二のスクロール位置と、前記第一のスクロール位置とが一致する場合に、前記表示対象を、前記最後に受信された画像に置き換える、
ことを特徴とする付記７記載のプログラム。
（付記９）
前記記憶する処理は、前記記憶部に記憶する各画像のそれぞれについて、相互に当該画像を記憶する際に算出された前記第一のスクロール位置に基づくずれを有するように前記各画像を重ね合わせる、
ことを特徴とする付記８記載のプログラム。
【符号の説明】
【０１０３】
１０          クライアント装置
１１          フレーム受信処理部
１２          カーソル移動処理部
１３          前フレームバッファ
１４          スクロールバッファ
１５          パラメータ記憶部
２０          サーバ装置
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１１１        フレーム受信部
１１２        スクロール状態検出部
１１３        スクロール属性算出部
１１４        フレーム表示制御部
１１５        バッファ更新部
１２０、２２０  ＯＳ
１２１        スクロール検出部
１２２        移動量算出部
１２３        予測画像取得部
１２４        予測画像表示部
１２５        操作通知部
１３０        リモートデスクトップクライアント
２３０        リモートデスクトップサーバ
２４０        アプリケーション
Ｂ            バス
【図１】
2016110335.tif 000003
【図２】
2016110335.tif 000004
【図３】
2016110335.tif 000005
【図４】
2016110335.tif 000006
【図５】
2016110335.tif 000007
【図６】
2016110335.tif 000008
【図７】
2016110335.tif 000009
【図８】
2016110335.tif 000010
【図９】
2016110335.tif 000011
【図１０】
2016110335.tif 000012
【図１１】
2016110335.tif 000013
【図１２】
2016110335.tif 000014
【図１３】
2016110335.tif 000015
【図１４】
2016110335.tif 000016
【図１５】
2016110335.tif 000017