(57)【要約】【課題】要求に応じて生成したアプリケーションの実行結果をユーザ端末に提供する。【解決手段】アプリケーションを生成するアプリケーション構築ブロック２０と、ユーザ端末１０からの要求に含まれる処理内容に基づきアプリケーションを構成する処理モジュールを保持するモジュール管理ブロック２２と、生成されたアプリケーションの処理内容および前記実行負荷値に基づき前記アプリケーションを実行先である資源ノードを決定する処理配置決定３０を有し、アプリケーション構築ブロック２０が、アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し、これに基づき処理モジュールの結合パターンを決定する。【選択図】図１
2012114889.tif 000002
【特許請求の範囲】
【請求項１】
資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築するアプリケーション構築部と、前記アプリケーションの構成要素である処理モジュールを記憶するモジュール管理部と、前記構築したアプリケーションを前記資源ノードに配置する処理資源決定配置部とを設け、
前記アプリケーション構築部は、前記ユーザ端末からの要求に含まれる処理内容に基づき前記モジュール管理部から前記アプリケーションを構成する処理モジュールを取得すると共に、前記処理内容に基づき前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し当該推定した実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定する処理モジュール選出取得機能を有し、
前記処理資源決定配置部は、構築された前記アプリケーションの処理内容および推定された前記実行負荷値に基づき前記アプリケーションの実行先である資源ノードを決定する処理資源決定機能を備えていることを特徴としたアプリケーション構築配置システム。
【請求項２】
請求項１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、前記取得した各処理モジュールにおける入力受け付け可能な入力データの数および各処理モジュールの処理結果としての出力データの数に基づき前記構築したアプリケーションにおける処理モジュールの実行順位を処理の依存関係として決定するモジュール実行順位決定機能を備えたことを特徴とするアプリケーション構築配置システム。
【請求項３】
請求項１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、
前記要求に含まれた前記ユーザ端末における処理能力に係るハードウェア情報に基づき、前記アプリケーションの実行結果を取得したときの前記ユーザ端末における処理負荷軽減用に前記取得した処理モジュールの接続パターンを決定する静的負荷決定機能を備えたことを特徴とするアプリケーション構築配置システム。
【請求項４】
請求項１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、
前記ユーザ端末における通信状態を重要な端末情報として検出する通信状態検知機能と、前記検出した通信状態に基づいて前記アプリケーションの実行結果を受信取得する際の前記ユーザ端末における通信負荷軽減用に前記取得した処理モジュールの接続パターンを決定する動的負荷決定機能とを備えたことを特徴とするアプリケーション構築配置システム。
【請求項５】
請求項１に記載のアプリケーション構築配置システムにおいて、
前記処理資源決定配置部は、
前記ユーザ端末の前記ネットワークへの接続位置を示す接続位置情報および前記ネットワークへの通信安定度を検知する接続位置特定機能と、
前記ユーザ端末に対して前記アプリケーションの実行結果の提供を行う処理ノードを前記特定された前記ユーザ端末の接続位置および通信速度に基づき決定する通信速度決定機能とを備えたことを特徴とするアプリケーション構築配置システム。
【請求項６】
請求項１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、
前記構築したアプリケーションに含まれる処理モジュールおよび当該処理モジュールの実行順位をアプリケーションログとして記憶する構成モジュール記憶手段を備え、
前記記憶した要求と同一の要求が送り込まれた場合に、前記構成モジュール記憶手段に記憶されたアプリケーションログに基づき構築するログ参照構築機能を備えたことを特徴とするアプリケーション構築配置システム。
【請求項７】
請求項１に記載のアプリケーション構築配置システムにおいて、
前記処理資源決定配置部は、
前記アプリケーションの実行用に割り当て可能なリソース総量を設定すると共に、当該設定されたリソース総量の範囲内で前記アプリケーションの実行を行う前記資源ノードを決定する資源総量決定機能とを備えたことを特徴とするアプリケーション構築配置システム。
【請求項８】
請求項１に記載のアプリケーション構築配置システムにおいて、
前記処理資源決定配置部は、
前記ユーザ端末に対して提供された前記アプリケーションの実行結果の処理状態を検知する実行結果処理検知機能と、
前記検知した処理状態に基づき前記アプリケーションの前記実行結果の処理遅延時間を算出する実行結果処理遅延時間算出機能と、
前記処理遅延時間の抑制用に前記抽出された処理ノードの接続パターンを更新する処理ノード接続パターン更新機能とを備えたことを特徴とするアプリケーション構築配置システム。
【請求項９】
ネットワークを介して接続された資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築し、この構築したアプリケーションを前記資源ノードに配備するアプリケーション構築配置方法であって、
前記アプリケーションを構築するアプリケーション構築部が、前記ユーザ端末からの要求に含まれる処理内容に基づき前記アプリケーションを構成する前記処理モジュールをモジュール管理部から取得して前記処理内容に基づき前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し、且つ当該推定された実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定し、
前記構築されたアプリケーションの処理内容および前記実行負荷値に基づいて、前記処理資源決定配置部が前記アプリケーションの実行先である資源ノードを決定し、
前記資源ノードが、前記処理資源決定配置部から送られた前記アプリケーションを実行し、その実行結果を前記ユーザ端末に提供するようにしたことを特徴とするアプリケーション構築配置方法。
【請求項１０】
ネットワークを介して接続された資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築するアプリケーション構築部と、前記アプリケーションの構成要素である処理モジュールを記憶するモジュール管理部と、前記構築したアプリケーションを前記資源ノードに配置する処理資源決定配置部とを備えたアプリケーション構築配置システムにあって、前記ユーザ端末に、前記資源ノードで実行される前記アプリケーションの実行結果を提供するためのアプリケーション構築配置プログラムであって、
前記ユーザ端末からの要求に含まれる処理内容に基づき前記アプリケーションを構成する前記処理モジュールをモジュール管理部から取得する処理モジュール選出取得処理機能、
前記ユーザ端末からの要求に含まれる処理内容に基づいて前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定する負荷推定処理機能、
この負荷推定処理機能で推定された実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定するモジュール結合パターン決定処理機能、
および前記構築されたアプリケーションの処理内容および前記実行負荷値に基づいて前記アプリケーションの実行先である資源ノードを決定する処理資源決定処理機能とを設け、
これらの各処理機能を、前記アプリケーション構築配置システムのコンピュータに実現させるようにしたことを特徴とするアプリケーション構築配置プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークを構成する通信資源上にアプリケーションを配置するアプリケーション配置システムに関する。
【背景技術】
【０００２】
クラウドコンピューティング（以下、「クラウド」という）の利用が広まるにつれて、通信ネットワーク（以下、ネットワーク）上に多くのサーバやＰＣ（パーソナルコンピュータ）といった計算資源が配置され、これら計算資源の上で端末利用者（ユーザ）に提供するサービスのアプリケーションを実行することで、ウェブサービスなどのサービス提供を行う形が一般的になってきている。【０００３】
上記アプリケーションにより提供されるサービスは多様であり、現状でも、電子メールやＳＮＳ（Ｓｏｃｉａｌ  Ｎｅｔｗｏｒｋｉｎｇ  Ｓｅｒｖｉｃｅ）、動画配信などのサービスが存在し、今後もサービスの種類は増加すると予想される。【０００４】
例えば、非特許文献１では、スタジアムに多数のカメラを設置し、ユーザは、ユーザ側端末を利用して所望のカメラが撮影する映像を取得したり、特定の人物をトラッキングすることで、ユーザ所望の映像を取得して表示することができるサービスが開示されている。【０００５】
このようなサービスの特徴として、ネットワーク（一般的にはインターネット）にさえつながれば、世界中のどこででも同じようにサービスを利用することができる点が挙げられる。【０００６】
一方、このようなサービスを利用する側の端末（以下、「ユーザ端末」という）も多様化、高機能化が進んでおり、デスクトップ型のＰＣ、ラップトップ型のＰＣ、タブレット型のＰＣ、携帯電話、携帯ゲーム機など、ネットワークに接続可能であり、クラウドを使用して提供されるサービスを受けることが可能な端末の種類は多岐にわたっている。【０００７】
そのため、受けられるサービスが同一である場合でも、取得した情報を処理する環境がユーザの利用する端末ごとに異なるという状況が生じ、これにより、実行される処理がユーザによって異なるということも考えられる。【０００８】
このような現状から、端末によっては特定のサービスを受けられない可能性が出てきている。
例えば、動画配信では一般に、その容量を削減するためにデータ圧縮のためのエンコードを行った上で、ネットワークに流され、端末側でデコード処理を行った上で動画を再生する。
このエンコードやデコードのためのアルゴリズム（コーデック）は日々進化しており、高効率な圧縮が可能になってきている。しかし、一方でコーデックによっては、デコード処理の負荷が高く、端末側に高性能なＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）やデコード専用のハードウェアを搭載することで、新しいアルゴリズムに対応している例も見られる。【０００９】
そのため、携帯電話など、ハードウェアの変更がユーザの手では困難な端末の場合、端末の世代が古くなると、新しいコーデックに対応できず、新しいコーデックを使用した動画配信サービスを受けられない可能性がある。【００１０】
また、世代の古い端末など、サービスに対応していない端末でも、サービスを受けられるようにすることが望まれる。【００１１】
これに対する関連技術として、クラウド側でデータの形式を端末が扱える形式に変換した上で、端末にデータを送信するシステムが開示されている（特許文献１）。【００１２】
特許文献１に開示されたシステムでは、アプリケーションが処理することができるデータの種類に関する情報を格納したアプリケーションテーブルと、処理対象のデータを処理可能なアプリケーションを抽出する手段などを備え、処理対象のデータの形式と、ユーザが指定する出力形式からアプリケーションを選択することで、所望のデータ変換が行われる。【００１３】
また、携帯電話や携帯ゲーム機などの携帯端末の利用が広まっている現状から、携帯端末の状況を元に、クラウド側で適切にデータの加工を行うことも必要である。例えば、携帯端末の電波状況やバッテリー残量を確認し、転送データ量の少ない、または消費電力の小さい形式のデータに変換した上で、端末に転送することが考えられる。【００１４】
これに対する関連技術として、携帯端末の環境（機能、ネットワークの状態、位置、バッテリー状態など）に基づき、適切なサービスを端末に提供するためのシステムが開示されている（特許文献２）。
更に、他の関連技術として、入力されたリクエスト（画像）に基づき、異なる複数の機能モジュールからリクエスト画像に対応する画像処理用の機能モジュールを選出し、画像データに適した処理を行うモジュール群を自動生成するシステムが開示されている（特許文献３）。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特表２００２−２０７７７５号公報
【特許文献２】特開２００５−５２２７６３号公報
【特許文献３】特開２０１０−１７０３１１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、上記特許文献１に開示された関連技術では、データの形式の変換のみでは、ユーザごとに異なった処理を行うことができず、ユーザ端末に対応した、多様なサービス提供を行うことができないという不都合が生じ得る。【００１７】
また、上記特許文献２に開示された関連技術では、サービスを実現するアプリケーションの動的配置については言及していないことから、通信の遅延などがユーザの体感に大きな影響を与える映像配信用アプリケーションなどの場合に、遅延が発生してしまうといった不都合がある。【００１８】
また、上記特許文献３に開示された関連技術では、モジュールに対する入出力データの種別が合致することが前提となるため、組み合わせの種類が限定的であり、入出力データの種別や数が異なる多様なモジュールからなる多様なアプリケーションを生成することができないという不都合がある。【００１９】
本発明は、要求に応じたアプリケーションを生成すると共にこのアプリケーションの実行結果を確実にユーザ端末に対して提供することを可能とするアプリケーション構築配置システム、方法、およびプログラムを提供することを、その目的とする。
【課題を解決するための手段】
【００２０】
上記目的を達成するために、本発明に係るアプリケーション構築配置システムは、資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築するアプリケーション構築部と、前記アプリケーションの構成要素である処理モジュールを記憶するモジュール管理部と、前記構築したアプリケーションを前記資源ノードに配置する処理資源決定配置部とを設け、
前記アプリケーション構築部は、前記ユーザ端末からの要求に含まれる処理内容に基づき前記モジュール管理部から前記アプリケーションを構成する処理モジュールを取得すると共に、前記処理内容に基づき前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し当該推定した実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定する処理モジュール選出取得機能を有し、
前記処理資源決定配置部は、構築された前記アプリケーションの処理内容および推定された前記実行負荷値に基づき前記アプリケーションの実行先である資源ノードを決定する処理資源決定機能を備えていることを特徴としている。【００２１】
また、本発明にかかるアプリケーション構築配置方法は、ネットワークを介して接続された資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築し、この構築したアプリケーションを前記資源ノードに配備するアプリケーション構築配置方法であって、
前記アプリケーションを構築するアプリケーション構築部が、前記ユーザ端末からの要求に含まれる処理内容に基づき前記アプリケーションを構成する前記処理モジュールをモジュール管理部から取得して前記処理内容に基づき前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し、且つ当該推定された実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定し、
前記構築されたアプリケーションの処理内容および前記実行負荷値に基づいて、前記処理資源決定配置部が前記アプリケーションの実行先である資源ノードを決定し、
前記資源ノードが、前記処理資源決定配置部から送られた前記アプリケーションを実行し、その実行結果を前記ユーザ端末に提供するようにしたことを特徴としている。【００２２】
又、本発明にかかるアプリケーション構築配置プログラムは、ネットワークを介して接続された資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築するアプリケーション構築部と、前記アプリケーションの構成要素である処理モジュールを記憶するモジュール管理部と、前記構築したアプリケーションを前記資源ノードに配置する処理資源決定配置部とを備えたアプリケーション構築配置システムにあって、前記ユーザ端末に、前記資源ノードで実行される前記アプリケーションの実行結果を提供するためのアプリケーション構築配置プログラムであって、
前記ユーザ端末からの要求に含まれる処理内容に基づき前記アプリケーションを構成する前記処理モジュールをモジュール管理部から取得する処理モジュール選出取得処理機能、前記ユーザ端末からの要求に含まれる処理内容に基づいて前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定する負荷推定処理機能、この負荷推定処理機能で推定された実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定するモジュール結合パターン決定処理機能、および前記構築されたアプリケーションの処理内容および前記実行負荷値に基づいて前記アプリケーションの実行先である資源ノードを決定する処理資源決定処理機能とを、前記アプリケーション構築配置システムのコンピュータに実行させるようにしたことを特徴としている。
【発明の効果】
【００２３】
本発明は、生成するウェブアプリケーションを構成する前記処理モジュールを要求データに基づき抽出し、資源ノードにおける処理負荷に基づきウェブアプリケーションが実行される資源ノードを決定する構成としたことにより、アプリケーションの実行結果をより確実にユーザ端末に対して提供することができる。
【図面の簡単な説明】
【００２４】
【図１】本発明における実施形態１に係るアプリケーション構築配置システムを示す概略ブロック図である。
【図２】図１に示したアプリケーション構築配置システムにおけるモジュール管理ブロック２２で管理されるテーブル情報の一例を示す説明図である。
【図３】図１に示したアプリケーション構築配置システムにおける全体的な動作内容を示すシーケンス図である。
【図４】図１に示したアプリケーション構築配置システムにおけるステップＳ２００の動作内容を詳細に示したフローチャートである。
【図５】図１に示したアプリケーション構築配置システムにおけるアプリケーションの処理フローの一例を示した説明図である。
【図６】図５に示した処理フローに対してグループ化した結果の一例を示す説明図である。
【図７】図５，６に示した処理フローに対応して取得されたモジュールの一例を示す説明図である。
【図８】図７に示した処理フローの同一グループ内の接続可能なモジュールの一候補を示す説明図である。
【図９】図８に示した処理フローに対してデータ形式を変換する接続モジュールを挿入した場合の一例を示した説明図である。
【図１０】図８に示した処理フローに対してデータ形式を変換する他のモジュールを挿入した場合の一例を示した説明図である。
【図１１】図１に示したアプリケーション構築配置システムにおけるモジュール管理ブロックで管理されるテーブル情報の一例を示す説明図である。
【図１２】図１に示したアプリケーション構築配置システムにおけるモジュール管理ブロックで管理されるテーブル情報の一例を示す説明図である。
【図１３】本発明における実施形態２に係るアプリケーション構築配置システムを示す概略ブロック図である。
【図１４】図１３に示したアプリケーション構築配置システムにおけるアプリケーションの処理フローの一例を示した説明図である。
【図１５】図１３に示したアプリケーション構築配置システムにおけるアプリケーションの処理フローの一例を示した説明図である。
【図１６】図１３に示したアプリケーション構築配置システムにおける全体的な動作処理ステップを示すシーケンスチャートである。
【図１７】本発明における実施形態３に係るアプリケーション構築配置システムを示す概略ブロック図である。
【図１８】図１７に示したアプリケーション構築配置システムのアプリケーションキャッシュ管理ブロックが保持するテーブル情報の一例を示す説明図である。
【図１９】図１７に示したアプリケーション構築配置システムにおけるアプリケーション構築ブロックの動作ステップを示すフローチャートである。
【発明を実施するための形態】
【００２５】
［実施形態１］
次に、本発明の第１実施形態について、その基本的構成内容を説明し、その後に具体的な内容を説明する。
【００２６】
本第１実施形態であるアプリケーション構築配置システムは、図１に示すように、アプリケーションの実行処理を要求するユーザ端末１０と、このユーザ端末１０からの要請に応じて所定のアプリケーションを構築すると共に実行環境である資源ノードに配置するアプリケーション構築配置装置１とを備えている。
ここで、資源ノードは、ネットワークに接続する通信機能と、アプリケーションを処理する機能を備えたノードであり、例えば、ネットワークカードを搭載したサーバや、サーバとネットワークスイッチを組み合わせた装置が資源ノードに該当する。本実施形態では、資源ノードは、ネットワークを介して上記アプリケーション構築配置装置１に予め接続された実資源である計算資源・ネットワーク資源５０に備えられる。
上記アプリケーション構築配置装置１は、ユーザ端末１０からの要求に対するアプリケーションの構成要素として予め登録された処理モジュールを管理するモジュール管理ブロック（モジュール管理部）２２と、ユーザ端末１０からのアプリケーション構築リクエスト（要求）に応じてモジュール管理ブロック２２からアプリケーション構築用のモジュールを取得すると共にこれに基づいてアプリケーションを構築するアプリケーション構築ブロック（アプリケーション構築部）２０と、このアプリケーション構築ブロック２０により構築されたアプリケーションの実行環境としての資源ノードを決定すると共に構築した前記アプリケーションをネットワークを介して資源ノードに対して配置する処理配置決定ブロック（処理資源決定配置部）３０とを備えている。
ここで、ブロックとは、ソフトウエア，プログラム，及びハードウェアの少なくとも何れかによって実現される一機能単位を示す。又、計算資源・ネットワーク資源５０は、パーソナルコンピュータ（ＰＣ）やサーバなどの何らかのプログラムを実行可能な計算機全般と、ネットワークスイッチやルータやネットワークケーブル等のネットワーク装置全般を指称する。そして、計算資源は、ネットワーク資源により相互に接続される。
【００２７】
以下、これを、具体的に詳述する。
ユーザ端末１０は、アプリケーションなどの実行を要求するためのリクエスト発信用アプリケーションを起動し、アプリケーション構築配置装置１に対してアプリケーション構築リクエストを送信する（リクエスト送信機能）。
上記アプリケーションは、例えば、インターネット上におけるウェブサーバで実行されるウェブアプリケーションであるものとする。また、リクエスト発信用アプリケーションは、例えば、ユーザ端末１０で実行されるウェブサイト閲覧用のブラウザプログラムであってもよい。
【００２８】
ここでは、ユーザ端末１０がリクエスト発信用アプリケーションを起動した場合、ユーザ端末１０からアプリケーション構築ブロック２０に対して、予め設定されたアプリケーション構築リクエストが送り込まれるものとする。
【００２９】
尚、リクエスト発信用アプリケーションがブラウザである場合には、ブラウザに対してウェブアプリケーションの実行元を示すＵＲＬなどのアドレス情報が入力された場合や、ブラウザにおけるウェブアプリケーション実行用のリンクが選択指定された場合に、上記アプリケーション構築リクエストが送出されるものとする。
【００３０】
また、上記アプリケーション構築リクエストには、入力データ形式、出力データ形式、データに対して行う処理、および処理間の依存関係に係る記述が含まれているものとする。ここで、処理間の依存関係とは、例えば、ある処理を実行する前にこの処理を実行しなければならない、というような、処理の実行順序に関する守らなければならない制約を示す。
【００３１】
また、ユーザ端末１０は、計算資源・ネットワーク資源５０におけるウェブサーバなどの資源ノード上で実行されたアプリケーションの実行結果を取得すると共にこの実行結果を出力表示する実行結果表示手段（図示せず）を備えている。
尚、上記ユーザ端末１０から出されるアプリケーション構築リクエストに対するアプリケーションの実行結果は、実行元である計算資源・ネットワーク資源５０の資源ノードからユーザ端末１０に対してインターネットを介して送り込まれる。また、アプリケーション構築配置装置１は、上記資源ノードから上記アプリケーション実行結果を取得し、ユーザ端末１０に転送する設定としてもよい。
【００３２】
また、ユーザ端末１０は、当該ユーザ端末１０における特定の処理内容を、検索キーとするアプリケーション構築リクエストをアプリケーション構築ブロック２０に送信する設定であってもよい。
この場合は、ユーザ端末１０における処理内容を表現するための予め定められた形式が用いられ、例えば、特定の処理内容に対して割り当てられた一意のＩＤやラベルがアプリケーション構築リクエストに含まれているものとする。
【００３３】
アプリケーション構築配置装置１のアプリケーション構築ブロック２０は、ユーザ端末１０からのアプリケーション構築リクエスト（以下「リクエスト」という）を取得した場合にモジュール管理ブロック２２にアクセスを行い、リクエストに含まれる、入力データ形式、出力データ形式、データに対して行う処理、および異なる処理間の依存関係（実行順序）を検索キーとしてモジュール管理ブロック２２の検索を行い、検索キーに対応するモジュールに係る情報を取得する（処理モジュール選出取得機能）。
ここで、モジュールとは、何らかの機能を提供するソフトウエア・プラグラム、又はハードウェアを指称する。ハードウェアについては、特定用途向けの専用プロセッサからＦＰＧＡ（ Field Programmable Gate Array）のような第三者によって構成可能なハードウェアを設定するための構成情報等も含むものとする。
【００３４】
尚、上記モジュールに係る情報には、少なくとも、モジュールのＩＤ、入力形式、および出力形式が含まれるものとする。また、モジュール名がモジュールに対して一意に定まる場合には、ＩＤの代わりにモジュール名を取得してもよい。
【００３５】
また、アプリケーション構築ブロック２０は、取得したモジュール同士を接続することによりユーザ端末１０からのリクエストに対応したアプリケーションの構築を行う（アプリケーション構築機能）。
【００３６】
更に、アプリケーション構築ブロック２０は、リクエスト内容に基づき、取得した異なるモジュールを相互に接続可能とするための接続モジュールを構築すると共に、この構築した接続モジュールを介してモジュール同士の接続を行ってもよい（接続モジュール構築機能／処理モジュール選出取得機能）。
即ち、上記アプリケーション構築ブロック２０は、前記ユーザ端末１０からの要求に含まれる処理内容に基づいて前記モジュール管理ブロック２２から前記アプリケーションを構成する処理モジュールを取得すると共に、前記処理内容に基づき当該アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し当該推定した実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定する処理モジュール選出取得機能を備えている。
又、これに対応して、前述した処理配置決定ブロック（処理資源決定配置部）３０部は、後述するように、構築された前記アプリケーションの処理内容および推定された前記実行負荷値に基づき前記アプリケーションの実行先である資源ノードを決定する処理資源決定機能を備えている。
【００３７】
ここで、アプリケーション構築ブロック２０が構築するアプリケーションの一例として、図５に示すような処理モジュールの流れ（処理フロー／実行順序）を持つアプリケーションを構築する場合について説明する。
この図５における処理モジュールＡ、Ｂ、Ｃ、Ｄ、およびＥは、それぞれアプリケーションの具体的な構成要素としての処理モジュールではなく、アプリケーションの実行時におけるモジュールの処理単位を示す。
【００３８】
例えば、処理Ａでは、アプリケーション実行時における入力データを受け付け、この入力データに対して何らかの処理を行い、処理Ｂ〜Ｄはそれぞれ、その前の処理結果として渡されたデータ（処理データ）に対して、何らかの処理を行う。
また、処理Ｅでは、処理Ｄからの処理データに対して何らかの処理を行い、アプリケーションの最終処理結果としての処理データを出力するものとする。
【００３９】
アプリケーション構築ブロック２０は、ユーザ端末１０から入力されたリクエストの内容に基づき処理単位を抽出する。また、リクエストの内容からアプリケーション処理（例えば、処理Ａ、Ｂ、Ｃ、Ｄ、およびＥ）間の依存関係（実行順序）を示す情報である処理依存関係情報（実行順序関係情報）を抽出し、この処理依存関係情報に基づいて、処理内容のグルーピングを行う（処理グループ化機能／モジュール実行順位決定機能）。
【００４０】
即ち、アプリケーション構築ブロック２０は、前記取得した各処理モジュールにおける入力受け付け可能な入力データの数および各処理モジュールの処理結果としての出力データの数に基づき前記構築したアプリケーションにおける処理モジュールの実行順位を処理の依存関係として決定するモジュール実行順位決定機能を備えている。
ここで、上記処理グループ化機能により設定されるグループは、相互に依存関係のある処理を区切るように構築されるものとする。また、グループ内の処理は順序を入れ替えが可能であるものとする。尚、異なるグループ間における処理順序は入れ替えられないものとする。
【００４１】
ここで、図５に示した処理群（Ａ〜Ｅ）に対してアプリケーション構築ブロック２０がグループ化を行った結果の一例を図６に示す。この図６では、処理グループ１〜４の４つのグループに分割されている。
【００４２】
更に、アプリケーション構築ブロック２０は、処理グループに含まれる処理内容に基づきモジュール管理ブロック２２を検索し、同一の処理グループを構成する処理モジュール（以下、「モジュール」という）を取得し、また、各モジュールに係る情報であるモジュール情報を取得する（対応モジュール取得機能）。この処理の結果の一例を図７に示す。この図７では、Ａ〜Ｅの各処理に対して、モジュールの候補が選択されている（処理モジュール選出取得機能）。
【００４３】
尚、この段階ではグループ同士（グループ相互間）の接続可能性については判定を行わず、各処理に適用することが可能な処理モジュールの選択抽出のみを行う。このため、図７の下段においては、具体的な処理モジュールの候補は列挙されているものの、それらが接続可能かどうかは未確定であるため、各処理同士は接続されていないものとする。
【００４４】
ここで、上記モジュール情報には、そのモジュールに固有に割り当てられたＩＤ、入力形式、出力形式が含まれるものとする。尚、モジュール名がモジュールに対して一意に定まる場合には、モジュール管理ブロック２２から上記ＩＤの代わりにモジュール名を取得してもよい。
【００４５】
アプリケーション構築ブロック２０は、上記対応モジュール取得機能を実行した結果、全ての処理（処理Ａ〜Ｅ）それぞれに対応して１つ以上のモジュールが選択されたか否かを判定し、各処理に対応して１つ以上のモジュールが選択抽出された場合、各グループに所属する複数の処理モジュールに対して、各処理を実現するモジュール同士の接続可能なパターンを調べる（グループ内接続パターン特定機能）。
【００４６】
ここで、上記グループ内接続パターン特定機能の処理内容の一例について、図８に基づき説明する。
まず、アプリケーション構築ブロック２０は、同一グループ内の処理について、相互接続可能な候補を抽出する。このとき、アプリケーション構築ブロック２０はモジュール同士の接続可能なパターンを、例えばモジュールにおける入出力のデータ形式を比較し、共通のデータ形式であるモジュール同士を相互に接続可能なモジュールとして抽出する。
【００４７】
例えば、同一グループ内に異なる複数の処理が含まれるグループ３（図８）においては、モジュールＣの処理を行った後にモジュールＤ１の処理を行っても（Ｃ→Ｄ１という順）、モジュールＤ２の処理を行った後にモジュールＣの処理を行っても（Ｄ２→Ｃという順）実現可能であるものとする。
尚、ここでは、Ｄ１→ＣやＤ２→Ｃという順でモジュールの接続はできないことも示されているものとする。
【００４８】
ここで、グループ３について、モジュールＣとモジュールＤ１、モジュールＤ２を接続する処理フローが存在しない場合、つまり、モジュールＣの入出力データ形式とモジュールＤ１、モジュールＤ２の入出力データ形式とが異なる場合に、アプリケーション構築ブロック２０は、データ形式を適切に変換しＣとＤ１、およびＤ２、をそれぞれ中継接続するモジュール（接続モジュール）を検索する。
【００４９】
ここで、アプリケーション構築ブロック２０は上記検索結果として、例えば、データ形式変換モジュールｃ’およびｄ’を得るものとする（図９）。
【００５０】
この接続モジュール検索機能を実行することによってモジュール管理ブロックから接続モジュールｃ’、およびｄ’それぞれが得られた場合に、アプリケーション構築ブロック２０は、図９に示すように、グループ３に所属するモジュールＣおよびＤ１を接続モジュールｃ’を介して接続し、モジュールＤ２およびＣを接続モジュールｄ’を介して接続する。
尚、アプリケーション構築ブロック２０は、グループ内接続パターン特定処理を行う時点で対象の処理グループ内で使用可能なモジュールが特定される場合には、使用可能なモジュールのみを候補として残すものとする。
【００５１】
更に、アプリケーション構築ブロック２０は、各処理グループにおける始端および終端の処理モジュールについて、上記処理フローの順で各処理グループが他の処理グループと接続可能であるか否かを判定する。
アプリケーション構築ブロック２０は、グループ間の接続処理について、抽出されたモジュール、またはモジュールの組み合わせの候補に対して、グループそれぞれの入出力データのデータ形式に基づき接続可能なモジュール、またはモジュールの組み合わせを決定する（接続可能モジュール決定機能）。
ここで、例えば、グループ２に属する処理モジュールＢ１の出力データ形式（出力形式）とグループ３に属する処理モジュールＣにおける入力データ形式（入力形式）が異なる場合、出力形式および入力形式を検索キーとして、モジュール管理ブロック２２内の検索を行う（グループ接続用モジュール検索機能）。
【００５２】
アプリケーション構築ブロック２０は、アプリケーション処理に含まれる各処理グループが他の処理グループと接続されたか否かを判定する。
ここで、他のどの処理グループとも接続されていない処理グループが有る場合、アプリケーションの処理フローに基づき、対応する処理グループ同士の接続を可能とするための接続用モジュールの検索を行う。
ここで、上記検索キーに対応する変換モジュール（グループ接続用の接続モジュール）が見つからなかった場合、アプリケーション構築ブロック２０は、ユーザ端末１０からリクエストされたアプリケーションの構築要素であるモジュールが存在しないと判定し、アプリケーションの構築に失敗したことを示すメッセージをユーザ端末１０に通知する。
【００５３】
一方、上記検索キーに対応するモジュール（グループ接続用の接続モジュール）としてのモジュールｂ’が検索抽出された場合、アプリケーション構築ブロック２０は、図１０に示すように、このモジュールｂ’を対象の各グループに追加する。
図１０に、データ形式変換モジュールｂ' を、グループ２に属する出力側モジュール（終端モジュール）として挿入した場合と、グループ３に属する入力側モジュール（始端モジュール）として挿入した場合とをそれぞれ示す。
【００５４】
入出力データのデータ形式を変換するモジュール（ここでは、モジュールｂ’）が検索抽出された場合、アプリケーション構築ブロック２０は、処理グループ間のデータ形式変換モジュールであるモジュールｂ’を、対象グループの接続元の出力側、もしくは、接続先の入力側として挿入し、このデータ形式変換モジュールを介して処理グループの接続を行う（処理グループ接続機能）。
【００５５】
ここで、アプリケーションを構築するためのモジュール接続パターンが複数存在する場合に（例えば、グループ３において、図８のモジュールＣ→モジュールＤ１、モジュールＤ２→モジュールＣのどちらの接続パターンでも前後のグループと接続可能な場合）、アプリケーション構築ブロック２０は、それぞれのアプリケーション実行時における処理負荷、処理時間等を調べ、アプリケーション実行時における処理デバイスにおける処理負荷、処理時間等などに応じて接続パターンを決定する（静的負荷決定機能）。
【００５６】
ここでは、例えば、アプリケーション実行時におけるＣＰＵの処理負荷が軽減される接続パターンを最終的に構築されるアプリケーションにおけるモジュールの接続パターンとして選択する。
【００５７】
また、使用するモジュール数やアプリケーション実行時のコストなどに係る基準データがリクエスト内に含まれている場合には、この基準データに基づき接続パターンを選択するものとする。
換言すると、前記アプリケーション構築部２0は、前記要求に含まれた前記ユーザ端末１０における処理能力に係るハードウェア情報に基づき、前記アプリケーションの実行結果を取得したときの前記ユーザ端末における処理負荷軽減用に前記取得した処理モジュールの接続パターンを決定する静的負荷決定機能を備えている。
【００５８】
尚、アプリケーション構築ブロック２０は、接続可能なモジュールの接続パターンが複数ある場合に、アプリケーションの処理フローに基づきランダムに接続パターンを決定してもよい。この場合は、アプリケーションを構成するモジュールを選択し抽出した後、迅速にアプリケーションを構築することが可能となる。
【００５９】
アプリケーション構築ブロック２０は、前述した接続可能モジュール抽出機能を実行するにあたって、上記処理フローにおける最初のモジュールから接続可能であるか否かを、各処理モジュールについて、それぞれ順番に判定する設定であってもよいし、並列に判定する設定であってもよい。
【００６０】
アプリケーション構築ブロック２０は、処理配置決定ブロック（処理資源決定配置部）３０に対してマッピング要求を送信することにより、上記構築したアプリケーションの配置先である資源ノードを決定するマッピング処理の実行を、処理配置決定ブロック３０に要求する（マッピング要求機能）。
【００６１】
尚、マッピング要求には、どのモジュールを選択したかを示す情報（選択モジュール情報）や、選択したモジュール間をどのように接続したかを示す情報（モジュール間接続情報）などを示すアプリケーション情報が含まれているものとする。
【００６２】
モジュール管理ブロック２２は、アプリケーションを構築するためのモジュール、および各モジュールに係る情報であるモジュール情報を、モジュール情報テーブル２２１（図２）として記憶している。
尚、モジュール管理ブロック２２には、各モジュールに対して固有に予め割り当てられたＩＤ、モジュール名、そのモジュールの処理内容、各モジュールへの入力の入力形式、およびモジュールからの出力形式が予め登録されているものとする。
【００６３】
モジュール管理ブロック２２は、アプリケーション構築ブロック２０によるモジュールの検索処理より検索キーに対応するモジュールが検索ヒットした場合に、このモジュールをアプリケーション構築要素の候補としてアプリケーション構築ブロック２０に提供する。
【００６４】
ここで、モジュール管理ブロック２２は、アプリケーションの入出力用処理として設定された処理（図６のＡとＥ）については、入力データおよび出力データそれぞれの形式（入力形式と出力形式）が予め設定されているため、処理内容を示す情報に加えて、データの入力形式や出力形式も検索キーとする。
これにより、利用可能なモジュールを絞り込むことが可能となり、更には、これによりモジュール管理ブロック２２におけるモジュールの検索処理を迅速化することが可能となる。
【００６５】
モジュール管理ブロック２２は、上記検索処理で、処理単位に対応するモジュールが１つも検索抽出できない場合（つまり、対応するモジュールがない（検索ヒットしない）場合）には、アプリケーションを実現するためのモジュールが存在ことをアプリケーション構築ブロック２０に通知する。
【００６６】
（モジュール管理ブロックの変形例１）
モジュール管理ブロック２２は、モジュールに固有に振られたＩＤと、モジュール名、そのモジュールの処理内容、モジュールへの入力の数、入力の形式、モジュールからの出力の数と、出力の形式とを含むテーブル情報（図１１）２２２をモジュール情報として登録・管理する設定であってもよい。
【００６７】
尚、図１１におけるテーブル情報２２２の入力データおよび出力データの数とは、あるモジュールが何個のモジュールと接続可能であるかを示す値ではなく、そのモジュールに対して与える入力データの個数や、そのモジュールから出力される出力データの個数を示すものとする。
【００６８】
例えば、２台のカメラからの映像データを入力とするモジュールの場合、そのモジュールは少なくとも入力数が２でなければならない。
また、映像データの偶数フレームと奇数フレームを異なるモジュールに転送するモジュールが存在する場合、出力数は２となる。
【００６９】
これにより、例えば、複数の入力データを必要とするモジュールや、複数の出力データを出力するモジュールを含むアプリケーションを構築することが可能となる。
【００７０】
ここで、モジュール管理ブロック２２がモジュール情報をテーブル情報２２２の形式で管理している場合に、アプリケーション構築ブロック２０で構築することが可能なアプリケーションの処理フローを、図１４および図１５に示す。
【００７１】
ここで、例えば、図１４の処理Ｂ、図１５の処理Ａは複数の異なる出力データ（ここでは、２つ）を有する処理であり、図１４の処理Ｅ、図１５の処理Ｇは異なる複数の入力データがある処理を示す。また、図１５の処理Ｄは、異なる複数の入力データおよび異なる複数の複数の出力データを有する処理を示す。
【００７２】
以上のように、モジュール管理ブロック２２が各モジュールにおける入力データの数、および出力データの数を含むモジュール情報をテーブル情報２２２として管理している場合には、アプリケーション構築ブロック２０では、処理フロー内に複数の入出力データの処理単位を含む、より多様な処理内容を含むアプリケーションを構築することが可能となる。
【００７３】
（モジュール管理ブロックの変形例２）
また、モジュール管理ブロック２２は、アプリケーションを構築するためのモジュールをテーブル情報２２３（図１２）として管理する設定であってもよい。
【００７４】
このテーブル情報２２３には、図１２に示すように、各モジュールに固有に振られたＩＤと、モジュール名（Ｍｏｄｕｌｅ  Ｎａｍｅ）、各モジュールの処理内容、各モジュールにおける入力データ形式（入力形式）、各モジュールからの出力データ形式（出力形式）、およびモジュールの処理コストが登録内容として含まれるものとする。
尚、上記処理コストは、モジュールの実行処理を行った際の処理対象（つまり、資源ノード）における処理負荷や、処理時間を示すものとする。
【００７５】
モジュール管理ブロック２２は、例えば、上記構築したアプリケーションを基準となる計算機（コンピュータ）で実行した場合の処理負荷や処理時間を推定し、これを基準として（例えば基準値１とする）各資源ノードにおけるアプリケーション実行時の処理負荷や処理時間（または、基準値１に対する相対値）を推定算出して、テーブル情報２２３に登録する。
【００７６】
また、モジュール管理ブロック２２は、処理負荷、処理時間といった単一の指標だけでなく、各資源ノードにおける異なる複数の指標の相関関係に基づき、各指標に対応して重み付けを行う設定であってもよい（重み付け値を設定）。
【００７７】
この場合、処理配置決定ブロック３０は、上記設定された重み付け値を加算した値を示す重み付け指標値が各資源ノードで一定値範囲内となるように、アプリケーションの配置先を決定することができ、これにより、計算資源ネットワーク資源５０における各資源ノードで分配されたアプリケーションが実行されたときの各資源ノードにおける処理負荷が有効に分散される。
【００７８】
また、モジュール管理ブロック２０が処理コストを指標ごとに、入出力データ形式などの他の項目とは別の項目として管理することにより、様々な指標を扱うことが可能となる。
【００７９】
尚、アプリケーション構築ブロック２０は、上記処理コストに関する情報を、リクエストに応じてモジュール管理ブロック２２に対してモジュール検索のためのアクセスの場合や、モジュール管理ブロック２２に対して検索キーに基づきモジュールの絞込み検索を行う場合などに、モジュールのＩＤと、入力形式、出力形式とともに取得するものとする。
【００８０】
また、処理コストに関する情報は、アプリケーション構築ブロック２０が、接続パターンの絞込みを行う場合に取得してもよい。
ここで、このアプリケーション構築ブロック２０に対応して、前述した処理配置決定ブロック（処理資源決定配置部）３０は、ユーザ端末１０に対して提供された前記アプリケーションの実行結果の処理状態を検知する実行結果処理検知機能と、この検知した処理状態に基づいて前記アプリケーションの前記実行結果の処理遅延時間を算出する実行結果処理遅延時間算出機能と、前記処理遅延時間の抑制用に抽出された前記処理ノードの接続パターンを更新する処理ノード接続パターン更新機能とを備えている。
これにより、例えば、ユーザ端末１０がリアルタイム性の求められるアプリケーションのリクエストを出した際に、アプリケーション構築ブロック２０は、アプリケーションの構築処理にあたって、アプリケーションを構成するモジュールの接続パターンとして、許容される遅延（処理時間）の最大値を超えないような、処理時間が短いことを優先した接続パターンを選択することが可能になる。
【００８１】
また、アプリケーション構築ブロック２０は、例えば、ユーザ端末がアプリケーション構築配置装置を利用する際に課金される場合などにその課金状況に応じて利用可能なリソース（資源ノード）の総量を設定し、その総量を超えないようにモジュールを選択することによりアプリケーションの構築を行うといったことも可能となる。
【００８２】
これに対応して、前述した処理配置決定ブロック（処理資源決定配置部）３０は、前記アプリケーションの実行用に割り当て可能なリソース総量を設定すると共に、当該設定されたリソース総量の範囲内で前記アプリケーションの実行を行う前記資源ノードを決定する資源総量決定機能とを備えている。
そして、上記処理コストに関する情報は、処理配置決定ブロック３０が、アプリケーションの配置を決定する際にも、配置の指標として用いられる。このため、アプリケーション構築ブロック２０が、アプリケーションの配置リクエストを出す際に、処理配置決定ブロック３０に処理コストに関する情報をリクエスト内に含める設定であってもよい。
【００８３】
以上のように、モジュール管理ブロック２２の変形例２においては、モジュール管理ブロック２２が、モジュールのコスト値を保持しているため、アプリケーション構築ブロック２０は、モジュールを選択する際には、処理時間や処理負荷といった指標を用いて、アプリケーションを構築することができる（処理モジュール選出取得機能）。
【００８４】
また、前述した処理配置決定ブロック３０は、アプリケーションの配置を決定する際にも、処理コストの情報を用いてアプリケーションの配置先を決定することができ（処理資源決定機能の実行）、この場合、ユーザ端末１０に提供されるサービスの品質向上や、使用される計算資源・ネットワーク資源５０における処理コストを有効に分散することが可能となる。
【００８５】
上記処理配置決定ブロック３０は、計算資源ネットワーク資源５０からネットワークを介して予め設定された資源ノードにおける処理負荷状況を検知する（負荷状況モニタ機能）。
また、処理配置決定ブロック３０は、検知した処理負荷に基づき、ウェブアプリケーションの実行を行う、アプリケーション配置先としての資源ノードを決定する処理資源決定機能を備えている。
【００８６】
処理配置決定ブロック３０は、この処理資源決定機能を稼働させて、アプリケーション構築ブロック２０からアプリケーションのマッピング要求が送り込まれた場合に、このマッピング要求に含まれるアプリケーション情報に基づいて、計算資源・ネットワーク資源５０における上記アプリケーションを動作させる資源ノード（ここでは、５０−１とする）を決定し、この資源ノードに対してアプリケーションの配信を行う（アプリケーション配信機能）。アプリケーション配信の際には、検知した処理負荷に基づき、アプリケーション配置先としての資源ノードを決定する（処理資源決定機能）。
【００８７】
尚、この処理資源決定機能では、例えば、公知の計算資源やネットワーク資源を管理する手法（例えば特許文献３に示されるような手法）を用いて決定する設定であってもよい。
【００８８】
計算資源・ネットワーク資源５０は、通信回線を介して相互に通信を行う異なる複数の資源ノード（５０−１〜５０−ｎ）を備え、各資源ノード（５０−１〜５０−ｎ）は、処理配置決定ブロック３０からアプリケーションが送り込まれた場合にこれを導入して実行するアプリケーション導入実行機能を有する。
【００８９】
また、計算資源・ネットワーク資源５０の各資源ノードは、アプリケーションの実行結果をユーザ端末１０に対してインターネットなどの通信回線を介して提供する。
尚、資源ノードにおけるアプリケーションの実行結果はアプリケーション構築は位置システム１を介してユーザ端末１０に送られる設定であってもよい。
【００９０】
以上のように、本実施形態１では、アプリケーション構築ブロック２０が、ユーザ端末１０からのアプリケーション構築リクエストに応じてアプリケーションを構築するため、ユーザ端末１０のリクエストに応じた、多様なアプリケーションを構築し、計算資源・ネットワーク資源５０の資源ノードに対して有効に分散配置することが可能となる。
【００９１】
［実施形態１の動作説明］
次に、アプリケーション構築配置システムの動作説明を行う。
まず、アプリケーション構築部であるアプリケーション構築ブロック２０が、ユーザ端末１０からの要求に含まれる処理内容に基づきアプリケーションを構成する処理モジュールをモジュール管理ブロック（モジュール管理部）２２から取得する（処理モジュール選出工程）。
続いて、上記処理内容に基づきアプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し（負荷推定工程）、この推定された実行負荷値に基づき、取得した異なる処理モジュールの結合パターンを決定する（モジュール結合パターン決定工程）
次に、処理資源決定部である処理配置決定ブロック３０が、アプリケーション構築ブロック２０によって構築されたアプリケーションの処理内容および前述した実行負荷値に基づいて、アプリケーションを実行先である資源ノードを決定し（処理資源決定工程）、次いで、当該資源ノードが、処理配置決定ブロック３０から送られた前記アプリケーションを実行し、その実行結果をユーザ端末１０に提供する
【００９２】
ここで、上記処理モジュール選出工程、負荷推定工程、モジュール結合パターン決定工程、および処理資源決定工程については、その実行内容をプログラム化し、コンピュータに実行させるように構成してもよい。本実施形態１における以下に示す各動作工程についても同様であり、また、かかる点については、後述する各実施形態２，実施形態３についても同様である。
また、本プログラムは、非一時的な記録媒体、例えば、ＤＶＤ、ＣＤ、フラッシュメモリなどに記録されてもよい。その場合、本プログラムは、記録媒体からコンピュータによって読み出され、実行される。
【００９３】
次に、上述した実施形態１に係る、アプリケーション構築・配置システムの動作について、図３のシーケンス図および図４のフローチャートに基づき詳述する。
【００９４】
まず、ユーザ端末１０が、リクエスト送信用のアプリケーションを起動する（図３：ステップＳ１００）。ここで、アプリケーションを起動された場合にアプリケーション構築ブロック２０に対してアプリケーション構築リクエストが出される。
このアプリケーション構築リクエストには、少なくとも、入力データ形式と、出力データ形式と、データに対して行う処理と、処理間の依存関係に関する記述が含まれているものとする。
【００９５】
次に、アプリケーション構築ブロック２０は、ユーザ端末１０からのアプリケーション構築リクエストに含まれる、データに対して行う処理と、を検索キーとしてモジュール管理ブロック２２にアクセスし、使用可能な処理モジュールに関する情報を取得する（図３：ステップＳ２００）。
【００９６】
ここで、アプリケーション構築ブロック２０は、データに対して行う処理、その処理の入力形式、およびその処理の出力形式を検索キーとして、モジュール管理ブロック２２にアクセスを行い、使用可能な処理モジュールに関する情報を取得する。
この処理モジュールに関する情報には、少なくとも、そのモジュールのＩＤと、入力形式、出力形式が含まれる。また、モジュール名がモジュールに対して一意に定まる場合には、ＩＤの代わりにモジュール名を取得してもよい。
【００９７】
次に、アプリケーション構築ブロック２０は、選択したモジュール同士を接続して、アプリケーションを構築する（図３：アプリケーション構築工程／ステップＳ２０５）。
【００９８】
次に、アプリケーション構築ブロック２０は、構築したアプリケーションを計算資源・ネットワーク資源５０の資源ノードで実行するために、処理配置決定ブロック３０にアプリケーションの実資源へのマッピング要求を送信する（図３：ステップＳ２１０）。
尚、このマッピング要求には、どのモジュールを選択したのかに関する情報や、選択したモジュール間をどのように接続したかを示す接続情報、などが含まれるものとする。
【００９９】
次に、処理配置決定ブロック３０は、アプリケーション構築ブロック２０からのマッピング要求に応じて、計算資源・ネットワーク資源５０における予め設定されたマッピング要求、およびアプリケーション内容に基づき配信先を決定する（図３：ステップＳ３００）と共にアプリケーションを資源ノードに対して送信する（図３：ステップＳ３１０）。
【０１００】
最後に、計算資源・ネットワーク資源５０のアプリケーションのマッピング先である資源ノードはアプリケーションを取得すると共に、このアプリケーションの導入および実行を行い、このアプリケーションの実行結果はユーザ端末１０に送られる。
【０１０１】
尚、上記マッピングの手法としては、特許文献３に示されるような計算資源やネットワーク資源を管理する手法を用いることにより実現されるものとする。
【０１０２】
次に、アプリケーション構築ブロック２０における、アプリケーション構築工程（図３：ステップＳ２０５）について、図４のフローチャートに基づき説明する。
【０１０３】
アプリケーション構築ブロック２０は、ユーザ端末１０から入力されたリクエストに含まれる、異なる処理単位間の依存関係を示す情報に基づき処理内容（処理単位）のグルーピングを行う（図４：ステップＳ２０００）。
ここで設定されるグループは、依存関係のある異なる処理モジュールを区切るように構築され、グループ内の処理は順序を入れ替えてもよいが、グループ間の順序は入れ替えられないものとする。図６に、処理（Ａ〜Ｅ）をグルーピングした結果を示す。
【０１０４】
次に、アプリケーション構築ブロック２０は、各処理を実現する構成要素としてのモジュールに係る情報をモジュール管理ブロック２２から取得する（図４：ステップＳ２００５）。
ここで、モジュールに関する情報には、そのモジュールのＩＤと、入力形式、出力形式が含まれるものとする。
【０１０５】
尚、モジュール管理ブロック２２は、上述のように、アプリケーションを構築するためのモジュールを管理しており、図２に示されるように、モジュールに固有に振られたＩＤと、モジュール名、そのモジュールの処理内容、モジュールへの入力の入力形式、モジュールからの出力形式が予め登録されているものとする。
【０１０６】
アプリケーション構築ブロック２０は、モジュール管理ブロック２２に対して、構築するアプリケーションの処理内容を示す情報を検索キーとして与え、利用可能なモジュールの候補を検索し取得する。
【０１０７】
ここで、アプリケーション構築ブロック２０は、アプリケーションの入出力に位置する処理（例えば、図６のＡとＥ）について、それぞれデータの入力形式と出力形式に制約がかかっているため、処理内容を示す情報に加えて、データの入力形式や出力形式も検索キーとしてモジュール管理ブロック２２に渡すことにより、利用可能なモジュールをより絞り込んだ検索を行ってもよい。
【０１０８】
ここで、ステップＳ２００５の時点では、各処理単位（例えば、Ａ〜Ｅ）に対して、１つ以上の処理モジュールが選択されるものとする。
【０１０９】
例えば、図７では、処理Ｂと処理Ｄに対応するモジュールが２つずつ抽出されている。（処理Ｂ：モジュールＢ１、Ｂ２、処理Ｄ：モジュールＤ１、Ｄ２）。
【０１１０】
ここで、対応するモジュールが１つも検索抽出されない場合は（図４：ノー、ステップＳ２００７）、リクエストされたアプリケーションを実現する手段が存在しないと判定され、アプリケーションの構築に失敗した旨がユーザ端末１０に通知される。
【０１１１】
尚、アプリケーション構築ブロック２０が処理内容を検索キーとしてモジュール管理ブロック２２に検索アクセスする場合は、処理内容を表現するための、予め定められた形式を用いるものとする。この場合、アプリケーション構築ブロック２０は、例えば処理内容に対して一意なＩＤやラベルを割り振り、アプリケーション構築リクエストにこのＩＤやラベルを含める。
【０１１２】
更に、この時点では、グループ間の接続可能性については判定を行わず、アプリケーション構築ブロック２０は各処理に適用することが可能なモジュールを選択するものとする。例えば、図７においては、具体的なモジュールの候補は列挙されているものの、それらが接続可能かどうかは未確定であるため、各処理同士は接続されていないものとする。
【０１１３】
次に、アプリケーション構築ブロック２０は、アプリケーションに含まれる全ての処理それぞれに対応して、１つ以上のモジュールが選択された場合（図４：イエス、ステップＳ２００７）、同一グループ内に複数の処理を含むグループに対して、各処理を実現するモジュール同士の接続可能なパターンを列挙する（図４：ステップＳ２０１０）。
【０１１４】
ここで、この接続可能なパターンはモジュールの入出力を比較することで探し出すことが可能である。
【０１１５】
図８に、同一グループ内の処理について、接続可能な候補を挙げた状態を示す。
尚、図５の例では、同一グループに複数の処理が含まれるグループはグループ３のみであり、図８ではＣ→Ｄ１でも、Ｄ２→Ｃでも実現可能なモジュールが存在することを示している。また、これにより、Ｄ１→Ｃや、Ｃ→Ｄ２というモジュールの接続は不可であることも示されているものとする。
【０１１６】
次に、アプリケーション構築ブロック２０は、（図４：ステップＳ２０１０）で接続可能なパターンが見つからなかったグループが存在する場合（図４：ノー、ステップＳ２０２０）、そのグループの処理を実現するモジュールが出力するデータ形式を、他方のモジュールに対する入力データ形式に変換可能なモジュールが存在するかどうか、モジュール管理ブロック２２に対して、処理の入出力を検索キーとしてアクセスする（図４：ステップＳ２０３０）。
【０１１７】
このデータ形式を変換するモジュールの検索を行う場合には、アプリケーション構築ブロック２０は、接続対象の処理に対して、接続元の処理の候補として挙げられているモジュールの出力と、接続先の処理の候補として挙げられているモジュールの入力の双方にデータ形式が適合する変換モジュールを検索する。
【０１１８】
更に、（図４：ステップＳ２０３０）で必要な変換モジュールが見つからなかった場合（図４：ノー、ステップＳ２０４０）、ユーザ端末１０からリクエストされたアプリケーションを構築する手段が存在しないと判定し、アプリケーションの構築に失敗した旨がユーザ１０に通知する。
【０１１９】
次に、アプリケーション構築ブロック２０は、（図４：ステップＳ２０３０）で変換モジュールが見つかった場合に（図４：イエス、ステップＳ２０４０）、見つかった変換モジュールを対象のグループに追加し（図４：ステップＳ２０５０）、再度、モジュールの接続パターンの検索を行う（図４：ステップＳ２０１０）。
【０１２０】
尚、変換モジュールが選択された時点で、対象の処理グループで使用可能なモジュールが限定される場合には、使用可能なモジュールのみを候補として残すものとする。
【０１２１】
ここで、グループ３について、Ｃ→Ｄ１、またはＤ２→Ｃという処理を実現可能なモジュールが存在しなかった場合に、それぞれｃ’、ｄ’という、データ形式を変換するモジュールが挿入された状態を図９に示す。
【０１２２】
これにより、各グループ内の処理を実現する処理モジュールが見つかったことになる（図４：イエス、ステップＳ２０２０）。
【０１２３】
次いで、アプリケーション構築ブロック２０は、グループ間の処理の接続を行う（図４：ステップＳ２１００）。
このステップＳ２１００では、各グループの処理に対応して検索抽出されたモジュール、またはモジュールの組み合わせの候補について、それぞれのグループの入出力のデータ形式を比較し、接続可能なモジュール、またはモジュールの組み合わせを選択する。
この処理においては、処理の流れの最初から順に接続を判定しても良いし、各グループ間の接続の適合可能性を並列に判定してもよい。
【０１２４】
次に、アプリケーション構築ブロック２０は、全てのグループを接続できたかどうか判定を行い（図４：ステップＳ２１２０）、接続できなかった場合（ノー：ステップＳ２１２０）、ステップＳ２０３０〜ステップＳ２０５０の処理と同様に、グループ間の接続を可能とするための、データ形式変換モジュールの探索処理を行う。データ形式変換モジュールの探索方法は、図４のステップＳ２０３０〜ステップＳ２０５０の流れと同様である。
【０１２５】
図４のステップＳ２１２０でノーの判定となり、グループ間の入出力のデータ形式変換モジュールが見つかった場合（図４：イエス、ステップＳ２１４０）、ステップＳ２０５０と異なり、データ形式変換モジュールを、対象グループの接続元の出力側、もしくは、接続先の入力側に挿入する。
【０１２６】
ここで、グループ２とグループ３を直接接続可能なモジュールの候補が存在し買った場合に、グループ２の出力側にデータ形式変換モジュールｂ’を挿入した場合と、グループ３の入力側にデータ形式変換モジュールｂ’を挿入した場合を図１０に示す。
なお、この図１０においては、グループ２ではモジュールＢ１が、グループ３ではモジュールＣとモジュールＤ１がそれぞれ選択されている。
【０１２７】
次に、アプリケーション構築ブロック２０は、ユーザからリクエストのあったアプリケーションを実現するためのモジュールの接続パターンが複数存在する場合（図４：イエス、ステップＳ２１３０）、接続パターンの絞込みを行う（図４：ステップＳ２１６０）。
【０１２８】
尚、ステップＳ２１６０での接続パターンの絞込み処理においては、例えば、アプリケーション構築ブロック２０がランダムに接続パターンを選択する設定であってもよい。また、使用するモジュール数やコストなどの何らかの基準を導入して、これに基づき接続パターンを選択する設定であってもよい。
【０１２９】
以上のように、本実施形態１では、アプリケーション構築ブロック２０がユーザ端末１０からのアプリケーション構築リクエストの処理内容に応じて、アプリケーションを構成するモジュールの接続パターンを、ユーザ端末１０からのアプリケーション構築リクエストの処理内容に応じて決定する。これにより、ユーザ端末１０のリクエストに応じた、多様なアプリケーションを生成することができる。
【０１３０】
［実施形態２］
次に、本発明の他の実施形態である実施形態２について図１３に基づき説明する。
この実施形態２では、図１３に示すように、アプリケーション構築配置装置２の内部構成として、ユーザ端末１０における端末情報を取得し、これをアプリケーション構築ブロック（この変形例では２０−１とする）に通知する端末情報管理ブロック４０を備えた点が上述した実施形態１のアプリケーション構築配置装置１の場合と相違する。
【０１３１】
その他の内部構成は、図１のアプリケーション構築・配置システム１と同様であるため、図１３について図１と同様の構成要素には同一の符号を付するものとする。
【０１３２】
端末情報管理ブロック４０は、アプリケーション構築ブロック２０−１を介してユーザ端末１０の端末に関する情報である端末情報を取得し、これを管理する。
ユーザ端末１０の端末情報は、例えば、ユーザ端末１０における内部構成であるＣＰＵの性能、搭載メモリ量、ディスプレイの解像度などのハードウェアスペックのような静的な情報や、ユーザ端末１０の現在位置、バッテリー残量、ネットワークの状況などの動的な情報が含まれるものとする。
【０１３３】
また、端末情報には、インストールされているアプリケーションと、アプリケーションで処理可能なデータフォーマットに関する情報も、ユーザ１０の端末に関する情報として含まれていてもよい。
【０１３４】
ユーザ端末１０は、定期的に、または、アプリケーション構築リクエストを発行する際に、端末情報管理ブロック４０に対して予め設定された端末情報を送信する設定であってもよい。
【０１３５】
本実施形態２におけるアプリケーション構築ブロック２０−１は、アプリケーションを構築する際に、端末情報管理ブロック４０が取得した端末情報を検索キーとして、モジュール管理ブロック２２に対して検索問い合せを行い、ユーザ端末１０のリクエストに対応したモジュールを取得するものとする。
例えば、接続パターンの絞込みを行う場合に、ユーザ端末１０の端末情報を用いることにより、アプリケーション構築ブロック２０−１では、ユーザ端末１０のスペックや動的な情報に応じたアプリケーションを構築することが可能となる。
即ち、アプリケーション構築ブロック２０−１は、ユーザ端末１０における通信状態を重要な端末情報として検出する通信状態検知機能と、この検出した通信状態に基づいて前記アプリケーションの実行結果を受信取得する際の前記ユーザ端末における通信負荷軽減用に前記取得した処理モジュールの接続パターンを決定する動的負荷決定機能とを備えている。
【０１３６】
そして、例えば、ユーザ端末１０におけるインターネットに対するネットワーク回線が輻輳状態にあるときに、資源ノードにおけるアプリケーションの実行結果としてユーザ端末１０に映像配信が行われる場合、データサイズを削減して、ネットワークの状況が悪くても、なるべく映像の途切れないように映像配信を行うことが可能なアプリケーションを構築し、計算資源・ネットワーク資源５０に対して配信することが可能となる。
【０１３７】
また、この場合、ネットワークの状況に応じてアプリケーションを構成する処理単位やモジュールの接続パターンを変更し、これにより、アプリケーションを実行した場合にネットワーク負荷の小さい映像をユーザ端末１０に配信してもよい。
【０１３８】
これにより、アプリケーション構築ブロック２０−１は、ユーザ端末１０におけるネットワーク通信状態に応じたアプリケーションを構築することができ、ユーザ端末１０では、ユーザ端末１０におけるネットワーク状況に応じて、安定的にアプリケーションの実行結果を取得することが可能となる。
【０１３９】
また、例えば、端末情報に基づきユーザ端末１０のバッテリー残量が一定値より少ないことが検知された場合には、アプリケーションの実行結果を取得するユーザ端末１０側での処理が抑制されるように、アプリケーションの接続パターンが選択される設定としてもよい。
【０１４０】
また、ユーザ端末１０の性能が一定レベルより高く、更にはバッテリー残量に予め設定された一定値より余裕がある場合には、ユーザ端末１０側に予め設定された処理を行わせるように、処理の割り当てを行うアプリケーションを生成し構築する、つまり、接続パターン（構築パターン）を選択する設定であってもよい。
【０１４１】
アプリケーション構築ブロック２０−１は、構築したアプリケーションに関する情報に加えて、ユーザの端末情報を処理配置決定ブロック３０に転送する。
【０１４２】
この場合、処理配置決定ブロック３０は、ユーザ端末１０の端末情報に基づきアプリケーションを計算資源・ネットワーク資源５０に配置する。
即ち、前述した処理配置決定ブロック３０は、前記ユーザ端末１０の前記ネットワークへの接続位置を示す接続位置情報および前記ネットワークへの通信安定度を検知する接続位置特定機能と、前記ユーザ端末１０に対して前記アプリケーションの実行結果の提供を行う処理ノードを前記特定された前記ユーザ端末１０の接続位置および通信速度に基づき決定する通信速度決定機能とを備えている。
これにより、例えば、ユーザ端末１０の現在位置に関する情報に基づき、なるべくユーザ端末１０にネットワーク的に近い位置に存在するネットワーク資源（資源ノード）を使用するといったことが可能となる。
その他の構成は前述した実施形態１と同一となっている。
【０１４３】
次に、実施形態２の動作について、図１６のシーケンス図に基づき説明する。
図１６は、実施形態１における図３と同様に、本実施形態２における、ユーザ端末１０が送信したリクエストに対応するアプリケーションが構築され、計算資源・ネットワーク資源５０の資源ノードに配置されるまでの動作ステップを示している。
【０１４４】
以下、本実施形態２における実施形態１と相違する構成内容に係る動作内容について、説明する。
本実施形態２のアプリケーション構築ブロック２０−１は、ステップＳ２０５のアプリケーション構築工程内において、上述のように、端末情報管理ブロック４０に対してユーザ端末１０の端末情報の問い合わせを行う（図１６：ステップＳ２０７）。
【０１４５】
次いで、端末情報管理ブロック４０は、アプリケーション構築ブロック２０−１からの問い合わせに対してユーザ端末１０の端末情報を返す。
アプリケーション構築ブロック２０−１は端末情報を取得し、アプリケーション構築処理（図１６：ステップＳ２０５）の中で、上記端末情報を検索キーとして利用する。
【０１４６】
具体的には、図４のステップＳ２１６０の接続パターンの絞込みを行うときに、アプリケーション構築ブロック２０−１はユーザ端末１０の端末情報を用いて接続パターンの検索を行う。これにより、モジュール管理ブロック２２では、ユーザ端末１０の端末情報に応じた接続パターンの検索が行われるため、アプリケーション構築ブロック２０−１は検索対象を端末情報に基づき有効に絞り込んだ検索を行うことができる。
【０１４７】
また、アプリケーション構築ブロック２０−１は、構築したアプリケーションと、このアプリケーションに関する情報に加えて、ユーザ端末１０の端末情報を、マッピング要求として処理配置決定ブロック３０に転送する（図１６：ステップＳ２１０）。
【０１４８】
次いで、処理配置決定ブロック３０は、ユーザ端末１０の端末情報に基づき、アプリケーションの計算資源・ネットワーク資源５０における配置先を決定する（図１６：ステップＳ３００）。
これにより、処理配置決定ブロック３０は、例えば、ユーザ端末１０の現在位置を示す情報から、ユーザ端末１０に対してネットワーク的に近い資源ノードに対して構築されたアプリケーションをマッピングすることができる。
【０１４９】
このため、ネットワーク資源（ネットワーク）５０上でユーザ端末１０に対してより近い、つまり、アプリケーションの実行結果がユーザ端末１０に送られるまでにアプリケーション実行結果が経由する資源ノードの数を軽減することができるため、ユーザ端末１０に対してより安定した状態でアプリケーションの実行結果を提供することができる。
【０１５０】
以上のように、実施形態２では、アプリケーション構築ブロック２０−１が、端末情報管理ブロック４０が管理する端末情報を用いて、アプリケーションの構築を行い、アプリケーション構築ブロック２１が、端末情報管理ブロック４０から取得した端末情報を、処理配置決定ブロック３０に転送することで、ユーザ１０の端末の状況を考慮したアプリケーション構築・配置を行うことが可能となる。結果として、ユーザ端末１０の静的情報や動的情報の示す状態や状況に応じて適切なアプリケーションを構築することが可能となる。
【０１５１】
［実施形態３］
次に、本発明の実施形態３について図１７に基づき説明する。
この実施形態３では、図１７に示すように、アプリケーション構築配置装置３の内部構成として、アプリケーション構築ブロック２０−２が構築したアプリケーションを取得し、アプリケーション構築ブロック２０−２から参照可能に保持するアプリケーションキャッシュ管理ブロック６０を備えた点が上述した実施形態１のアプリケーション構築配置装置１の場合と相違する。
【０１５２】
その他の内部構成は、図１のアプリケーション構築・配置システム１と同様であるため、図１７について図１と同一の構成要素には同一の符号を付するものとする。
【０１５３】
アプリケーションキャッシュ管理ブロック６０は、アプリケーション構築ブロック２０−２が構築したアプリケーションを取得して、例えば、予め設定された一定期間、これを保持するキャッシュ記憶手段（構成モジュール記憶手段）として機能する。
ここで、アプリケーションキャッシュ管理ブロック６０が保持している（キャッシュされた）情報の一例であるキャッシュテーブル情報６０１を図１８に示す。
【０１５４】
このキャッシュテーブル情報では、構築されたアプリケーションを一意に識別するためのＩＤと、そのアプリケーションの構築に関する情報とが対応付けられている。
【０１５５】
ここでは、上記ＩＤの例として、ユーザ端末１０からのアプリケーション構築リクエストの内容や、ユーザ端末１０の端末情報などに基づいて、アプリケーションを構築する際にハッシュ値を生成し、これをアプリケーション識別用のＩＤのとして用いるものとする。また、アプリケーションの構築に係り利用される情報に基づきハッシュ値を生成してもよい。
【０１５６】
ここで、アプリケーションの構築に関する情報とは、例えば、アプリケーションの構築に使用したモジュールや、モジュール間の接続に関する情報を示す。
更に、アプリケーション構築ブロック２０−２がアプリケーションキャッシュ管理ブロック６０を参照する際には、このＩＤに基づき検索、参照を行うものとする。
即ち、この場合のアプリケーション構築ブロック２０−２は、前記構築したアプリケーションに含まれる処理モジュールおよび当該処理モジュールの実行順位をアプリケーションログとして記憶する前述した構成モジュール記憶手段を備えており、この構成モジュール記憶手段に記憶した要求と同一の要求が送り込まれた場合に、前記構成モジュール記憶手段に記憶されたアプリケーションログに基づいて構築する（取り出して設定する）ログ参照構築機能を備えた構成となっている。
その他の構成は前述した第１実施形態と同一となっている。
【０１５７】
次に、実施形態３の動作について、図１９のフローチャートに基づき説明する。
図１９は、本実施形態３における、アプリケーション構築ブロック２０−２がアプリケーションの構築を行うのに先だち、キャッシュ管理ブロック６０の参照を行う場合の動作ステップを示している。
【０１５８】
まず、アプリケーション構築ブロック２０−２は、ユーザ端末１０からアプリケーション構築リクエストが送り込まれた場合に、アプリケーション構築リクエストに含まれる処理内容がアプリケーションキャッシュ管理ブロック（キャッシュ管理ブロック）６０内に予め登録されている（キャッシュされている）か否かの判定を行う（図１９：ステップＳ１９００）。
この時、アプリケーション構築ブロック２０−２は、このアプリケーション構築リクエストに含まれるアプリケーションの処理内容を検索キーとして、キャッシュ管理ブロック６０内の検索を行う。
【０１５９】
ここで、上記検索キーに合致するモジュールやアプリケーションなどのエントリが予め登録されている場合に（図１９：イエス、ステップＳ１９００）、アプリケーション構築ブロック２０−２は、キャッシュ管理ブロック６０に予め登録されたモジュールを取得して、これを用いてアプリケーション構築処理を行う（終了：アプリケーションの構築成功）。
【０１６０】
尚、アプリケーションキャッシュ管理ブロック６０は、過去に構築されたアプリケーションなどのエントリをハッシュ値として管理する設定であってもよい。
この場合、アプリケーション構築ブロック２０−２は、アプリケーションキャッシュ管理ブロック６０で検索を行うにあたり、アプリケーションの処理内容に基づきハッシュ値を算出し、これに基づきキャッシュ管理ブロック６０における登録内容を検索する（図１９：ステップＳ１９００）。
【０１６１】
これにより、アプリケーション構築ブロック２０−２により行われる、キャッシュ管理ブロック６０の登録内容の検索処理を高速化することが可能となる。
また、これにより、アプリケーション構築配置装置３に対して接続された異なるユーザ端末間で、同様な端末環境を利用している場合に、過去に構築されたアプリケーションを利用することにより、異なるユーザ端末間で生成されたアプリケーション構築情報を共有することが可能となる。
【０１６２】
一方、エントリが存在しない場合は、存在しないことを示す通知がアプリケーション構築ブロック２０−２に返され、アプリケーション構築ブロック２０−２は、リクエストを満たすようなアプリケーションが存在しない場合は（図１９：ノー、ステップＳ１９００）、図４のフローチャートに示される処理を実行し、アプリケーションを構築する。
【０１６３】
次いで、アプリケーション構築ブロック２０−２は、アプリケーション構築後に、当該新規に構築したアプリケーションに関する情報を、エントリとしてアプリケーションキャッシュ管理ブロック６０に登録する（図１９：ステップＳ２２００）。
このとき、アプリケーション構築ブロック２０−２は、登録内容であるエントリをハッシュ化して登録してもよい。
【０１６４】
尚、キャッシュ管理ブロック６０に登録可能なアプリケーションの情報の量には限りがあるのが一般的であるため、キャッシュ管理ブロック６０は、各エントリに対するアクセス頻度や登録されてからの経過時間に応じて、エントリ（登録情報）の入れ替えを行う設定であってもよい。また、このような登録情報の入れ替え処理は、一般にＣＰＵに搭載されているキャッシュメモリにおける制御と同様の技術により実現可能である。
【０１６５】
以上のように、本実施形態３（図１７）では、キャッシュ管理ブロック６０内に過去にアプリケーション構築ブロック２０−２で構築されたアプリケーションに関する情報がエントリ（登録情報）として登録されている。
このため、この登録情報を参照することにより、同様のアプリケーションの構築リクエストがユーザ端末１０から送り込まれた場合に、アプリケーション構築ブロック２０−２が、アプリケーションキャッシュ管理ブロック６０から過去に構築したアプリケーションに関する登録情報を取得することにより、モジュールを新たに取得し接続するアプリケーションの構築処理を行うことなく、アプリケーションを生成することができ、この場合、処理は位置決定ブロック３０は、計算資源・ネットワーク資源５０における資源ノードに対してより迅速に、アプリケーションを配置することが可能となる。
【０１６６】
上述の実施形態については、その新規な技術的内容の要点をまとめると、以下のようになる。
尚、上記実施形態の一部または全部は、新規な技術として以下のようにまとめられるが、本発明は必ずしもこれに限定されるものではない。
【０１６７】
（付記１）資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築するアプリケーション構築部と、前記アプリケーションの構成要素である処理モジュールを記憶するモジュール管理部と、前記構築したアプリケーションを前記資源ノードに配置する処理資源決定配置部とを設け、
前記アプリケーション構築部は、前記ユーザ端末からの要求に含まれる処理内容に基づき前記モジュール管理部から前記アプリケーションを構成する処理モジュールを取得すると共に、前記処理内容に基づき前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し当該推定した実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定する処理モジュール選出取得機能を有し、
前記処理資源決定配置部は、構築された前記アプリケーションの処理内容および推定された前記実行負荷値に基づき前記アプリケーションの実行先である資源ノードを決定する処理資源決定機能を備えていることを特徴としたアプリケーション構築配置システム。
【０１６８】
（付記２）付記１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、前記取得した各処理モジュールにおける入力受け付け可能な入力データの数および各処理モジュールの処理結果としての出力データの数に基づき前記構築したアプリケーションにおける処理モジュールの実行順位を処理の依存関係として決定するモジュール実行順位決定機能を備えたことを特徴とするアプリケーション構築配置システム。
【０１６９】
（付記３）付記１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、
前記要求に含まれた前記ユーザ端末における処理能力に係るハードウェア情報に基づき、前記アプリケーションの実行結果を取得したときの前記ユーザ端末における処理負荷軽減用に前記取得した処理モジュールの接続パターンを決定する静的負荷決定機能を備えたことを特徴とするアプリケーション構築配置システム。
【０１７０】
（付記４）付記１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、
前記ユーザ端末における通信状態を重要な端末情報として検出する通信状態検知機能と、前記検出した通信状態に基づいて前記アプリケーションの実行結果を受信取得する際の前記ユーザ端末における通信負荷軽減用に前記取得した処理モジュールの接続パターンを決定する動的負荷決定機能とを備えたことを特徴とするアプリケーション構築配置システム。
【０１７１】
（付記５）付記１に記載のアプリケーション構築配置システムにおいて、
前記処理資源決定配置部は、
前記ユーザ端末の前記ネットワークへの接続位置を示す接続位置情報および前記ネットワークへの通信安定度を検知する接続位置特定機能と、
前記ユーザ端末に対して前記アプリケーションの実行結果の提供を行う処理ノードを前記特定された前記ユーザ端末の接続位置および通信速度に基づき決定する通信速度決定機能とを備えたことを特徴とするアプリケーション構築配置システム。
【０１７２】
（付記６）付記１に記載のアプリケーション構築配置システムにおいて、
前記アプリケーション構築部は、
前記構築したアプリケーションに含まれる処理モジュールおよび当該処理モジュールの実行順位をアプリケーションログとして記憶する構成モジュール記憶手段を備え、
前記記憶した要求と同一の要求が送り込まれた場合に、前記構成モジュール記憶手段に記憶されたアプリケーションログに基づき構築するログ参照構築機能を備えたことを特徴とするアプリケーション構築配置システム。
【０１７３】
（付記７）付記１に記載のアプリケーション構築配置システムにおいて、
前記処理資源決定配置部は、
前記アプリケーションの実行用に割り当て可能なリソース総量を設定すると共に、当該設定されたリソース総量の範囲内で前記アプリケーションの実行を行う前記資源ノードを決定する資源総量決定機能とを備えたことを特徴とするアプリケーション構築配置システム。
【０１７４】
（付記８）付記１に記載のアプリケーション構築配置システムにおいて、
前記処理資源決定配置部は、
前記ユーザ端末に対して提供された前記アプリケーションの実行結果の処理状態を検知する実行結果処理検知機能と、
前記検知した処理状態に基づき前記アプリケーションの前記実行結果の処理遅延時間を算出する実行結果処理遅延時間算出機能と、
前記処理遅延時間の抑制用に前記抽出された処理ノードの接続パターンを更新する処理ノード接続パターン更新機能とを備えたことを特徴とするアプリケーション構築配置システム。
【０１７５】
（付記９）ネットワークを介して接続された資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築し、この構築したアプリケーションを前記資源ノードに配備するアプリケーション構築配置方法であって、
前記アプリケーションを構築するアプリケーション構築部が、前記ユーザ端末からの要求に含まれる処理内容に基づき前記アプリケーションを構成する前記処理モジュールをモジュール管理部から取得して前記処理内容に基づき前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定し、且つ当該推定された実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定し、
前記構築されたアプリケーションの処理内容および前記実行負荷値に基づいて、前記処理資源決定配置部が前記アプリケーションの実行先である資源ノードを決定し、
前記資源ノードが、前記処理資源決定配置部から送られた前記アプリケーションを実行し、その実行結果を前記ユーザ端末に提供するようにしたことを特徴とするアプリケーション構築配置方法。
【０１７６】
（付記１０）ネットワークを介して接続された資源ノード上で実行されるアプリケーションをユーザ端末からの要求に応じて構築するアプリケーション構築部と、前記アプリケーションの構成要素である処理モジュールを記憶するモジュール管理部と、前記構築したアプリケーションを前記資源ノードに配置する処理資源決定配置部とを備えたアプリケーション構築配置システムにあって、前記ユーザ端末に、前記資源ノードで実行される前記アプリケーションの実行結果を提供するためのアプリケーション構築配置プログラムであって、
前記ユーザ端末からの要求に含まれる処理内容に基づき前記アプリケーションを構成する前記処理モジュールをモジュール管理部から取得する処理モジュール選出取得処理機能、
前記ユーザ端末からの要求に含まれる処理内容に基づいて前記アプリケーションの実行にかかる処理負荷を示す実行負荷値を推定する負荷推定処理機能、
この負荷推定処理機能で推定された実行負荷値に基づいて前記取得した異なる処理モジュールの結合パターンを決定するモジュール結合パターン決定処理機能、
および前記構築されたアプリケーションの処理内容および前記実行負荷値に基づいて前記アプリケーションの実行先である資源ノードを決定する処理資源決定処理機能とを設け、
これらの各処理機能を、前記アプリケーション構築配置システムのコンピュータに実現させるようにしたことを特徴とするアプリケーション構築配置プログラム。
【０１７７】
この出願は２０１１年２月２３日に出願された日本出願特願２０１１−０３７７０１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１７８】
本発明は、アプリケーション構築システム、方法、プログラムに関し、特に端末の持つ機能、端末の状態、入出力データ形式、処理内容に応じてアプリケーションを構築することができるシステムに対して有用に適用することができる。
【符号の説明】
【０１７９】
１、２、３  アプリケーション構築配置装置
１０  ユーザ端末
２０、２０−１、２０−２  アプリケーション構築ブロック（アプリケーション構築部）
２２  モジュール管理ブロック（モジュール管理部）
３０  処理配置決定ブロック（処理資源決定配置部）
４０  端末情報管理ブロック
５０  計算資源・ネットワーク資源
６０  アプリケーションキャッシュ管理ブロック
【図１】
2012114889.tif 000003
【図２】
2012114889.tif 000004
【図３】
2012114889.tif 000005
【図４】
2012114889.tif 000006
【図５】
2012114889.tif 000007
【図６】
2012114889.tif 000008
【図７】
2012114889.tif 000009
【図８】
2012114889.tif 000010
【図９】
2012114889.tif 000011
【図１０】
2012114889.tif 000012
【図１１】
2012114889.tif 000013
【図１２】
2012114889.tif 000014
【図１３】
2012114889.tif 000015
【図１４】
2012114889.tif 000016
【図１５】
2012114889.tif 000017
【図１６】
2012114889.tif 000018
【図１７】
2012114889.tif 000019
【図１８】
2012114889.tif 000020
【図１９】
2012114889.tif 000021
【国際調査報告】
2012114889.tif 000022
2012114889.tif 000023
2012114889.tif 000024
2012114889.tif 000025