図1は、本発明の一実施形態に係る画像処理システム(情報処理システムの一例)の全体構成を説明する図である。画像処理システムは、画像データに関する各種の情報処理(例えば、画像データの差分の検出、画像データに基づく情報の集計、および画像データの形式の変換など)を行うためのシステムである。画像処理システムは、画像形成装置1とサービス提供装置2(情報処理装置の一例)とを有する。画像形成装置1は、複写機、プリンタ、スキャナ、およびファクシミリなどとして機能するクライアント装置である。サービス提供装置2は、サービスを提供するサーバ装置である。本発明において、サービスは1以上の機能を組み合わせることにより提供される。本実施形態において、サービス提供装置2は、サービスの一例としてクラウドサービスを提供する。クラウドサービスとは、データの保存またはデータ形式の変換などの各種の情報処理を行うコンピュータ資源を、通信回線を介して提供するサービスである。サービス提供装置2は、画像データに関する各種の情報処理を画像形成装置1に代わって行う。サービス提供装置2は、各種の情報処理を行うためのコンピュータリソースを有する。画像形成装置1とサービス提供装置2とは、インターネットなどの通信回線Nを介して相互に接続されている。
図2は、サービス提供装置2のコンピュータリソースを説明する図である。コンピュータリソースとは、サービス提供装置2がクラウドサービスを提供するために用いる物理的または仮想的なコンピュータ資源をいう。図2に示す例で、サービス提供装置2は、複数台の仮想マシン20をコンピュータリソースとして有する。仮想マシン20は、仮想化技術を用いることによりサービス提供装置2の内部に設けられたマシンである。サービス提供装置2は、複数台の仮想マシン20をリソースプール200に蓄えている。図2に示す例で、サービス提供装置2を管理する業者(以下、「管理業者」という)とクラウドサービスを提供する業者(以下、「提供業者」という)とは異なる業者である。サービス提供装置2は、各提供業者において利用される仮想マシン20をリソースプール200から確保する。サービス提供装置2は、各提供業者について確保された仮想マシン20を利用して、当該クラウドサービスを提供する。図2に示す例では、サービス提供装置2は、リソースプール200に蓄えられた仮想マシン20の中から5台の仮想マシン20を提供業者Aについて確保しており、3台の仮想マシン20をクラウド提供業者Bについて確保している。サービス提供装置2は、クラウドサービスにおける処理の負荷に応じて異なる台数の仮想マシン20を利用する。サービス提供装置2は、また、各提供業者について確保された仮想マシン20をリソースプール200に解放する。図2に示す例で、管理業者にとっては、仮想マシン20を運用するコストの観点から、確保される仮想マシン20の台数が抑制されることが好ましい。一方、提供業者にとっては、クラウドサービスを利用するユーザの要求に応じて即座にクラウドサービスが提供されることが望ましいため、確保される仮想マシン20の台数は多い方がよい。そのため、一般に、管理業者は提供業者に対して、常時稼働することが可能な仮想マシン20の台数に応じて決められた額の課金を行い、この台数を超えて稼働された仮想マシン20の台数分を稼働時間に応じて課金するなどの2段階の課金を実施する。
図3は、サービス提供装置2の機能的構成を示すブロック図である。サービス提供装置2は、管理手段21と、判定手段22と、確保手段23と、解放手段24とを有する。管理手段21は、リソースプール200を管理する。判定手段22は、クラウドサービスにおける処理が増えるか否かを判定する。確保手段23は、利用されている仮想マシン20の台数(以下、「稼働台数」という)が決められた条件を満たす場合に、新たな仮想マシン20を、管理手段21を介してリソースプール200から確保する。確保手段23は、また、判定手段22によりクラウドサービスの処理が増えると判定された場合、新たな仮想マシン20を確保する。解放手段24は、仮想マシン20の稼働台数が決められた別の条件を満たす場合に、確保された仮想マシン20の少なくとも一部を、管理手段21を介してリソースプール200に解放する。解放手段24は、また、判定手段22により、クラウドサービスにおける処理が増えないと判定された場合、仮想マシン20を解放する。
図4は、サービス提供装置2のハードウェア構成を示すブロック図である。同図に示したように、サービス提供装置2は、制御部201と、記憶部202と、通信部203とを備えるコンピュータである。また、サービス提供装置2の各部は、バス204に接続されており、このバス204を介して各種データの授受を行う。
制御部201は、サービス提供装置2の各部の動作を制御する手段である。制御部201は、CPU(Central Processing Unit)などの演算処理装置と、ROM(Read Only Memory)、RAM(Random Access Memory)などの記録媒体(主記憶装置)とを備える。記憶部202は、データを記憶する手段である。記憶部202は、ハードディスク、フラッシュメモリなどの記録媒体(補助記憶装置)を備え、通信部203で受信したデータを記憶する。通信部203は、データを送受信する手段である。通信部203は、通信回線Nに接続されており、通信回線Nに接続されている他の装置と通信を行う通信インターフェースとして機能する。なお、サービス提供装置2は、必ずしも物理的に1台のコンピュータでなくてもよく、複数台のコンピュータを組み合わせることにより構成されてもよい。図4において、プログラムを実行している制御部201は、管理手段21、判定手段22、確保手段23、および解放手段24の一例である。
次に、画像処理システムにおいて行われる処理を具体的に説明する。なお、以下で説明する複数の実施形態のうち、異なる実施形態において行われる処理は組み合わされて行われてもよい。
(第1実施形態)
図5は、サービス提供装置2が仮想マシン20を確保する処理を示すフローチャートである。図5に示す処理は、例えば、予め決められた周期で繰り返し実行される。ステップSA1において、制御部201は、複数の提供業者の中から一の提供業者を選択する。各提供業者には、仮想マシン20の台数に関して閾値Tmが予め設定され、記憶部202に記憶されている。閾値Tmは、例えば、管理業者が、提供業者との間で、確保することを約束した仮想マシン20の台数を示す。制御部201は、予め決められた順番、例えば閾値Tmが小さい提供業者から順に一の提供業者を選択する。
ステップSA2において、制御部201は、選択された一の提供業者(以下、「被選択業者」という)について、仮想マシン20の稼働台数を特定する。仮想マシン20の稼働台数は、例えば、仮想マシン20の稼働の状況を提供業者毎に管理するためのデータ(以下、「稼働状況管理データ」という)により示される。稼働状況管理データは、RAMに記憶されており、制御部201は、仮想マシン20の稼働の状況に応じて当該稼働状況管理データを更新している。
図6は、稼働状況管理データを例示する図である。稼働状況管理データは、各提供業者について、稼働台数と稼働している仮想マシン20におけるCPU負荷とを示す。図6の稼働状況管理データにおいては、提供業者A、B、およびCの稼働台数は、それぞれ3台、1台、および2台である。また、図6の例で、提供業者A、B、およびCのCPU負荷は、それぞれ80%、60%、および10%である。なお、図6におけるCPU負荷は、稼働している仮想マシン20におけるCPU負荷の平均値を示す。
再び図5を参照する。ステップSA3において、制御部201は、被選択業者について、処理が増えると予想されるか否かを判断する。具体的には、制御部201は、ステップSA2において特定された稼働台数と、過去に利用された仮想マシン20の台数を示すデータ(以下、「利用履歴データ」という)とに基づいて、被選択業者の処理の増減を予想する。利用履歴データは、記憶部202に記憶されており、制御部201は、決められたタイミングで当該利用履歴データを更新している。被選択業者の処理が増えると予想される場合(SA3:YES)、制御部201は、処理をステップSA4に移行する。被選択業者の処理が増えると予想されない場合(SA3:NO)、制御部201は、処理をステップSA8に移行する。
図7は、利用履歴データを例示する図である。利用履歴データは、各提供業者について、過去に利用された仮想マシン20の台数の平均値(以下、「平均台数」という)を時間帯別に示す。図7に示す利用履歴データでは、7時から23時までの1時間おきに平均台数が示されている。例えば、提供業者Aの7時における平均台数は2台である。別の例で、提供業者Cの23時における平均台数は1台である。図7に示す利用履歴データを用いて被選択業者の処理の増減が予想される場合、制御部201は、ステップSA2において特定された稼働台数(以下、「稼働台数N1」という)と、図5の処理が開始された時刻の次の時刻における平均台数(以下、「平均台数N2」という)とを比較する。その結果、稼働台数N1が平均台数N2よりも小さい場合には、制御部201は、被選択業者の処理が増えると予想する。一方、稼働台数N1が平均台数N2以上である場合には、制御部201は、被選択業者の処理は増えないと予想する。例えば、図5に示す処理が9時30分に開始され、被選択業者が提供業者Aである場合、平均台数N2は10時の8台である。したがって、制御部201は、稼働台数N1が8台よりも小さい場合には提供業者Aの処理が増えると予想し、稼働台数N1が8台以上である場合には提供業者Aの処理は増えないと予想する。
再び図5を参照する。ステップSA4において、制御部201は、ステップSA2において特定された仮想マシン20の稼働台数が閾値Tm以上であるか否かを判断する。稼働台数が閾値Tm以上であると判断された場合(SA4:YES)、制御部201は、処理をステップSA5に移行する。稼働台数が閾値Tmを下回ると判断された場合(SA4:NO)、制御部201は、処理をステップSA6に移行する。
ステップSA5において、制御部201は、被選択業者のCPU負荷が予め決められた閾値Th1(第1の値の一例)以上であるか否かを判断する。被選択業者のCPU負荷は、上述の稼働状況管理データにより示されており、閾値Th1は、記憶部202に記憶されている。CPU負荷が閾値Th1以上であると判断された場合(SA5:YES)、制御部201は、処理をステップSA7に移行する。CPU負荷が閾値Th1を下回ると判断された場合(SA5:NO)、制御部201は、処理をステップSA8に移行する。
ステップSA6において、制御部201は、被選択業者のCPU負荷が閾値Th2(第2の値の一例)以上であるか否かを判断する。閾値Th2は、閾値Th1よりも小さい値である。CPU負荷が閾値Th2以上であると判断された場合(SA6:YES)、制御部201は、処理をステップSA7に移行する。CPU負荷が閾値Th2を下回ると判断された場合(SA6:NO)、制御部201は、処理をステップSA8に移行する。
ステップSA7において、制御部201は、被選択業者について、リソースプール200に蓄えられた仮想マシン20の中から決められた台数(例えば1台)の新たな仮想マシン20を確保する。ステップSA8において、制御部201は、全ての提供業者が選択されたか否かを判断する。全ての提供業者が選択されたと判断された場合(SA8:YES)、制御部201は、処理を終了する。全ての提供業者が選択されていないと判断された場合(SA8:NO)、制御部201は、処理をステップSA1に移行し、残りの提供業者についてステップSA1からステップSA7の処理を行う。
以上の処理により、稼働台数が閾値Tm以上である場合には、稼働台数が閾値Tmを下回る場合に比べてCPU負荷の判断がされるときの閾値が大きいので、慎重に仮想マシン20が確保される。そのため、管理業者にとっては確保される仮想マシン20の台数が抑制され、且つ、提供業者にとっては課金が増えることが抑制される。また、稼働台数が閾値Tmを下回る場合には、稼働台数が閾値Tm以上である場合に比べてCPU負荷の判断がされるときの閾値が小さいので、素早く仮想マシン20が確保される。そのため、提供業者にとってはユーザの要求に応じて即座にクラウドサービスが提供される。
図8は、サービス提供装置2が仮想マシン20を解放する処理を主として示すフローチャートである。以下の処理は、確保されたいずれかの仮想マシン20における情報処理が終了したことを契機として開始され、当該仮想マシン20が確保された提供業者(以下、「特定業者」という)について行われる。なお、各仮想マシン20における情報処理の進捗は、制御部201により監視されている。ステップSB1において、制御部201は、特定業者について、仮想マシン20の稼働台数を特定する。具体的には、制御部201は、上述の稼働状況管理データに応じて、仮想マシン20の稼働台数を特定する。ステップSB2において、制御部201は、ステップSB1において特定された仮想マシン20の稼働台数が閾値Tmを下回るか否かを判断する。稼働台数が閾値Tm以上であると判断された場合(SB2:NO)、制御部201は、処理をステップSB3に移行する。稼働台数が閾値Tmを下回ると判断された場合(SB2:YES)、制御部201は、処理をステップSB4に移行する。
ステップSB3において、制御部201は、特定業者のCPU負荷が閾値Th1を下回るか否かを判断する。CPU負荷が閾値Th1を下回ると判断された場合(SB3:YES)、制御部201は、処理をステップSB7に移行する。CPU負荷が閾値Th1以上であると判断された場合(SB3:NO)、制御部201は、処理を終了する。
ステップSB4において、制御部201は、特定業者のCPU負荷が閾値Th3(第3の値の一例)を下回るか否かを判断する。閾値Th3は、閾値Th1よりも小さい値である。CPU負荷が閾値Th3以上であると判断された場合(SB4:NO)、制御部201は、処理をステップSB5に移行する。CPU負荷が閾値Th3を下回ると判断された場合(SB4:YES)、制御部201は、処理をステップSB6に移行する。
ステップSB5において、制御部201は、特定業者について、リソースプール200に蓄えられた仮想マシン20の中から新たな仮想マシン20を確保する。具体的には、制御部201は、少なくとも1台の仮想マシン20であって、確保された仮想マシン20の台数が閾値Tmを超えない範囲の台数の仮想マシン20を確保する。
ステップSB6において、制御部201は、特定業者について、処理が増えると予想されるか否かを判断する。具体的には、制御部201は、ステップSB1において特定された稼働台数と、上述の利用履歴データとに基づいて、上述のステップSA3の同様の方法により、特定業者の処理の増減を予想する。特定業者の処理が増えないと予想される場合(SB6:NO)、制御部201は、処理をステップSB7に移行する。特定業者の処理が増えると予想される場合(SB6:YES)、制御部201は、処理を終了する。
ステップSB7において、制御部201は、特定業者について確保された仮想マシン20をリソースプール200に解放する。具体的には、制御部201は、特定業者について確保された仮想マシン20の中から決められた台数(例えば1台)の仮想マシン20をリソースプール200に解放する。なお、ステップSB3においてCPU負荷が閾値Th1を下回ると判断されている場合(SB3:YES)には、制御部201は、情報処理が終了した仮想マシン20(すなわち稼働されていない仮想マシン20)をリソースプール200に解放する。
以上の処理により、稼働台数が閾値Tmを下回っている場合には、稼働台数が閾値Tm以上である場合に比べてCPU負荷が判断されるときの閾値が小さいので、慎重に仮想マシン20がリソースプール200に解放される。そのため、管理業者にとっては確保される仮想マシン20の台数が抑制される。また、稼働台数が閾値Tm以上である場合には、稼働台数が閾値Tmを下回っている場合に比べてCPU負荷が判断されるときの閾値が大きいので、素早く仮想マシン20がリソースプール200に解放される。そのため、管理業者にとっては確保される仮想マシン20の台数が抑制され、且つ、提供業者にとっては課金が増えることが抑制される。
(第2実施形態)
第2実施形態において、サービス提供装置2は、画像形成装置1からの通知に応じて、仮想マシン20を確保または解放する。具体的には、サービス提供装置2は、画像形成装置1から送信された、仮想マシン20の確保または解放の要求に応じて、仮想マシン20を確保または解放する。仮想マシン20の確保または解放の要求とは、サービス提供装置2に仮想マシン20を確保させ、または解放させることの要求をいう。以下では、仮想マシン20の確保の要求を「確保要求」と表現し、仮想マシン20の解放の要求を「解放要求」と表現する。
図9は、第2実施形態における画像形成装置1とサービス提供装置2の動作の概略を示す図である。なお、図9は、説明の便宜上1台の画像形成装置1を示しているが、複数台の画像形成装置1が画像処理システムにおいて利用されてもよい。第2実施形態において、画像形成装置1は、確保要求または解放要求をサービス提供装置2に送信する(図9(a))。サービス提供装置2は、画像形成装置1からの確保要求または解放要求に応じて、仮想マシン20を確保または解放する(図9(b))。画像形成装置1は、仮想マシン20の確保または解放がされた後に、画像データをサービス提供装置2に送信する(図9(c))。画像形成装置1は、例えば、原稿を光学的に読み取ることにより取得された画像データをサービス提供装置2に送信する。サービス提供装置2は、クラウドサービスにおける情報処理が行われた画像データを画像形成装置1に送信する(図9(d))。
画像形成装置1から仮想マシン20の確保の要求を受信したサービス提供装置2は、当該要求により指定された台数の仮想マシン20の確保を開始する。この仮想マシン20の確保には時間が掛かる。例えば仮想マシン20が1台も確保されていない状態から確保する場合、仮想マシン20の台数に関わらず、仮想マシン20が確保されていない状態から仮想マシン20を確保するのに必要な初期化などの処理の時間をx1(秒)、1台の仮想マシン20を確保するために要する時間をt1(秒/台)、確保する仮想マシン20の台数をp(台)とすると、x1+t1×p(秒)の時間が掛かる。
また、既に確保された仮想マシン20の台数の追加を行う場合、仮想マシン20を確保している状態から仮想マシン20を確保するのに必要な初期化などの処理の時間をx2(秒)、追加する仮想マシン20の台数をq(台)とすると、x2+t1×q(秒)の時間が掛かる。
また、既に確保された仮想マシン20を解放する場合、仮想マシン20が確保されている状態から仮想マシン20を解放するのに必要な初期化などの処理の時間をx3(秒)、1台の仮想マシン20を解放するために要する時間をt2(秒/台)、解放する仮想マシン20の台数をr(台)とすると、x3+t2×r(秒)の時間が掛かる。
仮想マシン20が確保されていない状態から仮想マシン20を確保するよりも、既に確保された仮想マシン20に台数を追加する方が必要な処理が少なくなり、また、新たに仮想マシン20を確保するよりも既に確保した仮想マシン20を解放する方が処理が少なくなる事が多い。つまりx1>x2>x3であることが多い。
さらに1台あたりの仮想マシン20を確保するよりも、1台あたりの仮想マシン20を解放する方が処理が少なくなる事が多い。つまりt1>t2であることが多い。
以下では、まず、画像形成装置1が、確保要求または解放要求をサービス提供装置2に送信するための構成と処理について説明し、その後でサービス提供装置2が仮想マシン20を確保または解放する処理について説明する。
図10は、画像処理システムの機能的構成を示すブロック図である。画像形成装置1は、通信手段11と、取得手段12と、予測手段13と、算出手段14と、送信手段15とを有する。通信手段11は、サービス提供装置2と通信する。取得手段12は、クラウドサービスにおける情報処理の対象となる画像データを取得する。予測手段13は、取得手段12が画像データを取得するのを終える前に、画像データの量を予測する。算出手段14は、サービス提供装置2が画像データの処理に利用する仮想マシン20の台数を算出する。算出手段14は、画像データをサービス提供装置2に送信する前の、画像形成装置1における処理の段階に応じた複数の時点で、仮想マシン20の台数を算出する。算出手段14は、仮想マシン20の台数を算出する。送信手段15は、算出手段14により算出された台数に応じて、確保要求または解放要求を、通信手段11を介してサービス提供装置2に送信する。通信手段11は、また、取得手段12により取得された画像データを、確保要求または解放要求が送信された後に、サービス提供装置2に送信する。
サービス提供装置2は、図3に示した構成に加えて通信手段25を有する。通信手段25は、画像形成装置1と通信する。判定手段22は、画像形成装置1から送信された確保要求または解放要求に応じて、クラウドサービスの処理が増えるか否かを判定する。第2実施形態において、プログラムを実施している制御部201により制御されている通信部203は、通信手段25の一例である。
図11は、画像形成装置1のハードウェア構成を示すブロック図である。同図に示したように、画像形成装置1は、制御部101と、記憶部102と、操作部103と、表示部104と、画像読取部105と、画像形成部106と、通信部107と、画像処理部108とを備える。また、画像形成装置1の各部は、バス109に接続されており、このバス109を介して各種データの授受を行う。
制御部101は、画像形成装置1の各部の動作を制御する手段である。制御部101は、CPUなどの演算処理装置と、ROM、RAMなどの記録媒体(主記憶装置)とを備える。CPUは、ROMに記憶されている制御プログラムを読み出し、RAMを作業エリアにして制御プログラムを実行する。制御部101は、このように制御プログラムを実行することにより、用紙に画像を形成すること、文書を読み取って文書の画像データを生成すること、通信回線Nを介して他の装置と通信を行うことなどを実現する。
記憶部102は、データを記憶する手段である。記憶部102は、ハードディスク、フラッシュメモリなどの記録媒体(補助記憶装置)を備え、通信部107で受信したデータや画像形成装置1で生成されたデータなどを記憶する。また、記憶部102は、いわゆるメモリーカードやUSB(Universal Serial Bus)メモリなどの着脱可能な記録媒体(リムーバブルメディア)と、その記録媒体にデータを読み書きする手段とを含んでもよい。
操作部103は、ユーザの操作を受け付ける手段である。操作部103は、操作子(ボタン、キーなど)を備え、押下された操作子に応じた制御信号を制御部101に供給する。また、操作部103は、表示部104と、表示部104の表示面に重ねて設けられたセンサとを備え、押圧した位置に応じた制御信号を制御部101に供給するタッチパネルによって構成されてもよい。
表示部104は、情報を表示する手段である。表示装置として例えば液晶ディスプレイを有している。表示部104は、制御部101の制御の下、画像形成装置1を操作するためのメニュー画面や画像形成装置1に関するデータなどを表示する。
画像読取部105は、原稿を読み取って画像データに変換する手段である。画像読取部105は、原稿を光学的に読み取り、読み取った原稿の画像を表す画像データを生成する画像読取装置を備えている。画像読取部105は、生成した画像データを画像処理部108に供給する。本実施形態において、画像読取部105は、画像形成装置1の図示しない自動原稿送り機構を構成する原稿トレイに積載された複数枚の原稿から画像を順次読み取るための構成を備える。
画像形成部106は、画像を形成する手段である。画像形成部106は、電子写真方式によって紙などの記録媒体にトナー像を形成する画像形成機構を具備している。なお、画像形成機構は、電子写真方式に限らず、インクジェット方式などの他の記録方式が用いられてもよい。
通信部107は、データを送受信する手段である。通信部107は、通信回線Nに接続されており、通信回線Nに接続されている他の装置と通信を行う通信インターフェースとして機能する。
画像処理部108は、画像データに対して画像処理を実行する手段である。ここでいう画像処理とは、例えば、色補正や階調補正である。画像処理部108は、画像処理が施された画像データを画像形成部106に供給する。
図11において、プログラムを実行している制御部101は、予測手段13、算出手段14、および送信手段15の一例である。プログラムを実行している制御部101により制御されている画像読取部105は、取得手段12の一例である。プログラムを実行している制御部101により制御されている通信部107は、通信手段11の一例である。
図12(図12Aおよび図12B)は、画像形成装置1が行う処理を示すフローチャートである。ステップSC1において、制御部101は、クラウドサービスの利用を開始させるための指示(以下、「サービス開始指示」という)の入力を受け付ける。サービス開始指示は、ユーザが操作部103を操作することにより入力される。表示部104には、例えば、利用可能な複数のクラウドサービスと、各クラウドサービスを提供する提供業者とが表示され、ユーザはこの中から利用するクラウドサービスと、当該クラウドサービスを提供する一の提供業者とを選択する。ステップSC2において、制御部101は、ユーザにより指定されたクラウドサービスを提供するサービス提供装置2を特定する。具体的には、制御部101は、記憶部102に記憶された、クラウドサービスの種類および提供業者と、サービス提供装置2のURL(Uniform Resource Locator)との対応を示すデータ(以下、「URLデータ」という)に基づいて、ユーザにより指定されたクラウドサービスを提供するサービス提供装置2のURLを特定する。制御部101は、特定されたサービス提供装置2のURLをRAMに記憶する。
図13は、URLデータの一例を示す図である。URLデータは、クラウドサービスの種類および提供業者ごとに、サービス提供装置のURLを示す。図13では、クラウドサービス1、2、および3がクラウドサービスとして示されており、また、提供業者A、B、およびCが提供業者として示されている。例えば、提供業者Aが提供するクラウドサービス1のURLは、「http://001/tenantA/resource」である。別の例で、提供業者Cが提供するクラウドサービス3のURLは、「http://003/tenantC/resource」である。
再び図12Aを参照する。ステップSC3において、制御部101は、確保要求をサービス提供装置2に送信する。確保要求の送信先は、RAMに記憶されたサービス提供装置2のURLにより示される。確保要求には、確保して欲しい仮想マシン20の台数を示す情報が含まれる。ステップSC3においては、サービスが選択された段階なので、最低限必要な台数(例えば1台)の仮想マシン20の確保要求がサービス提供装置2に送信される。確保要求制御部101は、クラウドサービスが対応するプロトコル(例えば、HTTP REST APIまたはSOAP(Simple Object Access Protocol)など)に従って、確保要求を送信する。制御部101は、確保の要求をした仮想マシン20の台数(以下、「通知済台数」という)をRAMに記憶する。
なお、図12に示すフローチャートにおいて、確保要求または解放要求が送信される場合、制御部101は、当該確保要求または解放要求の確度をサービス提供装置2に送信する。ステップSC3において、制御部101は、確度「1」をサービス提供装置2に送信する。この確度は、クラウドサービスの処理の開始が近づくに連れて(すなわち図12に示す処理が進むに連れて)高くなる。
図14は、確保要求の一例を示す図である。図14は、HTTP REST APIに従って送信されるXML(Extensible Markup Language)形式の確保要求を示す。図14に示す通り、確保要求には、確保要求であることを示す情報(第3行目の<record name="addRequest">)と、確保を要求する仮想マシン20の台数(第6行目の<string name="value">1</string>)とが含まれる。図14に示す確保要求の例では、1台の仮想マシン20の確保が要求されている。
再び図12Aを参照する。ステップSC4において、制御部101は、カラースキャンの有無、画像の解像度、および原稿のサイズなどの画像の読み取りに関する各種パラメータの設定を受け付ける。各種パラメータは、ユーザが操作部103を操作することにより設定される。制御部101は、設定された各種パラメータをRAMに記憶する。ステップSC5において、制御部101は、ユーザによる各種パラメータの設定が終了したか否かを判断する。具体的には、ユーザにより操作部103が操作され、各種パラメータの設定を終了するための指示が入力されたか否かを判断する。各種パラメータの設定が終了したと判断された場合(SC5:YES)、制御部101は、処理をステップSC6に移行する。各種パラメータの設定が終了していないと判断された場合(SC5:NO)、制御部101は、処理をステップSC4に移行する。
ステップSC6において、制御部101は、サービス提供装置2において利用されることが予想される仮想マシン20の台数(以下、「予想台数」という)を、設定された各種パラメータに応じて算出する。具体的には、制御部101は、記憶部102に記憶された、各種パラメータに応じて予想台数を算出するためのデータ(以下、「台数算出データDp」という)に基づいて、予想台数を算出する。制御部101は、算出された仮想マシン20の予想台数をRAMに記憶する。
図15は、台数算出データDpの一例を示す図である。図15(a)は、各クラウドサービスにおいて用いられるパラメータを示している。この例では、クラウドサービス1からクラウドサービス3において用いられるパラメータが示されている。図15(a)において「カラー」、「解像度」、および「原稿サイズ」は、画像読み取りの際の色数、画像の解像度、および原稿のサイズをそれぞれ示している。図15(a)において、各クラウドサービスには異なるパラメータが用いられている。なお、あるクラウドサービスについて、カラー、解像度、および原稿サイズのパラメータのすべてが用いられていなくてもよい。例えば、アンケートの集計などが行われるクラウドサービスであって、カラースキャンが行われることがないクラウドサービスにおいては、カラーのパラメータは用いられなくてもよい。
図15(a)では、カラーのパラメータについて、クラウドサービス1および3には、カラーC1およびC2がそれぞれ用いられている。一方で、カラーのパラメータは、クラウドサービス2では用いられていない。解像度のパラメータについて、クラウドサービス1および2には、解像度R1およびR2がそれぞれ用いられている。一方で、解像度のパラメータは、クラウドサービス3では用いられていない。原稿サイズのパラメータについて、クラウドサービス1、2、および3には、原稿サイズS1、S2、およびS3がそれぞれ用いられている。
図15(b)から図15(d)は、仮想マシン20の台数を算出するための式を図15(a)に示したパラメータ毎に示している。図15(b)は、カラーのパラメータについて、仮想マシン20の台数を算出するための式を示す。図15(b)では、カラースキャンの有無に応じて仮想マシン20の台数が算出される。図15(b)は、カラーにした際の処理負荷がC2よりもC1の方がより高い場合の例を示している。図15(b)では、カラーC1において、カラースキャンが行われるときには仮想マシン20の台数が1台と算出され、白黒スキャンが行われるときには仮想マシン20の台数が0.2台と算出される。また、カラーC2おいて、カラースキャンが行われるときには仮想マシン20の台数が0.4台と算出され、白黒スキャンが行われる場合には仮想マシン20の台数が0.2台と算出される。例えば、カラーC1が用いられているクラウドサービス1について、カラースキャンが有りに設定された場合、仮想マシン20の台数は1台と算出される。
図15(c)は、解像度のパラメータについて、仮想マシン20の台数を算出するための式を示す。図15(c)では、解像度100dpi(dots per inch)あたりの仮想マシン20の台数が規定されている。図15(c)では、解像度R1の場合は、100dpiあたり0.5台、解像度R2の場合は、100dpiあたり0.2台の割合で算出される。例えば、解像度R1が用いられているクラウドサービス1について、解像度が400dpiに設定された場合、仮想マシン20の台数は2台と算出される。
図15(d)は、原稿サイズのパラメータについて、仮想マシン20の台数を算出するための式を示す。図15(d)では、原稿のサイズに応じて仮想マシン20の台数が算出される。図15(d)では、原稿サイズS1において、原稿のサイズがA3の場合には仮想マシン20の台数が0.4台と算出され、原稿のサイズがA4の場合には仮想マシン20の台数が0.2台と算出される。また、原稿サイズS2において、原稿のサイズがA3の場合には仮想マシン20の台数が0.2台と算出され、原稿のサイズがA4の場合には仮想マシン20の台数が0.2台と算出される。さらに、原稿サイズS3において、原稿のサイズがA3の場合には仮想マシン20の台数が0.6台と算出され、原稿のサイズがA4の場合には仮想マシン20の台数が0.3台と算出される。例えば、原稿サイズS1が用いられているクラウドサービス1について、原稿のサイズがA3に設定された場合、仮想マシン20の台数は0.4台と算出される。
図15において、あるクラウドサービスが利用される場合の予想台数は、各パラメータについて算出された仮想マシン20の台数を加算することにより算出される。例えば、クラウドサービス1が利用される場合の予想台数は、カラーC1、解像度R1、および原稿サイズS1について算出された仮想マシン20の台数を加算することにより算出される。なお、算出された予想台数のうち小数点以下の値は切り上げられる。より具体的な例として、クラウドサービス1が利用される場合において、ユーザによりカラースキャンが有りと設定され、解像度が400dpiに設定され、且つ、原稿のサイズがA3と設定されたとき、予想台数は3.4台(小数点以下を切り上げて4台)と算出される。別の例で、クラウドサービス2が利用される場合の予想台数は、解像度R2および原稿サイズS2について算出された仮想マシン20の台数を加算することにより算出される。より具体的な例として、クラウドサービス2が利用される場合において、解像度が300dpiに設定され、且つ、原稿のサイズがA4と設定されたとき、予想台数は0.8台(小数点以下を切り上げて1台)と算出される。
再び図12Aを参照する。ステップSC7において、制御部101は、ステップSC6において算出された予想台数と通知済台数との差(以下、「変動数M1」という)を算出する。具体的には、制御部101は、予想台数と通知済台数とをRAMから読み出して、変動数M1を算出する。例えば、予想台数が4台であり、通知済台数が1台である場合、変動数M1は3台と算出される。別の例で、予想台数と通知済台数とがともに1台である場合、変動数M1は0台と算出される。制御部101は、算出された変動数M1を、RAMに記憶する。ステップSC8において、制御部101は、再び、確保要求をサービス提供装置2に送信する。具体的には、制御部101は、RAMから変動数M1を読み出して、変動数M1が示す台数の確保要求をサービス提供装置2に送信する。制御部101は、また、確度「2」をサービス提供装置2に送信する。変動数M1が0台である場合には、制御部101は、確保要求を送信しない。なお、ステップSC8において確保要求が送信されない場合においても、確保要求の確度は送信されてもよい。ステップSC9において、制御部101は、RAMに記憶された通知済台数を更新する。具体的には、制御部101は、通知済台数を、ステップSC6において算出された予想台数に更新する。
ステップSC10において、制御部101は、画像の読み取りを開始させるための指示(以下、「読み取り開始指示」という)の入力を受け付ける。読み取り開始指示は、ユーザが操作部103を操作することにより入力される。ステップSC11において、制御部101は、画像の読み取りを開始する。具体的には、画像形成装置1の自動原稿送り機構を構成する原稿トレイには予め複数枚の原稿が積み重ねられており、制御部101は、これらの原稿から順次画像を読み取る。制御部101は、読み取られた画像の画像データをRAMに記憶する。
次に図12Bを参照する。ステップSC12において、制御部101は、画像形成装置1の自動原稿送り機構を構成する原稿トレイに積み重ねられたすべての原稿から取得される画像データの量(以下、「画像データの総量」という)を予測するための予測式が記憶されているか否かを判断する。具体的には、制御部101は、記憶部102に記憶された、予測式を示すデータ(以下、「予測式データ」という)に基づいて、利用が開始されるクラウドサービスについて予測式が記憶されているか否かを判断する。予測式が記憶されていると判断された場合(SC12:YES)、制御部101は、処理をステップSC13に移行する。予測式が記憶されていないと判断された場合(SC12:NO)、制御部101は、処理をステップSC14に移行する。ステップSC13において、制御部101は、画像データの総量を、予測式を用いて予測する。制御部101は、予測された画像データの総量をRAMに記憶する。
図16は、予測式データの一例を示す図である。予測式データは、各クラウドサービスについて、予測式の有無、および予測式を示す。図16に示す予測式データの例では、クラウドサービス1および2に関して予測式が記憶されており、また、クラウドサービス3に関して予測式が記憶されていない。図16に示す例で、クラウドサービス1は、変更前の原稿と変更後の原稿との画像データの差分を検出するための情報処理を行うクラウドサービスである。クラウドサービス1については、変更前の原稿から読み取られた画像の画像データの量を2倍することにより、画像データの総量が予測される。なお、この例で、変更前の原稿は、変更後の原稿よりも前に画像が読み取られる。クラウドサービス1について予測式が用いられる場合、制御部101は、画像読取部105により読み取られている原稿が、変更前の原稿から変更後の原稿に切り替わるタイミングを検知して、変更前の原稿から読み取られた画像の画像データの量を取得する。変更前の原稿から変更後の原稿に切り替わるタイミングは、例えば、予め変更前の原稿の枚数を入力した後で変更後の原稿を原稿トレイに積載してタッチパネルのボタンを押した事で検知される。別の例で、変更前の原稿から変更後の原稿に切り替わるタイミングは、既に読み取られた画像と、新たに読み取られた画像とが類似する度合いが決められた閾値を超えたことにより検知される。クラウドサービス1について予測式が用いられる例として、変更前の原稿から読み取られた画像の画像データの量が2MB(メガバイト)である場合、画像データの総量は4MBであると予測される。
図16に示す例で、クラウドサービス2は、複数枚の原稿のサイズが同じであることが前提とされるクラウドサービス(例えば、アンケートの集計などの情報処理を行うクラウドサービス)である。クラウドサービス2については、1枚目の原稿から読み取られた画像の画像データの量に、画像形成装置1の自動原稿送り機構を構成する原稿トレイに積載された原稿の枚数を乗じることにより、画像データの総量が予測される。なお、画像読取部105は、原稿トレイに積載された原稿の枚数を検知するセンサを備えており、制御部101は、画像の読み取りが開始される前に当該センサにより原稿の枚数を取得している。クラウドサービス2について予測式が用いられる例として、1枚目の原稿から読み取られた画像の画像データの量が0.05MBであり、原稿トレイに積載された原稿の枚数が30枚である場合、画像データの総量は1.5MBであると予測される。
再び図12Bを参照する。ステップSC14において、制御部101は、読み取り中の原稿について、既に読み取られた画像の画像データの積算量をRAMに記憶する。なお、ステップSC14の処理が行われる場合には、以下に示すステップSC15からSC17の処理は、画像データの積算量が決められた量増える度に行われる。
ステップSC15において、制御部101は、ステップSC13またはSC14においてRAMに記憶された画像データの総量または画像データの積算量と、予め決められた画像データの量(以下、「画像データ量D1」という)との差または割合に応じた数(以下、「変動数M2」という)を算出する。画像データ量D1は、クラウドサービスの種類ごとに予め記憶部102に記憶されている。なお、この画像データ量D1は、過去にクラウドサービスが利用されたときの画像データの量の履歴に応じて更新されてもよい。制御部101は、算出された変動数M2をRAMに記憶する。
ステップSC16において、制御部101は、確保要求または解放要求をサービス提供装置2に送信する。具体的には、制御部101は、クラウドサービスが対応するプロトコルに従って、確保要求または解放要求を送信する。解放要求には、解放して欲しい仮想マシン20の台数を示す情報が含まれる。制御部101は、RAMに記憶された変動数M2が正である場合には、変動数M2が示す台数の確保要求をサービス提供装置2に送信する。一方、RAMに記憶された変動数M2が負である場合には、変動数M2が示す台数(ここでは、変動数M2が示す台数の絶対値)の解放要求をサービス提供装置2に送信する。制御部101は、また、確度「3」をサービス提供装置2に送信する。変動数M2が0台である場合には、制御部101は、確保要求および解放要求を送信しない。なお、上述のステップSC14の処理が行われた場合には、制御部101は、変動数M2が負であっても解放要求を送信しない。すなわち、ステップSC14の処理が行われた場合には、制御部101は、変動数M2が正になると、当該変動数M2が示す台数の確保要求をサービス提供装置2に送信する。ステップSC16において確保要求および解放要求が送信されない場合においても、確保要求または解放要求の確度は送信されてもよい。
図17は、解放要求の一例を示す図である。図17は、XML形成の解放要求を示す。図17に示す通り、解放要求には、解放要求であることを示す情報(第3行目の<record name="delRequest">)と、解放を要求する仮想マシン20の台数(第6行目の<string name="value">1</string>)とが含まれる。図17に示す解放要求の例では、1台の仮想マシン20の解放が要求されている。
再び図12Bを参照する。ステップSC17において、制御部101は、RAMに記憶された通知済台数を更新する。具体的には、制御部101は、RAMに記憶された通知済台数の値に変動数M2を加えた値を、新たな通知済台数としてRAMに記憶する。なお、ステップSC17の処理は、ステップSC16において、確保要求または解放要求が送信された場合に行われる。ステップSC18において、制御部101は、原稿トレイに積載されたすべての原稿について画像の読み取りを終了する。原稿トレイに積載されたすべての原稿について画像の読み取りが終了すると、画像データの総量は確定する。ステップSC19において、制御部101は、ステップSC18において確定した画像データの総量と、画像データ量D1との差または割合に応じた数(以下、「変動数M3」という)を算出する。制御部101は、算出された変動数M3をRAMに記憶する。
ステップSC20において、制御部101は、確保要求または解放要求をサービス提供装置2に送信する。具体的には、制御部101は、RAMに記憶された変動数M3が正である場合には、変動数M3が示す台数の確保要求をサービス提供装置2に送信する。一方、RAMに記憶された変動数M3が負である場合には、変動数M3が示す台数(ここでは、変動数M3が示す台数の絶対値)の解放要求をサービス提供装置2に送信する。制御部101は、また、確度「4」をサービス提供装置2に送信する。変動数M3が0台である場合には、制御部101は、確保要求および解放要求を送信しない。なお、ステップSC20において確保要求および解放要求が送信されない場合においても、確保要求または解放要求の確度は送信されてもよい。ステップSC21において、制御部101は、RAMに記憶された各種パラメータおよび画像データをサービス提供装置2に送信する。
以上の処理により、画像形成装置1からサービス提供装置2に画像データが送信される前に、サービス提供装置2に対して確保要求または解放要求が送信される。また、確保要求または解放要求は、画像形成装置1における処理の進捗が異なる複数のタイミング(すなわち、サービス開始指示の入力を受け付けた後、各種パラメータの設定が終了した後、画像データの総量が予測された後(または画像データの積算量が決められた量増えた後)、および画像データの総量が確定した後)で送信される。それにより、画像データの処理に不要な仮想マシン20が確保されることが回避される。また、サービス提供装置2が、画像形成装置1から画像データを取得した後に仮想マシン20の確保を開始した場合に比べて、仮想マシン20の確保に掛かる時間が短縮される。次に、サービス提供装置2が、画像形成装置1からの確保要求または解放要求に応じて、仮想マシン20を確保または解放する処理について説明する。
図18は、サービス提供装置2が仮想マシン20を確保する処理を示すフローチャートである。以下の処理は、例えば、予め決められた周期で繰り返し実行される。ステップSD1において、制御部201は、ステップSA1と同様の処理を行う。ステップSD2において、制御部201は、画像形成装置1から、被選択業者について確保要求が取得されたか否かを判断する。具体的には、制御部201は、図18に示す処理が開始された時刻よりも前の決められた時間内に確保要求が取得されたか否かを判断する。画像形成装置1から確保要求または解放要求が取得されたことは、被選択業者について、処理が増えると予想されることを表し、確保要求および解放要求が取得されていないことは、被選択業者について、処理が増えないと予想されることを表す。確保要求が取得されたと判断された場合(SD2:YES)、制御部201は、処理をステップSD4に移行する。確保要求が取得されていないと判断された場合(SD2:NO)、制御部201は、処理をステップSD3に移行する。
ステップSD3において、制御部201は、画像形成装置1から、被選択業者について解放要求が取得されたか否かを判断する。具体的には、制御部201は、図18に示す処理が開始された時刻よりも前の決められた時間内に解放要求が取得されたか否かを判断する。解放要求が取得されたと判断された場合(SD3:YES)、制御部201は、処理をステップSD4に移行する。解放要求が取得されていないと判断された場合(SD3:NO)、制御部201は、処理をステップSD10に移行する。
ステップSD4において、制御部201は、確保要求または解放要求の確度が予め決められた値よりも高いか否かを判断する。なお、確保要求または解放要求の確度が複数回取得された場合には、最後に取得された確保要求または解放要求の確度についてステップSD4の判断がされる。確保要求または解放要求の確度が予め決められた値よりも高いことは、当該確度が予め決められた値よりも低いことに比べて、クラウドサービスの処理が増えると予想される度合いが高いことを表す。上述した確度の例では、確保要求または解放要求の確度が、例えば「2」よりも高いか否かが判断される。確保要求または解放要求の確度が予め決められた値よりも高いと判断された場合(SD4:YES)、制御部201は、処理をステップSD5に移行する。確保要求または解放要求の確度が予め決められた値以下であると判断された場合(SD4:NO)、制御部201は、処理をステップSD10に移行する。ステップSD5において、制御部201は、ステップSA2と同様の処理を行う。ステップSD6からステップSD10において、制御部201は、ステップSA4からステップSA8と同様の処理を行う。
以上の処理により、稼働台数が閾値Tm以上である場合には、稼働台数が閾値Tmを下回る場合に比べて慎重に仮想マシン20が確保される。そのため、管理業者にとっては確保される仮想マシン20の台数が抑制され、且つ、提供業者にとっては課金が増えることが抑制される。また、稼働台数が閾値Tmを下回る場合には、稼働台数が閾値Tm以上である場合に比べて素早く仮想マシン20が確保される。そのため、提供業者にとってはユーザの要求に応じて即座にクラウドサービスが提供される。
図19は、サービス提供装置2が仮想マシン20を解放する処理を主として示すフローチャートである。以下の処理は、確保されたいずれかの仮想マシン20における情報処理が終了したことを契機として開始され、特定業者について行われる。ステップSE1からステップSE5において、制御部201は、ステップSB1からステップSB5と同様の処理を行う。ステップSE6において、制御部201は、画像形成装置1から、特定業者について確保要求が取得されたか否かを判断する。具体的には、制御部201は、図19に示す処理が開始された時刻よりも前の決められた時間内に確保要求が取得されたか否かを判断する。確保要求が取得されていないと判断された場合(SE6:NO)、制御部201は、処理をステップSE7に移行する。確保要求が取得されたと判断された場合(SE6:YES)、制御部201は、処理を終了する。
ステップSE7において、制御部201は、画像形成装置1から、特定業者について解放要求が取得されたか否かを判断する。具体的には、制御部201は、図19に示す処理が開始された時刻よりも前の決められた時間内に解放要求が取得されたか否かを判断する。解放要求が取得されていないと判断された場合(SE7:NO)、制御部201は、処理をステップSE8に移行する。解放要求が取得されたと判断された場合(SE7:YES)、制御部201は、処理を終了する。ステップSE8において、制御部201は、ステップSB7と同様の処理を行う。
以上の処理により、稼働台数が閾値Tmを下回っている場合には、稼働台数が閾値Tm以上である場合に比べて慎重に仮想マシン20がリソースプール200に解放される。そのため、管理業者にとっては確保される仮想マシン20の台数が抑制され、且つ、提供業者にとってはユーザの要求に応じて即座にクラウドサービが提供される。また、稼働台数が閾値Tm以上である場合には、稼働台数が閾値Tmを下回っている場合に比べて素早く仮想マシン20がリソースプール200に解放される。そのため、管理業者にとっては確保される仮想マシン20の台数が抑制され、且つ、提供業者にとっては課金が増えることが抑制される。
本発明は、上述の実施形態に限定されるものではなく、種々の変形実施が可能である。以下、変形例をいくつか説明する。以下で説明する変形例のうち、2つ以上のものが組み合わされて用いられてもよい。
(1)変形例1
サービス提供装置2が提供するサービスは、クラウドサービスに限らない。サービス提供装置2は、オンプレミスのサーバサービス、またはプリントサービスなどを提供してもよい。
(2)変形例2
コンピュータリソースは、仮想マシン20に限らない。例えば、サービス提供装置2が複数台のコンピュータを組み合わせることにより構成されている場合、物理的なコンピュータがコンピュータリソースとして扱われてもよい。また、サービス提供装置2が確保・解放するコンピュータリソースは、仮想マシンや物理マシンの台数に限らず、メモリやHDDの容量、CPUのコア数や使用時間であってもよい。
(3)変形例3
サービス提供装置2が提供するクラウドサービスは、一のクラウドサービスに限らない。サービス提供装置2は、複数の種類のクラウドサービスを提供してもよい。また、サービス提供装置2が仮想マシン20を確保する提供業者は、複数の提供業者に限らない。サービス提供装置2は、一の提供業者について仮想マシン20を確保してもよい。
(4)変形例4
画像形成装置1がサービス提供装置2に解放要求を送信するタイミングは、実施形態に記載されたタイミングに限らない。画像形成装置1は、例えば、原稿から画像を読み取っているときの紙詰まり、または画像読取部105の故障など、クラウドサービスにおける処理の開始を妨げる事象が発生した場合に、解放要求を送信してもよい。この場合、制御部101は、自動原稿送り機構および画像読取部105などの画像形成装置1の各部からエラーを示す信号を取得することにより、当該事象の発生を検知する。なお、制御部101は、例えば、SNMP(Simple Network Management Protocol) Notificationを利用して、当該事象の発生を検知してもよい。別の例で、画像形成装置1は、クラウドサービスの利用を開始させるための操作が中止された場合に、解放要求を送信してもよい。この場合、制御部101は、各種パラメータの設定を受け付ける画面において、ユーザが、クラウドサービスの利用をキャンセルするための指示を入力したこと、ログアウトしたこと、または、当該画面を決められた時間操作していないことなどにより、当該事象の発生を検知する。変形例4における解放要求が送信される場合、制御部101は、解放要求の確度として、ステップSD4における決められた値以下の確度をサービス提供装置2に送信する。例えば、決められた値が確度「2」である場合には、制御部101は、「2」以下の確度をサービス提供装置2に送信する。なお、変形例4における解放要求が取得された場合、ステップSE7において、制御部201は、処理をステップSE8に移行してもよい。
図20は、変形例4に係る画像形成装置1の機能的構成を示すブロック図である。図20において、画像形成装置1は、図10に示した構成に加えて検知手段16を有する。検知手段16は、確保要求がサービス提供装置2に送信された後に、クラウドサービスにおける処理の開始を妨げる事象の発生を検知する。送信手段15は、検知手段16により事象の発生が検知されると、通信手段11を介して、解放要求をサービス提供装置2に送信する。変形例4について、プログラムを実行している制御部101は、検知手段16の一例である。なお、検知手段16は、確保要求がサービス提供装置2に送信された後に、クラウドサービスの利用を開始させるための操作が中止されたことを検知してもよい。
(5)変形例5
画像処理システムにおいて用いられる各装置のハードウェア構成は、図4および図11に示した構成に限らない。各装置は、実施形態に示した各ステップの処理を実行できれば、どのようなハードウェア構成であってもよい。
クライアント装置は、画像形成装置1に限らない。クライアント装置は、例えば、パーソナルコンピュータなどの他の装置であってもよい。
(6)変形例6
ステップSC13において予測された画像データの総量、またはステップSC14においてRAMに記憶された画像データの積算量に応じて予想台数が算出されてもよい。この場合、ステップSC15において、制御部101は、ステップSC13またはステップSC14において算出された予想台数と通知済台数との差を変動数M2として算出してもよい。変形例6のステップSC13において、制御部101は、例えば、記憶部102に記憶された、画像データの総量に応じて予想台数を算出するためのデータ(以下、「台数算出データDi」という)に基づいて、予想台数を算出する。また、変形例6のステップSC14において、制御部101は、画像データの積算量が決められた量(例えば1MB)増える度に、決められた割合(例えば、画像データの量が1MBにつき0.7台の割合)で予想台数を算出する。なお、算出された予想台数のうち小数点以下の値は切り上げられる。制御部101は、算出された予想台数をRAMに上書きする。
図21は、台数算出データDiの一例を示す図である。図21の台数算出データDiは、画像データの総量を予測するための予測式が記憶されたクラウドサービスごとに、予想台数を算出するための式を示す。なお、算出された予想台数のうち小数点以下の値は切り上げられる。図21の例で、クラウドサービス1については、画像データの量が1MBにつき0.5台の割合で予想台数が算出される。例えば、クラウドサービス1について予測された画像データの総量が4MBである場合、予想台数は2台と算出される。また、クラウドサービス2については、画像データの量が1MBにつき1台の割合で予想台数が算出される。例えば、クラウドサービス2について予測された画像データの総量が1.5MBである場合、予想台数は1.5台(小数点以下を切り上げて2台)と算出される。
ステップSC18において確定した画像データの総量に応じて予想台数が算出されてもよい。この場合、ステップSC19において、制御部101は、ステップSC18において算出された予想台数と通知済台数との差を変動数M3として算出してもよい。変形例6のステップSC18において、制御部101は、例えば、上述の台数算出データDiに基づいて、予想台数を算出する。制御部101は、算出された予想台数をRAMに上書きする。
(7)その他の変形例
図5または図18に示す処理が開始されるタイミングは、実施形態に記載されたタイミングに限らない。図5または図18に示す処理は、サービス提供装置2が提供する複数のクラウドサービスのうちのいずれかのクラウドサービスについて、確保要求が取得されたことを契機として開始されてもよい。この場合、ステップSD2の処理は、行われなくてもよい。
図8または図19に示す処理が開始されるタイミングは、実施形態に記載されたタイミングに限らない。図8または図19に示す処理は、例えば、予め定められた周期で繰り返し実行されてもよい。この場合、図8に示す処理は、図5に示す処理よりも頻繁に行われる。
ステップSA3において被選択業者の処理の増減を予測するのに用いられる利用履歴データは、実施形態に記載されたデータに限らない。利用履歴データは、例えば、1時間よりも短い間隔で平均台数を示していてもよい。別の例で、利用履歴データは、曜日毎または月日毎に記憶されていてもよい。
また、ステップSA3において被選択業者の処理の増減を予測する方法は、実施形態に記載された方法に限らない。例えば、稼働台数N1が平均台数N2よりも小さく、且つ、稼働台数N1と平均台数N2との差が閾値Td以上である場合に、被選択業者の処理が増えると予想されてもよい。
被選択業者の処理の増減を予測する方法は、稼働台数が閾値Tm以上である場合(ステップSA4:YES)と、稼働台数が閾値Tmを下回る場合(ステップSA4:NO)とで異なっていてもよい。この場合、ステップSA3の処理は、ステップSA4とステップSA5の間、およびステップSA4とステップSA6の間に行われてもよい。例えば、上述の閾値Tdが用いられる場合、ステップSA4が「YES」のときには、稼働台数N1と平均台数N2との差が閾値Td1以上であるか否かが判断され、ステップSA4が「NO」のときには、稼働台数N1と平均台数N2との差が閾値Td2(<Td1)以上であるか否かが判断されてもよい。
ステップSA3の処理は、行われなくてもよい。
ステップSA5においてCPU負荷が閾値Th1以上であると判断された場合(SA5:YES)、必ずしも仮想マシン20が確保されなくてもよい。例えば、提供業者が利用することができる仮想マシン20の台数の上限(以下、「上限台数」という)が各提供業者について予め設定されており、稼働台数が被選択業者について設定された上限台数を超えていない場合に仮想マシン20が確保されてもよい。この場合、ステップSA5とステップSA7との間において、稼働台数が被選択業者の上限台数を超えていないかどうかが判断される。
また、ある提供業者については閾値Tmを上回る台数の仮想マシン20が確保されないようにするために、当該提供業者についてはステップSA5の処理が行われないようにしてもよい。
ステップSA7において確保される仮想マシン20の台数は、1台に限らない。例えば、複数台の仮想マシン20が確保されてもよい。
ステップSB3で用いられる閾値Th1は、ステップSA5で用いられる閾値Th1と異なっていてもよい。
ステップSB5の処理は、行われなくてもよい。この場合、特定業者のCPU負荷が閾値Th3以上であると判断されると(SB4:NO)、制御部201は、処理を終了する。
ステップSC3の確保要求において確保が要求される仮想マシン20の台数は、クラウドサービスの種類、提供業者、またはサービス提供装置2により異なってもよい。例えば、あるサービス提供装置2には1台の仮想マシン20の確保が要求され、他のサービス提供装置2には複数台の仮想マシン20の確保が要求されてもよい。
ステップSC4において、設定が受け付けられる各種パラメータは、実施形態に記載されたパラメータに限らない。
ステップSC6において、仮想マシン20の台数を算出するために用いられる式は、実施形態に記載された式に限らない。また、ステップSC6において算出された予想台数のうち、少数点以下の端数は切り上げられる場合に限らない。例えば、少数点以下の端数は四捨五入されてもよい。
ステップSC8においてサービス提供装置2に送信される要求は、確保要求に限らない。例えば、RAMに記憶された変動数M1が負である場合には、変動数M1が示す台数(ここでは、変動数M1が示す台数の絶対値)の解放要求がサービス提供装置2に送信されてもよい。
ステップSC13において画像データの総量を予測するのに用いられる予測式は、実施形態に記載された予測式に限らない。画像データの総量が予測される式であれば、いかなる予測式が用いられてもよい。
ステップSC13の処理は行われなくてもよい。この場合、ステップSC12は省略され、利用が開始されるクラウドサービスについてステップSC14の処理が行われる。また、ステップSC14の処理は行われなくてもよい。この場合、ステップSC12は省略され、利用が開始されるクラウドサービスについてステップSC13の処理が行われる。
確保要求または解放要求が送信されるタイミングは、実施形態に記載されたタイミングに限らない。確保要求または解放要求は、画像形成装置1の処理の進捗におけるいかなるタイミングで送信されてもよい。
ステップSD4の処理が行われるときの決められた値は、実施形態に記載された値に限らない。例えば、確保要求または解放要求の確度が、「3」よりも高いか否かが判断されてもよい。
クラウドサービスにおける処理の対象となる画像データは、複数枚の原稿から読み取られた画像の画像データに限らない。1枚の原稿から読み取られた画像の画像データに対して、クラウドサービスにおける処理が行われてもよい。また、クラウドサービスにおける処理の対象となるデータは、画像データに限らない。
画像形成装置1が画像データを取得する方法は、画像読取部105により原稿を読み取る方法に限らない。画像形成装置1は、ネットワークを介して他の情報処理装置から画像データを取得してもよい。また、画像形成装置1は、USBメモリなどの着脱可能な記録媒体から画像データを取得してもよい。
実施形態において、画像形成装置1およびサービス提供装置2によって実行されるプログラムは、磁気記録媒体(磁気テープ、磁気ディスク(HDD、FD(Flexible Disk))など)、光記録媒体(光ディスク(CD(Compact Disk)、DVD(Digital Versatile Disk))など)、光磁気記録媒体、半導体メモリ(フラッシュROMなど)などのコンピュータが読み取り可能な記録媒体に記憶した状態で提供されてもよい。また、このプログラムは、インターネットなどのネットワーク経由でダウンロードされてもよい。