以下に、本願の開示する情報処理装置、画面制御プログラム及び画面制御方法の実施例を図面に基づいて詳細に説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[システム構成]
まず、本実施例に係るシンクライアントシステムの構成について説明する。図1は、実施例に係るシンクライアントシステムに含まれる各装置の機能的構成を示すブロック図である。
図1に示すシンクライアントシステム1は、クライアント端末30,40が表示するデスクトップ画面をリモートでサーバ10に制御させるものである。つまり、シンクライアントシステム1は、実際にはサーバ10が実行した処理結果や保持するデータをクライアント端末30,40に表示させつつも、あたかもクライアント端末30,40が主体となって処理を実行し、データを保持しているかのように振る舞う。
図1に示すように、シンクライアントシステム1は、サーバ10と、クライアント端末30,40と、Webサーバ90とを有する。なお、図1の例では、1つのサーバ10に対し、1つのクライアント端末30を接続する場合を図示したが、任意の数のクライアント端末が接続される場合にも同様に適用できる。また、図1の例では、1つのクライアント端末30に対し、1つのクライアント端末40を接続する場合を図示したが、任意の数のクライアント端末が接続される場合にも同様に適用できる。さらに、図1の例では、1つのWebサーバ90に対し、1つのサーバ10を接続する場合を図示したが、任意の数のサーバが接続される場合にも同様に適用できる。
サーバ10とクライアント端末30とは、所定のネットワーク(通信経路)を介して、相互に通信可能に接続される。かかるネットワークには、有線または無線を問わず、インターネット、LAN(Local Area Network)やVPN(Virtual Private Network)などの任意の種類の通信網を採用できる。なお、サーバ10及びクライアント端末30間の通信プロトコルには、一例として、VNC(Virtual Network Computing)におけるRFB(Remote Frame Buffer)プロトコルを採用する場合を想定する。また、サーバ10とクライアント端末20とは、互いに、3G、WiMAX(Worldwide Interoperability for Microwave Access)、LTE(Long Term Evolution)などの通信規格により通信可能とすることもできる。また、サーバ10とWebサーバ90とは、同様に、所定のネットワークを介して相互に通信可能に接続されている。
サーバ10は、クライアント端末30,40に表示させる画面をリモートで制御するサービスを提供するコンピュータである。このサーバ10には、サーバ向けのリモート画面制御用のアプリケーションがインストールまたはプリインストールされる。なお、以下では、サーバ向けのリモート画面制御用のアプリケーションのことを「サーバ側のリモート画面制御用アプリ」と記載する場合がある。
このサーバ側のリモート画面制御用アプリは、基本機能として、リモート画面制御サービスを提供する機能を有する。一態様としては、サーバ側のリモート画面制御用アプリは、クライアント端末30における操作情報を取得した上でその操作により要求された処理を自装置で動作するアプリケーションに実行させる。そして、サーバ側のリモート画面制御用アプリは、アプリケーションにより実行された処理結果を表示するための画面を生成した上でその画面をクライアント端末30に送信するとともに、クライアント端末30を介してクライアント端末20へ送信する。例えば、サーバ側のリモート画面制御用アプリは、クライアント端末30において所定の表示部に表示された画面上のリンクがタップされる操作が行われた場合には、タップされたリンクに対応するページ(Webページ)をWebサーバ90から取得する。そして、サーバ側のリモート画面制御用アプリは、取得したページのクライアント端末30に表示させる画面を生成した上で、次の処理を行う。すなわち、サーバ側のリモート画面制御用アプリは、生成した画面をクライアント端末30に送信するとともに、クライアント端末30を介してクライアント端末20へ送信する。また、サーバ側のリモート画面制御用アプリは、クライアント端末30において画面のスクロール操作が行われた場合には、スクロール後のクライアント端末30に表示させる画面を生成した上で、次の処理を行う。すなわち、サーバ側のリモート画面制御用アプリは、生成した画面をクライアント端末30に送信するとともに、クライアント端末30を介してクライアント端末20へ送信する。このとき、サーバ側のリモート画面制御用アプリは、今回の画面生成の前にクライアント端末30で表示させていたビットマップ画像との間で変更があった部分の画素が集まった領域、すなわち更新矩形の画像を送信する。なお、以下では、一例として、更新部分の画像が矩形の画像で形成される場合を説明するが、開示の装置は更新部分の画像が矩形以外の形状で形成される場合にも適用できる。
また、サーバ側のリモート画面制御用アプリは、クライアント端末30で、ある1つの画面または更新矩形の画像の全体の描画が完了した時点で、次に描画される画面または更新矩形の画像の画像データが受信されるように、画像データの送信間隔を調整する。これにより、クライアント端末30において、ある画面または更新矩形の画像の全体の描画が完了する前に、次々と画像データがクライアント端末40を介してサーバ10から送信され、描画する画像データが蓄積されるような事態の発生を抑制することができる。この結果、クライアント端末30では、利用者によるスクロール操作が終了したにも関わらず、画面のスクロールが継続されてしまうような事態の発生を抑制することができる。したがって、サーバ側のリモート画面制御用アプリによれば、クライアント端末30における操作性の悪化を抑制することができる。また、サーバ側のリモート画面制御用アプリは、クライアント端末30で、ある1つの画面または更新矩形の画像の全体の描画が完了した時点で、次に描画される画面または更新矩形の画像の画像データが受信されるように、画像データの送信間隔を調整する。それゆえ、サーバ側のリモート画面制御用アプリによれば、クライアント端末30で、ある1つの画面または更新矩形の画像の全体の描画が完了してから、次に描画される画像データが受信されるまでの間隔が長くなるような事態の発生を抑制する。したがって、サーバ側のリモート画面制御用アプリによれば、クライアント端末30における画像の描画の遅延を抑制することができる。
クライアント端末30は、サーバ10によるリモート画面制御サービスの提供を受ける側のコンピュータである。かかるクライアント端末30の一例としては、カーナビゲーション装置、パーソナルコンピュータ(personal computer)など固定端末を採用できる。なお、クライアント端末30として、固定端末の他、携帯電話機、スマートフォン、PHS(Personal Handyphone System)やPDA(Personal Digital Assistant)などの移動体端末も採用することができる。以下、クライアント端末30が、Bluetooth(登録商標)やWiFiなどの通信規格により、クライアント端末40と通信可能であるとともに、サーバ10との通信機能を有さないカーナビゲーション装置である場合を例にあげて説明する。このクライアント端末30には、クライアント向けのリモート画面制御用アプリケーションがインストールまたはプリインストールされる。なお、以下では、このクライアント向けのリモート画面制御用のアプリケーションのことを「第1のクライアント側のリモート画面制御用アプリ」と記載する場合がある。
この第1のクライアント側のリモート画面制御用アプリは、マウスやキーボードなどの各種の入力デバイスを介して受け付けた操作情報をクライアント端末40を介してサーバ10へ通知する機能を有する。一態様としては、第1のクライアント側のリモート画面制御用アプリは、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量などを操作情報として通知する。また、第1のクライアント側のリモート画面制御用アプリは、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども操作情報として通知する。さらに、第1のクライアント側のリモート画面制御用アプリは、画面のスクロール操作、画面上のリンクがタップされたことなども操作情報として通知する。
また、第1のクライアント側のリモート画面制御用アプリは、クライアント端末40を経由してサーバ10から受信した画面を所定の表示部に表示させる機能を有する。
また、第1のクライアント側のリモート画面制御用アプリは、クライアント端末40を経由してサーバ10から受信した画像を所定の表示部に表示させる機能を有する。一態様としては、第1のクライアント側のリモート画面制御用アプリは、更新矩形のビットマップ画像を受信した場合には、更新矩形の画像を前回のビットマップ画像から変更のあった位置に合わせて表示する。他の一態様としては、第1のクライアント側のリモート画面制御用アプリは、表示部のフレームレートを計測し、計測したフレームレートをクライアント端末40に通知する。
クライアント端末40は、サーバ10によるリモート画面制御サービスの提供を受ける側のコンピュータである。かかるクライアント端末40の一例としては、携帯電話機、スマートフォン、PHS(Personal Handyphone System)やPDA(Personal Digital Assistant)などの移動体端末を採用することができる。なお、クライアント端末40として、移動体端末の他、カーナビゲーション装置、パーソナルコンピュータ(personal computer)などの固定端末も採用できる。以下、クライアント端末40が、3G、WiMAX、LTEなどの通信規格によりサーバ10と通信可能であり、BluetoothやWiFiなどの通信規格によりクライアント端末30と通信可能であるスマートフォンである場合を例にあげて説明する。このクライアント端末40には、クライアント向けのリモート画面制御用アプリケーションがインストールまたはプリインストールされる。なお、以下では、このクライアント向けのリモート画面制御用のアプリケーションのことを「第2のクライアント側のリモート画面制御用アプリ」と記載する場合がある。
この第2のクライアント側のリモート画面制御用アプリは、クライアント端末30から受け付けた操作情報をサーバ10へ通知する機能を有する。
また、第2のクライアント側のリモート画面制御用アプリは、サーバ10から受信した画面を所定の表示部に表示させる機能を有する。また、第2のクライアント側のリモート画面制御用アプリは、サーバ10から受信した画面をクライアント端末30へ送信して、画面を中継する機能を有する。
また、第2のクライアント側のリモート画面制御用アプリは、サーバ10から受信した画像を所定の表示部に表示させる機能を有する。一態様としては、第2のクライアント側のリモート画面制御用アプリは、更新矩形のビットマップ画像を受信した場合には、更新矩形の画像を前回のビットマップ画像から変更のあった位置に合わせて表示する。また、第2のクライアント側のリモート画面制御用アプリは、サーバ10から受信した画像をクライアント端末30へ送信して、画像を中継する機能を有する。他の一態様としては、第2のクライアント側のリモート画面制御用アプリは、表示部のフレームレートを計測する。
また、第2のクライアント側のリモート画面制御用アプリは、クライアント端末30から受け付けた操作情報に基づいて、クライアント端末30で利用者によるスクロール操作などの各種の操作が行われたか否かを判定する。そして、第2のクライアント側のリモート画面制御用アプリは、各種の操作が行われた場合には、計測したフレームレートと、クライアント端末30から通知されたフレームレートとを比較し、小さい方のフレームレートをサーバ10に送信する。
また、第2のクライアント側のリモート画面制御用アプリは、受信した画像データの受信時刻と、画像データに付加された送信時刻とから、画像データがサーバ10から送信されからクライアント端末40により受信されるまでの時間を算出する。そして、第2のクライアント側のリモート画面制御用アプリは、算出した時間をサーバ10に送信する。
[サーバの構成]
次に、本実施例に係るサーバの機能的構成について説明する。図1に示すように、サーバ10は、OS実行制御部11と、リモート画面制御部12とを有する。なお、図1の例では、図1に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば各種の入力デバイスや表示デバイスなどの機能を有するものとする。
OS実行制御部11は、OS(Operating System)の実行を制御する処理部である。一態様としては、OS実行制御部11は、後述の操作情報取得部13により取得された操作情報から画面のスクロール指示などの各種の指示を検出する。例えば、OS実行制御部11は、操作情報から画面上のリンクがタップされる操作を検出した場合には、タップされたリンクに対応するURL(Uniform Resource Locator)を特定する。そして、OS実行制御部11は、特定したURLに対応するページを送信する要求をWebサーバ90に送信することにより、Webサーバ90からページを取得する。そして、OS実行制御部11は、取得したページに対応する画面の生成を画面生成部14へ指示する。
また、OS実行制御部11は、操作情報から画面のスクロール操作を検出した場合には、検出したスクロール操作によるスクロールが行われた場合にクライアント端末30で表示される画面の生成を画面生成部14へ指示する。なお、以下では、アプリケーションのことを「アプリ」と記載する場合がある。
リモート画面制御部12は、サーバ側のリモート画面制御用アプリを通じて、リモート画面制御サービスをクライアント端末30,40へ提供する処理部である。このリモート画面制御部14は、図1に示すように、操作情報取得部13と、画面生成部14と、更新矩形生成部15と、圧縮部16とを有する。さらに、サーバ側のリモート画面制御部14は、送信制御部17と、送信部18と、フレームレート受信部19と、帯域推定部20と、タイミング決定部21とを有する。
操作情報取得部13は、クライアント端末40を介してクライアント端末30の操作情報を取得する処理部である。かかる操作情報の一例としては、マウスの左右のクリックを始め、ダブルクリックやドラッグ、マウスの移動操作を介して得られたマウスカーソルの移動量、マウスホイールの回転量、キーボードのうち押下されたキーの種別なども挙げられる。また、他の操作情報の一例としては、画面のスクロール操作、画面上のリンクがタップされたことなども挙げられる。
画面生成部14は、OS実行制御部11の指示にしたがって、クライアント端末30の表示部32に表示させる画面の画像を生成する処理部である。一態様としては、画面生成部14は、OS実行制御部11によりページに対応する画面の生成が指示された場合には、当該ページに対応する画面の画像を生成する。また、画面生成部14は、OS実行制御部11によりスクロール操作によるスクロールが行われた場合にクライアント端末30で表示される画面の生成が指示された場合には、スクロール操作によるスクロールが行われた場合にクライアント端末30で表示される画面の画像を生成する。そして、画面生成部14は、図示しないフレームバッファに生成した画面の画像(フレーム)を書き込む。
更新矩形生成部15は、前回のフレーム生成時にクライアント端末30で表示させていたデスクトップ画面と、今回のフレーム生成時に図示しないフレームバッファへ書き込まれたデスクトップ画面とを比較する。そして、更新矩形生成部15は、前回のフレームから変更があった部分の画素をつなげ合わせた上で矩形に整形した更新矩形の画像を生成し、生成した画像を圧縮部16に送信する。なお、更新矩形生成部15は、前回のフレームが存在しない場合には、今回のフレーム生成時に図示しないフレームバッファへ書き込まれたデスクトップ画面の画像を圧縮部16に送信する。ここで、かかるフレームバッファは、画面生成部14によって書き込まれたビットマップ画像を記憶する記憶デバイスである。かかるフレームバッファの一態様としては、VRAM(Video Random Access Memory)を始めとするRAM(Random Access Memory)やフラッシュメモリ(flash memory)などの半導体メモリ素子が挙げられる。なお、フレームバッファは、ハードディスク、光ディスクなどの記憶装置を採用することとしてもかまわない。
圧縮部16は、更新矩形生成部15によって送信されたデスクトップ画面の画像及び更新矩形の画像を所定の圧縮方式で圧縮(エンコード)する処理部である。一態様としては、圧縮部16は、各画像をGIF(Graphic Interchange Format)やPNG(Portable Network Graphics)などで圧縮することによって符号化データを生成する。なお、ここでは、圧縮方式としてGIFとPNGを例示したが、他の方式を適用することもできる。
送信制御部17は、圧縮部16によって圧縮されたデスクトップ画面の画像及び更新矩形の画像の符号化データをクライアント端末40に送信するように送信部18を制御する処理部である。例えば、送信制御部17は、デスクトップ画面の画像及び更新矩形の画像の符号化データに送信時刻を付加してクライアント端末40に送信するように送信部18を制御する。この際に、タイミング決定部21により、送信タイミングが指示されている場合には、送信制御部17は、指示された送信タイミングで、送信時刻が付加された符号化データを送信するように送信部18を制御する。
送信部18は、送信制御部17の制御によって、送信時刻が付加されたデスクトップ画面の画像及び更新矩形の画像の符号化データをクライアント端末40の受信部50に送信する。ここで、送信部18と受信部50とは、互いに、例えば、3G、WiMAX(Worldwide Interoperability for Microwave Access)、LTE(Long Term Evolution)などの通信規格により通信可能である。
フレームレート受信部19は、クライアント端末40の表示部41のフレームレートF1(fps)、及び、クライアント端末30の表示部32のフレームレートF2(fps)のうち、小さい方のフレームレートを取得する処理部である。例えば、フレームレート受信部19は、クライアント端末40のフレームレート送信部48によりフレームレートF1及びフレームレートF2のうち小さい方のフレームレートが送信されると、送信されたフレームレートを受信する。このようにして、フレームレート受信部19は、フレームレートF1及びフレームレートF2のうち、小さい方のフレームレートを取得する。そして、フレームレート受信部19は、取得したフレームレートを帯域推定部20に送信する。ここで、フレームレートF1は、送信部18により送信された画像データが示す画像を表示部41が表示した際のフレームレートである。また、フレームレートF2は、送信部18により送信された画像データが示す画像を表示部32が表示した際のフレームレートである。ここで、フレームレートF1の逆数1/F1は、送信部18により送信された画像データに基づいた画像を表示部41が表示する際の当該画像全体の描画の開始から完了までの時間を示す情報である。また、フレームレートF2の逆数1/F2は、送信部18により送信された画像データに基づいた画像を表示部32が表示する際の当該画像全体の描画の開始から完了までの時間を示す情報である。
帯域推定部20は、フレームレート受信部19から送信されたフレームレートの逆数が示す画像全体の描画の開始から完了までの時間が考慮された送信部18と受信部50と間の通信経路の帯域を推定する処理部である。例えば、帯域推定部20は、画像データが送信部18から送信されてから受信部50で受信されるまでの時間(sec)をクライアント端末40の時間算出部53から取得する。そして、帯域推定部20は、送信部18によって送信された画像データのデータサイズ(bit)を、取得した時間とフレームレート受信部19から送信されたフレームレートの逆数が示す時間との和(sec)で除して、通信経路の帯域を算出する。そして、帯域推定部20は、算出した帯域を、送信部18と受信部50と間の通信経路の帯域として推定する。このようにして、帯域推定部20は、フレームレート受信部19から送信されたフレームレートの逆数が示す画像全体の描画の開始から完了までの時間が考慮された送信部18と受信部50と間の通信経路の帯域を推定する。
タイミング決定部21は、帯域推定部20により推定された帯域に収まるように、送信部18により画像データがクライアント端末40に送信されるタイミング(送信タイミング)を決定する。例えば、タイミング決定部21は、送信部18により前回画像データが送信されてから、送信部18により今回送信される予定の画像データが送信されるタイミングまでの時間Tnew(sec)を、下記の式(1)により算出する。
ここで、Tai−1は、帯域推定部20により推定された最新の帯域である。また、IMGi−1は、送信部18により前回送信された画像データのデータサイズである。また、IMGiは、送信部18により今回送信される予定の画像データのデータサイズである。また、Tdxは、フレームレート受信部19から送信された最新のフレームレートの逆数である。なお、Tdxは、フレームレート受信部19から送信された最新のフレームレートから所定個前のフレームレートまでのそれぞれのフレームレートの逆数の平均値であってもよい。
そして、タイミング決定部21は、送信部18により前回画像データが送信されてからの経過時間が、時間Tnewに達した場合に、今回送信される予定の画像データを送信するように送信制御部17に指示する。これにより、クライアント端末30またはクライアント端末40で、ある1つの画面または更新矩形の画像の全体の描画が完了した時点で、次に描画される画面または更新矩形の画像の画像データが受信されるように、画像データの送信間隔が調整される。
なお、OS実行制御部11、リモート画面制御部12には、各種の集積回路や電子回路を採用できる。また、リモート画面制御部12に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)が挙げられる。また、電子回路としては、CPU(Central Processing Unit)やMPU(Micro Processing Unit)などが挙げられる。
[クライアント端末30の構成]
次に、本実施例に係るクライアント端末30の機能的構成について説明する。図1に示すように、クライアント端末30は、入力部31と、表示部32と、リモート画面制御部33とを有する。なお、図1の例では、図1に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば音声出力部などの機能を有するものとする。
入力部31は、各種の情報、例えば、リモート画面制御部33に対する指示入力を受け付ける入力デバイスであり、一例としては、キーボードやマウスなどを適用できる。なお、表示部32も、マウスと協働して、ポインティングデバイス機能を実現する。
表示部32は、各種の情報、例えばサーバ10から送信されたデスクトップ画面などを表示する表示デバイスであり、一例としては、モニタ、ディスプレイやタッチパネルなどを適用できる。
リモート画面制御部33は、第1のクライアント側のリモート画面制御用アプリを通じて、クライアント端末40を介してサーバ10によるリモート画面制御サービスの提供を受ける処理部である。このリモート画面制御部33は、図1に示すように、操作情報通知部34と、フレームレート計測部35と、受信部36と、デコーダ37と、表示制御部38とを有する。
操作情報通知部34は、入力部31による受け付けられた操作の操作情報をクライアント端末40へ通知する処理部である。操作情報通知部34は、上述した各種の操作情報をクライアント端末40へ通知する。
フレームレート計測部35は、表示部32の画面が更新されるたびに、上述したフレームレートF2を計測し、計測したフレームレートF2をクライアント端末40へ通知する。
受信部36は、サーバ10の送信部18により送信されたデスクトップ画面の画像及び更新矩形の画像の符号化データを受信する処理部である。例えば、受信部36は、後述する中継部49により送信されたデスクトップ画面の画像及び更新矩形の画像の符号化データを受信する。
デコーダ37は、受信部36によって受信されたデスクトップ画面の画像及び更新矩形の画像の符号化データをデコードする処理部である。このデコーダ37には、サーバ10の圧縮部16が実行する圧縮の圧縮方式に適合するデコード方式のデコーダが採用される。
表示制御部38は、デコーダ37によってデコードされたデスクトップ画面の画像及び更新矩形の画像を表示部32に表示させる処理部である。一態様としては、表示制御部38は、デスクトップ画面を表示部32の画面領域に表示させる。また、表示制御部38は、受信部36によって受信された更新矩形の画像の属性情報に含まれる位置および大きさに対応する表示部32の画面領域に更新矩形のビットマップ画像を表示させる。
なお、リモート画面制御部33には、各種の集積回路や電子回路を採用できる。また、リモート画面制御部33に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ASICやFPGAが挙げられる。また、電子回路としては、CPUやMPUなどが挙げられる。
[クライアント端末40の構成]
次に、本実施例に係るクライアント端末40の機能的構成について説明する。図1に示すように、クライアント端末40は、表示部41と、リモート画面制御部42とを有する。なお、図1の例では、図1に示した機能部以外にも既知のコンピュータが有する各種の機能部、例えば音声出力部などの機能を有するものとする。
表示部41は、各種の情報、例えばサーバ10から送信されたデスクトップ画面などを表示する表示デバイスであり、一例としては、モニタ、ディスプレイやタッチパネルなどを適用できる。
リモート画面制御部42は、第2のクライアント側のリモート画面制御用アプリを通じて、サーバ10によるリモート画面制御サービスの提供を受ける処理部である。このリモート画面制御部42は、図1に示すように、操作情報受信部43と、操作情報通知部44と、操作判断部45と、フレームレート受信部46と、フレームレート計測部47と、フレームレート送信部48と、中継部49と、受信部50とを有する。また、リモート画面制御部42は、デコーダ51と、表示制御部52と、時間算出部53とを有する。
操作情報受信部43は、操作情報通知部34により通知された操作情報を受信する処理部である。操作情報受信部43は、受信した操作情報を操作情報通知部44及び操作判断部45に送信する。
操作情報通知部44は、操作情報受信部43により受信された操作情報をサーバ10へ通知する処理部である。操作情報通知部44は、各種の操作情報をサーバ10へ通知する。
操作判断部45は、クライアント端末30が利用者により操作されたか否かを判断する処理部である。例えば、操作判断部45は、操作情報受信部43によって送信された操作情報を受信すると、クライアント端末30が利用者により操作されたと判断する。そして、クライアント端末30が利用者により操作されたと判断すると、操作判断部45は、フレームレートF1及びフレームレートF2のうち、小さい方のフレームレートをサーバ10に送信するようにフレームレート送信部48に指示する。
フレームレート受信部46は、フレームレート計測部35により通知されたフレームレートF2を受信する処理部である。フレームレート受信部46は、受信したフレームレートF2をフレームレート送信部48に送信する。
フレームレート計測部47は、表示部41の画面が更新されるたびに、上述したフレームレートF1を計測し、計測したフレームレートF1をフレームレート送信部48に送信する。
フレームレート送信部48は、フレームレートF1及びフレームレートF2のうち、小さい方のフレームレートをサーバ10に送信する処理部である。例えば、フレームレート送信部48は、フレームレートF1及びフレームレートF2のうち、小さい方のフレームレートをサーバ10に送信するように指示されると、次の処理を行う。すなわち、フレームレート送信部48は、フレームレート受信部46により送信された最新のフレームレートF2と、フレームレート計測部47により送信された最新のフレームレートF1とを比較し、値が小さい方のフレームレートをサーバ10に送信する。ここで、クライアント端末30の各種の処理能力が、クライアント端末40の各種の処理能力よりも低く、フレームレートについてもクライアント端末30の方が小さい場合には、フレームレート送信部48は、次の処理を行う。すなわち、フレームレート送信部48は、フレームレートF1及びフレームレートF2のうち、フレームレートF2をサーバ10に送信する。
中継部49は、受信部50により受信された各種の符号化データを中継し、クライアント端末30へ送信する処理部である。例えば、中継部49は、受信部50によりデスクトップ画面の画像または更新矩形の画像の符号化データが受信された場合には、受信された符号化データをクライアント端末30の受信部36に送信する。
受信部50は、サーバ10の送信部18により送信されたデスクトップ画面の画像及び更新矩形の画像の符号化データを受信する処理部である。受信部50は、サーバ10の送信部18により送信されたデスクトップ画面の画像または更新矩形の画像の符号化データを受信すると、受信した符号化データを中継部49及びデコーダ51に送信する。
デコーダ51は、受信部50によって受信されたデスクトップ画面の画像及び更新矩形の画像の符号化データをデコードする処理部である。このデコーダ51には、サーバ10の圧縮部16が実行する圧縮の圧縮方式に適合するデコード方式のデコーダが採用される。
表示制御部52は、デコーダ51によってデコードされたデスクトップ画面の画像及び更新矩形の画像を表示部41に表示させる処理部である。一態様としては、表示制御部52は、デスクトップ画面を表示部41の画面領域に表示させる。また、表示制御部52は、受信部50によって受信された更新矩形の画像の属性情報に含まれる位置および大きさに対応する表示部41の画面領域に更新矩形のビットマップ画像を表示させる。
時間算出部53は、画像データが送信部18から送信されてから受信部50で受信されるまでの時間(sec)を算出する。例えば、時間算出部53は、画像データが受信部50で受信されるたびに、次の処理を行う。すなわち、時間算出部53は、受信部50が画像データを受信した時刻(受信時刻)から、受信部50が受信した画像データに付加された送信時刻を減じることにより、画像データが送信されてから受信されるまでの時間を算出する。そして、時間算出部53は、時間を算出するたびに、算出した時間を帯域推定部20に送信する。
なお、リモート画面制御部42には、各種の集積回路や電子回路を採用できる。また、リモート画面制御部42に含まれる機能部の一部を別の集積回路や電子回路とすることもできる。例えば、集積回路としては、ASICやFPGAが挙げられる。また、電子回路としては、CPUやMPUなどが挙げられる。
次に、本実施例に係るシンクライアントシステム1の各装置間のデータの流れの一例について説明する。図2は、本実施例に係るシンクライアントシステムの各装置間のデータの流れの一例を示す図である。なお、図2の例では、クライアント端末30の表示部32のフレームレートF2のほうが、クライアント端末40の表示部41のフレームレートF1よりも小さい場合を想定する。また、クライアント端末30及びクライアント端末40間の通信経路の帯域は、非常に広く、クライアント端末30及びクライアント端末40間では、データ送信の遅延時間が無視できる程度に小さいものとする。
図2に示すように、サーバ10は、デスクトップ画面の画像データ(i番目に送信する画像データ;iは、画像データを送信する順番を示す数値)をクライアント端末40に送信する(S1)。なお、画像データには、符号化データが含まれるものとする。クライアント端末40は、デスクトップ画面の画像データを受信すると、受信した画像データをクライアント端末40に送信する(S2)。クライアント端末30は、デスクトップ画面の画像データを受信すると、受信した画像データに基づいたデスクトップ画面を表示部32に表示させる(S3)。ここで、図2の例では、表示部32にデスクトップ画面全体を描画する際に、描画の開始から完了まで時間T1かかったものとする。そして、クライアント端末30は、フレームレートF2(1/T1)をクライアント端末40に送信する(S4)。
ここで、表示部32においてデスクトップ画面全体の描画が完了する時刻に、更新矩形の画像データ(i+1番目に送信する画像データ)がクライアント端末30で受信されるように、シンクライアントシステム1では次の処理が行われる。すなわち、サーバ10から更新矩形の画像データ(i+1番目に送信する画像データ)がクライアント端末40に送信され(S5)、クライアント端末40から更新矩形の画像データがクライアント端末30に送信される(S6)。これにより、クライアント端末30は、クライアント端末40から送信された更新矩形の画像データに基づいた画像の描画を行う(S7)。
そして、クライアント端末40は、フレームレートF1とフレームレートF2とを比較し、小さい方のフレームレートF2をサーバ10に通知する(S8)。そして、サーバ10は、上述の時間Tnewを算出し、i+1番目の画像データが送信されてからの経過時間が、時間Tnewに達した場合に、更新矩形の画像の画像データ(i+2番目に送信する画像データ)をクライアント端末40に送信する(S9)。そして、クライアント端末40は、クライアント端末30において更新矩形の画像データに基づいた画像の描画が完了した時点で、更新矩形の画像の画像データ(i+2番目に送信する画像データ)がクライアント端末30で受信されるように次の処理を行う。すなわち、クライアント端末40は、かかる画像データをクライアント端末30に送信する(S10)。ここで、図2の例では、表示部32に更新矩形の画像データに基づいた画像全体を描画する際に、描画の開始から完了まで時間T2かかったものとする。
[処理の流れ]
次に、本実施例に係るクライアント端末30が実行する処理の流れについて説明する。図3は、実施例に係るクライアント端末30が実行する処理の手順を示すフローチャートである。
図3に示すように、操作情報通知部34は、入力部31によって操作が受け付けられたか否かを判定する(S101)。操作が受け付けられていない場合(S101;No)には、操作情報通知部34は、再びS101の判定を行う。一方、操作が受け付けられた場合(S101;Yes)には、操作情報通知部34は、受け付けられた操作の操作情報をクライアント端末40へ通知する(S102)。
受信部36は、サーバ10の送信部18により送信されたデスクトップ画面の画像の符号化データまたは更新矩形の画像の符号化データを受信したか否かを判定する(S103)。受信していない場合(S103;No)には、受信部36は、再びS103の判定を行う。一方、受信した場合(S103;Yes)には、デコーダ37は、受信部36によって受信されたデスクトップ画面の画像または更新矩形の画像の符号化データをデコードする(S104)。
そして、表示制御部38は、デコーダ37によってデコードされたデスクトップ画面の画像または更新矩形の画像を表示部32に表示させる(S105)。そして、フレームレート計測部35は、上述したフレームレートF2を計測し、計測したフレームレートF2をクライアント端末40へ通知し(S106)、S101に戻る。
次に、本実施例に係るクライアント端末40が実行するフレームレート送信処理の流れについて説明する。図4は、実施例に係るクライアント端末40が実行するフレームレート送信処理の手順を示すフローチャートである。
図4に示すように、操作情報受信部43は、操作情報通知部34により通知された操作情報を受信したか否かを判定する(S201)。受信していない場合(S201;No)には、操作情報受信部43は、再びS201の判定を行う。一方、受信した場合(S201;Yes)には、操作情報受信部43は、受信した操作情報を操作情報通知部44及び操作判断部45に送信する(S202)。
そして、操作情報通知部44は、操作情報受信部43により送信された操作情報をサーバ10へ通知する(S203)。
そして、操作判断部45は、操作情報受信部43によって送信された操作情報を受信すると、クライアント端末30が利用者により操作されたと判断し、次の処理を行う。すなわち、操作判断部45は、フレームレートF1及びフレームレートF2のうち、小さい方のフレームレートをサーバ10に送信するようにフレームレート送信部48に指示する(S204)。
フレームレート送信部48は、フレームレート受信部46により送信された最新のフレームレートF2と、フレームレート計測部47により送信された最新のフレームレートF1とを比較し、値が小さい方のフレームレートをサーバ10に送信する(S205)。そして、S201に戻る。
次に、本実施例に係るクライアント端末40が実行する表示制御処理の流れについて説明する。図5は、実施例に係るクライアント端末40が実行する表示制御処理の手順を示すフローチャートである。
図5に示すように、受信部50は、サーバ10の送信部18により送信されたデスクトップ画面の画像または更新矩形の画像の符号化データを受信したか否かを判定する(S301)。受信していない場合(S301;No)には、受信部50は、再びS301の判定を行う。一方、受信した場合(S301;Yes)には、受信部50は、受信したデスクトップ画面の画像または更新矩形の画像の符号化データを中継部49及びデコーダ51に送信する(S302)。
中継部49は、受信部50により送信された符号化データをクライアント端末30の受信部36に送信する(S303)。
デコーダ51は、受信部50により送信されたデスクトップ画面の画像及び更新矩形の画像の符号化データをデコードする(S304)。そして、表示制御部52は、デコーダ51によってデコードされたデスクトップ画面の画像または更新矩形の画像を表示部41に表示させる(S305)。
そして、時間算出部53は、画像データが送信部18から送信されてから受信部50で受信されるまでの時間(sec)を算出し、算出した時間を帯域推定部20に送信し(S306)、S301に戻る。
次に、本実施例に係るサーバ10が実行する画面送信処理の流れについて説明する。図6は、実施例に係るサーバ10が実行する画面送信処理の手順を示すフローチャートである。
図6に示すように、操作情報取得部13は、クライアント端末40の操作情報通知部44から操作情報が通知されたか否かを判定する(S401)。通知されていない場合(S401;No)には、操作情報取得部13は、再びS401の判定を行う。一方、通知された場合(S401;Yes)には、操作情報取得部13は、操作情報通知部44から通知された操作情報を取得する(S402)。
そして、OS実行制御部11は、操作情報取得部13により取得された操作情報から画面のスクロール指示などの各種の指示を検出する(S403)。例えば、OS実行制御部11は、操作情報から画面上のリンクがタップされる操作を検出した場合には、タップされたリンクに対応するURLを特定する。そして、OS実行制御部11は、特定したURLに対応するページを送信する要求をWebサーバ90に送信することにより、Webサーバ90からページを取得する。そして、OS実行制御部11は、取得したページに対応する画面の生成を画面生成部14へ指示する。また、OS実行制御部11は、操作情報から画面のスクロール操作を検出した場合には、検出したスクロール操作によるスクロールが行われた場合にクライアント端末30で表示される画面の生成を画面生成部14へ指示する。
そして、画面生成部14は、OS実行制御部11の指示にしたがって、クライアント端末30の表示部32に表示させる画面の画像を生成し、図示しないフレームバッファに生成した画面の画像(フレーム)を書き込む(S404)。
そして、更新矩形生成部15は、前回のフレーム生成時にクライアント端末30で表示させていたデスクトップ画面と、今回のフレーム生成時に図示しないフレームバッファへ書き込まれたデスクトップ画面とを比較する。そして、更新矩形生成部15は、前回のフレームから変更があった部分の画素をつなげ合わせた上で矩形に整形した更新矩形の画像を生成し、生成した画像を圧縮部16に送信する(S405)。なお、更新矩形生成部15は、前回のフレームが存在しない場合には、今回のフレーム生成時に図示しないフレームバッファへ書き込まれたデスクトップ画面の画像を圧縮部16に送信する。
そして、圧縮部16は、更新矩形生成部15によって送信されたデスクトップ画面の画像及び更新矩形の画像を所定の圧縮方式で圧縮(エンコード)する(S406)。
そして、送信制御部17は、デスクトップ画面の画像及び更新矩形の画像の符号化データに送信時刻を付加してクライアント端末40に送信するように送信部18を制御する。この際に、タイミング決定部21により、送信タイミングが指示されている場合には、送信制御部17は、指示された送信タイミングで、送信時刻が付加された符号化データを送信するように送信部18を制御する(S407)。
送信部18は、送信制御部17の制御によって、送信時刻が付加されたデスクトップ画面の画像及び更新矩形の画像の符号化データをクライアント端末40の受信部50に送信し(S408)、S401に戻る。
次に、本実施例に係るサーバ10が実行するタイミング決定処理の流れについて説明する。図7は、実施例に係るサーバ10が実行するタイミング決定処理の手順を示すフローチャートである。
図7に示すように、帯域推定部20は、時間算出部53から送信された、画像データが送信部18から送信されてから受信部50で受信されるまでの時間(sec)を受信したか否かを判定する(S501)。受信していない場合(S501;No)には、帯域推定部20は、再びS501の判定を行う。一方、受信した場合(S501;Yes)には、帯域推定部20は、送信部18によって送信された画像データのデータサイズ(bit)を、受信した時間とフレームレート受信部19から送信されたフレームレートの逆数が示す時間との和(sec)で除して、通信経路の帯域を算出する。そして、帯域推定部20は、算出した帯域を、送信部18と受信部50と間の通信経路の帯域として推定する(S502)。
タイミング決定部21は、送信部18により前回画像データが送信されてから、送信部18により今回送信される予定の画像データが送信されるタイミングまでの時間Tnew(sec)を、上記の式(1)により算出する(S503)。
そして、タイミング決定部21は、送信部18により前回画像データが送信されてからの経過時間が、時間Tnewに達した場合に、今回送信される予定の画像データを送信するように送信制御部17に指示し(S504)、S501に戻る。
上述してきたように、本実施例に係るサーバ10は、クライアント端末30で、ある1つの画面または更新矩形の画像の全体の描画が完了した時点で、次に描画される画面または更新矩形の画像の画像データが受信されるように、画像データの送信間隔を調整する。これにより、クライアント端末30において、ある画面または更新矩形の画像の全体の描画が完了する前に、次々と画像データがクライアント端末40を介してサーバ10から送信され、描画する画像データが蓄積されるような事態の発生を抑制することができる。この結果、クライアント端末30では、利用者によるスクロール操作が終了したにも関わらず、画面のスクロールが継続されてしまうような事態の発生を抑制することができる。したがって、サーバ10によれば、クライアント端末30における操作性の悪化を抑制することができる。
また、サーバ10は、クライアント端末30で、ある1つの画面または更新矩形の画像の全体の描画が完了した時点で、次に描画される画面または更新矩形の画像の画像データが受信されるように、画像データの送信間隔を調整する。それゆえ、サーバ10によれば、クライアント端末30で、ある1つの画面または更新矩形の画像の全体の描画が完了してから、次に描画される画像データが受信されるまでの間隔が長くなるような事態の発生を抑制する。したがって、サーバ10によれば、クライアント端末30における画像の描画の遅延を抑制することができる。
また、本実施例では、クライアント端末40は、第1のクライアント側のリモート画面制御用アプリが実行する処理に加え、画像データの中継、小さい方のフレームレートの送信などの処理を行うだけである。それゆえ、本実施例では、クライアント端末40は、第1のクライアント側のリモート画面制御用アプリが実行する処理と同程度の処理を行うだけで、クライアント端末30と連携することができる。したがって、本実施例に係るシンクライアントシステム1では、クライアント端末40の処理負荷を大きくせずに、クライアント端末40とクライアント端末30とを連携させることができる。
また、クライアント端末30は、サーバ10との通信機能を持たずとも、サーバ10からのサービスの提供を受けることができるので、クライアント端末30の低コスト化をも図ることができる。
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。
例えば、実施例において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともできる。また、実施例において説明した各処理のうち、手動的に行われるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理を任意に細かくわけたり、あるいはまとめたりすることができる。また、ステップを省略することもできる。
また、各種の負荷や使用状況などに応じて、実施例において説明した各処理の各ステップでの処理の順番を変更できる。
また、図示した各装置の各構成要素は機能概念的なものであり、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各装置の分散・統合の具体的状態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。
[画面制御プログラム]
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図8を用いて、上記の実施例と同様の機能を有する画面制御プログラムを実行するコンピュータの一例について説明する。
図8は、実施例1及び実施例2に係る画面制御プログラムを実行するコンピュータの一例について説明するための図である。図8に示すように、コンピュータ100は、操作部110aと、スピーカ110bと、カメラ110cと、ディスプレイ120と、通信部130とを有する。さらに、このコンピュータ100は、CPU150と、ROM160と、HDD170と、RAM180とを有する。これら110〜180の各部はバス140を介して接続される。
HDD170には、図8に示すように、上記の実施例で示したリモート画面制御部12またはリモート画面制御部12及びOS実行制御部11と同様の機能を発揮する画面制御プログラム170aが予め記憶される。この画面制御プログラム170aについては、図1に示した各々のリモート画面制御部12の各構成要素と同様、適宜統合又は分離しても良い。すなわち、HDD170に格納される各データは、常に全てのデータがHDD170に格納される必要はなく、処理に必要なデータのみがHDD170に格納されれば良い。
そして、CPU150が、画面制御プログラム170aをHDD170から読み出してRAM180に展開する。これによって、画面制御プログラム170aは、画面制御プロセスとして機能する。この画面制御プロセスは、HDD170から読み出した各種データを適宜RAM180上の自身に割り当てられた領域に展開し、この展開した各種データに基づいて各種処理を実行する。なお、画面制御プロセスは、図1に示したリモート画面制御部12にて実行される処理を含む。また、CPU150上で仮想的に実現される各処理部は、常に全ての処理部がCPU150上で動作する必要はなく、処理に必要な処理部のみが仮想的に実現されれば良い。
なお、上記の画面制御プログラム170aについては、必ずしも最初からHDD170やROM160に記憶させておく必要はない。例えば、コンピュータ100に挿入されるフレキシブルディスク、いわゆるFD、CD−ROM、DVDディスク、光磁気ディスク、ICカードなどの「可搬用の物理媒体」に各プログラムを記憶させる。そして、コンピュータ100がこれらの可搬用の物理媒体から各プログラムを取得して実行するようにしてもよい。また、公衆回線、インターネット、LAN、WANなどを介してコンピュータ100に接続される他のコンピュータまたはサーバ装置などに各プログラムを記憶させておき、コンピュータ100がこれらから各プログラムを取得して実行するようにしてもよい。