(57)【要約】【課題】要求された処理が実行される前から処理の早期終了のための対処を行うこと。【解決手段】タスク要求情報管理部１１１は、ユーザ端末３からの処理の要求に基づいて、その処理を実行することが見込まれる見込みプラグインを特定する。オートスケール管理部１１５は、特定された見込みプラグインが処理を実行する際に使用するリソースを有するインスタンスの起動と、起動されたインスタンス上で見込みプラグインを起動させる指示を行う。プラグイン実行部１０５は、これらの指示に基づいてインスタンス及び見込みプラグインを起動する。プラグイン管理部１０４は、キュー１０３から読み出したメッセージが示すメッセージプラグインが既に起動されている場合には、そのメッセージプラグインを起動させる指示を行わず、起動済みの見込みプラグインにそのメッセージに含まれる内容で処理を実行させるように指示する。【選択図】図３
2019087098.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータを、
仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、
生成された前記機能情報を一時的に蓄積する一時蓄積部と、
前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、
特定された前記機能を仮想マシン上で起動させる第１起動部と、
前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第２起動部であって、当該機能が前記第１起動部により既に起動されている場合には当該機能を起動させない第２起動部
として機能させるためのプログラム。
【請求項２】
前記コンピュータを、前記第１起動部又は前記第２起動部により前記機能が起動される場合に当該機能が前記処理を実行する際に使用するリソースを有する仮想マシンを起動させる仮想マシン起動部として機能させる
請求項１に記載のプログラム。
【請求項３】
前記コンピュータを、前記処理を実行していない機能が起動されている仮想マシンを停止させる仮想マシン停止部であって、当該機能が前記一時蓄積部に蓄積されている前記機能情報が示す機能である場合は当該機能を停止させない仮想マシン停止部として機能させる
請求項１又は２に記載のプログラム。
【請求項４】
前記仮想マシン停止部は、前記処理を実行していない機能が、別の前記要求に基づいて当該処理を実行することが見込まれる機能として前記特定部により特定された場合は当該仮想マシンを停止させない
請求項３に記載のプログラム。
【請求項５】
前記特定部は、前記要求がされた処理のパラメータ又は当該処理の要求の履歴から起動される可能性が他の機能に比べて高いことが表される機能を前記実行することが見込まれる機能として特定する
請求項１から４のいずれか１項に記載のプログラム。
【請求項６】
前記第１起動部は、特定された前記機能の起動に要する時間が短いほど当該機能を起動させる時期を遅くする
請求項１から５のいずれか１項に記載のプログラム。
【請求項７】
前記第１起動部は、前記一時蓄積部に蓄積されている前記機能情報が多いほど特定された前記機能を起動させる時期を遅くする
請求項１から６のいずれか１項に記載のプログラム。
【請求項８】
前記機能には複数の種類があり、
前記第１起動部は、前記種類が共通し且つ起動済みの機能の数が少ないほど特定された当該種類の機能を起動させる時期を早くする
請求項１から７のいずれか１項に記載のプログラム。
【請求項９】
前記処理は、複数の機能により順番に実行され、
前記第１起動部は、当該機能の前記順番が早いほど特定された前記機能を起動させる時期を早くする
請求項１から８のいずれか１項に記載のプログラム。
【請求項１０】
前記機能には複数の種類があり、
前記第１起動部は、特定された前記機能と同種の機能の起動回数が多いほど特定された当該機能を起動させる時期を早くする
請求項１から９のいずれか１項に記載のプログラム。
【請求項１１】
コンピュータを、蓄積されている前記機能情報が示す機能により実行される処理に要する時間を算出する算出部として機能させ、
前記第１起動部は、特定された前記機能を示す前記機能情報よりも前に蓄積された前記機能情報について算出された前記時間が長いほど仮想マシン上で当該機能を起動させる時期を遅くする
請求項１から１０のいずれか１項に記載のプログラム。
【請求項１２】
前記コンピュータを、前記処理が完了した前記機能を停止させる機能停止部として機能させ、
前記第１起動部は、仮想マシン上の前記機能が前記処理を完了して停止されると、特定された前記機能を当該仮想マシン上で起動し、当該機能については前記時期を変化させる制御を行わない
請求項６から１１のいずれか１項に記載のプログラム。
【請求項１３】
前記機能には複数の種類があり、
前記第１起動部は、特定された前記機能と同種の機能が前記処理を実行していない状態で存在する場合は、特定された当該機能の起動を行わず、
前記コンピュータを、前記第１起動部が前記機能の起動を行わない場合に、前記状態で存在する機能を制御して前記要求がされた処理を実行させる実行制御部として機能させる
請求項１から１２のいずれか１項に記載のプログラム。
【請求項１４】
仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、
生成された前記機能情報を一時的に蓄積する一時蓄積部と、
前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、
特定された前記機能を仮想マシン上で起動させる第１起動部と、
前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第２起動部であって、当該機能が前記第１起動部により既に起動されている場合には当該機能を起動させない第２起動部と
を備える情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラム及び情報処理装置に関する。
【背景技術】
【０００２】
特許文献１には、ジョブ処理装置の動作状況を監視し、規定数を超えるジョブを処理している場合にタスクを増加させるスケールアウトを指示し、その後スループットが向上されていないと確認した場合にはタスクを削除するスケールインを指示する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１４−１４９６９０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の技術では、スケールアウト及びスケールインのいずれの場合でも、要求された処理（ジョブ）が実行された後でなければ対処がなされない。
そこで、本発明は、要求された処理が実行される前から処理の早期終了のための対処を行うことを目的とする。
【課題を解決するための手段】
【０００５】
本発明の請求項１に係るプログラムは、コンピュータを、仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、生成された前記機能情報を一時的に蓄積する一時蓄積部と、前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、特定された前記機能を仮想マシン上で起動させる第１起動部と、前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第２起動部であって、当該機能が前記第１起動部により既に起動されている場合には当該機能を起動させない第２起動部として機能させることを特徴とする。
【０００６】
本発明の請求項２に係るプログラムは、請求項１に記載の構成において、前記コンピュータを、前記第１起動部又は前記第２起動部により前記機能が起動される場合に当該機能が前記処理を実行する際に使用するリソースを有する仮想マシンを起動させる仮想マシン起動部として機能させることを特徴とする。
【０００７】
本発明の請求項３に係るプログラムは、請求項１又は２に記載の構成において、前記コンピュータを、前記処理を実行していない機能が起動されている仮想マシンを停止させる仮想マシン停止部であって、当該機能が前記一時蓄積部に蓄積されている前記機能情報が示す機能である場合は当該機能を停止させない仮想マシン停止部として機能させることを特徴とする。
【０００８】
本発明の請求項４に係るプログラムは、請求項３に記載の構成において、前記仮想マシン停止部は、前記処理を実行していない機能が、別の前記要求に基づいて当該処理を実行することが見込まれる機能として前記特定部により特定された場合は当該仮想マシンを停止させないことを特徴とする。
【０００９】
本発明の請求項５に係るプログラムは、請求項１から４のいずれか１項に記載の構成において、前記特定部は、前記要求がされた処理のパラメータ又は当該処理の要求の履歴から起動される可能性が他の機能に比べて高いことが表される機能を前記実行することが見込まれる機能として特定することを特徴とする。
【００１０】
本発明の請求項６に係るプログラムは、請求項１から５のいずれか１項に記載の構成において、前記第１起動部は、特定された前記機能の起動に要する時間が短いほど当該機能を起動させる時期を遅くすることを特徴とする。
【００１１】
本発明の請求項７に係るプログラムは、請求項１から６のいずれか１項に記載の構成において、前記第１起動部は、前記一時蓄積部に蓄積されている前記機能情報が多いほど特定された前記機能を起動させる時期を遅くすることを特徴とする。
【００１２】
本発明の請求項８に係るプログラムは、請求項１から７のいずれか１項に記載の構成において、前記機能には複数の種類があり、前記第１起動部は、前記種類が共通し且つ起動済みの機能の数が少ないほど特定された当該種類の機能を起動させる時期を早くすることを特徴とする。
【００１３】
本発明の請求項９に係るプログラムは、請求項１から８のいずれか１項に記載の構成において、前記処理は、複数の機能により順番に実行され、前記第１起動部は、当該機能の前記順番が早いほど特定された前記機能を起動させる時期を早くすることを特徴とする。
【００１４】
本発明の請求項１０に係るプログラムは、請求項１から９のいずれか１項に記載の構成において、前記機能には複数の種類があり、前記第１起動部は、特定された前記機能と同種の機能の起動回数が多いほど特定された当該機能を起動させる時期を早くすることを特徴とする。
【００１５】
本発明の請求項１１に係るプログラムは、請求項１から１０のいずれか１項に記載の構成において、コンピュータを、蓄積されている前記機能情報が示す機能により実行される処理に要する時間を算出する算出部として機能させ、前記第１起動部は、特定された前記機能を示す前記機能情報よりも前に蓄積された前記機能情報について算出された前記時間が長いほど仮想マシン上で当該機能を起動させる時期を遅くすることを特徴とする。
【００１６】
本発明の請求項１２に係るプログラムは、請求項６から１１のいずれか１項に記載の構成において、前記コンピュータを、前記処理が完了した前記機能を停止させる機能停止部として機能させ、前記第１起動部は、仮想マシン上の前記機能が前記処理を完了して停止されると、特定された前記機能を当該仮想マシン上で起動し、当該機能については前記時期を変化させる制御を行わないことを特徴とする。
【００１７】
本発明の請求項１３に係るプログラムは、請求項１から１２のいずれか１項に記載の構成において、前記機能には複数の種類があり、前記第１起動部は、特定された前記機能と同種の機能が前記処理を実行していない状態で存在する場合は、特定された当該機能の起動を行わず、前記コンピュータを、前記第１起動部が前記機能の起動を行わない場合に、前記状態で存在する機能を制御して前記要求がされた処理を実行させる実行制御部として機能させることを特徴とする。
【００１８】
本発明の請求項１４に係る情報処理装置は、仮想マシン上で起動される機能により実行される処理の要求を受け取ると当該機能を示す機能情報を生成する生成部と、生成された前記機能情報を一時的に蓄積する一時蓄積部と、前記処理の要求に基づいて当該処理を実行することが見込まれる機能を特定する特定部と、特定された前記機能を仮想マシン上で起動させる第１起動部と、前記一時蓄積部から読み出される前記機能情報が示す機能を仮想マシン上で起動させる第２起動部であって、当該機能が前記第１起動部により既に起動されている場合には当該機能を起動させない第２起動部とを備えることを特徴とする。
【発明の効果】
【００１９】
請求項１、１４に係る発明によれば、要求された処理が実行される前から処理の早期終了のための対処を行うことができる。
請求項２に係る発明によれば、複数の機能に必要なリソースを有する仮想マシンを予め起動する場合に比べて、仮想マシンを起動したときに必要なリソースの量を少なくすることができる。
請求項３に係る発明によれば、第１起動部により起動された機能を停止させる場合に比べて、その機能が実行する見込みであった処理とは別の処理の開始を早期化することができる。
請求項４に係る発明によれば、要求された処理を実行することが見込まれて起動された機能を停止させる場合に比べて、その要求とは別の要求に基づくその処理の開始を早期化することができる。
請求項５に係る発明によれば、機能を定義した情報がなくても機能の特定を可能にすることができる。
請求項６に係る発明によれば、起動時期を一律にする場合に比べて、起動した機能が処理を実行可能になる時期を近くすることができる。
請求項７、１１に係る発明によれば、起動時期を一律にする場合に比べて、機能が処理を実行していないのに仮想マシンが起動している状態となる期間を短くすることができる。
請求項８に係る発明によれば、起動時期を一律にする場合に比べて、起動済みの同種の機能の数が少なくても処理の遅延を生じにくくすることができる。
請求項９、１０に係る発明によれば、起動時期を一律にする場合に比べて、特定された機能による処理の遅延が後続の処理に与える影響を小さくすることができる。
請求項１２に係る発明によれば、特定された機能の起動時期を遅らせる場合に比べて、処理の早期終了の可能性を高めることができる。
請求項１３に係る発明によれば、仮想マシン及び機能を再利用しない場合に比べて、処理の早期終了の可能性を高めることができる。
【図面の簡単な説明】
【００２０】
【図１】実施例に係るタスクサービス提供システムの全体構成を表す図
【図２】サーバ装置のハードウェア構成を表す図
【図３】クラウドシステム４が実現する機能構成を表す図
【図４】タスク定義部１０２が記憶する情報の一例を表す図
【図５】テスク定義情報の一例を表す図
【図６】リクエストパラメータ情報の一例を表す図
【図７】履歴情報の一例を表す図
【図８】タスク処理におけるクラウドシステム４の動作手順の一例を表す図
【図９】スケールイン処理におけるクラウドシステム４の動作手順の一例を表す図
【図１０】起動時期テーブルの一例を表す図
【図１１】起動時期テーブルの別の一例を表す図
【図１２】起動時期テーブルの別の一例を表す図
【図１３】起動時期テーブルの別の一例を表す図
【図１４】起動時期テーブルの別の一例を表す図
【図１５】起動時期テーブルの別の一例を表す図
【発明を実施するための形態】
【００２１】
［１］実施例
図１は実施例に係るタスクサービス提供システム１の全体構成を表す。タスクサービス提供システム１は、タスクサービスをユーザに提供するためのシステムである。タスクサービス提供システム１では、予め定義された一連の処理を実行することによって完了する作業のことをタスクと言う。例えば領収書やレシートを読み取って経費精算システムに格納する作業のことを経費精算タスクと言う。
【００２２】
また、ユーザからの要求に基づいてタスクを実行するサービスをタスクサービスと言う。なお、タスクを実行するとは、詳細にはそのタスクに含まれる処理、すなわちタスクを完了させるために定義された一連の処理を実行することを意味し、タスクの実行を要求するとは、そのタスクに含まれる処理を要求すること（処理の実行を要求することと同義）を意味する。
【００２３】
タスクサービス提供システム１は、通信回線２と、ユーザ端末３と、クラウドシステム４とを備える。通信回線２は、例えばインターネット、移動体通信網及び電話回線等を含み、自回線に接続されている装置同士の通信を仲介する。通信回線２には、ユーザ端末３及びクラウドシステム４が接続されている。
【００２４】
ユーザ端末３は、タスクサービス提供システム１を利用するユーザが使用する端末である。ユーザ端末３は、例えば、店舗に設置される画像形成装置であり、コピー機能及びスキャン機能等を備えている。図１ではユーザ端末３が１台しか表されていないが、複数のユーザ端末３が使用されているものとする。ユーザ端末３は、ユーザの操作によりタスクの実行（詳細にはそのタスクに含まれる処理の実行）をクラウドシステム４に対して要求し、要求したタスクの実行結果を受け取って例えばその実行結果に応じた画面を表示する。
【００２５】
クラウドシステム４は、各々がインスタンスと呼ばれる仮想マシンを実現する複数のサーバ装置１０を備える。このクラウドシステム４を提供するクラウドサービス事業者は、タスクサービスを提供するタスクサービス事業者とは異なっているものとする。クラウドシステム４においては、インスタンス毎に、そのインスタンスの使用するリソース量及び使用時間に応じた課金がなされる。
【００２６】
そのため、クラウドシステム４においては、インスタンスを必要に応じて増減させるオートスケールが行われる。本実施例では、タスクに含まれる処理をインスタンス上で実行し、且つ、それらのインスタンスについてオートスケールを行う。例えば処理を実行していないインスタンスを停止（スケールイン）することで課金される料金を抑えるようにしたり、処理を実行しているインスタンスのリソース（ＣＰＵ（Central Processing Unit）やメモリなど）の使用率が閾値を超える場合には新たなインスタンスを起動（スケールアウト）して処理の遅延を抑えたりしている。
【００２７】
図２はサーバ装置１０のハードウェア構成を表す。サーバ装置１０は、ＣＰＵ１１と、ＲＡＭ（Random Access Memory）１２と、ＲＯＭ（Read Only Memory）１３と、通信部１４と、ストレージ１５とを備えるコンピュータである。ＣＰＵ１１は、メモリであるＲＡＭ１２をワークエリアとして用いてＲＯＭ１３やストレージ１５に記憶されているプログラムを実行することで各部の動作を制御する。通信部１４は、通信回路等を有し、通信回線２を介して外部装置と通信を行う。ストレージ１５は、ＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）、フラッシュメモリなどの記憶手段であり、ＣＰＵ１１が制御に用いるデータやプログラムを記憶している。
【００２８】
クラウドシステム４が備える複数のサーバ装置１０の各ＣＰＵ１１がプログラムを実行して各部を制御することで、以下に述べる機能が実現される。
図３はクラウドシステム４が実現する機能構成を表す。クラウドシステム４は、タスクサービス部１０１と、タスク定義部１０２と、キュー１０３と、プラグイン管理部１０４と、プラグイン実行部１０５と、タスク要求情報管理部１１１と、タスク定義情報記憶部１１２と、リクエストパラメータ情報記憶部１１３と、履歴情報記憶部１１４と、オートスケール管理部１１５とを備える。
【００２９】
ユーザ端末３は、ユーザによって操作されて、タスクの実行を要求する要求データを生成してクラウドシステム４に送信する。要求データは、実行するタスクで用いるタスク定義を識別するタスク定義ＩＤ（Identification）と、文書（例えば原稿をスキャンした画像データ）を処理するタスクである場合はその文書と、そのタスクにおいて実行される処理の内容（処理で用いられるパラメータ等）とを示すデータである。
【００３０】
まず、要求されたタスクの実行に関する機能構成について説明する。タスクサービス部１０１は、ユーザ端末３から送信されてくる要求データを受け取って、その要求データに基づいてタスク定義部１０２から必要な情報を読み出し、要求されたタスクを実行するためのメッセージを生成する。
【００３１】
タスクの実行には、本実施例では、プラグインと呼ばれる機能が用いられる。プラグインは、プログラム、データ及びパラメータ等を読み出してメモリ上に展開することで起動され、起動が完了すると処理を実行可能な状態になる。タスクサービス提供システム１においては、タスクに含まれる各処理（矩形画像抽出、文書分割及びＯＣＲ（Optical Character Recognition）等の処理）に対して、それぞれ対応するプラグインが用意されている。つまり、１つのプラグインは、それに対応する１つの処理を実行する。
【００３２】
メッセージには、タスクに含まれる各処理を実行する各プラグインを起動するための情報として、各プラグインの呼び出しコマンドが含まれている。タスク定義部１０２は、各タスクのタスク定義ＩＤに対応付けて、そのタスクに含まれる各処理を実行する各プラグインのプラグインＩＤと、それらのプラグインの呼び出しコマンドと、各プラグインが実行する処理の順序とを記憶している。
【００３３】
図４はタスク定義部１０２が記憶する情報の一例を表す。図４の例では、タスク定義部１０２は、「ＴＡＳＫ０１」というタスク定義ＩＤに「ＰＬＵＧ１３」（経費精算データ送信）、「ＰＬＵＧ０１」（矩形画像抽出）、「ＰＬＵＧ０８」（文書分割）というプラグインＩＤと、それらの呼び出しコマンドと、それらの処理の順序とが対応付けられている。また、「ＴＡＳＫ０２」というタスク定義ＩＤには、「ＰＬＵＧ０２」（ＯＣＲ）、「ＰＬＵＧ１１」（コンバージョン）というプラグインＩＤと、それらの呼び出しコマンドと、それらの処理の順序とが対応付けられている。
【００３４】
タスクサービス部１０１は、上記の要求データが示すタスク定義ＩＤに対応付けられている処理順序の順番で呼び出しコマンドを読み出して、その呼び出しコマンドと、要求データが示す処理の内容とを含むメッセージを生成する。タスクサービス部１０１は、例えば要求データが「ＴＡＳＫ０１」というタスク定義ＩＤを示していれば、「ＴＡＳＫ０１」に対応付けられた処理の順序が「１」の「ＰＬＵＧ０１」（矩形画像抽出）の呼び出しコマンドを含むメッセージを生成する。
【００３５】
このように、タスクサービス部１０１は、プラグインにより実行される処理の要求（処理を実行することの要求）をユーザ端末３から受け取ると、そのプラグインを示すメッセージを生成する。こうして生成されるメッセージは、呼び出しコマンドにより呼び出されるプラグインという機能を示す情報であり、本発明の「機能情報」の一例である。また、そのメッセージを生成するタスクサービス部１０１は本発明の「生成部」の一例である。タスクサービス部１０１は、生成したメッセージをキュー１０３に供給する。
【００３６】
キュー１０３は、供給されたメッセージを記憶してキュー（先入れ先出しのデータ）として取り扱う。つまり、キュー１０３は、タスクサービス部１０１により生成されたメッセージを一時的に蓄積する機能であり、本発明の「一時蓄積部」の一例である。プラグイン管理部１０４は、キュー１０３に蓄積されたメッセージを読み出し、そのメッセージに含まれる呼び出しコマンドを用いてプラグインの起動をプラグイン実行部１０５に指示する。
【００３７】
プラグイン実行部１０５は、この指示を受け取ると、特定の場合（詳しくは後述する）を除いて、指示されたプラグインを起動する。プラグイン実行部１０５は、詳細には、まずプラグインを起動させるためのインスタンス（仮想マシン）を起動して、起動したインスタンス上で指示されたプラグインを起動する。プラグイン管理部１０４及びプラグイン実行部１０５は、インスタンスを起動する場合は本発明の「仮想マシン起動部」の一例として機能し、プラグインを起動する場合は本発明の「第２起動部」の一例として機能する。
【００３８】
本実施例では、プラグイン実行部１０５は、インスタンス上でプラグインを起動すると、そのインスタンス上では他のプラグインを起動させないようにする。つまり、プラグイン実行部１０５は、１つのインスタンス上では１つのプラグインだけを実行する。プラグイン実行部１０５は、図３の例では、文書処理プラグイン５１−１、５１−２、５１−３と、外部接続プラグイン５２と、ストレージ登録プラグイン５３とを、それぞれに対応して起動したインスタンス上で実行している。
【００３９】
文書処理プラグインは、矩形画像抽出、ＯＣＲ、文書分割及びコンバージョン等の文書に対する処理を実行する。外部接続プラグインは、業務型クラウドサービス５のような外部のサービスと接続する。ストレージ登録プラグインは、ストレージ型クラウドサービス６及び社内システム７のような外部のストレージにデータを登録する。
【００４０】
プラグイン管理部１０４は、プラグインが起動すると、メッセージに含まれる内容で処理を実行するようにプラグイン実行部１０５に指示する。プラグイン実行部１０５は、この指示を受け取ると、指示された内容で処理を実行する。プラグイン実行部１０５は、この処理を完了すると、その処理結果をプラグイン管理部１０４に通知する。プラグイン管理部１０４は、通知された処理結果をタスクサービス部１０１に通知する。
【００４１】
タスクサービス部１０１は、処理完了の通知を受け取ると、処理順序が次のプラグインの呼び出しコマンドを読み出して、その呼び出しコマンドと、要求データが示す処理の内容とを含むメッセージを生成する。こうして順番にプラグインが起動されて処理が実行されることで、タスクが実行される。
【００４２】
次に、オートスケールに関する機能構成について説明する。上述したように、クラウドシステム４においては、インスタンスについてオートスケールが行われ、且つ、１つのインスタンス上では１つのプラグインだけが実行される。つまり、インスタンスにオートスケールが行われると、そのインスタンス上で起動されるプラグインにもオートスケールが行われる（インスタンスがスケールアウトされて増加すればプラグインも同じ数だけ増加し、インスタンスがスケールインされて減少すればプラグインも同じ数だけ減少する）ことになる。
【００４３】
オートスケール管理部１１５は、プラグイン実行部１０５を決められた時間間隔で繰り返し監視してプラグインの実行状況を把握する。オートスケール管理部１１５は、例えば、プラグインで実行されている処理の有無と、処理を実行しているときのプラグインによるリソースの使用率とを把握する。オートスケール管理部１１５は、把握した実行状況に応じて、プラグインを新たに起動させるスケールアウトの指示と、プラグインを停止させるスケールインの指示とをプラグイン実行部１０５に対して行う。
【００４４】
オートスケール管理部１１５は、例えばＯＣＲのプラグインが複数起動されており、その中に処理を一定期間実行していないプラグイン（これを「非処理中プラグイン」という）がある場合、そのＯＣＲのプラグイン及び対応するインスタンスを停止させる（スケールインを行う）ようプラグイン実行部１０５に指示する。また、オートスケール管理部１１５は、例えばコンバージョンのプラグインが大量の文書のコンバージョンを行っていてリソースの使用率が閾値を超える場合、コンバージョンのプラグイン及びインスタンスを新たに起動する（スケールアウトを行う）ようプラグイン実行部１０５に指示する。この場合、プラグイン実行部１０５は、新たに起動されたプラグインに文書を分担して処理を実行するよう指示し、処理の負担を分散させる。
【００４５】
また、オートスケール管理部１１５は、プラグインの実行状況とは別の情報にも基づいてオートスケールを行う。タスクサービス部１０１は、要求データを受け取ると、メッセージの生成と並行して、又は、メッセージを生成する前に、その要求データをタスク要求情報管理部１１１に供給する。
【００４６】
タスク要求情報管理部１１１は、供給された要求データが示すタスクの実行要求、すなわちタスクに含まれる処理の要求に関する情報を管理する。タスク要求情報管理部１１１は、例えば、供給された要求データをタスクの実行要求の履歴として、現在の日時情報と共に履歴情報記憶部１１４に記憶させる。
【００４７】
また、タスク要求情報管理部１１１は、要求データが供給されると、その要求データが示す処理の要求に基づいて、その処理を実行することが見込まれるプラグイン（以下「見込みプラグイン」という）を特定する。タスク要求情報管理部１１１は本発明の「特定部」の一例である。タスク要求情報管理部１１１は、例えば、タスク定義情報記憶部１１２が記憶する情報に基づく第１の特定方法を用いてプラグインを特定する。
【００４８】
タスク定義情報記憶部１１２は、タスク定義部１０２が記憶するタスク定義に関する情報のうちの一部をタスク定義情報として記憶している。
図５はテスク定義情報の一例を表す。図５の例では、タスク定義情報記憶部１１２は、タスク定義ＩＤ及びプラグインＩＤを対応付けた情報をタスク定義情報として記憶している。
【００４９】
タスク要求情報管理部１１１は、供給された要求データが示すタスク定義ＩＤにタスク定義情報において対応付けられているプラグインＩＤを読み出し、読み出したプラグインＩＤが示すプラグインを、見込みプラグインとして特定する。タスク要求情報管理部１１１は、例えば、要求データが示すタスク定義ＩＤが「ＴＡＳＫ０２」であれば、図５において「ＴＡＳＫ０２」に対応付けられた「ＰＬＵＧ０２」及び「ＰＬＵＧ１１」が示すＯＣＲ及びコンバージョンのプラグインを見込みプラグインとして特定する。
【００５０】
また、タスク要求情報管理部１１１は、リクエストパラメータ情報記憶部１１３が記憶する情報に基づく第２の特定方法を用いてプラグインを特定する。リクエストパラメータ情報記憶部１１３は、処理の要求に用いられるパラメータとプラグインＩＤとを対応付けた情報をリクエストパラメータ情報として記憶している。
【００５１】
図６はリクエストパラメータ情報の一例を表す。図６（ａ）の例では、リクエストパラメータ情報記憶部１１３は、「ＭＩＭＥＴＹＰＥ」というメディアタイプを示すパラメータとプラグインＩＤとを対応付けた情報をリクエストパラメータ情報として記憶している。例えば「application/mspowerpoint」及び「application/msword」には「ＰＬＵＧ１１」（コンバージョン）が対応付けられ、「application/vnd.fujixerox.docuworks」には「ＰＬＵＧ０２」（ＯＣＲ）が対応付けられている。
【００５２】
タスク要求情報管理部１１１は、供給された要求データが示す処理のパラメータにリクエストパラメータ情報において対応付けられているプラグインＩＤを読み出し、読み出したプラグインＩＤが示すプラグインを、見込みプラグインとして特定する。タスク要求情報管理部１１１は、例えば、要求データが示すＭＩＭＥＴＹＰＥが「application/msword」であれば、図６（ａ）においてそれに対応付けられた「ＰＬＵＧ１１」が示すコンバージョンのプラグインを見込みプラグインとして特定する。
【００５３】
また、タスク要求情報管理部１１１は、履歴情報記憶部１１４が記憶する情報に基づく第３の特定方法を用いてプラグインを特定する。履歴情報記憶部１１４は、要求された処理の履歴とプラグインＩＤとを対応付けた情報を履歴情報として記憶している。
図７は履歴情報の一例を表す。図７の例では、履歴情報記憶部１１４は、過去に要求された処理のプラグインＩＤを、その要求が送信されてきた日時を含む要求時間帯（例えば朝、昼、夕方、夜の時間帯）と、その要求を送信してきたユーザ端末３を識別する端末ＩＤ（要求端末ＩＤ）と、その要求の操作を行ったユーザを識別するユーザＩＤ（要求ユーザＩＤ）という３種類の履歴に対応付けた情報を履歴情報として記憶している。
【００５４】
要求端末ＩＤ及び要求ユーザＩＤは、タスクサービス提供システム１において登録されたＩＤであり、タスクサービスを利用する際にユーザがユーザ端末３に自身のユーザＩＤを入力すると、ユーザ端末３がそのユーザＩＤと自端末の端末ＩＤとを要求データに付与する。タスク要求情報管理部１１１は、供給された要求データが示す端末ＩＤ及びユーザＩＤと、供給された時刻を含む時間帯とに履歴情報において対応付けられているプラグインＩＤがあればそれを読み出し、読み出したプラグインＩＤが示すプラグインを、見込みプラグインとして特定する。
【００５５】
タスク要求情報管理部１１１は、複数のプラグインＩＤを読み出した場合は、例えば最も多くの履歴が対応付けられているものが示すプラグインを、見込みプラグインとして特定する。また、タスク要求情報管理部１１１は、３種類の履歴の全てに対応付けられたプラグインＩＤがない場合は、２種類の履歴に対応付けられたプラグインＩＤを読み出して、３種類の履歴の場合と同様に見込みプラグインを特定する。また、それもなければ、１種類の履歴に対応付けられたプラグインＩＤを読み出して見込みプラグインを特定してもよい。
【００５６】
タスク要求情報管理部１１１は、上述した第１、第２、第３の特定方法のいずれかを用いることで、ユーザ端末３から要求された処理のタスク定義ＩＤ、パラメータ又は要求の履歴によって起動される可能性が他のプラグインに比べて高いことが表されるプラグインを見込みプラグインとして特定する。第１の特定方法が用いられた場合は、タスク定義部１０２が記憶するタスク定義と同じ対応付けがされているタスク定義情報を用いるので、特定された見込みプラグインが要求された処理を必ず実行することになる。
【００５７】
一方、見込みプラグインはあくまで要求された処理を実行することが見込まれるプラグインであるから、例えば第２、第３の特定方法で特定された見込みプラグインは要求された処理を実行する可能性は高いものの、見込みプラグインが要求された処理を実行するプラグインではない場合もある。しかし、タスク定義情報が利用できない場合には、第２、第３の特定方法により見込みプラグインの特定が可能になる。タスク要求情報管理部１１１は、こうして特定した見込みプラグインのプラグインＩＤをオートスケール管理部１１５に供給する。
【００５８】
オートスケール管理部１１５は、特定された見込みプラグインが処理を実行する際に使用するリソースを有するインスタンスの起動をプラグイン実行部１０５に指示し、その指示により起動されたインスタンス上で見込みプラグインを起動させるようプラグイン実行部１０５に指示する。プラグイン実行部１０５は、これらの指示に基づいてインスタンス及び見込みプラグインを起動する。
【００５９】
オートスケール管理部１１５及びプラグイン実行部１０５は、インスタンスを起動する場合は本発明の「仮想マシン起動部」の一例として機能し、プラグインを起動する場合は本発明の「第１起動部」の一例として機能する。このようにプラグインを起動する度にそれに必要なリソースを有するインスタンスを起動することで、例えば複数のプラグインに必要なリソースを有するインスタンスを予め起動する場合に比べて、インスタンスを起動したときに必要なリソースの量が少なくなる。
【００６０】
タスク要求情報管理部１１１が見込みプラグインを特定してオートスケール管理部１１５及びプラグイン実行部１０５がその見込みプラグインを起動する方法を第１の起動方法という。一方、タスクサービス部１０１がメッセージを生成し、キュー１０３がメッセージを蓄積し、プラグイン管理部１０４がメッセージを読み出してプラグインの起動を指示してプラグイン実行部１０５が指示されたプラグインを起動する方法を第２の起動方法という。
【００６１】
また、第１の起動方法でプラグイン（見込みプラグイン）を起動するオートスケール管理部１１５及びプラグイン実行部１０５を「第１起動部５５」といい、第２の起動方法でプラグインを起動するプラグイン管理部１０４及びプラグイン実行部１０５を「第２起動部４５」という。
【００６２】
第２の起動方法では、キュー１０３からメッセージが読み出されるのを待つ期間が生じるため、第１の起動方法に比べてプラグインが起動されるまでに要する時間が長くなる。そのため、第２の起動方法で起動するプラグインと第１の起動方法で起動するプラグイン（見込みプラグイン）とが一致していると、第２の起動方法ではプラグインを起動する必要がなくなるし、起動するとインスタンスが過剰になって課金される料金も過剰になってしまう。
【００６３】
そこで、プラグイン管理部１０４は、キュー１０３から読み出したメッセージが示すプラグイン（以下「メッセージプラグイン」という）が第１の起動方法によって既に起動されている場合（つまりメッセージプラグインと見込みプラグインとが一致した場合）には、そのメッセージプラグインを起動させる指示を行わず、起動済みの見込みプラグインにそのメッセージに含まれる内容で処理を実行させるようにプラグイン実行部１０５に指示する。
【００６４】
このように、第２起動部４５（プラグイン管理部１０４及びプラグイン実行部１０５）は、メッセージプラグインが見込みプラグインとして第１起動部５５（オートスケール管理部１１５及びプラグイン実行部１０５）により既に起動されている場合には、そのメッセージプラグインを起動させないように動作する。これにより、処理を実行しないプラグインを第２起動部４５が起動して余計なリソースを使用することが防がれる。
【００６５】
なお、前述したように、メッセージプラグイン（要求された処理を実行するプラグイン）と見込みプラグインとは必ず一致するとは限らない。それらが一致しない場合、すなわちメッセージプラグインが第１起動部５５により起動されていない場合（つまり第１起動部５５が他のプラグインを見込みプラグインとして起動した場合）には、第２起動部４５は、メッセージプラグインを起動する。
【００６６】
その場合、プラグイン管理部１０４は、起動されたメッセージプラグインに対してメッセージに含まれる内容で処理を実行するように指示する。その結果、起動された見込みプラグインは、処理を実行しない状態になる。この場合は、オートスケール管理部１１５が、処理を一定期間実行していないプラグイン（非処理中プラグイン）だと見込みプラグインのことを把握するので、スケールインの対象だと判断してプラグイン実行部１０５に停止させる。オートスケール管理部１１５は本発明の「仮想マシン停止部」の一例である。
【００６７】
ただし、オートスケール管理部１１５は、次の場合にはプラグインを停止させない。オートスケール管理部１１５は、キュー１０３を監視し、前述したようにスケールインの対象だと判断した見込みプラグイン（メッセージプラグインと一致しなかった見込みプラグイン）がキュー１０３に蓄積されている別のメッセージが示すプラグインである場合には、その見込みプラグインを停止させない。
【００６８】
そうすることで、要求された処理を実行することが見込まれるプラグインとして特定された見込みプラグインがその要求による処理を実行しなかった場合でも、起動した見込みプラグインが他の処理を実行することになる。これにより、要求された処理を実行しない見込みプラグインを停止させる場合に比べて、その見込みプラグインが実行する見込みであった処理とは別の処理（キュー１０３に蓄積されているメッセージが示すプラグインが実行する処理）の開始が早期化されることになる。
【００６９】
第２起動部４５は、前述した別のメッセージをキュー１０３から読み出した場合、そのメッセージが示すプラグインが第１起動部５５により別の処理の見込みプラグインとしてではあるが既に起動されていることになるので、そのプラグインを起動させないように動作する。これにより、処理を実行しないプラグインを第２起動部４５が起動して余計なリソースを消費することが防がれる。
【００７０】
また、オートスケール管理部１１５は、前述したようにスケールインの対象だと判断した見込みプラグイン（処理を実行していない見込みプラグイン）が別の要求に基づいてタスク要求情報管理部１１１によって再度見込みプラグインと特定された場合はその見込みプラグインを停止させない。この場合は、要求された処理を実行しない見込みプラグインを停止させる場合に比べて、その見込みプラグインが実行する見込みであった処理の別の要求に基づく開始が早期化されることになる。
【００７１】
クラウドシステム４は、上記の構成に基づいて、プラグインを起動してタスクに含まれる処理を実行するタスク処理を行う。
図８はタスク処理におけるクラウドシステム４の動作手順の一例を表す。この動作手順は、ユーザ端末３からタスクの実行を要求する要求データをクラウドシステム４に向けて送信することを契機に開始される。
【００７２】
まず、クラウドシステム４（タスクサービス部１０１）は、タスクの実行の要求を受け付ける（ステップＳ１０）。その後、クラウドシステム４は、ステップＳ１１からＳ１３までの第１動作とステップＳ２１からＳ２３までの第２動作を並行して行う。まず、クラウドシステム４（タスクサービス部１０１及びタスク定義部１０２）は、要求されたタスクに含まれる処理を実行するプラグインを示すメッセージを生成する（ステップＳ１１）。次に、クラウドシステム４（キュー１０３）は、生成されたメッセージを蓄積する（ステップＳ１２）。続いて、クラウドシステム４（プラグイン管理部１０４）は、蓄積されたメッセージを読み出す（ステップＳ１３）。ここまでが第１動作である。
【００７３】
それと並行して、クラウドシステム４（タスク要求情報管理部１１１と、タスク定義情報記憶部１１２、リクエストパラメータ情報記憶部１１３又は履歴情報記憶部１１４）は、受け付けられた要求に基づいて見込みプラグインを特定する（ステップＳ２１）。次に、クラウドシステム４（オートスケール管理部１１５及びプラグイン実行部１０５）は、インスタンスを起動して（ステップＳ２２）、特定された見込みプラグインをそのインスタンス上で起動する（ステップＳ２３）。ここまでが第２動作である。
【００７４】
クラウドシステム４（プラグイン管理部１０４）は、第１動作で読み出したメッセージが示すメッセージプラグインと、第２動作で起動された見込みプラグインとが一致するか否かを判断する（ステップＳ３１）。クラウドシステム４（プラグイン管理部１０４及びプラグイン実行部１０５）は、ステップＳ３１で一致しない（ＮＯ）と判断した場合は、インスタンスを起動し（ステップＳ３２）、そのインスタンス上でメッセージプラグインを起動して（ステップＳ３３）、メッセージが示す内容で処理を実行する（ステップＳ３４）。
【００７５】
クラウドシステム４（プラグイン管理部１０４及びプラグイン実行部１０５）は、ステップＳ３１で一致する（ＹＥＳ）と判断した場合は、起動済みの見込みプラグインにより、メッセージが示す内容で処理を実行する（ステップＳ３４）。そして、クラウドシステム４は、タスクが完了したか否かを判断し（ステップＳ３５）、完了していない（ＮＯ）と判断した場合はステップＳ１１及びＳ２１に戻って動作を行い、完了した（ＹＥＳ）と判断した場合はこの動作手順を終了する。
【００７６】
また、クラウドシステム４は、上記の構成に基づいて処理を実行していないインスタンスを停止するスケールイン処理を行う。
図９はスケールイン処理におけるクラウドシステム４の動作手順の一例を表す。この動作手順は例えば決められた時間間隔で繰り返し行われる。まず、クラウドシステム４（オートスケール管理部１１５）は、プラグインによる処理の実行状況を把握して（ステップＳ４１）、処理を実行していない非処理中プラグインがあるか否かを判断する（ステップＳ４２）。
【００７７】
クラウドシステム４（オートスケール管理部１１５）は、ステップＳ４２において非処理中プラグインがない（ＮＯ）と判断した場合はステップＳ４１に戻って動作を行い、非処理中プラグインがある（ＹＥＳ）と判断した場合は、その非処理中プラグインを示すメッセージがキュー１０３に蓄積されているか否かを判断する（ステップＳ４３）。ステップＳ４３において蓄積されている（ＹＥＳ）と判断された場合は、クラウドシステム４（プラグイン管理部１０４及びプラグイン実行部１０５）は、非処理中プラグインを停止することなく、非処理中プラグインでそのメッセージが示す内容の処理を実行する（ステップＳ４７）。
【００７８】
クラウドシステム４（オートスケール管理部１１５）は、ステップＳ４３において蓄積されていない（ＮＯ）と判断した場合は、非処理中プラグインが見込みプラグインとして特定されたか否かを判断し（ステップＳ４４）、特定されていない（ＮＯ）と判断した場合は、非処理中プラグインを停止して（ステップＳ４５）、ステップＳ４１に戻って動作を行う。
【００７９】
ステップＳ４４において特定された（ＹＥＳ）と判断された場合は、クラウドシステム４（プラグイン管理部１０４及びプラグイン実行部１０５）は、メッセージプラグインと見込みプラグイン（すなわち非処理中プラグイン）が一致するか否かを判断し（ステップＳ４６）、一致する（ＹＥＳ）と判断した場合は、見込みプラグインを起動することなく、且つ、非処理中プラグインを停止することなく、その非処理中プラグインでメッセージが示す内容の処理を実行する（ステップＳ４７）。クラウドシステム４（オートスケール管理部１１５）は、ステップＳ４６において一致しない（ＮＯ）と判断した場合は、ステップＳ４５に進んで非処理中プラグインを停止し（ステップＳ４５）、ステップＳ４１に戻って動作を行う。
【００８０】
クラウドシステム４においてはオートスケールを行うことで、処理が実行された後の実行状況に応じてスケールアウトを行いインスタンス毎の負荷を低くして処理の早期終了を図っている。この方法では処理が開始されないとスケールアウトが行われ処理の早期終了の対処がなされない。これに対し、本実施例では、上記のとおり見込みプラグインが起動されることで、要求された処理が実行される前から処理の早期終了のための対処が行われるので、実行状況に応じたスケールアウトだけを行う場合に比べて、さらに早く処理が終了させることになる。
【００８１】
［２］変形例
上述した実施例は本発明の実施の一例に過ぎず、以下のように変形させてもよい。また、実施例及び各変形例は、必要に応じて組み合わせて実施してもよい。
【００８２】
［２−１］見込みプラグインの起動タイミング
第１起動部５５（オートスケール管理部１１５及びプラグイン実行部１０５）は、実施例では、見込みプラグインが特定されたらすぐにそれを起動したが、見込みプラグインを起動する際にはインスタンスも新たに起動するため、クラウドシステム４においては課金が開始されることになる。そこで、第１起動部５５は、課金される期間を少しでも短くするため、状況に応じて起動タイミングを遅らせてもよい。
【００８３】
第１起動部５５は、例えば、特定された見込みプラグインの起動に要する時間（起動時間）が短いほどその見込みプラグインを起動させる時期を遅くする。プラグインは、関連するプログラム、データ及びパラメータ等を読み出してメモリに記憶させる起動処理を行うことで起動され、この起動処理にはプラグイン毎に異なる一定の時間（起動時間）が必要になる。プラグインの起動時期とは、この起動処理を開始させる時期のことをいう。第１起動部５５は、起動時間に応じて起動時期を異ならせるため、例えば起動時間と起動時期とを対応付けた起動時期テーブルを用いる。
【００８４】
図１０は起動時期テーブルの一例を表す。図１０の例では、「Ａ１未満」、「Ａ１以上Ａ２未満」、「Ａ２以上」という起動時間に、「特定時刻Ｔ１＋ｔ３」、「特定時刻Ｔ１＋ｔ２」、「特定時刻Ｔ１＋ｔ１」（ｔ１＜ｔ２＜ｔ３）という起動時期がそれぞれ対応付けられている。特定時刻Ｔ１は、見込みプラグインが特定された時刻であり、例えばタスク要求情報管理部１１１から特定した見込みプラグインのプラグインＩＤが供給された時刻を示す。
【００８５】
第１起動部５５は、見込みプラグイン毎の起動時間を記憶しておき、見込みプラグインのプラグインＩＤが供給されて特定時刻Ｔ１が確定すると、特定された見込みプラグインの起動時間に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。
【００８６】
起動時期を一律にすると、起動時間が短いほどインスタンスも早く起動するので、インスタンスの使用料金が高くなる。図１０の例では起動時間が短いほど見込みプラグインの起動時期を遅くするので、起動時期を一律にする場合に比べて起動が完了して見込みプラグインが処理を実行可能になる時期が近くなり、各インスタンスが起動されている期間の差異、すなわち使用料金の差異が小さくなる。
【００８７】
また、第１起動部５５は、キュー１０３に蓄積されているメッセージが多いほど見込みプラグインを起動させる時期を遅くしてもよい。第１起動部５５は、メッセージ数に応じて起動時期を異ならせるため、例えばメッセージ数と起動時期とを対応付けた起動時期テーブルを用いる。
図１１は起動時期テーブルの別の一例を表す。図１１の例では、「Ｂ１未満」、「Ｂ１以上Ｂ２未満」、「Ｂ２以上」というメッセージ数に、「特定時刻Ｔ１＋ｔ１」、「特定時刻Ｔ１＋ｔ２」、「特定時刻Ｔ１＋ｔ３」（ｔ１＜ｔ２＜ｔ３）という起動時期がそれぞれ対応付けられている。
【００８８】
第１起動部５５は、見込みプラグインのプラグインＩＤが供給されて特定時刻Ｔ１が確定すると、キュー１０３を参照してメッセージ数をカウントし、カウントしたメッセージ数に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。図１１の例ではキュー１０３に蓄積されているメッセージが多いほど見込みプラグインの起動時期を遅くするので、起動時期を一律にする場合に比べて、見込みプラグインの起動が完了して処理を実行可能になる時期と対応するメッセージが読み出されて処理の実行が開始される時期とが近くなり、特に蓄積されているメッセージ数が多いときに、プラグインが処理を実行していないのにインスタンスが起動している状態となる期間が短くなる。
【００８９】
また、第１起動部５５は、種類が共通し且つ起動済みのプラグインの数が少ないほど特定されたその種類のプラグインを起動させる時期を早くしてもよい。プラグインには、例えば上述した矩形画像抽出、文書分割、ＯＣＲ及びコンバージョン等の種類がある。第１起動部５５は、起動済みの同種のプラグイン数に応じて起動時期を異ならせるため、例えば同種のプラグイン数と起動時期とを対応付けた起動時期テーブルを用いる。
【００９０】
図１２は起動時期テーブルの別の一例を表す。図１２の例では、「Ｃ１未満」、「Ｃ１以上Ｃ２未満」、「Ｃ２以上」というメッセージ数に、「特定時刻Ｔ１＋ｔ１」、「特定時刻Ｔ１＋ｔ２」、「特定時刻Ｔ１＋ｔ３」（ｔ１＜ｔ２＜ｔ３）という起動時期がそれぞれ対応付けられている。第１起動部５５は、見込みプラグインのプラグインＩＤが供給されて特定時刻Ｔ１が確定すると、その見込みプラグインと同種の起動済みのプラグイン数をカウントし、カウントしたプラグイン数に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。
【００９１】
クラウドシステム４においては、見込みプラグインの起動と並行してプラグインの実行状況に応じたオートスケールが行われている。そのため、見込みプラグインと同種のプラグインも、スケールアウトにより増加したり、スケールインにより減少したりする。その同種のプラグインの数が少ないほど、スケールインがされた場合に対応する処理を実行するプラグインの数が少なくなって処理が遅延しやすくなる。図１２の例では起動済みの同種のプラグインが少ないほど見込みプラグインの起動時期を早くしてそれと同種のプラグインの数を早めに増やしているので、起動時期を一律にする場合に比べて、起動済みの同種のプラグインの数が少なくても処理の遅延が生じにくいようになっている。
【００９２】
また、第１起動部５５は、要求されたタスクに含まれる処理を実行する順番が早いほど特定されたプラグインを起動させる時期を早くしてもよい。タスクに複数の処理が含まれる場合、それらの複数の処理は、複数のプラグインにより順番に実行される。例えば図４に表す「ＴＡＳＫ０１」は、「ＰＬＵＧ０１」（矩形画像抽出）、「ＰＬＵＧ０８」（文書分割）、「ＰＬＵＧ１３」（経費精算データ送信）の順番で実行される。第１起動部５５は、処理を実行する順番に応じて起動時期を異ならせるため、例えば処理の実行順と起動時期とを対応付けた起動時期テーブルを用いる。
【００９３】
図１３は起動時期テーブルの別の一例を表す。図１３の例では、「１番」、「２〜３番」、「４番以降」という処理の実行順に、「特定時刻Ｔ１＋ｔ１」、「特定時刻Ｔ１＋ｔ２」、「特定時刻Ｔ１＋ｔ３」（ｔ１＜ｔ２＜ｔ３）という起動時期がそれぞれ対応付けられている。この例では、タスク要求情報管理部１１１が、見込みプラグインを特定する際に、その見込みプラグインの実行順も特定する。
【００９４】
例えば、タスク定義情報記憶部１１２が実行順もタスク定義ＩＤに対応付けてタスク定義情報として記憶しておき、タスク要求情報管理部１１１が、要求データが示すタスク定義ＩＤにタスク定義情報において対応付けられているプラグインＩＤ及び実行順を読み出すことで、見込みプラグインの実行順を特定し、特定した見込みプラグインのプラグインＩＤ及び実行順をオートスケール管理部１１５に供給する。
【００９５】
第１起動部５５（オートスケール管理部１１５及びプラグイン実行部１０５）は、見込みプラグインのプラグインＩＤが供給されて特定時刻Ｔ１が確定すると、ともに供給された実行順に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。処理の実行順が早いほど、後から起動されるプラグインの数が増えるから、万が一そのプラグインの起動に遅れ（起動エラー等による遅れ）が生じた場合の影響（遅れが生じるプラグインの数）が大きくなる。図１３の例では処理の実行順が早い見込みプラグインほど起動時期を早くするので、起動時期を一律にする場合に比べて、見込みプラグインによる処理の遅延が後続の処理に与える影響が小さくなる。
【００９６】
また、第１起動部５５は、特定された見込みプラグインと同種のプラグインの起動回数が多いほど見込みプラグインを起動させる時期を早くしてもよい。第１起動部５５は、起動回数に応じて起動時期を異ならせるため、例えば起動回数と起動時期とを対応付けた起動時期テーブルを用いる。
【００９７】
図１４は起動時期テーブルの別の一例を表す。図１４の例では、「Ｄ１未満」、「Ｄ１以上Ｄ２未満」、「Ｄ２以上」という起動回数に、「特定時刻Ｔ１＋ｔ３」、「特定時刻Ｔ１＋ｔ２」、「特定時刻Ｔ１＋ｔ１」（ｔ１＜ｔ２＜ｔ３）という起動時期がそれぞれ対応付けられている。この例では、履歴情報記憶部１１４が、プラグイン実行部１０５から起動されたプラグインのプラグインＩＤを供給させることで、そのプラグインＩＤと起動回数とを対応付けた情報を履歴情報として記憶する。
【００９８】
第１起動部５５は、見込みプラグインのプラグインＩＤが供給されて特定時刻Ｔ１が確定すると、そのプラグインＩＤに対応付けて履歴情報記憶部１１４に記憶されている起動回数に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。起動回数が多いプラグインほど、処理を要求されることが多いから、万が一そのプラグインの起動に遅れが生じた場合の影響が大きくなる。図１４の例では起動回数が多い見込みプラグインほど起動時期を早くするので、起動時期を一律にする場合に比べて、見込みプラグインによる処理の遅延が後続の処理に与える影響が小さくなる。
【００９９】
また、第１起動部５５は、特定された見込みプラグインをメッセージプラグインとして示すメッセージよりも前にキュー１０３に蓄積されたメッセージが示すプラグインにより実行される処理に要する時間（処理時間）が長いほど見込みプラグインを起動させる時期を遅くしてもよい。第１起動部５５は、処理時間に応じて起動時期を異ならせるため、例えば処理時間と起動時期とを対応付けた起動時期テーブルを用いる。
【０１００】
図１５は起動時期テーブルの別の一例を表す。図１５の例では、「Ｅ１未満」、「Ｅ１以上Ｅ２未満」、「Ｅ２以上」という処理時間に、「特定時刻Ｔ１＋ｔ１」、「特定時刻Ｔ１＋ｔ２」、「特定時刻Ｔ１＋ｔ３」（ｔ１＜ｔ２＜ｔ３）という起動時期がそれぞれ対応付けられている。この例では、例えばプラグイン管理部１０４が、キュー１０３に蓄積されているメッセージを読み出して、読み出したメッセージが示す処理の内容に基づいてその処理に要する時間（処理時間）を算出する。この場合のプラグイン管理部１０４は本発明の「算出部」の一例である。
【０１０１】
第１起動部５５は、見込みプラグインのプラグインＩＤが供給されて特定時刻Ｔ１が確定すると、そのプラグインＩＤを示すメッセージよりも前に蓄積されたメッセージについて算出された処理時間の合計時間に起動時期テーブルで対応付けられている起動時期まで待ってから見込みプラグインを起動する。こうして算出された処理時間の合計時間は、見込みプラグインに処理の実行が指示されるまでの待ち時間に相当する。この待ち時間が長いほど起動時期を遅くすることで、起動時期を一律にする場合に比べて、図１１の例と同様に、プラグインが処理を実行していないのにインスタンスが起動している状態となる期間が短くなる。
【０１０２】
［２−２］インスタンス上で起動するプラグインの数
プラグイン実行部１０５は、実施例では、１つのインスタンス上では１つのプラグインだけを実行したが、これに限らず、１つのインスタンス上で複数のインスタンスを実行してもよい。その場合、オートスケール管理部１１５は、インスタンス上に非処理中プラグインが１つあっても、他のプラグインが処理を実行していれば、非処理中プラグインだけを停止させて、他のプラグイン及びインスタンスは停止させない。
【０１０３】
そして、オートスケール管理部１１５は、インスタンス上の全てのプラグインが非処理中プラグインになった場合のみ、その非処理中プラグイン及びインスタンスを停止させる。いずれの場合も、オートスケール管理部１１５は、処理が完了したプラグインを停止させるという点では変わらない。オートスケール管理部１１５は本発明の「機能停止部」の一例である。
【０１０４】
また、オートスケール管理部１１５は、プラグインをスケールアウトする際に、いずれかのインスタンスにそのプラグインを起動させるリソースが空いていれば、そのインスタンス上でプラグインを起動させる。このように、オートスケール管理部１１５は、処理を実行中のプラグインは残しつつ、なるべくインスタンス数が増えないようにオートスケールを制御する。
【０１０５】
［２−３］プラグインのみのオートスケール
プラグイン実行部１０５は、実施例では、プラグイン及びインスタンスに対して同時にオートスケールを行った（プラグインを起動するときにはインスタンスも起動し、プラグインを停止するときにはインスタンスも停止した）が、これに限らず、前述した変形例のようにプラグインのみに対してオートスケールを行ってもよい。
【０１０６】
なお、前述した変形例では１つのインスタンス上で複数のインスタンスを実行したが、実施例のように１つのインスタンス上では１つのプラグインだけを実行する場合に、プラグインのみに対してオートスケールを行ってもよい。その場合、プラグインのみを停止させると、プラグインを実行していない状態のインスタンスが残ることになる。第１起動部５５は、そのようにインスタンス上のプラグインが処理を完了して停止されると、特定された見込みプラグインをそのインスタンス上で起動してもよい。
【０１０７】
インスタンスを起動させるためにはプラグインと同様に一定の時間を要するが、上記のとおり起動済みのインスタンスを再利用することで、インスタンスの起動時間を待つことが不要になる。第１起動部５５は、このようにインスタンスを再利用して見込みプラグインを起動する場合には、その見込みプラグインについては図１０から図１５の説明で述べたような起動時期を変化させる制御を行わなくてよい。
【０１０８】
インスタンスを再利用する場合は新たなインスタンスの費用は掛からないので、起動時期を遅らせても課金される期間が短縮されない。そうであれば、特定された見込みプラグインを第１起動部５５がすぐに起動することで、起動時期を遅らせる場合に比べて、処理の早期終了の可能性が高められる。
【０１０９】
［２−４］見込みプラグインの再利用
上記の各例では、第１起動部５５が常に見込みプラグインを新たに起動したが、既に起動されているプラグインを利用することで、見込みプラグインを新たに起動しないようにしてもよい。具体的には、第１起動部５５は、特定された見込みプラグインと同種のプラグインが一定期間処理を実行していない状態で存在する場合（つまり上述した非処理中プラグインが存在する場合）は、見込みプラグインの起動を行わない。
【０１１０】
そして、このように第１起動部５５が見込みプラグインの起動を行わない場合に、プラグイン管理部１０４は、前述した非処理中プラグインを制御して、その見込みプラグインの特定に用いられた要求がされた処理を実行させる。この場合のプラグイン管理部１０４は本発明の「実行制御部」の一例である。
【０１１１】
本変形例でも、非処理中プラグインが起動されているインスタンスが再利用されるので、新たなインスタンスの費用は掛からない。また、インスタンス及びプラグインの両方を再利用することで、それら両方の停止及び起動に要する時間が不要になるから、この再利用を行わない場合に比べて、処理の早期終了の可能性が高められる。
【０１１２】
［２−５］各機能の実現方法
図３に表す各機能は、２以上の機能が統合されてもよいし、１つの機能が２以上の機能に分割されてもよい。例えば、タスクサービス部１０１が、タスクの実行の要求を受け付ける受付部と、受け付けた要求に基づいてメッセージの生成等を行う生成部と、要求データをタスク要求情報管理部１１１に供給して要求内容を通知する通知部とに分割されてもよい。また、オートスケール管理部１１５が、インスタンスのオートスケールを管理する第１管理部と、プラグインのオートスケールを管理する第２管理部とに分割されてもよい。
【０１１３】
また、タスク要求情報管理部１１１、タスク定義情報記憶部１１２、リクエストパラメータ情報記憶部１１３及び履歴情報記憶部１１４が、見込みプラグインを特定する特定部として統合されてもよい。また、図３に表す各部とは別に見込みプラグインを特定する特定部を設けてもよい。要するに、タスクサービス提供システム１の全体で図３に表す各機能と同等の機能が実現されていれば、機能のまとめ方はどのようになっていてもよい。
【０１１４】
［２−６］発明のカテゴリ
本発明は、サーバ装置１０という情報処理装置の他、その情報処理装置を備えるクラウドシステム４又はタスクサービス提供システム１という情報処理システムとしても捉えられる。また、本発明は、各装置が実施する処理を実現するための情報処理方法としても捉えられるし、各装置を制御するコンピュータを機能させるためのプログラムとしても捉えられる。このプログラムは、それを記憶させた光ディスク等の記録媒体の形態で提供されてもよいし、インターネット等の通信回線を介してコンピュータにダウンロードさせ、それをインストールして利用可能にするなどの形態で提供されてもよい。
【符号の説明】
【０１１５】
１…タスクサービス提供システム、３…ユーザ端末、４…クラウドシステム、１０…サーバ装置、１０１…タスクサービス部、１０２…タスク定義部、１０３…キュー、１０４…プラグイン管理部、１０５…プラグイン実行部、１１１…タスク要求情報管理部、１１２…タスク定義情報記憶部、１１３…リクエストパラメータ情報記憶部、１１４…履歴情報記憶部、１１５…オートスケール管理部。
【図１】
2019087098.tif 000003
【図２】
2019087098.tif 000004
【図３】
2019087098.tif 000005
【図４】
2019087098.tif 000006
【図５】
2019087098.tif 000007
【図６】
2019087098.tif 000008
【図７】
2019087098.tif 000009
【図８】
2019087098.tif 000010
【図９】
2019087098.tif 000011
【図１０】
2019087098.tif 000012
【図１１】
2019087098.tif 000013
【図１２】
2019087098.tif 000014
【図１３】
2019087098.tif 000015
【図１４】
2019087098.tif 000016
【図１５】
2019087098.tif 000017