(57)【要約】【課題】スクロール操作に対するレスポンスの低下を抑制すること。【解決手段】画面転送装置２０は、メモリに格納された画像データのうち、端末装置から取得される操作情報により定まるスクロール量にしたがって端末装置の表示部に表示させる画像データの表示範囲を設定する処理と、表示範囲内で更新がある領域の更新頻度を測定する処理と、メモリに格納された画像データのうち、更新頻度の測定結果が存在する領域が表示範囲の変更によって表示範囲の内から外へ遷移する場合、領域の画像データをメモリからキャプチャする頻度を更新頻度の測定結果に基づいて設定する処理とを実行する。【選択図】図１
2018005341.tif 000002
【特許請求の範囲】
【請求項１】
メモリに格納された画像データのうち、端末装置から取得される操作情報により定まるスクロール量にしたがって前記端末装置の表示部に表示させる前記画像データの表示範囲を設定する処理と、
前記表示範囲内で更新がある領域の更新頻度を測定する処理と、
前記メモリに格納された前記画像データのうち、前記更新頻度の測定結果が存在する領域が前記表示範囲の変更によって前記表示範囲の内から外へ遷移する場合、前記領域の画像データを前記メモリからキャプチャする頻度を前記更新頻度の測定結果に基づいて設定する処理と、
がコンピュータにより実行される画面転送方法。
【請求項２】
前記表示範囲の変更によって前記表示範囲の内から外へ遷移した第１の領域と、前記表示範囲内で更新頻度が測定された第２の領域とが前記表示範囲の境界を介して隣接するか否かを判定する処理が前記コンピュータにより実行され、
前記キャプチャ頻度を設定する処理は、前記第１の領域および前記第２の領域が前記表示範囲の境界を介して隣接すると判定される場合、前記第１の領域の画像データを前記メモリからキャプチャする頻度を前記第２の領域の更新頻度に基づいて設定することを特徴とする請求項１に記載の画面転送方法。
【請求項３】
アプリケーションが前記端末装置の表示画面の更新時にオペレーティングシステムへ発行する描画コマンドをフックすることにより得られた画像データを前記端末装置へ送信する処理が前記コンピュータにより実行されることを特徴とする請求項１または２に記載の画面転送方法。
【請求項４】
メモリに格納された画像データのうち、端末装置から取得される操作情報により定まるスクロール量にしたがって前記端末装置の表示部に表示させる前記画像データの表示範囲を設定する処理と、
前記表示範囲内で更新がある領域の更新頻度を測定する処理と、
前記メモリに格納された前記画像データのうち、前記更新頻度の測定結果が存在する領域が前記表示範囲の変更によって前記表示範囲の内から外へ遷移する場合、前記領域の画像データを前記メモリからキャプチャする頻度を前記更新頻度の測定結果に基づいて設定する処理と、
をコンピュータに実行させる画面転送プログラム。
【請求項５】
メモリに格納された画像データのうち、端末装置から取得される操作情報により定まるスクロール量にしたがって前記端末装置の表示部に表示させる前記画像データの表示範囲を設定する表示範囲設定部と、
前記表示範囲内で更新がある領域の更新頻度を測定する更新頻度測定部と、
前記メモリに格納された画像データのうち、前記更新頻度の測定結果が存在する領域が前記表示範囲の変更によって前記表示範囲の内から外へ遷移する場合、前記領域の画像データを前記メモリからキャプチャする頻度を前記更新頻度の測定結果に基づいて設定するキャプチャ設定部と、
を有することを特徴とする画面転送装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画面転送方法、画面転送プログラム及び画面転送装置に関する。
【背景技術】
【０００２】
スマートフォンを始めとする携帯電話機、ＰＨＳ（Personal  Handyphone  System）の他、スレート端末やタブレット端末等のモバイル端末の高性能とモバイル通信網の高速化により、モバイル端末の業務利用が拡大している。例えば、企業等の組織がモバイル端末を従業員に貸与したり、個人所有のスマートフォンを業務に活用するＢＹＯＤ（Bring  Your  Own  Device）等の事例も増加している。
【０００３】
モバイル端末を業務に利用する場合、クライアント端末にデータを残さない画面転送方式によるモバイルソリューションが注目されている。すなわち、クライアント端末は、画像データを受信して表示するだけの機能を備えればよい。このことから、上記の画面転送方式は、シンクライアント方式と呼ばれることもある。
【０００４】
シンクライアント方式では、ＲＤＰ（Remote  Desktop  Protocol）などを利用することにより、クライアント端末からサーバ装置へ操作情報が転送されたり、サーバ装置からクライアント端末へ画面情報が転送されたりする。このように画面情報をクライアント端末へ転送する場合、サーバ装置は、画面全体の画像データを転送する代わりに、画面の更新前後で差分がある更新部分に絞って画像データをクライアント端末へ転送する。
【０００５】
例えば、業務アプリケーション等が提供する業務画面がモバイル端末に表示される場合、業務アプリケーションが業務画面の更新時にＯＳ（Operating  System）へ発行する描画コマンドをフックする機能が用いられる。この機能によってフックされた描画コマンドにしたがって業務画面の更新部分に関する画像データが生成された後、更新部分の画像データがサーバからクライアント端末へ転送される。このようなＯＳ支援を利用することにより、画面転送時に業務アプリケーションが更新する業務画面を時系列に比較して差分を検出する処理を省略できる結果、処理負荷が低減される。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１４−２０７５２９号公報
【特許文献２】特開平０７−１７５６１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の技術では、スクロール操作に対するレスポンスが低下する場合がある。
【０００８】
すなわち、モバイル端末に表示される画面の大きさは、モバイル端末が有するディスプレイの解像度に依存する。このため、業務アプリケーション等が提供する業務画面の大きさは、モバイル端末がディスプレイに表示することができる表示範囲を超える場合がある。ところが、上記のＯＳ支援を利用したとしても、モバイル端末の表示範囲内の更新しか描画コマンドをフックすることができない。それ故、スクロール操作により業務画面の表示範囲が変更された場合、変更後に表示範囲に含まれる更新部分に関する差分検出および画像データの伝送がまとめて実施されることになる結果、レスポンスが低下する。
【０００９】
１つの側面では、本発明は、スクロール操作に対するレスポンスの低下を抑制できる画面転送方法、画面転送プログラム及び画面転送装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
一つの態様では画面転送方法は、メモリに格納された画像データのうち、端末装置から取得される操作情報により定まるスクロール量にしたがって前記端末装置の表示部に表示させる画像データの表示範囲を設定する処理と、前記表示範囲内で更新がある領域の更新頻度を測定する処理と、前記メモリに格納された画像データのうち、前記更新頻度の測定結果が存在する領域が前記表示範囲の変更によって前記表示範囲の内から外へ遷移する場合、当該領域の画像データを前記メモリからキャプチャする頻度を前記更新頻度の測定結果に基づいて設定する処理と、がコンピュータにより実行される。
【発明の効果】
【００１１】
１つの側面として、スクロール操作に対するレスポンスの低下を抑制できる。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施例１に係るシンクライアントシステムに含まれる各装置の機能的構成を示すブロック図である。
【図２】図２は、可視領域および不可視領域の遷移の一例を示す図である。
【図３】図３は、更新マップの遷移の一例を示す図である。
【図４】図４は、可視領域および不可視領域の遷移の一例を示す図である。
【図５】図５は、更新マップの遷移の一例を示す図である。
【図６】図６は、実施例１に係る画像データの送信処理の手順を示すフローチャートである。
【図７】図７は、実施例１に係るキャプチャ設定の通知処理の手順を示すフローチャートである。
【図８】図８は、実施例１及び実施例２に係る画面転送プログラムを実行するコンピュータのハードウェア構成例を示す図である。
【発明を実施するための形態】
【００１３】
以下に添付図面を参照して本願に係る画面転送方法、画面転送プログラム及び画面転送装置について説明する。なお、この実施例は開示の技術を限定するものではない。そして、各実施例は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
【実施例１】
【００１４】
［システム構成］
図１は、実施例１に係るシンクライアントシステムに含まれる各装置の機能的構成を示すブロック図である。図１に示すシンクライアントシステム１は、Ａｐｐ（Application）サーバ３０が生成する画面の画像データをクライアント端末１０へ転送する画面転送サービスを提供するものである。
【００１５】
以下では、あくまで画面転送サービスの一例として、上記のシンクライアント方式により、業務システムとして構築されたＡｐｐサーバ３０が生成または更新を行うＰＣ向けの業務画面の画像データをモバイル端末として実装されるクライアント端末１０へ転送する場合を例に挙げて説明を行うこととする。
【００１６】
図１に示すように、シンクライアントシステム１は、クライアント端末１０と、画面転送装置２０と、Ａｐｐサーバ３０とを有する。図１には、１つの画面転送装置２０につき１つのクライアント端末１０が接続される場合を例示したが、１つの画面転送装置２０に複数のクライアント端末１０を接続することもできる。
【００１７】
これらクライアント端末１０及び画面転送装置２０は、ネットワークＮを介して、相互に通信可能に接続される。このネットワークＮは、任意の通信網により構築することができる。例えば、クライアント端末１０がモバイル端末として実装される場合、ネットワークＮの一部に３Ｇ、３．９Ｇ、４Ｇや５Ｇなどの任意の世代の規格に対応する移動体通信網、いわゆるモバイルネットワークが含まれることとしてもかまわない。
【００１８】
クライアント端末１０は、上記の画面転送サービスの提供を受ける側のコンピュータである。
【００１９】
一実施形態として、クライアント端末１０には、スマートフォンを始めとする携帯電話機やＰＨＳの他、スレート端末やタブレット端末等のモバイル端末を採用できる。この場合、クライアント端末１０は、企業等の組織が貸与するモバイル端末を用いることとしてもよいし、ＢＹＯＤ向けのモバイル端末を用いることもできる。以下では、あくまで一例としてクライアント端末１０がモバイル端末として実装される場合を例に挙げて説明を行うこととするが、クライアント端末１０が据置き型またはノート型のパーソナルコンピュータとして実装されることを妨げる訳ではない。
【００２０】
画面転送装置２０は、上記の画面転送サービスを提供する側のコンピュータである。
【００２１】
一実施形態として、画面転送装置２０は、業務システムとして構築されたＡｐｐサーバ３０と、ネットワークＮとの境界にゲートウェイ装置として配置される。このような配置の下、画面転送装置２０は、業務システムへのアクセスが許可されたアカウントごとにログイン認証を行ったり、ログインに成功したクライアント端末１０のセッションごとに上記の画面転送サービスを提供する。このような実装により、既存の業務システムの改修等を最小限に抑えることができる。加えて、上記のシンクライアント方式により、業務画面が画像として転送されるので、クライアント端末１０上で実行されるＯＳの種類ごとに業務画面を準備せずともよい。
【００２２】
Ａｐｐサーバ３０は、業務アプリケーションを実行するサーバ装置である。
【００２３】
一実施形態として、Ａｐｐサーバ３０は、パッケージソフトウェアやオンラインソフトウェアとして提供される既存の業務アプリケーション、例えば営業や顧客支援などの各種の業務に関するアプリケーションプログラムをサーバ装置等のコンピュータに実行させることにより、業務システムを実現するＷｅｂサーバとして実装することができる。なお、ここでは、オンプレミス型のシンクライアントシステムを例示したが、必ずしもシンクライアントシステムの実装形態はこれに限定されない。例えば、上記の画面転送サービスや業務システムに関する機能をアウトソーシングにより提供するクラウド型のシンクライアントシステムとして構築することもできる。
【００２４】
例えば、Ａｐｐサーバ３０は、ログインに成功したクライアント端末１０のセッションごとに、ＨＴＭＬ（HyperText  Markup  Language）で記述された業務画面のＨＴＭＬ文書を生成すると共に当該業務画面のＨＴＭＬ文書を閲覧するブラウザを実行する。その後、Ａｐｐサーバ３０は、クライアント端末１０から画面転送装置２０を介して転送される操作情報にしたがって業務画面を更新する。この業務画面の更新に連動して、Ａｐｐサーバ３０上で実行されるブラウザは、更新後の業務画面のＨＴＭＬ文書をレンダリングすることにより、ビットマップ形式の業務画面の画像データを生成する。このようにブラウザが描画する業務画面の画像データは、当該ブラウザがワークエリアとして用いる描画バッファに保存される。
【００２５】
ここで、上記のブラウザには、描画バッファに保存された業務画面の画像データをキャプチャする処理を外部から呼び出すＡＰＩがプラグインされた拡張型のブラウザを採用することができる。このようなＡＰＩを利用することによって、描画バッファに保存された業務画面の画像データを画面転送装置２０に取得させることができる。それ故、描画バッファから取得される業務画面の画像データを時系列に比較することにより、業務画面の全体のうちクライアント端末１０がディスプレイに表示することができる表示範囲を超える部分に関しても差分を検出することも可能である。以下では、業務画面のうちクライアント端末１０が有するディスプレイの表示範囲に該当する部分を「可視領域」と記載し、業務画面のうちクライアント端末１０のディスプレイの表示範囲外に該当する部分を「不可視領域」と記載する場合がある。
【００２６】
ところが、描画バッファから業務画面の画像データを取得する頻度を高くするほど、キャプチャおよび差分検出が実施される頻度が高まる結果、処理負荷が増大する。さらに、画面転送装置２０及びＡｐｐサーバ３０間で画像データが伝送される頻度も高まる結果、データの伝送量も増大する。一方、描画バッファから業務画面の画像データを取得する頻度を低くするほど、スクロール操作が行われたタイミングと描画バッファから業務画面がキャプチャされたタイミングとの時間差が拡大する。これによって、スクロール操作時に最新の業務画面が表示できない可能性も高まる結果、ミスマッチな業務画面の表示により操作感が損なわれる。
【００２７】
そこで、本実施例に係る画面転送装置２０は、描画バッファから業務画面の可視領域と共に不可視領域に関する画像データをキャプチャするが、その頻度は必ずしも不可視領域全体で均一とはしない。すなわち、画面転送装置２０は、業務画面の不可視領域の中でも可視領域である履歴を持つ部分には可視領域の時に測定された更新頻度にしたがってキャプチャ頻度を設定する。これによって、業務画面のキャプチャが実施される領域の大きさを絞り込むと共に、その領域でキャプチャが実施される頻度も適切に設定する。それ故、処理負荷および伝送量を抑制しつつ、業務画面の表示範囲の変更に備えて不可視領域の画像データを準備できる。したがって、スクロール操作に対するレスポンスの低下を抑制できる。
【００２８】
［画面転送装置の構成］
次に、本実施例に係る画面転送装置２０の機能的構成について説明する。図１に示すように、画面転送装置２０は、操作情報転送部２１と、表示範囲設定部２２と、フレームバッファ２３ａと、差分検出部２３と、画像送信部２４と、更新頻度測定部２５と、判定部２６と、設定通知部２７とを有する。
【００２９】
操作情報転送部２１、表示範囲設定部２２、差分検出部２３、画像送信部２４、更新頻度測定部２５、判定部２６及び設定通知部２７等の処理部は、次のように実装される。すなわち、上記の処理部は、中央処理装置、いわゆるＣＰＵ（Central  Processing  Unit）が図示しない主記憶装置として実装されるＤＲＡＭ（Dynamic  Random  Access  Memory）やＳＲＡＭ（Static  Random  Access  Memory）などのＲＡＭのワークエリア上に上記の画面転送サービスを実現する画面転送プログラムをプロセスとして展開することにより、仮想的に実現される。
【００３０】
ここでは、あくまで一例として、上記の画面転送プログラムの実行主体をＣＰＵとする場合を例示したが、上記の画面転送プログラムの実行主体はＣＰＵに限らず、ＭＰＵ（Micro  Processing  Unit）を実行主体とすることもできる。また、上記の機能部は、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）などのハードワイヤードロジックによっても実現できる。
【００３１】
また、フレームバッファ２３ａ等の記憶部は、ＲＡＭ等の半導体メモリ素子により実装できる。
【００３２】
なお、図１には、上記の画面転送サービスを実現する最小限の機能部が抜粋して示されているに過ぎず、既存のコンピュータが有する機能部であれば、図示以外の機能部が画面転送装置２０に備わることを妨げない。例えば、画面転送装置２０は、既存のコンピュータが有するハードウェア、例えばＮＩＣ（Network  Interface  Card）等の通信インタフェイスを有することとしてもよい。また、画面転送装置２０は、既存のコンピュータのプロセッサ上で実行される他のプログラム、例えばＯＳやミドルウェアなどにより仮想的に実現される処理部をさらに有することとしてもかまわない。これら既存のコンピュータが有する汎用の機能部は図示が省略されているが、上記の画面転送サービスを実現する上で有用な機能部は当然ながら具備されることは言うまでもない。
【００３３】
操作情報転送部２１は、操作情報を転送する処理部である。
【００３４】
一実施形態として、操作情報転送部２１は、クライアント端末１０から操作情報を受信する度に、当該操作情報をＡｐｐサーバ３０へ送信する。このように操作情報をＡｐｐサーバ３０へ送信する一方で、操作情報転送部２１は、クライアント端末１０から受信した操作情報のうち所定の種類に該当する操作情報を表示範囲設定部２２にも出力する。例えば、クライアント端末１０がタッチパネルを有するモバイル端末として実装される場合、操作の種類の例として、タップ、ダブルタップ、フリック、スワイプ、ロングタップ、ドラッグ、ピンチイン、ピンチアウトなどが挙げられる。この場合、操作情報転送部２１は、操作の種類がスクロール操作に対応するスワイプである操作情報を表示範囲設定部２２にも出力する。
【００３５】
表示範囲設定部２２は、業務画面の表示範囲を設定する処理部である。
【００３６】
一実施形態として、表示範囲設定部２２は、操作情報転送部２１により操作情報が出力される度に、当該操作情報にしたがって業務画面の表示範囲をシフトする。一方、表示範囲設定部２２は、操作情報転送部２１により操作情報が出力されない場合、表示範囲の設定を変更せずにその設定を維持する。例えば、クライアント端末１０がタッチパネルを有するモバイル端末として実装される場合、表示範囲設定部２２は、操作情報転送部２１から操作情報として、スワイプの移動方向および移動量などを取得することができる。このとき、表示範囲設定部２２は、スワイプの移動方向が左右方向である場合、すなわち左右のスクロール操作が行われた場合、業務画面の表示範囲を左方向または右方向へシフトする。また、表示範囲設定部２２は、スワイプの移動方向が上下方向である場合、すなわち上下のスクロール操作が行われた場合、業務画面の表示範囲を上方向または下方向へシフトする。これら上下左右のシフト量は、スワイプの移動量に対応して決定される。
【００３７】
差分検出部２３は、複数の業務画面の画像データの間で差分を検出する処理部である。
【００３８】
一実施形態として、差分検出部２３は、Ａｐｐサーバ３０から送信される業務画面の画像データと、フレームバッファ２３ａに記憶された業務画面の画像データとを比較することにより、差分を検出する。ここで、Ａｐｐサーバ３０から送信される画像データのフレーム番号を「Ｎ」であるとしたとき、フレームバッファ２３ａには、フレーム番号「Ｎ−１」の画像データが保存されるバッファ管理が実施されることとする。このようなバッファ管理により、業務画面の画像データが時系列に比較できる状態が構築される。
【００３９】
ここで、Ａｐｐサーバ３０から画面転送装置２０へ画像データが送信される頻度は、業務画面の全体で均一とは限らない。すなわち、上記の拡張型のブラウザの描画バッファに保存された業務画面の画像データをキャプチャする処理を外部から呼び出すＡＰＩを用いて、Ａｐｐサーバ３０から画面転送装置２０へ画像データが伝送される。このとき、業務画面全体の画像データを均一な頻度でキャプチャさせるとは限らず、少なくとも可視領域および不可視領域の間で画像データを拡張型のブラウザにキャプチャさせる頻度は変更される。例えば、可視領域の画像データをキャプチャさせる頻度は、不可視領域の画像データをキャプチャさせる頻度と同等もしくはそれ以上の頻度に設定される。数値の例を挙げれば、可視領域の画像データをキャプチャさせる頻度が３０ｆｐｓ（frame  per  second）に設定されるとしたとき、不可視領域の画像データをキャプチャさせる頻度は３０ｆｐｓ以下に設定される。さらに、不可視領域の中でも表示範囲の変更により可視領域から不可視領域へ遷移した部分には、可視領域であった時点で測定された更新頻度に準じてキャプチャ頻度が設定される一方で、それ以外の部分には、最低値、例えば１ｆｐｓのキャプチャ頻度が固定で設定される。
【００４０】
このような頻度でキャプチャされた画像データがＡｐｐサーバ３０から画面転送装置２０へ送信される度に、差分検出部２３は、次のような処理を実行する。すなわち、差分検出部２３は、Ａｐｐサーバ３０から画像データを受信すると、当該画像データの業務画面上の配置に対応する箇所の画像データをフレームバッファ２３ａから読み出す。そして、差分検出部２３は、Ａｐｐサーバ３０により送信された画像データと、フレームバッファ２３ａから読み出された画像データとの間で画素値が同一であるか否かを画素ごとに比較する。この結果、差分検出部２３は、画素値が同一でない画素を差分として検出する。その上で、差分検出部２３は、差分として検出された画素が存在する場合、フレームバッファ２３ａに記憶された業務画面のうちＡｐｐサーバ３０から受信した画像データの業務画面上の配置に対応する箇所をＡｐｐサーバ３０から受信した画像データに上書き保存する。これにより、上記のバッファ管理が実現される。その後、差分検出部２３は、業務画面上で差分が検出された画素を対象にラベリング処理を実行し、同一のラベルが付与されたブロブを矩形状に形成することにより、業務画面から「差分領域」を識別する。続いて、差分検出部２３は、業務画面から識別された差分領域が表示範囲設定部２２により設定された表示範囲に含まれるか否かを判定する。このとき、差分検出部２３は、差分領域が表示範囲に含まれる場合、当該差分領域に対応する画像データをフレームバッファ２３ａから読み出し、当該差分領域の画像データを所定の圧縮方式により圧縮した上でその符号化データを画像送信部２４へ出力する。差分領域が表示範囲に含まれない場合には、表示範囲に含まれる画像データ送信後に当該差分領域の画像データを所定の圧縮形式により圧縮した上でその符号化データを画像送信部２４へ出力する。なお、差分領域の画像データの圧縮は、静止画圧縮により実現することとしてもよいし、特開２０１１−２３８０１４号公報に開示される技術等のように、所定の期間、例えば１秒間で閾値以上の頻度で更新される場合に差分領域の画像データに動画圧縮を実施することとしてもかまわない。
【００４１】
画像送信部２４は、業務画面の画像データを送信する処理部である。
【００４２】
一実施形態として、画像送信部２４は、差分検出部２３により差分領域の符号化データが出力される度に、当該差分領域の符号化データをクライアント端末１０へ送信する。このように差分領域の符号化データを送信する場合、画像送信部２４は、クライアント端末１０にクライアント端末１０内のフレームバッファを更新させるために、少なくとも業務画面上の差分領域の位置および大きさを識別できる情報も送信する。例えば、差分領域の画像データが持つ左上の頂点の座標（ｘ，ｙ）、画像データの幅ｗおよび画像データの高さｈなどの要素が画像データと共に送信される。なお、位置および大きさは、必ずしも本例の通りに定義されずともよく、他の任意の方法、例えば領域の４点の座標により定義することもできる。
【００４３】
更新頻度測定部２５は、業務画面の更新頻度を測定する処理部である。
【００４４】
一実施形態として、更新頻度測定部２５は、業務画面を可視領域および不可視領域に分けて更新頻度を測定する。この更新頻度の測定には、一例として、可視領域の更新頻度を管理する第１の更新マップおよび不可視領域の更新頻度を管理する第２の更新マップが用いられる。これら第１の更新マップ及び第２の更新マップでは、最新のフレーム番号から遡って過去の所定のフレーム数、例えば３０フレーム以内で更新が行われた回数が更新頻度として管理される。
【００４５】
例えば、更新頻度測定部２５は、差分検出部２３により差分領域が検出される度に、可視領域内または不可視領域内の更新頻度の測定を実施することにより、第１の更新マップまたは第２の更新マップを生成する。例えば、更新頻度測定部２５は、最新のフレーム番号から遡って過去の所定のフレーム数にわたって識別された差分領域をメッシュ状に分割された可視領域上または不可視領域上にマッピングする。これによって、可視領域または不可視領域がメッシュ状に分割されたメッシュ要素ごとに更新頻度が得られる。その上で、更新頻度測定部２５は、更新頻度がゼロでないメッシュ要素のうち互いが連接するメッシュ要素同士を統合して矩形状に形成することにより、更新頻度がゼロでないメッシュ要素の統合領域を「更新領域」として抽出する。そして、更新頻度測定部２５は、先に抽出された更新領域に含まれるメッシュが持つ更新頻度のうち最高値を抽出することにより、更新領域ごとに最高値を代表値とする更新頻度が対応付けられた第１の更新マップまたは第２の更新マップを生成する。また、更新頻度測定部２５は先に抽出された更新領域に含まれるメッシュが持つ更新頻度を平均し、その値を代表値として更新領域に設定して第１の更新マップまたは第２の更新マップを生成しても良い。このようにして生成された第１の更新マップ及び第２の更新マップは、次のようなイベントの発生に伴って一部が更新される場合がある。
【００４６】
一側面として、更新頻度測定部２５は、表示範囲の変更がある場合、第１の更新マップ及び第２の更新マップに次のような更新を実施する。すなわち、更新頻度測定部２５は、第１の更新マップに含まれるエントリの中に、表示範囲の変更によって可視領域から不可視領域へ状態が遷移するエントリが存在する場合、当該エントリを第１の更新マップから第２の更新マップへ移行して登録する。これによって、表示範囲の変更によって可視領域から不可視領域へ遷移するエントリが第１の更新マップから削除されると共に第２の更新マップへ登録されることになる。このような移行登録は、可視領域で測定された更新頻度を不可視領域におけるキャプチャ頻度として援用するためである。さらに、更新頻度測定部２５は、第２の更新マップに含まれるエントリのうち不可視領域から可視領域へ状態が遷移するエントリが存在する場合、当該エントリの更新頻度を所定値、例えば最低値である１ｆｐｓへリセットする。
【００４７】
他の側面として、更新頻度測定部２５は、第１の更新マップ及び第２の更新マップの間で更新領域が重複するエントリが存在する場合、第２の更新マップから重複するエントリを削除する。
【００４８】
更なる側面として、更新頻度測定部２５は、第１の更新マップ及び第２の更新マップの間で隣接する更新領域が存在すると後述する判定部２６により判定された場合、次のような更新頻度の更新を実施する。すなわち、更新頻度測定部２５は、第２の更新マップに含まれる更新領域のうち第１の更新マップに含まれる更新領域と隣接する更新領域に対応付けられた更新頻度を第１の更新マップに含まれる更新領域の更新頻度と同一の値へ更新する。
【００４９】
判定部２６は、第１の更新マップ及び第２の更新マップの間で隣接する更新領域が存在するか否かを判定する処理部である。
【００５０】
一実施形態として、判定部２６は、表示範囲が変更された場合、または、前回のキャプチャ設定が通知されてから所定のフレーム数、例えば３０フレームに対応する期間、すなわち１秒間にわたって表示範囲の変更がない場合、次のような処理を実行する。すなわち、判定部２６は、第１の更新マップ及び第２の更新マップごとに、更新領域が持つ頂点の座標を算出する。例えば、更新領域の位置及び大きさが更新領域の左上の頂点の座標（ｘ，ｙ）、更新領域の幅ｗおよび更新領域の高さｈなどの要素により識別される場合、更新領域の右上の頂点の座標は（ｘ＋ｗ，ｙ）、更新領域の左下の頂点の座標は（ｘ，ｙ＋ｈ）、更新領域の右下の頂点の座標は（ｘ＋ｗ，ｙ＋ｈ）と算出することができる。その上で、判定部２６は、第１の更新マップに含まれる更新領域および第２の更新マップに含まれる更新領域の間で頂点の座標を比較する。このとき、少なくとも１つの頂点の座標が共通する更新領域の組合せが第１の更新マップ及び第２の更新マップの間で存在する場合、表示範囲を境界に隣接する更新領域が存在すると判断できる。
【００５１】
設定通知部２７は、キャプチャ設定を通知する処理部である。
【００５２】
一実施形態として、設定通知部２７は、Ａｐｐサーバ３０上で実行される拡張型のブラウザの描画バッファに保存された業務画面の画像データをキャプチャする処理を外部から呼び出すＡＰＩを用いる。このＡＰＩを用いる場合、設定通知部２７は、Ａｐｐサーバ３０に描画バッファから画像データをキャプチャさせる頻度と共に、Ａｐｐサーバ３０に描画バッファからキャプチャさせる画像データの位置およびサイズを設定し、これらをキャプチャ設定としてＡｐｐサーバ３０へ通知する。例えば、設定通知部２７は、０ｆｐｓ〜３０ｆｐｓのキャプチャ頻度と共に、キャプチャ位置およびキャプチャサイズの一例として、更新領域の左上の頂点の座標（ｘ，ｙ）、更新領域の幅ｗおよび更新領域の高さｈなどを含むキャプチャ設定をＡｐｐサーバ３０へ通知する。
【００５３】
例えば、可視領域は、次のようにしてキャプチャ設定がＡｐｐサーバ３０へ通知される。数値等の例を挙げれば、可視領域のキャプチャ頻度には、最高値である３０ｆｐｓを設定し、可視領域のキャプチャ位置及びキャプチャサイズには、表示範囲の左上の頂点の座標（ｘ，ｙ）、表示範囲の幅ｗおよび表示範囲の高さｈを設定し、これらキャプチャ頻度、キャプチャ位置及びキャプチャサイズがキャプチャ設定としてＡｐｐサーバ３０へ通知される。
【００５４】
また、不可視領域のうち第２の更新マップにエントリが存在する更新領域は、次のようにして、エントリごとにキャプチャ設定がＡｐｐサーバ３０へ通知される。数値等の例を挙げれば、更新領域のキャプチャ頻度には、更新領域の更新頻度を設定し、更新領域のキャプチャ位置及びキャプチャサイズには、更新領域の左上の頂点の座標（ｘ，ｙ）、更新領域の幅ｗおよび更新領域の高さｈを設定し、これらキャプチャ頻度、キャプチャ位置及びキャプチャサイズがキャプチャ設定としてＡｐｐサーバ３０へ通知される。
【００５５】
これらキャプチャ設定の通知は、表示範囲が変更された場合、または、前回のキャプチャ設定が通知されてから所定期間、例えば１秒間にわたって表示範囲の変更がない場合に実施される。
【００５６】
［Ａｐｐサーバの構成］
次に、本実施例に係るＡｐｐサーバ３０の機能的構成について説明する。図１に示すように、Ａｐｐサーバ３０は、操作情報受信部３２と、画面生成部３３と、描画バッファ３４と、キャプチャ部３５とを有する。
【００５７】
操作情報受信部３２、画面生成部３３及びキャプチャ部３５等の処理部は、次のように実装される。すなわち、上記の処理部は、中央処理装置、いわゆるＣＰＵが図示しない主記憶装置として実装されるＤＲＡＭやＳＲＡＭなどのＲＡＭのワークエリア上に上記の拡張型のブラウザ３１をプロセスとして展開することにより、仮想的に実現される。
【００５８】
ここでは、あくまで一例として、上記の拡張型のブラウザ３１の実行主体をＣＰＵとする場合を例示したが、上記の拡張型のブラウザ３１の実行主体はＣＰＵに限らず、ＭＰＵを実行主体とすることもできる。また、上記の機能部は、ＡＳＩＣやＦＰＧＡなどのハードワイヤードロジックによっても実現できる。
【００５９】
また、描画バッファ３４等の記憶部は、ＲＡＭ等の半導体メモリ素子により実装できる。
【００６０】
なお、図１には、上記の拡張型のブラウザ３１に関係する最小限の機能部が抜粋して示されているに過ぎず、既存のコンピュータが有する機能部であれば、図示以外の機能部がＡｐｐサーバ３０に備わることを妨げない。例えば、Ａｐｐサーバ３０は、既存のコンピュータが有するハードウェア、例えばＮＩＣ等の通信インタフェイスを有することとしてもよい。また、Ａｐｐサーバ３０は、既存のコンピュータのプロセッサ上で実行される他のプログラム、例えばＯＳやミドルウェアなどにより仮想的に実現される処理部をさらに有することとしてもかまわない。これら既存のコンピュータが有する汎用の機能部は図示が省略されているが、当然ながら具備されることは言うまでもない。
【００６１】
操作情報受信部３２は、操作情報を受信する処理部である。
【００６２】
一実施形態として、操作情報受信部３２は、画面転送装置２０から操作情報を受信する度に、当該操作情報を画面生成部３３へ出力する。例えば、クライアント端末１０がタッチパネルを有するモバイル端末として実装される場合、タップ、ダブルタップ、フリック、スワイプ、ロングタップ、ドラッグ、ピンチイン、ピンチアウトなどの操作の種類、さらには、種類によっては操作量が操作情報として画面生成部３３へ出力される。
【００６３】
画面生成部３３は、業務画面を生成する処理部である。
【００６４】
一実施形態として、画面生成部３３は、拡張型のブラウザ３１が起動された場合、業務画面のトップページの画像データを生成し、当該業務画面のトップページの画像データを拡張型のブラウザ３１がワークエリアとして用いる描画バッファ３４に保存する。その後、画面生成部３３は、操作情報受信部３２から出力される操作情報を解釈することにより、拡張型のブラウザ３１が提供するＧＵＩ（Graphical  User  Interface）コンポーネントに対するコマンド、例えばタブ操作、プルダウンメニュー操作、リンクするＷｅｂページの呼び出し操作などを検出する。この検出結果にしたがって、画面生成部３３は、業務画面の画像データを更新し、当該業務画面の画像データを描画バッファ３４に保存する。
【００６５】
キャプチャ部３５は、キャプチャ設定にしたがってキャプチャを行う処理部である。
【００６６】
一実施形態として、キャプチャ部３５は、可視領域、不可視領域内の更新領域および不可視領域内の更新領域を除く残りの部分の３つの種類ごとに、異なるキャプチャ頻度で描画バッファ３４から画像データをキャプチャする。例えば、可視領域の場合、上述の数値の例に従えば、描画バッファ３４に記憶された業務画面のうち可視領域に対応する画像データを３０ｆｐｓの頻度でキャプチャする。また、不可視領域内の更新領域の場合、上述の数値の例に従えば、描画バッファ３４に記憶された業務画面のうち不可視領域内の更新領域に対応する画像データを第１の更新マップから移行登録された更新頻度と同等のキャプチャ頻度でキャプチャする。また、不可視領域内の残りの部分の場合、描画バッファ３４に記憶された業務画面全体の画面データを１ｆｐｓの頻度でキャプチャする。これらのキャプチャが実施される度に、キャプチャ部３５は、描画バッファ３４からキャプチャされた画像データを画面転送装置２０へ送信する。
【００６７】
［具体例１］
続いて、上記の画面転送サービスの具体例を説明する。図２は、可視領域および不可視領域の遷移の一例を示す図である。また、図３は、更新マップの遷移の一例を示す図である。図２には、同一のＷｅｂページに関する業務画面２００が示されており、業務画面のうち表示範囲内に含まれる可視領域がハッチングで示される一方で、業務画面のうち表示範囲内に含まれない不可視領域が可視領域のハッチングよりも薄いハッチングで示されている。図３には、図２に示したＳ１、Ｓ２及びＳ３−ａの状態で生成された第１の更新マップ及び第２の更新マップが示されており、Ｓ１、Ｓ２及びＳ３−ａの各状態で上側のテーブルが第１の更新マップ３１０Ａを指す一方で下側のテーブルが第２の更新マップ３１０Ｂを指す。なお、状態Ｓ１、Ｓ２、Ｓ３−ａは、番号順に時間が経過しているものとする。
【００６８】
図２の左側には、状態Ｓ１における可視領域および不可視領域が示されている。この時点では、クライアント端末１０がディスプレイに表示できる表示範囲は業務画面２００の最上部に存在する。この時点で生成された第１の更新マップ及び第２の更新マップは、図３の上段に示す通りとなる。すなわち、状態Ｓ１における第１の更新マップ３１０Ａの上から１つ目のエントリは、図２の左側に示された更新領域Ａに対応し、状態Ｓ１における第１の更新マップ３１０Ａの上から２つ目のエントリは、図２の左側に示された更新領域Ｂに対応する。また、状態Ｓ１における第２の更新マップ３１０Ｂの上から１つ目のエントリは、図２の左側に示された更新領域Ｃに対応し、状態Ｓ１における第２の更新マップ３１０Ｂの上から２つ目のエントリは、図２の左側に示された更新領域Ｄに対応する。これらの更新領域Ａ〜Ｄのうち更新領域Ａと更新領域Ｃは、表示範囲を境界に隣接する。この場合、更新領域Ｃの更新頻度には更新領域Ａの更新頻度「３０ｆｐｓ」と同一の値が設定される。
【００６９】
このような状況の下、クライアント端末１０のタッチパネル上で手指やタッチペンを下から上へ滑らせるスワイプ操作Ｃ１が行われた場合、表示範囲が下方向へスクロールする。この場合、状態がＳ１からＳ２へ遷移し、図２の中央に示す通り、可視領域および不可視領域が変化する。これに伴って、第１の更新マップ及び第２の更新マップは、図３の中段に示す通りに変化する。すなわち、状態Ｓ１で可視領域であった更新領域Ａ及び更新領域Ｂのエントリは、第１の更新マップ３１０Ａから第２の更新マップ３１０Ｂへ移行登録される。これによって、図３の中段に示す第２の更新マップ３１０Ｂに示す通り、更新領域Ａ及び更新領域Ｂのエントリが生成される。このうち、更新領域Ａには、更新領域Ａが可視領域であった時に測定された更新頻度「３０ｆｐｓ」が引き継いで設定されると共に、更新領域Ｂには、更新領域Ｂが可視領域であった時に測定された更新頻度「１０ｆｐｓ」が引き継いで設定される。また、状態Ｓ１で不可視領域であった更新領域Ｃと更新領域Ｄの一部である更新領域Ｄ１は、状態Ｓ２への遷移によって可視領域となった時点で更新頻度がリセットされる。その後、所定期間、例えば３０フレームに対応する１秒間が経過した時点では、図３の中段に示す第１の更新マップ３１０Ａに示す通り、更新領域Ｃの更新頻度は改めて３０ｆｐｓと測定されると共に、更新領域Ｄ１の更新頻度も改めて１０ｆｐｓと測定される。なお、状態Ｓ１で不可視領域であった更新領域Ｄのもう一方の片割れである更新領域Ｄ２は、更新領域Ｄ１との間で表示範囲を境界に隣接する。それ故、更新領域Ｄ２には、更新領域Ｄ１の更新頻度「１０ｆｐｓ」と同一の値が設定される。
【００７０】
これら第１の更新マップ３１０Ａ及び第２の更新マップ３１０Ｂが生成された時点では、次のようなキャプチャ通知が画面転送装置２０からＡｐｐサーバ３０へ行われることになる。まず、更新領域Ｃ及び更新領域Ｄ１を含む可視領域の全体については、最高のキャプチャ頻度である３０ｆｐｓを設定すると共に、表示範囲の左上の頂点の座標（０，８００）、表示範囲の幅７２０および表示範囲の高さ８００を設定し、これらキャプチャ頻度、キャプチャ位置及びキャプチャサイズが可視領域のキャプチャ設定としてＡｐｐサーバ３０へ通知される。一方、不可視領域に含まれる更新領域Ａについては、第２の更新マップ３１０Ｂのエントリに含まれる更新領域Ａの更新頻度「３０ｆｐｓ」にしたがってキャプチャ頻度を３０ｆｐｓに設定すると共に、更新領域Ａの左上の頂点の座標（０，２０）、表示範囲の幅２００および表示範囲の高さ７８０を設定し、これらキャプチャ頻度、キャプチャ位置及びキャプチャサイズが更新領域Ａのキャプチャ設定としてＡｐｐサーバ３０へ通知される。また、不可視領域に含まれる更新領域Ｂについては、第２の更新マップ３１０Ｂのエントリに含まれる更新領域Ｂの更新頻度「１０ｆｐｓ」にしたがってキャプチャ頻度を１０ｆｐｓに設定すると共に、更新領域Ｂの左上の頂点の座標（３００，２０）、表示範囲の幅３００および表示範囲の高さ１００を設定し、これらキャプチャ頻度、キャプチャ位置及びキャプチャサイズが更新領域Ｂのキャプチャ設定としてＡｐｐサーバ３０へ通知される。さらに、不可視領域に含まれる更新領域Ｄ２については、第２の更新マップ３１０Ｂのエントリに含まれる更新領域Ｄ２の更新頻度「１０ｆｐｓ」にしたがってキャプチャ頻度を１０ｆｐｓに設定すると共に、更新領域Ｄ２の左上の頂点の座標（５００，２２０）、表示範囲の幅２００および表示範囲の高さ１００を設定し、これらキャプチャ頻度、キャプチャ位置及びキャプチャサイズが更新領域Ｄ２のキャプチャ設定としてＡｐｐサーバ３０へ通知される。
【００７１】
このように不可視領域の画像データがＡｐｐサーバ３０によりキャプチャされる場合、更新領域Ａ、更新領域Ｂ及び更新領域Ｄ２以外の残りの部分は最低値である１ｆｐｓでキャプチャされる。したがって、処理負荷および伝送量を抑制しつつ、業務画面の表示範囲の変更に備えて不可視領域の画像データを準備できる。
【００７２】
さらに、状態Ｓ２でクライアント端末１０のタッチパネル上で手指やタッチペンを上から下へ滑らせるスワイプ操作Ｃ２が行われた場合、表示範囲が上方向へスクロールする。この場合、状態がＳ２からＳ３−ａへ遷移し、図２の右側に示す通り、可視領域および不可視領域が変化する。つまり、表示範囲が業務画面２００の最上部へ再び戻り、状態Ｓ２で不可視領域であった更新領域Ａ及び更新領域Ｂが状態Ｓ３−ａで再び可視領域へ遷移する。
【００７３】
ここで、状態Ｓ３−ａで可視領域となった更新領域Ａ及び更新領域Ｂについては、状態Ｓ２で不可視領域となった段階で第２の更新マップにしたがってキャプチャ設定がＡｐｐサーバ３０へ通知されている。このため、Ａｐｐサーバ３０からは、更新領域Ａについては３０ｆｐｓの頻度で画像データがフレームバッファ２３ａへ描画されると共に、更新領域Ｂについては１０ｆｐｓの頻度で画像データがフレームバッファ２３ａへ描画される。それ故、状態がＳ２からＳ３−ａへ遷移した段階で表示範囲に含まれる可視領域の画像データを表示する場合、可視領域のうち更新領域Ａについては３０ｆｐｓの頻度で更新された画像データを表示できると共に、可視領域のうち更新領域Ｂについては１０ｆｐｓの頻度で更新された画像データをクライアント端末１０のディスプレイに表示できる。したがって、スワイプ操作Ｃ２に対するレスポンスの低下を抑制できる。
【００７４】
状態Ｓ２から状態Ｓ３−ａへの遷移後、第１の更新マップ及び第２の更新マップは、図３の下段に示す通りに変化する。すなわち、状態Ｓ２で可視領域であった更新領域Ｃ及び更新領域Ｄ１のエントリは、第１の更新マップ３１０Ａから第２の更新マップ３１０Ｂへ移行登録される。これによって、図３の下段に示す第２の更新マップ３１０Ｂに示す通り、更新領域Ｃが生成されると共に、状態Ｓ２の段階で表示範囲の境界で互いが隣接すると判定されていた更新領域Ｄ１及び更新領域Ｄ２が統合されることにより更新領域Ｄのエントリが生成される。ここでは、更新領域Ｄ１及び更新領域Ｄ２を統合する場合を例示したが、必ずしも統合が行われずに更新領域Ｄ１及び更新領域Ｄ２のエントリを個別に生成することとしてもかまわない。このうち、更新領域Ｃには、更新領域Ｃが可視領域であった時に測定された更新頻度「３０ｆｐｓ」が引き継いで設定されると共に、更新領域Ｄには、更新領域Ｄが可視領域であった時に測定された更新頻度「１０ｆｐｓ」が引き継いで設定される。また、状態Ｓ２で不可視領域であった更新領域Ａと更新領域Ｂは、状態Ｓ３−ａへの遷移によって可視領域となった時点で更新頻度がリセットされる。その後、所定期間、例えば３０フレームに対応する１秒間が経過した時点では、図３の下段に示す第１の更新マップ３１０Ａに示す通り、更新領域Ａの更新頻度は改めて３０ｆｐｓと測定されると共に、更新領域Ｂの更新頻度も改めて１０ｆｐｓと測定される。
【００７５】
このように状態Ｓ３−ａにおいても図３の下段に示された第２の更新マップが生成されることにより、各エントリの更新頻度にしたがって更新領域Ｃ及び更新領域Ｄのキャプチャ設定が画面転送装置２０からＡｐｐサーバ３０へ通知される。この結果、状態Ｓ３−ａで不可視領域となる更新領域Ｃ及び更新領域Ｄについても、Ａｐｐサーバ３０からは、３０ｆｐｓの頻度で更新領域Ｃの画像データがフレームバッファ２３ａへ描画されると共に、１０ｆｐｓの頻度で更新領域Ｄの画像データがフレームバッファ２３ａへ描画されることになる。このため、以降に実施される可能性がある下方向へのスクロール操作に備えて不可視領域のうち更新がある更新領域Ｃ及び更新領域Ｄの画像データを準備できる。
【００７６】
［具体例２］
図４は、可視領域および不可視領域の遷移の一例を示す図である。また、図５は、更新マップの遷移の一例を示す図である。図４には、同一のＷｅｂページに関する業務画面２００が示されており、業務画面のうち表示範囲内に含まれる可視領域がハッチングで示される一方で、業務画面のうち表示範囲内に含まれない不可視領域が可視領域のハッチングよりも薄いハッチングで示されている。図５には、図４に示したＳ１、Ｓ２及びＳ３−ｂの状態で生成された第１の更新マップ及び第２の更新マップが示されており、Ｓ１、Ｓ２及びＳ３−ｂの各状態で上側のテーブルが第１の更新マップ３１０Ａを指す一方で下側のテーブルが第２の更新マップ３１０Ｂを指す。なお、状態Ｓ１、Ｓ２、Ｓ３−ｂは、番号順に時間が経過しているものとする。
【００７７】
これら図４及び図５に示す例は、図２及び図３に示した例と比べて、スワイプ操作Ｃ２が行われた時点、すなわち状態Ｓ２から状態Ｓ３−ａまたは状態Ｓ３−ｂへ遷移する時点まではその内容が同一である一方で、状態Ｓ３−ａまたは状態Ｓ３−ｂへ遷移した後において次の点が異なる。すなわち、状態Ｓ３−ｂへ遷移した後、状態Ｓ２で不可視領域であった更新領域Ａと更新領域Ｂは、状態Ｓ３−ｂへの遷移によって可視領域となった時点で更新頻度がリセットされるが、その後、測定される更新頻度が図２及び図３に示す状態Ｓ３−ａの例と異なる。具体的には、３０フレームに対応する１秒間が経過した時点では、図５の下段に示す第１の更新マップ３１０Ａに示す通り、更新領域Ａの更新頻度は改めて２０ｆｐｓと測定されると共に、更新領域Ｂの更新頻度も改めて１５ｆｐｓと測定される。この結果、更新領域Ａとの間で表示範囲の境界が隣接する更新領域Ｃの更新頻度にも、更新領域Ａの更新頻度「２０ｆｐｓ」と同一の値が設定される。
【００７８】
このように過去に可視領域であった更新領域が不可視領域を経て再び可視領域へ遷移した場合、当該更新領域の更新頻度をリセットして更新頻度を改めて測定し直すことにより、第１の更新マップから第２の更新マップへ移行登録される更新頻度を最新の更新頻度に近付けることができる。また、当該更新領域が再び可視領域へ遷移した場合に、更新頻度を測定し直すまでの間に更新頻度をリセットせずに過去の値を利用しても良い。
【００７９】
［処理の流れ］
次に、本実施例に係るシンクライアントシステム１の処理の流れについて説明する。なお、ここでは、画面転送装置２０により実行される（１）画像データの送信処理、（２）キャプチャ設定の通知処理の順に説明する。
【００８０】
（１）画像データの送信処理
図６は、実施例１に係る画像データの送信処理の手順を示すフローチャートである。この処理は、一例として、Ａｐｐサーバ３０のプロセッサ上で実行される拡張型のブラウザ３１が描画バッファ３４を更新する間隔、例えば３０ｆｐｓで繰り返し実行される。
【００８１】
図６に示すように、Ａｐｐサーバ３０から可視領域または不可視領域内の更新領域等の画像データを受信すると（ステップＳ１０１）、差分検出部２３は、ステップＳ１０１で受信した画像データの配置に対応する箇所の画像データをフレームバッファ２３ａから読み出し、ステップＳ１０１で受信した画像データと、フレームバッファ２３ａから読み出された画像データとの間で画素値が同一であるか否かを画素ごとに比較する（ステップＳ１０２）。
【００８２】
続いて、差分検出部２３は、フレームバッファ２３ａに記憶された業務画面のうちＡｐｐサーバ３０から受信した画像データの業務画面上の配置に対応する箇所にステップＳ１０１で受信した画像データを描画する更新を実行する（ステップＳ１０３）。
【００８３】
その後、ステップＳ１０２で差分領域が検出された場合（ステップＳ１０４Ｙｅｓ）、差分検出部２３は、業務画面から識別された差分領域が表示範囲設定部２２により設定された表示範囲に含まれるか否かを判定する（ステップＳ１０５）。
【００８４】
そして、差分領域が表示範囲に含まれる場合（ステップＳ１０５Ｙｅｓ）、差分検出部２３は、当該差分領域に対応する画像データをフレームバッファ２３ａから読み出し、当該差分領域の画像データを所定の圧縮方式により圧縮することによりその符号化データを生成する（ステップＳ１０６）。続いて、画像送信部２４は、当該差分領域の符号化データをクライアント端末１０へ送信する（ステップＳ１０７）。その後、更新頻度測定部２５は、第１の更新マップのうち差分領域に対応する可視領域上のメッシュ要素の更新頻度をインクリメントする更新を実施し（ステップＳ１０８）、処理を終了する。
【００８５】
一方、差分領域が表示範囲に含まれない場合（ステップＳ１０５Ｎｏ）、差分検出部２３は、当該差分領域に対応する画像データをフレームバッファ２３ａから読み出し、当該差分領域の画像データを所定の圧縮方式により圧縮することによりその符号化データを生成する（ステップＳ１０６’）。続いて、画像送信部２４は、表示範囲内の符号化データの送信の後に、当該差分領域の符号化データをクライアント端末１０へ送信する（ステップＳ１０７’）。その後、更新頻度測定部２５は、第２の更新マップのうち差分領域に対応する不可視領域上のメッシュ要素の更新頻度をインクリメントする更新を実施し（ステップＳ１０９）、処理を終了する。
【００８６】
（２）キャプチャ設定の通知処理
図７は、実施例１に係るキャプチャ設定の通知処理の手順を示すフローチャートである。この処理は、一例として、Ａｐｐサーバ３０のプロセッサ上で実行される拡張型のブラウザ３１が描画バッファ３４を更新する間隔、例えば３０ｆｐｓで繰り返し実行される。
【００８７】
図７に示すように、表示範囲設定部２２により表示範囲が変更された場合（ステップＳ３０１Ｙｅｓ）、更新頻度測定部２５は、第１の更新マップに含まれるエントリの中に、表示範囲の変更によって可視領域から不可視領域へ状態が遷移するエントリが存在するか否かを判定する（ステップＳ３０２）。なお、ステップＳ３０２の分岐でＮｏと判定された場合、ステップＳ３０３の処理を飛ばしてステップＳ３０４の処理へ移行する。
【００８８】
このとき、第１の更新マップに含まれるエントリの中に、表示範囲の変更によって可視領域から不可視領域へ状態が遷移するエントリが存在する場合（ステップＳ３０２Ｙｅｓ）、更新頻度測定部２５は、当該エントリを第１の更新マップから第２の更新マップへ移行して登録する（ステップＳ３０３）。
【００８９】
続いて、更新頻度測定部２５は、第２の更新マップに含まれるエントリのうち不可視領域から可視領域へ状態が遷移するエントリの更新頻度を所定値、例えば１ｆｐｓにリセットする（ステップＳ３０４）。
【００９０】
その後、更新頻度測定部２５は、第１の更新マップ及び第２の更新マップの間で更新領域が重複するエントリが存在する場合（ステップＳ３０５Ｙｅｓ）、第２の更新マップから重複するエントリを削除する（ステップＳ３０６）。なお、第１の更新マップ及び第２の更新マップの間で更新領域が重複するエントリが存在しない場合（ステップＳ３０５Ｎｏ）、ステップＳ３０６の処理を飛ばしてステップＳ３０７へ移行する。
【００９１】
そして、判定部２６は、第１の更新マップ及び第２の更新マップの間で表示範囲の境界を介して隣接する更新領域が存在するか否かを判定する（ステップＳ３０７）。このとき、第１の更新マップ及び第２の更新マップの間で表示範囲の境界を介して隣接する更新領域が存在する場合（ステップＳ３０７Ｙｅｓ）、更新頻度測定部２５は、次のような処理を実行する。すなわち、更新頻度測定部２５は、第２の更新マップに含まれる更新領域のうち第１の更新マップに含まれる更新領域と隣接する更新領域に対応付けられた更新頻度を第１の更新マップに含まれる更新領域の更新頻度と同一の値へ更新し（ステップＳ３０８）、ステップＳ３１０へ移行する。なお、第１の更新マップ及び第２の更新マップの間で表示範囲の境界を介して隣接する更新領域が存在しない場合（ステップＳ３０７Ｎｏ）、ステップＳ３０８の処理を飛ばしてステップＳ３１０へ移行する。
【００９２】
また、表示範囲の変更がない場合（ステップＳ３０１Ｎｏ）、設定通知部２７は、前回のキャプチャ設定が通知されてから表示範囲の変更がない状態が所定期間、例えば１秒間にわたって継続したか否かを判定する（ステップＳ３０９）。このとき、所定期間にわたって表示範囲の変更がない状態が継続した場合（ステップＳ３０９Ｙｅｓ）、ステップＳ３１０へ移行する一方で、所定期間にわたって表示範囲の変更がない状態が継続していない場合（ステップＳ３０９Ｎｏ）、ステップＳ３０１へ戻る。
【００９３】
ステップＳ３１０では、設定通知部２７は、可視領域のキャプチャ頻度に最高値である３０ｆｐｓを設定し、可視領域のキャプチャ位置及びキャプチャサイズには、表示範囲の左上の頂点の座標（ｘ，ｙ）、表示範囲の幅ｗおよび表示範囲の高さｈを設定することにより、可視領域のキャプチャ設定を決定する。さらに、設定通知部２７は、不可視領域のうち第２の更新マップにエントリが存在する更新領域ごとに、当該更新領域のキャプチャ頻度に更新領域の更新頻度を設定し、当該更新領域のキャプチャ位置及びキャプチャサイズには、更新領域の左上の頂点の座標（ｘ，ｙ）、更新領域の幅ｗおよび更新領域の高さｈを設定することにより、不可視領域内の各更新領域のキャプチャ設定を決定する（ステップＳ３１１）。
【００９４】
その後、設定通知部２７は、ステップＳ３１０及びステップＳ３１１で決定されたキャプチャ設定をＡｐｐサーバ３０へ通知し（ステップＳ３１２）、ステップＳ３０１の処理へ移行する。
【００９５】
［効果の一側面］
上述してきたように、本実施例に係る画面転送装置２０は、業務画面の不可視領域の中でも可視領域である履歴を持つ部分には可視領域の時に測定された更新頻度にしたがってキャプチャ頻度を設定する。これによって、業務画面のキャプチャが実施される領域の大きさを絞り込むと共に、その領域でキャプチャが実施される頻度も適切に設定する。それ故、処理負荷および伝送量を抑制しつつ、業務画面の表示範囲の変更に備えて不可視領域の画像データを準備できる。したがって、本実施例に係る画面転送装置２０によれば、スクロール操作に対するレスポンスの低下を抑制できる。
【実施例２】
【００９６】
さて、これまで開示の装置に関する実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。そこで、以下では、本発明に含まれる他の実施例を説明する。
【００９７】
［ＲＤＰの併用］
上記の実施例１では、表示範囲に含まれる可視領域および表示範囲に含まれない不可視領域の両方ともキャプチャ設定を通知することにより、Ａｐｐサーバ３０から画像データを取得する場合を例示したがこれに限定さない。例えば、可視領域については、すなわち、Ａｐｐサーバ３０で実行される拡張型のブラウザ３１が業務画面の更新時にＯＳへ発行する描画コマンドをフックするＯＳ支援を利用することにより、Ａｐｐサーバ３０から画面転送装置２０へ描画コマンドを送信させることとしてもよい。この場合、ＲＤＰでは、描画コマンドを最大で１５ｆｐｓ程度の頻度でしか取得できず、画面転送装置２０がＡｐｐサーバ３０へキャプチャ設定を通知する頻度よりも低い頻度でしか描画コマンドを取得できない状況が生じうる。このことから、画面転送装置２０は、Ａｐｐサーバ３０から受信する描画コマンドにしたがって第１の更新マップを更新する場合、描画コマンドが取得された頻度を補正することもできる。例えば、キャプチャ頻度が最大で３０ｆｐｓである一方で、描画コマンドが最大で１５ｆｐｓであるとしたとき、描画コマンドが取得される頻度がゼロに近づくほど補正更新頻度をゼロに近付ける割合をより大きくする補正を行う一方で、描画コマンドにより測定される更新頻度が１５ｆｐｓに近づくほど補正更新頻度をキャプチャ頻度の３０ｆｐｓに近付ける割合をより大きくする補正を行うことができる。
【００９８】
［分散および統合］
また、図示した各装置の各構成要素は、必ずしも物理的に図示の如く構成されておらずともよい。すなわち、各装置の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、操作情報転送部２１、表示範囲設定部２２、差分検出部２３、画像送信部２４、更新頻度測定部２５、判定部２６又は設定通知部２７に含まれる処理部の一部を画面転送装置２０の外部装置としてネットワーク経由で接続するようにしてもよい。また、操作情報転送部２１、表示範囲設定部２２、差分検出部２３、画像送信部２４、更新頻度測定部２５、判定部２６又は設定通知部２７に含まれる処理部の一部を別の装置がそれぞれ有し、ネットワーク接続されて協働することで、画面転送装置２０の機能を実現するようにしてもよい。
【００９９】
［画面転送プログラム］
また、上記の実施例で説明した各種の処理は、予め用意されたプログラムをパーソナルコンピュータやワークステーションなどのコンピュータで実行することによって実現することができる。そこで、以下では、図８を用いて、上記の実施例と同様の機能を有する画面転送プログラムを実行するコンピュータの一例について説明する。
【０１００】
図８は、実施例１及び実施例２に係る画面転送プログラムを実行するコンピュータのハードウェア構成例を示す図である。図８に示すように、コンピュータ１００は、操作部１１０ａと、マイク１１０ｂと、カメラ１１０ｃと、ディスプレイ１２０と、通信部１３０とを有する。さらに、このコンピュータ１００は、ＣＰＵ１５０と、ＲＯＭ１６０と、ＨＤＤ１７０と、ＲＡＭ１８０とを有する。これら１１０〜１８０の各部はバス１４０を介して接続される。
【０１０１】
ＨＤＤ１７０には、図８に示すように、上記の実施例１で示した操作情報転送部２１、表示範囲設定部２２、差分検出部２３、画像送信部２４、更新頻度測定部２５、判定部２６及び設定通知部２７と同様の機能を発揮する画面転送プログラム１７０ａが記憶される。この画面転送プログラム１７０ａは、図１に示した操作情報転送部２１、表示範囲設定部２２、差分検出部２３、画像送信部２４、更新頻度測定部２５、判定部２６及び設定通知部２７の各構成要素と同様、統合又は分離してもかまわない。すなわち、ＨＤＤ１７０には、必ずしも上記の実施例１で示した全てのデータが格納されずともよく、処理に用いるデータがＨＤＤ１７０に格納されればよい。
【０１０２】
このような環境の下、ＣＰＵ１５０は、ＨＤＤ１７０から画面転送プログラム１７０ａを読み出した上でＲＡＭ１８０へ展開する。この結果、画面転送プログラム１７０ａは、図８に示すように、画面転送プロセス１８０ａとして機能する。この画面転送プロセス１８０ａは、ＲＡＭ１８０が有する記憶領域のうち画面転送プロセス１８０ａに割り当てられた領域にＨＤＤ１７０から読み出した各種データを展開し、この展開した各種データを用いて各種の処理を実行する。例えば、画面転送プロセス１８０ａが実行する処理の一例として、図６〜図７に示す処理などが含まれる。なお、ＣＰＵ１５０では、必ずしも上記の実施例１で示した全ての処理部が動作せずともよく、実行対象とする処理に対応する処理部が仮想的に実現されればよい。
【０１０３】
なお、上記の画面転送プログラム１７０ａは、必ずしも最初からＨＤＤ１７０やＲＯＭ１６０に記憶されておらずともかまわない。例えば、コンピュータ１００に挿入されるフレキシブルディスク、いわゆるＦＤ、ＣＤ−ＲＯＭ、ＤＶＤディスク、光磁気ディスク、ＩＣカードなどの「可搬用の物理媒体」に画面転送プログラム１７０ａを記憶させる。そして、コンピュータ１００がこれらの可搬用の物理媒体から画面転送プログラム１７０ａを取得して実行するようにしてもよい。また、公衆回線、インターネット、ＬＡＮ、ＷＡＮなどを介してコンピュータ１００に接続される他のコンピュータまたはサーバ装置などに画面転送プログラム１７０ａを記憶させておき、コンピュータ１００がこれらから画面転送プログラム１７０ａを取得して実行するようにしてもよい。
【符号の説明】
【０１０４】
１    シンクライアントシステム
１０    クライアント端末
２０    画面転送装置
２１    操作情報転送部
２２    表示範囲設定部
２３ａ  フレームバッファ
２３    差分検出部
２４    画像送信部
２５    更新頻度測定部
２６    判定部
２７    設定通知部
３０    Ａｐｐサーバ
３１    拡張型のブラウザ
３２    操作情報受信部
３３    画面生成部
３４    描画バッファ
３５    キャプチャ部
【図１】
2018005341.tif 000003
【図２】
2018005341.tif 000004
【図３】
2018005341.tif 000005
【図４】
2018005341.tif 000006
【図５】
2018005341.tif 000007
【図６】
2018005341.tif 000008
【図７】
2018005341.tif 000009
【図８】
2018005341.tif 000010