(57)【要約】【課題】コード実行サービスを用いて複数のプログラムコードを実行することにより業務を実現する場合に、実行するコード実行サービスをプログラムコード毎に独立して選択する構成と比較して、業務の処理効率を向上する。【解決手段】コード関係定義管理テーブルは、複数のコード間の関係度を、複数のコード間の処理関係に基づいて格納している。関係度管理テーブルは、複数のコード間の関係度毎に、コードを実行するクラウドサービスを選択するためのクラウドサービス選択条件を格納している。コード実行環境選択部４３は、複数のコード間の関係度をコード関係定義管理テーブルの情報を参照して判定し、判定した関係度と関係度管理テーブルの情報に基づいてクラウドサービス選択条件を特定し、特定したクラウドサービス選択条件に合致するクラウドサービスをそれぞれのコード毎に選択する。【選択図】図３
2017219900.tif 000002
【特許請求の範囲】
【請求項１】
複数のプログラムコード間の関係度を、複数のプログラムコード間の処理関係に基づいて格納する第１の格納手段と、
複数のプログラムコード間の関係度毎に、プログラムコードを実行するコード実行サービスを選択する選択条件を格納する第２の格納手段と、
複数のプログラムコードを実行するコード実行サービスを複数のコード実行サービスの中からそれぞれ選択する際に、前記第１の格納手段によって格納された情報に基づいて算出された当該複数のプログラムコード間の関係度と前記第２の格納手段に格納された情報に基づいて、コード実行サービスの選択条件を特定し、特定した当該選択条件に合致するコード実行サービスをそれぞれのプログラムコード毎に選択する選択手段と、
を備えた情報処理装置。
【請求項２】
前記第２の格納手段は、コード実行サービスのサービス提供場所の制約条件および提供事業者の制約条件を選択条件として関係度毎に格納する請求項１記載の情報処理装置。
【請求項３】
プログラムコードの実行者毎に、プログラムコードを実行する際の価格条件、コード実行サービスのサービス提供場所の条件を格納する第３の格納手段をさらに備え、
前記選択手段は、実行者毎の価格条件およびサービス提供場所の条件を参照して、プログラムコードを実行するコード実行サービスを選択する請求項１又は２記載の情報処理装置。
【請求項４】
コード実行サービスに関する情報が変更された場合、それぞれのプログラムコードの選択条件に合致する新たなコード実行サービスを選択して、当該プログラムコードを実行するコード実行サービスとして更新する更新手段をさらに備えた請求項１から３のいずれか１項記載の情報処理装置。
【請求項５】
複数のプログラムコード間の関係度を、複数のプログラムコード間の処理関係に基づいて格納する第１の格納ステップと、
複数のプログラムコード間の関係度毎に、プログラムコードを実行するコード実行サービスを選択する選択条件を格納する第２の格納ステップと、
複数のプログラムコードを実行するコード実行サービスを複数のコード実行サービスの中からそれぞれ選択する際に、前記第１の格納ステップにおいて格納された情報に基づいて算出された当該複数のプログラムコード間の関係度と前記第２の格納ステップにおいて格納された情報に基づいて、コード実行サービスの選択条件を特定し、特定した当該選択条件に合致するコード実行サービスをそれぞれのプログラムコード毎に選択する選択ステップとをコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置およびプログラムに関する。
【背景技術】
【０００２】
特許文献１には、各クラウドサービスの仕様を記録しておき、ユーザからの仮想マシンの調達要求があった場合、ユーザの指定した条件に合致するクラウドサービスを選択して、選択されたクラウドサービスに対して仮想マシンの作成、起動、停止、削除を実行するリソース管理装置が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−１８４９９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
近年、クラウドサービスに予めプログラムコード（以下、コードと省略する。）を登録（アップロード）しておき、特定のリクエストやイベントの発生に基づいて登録されていたコードを実行するようなコード実行サービスが実現されている。このようなコード実行サービスを用いる場合、価格条件や性能条件等に基づいてコードを実行するクラウドサービスを選択することになる。
【０００５】
しかし、複数のコードを実行することにより１つの業務を実現するような際に、コード毎にそれぞれ単独で実行するクラウドサービスを選択すると、複数のコード間に処理上の関係性があるような場合、実現される業務の処理効率が悪化してしまう可能性がある。
【０００６】
例えば、あるコードの出力データが別のコードの入力データとなっているような場合、それぞれのコードが、異なるクラウド事業者により提供されるクラウドサービス上で実行されたり、異なる国において提供されるクラウドサービス上で実行されると異なる事業者間や異なる国間で頻繁にデータ送受信を行う必要があり業務の処理効率が悪化してしまう場合がある。
【０００７】
本発明の目的は、コード実行サービスを用いて複数のプログラムコードを実行することにより業務を実現する場合に、実行するコード実行サービスをプログラムコード毎に独立して選択する構成と比較して、業務の処理効率を向上させることが可能な情報処理装置およびプログラムを提供することである。
【課題を解決するための手段】
【０００８】
［情報処理装置］
請求項１に係る本発明は、複数のプログラムコード間の関係度を、複数のプログラムコード間の処理関係に基づいて格納する第１の格納手段と、
複数のプログラムコード間の関係度毎に、プログラムコードを実行するコード実行サービスを選択する選択条件を格納する第２の格納手段と、
複数のプログラムコードを実行するコード実行サービスを複数のコード実行サービスの中からそれぞれ選択する際に、前記第１の格納手段によって格納された情報に基づいて算出された当該複数のプログラムコード間の関係度と前記第２の格納手段に格納された情報に基づいて、コード実行サービスの選択条件を特定し、特定した当該選択条件に合致するコード実行サービスをそれぞれのプログラムコード毎に選択する選択手段とを備えた情報処理装置である。
【０００９】
請求項２に係る本発明は、前記第２の格納手段が、コード実行サービスのサービス提供場所の制約条件および提供事業者の制約条件を選択条件として関係度毎に格納する請求項１記載の情報処理装置である。
【００１０】
請求項３に係る本発明は、プログラムコードの実行者毎に、プログラムコードを実行する際の価格条件、コード実行サービスのサービス提供場所の条件を格納する第３の格納手段をさらに備え、
前記選択手段は、実行者毎の価格条件およびサービス提供場所の条件を参照して、プログラムコードを実行するコード実行サービスを選択する請求項１又は２記載の情報処理装置である。
【００１１】
請求項４に係る本発明は、コード実行サービスに関する情報が変更された場合、それぞれのプログラムコードの選択条件に合致する新たなコード実行サービスを選択して、当該プログラムコードを実行するコード実行サービスとして更新する更新手段をさらに備えた請求項１から３のいずれか１項記載の情報処理装置である。
【００１２】
[プログラム]
請求項５に係る本発明は、複数のプログラムコード間の関係度を、複数のプログラムコード間の処理関係に基づいて格納する第１の格納ステップと、
複数のプログラムコード間の関係度毎に、プログラムコードを実行するコード実行サービスを選択する選択条件を格納する第２の格納ステップと、
複数のプログラムコードを実行するコード実行サービスを複数のコード実行サービスの中からそれぞれ選択する際に、前記第１の格納ステップにおいて格納された情報に基づいて算出された当該複数のプログラムコード間の関係度と前記第２の格納ステップにおいて格納された情報に基づいて、コード実行サービスの選択条件を特定し、特定した当該選択条件に合致するコード実行サービスをそれぞれのプログラムコード毎に選択する選択ステップとをコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１３】
請求項１に係る本発明によれば、コード実行サービスを用いて複数のプログラムコードを実行することにより業務を実現する場合に、実行するコード実行サービスをプログラムコード毎に独立して選択する構成と比較して、業務の処理効率を向上させることが可能な情報処理装置を提供することができる。
【００１４】
請求項２に係る本発明によれば、コード実行サービスを用いて複数のプログラムコードを実行することにより業務を実現する場合に、実行するコード実行サービスをプログラムコード毎に独立して選択する構成と比較して、業務の処理効率を向上させることが可能な情報処理装置を提供することができる。
【００１５】
請求項３に係る本発明によれば、プログラムコードの実行者毎の価格条件およびサービス提供場所の条件に合致したコード実行サービスを選択することが可能な情報処理装置を提供することができる。
【００１６】
請求項４に係る本発明によれば、コード実行サービスに関する情報が変更された場合でも、プログラムコードを実行するコード実行サービスを更新することが可能な情報処理装置を提供することができる。
【００１７】
請求項５に係る本発明によれば、コード実行サービスを用いて複数のプログラムコードを実行することにより業務を実現する場合に、実行するコード実行サービスをプログラムコード毎に独立して選択する構成と比較して、業務の処理効率を向上させることが可能なプログラムを提供することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の一実施形態のクラウドサービス実行システムのシステム構成を示す図である。
【図２】本発明の一実施形態におけるタスク実行管理装置１０のハードウェア構成を示すブロック図である。
【図３】本発明の一実施形態におけるタスク実行管理装置１０の機能構成を示すブロック図である。
【図４】クラウドサービス情報管理テーブルの一例を説明するための図である。
【図５】コード管理ＤＢ５４内のコード管理テーブルの一例を説明するための図である。
【図６】タスク情報管理ＤＢ５１内のタスク管理テーブルの一例を説明するための図である。
【図７】ユーザ条件管理ＤＢ５５内のユーザ条件管理テーブルの一例を説明するための図である。
【図８】コード関係度管理ＤＢ５３内のコード関係定義管理テーブルの一例を説明するための図である。
【図９】コード関係度管理ＤＢ５３内の関係度管理テーブルの一例を説明するための図である。
【図１０】本発明の一実施形態のタスク実行管理装置１０の動作を説明するためのフローチャートである。
【図１１】タスク情報管理ＤＢ５１内のコード関係度管理テーブルの一例を説明するための図である。
【図１２】タスク情報管理ＤＢ５１内のコード実行環境管理テーブルの一例を説明するための図である。
【図１３】クラウドサービス情報管理テーブルの内容が変更された場合のコード実行環境更新部４４の動作を説明するためのフローチャートである。
【図１４】変更後のクラウドサービス情報管理テーブルの一例を説明するための図である。
【図１５】更新後のコード実行環境管理テーブルの一例を説明するための図である。
【発明を実施するための形態】
【００１９】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００２０】
図１は本発明の一実施形態のクラウドサービス実行システムの構成を示すシステム図である。
【００２１】
本実施形態のクラウドサービ実行スシステムは、図１に示されるように、タスク実行管理装置１０と、端末装置２１〜２３と、クラウドサービスを提供しているサーバ装置３１〜３３とから構成されている。なお、端末装置２１〜２３とタスク実行管理装置１０との間、およびサーバ装置３１〜３３とタスク実行管理装置１０との間はインターネット等のネットワークにより接続されている。
【００２２】
ここで、サーバ装置３１、３２、３３は、それぞれ、クラウドサービス事業者（クラウド事業者）であるＡ社、Ｂ社、Ｃ社により運営され、クラウドサービスを提供するサービス提供装置として動作している。
【００２３】
端末装置２１〜２３は、それぞれ、ユーザＸ、Ｙ、Ｚにより操作されており、複数のプログラムコード（以下、コードと略す。）を実行することにより実現されるタスク（業務）の実行をタスク実行管理装置１０に依頼する。
タスク実行管理装置１０は、端末装置２１〜２３からの依頼に基づいて、依頼を受けたタスクを実現するための複数のコードを実行するクラウドサービスを、サーバ装置３１〜３３により提供されている複数のクラウドサービスの中から選択する。
【００２４】
なお、図１では、クラウド事業者Ａ社、Ｂ社、Ｃ社のサーバ装置３１〜３３がそれぞれ１台であるような構成として示されているが、クラウド事業者Ａ社、Ｂ社、Ｃ社はそれぞれ１台のサーバ装置を用いてクラウドサービスを提供しているのではなく、それぞれ複数のサーバ装置等の様々なハードウェア構成によりクラウドサービスを提供している。また、各クラウド事業者Ａ社、Ｂ社、Ｃ社は、１つのクラウドサービスを提供しているのではなく、それぞれ複数のクラウドサービスを提供している。そして、それぞれのクラウドサービスを実現するためのサーバ装置等は、様々な場所に設置されており、異なる都市に設置されていたり異なる国に設置されている場合もある。
【００２５】
次に、本実施形態のクラウドサービス実行システムにおけるタスク実行管理装置１０のハードウェア構成を図２に示す。
【００２６】
タスク実行管理装置１０は、図２に示されるように、ＣＰＵ１１、メモリ１２、ハードディスクドライブ（ＨＤＤ）等の記憶装置１３、ネットワーク３０を介してクライアント装置２０、Ｗｅｂサーバ装置４１〜４３等の外部装置との間でデータの送信及び受信を行う通信インタフェース（ＩＦ）１４、タッチパネル又は液晶ディスプレイ並びにキーボードを含むユーザインタフェース（ＵＩ）装置１５を有する。これらの構成要素は、制御バス１６を介して互いに接続されている。
【００２７】
ＣＰＵ１１は、メモリ１２または記憶装置１３に格納された制御プログラムに基づいて所定の処理を実行して、タスク実行管理装置１０の動作を制御する。なお、本実施形態では、ＣＰＵ１１は、メモリ１２または記憶装置１３内に格納された制御プログラムを読み出して実行するものとして説明したが、当該プログラムをＣＤ−ＲＯＭ等の記憶媒体に格納してＣＰＵ１１に提供することも可能である。
【００２８】
図３は、上記の制御プログラムが実行されることにより実現されるタスク実行管理装置１０の機能構成を示すブロック図である。
【００２９】
本実施形態のタスク実行管理装置１０は、図３に示されるように、タスク実行指示受信部４１と、タスク実行管理部４２と、コード実行環境選択部４３と、コード実行環境更新部４４と、タスク情報管理ＤＢ（データベース）５１と、クラウドサービス情報管理ＤＢ５２と、コード関係度管理ＤＢ５３と、コード管理ＤＢ５４と、ユーザ条件管理ＤＢ５５とを備えている。
【００３０】
タスク情報管理ＤＢ５１は、タスク管理テーブル、コード関係度管理テーブル、コード実行環境管理テーブルを格納している。
【００３１】
クラウドサービス情報管理ＤＢ５２は、クラウドサービス情報テーブルを格納している。このクラウドサービス情報テーブルは、複数のクラウドサービス（コード実行サービス）に関する情報を格納している。
【００３２】
また、コード関係度管理ＤＢ５３は、コード関係定義管理テーブルおよび関係度管理テーブルを格納している。このコード関係定義管理テーブルは、複数のコード間の関係度を、複数のコード間の処理関係に基づいて格納している。また、関係度管理テーブルは、複数のコード間の関係度毎に、コードを実行するクラウドサービスを選択するクラウドサービス選択条件を格納している。具体的には、関係度管理テーブルは、コードを実行するクラウドサービスのサービス提供場所の制約条件および提供事業者の制約条件をクラウドサービス選択条件として関係度毎に格納している。
【００３３】
そして、コード管理ＤＢ５４は、コード管理テーブルを格納している。ユーザ条件管理ＤＢ５５は、ユーザ条件テーブルを格納している。ユーザ条件テーブルは、タスクの実行ユーザ毎に、コードを実行する際の価格条件、クラウドサービスのサービス提供場所の条件を格納している。
【００３４】
次に、図４を参照してクラウドサービス情報管理ＤＢ５２内のクラウドサービス情報管理テーブルの一例を説明する。
【００３５】
図４に示したクラウドサービス情報管理テーブルでは、クラウド事業者Ａ社、Ｂ社、Ｃ社により提供されているコード実行サービス毎に、クラウドサービスＩＤ、それぞれのクラウドサービスを提供しているクラウド事業者、それぞれのクラウドサービスにおいて実行可能なプログラム言語、コードを実行する際の価格、サービス実行サービスのサービス提供場所であるロケーションの情報が格納されている。
【００３６】
クラウドサービスＩＤは、システム内で割り当てられたＩＤであり、それぞれのクラウドサービスを識別可能な情報となっている。また、上記の価格の情報は、例えば、コードを１回実行するために必要な価格、コードを実行した際の単位時間あたりにかかる価格を示している。
【００３７】
例えば、クラウドサービスＩＤが「CLOUD-001」のクラウドサービスは、クラウド事業者が「Ａ社」であり、実行可能なプログラム言語が「Ｊａｖａ（登録商標）」であり、例えば、１回の実行毎の価格が「＄２．０」であり、ロケーションが「日本（東京）」であるという情報が登録されている。なお、他のクラウドサービスでは、「Ｊａｖａ」以外のプログラム言語として、「ＪａｖａＳｃｒｉｐｔ（登録商標）」や「Python」が使用可能なプログラム言語として登録されているものもある。
【００３８】
次に、図５を参照してコード管理ＤＢ５４内のコード管理テーブルの一例を説明する。
【００３９】
図５に示したコード管理テーブルでは、タスク実行管理装置１０内において管理されている実行可能なコードの一覧情報が管理されており、コードＩＤ、実行コードの実行内容を表すコード名称、実行コードが記述されているプログラム言語および実行コードの情報が格納されている。
【００４０】
例えば、コードＩＤが「CODE-001」の実行コードは、コード名称が「統計データ解析」で、プログラム言語が「Ｊａｖａ」であるという情報が登録されている。
【００４１】
次に、図６を参照してタスク情報管理ＤＢ５１内のタスク管理テーブルの一例を説明する。
【００４２】
図６に示したタスク管理テーブルでは、端末装置２１〜２３を介して登録されたタスクに関する情報が管理されており、タスクＩＤ、実行ユーザ（実行者）、タスク処理内容の情報が格納されている。
【００４３】
例えば、タスクＩＤが「TASK-001」のタスクでは、実行ユーザが「ユーザＸ」であり、タスク処理内容が「CODE-003の出力ファイルをCODE-002に渡して実行する。」という情報が登録されている。
【００４４】
次に、図７を参照してユーザ条件管理ＤＢ５５内のユーザ条件管理テーブルの一例を説明する。
【００４５】
図７に示したユーザ条件管理テーブルでは、コードをアップロードするクラウドサービスを決定するためにユーザが設定した各種条件が格納されている。具体的には、このユーザ条件管理テーブルでは、ユーザ条件ＩＤ、実行ユーザ、価格条件、ロケーション条件が格納されている。
【００４６】
例えば、ユーザ条件ＩＤが「CONDITION-001」のユーザ条件は、「ユーザＸ」により登録されたユーザ条件であり、価格条件として「＄１．５以内」、ロケーション条件として「北米」という情報が登録されている。つまり、ユーザＸは、コードを実行するクラウドサービスとして、1回の実行費用が＄１．５以内であり、サービス提供場所が北米であるクラウドサービスを条件として登録していることになる。
【００４７】
次に、図８を参照してコード関係度管理ＤＢ５３内のコード関係定義管理テーブルの一例を説明する。
【００４８】
図８に示したコード関係定義管理テーブルでは、２つのコード（コード１、コード２）間の関係と、その関係度とが対応付けられて格納されている。
【００４９】
例えば、コード関係定義ＩＤが「RELATION-001」というコード関係定義では、「あるコード（コード１）の出力ファイルが別のコード（コード２）の入力ファイルになっている。」というコード関係が定義され、このコード関係定義に合致する２つのコード間の関係度は「大」であるという情報が登録されている。
【００５０】
なお、図８に示したコード関係定義管理テーブルでは、説明を簡単にするために２つのコード間の関係度が設定されている場合を用いて説明しているが、３つ以上のコード間の関係度を同様な方法により定義することも可能である。
【００５１】
次に、図９を参照してコード関係度管理ＤＢ５３内の関係度管理テーブルの一例を説明する。
【００５２】
図９に示した関係度管理テーブルでは、２つのコード間の関係度と、この関係度に対応したクラウドサービス選択条件とが対応付けられて格納されている。
【００５３】
例えば、関係度が「大」の場合、クラウドサービス選択条件として、「クラウド事業者が同じ」、「ロケーションが同じ都市」であるという条件が設定されている。
【００５４】
なお、タスク情報管理ＤＢ５１内のコード関係度管理テーブルとコード実行環境管理テーブルの具体例については後述する。
【００５５】
図３のブロック図に戻ってタスク実行管理装置１０の他の構成を説明する。
【００５６】
タスク実行指示受信部４１は、端末装置２１〜２３からのタスク実行指示を受信する。
【００５７】
タスク実行管理部４２は、タスク実行指示受信部４１により受信されたタスク実行指示に基づいて、実行指示されたタスクをタスク情報管理ＤＢ５１のタスク管理テーブルに登録したり、実行指示されたタスクを実現するための複数のコードを、サーバ装置３１〜３３のいずれかに送信して実行するような処理を行う。
【００５８】
コード実行環境選択部４３は、ある１つのタスクを実現するために必要な複数のコードを実行するクラウドサービスを複数のクラウドサービスの中からそれぞれ選択する際に、その複数のコード間の関係度をコード関係度管理ＤＢ５３に格納されたコード関係定義管理テーブルの情報に基づいて算出し、算出された関係度と関係度管理テーブルの情報に基づいてクラウドサービス選択条件を特定し、特定したクラウドサービス選択条件に合致するクラウドサービスをそれぞれのコード毎に選択する。
【００５９】
さらに、コード実行環境選択部４３は、ユーザ条件管理テーブルに格納されたコードの実行ユーザ毎の価格条件およびサービス提供場所の条件を参照して、コードを実行するクラウドサービスを選択する。
【００６０】
また、コード実行環境更新部４４は、クラウドサービス情報管理ＤＢ５２内のクラウドサービス情報管理テーブルに格納されたクラウドサービスに関する情報が変更された場合、それぞれのコードのクラウドサービス選択条件に合致する新たなクラウドサービスを選択して、そのコードを実行するクラウドサービスとして更新する。
【００６１】
そして、タスク実行管理部４２は、タスク実行指示受信部４１により受信されたタスクを実行する場合には、タスク情報管理ＤＢ５１内のコード実行環境管理テーブルに登録されているコード実行環境において指定されたクラウドサービスに対して、コード情報を送信してコードの実行を指示してタスクを実現する。
【００６２】
なお、クラウドサービスを提供しているサーバ装置３１〜３３は、それぞれコード実行部６１と、コード格納部６２とを備えている。サーバ装置３１〜３３は、タスク実行管理装置１０から送信されてきたコードをコード格納部６２に格納し、コード実行部６１は、予め設定されたイベントの発生等に基づいてコード格納部６２に格納されたコードを実行する。
【００６３】
次に、本実施形態のタスク実行管理装置１０の動作について図面を参照して説明する。
【００６４】
図１０は、本実施形態のタスク実行管理装置１０の動作を説明するためのフローチャートである。
【００６５】
以下の説明では、図６のタスク管理テーブルに示されたタスクＩＤが「TASK-001」のタスクを新規登録する際の動作を参照して説明する。
【００６６】
まず、コード実行環境選択部４３は、図７に示したユーザ条件管理テーブルから、新規登録を指示されたタスクの実行ユーザに対応する価格条件とロケーション条件を取得する（ステップＳ１０１）。ここでは、タスクＩＤが「TASK-001」のタスクの実行ユーザは「ユーザＸ」であるため、価格条件として「＄１．５以内」、ロケーション条件として「北米」という情報が取得される。
【００６７】
そして、コード実行環境選択部４３は、図６に示したタスク管理テーブルから、新規登録を指示されたタスクのコードの一覧を取得する（ステップＳ１０２）。ここでは、コード実行環境選択部４３は、コードＩＤが「CODE-002」のコードとコードＩＤが「CODE-003」のコードを一覧情報として取得する。
【００６８】
すると、コード実行環境選択部４３は、図８に示したコード関係定義管理テーブルから、取得した２つのコード（CODE-002、CODE-003）の関係度を取得する（ステップＳ１０３）。
【００６９】
ここでは、一方のコード（CODE-003）の出力ファイルが他方のコード（CODE-002）の入力ファイルとなっているので、コード関係定義ＩＤがRELATION-001のコード関係定義に合致する。そのため、コード実行環境選択部４３は、２つのコードの関係度として「大」という情報を取得する。
【００７０】
そして、コード実行環境選択部４３は、図１１に示すように、取得した２つのコードの関係度をタスク情報管理ＤＢ５１のコード関係度管理テーブルに登録する。図１１を参照すると、タスクＩＤ「TASK-001」のタスクでは、２つのコード（CODE-002、CODE-003）の関係度が「大」であるという情報が登録されているのが分かる。
【００７１】
次に、コード実行環境選択部４３は、図９に示した関係度管理テーブルから、取得した関係度に対応するクラウドサービス選択条件を取得する（ステップＳ１０４）。
【００７２】
ここでは、２つのコードの関係度が「大」であるため、コード実行環境選択部４３は、クラウドサービス選択条件として、「クラウド事業者が同じ」、「ロケーションが同じ都市」であるという条件を取得する。
【００７３】
最後に、コード実行環境選択部４３は、図４に示したクラウドサービス情報管理テーブルを参照して、それぞれのコードを実行するコード実行環境を選択する（ステップＳ１０５）。
【００７４】
具体的には、コード実行環境選択部４３は、ステップＳ１０１において取得した価格条件、ロケーション条件、それぞれのコードのプログラム言語、ステップＳ１０４において取得されたクラウドサービス条件に合致するクラウドサービスをそれぞれのコードのコード実行環境として選択する。
【００７５】
上記で説明した具体例では、コードＩＤがCODE-002、CODE-003のコードは、プログラム言語がそれぞれ「ＪａｖａＳｃｒｉｐｔ」、「Ｐｙｔｈｏｎ」であり、ユーザＸの価格条件が「＄１．５以内」、ロケーション条件が「北米」であり、２つのコードの関係度に基づくクラウドサービス選択条件が「クラウド事業者が同じ」、「ロケーションが同じ都市」である。
【００７６】
そのため、コード実行環境選択部４３は、コードＩＤがCODE-002のコードのコード実行環境として、クラウドサービスＩＤがCLOUD-11のクラウドサービスを選択する。また、コード実行環境選択部４３は、コードＩＤがCODE-003のコードのコード実行環境として、クラウドサービスＩＤがCLOUD-09のクラウドサービスを選択する。
【００７７】
なお、１つのコードに対して全ての条件に合致するクラウドサービスが複数存在する場合には、コード実行環境選択部４３は、価格が最も低いクラウドサービスを選択するようにしても良い。
【００７８】
最後に、コード実行環境選択部４３は、選択したコード実行環境で上記以外の指定された条件が満たされるか否かを判定する（ステップＳ１０６）。
【００７９】
例えば、コード実行環境選択部４３は、２つのコードを組み合わせて実行した場合の処理時間が制限時間以内に収まっていることのような条件が指定されている場合には、一時的にコードを選択したコード実行環境に配置して動作させたうえで指定された条件が満たされるか否かを判定する。
【００８０】
そして、指定された条件が満たされる場合（ステップＳ１０６においてｙｅｓ）、コード実行環境選択部４３は、選択したコード実行環境を図１２に示したコード実行環境管理テーブルに登録する（ステップＳ１０７）。なお、同一のコードであっても、異なるタスクの実現に使用される場合には、別のクラウドサービスがコード実行環境として選択される場合もある。
【００８１】
なお、指定された条件が満たされない場合（ステップＳ１０６においてｎｏ）、コード実行環境選択部４３は、エラー処理を行って条件に合致するクラウドサービスが存在旨をユーザに通知する等の処理を行う（ステップＳ１０８）。
【００８２】
このように本実施形態のタスク実行管理装置１０では、１つのタスクを実現するために実行される２つのコードを実行するクラウドサービスを選択する際に、単にそれぞれのコードの条件に合致するクラウドサービスが別々に選択されるのではなく、２つのコード間の関係度に対応して登録されたクラウドサービス選択条件に基づいて、それぞれのコードを実行するクラウドサービスが選択される。
【００８３】
次に、図１３のフローチャートを参照して、クラウドサービス情報管理テーブルの内容が変更された場合のコード実行環境更新部４４の動作を説明する。
【００８４】
例えば、図１４に示すようにクラウドサービス情報管理テーブルが変更された場合を用いて説明する。
【００８５】
この図１４に示したクラウドサービス情報管理テーブルでは、クラウドサービス事業者であるＤ社によるクラウドサービス（CLOUD-013、CLOUD-014）が追加されている。
【００８６】
このようなクラウドサービス情報管理テーブルが更新された場合（ステップＳ２０１においてｙｅｓ）、コード実行環境更新部４４は、タスク毎にそれぞれのコードで新たなコード実行環境が選択可能か否かを確認する（ステップＳ２０２）。
【００８７】
そして、コード実行環境更新部４４は、選択可能なコード実行環境が存在し（ステップＳ２０３においてｙｅｓ）、指定された条件が選択可能なコード実行環境により満たされる場合（ステップＳ２０４においてｙｅｓ）、その選択可能なコード実行環境によりコード実行環境管理テーブルを更新する（ステップＳ２０５）。
【００８８】
例えば、図１４に示されたようにクラウドサービス情報管理テーブルが変更された場合、コード実行環境更新部４４は、タスクＩＤがTASK-001のタスクについてのコード（CODE-002、CODE-003）の実行環境を、変更後のクラウドサービス情報管理テーブルを参照して検索する。
【００８９】
すると、CODE-002のコードについては、プログラム言語が「ＪａｖａＳｃｒｉｐｔ」であり、ユーザＸのロケーション条件「北米」、価格条件「＄１．５以内」に該当するCLOUD-014のクラウドサービスが新たコードな実行環境の候補となる。
【００９０】
しかし、CODE-002とCODE-003との関係度が「大」であるため、コード実行環境更新部４４は、この関係度に基づくクラウドサービス選択条件が満たされるか否かを確認する。すると、関係度が「大」に対応するクラウドサービス選択条件は「クラウド事業者が同じ」、「ロケーションが同じ都市」であるため、CODE-002の実行環境をCLOUD-011からCLOUD-014に変更すると、「ロケーションが同じ都市」という条件が満たされるが、CODE-003のクラウド事業者は「Ｃ社」でありCLOUD-014のクラウド事業者は「Ｄ社」であるため「クラウド事業者が同じ」という条件が満たされなくなってしまう。
【００９１】
そのため、コード実行環境更新部４４は、このタスク（TASK-001）におけるCODE-002の実行環境をCLOUD-011からCLOUD-014に変更することはできないと判定する。
【００９２】
また、例えば、図１４に示されたようにクラウドサービス情報管理テーブルが変更された場合、コード実行環境更新部４４は、タスクＩＤがTASK-003のタスクについてのコード（CODE-001、CODE-003）の実行環境を、変更後のクラウドサービス情報管理テーブルを参照して検索する。
【００９３】
すると、CODE-001のコードについては、プログラム言語が「Ｊａｖａ」であり、ユーザＺのロケーション条件「指定なし」、価格条件「＄１以内」に該当するCLOUD-013のクラウドサービスが新たコードな実行環境の候補となる。
【００９４】
そして、CODE-001とCODE-003との関係度は「小」であるため、コード実行環境更新部４４は、この関係度に基づくクラウドサービス選択条件が満たされるか否かを確認する。すると、関係度が「小」に対応するクラウドサービス選択条件は「クラウド事業者：指定なし」、「ロケーション：指定なし」であるため、CODE-001の実行環境をCLOUD-002からCLOUD-013に変更しても問題ない。
【００９５】
そのため、コード実行環境更新部４４は、このタスク（TASK-003）におけるCODE-001の実行環境をCLOUD-002からCLOUD-013に変更できると判定する。
【００９６】
そして、コード実行環境更新部４４は、他の指定された条件も満たされる場合、図１５に示すように、このタスク（TASK-003）におけるCODE-001の実行環境をCLOUD-002からCLOUD-013に更新する。
【００９７】
このようにしてクラウドサービス情報管理テーブルが変更された場合でも、各タスクのそれぞれのコードのコード実行環境が動的に更新される。
【符号の説明】
【００９８】
１０    画像形成装置
１１    ＣＰＵ
１２    メモリ
１３    記憶装置
１４    通信インタフェース（ＩＦ）
１５    ユーザインタフェース（ＵＩ）装置
１６    制御バス
２１〜２３    端末装置
３１〜３３    サーバ装置
４１    タスク実行指示受信部
４２    タスク実行管理部
４３    コード実行環境選択部
４４    コード実行環境更新部
５１    タスク情報管理ＤＢ
５２    クラウドサービス情報管理ＤＢ
５３    コード関係度管理ＤＢ
５４    コード管理ＤＢ
５５    ユーザ条件管理ＤＢ
６１    コード実行部
６２    コード格納部
【図１】
2017219900.tif 000003
【図２】
2017219900.tif 000004
【図３】
2017219900.tif 000005
【図４】
2017219900.tif 000006
【図５】
2017219900.tif 000007
【図６】
2017219900.tif 000008
【図７】
2017219900.tif 000009
【図８】
2017219900.tif 000010
【図９】
2017219900.tif 000011
【図１０】
2017219900.tif 000012
【図１１】
2017219900.tif 000013
【図１２】
2017219900.tif 000014
【図１３】
2017219900.tif 000015
【図１４】
2017219900.tif 000016
【図１５】
2017219900.tif 000017