(57)【要約】【課題】端末装置とサーバの両者において実行可能な処理を、負荷に応じ端末装置又はサーバに動的に割り振る。【解決手段】  サーバ側負荷計測部は、サーバ側処理実行部により実行された単位処理それぞれの負荷を計測し、計測の結果得られた負荷の値を、処理実行履歴情報に書き込む。サーバ側処理実行部は、サーバ側処理分配部又は端末装置側処理分配部に指定された単位処理を、サーバ側で実行する。サーバ側処理分配部は、前記処理実行計画情報に含まれる各単位処理をサーバ側又は端末装置側のどちらで行うかを、処理実行履歴情報に含まれる負荷の値に基づいて判定し、この判定の結果に基づいて各単位処理をサーバ側処理実行部又は端末装置側処理実行部のいずれかに実行させる。【選択図】図２
2016024700.tif 000002
【特許請求の範囲】
【請求項１】
処理を単位処理を用いて記述した情報である処理実行計画情報と、単位処理を特定する情報と、処理の要求元を特定する情報と、当該単位処理の実行環境を特定する情報と、当該単位処理の負荷の値と有する第１の処理実行履歴情報とを記憶する第１の記憶手段と、
第１の実行手段により実行された単位処理それぞれの負荷を計測し、計測の結果得られた負荷の値を、前記第１の処理実行履歴情報に書き込む第１の計測手段と、
第１の判定手段又は第２の判定手段に指定された単位処理を、第１の実行環境において実行する第１の実行手段と、
前記処理実行計画情報に含まれる各単位処理を前記第１の実行環境又は前記第２の実行環境のどちらで行うかを、前記第１の処理実行履歴情報に含まれる負荷の値に基づいて判定し、この判定の結果に基づいて各単位処理を前記第１の実行手段又は第２の実行手段のいずれかに実行させる第１の判定手段と、
前記処理実行計画情報と同一の情報と、単位処理を特定する情報と、処理の要求元を特定する情報と、当該単位処理の実行環境を特定する情報と、当該単位処理の負荷の値と有する第２の処理実行履歴情報とを記憶する第２の記憶手段と、
第２の実行手段によって実行された単位処理それぞれの負荷を計測し、計測の結果得られた負荷の値を、前記第２の処理実行履歴情報に書き込む第２の計測手段と、
前記第１の判定手段又は第２の判定手段に指定された単位処理を、第２の実行環境において実行する第２の実行手段と、
前記処理実行計画情報に含まれる各単位処理を前記第１の実行環境及び前記第２の実行環境のどちらで行うかを、前記第２の処理実行履歴情報に含まれる負荷の値に基づいて判定し、この判定の結果に基づいて、各単位処理を前記第１の実行手段及び前記第２の実行手段のいずれかに実行させる第２の判定手段と、
を有するウェブアプリケーションシステム。
【請求項２】
前記第１の判定手段は、前記第１の処理実行履歴情報に含まれる負荷の値を参照して、前記第１の実行環境における当該単位処理の負荷の値と、前記第２の実行環境における当該単位処理の負荷の値と通信にかかる負荷の合計値を比較して、当該単位処理を前記第１の実行手段及び前記第２の実行手段のいずれに実行させるかを判定し、
前記第２の判定手段は、前記第２の処理実行履歴情報に含まれる負荷の値を参照して、前記第１の実行環境における当該単位処理の負荷の値及び通信にかかる負荷の合計と、前記第２の実行環境における当該単位処理の負荷の値を比較して、当該単位処理を前記第１の実行手段及び前記第２の実行手段のいずれに実行させるかを判定する
請求項１のウェブアプリケーションシステム。
【請求項３】
端末装置の種類又は種別を特定する情報である端末種別情報を送信する第１の管理手段と、
前記端末種別情報に基づいて、前記第２の処理実行履歴情報から、前記実行環境を特定する情報として前記端末種別情報に対応する情報が格納されているレコード、及び前記実行環境を特定する情報としてサーバを示す情報が格納されているレコードを抽出し、抽出したレコードからなる第３の処理実行履歴情報を生成し、これを前記第１の管理手段に送信する第２の管理手段と
をさらに有し、
前記第１の管理手段は、前記第３の処理実行履歴情報を、新たな第２の処理実行履歴情報として前記第１の記憶手段に記憶させる
請求項１又は２のウェブアプリケーションシステム。
【請求項４】
前記第１の管理手段は、前記第１の処理実行履歴情報を前記第２の管理手段に送信し、
前記第２の管理手段は、受信した前記第１の処理実行履歴情報に基づいて、前記第２の処理実行履歴情報を更新する
請求項３のウェブアプリケーションシステム。
【請求項５】
前記第１の記憶手段は、前記処理実行計画情報に記述された単位処理を特定する情報と、前記第１の実行手段が実行する単位処理を特定する情報とを対応付けて記述した情報である処理対応表情報をさらに記憶し、
前記第２の記憶手段は、前記処理実行計画情報に記述された単位処理を特定する情報と、前記第２の実行手段が実行する単位処理を特定する情報とを対応付けて記述した情報である処理対応表情報をさらに記憶する
請求項１から４のウェブアプリケーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本明細書に記載の実施の形態は、ウェブアプリケーションシステムに関する。
【背景技術】
【０００２】
ウェブアプリケーション（Web application）は、インターネット（若しくはイントラネット）などのネットワークを介して使用するアプリケーションソフトウェアである。多くの場合、これらのアプリケーションは、端末のブラウザ上で動作するプログラミング言語（例えばJavaScript(登録商標)）によるプログラムと、サーバ側のプログラムが協調することによって動作し、ユーザはそれを端末のブラウザ上で使用する。
【０００３】
近年のインターネットの普及と技術進展に伴い、従来はデスクトップアプリケーションとして実装されていた機能も、ウェブアプリケーションとして提供される場合が増えている。ウェブアプリケーションの一例としては、ブログ、電子掲示板、インターネットバンキング、証券会社のオンライントレード、電子商店街などネット販売のショッピングカートなどがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１３−１０１５２３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ウェブアプリケーションにおいて、各端末の計算機資源に合わせた負荷と応答性の調整を行いたいというニーズがあった。例えば、電力制御システムにおいて中央制御室では高性能な端末装置を使用する一方、各作業員はそれほど性能の高くない手持ちの端末装置を使用している環境において、より高速にウェブアプリケーションの実行を可能とするには、適切に各端末装置とサーバでの処理の分配を行う必要がある。
【０００６】
また、ウェブアプリケーションにおいて、負荷と応答性の調整を行いたいというニーズがあるが、各種端末装置の機種に合わせたウェブアプリケーションの開発は、工数／保守の観点で困難である。
【０００７】
また、ウェブアプリケーションにおいて、端末装置からサーバへ処理の移動（又はその逆）が困難という問題もあった。これは以下の理由による。
（１）データソースやＧＵＩ部品に依存する処理が遍在しているため
（２）画面遷移型ウェブアプリケーションから非画面遷移型ウェブアプリケーションへの変更が困難なため
（３）端末が多様であるため
（４）単純な負荷平均化ではないため
【０００８】
本発明の目的は、端末装置とサーバの両者において実行可能な処理を、負荷に応じ端末装置又はサーバに動的に割り振ることが可能なウェブアプリケーションシステムを提供することにある。
【課題を解決するための手段】
【０００９】
本発明の実施の形態はウェブアプリケーションシステムとして提案される。
このウェブアプリケーションシステムは、第１の記憶手段と、第１の計測手段と、第１の判定手段と、第２の記憶手段と、第２の計測手段と、第１の計測手段と、第１の判定手段とを有する。
【００１０】
第１の記憶手段は、処理を単位処理を用いて記述した情報である処理実行計画情報と、単位処理を特定する情報と、処理の要求元を特定する情報と、当該単位処理の実行環境を特定する情報と、当該単位処理の負荷の値と有する第１の処理実行履歴情報とを記憶する。
【００１１】
第１の計測手段は、第１の実行手段により実行された単位処理それぞれの負荷を計測し、計測の結果得られた負荷の値を、前記第１の処理実行履歴情報に書き込む。
第１の実行手段は、第１の判定手段又は第２の判定手段に指定された単位処理を、第１の実行環境において実行する。
【００１２】
第１の実行手段は、前記処理実行計画情報に含まれる各単位処理を前記第１の実行環境又は前記第２の実行環境のどちらで行うかを、前記第１の処理実行履歴情報に含まれる負荷の値に基づいて判定し、この判定の結果に基づいて各単位処理を前記第１の実行手段又は第２の実行手段のいずれかに実行させる。
【００１３】
第２の記憶手段は、前記処理実行計画情報と同一の情報と、単位処理を特定する情報と、処理の要求元を特定する情報と、当該単位処理の実行環境を特定する情報と、当該単位処理の負荷の値と有する第２の処理実行履歴情報とを記憶する。
【００１４】
第２の計測手段は、第２の実行手段によって実行された単位処理それぞれの負荷を計測し、計測の結果得られた負荷の値を、前記第２の処理実行履歴情報に書き込む。
第２の実行手段は、前記第１の判定手段又は第２の判定手段に指定された単位処理を、第２の実行環境において実行する。
【００１５】
第２の判定手段は、処理実行計画情報に含まれる各単位処理を前記第１の実行環境及び前記第２の実行環境のどちらで行うかを、前記第２の処理実行履歴情報に含まれる負荷の値に基づいて判定し、この判定の結果に基づいて、各単位処理を前記第１の実行手段及び前記第２の実行手段のいずれかに実行させる。
【００１６】
上記ウェブアプリケーションシステムにおいて、前記第１の判定手段は、前記第１の処理実行履歴情報に含まれる負荷の値を参照して、前記第１の実行環境における当該単位処理の負荷の値と、前記第２の実行環境における当該単位処理の負荷の値と通信にかかる負荷の合計値を比較して、当該単位処理を前記第１の実行手段及び前記第２の実行手段のいずれに実行させるかを判定し、前記第２の判定手段は、前記第２の処理実行履歴情報に含まれる負荷の値を参照して、前記第１の実行環境における当該単位処理の負荷の値及び通信にかかる負荷の合計と、前記第２の実行環境における当該単位処理の負荷の値を比較して、当該単位処理を前記第１の実行手段及び前記第２の実行手段のいずれに実行させるかを判定するようにしてもよい。
【００１７】
また、上記ウェブアプリケーションシステムは、端末装置の種類又は種別を特定する情報である端末種別情報を送信する第１の管理手段と、前記端末種別情報に基づいて、前記第２の処理実行履歴情報から、前記実行環境を特定する情報として前記端末種別情報に対応する情報が格納されているレコード、及び前記実行環境を特定する情報としてサーバを示す情報が格納されているレコードを抽出し、抽出したレコードからなる第３の処理実行履歴情報を生成し、これを前記第１の管理手段に送信する第２の管理手段とをさらに有し、前記第１の管理手段は、前記第３の処理実行履歴情報を、新たな第２の処理実行履歴情報として前記第１の記憶手段に記憶させるようにしてもよい。
【００１８】
さらにまた、上記ウェブアプリケーションシステムにおいて、前記第１の管理手段は、前記第１の処理実行履歴情報を前記第２の管理手段に送信し、前記第２の管理手段は、受信した前記第１の処理実行履歴情報に基づいて、前記第２の処理実行履歴情報を更新するようにしてもよい。
【００１９】
さらにまた、上記ウェブアプリケーションシステムにおいて、前記第１の記憶手段は、前記処理実行計画情報に記述された単位処理を特定する情報と、前記第１の実行手段が実行する単位処理を特定する情報とを対応付けて記述した情報である処理対応表情報をさらに記憶し、前記第２の記憶手段は、前記処理実行計画情報に記述された単位処理を特定する情報と、前記第２の実行手段が実行する単位処理を特定する情報とを対応付けて記述した情報である処理対応表情報をさらに記憶するようにしてもよい。
【図面の簡単な説明】
【００２０】
【図１】本実施の形態にかかるウェブアプリケーションシステムの構成例を示すブロック図
【図２】実施の形態に係るサーバの構成例を示す機能ブロック図
【図３】サーバ側処理実行履歴記憶部に記憶される処理実行履歴情報のデータ構成例を示す図
【図４】図３に示した処理実行履歴情報から生成した、端末装置側処理実行履歴情報のデータ構成例を示す図
【図５】単位処理１、及び単位処理３から単位処理６までの５つの単位処理からなる処理の流れ（処理実行計画）の例を示す図
【図６】図５に示した処理の流れを記述した処理実行計画情報のデータ構成例を示した図
【図７】処理対応表情報のデータ構成例を示した図
【図８】実施の形態に係る端末装置の構成例を示す機能ブロック図
【図９】ウェブアプリケーションシステムにおける初期化処理の例を示したシーケンス図
【図１０】処理実行計画情報のデータ例を示す
【図１１】単位処理１から単位処理４の負荷を計測した場合に得られると仮定した負荷の値を格納した処理実行履歴情報を示す図
【図１２】端末装置側処理対応表記憶部に記憶されている処理対応表情報を示す図
【図１３】サーバ側処理対応表記憶部に記憶されている処理対応表情報を示す図
【図１４】ウェブアプリケーションシステムにおける端末装置起点での処理実行計画の実行動作の例を示したシーケンス図
【図１５】図１４に続く、ウェブアプリケーションシステムにおける端末装置起点での処理実行計画の実行動作の例を示したシーケンス図
【図１６】初期化処理開始前の、端末装置側処理実行履歴記憶部に記憶されている端末装置側処理実行履歴情報、及びサーバ側処理実行履歴記憶部に記憶されているサーバ側処理実行履歴情報のデータ例を示す図
【図１７】ステップS101からステップS103まで終了した時点における端末装置側処理実行履歴情報及びサーバ側処理実行履歴情報のデータ例を示す図
【図１８】図１７に示した状態の後、ステップS201からステップS205まで終了した時点における、端末装置側処理実行履歴情報及びサーバ側処理実行履歴情報のデータ例を示す図
【図１９】端末装置側処理実行履歴情報、及びサーバ側処理実行履歴情報のデータ例を示す図
【図２０】端末装置側処理実行履歴情報、及びサーバ側処理実行履歴情報のデータ例を示す図
【図２１】端末装置側処理実行履歴情報、及びサーバ側処理実行履歴情報のデータ例を示す図
【図２２】端末装置側処理実行履歴情報、及びサーバ側処理実行履歴情報のデータ例を示す図
【図２３】端末装置側処理分配部及びサーバ側処理分配部の主たる動作である処理分配処理の一例を示したフローチャート
【図２４】図２３に続くフローチャート
【図２５】端末装置側管理部の主たる動作の一つである端末装置側通信時間計測処理の一例を示したフローチャート
【図２６】端末装置側通信時間計測要求受信時処理の一例を示したフローチャート
【図２７】サーバ側通信時間計測処理の一例を示したフローチャート
【図２８】サーバ側通信時間計測要求受信時処理の一例を示したフローチャート
【発明を実施するための形態】
【００２１】
以下、図面を参照して本発明の実施の形態に係るウェブアプリケーションシステムを説明する。
［０．用語の定義］
本明細書中で使用する用語の定義を述べる。
【００２２】
［０．１．ウェブアプリケーション］
「ウェブアプリケーション」とは、ウェブブラウザ上で動作するアプリケーションをいう。また「ウェブアプリケーションシステム」とは、ウェブアプリケーションを実行するシステムをいう。
【００２３】
［０．２．サーバ］
「サーバ」とは、ウェブアプリケーションを動作させるための環境（ハードウェア）をいう。
【００２４】
［０．３．端末装置］
「端末装置」とは、サーバで動作しているウェブアプリケーションをロードし、実行する環境（ハードウェア）をいう。
【００２５】
［０．４．GUI部品］
「GUI部品」とは、ウェブアプリケーションのGUI（Graphical User Interface）を構成している部品をいう。
【００２６】
［０．５．データソース］
「データソース」とは、データを保持している装置をいう。
【００２７】
［０．６．画面遷移型ウェブアプリケーション］
「画面遷移型ウェブアプリケーション」とは、URL（Uniform Resource Locator）の変更を伴うウェブアプリケーションをいう。
【００２８】
［０．７．非画面遷移型ウェブアプリケーション］
「非画面遷移型ウェブアプリケーション」とは、URLの変更を伴わないウェブアプリケーションをいう。
【００２９】
［１．実施の形態］
［１．１．構成例］
本発明の実施の形態の一つは、ウェブアプリケーションシステムとして提案される。このウェブアプリケーションシステムは、端末装置とサーバの両者において実行可能な処理を、負荷に応じ端末装置又はサーバに動的に割り振りながら、ウェブアプリケーションを実行するシステムである。
【００３０】
図１に本実施の形態にかかるウェブアプリケーションシステムの構成例を示すブロック図を示す。このウェブアプリケーションシステム１は、サーバ１０と端末装置２０を有する。端末装置２０は，同一機器、同一機種、同一仕様モデル等でなくともよい。サーバ１０はネットワーク３０に接続されている。端末装置２０のそれぞれは、ネットワーク３０に接続されている、若しくは接続可能である。サーバ１０と各端末装置２０はネットワーク３０を経由して相互にデータの送受信を行うことができる。
【００３１】
［１．１．１．サーバ］
サーバ１０は、ウェブアプリケーションを実行する環境を提供する装置である。サーバ１０は、例えばコンピュータ、ワークステーションなどの情報処理装置によって実現される装置であって、この情報処理装置は、演算処理装置（ＣＰＵ）、主メモリ（ＲＡＭ）、読み出し専用メモリ（ROM）、入出力装置（Ｉ／Ｏ）、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。なお、サーバ１０は本実施の形態の第２の実行環境に相当する。
【００３２】
本発明の実施の形態に係るサーバ１０の構成例について説明する。図２は、本実施の形態に係るサーバ１０の構成例を示す機能ブロック図である。なお、機能ブロック図中に示す構成要素は、サーバ１０の機能を機能ごとにまとめてブロックとして捉えたものであり、ウェブアプリケーションシステムが各構成要素に対応する基板、装置、回路、部品などの物理的構成要素を備えていなければならないことを意味するわけではない。また、「接続」とは、データ、情報、命令などの送信及び／又は受信、受け取り、受け渡しなどが可能な状態になっていることをいい、互いに配線で連結されているような物理的な接続に限られる意味ではない。本明細書中の他の構成要素の機能ブロック図の説明についても同様である。
【００３３】
サーバ１０は、サーバ側通信部１０１と、サーバ側管理部１０２と、サーバ側処理分配部１０３と、サーバ側負荷計測部１０４と、サーバ側処理実行部１０５と、データ操作機能部１０６と、データソース部１０７と、サーバ側処理実行履歴記憶部１０８と、サーバ側処理実行計画記憶部１０９と、サーバ側処理対応表記憶部１１０とを有する。
【００３４】
サーバ側通信部１０１はネットワーク３０に接続されている。サーバ側管理部１０２はサーバ側通信部１０１、サーバ側処理実行履歴記憶部１０８に接続されている。サーバ側処理分配部１０３はサーバ側管理部１０２に接続されていると共に、サーバ側処理実行履歴記憶部１０８、サーバ側処理実行計画記憶部１０９、サーバ側処理対応表記憶部１１０に接続されている。サーバ側負荷計測部１０４はサーバ側処理分配部１０３に接続されている。サーバ側処理実行部１０５はサーバ側処理分配部１０３に接続されている。データ操作機能部１０６はデータソース部１０７に接続されている。サーバ側負荷計測部１０４は、サーバ側処理実行履歴記憶部１０８及びサーバ側処理実行部１０５と接続されている。
【００３５】
［１．１．１．１．サーバ側通信部］
サーバ側通信部１０１は、ネットワーク３０を経由して端末装置２０サーバ１０間のデータ送受信を行う機能を有する。サーバ側通信部１０１は、例えばネットワークアダプタ、LANボードなどで実現される。
【００３６】
［１．１．１．２．サーバ側管理部］
サーバ側管理部１０２は、サーバ１０における各部各処理の実行の制御を行う機能を有する。サーバ側管理部１０２は、本実施の形態の第２の管理手段に相当する。
【００３７】
［１．１．１．３．サーバ側処理分配部］
サーバ側処理分配部１０３は、処理実行計画情報に含まれる各単位処理を端末装置２０とサーバ１０のどちらで行うかを判定し、この判定結果に基づいて各単位処理を端末装置２０又はサーバ１０で実行させる機能を有する。サーバ側処理分配部１０３は、本実施の形態の第２の判定手段に相当する。
【００３８】
［１．１．１．４．サーバ側処理実行履歴記憶部］
サーバ側処理実行履歴記憶部１０８は、処理実行履歴情報を記憶する機能を有する。サーバ側処理実行履歴記憶部１０８は、本実施の形態の第２の記憶手段に相当する。
【００３９】
図３に、サーバ側処理実行履歴記憶部１０８に記憶される処理実行履歴情報のデータ構成例を示す。処理実行履歴情報５００Ｓは、単位処理ごとに、一つのレコード５１０を有するデータであって、各レコード５１０は対応する単位処理を特定する情報（例えば、処理名）を格納するフィールド５２１、処理の要求元を特定する情報を格納するフィールド５２２、当該単位処理の実行場所を特定する情報を格納するフィールド５２３、当該単位処理の負荷の値を格納するフィールド５２４を有している。
【００４０】
［１．１．１．５．サーバ側処理実行計画記憶部］
サーバ側処理実行計画記憶部１０９は、本システム１で実行される処理全体を小さな処理（「単位処理」）の連結を用いて記述した情報である処理実行計画情報を記憶する機能を有する。本実施の形態の第２の記憶手段に相当する。
【００４１】
図５に、単位処理１、及び単位処理３から単位処理６までの５つの単位処理からなる処理の流れ（処理実行計画）の例を示す。この処理は、単位処理１を起点として、その後順に単位処理３、単位処理４、単位処理５に進み、単位処理５で処理を終了する。また、単位処理３の実行後、単位処理６も実行される。なお、単位処理１及び単位処理５は端末装置２０でのみ実行され、単位処理４及び単位処理６はサーバ１０のみで実行され、単位処理３は端末装置２０及びサーバ１０のいずれでも実行可能な単位処理であるものとする。
【００４２】
図６は、図５に示した処理の流れを記述した処理実行計画情報のデータ構成例を示した図である。処理実行計画情報６００は、一つの単位処理について一つのレコード６１０を有するデータである。各レコード６１０は、対応する単位処理を特定する情報（例えば、処理名）を格納するフィールド６２１、当該単位処理の次に実行する単位処理を特定する情報（例えば、処理名）を格納するフィールド６２２、当該単位処理の実行場所を特定する情報を格納するフィールド６２３を有している。
【００４３】
［１．１．１．６．サーバ側処理対応表記憶部］
サーバ側処理対応表記憶部１１０は、処理実行計画情報に記述された単位処理を特定する情報と、実際に実行する単位処理を特定する情報とを対応付けて記述した情報である処理対応表情報を記憶する機能を有する。サーバ側処理対応表記憶部１１０は、本実施の形態の第２の記憶手段に相当する。
【００４４】
サーバ側処理分配部１０３は、処理の要求元（例：端末装置、サーバ）に応じて実際に実行する処理を切り替える。処理対応表情報に存在しない場合は、要求された処理名をそのまま使用して、サーバ側処理実行部１０５に該当する単位処理の実行を命令する。
【００４５】
図７は、処理対応表情報のデータ構成例を示した図である。処理対応表情報７００は、一つの単位処理について一つのレコード７１０を有するデータである。各レコード７１０は、対応する単位処理を特定する情報（例えば、処理名）を格納するフィールド７２１、当該単位処理の要求元を特定する情報（例えば、端末装置かサーバ化を区別する値、文字列）を格納するフィールド７２２、及び実際に実行する単位処理を特定する情報を格納するフィールド７２３を有している。
【００４６】
［１．１．１．７．サーバ側負荷計測部］
サーバ側負荷計測部１０４は、サーバ１０において実行された単位処理それぞれの負荷を計測し、計測の結果得られた負荷の値を、サーバ側処理実行履歴記憶部１０８に記憶されている処理実行履歴情報に書き込む機能を有する。サーバ側負荷計測部１０４は、本実施の形態の第２の計測手段に相当する。
【００４７】
［１．１．１．８．サーバ側処理実行部］
サーバ側処理実行部１０５は、サーバ側処理分配部１０３がサーバ１０で実行すると判定した単位処理を実行する機能を有する。サーバ側処理実行部１０５は、本実施の形態の第２の実行手段に相当する。
【００４８】
サーバ側処理実行部１０５は、その実行環境をサーバ１０とする単位処理１１１、及びその実行環境をサーバ１０と端末装置２０の双方とする単位処理１１１を全て有している。なお、サーバ１０と端末装置２０の双方とする単位処理１１１は、サーバ１０側と端末装置２０側では別の単位処理を特定する情報（例えば、処理名）が与えられており、処理実行計画情報での単位処理を特定する情報と、サーバ１０側での単位処理を特定する情報及びサーバ１０側での単位処理を特定する情報は、処理対応表情報によって対応付けされている。例えば、処理実行計画情報において「処理３」と記述された単位処理について、処理対応表情報は、処理３に対応するサーバ１０側で実行される単位処理の処理名は「単位処理３S」であり、単位処理３に対応する端末装置２０側で実行される単位処理の処理名は「単位処理３T」であると記述する。
【００４９】
［１．１．１．９．データ操作機能部］
データ操作機能部１０６は、データソース部１０７に格納されたデータソース（データベース）を操作するための機能を有する。データ操作機能部１０６は、例えばDBMS（database management system）である。
【００５０】
［１．１．１．１０．データソース部］
データソース部１０７は、データの集合を記憶し、ウェブアプリケーションで使用するデータを格納する機能を有する。
【００５１】
［１．１．２．端末装置］
端末装置２０は、サーバ１０で動作するウェブアプリケーションをロードし実行する環境を提供する装置である。端末装置２０は、コンピュータ、携帯電話器、タブレットＰＣ、スマートフォン、業務用通信端末などの情報処理装置によって実現される装置であって、情報処理装置は、演算処理装置（ＣＰＵ）、主メモリ（ＲＡＭ）、読み出し専用メモリ（ROM）、入出力装置（Ｉ／Ｏ）、及び必要な場合にはハードディスク装置等の外部記憶装置を具備している装置である。端末装置１０は、本実施の形態の第１の実行環境に相当する。
本発明の実施の形態に係る端末装置２０の構成例について説明する。図８は、本実施の形態に係る端末装置２０の構成例を示す機能ブロック図である。
【００５２】
端末装置２０は、端末装置側通信部２０１と、端末装置側管理部２０２と、端末装置側処理分配部２０３と、端末装置側負荷計測部２０４と、端末装置側処理実行部２０５と、ＧＵＩ部品操作機能部２０６と、ＧＵＩ部品部２０７と、端末装置側処理実行履歴記憶部２０８と、端末装置側処理実行計画記憶部２０９と、端末装置側処理対応表記憶部２１０とを有する。
【００５３】
端末装置側通信部２０１はネットワーク３０に接続されているか、ネットワーク３０と接続可能である。端末装置側管理部２０２は端末装置側通信部２０１、端末装置側処理実行履歴記憶部２０８に接続されている。端末装置側処理分配部２０３は端末装置側管理部２０２に接続されていると共に、端末装置側処理実行履歴記憶部２０８、端末装置側処理実行計画記憶部２０９、端末装置側処理対応表記憶部２１０に接続されている。端末装置側負荷計測部２０４は端末装置側処理分配部２０３、端末装置側処理実行履歴記憶部２０８、端末装置側処理実行部２０５に接続されている。端末装置側処理実行部２０５は端末装置側処理分配部２０３に接続されている。ＧＵＩ部品操作機能部２０６はＧＵＩ部品部２０７に接続されている。
【００５４】
［１．１．２．１．端末装置側通信部］
端末装置側通信部２０１は、ネットワーク３０を経由して端末装置２０とサーバ１０間のデータ送受信を行う機能を有する。端末装置側通信部２０１は、例えば無線LANボード、ネットワークアダプタなどで実現される。
【００５５】
［１．１．２．２．端末装置側管理部］
端末装置側管理部２０２は、端末装置２０における各部各処理の実行の制御を行う機能を有する。端末装置側管理部２０２は、本実施の形態の第１の管理手段に相当する。
【００５６】
［１．１．２．３．端末装置側処理分配部］
端末装置側処理分配部２０３は、処理実行計画情報に含まれる各単位処理を端末装置２０とサーバ１０のどちらで行うかを判定し、この判定結果に基づいて各単位処理を端末装置２０又はサーバ１０で実行させる機能を有する。端末装置側処理分配部２０３は、本実施の形態の第１の判定手段に相当する。
【００５７】
［１．１．２．４．端末装置側処理実行履歴記憶部］
端末装置側処理実行履歴記憶部２０８は、処理実行履歴情報を記憶する機能を有する。処理実行履歴情報は、サーバ側処理実行履歴記憶部１０８によって記憶される処理実行履歴情報と同一のデータ構成を有している。端末装置側処理実行履歴記憶部２０８は、本実施の形態の第１の記憶手段に相当する。
【００５８】
端末装置側処理実行履歴記憶部２０８に記憶される処理実行履歴情報（「端末装置側処理実行履歴情報」と呼ぶ）は、後述する初期化処理時に、サーバ側処理実行履歴記憶部１０８に記憶されている処理実行履歴情報（「サーバ側処理実行履歴情報」と呼ぶ）から、実行場所が当該端末装置２０の端末種別と同じであるレコード５１０、又は実行場所がサーバ１０であるレコード５１０のみを取り出し、これら取り出したレコード５１０からなるデータを端末装置側処理実行履歴情報として記憶する。
【００５９】
図４に、図３に示した処理実行履歴情報５００Ｓから生成した、端末装置側処理実行履歴情報のデータ構成例を示す。端末装置側処理実行履歴情報５００Ｔは、処理実行履歴情報５００Ｓと同様に、単位処理ごとに、一つのレコード５１０を有するデータであって、各レコード５１０は対応する単位処理を特定する情報（例えば、単位処理名）を格納するフィールド５２１、処理の要求元を特定する情報を格納するフィールド５２２、当該単位処理の実行場所を特定する情報を格納するフィールド５２３、当該単位処理の負荷の値を格納するフィールド５２４を有している。
【００６０】
［１．１．２．５．端末装置側処理実行計画記憶部］
端末装置側処理実行計画記憶部２０９は、本システム１で実行される処理を小さな処理（「単位処理」）の連結によって記述した情報である処理実行計画情報を記憶する機能を有する。端末装置側処理実行計画記憶部２０９は、本実施の形態の第１の記憶手段に相当する。
この処理実行計画情報は、サーバ側処理実行計画記憶部１０９で記憶される処理実行計画情報と同様のデータ構成を有するデータである。
【００６１】
［１．１．２．６．端末装置側処理対応表記憶部］
端末装置側処理対応表記憶部２１０は、処理実行計画情報に記述された単位処理を特定する情報と、実際に実行する単位処理を特定する情報とを対応付けて記述した情報である処理対応表情報を記憶する機能を有する。端末装置側処理対応表記憶部２１０は、本実施の形態の第１の記憶手段に相当する。この処理対応表情報は、前述したサーバ側処理対応表記憶部１１０で記憶される処理対応表情報と同様のデータ構成を有するデータである。
【００６２】
［１．１．２．７．端末装置側負荷計測部］
端末装置側負荷計測部２０４は、サーバ１０において実行された単位処理それぞれの負荷を計測し、計測の結果得られた負荷の値を、端末装置側処理実行計画記憶部２０９で記憶されている処理実行履歴情報に書き込む機能を有する。端末装置側負荷計測部２０４は、本実施の形態の第１の計測手段に相当する。
【００６３】
［１．１．２．８．端末装置側処理実行部］
端末装置側処理実行部２０５は、端末装置側処理分配部２０３が端末装置２０で実行すると判定した単位処理を実行する機能を有する。端末装置側処理実行部２０５は、本実施の形態の第１の計測手段に相当する。
【００６４】
端末装置側処理実行部２０５は、その実行環境を端末装置２０とする単位処理１１１、及びその実行環境をサーバ１０と端末装置２０の双方とする単位処理１１１を全て有している。なお、実行環境をサーバ１０と端末装置２０の双方とする単位処理１１１は、サーバ１０側と端末装置２０側では別の単位処理を特定する情報（例えば、処理名）が与えられており、処理実行計画情報での単位処理を特定する情報と、サーバ１０側での単位処理を特定する情報及びサーバ１０側での単位処理を特定する情報は、処理対応表情報によって対応付けされている。
【００６５】
［１．１．２．９．ＧＵＩ部品部］
ＧＵＩ部品部２０７は、ウェブアプリケーションのGUI（Graphical User Interface）を構成している部品として機能する。
【００６６】
［１．１．２．１０．ＧＵＩ部品操作機能部］
ＧＵＩ部品操作機能部２０６は、ＧＵＩ部品部２０７によって提供されるGUI部品を操作する機能を提供する。
【００６７】
［１．２．動作例］
［１．２．１．システム全体の動作例］
本実施の形態に係るウェブアプリケーションシステム１全体の動作を説明する。図９にウェブアプリケーションシステム１における初期化処理の例を示したシーケンス図を掲げる。また、図１０に、上記初期化処理開始時点において端末装置側処理実行計画記憶部２０９及びサーバ側処理実行計画記憶部１０９に記憶されている処理実行計画情報６００のデータ例を示す。図１０に示す処理実行計画情報６００は、単位処理１、単位処理３、単位処理４を順に実行することを内容とする処理実行計画を記述している。単位処理１、単位処理４は「端末装置」で実行可能な処理であることが記述されており、単位処理３はサーバ及び端末装置の双方で実行可能な処理であることが記述されている。
【００６８】
また、ウェブアプリケーションシステム１において、各単位処理の負荷を端末装置２０若しくはサーバ１０にて計測した場合に得られる負荷の値を図１１に示すように仮定する。図１１は単位処理１から単位処理４の負荷を計測した場合に得られると仮定した負荷の値を格納した処理実行履歴情報を示す図である。
【００６９】
さらにまた、図１２に、端末装置側処理対応表記憶部２１０に記憶されている処理対応表情報７００Ｔを示し、図１３に、サーバ側処理対応表記憶部１１０に記憶されている処理対応表情報７００Ｓを示す。なお、処理対応表情報７００Ｓは、いずれの単位処理のレコードも有していない。
【００７０】
［１．２．１．初期化処理］
図９を参照しながら、ウェブアプリケーションシステム１の初期化処理の動作を説明する。この「初期化処理」は、端末装置２０とサーバ１０の間で、処理実行履歴情報を一致させるための処理である。
【００７１】
初期化処理において、端末装置２０が電源投入などにより起動すると、端末装置２０、より詳しくは端末装置側管理部２０２は、サーバ１０、より詳しくはサーバ側管理部１０２に端末種別情報を送信する（S101）。端末種別情報は、当該端末装置２０の機種などを特定する情報である。
【００７２】
サーバ１０、より詳しくはサーバ側管理部１０２は、上記端末種別情報を元にして、サーバ側処理実行履歴記憶部１０８に記憶されている処理実行履歴情報から、当該端末装置２０に使用させるための処理実行履歴情報を生成する（S102）。当該端末装置２０に使用させるための処理実行履歴情報とは、実行場所（実行環境と同義、以下同じ）を格納するフィールド５２３に当該端末装置２０に対応する種別情報が格納されているレコード５１０、及び実行場所を格納するフィールド５２３にサーバを示す情報が格納されているレコード５１０のみを含むように書き換えられた処理実行履歴情報である。サーバ１０、より詳しくはサーバ側管理部１０２は、ステップS102で生成した処理実行履歴情報を当該端末装置２０に送信する（S103）。
以上で初期化処理は終了する。
【００７３】
［１．２．２．端末装置起点での処理実行］
図１４及び図１５を参照しながら、ウェブアプリケーションシステム１における端末装置２０から処理実行要求が発せられた場合の処理実行計画実行の動作を説明する。図１４は、ウェブアプリケーションシステム１における端末装置起点での処理実行計画の実行動作の例を示したシーケンス図であり、図１５は、図１４に続くシーケンス図である。
【００７４】
まず、端末装置２０、より詳しくは端末装置側管理部２０２はユーザからの処理実行要求入力を受け付ける（S201）。処理実行要求入力は、例えばアイコンのタップ、アプリの起動などである。
【００７５】
処理実行要求入力を受け付けた端末装置２０、より詳しくは端末装置側管理部２０２は、端末装置側処理分配部２０３に処理実行要求を渡す（S202）。この処理実行要求には、実行環境を指定する情報、処理要求元を示す情報、通信負荷を示す情報が付加されているものとする。
【００７６】
処理実行要求を受け取った端末装置側処理分配部２０３は、上記の実行環境を指定する情報、処理要求元を示す情報、通信負荷を示す情報、及び端末装置側処理実行計画記憶部２０９に記憶されている処理実行計画情報、端末装置側処理実行履歴記憶部２０８処理実行履歴情報から、処理負荷の推定値を算出する（S203）。
【００７７】
次に端末装置側処理分配部２０３は、ステップS203において算出した処理負荷の推定値に基づいて、処理実行計画情報に含まれる複数の一連の単位処理の内、どこまでの単位処理を当該端末装置２０において実行するかを決定する（S204）。なお、このステップS204で決定した単位処理の範囲を「端末側処理範囲」と呼ぶ。
【００７８】
次に端末装置側処理分配部２０３は、上記の端末側処理範囲に含まれる単位処理のそれぞれを処理実行計画情報に記述された順番通りに実行する（S205）。但し、端末装置側処理分配部２０３は、単位処理の実行に際して端末装置側処理対応表記憶部２１０に記憶されている処理対応表情報を読み取り、処理実行計画情報に記述された処理（例えば、単位処理４）に対応する単位処理であって、処理対応表情報に記述された単位処理（単位処理４Ａ）を実行する。
【００７９】
ステップS205の実行に合わせて、端末装置側負荷計測部２０４は、上記の端末側処理範囲に含まれる単位処理のそれぞれの負荷を計測する（S206）。端末装置側負荷計測部２０４は、上記計測の結果得られた負荷の値を、端末装置側処理実行履歴記憶部２０８に記憶されている処理実行履歴情報に書き込む（S207）。
【００８０】
次に端末装置側処理分配部２０３は、上記処理実行計画における端末側処理範囲以降の単位処理の実行をサーバ１０に要求する旨の命令を端末装置側管理部２０２に渡す（S208）。この命令を受け取った端末装置側管理部２０２は上記処理実行計画における端末側処理範囲以降の単位処理の実行を要求する実行要求メッセージをサーバ１０、より詳しくはサーバ側管理部１０２に送信する（S209）。
【００８１】
また、端末装置側管理部２０２は端末装置側処理実行履歴記憶部２０８に記憶されている処理実行履歴情報を読み出し、この処理実行履歴情報をサーバ１０、より詳しくはサーバ側管理部１０２に送信する（S210）。
【００８２】
処理実行履歴情報を受信したサーバ側管理部１０２は、サーバ側処理実行履歴記憶部１０８に記憶されている処理実行履歴情報を、ステップS210で端末装置２０から受信した処理実行履歴情報に置き換える(更新する)（S211）。
【００８３】
サーバ側管理部１０２は、ステップS209において送信された実行要求メッセージにおいて指定された単位処理(複数の場合あり)を実行するように、サーバ側処理分配部１０３に要求する（S212）。
【００８４】
上記単位処理の実行を要求されたサーバ側処理分配部１０３は、サーバ側処理実行計画記憶部１０９に記憶されている処理実行計画情報、及びサーバ側処理実行履歴記憶部１０８に記憶されている処理実行履歴情報に基づいて、実行要求メッセージにおいて指定された単位処理それぞれの処理負荷の推定値を算出する（S213）。
【００８５】
サーバ側処理分配部１０３は、上記推定値に基づいて、処理実行計画情報に含まれる単位処理の内、どこまでの単位処理をサーバ１０で実行するかを決定する（S214）。このステップS214で決定した単位処理の範囲を「サーバ側処理範囲」と呼ぶ。
サーバ側処理分配部１０３は、ステップS214において決定したサーバ側処理範囲に含まれる単位処理（複数この場合あり）を順次実行する（S215）。
【００８６】
サーバ側処理範囲に含まれる単位処理の実行完了後、サーバ側処理分配部１０３は、上記処理実行計画におけるサーバ側処理範囲以降の単位処理の実行を要求する命令をサーバ側管理部１０２に渡す（S216）。この命令を受け取ったサーバ側管理部１０２は上記処理実行計画におけるサーバ側処理範囲以降の単位処理の実行を要求する実行要求メッセージを端末装置２０、より詳しくは端末装置側管理部２０２に送信する（S217）。
【００８７】
また、サーバ側管理部１０２は、サーバ側処理実行履歴記憶部１０８に記憶されている処理実行履歴情報の内、「実行場所」が当該端末装置２０の端末種別と一致する行のデータ、或いは「実行場所」がサーバ１０と一致するレコード（行）のデータを取り出し、これらレコード（行）のデータを処理実行履歴情報として端末装置側管理部２０２に送信する（S218）。
【００８８】
この後端末装置側管理部２０２は、前述のステップS202に戻り、ステップS202以降の処理を続行していく。
ウェブアプリケーションシステム１は、処理実行計画に含まれる全ての単位処理の実行を完了すると、端末側起点の動作である処理実行計画処理を終了する。
以上で端末装置起点での処理実行の説明を終了する。
【００８９】
［具体例］
上記初期化処理及び端末装置起点の処理実行の具体例を示す。
図１６に、初期化処理開始前の、端末装置側処理実行履歴記憶部２０８に記憶されている処理実行履歴情報（区別のため「端末装置側処理実行履歴情報５００Ｔ」とする）、及びサーバ側処理実行履歴記憶部１０８に記憶されている処理実行履歴情報（区別のため「サーバ側処理実行履歴情報５００Ｓ」とする）のデータ例を示す。図１６中（Ａ）が端末装置側処理実行履歴情報５００Ｔであり、（Ｂ）がサーバ側処理実行履歴情報５００Ｓである。初期化処理開始前において、端末装置側処理実行履歴情報５００Ｔ及びサーバ側処理実行履歴情報５００Ｓ共に空の状態である。
【００９０】
図１６に示した状態の後、ステップS101からステップS103まで終了した時点における端末装置側処理実行履歴情報５００Ｔ及びサーバ側処理実行履歴情報５００Ｓのデータ例を図１７に示す。サーバ側処理実行履歴情報５００Ｓが空のままのため、端末装置側処理実行履歴情報５００Ｔも空である。
【００９１】
図１７に示した状態の後、ステップS201からステップS205まで終了した時点における、端末装置側処理実行履歴情報５００Ｔ及びサーバ側処理実行履歴情報５００Ｓのデータ例を図１８に示す。図１８に示す端末装置側処理実行履歴情報５００Ｔには、端末装置側負荷計測部２０４によって計測された負荷の値が格納されている。なお、この値は図１１に示したデータによるものである。サーバ側処理実行履歴情報５００Ｓは、この時点では空のままである。
【００９２】
ステップS201からステップS205において、端末装置側管理部２０２から単位処理１の処理要求を受けた端末装置側処理分配部２０３は、単位処理１を端末装置２０で実行するか、サーバ１０に実行させるかを端末装置側処理実行履歴情報５００Ｔに基づいて判定する。単位処理１の負荷の値は、端末装置２０で実行した場合の負荷の値は「１４」、サーバ１０で実行した場合の負荷の値は「０」であるため、通信（負荷の値は２０と計測されているとする）を考慮した上で、端末装置２０での単位処理１の実行を選択し、端末装置側処理実行部２０５に単位処理１の実行を命令し、端末装置側処理実行部２０５は単位処理１を実行する。これで単位処理１の実行は終了したため、端末装置側処理分配部２０３は端末装置側管理部２０２に単位処理１の処理要求を送信しない。
【００９３】
次に、端末装置側管理部２０２から単位処理３の処理要求を受けた端末装置側処理分配部２０３は、単位処理３を端末装置２０で実行するか、サーバ１０に実行させるかを端末装置側処理実行履歴情報５００Ｔに基づいて判定する。単位処理３の負荷の値は、端末装置２０で実行した場合の負荷の値は「１００」、サーバ１０で実行した場合の負荷の値は「０」であるため、通信（負荷の値は２０と計測されているとする）を考慮した上で、サーバ１０での単位処理３の実行を選択し、単位処理３の実行をサーバ１０に要求するよう端末装置側管理部２０２に命令する。このとき、端末装置側管理部２０２は図１８に示した端末装置側処理実行履歴情報５００Ｔをサーバ１０に送信する。
【００９４】
上記端末装置側処理実行履歴情報５００Ｔを受信したサーバ１０、より詳しくはサーバ側処理分配部１０３は、サーバ側処理実行履歴記憶部１０８に記憶されているサーバ側処理実行履歴情報５００Ｓを、端末装置側処理実行履歴情報５００Ｔを取り込むように更新する。
【００９５】
次にサーバ１０、より詳しくはサーバ側処理分配部１０３は、単位処理３を端末装置２０に実行させるかサーバ１０で実行するかを、サーバ側処理実行履歴情報５００Ｓに基づいて判定する。単位処理３の負荷の値は、端末装置２０で実行した場合の負荷の値は「１００」、サーバ１０で実行した場合の負荷の値は「０」であるため、通信（負荷の値は２０と計測されているとする）を考慮した上で、サーバ１０での単位処理３の実行を選択し、単位処理３の実行をサーバ１０に要求するよう端末装置側管理部２０２に命令する。
【００９６】
端末装置側管理部２０２から受信した単位処理３の実行要求に応じて、単位処理３の実行をサーバ側処理実行部１０５に命令し、サーバ側処理実行部１０５は単位処理３を実行する。サーバ側負荷計測部１０４は単位処理３の負荷の値を計測し、サーバ側処理実行履歴情報５００Ｓに計測した負荷の値を書込む。その結果、処理名を「処理３」とし、要求元を「端末」とし、実行場所を「サーバ」とし、負荷を「１０」とするレコードがサーバ側処理実行履歴情報５００Ｓに追加される。この状態での端末装置側処理実行履歴情報５００Ｔ、及びサーバ側処理実行履歴情報５００Ｓのデータ例を図１９に示す。
【００９７】
次に、サーバ側処理分配部１０３は、単位処理４の実行環境は端末装置２０のみなので、単位処理４の実行を端末装置２０に要求するようサーバ側管理部１０２に命令する。サーバ側管理部１０２は端末装置２０、より詳しくは端末装置側管理部２０２に単位処理４の実行要求メッセージを送信する。
【００９８】
このとき、サーバ側管理部１０２は図１９に示したサーバ側処理実行履歴情報５００Ｓから端末装置用の処理実行履歴情報を生成し、端末装置用の処理実行履歴情報この端末装置２０、より詳しく端末装置側管理部２０２に送信する。
【００９９】
上記端末装置用の処理実行履歴情報を受信した端末装置２０、より詳しく端末装置側管理部２０２は上記処理実行履歴情報に基づいて、端末装置側処理実行履歴記憶部２０８に記憶されている端末装置側処理実行履歴情報５００Ｔの内容を更新する。
【０１００】
また、端末装置２０、より詳しく端末装置側管理部２０２は、サーバ１０からの単位処理４の実行要求に基づいて、端末装置側処理分配部２０３に単位処理４の実行要求を渡す。端末装置側処理分配部２０３は単位処理４の実行を端末装置側処理実行部２０５に要求し、端末装置側処理実行部２０５は単位処理４を実行する。端末装置側負荷計測部２０４は、単位処理４の負荷の値（サーバ１０が要求元で、実行環境が端末装置である場合の負荷）を計測し、計測結果を受け取った端末装置側処理分配部２０３はこの負荷の値を端末装置側処理実行履歴情報５００Ｔに書き加える。図２０に、この時点での端末装置側処理実行履歴情報５００Ｔ、及びサーバ側処理実行履歴情報５００Ｓのデータ例を示す。
この後、端末装置２０は、単位処理１、単位処理３、単位処理４からなる処理実行計画をさらに実行するものとして説明を続ける。
【０１０１】
端末装置側管理部２０２は、単位処理１の実行を端末装置側処理分配部２０３に要求すると、端末装置側処理分配部２０３は、単位処理１を端末装置側処理実行部２０５に実行させる。
【０１０２】
次に、端末装置側処理分配部２０３は、図２０に示す端末装置側処理実行履歴情報５００Ｔの内容に基づいて、単位処理３を端末装置２０で実行するかサーバ１０に実行させるかを判定する。端末装置側処理実行履歴情報５００Ｔは、単位処理３の負荷の値について、端末装置２０で実行した場合の負荷の値は「１００」、サーバ１０で実行した場合の負荷の値は「１０」であることを記述しているため、端末装置側処理分配部２０３は、通信（負荷の値は２０と計測されているとする）を考慮した上で、より負荷の値の少ないサーバ１０での単位処理３の実行を選択し、単位処理３の実行をサーバ１０に要求するよう端末装置側管理部２０２に命令する。このとき、端末装置側管理部２０２は図２０に示した端末装置側処理実行履歴情報５００Ｔをサーバ１０に送信する。
【０１０３】
図２０に示した端末装置側処理実行履歴情報５００Ｔを受信したサーバ１０、より詳しくはサーバ側管理部１０２は、サーバ側処理実行履歴記憶部１０８に記憶されているサーバ側処理実行履歴情報５００Ｓを、上記端末装置側処理実行履歴情報５００Ｔを取り込むように更新する。この時点での端末装置側処理実行履歴情報５００Ｔ、及びサーバ側処理実行履歴情報５００Ｓのデータ例を図２１に示す。
【０１０４】
次にサーバ１０、より詳しくはサーバ側管理部１０２は、端末装置側管理部２０２から受信した単位処理３の実行要求に応じて、単位処理３の実行をサーバ側処理分配部１０３に命令する。サーバ側処理分配部１０３は、図２１に示すサーバ側処理実行履歴情報５００Ｓの内容に基づいて、単位処理３を端末装置２０に実行させるか、サーバ１０で実行するかを判定する。サーバ側処理実行履歴情報５００Ｓは単位処理３の負荷の値は、端末装置２０で実行した場合の負荷の値は「１００」、サーバ１０で実行した場合の負荷の値は「１０」であることを記述しているため、端末装置側処理分配部２０３は、通信（負荷の値は２０と計測されているとする）を考慮した上で、より負荷の値の少ないサーバ１０での単位処理３の実行を選択し、単位処理３の実行をサーバ側処理実行部１０５に命令し、サーバ側処理実行部１０５は単位処理３を実行する。サーバ側負荷計測部１０４は単位処理３の負荷の値を計測し、サーバ側処理実行履歴情報５００Ｓに計測した負荷の値を書込む。
【０１０５】
次に、サーバ側処理分配部１０３は、単位処理４の実行環境は端末装置２０のみなので、単位処理４の実行を端末装置２０に要求するようサーバ側管理部１０２に命令する。サーバ側管理部１０２は端末装置２０、より詳しくは端末装置側管理部２０２に単位処理４の実行要求を送信する。
【０１０６】
このとき、サーバ側管理部１０２は図２１に示した端末装置側処理実行履歴情報５００Ｔから端末装置用に生成した処理実行履歴情報を端末装置２０、より詳しく端末装置側管理部２０２に送信する。
【０１０７】
上記処理実行履歴情報を受信した端末装置２０、より詳しく端末装置側管理部２０２は上記処理実行履歴情報に基づいて、端末装置側処理実行履歴記憶部２０８に記憶されている端末装置側処理実行履歴情報５００Ｔの内容を更新する。
【０１０８】
また、端末装置２０、より詳しく端末装置側管理部２０２は、サーバ１０からの単位処理４の実行要求に基づいて、端末装置側処理分配部２０３に単位処理４の実行要求を渡す。端末装置側処理分配部２０３は単位処理４の実行を端末装置側処理実行部２０５に要求し、端末装置側処理実行部２０５は単位処理４を実行する。端末装置側負荷計測部２０４は、単位処理４の負荷の値（サーバ１０が要求元で、実行環境が端末装置である場合の負荷）を計測し、計測結果を受け取った端末装置側処理分配部２０３はこの負荷の値を端末装置側処理実行履歴情報５００Ｔに書き加える。図２２に、この時点での端末装置側処理実行履歴情報５００Ｔ、及びサーバ側処理実行履歴情報５００Ｓのデータ例を示す。
以上で具体例の説明を終了する。
【０１０９】
［１．２．２．２．端末装置側処理分配部及びサーバ側処理分配部の動作例］
次に端末装置側処理分配部２０３及びサーバ側処理分配部１０３の動作を説明する。図２３に、端末装置側処理分配部２０３及びサーバ側処理分配部１０３の主たる動作（「処理分配処理」と呼ぶ）の一例を示したフローチャートを掲げ、図２４に、図２３に続くフローチャートを掲げる。なお、以下の説明では「端末装置側処理分配部」による処理分配処理として説明する。
処理分配処理において、端末装置側処理分配部２０３は端末装置側処理実行計画記憶部２０９から、一つの処理実行計画情報を読み出す（S301）。
【０１１０】
次に端末装置側処理分配部２０３は、前記ステップS301において読み出した処理実行計画情報に記述されている一連の単位処理の内、当該単位処理の実行環境として自らの実行環境を含まない単位処理であって、当該一連の単位処理の内最初に実行されるもの（「単位処理Ａ」と呼ぶ）を抽出する（S302）。
【０１１１】
次に端末装置側処理分配部２０３は、上記条件を満たす単位処理Aが当該一連の単位処理に存在するか否かを判定する（S303）。ステップS303の判定において、上記条件を満たす単位処理Aが当該一連の単位処理に存在すると判定した場合（S303,Yes）、端末装置側処理分配部２０３は、前記一連の単位処理の内、いずれか二つの単位処理（単位処理Ｂ，単位処理Ｃと呼称）を選択する（S304）。ただし、単位処理Ｃは単位処理Ｂと同じかそれよりも後で実行される単位処理でなければならず、単位処理Ｂの実行から単位処理Ｃの実行までにおける負荷の合計量（負荷量ＢＣと呼称）が、単位処理Ｂの実行から単位処理Ｃの実行をもう一方の実行環境にて実行としたときの負荷の合計量（負荷量ＢＣ）より小さくなければならない。
【０１１２】
次に端末装置側処理分配部２０３は、前記一連の単位処理を全て自らの環境で実行した場合の負荷の合計量（負荷量Ｓと呼称）を算出する（S305）。
次に端末装置側処理分配部２０３は、前記負荷量Ｓは前記負荷量ＢＣ以下であるか否かを判定する（S306）。
【０１１３】
ステップS306において、前記負荷量Ｓは前記負荷量ＢＣ以下であると判定した場合（S306, Yes）、端末装置側処理分配部２０３は、前記一連の単位処理のそれぞれを、自らの実行環境で順番に実行させる（S307）。但し、最初の単位処理については、処理の要求元は渡された処理の要求元とし、以降の処理については自らの実行環境とする。また、実際に実行される単位処理は、処理要求元と処理対応表から決定されたものとする。
【０１１４】
次に端末装置側処理分配部２０３は、ステップS307において実行された各単位処理の負荷の値を元に、端末装置側処理実行履歴記憶部２０８に記憶されている処理実行履歴情報を更新する（書き換える）（S308）。
以上で端末装置側処理分配部２０３は、当該処理実行計画情報についての処理分配処理を終了する。
【０１１５】
前述したステップS303に戻り、処理分配処理の説明を続ける。ステップS303において、上記条件を満たす単位処理Aが当該一連の単位処理に存在しないと判定した場合（S303,No）、端末装置側処理分配部２０３は、前記一連の単位処理の内いずれか一つの単位処理（単位処理Ｄと呼ぶ）を選択する（S309）。但し、単位処理Ｄは、単位処理Ａと同じかそれよりも先に処理される単位処理であって、前記一連の単位処理における単位処理Ｄ以降の単位処理群をもう一方の実行環境で実行したときの負荷の合計量が最小であるものとする。なおここでの負荷の合計量の計算では単位処理Ａまでの負荷しか考慮せず、単位処理Ａ以降の負荷は無視する。
【０１１６】
次に端末装置側処理分配部２０３は、前記一連の単位処理の内、前記単位処理Ｄより前までの各単位処理を実行する（S310）。ただし、実行する最初の単位処理については処理の要求元は渡された処理の要求元とし、以降の単位処理については自らの実行環境とする。また実際に実行される単位処理は処理要求元と処理対応表から決定されたものとする。
【０１１７】
次に端末装置側処理分配部２０３は、ステップS310において実行された各単位処理の負荷の値を元に、端末装置側処理実行履歴記憶部２０８に記憶されている処理実行履歴情報を更新する（書き換える）（S311）。
【０１１８】
次に端末装置側処理分配部２０３は、単位処理Ｄの実行を端末装置側管理部２０２に要求する（S312）。その後、端末装置側処理分配部２０３は当該処理実行計画情報についての処理分配処理を終了する。
【０１１９】
前述したステップS306に戻り、処理分配処理の説明を続ける。ステップS306において、前記負荷量Ｓは前記負荷量ＢＣ以下ではないと判定した場合（S306, No）、端末装置側処理分配部２０３は、前記単位処理Ｂを単位処理Ｄとして定義しなおす（S313）。なお、単位処理Ｄは前述のステップS309で述べた条件に合致する単位処理である。ステップS313の後、端末装置側処理分配部２０３は前述のステップS310に進み、処理分配処理を続行する。
【０１２０】
以上で処理分配処理の説明を終了する。なお、上記の説明では、端末装置側処理分配部２０３の動作として処理分配処理を説明したが、上記説明を端末装置側処理分配部２０３をサーバ側処理分配部１０３と読み替え、端末装置側管理部２０２をサーバ側管理部１０２と読み替え、端末装置側処理実行計画記憶部２０９をサーバ側処理実行計画記憶部１０９と読み替えることにより、サーバ側処理分配部１０３における処理分配処理の説明となる。
【０１２１】
［１．２．２．２．端末装置側管理部の動作例］
以下に、端末装置側管理部２０２の動作を説明する。
［１．２．２．２．１．端末装置側通信時間計測処理］
端末装置側管理部２０２が実行する処理の一つである端末装置側通信時間計測処理を説明する。図２５に、端末装置側管理部２０２の主たる動作の一つである端末装置側通信時間計測処理の一例を示したフローチャートを掲げる。
【０１２２】
端末装置側通信時間計測処理において、端末装置側管理部２０２はサーバ側管理部１０２に通信時間計測要求メッセージをネットワーク３０を経由して送信する（S401）。次に、端末装置側管理部２０２は、上記通信時間計測要求メッセージに応答してサーバ側管理部１０２からネットワークを経由して返信されてくる応答メッセージを受信し、この応答メッセージの受信時刻を元に通信時間を算出し、算出した通信時間を記憶する（S402）。以上で端末装置側管理部２０２は端末装置側通信時間計測処理を終了する。なお、端末装置側通信時間計測処理は、いつ行われてもよいが、例えば前述のステップS101の実行をトリガとして行うようにしてもよいし、所定のタイミング、例えば端末装置２０の電源投入時や所定時間の経過ごとに行うようにしてもよい。
【０１２３】
［１．２．２．２．２．端末装置側通信時間計測要求受信時処理］
端末装置側管理部２０２が実行する処理の一つである端末装置側通信時間計測要求受信時処理を説明する。図２６に、端末装置側管理部２０２の主たる動作の一つである端末装置側通信時間計測要求受信時処理の一例を示したフローチャートを掲げる。端末装置側通信時間計測要求受信時処理は、端末装置２０がサーバ１０から通信時間計測要求メッセージを受信した場合に、端末装置２０が実行する処理である。
【０１２４】
端末装置側通信時間計測要求受信時処理において、端末装置側管理部２０２は、通信時間計測要求メッセージを受信した旨を伝えるメッセージである応答メッセージを生成し、これをサーバ側管理部１０２にネットワークを経由して送信する（S501）。以上で端末装置側管理部２０２は端末装置側通信時間計測要求受信時処理を終了する。
【０１２５】
［１．２．２．３．サーバ側管理部の動作例］
次にサーバ側管理部１０２の動作を説明する。
［１．２．２．３．１．サーバ側通信時間計測処理］
サーバ側管理部１０２が実行する処理の一つであるサーバ側通信時間計測処理を説明する。図２７に、サーバ側管理部１０２の主たる動作の一つであるサーバ側通信時間計測処理の一例を示したフローチャートを掲げる。
【０１２６】
サーバ側通信時間計測処理において、サーバ側管理部１０２は端末装置側管理部２０２に通信時間計測要求メッセージをネットワーク３０を経由して送信する（S601）。次に、サーバ側管理部１０２は、上記通信時間計測要求メッセージに応答して端末装置側管理部２０２からネットワーク３０を経由して返信される応答メッセージを受信し、この応答メッセージの受信時刻を元に通信時間を算出し、算出した通信時間を記憶する（S602）。以上でサーバ側管理部１０２はサーバ側通信時間計測処理を終了する。なお、サーバ側通信時間計測処理は、いつ行われてもよいが、所定のタイミング、所定時間の到来するごとに行うようにしてもよい。
【０１２７】
［１．２．２．３．２．サーバ側通信時間計測要求受信時処理］
図２８に、サーバ側管理部１０２の主たる動作の一つであるサーバ側通信時間計測要求受信時処理の一例を示したフローチャートを掲げる。サーバ側通信時間計測要求受信時処理は、サーバ１０が端末装置２０から通信時間計測要求メッセージを受信した場合に、サーバ１０が実行する処理である。
【０１２８】
サーバ側通信時間計測要求受信時処理において、サーバ側管理部１０２は、通信時間計測要求メッセージを受信した旨を伝えるメッセージである応答メッセージを生成し、これを端末装置側管理部２０２にネットワーク３０を経由して送信する（S701）。以上でサーバ側管理部１０２はサーバ側通信時間計測要求受信時処理を終了する。
【０１２９】
［４．利点］
端末装置２０とサーバ１０の両者において実行可能な単位処理を、それぞれの実行環境で実行した場合の負荷の量に応じて、端末装置２０又はサーバ１０のいずれかに動的に割り振り、実行させることが可能となる。
【０１３０】
また、本実施の形態によれば、サーバ１０及び端末装置２０は処理実行履歴情報５００を蓄積していくため、端末装置側処理分配部２０３及びサーバ側処理分配部１０３による単位処理実行場所決定の方法によって、適切な分配方法に収束させることが可能となる。
【０１３１】
処理の流れ（処理３をサーバにて実行するかどうか）によって、処理を自動的に切り替えることができる（例えば、処理３を端末装置２０で実行した場合は処理４A、処理３をサーバ１０で実行した場合は処理４B）。
【０１３２】
［５．まとめ、その他］
以上、本発明の実施の形態を説明したが、本発明はこれらに限定されるものではなく、発明の趣旨を逸脱しない範囲内において、種々の変更、追加、組み合わせ等が可能である。
【符号の説明】
【０１３３】
１…ウェブアプリケーションシステム；   １０…サーバ；  ２０…端末装置；  ３０…ネットワーク；  １０２…サーバ側管理部；  １０３…サーバ側処理分配部；  １０４…サーバ側負荷計測部；  １０５…サーバ側処理時実行部；  ２０２…端末装置側管理部；  ２０３…端末装置側処理分配部；  ２０４…端末装置側負荷計測部；  ２０５…端末装置側処理実行部
【図１】
2016024700.tif 000003
【図２】
2016024700.tif 000004
【図３】
2016024700.tif 000005
【図４】
2016024700.tif 000006
【図５】
2016024700.tif 000007
【図６】
2016024700.tif 000008
【図７】
2016024700.tif 000009
【図８】
2016024700.tif 000010
【図９】
2016024700.tif 000011
【図１０】
2016024700.tif 000012
【図１１】
2016024700.tif 000013
【図１２】
2016024700.tif 000014
【図１３】
2016024700.tif 000015
【図１４】
2016024700.tif 000016
【図１５】
2016024700.tif 000017
【図１６】
2016024700.tif 000018
【図１７】
2016024700.tif 000019
【図１８】
2016024700.tif 000020
【図１９】
2016024700.tif 000021
【図２０】
2016024700.tif 000022
【図２１】
2016024700.tif 000023
【図２２】
2016024700.tif 000024
【図２３】
2016024700.tif 000025
【図２４】
2016024700.tif 000026
【図２５】
2016024700.tif 000027
【図２６】
2016024700.tif 000028
【図２７】
2016024700.tif 000029
【図２８】
2016024700.tif 000030