(57)【特許請求の範囲】
【請求項１】
外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置であって、
前記表示画面の更新領域を検出する検出部と、
検出された更新領域の画面情報に対して第１処理を実行する処理部であって、第１更新領域の画面情報に対する処理が終了した後に、前記第１更新領域よりも後に検出された第２更新領域の画面情報に対する処理を実行する第１処理方式と、前記第１更新領域の画面情報に対する処理を中断して、前記第１更新領域と前記第２更新領域とを統合した更新領域の画面情報に対する処理を実行する第２処理方式とのいずれかの処理方式により前記第１処理を実行する第１処理部と、
前記第１処理が終了した更新領域の画面情報に対して第２処理を実行する処理部であって、前記第１処理方式と前記第２処理方式とのいずれかの処理方式により前記第２処理を実行する第２処理部と、
前記第１処理部の処理方式と前記第２処理部の処理方式との組み合わせごとに、前記第２更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定する決定部と、を備え、
前記推定部は、前記第１更新領域の画面情報のデータ量および前記第２更新領域の画面情報のデータ量に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行する場合の処理時間と、前記第２処理方式により処理を実行する場合の処理時間とを算出し、算出した処理時間に基づいて、前記組み合わせごとの前記処理時間を推定することを特徴とする情報処理装置。
【請求項２】
前記第２処理は、更新領域の画面情報を前記外部装置に送信する送信処理を含み、
前記送信処理に使用する通信路の状態を測定する測定部をさらに備え、
前記推定部は、前記第２処理部が前記第１処理方式により処理を実行する場合の処理時間と、前記第２処理方式により処理を実行する場合の処理時間とを、前記第１更新領域の画面情報のデータ量および前記第２更新領域の画面情報のデータ量と前記通信路の状態とに基づいて算出することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置であって、
前記表示画面の更新領域を検出する検出部と、
検出された更新領域の画面情報に対して第１処理を実行する処理部であって、第１更新領域の画面情報に対する処理が終了した後に、前記第１更新領域よりも後に検出された第２更新領域の画面情報に対する処理を実行する第１処理方式と、前記第１更新領域の画面情報に対する処理を中断して、前記第１更新領域と前記第２更新領域とを統合した更新領域の画面情報に対する処理を実行する第２処理方式とのいずれかの処理方式により前記第１処理を実行する第１処理部と、
前記第１処理が終了した更新領域の画面情報に対して第２処理を実行する処理部であって、前記第１処理方式と前記第２処理方式とのいずれかの処理方式により前記第２処理を実行する第２処理部と、
前記第１処理部の処理方式と前記第２処理部の処理方式との組み合わせごとに、前記第２更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定する決定部と、を備え、
前記決定部は、前記所要時間が最小となる組み合わせに従って、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定することを特徴とする情報処理装置。
【請求項４】
前記決定部は、前記所要時間が最小となる組み合わせが複数存在する場合に、該複数の組み合わせのうち、前記第２処理方式により処理を実行する処理部の個数が最小となる組み合わせに従って、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定することを特徴とする請求項３に記載の情報処理装置。
【請求項５】
外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置であって、
前記表示画面の更新領域を検出する検出部と、
検出された更新領域の画面情報に対して第１処理を実行する処理部であって、第１更新領域の画面情報に対する処理が終了した後に、前記第１更新領域よりも後に検出された第２更新領域の画面情報に対する処理を実行する第１処理方式と、前記第１更新領域の画面情報に対する処理を中断して、前記第１更新領域と前記第２更新領域とを統合した更新領域の画面情報に対する処理を実行する第２処理方式とのいずれかの処理方式により前記第１処理を実行する第１処理部と、
前記第１処理が終了した更新領域の画面情報に対して第２処理を実行する処理部であって、前記第１処理方式と前記第２処理方式とのいずれかの処理方式により前記第２処理を実行する第２処理部と、
前記第１処理部の処理方式と前記第２処理部の処理方式との組み合わせごとに、前記第２更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定する決定部と、を備え、
前記決定部は、前記所要時間が予め定めた閾値以下となる組み合わせが複数存在する場合に、該複数の組み合わせのうち、前記第２処理方式により処理を実行する処理部の個数が最小となる組み合わせに従って、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定することを特徴とする情報処理装置。
【請求項６】
外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置であって、
前記表示画面の更新領域を検出する検出部と、
検出された更新領域の画面情報に対して第１処理を実行する処理部であって、第１更新領域の画面情報に対する処理が終了した後に、前記第１更新領域よりも後に検出された第２更新領域の画面情報に対する処理を実行する第１処理方式と、前記第１更新領域の画面情報に対する処理を中断して、前記第１更新領域と前記第２更新領域とを統合した更新領域の画面情報に対する処理を実行する第２処理方式とのいずれかの処理方式により前記第１処理を実行する第１処理部と、
前記第１処理が終了した更新領域の画面情報に対して第２処理を実行する処理部であって、前記第１処理方式と前記第２処理方式とのいずれかの処理方式により前記第２処理を実行する第２処理部と、
前記第１処理部の処理方式と前記第２処理部の処理方式との組み合わせごとに、前記第２更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定する決定部と、を備え、
前記推定部は、前記第１更新領域よりも前記第２更新領域の優先度が高い場合に、前記組み合わせごとの前記所要時間を推定し、
前記決定部は、前記第１更新領域よりも前記第２更新領域の優先度が高い場合に、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定することを特徴とする情報処理装置。
【請求項７】
前記第２更新領域が前記外部装置に入力された所定の操作に基づく更新領域であり、前記第１更新領域が前記所定の操作に基づかない更新領域である場合に、前記第１更新領域よりも前記第２更新領域の優先度が高いことを特徴とする請求項６に記載の情報処理装置。
【請求項８】
外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置であって、
前記表示画面の更新領域を検出する検出部と、
検出された更新領域の画面情報に対して第１処理を実行する処理部であって、第１更新領域の画面情報に対する処理が終了した後に、前記第１更新領域よりも後に検出された第２更新領域の画面情報に対する処理を実行する第１処理方式と、前記第１更新領域の画面情報に対する処理を中断して、前記第１更新領域と前記第２更新領域とを統合した更新領域の画面情報に対する処理を実行する第２処理方式とのいずれかの処理方式により前記第１処理を実行する第１処理部と、
前記第１処理が終了した更新領域の画面情報に対して第２処理を実行する処理部であって、前記第１処理方式と前記第２処理方式とのいずれかの処理方式により前記第２処理を実行する第２処理部と、
前記第１処理部の処理方式と前記第２処理部の処理方式との組み合わせごとに、前記第２更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定する決定部と、を備え、
前記決定部は、予め定めた所定期間の間は、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかの決定結果を保持することを特徴とする情報処理装置。
【請求項９】
外部装置が表示する表示画面の画面情報を前記外部装置に送信するコンピュータに、
前記表示画面の更新領域を検出する検出部の機能と、
検出された更新領域の画面情報に対して第１処理を実行する処理部であって、第１更新領域の画面情報に対する処理が終了した後に、前記第１更新領域よりも後に検出された第２更新領域の画面情報に対する処理を実行する第１処理方式と、前記第１更新領域の画面情報に対する処理を中断して、前記第１更新領域と前記第２更新領域とを統合した更新領域の画面情報に対する処理を実行する第２処理方式とのいずれかの処理方式により前記第１処理を実行する第１処理部の機能と、
前記第１処理が終了した更新領域の画面情報に対して第２処理を実行する処理部であって、前記第１処理方式と前記第２処理方式とのいずれかの処理方式により前記第２処理を実行する第２処理部の機能と、
前記第１処理部の処理方式と前記第２処理部の処理方式との組み合わせごとに、前記第２更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する推定部の機能と、
推定された前記組み合わせごとの前記所要時間に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定する決定部の機能と、を実現させ、
前記推定部は、前記第１更新領域の画面情報のデータ量および前記第２更新領域の画面情報のデータ量に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行する場合の処理時間と、前記第２処理方式により処理を実行する場合の処理時間とを算出し、算出した処理時間に基づいて、前記組み合わせごとの前記処理時間を推定することを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施の形態は、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
ネットワークを介して接続されたサーバ端末からクライアント端末に対して、サーバ端末の表示画面の情報をパケット化してリアルタイムで配信する画面転送システムが知られている。このような画面転送システムは、ユーザが遠隔のサーバ端末の表示画面の情報を手元の端末で表示し参照できるようになることから、例えば遠隔監視システムなど、様々な用途での応用が期待される。
【０００３】
画面転送システムにおいて、サーバ端末からクライアント端末に表示画面の情報を送信する方法としては、サーバ端末が保持する表示画面の全領域の画像情報を一定時間おきにパケット化してクライアント端末に向けて送信する方法と、サーバ端末が保持する表示画面において描画状態に変化が生じるごとに、その差分となる情報、つまり描画状態が変化した領域（以下、更新領域という。）の画像情報のみを、更新領域の位置を表す領域情報とともにクライアント端末に向けて送信する方法が存在する。後者の方法では、描画状態の変化に応じて必要な部分のみのデータ転送が行われるため、前者の方法と比較して、ネットワーク帯域を効率的に利用することができる。また、後者の方法では、単位時間当たりの描画コマ数を大きくできるなどといった利点がある。このため、一般には後者の方法によるサービスが提供されることが多い。
【０００４】
後者の方法で画面転送を行う画面転送システムでは、サーバ端末が表示画面の更新領域を検出する処理を随時行って、検出した更新領域の画像情報と領域情報（以下、これらの情報を合わせて画面情報という。）をクライアント端末に送信する。また、サーバ端末は、クライアント端末でなされたユーザ操作の情報をクライアント端末から受信し、ユーザ操作が表示画面の描画状態を変化させるものである場合、描画状態が変化した更新領域の画面情報をクライアント端末に送信する。このとき、サーバ端末では、表示画面の更新領域を検出する処理、検出した更新領域の画面情報を圧縮する処理、圧縮された画面情報を送信する処理などの一連の処理が順次実行される。これらサーバ端末で実行される一連の処理は、それぞれが独立した処理であるため、各処理に異なるスレッドを割り当てて、同期を取りながら並列してこれら複数の処理を実行することが可能である。
【０００５】
ところで、上記のような画面転送システムでは、良好な応答性を実現することが求められている。応答性とは、例えば、クライアント端末の表示画面上でマウスなどのポインティングデバイスをクリックする操作など、所定のユーザ操作がなされてから、その操作に対応するサーバ端末上の画面変化がクライアント端末に反映されるまでの時間（応答時間）に関する画面転送の品質である。応答性が十分でない（つまり、応答時間が長い）と、ユーザは操作の結果を確認するまで待機しなければならず、作業効率が著しく低下したり、誤操作を引き起こしたりといった弊害が生じる。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００９−１５９２８８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
本発明が解決しようとする課題は、良好な応答性を実現することができる情報処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００８】
実施形態の情報処理装置は、外部装置が表示する表示画面の画面情報を前記外部装置に送信する情報処理装置である。この情報処理装置は、検出部と、第１処理部と、第２処理部と、推定部と、決定部と、を備える。検出部は、前記表示画面の更新領域を検出する。第１処理部は、検出された更新領域の画面情報に対して第１処理を実行する処理部であって、第１更新領域の画面情報に対する処理が終了した後に、前記第１更新領域よりも後に検出された第２更新領域の画面情報に対する処理を実行する第１処理方式と、前記第１更新領域の画面情報に対する処理を中断して、前記第１更新領域と前記第２更新領域とを統合した更新領域の画面情報に対する処理を実行する第２処理方式とのいずれかの処理方式により前記第１処理を実行する。第２処理部は、前記第１処理が終了した更新領域の画面情報に対して第２処理を実行する処理部であって、前記第１処理方式と前記第２処理方式とのいずれかの処理方式により前記第２処理を実行する。推定部は、前記第１処理部の処理方式と前記第２処理部の処理方式との組み合わせごとに、前記第２更新領域の画面情報が前記外部装置に送信されるまでの所要時間を推定する。例えば推定部は、前記第１更新領域の画面情報のデータ量および前記第２更新領域の画面情報のデータ量に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行する場合の処理時間と、前記第２処理方式により処理を実行する場合の処理時間とを算出し、算出した処理時間に基づいて、前記組み合わせごとの前記処理時間を推定する。決定部は、推定された前記組み合わせごとの前記所要時間に基づいて、前記第１処理部と前記第２処理部のそれぞれについて、前記第１処理方式により処理を実行するか、または前記第２処理方式により処理を実行するかを決定する。
【図面の簡単な説明】
【０００９】
【図１】実施形態の画面転送システムの構成図。
【図２】画面更新のデータ構造の一例を示す図。
【図３】更新領域の一例を説明するための図。
【図４】サーバ端末の記憶部が記憶する情報の一例を示す図。
【図５】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図６】サーバ端末の記憶部が記憶する情報の一例を示す図。
【図７】更新領域の表示画面全体における位置を示す図。
【図８】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図９】圧縮処理を実行する前の画面更新どうしのマージを説明する図。
【図１０】圧縮処理を実行した後の画面更新どうしのマージを説明する図。
【図１１】圧縮処理を実行した後の画面更新どうしのマージを説明する図。
【図１２】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図１３】２つの画面更新をマージした画面更新に対して、さらに別の画面更新をマージする様子を示す図。
【図１４】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図１５】サーバ端末の検出部、変換部、圧縮部および送信部による処理状態の一例を示す図。
【図１６】サーバ端末のハードウェア構成図。
【発明を実施するための形態】
【００１０】
以下、実施形態の情報処理装置およびプログラムについて、図面を参照して説明する。本実施形態は、サーバ端末が保持する表示画面の更新領域の画面情報を、サーバ端末からネットワークを介してクライアント端末に送信する画面転送システムへの適用例である。
【００１１】
図１は、本実施形態にかかる画面転送システムの構成例を示す図である。図１に示すように、本実施形態にかかる画面転送システムは、サーバとして機能する情報処理装置（以下、サーバ端末という。）１と、サーバ端末１に対してネットワーク３により接続された外部装置であり、クライアントとして機能する情報処理装置（以下、クライアント端末という。）２と、を備える。なお、ネットワーク３の形態は任意であり、例えばインターネット、ＬＡＮ（ローカルエリアネットワーク）などを適用できる。
【００１２】
サーバ端末１は、図１に示すように、表示部１００と、検出部１０１と、変換部１０２と、圧縮部１０３と、送信部１０４と、記憶部１０５と、推定部１０６と、決定部１０７と、受信部１０８と、オペレーティングシステム１０９と、を含む。
【００１３】
表示部１００は、オペレーティングシステム１０９から表示画面全体の画像情報を取得し、表示画面を表示する。表示部１００は、表示画面全体の画像情報を格納するための記憶領域（フレームバッファ）を有している。フレームバッファには、オペレーティングシステム１０９から取得された最新の画像情報が格納される。表示部１００は、このフレームバッファの画像情報に基づき、最新の描画状態の表示画面を表示する。
【００１４】
本実施形態にかかる画面転送システムでは、このサーバ端末１の表示部１００に表示される表示画面と同じ表示画面が、クライアント端末２の後述する表示部２０３に表示される。なお、サーバ端末１は、表示部１００を備えない構成であってもよい。サーバ端末１が表示部１００を備えない構成の場合も、表示画面全体の画像情報を格納するためのフレームバッファが設けられ、このフレームバッファに、オペレーティングシステム１０９から最新の画像情報が格納される。
【００１５】
検出部１０１は、表示部１００に表示される表示画面（つまり、クライアント端末２の表示部２０３に表示される表示画面）の更新領域を検出する処理を行う。検出部１０１は、表示部１００に表示される表示画面全体の画像情報を格納するフレームバッファを有している。検出部１０１は、このフレームバッファに前回格納した画像情報と、新たに格納する最新の画像情報とを比較することにより、表示部１００に表示される表示画面の更新領域を検出し、更新領域の画面情報を生成する。以下では、この検出部１０１が生成する更新領域の画面情報を「画面更新」という。画面更新は、表示部１００に表示される表示画面において最新の描画状態を得る差分となる情報である。検出部１０１は、後述の変換部１０２において画面更新に対する変換処理が可能な状態になると、生成した画面更新を変換部１０２に出力する。
【００１６】
図２は、画面更新のデータ構造の一例を示す図である。画面更新は、検出部１０１が検出した更新領域の位置を表す領域情報と、更新領域における更新後の画像情報との対を少なくとも１個含む。領域情報は、表示画面全体における更新領域の位置を示す数値（フレームバッファに画面情報を格納する際の更新領域の格納位置を表す数値であり、一例として、表示画面の画素に対応する数値）である。画像情報は、領域情報で示される領域の更新後のビットマップデータ（例えば、更新領域の各画素におけるＲＧＢ３色の値など）である。
【００１７】
図３は、更新領域の一例を説明するための図である。図３に示すように、例えば、表示画面の画面全体における左上角を（０，０）、右下角を（Ｗｉｄｔｈ，Ｈｅｉｇｈｔ）としたときの、更新領域の左上座標（Ｌｅｆｔ，Ｔｏｐ）と右下座標（Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）の組み合わせが領域情報である。図２および図３では、１つの画面更新に２つの領域情報が含まれる例を示しており、１つ目の領域情報は（Ｌｅｆｔ，Ｔｏｐ，Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）＝（１００，１００，３００，３００）であり、２つ目の領域情報は（Ｌｅｆｔ，Ｔｏｐ，Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）＝（３００，２００，５００，４００）である。
【００１８】
図１に戻り、変換部１０２は、検出部１０１が出力する画面更新に対して色空間の変換処理を行う。具体的には、変換部１０２は、検出部１０１が出力する画面更新に含まれる画像情報を第１の表色系の情報から第２の表色系の情報に変換する処理、例えばＲＧＢ→ＹＵＶなどの変換処理を施す。
【００１９】
変換部１０２は、任意のタイミングで、現在実行中の画面更新に対する変換処理を中断することが可能である。この場合、変換処理を中断した画面更新は、後に検出部１０１から出力された別の変換前の画面更新と統合して（マージして）、１個の画面更新として扱うことが可能である。変換部１０２は、現在実行中の画面更新に対する変換処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して変換処理を行うことになる。なお、画面更新の具体的な統合の手順については詳細を後述する。
【００２０】
圧縮部１０３は、変換部１０２により変換処理が行われた画面更新に対して圧縮処理を行う。具体的には、圧縮部１０３は、変換部１０２により画像情報の変換処理が行われた画面更新が変換部１０２から出力されると、この画面更新に含まれる画像情報に対して、例えばＺＬＩＢなどの圧縮アルゴリズムを用いた圧縮処理を施す。
【００２１】
圧縮部１０３は、任意のタイミングで、現在実行中の画面更新に対する圧縮処理を中断することが可能である。この場合、圧縮処理を中断した画面更新は、後に変換部１０２から出力された別の圧縮前の画面更新と統合して（マージして）、１個の画面更新として扱うことが可能である。圧縮部１０３は、現在実行中の画面更新に対する圧縮処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して圧縮処理を行うことになる。なお、画面更新の具体的な統合の手順については詳細を後述する。
【００２２】
送信部１０４は、圧縮部１０３により圧縮処理が行われた画面更新を、ネットワーク３経由でクライアント端末２に送信する送信処理を行う。具体的には、送信部１０４は、画像情報に対する変換部１０２の変換処理および圧縮部１０３の圧縮処理が終了した画面更新が圧縮部１０３から出力されると、この画面更新を、ネットワーク３上において伝送可能な形式に変換してクライアント端末２に対し送信する。
【００２３】
送信部１０４は、任意のタイミングで、現在実行中の画面更新に対する送信処理を中断することが可能である。この場合、送信処理を中断した画面更新は、後に圧縮部１０３から出力された別の送信前の画面更新と統合して（マージして）、１個の画面更新として扱うことが可能である。送信部１０４は、現在実行中の画面更新に対する送信処理を中断した場合には、表示画面に欠落を生じさせないために、その後、この統合した画面更新に対して送信処理を行うことになる。なお、画面更新の具体的な結合の手順については詳細を後述する。
【００２４】
上記の検出部１０１、変換部１０２、圧縮部１０３および送信部１０４は、互いに同期を取りながら、それぞれの処理を並列して実行することが可能である。すなわち、検出部１０１が最新の表示画面の更新領域を検出しているときに、変換部１０２が、１つ前に検出された更新領域の画面更新に対する変換処理を行い、圧縮部１０３が、２つ前に検出された更新領域の画面更新に対する変換処理を行い、送信部１０４が、３つ前に検出された更新領域の画面更新に対する送信処理を行うことが可能である。ただし、圧縮部１０３は、変換部１０２による変換処理が終了した画面更新に対してのみ圧縮処理を行うことができ、変換処理が終了していない画面更新に対して圧縮処理を行うことはできない。また、送信部１０４は、圧縮部１０３による圧縮処理が終了した画面更新に対してのみ送信処理を行うことができ、圧縮処理が終了していない画面更新に対して送信処理を行うことはできない。つまり、１つの画面更新は、変換部１０２による変換処理と、圧縮部１０３による圧縮処理と、送信部１０４による送信処理とがこの順番で順次施されてクライアント端末２に送信される。
【００２５】
記憶部１０５は、検出部１０１が生成した画面更新に対する処理状態を表す情報を記憶する。具体的には、記憶部１０５は、画面更新に対して付与されたシーケンス番号と、そのシーケンス番号により識別される画面更新の領域情報と、その画面更新に対して現在どのような処理が行われているかの処理状態を記憶する。処理状態は、検出部１０１により生成された画面更新が変換部１０２による変換処理が行われるのを待機している状態であれば「検出処理」となる。また、処理状態は、画面更新に対して変換部１０２による変換処理を実行中、もしくは、変換処理が終了して圧縮部１０３による圧縮処理を待機している状態であれば「変換処理」となる。また、処理状態は、画面更新に対して圧縮部１０３による圧縮処理を実行中、もしくは、圧縮処理が終了して送信部１０４による送信処理を待機している状態であれば「圧縮処理」となる。また、処理状態は、画面更新に対して送信部１０４による送信処理の実行中であれば「送信処理」となり、送信処理が終了すると「完了」となる。
【００２６】
推定部１０６は、検出部１０１により優先度の高い更新領域が検出された場合に、この優先度の高い更新領域の画面情報がクライアント端末２に送信されるまでの所要時間（以下、応答時間という。）を推定する。応答時間は、一般的にはクライアント端末２側での処理時間も含む概念であるが、本実施形態においては、クライアント端末２での処理時間（画面更新を受信してから表示までに要する時間）をゼロと近似し、サーバ端末１側での処理に要する時間を応答時間として扱う。
【００２７】
ここで、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４の各処理部は、変換処理、圧縮処理、送信処理の各処理を実行する方式として、以下のような２つの処理方式（第１処理方式と第２処理方式）をとりうる。第１処理方式は、検出部１０１によって先に検出された更新領域（以下、第１更新領域という。）の画面更新に対する処理が終了した後に、この第１更新領域よりも後に検出された更新領域（以下、第２更新領域という。）の画面更新に対する処理を実行する処理方式である。一方、第２処理方式は、上述したように、実行中の第１更新領域の画面更新に対する処理を中断し、その後、第１更新領域と第２更新領域とをマージした更新領域の画面更新に対する処理を実行する処理方式である。
【００２８】
第２処理方式は、第２更新領域として優先度の高い更新領域が検出された場合に、この第２更新領域に対する処理を効率的に実行するための処理方式である。ただし、第２処理方式による処理時間は、必ずしも第１処理方式による処理時間よりも短くなるとは限らない。つまり、第２処理方式による処理を実行する場合、第１更新領域の画面更新に対する処理を中断するが、上述したように、表示画面に欠落を生じさせないためには、その後、第１更新領域と第２更新領域とをマージした更新領域の画面更新に対する処理を実行する必要がある。このとき、第１更新領域と第２更新領域とをマージした更新領域の画面更新に対する処理を開始するには、前段の処理部が第２更新領域の画面更新に対する処理を終了するのを待たなければならない。このため、第１更新領域の画面更新および第２更新領域の画面更新のデータ量と、第１更新領域の画面更新に対する処理を中断するタイミングによっては、前段の処理部が第２更新領域の画面更新に対する処理を終了するのを待つ間に、第１更新領域の画面更新に対する処理を終了できる場合がある。この場合には、第２処理方式による処理時間よりも第１処理方式による処理時間の方が短くなる。
【００２９】
以上のことから、優先度の高い更新領域が上記の第２更新領域であると考えた場合の応答時間は、変換部１０２と圧縮部１０３と送信部１０４の各処理部での処理方式の組み合わせごとに異なる値となる。つまり、変換部１０２が第１処理方式と第２処理方式のいずれの処理方式で処理を実行するか、圧縮部１０３が第１処理方式と第２処理方式のいずれの処理方式で処理を実行するか、送信部１０４が第１処理方式と第２処理方式のいずれの処理方式で処理を実行するかによって、それぞれ応答時間が異なる。したがって、推定部１０６は、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４の各処理部での処理方式の組み合わせごとに、それぞれ応答時間を推定する。なお、推定部１０５が応答時間を推定する方法の具体例については詳細を後述する。
【００３０】
なお、本実施形態において、更新領域の優先度は、その更新領域の発生要因によって予め定められているものとする。例えば、クライアント端末２に入力された所定のユーザ操作（例えば、クライアント端末２の表示部２０３に表示されている表示画面上でのポインティングデバイスのクリックなど）に起因して発生する更新領域は、このようなユーザ操作以外の要因（例えば、所定の更新周期ごとに発生する定常的な更新）による更新領域よりも、優先度が高い。
【００３１】
決定部１０７は、検出部１０１により優先度の高い更新領域が検出された場合に、推定部１０６が推定した応答時間、つまり、サーバ端末１の変換部１０２と圧縮部１０３と送信部１０４の各処理部での処理方式の組み合わせごとの応答時間に基づき、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４のそれぞれについて、第１処理方式により処理を実行するか、第２処理方式により処理を実行するかを決定する。
【００３２】
具体的には、決定部１０７は、例えば、推定部１０６が推定した応答時間が最小となる組み合わせに従って、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４のそれぞれについて、第１処理方式により処理を実行するか、第２処理方式により処理を実行するかを決定する。ここで、推定部１０６が推定した応答時間が最小となる組み合わせが複数存在する場合には、決定部１０７は、これら複数の組み合わせのうち、第２処理方式により処理を行う処理部の個数（つまり、処理を中断する回数）が最小となる組み合わせに従って、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４のそれぞれについて、第１処理方式により処理を実行するか、第２処理方式により処理を実行するかを決定する。
【００３３】
また、決定部１０７は、推定部１０６が推定した前記組み合わせごとの応答時間を予め定めた閾値と比較し、応答時間が閾値以下となる複数の組み合わせのうち、第２処理方式により処理を行う処理部の個数（つまり、処理を中断する回数）が最小となる組み合わせに従って、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４のそれぞれについて、第１処理方式により処理を実行するか、第２処理方式により処理を実行するかを決定するようにしてもよい。
【００３４】
受信部１０８は、クライアント端末２に入力されたユーザ操作を表す入力情報を、クライアント端末２からネットワーク３を介して受信する。
【００３５】
オペレーティングシステム１０９は、入出力機能、および、ディスクやメモリの管理機能など、多くのアプリケーションから共通して利用される基本的な機能や、デスクトップ環境を提供する。各機能は、ＡＰＩを介して提供される。例えば、オペレーティングシステム１０９は、表示部１００に表示する表示画面の画面情報を取得するためのＡＰＩ、キーボードやマウス等の入力操作を合成するＡＰＩ、および、現在時刻を取得するＡＰＩなどを提供する。
【００３６】
次に、クライアント端末２の構成について説明する。クライアント端末２は、図１に示すように、受信部２０１と、伸張部２０２と、表示部２０３と、取得部２０４と、送信部２０５と、を含む。
【００３７】
受信部２０１は、ネットワーク３を介してサーバ端末１から画面更新を受信する。
【００３８】
伸張部２０２は、受信部２０１が受信した画面更新に含まれる画像情報、つまりサーバ端末１の圧縮部１０３により圧縮された画像情報に対して、伸張処理を施す。
【００３９】
表示部２０３は、画像情報に対して伸張処理が施された画面更新を伸張部２０２から取得して、最新の表示画面を表示しユーザに提示する。表示部２０３は、表示画面全体の画像情報を格納するための記憶領域（フレームバッファ）を有している。表示部２０３は、伸張部２０２から画面更新を受け取ると、この画面更新に含まれる領域情報が示すフレームバッファ上の画像情報を、画面更新に含まれる画像情報で上書き更新し、更新された画像情報に基づき、サーバ端末１の表示部１００に表示された表示画面と同じ表示画面を表示する。
【００４０】
取得部２０４は、ユーザがキーボードやポインティングデバイスなどを利用してクライアント端末２に入力したユーザ操作を受け付けて、このユーザ操作を表す入力情報を取得する。
【００４１】
送信部２０５は、取得部２０４が取得したユーザ操作を表す入力情報を、ネットワーク３を介してサーバ端末１に送信する。
【００４２】
次に、本実施形態にかかる画面転送システムの動作について、具体例を挙げながら詳細に説明する。本実施形態にかかる画面転送システムでは、上述したように、サーバ端末１とクライアント端末２とがネットワーク３を介して物理的に接続されている。本実施形態では、ネットワーク３はＩＰ（Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）ネットワークであるとする。
【００４３】
以下では、始めにサーバ端末１の表示部１００の表示画面の更新領域がクライアント端末２の表示部２０３の表示画面に反映される画面転送の標準的な一連の流れを説明する。次に、画面転送を実行している最中において、クライアント端末２のユーザによりポインティングデバイスのクリック操作が行われた状況を想定し、このユーザ操作を表す入力情報がサーバ端末１に送信され、このユーザ操作に対応した表示画面の更新がクライアント端末２の表示部２０３の表示画面に反映されるまでの流れを説明する。このようなユーザ操作に起因して表示画面の更新が発生した状況は、ユーザが反応を期待している可能性が高いと推察される。このため、このような表示画面の更新は、通常の表示画面の更新と比べて速やかにクライアント端末２に反映させる必要があると考えられる。そこで、本実施形態では、クライアント端末２に入力されたユーザ操作、中でもポインティングデバイスのクリック操作によって表示画面の更新が発生したときに（つまり、優先度の高い更新領域が検出されたときに）、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４の上述した処理方式を適切に決定することで、応答時間の最適化を図るようにしている。
【００４４】
本実施形態にかかる画面転送システムにおいて、画面転送の実行が開始されると、サーバ端末１の検出部１０１は、定期的なタイミングで以下の更新領域の検出処理を繰り返し実行する。すなわち、検出部１０１は、更新領域の検出処理の始めに、表示部１００に対して最新の表示画面の画像情報の取得を要求する。そして、検出部１０１は、取得した画像情報と自身のフレームバッファに格納されている画像情報とを比較し、表示画面全体の中で画像情報に差分のある部分を更新領域として検出して、この更新領域の画面情報である画面更新を生成する。画面更新は、上述したように、更新領域の位置を表す領域情報と、更新領域における更新後の画像情報とを含む。
【００４５】
検出部１０１は、更新領域の検出および画面更新の生成が終了すると、自身のフレームバッファの内容を最新の画像情報により上書き更新する。さらに、検出部１０１は、生成した画面更新に対しシーケンス番号を付与する。シーケンス番号とは、画面更新の時間的順序を表す数値である。検出部１０１は、内部に最新のシーケンス番号を記憶するための記憶領域を有しており、画面転送の実行が開始された直後にこの記憶領域をゼロで初期化した後は、画面更新を生成するごとにシーケンス番号を付与し、かつ記憶した値を１インクリメントする。また、検出部１０１は、検出処理を開始した時刻を格納する記憶領域を有しており、検出処理を開始するごとに、その時刻（サーバ端末１が起動してから現在までの経過時間など）をオペレーティングシステム１０９から取得し、この記憶領域の内容を上書き更新する。
【００４６】
次に、検出部１０１は、生成した画面更新の領域情報と、この画面更新に対して付与したシーケンス番号の組み合わせを記憶部１０５に出力し、記憶を依頼する。記憶部１０５は、検出部１０１から入力された情報を記憶する。
【００４７】
図４は、記憶部１０５が記憶する情報の一例を示す図である。記憶部１０５は、上述したように、検出部１０１が生成した画面更新に付与されたシーケンス番号と、このシーケンス番号で識別される画面更新の領域情報と、このシーケンス番号で識別される画面更新に対して現在どのような処理が行われているかの処理状態を記憶する。検出部１０１からの依頼に応じて記憶部１０５に記憶される情報１００１は、図４に示すように、処理状態が「検出処理」となる。
【００４８】
次に、検出部１０１は、変換部１０２が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。検出部１０１は、記憶部１０５に対して、処理状態が「変換処理」となっているエントリが存在するか否かを問い合わせる。記憶部１０５は、この問合せに対して、自身の記憶領域を参照し、処理状態が「変換処理」となっているエントリが存在するか否かを検出部１０１に回答する。ここで、処理状態が「変換処理」となっているエントリが存在していなければ、検出部１０１は、変換部１０２が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、検出部１０１は、生成した画面更新とシーケンス番号との組み合わせを変換部１０２に出力し、この画面更新に対する変換処理の開始を依頼する。一方、処理状態が「変換処理」となっているエントリが存在していれば、検出部１０１は、変換部１０２が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、検出部１０１は、変換部１０２が新たな画面更新に対する処理を実行可能な状態になるまで、生成した画面更新およびシーケンス番号の出力を行わずに待機する。検出部１０１は、変換部１０２に対する変換処理の開始依頼が終了すると、更新領域の検出処理を再び開始する。
【００４９】
変換部１０２は、検出部１０１から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部１０５にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「検出処理」から「変換処理」に変更する。次に、変換部１０２は、検出部１０１から受け取った画面更新に含まれる画像情報に対して、変換処理を施す。本実施形態では、この変換部１０２による変換処理により、画像情報の表色系がＲＧＢからＹＵＶに変換されるものとする。
【００５０】
画面更新に含まれる画像情報に対する変換処理が終了すると、変換部１０２は、次に、圧縮部１０３が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。変換部１０２は、記憶部１０５に対して、処理状態が「圧縮処理」となっているエントリが存在するか否かを問い合わせる。記憶部１０５は、この問合せに対して、自身の記憶領域を参照し、処理状態が「圧縮処理」となっているエントリが存在するか否かを回答する。ここで、処理状態が「圧縮処理」となっているエントリが存在していなければ、変換部１０２は、圧縮部１０３が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、変換部１０２は、変換処理が終了した画面更新とシーケンス番号の組み合わせを圧縮部１０３に出力し、この画面更新に対する圧縮処理の開始を依頼する。一方、処理状態が「圧縮処理」となっているエントリが存在していれば、変換部１０２は、圧縮部１０３が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、変換部１０２は、圧縮部１０３が新たな画面更新に対する処理を実行可能な状態になるまで、変換処理が終了した画面更新およびシーケンス番号の出力を行わずに待機する。変換部１０２は、圧縮部１０３に対する圧縮処理の開始依頼が完了すると、次の画面更新に対する変換処理を実行可能な状態となる。
【００５１】
圧縮部１０３は、変換部１０２から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部１０５にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「変換処理」から「圧縮処理」に変更する。次に、圧縮部１０３は、変換部１０２から受け取った画面更新に含まれる画像情報に対して、圧縮処理を施す。本実施形態では、この圧縮部１０３による圧縮方式として、ＺＬＩＢを用いるものとする。
【００５２】
画面更新に含まれる画像情報に対する圧縮処理が終了すると、圧縮部１０３は、次に、送信部１０４が新たな画面更新に対する処理を実行可能な状態であるか否かを次のように確認する。圧縮部１０３は、記憶部１０５に対して、処理状態が「送信処理」となっているエントリが存在するか否かを問い合わせる。記憶部１０５は、この問合せに対して、自身の記憶領域を参照し、処理状態が「送信処理」となっているエントリが存在するか否かを回答する。ここで、処理状態が「送信処理」となっているエントリが存在していなければ、圧縮部１０３は、送信部１０４が新たな画面更新に対する処理を実行可能な状態であると判断する。そして、圧縮部１０３は、圧縮処理が終了した画面更新とシーケンス番号の組み合わせを送信部１０４に出力し、この画面更新に対する送信処理の開始を依頼する。一方、処理状態が「送信処理」となっているエントリが存在していれば、圧縮部１０３は、送信部１０４が新たな画面更新に対する処理を実行可能な状態でないと判断する。この場合、圧縮部１０３は、送信部１０４が新たな画面更新に対する処理を実行可能な状態になるまで、圧縮処理が終了した画面更新およびシーケンス番号の出力を行わずに待機する。圧縮部１０３は、送信部１０４に対する送信処理の開始依頼が完了すると、次の画面更新に対する圧縮処理を実行可能な状態となる。
【００５３】
送信部１０４は、圧縮部１０３から画面更新とシーケンス番号の組み合わせを受け取ると、まず、記憶部１０５にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「圧縮処理」から「送信処理」に変更する。次に、送信部１０４は、圧縮部１０３から受け取った画面更新を、ネットワーク３経由でクライアント端末２に送信する処理を実行する。具体的には、送信部１０４は、圧縮部１０３から受け取った画面更新（シーケンス番号は除く）に対してＴＣＰ／ＩＰの各ヘッダを付与した上で、この画面更新を、クライアント端末２に向けてネットワーク３へ送出する。そして、送信部１０４は、送信処理が終了したことを確認すると、記憶部１０５にシーケンス番号を通知し、当該シーケンス番号により識別される画面更新の処理状態を「送信処理」から「完了」に変更する。
【００５４】
図５は、以上の検出部１０１、変換部１０２、圧縮部１０３および送信部１０４の各処理部による処理状態の一例を示す図である。図中の四角は、各処理部が処理を実行中であることを意味する。また、図中の数字は、各処理部が処理を実行している画面更新のシーケンス番号を意味する。この図５では、時間軸に沿って各処理部による処理が並列に進行される様子が示されている。
【００５５】
クライアント端末２の受信部２０１は、サーバ端末１からネットワーク３を介して画面更新を受信すると、この画面更新に対して付与されたＴＣＰ／ＩＰの各ヘッダを除去した上で、画面更新を伸張部２０２に出力する。
【００５６】
伸張部２０２は、受信部２０１から画面更新を受け取ると、この画面更新に含まれる圧縮された画像情報の伸張処理を行う。そして、伸張部２０２は、伸張後の画像情報を含む画面更新を表示部２０３に出力する。
【００５７】
表示部２０３は、伸張部２０２から画面更新を受け取ると、この画面更新に含まれる領域情報が示すフレームバッファ上の画像情報を、この画面更新に含まれる画像情報で上書き更新する。そして、表示部２０３は、フレームバッファ上の画像情報に基づいて表示画面を表示する。これにより、サーバ端末１と同じ表示画面が表示部２０３に表示され、ユーザに提示される。
【００５８】
次に、クライアント端末２においてユーザ操作が発生したときの画面転送システムの動作について説明する。クライアント端末２においてユーザ操作がなされると、クライアント端末２の取得部２０４は、このユーザ操作を受け付けてユーザ操作を表す入力情報を取得する。ここでのユーザ操作とは、例えば、ポインティングデバイスの操作やキーボードの操作などである。取得部２０４は、取得した入力情報を送信部２０５に通知する。
【００５９】
送信部２０５は、取得部２０４から受け取った入力情報に対してＴＣＰ／ＩＰの各ヘッダを付与し、この入力情報をネットワーク３において伝送可能な形式に変換した後、サーバ端末１に向けてネットワーク３へ送出する。
【００６０】
サーバ端末１の受信部１０８は、クライアント端末２からネットワーク３を介して入力情報を受信すると、この入力情報に対して付与されたＴＣＰ／ＩＰの各ヘッダを除去した上で、得られた入力情報をオペレーティングシステム１０９に渡し、入力の反映を依頼する。さらに、受信部１０８は、入力情報が予め定めた所定のユーザ操作、例えば、ポインティングデバイスのクリック操作を表すものである場合に、決定部１０７に対して処理の開始を依頼する。
【００６１】
なお、本実施形態では、クライアント端末２におけるポインティングデバイスのクリック操作を、決定部１０７の処理開始の契機としているが、必ずしもこれに限られるものではない。例えば、クライアント端末２におけるキーボードの押下操作を決定部１０７の処理開始の契機としてもよい。また、必ずしも入力情報に基づく必要もなく、例えば、任意または特定のアプリケーションのウィンドウが表示画面の最前面に移動したことを検出して、これを決定部１０７の処理開始の契機としてもよい。また、例えば、閾値以上の画素数を持つ更新領域が発生したことを検出し、これを決定部１０７の処理開始の契機としてもよい。
【００６２】
ここで、サーバ端末１における決定部１０７および推定部１０６の処理の具体例について説明する。図６は、記憶部１０５が記憶する情報の一例を示す図であり、シーケンス番号が１から５の５つの画面更新についての情報１１０１〜１１０５が記憶部１０５に記憶されている様子を示している。図７は、これら５つの画面更新に対応する各更新領域１２０１〜１２０５の表示画面全体における位置を示す図である。図８は、これら画面更新に対して、サーバ端末１の検出部１０１、変換部１０２、圧縮部１０３および送信部１０４の各処理部による処理が時間軸に沿って進行する様子を示す図である。以下では、例として、記憶部１０５が図６に示す情報１１０１〜１１０５を記憶している状態にあり、図８のｔ１のタイミングにおいて、決定部１０７および推定部１０６が処理を開始するものとする。
【００６３】
始めに、決定部１０７が、検出部１０１に対して、入力情報に基づいて発生する更新領域の検出処理を行うよう通知する。検出部１０１は、もしその時点で検出処理を実行中であればその処理を中断し、新たな更新領域を検出するための検出処理を開始する。検出部１０１による検出処理は、上述した通りである。すなわち、検出部１０１は、表示部１００の表示画面の最新の画像情報と前回処理時の画像情報とを比較してその差分を更新領域として検出し、その更新領域の画面情報である画面更新を生成して、画面更新に対して付与したシーケンス番号と画面更新に含まれる領域情報とを記憶部１０５に記憶させる。また、検出部１０１は、入力情報に基づいて発生する更新領域の検出処理が終了すると、検出処理の終了を決定部１０７に通知する。
【００６４】
また、検出部１０１は、入力情報に基づいて発生する更新領域に対する検出処理の開始時（時刻ｔ１）と、入力情報に基づいて発生する更新領域に対する検出処理の終了時（ｔ２）に、オペレーティングシステム１０９からそれぞれの時刻を取得し、その前の検出処理開始時（ｔ０）との差を算出する。そして、検出部１０１は、算出した値（ｔ１−ｔ０とｔ２−ｔ０）と、検出した更新領域の画面更新に付与したシーケンス番号とを、決定部１０７に通知する。
【００６５】
図８の例では、ｔ１のタイミングで検出部１０１が検出処理の実行中であるため、検出部１０１が実行中の検出処理を中断して、新たな更新領域を検出して画面更新を生成（シーケンス番号５の画面更新）する様子が示されている。検出部１０１が新たな更新領域の検出および画面更新の生成を終了した時刻はｔ２で示されている。ここでは、ｔ１−ｔ０＝５ミリ秒、ｔ２−ｔ０＝１５ミリ秒であると仮定する。
【００６６】
決定部１０７は、検出部１０１から通知されたシーケンス番号（シーケンス番号５）で識別される画面更新を、クライアント端末２におけるポインティングデバイスのクリック操作によって発生した更新領域の画面更新であると識別する。そのような状況では、クライアント端末２のユーザが、操作に対する反応を期待している可能性が高いと推察されるため、この画面更新をできるだけ速やかにクライアント端末２に反映させる必要がある。つまり、このようなユーザ操作により発生した表示画面の更新領域は、優先度が高い更新領域であるため、応答時間を短縮させて良好な応答性を実現することが望まれる。本実施形態では、決定部１０７が処理を開始したタイミングｔ１から、所定のユーザ操作に起因する画面更新（シーケンス番号５の画面更新）に対する送信部１０４の送信処理が終了するまでの時間を応答時間として扱う。
【００６７】
なお、決定部１０７は、優先度の高い更新領域の画面更新に対する一連の処理、つまり変換部１０２による変換処理、圧縮部１０３による圧縮処理、および送信部１０４による送信処理が全て終了することを確認するまでの間に、受信部１０８から新たに処理開始の依頼を受け取った場合には、この新たな処理開始の依頼は無視することが望ましい。これにより、例えば、ユーザがクライアント端末２の表示画面上でポインティングデバイスのクリック操作を連続的に行った場合などに、処理の中断が連続的に発生して描画がストップするといった事態を未然に回避することができる。
【００６８】
決定部１０７は、検出部１０１からの通知を受け取ると、変換部１０２、圧縮部１０３および送信部１０４のそれぞれについて、上述した第１処理方式により処理を実行するか、または、第２処理方式により処理を実行するかを決定するために、推定部１０６に対して応答時間を推定する処理の開始を依頼する。
【００６９】
推定部１０６は、決定部１０７から処理開始の依頼を受け取ると、変換部１０２、圧縮部１０３および送信部１０４の各処理部が第１処理方式で処理を実行した場合と、第２処理方式で処理を実行した場合との組み合わせごとに、応答時間を推定する。この組み合わせは、変換部１０２：第１処理方式／第２処理方式、圧縮部１０３：第１処理方式／第２処理方式、送信部１０４：第１処理方式／第２処理方式、の計２×２×２＝８通りの組み合わせとなる。推定部１０６は、これら８通りの組み合わせのそれぞれについて、応答時間を推定する。
【００７０】
始めに、推定部１０６は、記憶部１０５から、処理状態が「完了」でない全てのエントリを読み出す。図６の例では、シーケンス番号２，３，４，５の画面更新が相当する。推定部１０６は、これらの画面更新に関する情報を記憶部１０５から読み出すと、次の各処理時間を推定する。
γ２：シーケンス番号２の画面更新に対する送信処理の処理時間（推定値）
β３：シーケンス番号３の画面更新に対する圧縮処理の処理時間（推定値）
γ３：シーケンス番号３の画面更新に対する送信処理の処理時間（推定値）
α４：シーケンス番号４の画面更新に対する変換処理の処理時間（推定値）
β４：シーケンス番号４の画面更新に対する圧縮処理の処理時間（推定値）
γ４：シーケンス番号４の画面更新に対する送信処理の処理時間（推定値）
α５：シーケンス番号５の画面更新に対する変換処理の処理時間（推定値）
β５：シーケンス番号５の画面更新に対する圧縮処理の処理時間（推定値）
γ５：シーケンス番号５の画面更新に対する送信処理の処理時間（推定値）
γ２３：シーケンス番号２と３をマージした画面更新に対する送信処理の処理時間（推定値）
β３４：シーケンス番号３と４をマージした画面更新に対する圧縮処理の処理時間（推定値）
γ３４：シーケンス番号３と４をマージした画面更新に対する送信処理の処理時間（推定値）
α４５：シーケンス番号４と５をマージした画面更新に対する変換処理の処理時間（推定値）
β４５：シーケンス番号４と５をマージした画面更新に対する圧縮処理の処理時間（推定値）
γ４５：シーケンス番号４と５をマージした画面更新に対する送信処理の処理時間（推定値）
β３４５：シーケンス番号３と４と５をマージした画面更新に対する圧縮処理の処理時間（推定値）
γ２３４：シーケンス番号２と３と４をマージした画面更新に対する送信処理の処理時間（推定値）
γ３４５：シーケンス番号３と４と５をマージした画面更新に対する送信処理の処理時間（推定値）
γ２３４５：シーケンス番号２と３と４と５をマージした画面更新に対する送信処理の処理時間（推定値）
【００７１】
ここで、マージについて説明する。マージとは、２つの画面更新を統合して１つの画面更新に変換する手続きのことである。３つ以上の画面更新をマージする場合は、時間的に最も古い２つの画面更新を先にマージしてから、その次に古い画面更新を１つずつマージする。本実施形態では、圧縮処理を実行する前の画面更新どうしのマージと、圧縮処理を実行した後の画面更新どうしのマージとで、変換の方法が異なる。
【００７２】
圧縮処理を実行する前の画面更新どうしをマージする場合、マージ後の画面更新の領域情報は、マージ前の２つの画面更新の領域情報の和集合である。マージ後の画面更新の画像情報は、マージ後の画面更新の領域情報に対応したマージ前の２つの画面更新の画像情報（ビットマップデータ）である。ただし、マージ前の２つの画面更新の領域情報に重なりがある場合、その重なる領域については、シーケンス番号が新しい画面更新の画像情報だけを残すようにする。
【００７３】
図９は、圧縮処理を実行する前の画面更新どうしのマージを説明する図である。図９の例は、画面更新１３０１と画面更新１３０２とをマージして１つの画面更新１３０３とする例である。マージ後の画面更新１３０３の領域情報は、重なりのない３つの矩形領域の情報（Ｌｅｆｔ，Ｔｏｐ，Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）＝（１５０，１５０，２５０，２００），（１５０，２００，２００，２５０），（２００，２００，３００，３００）である。また、マージ後の画面更新１３０３の画像情報は、各矩形領域に対応する新しい側の画像情報である。つまり（Ｌｅｆｔ，Ｔｏｐ，Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）＝（１５０，１５０，２５０，２００），（１５０，２００，２００，２５０）に相当する矩形領域については、マージ前の画面更新１３０１のビットマップデータを使用し、（Ｌｅｆｔ，Ｔｏｐ，Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）＝（２００，２００，３００，３００）に相当する矩形領域については、マージ前の画面更新１３０２のビットマップデータを使用して、マージ後の画面更新１３０３を生成する。
【００７４】
圧縮処理を実行した後の画面更新どうしをマージする場合、マージ後の画面更新の領域情報は、マージ前の２つの画面更新のうち、新しい画面更新が古い画面更新を完全に包含していれば、新しい画面更新の領域情報と等しい。一方、新しい画面更新が古い画面更新を完全に包含していなければ、２つの画面更新の領域情報の単純な組み合わせに等しい。
【００７５】
図１０および図１１は、圧縮処理を実行した後の画面更新どうしのマージを説明する図である。図１０の例では、新しい画面更新１４０２が、古い画面更新１４０１を完全に包含している。このため、マージ後の画面更新１４０３の領域情報は、新しい画面更新１４０２の領域情報に等しく、（Ｌｅｆｔ，Ｔｏｐ，Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）＝（２００，２００，３５０，３５０）となる。一方、図１１の例では、新しい画面更新１５０２は、古い画面更新１５０１を包含していない。このため、マージ後の画面更新１５０３，１５０４の領域情報は、両方の単純な組み合わせ（Ｌｅｆｔ，Ｔｏｐ，Ｒｉｇｈｔ，Ｂｏｔｔｏｍ）＝（１５０，１５０，２５０，２５０），（２００，２００，３５０，３５０）となる。
【００７６】
推定部１０６が推定する上記の各処理時間のうち、α、βの各値は、処理対象とする画面更新の画素数に比例するものとして算出する。すなわち、推定部１０６は、変換部１０２による変換処理について、単位画素あたりの平均処理時間（ミリ秒／画素）の情報と、圧縮部１０３による圧縮処理について、単位画素あたりの平均処理時間（ミリ秒／画素）の情報とを保持している。推定部１０６は、処理対象とする画面更新の画素数にこれらの値を乗じ、得られた値を変換処理の処理時間および圧縮処理の処理時間の推定値とする。本実施形態では、変換部１０２による単位画素あたりの平均処理時間と、圧縮部１０３による単位画素あたりの平均処理時間とが、いずれも０．００２（ミリ秒／画素）であるものとする。なお、これら平均処理時間の値は固定値でなくてもよく、例えば、変換部１０２と圧縮部１０３の実際の処理時間を定期的に計測し、その計測値に基づいて、推定部１０６が保持する平均処理時間の情報を定期的に更新するようにしてもよい。
【００７７】
例えば、α４（シーケンス番号４の画面更新に対する変換処理の処理時間）は、次のように求められる。シーケンス番号４の画面更新の画素数が（３００−２００）×（３００−２００）＝１００×１００＝１００００画素であるので、これに０．００２を乗じた２０ミリ秒がα４として求められる。
【００７８】
また、例えばβ５（シーケンス番号５の画面更新に対する圧縮処理の処理時間）は、シーケンス番号５の画面更新の画素数が（３５０−２００）×（３５０−２００）＝１５０×１５０＝２２５００画素であるので、これに０．００２を乗じた４５ミリ秒がβ５として求められる。
【００７９】
また、例えばβ３４（シーケンス番号３と４をマージした画面更新に対する圧縮処理の処理時間）は、次のように求められる。マージ後の画面更新の領域情報は、図９に示したように３つの矩形領域の情報となる。したがって、このマージ後の画面更新の画素数は（２５０−１５０）×（２００−１５０）＋（２００−１５０）×（２５０−２００）＋（３００−２００）×（３００−２００）＝１００×５０＋５０×５０＋１００×１００＝５０００＋２５００＋１００００＝１７５００画素であるので、これに０．００２を乗じた３５ミリ秒がβ３４として求められる。
【００８０】
また、例えばβ３４５（シーケンス番号３と４と５をマージした画面更新に対する圧縮処理の処理時間）は、次のように求められる。まず、シーケンス番号３と４をマージした画面更新を算出し、さらにそこにシーケンス番号５の画面更新をマージする。シーケンス番号３と４をマージした画面更新の領域情報は、図９に示したように３つの矩形領域の情報となる。図１３は、シーケンス番号３と４をマージした画面更新１６０１に対して、さらにシーケンス番号５の画面更新１６０２をマージする様子を示している。この図１３に示すように、シーケンス番号３と４と５をマージした画面更新１６０３の領域情報は、３つの矩形領域の情報となり、このマージ後の画面更新１６０３の画素数は（２５０−１５０）×（２００−１５０）＋（２００−１５０）×（２５０−２００）＋（３５０−２００）×（３５０−２００）＝１００×５０＋５０×５０＋１５０×１５０＝５０００＋２５００＋２２５００＝３００００画素であるので、これに０．００２を乗じた６０ミリ秒がβ３４５として求められる。
【００８１】
また、γの各値についても、処理対象とする画面更新の画素数に比例するものとして算出することができる。すなわち、推定部１０６は、送信部１０４による変換処理について、単位画素あたりの平均処理時間（ミリ秒／画素）の情報を保持している。推定部１０６は、処理対象とする画面更新の画素数にこの値を乗じ、得られた値を送信処理の処理時間の推定値とする。本実施形態では、送信部１０４による単位画素あたりの平均処理時間が０．００３（ミリ秒／画素）であるものとする。なお、この送信部１０４の平均処理時間の値は固定値でなくてもよく、例えば、送信部１０４の実際の処理時間を定期的に計測し、その計測値に基づいて、推定部１０６が保持する平均処理時間の情報を定期的に更新するようにしてもよい。また、例えば、送信部１０４が画面更新の送信処理に使用する通信路の状態、つまり、画面更新を送出するネットワーク３の状態を測定する測定部を設け、この測定部により測定されたネットワーク３の状態と、送信部１０４が処理対象とする画面更新の画素数とに基づいて、上記のγの各値を算出するようにしてもよい。ここで、ネットワーク３の状態とは、例えば、ネットワーク３の利用可能帯域や、ＲＴＴ（Round  Trip  Times）などである。これらネットワーク３の状態を測定部で測定する場合、測定により得られる値（ビット／ミリ秒）で処理対象とする画面更新の画素数を除することにより、上記のγの各値を算出することができる。
【００８２】
例えば、γ３（シーケンス番号３の画面更新に対する送信処理の処理時間）は、次のように求められる。シーケンス番号３の画面更新の画素数は（２５０−１５０）×（２５０−１５０）＝１００×１００＝１００００画素であるので、これに０．００３を乗じた３０ミリ秒がγ３として求められる。
【００８３】
また、例えばγ３４（シーケンス番号３と４をマージした画面更新に対する送信処理の処理時間）は、次のように求められる。マージ後の画面更新の領域情報は、図１１に示したように、マージ前の２つの画面更新の領域情報の単純な組み合わせとなる。したがって、このマージ後の画面更新の画素数は（２５０−１５０）×（２５０−１５０）＋（３００−２００）×（３００−２００）＝１００×１００＋１００×１００＝１００００＋１００００＝２００００画素であるので、これに０．００３を乗じた６０ミリ秒がγ３４として求められる。
【００８４】
また、例えばγ４５（シーケンス番号４と５をマージした画面更新に対する送信処理の処理時間）は、次のように求められる。マージ後の画面更新の領域情報は、図１０に示したように、シーケンス番号５の画面更新の領域情報と等しくなる。したがって、このマージ後の画面更新の画素数は（３５０−２００）×（３５０−２００）＝１５０×１５０＝２２５００画素であるので、これに０．００３を乗じた６７．５ミリ秒がγ４５として求められる。
【００８５】
同様にして、各処理時間の推定値は、以下のように求められる。
γ２＝３０ミリ秒
β３＝２０ミリ秒
γ３＝３０ミリ秒
α４＝２０ミリ秒
β４＝２０ミリ秒
γ４＝３０ミリ秒
α５＝４５ミリ秒
β５＝４５ミリ秒
γ５＝６７．５ミリ秒
γ２３＝６０ミリ秒
β３４＝３５ミリ秒
γ３４＝６０ミリ秒
α４５＝４５ミリ秒
β４５＝４５ミリ秒
γ４５＝６７．５ミリ秒
β３４５＝６０ミリ秒
γ２３４＝９０ミリ秒
γ３４５＝１２７．５ミリ秒
γ２３４５＝１５７．５ミリ秒
【００８６】
推定部１０６は、以上のように算出した各処理時間の推定値に基づいて、変換部１０２、圧縮部１０３および送信部１０４の各処理部が、上述した第１処理方式で処理を実行した場合と、第２処理方式で処理を実行した場合との組み合わせごとに、応答時間を推定する。
【００８７】
図８に示した例では、時刻ｔ２において、変換部１０２がシーケンス番号４の画面更新に対する変換処理を実行中であり、圧縮部１０３がシーケンス番号３の画面更新に対する圧縮処理を実行中であり、送信部１０４がシーケンス番号２の画面更新に対する送信処理を実行中である。ここで、変換部１０２は、第１処理方式で処理を実行する場合には、シーケンス番号４の画面更新に対する変換処理が終了した後に、シーケンス番号５の画面更新に対する変換処理を実行する。また、変換部１０２は、第２処理方式で処理を実行する場合には、シーケンス番号４の画面更新に対する変換処理を中断し、シーケンス番号４と５をマージした画面更新に対する変換処理を実行する。また、圧縮部１０３は、第１処理方式で処理を実行する場合には、シーケンス番号３の画面更新に対する圧縮処理が終了した後に、変換部１０２による変換処理が終了した画面更新に対する圧縮処理を実行する。また、圧縮部１０３は、第２処理方式で処理を実行する場合には、シーケンス番号３の画面更新に対する変換処理を中断し、シーケンス番号３の画面更新と変換部１０２による変換処理が終了した画面更新をマージした画面更新に対する変換処理を実行する。また、送信部１０４は、第１処理方式で処理を実行する場合には、シーケンス番号２の画面更新に対する送信処理が終了した後に、圧縮部１０３による圧縮処理が終了した画面更新に対する送信処理を実行する。また、送信部１０４は、第２処理方式で処理を実行する場合には、シーケンス番号２の画面更新に対する送信処理を中断し、シーケンス番号２の画面更新と圧縮部１０３による圧縮処理が終了した画面更新をマージした画面更新に対する送信処理を実行する。
【００８８】
変換部１０２、圧縮部１０３および送信部１０４の各処理部が、第１処理方式で処理を実行した場合と、第２処理方式で処理を実行した場合との組み合わせは、上述したように、変換部１０２：第１処理方式／第２処理方式、圧縮部１０３：第１処理方式／第２処理方式、送信部１０４：第１処理方式／第２処理方式、の計２×２×２＝８通りの組み合わせとなる。推定部１０６は、これら８通りの組み合わせのそれぞれについて、上記の各処理時間の推定値を用いて、以下の８通りの応答時間、すなわちシーケンス番号５の画面更新（ユーザ操作により発生した更新領域の画面更新）に対する送信処理が終了するまでの所要時間の推定値ＲＡ〜ＲＨを算出する。
ＲＡ＝変換部１０２：第１処理方式、圧縮部１０３：第１処理方式、送信部１０４：第１処理方式
ＲＢ＝変換部１０２：第１処理方式、圧縮部１０３：第１処理方式、送信部１０４：第２処理方式
ＲＣ＝変換部１０２：第１処理方式、圧縮部１０３：第２処理方式、送信部１０４：第１処理方式
ＲＤ＝変換部１０２：第１処理方式、圧縮部１０３：第２処理方式、送信部１０４：第２処理方式
ＲＥ＝変換部１０２：第２処理方式、圧縮部１０３：第１処理方式、送信部１０４：第１処理方式
ＲＦ＝変換部１０２：第２処理方式、圧縮部１０３：第１処理方式、送信部１０４：第２処理方式
ＲＧ＝変換部１０２：第２処理方式、圧縮部１０３：第２処理方式、送信部１０４：第１処理方式
ＲＨ＝変換部１０２：第２処理方式、圧縮部１０３：第２処理方式、送信部１０４：第２処理方式
【００８９】
ＲＨは、変換部１０２、圧縮部１０３および送信部１０４の全てが第２処理方式により処理を実行するときの応答時間の推定値である。図１２は、このときの検出部１０１、変換部１０２、圧縮部１０３および送信部１０４の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図１２の例では、時刻ｔ２で、変換部１０２、圧縮部１０３および送信部１０４の全てが実行中の処理を中断する。このとき、変換部１０２は変換処理を中断したシーケンス番号４の画面更新を保持し、圧縮部１０３は圧縮処理を中断したシーケンス番号３の画面更新を保持し、送信部１０４は送信処理を中断したシーケンス番号２の画面更新を保持する。
【００９０】
この場合、変換部１０２は、変換処理を中断したシーケンス番号４の画面更新と、検出部１０１から新たに出力されたシーケンス番号５の画面更新とをマージし、マージした画面更新に対して変換処理を実行する。この変換処理に要する処理時間はα４５である。その後、変換部１０２による変換処理が終了すると、圧縮部１０３が、圧縮処理を中断したシーケンス番号３の画面更新と、変換部１０２による変換処理が終了した画面更新とをマージし、マージした画面更新に対して圧縮処理を実行する。この圧縮処理に要する処理時間はβ３４５である。最後に、送信部１０４が、送信処理を中断したシーケンス番号２の画面更新と、圧縮部１０３による圧縮処理が終了した画面更新とをマージし、マージした画面更新に対して送信処理を実行する。この送信処理に要する処理時間はγ２３４５である。ＲＨ（図１２中のｔ１とｔ５の差）は、これらの処理時間の総和として求められる。すなわち、ＲＨ＝α４５＋β３４５＋γ２３４５＝４５＋６０＋１５７．５＝２６２．５ミリ秒と算出される。
【００９１】
ＲＥは、変換部１０２のみが第２処理方式による処理を実行し、圧縮部１０３および送信部は第１処理方式による処理を実行するときの応答時間の推定値である。図１４は、このときの検出部１０１、変換部１０２、圧縮部１０３および送信部１０４の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図１４の例では、時刻ｔ２で、変換部１０２のみが実行中の処理を中断する。このとき、変換部１０２は変換処理を中断したシーケンス番号４の画面更新を保持する。
【００９２】
この場合、変換部１０２は、変換処理を中断したシーケンス番号４の画面更新と、検出部１０１から新たに出力されたシーケンス番号５の画面更新とをマージし、マージした画面更新に対して変換処理を実行する。この変換処理に要する処理時間はα４５である。このとき、圧縮部１０３は、シーケンス番号３の画面更新に対する圧縮処理を中断することなく実行し、送信部１０４は、シーケンス番号２の画面更新に対する圧縮処理を中断することなく実行する。このときの圧縮処理に要する処理時間はβ３であり、送信処理に要する処理時間はγ２である。また、圧縮部１０３により圧縮処理が施されたシーケンス番号３の画面更新は、送信部１０４がシーケンス番号２の画面更新に対する送信処理を終了した段階で送信部１０４に出力される。送信部１０４は、シーケンス番号２の画面更新に対する送信処理を終了した後、シーケンス番号３の画面更新に対する送信処理を実行する。このときの送信処理に要する処理時間はγ３である。
【００９３】
シーケンス番号４と５をマージした画面更新に対して、変換部１０２による変換処理が終了すると、圧縮部１０３が、この画面更新に対して圧縮処理を実行する。この圧縮処理に要する処理時間はβ４５である。また、この画面更新に対する圧縮部１０３の圧縮処理が終了すると、送信部１０４が、この画面更新に対して送信処理を実行する。この送信処理に要する処理時間はγ４５である。ＲＥ（図１４中のｔ１とｔ５の差）は、これらの処理時間の大小に基づいて決定され、一般には、ＲＥ＝Ｍａｘ（Ｍａｘ（ｔ２−ｔ０＋α４５，β３，γ２）＋β４５，Ｍａｘ（β３，γ２）＋γ３）＋γ４５−（ｔ１−ｔ０）と書き下せる。よってこの場合は、ＲＥ＝Ｍａｘ（Ｍａｘ（１５＋４５，２０，３０）＋４５，Ｍａｘ（２０，３０）＋３０）＋６７．５−５＝１６７．５ミリ秒と算出される。
【００９４】
ＲＡは、変換部１０２、圧縮部１０３および送信部１０４の全てが第１処理方式により処理を実行するときの応答時間の推定値である。図１５は、このときの検出部１０１、変換部１０２、圧縮部１０３および送信部１０４の各処理部による処理が時間軸に沿って進行する様子を示す図である。この図１５の例では、変換部１０２、圧縮部１０３および送信部１０４の各処理部は、実行中の処理を中断せず、したがって、画面更新のマージは一切行われない。この場合、各処理部は、実行中の処理が終了すれば次の処理部が処理可能状態となるまで待機し、次の処理部が処理可能状態となったら、処理が終了した画面更新を渡すという手続きを繰り返す。ＲＡ（図中のｔ１とｔ６の差）は、各処理部でそれぞれ実行される処理に要する処理時間の大小に基づいて決定され、一般には、ＲＡ＝Ｍａｘ（Ｍａｘ（Ｍａｘ（α４，β３，γ２）＋α５，Ｍａｘ（α４，β３，γ２）＋β４，Ｍａｘ（β３，γ２）＋γ３）＋β５，Ｍａｘ（Ｍａｘ（α４，β３，γ２）＋β４，Ｍａｘ（β３，γ２）＋γ３）＋γ４）＋γ５−（ｔ１−ｔ０）と書き下せる。よってこの場合は、ＲＡ＝Ｍａｘ（Ｍａｘ（Ｍａｘ（２０，２０，３０）＋４５，Ｍａｘ（２０，２０，３０）＋２０，Ｍａｘ（２０，３０）＋３０）＋４５，Ｍａｘ（Ｍａｘ（２０，２０，３０）＋２０，Ｍａｘ（２０，３０）＋３０）＋３０）＋６７．５−５＝１８２．５ミリ秒と算出される。
【００９５】
同様にして、他の応答時間の推定値は、それぞれ次のように求められる。
ＲＢ＝Ｍａｘ（Ｍａｘ（Ｍａｘ（α４，β３）＋α５，Ｍａｘ（α４，β３）＋β４，β３＋γ２３）＋β５，Ｍａｘ（Ｍａｘ（α４，β３）＋β４，β３＋γ２３）＋γ４）＋γ５−（ｔ１−ｔ０）＝１８７．５ミリ秒
ＲＣ＝Ｍａｘ（Ｍａｘ（α４＋α５，α４＋β３４，γ２）＋β５，Ｍａｘ（α４＋β３４，γ２）＋γ３４）＋γ５−（ｔ１−ｔ０）＝１７７．５ミリ秒
ＲＤ＝Ｍａｘ（Ｍａｘ（α４＋α５，α４＋β３４）＋β５，α４＋β３４＋γ２３４）＋γ５−（ｔ１−ｔ０）＝２０７．５ミリ秒
ＲＦ＝Ｍａｘ（Ｍａｘ（ｔ２−ｔ０＋α４５，β３）＋β４５，β３＋γ２３）＋γ４５−（ｔ１−ｔ０）＝１６７．５ミリ秒
ＲＧ＝Ｍａｘ（ｔ２−ｔ０＋α４５＋β３４５，γ２）＋γ３４５−（ｔ１−ｔ０）＝２４２．５ミリ秒
【００９６】
推定部１０６は、以上のようにして各処理部の処理方式の組み合わせごとの応答時間の推定値ＲＡ〜ＲＨを算出すると、その組み合わせごとの応答時間の推定値ＲＡ〜ＲＨを決定部１０７に出力し、各処理部の処理方式の決定を依頼する。決定部１０７は、推定部１０６から受け取った各処理部の処理方式の組み合わせごとの応答時間の推定値ＲＡ〜ＲＨに基づいて、各処理部それぞれについて、第１処理方式により処理を実行するか、第２処理方式により処理を実行するかを決定する。
【００９７】
ここで、決定部１０７が各処理部の処理方式を決定する基準としては、例えば、各処理部の処理方式の組み合わせのうち、応答時間の推定値が最小となる組み合わせに従って、各処理部の処理方式を決定することが考えられる。この場合、応答時間の推定値が最小となる組み合わせが複数存在する場合は、第２処理方式により処理を実行する処理部の個数（つまり、実行中の処理を中断する回数）が最小となる組み合わせを選択すればよい。例えば、上述した例においては、ＲＥとＲＦの値がいずれも１６７．５ミリ秒で最小である。また、中断の回数はＲＥが１回、ＲＦが２回である。したがって、上記の基準を採用した場合、決定部１０７は、ＲＥの組み合わせに従って、変換部１０２は第２処理方式により処理を実行し、圧縮部１０３は第１処理方式により処理を実行し、送信部１０４は第１処理方式により処理を実行すると決定する。
【００９８】
また、決定部１０７が各処理部の処理方式を決定する基準としては、例えば、応答時間の推定値が予め定めた閾値以下となる組み合わせのうち、第２処理方式により処理を実行する処理部の個数（つまり、実行中の処理を中断する回数）が最小となる組み合わせに従って、各処理部の処理方式を決定することが考えられる。例えば、閾値が２００ミリ秒と定められている場合、上述した例においては、ＲＡ、ＲＢ、ＲＣ、ＲＥ、ＲＦの５つが、それぞれ閾値以下となる。そして、中断の回数はＲＡが０回、ＲＢが１回、ＲＣが１回、ＲＥが１回、ＲＦが２回である。したがって、上記の基準を採用した場合、決定部１０７は、ＲＡの組み合わせに従って、変換部１０２、圧縮部１０３および送信部１０４の全てが第１処理方式により処理を実行すると決定する。
【００９９】
決定部１０７が以上のような基準により、各処理部の処理方式を決定するようにすれば、応答時間が小さくなる処理方式の組み合わせを採用することで応答性の向上が図られるだけでなく、中断の回数が小さくなる組み合わせを優先的に採用することで、クライアント端末２へ送信される画面更新の数を最大化し、つまりは描画コマ数（フレームレート）の低下を最小限に抑えるという効果が見込める。
【０１００】
なお、本実施形態では、上記のＲＡ〜ＲＨの全ての応答時間の推定値を算出しているが、必ずしも毎回全ての応答時間の推定値を算出する必要はない。例えば、推定部１０６が上記のＲＡ〜ＲＨの過去の複数回の算出結果を記憶しておき、結果の悪かった（応答時間が大きかった）組み合わせについては、その後、予め定めた所定期間の間、応答時間の推定値を算出する対象から除外するようにしてもよい。
【０１０１】
また、決定部１０７は、各処理部の処理方式についての決定結果を、予め定めた所定期間の間保持し、この期間内に新たなユーザ操作に基づく優先度の高い更新領域が検出された場合には、その保持した決定結果を再利用するようにしてもよい。すなわち、一度算出した組み合わせごとの応答時間は当面の間は同じ傾向が持続することが予期されるため、このような応答時間に基づく各処理部の処理方式の決定結果は、所定期間の間は再利用できると考えられる。このような決定結果の再利用を行うことで、応答時間の推定値の精度を維持しつつ、処理演算の負荷を削減することが可能となる。
【０１０２】
また、決定部１０７は、各処理部の処理方式についての決定結果を保持する際に、処理対象となる画面更新が属するアプリケーションの種類と決定結果との組み合わせを辞書として記憶し、新たなユーザ操作に基づく優先度の高い更新領域が検出された場合に、記憶した辞書を参照することで決定結果を再利用するようにしてもよい。この場合、同一のアプリケーションから発生する画面更新に対する処理時間は同じ傾向となることが予期されるため、処理時間の推定値の精度を確保することができる。
【０１０３】
なお、本実施形態では、推定部１０６が、各処理部での処理の中断に要する時間をゼロと近似して応答時間を推定しているが、処理の中断に要する時間を加味して応答時間を推定するようにしてもよい。すなわち、ＲＡ〜ＲＨの各応答時間の評価式に対して、中断を行う場合に定数時間もしくは画面更新の画素数等に依存した中断処理時間を加算することができる。また、本実施形態では、推定部１０６が、マージ処理に要する時間をゼロと近似して応答時間を推定しているが、マージ処理に要する時間を加味して応答時間を推定するようにしてもよい。すなわち、上記のα，β，γやＲＡ〜ＲＨの各応答時間の評価式に対して、マージを行う場合に定数時間もしくは画面更新の画素数等に依存したマージ処理時間を加算することができる。
【０１０４】
決定部１０７は、以上のようにして各処理部における処理方式を決定すると、変換部１０２、圧縮部１０３および送信部１０４のうち、第２処理方式により処理を実行すると決定した処理部に対して、処理の中断の依頼を行う。上述した例において、ＲＥの組み合わせに従って各処理部の処理方式を決定した場合には、決定部１０７は、変換部１０２に対してのみ処理の中断の依頼を行う。この場合、中断の依頼を受けた変換部１０２は、実行中のシーケンス番号４の画面更新に対する変換処理を中断し、このシーケンス番号４の画面更新を、変換処理を開始する前の状態のままで保持する。さらに、変換部１０２は、記憶部１０５に対して変換処理を中断した画面更新のシーケンス番号４を通知し、当該エントリの処理状態を「中断」に変更する。
【０１０５】
以降の処理の流れは、図１４を用いて説明した通りである。すなわち、検出部１０１は、記憶部１０５において処理状態が「変換処理」となるエントリが存在しないため、変換部１０２が処理可能な状態であると判断する。そして、検出部１０１は、シーケンス番号５の画面更新を変換部１０２に出力して、変換処理の開始を依頼する。変換部１０２は、これを受けて、先ほど処理を中断したシーケンス番号４の画面更新と、検出部１０１から受け取ったシーケンス番号５の画面更新とのマージを行い、マージ後の画面更新に対して変換処理を行う。
【０１０６】
その後、変換部１０２での変換処理が終了した時点（時刻ｔ３）では、記憶部１０５において処理状態が「圧縮処理」となるエントリは存在しない。このため、変換部１０２は、圧縮部１０３が処理可能な状態であると判断し、変換処理が終了した画面更新を圧縮部１０３に出力して、圧縮処理を依頼する。圧縮部１０３は、これを受けて、変換部１０２から出力された画面更新に対する圧縮処理を行う。さらに、圧縮部１０３での圧縮処理が終了した時点（時刻ｔ４）では、記憶部１０５において処理状態が「送信処理」となるエントリは存在しない。このため、圧縮部１０３は、送信部１０４が処理可能な状態であると判断し、圧縮処理が終了した画面更新を送信部１０４に出力して、送信処理を依頼する。送信部１０４は、これを受けて、圧縮部１０３から出力された画面更新に対する送信処理を行う。そして、送信部１０４は、圧縮部１０３から出力された画面更新に対する送信処理が終了すると、この画面更新のシーケンス番号を決定部１０７に通知する。これにより、決定部１０７は、ユーザ操作により発生した画面更新をクライアント端末２に送信する処理が完了したことを認識する。
【０１０７】
以上のように、本実施形態にかかる画面転送システムでは、クライアント端末２におけるポインティングデバイスのクリック操作など、所定のユーザ操作に基づいて優先度の高い更新領域が発生した場合に、サーバ端末１の推定部１０６が、変換部１０２、圧縮部１０３および送信部１０４の各処理部における処理方式（第１処理方式または第２処理方式）の組み合わせごとに応答時間を推定し、決定部１０７が、推定部１０６が推定した組み合わせごとの応答時間に基づいて、変換部１０２、圧縮部１０３および送信部１０４の各処理部における処理方式を決定するようにしている。したがって、表示画面の画質の劣化等を伴うことなく、ユーザ操作に応じた画面更新をクライアント端末２にすみやかに反映させることができ、良好な応答性を実現することができる。
【０１０８】
また、本実施形態にかかる画面転送システムでは、サーバ端末１の変換部１０２、圧縮部１０３および送信部１０４の各処理部が処理を中断する場合に、その後、処理を中断した画面更新とそれに続く画面更新とをマージし、マージした画面更新に対する処理を行うようにしているので、各画面更新の時間的連続性を維持して、クライアント端末２の表示画面に画像の欠落が生じることを抑制することができ、ユーザの視認性を高めることができる。
【０１０９】
以上説明したとおり、本実施形態によれば、良好な応答性を実現することができる。
【０１１０】
本実施形態にかかる画面転送システムにおいて、サーバ端末１の上述した各機能は、例えば、サーバ端末１において所定のプログラムを実行することにより実現できる。このときのサーバ端末１のハードウェア構成について、図１６を用いて説明する。図１６は、本実施形態にかかるサーバ端末１のハードウェア構成例を示す説明図である。
【０１１１】
本実施形態にかかるサーバ端末１は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、ＨＤＤ（Hard  Disk  Drive）、ＣＤ（Compact  Disc）ドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置と、各部を接続するバス６１を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【０１１２】
本実施形態にかかるサーバ端末１で実行されるプログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disc）等のコンピュータで読み取り可能な記録媒体に記録されてコンピュータプログラムプロダクトとして提供される。
【０１１３】
また、本実施形態にかかるサーバ端末１で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態にかかるサーバ端末１で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【０１１４】
また、本実施形態にかかるサーバ端末１で実行されるプログラムを、サーバ端末１のＲＯＭ５２等に予め組み込んで提供するように構成してもよい。
【０１１５】
本実施形態にかかるサーバ端末１で実行されるプログラムは、サーバ端末１の各処理部（検出部１０１、変換部１０２、圧縮部１０３、送信部１０４、推定部１０６および決定部１０７など）を含むモジュール構成となっており、実際のハードウェアとしては、例えば、ＣＰＵ５１（プロセッサ）が上記記憶媒体からプログラムを読み出して実行することにより、上記各部が主記憶装置上にロードされ、上述した各部が主記憶装置上に生成されるようになっている。
【０１１６】
以上、本発明の実施形態を説明したが、ここで説明した実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。ここで説明した新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。ここで説明した実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１１７】
１  サーバ端末
２  クライアント端末
１０１  検出部
１０２  変換部
１０３  圧縮部
１０４  送信部
１０６  推定部
１０７  決定部
【図１】
0005646410.tif 000002
【図２】
0005646410.tif 000003
【図３】
0005646410.tif 000004
【図４】
0005646410.tif 000005
【図５】
0005646410.tif 000006
【図６】
0005646410.tif 000007
【図７】
0005646410.tif 000008
【図８】
0005646410.tif 000009
【図９】
0005646410.tif 000010
【図１０】
0005646410.tif 000011
【図１１】
0005646410.tif 000012
【図１２】
0005646410.tif 000013
【図１３】
0005646410.tif 000014
【図１４】
0005646410.tif 000015
【図１５】
0005646410.tif 000016
【図１６】
0005646410.tif 000017