(57)【要約】【課題】処理の実行結果の取得が大きく遅れるリスクを低減すること。【解決手段】第１及び第２の情報処理装置１０、２０を含むシステムが実行する分散処理方法が提供される。当該分散処理方法では、第１の情報処理装置１０で実行可能な一の処理１３を第１の情報処理装置１０に代わって実行するよう、第２の情報処理装置２０に対して要求し、第２の情報処理装置２０による一の処理１３の実行結果を取得する前に、要求からの経過時間が閾値Ｔｔｈを超えたか判定し、経過時間が閾値Ｔｔｈを超えたと判定した場合、第１の情報処理装置１０で一の処理１３を開始し、第１の情報処理装置１０による一の処理１３の実行結果と第２の情報処理装置２０による一の処理１３の実行結果とのうち先に取得した実行結果を使用する。【選択図】図１
2014109800.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２の情報処理装置を含むシステムが実行する分散処理方法であって、
前記第１の情報処理装置で実行可能な一の処理を前記第１の情報処理装置に代わって実行するよう、前記第２の情報処理装置に対して要求し、
前記第２の情報処理装置による前記一の処理の実行結果を取得する前に、前記要求からの経過時間が閾値を超えたか判定し、
前記経過時間が前記閾値を超えたと判定した場合、前記第１の情報処理装置で前記一の処理を開始し、前記第１の情報処理装置による前記一の処理の実行結果と前記第２の情報処理装置による前記一の処理の実行結果とのうち先に取得した実行結果を使用する、
分散処理方法。
【請求項２】
同一のソフトウェア内に前記一の処理と他の一の処理とが規定されており、前記一の処理は前記他の一の処理の後に実行される処理であり、
前記要求の前に、前記第１の情報処理装置で前記他の一の処理を実行して前記ソフトウェアの動作を一時停止させ、前記第１の情報処理装置で前記一の処理を開始するときは、一時停止している前記ソフトウェアの動作を再開させる、
請求項１に記載の分散処理方法。
【請求項３】
前記第２の情報処理装置による前記一の処理の実行結果は、前記一の処理が終了したときの前記第２の情報処理装置のメモリ状態を示すデータを含み、
前記第２の情報処理装置による前記一の処理の実行結果を先に取得した場合、前記メモリ状態を示すデータを用いて前記第１の情報処理装置のメモリの内容を更新することで、前記第１の情報処理装置による前記一の処理を終了させる、
請求項１又は２に記載の分散処理方法。
【請求項４】
前記経過時間が前記閾値を超えたと判定した場合、前記第２の情報処理装置による前記一の処理の途中経過を示す情報を前記第１の情報処理装置に転送し、
前記第１の情報処理装置で前記一の処理を開始するときは、前記途中経過を示す情報を用いて、前記一の処理を前記第２の情報処理装置から引き継ぐ、
請求項１乃至３の何れか一項に記載の分散処理方法。
【請求項５】
過去に前記第１の情報処理装置で前記一の処理を実行したときの第１の実行時間と、過去に前記第１の情報処理装置で前記一の処理とは異なる他の種類の処理を実行したときの第２の実行時間と、過去に前記第２の情報処理装置で前記他の種類の処理を実行したときの第３の実行時間とを記憶装置に登録しておき、
前記閾値として、前記第２の情報処理装置で前記一の処理を実行した場合の実行時間の期待値を、前記第１、第２及び第３の実行時間に基づいて算出する、
請求項１乃至４の何れか一項に記載の分散処理方法。
【請求項６】
過去に前記第１及び第２の情報処理装置とは異なる第３の情報処理装置で前記一の処理を実行したときの第１の実行時間と、過去に前記第３の情報処理装置で前記一の処理とは異なる他の種類の処理を実行したときの第２の実行時間と、過去に前記第２の情報処理装置で前記他の種類の処理を実行したときの第３の実行時間とを記憶装置に登録しておき、
前記閾値として、前記第２の情報処理装置で前記一の処理を実行した場合の実行時間の期待値を、前記第１、第２及び第３の実行時間に基づいて算出する、
請求項１乃至４の何れか一項に記載の分散処理方法。
【請求項７】
他の情報処理装置と通信可能な情報処理装置であって、
前記情報処理装置で実行可能な一の処理を前記情報処理装置に代わって実行するよう、前記他の情報処理装置に対して要求し、前記他の情報処理装置による前記一の処理の実行結果を取得する通信部と、
前記他の情報処理装置による前記一の処理の実行結果が取得される前に、前記要求からの経過時間が閾値を超えたか判定し、前記経過時間が前記閾値を超えたと判定した場合、前記情報処理装置で前記一の処理を開始し、前記情報処理装置による前記一の処理の実行結果と前記他の情報処理装置による前記一の処理の実行結果とのうち先に取得された実行結果を使用する制御部と、
を有する情報処理装置。
【請求項８】
コンピュータに、
前記コンピュータで実行可能な一の処理を前記コンピュータに代わって実行するよう、他のコンピュータに対して要求し、
前記他のコンピュータによる前記一の処理の実行結果を取得する前に、前記要求からの経過時間が閾値を超えたか判定し、
前記経過時間が前記閾値を超えたと判定した場合、前記コンピュータで前記一の処理を開始し、前記コンピュータによる前記一の処理の実行結果と前記他のコンピュータによる前記一の処理の実行結果とのうち先に取得した実行結果を使用する、
処理を実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散処理方法、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
近年、情報漏洩対策や導入コスト及び運用管理コストの低減を図るため、クラウドコンピューティングの利用が広がってきている。クラウドコンピューティングでは、ネットワーク上にある高性能なCentral Processing Unit（ＣＰＵ）を備えたサーバ又はサーバ群によって処理が行われる。クラウドコンピューティングを利用することにより、一般的なパーソナルコンピュータやスマートフォンなどの電子機器よりも高速にアプリケーションソフトウェアを実行することが可能である。
【０００３】
通常、携帯電話機やデジタルカメラなどの組み込み機器は、処理速度が比較的遅く、実装される機能にも制限がある。そのため、こうした電子機器をクラウドコンピューティングシステムと連携させて、処理速度の向上や機能向上を図ることが考えられる。例えば、デジタルスチルカメラで撮像した静止画像に基づいて物体認識を行う場合に、デジタルスチルカメラ自体で画像処理を行おうとすると処理時間が長くなると共に、デジタルスチルカメラのバッテリ消費も大きくなってしまうおそれがある。そこで、画像処理の少なくとも一部をクラウドコンピューティングシステムに実行させることで、処理速度の向上及びバッテリ消費の抑制を実現することが考えられる。
【０００４】
しかし、サーバ・クライアント型のシステムでは、サーバとクライアントとの間のネットワークに障害が発生した場合や、サーバでのアプリケーションソフトウェアの実行時にエラーが発生した場合に、クライアントが処理結果を得られなくなるおそれがある。そこで、サーバ・クライアント型のシステムの耐障害性を高める仕組みが提案されている。
【０００５】
耐障害性を高める仕組みに関連して、例えば、複数の計算ノードと、当該複数の計算ノードによる計算プログラムの並列実行を制御する管理ノードとを含む計算機システムが提案されている。この計算機システムでは、複数の計算ノードが互いに異なるハードウェア環境、ソフトウェア環境、外部接続機器環境、及びプログラム起動環境となるように設定されている。このような設定により、計算プログラムに存在する特定のバグが全ての計算ノードで同時に活性化しないようにして耐障害性を高めている。
【０００６】
また、時系列データを高速実行する仕組みに関連して、サーバノードと、時系列データを分割した複数の分割データを処理する複数のクライアントノードとを含む情報処理システムが提案されている。この情報処理システムでは、時系列データの一部が複数の分割データに重複して含まれるように時系列データが分割される。複数のクライアントノードは、複数の分割データに対する予測計算を並列的に実行する。サーバノードは、複数のクライアントノードが実行した結果を集約し、出力用の時系列データを作成する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−２９５７３８号公報
【特許文献２】特開２００６−２５２３９４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記のように、ある情報処理装置（例えば、処理速度が比較的遅いクライアント）が、自装置で実行するよりも早く実行結果が得られることを期待して、他の情報処理装置（例えば、処理速度が比較的速いサーバ）に処理を依頼することがある。多くの場合、依頼元の情報処理装置は、期待通りに早く他の情報処理装置から実行結果を得られる。
【０００９】
しかし、処理を依頼するタイミングによっては、依頼先の情報処理装置の負荷が高い場合や、依頼先の情報処理装置が属するネットワークの混雑度が高いこともある。そのため、依頼元の情報処理装置は、常に期待通りに早く実行結果を得られるとは限らず、実行結果が得られるまでに要する時間が大きく遅延するというリスクがある。
【００１０】
そこで、１つの側面では、本発明は、処理の実行結果の取得が大きく遅れるリスクを低減した分散処理方法、情報処理装置、及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
１つの態様では、第１及び第２の情報処理装置を含むシステムが実行する分散処理方法が提供される。分散処理方法では、第１の情報処理装置で実行可能な一の処理を第１の情報処理装置に代わって実行するよう、第２の情報処理装置に対して要求する。第２の情報処理装置による一の処理の実行結果を取得する前に、要求からの経過時間が閾値を超えたか判定する。経過時間が閾値を超えたと判定した場合、第１の情報処理装置で一の処理を開始し、第１の情報処理装置による一の処理の実行結果と第２の情報処理装置による一の処理の実行結果とのうち先に取得した実行結果を使用する。
【００１２】
また、１つの態様では、通信部と制御部とを有する情報処理装置が提供される。通信部は、情報処理装置で実行可能な一の処理を情報処理装置に代わって実行するよう、他の情報処理装置に対して要求し、他の情報処理装置による一の処理の実行結果を取得する。制御部は、他の情報処理装置による一の処理の実行結果が取得される前に、要求からの経過時間が閾値を超えたか判定し、経過時間が閾値を超えたと判定した場合、情報処理装置で一の処理を開始し、情報処理装置による一の処理の実行結果と他の情報処理装置による一の処理の実行結果とのうち先に取得された実行結果を使用する。
【００１３】
また、１つの態様では、コンピュータに次の処理を実行させるプログラムが提供される。コンピュータで実行可能な一の処理をコンピュータに代わって実行するよう、他のコンピュータに対して要求する。他のコンピュータによる一の処理の実行結果を取得する前に、要求からの経過時間が閾値を超えたか判定する。経過時間が閾値を超えたと判定した場合、コンピュータで一の処理を開始し、コンピュータによる一の処理の実行結果と他のコンピュータによる一の処理の実行結果とのうち先に取得した実行結果を使用する。
【発明の効果】
【００１４】
１つの側面では、処理の実行結果の取得が大きく遅れるリスクを低減できる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態に係る情報処理装置の例を示した図である。
【図２】クラウド連携機能について説明した図である。
【図３】第２の実施の形態に係る情報処理システムの例を示した図である。
【図４】第２の実施の形態に係る端末装置のハードウェアの例を示した図である。
【図５】第２の実施の形態に係る端末装置の機能の例を示したブロック図である。
【図６】第２の実施の形態に係るサーバ装置の機能の例を示したブロック図である。
【図７】第２の実施の形態に係る拡張実行の例を示した図である。
【図８】第２の実施の形態に係る端末装置の処理時間保存部に格納される情報の例を示した図である。
【図９】第２の実施の形態に係るサーバ装置の処理時間保存部に格納される情報の例を示した図である。
【図１０】第２の実施の形態に係るサーバ処理時間の予測方法について説明する図である。
【図１１】第２の実施の形態に係るサーバ装置の処理時間保存部に格納される統計情報の例を示した図である。
【図１２】第２の実施の形態に係る通信状況の検出方法に用いるパケットの例を示した図である。
【図１３】第２の実施の形態に係る拡張実行の一変形例を示した図である。
【図１４】第２の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第１の図である。
【図１５】第２の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第２の図である。
【図１６】第２の実施の形態に係る端末装置及びサーバ装置の動作例を示した第１の図である。
【図１７】第２の実施の形態に係る端末装置及びサーバ装置の動作例を示した第２の図である。
【図１８】第２の実施の形態に係る端末装置の実行管理部の動作例を示した第１の図である。
【図１９】第２の実施の形態に係る端末装置の実行管理部の動作例を示した第２の図である。
【図２０】第２の実施の形態に係る端末装置の実行管理部の動作例を示した第３の図である。
【図２１】第２の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第１の図である。
【図２２】第２の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第２の図である。
【図２３】第２の実施の形態に係る端末装置のサーバ処理時間予測部の動作例を示した図である。
【図２４】第２の実施の形態に係る端末装置の端末処理時間計測部の動作例を示した図である。
【図２５】第２の実施の形態に係るサーバ装置のサーバ側拡張実行部の動作例を示した図である。
【図２６】第２の実施の形態に係るサーバ装置のサーバ処理時間管理部の動作例を示した図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照しながら実施の形態について説明する。
［第１の実施の形態］
第１の実施の形態について説明する。
【００１７】
図１は、第１の実施の形態に係る情報処理装置の例を示した図である。
第１の実施の形態に係る第１の情報処理装置１０は、第２の情報処理装置２０と通信可能である。例えば、第１の情報処理装置１０は、ネットワーク５を介して第２の情報処理装置２０と通信することができる。
【００１８】
ネットワーク５は、有線通信網であってもよいし、無線通信網であってもよい。第２の情報処理装置２０は、１台の情報処理装置であってもよいし、複数台の情報処理装置を接続した情報処理システムであってもよい。このような情報処理システムとしては、例えば、クラウドコンピューティングシステムなどを利用することができる。
【００１９】
第１の情報処理装置１０は、通信部１１及び制御部１２を有する。第１の情報処理装置１０は、Random Access Memory（ＲＡＭ）などの揮発性記憶装置や、Hard Disk Drive（ＨＤＤ）やフラッシュメモリなどの不揮発性記憶装置をさらに有していてもよい。
【００２０】
通信部１１及び制御部１２の機能は、例えば、Central Processing Unit（ＣＰＵ）やDigital Signal Processor（ＤＳＰ）などのプロセッサにより実現可能である。但し、通信部１１及び制御部１２の機能は、Application Specific Integrated Circuit（ＡＳＩＣ）やField Programmable Gate Array（ＦＰＧＡ）などのプロセッサ以外の電子回路によっても実現可能である。通信部１１及び制御部１２は、例えば、上記の揮発性記憶装置や不揮発性記憶装置に記憶されたプログラムを実行する。
【００２１】
通信部１１は、第１の情報処理装置１０で実行可能な一の処理１３を第１の情報処理装置１０に代わって実行するよう、第２の情報処理装置２０に対して要求し、第２の情報処理装置２０による一の処理１３の実行結果を取得する。
【００２２】
例えば、第１の情報処理装置１０で実行可能なアプリケーションプログラム（以下、単にアプリケーションと呼ぶ場合がある。）の一部処理を一の処理１３として第２の情報処理装置２０に実行するように要求する。一例として、第１の情報処理装置１０で画像データの処理を実行する場合に、顔認識処理や高解像度化処理などの負荷の高い一部の処理を第２の情報処理装置２０に実行するように要求するケースなどが考えられる。このように、アプリケーションの一部処理を第２の情報処理装置２０に実行させることで、第１の情報処理装置１０の負担を軽減することができる。
【００２３】
制御部１２は、第２の情報処理装置２０による一の処理１３の実行結果が取得される前に、要求からの経過時間が閾値Ｔｔｈを超えたか判定する。閾値Ｔｔｈとしては、例えば、一の処理１３と同じ処理を過去に第２の情報処理装置２０が実行した際に計測された経過時間などが利用され得る。制御部１２は、経過時間が閾値Ｔｔｈを超えたと判定した場合、第１の情報処理装置１０で一の処理１３を開始し、第１の情報処理装置１０による一の処理１３の実行結果と第２の情報処理装置２０による一の処理１３の実行結果とのうち先に取得された実行結果を使用する。
【００２４】
上記のように、閾値Ｔｔｈを超えた場合に第１の情報処理装置１０が自ら一の処理１３を実行開始するため、何らかの事情で第２の情報処理装置２０の処理が大きく遅延した場合でも、自ら処理を実行して素早く実行結果を得られる場合がある。さらに、第１の情報処理装置１０により一の処理１３を開始した場合でも、先に取得された実行結果が使用されるため、第２の情報処理装置２０により先に実行結果が取得された場合には、第１の情報処理装置１０による実行結果を待たずに一の処理１３に続く処理を実行開始できる。従って、第１の実施の形態によれば、処理の実行結果の取得が大きく遅れるリスクを低減することができる。
【００２５】
以上、第１の実施の形態について説明した。
［第２の実施の形態］
第２の実施の形態について説明する。
【００２６】
まず、電子機器とクラウドコンピューティングシステムとを連携させて処理の高速化又は高機能化を実現するクラウド連携機能について説明する。なお、クラウド連携機能が搭載され得る電子機器としては、例えば、デジタルスチルカメラ、デジタルビデオカメラ、携帯電話、スマートフォン、タブレット型コンピュータ、ノート型コンピュータ、又はカーナビゲーションシステムなどが考えられる。また、クラウドコンピューティングシステムに代えて、１台又は複数台のコンピュータから成る他のコンピューティングシステムを適用しても同様の機能が実現可能である。
【００２７】
図２は、クラウド連携機能について説明した図である。
図２の例では、デジタルスチルカメラとクラウドコンピューティングシステムとを連携させるクラウド連携機能が示されている。通常、デジタルスチルカメラの処理能力は、クラウドコンピューティングシステムが提供する処理能力よりも低い。そのため、クラウドコンピューティングシステムと連携させることでデジタルスチルカメラが実行する処理を高速に実行することが可能になる。また、デジタルスチルカメラが実行する処理の量を減らすことができるため、デジタルスチルカメラのバッテリ消費が抑制される。
【００２８】
また、クラウドコンピューティングシステムは、デジタルスチルカメラが有していない機能を提供し得る。例えば、クラウドコンピューティングシステムは、デジタルスチルカメラが搭載している画像編集機能よりも高度な画像処理（例えば、高度な物体認識処理、高度なエフェクト処理、高度な高解像度化処理など）の機能を提供し得る。そのため、クラウドコンピューティングシステムと連携させることでデジタルスチルカメラが搭載していない高度な機能を利用することが可能になる。
【００２９】
クラウド連携機能は、図２に示すような方法で実現される。まず、デジタルスチルカメラが処理前のデータをクラウドコンピューティングシステムに送信する。次に、処理前のデータを受信したクラウドコンピューティングシステムが処理を実行して処理後のデータを生成し、デジタルスチルカメラに送信する。次に、処理後のデータを受信したデジタルスチルカメラは、処理後のデータを利用する。この方法を適用すれば、例えば、クラウドコンピューティングシステムを利用して高度な画像処理を実行することやＲＡＷ画像を現像することなどが可能になる。
【００３０】
但し、デジタルスチルカメラでも実行可能な処理の場合、クラウド連携機能を利用せずにデジタルスチルカメラで処理する方が早く処理結果を得られる場合もある。例えば、データの送受信にかかる時間よりもデジタルスチルカメラによる処理時間の方が短いような負荷の軽い処理を実行する場合、デジタルスチルカメラで処理を実行する方が早く処理結果を得られる。また、ネットワークの負荷やクラウドコンピューティングシステムの負荷が高い場合、処理が大幅に遅延する場合があり、このような場合もデジタルスチルカメラで処理を実行する方が早く処理結果を得られる可能性が高い。
【００３１】
そこで、第２の実施の形態においては、上述したクラウド連携機能のように端末装置がサーバ装置と連携して処理を実行する状況を考え、処理を委託したサーバ装置の処理が遅延した場合でも端末装置で素早く処理の実行を開始可能にする連携処理方法を提案する。以下、端末装置から委託された処理をサーバ装置が実行することを「拡張実行」と呼ぶ場合がある。
【００３２】
（システムについて）
図３は、第２の実施の形態に係る情報処理システムの例を示した図である。
図３に示すように、第２の実施の形態に係る情報処理システム１００は、複数の端末装置１１０と、サーバ装置１３０とを含む。複数の端末装置１１０は、ネットワーク９４を介してサーバ装置１３０と接続されている。図３の例ではサーバ装置１３０を１台しか記載していないが、情報処理システム１００には複数のサーバ装置１３０が含まれていてもよい。但し、以下では、１台のサーバ装置１３０に注目して説明を進める。情報処理システム１００には、ネットワーク９４を介して又は直接的にサーバ装置１３０に接続された記憶装置（非図示）が含まれていてもよい。
【００３３】
サーバ装置１３０は、情報処理装置の一例である。サーバ装置１３０の機能は、端末装置１１０よりも高い演算能力や大きな記憶容量を有する一又は複数のコンピュータ（上述したクラウドコンピューティングシステムを含む。）、或いは、コンピュータとストレージシステムとの組み合わせにより実現可能である。
【００３４】
端末装置１１０は、情報処理装置の一例である。端末装置１１０の機能は、例えば、上述したクラウド連携機能を搭載した様々な電子機器などにより実現可能である。端末装置１１０の機能は、図４に示すようなハードウェアにより実現可能である。
【００３５】
（端末装置のハードウェアについて）
図４は、第２の実施の形態に係る端末装置のハードウェアの例を示した図である。
図４に示すように、端末装置１１０は、例えば、ＣＰＵ９０１、ＲＡＭ９０２、ＨＤＤ９０３、画像信号処理部９０４、入力信号処理部９０５、ディスクドライブ９０６、及び通信インターフェース９０７を有する。なお、端末装置１１０は、Charge Coupled Device Image Sensor（ＣＣＤ）やComplementary Metal Oxide Semiconductor（ＣＭＯＳ）などの撮像素子（非図示）を有していてもよい。また、端末装置１１０は、撮像素子から出力された画像信号を処理する信号処理回路（非図示）を有していてもよい。
【００３６】
なお、ＣＰＵ９０１は、第１の実施の形態の通信部１１及び制御部１２の一例である。また、第１の実施の形態の通信部１１の機能を実現するために通信インターフェース９０７も利用される。
【００３７】
ＣＰＵ９０１は、プログラムに記述された命令を実行する演算器を含むプロセッサである。ＣＰＵ９０１は、ＨＤＤ９０３に記憶されているプログラムやデータの少なくとも一部をＲＡＭ９０２にロードし、プログラムに記述された命令を実行する。なお、ＣＰＵ９０１は、複数のプロセッサコアを含んでいてもよい。また、端末装置１１０は、複数のＣＰＵ９０１を搭載していてもよい。この場合、端末装置１１０は、処理を並列実行することができる。
【００３８】
ＲＡＭ９０２は、ＣＰＵ９０１が実行するプログラムや、処理に用いられるデータを一時的に記憶するための揮発性メモリである。なお、端末装置１１０は、ＲＡＭ９０２とは異なる種類のメモリを有していてもよい。また、端末装置１１０は、複数のメモリを備えていてもよい。
【００３９】
ＨＤＤ９０３は、Operating System（ＯＳ）、ファームウェア、或いは、アプリケーションソフトウェアなどのプログラムや、処理に用いられるデータなどを記憶する不揮発性記憶装置の一例である。なお、端末装置１１０は、フラッシュメモリやSolid State Drive（ＳＳＤ）など、ＨＤＤ９０３とは異なる種類の記憶装置を有していてもよい。また、端末装置１１０は、複数の記憶装置を有していてもよい。
【００４０】
画像信号処理部９０４は、ＣＰＵ９０１による制御を受け、端末装置１１０に接続された表示装置９１に画像を出力する。表示装置９１は、例えば、Cathode Ray Tube（ＣＲＴ）ディスプレイ、Liquid Crystal Display（ＬＣＤ）、Plasma Display Panel（ＰＤＰ）、Organic Electro-Luminescence Display（ＯＥＬＤ）などの表示デバイスである。なお、端末装置１１０は、表示装置９１を搭載していてもよい。
【００４１】
入力信号処理部９０５は、端末装置１１０に接続された入力デバイス９２から入力信号を取得し、ＣＰＵ９０１に通知する。入力デバイス９２としては、例えば、マウス、キーボード、タッチパネル、タッチパッド、トラックボール、リモートコントローラ、ボタンスイッチなどを用いることができる。なお、端末装置１１０は、入力デバイス９２を搭載していてもよい。
【００４２】
ディスクドライブ９０６は、記録媒体９３に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体９３としては、例えば、Flexible Disk（ＦＤ）、ＨＤＤなどの磁気ディスク、Compact Disc（ＣＤ）やDigital Versatile Disc（ＤＶＤ）などの光ディスク、Magneto-Optical disk（ＭＯ）などの光磁気ディスクを用いることができる。なお、半導体メモリを記録媒体９３として用い、ディスクドライブ９０６を半導体メモリの読み取り装置に置き換えてもよい。ディスクドライブ９０６は、例えば、ＣＰＵ９０１による制御を受け、記録媒体９３から読み取ったプログラムやデータをＲＡＭ９０２又はＨＤＤ９０３に格納する。
【００４３】
通信インターフェース９０７は、ネットワーク９４を介して他のコンピュータと通信を行うためのインターフェースである。通信インターフェース９０７は、有線インターフェースであってもよいし、無線インターフェースであってもよい。例えば、通信インターフェース９０７は、Local Area Network（ＬＡＮ）、Wide Area Network（ＷＡＮ）、インターネットなどのネットワークに接続される。
【００４４】
なお、サーバ装置１３０の機能は、端末装置１１０と同様に図４に示すようなハードウェアにより実現することが可能である。但し、サーバ装置１３０に搭載されるＣＰＵ９０１は端末装置１１０よりも高性能なＣＰＵであることが好ましい。また、サーバ装置１３０に搭載されるＲＡＭ９０２やＨＤＤ９０３の記憶容量は端末装置１１０よりも大容量であることが好ましい。また、サーバ装置１３０は、図４に示したハードウェアを有するコンピュータを、ネットワーク９４を介して複数台接続したコンピューティングシステムであってもよい。
【００４５】
（端末装置について）
図５は、第２の実施の形態に係る端末装置の機能の例を示したブロック図である。
図５に示すように、端末装置１１０は、端末側処理部１１１と、実行管理部１１２と、処理時間保存部１１３と、サーバ処理時間予測部１１４と、通信部１１５と、端末側拡張実行部１１６と、端末処理時間計測部１１７とを有する。
【００４６】
端末側処理部１１１、実行管理部１１２、サーバ処理時間予測部１１４、端末側拡張実行部１１６、端末処理時間計測部１１７は、ＣＰＵ９０１が実行するプログラムのモジュールとして実現できる。端末側処理部１１１、実行管理部１１２、サーバ処理時間予測部１１４、端末側拡張実行部１１６、端末処理時間計測部１１７が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。処理時間保存部１１３は、ＲＡＭ９０２やＨＤＤ９０３に確保された記憶領域である。通信部１１５の機能は、通信インターフェース９０７により実現できる。
【００４７】
（端末側処理部１１１）
端末側処理部１１１は、アプリケーションの処理を実行する。
端末側処理部１１１は、例えば、端末装置１１０が起動した際に所定のアプリケーションの処理を実行する。端末側処理部１１１は、ユーザがアプリケーションの種類を指定して実行を指示した場合に、指定されたアプリケーションの処理を実行する。例えば、端末側処理部１１１は、音声データ、画像データ、テキストデータなどのコンテンツを扱うアプリケーションの処理を実行する。
【００４８】
端末側処理部１１１は、アプリケーションの処理を実行する際、ＲＡＭ９０２やＨＤＤ９０３などに格納されたパラメータの値や実行コードを読み出し、読み出したパラメータの値や実行コードを用いてアプリケーションの処理を実行する。実行コードは、コンパイルされたバイナリコードであってもよいし、スクリプト言語で記述されたコードであってもよい。
【００４９】
端末側処理部１１１は、後述する実行管理部１１２又は端末側拡張実行部１１６によりアプリケーションの処理を停止するように指示された場合に、ＲＡＭ９０２やＨＤＤ９０３などに格納されたパラメータの値などを含む状態データを出力する。状態データは、処理の停止時までに実行された処理を引き継いでアプリケーションの処理を継続実行するために利用される。
【００５０】
例えば、ＪＡＶＡ（登録商標）アプリケーションの処理を実行する場合、ＲＡＭ９０２やＨＤＤ９０３などにスタック領域及びヒープ領域と呼ばれるメモリ領域が確保される。スタック領域には、一時的に参照するローカル変数の値や、どこまで命令を実行したかを示すポインタ（アドレス）が格納される。ヒープ領域には、動的に生成されたデータが格納される。これらスタック領域及びヒープ領域に格納されるデータは状態データの一例である。
【００５１】
（実行管理部１１２）
実行管理部１１２は、端末側処理部１１１の動作を制御する。例えば、実行管理部１１２は、端末装置１１０が起動した際に端末側処理部１１１に所定のアプリケーションの処理を実行させる。実行管理部１１２は、ユーザがアプリケーションの種類を指定して実行を指示した場合に、指定されたアプリケーションの処理を端末側処理部１１１に実行させる。実行管理部１１２は、ユーザがアプリケーションの処理を停止するように指示した場合に、端末側処理部１１１を制御して、指示されたアプリケーションの処理を停止させる。
【００５２】
実行管理部１１２は、端末側拡張実行部１１６の動作を制御する。例えば、実行管理部１１２は、後述する拡張実行の開始指示を予め受けている場合や、処理内容又は実行環境に応じて端末側拡張実行部１１６に拡張実行を開始させる。
【００５３】
拡張実行の開始指示を予め受けている場合とは、例えば、アプリケーションの設定として、所定の処理を実行する際に拡張実行を行うことが設定されている場合などである。一例として、画像処理アプリケーションにおいて高解像度化処理を拡張実行で行うように設定されている場合などが考えられる。この場合、実行管理部１１２は、高解像度化処理を実行させる際に端末側拡張実行部１１６に拡張実行を開始させる。なお、ある連続して実行される一又は複数の処理をまとめて「区間」と表現する。
【００５４】
プログラム中に拡張実行が可能な処理区間（以下、拡張実行可能区間）が予め設定されている場合も考えられる。この場合、実行管理部１１２は、拡張実行可能区間に達した際に端末側拡張実行部１１６に拡張実行を開始させる。なお、端末側拡張実行部１１６に拡張実行の開始を通知するに当たり、実行管理部１１２は、拡張実行の効果が期待できるか否かを判断し、効果が期待できる場合に拡張実行を開始させてもよい。
【００５５】
拡張実行とは、端末装置１１０が実行する処理の一部をサーバ装置１３０に委託することで、端末装置１１０とサーバ装置１３０とで連携してアプリケーションの処理を実行する方法である。例えば、端末装置１１０よりも高い演算能力を有するサーバ装置１３０に処理の一部を委託すれば、端末装置１１０が単独で全ての処理を実行するよりも高速に処理を完了できる可能性が高い。但し、サーバ装置１３０の負荷状況や通信状況などの影響で、拡張実行の効果が得られない可能性もある。そこで、実行管理部１１２は、拡張実行の効果が期待できる場合に、端末側拡張実行部１１６に拡張実行の開始を通知する。
【００５６】
例えば、実行管理部１１２は、端末装置１１０とサーバ装置１３０との間の通信状況を確認する。実行管理部１１２は、サーバ装置１３０の負荷状況を確認する。さらに、実行管理部１１２は、現時点における通信状況及び負荷状況においてサーバ装置１３０に対して拡張実行可能区間の処理を委託した場合に当該処理が完了するまでに要する時間（以下、サーバ処理時間）を予測する。例えば、過去にサーバ装置１３０が同じアプリケーションの処理を実行した際に計測されたサーバ処理時間の情報がある場合、実行管理部１１２は、その情報が示すサーバ処理時間を現時点で予測されるサーバ処理時間とする。
【００５７】
なお、サーバ処理時間の予測方法については後述する。実行管理部１１２は、サーバ処理時間と所定の閾値とを比較する。所定の閾値としては、例えば、同じアプリケーションの拡張実行可能区間の処理を端末装置１１０が単独で全て実行した場合にかかる時間（以下、端末処理時間）を予測し、その予測値が用いられる。この予測値は、過去に同じアプリケーションの処理を端末装置１１０が実行した際に計測された端末処理時間の情報などから得られる。なお、所定の閾値は、ユーザにより予め決められた値であってもよい。
【００５８】
実行管理部１１２は、サーバ処理時間が所定の閾値よりも小さい場合（拡張実行の効果が期待できる場合）、端末側拡張実行部１１６に拡張実行の開始を通知する。一方、サーバ処理時間が所定の閾値よりも大きい場合（拡張実行の効果が期待できない場合）、実行管理部１１２は、端末側処理部１１１に処理を継続して実行させる。この場合、拡張実行可能区間の処理についても、端末側処理部１１１が処理を実行する。
【００５９】
端末側拡張実行部１１６に拡張実行の開始を通知した場合、実行管理部１１２は、拡張実行の開始からサーバ処理時間が経過するまでの間、サーバ装置１３０から状態データが送信されてくるのを待つ。この状態データは、拡張実行可能区間の処理をサーバ装置１３０が実行し終えた時点で得られる状態データである。この状態データを受信した場合、実行管理部１１２は、端末側拡張実行部１１６に拡張実行の終了を通知する。そして、実行管理部１１２は、サーバ装置１３０から受信した状態データを用いて拡張実行可能区間後の処理を端末側処理部１１１に実行させる。
【００６０】
一方、サーバ処理時間が経過してもサーバ装置１３０から状態データが得られない場合、実行管理部１１２は、端末側処理部１１１に処理の再開を通知し、拡張実行可能区間の処理を実行させる。このように、実行管理部１１２は、サーバ処理時間の経過に応じて、端末側処理部１１１に拡張実行可能区間の処理を実行させる。そのため、何らかの事情でサーバ装置１３０の処理が滞っている場合にも、端末装置１１０が素早く自身で拡張実行可能区間の処理を開始することができるようになる。
【００６１】
サーバ処理時間の経過後、端末側処理部１１１による拡張実行可能区間の処理が完了する前にサーバ装置１３０から状態データを受信した場合、実行管理部１１２は、端末側処理部１１１が実行する拡張実行可能区間の処理を停止させ、端末側拡張実行部１１６に拡張実行の終了を通知する。そして、実行管理部１１２は、サーバ装置１３０から受信した状態データを用いて拡張実行可能区間後の処理を端末側処理部１１１に実行させる。このように、端末装置１１０自身が拡張実行可能区間の処理を開始した場合であっても、先にサーバ装置１３０から状態データが得られた場合には、先に得られた状態データを利用して拡張実行可能区間後の処理が実行される。
【００６２】
サーバ装置１３０の処理が大きく遅延している場合、サーバ装置１３０から状態データが得られる前に端末側処理部１１１で拡張実行可能区間の処理が完了する場合もある。この場合、実行管理部１１２は、端末側処理部１１１に拡張実行可能区間後の処理を継続して実行させ、端末側拡張実行部１１６に拡張実行の終了を通知する。サーバ装置１３０から状態データを受信した場合、実行管理部１１２は、サーバ装置１３０から受信した状態データを破棄する。このように、先に端末側処理部１１１で拡張実行可能区間の処理が完了した場合には、そのまま継続して拡張実行可能区間後の処理が実行される。
【００６３】
（処理時間保存部１１３）
処理時間保存部１１３は、端末処理時間を保存する記憶領域である。処理時間保存部１１３には、端末側処理部１１１によりアプリケーションの処理が実行された際に計測された端末処理時間が格納される。例えば、処理時間保存部１１３には、アプリケーションの種類毎に端末処理時間が格納される。なお、端末側処理部１１１によりアプリケーションの処理が実行される直前の端末装置１１０の負荷状況と共に、その処理が実行された際に計測された端末処理時間が処理時間保存部１１３に格納されていてもよい。負荷状況を表す情報としては、例えば、処理が実行される時点から所定時間前までの期間に観測されたＣＰＵ使用率の平均値（以下、平均ＣＰＵ使用率）を利用することができる。
【００６４】
（サーバ処理時間予測部１１４）
サーバ処理時間予測部１１４は、現在実行中のアプリケーションと同じアプリケーションについて過去に計測されたサーバ処理時間の情報を実行管理部１１２が取得できない場合に、所望のサーバ処理時間を予測する。例えば、サーバ処理時間予測部１１４は、現在実行中のアプリケーションとは異なるアプリケーションについて過去に計測されたサーバ処理時間の情報を用いて、所望のサーバ処理時間を予測する。
【００６５】
なお、サーバ処理時間予測部１１４は、サーバ装置１３０の負荷状況や端末装置１１０とサーバ装置１３０との間の通信状況を考慮して、所望のサーバ処理時間を予測してもよい。負荷状況を表す情報としては、例えば、平均ＣＰＵ使用率を利用することができる。通信状況を表す情報としては、例えば、所定サイズのデータを端末装置１１０が送信してからサーバ装置１３０が受信するまでの時間（以下、データ送信時間）などの情報を利用することができる。サーバ処理時間の予測方法についてはさらに後述する。
【００６６】
（通信部１１５）
通信部１１５は、サーバ装置１３０と通信するための通信手段である。例えば、通信部１１５は、拡張実行に利用する状態データを送受信する。通信部１１５は、サーバ装置１３０からサーバ処理時間や他の端末装置１１０の端末処理時間の情報を受信する。通信部１１５は、後述する端末処理時間計測部１１７により計測された端末処理時間の情報をサーバ装置１３０に送信する。
【００６７】
サーバ装置１３０との間の通信状況を確認する際、通信部１１５は、例えば、データ送信時間の計測用パケット（送信時刻の情報を含む。）をサーバ装置１３０に送信する。そして、通信部１１５は、データ送信時間の情報（送信時刻及び受信時刻の情報）を含む計測用パケットをサーバ装置１３０から受信する。これら計測用パケットの送受信は、実行管理部１１２が拡張実行を行うか否かを判断する前に行われる。
【００６８】
（端末側拡張実行部１１６）
端末側拡張実行部１１６は、拡張実行を行う際に端末側処理部１１１を制御する。例えば、実行管理部１１２から拡張実行の開始通知を受けると、端末側処理部１１１が実行している拡張実行可能区間前の処理を停止させ、端末側処理部１１１が出力した状態データをサーバ装置１３０に送信する。サーバ装置１３０から状態データを受信した実行管理部１１２から端末側処理部１１１の動作再開の通知を受けると、端末側拡張実行部１１６は、端末側処理部１１１に拡張実行可能区間後の処理を開始させる。
【００６９】
端末側拡張実行部１１６は、端末側処理部１１１に拡張実行可能区間の処理を実行させる場合、端末処理時間計測部１１７に端末処理時間を計測させる。例えば、端末側処理部１１１が拡張実行可能区間の処理を開始した際、端末側拡張実行部１１６は、端末処理時間計測部１１７に端末処理時間の計測を開始させる。そして、端末側処理部１１１が拡張実行可能区間の処理を完了した際、端末側拡張実行部１１６は、端末処理時間計測部１１７に端末処理時間の計測を終了させる。
【００７０】
拡張実行可能区間の処理を実行中に、実行管理部１１２から端末側処理部１１１の動作停止の通知を受けると、端末側拡張実行部１１６は、端末側処理部１１１が実行中の拡張実行可能区間の処理を停止させる。さらに、端末側拡張実行部１１６は、端末処理時間計測部１１７に端末処理時間の計測を終了させる。
【００７１】
（端末処理時間計測部１１７）
端末処理時間計測部１１７は、端末処理時間を計測する。例えば、端末側拡張実行部１１６から端末処理時間の計測開始が通知されると、端末処理時間計測部１１７は、端末処理時間の計測を開始する。端末側拡張実行部１１６から端末処理時間の計測終了が通知されると、端末処理時間計測部１１７は、端末処理時間の計測を終了する。そして、端末処理時間計測部１１７は、計測開始から計測終了までの時間を端末処理時間とする。端末処理時間計測部１１７は、端末処理時間の情報を処理時間保存部１１３に格納する。
【００７２】
なお、端末処理時間計測部１１７は、端末側処理部１１１が実行したアプリケーションの種類に対応付けて端末処理時間の情報を処理時間保存部１１３に格納する。端末装置１１０の負荷状況が得られている場合、端末処理時間計測部１１７は、さらに負荷状況の情報を端末処理時間の情報に対応付けて処理時間保存部１１３に格納する。端末処理時間計測部１１７は、端末処理時間の情報をサーバ装置１３０に送信する。負荷状況が得られている場合、端末処理時間計測部１１７は、負荷状況の情報も併せて送信する。
【００７３】
以上、端末装置１１０の機能について説明した。
（サーバ装置について）
図６は、第２の実施の形態に係るサーバ装置の機能の例を示したブロック図である。
【００７４】
図６に示すように、サーバ装置１３０は、通信部１３１と、サーバ側処理部１３２と、サーバ側拡張実行部１３３と、サーバ処理時間管理部１３４と、処理時間保存部１３５とを有する。
【００７５】
サーバ側処理部１３２、サーバ側拡張実行部１３３、サーバ処理時間管理部１３４は、ＣＰＵ９０１が実行するプログラムのモジュールとして実現できる。サーバ側処理部１３２、サーバ側拡張実行部１３３、サーバ処理時間管理部１３４が有する機能の一部又は全部をソフトウェアではなく電子回路として実現することも可能である。通信部１３１の機能は、通信インターフェース９０７により実現できる。処理時間保存部１３５は、ＲＡＭ９０２やＨＤＤ９０３に確保された記憶領域である。
【００７６】
（通信部１３１）
通信部１３１は、端末装置１１０と通信するための通信手段である。例えば、通信部１３１は、拡張実行に利用する状態データを送受信する。通信部１３１は、端末装置１１０との間の通信状況を確認するために端末装置１１０から送信されたデータ送信時間の計測用パケット（送信時刻の情報を含む。）を受信する。この計測用パケットを受信した通信部１３１は、データ送信時間の情報（送信時刻及び受信時刻の情報）を含む計測用パケットを端末装置１１０に送信する。
【００７７】
通信部１３１は、処理時間保存部１３５に格納されたサーバ処理時間や他の端末装置１１０の端末処理時間の情報を拡張実行の相手となる端末装置１１０に送信する。例えば、端末装置１１０からサーバ処理時間の情報に対する送信要求を受けた場合に、通信部１３１は、当該送信要求に応じて、処理時間保存部１３５に格納されたサーバ処理時間の情報を送信する。通信部１３１は、端末装置１１０の端末処理時間計測部１１７により計測された端末処理時間の情報を受信する。
【００７８】
（サーバ側処理部１３２）
サーバ側処理部１３２は、アプリケーションの処理を実行する。例えば、サーバ側拡張実行部１３３は、拡張実行可能区間の処理を実行する。この場合、サーバ側拡張実行部１３３は、端末装置１１０から受信した状態データを利用して拡張実行可能区間の処理を実行する。拡張実行可能区間の処理を完了した場合、サーバ側処理部１３２は、ＲＡＭ９０２やＨＤＤ９０３などに格納されたパラメータの値を含む状態データを出力する。状態データは、拡張実行可能区間後の処理を継続して実行するために利用される。状態データは、例えば、スタック領域及びヒープ領域に格納されたデータである。
【００７９】
（サーバ側拡張実行部１３３）
サーバ側拡張実行部１３３は、サーバ側処理部１３２に拡張実行可能区間の処理を実行させる。例えば、サーバ側拡張実行部１３３は、端末装置１１０から受信した状態データをサーバ側処理部１３２に提供し、この状態データを利用してサーバ側処理部１３２に拡張実行可能区間の処理を実行させる。
【００８０】
サーバ側拡張実行部１３３は、サーバ処理時間管理部１３４にサーバ処理時間を計測させる。例えば、サーバ側拡張実行部１３３は、サーバ側処理部１３２が拡張実行可能区間の処理を開始するとサーバ処理時間管理部１３４にサーバ処理時間の計測を開始させる。サーバ側拡張実行部１３３は、サーバ側処理部１３２が拡張実行可能区間の処理を終了するとサーバ処理時間管理部１３４にサーバ処理時間の計測を終了させる。
【００８１】
サーバ側拡張実行部１３３は、サーバ側処理部１３２による拡張実行可能区間の処理が開始される直前にサーバ装置１３０の負荷状況を確認する。負荷状況を示す情報としては、例えば、平均ＣＰＵ使用率などを利用することができる。サーバ側拡張実行部１３３は、負荷状況を示す情報を端末装置１１０に送信する。サーバ側拡張実行部１３３は、負荷状況を示す情報をサーバ処理時間管理部１３４に提供する。
【００８２】
サーバ側拡張実行部１３３は、サーバ側処理部１３２による拡張実行可能区間の処理が完了して状態データが出力されると、この状態データを端末装置１１０に送信する。
（サーバ処理時間管理部１３４）
サーバ処理時間管理部１３４は、サーバ処理時間を計測する。例えば、サーバ側拡張実行部１３３からサーバ処理時間の計測開始が通知されると、サーバ処理時間管理部１３４は、サーバ処理時間の計測を開始する。サーバ側拡張実行部１３３からサーバ処理時間の計測終了が通知されると、サーバ処理時間管理部１３４は、サーバ処理時間の計測を終了する。そして、サーバ処理時間管理部１３４は、計測開始から計測終了までの時間をサーバ処理時間とする。サーバ処理時間管理部１３４は、サーバ処理時間の情報を処理時間保存部１３５に格納する。
【００８３】
なお、サーバ処理時間管理部１３４は、サーバ側処理部１３２が実行したアプリケーションの種類に対応付けてサーバ処理時間の情報を処理時間保存部１３５に格納する。サーバ装置１３０の負荷状況が得られている場合、サーバ処理時間管理部１３４は、さらに負荷状況の情報を対応付けてサーバ処理時間の情報を処理時間保存部１３５に格納する。
【００８４】
端末装置１１０から端末処理時間を受信した場合、サーバ処理時間管理部１３４は、受信した端末処理時間をアプリケーションの種類及び端末装置１１０の識別情報を示す情報に対応付けて処理時間保存部１３５に格納する。その端末処理時間に対応する端末装置１１０の負荷状況を示す情報が得られている場合、サーバ処理時間管理部１３４は、負荷状況を示す情報を端末処理時間に対応付けて処理時間保存部１３５に格納する。
【００８５】
（処理時間保存部１３５）
処理時間保存部１３５は、サーバ処理時間及び端末処理時間を保存する記憶領域である。処理時間保存部１３５には、サーバ処理時間管理部１３４により計測されたサーバ処理時間の情報、及び端末装置１１０から受信した端末処理時間の情報が格納される。
【００８６】
例えば、処理時間保存部１３５には、アプリケーションの種類を示す情報、サーバ装置１３０の負荷状況を示す情報、及び通信状況を示す情報と対応付けてサーバ処理時間の情報が格納される。処理時間保存部１３５には、アプリケーションの種類を示す情報、端末装置１１０の負荷状況を示す情報、及び端末装置１１０の識別情報と対応付けて端末処理時間の情報が格納される。
【００８７】
なお、図６の例では、処理時間保存部１３５がサーバ装置１３０の内部に記載されているが、サーバ装置１３０の外部に接続された記憶装置（非図示）に処理時間保存部１３５を設け、当該記憶装置を利用するような仕組みに変形することも可能である。
【００８８】
以上、サーバ装置１３０の機能について説明した。
（拡張実行について）
図７は、第２の実施の形態に係る拡張実行の例を示した図である。
【００８９】
図７の例では、時系列で実行される処理＃１、＃２、…、＃６、…について考える。なお、処理＃１、＃２を第１区間と呼び、処理＃３〜＃５を第２区間と呼び、処理＃６以降を第３区間と呼ぶ。第２区間の処理は拡張実行可能区間である。画像処理アプリケーションの場合を例に挙げると、第１区間では符号化された画像データの復号や表示などの処理が行われ、第２区間では顔認識の処理が行われ、第３区間では顔認識の結果を表示する処理などが行われる。
【００９０】
図７の例では、チェックポイントＡ、Ｂが予め設定されている。なお、チェックポイントとは、ＪＡＶＡアプリケーションの処理を実行する装置間でマイグレーションを行う際に一方の装置で実行状態を示す状態データを保存する処理又は技術を言う。チェックポイントの設定は、例えば、プログラムやプログラムに付随する設定ファイルに記述される。なお、端末装置１１０及びサーバ装置１３０が、チェックポイントの設定を記述した設定ファイルをプログラムとは別に保持していてもよい。
【００９１】
端末装置１１０は、処理＃１、＃２を実行した後、スタック領域及びヒープ領域内のデータを状態データとして保存する（チェックポイントＡ）。そして、端末装置１１０は、保存した状態データを圧縮してサーバ装置１３０に送信する。
【００９２】
状態データを受信したサーバ装置１３０は、アプリケーションを起動し、ＲＡＭ９０２やＨＤＤ９０３などのメモリ領域にスタック領域及びヒープ領域を確保する。そして、サーバ装置１３０は、端末装置１１０から受信した状態データをスタック領域及びヒープ領域に上書きし、第２区間の処理＃３を実行開始する。なお、サーバ装置１３０は、メモリアドレスのアドレス変換を行う場合もある。サーバ装置１３０は、アプリケーションの実行コードを予め保持していてもよいし、状態データと共に端末装置１１０から受信してもよい。
【００９３】
第２区間の処理＃３〜＃５を実行し終えると、サーバ装置１３０は、スタック領域及びヒープ領域内のデータを状態データとして保存する（チェックポイントＢ）。そして、サーバ装置１３０は、保存した状態データを圧縮して端末装置１１０に送信する。
【００９４】
状態データを受信した端末装置１１０は、サーバ装置１３０から受信した状態データをスタック領域及びヒープ領域に上書きし、第３区間の処理＃６を実行開始する。なお、端末装置１１０は、メモリアドレスのアドレス変換を行う場合もある。このように、状態データを利用することで拡張実行可能区間の処理をサーバ装置１３０で実行し、その処理結果を引き継いで端末装置１１０が拡張実行可能区間後の処理を実行することが可能になる。
【００９５】
以上、拡張実行の例について説明した。
（端末装置及びサーバ装置が保持する情報について）
図８は、第２の実施の形態に係る端末装置の処理時間保存部に格納される情報の例を示した図である。
【００９６】
端末装置１１０の処理時間保存部１１３には、端末処理時間の情報が格納される。図８に示すように、処理時間保存部１１３には、端末処理時間の情報と共に、アプリケーションの種類を示すアプリケーション識別情報、及びその端末処理時間を計測する直前の負荷状況を示す情報が対応付けて格納される。
【００９７】
例えば、端末装置１１０がＡＰＰ−Ａというアプリケーションの処理を過去に実行した際に計測された端末処理時間が３２０秒である場合、ＡＰＰ−Ａ及び３２０秒という情報が処理時間保存部１１３に対応付けて格納される。このＡＰＰ−Ａの処理を実行開始する直前の端末装置１１０の負荷状況を示す情報（例えば、実行開始前の所定期間におけるＣＰＵ使用率の平均値（２３％））が得られている場合、この情報も端末処理時間の情報に対応付けて格納される。
【００９８】
このように、アプリケーションの種類及び負荷状況に応じた端末処理時間の情報を保持しておくことで、端末装置１１０で拡張実行可能区間の処理を実行する際に、当該処理にかかる時間を見積もることが可能になる。例えば、同じアプリケーションに対応付けられ、現時点での負荷状況と近い負荷状況の情報に対応付けられた端末処理時間の情報があれば、その端末処理時間と同程度の時間で処理が完了すると予測できる。また、処理時間保存部１１３に格納された端末処理時間の情報は、後述するように、サーバ処理時間の予測に利用することができる。
【００９９】
図９は、第２の実施の形態に係るサーバ装置の処理時間保存部に格納される情報の例を示した図である。
サーバ装置１３０の処理時間保存部１３５には、端末処理時間の情報及びサーバ処理時間の情報が格納される。なお、端末処理時間の情報は、対応する端末装置１１０の識別情報（図９の例では端末装置＃１など）に対応付けて格納される。サーバ処理時間の情報は、サーバ装置１３０の識別情報（図９の例ではサーバ装置＃１）に対応付けて格納される。
【０１００】
処理時間保存部１３５には、端末処理時間の情報と共に、アプリケーションの種類を示すアプリケーション識別情報、及びその端末処理時間を計測する直前の端末装置１１０の負荷状況を示す情報が対応付けて格納される。処理時間保存部１３５には、サーバ処理時間の情報と共に、アプリケーションの種類を示すアプリケーション識別情報、及びそのサーバ処理時間を計測する直前のサーバ装置１３０の負荷状況を示す情報が対応付けて格納される。
【０１０１】
例えば、サーバ装置１３０がＡＰＰ−Ｂというアプリケーションの処理を過去に実行した際に計測されたサーバ処理時間が１４５秒である場合、ＡＰＰ−Ｂ及び１４５秒という情報が処理時間保存部１３５に対応付けて格納される。このＡＰＰ−Ｂの処理を実行開始する直前のサーバ装置１３０の負荷状況を示す情報（例えば、実行開始前の所定期間におけるＣＰＵ使用率の平均値（６１％））が得られている場合、この情報もサーバ処理時間の情報に対応付けて格納される。
【０１０２】
このように、アプリケーションの種類及び負荷状況に応じたサーバ処理時間の情報を保持しておくことで、サーバ装置１３０で拡張実行可能区間の処理を実行する際に、当該処理にかかる時間を見積もることが可能になる。例えば、同じアプリケーションに対応付けられ、現時点での負荷状況と近い負荷状況の情報に対応付けられたサーバ処理時間の情報があれば、そのサーバ処理時間と同程度の時間で処理が完了すると予測できる。また、処理時間保存部１３５に格納されたサーバ処理時間の情報は、後述するように、アプリケーションの種類などが異なるサーバ処理時間の予測に利用することができる。
【０１０３】
端末装置１１０がＡＰＰ−Ａというアプリケーションの処理を過去に実行した際に計測された端末処理時間が３２０秒である場合、ＡＰＰ−Ａ及び３２０秒という情報が処理時間保存部１３５に対応付けて格納される。このＡＰＰ−Ａの処理を実行開始する直前の端末装置１１０の負荷状況を示す情報（例えば、実行開始前の所定期間におけるＣＰＵ使用率の平均値（２３％））が得られている場合、この情報も端末処理時間の情報に対応付けて格納される。この情報もサーバ処理時間の予測に利用することができる。
【０１０４】
以上、端末装置及びサーバ装置が保持する情報について説明した。なお、図９の例では記載を省略したが、処理時間保存部１３５には、サーバ処理時間の情報に対応付けて通信状況を示す情報（例えば、データ送信時間の情報）が格納されていてもよい。
【０１０５】
（サーバ処理時間の予測方法について）
拡張実行を行う際、端末装置１１０は、過去にサーバ装置１３０が同じアプリケーションの処理を実行した際に計測されたサーバ処理時間の情報を利用する。但し、現在実行しようとしているアプリケーションに対応するサーバ処理時間の情報がない場合、端末装置１１０は、所望のアプリケーションに対応するサーバ処理時間を予測する。このようなサーバ処理時間の予測方法について以下で説明する。
【０１０６】
図１０は、第２の実施の形態に係るサーバ処理時間の予測方法について説明する図である。
一例として、ＡＰＰ−Ａというアプリケーションの処理をサーバ装置１３０で実行した場合のサーバ処理時間を予測する２通りの方法（予測方法＃１、＃２）を紹介する。なお、予測方法＃１、＃２の適用条件は図１０に示した通りである。
【０１０７】
（予測方法＃１）
予測方法＃１は、同じアプリケーションに対応するサーバ処理時間と端末処理時間との比がアプリケーションの種類が変わっても同じであると仮定して、所望のサーバ処理時間を予測する方法である。
【０１０８】
例えば、予測方法＃１は、ＡＰＰ−Ａ及びＡＰＰ−Ｂに対応する端末処理時間があり、かつ、ＡＰＰ−Ｂに対応するサーバ処理時間がある場合に適用される。なお、ＡＰＰ−Ａに対応するサーバ処理時間を予測する場合であるから、ＡＰＰ−Ａに対応するサーバ処理時間はない。ＡＰＰ−Ｂは、ＡＰＰ−Ａとは異なるアプリケーションの一例である。
【０１０９】
ＡＰＰ−Ｂに対応する端末処理時間をＴBT、ＡＰＰ−Ｂに対応するサーバ処理時間をＴBS、ＡＰＰ−Ａに対応する端末処理時間をＴATと表記する。予測方法＃１によれば、端末装置１１０は、端末処理時間ＴAT、ＴBT、及びサーバ処理時間ＴBSに基づいてサーバ処理時間ＴASを下記の式（１）により計算することができる。
【０１１０】
【数１】
2014109800.tif 000003
【０１１１】
（予測方法＃２）
予測方法＃２は、ＡＰＰ−Ａに対応するサーバ処理時間ＴASを予測する端末装置１１０（第１端末と表記する。）とは別の端末装置１１０（第２端末と表記する。）で計測された情報を利用してサーバ処理時間ＴASを予測する方法である。より詳細には、予測方法＃２は、２つの異なるアプリケーションを実行する際に計測される処理時間の比は、装置の種類が変わっても同程度であると仮定して、所望のサーバ処理時間を予測する方法である。
【０１１２】
例えば、予測方法＃２は、ＡＰＰ−Ｂに対応するサーバ処理時間ＴBSがあり、かつ、ＡＰＰ−Ａに対応する第２端末の端末処理時間ＴxAT、及びＡＰＰ−Ｂに対応する第２端末の端末処理時間ＴxBTがある場合に適用される。予測方法＃２によれば、端末装置１１０は、サーバ処理時間ＴBS、及び第２端末の端末処理時間ＴxAT、ＴxBTに基づいてサーバ処理時間ＴASを下記の式（２）により計算することができる。
【０１１３】
【数２】
2014109800.tif 000004
【０１１４】
（並行実行）
上記の予測方法＃１、＃２のいずれも適用できない場合がある。例えば、図１０に示すように、ＡＰＰ−Ｂに対応するサーバ処理時間ＴBSがない場合、上記の予測方法＃１、＃２は適用できない。ＡＰＰ−Ｂに対応するサーバ処理時間ＴBSがある場合でも、第１端末の端末処理時間ＴAT、ＴBTの少なくとも一方がなく、かつ、第２端末の端末処理時間ＴxAT、ＴxBTの少なくとも一方がないとき、予測方法＃１、＃２は適用できない。予測方法＃１、＃２が適用できない場合、ＡＰＰ−Ａにおける拡張実行可能区間の処理を端末装置１１０とサーバ装置１３０とで共に実行する。
【０１１５】
端末装置１１０とサーバ装置１３０とで共にＡＰＰ−Ａの処理を実行することで、ＡＰＰ−Ａに対応するサーバ処理時間及び端末処理時間が得られる。そして、次回以降、ＡＰＰ−Ａを拡張実行する際にはＡＰＰ−Ａに対応するサーバ処理時間を利用することができるようになる。
【０１１６】
なお、予測方法＃１、＃２のいずれも適用できない場合、拡張実行に利用するサーバ処理時間の情報として、予め設定された時間情報を利用してもよい。
（利用する情報について）
端末装置１１０やサーバ装置１３０では、同じアプリケーションの処理が何度も実行されることがある。そのため、図９に示したように、１つのアプリケーションについて複数の端末処理時間の情報及び複数のサーバ処理時間の情報が得られ得る。このような場合、同じアプリケーションについて過去に計測された複数のサーバ処理時間の平均値、最頻値、最新値などを上記の予測方法＃１、＃２に利用する方法が考えられる。端末処理時間についても同様である。
【０１１７】
（負荷状況を考慮する方法）
ここで、図１１を参照しながら、サーバ装置１３０の負荷状況を考慮したサーバ処理時間の予測方法について説明する。図１１は、第２の実施の形態に係るサーバ装置の処理時間保存部に格納される統計情報の例を示した図である。
【０１１８】
拡張実行可能区間の処理をサーバ装置１３０に委託するか否かを判断する際、サーバ装置１３０で当該処理を実行する場合と端末装置１１０で当該処理を実行する場合とでいずれが早く処理結果を得られるかを確認することがある。例えば、過去に計測されたサーバ処理時間と端末処理時間との比較が行われる。このとき、過去に同じアプリケーションを実行した際の負荷状況を考慮したサーバ処理時間を利用することで、より正確な判断を行うことが可能になる。
【０１１９】
負荷状況を考慮する場合、端末装置１１０は、現時点でのサーバ装置１３０の負荷状況に対応するサーバ処理時間の情報をサーバ装置１３０に要求する。図９に示したように、サーバ処理時間とサーバ装置１３０の負荷状況とが対応付けて処理時間保存部１３５に格納されているため、サーバ装置１３０は、端末装置１１０から受けた要求に応じて、現時点での負荷状況に対応するサーバ処理時間を検索できる。
【０１２０】
現時点での負荷状況に対応するサーバ処理時間の情報がある場合、サーバ装置１３０は、端末装置１１０に対してサーバ処理時間の情報を提供する。現時点での負荷状況に対応するサーバ処理時間の情報がない場合、端末装置１１０は、その負荷状況に対応するサーバ処理時間を予測する。この予測の方法（予測方法＃３）について説明する。なお、予測方法＃３は、上記の予測方法＃１、＃２と組み合わせて利用される。
【０１２１】
図９に示したように、処理時間保存部１３５には、負荷状況に応じて、同じアプリケーションについて複数のサーバ処理時間が格納される。そこで、サーバ処理時間の統計情報を利用する方法について考える。例えば、平均ＣＰＵ使用率（負荷状況）が５０％から６０％の範囲内にある場合に過去に計測されたＡＰＰ−Ｂに対応するサーバ処理時間を取得し、その平均値や中央値などをサーバ処理時間の統計情報として利用する。なお、平均値や中央値などの計算は、サーバ処理時間管理部１３４により実行される。サーバ処理時間の統計情報は、図１１に示すように処理時間保存部１３５に格納される。
【０１２２】
例えば、図１１の表に記載のＴB50は、平均ＣＰＵ使用率（負荷状況）が５０％から６０％の範囲内にある場合に過去に計測されたＡＰＰ−Ｂに対応するサーバ処理時間の統計情報である。なお、図１１の表に記載の（未格納）という表示は、その表示がある欄に対応するサーバ処理時間の情報が得られていないことを示している。例えば、所望の負荷状況の範囲内について過去にサーバ処理時間が計測されておらず、予測方法＃１、＃２により予測もできない場合が（未格納）という表示の欄に対応する。
【０１２３】
予測方法＃３では、処理時間保存部１３５に格納されているサーバ処理時間の統計情報から、（未格納）という表示の欄に対応するサーバ処理時間の統計情報を予測する。一例として、平均ＣＰＵ使用率（負荷状況）が７０％から８０％の範囲内にある場合に過去に計測されたＡＰＰ−Ｃに対応するサーバ処理時間の統計情報ＴC70を予測する方法について考える。図１１の表に記載のある統計情報ＴB50、ＴB70、ＴC50を利用し、例えば、下記の式（３）に基づいて統計情報ＴC70を予測する。
【０１２４】
【数３】
2014109800.tif 000005
【０１２５】
予測方法＃３を適用すれば、所望の負荷状況の範囲内について過去にサーバ処理時間が計測されておらず、予測方法＃１、＃２により予測もできない場合でも、サーバ処理時間の統計情報が得られることがある。
【０１２６】
（通信状況を測定する方法について）
図１２は、第２の実施の形態に係る通信状況の検出方法に用いるパケットの例を示した図である。通信状況は、所定サイズのデータを端末装置１１０からサーバ装置１３０へと送信した際に要した時間（データ送信時間）を用いて評価することができる。データ送信時間は、例えば、図１２に示すようなパケットを利用して測定可能である。
【０１２７】
図１２（Ａ）に示したパケットは、端末装置１１０からサーバ装置１３０へと送信される要求パケットである。一方、図１２（Ｂ）に示したパケットは、サーバ装置１３０から端末装置１１０へと送信される応答パケットである。
【０１２８】
図１２（Ａ）に示すように、要求パケットは、通信状況検出用パケット識別情報、データ長、送信時刻、及びデータを含む。要求パケットに含まれるデータは、一定サイズのデータである。なお、このデータの内容は任意であり、例えば、０ｘ００のようなＮＵＬＬデータでもよい。通信状況検出用パケット識別情報は、要求パケットを識別するための情報である。データ長は、要求パケットに含まれるデータの長さを示す情報である。送信時刻は、端末装置１１０が要求パケットを送信した時刻を示す情報（タイムスタンプ）である。
【０１２９】
図１２（Ｂ）に示すように、応答パケットは、通信状況検出用パケット識別情報、要求パケットのデータ長、送信時刻、及び受信時刻を含む。応答パケットは、要求パケットに応じてサーバ装置１３０から端末装置１１０へと送信される。通信状況検出用パケット識別情報は、要求パケットの通信状況検出用パケット識別情報と同じ情報である。要求パケットのデータ長は、要求パケットに含まれるデータ長と同じ情報である。送信時刻は、要求パケットに含まれる送信時刻と同じ情報である。受信時刻は、サーバ装置１３０が要求パケットを受信した時刻を示す情報（タイムスタンプ）である。
【０１３０】
応答パケットを受信した端末装置１１０は、応答パケットに含まれる送信時刻及び受信時刻から、要求パケットの送信に要したデータ送信時間を計算する。端末装置１１０は、応答パケットに含まれる要求パケットのデータ長及び計算したデータ送信時間を用いて、単位データ長当たりのデータ送信時間である送信レートを計算する。
【０１３１】
送信レートに状態データのサイズをかけると、拡張実行の際に行う状態データの送信にかかる時間を予測することができる。拡張実行の際にアプリケーション自体をサーバ装置１３０に送信する場合、アプリケーションのサイズを送信レートにかけることで、アプリケーションの送信にかかる時間を予測することができる。これら予測した時間と、過去に計測されたサーバ処理時間とを合算した時間が、通信状況を考慮した場合における、サーバ装置１３０で拡張実行可能区間の処理が完了するまでの時間の予測値となる。
【０１３２】
（拡張実行の変形例について）
ここで、変形例について説明する。
（第１変形例）
図１３は、第２の実施の形態に係る拡張実行の一変形例を示した図である。
【０１３３】
図１３の例では、処理＃１〜＃４のうち、処理＃２〜＃４が連携処理により実行される。端末装置１１０は、処理＃１を実行した後、拡張実行を開始してサーバ装置１３０に処理＃２〜＃４を実行させる。これまで説明した方法では、予測したサーバ処理時間Ｔの経過後、端末装置１１０は、処理＃２〜＃４を実行していた。第１変形例では、サーバ処理時間Ｔの経過時点でサーバ装置１３０が完了している処理を端末装置１１０で利用する。
【０１３４】
例えば、端末装置１１０は、サーバ処理時間Ｔの経過時に、サーバ装置１３０に対して状態データを送信するように依頼する。この依頼を受けたサーバ装置１３０は、アプリケーションの処理を一時停止して状態データを保存する。さらに、サーバ装置１３０は、保存した状態データを端末装置１１０に送信する。状態データを受信した端末装置１１０は、サーバ装置１３０から受信した状態データを利用して処理＃４を開始する。
【０１３５】
第１変形例に係る方法を適用することで、処理＃２、＃３の処理を省略できる分だけ端末装置１１０の処理負担を軽減することができる。処理負担の軽減により、端末装置１１０のバッテリ消費を抑制することができる。また、より早く処理＃４の結果を得られる。
【０１３６】
（第２変形例）
図１４は、第２の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第１の図である。
【０１３７】
拡張実行を開始し、サーバ装置１３０でアプリケーションの処理を実行中に、処理異常が発生した場合の対処方法について考える。例えば、次のチェックポイントに到達する前に、アプリケーションが異常停止（ハングアップ）又は異常終了し、待っても次のチェックポイントまで到達することが期待できず、端末装置１１０に応答できない状態になった場合を想定する。
【０１３８】
これまで説明してきた方法によれば、上記のような処理異常が発生した場合、予測したサーバ処理時間の経過を待って端末装置１１０が処理を開始する。第２変形例では、予測したサーバ処理時間Ｔの経過を待たずに端末装置１１０が処理を開始できるようにする。
【０１３９】
例えば、上記のような処理異常が発生した場合、サーバ装置１３０は、端末装置１１０に対して処理異常の発生を通知する。この通知を受けた端末装置１１０は、予測したサーバ処理時間Ｔの経過を待たずに拡張実行可能区間の処理＃２〜＃４を開始する。
【０１４０】
第２変形例によれば、予測したサーバ処理時間Ｔの経過前に端末装置１１０が処理＃２を開始するため、予測したサーバ処理時間Ｔの経過を待つ場合に比べて、端末装置１１０による処理＃２〜＃４の結果をより早く得ることができる。
【０１４１】
（第３変形例）
図１５は、第２の実施の形態に係る拡張実行時にサーバ装置で処理異常が発生した場合の動作例について説明した第２の図である。
【０１４２】
第３変形例では、第２変形例と同様に、サーバ装置１３０で処理異常が発生した場合に、予測したサーバ処理時間Ｔの経過を待たずに端末装置１１０が処理を開始できるようにする。但し、第３変形例では、図１５に示すように、処理異常の発生を知らせる通知と共にサーバ装置１３０から端末装置１１０へと状態データを送信する。状態データを受信した端末装置１１０は、受信した状態データを用いて処理（図１５の例では処理＃３、＃４）を開始する。
【０１４３】
第３変形例によれば、処理異常の発生前にサーバ装置１３０が完了した処理＃２を端末装置１１０があらためて実行せずに済むため、端末装置１１０の処理負担を軽減することができる。処理負担の軽減により、端末装置１１０のバッテリ消費を抑制することができる。また、より早く処理＃４の結果を得られる。
【０１４４】
なお、処理異常が発生した時点で状態データを端末装置１１０に送信するのではなく、定期的に状態データを端末装置１１０へと送信するようにしてもよい。この場合、端末装置１１０は、サーバ装置１３０で処理異常が発生する前に保存された状態データを利用して安全に拡張実行可能区間の処理を開始できるようになる。
【０１４５】
（端末装置及びサーバ装置の動作）
図１６は、第２の実施の形態に係る端末装置及びサーバ装置の動作例を示した第１の図である。
【０１４６】
（Ｓ１０１）端末装置１１０は、アプリケーションの処理を開始する。例えば、端末装置１１０を起動したタイミングで所定のアプリケーションの処理が開始される。ユーザによりアプリケーションの種類を指定して当該アプリケーションの処理を開始するように指示を受けた場合も、端末装置１１０は、そのアプリケーションの処理を開始する。
【０１４７】
端末装置１１０は、アプリケーションの処理を開始する際に拡張実行を行うか否かを判断する。例えば、端末装置１１０は、アプリケーションに拡張実行を行うことが設定されているかを確認し、設定されている場合には拡張実行可能区間の処理について拡張実行を行う。拡張実行を行うことが設定されていない場合、端末装置１１０は、単独でアプリケーションの処理を実行する。以下、拡張実行を行うことが設定されているものとして説明を進める。
【０１４８】
（Ｓ１０２）端末装置１１０は、拡張実行を開始するか否かを判断する。例えば、端末装置１１０は、拡張実行可能区間に達した場合に拡張実行を開始する。拡張実行可能区間を示す情報は、例えば、アプリケーションに予め設定されているか、端末装置１１０及びサーバ装置１３０が保持する設定ファイルに記述されている。拡張実行可能区間に達した場合、Ｓ１０３の動作に移る。拡張実行可能区間に達していない場合、端末装置１１０がアプリケーションの処理を継続しつつ、Ｓ１０２の動作を行う。
【０１４９】
なお、端末装置１１０は、ユーザの指示に応じて拡張実行を開始してもよい。この場合、端末装置１１０は、ユーザの指示に応じてＳ１０３の動作に移る。ユーザの指示は、端末装置１１０から入力されてもよいし、サーバ装置１３０から入力されてもよい。
【０１５０】
（Ｓ１０３）端末装置１１０は、アプリケーションの処理を一時停止して状態データを保存し、サーバ装置１３０が保持するサーバ処理時間の情報を確認する。例えば、端末装置１１０は、処理を一時停止したアプリケーションと同じアプリケーションについて過去にサーバ装置１３０が処理を実行した際に計測されたサーバ処理時間の情報があるか否かをサーバ装置１３０に問い合わせる。この問い合わせに応じてサーバ装置１３０は、該当するサーバ処理時間の情報があるか否かを端末装置１１０に回答する。
【０１５１】
（Ｓ１０４）Ｓ１０３でサーバ処理時間の情報があると回答された場合、端末装置１１０は、Ｓ１０５の動作に移る。Ｓ１０３でサーバ処理時間の情報がないと回答された場合、端末装置１１０は、Ｓ１０６の動作に移る。
【０１５２】
（Ｓ１０５）端末装置１１０は、Ｓ１０３で問い合わせたサーバ処理時間の情報をサーバ装置１３０から取得する。端末装置１１０は、取得した情報が示すサーバ処理時間で拡張実行可能区間の処理をサーバ装置１３０が完了できると予測する。サーバ処理時間の情報を取得した端末装置１１０は、Ｓ１０７の動作に移る。なお、端末装置１１０が取得した情報が示すサーバ処理時間を以下では「予測したサーバ処理時間」と呼ぶことにする。
【０１５３】
（Ｓ１０６）端末装置１１０は、自身が保持する端末処理時間の情報及びサーバ装置１３０が保持する他のアプリケーションに対応するサーバ処理時間の情報を取得する。そして、端末装置１１０は、取得した端末処理時間の情報及びサーバ処理時間の情報を利用して所望のサーバ処理時間を予測する。例えば、端末装置１１０は、上述した予測方法＃１や＃２に基づいて所望のアプリケーションに対応するサーバ処理時間を予測する。なお、Ｓ１０６で予測したサーバ処理時間も以下で「予測したサーバ処理時間」と呼ぶ。
【０１５４】
（Ｓ１０７）端末装置１１０は、通信状況を確認する。例えば、端末装置１１０は、上述した通信状況検出用のパケットをサーバ装置１３０との間で送受信し、データ送信時間を計測する。
【０１５５】
端末装置１１０は、現時点におけるサーバ装置１３０の負荷状況に応じたサーバ処理時間の情報を要求する。この要求を受けたサーバ装置１３０は、現時点における負荷状況（例えば、平均ＣＰＵ使用率）を確認し、その負荷状況に対応するサーバ処理時間の情報を検索する。所望のサーバ処理時間の情報を保持していない場合、サーバ装置１３０は、例えば、上述した予測方法＃３に基づいてサーバ処理時間を予測する。所望のサーバ処理時間が得られた場合、サーバ装置１３０は、そのサーバ処理時間の情報を端末装置１１０に送信する。
【０１５６】
サーバ装置１３０から負荷状況に応じたサーバ処理時間の情報が得られた場合、端末装置１１０は、負荷状況に応じたサーバ処理時間にデータ送信時間を合算した時間（以下、第１予測時間）と、自身が保持する端末処理時間とを比較する。但し、サーバ装置１３０から負荷状況に応じたサーバ処理時間の情報が得られなかった場合、端末装置１１０は、Ｓ１０５又はＳ１０６で得た、予測したサーバ処理時間にデータ送信時間を合算した時間（以下、第２予測時間）と、自身が保持する端末処理時間とを比較する。
【０１５７】
第１又は第２予測時間が端末処理時間よりも長い場合、端末装置１１０は、Ｓ１０８の動作に移る。一方、第１又は第２予測時間が端末処理時間よりも短い場合、端末装置１１０は、Ｓ１０９の動作に移る。
【０１５８】
（Ｓ１０８）端末装置１１０は、拡張実行可能区間の処理を含むアプリケーションの処理を単独で実行する。端末装置１１０が単独でアプリケーションの処理を全て完了すると図１６及び図１７に記載の一連の動作は終了する。
【０１５９】
（Ｓ１０９）端末装置１１０は、状態データをサーバ装置１３０に送信する。状態データを受信したサーバ装置１３０は、受信した状態データを利用して拡張実行可能区間の処理を開始すると共に、サーバ処理時間の計測を開始する。なお、サーバ装置１３０は、拡張実行可能区間の処理が完了した場合にサーバ処理時間の計測を終了すると共に状態データを保存し、保存した状態データを端末装置１１０に送信する。
【０１６０】
（Ｓ１１０）端末装置１１０は、サーバ装置１３０から状態データを受信したか否かを判定する。サーバ装置１３０から状態データを受信した場合、端末装置１１０は、図１７に記載のＳ１１７の動作に移る。サーバ装置１３０から状態データを受信していない場合、端末装置１１０は、Ｓ１１１の動作に移る。
【０１６１】
（Ｓ１１１）端末装置１１０は、サーバ装置１３０に状態データを送信した時点を基準に、第２予測時間を経過したか否かを判定する。第２予測時間を経過した場合、端末装置１１０は、Ｓ１１２の動作に移る。一方、第２予測時間を経過していない場合、端末装置１１０は、Ｓ１１０の動作に移る。
【０１６２】
（Ｓ１１２）端末装置１１０は、拡張実行可能区間の処理を実行開始すると共に、端末処理時間の計測を開始する。そして、端末装置１１０は、図１７に記載のＳ１１３の動作に移る。
【０１６３】
図１７は、第２の実施の形態に係る端末装置及びサーバ装置の動作例を示した第２の図である。
（Ｓ１１３）端末装置１１０が自身で拡張実行可能区間の処理を完了したか、又は端末装置１１０がサーバ装置１３０から状態データを受信した場合、端末装置１１０は、Ｓ１１４の動作に移る。それ以外の場合、端末装置１１０は、Ｓ１１３の動作を繰り返す。
【０１６４】
（Ｓ１１４）端末装置１１０が自身で拡張実行可能区間の処理を完了した場合、端末装置１１０は、端末処理時間の計測を終了し、Ｓ１１６の動作に移る。一方、端末装置１１０がサーバ装置１３０から状態データを受信した場合、端末装置１１０は、Ｓ１１５の動作に移る。
【０１６５】
（Ｓ１１５）端末装置１１０は、拡張実行可能区間の処理を停止し、端末処理時間の計測を終了する。その後、端末装置１１０は、Ｓ１１７の動作に移る。つまり、端末装置１１０が拡張実行可能区間の処理を実行中にサーバ装置１３０から状態データを受信した場合には、端末装置１１０が実行中の当該処理を停止し、動作を先に進める。なお、拡張実行可能区間の処理を完了したサーバ装置１３０は、サーバ処理時間を保存する。
【０１６６】
（Ｓ１１６）端末装置１１０は、計測した端末処理時間を自身で保持すると共に、サーバ装置１３０に送信する。その後、端末装置１１０は、Ｓ１１７の動作に移る。
（Ｓ１１７）端末装置１１０は、拡張実行可能区間後の処理を実行する。サーバ装置１３０から状態データを受信した場合、端末装置１１０は、受信した状態データを利用して拡張実行可能区間後の処理を実行する。例えば、端末装置１１０は、受信した状態データをスタック領域及びヒープ領域に上書きし、拡張実行可能区間後の処理を実行開始する。
【０１６７】
端末装置１１０が自身で拡張実行可能区間の処理を完了した場合、拡張実行可能区間の処理結果がスタック領域及びヒープ領域に書き込まれているため、端末装置１１０は、そのまま拡張実行可能区間後の処理を継続実行する。
【０１６８】
（Ｓ１１８）端末装置１１０は、拡張実行可能区間後の処理を実行中にサーバ装置１３０から状態データを受信したか否かを判定する。既にサーバ装置１３０から状態データを受信している場合には再び状態データが端末装置１１０に送信されない。この場合、端末装置１１０によりアプリケーションの処理が全て完了すると図１６及び図１７に記載の一連の動作は終了する。
【０１６９】
一方、サーバ装置１３０から状態データを受信する前に端末装置１１０が自身で拡張実行可能区間の処理を完了した場合には、拡張実行可能区間後の処理を実行中に端末装置１１０がサーバ装置１３０から状態データを受信することがある。この場合、端末装置１１０は、Ｓ１１９の動作に移る。
【０１７０】
（Ｓ１１９）端末装置１１０は、サーバ装置１３０から受信した状態データを破棄する。拡張実行可能区間の処理を完了したサーバ装置１３０は、サーバ処理時間を保持する。端末装置１１０によりアプリケーションの処理が全て完了すると図１６及び図１７に記載の一連の動作は終了する。
【０１７１】
以上、端末装置１１０及びサーバ装置１３０の動作例について説明した。
（実行管理部の動作）
図１８は、第２の実施の形態に係る端末装置の実行管理部の動作例を示した第１の図である。実行管理部１１２の動作例について説明する。
【０１７２】
（Ｓ１３１）実行管理部１１２は、アプリケーションの処理を開始するか否かを判定する。例えば、端末装置１１０を起動したタイミングで所定のアプリケーションの処理が開始される設定の場合、実行管理部１１２は、端末装置１１０の起動と共にＳ１３２の動作に移る。ユーザによりアプリケーションの種類を指定して当該アプリケーションの処理を開始するように指示を受けた場合に、実行管理部１１２が、Ｓ１３２の動作に移るようにしてもよい。
【０１７３】
なお、実行管理部１１２は、アプリケーションの処理を開始する際に拡張実行を行うか否かを判断する。例えば、実行管理部１１２は、アプリケーションに拡張実行を行うことが設定されているかを確認し、設定されている場合には拡張実行可能区間の処理について拡張実行を行う。拡張実行を行うことが設定されていない場合、実行管理部１１２は、端末側処理部１１１に単独でアプリケーションの処理を実行させる。以下、拡張実行を行うことが設定されているものとして説明を進める。
【０１７４】
（Ｓ１３２）実行管理部１１２は、端末側処理部１１１にアプリケーションの処理を開始するように通知する。
（Ｓ１３３）実行管理部１１２は、拡張実行を開始するか否かを判断する。例えば、実行管理部１１２は、拡張実行可能区間に達した場合に拡張実行を開始する。拡張実行可能区間を示す情報は、例えば、アプリケーションに予め設定されているか、端末装置１１０及びサーバ装置１３０が保持する設定ファイルに記述されている。端末側処理部１１１の実行する処理が拡張実行可能区間に達した場合、実行管理部１１２は、Ｓ１３４の動作に移る。拡張実行可能区間に達していない場合、実行管理部１１２は、拡張実行可能区間に達するまで待機する。
【０１７５】
なお、端末装置１１０は、ユーザの指示に応じて拡張実行を開始してもよい。この場合、端末装置１１０は、ユーザの指示に応じてＳ１０３の動作に移る。ユーザの指示は、端末装置１１０から入力されてもよいし、サーバ装置１３０から入力されてもよい。
【０１７６】
（Ｓ１３４）実行管理部１１２は、サーバ装置１３０が保持するサーバ処理時間の情報を確認する。例えば、実行管理部１１２は、拡張実行を行うアプリケーションと同じアプリケーションについて過去にサーバ装置１３０が処理を実行した際に計測されたサーバ処理時間の情報があるか否かをサーバ装置１３０に問い合わせる。
【０１７７】
（Ｓ１３５）Ｓ１３４でサーバ装置１３０からサーバ処理時間の情報があると回答を受けた場合、実行管理部１１２は、Ｓ１３６の動作に移る。Ｓ１３４でサーバ装置１３０からサーバ処理時間の情報がないと回答を受けた場合、実行管理部１１２は、Ｓ１３７の動作に移る。
【０１７８】
（Ｓ１３６）実行管理部１１２は、Ｓ１３４で問い合わせたサーバ処理時間の情報をサーバ装置１３０から取得する。サーバ処理時間の情報を取得した実行管理部１１２は、Ｓ１３９の動作に移る。
【０１７９】
（Ｓ１３７）実行管理部１１２は、サーバ処理時間予測部１１４にサーバ処理時間の予測を依頼する。
（Ｓ１３８）実行管理部１１２は、サーバ処理時間予測部１１４からサーバ処理時間の予測結果を取得するまで待機し、サーバ処理時間の予測結果を取得した場合にはＳ１３９の動作に移る。
【０１８０】
（Ｓ１３９）実行管理部１１２は、通信状況を確認する。例えば、実行管理部１１２は、通信部１１５に対し、上述した通信状況検出用のパケットをサーバ装置１３０との間で送受信させ、データ送信時間を計測させる。
【０１８１】
実行管理部１１２は、現時点におけるサーバ装置１３０の負荷状況に応じたサーバ処理時間の情報を要求する。サーバ装置１３０から負荷状況に応じたサーバ処理時間の情報が得られた場合、実行管理部１１２は、負荷状況に応じたサーバ処理時間にデータ送信時間を合算した時間（第１予測時間）と、処理時間保存部１１３に格納されている端末処理時間とを比較する。
【０１８２】
但し、サーバ装置１３０から負荷状況に応じたサーバ処理時間の情報が得られなかった場合、実行管理部１１２は、Ｓ１３６で取得したサーバ処理時間又はＳ１３８で取得した予測結果にデータ送信時間を合算した時間（第２予測時間）と、処理時間保存部１１３に格納されている端末処理時間とを比較する。
【０１８３】
第１又は第２予測時間が端末処理時間よりも長い場合、実行管理部１１２は、Ｓ１４０の動作に移る。一方、第１又は第２予測時間が端末処理時間よりも短い場合、実行管理部１１２は、Ｓ１４１の動作に移る。
【０１８４】
なお、比較する端末処理時間が処理時間保存部１１３にない場合、第１又は第２予測時間と所定の閾値とが比較され、第１又は第２予測時間が所定の閾値よりも長い場合、実行管理部１１２は、Ｓ１４０の動作に移る。一方、第１又は第２予測時間が所定の閾値よりも短い場合、実行管理部１１２は、Ｓ１４１の動作に移る。
【０１８５】
（Ｓ１４０）実行管理部１１２は、端末側処理部１１１に拡張実行可能区間の処理を含むアプリケーションの処理を継続して実行させる。
（Ｓ１４１）実行管理部１１２は、端末側拡張実行部１１６に対して拡張実行可能区間の処理を実行開始するように通知し、図１９に記載のＳ１４２の動作に移る。
【０１８６】
図１９は、第２の実施の形態に係る端末装置の実行管理部の動作例を示した第２の図である。
（Ｓ１４２）実行管理部１１２は、サーバ装置１３０から状態データを取得したか否かを判定する。サーバ装置１３０から状態データを取得した場合、実行管理部１１２は、Ｓ１４８の動作に移る。一方、実行管理部１１２は、サーバ装置１３０から状態データを取得していない場合、Ｓ１４３の動作に移る。
【０１８７】
（Ｓ１４３）実行管理部１１２は、Ｓ１４１で実行開始を通知してから第２予測時間が経過したか否かを判定する。第２予測時間が経過した場合、実行管理部１１２は、Ｓ１４４の動作に移る。一方、第２予測時間が経過していない場合、実行管理部１１２は、Ｓ１４２の動作に移る。
【０１８８】
（Ｓ１４４）実行管理部１１２は、端末側拡張実行部１１６に対して端末側処理部１１１の動作再開を通知する。つまり、実行管理部１１２は、端末側処理部１１１に拡張実行可能区間の処理を実行開始させるように端末側拡張実行部１１６に指示する。
【０１８９】
（Ｓ１４５）実行管理部１１２は、端末側処理部１１１による拡張実行可能区間の処理が完了するか、又はサーバ装置１３０から状態データを受信するまで待機する。端末側処理部１１１による拡張実行可能区間の処理が完了するか、又はサーバ装置１３０から状態データを受信した場合、実行管理部１１２は、Ｓ１４６の動作に移る。
【０１９０】
（Ｓ１４６）実行管理部１１２は、Ｓ１４５で端末側処理部１１１による拡張実行可能区間の処理が完了したことを確認した場合、Ｓ１４８の動作に移る。一方、端末側処理部１１１による拡張実行可能区間の処理が完了する前にＳ１４５でサーバ装置１３０から状態データを受信した場合、実行管理部１１２は、Ｓ１４７の動作に移る。
【０１９１】
（Ｓ１４７）実行管理部１１２は、端末側拡張実行部１１６に対して端末側処理部１１１の動作停止を通知する。つまり、実行管理部１１２は、端末側処理部１１１が実行中の拡張実行可能区間の処理を停止させるように端末側拡張実行部１１６に指示する。
【０１９２】
（Ｓ１４８）実行管理部１１２は、端末側拡張実行部１１６に対して拡張実行の終了を通知し、図２０に記載のＳ１４９の動作に移る。
図２０は、第２の実施の形態に係る端末装置の実行管理部の動作例を示した第３の図である。
【０１９３】
（Ｓ１４９）実行管理部１１２は、拡張実行で得られた拡張実行可能区間の処理の結果を利用して、拡張実行可能区間後の処理を端末側処理部１１１に継続実行させる。
（Ｓ１５０）サーバ装置１３０から状態データを受信する前に、端末側処理部１１１で拡張実行可能区間の処理を完了した場合、実行管理部１１２は、その後にサーバ装置１３０から状態データを受信する場合がある。このような状態データをサーバ装置１３０から受信した場合、実行管理部１１２は、Ｓ１５１の動作に移る。それ以外の場合、実行管理部１１２は、図１８〜図２０に示した一連の動作を終了する。
【０１９４】
（Ｓ１５１）実行管理部１１２は、サーバ装置１３０から受信した状態データを破棄する。そして、実行管理部１１２は、図１８〜図２０に示した一連の動作を終了する。
（端末側拡張実行部の動作）
図２１は、第２の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第１の図である。端末側拡張実行部１１６の動作例について説明する。
【０１９５】
（Ｓ１６１）端末側拡張実行部１１６は、実行管理部１１２から拡張実行可能区間の処理を開始するように指示する開始通知を取得するまで待機する。この開始通知を取得した場合、端末側拡張実行部１１６は、Ｓ１６２の動作に移る。
【０１９６】
（Ｓ１６２）端末側拡張実行部１１６は、端末側処理部１１１の動作を停止させ、端末側処理部１１１が保存した状態データを取得する。例えば、端末側拡張実行部１１６は、端末側処理部１１１が利用するスタック領域及びヒープ領域のデータを取得する。
【０１９７】
（Ｓ１６３）端末側拡張実行部１１６は、Ｓ１６２で取得した状態データをサーバ装置１３０に送信する。
（Ｓ１６４）端末側拡張実行部１１６は、実行管理部１１２から端末側処理部１１１に実行可能区間の処理を再開するように指示する動作再開の通知を取得したか否かを判定する。この通知を取得した場合、端末側拡張実行部１１６は、図２２に記載のＳ１６６の動作に移る。一方、この通知を取得していない場合、端末側拡張実行部１１６は、Ｓ１６５の動作に移る。
【０１９８】
（Ｓ１６５）端末側拡張実行部１１６は、実行管理部１１２から拡張実行を終了するように指示する終了通知を取得したか否かを判定する。この終了通知を取得した場合、端末側拡張実行部１１６は、図２１及び図２２に示した一連の動作を終了する。一方、この終了通知を取得していない場合、端末側拡張実行部１１６は、Ｓ１６４の動作に移る。
【０１９９】
図２２は、第２の実施の形態に係る端末装置の端末側拡張実行部の動作例を示した第２の図である。
（Ｓ１６６）端末側拡張実行部１１６は、端末処理時間計測部１１７に対して端末処理時間の計測開始を通知する。
【０２００】
（Ｓ１６７）端末側拡張実行部１１６は、端末側処理部１１１に対して拡張実行可能区間の処理を実行するように通知する。なお、Ｓ１６６とＳ１６７の動作は順序を入れ替えてもよい。
【０２０１】
（Ｓ１６８）端末側拡張実行部１１６は、実行管理部１１２から端末側処理部１１１の動作を停止するように指示する動作停止の通知を取得したか否かを判定する。この動作停止の通知を取得した場合、端末側拡張実行部１１６は、Ｓ１６９の動作に移る。一方、この動作停止の通知を取得していない場合、端末側拡張実行部１１６は、Ｓ１７１の動作に移る。
【０２０２】
（Ｓ１６９）端末側拡張実行部１１６は、拡張実行可能区間の処理を実行中の端末側処理部１１１の動作を停止させる。
（Ｓ１７０）端末側拡張実行部１１６は、端末処理時間計測部１１７に端末処理時間の計測終了を通知し、Ｓ１７３の動作に移る。
【０２０３】
（Ｓ１７１）端末側拡張実行部１１６は、端末側処理部１１１で拡張実行可能区間の処理を完了したか否かを判定する。端末側処理部１１１で拡張実行可能区間の処理を完了した場合、端末側拡張実行部１１６は、Ｓ１７２の動作に移る。一方、端末側処理部１１１で拡張実行可能区間の処理を完了していない場合、端末側拡張実行部１１６は、Ｓ１６８の動作に移る。
【０２０４】
（Ｓ１７２）端末側拡張実行部１１６は、端末処理時間計測部１１７に端末処理時間の計測終了を通知する。
（Ｓ１７３）端末側拡張実行部１１６は、実行管理部１１２から拡張実行の終了通知を取得するまで待機する。実行管理部１１２から拡張実行の終了通知を取得した場合、端末側拡張実行部１１６は、図２１及び図２２に示した一連の処理を終了する。
【０２０５】
（サーバ処理時間予測部の動作）
図２３は、第２の実施の形態に係る端末装置のサーバ処理時間予測部の動作例を示した図である。サーバ処理時間予測部１１４の動作例について説明する。
【０２０６】
（Ｓ１８１）サーバ処理時間予測部１１４は、実行管理部１１２から予測依頼を取得するまで待機する。実行管理部１１２から予測依頼を取得した場合、サーバ処理時間予測部１１４は、Ｓ１８２の動作に移る。
【０２０７】
（Ｓ１８２）サーバ処理時間予測部１１４は、上述した予測方法＃１、＃２により所望のサーバ処理時間を予測する。つまり、サーバ処理時間予測部１１４は、現在実行中のアプリケーションと同じアプリケーションの拡張実行可能区間の処理をサーバ装置１３０で実行した場合にかかるサーバ処理時間の予測値を算出する。
【０２０８】
（Ｓ１８３）サーバ処理時間予測部１１４は、算出したサーバ処理時間の予測値を予測結果として実行管理部１１２に通知し、図２３に示した一連の処理を終了する。
（端末処理時間計測部の動作）
図２４は、第２の実施の形態に係る端末装置の端末処理時間計測部の動作例を示した図である。端末処理時間計測部１１７の動作例について説明する。
【０２０９】
（Ｓ１９１）端末処理時間計測部１１７は、端末側拡張実行部１１６から計測開始の通知を取得するまで待機する。端末側拡張実行部１１６から計測開始の通知を取得した場合、端末処理時間計測部１１７は、Ｓ１９２の動作に移る。
【０２１０】
（Ｓ１９２）端末処理時間計測部１１７は、端末処理時間の計測を開始する。
（Ｓ１９３）端末処理時間計測部１１７は、端末側拡張実行部１１６から計測終了の通知を取得するまで端末処理時間の計測を継続する。端末側拡張実行部１１６から計測終了の通知を取得した場合、端末処理時間計測部１１７は、Ｓ１９４の動作に移る。
【０２１１】
（Ｓ１９４）端末処理時間計測部１１７は、端末処理時間の計測を終了する。
（Ｓ１９５）端末処理時間計測部１１７は、計測した端末処理時間の情報を処理時間保存部１１３に格納する。
【０２１２】
（Ｓ１９６）端末処理時間計測部１１７は、計測した端末処理時間の情報をサーバ装置１３０に送信する。なお、Ｓ１９５とＳ１９６の動作は順序を入れ替えてもよい。Ｓ１９６の動作を完了すると、端末処理時間計測部１１７は、図２４に示した一連の動作を終了する。
【０２１３】
（サーバ側拡張実行部の動作）
図２５は、第２の実施の形態に係るサーバ装置のサーバ側拡張実行部の動作例を示した図である。サーバ側拡張実行部１３３の動作例について説明する。
【０２１４】
（Ｓ２０１）サーバ側拡張実行部１３３は、端末装置１１０から状態データを受信するまで待機する。端末装置１１０から状態データを受信した場合、サーバ側拡張実行部１３３は、Ｓ２０２の動作に移る。
【０２１５】
（Ｓ２０２）サーバ側拡張実行部１３３は、サーバ処理時間管理部１３４にサーバ処理時間の計測開始を通知する。
（Ｓ２０３）サーバ側拡張実行部１３３は、サーバ側処理部１３２に、受信した状態データを提供して拡張実行可能区間の処理を実行させる。なお、Ｓ２０２とＳ２０３の動作は順序を入れ替えてもよい。
【０２１６】
（Ｓ２０４）サーバ側拡張実行部１３３は、サーバ側処理部１３２が拡張実行可能区間の完了後に保存する状態データをサーバ側処理部１３２から取得するまで待機する。サーバ側処理部１３２から状態データを取得した場合、サーバ側拡張実行部１３３は、Ｓ２０５の動作に移る。
【０２１７】
（Ｓ２０５）サーバ側拡張実行部１３３は、サーバ処理時間管理部１３４にサーバ処理時間の計測終了を通知する。
（Ｓ２０６）サーバ側拡張実行部１３３は、サーバ側処理部１３２から取得した状態データを端末装置１１０に送信し、図２５に示した一連の動作を終了する。
【０２１８】
（サーバ処理時間管理部の動作）
図２６は、第２の実施の形態に係るサーバ装置のサーバ処理時間管理部の動作例を示した図である。サーバ処理時間管理部１３４の動作例について説明する。
【０２１９】
（Ｓ２１１）サーバ処理時間管理部１３４は、サーバ側拡張実行部１３３から計測開始の通知を取得するまで待機する。サーバ側拡張実行部１３３から計測開始の通知を取得した場合、サーバ処理時間管理部１３４は、Ｓ２１２の動作に移る。
【０２２０】
（Ｓ２１２）サーバ処理時間管理部１３４は、サーバ処理時間の計測を開始する。
（Ｓ２１３）サーバ処理時間管理部１３４は、サーバ側拡張実行部１３３から計測終了の通知を取得するまで計測を継続する。サーバ側拡張実行部１３３から計測終了の通知を取得した場合、サーバ処理時間管理部１３４は、Ｓ２１４の動作に移る。
【０２２１】
（Ｓ２１４）サーバ処理時間管理部１３４は、サーバ処理時間の計測を終了する。
（Ｓ２１５）サーバ処理時間管理部１３４は、計測したサーバ処理時間の情報を処理時間保存部１３５に格納する。
【０２２２】
（Ｓ２１６）サーバ処理時間管理部１３４は、端末装置１１０から端末処理時間の情報を受信したか否かを判定する。端末装置１１０から端末処理時間の情報を受信した場合、サーバ処理時間管理部１３４は、Ｓ２１７の動作に移る。端末装置１１０から端末処理時間の情報を受信していない場合、サーバ処理時間管理部１３４は、図２６に示した一連の動作を終了する。
【０２２３】
（Ｓ２１７）サーバ処理時間管理部１３４は、端末装置１１０から受信した端末処理時間の情報を当該端末装置１１０の識別情報に対応付けて処理時間保存部１３５に格納し、図２６に示した一連の動作を終了する。
【０２２４】
以上、第２の実施の形態について説明した。第２の実施の形態によれば、拡張実行可能区間の処理をサーバ装置１３０に実行させる際、予測したサーバ処理時間が経過してもサーバ装置１３０から処理結果が得られない場合でも端末装置１１０が素早く処理を実行開始できるようになる。その結果、処理の実行結果の取得が大きく遅れるリスクを低減できる。
【０２２５】
上記説明の中で、サーバ処理時間を端末装置１１０が予測する例を示したが、例えば、サーバ処理時間をサーバ装置１３０が予測する仕組みへと変形することも可能である。上記説明の中で、端末装置１１０からサーバ装置１３０へとデータを送信する際のデータ送信時間を考慮する例を示したが、同様の方法でサーバ装置１３０から端末装置１１０へとデータを送信する際のデータ送信時間を更に考慮してもよい。こうした変形例についても第２の実施の形態の技術的範囲に属する。
【符号の説明】
【０２２６】
５  ネットワーク
１０  第１の情報処理装置
１１  通信部
１２  制御部
１３  一の処理
２０  第２の情報処理装置
１００  情報処理システム
１１０  端末装置
１１１  端末側処理部
１１２  実行管理部
１１３  処理時間保存部
１１４  サーバ処理時間予測部
１１５  通信部
１１６  端末側拡張実行部
１１７  端末処理時間計測部
１３０  サーバ装置
１３１  通信部
１３２  サーバ側処理部
１３３  サーバ側拡張実行部
１３４  サーバ処理時間管理部
１３５  処理時間保存部
【図１】
2014109800.tif 000006
【図２】
2014109800.tif 000007
【図３】
2014109800.tif 000008
【図４】
2014109800.tif 000009
【図５】
2014109800.tif 000010
【図６】
2014109800.tif 000011
【図７】
2014109800.tif 000012
【図８】
2014109800.tif 000013
【図９】
2014109800.tif 000014
【図１０】
2014109800.tif 000015
【図１１】
2014109800.tif 000016
【図１２】
2014109800.tif 000017
【図１３】
2014109800.tif 000018
【図１４】
2014109800.tif 000019
【図１５】
2014109800.tif 000020
【図１６】
2014109800.tif 000021
【図１７】
2014109800.tif 000022
【図１８】
2014109800.tif 000023
【図１９】
2014109800.tif 000024
【図２０】
2014109800.tif 000025
【図２１】
2014109800.tif 000026
【図２２】
2014109800.tif 000027
【図２３】
2014109800.tif 000028
【図２４】
2014109800.tif 000029
【図２５】
2014109800.tif 000030
【図２６】
2014109800.tif 000031