(57)【要約】【課題】シンクライアントシステムにおけるクライアント装置の利用者が、クライアント装置の利用中に違和感を覚えないレスポンスを行なうことが可能なサーバ装置を提供する。【解決手段】サーバ装置がクライアント装置に表示させる画面情報を送信する際に、画面情報を複数のブロック画像に分割し、分割された各ブロック画像を圧縮した後に、圧縮された各ブロック画像のサイズが小さいものを優先的にクライアント装置へ送信する。また、クライアント装置における圧縮画像の解凍処理能力値を用いて、前記ブロック画像のサイズから解凍負荷値を算出し、クライアント装置における解凍負荷の少ないブロック画像を優先的にクライアント装置へ送信する。【選択図】図１１
2008211639.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介したクライアント装置からのサービス要求に基づいて、前記サービス要求に対応する画面情報を前記クライアント装置へ送信するサーバ装置であって、
前記クライアント装置に表示させる前記画面情報を前記クライアント装置へ送信するために前記画面情報を複数のブロック画像に分割する画面情報分割手段と、
前記画面情報分割手段によって分割された各ブロック画像を圧縮してブロック圧縮画像を生成する画像圧縮手段と、
前記画像圧縮手段によって圧縮された各ブロック圧縮画像のサイズに基づいて前記クライアント装置へ優先して送信するブロック圧縮画像を決定する送信ブロック決定手段と、
前記送信ブロック決定手段によって決定されたブロック圧縮画像を優先して前記クライアント装置へ送信するブロック送信手段と、
を備えることを特徴とするサーバ装置。
【請求項２】
前記送信ブロック決定手段は、前記ブロック圧縮画像のサイズが小さいブロック圧縮画像を優先して送信するブロック圧縮画像として決定することを特徴とする請求項１に記載のサーバ装置。
【請求項３】
前記送信ブロック決定手段は、前記クライアント装置における前記ブロック圧縮画像の解凍処理能力情報と前記ブロック圧縮画像のサイズとにより算出された解凍負荷値が小さいブロック圧縮画像を優先して送信するブロック圧縮画像として決定することを特徴とする請求項１に記載のサーバ装置。
【請求項４】
前記解凍負荷値は、前記クライアント装置へ送信した任意のブロック圧縮画像が解凍される時間を計測することにより算出されることを特徴とする請求項３に記載のサーバ装置。
【請求項５】
前記画像圧縮手段は、前記画面情報分割手段によって分割された各ブロック画像に高圧縮処理を施してブロック高圧縮画像を生成し、さらに、前記画面情報分割手段によって分割された各ブロック画像に、前記高圧縮処理と比較して低い圧縮率である低圧縮処理を施してブロック低圧縮画像を生成することを特徴とし、
前記送信ブロック決定手段は、前記ブロック低圧縮画像に優先して、前記ブロック高圧縮画像を送信することを決定すること、
を特徴とする請求項１乃至４の何れか１項に記載のサーバ装置。
【請求項６】
ネットワークを介したクライアント装置からのサービス要求に基づいて、前記サービス要求に対応する画面情報を前記クライアント装置へ送信するサーバ装置のコンピュータを、
前記クライアント装置に表示させる前記画面情報を前記クライアント装置へ送信するために前記画面情報を複数のブロック画像に分割する画面情報分割手段、
前記画面情報分割手段によって分割された各ブロック画像を圧縮してブロック圧縮画像を生成する画像圧縮手段、
前記画像圧縮手段によって圧縮された各ブロック圧縮画像のサイズに基づいて前記クライアント装置へ優先して送信するブロック圧縮画像を決定する送信ブロック決定手段、
前記送信ブロック決定手段によって決定されたブロック圧縮画像を優先して前記クライアント装置へ送信するブロック送信手段、
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションプログラムを動作させるサーバ装置に対してサービス要求を行なうクライアント装置と、クライアント装置からのサービス要求に基づいてアプリケーションプログラムを動作させるサーバ装置とがネットワークを介して相互に接続可能に構成されたサーバベースコンピューティングシステムに関する。
【背景技術】
【０００２】
近年、企業によるサーバベースコンピューティングの採用が急速に進んでいる。サーバベースコンピューティング（シンクライアントシステム）とは、クライアント装置（シンクライアント装置とも呼ばれる）とサーバ装置とがネットワークを介して相互に接続可能に構成されたシステムにおいて、クライアント装置がサーバ装置に対してサービス要求を行なうと、サーバ装置がクライアント装置からのサービス要求に基づいて、データの管理およびアプリケーションプログラムを動作させるというものである（例えば、特許文献１参照）。
【０００３】
具体的には、サーバ装置はクライアント装置用の表示データを作成し、これをクライアント装置に送る。クライアント装置では、使用者のキーやマウス等の操作情報を、ネットワークを介してサーバ装置へ送り、前記サーバ装置側で作成されたクライアント装置用の表示データを受け取って表示する。そのため、クライアント装置は、ネットワーク機器、表示装置、マウスやキーボード等の入力装置を備えているだけでよく、データをクライアント装置内に持たないため、ハードディスク等のストレージが不要であり、また、アプリケーションプログラムの実行を行なわないため、クライアント装置に必要となる処理の負荷は軽い、という特徴がある。
【０００４】
企業はサーバベースコンピューティングを導入することにより、データやアプリケーションプログラム等の資源がサーバ装置側で一元管理できるため、運用コストを削減することができるというメリットがある。また、クライアント装置は従来のパソコンに比べて安価に調達することができるというメリットがある。ウイルスに対しても、サーバ装置で一括対処することが可能となる。
【０００５】
上述のように、サーバベースコンピューティングシステムにおいて、一般的にはサーバ装置側が各機能を実行し、クライアント装置側で表示される画面に変化が生じた場合に、変化が生じた部分の画面データ（更新部分データ）がサーバ装置からクライアント装置へ送信される。この更新部分データを受け取ったクライアント装置は、その更新情報に従い更新データをクライアント装置の画面に反映する。なお、サーバ装置からクライアント装置へ送信される画面データは、接続開始時から少なくとも１度は全ての画面領域のデータに対する描画命令として通信される（例えば、特許文献１の段落番号０００３参照）。
【０００６】
【特許文献１】特開２００５−２２８２２７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述したように、サーバベースコンピューティングが実行される際には、アプリケーションプログラムを動作させるサーバ装置に対してサービス要求を行なうクライアント装置と、クライアント装置からのサービス要求に基づいてアプリケーションプログラムを動作させるサーバ装置とが、ネットワークを介して相互に接続可能に構成されている。
【０００８】
しかしながら、上述したような技術において、クライアント装置の処理能力が著しく低い場合、ネットワークの品質が悪い場合（伝送速度が遅い、伝送遅延が大きい、エラー発生率が高い等）等には、クライアント装置の操作性が著しく低下するという問題点があった。
【０００９】
例えば、入力デバイスであるマウス装置にて画面上のボタンをクリックすると、ボタンの色が変わると同時にボタンに応じた画像Ａが画面内で更新されるケースで説明する。
著しく処理能力が低いクライアント装置を使用した場合、あるいはネットワーク回線の品質が低下してきた場合、低品質のネットワーク回線を使っている場合などでは、クライアント装置の画面上の描画更新がゆっくり行われてしまう。この際、前記画像Ａの更新がゆっくりとなされたのち、ボタンの色が変わってしまうと、クライアント装置の使用者は操作性の不快さを感じてしまう。使用者は、マウス装置でボタンを押したので、まずボタンが変化することを期待する。ボタンが変化した後、ゆっくりとでも画像Ａの更新がなされれば使用者の不快感は和らげられる。
【００１０】
これは、サーバ装置側からクライアント装置側に画像情報を送る優先順位が、サーバ装置側の処理の都合によってのみ決められてきたことに起因している。
本発明の課題は、シンクライアントシステムにおけるクライアント装置の利用者が、クライアント装置の利用中に違和感を覚えないレスポンスを行なうことが可能なサーバ装置およびプログラムを提供することである。
【課題を解決するための手段】
【００１１】
請求項１記載の発明のサーバ装置は、ネットワークを介したクライアント装置からのサービス要求に基づいて、前記サービス要求に対応する画面情報を前記クライアント装置へ送信するサーバ装置であって、前記クライアント装置に表示させる前記画面情報を前記クライアント装置へ送信するために前記画面情報を複数のブロック画像に分割する画面情報分割手段と、前記画面情報分割手段によって分割された各ブロック画像を圧縮してブロック圧縮画像を生成する画像圧縮手段と、前記画像圧縮手段によって圧縮された各ブロック圧縮画像のサイズに基づいて前記クライアント装置へ優先して送信するブロック圧縮画像を決定する送信ブロック決定手段と、前記送信ブロック決定手段によって決定されたブロック圧縮画像を優先して前記クライアント装置へ送信するブロック送信手段と、を備えることを特徴とする。
【００１２】
更に、コンピュータを上述した請求項１記載の発明に示した主要手段として機能させるためのプログラムを提供する（請求項６記載の発明）。
請求項２記載の発明は、請求項１のサーバ装置において、前記送信ブロック決定手段は、前記ブロック圧縮画像のサイズが小さいブロック圧縮画像を優先して送信するブロック圧縮画像として決定することを特徴とする。
【００１３】
請求項３記載の発明は、請求項１のサーバ装置において、前記送信ブロック決定手段は、前記クライアント装置における前記ブロック圧縮画像の解凍処理能力情報と前記ブロック圧縮画像のサイズとにより算出された解凍負荷値が小さいブロック圧縮画像を優先して送信するブロック圧縮画像として決定することを特徴とする。
【００１４】
請求項４記載の発明は、請求項３のサーバ装置において、前記解凍負荷値は、前記クライアント装置へ送信した任意のブロック圧縮画像が解凍される時間を計測することにより算出されることを特徴とする。
【００１５】
請求項５記載の発明は、請求項１乃至４の何れかのサーバ装置において、前記画像圧縮手段は、前記画面情報分割手段によって分割された各ブロック画像に高圧縮処理を施してブロック高圧縮画像を生成し、さらに、前記画面情報分割手段によって分割された各ブロック画像に、前記高圧縮処理と比較して低い圧縮率である低圧縮処理を施してブロック低圧縮画像を生成することを特徴とし、前記送信ブロック決定手段は、前記ブロック低圧縮画像に優先して、前記ブロック高圧縮画像を送信することを決定すること、を特徴とする。
【発明の効果】
【００１６】
本発明によれば、シンクライアントシステムにおけるクライアント装置の利用者が、クライアント装置の利用中に違和感を覚えないレスポンスを行なうことができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の実施の形態について図面を参照しながら説明する。
（第１の実施の形態）
図１は、サーバベースコンピューティングのネットワーク構成の概略を示す図である。
【００１８】
図１において、クライアント端末装置１０２は、ネットワーク１０９を介してサーバ装置１０１に接続されている。無線アクセスポイント１０３も、ネットワーク１０９を介してサーバ装置１０１に接続されている。また、モバイル端末装置１０４、スマートフォン１０５等の移動端末装置は、アクセスポイント１０３と無線通信を行なうことにより、ネットワーク１０９を介してサーバ装置１０１と接続されている。また、ノート型の準移動端末装置であるクライアント端末装置１０６は、ネットワーク１０９、或いはアクセスポイント１０３に接続される。なお、以下の説明においては、クライアント端末装置１０２、モバイル端末装置１０４、スマートフォン１０５およびクライアント端末装置１０６を総称してクライアント装置という。これらのクライアント装置は、上述したように様々な形態をなしており、処理能力も大きく異なる。移動することを前提に考えられているクライアント装置は、一般的に処理能力を低くして電池寿命を長く取っている。
【００１９】
サーバ装置１０１は、アプリケーションプログラムを実行する機能、データを管理する機能等を有しており、ネットワーク１０９を介したクライアント装置からのサービス要求に基づいて、前記サービス要求に対応する画面情報を前記クライアント装置へ送信する。
【００２０】
そして、クライアント端末装置１０２、モバイル端末装置１０４、スマートフォン１０５あるいはクライアント端末装置１０６等のクライアント装置は、サーバ装置１０１との間でサーバベースコンピューティングシステムを構築している。
【００２１】
モバイル端末装置１０４、スマートフォン１０５あるいはクライアント端末装置１０６等のクライアント装置がアクセスポイント１０３を介した無線ネットワーク（ＷｉＦｉ、ＷＡＮ等）でサーバ装置１０１と接続されている場合は、無線ネットワークの回線品質が何時でも良好に保たれているわけでなく、種々障害等により品質が低下することがある。無線でのネットワークでは、有線のネットワークに比べてその品質を維持するのが難しい。ネットワーク１０９の品質が低下すると、通信速度の低下等により、サーバ装置１０１とクライアント装置間のデータ転送が満足に行なえず、操作性の悪化をもたらす。
【００２２】
本発明を適用したサーバベースコンピューティングシステムは、詳細を後述するように、クライアント装置の処理能力が低い場合でも、ネットワーク１０９の回線品質が低下した場合でも、クライアント装置の使用者が欲している情報を優先してサーバ装置１０１から転送し描画する。これにより、クライアント装置での操作違和感の無い高い操作性を保つことが可能となる。
【００２３】
図２は、本発明を適用したクライアント装置の構成の概略を示す図である。
図２において、クライアント端末装置１０２、モバイル端末装置１０４、スマートフォン１０５あるいはクライアント端末装置１０６等クライアント装置は、ＣＰＵ（中央処理装置：Central Processing Unit）２０１、クライアント装置の各機能を制御し実行するための制御プログラムが収納されたＲＯＭやＲＡＭ等のメモリ２０２、キーボードやマウス等、各種のデータや信号等を入力するための入力部２０３、画像やその他の情報を表示するためのＬＣＤ等の出力部２０４、画像を始め様々な情報を記録するための記憶部２０５、出力部２０４に表示するための画像を一時的に格納するフレームバッファ等のＶＲＡＭ２０６、無線ＬＡＮや携帯電話網等のネットワーク１０９に接続するためのネットワーク接続部２０７がバス２００に接続されて構成され、ＣＰＵ２０１がこれらの各部を制御している。
【００２４】
図３は、サーバ装置１０１の構成の概略を示す図である。
図３において、サーバ装置１０１は、ＣＰＵ３０１、サーバ装置１０１において処理を実行するプログラムの他、サーバ装置１０１の各機能を制御し実行するための制御プログラムが収納されたＲＯＭやＲＡＭ等のメモリ３０２、各種のデータや信号等を入力するための入力部３０３、画像やその他の情報を出力するための出力部３０４、画像を始め様々な情報を記録するための記憶部３０５、出力部３０４に表示するための画像又はクライアント装置へ送信するための画像を一時的に格納するフレームバッファ等のＶＲＡＭ３０６、ＬＡＮ等のネットワーク１０９に接続するためのネットワーク接続部３０７がバス３００に接続されて構成され、ＣＰＵ３０１がこれらの各部を制御している。
【００２５】
図４は、サーバ装置１０１とクライアント装置とが接続する際にそれぞれ実行する接続処理の流れを示すフローチャートである。
図４中の（Ａ）は、クライアント装置が実行するクライアント接続処理の流れを示すフローチャートであり、（Ｂ）は、サーバ装置１０１が実行するサーバ接続処理の流れを示すフローチャートである。
【００２６】
まず、クライアント装置は、ステップＳ４０１において、サーバ装置１０１に対して接続要求を送信する。この接続要求には、クライアント装置を特定するための固有ＩＤ、ユーザー情報、パスワード情報等が含まれ、これらが暗号化されて送信される。
【００２７】
この接続要求をサーバ装置１０１が受信すると、すなわち、サーバ装置１０１が、ステップＳ４０２において、接続要求を受信したと判断すると（ステップＳ４０２：Ｙ）、サーバ装置１０１は、接続の可否を判断し（不図示）、問題がなければ、ステップＳ４０３において、クライアント装置に対して接続許可を送信するとともに、必要に応じてクライアント装置のプロファイル情報（図５参照）を送信するように要求する（プロファイル情報送信要求を送信する）。なお、接続要求が送信されてきた際に含まれていた固有ＩＤが既にサーバ装置１０１に登録されており、対応するプロファイル情報をサーバ装置１０１が有している（格納している）場合は、接続許可のみ送信する。
【００２８】
そして、サーバ装置１０１から送信されてきた接続許可をクライアント装置が受信すると、すなわち、クライアント装置が、ステップＳ４０４において、接続許可を受信したと判断すると（ステップＳ４０４：Ｙ）、クライアント装置は、ステップＳ４０５において、サーバ装置１０１に対して接続許可を受信した旨のＡＣＫを送信（返信）し、ステップＳ４０６において、サーバ装置１０１との接続を完了する。また、クライアント装置が接続許可とともにプロファイル情報送信要求を受信した場合は、クライアント装置は、ステップＳ４０５において、ＡＣＫとともにプロファイル情報をサーバ装置１０１に対して送信する。
【００２９】
サーバ装置１０１がＡＣＫを受信すると、すなわち、ステップＳ４０７において、サーバ装置１０１がＡＣＫを受信したと判断すると（ステップＳ４０７：Ｙ）、サーバ装置１０１は、ステップＳ４０８において、クライアント装置との接続を完了する。
【００３０】
接続が完了した以降のサーバ装置１０１とクライアント装置との通信は、プロファイル情報に含まれる通信プロトコルに基づいて実行される。
図５は、クライアント装置からサーバ装置１０１へ送信するプロファイル情報５００の例を示す図である。
【００３１】
図５に示したように、クライアント装置からサーバ装置１０１へ送信するプロファイル情報５００は、送信するデータ情報を示すプロファイルＩＤ５０１、クライアント装置を特定するための端末ユニーク番号５０２、クライアント装置の表示装置である出力部２０４の大きさを示す表示サイズ５０３、表示する色数を示す表示色数５０４、対応可能な通信プロトコルを示す対応プロトコル５０５、クライアント装置で圧縮されたデータを解凍する処理能力を示す解凍処理能力５０６等を有している。
【００３２】
次に、サーバ装置１０１とクライアント装置との接続が確立した後の動作について説明を行なう。
図６は、クライアント装置において実行されるクライアント装置操作処理の流れを示すフローチャートである。
【００３３】
クライアント装置は、マルチタスクＯＳ上で種々のプログラムを動作させている。このクライアント装置操作処理もその１つである。
クライアント装置のＣＰＵ２０１は、まず、ステップＳ６０１において、クライアント装置に対する何らかの操作（クライアント装置操作）が実行されたか否かを判断する。
【００３４】
次に、何のクライアント装置操作も実行されていないと判断した場合（ステップＳ６０１：Ｎ）は、何らかのクライアント装置操作が実行されるのを待つループに入る。
他方、何らかのクライアント装置操作が実行されたと判断した場合（ステップＳ６０１：Ｙ）は、ステップＳ６０２において、そのクライアント装置操作に関するクライアント装置操作情報をサーバ装置１０１へ送信する。そして、ステップＳ６０１へ戻り、再び、クライアント装置操作の実行を待つループに入る。
【００３５】
図７は、クライアント装置からサーバ装置１０１へ送信するクライアント装置操作情報７００の例を示す図である。
図７に示したように、クライアント装置からサーバ装置１０１へ送信するクライアント装置操作情報７００は、クライアント装置でのクライアント装置操作であることを示す操作ＩＤ７０１、クライアント装置操作を示す操作７０２等を有している。本クライアント装置操作情報７００のデータ形式は、アプリケーション層レベルでのデータ形式であり、下位層により、サーバ１０１装置へのアドレス、データ部の暗号化、改竄防止の為のハッシュ値の付加、シーケンス番号の付加等がなされる。
【００３６】
図８は、クライアント装置において実行されるクライアント装置側受信処理の流れを示すフローチャートである。
クライアント装置では、図６を用いて説明したクライアント装置操作処理とは別に、クライアント装置側受信処理も起動している。
【００３７】
クライアント装置のＣＰＵ２０１は、まず、ステップＳ８０１において、サーバ装置１０１から送信されるデータを受信したか否かを判断する。
受信していないと判断した場合（ステップＳ８０１：Ｎ）は、データの受信を待つループに入る。
【００３８】
他方、受信したと判断した場合（ステップＳ８０１：Ｙ）は、ステップＳ８０２において、受信データが圧縮されている場合は解凍し、ステップＳ８０３において、クライアント装置が備えるフレームバッファに受信したデータを展開する。そして、ステップＳ８０４において、出力部２０４へ画像を表示した後、ステップＳ８０１に戻り、再び受信待ちループに入る。
【００３９】
図９は、サーバ装置１０１のフレームバッファ９０１を分割した各ブロックに付されるブロック番号を説明するための図である。
図９に示すように、フレームバッファ９０１は、点線で示したブロック境界９０９により例えば６個に分割されており、左上より右側に、そして左下より右側に０から５のブロック番号が付けられている。対応するピクセルは、左上が原点であり、右方向にＸ座標、下方向にＹ座標となる。
【００４０】
図１０は、サーバ装置１０１において実行されるサーバＦＢ（フレームバッファ）分割処理の流れを示すフローチャートである。
このサーバＦＢ分割処理は、サーバ装置１０１の初期化処理中に呼ばれる処理である。
【００４１】
サーバ装置１０１のＣＰＵ３０１は、まず、ステップＳ１００１において、フレームバッファ９０１のＸ方向のピクセルサイズを変数ＸＳに代入し、フレームバッファ９０１のＹ方向のピクセルサイズを変数ＹＳに代入し、カウンタ値の変数Ｘ、Ｙに０を代入して初期化する。また、ステップＳ１００２において、フレームバッファ９０１のＸ方向の分割数を変数ＸＢに代入し、Ｙ方向の分割数を変数ＹＢに代入する。例えば、４８０×３２０ピクセルのフレームバッファ９０１をＸ方向に３分割、Ｙ方向に２分割している場合は、変数ＸＳに４８０、変数ＹＳに３２０、変数ＸＢに３、変数ＹＢに２を代入する。
【００４２】
そして、ステップＳ１００３において、分割するブロックの座標のＹ座標を示すＹposに０を代入して初期化し、ステップＳ１００４において、分割するブロックの座標のＸ座標を示すＸposに０を代入して初期化するとともにカウンタ値の変数Ｘに０を代入して初期化する。ただし、１回目は、既にステップＳ１００１で変数Ｘを０に初期化済みである。
【００４３】
次に、ステップＳ１００５において、Ｙ方向の分割数だけ処理を繰り返すために、Ｙ方向の分割数が代入されている変数ＹＢがカウンタ値の変数Ｙより大きいか否かを判断する。
【００４４】
変数ＹＢが変数Ｙより大きいと判断した場合（ステップＳ１００５：Ｙ）は、ステップＳ１００６以降の処理を変数ＹＢ回（例えば２回）繰り返し、変数ＹＢが変数Ｙより大きくない（同じであるか小さい）と判断した場合（ステップＳ１００５：Ｎ）は、本サーバＦＢ分割処理を終了する。
【００４５】
次に、ステップＳ１００６において、Ｘ方向の分割数だけ処理を繰り返すために、Ｘ方向の分割数が代入されている変数ＸＢがカウンタ値の変数Ｘより大きいか否かを判断する。
【００４６】
変数ＸＢが変数Ｘより大きいと判断した場合（ステップＳ１００６：Ｙ）は、ステップＳ１００７以降の処理を変数ＸＢ回（この例では３回）繰り返す。
まず、ステップＳ１００７において、分割されたフレームバッファ９０１のブロックを特定するための番号として、ブロック番号座標配列ＢＬＮ［ｎ］（ＢＬＮ［ｎ］．ｘ，ＢＬＮ［ｎ］．ｙ）に、ブロック番号の位置する座標（Ｘpos，Ｙpos）を代入する。ここで、ｎは、ブロック番号をあらわし、変数Ｘ＋変数Ｙ×変数ＸＢで算出されるため、結果的に０から順に１ずつインクリメントされていく。
【００４７】
次に、ステップＳ１００８において、Ｘ方向に分割されたブロックのピクセル数（この例では、ＹＳ／ＹＢ＝４８０／３＝１６０）を変数Ｘposに加算し、ステップＳ１００９において、変数Ｘを１インクリメントして、ステップＳ１００６に戻る。
【００４８】
変数ＸＢが変数Ｘより大きくないと判断した場合（ステップＳ１００６：Ｎ）は、ステップＳ１０１０において、Ｙ方向に分割されたブロックのピクセル数（この例では、３２０／２＝１６０）を変数Ｙposに加算し、ステップＳ１０１１において、変数Ｙを１インクリメントして、ステップＳ１００４に戻って変数Ｘposおよび変数Ｘを０に初期化する。
【００４９】
本サブルーチン「サーバＦＢ分割処理」によって、具体的には、ステップＳ１００７が分割されたブロックの数だけ繰り返されることによって、各ブロック（この例では６個のブロック）それぞれの、フレームバッファ９０１内のアドレスがブロック番号座標配列ＢＬＮ［ｎ］には格納されたこととなる。そして、ブロック番号に対応する領域を扱う処理をする時は、ブロック番号座標配列ＢＬＮ［ｎ］が参照されることとなる。
【００５０】
図１１は、サーバ装置１０１において実行されるサーバ側受信処理の流れを示すフローチャートである。
サーバ装置１０１では、図１０を用いて説明したサーバＦＢ分割処理とは別に、サーバ側受信処理も起動している。
【００５１】
サーバ装置１０１のＣＰＵ３０１は、まず、ステップＳ１１０１において、クライアント装置からの送信されるデータを受信したか否かを判断する。ここで、受信したか否かを判断するデータとは、図６のステップＳ６０２でクライアント装置から送信されてくるクライアント装置操作情報７００を含む。
【００５２】
そして、データを受信していないと判断した場合（ステップＳ１１０１：Ｎ）は、データの受信を待つループに入る。
他方、データ、すなわちクライアント装置操作情報７００を受信したと判断した場合（ステップＳ１１０１：Ｙ）は、ステップＳ１１０２において、クライアント装置から送られてきたクライアント装置操作情報７００に含まれた操作７０２に対応したクライアント装置操作を実行し、サーバ装置１０１のフレームバッファ９０１を更新する（書き換える）。サーバ装置１０１のフレームバッファ９０１は、図９で説明したように複数（この例では６個）のブロックに分割されている。
【００５３】
そして、ステップＳ１１０３、およびステップＳ１１０４乃至Ｓ１１０６をブロックの数だけ繰り返すことにより、各ブロックを圧縮する。すなわち、ステップＳ１１０３において、０から始まるブロック番号を示す変数ｎに０を代入して初期化し、ステップＳ１１０４において、ブロックｎ（ｎ＝０の場合は１番目のブロック、ｎ＝１の場合は２番目のブロック、・・・、ｎ＝５の場合は６番目のブロック）を所望の方法で圧縮するとともに、配列Ｓ［ｎ］に圧縮されたブロックのサイズを格納する。そして、ステップＳ１１０５において、ｎを１インクリメントし、ステップＳ１１０６において、ｎが６（分割したブロックの数）より小さいか否かを判断することにより、分割したブロックの数だけ圧縮を繰り返す。
【００５４】
次に、ステップＳ１１０７において、各配列Ｓ［］を小さい順にソートして配列Ｂ［］に格納する。すなわち、配列Ｂ［０］には圧縮したサイズが一番小さなブロック番号が格納されている。
【００５５】
そして、ステップＳ１１０８、およびステップＳ１１０９乃至Ｓ１１１１をブロックの数だけ繰り返すことにより、圧縮され小さいサイズの順にソートされた各ブロックをクライアント装置へ送信する。すなわち、ステップＳ１１０８において、送信するブロックの順番を示す変数ｎに０を代入して初期化し、ステップＳ１１０９において、圧縮済みのブロックｎをクライアント装置へ送信する。そして、ステップＳ１１１０において、ｎを１インクリメントし、ステップＳ１１１１において、ｎが６（分割したブロックの数）より小さいか否かを判断することにより、分割して小さい順にソートしたブロックの数だけクライアント装置への送信を繰り返す。
【００５６】
図１２は、サーバ装置１０１からクライアント装置へ送信される送信データ１２００のデータ形式の例を示す図である。
図１２に示したように、サーバ装置１０１からクライアント装置へ送信される送信データ１２００は、サーバ装置１０１から送信した表示データを示す表示ＩＤ１２０１、データの圧縮方式１２０２、データのフレームバッファ９０１への展開アドレス１２０３、データの画像サイズ１２０４、データの圧縮後のデータサイズ１２０５、およびデータの圧縮データ１２０６を有している。本送信データのデータ形式は、アプリケーション層レベルのデータ形式であり、下位層にて、クライアント装置のアドレス、データ部の暗号化、改竄防止の為のハッシュ値の付加、シーケンス番号の付加等がなされる。
【００５７】
以上説明してきたように、本第１の実施の形態においては、サーバ装置１０１が、クライアント装置で早く表示（描画）することができるブロックを優先して送信することにより、例えば、圧縮後のデータサイズ１２０５が小さいブロックより優先してクライアント装置に送信することにより、低品質（回線速度が遅い、エラー率が高い、遅延が大きい等）のネットワーク１０９を用いた通信であっても、なんらかの描画反応が即座にクライアント装置に与えられることになり、クライアント装置の使用者の操作ストレスを著しく低減することが可能になる。特に、帯域が狭い通信回線環境下にて有効に作用する。
【００５８】
（第１の実施の形態の変形例１）
上述の第１の実施の形態では、圧縮後のデータサイズ１２０５が小さいブロックを優先してサーバ装置１０１からクライアント装置に送信したが、本変形例１ではクライアント装置での解凍負荷が少ないブロックを優先してサーバ装置１０１で処理をしてクライアント装置に送信する。
【００５９】
図１３は、サーバ装置１０１において実行される変形例１のサーバ側受信処理の流れを示すフローチャートである。
サーバ装置１０１のＣＰＵ３０１は、まず、ステップＳ１３０１において、クライアント装置からの送信されるデータを受信したか否かを判断する。ここで、受信したか否かを判断するデータとは、図６のステップＳ６０２でクライアント装置から送信されてくるクライアント装置操作情報７００を含む。
【００６０】
そして、データを受信していないと判断した場合（ステップＳ１３０１：Ｎ）は、データの受信を待つループに入る。
他方、データ、すなわちクライアント装置操作情報７００を受信したと判断した場合（ステップＳ１３０１：Ｙ）は、ステップＳ１３０２において、クライアント装置から送られてきたクライアント装置操作情報７００に含まれた操作７０２に対応するクライアント装置操作を実行し、サーバ装置１０１のフレームバッファ９０１を更新する（書き換える）。サーバ装置１０１のフレームバッファ９０１は、図９で説明したように複数（この例では６個）のブロックに分割されている。
【００６１】
そして、ステップＳ１３０３において、図１１のステップＳ１１０３、およびステップＳ１１０４乃至Ｓ１１０６をブロックの数だけ繰り返すことにより各ブロックを圧縮したのと同様にして、各ブロックを圧縮する。
【００６２】
次に、ステップＳ１３０４において、図１４を用いて後述するサブルーチン「転送方法の決定処理」を実行することにより、クライアント装置への転送順を決定する。
そして、ステップＳ１３０５、およびステップＳ１３０６乃至Ｓ１３０８をブロックの数だけ繰り返すことにより、圧縮され解凍負荷値の小さい順にソートされた各ブロックをクライアント装置へ送信する。すなわち、ステップＳ１３０５において、送信するブロックの順番を示す変数ｉに０を代入して初期化し、ステップＳ１３０６において、送信順（後述する変数Ｂ［ｉ］の順）に圧縮済みの各ブロックをクライアント装置へ送信する。そして、ステップＳ１３０７において、ｉを１インクリメントし、ステップＳ１３０８において、ｉが６（分割したブロックの数）より小さいか否かを判断することにより、分割して解凍負荷値の小さい順にソートしたブロックの数だけクライアント装置への送信を繰り返す。なお、最初にクライアント装置へ送信されるデータは、配列Ｂ［０］に格納されているブロック番号の領域を配列Ｐ［Ｂ［０］］の圧縮方法により圧縮済みのデータであり、最後にクライアント装置へ送信するのは、配列Ｂ［５］に格納されているブロック番号の領域を配列Ｐ［Ｂ［５］］の圧縮方法により圧縮済みのデータである。
【００６３】
図１４は、サブルーチン「転送方法の決定処理」の流れを示すフローチャートである。
本サブルーチン「転送方法の決定処理」によって決定されるクライアント装置への送信順は、圧縮後のデータサイズ１２０５とクライアント装置での解凍負荷値（解凍処理能力５０６）によって決定される。
【００６４】
まず、ステップＳ１４０１において、送信するブロックの順番を示す変数ｉに０を代入して初期化する。
そして、ステップＳ１４０２において、各ブロックの解凍負荷値を算出する。例えば、ブロック番号０のデータをＪＰＥＧ圧縮とＰＮＧ圧縮の２つの圧縮方法を用いて例示する。
【００６５】
ＪＰＥＧ圧縮およびＰＮＧ圧縮による圧縮後のデータサイズを下記（１）（２）の通りとする。
ＪＰＥＧ圧縮による圧縮後のデータサイズ：１００ＫＢ（キロバイト）  ・・・・（１）
【００６６】
ＰＮＧ圧縮による圧縮後データサイズ：２００ＫＢ  ・・・・（２）
また、データを送信すべきクライアント装置での解凍負荷率を下記（３）（４）の通りとする。ここで解凍負荷率は値が大きいほど圧縮データを解凍する解凍負荷が高い。これらの解凍負荷率は、プロファイル情報５００に解凍処理能力５０６（図５参照）として格納されている。
【００６７】
ＪＰＥＧ解凍負荷率：１０％  ・・・・（３）
ＰＮＧ解凍負荷率：１２％  ・・・・（４）
すなわち、ＪＰＥＧ、ＰＮＧ夫々の解凍負荷値は下記（５）（６）で示される。
【００６８】
ＪＰＥＧ解凍負荷値：１００ＫＢ×１０％＝１０００  ・・・・（５）
ＰＮＧ解凍負荷値：２００ＫＢ×１２％＝２４００  ・・・・（６）
このように、ＪＰＥＧの方がＰＮＧよりも解凍負荷値が小さいので、ブロック番号０はＪＰＥＧで圧縮することにする。ブロック番号０をＪＰＥＧで処理すべく、ステップＳ１４０２において、圧縮方法を格納するための配列Ｐ［ｉ］にＰ［０］＝ＪＰＥＧとし、解凍負荷値を示す配列Ｌ［ｉ］には、ブロック番号０は解凍負荷値１０００であるので下記（７）の如く代入する。
【００６９】
Ｌ［０］＝１００×１０＝１０００  ・・・・（７）
この値が小さいほうがクライアント装置での表示速度が速くなる。
そして、ステップＳ１４０３において、変数ｉを１インクリメントし、ステップＳ１４０４において、ｉが６（分割したブロックの数）より小さいか否かを判断することにより、解凍負荷値の算出を繰り返す。
【００７０】
次に、ステップＳ１４０５において、解凍負荷値Ｌ［ｉ］が小さいブロック番号順にソートして転送順を表す配列Ｂ［ｉ］に格納する。
この処理により、配列Ｂ［ｉ］には解凍負荷値が小さい順にブロック番号が格納される。また、配列Ｐ［ｉ］にはブロック番号に対応する圧縮方式が格納される。
【００７１】
このように、クライアント装置のスペック情報（プロファイル情報５００）を利用し、クライアント装置での解凍負荷の小さいブロックを優先してクライアント装置に送信することにより、処理能力の低いクライアント装置を用いた場合でも、なんらかの描画反応がクライアント装置に即座に与えられることになり、クライアント装置の使用者の操作ストレスを最小限に抑えることができる。特に、クライアント装置の処理能力が低い場合に有効に作用する。
【００７２】
また、解凍負荷値の算出に通信速度等を加味してもよい。
（第１の実施の形態の変形例２）
上述の説明では、クライアント装置のプロファイル情報５００の中の解凍処理能力５０６の情報を元にして解凍負荷値を算出していたが、データの送受信の前に、例えば接続セッションを確立する際にクライアント装置の性能テストを行なうことにより、解凍負荷値を求めてもよい。
【００７３】
図１５は、サーバ装置１０１とクライアント装置とが接続する際にそれぞれ実行する性能テスト処理の流れを示すフローチャートである。
図１５中の（Ａ）は、クライアント装置が実行するクライアント性能テスト処理の流れを示すフローチャートであり、（Ｂ）は、サーバ装置１０１が実行するサーバ性能テスト処理の流れを示すフローチャートである。
【００７４】
まず、サーバ装置１０１は、ステップＳ１５０１において、タイマーＴ１による計測を開始し、ステップＳ１５０２において、クライアント装置に対して所望の大きさのＪＰＥＧ処理を要求する（ＪＰＥＧ処理要求情報を送信する）。
【００７５】
すると、ＪＰＥＧ処理要求情報を受信したクライアント装置は、ステップＳ１５０３において、ＪＰＥＧ解凍処理を実行し、ステップＳ１５０４において、ＪＰＥＧ解凍処理が終了した旨を示すＪＰＥＧ終了情報をサーバ装置１０１に送信（返送）する。
【００７６】
サーバ装置１０１は、このＪＰＥＧ終了情報を受信すると（ステップＳ１５０５：Ｙ）、ステップＳ１５０６において、タイマーＴ１の計測結果からＪＰＥＧ解凍処理の処理速度を算出する。
【００７７】
次に、ＪＰＥＧ処理とは別の圧縮方法、例えばＰＮＧ処理について同様にその解凍速度を算出する。
すなわち、ステップＳ１５０７において、タイマーＴ２による計測を開始し、ステップＳ１５０８において、クライアント装置に対して所望の大きさのＰＮＧ処理を要求する（ＰＮＧ処理要求情報を送信する）。
【００７８】
すると、ＰＮＧ処理要求情報を受信したクライアント装置は、ステップＳ１５０９において、ＰＮＧ解凍処理を実行し、ステップＳ１５１０において、ＰＮＧ解凍処理が終了した旨を示すＰＮＧ終了情報をサーバ装置１０１に送信（返送）する。
【００７９】
サーバ装置１０１は、このＰＮＧ終了情報を受信すると（ステップＳ１５１１：Ｙ）、ステップＳ１５１２において、タイマーＴ２の計測結果からＰＮＧ解凍処理の処理速度を算出する。
【００８０】
ここで、同じ圧縮サイズのデータをサーバ装置１０１が送信すれば、タイマーＴ１やＴ２による計測時間をデータのサイズで除算した値が、解凍負荷率となる。本変形例２によれば、通信環境を含んだ状態での解凍負荷値になる。
【００８１】
これにより、クライアント装置の解凍能力について、実測のネットワーク負荷の情報を利用することで、より正確な解凍処理能力を得ることができ、クライアント装置側でより早く表示することができるブロックから先に送信するため、利用者は早くレスポンスを得ることができる。特に、通信環境の変化が激しい場合に有効に作用する。
【００８２】
なお、上記変形例２では、接続セッション確立時に性能テスト処理を実行しているが、一定間隔でサーバ装置１０１とクライアント装置との間にて性能テスト処理を実行し、ダイナミックに解凍負荷率を求めても良い。
【００８３】
（第１の実施の形態の変形例３）
本変形例３では、サーバ装置１０１から行なわれたクライアント装置へのデータ転送について、圧縮率を異ならせた２段階のデータ転送にて行なうことにより、使用者の体感速度の向上を図っている。
【００８４】
図１６は、サーバ装置１０１において実行される受信割り込み処理の流れを示すフローチャートである。
サーバ装置１０１がクライアント装置からデータを受信すると、サーバ装置１０１において受信割り込み処理が実行される。
【００８５】
すなわち、サーバ装置１０１のＣＰＵ３０１は、まず、ステップＳ１６０１において、受信割り込みを禁止する。
そして、ステップＳ１６０２において、受信割り込みの多重割り込みがあるか否かを変数InterruptRtを用いて判断する。この変数InterruptRtは、実際の転送処理を開始する前に１が格納され（ステップＳ１６０５参照）、本受信割り込み処理を終える前に０が格納される（ステップＳ１６１１参照）。つまり、転送処理中の受信割り込みによって本受信割り込み処理が呼ばれた場合には、変数InterruptRtに１が格納されていることになる。
【００８６】
ステップＳ１６０２で多重割り込みであると判断した場合、すなわち、変数InterruptRtに１が格納されている場合（ステップＳ１６０２：Ｙ）は、ステップＳ１６０３において、割り込みの戻りアドレスを一段スキップし、多重割り込みでないようにしてからステップＳ１６０４へ進む。つまり、戻りアドレスを受信割り込み処理内でなく、受信割り込みを呼んだ受信割り込み処理外のアドレスとする。
【００８７】
そして、ステップＳ１６０４において、クライアント装置から送られてきた受信内容に応じたサーバ装置１０１のアプリケーション処理を実行し、必要に応じてフレームバッファ９０１を更新する。
【００８８】
次に、ステップＳ１６０５において、多重割り込み検出のための変数InterruptRtに１を格納し、ステップＳ１６０６において、受信割り込みを許可する。
サーバ装置１０１のフレームバッファ９０１は、図９を用いて説明したように複数のブロック（ここでは６個のブロック）に分割されており、ステップＳ１６０７において、フレームバッファ９０１に格納されている全てのブロックについて各ブロックを高圧縮率（例えば、ＪＰＥＧ圧縮）にて圧縮処理する。
【００８９】
そして、ステップＳ１６０８において、ステップＳ１６０７での高圧縮処理後のブロック高圧縮画像のデータサイズが小さいブロックより順次クライアント装置に対してデータを送信する。
【００９０】
次に、ステップＳ１６０９において、ステップＳ１６０７で高圧縮処理したフレームバッファ９０１に格納されている全てのブロックについて、今度は通常の圧縮方法（例えば、ＰＮＧ圧縮）にて（ステップＳ１６０７での高圧縮処理前の）各ブロックを圧縮処理する。
【００９１】
そして、ステップＳ１６１０において、ステップＳ１６０９での通常圧縮処理後のブロック低圧縮画像のデータサイズが小さいブロックより順次クライアント装置に対してデータを送信する。
【００９２】
最後に、ステップＳ１６１１において、多重割り込み検出のための変数InterruptRtを０に初期化して本受信割り込み処理を終了する。
本受信割り込み処理による一度目の送信（ステップＳ１６０８）では、画素の荒いデータがクライアント装置の出力部２０４に表示されるが、クライアント装置の利用者の操作は、直ちに出力部２０４に反映されることとなる。
【００９３】
これにより、分割後の画面情報に対し、数段階（例えば２段階）の圧縮処理を行ない、一方の高い圧縮率の画像情報（ブロック高圧縮画像情報）を先に送信し、他方の圧縮率の画像情報（ブロック低圧縮画像情報）を後で送信することで、利用者は早くレスポンスを得ることができる。特に、通信帯域が極端に狭い通信環境下にて有効に作用する。
【００９４】
以上、本発明の実施の形態を、図面を参照しながら説明してきたが、上述してきた本発明の実施の形態は、サーバ装置１０１の一機能としてハードウェアまたはＤＳＰ（Digital Signal Processor）ボードやＣＰＵボードでのファームウェアもしくはソフトウェアにより実現することができる。
【００９５】
また、本発明が適用されるサーバ装置１０１は、その機能が実行されるのであれば、上述の実施の形態に限定されることなく、単体の装置であっても、複数の装置からなるシステムあるいは統合装置であっても、ＬＡＮ、ＷＡＮ等のネットワークを介して処理が行なわれるシステムであってもよいことは言うまでもない。
【００９６】
また、バスに接続されたＣＰＵ、ＲＯＭやＲＡＭのメモリ、入力装置、出力装置、外部記録装置、媒体駆動装置、ネットワーク接続装置で構成されるシステムでも実現できる。すなわち、前述してきた実施の形態のシステムを実現するソフトェアのプログラムを記録したＲＯＭやＲＡＭのメモリ、外部記録装置、可搬記録媒体を、サーバ装置１０１に供給し、そのサーバ装置１０１のコンピュータがプログラムを読み出し実行することによっても、達成されることは言うまでもない。
【００９７】
この場合、可搬記録媒体等から読み出されたプログラム自体が本発明の新規な機能を実現することになり、そのプログラムを記録した可搬記録媒体等は本発明を構成することになる。
【００９８】
プログラムを供給するための可搬記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、磁気テープ、不揮発性のメモリーカード、ＲＯＭカード、電子メールやパソコン通信等のネットワーク接続装置（言い換えれば、通信回線）を介して記録した種々の記録媒体などを用いることができる。
【００９９】
また、コンピュータ（情報処理装置）がメモリ上に読み出したプログラムを実行することによって、前述した実施の形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施の形態の機能が実現される。
【０１００】
さらに、可搬型記録媒体から読み出されたプログラムやプログラム（データ）提供者から提供されたプログラム（データ）が、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行ない、その処理によっても前述した実施の形態の機能が実現され得る。
【０１０１】
すなわち、本発明は、以上に述べた実施の形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の構成または形状を取ることができる。
【図面の簡単な説明】
【０１０２】
【図１】サーバベースコンピューティングのネットワーク構成の概略を示す図である。
【図２】本発明を適用したクライアント装置の構成の概略を示す図である。
【図３】サーバ装置１０１の構成の概略を示す図である。
【図４】サーバ装置１０１とクライアント装置とが接続する際にそれぞれ実行する接続処理の流れを示すフローチャートである。
【図５】クライアント装置からサーバ装置１０１へ送信するプロファイル情報５００の例を示す図である。
【図６】クライアント装置において実行される操作処理の流れを示すフローチャートである。
【図７】クライアント装置からサーバ装置１０１へ送信するクライアント装置操作情報７００の例を示す図である。
【図８】クライアント装置において実行される受信処理の流れを示すフローチャートである。
【図９】サーバ装置１０１のフレームバッファ９０１を分割した各ブロックに付されるブロック番号を説明するための図である。
【図１０】サーバ装置１０１において実行されるサーバＦＢ（フレームバッファ）分割処理の流れを示すフローチャートである。
【図１１】サーバ装置１０１において実行されるサーバ側受信処理の流れを示すフローチャートである。
【図１２】サーバ装置１０１からクライアント装置へ送信される送信データのデータ形式の例を示す図である。
【図１３】サーバ装置１０１において実行される変形例１のサーバ側受信処理の流れを示すフローチャートである。
【図１４】サブルーチン「転送方法の決定処理」の流れを示すフローチャートである。
【図１５】サーバ装置１０１とクライアント装置とが接続する際にそれぞれ実行する性能テスト処理の流れを示すフローチャートである。
【図１６】サーバ装置１０１において実行される受信割り込み処理の流れを示すフローチャートである。
【符号の説明】
【０１０３】
１０１      サーバ装置
１０２      クライアント端末装置
１０３      無線アクセスポイント
１０４      モバイル端末装置
１０５      スマートフォン
１０６      クライアント端末装置
１０９      ネットワーク
２００      バス
２０１      ＣＰＵ
２０２      メモリ
２０３      入力部
２０４      出力部
２０５      記憶部
２０６      ＶＲＡＭ
２０７      ネットワーク接続部
３００      バス
３０１      ＣＰＵ
３０２      メモリ
３０３      入力部
３０４      出力部
３０５      記憶部
３０６      ＶＲＡＭ
３０７      ネットワーク接続部
５００      プロファイル情報
５０１      プロファイルＩＤ
５０２      端末ユニーク番号
５０３      表示サイズ
５０４      表示色数
５０５      対応プロトコル
５０６      解凍処理能力
７００      クライアント装置操作情報
７０１      操作ＩＤ
７０２      操作
９０１      フレームバッファ（サーバ装置１０１側）
９０９      ブロック境界
１２００    送信データ
１２０１    表示ＩＤ
１２０２    圧縮方式
１２０３    展開先アドレス
１２０４    画像サイズ
１２０５    データサイズ
１２０６    圧縮データ
【図２】
2008211639.tif 000003
【図３】
2008211639.tif 000004
【図４】
2008211639.tif 000005
【図５】
2008211639.tif 000006
【図６】
2008211639.tif 000007
【図７】
2008211639.tif 000008
【図８】
2008211639.tif 000009
【図１０】
2008211639.tif 000010
【図１１】
2008211639.tif 000011
【図１２】
2008211639.tif 000012
【図１３】
2008211639.tif 000013
【図１４】
2008211639.tif 000014
【図１５】
2008211639.tif 000015
【図１６】
2008211639.tif 000016
【図１】
2008211639.tif 000017
【図９】
2008211639.tif 000018