(57)【要約】【課題】複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行うにあたって、依頼の開始から処理結果を受け取るまでの時間を用いて、複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させるようにした情報処理装置を提供する。【解決手段】情報処理装置の取得手段は、複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行った場合に、該依頼の開始から処理結果を受け取るまでの時間を用いて、該処理における単位量あたりの時間を取得し、制御手段は、前記取得手段によって取得された時間が予め定められた条件を満たす場合に、前記複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させるように制御する。【選択図】図１
2017033463.tif 000002
【特許請求の範囲】
【請求項１】
複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行った場合に、該依頼の開始から処理結果を受け取るまでの時間を用いて、該処理における単位量あたりの時間を取得する取得手段と、
前記取得手段によって取得された時間が予め定められた条件を満たす場合に、前記複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させるように制御する制御手段
を具備することを特徴とする情報処理装置。
【請求項２】
前記制御手段は、前記取得手段によって取得された各情報処理装置における時間のうち最も短い時間であった情報処理装置に対しては、次回依頼する処理の処理量を増加させ、その他の情報処理装置に対しては、次回依頼する処理の処理量を減少させる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記制御手段は、前記取得手段によって取得された時間に応じて、増減させる処理量を決定する
ことを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記制御手段は、前記複数の他の情報処理装置のいずれかに処理を依頼してからの経過時間が、予め定められた時間より長い又は以上となった場合は、当該情報処理装置以外の情報処理装置に対して該処理を依頼する
ことを特徴とする請求項１から３のいずれか一項に記載の情報処理装置。
【請求項５】
コンピュータを、
複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行った場合に、該依頼の開始から処理結果を受け取るまでの時間を用いて、該処理における単位量あたりの時間を取得する取得手段と、
前記取得手段によって取得された時間が予め定められた条件を満たす場合に、前記複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させるように制御する制御手段
として機能させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及び情報処理プログラムに関する。
【背景技術】
【０００２】
特許文献１には、プリント開始の指令がなされてから実際にプリントが終了するまでの時間が短く、プリントを行う際の時間的な効率が高く生産性の高い画像形成システム及びクライアント装置を提供することを課題とし、クライアント装置として機能しているデジタル複写機は、ＬＡＮ１及びＬＡＮ２を通して接続されているプリンタ、コンピュータ、及び複写機等のサーバー装置の機能及びプリント速度などの情報を、これらサーバー装置に要求し、保存し、また、クライアント装置からサーバー装置間のネットワークのデータ転送速度及びサーバー装置のデータ展開能力を実測して保存し、それらの情報及びクライアント装置がサーバー装置に要求するプリントジョブのモードより、最速なサーバー装置を選択してプリント要求を行うことが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−１１０１５８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明は、複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行うにあたって、依頼の開始から処理結果を受け取るまでの時間を用いて、複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させるようにした情報処理装置及び情報処理プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００５】
かかる目的を達成するための本発明の要旨とするところは、次の各項の発明に存する。
請求項１の発明は、複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行った場合に、該依頼の開始から処理結果を受け取るまでの時間を用いて、該処理における単位量あたりの時間を取得する取得手段と、前記取得手段によって取得された時間が予め定められた条件を満たす場合に、前記複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させるように制御する制御手段を具備することを特徴とする情報処理装置である。
【０００６】
請求項２の発明は、前記制御手段は、前記取得手段によって取得された各情報処理装置における時間のうち最も短い時間であった情報処理装置に対しては、次回依頼する処理の処理量を増加させ、その他の情報処理装置に対しては、次回依頼する処理の処理量を減少させることを特徴とする請求項１に記載の情報処理装置である。
【０００７】
請求項３の発明は、前記制御手段は、前記取得手段によって取得された時間に応じて、増減させる処理量を決定することを特徴とする請求項２に記載の情報処理装置である。
【０００８】
請求項４の発明は、前記制御手段は、前記複数の他の情報処理装置のいずれかに処理を依頼してからの経過時間が、予め定められた時間より長い又は以上となった場合は、当該情報処理装置以外の情報処理装置に対して該処理を依頼することを特徴とする請求項１から３のいずれか一項に記載の情報処理装置である。
【０００９】
請求項５の発明は、コンピュータを、複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行った場合に、該依頼の開始から処理結果を受け取るまでの時間を用いて、該処理における単位量あたりの時間を取得する取得手段と、前記取得手段によって取得された時間が予め定められた条件を満たす場合に、前記複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させるように制御する制御手段として機能させるための情報処理プログラムである。
【発明の効果】
【００１０】
請求項１の情報処理装置によれば、複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行うにあたって、依頼の開始から処理結果を受け取るまでの時間を用いて、複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させることができる。
【００１１】
請求項２の情報処理装置によれば、各情報処理装置における時間のうち最も短い時間であった情報処理装置に対しては、次回依頼する処理の処理量を増加させ、その他の情報処理装置に対しては、次回依頼する処理の処理量を減少させることができる。
【００１２】
請求項３の情報処理装置によれば、処理における単位量あたりの時間に応じて、増減させる処理量を決定することができる。
【００１３】
請求項４の情報処理装置によれば、複数の他の情報処理装置のいずれかに処理を依頼してからの経過時間が、予め定められた時間より長い又は以上となった場合は、当該情報処理装置以外の情報処理装置に対して該処理を依頼することができる。
【００１４】
請求項５の情報処理プログラムによれば、複数の他の情報処理装置のそれぞれに対して、複数回の処理の依頼を行うにあたって、依頼の開始から処理結果を受け取るまでの時間を用いて、複数の他の情報処理装置のそれぞれに対して次回依頼する処理の処理量を増減させることができる。
【図面の簡単な説明】
【００１５】
【図１】第１の実施の形態の構成例についての概念的なモジュール構成図である。
【図２】本実施の形態を利用したシステム構成例を示す説明図である。
【図３】第１の実施の形態による処理例を示すフローチャートである。
【図４】第１の実施の形態による処理例を示す説明図である。
【図５】第１の実施の形態による処理例を示す説明図である。
【図６】第１の実施の形態による処理例を示す説明図である。
【図７】従来技術で同様の処理を行った場合の例を示す説明図である。
【図８】第２の実施の形態の構成例についての概念的なモジュール構成図である。
【図９】パラメータテーブルのデータ構造例を示す説明図である。
【図１０】本実施の形態を実現するコンピュータのハードウェア構成例を示すブロック図である。
【発明を実施するための形態】
【００１６】
以下、図面に基づき本発明を実現するにあたっての好適な各種の実施の形態の例を説明する。
図１は、第１の実施の形態の構成例についての概念的なモジュール構成図を示している。
なお、モジュールとは、一般的に論理的に分離可能なソフトウェア（コンピュータ・プログラム）、ハードウェア等の部品を指す。したがって、本実施の形態におけるモジュールはコンピュータ・プログラムにおけるモジュールのことだけでなく、ハードウェア構成におけるモジュールも指す。それゆえ、本実施の形態は、それらのモジュールとして機能させるためのコンピュータ・プログラム（コンピュータにそれぞれの手順を実行させるためのプログラム、コンピュータをそれぞれの手段として機能させるためのプログラム、コンピュータにそれぞれの機能を実現させるためのプログラム）、システム及び方法の説明をも兼ねている。ただし、説明の都合上、「記憶する」、「記憶させる」、これらと同等の文言を用いるが、これらの文言は、実施の形態がコンピュータ・プログラムの場合は、記憶装置に記憶させる、又は記憶装置に記憶させるように制御するという意味である。また、モジュールは機能に一対一に対応していてもよいが、実装においては、１モジュールを１プログラムで構成してもよいし、複数モジュールを１プログラムで構成してもよく、逆に１モジュールを複数プログラムで構成してもよい。また、複数モジュールは１コンピュータによって実行されてもよいし、分散又は並列環境におけるコンピュータによって１モジュールが複数コンピュータで実行されてもよい。なお、１つのモジュールに他のモジュールが含まれていてもよい。また、以下、「接続」とは物理的な接続の他、論理的な接続（データの授受、指示、データ間の参照関係等）の場合にも用いる。「予め定められた」とは、対象としている処理の前に定まっていることをいい、本実施の形態による処理が始まる前はもちろんのこと、本実施の形態による処理が始まった後であっても、対象としている処理の前であれば、そのときの状況・状態に応じて、又はそれまでの状況・状態に応じて定まることの意を含めて用いる。「予め定められた値」が複数ある場合は、それぞれ異なった値であってもよいし、２以上の値（もちろんのことながら、全ての値も含む）が同じであってもよい。また、「Ａである場合、Ｂをする」という意味を有する記載は、「Ａであるか否かを判断し、Ａであると判断した場合はＢをする」の意味で用いる。ただし、Ａであるか否かの判断が不要である場合を除く。
また、システム又は装置とは、複数のコンピュータ、ハードウェア、装置等がネットワーク（一対一対応の通信接続を含む）等の通信手段で接続されて構成されるほか、１つのコンピュータ、ハードウェア、装置等によって実現される場合も含まれる。「装置」と「システム」とは、互いに同義の用語として用いる。もちろんのことながら、「システム」には、人為的な取り決めである社会的な「仕組み」（社会システム）にすぎないものは含まない。
また、各モジュールによる処理毎に又はモジュール内で複数の処理を行う場合はその処理毎に、対象となる情報を記憶装置から読み込み、その処理を行った後に、処理結果を記憶装置に書き出すものである。したがって、処理前の記憶装置からの読み込み、処理後の記憶装置への書き出しについては、説明を省略する場合がある。なお、ここでの記憶装置としては、ハードディスク、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、外部記憶媒体、通信回線を介した記憶装置、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）内のレジスタ等を含んでいてもよい。
【００１７】
本実施の形態である情報処理装置１００は、複数の他の情報処理装置（以下、サーバーともいう）のそれぞれに対して、複数回の処理の依頼を行うものであって、図１の例に示すように、制御モジュール１１０、処理要求モジュール１２０、処理結果受付モジュール１３０、転送・処理時間保存モジュール１４０を有している。
【００１８】
フロー処理サーバー２００は、情報処理装置１００の制御モジュール１１０と接続されている。フロー処理サーバー２００は、情報処理装置１００に対して、処理の依頼を行う。例えば、フローを構成している複数の処理の依頼がある。そして、情報処理装置１００から処理結果を受け取る。
情報処理装置１００は、フロー処理サーバー２００から受けた処理の依頼を分割して、選定した複数のサーバー２５０に複数回の処理依頼を行う。特に、各サーバー２５０に対して、同種の依頼を行う。例えば、フロー処理サーバー２００から文字認識処理、画像処理等の処理を受け取り、それを複数のサーバー２５０に対して、複数回の処理依頼に分けることが行われる。具体的には、フロー処理サーバー２００から１００ページの画像の文字認識処理を受け取り、後述する処理量に分割して、３台のサーバー２５０に対して文字認識処理を複数回依頼する。その処理結果を各サーバー２５０から受け取って、フロー処理サーバー２００へ返す。なお、情報処理装置１００は、フロー処理サーバー２００内に含まれていてもよい。
サーバー２５０（例えば、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃ）は、情報処理装置１００の処理要求モジュール１２０、処理結果受付モジュール１３０と接続されている。サーバー２５０は、複数台あり、情報処理装置１００から処理の依頼を受け取って、その処理を実行し、その処理結果を情報処理装置１００へ送信する。フロー処理サーバー２００もサーバー２５０としての機能を有していてもよい。したがって、フロー処理サーバー２００も情報処理装置１００から処理依頼を受け取って、処理を行うようにしてもよい。
【００１９】
なお、サーバー２５０は、図２（Ａ）の例に示すように複数の情報処理装置１００と接続されている場合があり、また、サーバー２５０単独での処理を行う場合がある。情報処理装置１００とサーバー２５０との間におけるデータ転送速度、及びサーバー２５０での処理速度は、他の処理依頼が入ること等により、刻々と変化する可能性がある。この変化に追従した処理要求になっていない場合（本実施の形態の情報処理装置１００を用いない場合）、選定したサーバー２５０に処理依頼を行っても、処理結果が返ってくるまでの間に、サーバー２５０とのデータ転送速度、及びサーバー２５０の処理速度が低下し、時間的な効率が低下してしまう可能性がある。
【００２０】
制御モジュール１１０は、処理要求モジュール１２０、処理結果受付モジュール１３０、転送・処理時間保存モジュール１４０、フロー処理サーバー２００と接続されている。制御モジュール１１０は、情報処理装置１００全体の処理を行う。具体的には、フロー処理サーバー２００から処理の依頼を受け取る。もちろんのことながら、処理対象となるデータも受け取る。前述の例では、文字認識対象の画像情報である。フロー処理サーバー２００から受け取った処理を分割する。そして、分割した処理を依頼するサーバー２５０を選択する。各サーバー２５０に処理を依頼するために、処理要求モジュール１２０を制御する。そして、処理結果受付モジュール１３０から各サーバー２５０での処理結果を受け取って、マージ等の処理を行って、フロー処理サーバー２００に送信する。
例えば、フロー処理サーバー２００から受け取った処理の最初の分割については、その処理対象の最小単位（例えば、前述の文字認識処理の例では、１ページ分の画像）に分割してもよい。２回目以降で分割する処理量については、以下の処理を行って決定する。
【００２１】
また、情報処理装置１００は、複数の他の情報処理装置であるサーバー２５０のそれぞれに対して、複数回の処理の依頼を行った場合に、その依頼の開始から処理結果を受け取るまでの時間を用いて、その処理における単位量あたりの時間を、転送・処理時間保存モジュール１４０から取得する。
そして、情報処理装置１００は、転送・処理時間保存モジュール１４０から取得した時間が予め定められた条件を満たす場合に、複数のサーバー２５０（単位量あたりの時間が算出されたサーバー２５０）のそれぞれに対して、次回依頼する処理の処理量を増減させるように制御する。
具体的には、制御モジュール１１０は、転送・処理時間保存モジュール１４０から取得した各サーバー２５０における時間のうち最も短い時間であったサーバー２５０に対しては、次回依頼する処理の処理量を増加させ、その他のサーバー２５０に対しては、次回依頼する処理の処理量を減少させるようにしてもよい。
また、制御モジュール１１０は、転送・処理時間保存モジュール１４０から取得した時間に応じて、増減させる処理量を決定するようにしてもよい。
また、制御モジュール１１０は、複数のサーバー２５０のいずれかに処理を依頼してからの経過時間が、予め定められた時間より長い又は以上となった場合は、他のサーバー２５０に対してその処理を依頼するようにしてもよい。
【００２２】
処理要求モジュール１２０は、制御モジュール１１０、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃと接続されている。処理要求モジュール１２０は、制御モジュール１１０からの指示にしたがって、複数のサーバー２５０に対して、複数回の処理の依頼を行う。
処理結果受付モジュール１３０は、制御モジュール１１０、転送・処理時間保存モジュール１４０、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃと接続されている。処理結果受付モジュール１３０は、各サーバー２５０からの処理結果を受け取る。そして、その処理結果を制御モジュール１１０へ渡す。
転送・処理時間保存モジュール１４０は、制御モジュール１１０、処理結果受付モジュール１３０と接続されている。転送・処理時間保存モジュール１４０は、処理要求モジュール１２０が各サーバー２５０に処理を依頼した日時（年、月、日、時、分、秒、秒以下、又はこれらの組み合わせであってもよい）、処理結果受付モジュール１３０が処理結果を受け取った日時、各サーバー２５０に対して行った各依頼における処理量を記憶する。つまり、依頼日時と処理結果受取日時から、その処理に要した処理時間（通信時間（処理要求モジュール１２０からサーバー２５０への通信時間と、サーバー２５０から処理結果受付モジュール１３０への通信時間）を含む）を算出し、その処理時間を処理量で除算することによって、その処理における単位量あたりの時間を算出することができる。
【００２３】
図２は、本実施の形態を利用したシステム構成例を示す説明図である。
処理の対象データを受け付ける画像処理装置２１０、処理を行う複数のサーバー２５０と、フロー処理全体を制御するフロー処理サーバー２００と、サーバーへの処理の振り分けを行う情報処理装置１００によって構成されているシステムである例を示す。
図２（Ａ）に示す例では、フロー処理サーバー２００Ａは、情報処理装置１００Ａ、画像処理装置２１０Ａ、画像処理装置２１０Ｂ、画像処理装置２１０Ｃ、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃ、サーバー２５０Ｄと接続されている。フロー処理サーバー２００Ｂは、情報処理装置１００Ｂ、画像処理装置２１０Ｄ、画像処理装置２１０Ｅ、画像処理装置２１０Ｆ、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｇ、サーバー２５０Ｈと接続されている。ユーザーの操作によって、画像処理装置２１０で文書が読み込まれ、処理の選択が行われ、画像処理装置２１０からフロー処理サーバー２００に対して指示が行われる。そして、フロー処理サーバー２００から指示を受けた情報処理装置１００では、その処理を分割して、分割後の処理を複数のサーバー２５０に割り振る。割り振られたサーバー２５０で処理が行われる。もちろんのことながら、フロー処理サーバー２００内に情報処理装置１００が含まれていてもよい。
図２（Ｂ）に示す例では、情報処理装置１００Ａ、フロー処理サーバー２００Ａ、フロー処理サーバー２００Ｂ、画像処理装置２１０Ａ、画像処理装置２１０Ｂ、画像処理装置２１０Ｃ、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃ、サーバー２５０Ｄは、通信回線２９０を介してそれぞれ接続されている。通信回線２９０は、無線、有線、これらの組み合わせであってもよく、例えば、通信インフラとしてのインターネット、イントラネット等であってもよい。また、情報処理装置１００、フロー処理サーバー２００、サーバー２５０による機能は、クラウドサービスとして実現してもよい。また、情報処理装置１００Ａのように、情報処理装置１００が通信回線２９０に接続されていてもよいし、情報処理装置１００Ｂのように、情報処理装置１００がフロー処理サーバー２００を介して通信回線２９０と接続されていてもよい。
例えば、前述した文字認識処理の例では、画像処理装置２１０で、文字認識の対象となる文書（複数ページ）を読み込み、その文書画像をフロー処理サーバー２００、情報処理装置１００が受け取って、複数のサーバー２５０で文字認識処理を行わせる処理が行われる。
【００２４】
図３は、第１の実施の形態（主に制御モジュール１１０）による処理例を示すフローチャートである。この処理例では、一度に処理要求するデータ量を小さく分割し、各サーバー２５０へ処理要求を行うことを繰り返す。各サーバー２５０の、処理要求を開始してから、処理結果が返ってくるまでの時間を取得する。
ステップＳ３０２では、変数Ｎにａを代入する。具体的には、はじめに各サーバー２５０に処理要求を開始するデータ量（Ｎ）は、任意に決定する。例えば、ａとして、１枚、全枚数のある割合の枚数等のように決定する。
ステップＳ３０４では、サーバー２５０に対して、Ｎ枚の処理要求を行う。
【００２５】
ステップＳ３０６では、サーバー２５０からタイムアウト時間内に処理結果が返ってくるか否かを判断し、返ってくる場合はステップＳ３１２へ進み、それ以外の場合はステップＳ３０８へ進む。
ステップＳ３０８では、そのＮ枚を他のサーバー２５０に処理要求する。そして、タイムアウトしたサーバー２５０に対して、処理の中止を指示する。この後、ステップＳ３０２に戻る。したがって、タイムアウトしたサーバー２５０に対して、再度の処理要求を行うことになる。
ステップＳ３１０では、予め定められた時間待機する。
ステップＳ３０６〜Ｓ３１０の処理によって、あるサーバー２５０に処理要求を開始してから、処理結果が返ってくるまでの時間が、予め定められたタイムアウト時間を超えた場合には、そのサーバー２５０に処理要求を行ったデータを、他のサーバー２５０に送信して、処理要求を行う。つまり、タイムアウトしたサーバー２５０を代替して、他のサーバー２５０に処理を行わせる。その後、予め定められた待機時間が経過したら、タイムアウトしたサーバー２５０へ処理要求を開始する。
【００２６】
ステップＳ３１２では、その時点（処理結果を受信した時点）において、処理結果を返信してきたサーバー２５０は、１枚あたりの処理時間が最短のサーバー２５０か否かを判断し、１枚あたりの時間が最短のサーバー２５０である場合はステップＳ３１４へ進み、それ以外の場合はステップＳ３１６へ進む。
具体的には、あるサーバー２５０から処理結果が返ってきたら、そのサーバー２５０の、単位データ量あたりの、処理要求を開始してから、処理結果が返ってくるまでの時間を、最新の値に更新する。その値と、他の各サーバー２５０の、最新の、単位データ量あたりの、処理要求を開始してから、処理結果が返ってくるまでの時間とを比較する。
ステップＳ３１４では、Ｎ＝Ｎ＊（（処理結果が返ってくる直前の時点での最短サーバーの１枚あたりの時間）／（１枚あたりの時間）＋１）とする。つまり、最も短いサーバー２５０には、データ量を増加させて次の処理要求（ステップＳ３０４）を行う。
【００２７】
ステップＳ３１６では、変数Ｎは１ではないか判断する。変数Ｎが１ではない場合（ＹＥＳ）は、ステップＳ３１８へ進み、それ以外の場合（ＮＯ、変数Ｎが１である場合）はステップＳ３２０へ進む。変数Ｎが１である場合は、変数Ｎを減少させてしまうと、無駄な処理依頼（処理対象のデータが無い処理依頼）となってしまうので、これを防ぐためである。
ステップＳ３１８では、Ｎ＝Ｎ＊（１枚あたりの時間が最短のサーバーの１枚あたりの時間）／（１枚あたりの時間）とする。つまり、最も短いサーバー２５０ではないので、データ量を減らして次の処理要求（ステップＳ３０４）を行う。
ステップＳ３２０では、次回の変数Ｎに今回の変数Ｎを代入する。つまり、今回の変数Ｎを次回の繰り返し処理（ステップＳ３０４以降の処理）でそのまま用いる。
【００２８】
なお、ステップＳ３１４、ステップＳ３１８で用いる式で、次の処理要求におけるデータ量を増減させているのであるが、そのデータ量の増減量は、最新の、単位データ量あたりの、処理要求を開始してから、処理結果が返ってくるまでの時間によって決めるものである。
また、ステップＳ３１６における判断を、「変数Ｎが初期値ａ以下であるか」としてもよい。つまり、データ量の下限値は、はじめに各サーバー２５０に処理要求を開始するデータ量（ａ）とする。
【００２９】
図４は、第１の実施の形態による処理例を示す説明図である。
ある時点において、３つのサーバー（サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃ）に同時に１０枚ずつ処理依頼した場合のそれ以降の処理の例を示したものである。
図４（Ａ）は、サーバー２５０Ａには、１回目の依頼で「１０」枚、２回目の依頼で「２０」枚、３回目の依頼で「３０」枚の依頼を行ったことを示している。つまり、情報処理装置１００の処理によって、サーバー２５０Ａに依頼する処理量を増加させている。
そして、サーバー２５０Ｂには、同様に「１０」、「３」、「１」、「１」、「２」、「４」、「３」、「２」、「１」、「１」、「１」、「１」、「２」、「４」の依頼を行ったことを示しており、サーバー２５０Ｃには、「１０」、「５」、「２」、「１」、「１」、「１」、「１」、「１」、「１」、「２」、「１」、「１」、「１」、「１」、「１」、「１」、「２」、「４」、「３」、「２」の依頼を行ったことを示している。つまり、情報処理装置１００の処理によって、サーバー２５０Ｂ、サーバー２５０Ｃに依頼する処理量を、１回目よりは２回目で減少させ、それ以降の処理では増減させている。
図４（Ａ）は、サーバー２５０Ａでは、合計６０枚の処理を行い、サーバー２５０Ｂでは、合計３６枚の処理を行い、サーバー２５０Ｃでは、合計４２枚の処理を行い、総合計で１３８枚の処理が行われたことを示している。
【００３０】
図４（Ｂ）は、各サーバー２５０での各処理が行われたときの処理速度（処理依頼を行ってから処理結果が戻ってくるまでの時間を、処理データ量（ここでは画像１枚）で除算した値、つまり、単位データ量あたりの処理時間）を示したものである。具体的には、１０枚ずつの処理依頼が行われる直前の時点では、サーバー２５０Ａは５、サーバー２５０Ｂは２０、サーバー２５０Ｃは１０、であり、１０枚ずつの処理依頼に対しては、サーバー２５０Ａは５、サーバー２５０Ｂは２０、サーバー２５０Ｃは１０、であり、次の処理依頼に対しては、サーバー２５０Ａは１０、サーバー２５０Ｂは１５、サーバー２５０Ｃは１５、である。このように変動するのは、前述したように、データ転送速度及びサーバー２５０の処理速度が変動するからである。
【００３１】
図４（Ｃ）は、各サーバー２５０での各処理が行われたときの処理時間を示している。つまり、サーバー２５０Ａでは１回目の処理時間は５０であり、２回目の処理時間は２００であり、３回目の処理時間は３００である。サーバー２５０Ｂでは１回目の処理時間は２００であり、２回目の処理時間は４５であり、３回目の処理時間は１５であり、以下続き、サーバー２５０Ｃでは１回目の処理時間は１００であり、２回目の処理時間は７５であり、３回目の処理時間は３０であり、以下続くことを示している。つまり、図４（Ａ）と図４（Ｂ）の対応する各欄の値を乗算した値である。
【００３２】
図４（Ｄ）は、各サーバー２５０での各処理が行われたときの累積の処理時間を示している。つまり、サーバー２５０Ａでは１回目の累積の処理時間は５０であり、２回目までの累積の処理時間は２５０であり、３回目までの累積の処理時間は５５０である。サーバー２５０Ｂでは１回目の処理時間は２００であり、２回目までの累積の処理時間は２４５であり、３回目までの累積の処理時間は２６０であり、以下続き、サーバー２５０Ｃでは１回目の処理時間は１００であり、２回目までの累積の処理時間は１７５であり、３回目までの累積の処理時間は２０５であり、以下続くことを示している。つまり、図４（Ｃ）における対応する欄の値と図４（Ｄ）の上の欄の値を加算した値である。そして、サーバー２５０Ａでの全体の処理時間は５５０であり、サーバー２５０Ｂでの全体の処理時間は５７５であり、サーバー２５０Ｃでの全体の処理時間は５８５であることを示している。つまり、全体の処理（当初のフロー処理サーバー２００が依頼した処理）に要した時間は、最終終了時間４９０の５８５であることを示している。
【００３３】
図５は、第１の実施の形態による処理例を示す説明図である。ここでは、ステップＳ３１４の処理（データ量を増加させる処理）の具体例を説明する。具体的には、累積時間２９５ｓ（累積時間Ｃ（２９５ｓ）５４４）直後における、サーバー２５０Ｃに処理を依頼するデータ量、つまり、図５（Ａ）に示す処理枚数Ｃ５１２の値「２」を算出するものである。
累積時間Ｃ（２９５ｓ）５４４の直前の時点である累積時間Ａ（２５０ｓ）５４０におけるサーバー２５０Ａの「１枚あたりの時間」は、図５（Ｂ）の例に示す処理速度Ａ（直前）５２０の「１０」、同様に、累積時間Ｃ（２９５ｓ）５４４の直前の時点である累積時間Ｂ（２９０ｓ）５４２におけるサーバー２５０Ｂの「１枚あたりの時間」は、図５（Ｂ）の例に示す処理速度Ｂ（直前）５２２の「１０」、累積時間Ｃ（２９５ｓ）５４４の時点におけるサーバー２５０Ｃの「１枚あたりの時間」は、図５（Ｂ）の例に示す処理速度Ｃ（直前）５２６の「１０」である。したがって、ステップＳ３１２で「ＹＥＳ」となり、式（１）を適用する。なお、ステップＳ３１２の判断において、サーバー２５０Ａ、サーバー２５０Ｂについては、累積時間２９５ｓと同じ累積時間はないので、２９５ｓの直前の累積時間における値を用いることになる。
Ｎ＝Ｎ＊（（処理結果が返ってくる直前の時点での最短サーバーの１枚あたりの時間）／（１枚あたりの時間）＋１）      式（１）
式（１）の右辺の「Ｎ」は、処理枚数Ｃ５１０の欄の値：１である。
式（１）の右辺の「処理結果が返ってくる直前の時点での最短サーバーの１枚あたりの時間」は、処理速度Ａ（直前）５２０、処理速度Ｂ（直前）５２２、処理速度Ｃ（直前）５２４の欄の値を比較して、最短である値：１０である。なお、この例では、全てが「１０」である。
式（１）の右辺の「１枚あたりの時間」は、処理速度Ｃ５２６の欄の値：１０である。
したがって、式（２）のように、次の繰り返し処理での枚数は２（処理枚数Ｃ（算出結果）５１２の欄の値）となる。
Ｎ＝１＊（１０／１０＋１）＝２      式（２）
【００３４】
図６は、第１の実施の形態による処理例を示す説明図である。ここでは、ステップＳ３１８の処理（データ量を減少させる処理）の具体例を説明する。具体的には、累積時間３５０ｓ（累積時間Ｂ（３５０ｓ）６４２）直後における、サーバー２５０Ｂに処理を依頼するデータ量、つまり、図６（Ａ）に示す処理枚数Ｂ（算出結果）６１２の値「３」を算出するものである。
累積時間Ｂ（３５０ｓ）６４２の直前の時点である累積時間Ａ（２５０ｓ）６４０におけるサーバー２５０Ａの「１枚あたりの時間」は、図６（Ｂ）の例に示す処理速度Ａ６２０の「１０」、同様に、累積時間Ｂ（３５０ｓ）６４２の時点である累積時間Ｂ（３５０ｓ）６４２におけるサーバー２５０Ｂの「１枚あたりの時間」は、図６（Ｂ）の例に示す処理速度Ｂ６２２の「１５」、累積時間Ｂ（３５０ｓ）６４２の直前の時点である累積時間Ｃ（３４０ｓ）６４４におけるサーバー２５０Ｃの「１枚あたりの時間」は、図６（Ｂ）の例に示す処理速度Ｃ６２４の「１５」である。したがって、ステップＳ３１２で「ＮＯ」となり、その時点での処理枚数Ｎ（処理枚数Ｂ６１０の値は「４」）は１ではないので、ステップＳ３１６で「ＹＥＳ」となり、式（３）を適用する。なお、ステップＳ３１２の判断において、サーバー２５０Ａ、サーバー２５０Ｃについては、累積時間３５０ｓと同じ累積時間はないので、３５０ｓの直前の累積時間における値を用いることになる。
Ｎ＝Ｎ＊（１枚あたりの時間が最短のサーバーの１枚あたりの時間）／（１枚あたりの時間）  式（３）
式（３）の右辺の「Ｎ」は、処理枚数Ｂ６１０の欄の値：４である。
式（３）の右辺の「１枚あたりの時間が最短のサーバーの１枚あたりの時間」は、処理速度Ａ６２０、処理速度Ｂ６２２、処理速度Ｃ６２４の欄の値を比較して、最短である値：１０である。
式（３）の右辺の「１枚あたりの時間」は、処理速度Ｃ６２４の欄の値：１５である。
したがって、式（４）のように、次の繰り返し処理での枚数は３（処理枚数Ｂ（算出結果）６１２の欄の値）となる。
Ｎ＝４＊（１０／１５）＝３  式（４）
【００３５】
図７は、従来技術で同様の処理を行った場合の例を示す説明図である。本実施の形態の情報処理装置１００を用いずに、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃに均等の枚数（各４６枚）を依頼した場合の例を示すものである。依頼を分割しているわけではなく、各サーバー２５０に１回の処理依頼を行っている。
図７（Ｂ）の例は、図４（Ｂ）（図５（Ｂ）、図６（Ｂ））の例と同じものであり、各サーバー２５０の処理速度（処理依頼から処理結果が戻ってくるまでの時間）は変動する。この場合、サーバー２５０Ａでは、結果を得るまでに、図７（Ｄ）の例に示すように「４１０」（ｓ）かかり、サーバー２５０Ｂでは、最終結果を得るまでに、図７（Ｄ）の例に示すように「７２５」（ｓ）かかり、サーバー２５０Ｃでは、最終結果を得るまでに、図７（Ｄ）の例に示すように「６５５」（ｓ）かかることとなり、結局、全体の最終的な処理結果を得るまでには「７２５」（ｓ）（最終終了時間７９０）となる。
本実施の形態の情報処理装置１００を用いた処理結果は、図４（Ｄ）の例に示すように、サーバー２５０Ａでは、結果を得るまでに、図４（Ｄ）の例に示すように「５５０」（ｓ）かかり、サーバー２５０Ｂでは、最終結果を得るまでに、図５（Ｄ）の例に示すように「５７５」（ｓ）かかり、サーバー２５０Ｃでは、最終結果を得るまでに、図５（Ｄ）の例に示すように「５８５」（ｓ）かかることとなり、結局、全体の最終的な処理結果を得るまでには「５８５」（ｓ）（最終終了時間４９０）となる。図７（Ｄ）の例に示すものよりも早く完了しており、各サーバー２５０における完了時刻のばらつきも、図７（Ｄ）の例に比べて低くなっている。
【００３６】
＜＜第２の実施の形態＞＞
図８は、第２の実施の形態の構成例についての概念的なモジュール構成図である。
情報処理装置８００は、制御モジュール１１０、処理要求モジュール１２０、処理結果受付モジュール１３０、転送・処理時間保存モジュール１４０、パラメータ保存モジュール８５０を有している。情報処理装置８００は、第１の実施の形態の情報処理装置１００にパラメータ保存モジュール８５０を付加したものである。なお、第１の実施の形態と同種の部位には同一符号を付し重複した説明を省略する。
フロー処理サーバー２００は、情報処理装置１００の制御モジュール１１０と接続されている。
サーバー２５０（サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃ）は、情報処理装置１００の処理要求モジュール１２０、処理結果受付モジュール１３０と接続されている。
処理要求モジュール１２０は、制御モジュール１１０、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃと接続されている。
処理結果受付モジュール１３０は、制御モジュール１１０、転送・処理時間保存モジュール１４０、サーバー２５０Ａ、サーバー２５０Ｂ、サーバー２５０Ｃと接続されている。
転送・処理時間保存モジュール１４０は、制御モジュール１１０、処理結果受付モジュール１３０と接続されている。
【００３７】
パラメータ保存モジュール８５０は、制御モジュール１１０と接続されている。パラメータ保存モジュール８５０は、制御モジュール１１０が用いるパラメータを記憶している。例えば、パラメータテーブル９００を記憶している。図９は、パラメータテーブル９００のデータ構造例を示す説明図である。パラメータテーブル９００は、項目欄９１０、値欄９２０を有している。項目欄９１０は、項目を記憶している。値欄９２０は、その項目の値を記憶している。具体的には、図３の例に示すフローチャートにおけるステップＳ３０６におけるタイムアウト時間、ステップＳ３１０における待機時間、ステップＳ３０２における初期値であるａを記憶している。
制御モジュール１１０は、処理要求モジュール１２０、処理結果受付モジュール１３０、転送・処理時間保存モジュール１４０、パラメータ保存モジュール８５０、フロー処理サーバー２００と接続されている。パラメータ保存モジュール８５０に記憶されているパラメータを用いて処理を行う。具体的には、前述のように、ステップＳ３０６、ステップＳ３１０、ステップＳ３０２で用いるパラメータを設定する。
また、パラメータテーブル９００内の値を過去の実績に応じて変更するようにしてもよい。例えば、ステップＳ３０２における初期値では、最初は、ランダム（疑似乱数を含む）に値を設定し、処理時間（累積時間）／処理量（枚数）が、最も高いものとなった場合の初期値を採用するようにしてもよい。
【００３８】
図１０を参照して、本実施の形態の情報処理装置のハードウェア構成例について説明する。図１０に示す構成は、例えばパーソナルコンピュータ（ＰＣ）等によって構成されるものであり、スキャナ等のデータ読み取り部１０１７と、プリンタ等のデータ出力部１０１８を備えたハードウェア構成例を示している。
【００３９】
ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１００１は、前述の実施の形態において説明した各種のモジュール、すなわち、制御モジュール１１０、処理要求モジュール１２０、処理結果受付モジュール１３０等の各モジュールの実行シーケンスを記述したコンピュータ・プログラムにしたがった処理を実行する制御部である。
【００４０】
ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１００２は、ＣＰＵ１００１が使用するプログラムや演算パラメータ等を格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１００３は、ＣＰＵ１００１の実行において使用するプログラムや、その実行において適宜変化するパラメータ等を格納する。これらはＣＰＵバス等から構成されるホストバス１００４により相互に接続されている。
【００４１】
ホストバス１００４は、ブリッジ１００５を介して、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ／Ｉｎｔｅｒｆａｃｅ）バス等の外部バス１００６に接続されている。
【００４２】
キーボード１００８、マウス等のポインティングデバイス１００９は、操作者により操作される入力デバイスである。ディスプレイ１０１０は、液晶表示装置又はＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）等があり、各種情報をテキストやイメージ情報として表示する。
【００４３】
ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１０１１は、ハードディスク（フラッシュメモリ等であってもよい）を内蔵し、ハードディスクを駆動し、ＣＰＵ１００１によって実行するプログラムや情報を記録又は再生させる。ハードディスクは、転送・処理時間保存モジュール１４０、パラメータ保存モジュール８５０等としての機能を実現させる。さらに、その他の各種データ、各種コンピュータ・プログラム等が格納される。
【００４４】
ドライブ１０１２は、装着されている磁気ディスク、光ディスク、光磁気ディスク、又は半導体メモリ等のリムーバブル記録媒体１０１３に記録されているデータ又はプログラムを読み出して、そのデータ又はプログラムを、インタフェース１００７、外部バス１００６、ブリッジ１００５、及びホストバス１００４を介して接続されているＲＡＭ１００３に供給する。リムーバブル記録媒体１０１３も、ハードディスクと同様のデータ記録領域として利用可能である。
【００４５】
接続ポート１０１４は、外部接続機器１０１５を接続するポートであり、ＵＳＢ、ＩＥＥＥ１３９４等の接続部を持つ。接続ポート１０１４は、インタフェース１００７、及び外部バス１００６、ブリッジ１００５、ホストバス１００４等を介してＣＰＵ１００１等に接続されている。通信部１０１６は、通信回線に接続され、外部とのデータ通信処理を実行する。データ読み取り部１０１７は、例えばスキャナであり、ドキュメントの読み取り処理を実行する。データ出力部１０１８は、例えばプリンタであり、ドキュメントデータの出力処理を実行する。
【００４６】
なお、図１０に示す情報処理装置のハードウェア構成は、１つの構成例を示すものであり、本実施の形態は、図１０に示す構成に限らず、本実施の形態において説明したモジュールを実行可能な構成であればよい。例えば、一部のモジュールを専用のハードウェア（例えば特定用途向け集積回路（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ：ＡＳＩＣ）等）で構成してもよく、一部のモジュールは外部のシステム内にあり通信回線で接続しているような形態でもよく、さらに図１０に示すシステムが複数互いに通信回線によって接続されていて互いに協調動作するようにしてもよい。また、特に、パーソナルコンピュータの他、携帯情報通信機器（携帯電話、スマートフォン、モバイル機器、ウェアラブルコンピュータ等を含む）、情報家電、ロボット、複写機、ファックス、スキャナ、プリンタ、複合機（スキャナ、プリンタ、複写機、ファックス等のいずれか２つ以上の機能を有している画像処理装置）などに組み込まれていてもよい。
【００４７】
前述の実施の形態においては、処理として文字認識処理を例示して説明したが、これに限られず、データ（数値データ、テキストデータ、音声データ、画像データ、動画像データ等）に対する処理であればよい。ただし、分割した処理は、それぞれが同等な処理であることが望ましい。
【００４８】
なお、説明したプログラムについては、記録媒体に格納して提供してもよく、また、そのプログラムを通信手段によって提供してもよい。その場合、例えば、前記説明したプログラムについて、「プログラムを記録したコンピュータ読み取り可能な記録媒体」の発明として捉えてもよい。
「プログラムを記録したコンピュータ読み取り可能な記録媒体」とは、プログラムのインストール、実行、プログラムの流通等のために用いられる、プログラムが記録されたコンピュータで読み取り可能な記録媒体をいう。
なお、記録媒体としては、例えば、デジタル・バーサタイル・ディスク（ＤＶＤ）であって、ＤＶＤフォーラムで策定された規格である「ＤＶＤ−Ｒ、ＤＶＤ−ＲＷ、ＤＶＤ−ＲＡＭ等」、ＤＶＤ＋ＲＷで策定された規格である「ＤＶＤ＋Ｒ、ＤＶＤ＋ＲＷ等」、コンパクトディスク（ＣＤ）であって、読出し専用メモリ（ＣＤ−ＲＯＭ）、ＣＤレコーダブル（ＣＤ−Ｒ）、ＣＤリライタブル（ＣＤ−ＲＷ）等、ブルーレイ・ディスク（Ｂｌｕ−ｒａｙ（登録商標）  Ｄｉｓｃ）、光磁気ディスク（ＭＯ）、フレキシブルディスク（ＦＤ）、磁気テープ、ハードディスク、読出し専用メモリ（ＲＯＭ）、電気的消去及び書換可能な読出し専用メモリ（ＥＥＰＲＯＭ（登録商標））、フラッシュ・メモリ、ランダム・アクセス・メモリ（ＲＡＭ）、ＳＤ（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ）メモリーカード等が含まれる。
そして、前記のプログラム又はその一部は、前記記録媒体に記録して保存や流通等させてもよい。また、通信によって、例えば、ローカル・エリア・ネットワーク（ＬＡＮ）、メトロポリタン・エリア・ネットワーク（ＭＡＮ）、ワイド・エリア・ネットワーク（ＷＡＮ）、インターネット、イントラネット、エクストラネット等に用いられる有線ネットワーク、又は無線通信ネットワーク、さらにこれらの組み合わせ等の伝送媒体を用いて伝送させてもよく、また、搬送波に乗せて搬送させてもよい。
さらに、前記のプログラムは、他のプログラムの一部分であってもよく、又は別個のプログラムと共に記録媒体に記録されていてもよい。また、複数の記録媒体に分割して記録されていてもよい。また、圧縮や暗号化等、復元可能であればどのような態様で記録されていてもよい。
【符号の説明】
【００４９】
１００…情報処理装置
１１０…制御モジュール
１２０…処理要求モジュール
１３０…処理結果受付モジュール
１４０…転送・処理時間保存モジュール
２００…フロー処理サーバー
２１０…画像処理装置
２５０…サーバー
８００…情報処理装置
８５０…パラメータ保存モジュール
【図１】
2017033463.tif 000003
【図２】
2017033463.tif 000004
【図３】
2017033463.tif 000005
【図４】
2017033463.tif 000006
【図５】
2017033463.tif 000007
【図６】
2017033463.tif 000008
【図７】
2017033463.tif 000009
【図８】
2017033463.tif 000010
【図９】
2017033463.tif 000011
【図１０】
2017033463.tif 000012