(57)【要約】 サーバ１は、アプリケーションを実行させた場合のサーバ１、クライアント２のＣＰＵ負荷を算出するＣＰＵ負荷算出部１０８と、画面送信負荷を算出する画面送信負荷算出部１１０と、ファイル送信負荷を算出するファイル送信負荷算出部１０９と、サーバ１とクライアント２のCPU使用率を算出するCPU使用率算出部１１１と、ＣＰＵ負荷、画面送信負荷及びCPU使用率からアプリケーションをサーバ１で実行したときのサーバ実行時負荷を算出するサーバ実行時負荷算出部１１２と、ＣＰＵ負荷、ファイル送信負荷及びCPU使用率とからクライアント２で実行したときのクライアント実行時負荷を算出するクライアント実行時負荷算出部１１３と、サーバ実行時負荷とクライアント実行時負荷とからサーバ１、クライアント２いずれで実行させるかを判定する判定部１１５とを備える。
2011080809.tif 000002
【特許請求の範囲】
【請求項１】
アプリケーションの起動指示を検出する検出部と、
前記アプリケーションを自サーバ又はクライアントで実行させた場合のＣＰＵ負荷を算出するＣＰＵ負荷算出部と、
前記アプリケーションを自サーバで実行させた場合の画面送信負荷を算出する画面送信負荷算出部と、
前記ＣＰＵ負荷と前記画面送信負荷とから前記アプリケーションを自サーバで実行したときのサーバ実行時負荷を算出するサーバ実行時負荷算出部と、
前記ＣＰＵ負荷から前記アプリケーションを前記クライアントで実行したときのクライアント実行時負荷を算出するクライアント実行時負荷算出部と、
前記サーバ実行時負荷と前記クライアント実行時負荷とから前記アプリケーションを前記サーバと前記クライアントとのどちらで起動するかを判定する判定部と、
前記判定部が、前記自サーバで起動すると判定した場合、前記アプリケーションの起動を行う起動部と、
前記判定部が、前記クライアントで起動すると判定した場合、前記アプリケーションの起動情報を前記クライアントに送信する送信部と、
を備えることを特徴とするサーバ。
【請求項２】
前記サーバ実行時負荷算出部は、前記アプリケーションを自サーバで実行したときの自サーバの負荷である第１のサーバ実行時負荷を算出する第１のサーバ負荷算出部と、前記アプリケーションを自サーバで実行したときの前記クライアントの負荷である第２のサーバ実行時負荷を算出する第１のクライアント負荷算出部とを備え、
前記クライアント実行時負荷算出部は、前記アプリケーションを前記クライアントで実行したときの自サーバの負荷である第１のクライアント実行時負荷を算出する第２のサーバ負荷算出部と、前記アプリケーションを前記クライアントで実行したときの前記クライアントの負荷である第２のクライアント実行時負荷を算出する第２のクライアント負荷算出部とを備え、
前記判定部は、前記第１及び第２のサーバ実行時負荷と、前記第１及び第２のクライアント実行時負荷とから前記アプリケーションを前記サーバと前記クライアントとのどちらで起動するかを判定することを特徴とする
請求項１記載のサーバ。
【請求項３】
前記ＣＰＵ負荷算出部は、前記アプリケーションを自サーバで実行したときの第１のＣＰＵ負荷を算出する第３のサーバ負荷算出部と、前記アプリケーションを前記クライアントで実行したときの第２のＣＰＵ負荷を算出する第３のクライアント負荷算出部とを備え、
前記画面送信頻度算出部は、前記アプリケーションを自サーバで実行したときの自サーバの画面送信負荷である第１の画面送信負荷を算出する第４のサーバ負荷算出部と、前記アプリケーションを自サーバで実行した時の前記クライアントの画面送信負荷である第２の画面送信負荷を算出する第４のクライアント負荷出部とを備え、
前記第１のサーバ負荷算出部は、前記第１のCPU負荷と前記第１の画面送信負荷から前記第１のサーバ実行時負荷を算出し、
前記第１のクライアント負荷算出部は、前記第２の画面送信負荷から前記第２のサーバ実行時負荷を算出し、
前記第２のクライアント負荷算出部は、前記第２のＣＰＵ負荷から前記第２のクライアント実行時負荷を算出することを特徴とする
請求項２記載のサーバ。
【請求項４】
前記アプリケーションを前記クライアントで実行させた場合の前記自サーバから前記クライアントへのファイル送信負荷を算出するファイル送信負荷算出部とを更に備え、
前記クライアント実行時負荷算出部は、前記クライアント実行時負荷を算出する際に、更に前記ファイルの送信負荷を基に算出することを特徴とする
請求項３記載のサーバ。
【請求項５】
前記ファイル送信負荷算出部は、前記アプリケーションを前記クライアントで実行したときの自サーバのファイル送信負荷である第１のファイル送信負荷を算出する第５のサーバ負荷算出部と、前記アプリケーションを前記クライアントで実行した時の前記クライアントのファイル送信負荷である第２のファイル送信負荷を算出する第５のクライアント負荷算出部とを備え、
前記第２のサーバ負荷算出部は、前記第１のクライアント実行時負荷を算出する際に、更に、前記第１のファイル送信負荷を基に算出し、
前記第２のクライアント負荷算出部は、前記第２のクライアント実行時負荷を算出する際に、更に、前記第２のファイル送信負荷を基に算出することを特徴とする
請求項４記載のサーバ。
【請求項６】
前記クライアント及び前記サーバのCPU使用率を算出するCPU使用率算出部を更に備え、
前記サーバ実行時負荷算出部は、前記サーバ実行時負荷を算出する際に、更にサーバのCPU使用率を基に算出し、
前記クライアント実行時負荷算出部は、前記クライアント実行時負荷を算出する際に、更にクライアントのCPU使用率を基に算出することを特徴とする
請求項５記載のサーバ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はサーバに係り、特に画面をクライアントに転送するサーバに関する。
【背景技術】
【０００２】
従来、ネットワークを介して接続されたサーバからクライアントに対して、サーバのデスクトップの画像をパケット化してリアルタイムで配信する「画面転送システム」が知られている。このシステムによれば、サーバのデスクトップの画像を遠隔地のクライアントのユーザが参照することが可能になり、ネットワークを介した両拠点間において効率的な作業環境が実現できる。【０００３】
このような画面転送システムを構築する方法として、サーバのデスクトップ領域の描画領域に更新が生じるごとにその変更部分のみを、その描画座標とともにパケット化して配信するという方法がある。【０００４】
この画面転送システムでは、サーバやクライアントが過処理負荷の状態になることにより、画面送信のコマ落ちや遅延など、画面転送の品質に劣化が生じることがあった。【０００５】
たとえば特許文献１記載の技術では、サーバのＣＰＵ使用率に応じて、アプリケーションをサーバ、クライアントいずれかで実行させることにより、サーバの過処理負荷を防いでいる。【０００６】
また、特許文献２記載の技術は、サーバが動画再生の操作を捕捉すると、クライアントに対し動画再生に関する情報（動画データなど）を伝達し、クライアント側で再生表示している。【０００７】
しかし特許文献１では、サーバのCPU使用率が高い場合にクライアントでのアプリケーション起動を選択した場合においても、画面転送の品質に劣化が生じる場合があった。たとえば、クライアントでアプリケーションを起動させる場合であって、サーバからクライアントに対して、アプリケーション起動に必要なファイルを送信する場合に、ネットワーク帯域が十分でないため当該ファイルの送信に時間がかかり、アプリケーション起動開始までの時間がかかるので、クライアントでの画面表示に遅延が生じることがあった。【０００８】
また、特許文献２においても、クライアント側での動画再生を行った場合において、画面転送の品質に劣化が生じる場合があった。たとえば、ネットワーク帯域幅が十分でない場合にクライアントの処理能力が低いと、クライアントが過負荷状態となって、動画のコマ落ちや遅延が生じ、情報が十分にクライアントに伝えられない場合があった。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開平１１−５３３２６号公報
【特許文献２】特開２００７−８８９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
このように、従来の技術においては、コマ落ちや遅延など、画面転送の品質に劣化が生じる問題があった。特にネットワークを介した監視システム等において、サーバからクライアントへの異常発見の通知が遅れることで初期対策の遅れにより深刻な影響が生じる。【００１１】
本発明は、サーバからクライアントへの画面転送の品質を向上させるサーバを提供することを目的とする。
【課題を解決するための手段】
【００１２】
本発明の一観点によるサーバは、アプリケーションの起動指示を検出する検出部と、前記アプリケーションを自サーバ又はクライアントで実行させた場合のＣＰＵ負荷を算出するＣＰＵ負荷算出部と、前記アプリケーションを自サーバで実行させた場合の画面送信負荷を算出する画面送信負荷算出部と、前記ＣＰＵ負荷と前記画面送信負荷とから前記アプリケーションを自サーバで実行したときのサーバ実行時負荷を算出するサーバ実行時負荷算出部と、前記ＣＰＵ負荷から前記アプリケーションを前記クライアントで実行したときのクライアント実行時負荷を算出するクライアント実行時負荷算出部と、前記サーバ実行時負荷と前記クライアント実行時負荷とから前記アプリケーションを前記サーバと前記クライアントとのどちらで起動するかを判定する判定部と、前記判定部が、前記自サーバで起動すると判定した場合、前記アプリケーションの起動を行う起動部と、前記判定部が、前記クライアントで起動すると判定した場合、前記アプリケーションの起動情報を前記クライアントに送信する送信部とを備えることを特徴とする。
【発明の効果】
【００１３】
本発明のサーバによれば、サーバからクライアントへの画面転送の品質を向上することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の実施例１の画面転送システムを示す図。
【図２】本発明の実施例１のサーバおよびクライアントの構成を示すブロック図。
【図３】本発明の実施例１のサーバが生成する画面更新情報の例を示す図。
【図４】本発明の実施例１のサーバの動作を示すフローチャート。
【図５】アプリケーション種別とＣＰＵ負荷の評価値との対応表を示す図。
【図６】アプリケーション種別と画面送信負荷の評価値との対応表を示す図。
【図７】ＣＰＵ使用率とＣＰＵ使用率の評価値との対応表を示す図。
【図８】図２のサーバの変形部分を示すブロック図。
【発明を実施するための形態】
【００１５】
以下、本発明の実施例について説明する。
【実施例１】
【００１６】
図１に実施例１の画面転送システムの関係を示す。この画面転送システムは、サーバ１のデスクトップの画像をクライアント２に対して、ネットワーク３を介して送信することによりクライアント２の画面にサーバ１のデスクトップの画像を表示されるシステムである。ネットワーク３は例えばＩＥＥＥ８０２．３等の有線通信プロトコルに準拠したネットワーク３である。なお、ネットワーク３の形態はこれに限られず、例えばＩＥＥＥ８０２．１１で規定される無線通信プロトコル等、他のプロトコルに準拠したネットワークで構成してもよい。【００１７】
図２に、上記サーバ１とクライアント２のブロック図を示す。【００１８】
サーバ１は、画面更新情報生成部１０１と、エンコード部１０２と、画面更新情報送信部１０３と、入力部１０４と、アプリ起動検出部１０５と、入力情報受信部１０６と、CPU負荷算出部１０８と、ファイル送信負荷算出部１０９と、画面送信負荷算出部１１０と、CPU使用率算出部１１１と、CPU使用率取得部１０７と、サーバ実行時負荷算出部１１２と、クライアント実行時負荷算出部１１３と、アプリ起動部１１４と、判定部１１５と、アプリ起動情報送信部１１６とを含む。【００１９】
本実施例の画面転送システムのサーバ１は、アプリケーションの起動指示を受けた場合に、当該アプリケーションを、サーバ１、クライアント２いずれで動作させるかを判定し、その装置で動作させる装置である。当該判定のために、アプリケーションをサーバ１、クライアント２それぞれで動作させた場合の、サーバ１、クライアント２それぞれの負荷をサーバ１は、予測して算出する。【００２０】
即ち、サーバ１は、まず、ＣＰＵ負荷算出部１０８により、アプリケーションを動作させた場合のクライアント２、サーバ１それぞれのＣＰＵ負荷を算出する。その後、画面送信負荷算出部１１０によりサーバ１でアプリケーションを動作させた場合のサーバ１の画面送信負荷を算出し、ファイル送信負荷算出部１０９により、クライアント２でアプリケーションを動作させた場合のクライアント２のファイル送信負荷を算出する。CPU使用率算出部１１１は、サーバ１とクライアント２のアプリケーションの起動指示を受けた時点でのCPU使用率を算出する。【００２１】
そして、サーバ１は、サーバ実行時負荷算出部１１２により、当該算出したサーバ１のＣＰＵ負荷、CPU使用率及び画面送信負荷からアプリケーションをサーバ１で実行したときのサーバ実行時負荷を算出する。また、サーバ１は、クライアント実行時負荷算出部１１３により、当該算出したクライアント１のＣＰＵ負荷及びCPU使用率とファイル送信負荷とからクライアント２で実行したときのクライアント実行時負荷を算出する。そして、サーバ１の判定部１１５が、当該算出したサーバ実行時負荷とクライアント実行時負荷との大小関係を比較することにより、アプリケーションをサーバ１、クライアント２いずれで動作させるかを判定する。【００２２】
そして、サーバ１の判定部１１５が、サーバ１でアプリケーションを動作させると判定した場合は、アプリケーションを起動させるアプリケーション起動部１１４を動作させる。一方、クライアント２でアプリケーションを動作させると判定した場合は、アプリケーションの起動指示をアプリケーション起動情報送信部１１６によりクライアント２に送信する。クライアント２は当該アプリケーションの起動指示を受け取ると、アプリケーション起動部２１０によりアプリケーションを起動させる。【００２３】
サーバ１の画面更新情報生成部１０１は、サーバ１において実行されるＯＳ（Operating System：オペレーティングシステム）およびアプリケーションの動作状態に応じて画面更新情報を生成する。図３に画面更新情報の例を示す。図３に示されるように、画面更新情報とは、デスクトップの一部の最新の描画状態を得るための画面情報のことである。【００２４】
画面更新情報は、デスクトップにおける領域を示す領域情報と、当該領域における画像情報との二種類の情報を備える。直前のデスクトップの描画状態が記憶されたフレームバッファに対し、領域情報が示す領域のデータを更新画像情報の画像情報により上書き更新することにより、サーバ１のデスクトップの最新の描画状態を得ることができる。【００２５】
エンコード部１０２は、画面更新情報を受け取ると、画像情報に任意の圧縮処理を施す。【００２６】
画面更新情報送信部１０３は、エンコード処理を施された画面更新情報を、ネットワーク３を介してクライアント２に送信する。クライアント２は、画面更新情報を受信すると、デコード部２０２によりデコードして、フレームバッファ２０３に画面更新情報を上書きする。そして、表示部２０４により更新された画面を表示する。【００２７】
次に、アプリケーションの起動指示の検出とクライアント１とサーバ２のそれぞれの負荷を算出する方法の詳細を説明する。【００２８】
入力部１０４は、ユーザからのサーバ１への入力操作を受け取り、これを入力情報に変換して出力する。入力部１０４は、例えばマウスやキーボードである。【００２９】
また、入力情報受信部１０６は、クライアント２からネットワーク３を介してクライアント２のユーザからの入力情報を受信する。【００３０】
アプリ起動検出部１０５は、入力部１０４または入力情報受信部１０６から入力情報を受け取ると、当該入力情報が、サーバ１においてアプリケーションの起動指示を意味するか否かを検出する。アプリ起動検出部１０５が、当該入力情報が、起動指示であると検出した場合、当該起動指示にかかるアプリケーションの種別を、CPU負荷算出部１０８、ファイル送信負荷算出部１０９、画面送信負荷算出部１１０、CPU使用率算出部１１１のそれぞれに出力する。【００３１】
各々の算出部は、クライアント１、サーバ２それぞれで実行したときの負荷の予測値の算出処理を行う。【００３２】
CPU負荷算出部１０８は、アプリ起動検出部１０５からアプリケーションの種別を受け取ると、当該アプリケーションをサーバ１またはクライアント２で実行したときのＣＰＵの負荷の大きさを見積もり、これを画面転送の品質に関する評価値（ＣＰＵ負荷の評価値）に変換する。例えば、画面転送の品質に関する評価値（ＣＰＵ負荷の評価値）は、ＣＰＵの負荷の大きさに応じて与えられる数値として決定される。【００３３】
ファイル送信負荷算出部１０９は、アプリ起動検出部１０５からアプリケーションの種別を受け取ると、当該アプリケーションをクライアント２において実行する場合に、サーバ１からクライアント２への必要なファイル送信量を見積もり、これを画面転送の品質に関する評価値（ファイル送信負荷の評価値）に変換する。たとえば、画面転送の品質に関する評価値（ファイル送信負荷の評価値）は、例えば送信すると見積もったファイルのデータサイズに応じた数値として決定される。当該ファイルの送信は、アプリケーションをクライアント２において実行する場合にのみ生じるので、ファイル送信負荷の評価値は、クライアント２において実行する場合の評価値として算出される。【００３４】
画面送信負荷算出部１１０は、アプリ起動検出部１０５からアプリケーションの種別を受け取ると、当該アプリケーションをサーバ１において実行するに場合に、サーバ１からクライアント２への単位時間当たりの画面の転送の頻度を見積もり、これを画面転送の品質に関する評価値（画面送信負荷の評価値）に変換する。画面送信負荷の評価値は、例えば、アプリケーションを実行させた場合に発生する、画面更新情報の単位時間当たりの更新画素数の値に応じた数値として決定される。当該画面転送は、アプリケーションをサーバ１において実行する場合にのみ生じるため、画面送信負荷の評価値は、サーバ１において実行する場合の負荷として算出される。【００３５】
CPU使用率算出部１１１は、アプリ起動検出部１０５からアプリケーションの種別を受け取ると、CPU使用率取得部１０７から、アプリケーションの種別を受け取った時点でのサーバ１のＣＰＵの使用率を取得し、これを画面転送の品質に関する評価値（ＣＰＵ使用率の評価値）に変換する。また、ＣＰＵ使用率算出部１１１は、同様に、ネットワーク３を介してクライアント２から、ＣＰＵ使用率算出部１１１がアプリケーションの種別を受け取った時点での、クライアント２のＣＰＵの使用率を取得し、同様にＣＰＵ使用率の評価値に変換する。【００３６】
CPU使用率取得部１０７は、任意の手法によりその時点でのサーバ１のＣＰＵの使用率を取得する部分である。【００３７】
サーバ実行時負荷算出部１１２は、CPU負荷算出部１０８、ファイル送信負荷算出部１０９、画面送信負荷算出部１１０、CPU使用率算出部１１１からの画面転送の品質に関する評価値から、アプリケーションをサーバ１で実行したときの画面転送の品質に関する評価値（サーバ実行時負荷の評価値）を算出する。【００３８】
サーバ実行時負荷の評価値の算出は、例えばCPU負荷算出部１０８、画面送信負荷算出部１１０、CPU使用率算出部１１１における画面転送の品質に関する評価値の総和として算出される。つまり、サーバ１のＣＰＵ負荷と、画面送信負荷と、サーバ１のＣＰＵ使用率の評価値の和である。尚、前述したようにファイル送信負荷の評価値はサーバ１で実行した場合には発生しないので、サーバ実行時負荷の評価値の算出には関係しない。【００３９】
クライアント実行時負荷算出部１１３は、CPU負荷算出部１０８、ファイル送信負荷算出部１０９、画面送信負荷算出部１１０、CPU使用率算出部１１１からの画面転送の品質に関する評価値から、当該アプリケーションをクライアント２で実行したときの画面転送の品質に関する評価値（クライアント実行時負荷の評価値）を算出する。クライアント実行時負荷の評価値の算出は、例えばクライアント２のCPU負荷、ファイル送信負荷、クライアント２のCPU使用率の評価値の総和として算出される。尚、前述したように画面送信負荷はクライアント２で実行した場合は、発生しないため、クライアント実行時負荷の算出には関係しない。【００４０】
判定部１１５は、サーバ実行時負荷算出部１１２とクライアント実行時負荷算出部１１３で算出したサーバ実行時負荷の評価値とクライアント実行時負荷の評価値に基づき、サーバ１もしくはクライアント２いずれにおいてアプリケーションを起動するかの判定を行う。例えば、サーバ実行時負荷の評価値とクライアント実行時負荷の評価値の大小関係を比較することによりいずれにおいて実行するのかを判定する。サーバ１で起動すると判定した場合、アプリ起動部１１４に当該アプリケーション起動の指示が出される。クライアント２で起動すると判定した場合、アプリ起動情報送信部１１６に当該アプリケーションの起動情報が出力される。【００４１】
アプリ起動部１１４は、判定部１１５がアプリケーションをサーバ１で実行すると判定した場合に、当該アプリケーションを起動させる。【００４２】
アプリ起動情報送信部１１６は、判定部１１５がアプリケーションをクライアント２で実行すると判定した場合に、アプリケーションの起動情報を、ネットワーク３を介してクライアント２に送出する。【００４３】
次に、本実施例のサーバ１において、アプリケーションの種別に応じてアプリケーションを、サーバ１、クライアント２どちらで行うかの判定方法ついて具体的に説明する。【００４４】
前述したように、アプリケーションをサーバ１において起動する場合、サーバ１においてアプリケーションを実行する処理と、サーバ１からクライアント２へとアプリケーションを実行することにより描画された画面更新情報を画面転送し、クライアント２に当該画面更新情報にかかる表示内容を描画させる処理が必要になる。【００４５】
一方、アプリケーションをクライアント２において起動する場合、サーバ１からクライアント２へとアプリケーションを起動するために必要な文書ファイルを転送する処理と、クライアント２においてアプリケーションを実行する処理が必要になる。【００４６】
そこで判定部１１５は、サーバ１、クライアント２それぞれでアプリケーションの実行を行った場合の負荷を見積もった上で、当該負荷の大小で、サーバ１、クライアント２いずれがアプリケーションを実行するかの判定を行う。【００４７】
例えば、アプリケーションとして、データサイズの小さな動画ファイルである場合、サーバ１、クライアント２いずれでアプリケーションを動作させたら良いかについて説明する。サーバ１において、動画の再生を実行した場合、動画の再生に伴って大量の画面転送が発生する。その結果、ネットワーク帯域の上限などの制約によりクライアント２側にコマ落ち等が発生する可能性がある。この場合、サーバ１側で動画再生を行うのではなく、クライアント２側に動画ファイルを転送した後で、クライアント２にて動画の再生を行った方が好ましい。【００４８】
このように、アプリケーションが、データサイズの小さい動画ファイルである場合、サーバ１側で実行した場合の画面転送負荷が大きいので、クライアント２でアプリケーションを実行させるほうが好ましい。【００４９】
次に、アプリケーションとして、テキストエディタでファイルサイズの大きな文書ファイルを編集する場合、サーバ１、クライアント２いずれでアプリケーションを動作させたら良いかについて説明する。クライアント２でアプリケーションを動作させる場合、文書ファイルをクライアント２側に転送する必要がある。この場合、ネットワーク帯域の上限などの制約により、クライアント２側での閲覧開始までの時間が大きくかかってしまうことや、文書ファイルの転送中に生じた他の画面更新情報の伝達に遅延やコマ落ちが生じるなどの可能性がある。このような場合、文書ファイルの転送を行わず、サーバ１でテキストエディタを起動し、文書ファイルをサーバ１側で編集したうえで更新画像情報を画面転送によりクライアント２に伝える方が好ましい。このように、アプリケーションが、テキストエディタでファイルサイズの大きな文書ファイルを編集する場合、クライアント２側で実行した場合のファイル送信負荷が大きいので、サーバ１でアプリケーションを実行させるほうが好ましい。【００５０】
次に、図２に示すクライアント２の構成を説明する。【００５１】
クライアント２は、画面更新情報受信部２０１と、デコード部２０２と、フレームバッファ２０３と、表示部２０４と、入力部２０５と、入力情報送信部２０６と、CPU使用率取得部２０７と、CPU使用率送信部２０８と、アプリ起動情報受信部２０９と、アプリ起動部２１０とを備える。【００５２】
画面更新情報受信部２０１は、ネットワーク３を介してサーバ１から画面更新情報を受信する。【００５３】
デコード部２０２は、画面更新情報を受け取ると、画像情報に適当なデコード処理を施す。【００５４】
フレームバッファ２０３は、クライアント２の表示部２により表示する表示画面の全体画像を格納するための記憶領域を有する。デコード部２０２から画面更新情報を受け取ると、画面更新情報に含まれる領域情報が示す部分の画面データを、画面更新情報に含まれる画面情報によって上書き更新する。【００５５】
表示部２０４は、フレームバッファ２０３に格納されている画面データを表示する。フレームバッファ２０３に格納されている画面データが画面更新情報により更新されると表示する画面データも更新される。【００５６】
入力部２０５は、ユーザからの入力操作を受け取り、これを入力情報に変換して入力情報送信部２０６に出力する。入力部２０５は、例えばマウスやキーボードなどである。【００５７】
入力情報送信部２０６は、入力情報をネットワーク３を介してサーバ１に送信する。【００５８】
CPU使用率取得部２０７は、任意の手法によりその時点でのクライアント２のＣＰＵの使用率を取得する。【００５９】
CPU使用率送信部２０８は、CPU使用率取得部２０７が取得したＣＰＵ使用率をネットワーク３を介してサーバ１へと送信する。【００６０】
アプリ起動情報受信部２０９は、ネットワーク３を介してサーバ１からアプリケーション種別を含むアプリ起動情報を受信する。【００６１】
アプリ起動部２１０は、アプリ起動情報受信部２０９からアプリ起動情報を受け取ると、当該情報が示すアプリケーション種別のアプリケーションを起動する。【００６２】
次に、本実施例に係る画面転送システムにより行われる処理について説明する。サーバ１と、クライアント２とがネットワーク３を介して接続されており、両者は画面転送を実施している状態にあるものとする。【００６３】
まず、サーバ１が画面更新情報を生成する場合の処理を説明する。【００６４】
画面転送を実施している状態にあるとき、サーバ１の画面更新情報生成部１０１は、サーバ１において実行されるＯＳおよび各種アプリケーションの動作状態の変化により、ユーザへ提示する視覚的情報に更新があるかどうかをチェックし、更新がある場合は、画面更新情報の生成を行う。画面更新情報生成部１０１は、更新の前後の視覚的情報の差分を任意の方法で抽出することで画面更新情報を生成する。あるいは別の方法として、ＯＳが発行する画面更新情報を直接フックすることにより画面更新情報を得てもよい。画面更新情報生成部１０１は、生成した画面更新情報をエンコード部１０２に出力する。【００６５】
エンコード部１０２は画面更新情報を受け取ると画面情報に対しエンコード処理を施す。エンコード部１０２は、エンコード処理として、例えば、ビットマップデータに対して、ＪＰＥＧ（Joint Photographic Experts Group）やｇｚｉｐ（GNU ZIP）などの任意のアルゴリズムによる圧縮処理を行う。次に、エンコード部１０２は、エンコード後の画面更新情報を画面更新情報送信部１０３に出力する。画面更新情報送信部１０３は、画面更新情報にＴＣＰ（Transmission Control Protocol）ヘッダやＩＰ（Internet Protocol）ヘッダを付与するなどして画面更新情報をネットワーク３に送出させるのに適切な形式に変換した後でネットワーク３に送出する。【００６６】
クライアント２の画面更新情報受信部２０１は、ネットワーク３から画面更新情報を受信すると、前述のＴＣＰヘッダやＩＰヘッダを除外する。画面更新情報受信部２０１は画面更新情報をデコード部２０２に出力する。【００６７】
デコード部２０２は画面更新情報を受信すると、画面更新情報にデコード処理を施し、当該画面情報による描画をフレームバッファ２０３に対し行う。【００６８】
次に、サーバ１においてアプリケーションの起動指示が検出された場合、当該アプリケーションをサーバ１、クライアント２いずれで実行するかを判定する処理について説明する。アプリケーションの起動指示の検出時に行われる処理を説明するフローチャートを、図４に示す。【００６９】
サーバ１の入力部１０４は、マウスの移動やボタンクリックやキーボードのキー押下といったユーザの操作に応じて入力情報を生成する。入力情報は、例えば、入力部１０４の種別（マウスかキーボードか）を表す入力タイプを含む。入力タイプがマウスである場合、入力情報は、さらに、デスクトップにおけるマウスカーソルの座標位置、ホイールの移動、ボタンの動作状態を示す各種フラグを示す値を含む。また、入力タイプがキーボードである場合、入力情報は、更に、キーコード、キーの動作状態を示す各種フラグを示す値を含む。入力部１０４は、入力情報を生成するごとに当該入力情報をアプリ起動検出部１０５に出力する。【００７０】
一方、クライアント２の入力部２０５も同様に、ユーザの操作に応じた入力情報を生成する。入力情報送信部２０６は、入力情報にＴＣＰヘッダを付与して入力情報をネットワーク３に送出させるのに適切な形式に変換した後でネットワーク３に送信する。サーバ１の入力情報受信部１０６は、ネットワーク３から入力情報を受け取ると、前述のＴＣＰヘッダ等を除外し入力情報を得て、アプリ起動検出部１０５に出力する。【００７１】
アプリ起動検出部１０５は、サーバ１の入力部１０４から受け取った入力情報と、クライアント２の入力部２０５から受け取った入力情報とを区別せずに扱うことができる。アプリ起動検出部１０５は、デスクトップにおける各ＧＵＩ（Graphical User Interface）の構成に関する位置情報を任意の手法により得ることができる。アプリ起動検出部１０５は、入力情報を受け取るごとに、当該入力情報がサーバ１における任意のアプリケーションの起動を指示するものであるか否かを判断する。【００７２】
アプリケーションの起動の指示があったと判断する方法の例をいくつか挙げる。第１の例として、アプリ起動検出部１０５は、デスクトップにおけるプログラムアイコンやショートカットアイコンの配置と各アイコンと関連付けられたアプリケーションの種別を得る。受け取った入力情報が当該アイコン上でのマウスのダブルクリック操作や、キーボードのエンターキーの押下操作であった場合、アプリケーションの起動指示があったと判断する。【００７３】
第２の例として、ユーザがデスクトップのスタートメニューを開いた際にアプリケーションのランチャ領域を検出して、当該領域上にてマウスのクリック操作やキーボードのエンターキーの押下操作が行われた際にもアプリケーションの起動指示があったと判断する。【００７４】
第３の例として、文書ファイルのアイコン上でのクリック操作やエンターキーの押下操作の場合は、当該文書ファイルに関連付けられたアプリケーションの起動指示があったことを判断する。また、第４の例として、文書ファイルのプログラムアイコンへのマウスのドラッグドロップ操作があった場合も、アプリケーションの起動指示があったことを検出する。【００７５】
尚、以上の説明において、アプリ起動検出部１０５は、入力部からの入力情報により、アプリケーションの起動指示を検出したが、入力部の入力情報以外の情報からもアプリケーションの起動指示を検出することができる。例えば、アプリケーションの起動イベントを通知するための仕組みをＯＳが提供している場合は、アプリケーションは当該起動イベントからアプリケーションの起動指示を検出しても良い。【００７６】
アプリ起動検出部１０５は、アプリケーションの起動指示を検出すると（Ｓ１０１）、起動指示のあったアプリケーションの種別を取得した後で、当該アプリケーションの実行において文書ファイルを使用するか否かを検出する（Ｓ１０２）。アプリ起動検出部１０５は、文書ファイルを使用すると検出した場合、更に、その文書ファイルに関する情報（ファイルのパスなど）を取得する（Ｓ１０３）。【００７７】
次に、アプリ起動検出部１０５は、本来なら当該アプリケーションの起動が行われるところを、アプリケーションの起動が起こらないような処置を行う（Ｓ１０４）。次に、アプリケーション検出部１０５は、アプリケーションの種別を、CPU負荷算出部１０８、ファイル送信負荷算出部１０９、画面送信負荷算出部１１０、CPU使用率算出部１１１のそれぞれに出力し、各々に画面転送の品質に関する評価値の算出の開始を指示する。【００７８】
尚、アプリケーション検出部１０５は、文書ファイルおよび文書ファイルに関する情報を取得している場合は、当該情報も合わせて出力する。次に、各算出部１０８〜１１１は、各々が、画面転送の品質にかかわる評価値の算出を行う（Ｓ１０５）。【００７９】
次に、各算出部１０８〜１１１における画面転送の品質にかかわる評価値の算出方法について説明する。【００８０】
各算出部１０８〜１１１は、以下の手順により画面転送の品質にかかわる評価値を算出し、その結果をサーバ実行時負荷算出部１１２とクライアント実行時負荷算出部１１３のそれぞれに出力する。【００８１】
CPU負荷算出部１０８は、アプリケーションをサーバ１もしくはクライアント２で起動したときのＣＰＵの負荷の増加量を見積もり、画面転送の品質にかかわる評価値（ＣＰＵ負荷の評価値）を算出する。ＣＰＵ負荷の評価値は、ＣＰＵの負荷の大きさに応じた値とする。ＣＰＵ負荷の評価値は、例えば、アプリケーション種別とＣＰＵ負荷の評価値との対応表により求めることができる。図５に、当該対応表の例を示す。【００８２】
図５は、様々なアプリケーションの種別それぞれのアプリケーションを動作させたときのＣＰＵの負荷の評価値が記されている。例えば、起動するアプリケーションの種別が、画像編集アプリケーションである場合、ＣＰＵ負荷の評価値は５である。また、起動するアプリケーションの種別がメモ帳の場合、ＣＰＵ負荷の評価値は１である。【００８３】
尚、CPU負荷算出部１０８は、このようにアプリケーション種別に対してＣＰＵ負荷の評価値として所定の値を定めて保有していても良いが、常に、アプリケーションの種別に対してＣＰＵ負荷の評価値として所定の値を定める必要もない。即ち、例えば、適当なタイミングで、当該アプリケーションが占めるＣＰＵ使用率を計測して、ＣＰＵ使用率が高ければ、大きなＣＰＵ負荷の評価値を与え、低ければ、小さなＣＰＵ負荷の評価値を与えて、対応表を適宜更新してもよい。このように、適宜、対応表を更新すれば、常に最新のアプリケーションのＣＰＵ使用状況を考慮に入れた判断が可能になる。【００８４】
ファイル送信負荷算出部１０９は、アプリ起動検出部１０５からの入力に、文書ファイルおよび文書ファイルに関する情報が含まれる場合に、クライアント２でアプリケーションを実行する際に当該文書ファイルをサーバ１からクライアント２に転送する際の転送量を見積もり、画面転送の品質にかかわる評価値（ファイル送信負荷の評価値）を算出する。【００８５】
アプリケーションをクライアント２側で起動するために、あらかじめ文書ファイルをサーバ１からクライアント２に転送する場合、当該文書ファイルのファイルサイズが大きければ大きいほど、当該文書ファイルの転送に時間がかかる。その結果、クライアント１におけるアプリケーションの起動の待ち時間が増加して、ユーザの利便性を低減することとなる。ここで、ファイル送信負荷の評価値は、文書ファイルのデータサイズに応じて、値を定める。例えば、「３メガバイトごとに評価値１を加算する」といった基準によって定める。【００８６】
尚、ファイル送信負荷の評価基準は必ずしも上述した基準を使う必要はない。例えば、他の方法としては、サーバ１からクライアント２への画面転送の開始時などにサーバ１のネットワークカードの性能などを調べ、これに応じて基準を動的に変更して用いてもよい。このように、ネットワークカードの性能を調べることにより、ネットワークカードの性能が高ければ文書ファイルのデータサイズの影響は小さく、性能が低ければ影響は大きいといった形で反映することができ、装置の性能に応じた判断が可能になるという利点がある。【００８７】
また、そのほかの方法として、ファイル送信負荷を算出する時点のネットワーク３の負荷状態を調べて、それに応じて評価値を変更してもよい。つまり、ネットワーク３が混雑して利用可能な帯域幅が一時的に小さくなっていれば、ファイルサイズの影響は大きいと判断する。このように、ネットワークの負荷状態をファイル送信負荷の値の算出に反映することにより、その時々のネットワーク３の状況を加味した判断が可能になるという利点がある。【００８８】
画面送信負荷算出部１１０は、アプリケーションをサーバ１側で実行した際に発生する画面転送の処理の頻度を見積もり、画面転送の品質にかかわる評価値（画面送信負荷の評価値）を算出する。アプリケーションをサーバ１側で起動すれば、当該アプリケーションにおいてなされた画面描画の各々に対して前述の画面更新情報処理が施される。そのため、当該アプリケーションにおいてなされる画面描画の頻度が多ければ、サーバ１及びクライアント２の処理負荷やネットワーク帯域の消費量が増大する。その結果、画面転送の品質低下につながることがある。【００８９】
画面送信負荷算出部１１０は、画面送信負荷の評価値を算出する際、アプリケーション種別と画面送信負荷の評価値との対応表を用いて算出する。アプリケーション種別と画面転送負荷の評価値との対応表の例を図６に示す。図６では、様々なアプリケーションに対する画面送信負荷の評価値が記されている。画面送信負荷の評価値は当該アプリケーションにおいて生じる単位時間当たりの更新画素数に応じた値である。例えば、アプリケーション種別が動画再生アプリケーションである場合、評価値は５である。メモ帳の場合評価値は１である。【００９０】
尚、画面送信負荷算出部１１０は、このようにアプリケーション種別に対して画面送信負荷の評価値として所定の値を定めて保有していても良いが、常に、アプリケーションの種別に対して画面送信負荷の評価値として所定の値を定める必要もない。例えば、画面更新情報生成部１０１が画面更新情報を生成するごとに、当該画面更新情報がどのアプリケーションに属するかを調べることで、アプリケーションごとの画面更新情報の発生頻度を求め、この大きさに応じて、当該アプリケーションの画面送信負荷の評価値を更新してもよい。【００９１】
このように、アプリケーション毎に画面更新情報の発生頻度を求めて、画面送信負荷の評価値に反映させれば、常に最新のアプリケーションの画面更新情報の更新頻度を考慮に入れた判断が可能になるという利点がある。【００９２】
CPU使用率算出部１１１は、サーバ１とクライアント２のそれぞれにおける現在のＣＰＵ使用率を取得し、これから画面転送の品質にかかわる評価値（ＣＰＵ使用率の評価値）を算出する。このためにCPU使用率算出部１１１は、まずCPU使用率取得部１０７から、サーバ１の現在のＣＰＵ使用率の読み出しを依頼する。これを受けてCPU使用率取得部１０７は現在のサーバ１のＣＰＵ使用率の計測を行いその値をＣＰＵ使用率算出部１１１に返答する。次にCPU使用率算出部１１１はクライアント２の現在のＣＰＵ使用率の読み出しを、ネットワーク３を介してクライアント２に依頼する。【００９３】
これを受けてクライアント２のCPU使用率取得部２０７は現在のクライアント２のＣＰＵ使用率の計測を行いその値をCPU使用率送信部２０８を介して返答する。そしてCPU使用率算出部１１１はこれらを受けるとこの値をＣＰＵ使用率の評価値に変換する。当該変換は、例えばＣＰＵ使用率とＣＰＵ使用率の評価値との対応表を用いて算出する。対応表の例を図７に示す。図７では、各ＣＰＵ使用率毎に対応するＣＰＵ使用率の評価値が記されている。ＣＰＵ使用率算出部１１１は、この対応表からＣＰＵ使用率の評価値を算出することができる。【００９４】
尚、ＣＰＵ使用率算出部１１１は、このようにＣＰＵ使用率ごとに所定の評価値を定めて保有しても良いが、常に、ＣＰＵ使用率に対して所定の評価値を定める必要もない。例えば、画面転送の開始時にサーバ１とクライアント２のＣＰＵ性能を計測した後で、例えば高性能のＣＰＵを用いている場合には、通常よりも低い評価値を設定するといったように対応表を更新することができる。これによりサーバ１とクライアント２のＣＰＵ性能に応じて適切な判断を行うことができる。また、ＣＰＵ使用率算出部１１１は、評価値の算出の依頼を受け取るごとにＣＰＵ使用率の取得を行う必要はなく、いったん取得した値をしばらくのあいだ使い続けるといった制御を加えてもよい。これにより、ＣＰＵ使用率の取得にかかる負荷を節減することが可能になる。【００９５】
以上、各算出部１０８〜１１１における画面転送の品質にかかわる評価値の算出方法について説明した。【００９６】
次に、サーバ実行時負荷算出部１１２とクライアント実行時負荷算出部１１３の処理について述べる。【００９７】
サーバ実行時負荷算出部１１２は、各算出部１０８〜１１１からの画面転送にかかわる評価値をすべて受け取ると、これらの評価値から、アプリケーションをサーバ１側で実行したときの画面転送の品質にかかわる評価値（サーバ実行時負荷の評価値）を算出する（Ｓ１０６）。サーバ実行時負荷算出部１１２は、サーバ１においてアプリケーションが消費するＣＰＵ負荷の評価値と、当該アプリケーションにおいて発生する画面送信負荷の評価値と、現在のサーバ１のＣＰＵ使用率の評価値の和を算出する。当該和を、サーバ１でアプリケーションを実行したときの画面転送の品質の評価値（サーバ実行時負荷の評価値）とする。【００９８】
なお、サーバ実行時負荷の評価値として、上記の値の和を評価値としたが、任意の計算式が適用可能である。なお、サーバ１でアプリケーションを実行する場合は文書ファイルの転送は不要である。したがって、サーバ実行時負荷の評価値算出の際、ファイル送信負荷の評価値は反映されない。（したがって、サーバ実行時負荷算出部１１２へのファイル送信負荷の評価値の入力待ちも不要である。）
一方、クライアント実行時負荷算出部１１３は、各算出部１０８〜１１１からの評価値をすべて受け取ると、これらの値から、アプリケーションをクライアント２側で実行したときの画面転送の品質にかかわる評価値（クライアント実行時負荷の評価値）を算出する（Ｓ１０６）。クライアント実行負荷算出部１１３は、クライアント２においてアプリケーションが消費するＣＰＵ負荷の評価値と、文書ファイルの転送にかかるファイル送信負荷の評価値と、現在のクライアント２のＣＰＵ使用率の評価値の和を算出する。当該和を、クライアント２でアプリケーションを実行したときの画面転送の品質の評価値（クライアント実行時負荷の評価値）とする。【００９９】
なお、クライアント実行時負荷の評価値として、上記の値の和としたが、任意の計算式が適用可能である。またクライアント２でアプリケーションを実行する場合には画面転送は生じない。したがって、サーバ実行時負荷の評価値算出の際、画面送信負荷の評価値は反映されない。（それゆえ、クライアント実行時負荷算出部１１３への画面送信負荷の評価値の入力待ちも不要である。）
サーバ実行時負荷算出部とクライアント実行時負荷算出部１１３は、それぞれサーバ実行時負荷の評価値とクライアント実行時負荷の評価値を判定部１１５に出力する。判定部１１５は両方の評価値を受け取ると、アプリケーションをサーバ１とクライアント２のどちらで起動するかの判定を行う（Ｓ１０７）。判定部１１５はサーバ実行時負荷の評価値とクライアント実行時負荷の評価値の大小関係を比較して判定する。その結果、サーバ１で起動すると判定した場合、判定部１１５はアプリ起動部１１４にアプリケーション起動に関する情報（アプリケーションの実行ファイルのパスや文書ファイル）を通知し、アプリ起動部１１４はこれを受けて当該アプリケーションの起動を行う（Ｓ１０８）。【０１００】
一方、判定部１１５が、アプリケーションをクライアント２で起動すると判定した場合、判定部１１５はアプリケーション起動に関する情報をアプリ起動情報送信部１１６に通知する。アプリ起動情報送信部１１６はアプリケーション起動に関する情報にＴＣＰヘッダ等の情報を付加しネットワーク３に送出する（Ｓ１０９）。クライアント２のアプリ起動情報受信部２０９はアプリケーション起動に関する情報を受信するとＴＣＰヘッダ等を除去しアプリ起動部２１０に当該情報を渡し、これを受けてアプリ起動部２１０は当該アプリケーションを起動する。【０１０１】
次に、アプリケーションの起動指示を検出した場合に、アプリケーションをサーバ１とクライアント２のいずれで実行するかを判定する処理の具体例を示す。以下の例では、ユーザがデスクトップ上の動画アイコンをダブルクリックし、これによりアプリ起動検出部１０５が動画ファイルの再生指示を検出した場合の処理を説明する。【０１０２】
ここで、動画ファイルのデータサイズを１０メガバイト、このときのＣＰＵ使用率をサーバ１とクライアント２ともに１０％とする。尚、CPU負荷算出部１０８、ファイル送信負荷算出部１０９、画面送信負荷算出部１１０、CPU使用率算出部１１１で評価値を算出するに当たっては、上述の例に従うものとする。【０１０３】
CPU負荷算出部１０８は、図５の対応表に従い、動画再生アプリケーションに対するＣＰＵ負荷の評価値を３と算出する。ファイル送信負荷算出部１０９は、前述の「３メガバイトごとに評価値１を加算する」といった基準により、１０メガバイトに対応する評価値を４と算出する。画面送信負荷算出部１１０は、図６に従い、動画再生アプリケーションに対する評価値を５と算出する。CPU使用率算出部１１１は、サーバ１、クライアント２に対する評価値をいずれも１と算出する。【０１０４】
これら算出部１０８〜１１１が算出した評価値は、サーバ実行時負荷算出部１１２とクライアント実行時負荷算出部１１３に入力される。サーバ実行時負荷算出部１１２は、サーバ実行時負荷の評価値として、CPU負荷算出部１０８、画面送信負荷算出部１１０、CPU使用率算出部１１１の評価値の和、すなわち３＋３＋１＝７と算出する。【０１０５】
一方、クライアント実行時負荷算出部１１３は、クライアント実行時負荷として、CPU負荷算出部１０８とファイル送信負荷算出部１０９とCPU使用率算出部１１１の評価値の和、すなわち３＋４＋１＝８と算出する。【０１０６】
これらサーバ実行時負荷の評価値とクライアント実行時負荷の評価値は判定部１１５に入力される。判定部１１５は、両方の値の大小を比較し、値の小さい方、すなわちサーバ１側にてアプリケーションを起動すると判定する。その結果、アプリ起動部１１４にアプリ起動情報が伝えられサーバ１にてアプリケーションが起動される。【０１０７】
以上、アプリケーションをサーバ１とクライアント２のいずれで起動するかを判定する例を述べてきた。このような手順により、画面転送システムにおけるサーバ１またはクライアント２の過負荷状態の回避を考慮しつつ、画面転送の品質を確保することができる。【０１０８】
判定にあたっては、アプリケーションの実行がもたらすＣＰＵ負荷に加えて、アプリケーションの描画に伴って生じる画面転送処理のＣＰＵやネットワークへの負荷、アプリケーションの実行に必要な文書ファイルの転送処理がもたらすファイル転送負荷が併せて考慮されている。それゆえ、アプリケーションをサーバ１とクライアント２のどちらで起動するかという判断をより正確に行うことができる。また、起動指示検出時のＣＰＵ使用率をも考慮に入れるため、その時々のクライアント２、サーバ１それぞれ実行状態に応じた判断が可能になる。その結果、画面転送の品質向上を達成可能とする。【０１０９】
［変形例１］
次に、実施例１におけるサーバ１の変形例を説明する。図２のサーバ１と異なる機能を有する部分の構成を図８に示す。【０１１０】
変形例１のサーバ１は、アプリケーションをサーバ１で実行する場合の画面転送の品質の評価値（サーバ実行時負荷の評価値）として、サーバ１の負荷の評価値とクライアント２の負荷の評価値を別個に算出する。また、アプリケーションをクライアント２で実行する場合のクライアント実行時負荷の評価値も、サーバ１の負荷の評価値とクライアント２の負荷の評価値を別個に算出する。【０１１１】
そして、サーバ１は、アプリケーションをサーバ１、クライアント２いずれかで実行するかと判定する際に、それぞれの装置で実行する場合の、サーバ１、クライアント２それぞれの負荷の評価値に基づいて判定する。また、このように、サーバ実行時負荷の評価値とクライアント実行時負荷の評価値をサーバ１、クライアント２別個に算出するために、CPU負荷の評価値、ファイル送信負荷の評価値、画面送信負荷の評価値も、サーバ１およびクライアント２ぞれぞれの負荷の評価値を別々に算出する。【０１１２】
このような機能を設けることにより、サーバ１とクライアント２との間でＣＰＵ性能、ネットワーク性能、静止画エンコード・デコード性能といった性能の違いがある場合に、評価値算出の際、サーバ１とクライアント２で異なる評価基準を設けることが可能となる。この結果、本変形例のサーバ１によれば、サーバ１、クライアント２の性能もふまえて、アプリケーションをサーバ１、クライアント２いずれかで実行可能と判定可能となるため、サーバ１からクライアント２への画面転送の品質を向上することができる。【０１１３】
次に、本変形例のサーバ１の具体的な構成と動作について、説明する。以下の説明では、サーバ１が、標準的なＣＰＵ性能およびネットワーク性能をもち、クライアント２がサーバ１に比べ高い性能をもつ場合について説明する。また、以下の説明では、アプリケーション起動検出部１０５が、動画再生の開始操作指示を検出した場合を例として説明する。【０１１４】
CPU負荷算出部４０８は、サーバ負荷算出部４０８Aとクライアント負荷算出部４０８Bを備える。CPU負荷算出部４０８は、ＣＰＵ負荷の評価値を算出する際に、図５で定めた表を用いて算出するが、更に、サーバ１、クライアント２それぞれのＣＰＵの性能を反映した値をＣＰＵ負荷の評価値として算出する。【０１１５】
具体的には、ＣＰＵ負荷算出部４０８は、画面転送の開始時などにサーバ１およびクライアント２それぞれのＣＰＵ性能を示す値（クロック数など）を取得し、取得したＣＰＵ性能を示す値に応じて、サーバ１とクライアント２のそれぞれに対し異なるＣＰＵ負荷の評価値を算出する。例えば、ＣＰＵ性能が規定値を超えた場合に、図５で定めた評価値から１減じた値を評価値として算出とする。【０１１６】
ここでは、サーバ１のＣＰＵ性能が規定値未満であり、かつクライアント２のＣＰＵ性能が規定値以上であると仮定する。動画再生の指示検出時、サーバ負荷算出部４０８Aは、サーバ１のＣＰＵ性能は規定値未満であるため、図５に示す値、すなわち３をサーバ１に対するＣＰＵ負荷の評価値とする。一方、クライアント負荷算出部４０８Bは、クライアント２のＣＰＵ性能は規定値以上であるため、図５に示す値から１減じた値、すなわち２をクライアント２に対するＣＰＵ負荷の評価値とする。【０１１７】
ファイル送信負荷算出部４０９もサーバ負荷算出部４０９Aとクライアント負荷算出部４０９Bを備える。ファイル送信負荷算出部４０９は、ファイル送信負荷の評価値を算出する際に、ファイルの転送量に加えて、サーバ１及びクライアント２のネットワーク性能を反映する。例えば、ネットワーク性能は、画面転送の開始時などにサーバ１およびクライアント２のネットワーク性能を示す値（利用可能帯域幅など）を取得する。これに応じて、ファイル送信負荷算出部４０９は、サーバ１とクライアント２とで、それぞれ異なる算出方法を適用してファイル送信負荷の評価値を求める。【０１１８】
例えば、ファイル送信負荷算出部４０９は、利用可能帯域幅１０Ｍｂｐｓを閾値として、装置のネットワーク性能がこの値未満であれば「ファイルの転送量が３メガバイトごとに評価値１を加算する」という算出方法を適用し、規定値以上であれば「４メガバイトごとに評価値１を加算する」という算出方法を適用する。【０１１９】
ファイルのデータサイズが１０メガバイトであり、サーバ１の利用可能帯域幅が５Ｍｂｐｓ、クライアント２の利用可能帯域幅が５０Ｍｂｐｓである場合について説明する。サーバ負荷算出部４０９Ａは、サーバ１のネットワーク性能は閾値未満であるため、サーバ１に対するファイル送信負荷の評価値を４（１０÷３を切り上げた値）と算出する。一方、クライアント２のネットワーク性能は閾値以上であるため、クライアント２に対するファイル送信負荷の評価値を３（１０÷４を切り上げた値）と算出する。【０１２０】
画面送信負荷算出部４１０もサーバ負荷算出部４１０Aとクライアント負荷算出部４１０Bを備える。画面送信負荷算出部４１０は、画面送信負荷を図６で定めた表を用いて算出するが、更に、サーバ１、クライアント２それぞれの性能を反映した値を画面送信負荷の評価値として算出する。具体的には、画面送信負荷算出部４１０は、サーバ１、クライアント２それぞれの性能として、例えば、画面転送の開始時などにサーバ１またはクライアント２が静止画エンコードまたはデコードのための専用の集積回路を持つか否かを調べ、当該集積回路を持っている場合、図６で定めた画面送信負荷の評価値から１減じた値を画面送信負荷の評価値とする。【０１２１】
ここでは、クライアント２がデコード専用の集積回路を持つと仮定する。動画再生の指示検出時、サーバ負荷算出部４１０Aは、図６に示す値、すなわち５をサーバ１に対する画面送信負荷の評価値として算出する。一方、クライアント負荷算出部４１０Bは、図６に示す値から１減じた値、すなわち４をクライアント２に対する画面送信負荷の評価値とする。【０１２２】
尚、ＣＰＵ使用率算出部１１１は、実施例１で説明したとおりサーバ１、クライアント２、それぞれの現在のＣＰＵ使用率からサーバ１、クライアント２それぞれのＣＰＵ使用率の評価値を算出する。【０１２３】
以上のようにして算出されたＣＰＵ負荷算出部４０８、ファイル送信負荷算出部４０９、画面送信負荷算出部４１０、ＣＰＵ使用率算出部１１１それぞれにおいて、サーバ１、クライアント２それぞれ毎の負荷の評価値は、サーバ実行時負荷算出部４１２とクライアント実行時負荷算出部４１３とに入力される。【０１２４】
サーバ実行時負荷算出部４１２は、当該入力された評価値から、アプリケーションをサーバ１で起動したときの、サーバ１およびクライアント２それぞれの画面転送の品質を示す評価値（サーバ実行時負荷の評価値）を算出する。サーバ実行時負荷算出部４１２のサーバ負荷算出部４１２Ａは、サーバ１のサーバ実行時負荷の評価値として、CPU負荷算出部４０８、画面送信負荷算出部４１０、CPU使用率算出部１１１がサーバ１に対して求めた評価値の和により算出する。すなわち３＋５＋１＝９である。【０１２５】
一方、クライアント負荷算出部４１２Ｂは、クライアント２のサーバ実行時負荷の評価値として、画面送信負荷算出部４１０、CPU使用率算出部１１１がクライアント２に対して求めた評価値の和でもって計算される。すなわち４＋１＝５である。【０１２６】
また、クライアント実行時負荷算出部４１３は、当該入力された評価値から、アプリケーションをクライアント２で起動したときの、サーバ１およびクライアント２それぞれの画面転送の品質を示す評価値（クライアント実行時負荷の評価値）を算出する。クライアント実行時負荷算出部４１３のサーバ負荷算出部４１３Ａは、サーバ１のクライアント実行時負荷の評価値として、ファイル送信負荷算出部４０９、CPU使用率算出部１１１がサーバ１に対して求めた評価値の和で持って計算される。すなわち４＋１＝５である。【０１２７】
一方、クライアント実行時負荷算出部４１３のクライアント負荷算出部４１３Ｂは、クライアント２のクライアント実行時負荷の評価値として、CPU負荷算出部４０８、ファイル送信負荷算出部４０９、ＣＰＵ使用率算出部１１１がクライアント２に対して求めた評価値の和でもって計算される。すなわち２＋３＋１＝６である。【０１２８】
以上、サーバ実行時負荷算出部４１２のサーバ負荷算出部４１２Ａ、クライアント負荷算出部４１２Ｂ、及びクライアント実行時算出部４１３のサーバ負荷算出部４１３Ａ、クライアント負荷算出部４１３Ｂそれぞれが算出した四個の評価値が入力されると、判定部１１５は、これらの値から、アプリケーションをサーバ１とクライアント２のどちらで起動するかを判定する。【０１２９】
例えば、判定部１１５は、４個の評価値のうち、もっとも大きな評価値を算出した装置と異なる装置で、アプリケーションを実行させるように判定を行う。前述したように、本例においては、もっとも大きな評価値は９である。そして、当該評価値は、アプリケーションをサーバ１で起動したときの、サーバ１の評価値である。したがって、本例においては、判定部１１５は、アプリケーションをクライアント２で実行すると判定する。【０１３０】
このように、判定部１１５がもっとも大きな評価値を算出した装置と異なる装置によりアプリケーションを実行させれば、装置への過剰負荷を防ぐことができる。その結果、画面転送の品質を向上することが可能となる。【０１３１】
尚、判定部１１５は、そのほかの方法によって、アプリケーションをサーバ１とクライアント２いずれの装置で動作するかを判定しても良い。例えば、判定部１１５は、サーバ実行時負荷算出部４１２のサーバ負荷算出部４１２Ａと、クライアント負荷算出部４１２Ｂの算出した評価値の和を求め、クライアント実行時負荷算出部４１３のサーバ負荷算出部４１３Ａとクライアント負荷算出部４１３Ｂの算出した評価値の和を求め、当該和の大小を比較することにより、アプリケーションをサーバ１、クライアント２いずれかで動作するかを判定しても良い。【０１３２】
本変形例のサーバ１によれば、アプリケーションをサーバ１で起動したときのサーバ実行時負荷と、クライアント２で起動したときのクライアント実行時負荷とについて、サーバ１、クライアント２それぞれの評価値を算出して利用することにより、サーバ１、クライアント２のＣＰＵやネットワーク性能、静止画エンコード・デコード能力等に差がある場合であってもこれらを考慮した判定が可能となる。その結果、サーバ１、クライアント２それぞれの過剰負荷を防ぎ、画面転送の品質向上を達成することができる。【０１３３】
なお、サーバ１は、例えば、汎用のコンピュータ装置を基本ハードウェアとして用いることでも実現することが可能である。すなわち、画面更新情報生成部１０１と、エンコード部１０２と、画面更新情報送信部１０３と、入力部１０４と、アプリ起動検出部１０５と、入力情報受信部１０６と、CPU負荷算出部１０８と、ファイル送信負荷算出部１０９と、画面送信負荷算出部１１０と、CPU使用率算出部１１１と、CPU使用率取得部１０７と、サーバ実行時負荷算出部１１２と、クライアント実行時負荷算出部１１３と、アプリ起動部１１４と、判定部１１５と、アプリ起動情報送信部１１６は、上記のコンピュータ装置に搭載されたプロセッサにプログラムを実行させることにより実現することができる。このとき、ウェブサーバは、上記のプログラムをコンピュータ装置にあらかじめインストールすることで実現してもよいし、ＣＤ−ＲＯＭなどの記憶媒体に記憶して、あるいはネットワークを介して上記のプログラムを配布して、このプログラムをコンピュータ装置に適宜インストールすることで実現してもよい。変形例のサーバ１も同様である。【０１３４】
なお、本実施例のサーバ１においては、サーバ実行時負荷の評価値とクライアント実行時負荷の評価値を算出する際に、ＣＰＵ負荷、ファイル送信負荷、画面送信負荷、ＣＰＵ使用率それぞれの評価値を用いて算出したが、この方法に限られない。例えば、ＣＰＵ負荷、画面送信負荷の２つの評価値を用いて算出しても良い。この場合、サーバ１の構成として、画面負荷算出部１１０、ＣＰＵ使用率算出部１１１は備えていなくても良い。【０１３５】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【０１３６】
１・・・サーバ、２・・・クライアント、３・・・ネットワーク、１０１・・・画面更新情報生成部、１０２・・・エンコード部、１０３・・・画面更新情報送信部、１０４、２０５・・・入力部、１０５・・・アプリ起動検出部、１０６・・・入力情報受信部、１０７、２０７・・・ＣＰＵ使用率取得部、１０８、４０８・・・ＣＰＵ負荷算出部、１０９、４０９・・・ファイル送信負荷算出部、１１０、４１０・・・画面送信負荷算出部、１１１・・・ＣＰＵ使用率算出部、１１２、４１２・・・サーバ実行時負荷算出部、１１３、４１３・・・クライアント実行時負荷算出部、１１４、２１０・・・アプリ起動部、１１５・・・判定部、１１６・・・アプリ起動情報送信部、２０１・・・画面更新情報受信部、２０２・・・デコード部、２０３・・・フレームバッファ、２０４・・・表示部、２０６・・・入力情報送信部、２０８・・・ＣＰＵ使用率送信部、２０９・・・アプリ起動情報受信部、４０８Ａ、４０９Ａ、４１０Ａ、４１２Ａ、４１３Ａ・・・サーバ負荷算出部、４０８Ｂ、４０９Ｂ、４１０Ｂ、４１２Ｂ、４１３Ｂ・・・クライアント負荷算出部。
【図１】
2011080809.tif 000003
【図２】
2011080809.tif 000004
【図３】
2011080809.tif 000005
【図４】
2011080809.tif 000006
【図５】
2011080809.tif 000007
【図６】
2011080809.tif 000008
【図７】
2011080809.tif 000009
【図８】
2011080809.tif 000010
【国際調査報告】
2011080809.tif 000011
2011080809.tif 000012