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