(57)【要約】【課題】低性能な端末でも安定した品質でＡＰを実行すること。【解決手段】本実施形態に係るアプリケーション実行システムは、ＤＢ６０、制御装置１００、端末２００ａ，２００ｂ，２００ｃ、ＡＰ提供装置３００を備える。アプリケーション実行システムの制御装置１００は、ＡＰを実行する端末２００から取得する実行環境情報とＤＢ６０とを基にして、判断基準データを生成し、判断基準データを端末２００に送信する。端末２００は、判断基準データを基にして、自端末２００で実行した方が処理時間の短くなるスレッドに関しては、自端末２００で実行し、他の端末２００で実行した方が処理時間の短くなるスレッドに関しては、他の端末２００にスレッドの処理を委譲する。【選択図】図１
2014010497.tif 000002
【特許請求の範囲】
【請求項１】
複数の端末と、制御装置と、記憶装置とを備えたアプリケーション実行システムであって、
前記記憶装置は、アプリケーションに含まれるスレッドを実行する端末の実行環境と、前記スレッドの処理内容と、前記スレッドの処理時間とを対応付けて記憶し、
前記制御装置は、
アプリケーションを実行する端末の実行環境と前記記憶装置とを基にして、前記アプリケーションを実行する端末の実行環境に対応する、実行環境と処理内容と処理時間とを対応付けた情報と、他の端末の実行環境と処理内容と処理時間とを対応づけた情報とを含む判断基準データを生成し、生成した判断基準データを、前記アプリケーションを実行する端末に送信する判断基準データ生成部と、
前記アプリケーションのスレッドを実行した端末から、前記スレッドを実行した端末の実行環境と前記スレッドの処理内容と前記スレッドの処理時間とを対応付けた実行結果を受信し、受信した実行結果を前記記憶装置に登録する登録部と
を備え、
前記端末は、
アプリケーションの各スレッドの処理内容および前記判断基準データを基にして、スレッド毎に、自端末がスレッドを実行した場合の処理時間と、他の端末がスレッドを実行した場合の処理時間とを判定する処理時間判定部と、
前記処理時間判定部による自端末のスレッドの処理時間と他の端末のスレッドの処理時間とを比較して、自端末の方が他の端末よりもスレッドの処理時間が短くなるスレッドを、自端末が実行し、他の端末の方が自端末よりもスレッドの処理時間が短くなるスレッドを、他の端末に委譲すると判定する実行端末判定部と、
前記実行端末判定部により、自端末が実行すると判定されたスレッドを実行し、自端末の実行環境と、実行したスレッドの処理内容と、実行したスレッドの処理時間とを対応付けた実行結果を、前記制御装置に出力する実行部と、
前記実行端末判定部により、他の端末が実行すると判定されたスレッドの情報を、他の端末に出力することで、スレッドの処理を他の端末に委譲し、他の端末に委譲したスレッドの処理結果を取得する委譲部と
を有することを特徴とするアプリケーション実行システム。
【請求項２】
前記他の端末は、前記端末からスレッドの情報を受信した場合に、受信したスレッドを実行し、自端末の実行環境と、実行したスレッドの処理内容と、実行したスレッドの処理時間とを対応付けた実行結果を、前記制御装置に出力すると共に、スレッドの処理結果を前記端末に出力する応答部を有することを特徴とする請求項１に記載のアプリケーション実行システム。
【請求項３】
複数の端末と、制御装置と、記憶装置とを備えたアプリケーション実行システムで実行されるアプリケーション実行方法であって、
前記制御装置は、
アプリケーションに含まれるスレッドを実行する端末の実行環境と、前記スレッドの処理内容と、前記スレッドの処理時間とを対応付けて記憶した記憶装置と、アプリケーションを実行する端末の実行環境とを基にして、前記アプリケーションを実行する端末の実行環境に対応する、実行環境と処理内容と処理時間とを対応付けた情報と、他の端末の実行環境と処理内容と処理時間とを対応づけた情報とを含む判断基準データを生成し、生成した判断基準データを、前記アプリケーションを実行する端末に送信する判断基準データ工程と、
前記アプリケーションのスレッドを実行した端末から、前記スレッドを実行した端末の実行環境と前記スレッドの処理内容と前記スレッドの処理時間とを対応付けた実行結果を受信し、受信した実行結果を前記記憶装置に登録する登録工程とを含み、
前記端末は、
アプリケーションの各スレッドの処理内容および前記判断基準データを基にして、スレッド毎に、自端末がスレッドを実行した場合の処理時間と、他の端末がスレッドを実行した場合の処理時間とを判定する処理時間判定工程と、
前記処理時間判定工程による自端末のスレッドの処理時間と他の端末のスレッドの処理時間とを比較して、自端末の方が他の端末よりもスレッドの処理時間が短くなるスレッドを、自端末が実行し、他の端末の方が自端末よりもスレッドの処理時間が短くなるスレッドを、他の端末に委譲すると判定する実行端末判定工程と、
前記実行端末判定工程により、自端末が実行すると判定されたスレッドを実行し、自端末の実行環境と、実行したスレッドの処理内容と、実行したスレッドの処理時間とを対応付けた実行結果を、前記制御装置に出力する実行工程と、
前記実行端末判定工程により、他の端末が実行すると判定されたスレッドの処理を、他の端末に委譲し、他の端末に委譲したスレッドの処理結果を取得する委譲工程
を含んだことを特徴とするアプリケーション実行方法。
【請求項４】
アプリケーションに含まれるスレッドを実行する端末の実行環境と、前記スレッドの処理内容と、前記スレッドの処理時間とを対応付けて記憶した記憶装置と、アプリケーションを実行する端末装置の実行環境とを基にして、前記アプリケーションを実行する端末の実行環境に対応する、実行環境と処理内容と処理時間とを対応付けた情報と、他の端末の実行環境と処理内容と処理時間とを対応づけた情報とを含む判断基準データを生成し、生成した判断基準データを、前記アプリケーションを実行する端末に送信することで、前記端末に実行対象となるスレッドを判定させる判断基準データ生成部と、
前記アプリケーションのスレッドを実行した端末から、前記スレッドを実行した端末の実行環境と前記スレッドの処理内容と前記スレッドの処理時間とを対応付けた実行結果を受信し、受信した実行結果を前記記憶装置に登録する登録部と
を有することを特徴とする制御装置。
【請求項５】
アプリケーションに含まれるスレッドを実行する端末の実行環境と、前記スレッドの処理内容と、前記スレッドの処理時間とを対応付けて記憶した記憶装置と、アプリケーションを実行する端末装置の実行環境とを基にして、前記アプリケーションを実行する端末の実行環境に対応する、実行環境と処理内容と処理時間とを対応付けた情報と、他の端末の実行環境と処理内容と処理時間とを対応づけた情報とを含む判断基準データを生成し、生成した判断基準データを、前記アプリケーションを実行する端末に送信することで、前記端末に実行対象となるスレッドを判定させる判断基準データ生成ステップと、
前記アプリケーションのスレッドを実行した端末から、前記スレッドを実行した端末の実行環境と前記スレッドの処理内容と前記スレッドの処理時間とを対応付けた実行結果を受信し、受信した実行結果を前記記憶装置に登録する登録ステップと
をコンピュータに実行させるための制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーション実行システム等に関する。
【背景技術】
【０００２】
近年、コンテンツやアプリケーションプログラム（ＡＰ）等は、高機能化、複雑化し、通信環境や実行環境は多様化している。係るコンテンツやＡＰを実行するには、高性能な端末を利用することが望ましい。一般的な端末を利用すると、性能が追いつかず、端末側でコンテンツの表示や、ＡＰの処理の迅速な実行が困難になる。
【０００３】
このため、端末側で実行する処理を分割し、分割した複数の処理を端末のＷｅｂブラウザとサーバとの間で分担、連動させることにより、性能の低い端末であっても安定した品質で高速なブラウジングを可能とする技術が開示されている（例えば、非特許文献１、２等）。また、端末の性能、通信環境の状況に応じて、ＡＰの実行環境として、端末とサーバとをシームレスに切り替える技術も開示されている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Amazon（登録商標）Web  Services  EC2  ［online］、［平成２４年６月５日検索］、インターネット＜ＵＲＬ：http://aws.amazon.com/jp/＞
【非特許文献２】Amazon  Silk  Introducing  Amazon  Silk  ［online］、［平成２４年６月５日検索］、インターネット＜ＵＲＬ：http://amazonsilk.wordpress.com/2011/09/28/introducing-amazon-silk/＞
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上述した従来技術では、低性能な端末でも安定した品質でＡＰを実行することができないという問題があった。
【０００６】
例えば、従来技術では、インテリジェンスな処理の振り分けに十分対応することができず、事前に処理を各実行環境に振り分ける仕組みの実装を要する。
【０００７】
開示の技術は、上記に鑑みてなされたものであって、低性能な端末でも安定した品質でＡＰを実行することができるアプリケーション実行システム、アプリケーション実行方法、制御装置および制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るアプリケーション実行システムは、複数の端末と、制御装置と、記憶装置とを備える。記憶装置は、アプリケーションに含まれるスレッドを実行する端末の実行環境と、スレッドの処理内容と、スレッドの処理時間とを対応付けて記憶する。制御装置は、判断基準データ生成部と登録部とを有する。判断基準データ生成部は、アプリケーションを実行する端末の実行環境と記憶装置とを基にして、アプリケーションを実行する端末の実行環境に対応する、実行環境と処理内容と処理時間とを対応付けた情報と、他の端末の実行環境と処理内容と処理時間とを対応づけた情報とを含む判断基準データを生成し、生成した判断基準データを、アプリケーションを実行する端末に送信する。登録部は、アプリケーションのスレッドを実行した端末から、スレッドを実行した端末の実行環境とスレッドの処理内容とスレッドの処理時間とを対応付けた実行結果を受信し、受信した実行結果を記憶装置に登録する。端末は、処理時間判定部と、実行端末判定部と、実行部と、委譲部とを有する。処理時間判定部は、アプリケーションの各スレッドの処理内容および判断基準データを基にして、スレッド毎に、自端末がスレッドを実行した場合の処理時間と、他の端末がスレッドを実行した場合の処理時間とを判定する。実行端末判定部は、処理時間判定部による自端末および他の端末の各スレッドの処理時間を基にして、自端末の方が他の端末よりもスレッドの処理時間が短くなるスレッドを、自端末が実行し、他の端末の方が自端末よりもスレッドの処理時間が短くなるスレッドを、他の端末に委譲すると判定する。実行部は、実行端末判定部により、自端末が実行すると判定されたスレッドを実行し、自端末の実行環境と、実行したスレッドの処理内容と、実行したスレッドの処理時間とを対応付けた実行結果を、制御装置に出力する。委譲部は、実行端末判定部により、他の端末が実行すると判定されたスレッドの情報を、他の端末に出力することで、スレッドの処理を他の端末に委譲し、他の端末に委譲したスレッドの処理結果を取得する。
【発明の効果】
【０００９】
本発明に係るアプリケーション実行システムによれば、低性能な端末でも安定した品質でＡＰを実行することができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施形態に係るシステムの構成を示す図である。
【図２】図２は、本実施形態に係る制御装置およびＤＢの構成を示す機能ブロック図である。
【図３】図３は、実績管理テーブルのデータ構造の一例を示す図である。
【図４】図４は、端末管理テーブルのデータ構造の一例を示す図である。
【図５】図５は、判断基準データのデータ構造の一例を示す図である。
【図６】図６は、実行環境情報のデータ構造の一例を示す図である。
【図７】図７は、実行結果のデータ構造の一例を示す図である。
【図８】図８は、本実施形態に係る端末の構成を示す機能ブロック図である。
【図９】図９は、アプリケーションデータのデータ構造の一例を示す図である。
【図１０】図１０は、複雑度データのデータ構造の一例を示す図である。
【図１１】図１１は、本実施形態に係るシステムの処理手順を示すフローチャート（１）である。
【図１２】図１２は、本実施形態に係るシステムの処理手順を示すフローチャート（２）である。
【図１３】図１３は、制御装置と同様の機能を実現する制御プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本願の開示するアプリケーション実行システム、アプリケーション実行方法、制御装置および制御プログラムの実施形態を図面に基づいて詳細に説明する。なお、この実施形態によりこの発明が限定されるものではない。
【００１２】
（実施形態）
本実施形態にかかるアプリケーション実行システムの構成について説明する。図１は、本実施形態に係るアプリケーション実行システムの構成を示す図である。図１に示すように、このシステムは、端末２００ａ，２００ｂ，２００ｃと、制御装置１００と、ＤＢ（Database）６０と、ＡＰ提供装置３００とを有する。以下の説明において、端末２００ａ，２００ｂ，２００ｃをまとめて、適宜、端末２００と表記する。端末２００、制御装置１００、ＡＰ提供装置３００は、ネットワーク５０を介して相互に接続される。なお、ＤＢ６０も、ネットワーク５０に接続されていても良い。
【００１３】
ＤＢ６０は、アプリケーションソフト（ＡＰ）に含まれるスレッドを実行する端末２００の実行環境と、スレッドの処理内容と、スレッドの処理時間とを対応付けた実績管理テーブルを記憶する記憶装置である。
【００１４】
端末２００の実行環境、スレッドの処理内容、処理時間の一例について説明する。端末２００の実行環境は、端末が利用するＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）を一意に特定する情報である。スレッドの処理内容は、スレッドの複雑さの度合いを示す情報である。スレッドの処理時間は、スレッドの処理が開始されてから、終了するまでの端末２００の時間を示す。
【００１５】
制御装置１００は、ＡＰを実行する端末２００の実行環境とＤＢ６０とを基にして判断基準データを生成し、ＡＰを実行する端末２００に判断基準データを送信する。そして、制御装置１００は、ＡＰのスレッドを実行した端末２００から、端末２００の実行環境と処理内容と処理時間とを対応付けた実行結果を受信し、受信した実行結果をＤＢ６０に登録する。
【００１６】
判断基準データは、ＡＰを実行する端末２００の実行環境に対応する、実行環境と処理内容と処理時間とを対応付けた情報と、他の端末２００の実行環境と処理内容と処理時間とを対応付けた情報とを含む。判断基準データの詳細は後述する。
【００１７】
端末２００は、ＡＰの各スレッドの処理内容および判断基準データを基にして、自端末２００が実行するスレッドと、他の端末２００に委譲するスレッドとを判定する。端末２００は、自端末２００が実行すると判定したスレッドを実行し、自端末２００の実行環境と、実行したスレッドの処理内容と、実行したスレッドの処理時間とを対応付けた実行結果を、制御装置１００に出力する。また、端末２００は、他の端末２００が実行すると判定したスレッドの処理を、他の端末に委譲する。
【００１８】
ＡＰ提供装置３００は、アプリケ−ションを実行する端末２００に、アプリケーションの情報を通知する装置である。
【００１９】
次に、図１に示した制御装置１００およびＤＢ６０の構成の一例について説明する。図２は、本実施形態に係る制御装置およびＤＢの構成を示す機能ブロック図である。
【００２０】
図２に示すように、制御装置１００は、ＤＢ６０に接続されている。ＤＢ６０は、実績管理テーブル６０ａを記憶する。制御装置１００は、通信部１１０、入力部１２０、表示部１３０、記憶部１４０、制御部１５０を有する。
【００２１】
実績管理テーブル６０ａは、ＡＰに含まれるスレッドを実行する端末２００の実行環境に関する情報と、スレッドの処理内容に関する情報と、スレッドの処理時間とを対応付けて保持するテーブルである。図３は、実績管理テーブルのデータ構造の一例を示す図である。
【００２２】
図３に示すように、実績管理テーブル６０ａは、端末性能と、処理状況と、複雑度と、処理時間とを有する。このうち、端末性能および処理状況は、上記実行環境に対応するものである。端末性能は、ＣＰＵまたはＭＰＵの型番に対応する情報である。処理状況は、例えば、端末２００が、ＡＰのスレッドを通常実行したのか、バックグラウンドで実行したのかを区別する情報である。
【００２３】
複雑度は、上記スレッドの処理内容に対応するものである。複雑度は、スレッドの複雑さの度合いを示す情報である。複雑度の値が大きいほど、スレッドが複雑である。例えば、足し算を実行するスレッドと、かけ算を実行するスレッドとを比較すると、かけ算を実行するスレッドの方が複雑となる。このため、足し算を実行するスレッドよりも、かけ算を実行するスレッドの方が、複雑度の値が大きくなる。
【００２４】
処理時間は、スレッドの処理が開始されてから、終了するまでの端末２００の情報を示すものである。なお、図３の各処理時間は一例である。
【００２５】
図３の一段目について説明する。端末性能「ＣＰＵＡ−１」の端末２００が、複雑度「４」のスレッドを「通常実行」すると、処理時間は「１０」となる。
【００２６】
図２の説明に戻る。通信部１１０は、端末２００とデータ通信を実行する通信装置である。後述する制御部１５０は、係る通信部１１０を介して、端末２００とデータをやり取りする。
【００２７】
入力部１２０は、各種の情報を入力する入力装置である。例えば、入力部１２０は、キーボードやマウス、タッチパネル等に対応する。表示部１３０は、各種の情報を表示する表示装置である。例えば、表示部１３０は、ディスプレイや、タッチパネル等に対応する。
【００２８】
記憶部１４０は、端末管理テーブル１４１を記憶する記憶装置である。図４は、端末管理テーブルのデータ構造の一例を示す図である。図４に示すように、この端末管理テーブル１４１は、端末識別情報と端末性能とを対応付けて保持する。端末識別情報は、端末２００を一意に識別する情報である。例えば、端末識別情報「端末２００ａ」は、端末２００ａを示す。端末識別情報「端末２００ｂ」は、端末２００ｂを示す。端末識別情報「端末２００ｃ」は、端末２００ｃを示す。端末性能は、端末２００の端末性能に対応する。図４に示すように、端末２００ａの端末性能は、「ＣＰＵＡ−１」となる。
【００２９】
図２の説明に戻る。制御部１５０は、判断基準データ生成部１５１と、登録部１５２と、委譲処理部１５３とを有する。
【００３０】
判断基準データ生成部１５１は、ＡＰを実行する端末２００から実行環境情報を取得し、実行環境情報とＤＢ６０の実績管理テーブル６０ａとを基にして、判断基準データを生成する処理部である。図５は、判断基準データのデータ構造の一例を示す図である。判断基準データ７０のうち、７０Ａの情報は、ＡＰを実行する端末２００に関する判断基準データであり、７０Ｂ，７０Ｃの情報は、その他の端末２００に関する判断基準データである。
【００３１】
以下において、判断基準データ生成部１５１の処理を具体的に説明する。また、ＡＰを実行する端末２００を、便宜的に、端末２００ａとする。
【００３２】
判断基準データ生成部１５１は、端末２００ａから端末２００ａの実行環境情報を取得する。図６は、実行環境情報のデータ構造の一例を示す図である。図６に示すように、この実行環境情報は、端末識別情報、端末性能、処理状況等を含む。端末識別情報、端末性能、処理状況に関する説明は、上記のものと同様である。判断基準データ生成部１５１は、実行環境情報を基にして、端末管理テーブル１４１を更新しても良い。
【００３３】
判断基準データ生成部１５１は、実行環境情報の端末性能および処理状況の組みと、実績管理テーブル６０ａの端末性能および処理状況の組みとを比較し、一致するレコードを抽出する。また、判断基準データ生成部１５１は、実行環境情報の端末性能と、実績管理テーブル６０ａの端末性能とを比較し、一致するレコードを抽出する。判断基準データ生成部１５１は、実行環境情報を基に抽出したレコードを、図５の判断基準データ７０の７０Ａに設定する。
【００３４】
また、判断基準データ生成部１５１は、端末２００ｂ，２００ｃの端末性能を、端末管理テーブル１４１から取得し、取得した端末性能と実績管理テーブル６０ａの端末性能とを比較して、一致するレコードを抽出する。
【００３５】
判断基準データ生成部１５１は、端末２００ｂの端末性能と、実績管理テーブル６０ａの端末性能とを比較して、一致するレコードを抽出する。判断基準データ生成部１５１は、抽出したレコードを、図５の判断基準データ７０の７０Ｂに設定する。判断基準データ生成部１５１は、端末識別情報「端末２００ｂ」と、レコードとを対応付ける。
【００３６】
判断基準データ生成部１５１は、端末２００ｃの端末性能と、実績管理テーブル６０ａの端末性能とを比較して、一致するレコードを抽出する。判断基準データ生成部１５１は、抽出したレコードを、図６の判断基準データ７０の７０Ｃに設定する。判断基準データ生成部１５１は、端末識別情報「端末２００ｃ」と、レコードとを対応付ける。
【００３７】
判断基準データ生成部１５１は、生成した判断基準データを、ＡＰを実行する端末２００ａに送信する。ＡＰを実行する端末が端末２００ａの場合には、端末２００ａに、判断基準データを送信する。
【００３８】
登録部１５２は、ＡＰのスレッドを実行した端末２００から、実行結果を取得し、取得した実行結果によって、実績管理テーブル６０ａを更新する。図７は、実行結果のデータ構造の一例を示す図である。図７に示すように、この実行結果は、端末性能と、処理状況と、複雑度と、処理時間とを対応付けた情報である。端末２００が、複数のスレッドを実行した場合には、スレッド毎のレコードが、実行結果に含まれる。例えば、端末２００が、３つのスレッドを実行した場合には、図７に示すように、３つのレコードが実行結果に含まれる。
【００３９】
登録部１５２は、実行結果の各レコードについて、レコードを実績管理テーブル６０ａに登録するか否かを判定する。登録部１５２は、実行結果のレコードの端末性能、処理状況、複雑度の組みと同じ組が、実績管理テーブル６０ａに登録されていない場合には、該当レコードを、実績管理テーブル６０ａに登録する。これに対して、登録部１５２は、実行結果のレコードの端末性能、処理状況、複雑度の組みと同じ組が、実績管理テーブル６０ａに登録されている場合には、該当レコードを、実績管理テーブル６０ａに登録しない。
【００４０】
例えば、図７において、端末性能「ＣＰＵＡ−１」、処理状況「通常実行」、複雑度「８」の組み合わせが、実績管理テーブル６０ａに存在しない場合には、登録部１５２は、端末性能「ＣＰＵＡ−１」、処理状況「通常実行」、複雑度「８」、処理時間「２０」のレコードを、実績管理テーブル６０ａに登録する。これに対して、端末性能「ＣＰＵＡ−１」、処理状況「通常実行」、複雑度「８」の組み合わせが、実績管理テーブル６０ａに存在する場合には、登録部１５２は、端末性能「ＣＰＵＡ−１」、処理状況「通常実行」、複雑度「８」、処理時間「２０」のレコードを、実績管理テーブル６０ａに登録しない。
【００４１】
委譲処理部１５３は、端末２００から、委譲スレッド情報を受信した場合に、委譲先となる端末に、委譲スレッド情報を、送信する処理部である。委譲スレッド情報は、委譲対象となるスレッドの情報と、委譲元の端末識別情報と、委譲先となる端末識別情報が含まれている。
【００４２】
また、委譲処理部１５３は、委譲先の端末２００から、委譲スレッドの実行結果を取得した場合には、委譲スレッドの委譲元の端末２００に、委譲スレッドの実行結果を出力する。
【００４３】
次に、図１に示した端末２００の構成について説明する。図８は、本実施形態に係る端末の構成を示す機能ブロック図である。ここでは、一例として、端末２００ａの構成について説明する。端末２００ｂ，２００ｃの構成は、端末２００ａと同様である。
【００４４】
図８に示すように、この端末２００ａは、通信部２１０、入力部２２０、表示部２３０、記憶部２４０、制御部２５０を有する。
【００４５】
通信部２１０は、制御装置１００、他の端末２００ｂ，２００ｃとデータ通信を実行する通信装置である。後述する制御部２５０は、係る通信部２１０を介して、制御装置１００、他の端末２００ｂ，２００ｃとデータをやり取りする。
【００４６】
入力部２２０は、各種の情報を入力する入力装置である。例えば、入力部２２０は、キーボードやマウス、タッチパネル等に対応する。表示部２３０は、各種の情報を表示する表示装置である。例えば、表示部２３０は、ディスプレイや、タッチパネル等に対応する。
【００４７】
記憶部２４０は、アプリケーションデータ２４１、複雑度データ２４２、判断基準データ７０を記憶する記憶装置である。アプリケーションデータ２４１は、端末２００ａが、ＡＰ提供装置３００から取得するＡＰのデータである。図９は、アプリケーションデータのデータ構造の一例を示す図である。
【００４８】
図９に示すように、このアプリケーションデータ２４１は、複数のスレッドを含む。例えば、スレッドにはＵＲＬ（Uniform  Resource  Location）が含まれている。端末２００は、スレッドを実行する場合に、スレッドに含まれるＵＲＬを利用して、リンク先にアクセスし、スレッドの実際の処理を取得する。例えば、スレッドに含まれるＵＲＬのアクセス先は、ＡＰ提供装置３００となる。なお、スレッドにＵＲＬを含めることは一例であり、スレッドの実体を予めアプリケーションデータ２４１に含めておいても良い。
【００４９】
複雑度データ２４２は、アプリケーションデータ２４１の各スレッドの複雑度を有する情報である。図１０は、複雑度データのデータ構造の一例を示す図である。図１０に示すように、この複雑度データ２４２は、スレッド識別情報と、複雑度とを対応付ける。スレッド識別情報は、スレッドを一意に識別する情報である。
【００５０】
判断基準データ７０は、端末２００ａが、制御装置１００から取得する情報である。判断基準データ７０は、図５に示した判断基準データ７０に対応する。
【００５１】
制御部２５０は、取得部２５１、複雑度推定部２５２、実行環境取得部２５３、処理時間判定部２５４、実行端末判定部２５５、実行部２５６、委譲部２５７を有する。
【００５２】
取得部２５１は、ＡＰ提供装置３００から、アプリケーションデータを取得する処理部である。取得部２５１は、取得したアプリケーションデータを、記憶部２４０に記憶させる。
【００５３】
複雑度推定部２５２は、アプリケーションデータ２４１のスレッド毎の複雑度を推定し、複雑度データ２４２を生成する処理部である。例えば、複雑度推定部２５２は、スレッドに含まれるＵＲＬを利用して、スレッドの実体をＡＰ提供装置３００から取得する。複雑度推定部２５２は、スレッドの実体を走査して、スレッドに含まれる演算種別（加算、減算、乗算、除算）毎の個数や、行数などを計数する。複雑度推定部２５２は、計数結果を、推定関数に入力して、複雑度を算出する。係る推定関数は、加算、減算よりも乗算、除算の数が多いほど、また、スレッドの行数が多いほど、大きな値を出力する所定の関数である。
【００５４】
実行環境取得部２５３は、端末２００ａの実行環境を取得する処理部である。例えば、実行環境取得部２５３は、図示しない自端末２００ａのＣＰＵにアクセスし、ＣＰＵの型番を、端末性能として取得する。また、実行環境取得部２５３は、端末２００ａで動作するＯＳ（Operating  System）等にアクセスし、アプリケーションデータ２４１を通常実行するのか、バックグラウンドで実行するのかを受け付け、処理状況を判定する。
【００５５】
実行環境取得部２５３は、制御装置１００と端末２００ａとの接続が確立した場合には、実行環境情報を生成し、実行環境情報を制御装置１００に出力する。実行環境情報は、図６に示した実行環境情報に対応する。
【００５６】
処理時間判定部２５４は、制御装置１００から判断基準データを取得して、記憶部２４０に記憶させる。処理時間判定部２５４は、判断基準データ７０と、複雑度データ２４２とを基にして、スレッドを自端末２００ａが実行した場合の処理時間と、スレッドを他の端末２００ｂ，２００ｃが実行した場合の処理時間を判定する。処理時間判定部２５４は、判定結果を実行端末判定部２５５に出力する。
【００５７】
処理時間判定部２５４が、自端末２００ａの処理時間を判定する処理の一例について説明する。ここでは一例として、スレッド１に対する自端末２００ａの処理時間を判定する場合について説明する。図１０を参照すると、スレッド１の複雑度は「４」である。処理時間判定部２５４は、スレッド１の複雑度の値と、判断基準データ７０のテーブル７０Ａとを比較して、自端末がスレッドを実行した場合の処理時間を判定する。図５を参照すると、複雑度「４」に対応する処理時間は「１０」である。このため、処理時間判定部２５４は、自端末２００ａがスレッド１を実行した場合の処理時間を「１０」と判定する。処理時間判定部２５４は、他のスレッドについても同様に、自端末２００ａがスレッドを実行した場合の処理時間を判定する。
【００５８】
処理時間判定部２５４は、他の端末２００ｂの処理時間を判定する処理の一例について説明する。ここでは一例として、スレッド１に対する他の端末２００ｂの処理時間を判定する場合について説明する。図１０を参照すると、スレッド１の複雑度は「４」である。処理時間判定部２５４は、スレッド１の複雑度の値と、判断基準データ７０のテーブル７０Ｂとを比較して、端末２００ｂがスレッドを実行した場合の処理時間を判定する。図５を参照すると、複雑度「４」に対応する処理時間は「１１」である。このため、処理時間判定部２５４は、他の端末２００ｂがスレッド１を実行した場合の処理時間を「１１」と判定する。処理時間判定部２５４は、他のスレッドについても同様に、他の端末２００ｂがスレッドを実行した場合の処理時間を判定する。
【００５９】
処理時間判定部２５４は、他の端末２００ｃの処理時間を判定する処理の一例について説明する。ここでは一例として、スレッド１に対する他の端末２００ｃの処理時間を判定する場合について説明する。図１０を参照すると、スレッド１の複雑度は「４」である。処理時間判定部２５４は、スレッド１の複雑度の値と、判断基準データ７０のテーブル７０Ｃとを比較して、端末２００ｃがスレッドを実行した場合の処理時間を判定する。図５を参照すると、複雑度「４」に対応する処理時間は「１２」である。このため、処理時間判定部２５４は、他の端末２００ｃがスレッド１を実行した場合の処理時間を「１２」と判定する。処理時間判定部２５４は、他のスレッドについても同様に、他の端末２００ｃがスレッドを実行した場合の処理時間を判定する。
【００６０】
処理時間判定部２５４は、スレッド毎に、自端末２００ａの処理時間、他の端末２００ｂの処理時間、他の端末２００ｃの処理時間を対応付けた判定結果を生成し、判定結果を実行端末判定部２５５に出力する。
【００６１】
実行端末判定部２５５は、処理時間判定部２５４の判定結果を基にして、自端末２００ａが実行するスレッドと、他の端末２００ｂ，２００ｃに委譲するスレッドを判定する処理部である。実行端末判定部２５５は、スレッド毎に、各端末２００ａ，２００ｂ，２００ｃの処理時間を比較し、処理時間が最小となる端末に、スレッドを実行させると判定する。
【００６２】
例えば、上記のように、スレッド１に対する端末２００ａの処理時間が「１０」、端末２００ｂの処理時間が「１１」、端末２００ｃの処理時間が「１２」となる場合には、端末２００ａの処理時間が最小となる。このため、実行端末判定部２５５は、スレッド１の処理を自端末２００ａで実行すると判定する。実行端末判定部２５５は、自端末２００ａで実行すると判定したスレッド識別情報を、実行部２５６に出力する。
【００６３】
これに対して、例えば、スレッドｎに対する端末２００ａの処理時間が「２０」、端末２００ｂの処理時間が「１９」、端末２００ｃの処理時間が「２４」となる場合には、端末２００ｂの処理時間が最小となる。このため、実行端末判定部２５５は、端末識別情報と、スレッド識別情報との組みを、委譲部２５７に出力する。
【００６４】
このように、実行端末判定部２５５は、自端末２００ａが実行するスレッドのスレッド識別情報を、実行部２５６に出力する。また、他の端末２００ｂ，２００ｃが実行するスレッドについては、スレッド識別情報と、端末識別情報との組みを、委譲部２５７に出力する。
【００６５】
実行部２５６は、スレッドを実行する処理部である。実行部２５６は、実行端末判定部２５５から、スレッド識別情報を取得し、スレッド識別情報に対応するスレッドを、アプリケーションデータ２４１から取得する。実行部２５６は、スレッドに含まれるＵＲＬを利用して、スレッドの実体をＡＰ提供装置３００から取得し、処理を行う。そして、実行部２５６は、スレッドの実行結果を制御装置１００に送信する。実行結果のデータ構造は、図７に示したものに対応する。
【００６６】
なお、実行部２５６は、他の端末から委譲されたスレッドを実行する。例えば、実行部２５６は、制御装置１００から委譲スレッド情報を受信することで、スレッドの委譲を受け付ける。委譲スレッド情報には、委譲対象となるスレッドが含まれている。実行部２５６は、委譲されたスレッドに含まれるＵＲＬを利用して、スレッドの実体をＡＰ提供装置３００から取得し、処理を行う。そして、実行部２５６は、委譲スレッドの実行結果を制御装置１００に送信する。実行部２５６が生成する委譲スレッドの実行結果には、例えば、図７に示したものに加えて、委譲元の端末識別情報やスレッド処理結果が含まれている。
【００６７】
委譲部２５７は、スレッドの委譲を行う処理部である。委譲部２５７は、スレッド識別情報と、端末識別情報との組みを取得した場合には、スレッド識別情報に対応するスレッドを、アプリケーションデータ２４１から取得する。そして、委譲部２５７は、取得したスレッドと、端末識別情報と利用して、委譲スレッド情報を生成し、委譲スレッド情報を、制御装置１００に送信する。委譲スレッド情報には、委譲対象となるスレッドの情報と、委譲元の端末識別情報と、委譲先となる端末識別情報が含まれる。
【００６８】
委譲部２５７は、委譲スレッド情報を送信した後に、制御装置１００から、委譲スレッドの実行結果を取得し、取得した実行結果を、実行部２５６に出力する。上記の実行部２５６は、自身が実行したスレッドの処理結果と、委譲部２５７から取得したスレッドの処理結果とを結合して、アプリケーションデータ２４１の実行結果とする。
【００６９】
次に、本実施形態に係るシステムの処理手順について説明する。図１１および図１２は、本実施形態に係るシステムの処理手順を示すフローチャートである。図１１および図１２では一例として、端末２００ａがＡＰを実行するものとする。また、端末２００ａは、ＡＰに含まれるスレッドのうち、一部のスレッドを、端末２００ｂに委譲するものとする。
【００７０】
図１１について説明する。端末２００ａは、アプリケーションデータの要求をＡＰ提供装置３００に対して行い（ステップＳ１０１）、ＡＰ提供装置３００は、アプリケーションデータの要求を取得する（ステップＳ１０２）。ＡＰ提供装置３００は、端末２００ａにアプリケーションデータを送信し（ステップＳ１０３）、端末２００ａは、アプリケーションデータを取得する（ステップＳ１０４）。
【００７１】
端末２００ａおよび制御装置１００は、接続を確立する（ステップＳ１０５）。端末２００ａは、実行環境情報を制御装置１００に送信し（ステップＳ１０６）、制御装置１００は、実行環境情報を取得する（ステップＳ１０７）。
【００７２】
制御装置１００は、判断基準データを生成し（ステップＳ１０８）、生成した判断基準データを、端末２００ａに送信する（ステップＳ１０９）。端末２００ａは、判断基準データを取得し（ステップＳ１１０）、判断基準データを基にして、一部のスレッドの処理を他の端末２００ｂに委譲すると判定する（ステップＳ１１１）。端末２００ａは、委譲スレッド情報を制御装置１００に送信し（ステップＳ１１２）、制御装置１００は、委譲スレッド情報を取得する（ステップＳ１１３）。
【００７３】
図１２の説明に移行する。制御装置１００は、アプリケーションの委譲先を判定し（ステップＳ１１４）、委譲スレッド情報を端末２００ｂに送信する（ステップＳ１１５）。
【００７４】
端末２００ｂは、委譲スレッド情報を取得し（ステップＳ１１６）、委譲されたスレッドを実行する（ステップＳ１１７）。端末２００ｂは、実行結果を制御装置１００に送信する（ステップＳ１１８）。また、端末２００ａは、アプリケーションのスレッドを実行し（ステップＳ１１９）、実行結果を制御装置１００に送信する（ステップＳ１２０）。
【００７５】
制御装置１００は、端末２００ａおよび端末２００ｂから、スレッドの実行結果を取得し（ステップＳ１２１）、ＤＢ６０を更新する（ステップＳ１２２）。また、制御装置１００は、委譲先の実行結果を、端末２００ａに送信する（ステップＳ１２３）。例えば、図１１、１２に示す例では、スレッドの委譲先は、端末２００ｂとなる。
【００７６】
端末２００ａは、委譲先の実行結果を取得する（ステップＳ１２４）。端末２００ａは、自端末２００ａの実行結果と、委譲先の端末２００ｂの実行結果とを結合して、アプリケーションの実行を完了する（ステップＳ１２５）。
【００７７】
次に、本実施形態に係るアプリケーション実行システムの効果について説明する。本実施形態に係るアプリケーション実行システムの制御装置１００は、ＡＰを実行する端末２００から取得する実行環境情報とＤＢ６０とを基にして、判断基準データを生成し、判断基準データを端末２００に送信する。端末２００は、判断基準データを基にして、自端末２００で実行した方が処理時間の短くなるスレッドに関しては、自端末２００で実行し、他の端末２００で実行した方が処理時間の短くなるスレッドに関しては、他の端末２００にスレッドの処理を委譲する。このため、本実施形態に係るアプリケーション実行システムによれば、低性能な端末でも安定した品質でＡＰを実行することができる。
【００７８】
また、本実施形態に係るアプリケーション実行システムの制御装置１００は、各端末２００が実行したＡＰのスレッドの実行結果を取得して、実行結果をＤＢ６０に登録する。このため、本実施形態に係るアプリケーション実行システムによれば、各スレッドの実行結果をＤＢ６０にフィードバックさせることができる。また、これにより、判断基準データの内容を充実させることができ、端末２００は、スレッドの委譲先をより最適に判定することができる。
【００７９】
ところで、上記の実施形態に示した処理は一例であり、制御装置１００、端末２００の処理内容は上記の内容に限られるものではない。
【００８０】
図１に示したシステムの構成は一例である。例えば、図１に示した端末２００のうちいずれかをクライアントとし、端末２００のうちいずれかをサーバとして機能させることで、クライアントサーバモデルを構築しても良い。ここでは説明の便宜上、クライアントに対応する端末を端末２００ａとする。また、サーバに対応する端末を端末２００ｂとする。なお、その他にも、クライアントに対応する複数の端末やサーバに対応する複数の端末があっても良い。
【００８１】
クライアントに対応する端末２００ａについて説明する。端末２００ａは、ユーザの利用する端末であり、スレッドの処理の委譲元となり、スレッドの処理の委譲先とはならない。端末２００ａは、ＡＰを実行する場合に、上記の端末２００と同様にして、自端末で実行するスレッドと端末２００ｂに委譲するスレッドとを判定する。そして、端末２００ａは、委譲するスレッドの情報を、端末２００ｂに出力し、端末２００ｂのスレッドの処理結果を取得する。
【００８２】
サーバに対応する端末２００ｂについて説明する。端末２００ｂは、ユーザが利用しない端末であり、クライアントに対応する端末２００ａからのスレッドの委譲を受け付け、委譲されたスレッドを実行する。端末２００ｂは、スレッドの実行結果を端末２００ａに出力する。端末２００ｂの構成は、必ずしも、図８に示した処理部を全て含んでいなくても良い。たとえば、端末２００ｂは、応答部を備えていればよい。この応答部は、上述した実行部２５６が、他の端末から委譲されたスレッドを実行する処理と同様の処理を行う。
【００８３】
上記のように、アプリケーション実行システム上に、サーバクライアントモデルを構築した場合であっても、クライアントに対応する端末２００ａは、サーバに対応する端末２００ｂにスレッドの処理を委譲して、アプリケーションを実行することができる。
【００８４】
端末２００の処理時間判定部２５４は、スレッドの複雑度の値と、判断基準データ７０のテーブル７０Ａとを比較して、処理時間を判定していたが、これに限定されない。処理時間判定部２５４は、自端末２００ａの処理状況および複雑度の値の組みと一致する組みのレコードを特定することで、処理時間を判定しても良い。なお、処理時間判定部２５４は、処理状況および複雑度の組みと一致するレコードがテーブル７０Ａに存在しない場合に、スレッドの複雑度のみによって、処理時間を判定しても良い。
【００８５】
また、本実施形態では一例として、端末２００の実行端末判定部２５５が、スレッドの委譲先となる端末２００を判定していたが、端末２００の代わりに、制御装置１００が、委譲先となる端末２００を判定しても良い。例えば、制御装置１００は、端末２００から実行対象となるＡＰに含まれる各スレッドの複雑度の値を取得し、実行端末判定部２５５と同様の処理を実行して、委譲先となる端末２００を判定することができる。
【００８６】
本実施形態において説明した各処理のうち、自動的に行われるものとして説明した処理の全部または一部を手動的に行うこともでき、あるいは、手動的に行われるものとして説明した処理の全部あるいは一部を公知の方法で自動的に行うこともできる。この他、上記文書中や図面中で示した処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて任意に変更することができる。例えば、図１に示したＤＢ６０、制御装置１００、ＡＰ提供装置３００を単一の装置で構成しても良い。
【００８７】
次に、実施形態に示した制御装置１００と同様の機能を実現する制御プログラムを実行するコンピュータの一例を説明する。図１３は、制御装置と同様の機能を実現する制御プログラムを実行するコンピュータの一例を示す図である。図１３に例示するように、コンピュータ４００は、例えば、メモリ４０１と、ＣＰＵ（Central  Processing  Unit）４０２と、ハードディスクドライブインタフェース４０３と、ディスクドライブインタフェース４０４と、シリアルポートインタフェース４０５と、ビデオアダプタ４０６と、ネットワークインタフェース４０７とを有し、これらの各部はバス４０８によって接続される。
【００８８】
メモリ４０１は、図１３に例示するように、ＲＯＭ（Read  Only  Memory）４０１ａ及びＲＡＭ（Random  Access  Memory）４０１ｂを含む。ＲＯＭ４０１ａは、例えば、ＢＩＯＳ（Basic  Input  Output  System）等のブートプログラムを記憶する。ハードディスクドライブインタフェース４０３は、図１３に例示するように、ハードディスクドライブ４０３ａに接続される。ディスクドライブインタフェース４０４は、図１３に例示するように、ディスクドライブ４０４ａに接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ４０４ａに挿入される。シリアルポートインタフェース４０５は、図１３に例示するように、例えばマウス４０５ａ、キーボード４０５ｂに接続される。ビデオアダプタ４０６は、図１３に例示するように、例えばディスプレイ４０６ａに接続される。
【００８９】
ここで、図１３に例示するように、ハードディスクドライブ４０３ａは、例えば、ＯＳ（Operating  System）１、アプリケーションプログラム２、プログラムモジュール３、プログラムデータ４を記憶する。すなわち、制御装置１００の処理を実行する制御プログラムは、コンピュータ４００によって実行される指令が記述されたプログラムモジュール３として、例えばハードディスクドライブ４０３ａに記憶される。具体的には、上記実施形態で説明した判断基準データ生成部１５１、登録部１５２、委譲処理部１５３に対応する各手順が記述されたプログラムモジュール３が、ハードディスクドライブ４０３ａに記憶される。また、上記実施形態で説明した記憶部１４０に記憶されるデータのように、制御プログラムによる情報処理に用いられるデータは、プログラムデータ４として、例えばハードディスクドライブ４０３ａあるいはメモリ４０１に記憶される。そして、ＣＰＵ４０２が、ハードディスクドライブ４０３ａに記憶されたプログラムモジュール３やプログラムデータ４を必要に応じてＲＡＭ４０１ｂに読み出し、各手順を実行する。
【００９０】
なお、制御プログラムに係るプログラムモジュール３やプログラムデータ４は、ハードディスクドライブ４０３ａに記憶される場合に限られず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ等を介してＣＰＵ４０２によって読み出されてもよい。あるいは、制御プログラムに係るプログラムモジュール３やプログラムデータ４は、ネットワーク（ＬＡＮ（Local  Area  Network）、ＷＡＮ（Wide  Area  Network）等）を介して接続された他のコンピュータに記憶され、ネットワークインタフェースを介してＣＰＵ４０２によって読み出されてもよい。
【符号の説明】
【００９１】
１        ＯＳ
２        アプリケーションプログラム
３        プログラムモジュール
４        プログラムデータ
５０      ネットワーク
６０      ＤＢ
６０ａ    実績管理テーブル
７０      判断基準データ
１００    制御装置
１１０，２１０    通信部
１２０，２２０    入力部
１３０，２３０    表示部
１４０，２４０    記憶部
１４１    端末管理テーブル
１５０，２５０    制御部
１５１    判断基準データ生成部
１５２    登録部
１５３    委譲処理部
２００ａ，２００ｂ，２００ｃ    端末
２４１    アプリケーションデータ
２４２    複雑度データ
２５１    取得部
２５２    複雑度推定部
２５３    実行環境取得部
２５４    処理時間判定部
２５５    実行端末判定部
２５６    実行部
２５７    委譲部
３００    ＡＰ提供装置
４００    コンピュータ
４０１    メモリ
４０１ａ  ＲＯＭ
４０１ｂ  ＲＡＭ
４０２    ＣＰＵ
４０３    ハードディスクドライブインタフェース
４０３ａ  ハードディスクドライブ
４０４    ディスクドライブインタフェース
４０４ａ  ディスクドライブ
４０５    シリアルポートインタフェース
４０５ａ  マウス
４０５ｂ  キーボード
４０６    ビデオアダプタ
４０６ａ  ディスプレイ
４０７    ネットワークインタフェース
４０８    バス
【図１】
2014010497.tif 000003
【図２】
2014010497.tif 000004
【図３】
2014010497.tif 000005
【図４】
2014010497.tif 000006
【図５】
2014010497.tif 000007
【図６】
2014010497.tif 000008
【図７】
2014010497.tif 000009
【図８】
2014010497.tif 000010
【図９】
2014010497.tif 000011
【図１０】
2014010497.tif 000012
【図１１】
2014010497.tif 000013
【図１２】
2014010497.tif 000014
【図１３】
2014010497.tif 000015