(57)【要約】【課題】開発コストを低減しつつ、高品質なアプリケーションの開発を可能とする。【解決手段】取得部が、機器の動作を主にソフトウェアで実現するエミュレータの構成を指定する構成情報を、所定のネットワークを介して取得する。生成部は、構成情報で指定された構成のエミュレータを生成する。実行部は、アプリケーションの動作検証に対応するエミュレート動作を、生成された前記エミュレータに実行させる。そして、通知部が、アプリケーションから送信された、エミュレート動作によるイベントの処理状況の確認要求に応じて、エミュレータにイベントの処理状況を確認し、確認結果を、アプリケーション及び確認結果を表示部に表示する表示制御部に通知する。【選択図】図１
2016177696.tif 000002
【特許請求の範囲】
【請求項１】
機器の動作を主にソフトウェアで実現するエミュレータの構成を指定する構成情報を、所定のネットワークを介して取得する取得部と、
前記構成情報で指定された構成のエミュレータを生成する生成部と、
アプリケーションの動作検証に対応するエミュレート動作を、生成された前記エミュレータに実行させる実行部と、
前記アプリケーションから送信された、前記エミュレート動作によるイベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記アプリケーション及び前記確認結果を表示部に表示する表示制御部に通知する通知部と、
を有するエミュレータ提供装置。
【請求項２】
前記通知部は、前記アプリケーションから前記ネットワークを介して送信される、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記ネットワークを介して前記アプリケーション及び前記表示制御部に通知すること
を特徴とする請求項１に記載のエミュレータ提供装置。
【請求項３】
前記通知部は、前記アプリケーションから送信される、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記ネットワークを介して前記表示制御部に通知すること
を特徴とする請求項１に記載のエミュレータ提供装置。
【請求項４】
前記構成情報で指定されるエミュレータの生成の可否を検証する検証部を、さらに備え、
前記生成部は、生成が可能であると判別された構成のエミュレータを生成すること
を特徴とする請求項１から請求項３のうち、いずれか一項に記載のエミュレータ提供装置。
【請求項５】
前記実行部は、エラー発生動作を含む前記エミュレート動作を前記エミュレータに実行させ、
前記通知部は、前記エミュレータに前記イベントの処理状況を確認することで、エラー発生のイベントの確認結果を得た際に、前記アプリケーション及び前記表示制御部に対して、前記エラー発生のイベント通知を行うこと
を特徴とする請求項１から請求項４のうち、いずれか一項に記載のエミュレータ提供装置。
【請求項６】
取得部が、機器の動作を主にソフトウェアで実現するエミュレータの構成を指定する構成情報を、所定のネットワークを介して取得する取得ステップと、
生成部が、前記構成情報で指定された構成のエミュレータを生成する生成部と、
実行部が、アプリケーションの動作検証に対応するエミュレート動作を、生成された前記エミュレータに実行させる実行ステップと、
通知部が、前記アプリケーションから送信された、前記エミュレート動作によるイベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記アプリケーション及び前記確認結果を表示部に表示する表示制御部に通知する通知ステップと、
を有するエミュレータ提供方法。
【請求項７】
前記通知ステップでは、前記通知部が、前記アプリケーションから前記ネットワークを介して送信される、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記ネットワークを介して前記アプリケーション及び前記表示制御部に通知すること
を特徴とする請求項６に記載のエミュレータ提供方法。
【請求項８】
前記通知ステップでは、前記通知部が、前記アプリケーションから送信される、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記ネットワークを介して前記表示制御部に通知すること
を特徴とする請求項６に記載のエミュレータ提供方法。
【請求項９】
コンピュータを、
機器の動作を主にソフトウェアで実現するエミュレータの構成を指定する構成情報を、所定のネットワークを介して取得する取得部と、
前記構成情報で指定された構成のエミュレータを生成する生成部と、
アプリケーションの動作検証に対応するエミュレート動作を、生成された前記エミュレータに実行させる実行部と、
前記アプリケーションから送信された、前記エミュレート動作によるイベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記アプリケーション及び前記確認結果を表示部に表示する表示制御部に通知する通知部として機能させること、
を特徴とするエミュレータ提供プログラム。
【請求項１０】
前記通知部は、前記アプリケーションから前記ネットワークを介して送信される、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記ネットワークを介して前記アプリケーション及び前記表示制御部に通知すること
を特徴とする請求項９に記載のエミュレータ提供プログラム。
【請求項１１】
前記通知部は、前記アプリケーションから送信される、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記ネットワークを介して前記表示制御部に通知すること
を特徴とする請求項９に記載のエミュレータ提供プログラム。
【請求項１２】
機器の動作を主にソフトウェアで実現するエミュレータの構成を指定する構成情報を、所定のネットワークを介して取得する取得部と、
前記構成情報で指定された構成のエミュレータを生成する生成部と、
アプリケーションの動作検証に対応するエミュレート動作を、生成された前記エミュレータに実行させる実行部と、
前記アプリケーションから前記ネットワークを介して送信される、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記ネットワークを介して通知する通知部と、
を備えたエミュレータ提供装置と、
前記エミュレータの構成を指定する構成情報、アプリケーションの動作検証に対応するエミュレート動作を設定するための設定情報、及び、前記エミュレート動作によるイベントの処理状況の確認要求を、前記ネットワークを介して前記エミュレータ提供装置に送信する送信部と、
前記ネットワークを介して通知される前記確認結果を取得する、前記動作検証を行う前記アプリケーションと、
前記ネットワークを介して通知される前記確認結果を表示部に表示する表示制御部と、
を備えたアプリケーションの開発用機器と
を有するエミュレータ提供システム。
【請求項１３】
機器の動作を主にソフトウェアで実現するエミュレータの構成を指定する構成情報を、所定のネットワークを介して取得する取得部と、
前記構成情報で指定された構成のエミュレータを生成する生成部と、
アプリケーションの動作検証に対応するエミュレート動作を、生成された前記エミュレータに実行させる実行部と、
前記アプリケーションから送信された、前記イベントの処理状況の確認要求に応じて、前記エミュレータに前記イベントの処理状況を確認し、確認結果を、前記アプリケーション及び前記ネットワークを介してアプリケーションの開発用機器の表示制御部に通知する通知部と、
を備えたエミュレータ提供装置と、
前記エミュレータの構成を指定する構成情報、及び、アプリケーションの動作検証に対応するエミュレート動作を設定するための設定情報を、前記ネットワークを介して前記エミュレータ提供装置に送信する送信部と、
前記ネットワークを介して通知される前記確認結果を表示部に表示する前記表示制御部と、
を備えたアプリケーションの開発用機器と
を有するエミュレータ提供システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレータ提供装置、エミュレータ提供方法、エミュレータ提供プログラム、及び、エミュレータ提供システムに関する。
【背景技術】
【０００２】
今日において、インターネット上のＷｅｂＡＰＩ又は機器ＡＰＩ等を利用したアプリケーションプログラム（以下、単にアプリという）の開発が行われている。ＡＰＩは、「Application  Program  Interface」の略記である。アプリの開発には、開発効率を上げるためにエミュレータが使用されるのが一般的である。
【０００３】
ここで、アプリの開発元となるベンダ等へ配布するエミュレータに、実機の全ての機能を持たせることは困難である。特に、機種に依存する構成及び性能をエミュレータで再現することは困難である。このため、ベンダは、実機を購入又はメーカ側から実機の搬送を受け、購入等した実機を用いて、機種に依存した不具合に対応可能な高品質なアプリを開発していた。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、アプリを開発するために実機の購入又は実機の搬送を受けていては、アプリの開発コストが高くなる問題がある。特に、画像形成装置用のアプリの開発を行う場合、以下の理由から開発コストがさらに高くなる。
【０００５】
１．実機の価格及び運搬コストが高い。
２．実機に対して設けることが可能なオプション装置が多く、全て購入等すると、開発コストがさらに高くなる。
３．実機に設けられるファームウェアの種類及びバージョンも多く、全て実装させると、開発コストがさらに高くなる。
【０００６】
また、このようにコストを掛けて実機を購入等したにも関わらず、以下の理由から高品質なアプリの開発が困難となる問題もある。
【０００７】
１．購入した実機に、カスタマーエンジニア側でのみ設定可能な設定値が存在する。このような設定値は、ベンダ側で設定困難なため、十分なテストを行うことができず、高品質なアプリの開発が困難となる。
２．実機を用いた場合でも、タイミングに依存するエラー系のテストは、エラーの再現が困難なことからテストも困難となる。このため、実機を用いたにも関わらず、十分なテストを行うことができず、高品質なアプリの開発が困難となる。
３．ＷｅｂＡＰＩにおいて、外部サービスがダウンしている場合等のシステム状態に依存するエラー系のテストも、エラーの再現が困難なことからテストも困難となる。このため、実機を用いたにも関わらず、十分なテストを行うことができず、高品質なアプリの開発が困難となる。
【０００８】
本発明は、上述の課題に鑑みてなされたものであり、開発コストを低減しつつ、高品質なアプリケーションの開発を可能とするエミュレータ提供装置、エミュレータ提供方法、エミュレータ提供プログラム、及び、エミュレータ提供システムの提供を目的とする。
【課題を解決するための手段】
【０００９】
本発明は、上述した課題を解決し、目的を達成するために、機器の動作を主にソフトウェアで実現するエミュレータの構成を指定する構成情報を、所定のネットワークを介して取得する取得部と、構成情報で指定された構成のエミュレータを生成する生成部と、アプリケーションの動作検証に対応するエミュレート動作を、生成された前記エミュレータに実行させる実行部と、アプリケーションから送信された、エミュレート動作によるイベントの処理状況の確認要求に応じて、エミュレータにイベントの処理状況を確認し、確認結果を、アプリケーション及び確認結果を表示部に表示する表示制御部に通知する通知部とを有する。
【発明の効果】
【００１０】
本発明によれば、開発コストを低減しつつ、高品質なアプリケーションの開発が可能となるという効果を奏する。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施の形態のエミュレータ提供システムのシステム構成図である。
【図２】図２は、エミュレータ提供システムのエミュレータ提供装置のハードウェア構成図である。
【図３】図３は、エミュレータ提供システムの開発用ＰＣのハードウェア構成図である。
【図４】図４は、第１の実施の形態のエミュレータ提供システムの各部の機能ブロック図である。
【図５】図５は、エミュレータ提供装置のソフトウェア構成を示す図である。
【図６】図６は、開発者から要求された構成のエミュレータがエミュレータ提供装置で形成されるまでの各部の動作を示すシーケンス図である。
【図７】図７は、実機エミュレータ構成情報の一例を示す図である。
【図８】図８は、エミュレータ提供装置の環境管理部におけるエミュレータ生成動作の流れを示すフローチャートである。
【図９】図９は、第１の実施の形態のエミュレータ提供システムにおける、エミュレータに対する動作設定時の各部の動作を示すシーケンス図である。
【図１０】図１０は、第１の実施の形態のエミュレータ提供システムにおける、動作設定に対応するエミュレータのイベント処理時の各部の動作を示すシーケンス図である。
【図１１】図１１は、動作設定情報の一例を示す図である。
【図１２】図１２は、開発用ＰＣのエミュレータクライアントにおけるエミュレート実行動作の流れを示すフローチャートである。
【図１３】図１３は、第２の実施の形態のエミュレータ提供システムのシステム構成図である。
【図１４】図１４は、第２の実施の形態のエミュレータ提供システムの各部の機能ブロック図である。
【図１５】図１５は、開発者から要求された構成のエミュレータがエミュレータ提供装置で形成されるまでの各部の動作を示すシーケンス図である。
【図１６】図１６は、第２の実施の形態のエミュレータ提供システムにおける、エミュレータに対する動作設定時の各部の動作を示すシーケンス図である。
【図１７】図１７は、第２の実施の形態のエミュレータ提供システムにおける、エミュレータのイベント処理時の各部の動作を示すシーケンス図である。
【発明を実施するための形態】
【００１２】
以下、添付図面を参照して、本発明を適用した実施の形態となるエミュレータ提供システムを詳細に説明する。以下に説明する各実施の形態のエミュレータ提供システムは、インターネット等の所定のネットワーク上に設けられてエミュレータ提供装置で（クラウドベースで）、ベンダ側からのリクエストに対応した実機再現性の高いエミュレータを生成し、ベンダ毎に提供することで、高品質なアプリの開発が可能となっている。
【００１３】
（第１の実施の形態）
図１は、実施の形態のエミュレータ提供システムの概略的なシステム構成を示す図である。この図１に示すように、エミュレータ提供システムは、ベンダのリクエストに対応するベンダ専用のエミュレータを生成して提供するエミュレータ提供装置１を有している。また、エミュレータ提供システムは、提供されたエミュレータを用いてＷｅｂアプリケーション等のクライアントアプリケーション（クライアントアプリ）の開発を行う各ベンダの開発用パーソナルコンピュータ装置（開発用ＰＣ）２、３・・・を有している。エミュレータ提供装置１及び各ベンダの開発用ＰＣ２、３は、各ベンダのイントラネット４、５及び広域ネットワークであるインターネット６を介して相互に接続されている。開発用ＰＣ２、３は、開発用機器の一例である。
【００１４】
エミュレータ提供装置１は、各ベンダ用の実機エミュレータ１７、１８、２０又はＷｅｂＡＰＩエミュレータ１６、１９を生成するエミュレータ環境部１１、及び、各ベンダのユーザ認証を行うユーザ認証部１２を有している。また、エミュレータ提供部１は、ＷｅｂＡＰＩ情報データベース（ＷｅｂＡＰＩＤＢ）２１、外部サービス情報データベース（外部サービス情報ＤＢ）２２、及び、機器情報データベース（機器情報ＤＢ）２３等のエミュレータを生成するための各種情報が記憶されたバックエンド１３を有している。
【００１５】
各ベンダの開発用ＰＣ２、３は、エミュレータ提供装置１に対して所望の構成のエミュレータの作成をリクエストし、このリクエストに応じてエミュレータ提供装置１上で提供されるエミュレータを用いて、Ｗｅｂアプリケーションプログラム等のクライアントアプリケーションプログラム（以下、クライアントアプリ２６という）の動作検証を行うエミュレータクライアント２５を有している。クライアントアプリ２６は、アプリケーションの一例である。
【００１６】
図２は、エミュレータ提供装置１のハードウェア構成図である。この図２に示すように、エミュレータ提供装置１は、ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、ＨＤＤ３４及び通信インタフェース（通信Ｉ／Ｆ）３５を有している。ＣＰＵ３１〜通信Ｉ／Ｆ３５は、バスライン３８を介して相互に接続されている。ＲＯＭ３２等の記憶部には、エミュレータ提供装置１用のエミュレータ提供プログラムが記憶されている。ＣＰＵ３１は、エミュレータ提供プログラムに従って、ベンダからのリクエストに対応するエミュレータを生成して提供する。ＨＤＤ３４には、エミュレータを生成する際に用いられる、ＷｅｂＡＰＩＤＢ２１、外部サービス情報ＤＢ２２及び機器情報ＤＢ２３が記憶されている。
【００１７】
ＣＰＵは、「Central  Processing  Unit」の略記である。ＲＯＭは、「Read  Only  Memory」の略記である。ＲＡＭは、「Random  Access  Memory」の略記である。ＨＤＤは、「Hard  Disk  drive」の略記である。
【００１８】
図３は、ベンダで使用される開発用ＰＣ２（又は開発用ＰＣ３）のハードウェア構成図である。この図３に示すように、開発用ＰＣ２は、ＣＰＵ４１、ＲＯＭ４２、ＲＡＭ４３、ＨＤＤ４４、通信Ｉ／Ｆ４５、操作部４６及び表示部４７を有している。ＣＰＵ４１〜表示部４７は、バスライン４８を介して相互に接続されている。ＲＯＭ４２等の記憶部には、開発用ＰＣ用のエミュレータ提供プログラムが記憶されている。ＣＰＵ４１は、エミュレータ提供プログラムに従って、エミュレータ提供装置１に対して所望の構成のエミュレータの生成を要求する。そして、エミュレータ提供装置１上で提供されるエミュレータを用いてクライアントアプリ２６の動作検証を行う。
【００１９】
図４に、エミュレータ提供装置１のＣＰＵ３１が、エミュレータ提供プログラムを実行することで実現される各機能の機能ブロック図を示す。また、図４に、開発用ＰＣ２のＣＰＵ４１が、エミュレータ提供プログラムを実行することで実現される各機能の機能ブロック図を示す。
【００２０】
エミュレータ提供装置１のＣＰＵ３１は、エミュレータ提供プログラムを実行することで、環境管理部１５として機能する。環境管理部１５は、エミュレータ生成部６１、イベント処理部６２、シナリオ実行設定部６３、構成検証部６４及びユーザ認証部６５として機能する。なお、ユーザ認証部６５は、環境管理部１５の機能として設けてもよいし、図１に示すようにエミュレータ提供装置１の機能として設けてもよい。
【００２１】
エミュレータ生成部６１は、生成部の一例であり、開発者から指定された構成のエミュレータを生成する。図４の例は、エミュレータ生成部６１により、ＷｅｂＡＰＩエミュレータ１６及び実機エミュレータ１７が形成されている例である。ＷｅｂＡＰＩエミュレータ１６は、開発者から指定されたエミュレート動作を行うエミュレータ５５及び開発者から指定されたシナリオを実行するシナリオ実行部５６を有している。同様に、実機エミュレータ１７も、開発者から指定されたエミュレート動作を行うエミュレータ５３及び開発者から指定されたシナリオを実行するシナリオ実行部５４を有している。
【００２２】
環境管理部１５のイベント処理部６２は、実行部及び通知部の一例である。イベント処理部６２は、エミュレータクライアント２５と各エミュレータ１６、１７等の間のイベント確認処理を仲介する。シナリオ実行設定部６３は、開発者から指定されたエミュレータ動作をエミュレータに設定する。構成検証部６４は、開発者から指定された構成のエミュレータを形成可能か否かの検証を行う。ユーザ認証部６５は、開発者のユーザに認証処理を行う。
【００２３】
なお、この例では、エミュレータ生成部６１〜ユーザ認証部６５は、ＣＰＵ３１がエミュレータを実行することでソフトウェア的に実現されることとしたが、一部または全部の機能をＩＣ（Integrated  Circuit）等のハードウェアで実現してもよい。
【００２４】
また、エミュレータ提供プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、エミュレータ提供プログラムは、ＣＤ−Ｒ、ＤＶＤ、ブルーレイディスク（登録商標）、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。ＤＶＤは、「Digital  Versatile  Disk」の略記である。また、インターネット等のネットワーク経由でインストールするかたちで提供してもよい。また、エミュレータ提供プログラムを、機器内のＲＯＭ等に予め組み込んで提供してもよい。
【００２５】
一方、開発用ＰＣ２のＣＰＵ４１は、エミュレータ提供プログラムを実行することで、所望のエミュレータの選択画面、クライアントアプリ２６のリクエスト等に応じて動作するエミュレータの動作を示す動作画面等を表示するためのＷｅｂサーバ機能５１及びエミュレータクライアント２５として機能する。Ｗｅｂサーバ機能５１は、表示制御部の一例である。
【００２６】
また、ＣＰＵ４１は、エミュレータ提供プログラムを実行することで、エミュレータクライアント２５において、設定入力部５７、イベント処理部５８、実機操作部エミュレータ５９及び動作内容通知部６０の各機能を実現する。設定入力部５７は、ユーザ認証用の情報設定、及び、希望するエミュレータの構成の指定（エミュレータ初期化）等を行う。イベント処理部５８は、各エミュレータ１６、１７に対して所望の動作のイベント要求及びイベントの進捗状況を確認するイベント確認要求等を行う。実機操作部エミュレータ５９は、実機エミュレータ１７等の操作部の画像を表示部４７に表示する。動作内容通知部６０は、各エミュレータ１６、１７等に対して所望の動作内容を通知する。
【００２７】
なお、この例では、設定入力部５７〜動作内容通知部６０は、ＣＰＵ４１がエミュレータを実行することでソフトウェア的に実現されることとしたが、一部または全部の機能をＩＣ（Integrated  Circuit）等のハードウェアで実現してもよい。
【００２８】
また、エミュレータ提供プログラムは、インストール可能な形式または実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。また、エミュレータ提供プログラムは、ＣＤ−Ｒ、ＤＶＤ、ブルーレイディスク（登録商標）、半導体メモリ等のコンピュータ装置で読み取り可能な記録媒体に記録して提供してもよい。ＤＶＤは、「Digital  Versatile  Disk」の略記である。また、インターネット等のネットワーク経由でインストールするかたちで提供してもよい。また、エミュレータ提供プログラムを、機器内のＲＯＭ等に予め組み込んで提供してもよい。
【００２９】
次に、図５に、エミュレータ提供装置１の環境管理部１５のソフトウェア構成図を示す。一例ではあるが、環境管理部１５は、ハイパーバイザ７１、ゲストＯＳ（Operating  System）７２、ＨＴＴＰエンジン７３及び上述のクライアントアプリ２６を備えており、ハイパーバイザ型の仮想環境を提供している。ハイパーバイザ型の仮想環境は、ホストＯＳを必要としないため、エミュレータの速度低下を最小限に抑えることができ、また、複数のエミュレータを効率よく稼働させることができる。
【００３０】
次に、図６のシーケンス図に、開発者から要求された構成のエミュレータがエミュレータ提供装置１で形成されるまでの流れを示す。この図６において、まず、ステップＳ１では、開発者が、クライアントアプリ２６の開発開始時に、エミュレータ提供システムのシステム管理者側から発行された企業ＩＤ（企業識別番号）、開発者のユーザＩＤ及びパスワード指定して、認証の設定要求を行う。エミュレータクラインアント２５の設定入力部５７は、ステップＳ１において、開発者から入力された企業ＩＤ及びユーザＩＤ等を取得する。
【００３１】
次に、開発者は、希望するエミュレータの構成を指定する。具体的には、開発者は、例えば図７に示すように開発者が開発しているアプリケーションに対応する複合機等の機器の機体番号、機種ＩＤ、希望するオプション機能、設置場所、コメント、設定情報、複合機等の機器で動作しているＯＳ等のプログラムのプログラムＩＤ及びバージョン番号等を指定する。設定入力部５７は、ステップＳ２において、これらの各種情報を含むエミュレータ構成情報を生成する。エミュレータ構成情報は、構成情報の一例である。
【００３２】
ステップＳ３では、エミュレータクライアント２５の設定入力部５７が、インターネット６を介して、エミュレータ提供装置１のエミュレータ環境部１１の環境管理部１５にユーザ認証要求を行う。図４に示す環境管理部１５のユーザ認証部６５は、正規のユーザであることを認証すると、エミュレータクライアント２５に対して認証チケットを配布する。エミュレータクライアント２５の動作内容通知部６０は、ステップＳ４において、配布された認証チケットを付加したうえで、上述のエミュレータ構成情報を環境管理部１５に送信する。
【００３３】
エミュレータ提供装置１の環境管理部１５のユーザ認証部６５は、ステップＳ５において、認証チケットに基づいてユーザ認証を行う。また、環境管理部１５の構成検証部６４は、ステップＳ６において、エミュレータ構成情報で要求されるエミュレータの構成を検証する。具体的には、例えば開発者により指定されたバージョン番号のプログラム上でカードリーダを動作させることが可能であるか否か等の、開発者により指定された構成が正しいか否かの検証を行う。構成検証部６４は、取得部及び検証部の一例である。
【００３４】
次に、構成の検証を行った結果、要求されたエミュレータを形成可能であると判別した場合、構成検証部６４は、ステップＳ７において、バックエンド１３のＷｅｂＡＰＩＤＢ２１〜機器情報ＤＢ２３から、エミュレータ構成情報で要求されるエミュレータの構成に必要な各種情報を取得する。
【００３５】
エミュレータ生成部６１は、ステップＳ８においてエミュレータ環境生成を行い、例えばステップＳ９において、バックエンド１３から取得された各種情報に基づいて、ＷｅｂＡＰＩエミュレータ１６を生成する。また、エミュレータ生成部６１は、ステップＳ１０において、実機エミュレータ１７を生成し、ステップＳ１１において、実機エミュレータ１８を生成する。これにより、開発者から指定された、ベンダ専用のエミュレータを生成できる。なお、ＷｅｂＡＰＩエミュレータ１６及び２つの実機エミュレータ１７、１８を生成することは一例であり、一つの実機エミュレータのみを生成してもよい。
【００３６】
図８は、エミュレータ提供装置１の環境管理部１５におけるエミュレータ生成動作の流れを示すフローチャートである。この図８を用いて、環境管理部１５側から見たエミュレータ生成動作の流れを説明すると、まず、ステップＳ２１において、図４に示すユーザ認証部６５が、開発者の開発用ＰＣ２のエミュレータクライアント２５から送信された企業ＩＤ及びユーザＩＤ等に基づいてユーザ認証を行う。ユーザ認証により、正規の開発者であることが認証された場合は、ステップＳ２２に処理が進む。これに対して、ユーザ認証により、正規の開発者であることが認証されなかった場合、ステップＳ２７において、開発者用ＰＣ２に対してエラー通知が返信され、図８のフローチャートの処理が終了となる。
【００３７】
ステップＳ２２では、構成検証部６４が、開発者が要求するエミュレータの構成を示す構成情報（エミュレータ初期化要求）を取得する。ユーザ認証部６５は、正規のユーザであると認証した際に、認証チケットを配布する。また、開発者は、エミュレータ初期化要求を行う際に、配布された認証チケットをエミュレータ初期化要求に付加する。ステップＳ２３では、構成検証部６４が、エミュレータ初期化要求に付加されている認証チケットを検証する。認証チケットに基づいて、正規のユーザであることが認証される場合、処理がステップＳ２４に進む。これに対して、認証チケットで正規のユーザであることが認証できない場合、処理がステップＳ２７に進み、開発者用ＰＣ２に対してエラー通知が返信され、図８のフローチャートの処理が終了となる。
【００３８】
ステップＳ２４では、構成検証部６４が、開発者が要求するエミュレータの構成を検証する。開発者が要求するエミュレータの構成が、形成可能な構成である場合は、処理がステップＳ２５に進む。これに対して、開発者が要求するエミュレータの構成が、形成困難な構成である場合は処理がステップＳ２７に進み、開発者用ＰＣ２に対してエラー通知が返信され、図８のフローチャートの処理が終了となる。
【００３９】
ステップＳ２５では、エミュレータ生成部６１が、開発者が要求する構成のエミュレータを生成する。開発者が要求する構成の全てのエミュレータの生成が完了した場合は、図８のフローチャートの処理が終了となる。これに対して、開発者が要求する構成の全てのエミュレータを生成できない場合は、ステップＳ２６において、作成済みのエミュレータを削除し、ステップＳ２７で、開発者用ＰＣ２に対してエラー通知を返信し、図８のフローチャートの処理が終了となる。すなわち、開発者が要求する構成のエミュレータを、一つでも生成できない場合は、エラーとして取り扱う。なお、生成可能なエミュレータのみを提供してもよい。
【００４０】
次に、図９及び図１０のシーケンス図を用いて、上述のように生成されたエミュレータに対する動作設定及びイベント処理の流れを説明する。図９及び図１０は、一連のシーケンス図となっており、図９は、主に、エミュレータに対する動作設定の流れを示している。また、図１０は、主に、動作設定に対応するエミュレータのイベント処理の流れを示している。
【００４１】
まず、開発者は、クライアントアプリ２６の動作を検証するために、エミュレータに対して希望する動作を示す動作設定情報を開発用ＰＣ２の操作部４６を操作して入力する。開発用ＰＣ２のエミュレータクライアント２５は、図９のシーケンス図のステップＳ３１において、開発者から入力された動作設定情報を取得する。
【００４２】
図１１は、動作設定情報の一例である。この図１１の例は、開発者の要求により、対象システムとして２つの実機エミュレータ（１７，１８）と一つのＷｅｂＡＰＩエミュレータ（１６）が生成された例を示している。開発者は、対象システム毎にシナリオ、回数及びエラー内容を指定する動作設定情報の入力を行う。具体的には、図１１の例は、一方の実機エミュレータに対して、２回のフォルダ取得を行い、原稿読み取り台のカバーが開操作されるエラーが発生する内容の動作設定情報を示している。また、図１１の例は、他方の実機エミュレータに対して、スキャンを３回実行し、自動原稿送り機構に用紙が詰まるエラー（ジャム）が発生する内容の動作設定情報を示している。
【００４３】
エミュレータクライアント２５の設定入力部５７は、このような動作設定情報が開発者から入力されると、ステップＳ３２において、エミュレータ提供装置１の環境管理部１５に対して上述と同様にユーザ認証要求を行う。正規のユーザとして認証されると、エミュレータクライアント２５の動作内容通知部６０は、ステップＳ３３において、環境管理部１５に対して、開発者から入力されたエミュレータの動作設定情報を送信する。
【００４４】
環境管理部１５のシナリオ実行設定部６３は、エミュレータクライアント２５から動作設定情報を取得すると、例えばステップＳ３４において、ＷｅｂＡＰＩエミュレータ１６に、開発者から指定された動作の動作設定を行う。同様に、シナリオ実行設定部６３は、ステップＳ３５及びステップＳ３６において、各実機エミュレータ１７、１８に、開発者から指定された動作の動作設定を行う。このように各エミュレータ１６〜１８に対する動作設定が完了すると、環境管理部１５は、ステップＳ３６ａにおいて、各エミュレータ１６〜１８の操作部画面情報をエミュレータクライアント２５に送信する。
【００４５】
各エミュレータ１６〜１８の操作部画面情報を取得すると、エミュレータクライアント２５は、表示部４７に、エミュレータの選択画面を表示する。この例の場合、エミュレータクライアント２５は、ＷｅｂＡＰＩエミュレータ１６及び実機エミュレータ１７、１８の選択画面を表示する。開発者は、クライアントアプリ２６の動作検証を行うエミュレータを選択操作する。エミュレータクライアント２５は、ステップＳ３７において、開発者により選択されたエミュレータの操作部画面（ステップＳ３６ａで取得した操作部画面）を表示部４７に表示する。
【００４６】
次に、開発者は、ステップＳ３８において、開発者が開発しているアプリケーションであるクライアントアプリ２６に対するログイン要求を行う。このログイン要求がされると、エミュレータクライアント２５は、ステップＳ３９において、クライアントアプリ２６からログイン画面情報（クライアントアプリ２６のトップページの画面）を取得して表示する。開発者は、ステップＳ４０において、ユーザＩＤ及びパスワード等のログイン情報を、表示されたログイン画面に入力する。入力されたログイン情報は、ステップＳ４１において、クライアントアプリ２６に通知され、クライアントアプリ２６におけるユーザ認証が行われる。このユーザ認証により、正規のユーザであることが認証されると、クライアントアプリ２６は、ステップＳ４２において、環境管理部１５に対して、正規のユーザとして認証されたことを通知する。
【００４７】
ここで、一例として、開発者により開発されているクライアントアプリ２６は、用紙をスキャンすることで読み取った画像等の読み取り情報を、開発者が指定した保管先に保管するアプリケーションとする。ステップＳ４４では、クライアントアプリ２６により正規のユーザであることが認証されたため、エミュレータクライアント２５の実機操作部エミュレータ５９が、ステップＳ４３において、環境管理部１５に対してスキャン設定画面の取得要求を行う。環境管理部１５のイベント処理部６２は、ステップＳ４４において、ＷｅｂＡＰＩエミュレータ１６に対して、スキャン設定画面の取得要求を行う。ＷｅｂＡＰＩエミュレータ１６のシナリオ実行部５６は、設定されているスキャン設定画面を、環境管理部１５に送信する。環境管理部１５は、ＷｅｂＡＰＩエミュレータ１６から送信されたスキャン設定画面を開発用ＰＣ２に送信する。
【００４８】
開発用ＰＣ２に送信されたスキャン設定画面は、クライアントアプリ２６を介してエミュレータクライアント２５に送信される。エミュレータクライアント２５の実機操作部エミュレータ５９は、取得したスキャン設定画面を表示部４７に表示する。
【００４９】
次に、開発者は、表示部４７に表示されたスキャン設定画面を介して、スキャンした画像等を保管する保管先の選択要求を行う。エミュレータクライアント２５の実機操作部エミュレータ５９は、ステップＳ４５において、この保管先の選択要求を取得する。イベント処理部５８は、ステップＳ４６において、環境管理部１５に対して保管先選択画面の取得要求を行う。環境管理部１５のイベント処理部６２は、ステップＳ４７において、ＷｅｂＡＰＩエミュレータ１６から保管先選択画面を取得し、エミュレータクライアント２５に送信する。エミュレータクライアント２５の実機操作部エミュレータ５９は、保管先選択画面を表示部４７に表示する。開発者は、表示された保管先選択画面に基づいて、スキャンされた画像等の所望の保管先を指定する。
【００５０】
このように保管先を指定すると、開発者は、スキャン実行開始指示を行う。実機操作部エミュレータ５９は、ステップＳ４８で、このスキャン実行開始指示を取得する。スキャン実行開始指示を取得すると、実機操作部エミュレータ５９は、「処理中」の文字を表示部４７に表示する。また、イベント処理部５８は、ステップＳ４９及びステップＳ５０において、スキャン枚数及びスキャン開始位置等を初期化するスキャン初期化動作のエミュレート要求を、環境管理部１５に対して行う。
【００５１】
一例ではあるが、このような各エミュレータ１６〜１８に対するエミュレート要求は、エミュレート動作を要求する機器を指定するための対象機器情報、及び、スキャン初期化等の対象機器に対する動作リクエストをボディ部に記述したＨＴＭＬ文書を、インターネット６を介して各エミュレータ１６〜１８に送信することで行う。環境管理部１５のイベント処理部６２は、ステップＳ５１において、スキャン初期化動作のエミュレート要求を実機エミュレータ１７に送信する。これにより、実機エミュレータ１７において、スキャン初期化のエミュレート動作が実行される。
【００５２】
次に、エミュレータクライアント２５のイベント処理部５８は、ステップＳ５２及びステップＳ５３において、スキャンを開始する動作のエミュレート要求を、環境管理部１５に対して行う。環境管理部１５のイベント処理部６２は、ステップＳ５４において、スキャン開始のエミュレート要求を実機エミュレータ１７に送信する。これにより、実機エミュレータ１７において、スキャン開始のエミュレート動作が実行される。
【００５３】
次に、図１０のシーケンス図のステップＳ５５〜ステップＳ６０は、開始されたスキャンの進捗状況の問い合わせ動作（イベント確認動作）を示している。例えば、複合機等の実際の機器では、イベント確認動作は機器内で行われるが、実施の形態のエミュレータ提供システムの場合、インターネット６上のエミュレータ提供装置１でエミュレータが提供されている。このため、開発用ＰＣ２のエミュレータクライアント２５は、エミュレータ提供装置１に対し、インターネット６を介して所定時間置きにイベント確認を行う。ステップＳ５５〜ステップＳ６０は、このようなエミュレータクライアント２５によるイベント問い合わせのポーリング動作を示している。
【００５４】
すなわち、エミュレータクライアント２５のイベント処理部５８は、スキャンの開始要求を行った後は、ステップＳ５５、ステップＳ５６、ステップＳ５８、ステップＳ５９及びステップＳ６０に示すように、所定時間毎に、環境管理部１５に対してイベント取得要求を行う。環境管理部１５のイベント処理部６２は、イベント取得要求を受信する毎に、実機エミュレータ１７に対してイベント確認要求を行う。実機エミュレータ１７のエミュレータ５３は、イベント確認要求を受信すると、ステップＳ６１において、例えば「処理中」等の、イベントの現在の進行状況を環境管理部１５に通知する。環境管理部１５は、このイベントの現在の進行状況をエミュレータクライアント２５に転送する。エミュレータクライアント２５は、ステップＳ６１において、転送されたイベントの現在の進行状況を表示部４７に表示する。この例の場合、エミュレータクライアント２５は、現在の進行状況を示す「処理中」の文字を表示部４７に表示する。
【００５５】
次に、実機エミュレータ１７に対して、原稿読み取り中に原稿載置台のカバーが開操作されるエラーが発生する内容の動作が設定されていたとする。そして、例えばステップＳ６２において、実機エミュレータ１７のシナリオ実行部５４からエミュレータクライアント２５に、カバーの開操作によるエラーの発生が通知されたとする。この場合、エミュレータクライアント２５は、クライアントアプリ２６に対して、カバーの開操作によりエラーが発生した旨の通知を行うと共に、表示部４７に対してエラー表示を行う。
【００５６】
なお、このようなエラーイベントが設定されていない場合、スキャンが終了したタイミングで、実機エミュレータ１７からエミュレータクライアント２５に対して、イベント終了が通知される。これにより、エミュレータクライアント２５は、「スキャン終了」の文字を表示部４７に表示する。
【００５７】
次に、ステップＳ６３〜ステップＳ７０は、スキャンされたファイルをアップロードする流れを示している。すなわち、ステップＳ４５〜ステップＳ４７で説明したスキャンしたファイルの保管先として、例えばＷｅｂＡＰＩエミュレータ１６が選択されたとする。スキャンが正常に終了すると、クライアントアプリ２６からエミュレータクライアント２５に対してファイルのアップロード要求が送信される。
【００５８】
エミュレータクライアント２５のイベント処理部５８は、クライアントアプリ２６からファイルのアップロード要求を受信すると、表示部４７に対して、「ファイルアップロード中」の文字を表示する。また、エミュレータクライアント２５のイベント処理部５８は、環境管理部１５に対して、ファイルのアップロードに対応するエミュレート動作を行うようにエミュレート要求を行う。環境管理部１５のイベント処理部６２は、ステップＳ６５において、実機エミュレータ１７に対してファイルのアップロード要求を行う。
【００５９】
実機エミュレータ１７のエミュレータ５３は、ステップＳ６６において、ファイルのアップロードに対応するエミュレート動作を行い、ステップＳ６７において、ファイルのアップロードに対応するエミュレート動作の実行を、環境管理部１５に通知する。環境管理部１５は、ステップＳ６８において、ＷｅｂＡＰＩエミュレータ１６に対して、実機エミュレータ１７によりファイルのアップロードが実行された旨の通知を行う。これにより、ファイルのアップロードが、ＷｅｂＡＰＩエミュレータ１６に認識される。
【００６０】
このようなファイルのアップロード動作に対応するエミュレート動作が終了すると、環境管理部１５からエミュレータクライアント２５にイベント終了が通知される。エミュレータクライアント２５は、ステップＳ６９及びステップＳ７０において、クライアントアプリ２６に対して、ファイルのアップロードのイベントが終了した旨の通知を行う。また、エミュレータクライアント２５は、表示部４７に対して、「ファイルアップロード終了」の文字を表示する。
【００６１】
最後に、ステップＳ７１〜ステップＳ７４において、エミュレータクライアント２５、クライアントアプリ２６、環境管理部１５、及びＷｅｂＡＰＩエミュレータ１６においてジョブ登録が行われ、図９及び図１０のシーケンス図に示すエミュレータに対する動作設定及びイベント処理が終了する。
【００６２】
次に、図１２のフローチャートに、開発用ＰＣ２のエミュレータクライアント２５におけるエミュレート実行動作の流れを示す。この図１２のフローチャートにおいて、まず、ステップＳ８１及びステップＳ８２で、ユーザ認証及び所望のエミュレータ動作を設定すると、ステップＳ８３において、開発者からのエミュレータの動作要求を受け付ける。ステップＳ８４では、エミュレータクライアント２５が、開発者からの動作要求から、エミュレート先及びエミュレート要求内容を解析（判定）する。エミュレート先及びエミュレート要求内容を解析できない不正な要求の場合、エミュレータクライアント２５は、ステップＳ８９に処理を進め、表示部４７にエラー表示を行い、図１２のフローチャートの処理が終了する。
【００６３】
これに対して、開発者からの動作要求が、イベント確認要求の場合、エミュレータクライアント２５は、ステップＳ８５において、環境管理部１５に対してイベント確認要求を行う。また、開発者からの要求が、実機エミュレータ１７に対するエミュレート要求の場合、エミュレータクライアント２５は、ステップＳ８６において、環境管理部１５を介して実機エミュレータ１７に対して所望の動作に対応するエミュレート要求を行う。また、開発者からの要求が、ＷｅｂＡＰＩエミュレータ１６に対するエミュレート要求の場合、エミュレータクライアント２５は、ステップＳ８７において、環境管理部１５を介してＷｅｂＡＰＩエミュレータ１６に対して、所望の動作に対応するエミュレート要求を行う。
【００６４】
最後に、エミュレータクライアント２５は、ステップＳ８８において、一定期間、エミュレータ提供装置１に対してログインされていないか、又は、エミュレータ提供装置１から利用終了通知を受信したか否かを判別する。いずれでもない場合、エミュレータクライアント２５は、ステップＳ８３に処理を戻し、クライアントアプリ２６からの動作要求に対応して、エミュレータ提供装置１にエミュレート要求等を行う。
【００６５】
これに対して、いずれかの場合、エミュレータクライアント２５は、図１２の処理を終了する。エミュレータ提供装置１のサービスの提供を再度希望する開発者は、ユーザ登録をし直し、再発行されたユーザＩＤ、企業ＩＤ及びプロダクトＩＤ等を用いてシステムにログインし、エミュレータの提供サービスを受ける。
【００６６】
以上の説明から明らかなように、第１の実施の形態のエミュレータ提供システムは、エミュレータ提供装置１とアプリケーション（クライアントアプリ２６）の開発者側の開発用ＰＣ２とを、インターネット６等の所定のネットワークを介して相互に接続する。開発用ＰＣ２から所望の動作内容が通知されると、エミュレータ提供装置１の環境管理部１５は、通知された動作内容に対応するエミュレータを生成する。開発用ＰＣ２のエミュレータクライアント２５は、インターネット６を介して、エミュレータ提供装置１で生成されたエミュレータを用い、クライアントアプリ２６の動作検証を行う。
【００６７】
このような実施の形態のエミュレータ提供システムは、開発者から通知された動作内容のエミュレータを、インターネット６上のエミュレータ提供装置１で提供する。このため、メーカ側でのみ可能な値の設定、様々なオプションの設定、様々な種類及びバージョンのファームウェアの実装等、開発者の細かな要望に沿ったエミュレータを提供できる。また、開発者側も、要望通りの動作を示すエミュレータでクライアントアプリ２６の開発を行うことができる。従って、十分なテストを行いながら、高品質なクライアントアプリ２６を開発できる。
【００６８】
また、システムの責任者側で管理するエミュレータ提供装置１上でエミュレータが提供されるため、タイミングに依存するエラー、及び、外部サービスがダウンしている場合等のシステム状態に依存するエラーも、それぞれ良好に再現してテスト可能とすることができる。このため、十分なテストを行いながら、高品質なクライアントアプリ２６を開発できる。
【００６９】
また、エミュレータ上で、クライアントアプリ２６の、開発者の要望に沿った細かな動作検証を行うことができるため、開発者側は、実機、オプション及びファームウェア等を購入する必要がなく、また、実機の運搬も受ける必要がない。このため、クライアントアプリ２６を安価に開発できる。また、メーカ側も、開発者に対する実機の運搬等に掛かるコストを削減できる。
【００７０】
また、生成したエミュレータは、開発者側には配布せず、システムの責任者側が管理するエミュレータ提供装置１上で提供する。このため、エミュレータの不正な改ざん等を防止し、システムの安全性を確保しつつ、エミュレータの提供を行うことができる。
【００７１】
（第２の実施の形態）
次に、第２の実施の形態のエミュレータ提供システムの説明をする。クライアントアプリ２６と各エミュレータ１６、１７等との間のイベント確認を、上述のポーリングによりインターネット６を介して行う場合、システムとしての処理速度の低下を招く。このため、第２の実施の形態のエミュレータ提供システムでは、開発用ＰＣ２側に設けられていたクライアントアプリ２６を、インターネット上のエミュレータ提供装置１側に記憶する。これにより、通信手順を簡素化すると共に、インターネット６を介して行う通信の通信時間を短縮化でき、システムの処理速度を向上させることができる。なお、上述の第１の実施の形態と以下に説明する第２の実施の形態とでは、この点のみが異なる。このため、以下、差異の説明のみ行い、重複説明は省略する。
【００７２】
図１３に、第２の実施の形態のエミュレータ提供システムのシステム構成図を示す。この図１３に示すように、第２の実施の形態のエミュレータ提供システムの場合、クライアントアプリ２６を備えたＷｅｂサーバ機能５１が、エミュレータ提供装置１側に記憶されている。
【００７３】
図１４は、第２の実施の形態のエミュレータ提供システムの開発用ＰＣ２のエミュレータクライアント２５の機能ブロック図を示している。また、図１４は、第２の実施の形態のエミュレータ提供システムのエミュレータ提供装置１の機能ブロック図を示している。この第２の実施の形態のおいては、開発用ＰＣ２側に設けられていたＷｅｂサーバ機能５１及びクライアントアプリ２６を、エミュレータ提供装置１側に設けている。そして、一例として実機エミュレータ１７でイベント確認及びイベント通知等のイベント処理を行う。このため、開発用ＰＣ２のエミュレータクライアント２５に設けられていたイベント処理部５８は、実機エミュレータ１７側に設けられている。
【００７４】
また、表示部４７に対する画面表示を行っていたＷｅｂサーバ機能５１が、エミュレータ提供装置１側に設けられたため、開発用ＰＣ２側のエミュレータクライアント２５にＵＩ部８１を設け、表示部４７に対する画面表示を行っている。
【００７５】
次に、図１５のシーケンス図に、第２の実施の形態のエミュレータ提供システムにおいて、開発者から要求された構成のエミュレータがエミュレータ提供装置１で形成されるまでの流れを示す。この図１５において、まず、開発者は、エミュレータクラインアント２５に対して、クライアントアプリ２６の開発を開始する際に、エミュレータ提供システムのシステム管理者側から発行された企業ＩＤ（企業識別番号）、開発者のユーザＩＤ及びパスワード入力し、ユーザ認証の設定要求を行う。ステップＳ９１では、エミュレータクライアント２５の設定入力部５７が、開発者から入力された企業ＩＤ及びユーザＩＤ等を取得する。
【００７６】
次に、開発者は、エミュレータクライアント２５に対して、開発者が希望するエミュレータの構成を指定する。具体的には、開発者は、例えば図７に示したように開発者が開発しているアプリケーションに対応する複合機等の機器の機体番号、機種ＩＤ、希望するオプション機能、設置場所、コメント、設定情報、複合機等の機器で動作しているＯＳ等のプログラムのプログラムＩＤ及びバージョン番号等を指定する。ステップＳ９２では、設定入力部５７が、指定された各種情報を含むエミュレータ構成情報を生成する。
【００７７】
次に、ステップＳ９３では、エミュレータクライアント２５の動作内容通知部６０が、インターネット６を介して、エミュレータ提供装置１のエミュレータ環境部１１の環境管理部１５にユーザ認証要求を行う。図４に示す環境管理部１５のユーザ認証部６５は、正規のユーザであることを認証すると、エミュレータクライアント２５に対して認証チケットを配布する。エミュレータクライアント２５の動作内容通知部６０は、ステップＳ９４において、配布された認証チケットを付加したうえで、上述のエミュレータ構成情報を環境管理部１５に送信する。動作内容通知部６０は、送信部の一例である。
【００７８】
エミュレータ提供装置１の環境管理部１５のユーザ認証部６５は、ステップＳ９５において、認証チケットに基づいてユーザ認証を行う。また、環境管理部１５の構成検証部６４は、ステップＳ９６において、エミュレータ構成情報で要求されるエミュレータの構成を検証する。具体的には、例えば開発者により指定されたバージョン番号のプログラム上でカードリーダを動作させることが可能であるか否か等の、開発者により指定された構成が正しいか否かの検証を行う。
【００７９】
次に、構成の検証を行った結果、要求されたエミュレータを形成可能であると判別した場合、構成検証部６４は、ステップＳ９７において、バックエンド１３のＷｅｂＡＰＩＤＢ２１〜機器情報ＤＢ２３から、エミュレータ構成情報で要求されるエミュレータの構成に必要な各種情報を取得する。
【００８０】
エミュレータ生成部６１は、ステップＳ９８においてエミュレータ環境生成を行い、例えばステップＳ９９において、バックエンド１３から取得された各種情報に基づいて、ＷｅｂＡＰＩエミュレータ１６を生成する。また、エミュレータ生成部６１は、ステップＳ１００において、実機エミュレータ１７を生成し、ステップＳ１０１において、実機エミュレータ１８を生成する。これにより、開発者から指定された、ベンダ専用のエミュレータを生成できる。なお、ＷｅｂＡＰＩエミュレータ１６及び２つの実機エミュレータ１７、１８を生成することは一例であり、一つの実機エミュレータのみを生成してもよい。
【００８１】
次に、エミュレータクライアント２５の設定入力部５７は、ステップＳ１０２において、開発者からの指示に従い、開発者により開発されたクライアントアプリ２６をエミュレータ提供装置１側にデプロイする。これにより、図１４に示すように、開発者により開発されたクライアントアプリ２６が、Ｗｅｂサーバ機能５１と共に、エミュレータ提供装置１側に記憶される。
【００８２】
なお、エミュレータクライアント２５の設定入力部５７は、クライアントアプリ２６のデプロイをエミュレータ提供装置１側に依頼する際、クライアントアプリ２６の開発を開始する際にシステム管理側から発行された開発プロダクトキーをクライアントアプリ２６に付加してデプロイの要求を行う。これにより、クライアントアプリ２６は、図１３に示すように、開発プロダクトキーにより、開発者用に生成された各エミュレータ１６〜１８に関連付けられ、各エミュレータ１６〜１８と共に、エミュレータ提供装置１に記憶される。
【００８３】
次に、図１６及び図１７のシーケンス図を用いて、第２の実施の形態のエミュレータ提供システムにおける、各エミュレータに対する動作設定及びイベント処理の流れを説明する。図１６及び図１７は、一連のシーケンス図となっており、図１６は、主に、エミュレータに対する動作設定の流れを示している。また、図１７は、主に、動作設定に対応するエミュレータのイベント処理の流れを示している。
【００８４】
まず、開発者は、クライアントアプリ２６の動作を検証するために、エミュレータに対して希望する動作を示す動作設定情報を開発用ＰＣ２の操作部４６を操作して入力する。開発用ＰＣ２のエミュレータクライアント２５は、図１６のシーケンス図のステップＳ１１１において、開発者から入力された動作設定情報（図１１参照）を取得する。
【００８５】
エミュレータクライアント２５の設定入力部５７は、このような動作設定情報が開発者から入力されると、ステップＳ１１２において、エミュレータ提供装置１の環境管理部１５に対して上述と同様にユーザ認証要求を行う。正規のユーザとして認証されると、エミュレータクライアント２５の動作内容通知部６０は、ステップＳ１１３において、環境管理部１５に対して、開発者から入力されたエミュレータの動作設定情報を送信する。
【００８６】
環境管理部１５のシナリオ実行設定部６３は、エミュレータクライアント２５から動作設定情報を取得すると、例えばステップＳ１１４において、ＷｅｂＡＰＩエミュレータ１６に、開発者から指定された動作の動作設定を行う。同様に、シナリオ実行設定部６３は、ステップＳ１１５及びステップＳ１１６において、各実機エミュレータ１７、１８に、開発者から指定された動作の動作設定を行う。このように各エミュレータ１６〜１８に対する動作設定が完了すると、環境管理部１５は、ステップＳ１１６ａにおいて、各エミュレータ１６〜１８の操作部画面情報をエミュレータクライアント２５に送信する。
【００８７】
各エミュレータ１６〜１８の操作部画面情報を取得すると、エミュレータクライアント２５のＵＩ部８１は、表示部４７に、エミュレータの選択画面を表示する。この例の場合、エミュレータクライアント２５は、ＷｅｂＡＰＩエミュレータ１６及び実機エミュレータ１７、１８の選択画面を表示する。開発者は、クライアントアプリ２６の動作検証を行うエミュレータを選択操作する。エミュレータクライアント２５のＵＩ部８１は、ステップＳ１１７において、開発者により選択されたエミュレータを認識し、ステップＳ１１８において、環境管理部１５に開発者により選択されたエミュレータの操作部画面の取得要求を行う。環境管理部１５は、ステップＳ１１９において、開発者により選択されたエミュレータ（この例の場合、実機エミュレータ１７）から操作部画面を取得し、エミュレータクライアント２５に送信する。エミュレータクライアント２５のＵＩ部８１は、このようにして取得した実機エミュレータ１７の操作部画面を表示部４７に表示する。
【００８８】
次に、開発者は、開発者が開発しているアプリケーションであるクライアントアプリ２６に対するログイン要求を行う。第２の実施の形態のエミュレータ提供システムの場合、上述のようにアプリケーション２６がエミュレータ提供装置１側に記憶されている。このため、エミュレータクライアント２５のＵＩ部８１は、ステップＳ１２０で、クライアントアプリ２６に対するログイン要求を取得すると、ステップＳ１２１において、環境管理部１５に対して、クライアントアプリ２６のログイン画面の取得を示す画面操作イベント通知を行う。
【００８９】
上述のように、第２の実施の形態のエミュレータ提供システムの場合、実機エミュレータ１７に設けられたイベント処理部５８がイベント処理を行うようになっている。このため、画面操作イベント通知を取得した環境管理部１５は、ステップＳ１２２において、実機エミュレータ１７のイベント処理部５８に対して、クライアントアプリ２６のログイン画面の取得要求を行う。ログイン画面の取得要求を取得した実機エミュレータ１７のイベント処理部５８は、ステップＳ１２３において、エミュレータ提供装置１にデプロイされているクライアントアプリ２６から、クライアントアプリ２６のログイン画面を取得する。そして、実機エミュレータ１７のイベント処理部５８は、取得したクライアントアプリ２６のログイン画面を、環境管理部１５を介して開発用ＰＣ２のエミュレータクライアント２５に送信する。エミュレータクライアント２５のＵＩ部８１は、実機エミュレータ１７から取得したクライアントアプリ２６のログイン画面を、表示部４７に表示する。
【００９０】
次に、開発者は、クライアントアプリ２６のログイン画面に対してユーザＩＤ及びパスワード等の認証情報を入力する。エミュレータクライアント２５のＵＩ部８１は、ステップＳ１２４において、ユーザにより入力された認証情報を取得し、ステップＳ１２５において、環境管理部１５に送信する。認証情報を取得した環境管理部１５は、ステップＳ１２６において、実機エミュレータ１７のイベント処理部５８に認証情報を送信し、ユーザ認証要求を行う。実機エミュレータ１７のイベント処理部５８は、ステップＳ１２７ａにおいて、認証情報をクライアントアプリ２６に送信し、ユーザ認証要求を行う。
【００９１】
クライアントアプリ２６は、受信した認証情報に基づいて、クライアントアプリ２６のユーザ認証を行い、ステップＳ１２７ｂにおいて、ユーザ認証結果を、実機エミュレータ１７のイベント処理部５８に送信する。イベント処理部５８は、ステップＳ１２８において、クライアントアプリ２６からのユーザ認証結果を環境管理部１５に通知する。
【００９２】
ここで、一例として、エミュレータ提供装置１にデプロイされたクライアントアプリ２６は、用紙をスキャンすることで読み取った画像等の読み取り情報を、開発者が指定した保管先に保管するアプリケーションとする。クライアントアプリ２６により正規のユーザであることが認証された場合、実機エミュレータ１７のイベント処理部５８は、ステップＳ１２９において、ＷｅｂＡＰＩエミュレータ１６からスキャン設定画面を取得し、環境管理部１５を介してエミュレータクライアント２５に送信する。エミュレータクライアント２５のＵＩ部８１は、取得したスキャン設定画面を表示部４７に表示する。
【００９３】
次に、開発者は、表示部４７に表示されたスキャン設定画面を介して、スキャンした画像等を保管する保管先を指定する。一例として、保管先として、ＷｅｂＡＰＩエミュレータ１６が指定されたとする。エミュレータクライアント２５のＵＩ部８１は、ステップＳ１３０において、この保管先の選択要求を取得する。エミュレータクライアント２５の動作内容通知部６０は、ステップＳ１３１において、実機エミュレータ１７のイベント処理部５８に対して、開発者により選択された保管先（ＷｅｂＡＰＩエミュレータ１６）を通知する。実機エミュレータ１７のイベント処理部５８は、ステップＳ１３２において、ＷｅｂＡＰＩエミュレータ１６に対して、開発者により保管先として選択された選択された旨の通知を行う。
【００９４】
このように保管先を指定すると、開発者は、スキャン実行開始指示を行う。図１７のステップＳ１３３において、開発者からのスキャン実行開始指示を取得すると、エミュレータクライアント２５の動作内容通知部６０は、スキャンの実行中であることを示す「処理中」の文字を表示部４７に表示する。また、ＵＩ部８１は、ステップＳ１３５において、スキャン枚数及びスキャン開始位置等を初期化するスキャン初期化動作を行う。また、ＵＩ部８１は、ステップＳ１３４において、環境管理部１５に対して、スキャン実行開始を指定するイベント通知を行う。環境管理部１５は、ステップＳ１３６において、実機エミュレータ１７に対して、スキャン実行開始通知を行う。
【００９５】
実機エミュレータ１７のイベント処理部５８は、スキャン実行開始通知を取得すると、ステップＳ１３７において、スキャン枚数及びスキャン開始位置等を初期化するスキャン初期化のエミュレート動作を行う。また、イベント処理部５８は、ステップＳ１３８において、スキャン開始のエミュレート動作を行う。
【００９６】
次に、ステップＳ１３９及びステップＳ１４０では、実機エミュレータ１７のイベント処理部５８が、スキャンイベントの確認を行う。第２の実施の形態のエミュレータ提供システムの場合、イベント処理部５８が実機エミュレータ１７内に設けられているため、実機エミュレータ１７内において、イベント処理部５８がスキャンイベントの確認を行うことができる。このため、インターネット６を介して上述のポーリング動作によるイベント確認によりシステム動作が遅延する不都合を防止し、システムの処理速度を向上させることができる。
【００９７】
次に、実機エミュレータ１７に対して、原稿読み取り中に原稿載置台のカバーが開操作されるエラーが発生する内容の動作が設定されていたとする。そして、例えばステップＳ１４１において、実機エミュレータ１７のシナリオ実行部５４で、このエラー発生のシナリオが実行され、イベント処理部５８に通知されたとする。イベント処理部５８は、ステップＳ１４２において、クライアントアプリ２６にエラー発生のイベント通知を行う。また、イベント処理部５８は、ステップＳ１４３及びステップＳ１４４において、環境管理部１５を介して、エミュレータクライアント２５に対して、エラー発生による画面更新通知を送信する。エミュレータクライアント２５のＵＩ部８１は、エラー発生による画面更新通知を受信すると、表示部４７に対してエラー表示を行う。
【００９８】
なお、このようなエラーイベントが設定されていない場合、スキャンが終了したタイミングで、実機エミュレータ１７からエミュレータクライアント２５に対して、イベント終了が通知される。これにより、エミュレータクライアント２５のＵＩ部８１は、「スキャン終了」の文字を表示部４７に表示する。
【００９９】
次に、この例の場合、スキャンされたファイルをＷｅｂＡＰＩエミュレータ１６にアップロードする設定となっている。このため、エミュレータクライアント２５のＵＩ部８１は、「スキャン終了」の文字を表示してから所定時間経過後に、表示部４７に表示する文字を「ファイルアップロード中」の文字に切り替える。
【０１００】
また、ステップＳ１４５〜ステップＳ１５３は、スキャンされたファイルをアップロードしてイベント確認する流れを示している。すなわち、スキャンのイベントが終了すると、実機エミュレータ１７のエミュレータ５３は、ステップＳ１４５及びステップＳ１４６において、ＷｅｂＡＰＩエミュレータ１６に対してファイルをアップロードするエミュレート動作を行う。イベント処理部５８は、ステップＳ１４７で、このファイルアップロードのイベント確認を行う。
【０１０１】
次に、ＷｅｂＡＰＩエミュレータ１６に対してファイルをアップロードするエミュレート動作が終了すると、ステップＳ１４８、ステップＳ１４９及びステップＳ１５０において、実機エミュレータ１７、クライアントアプリ２６及びＷｅｂＡＰＩエミュレータ１６でジョブ登録が行われる。このジョブ登録後に、実機エミュレータ１７のイベント処理部５８は、ステップＳ１５１及びステップＳ１５２において、ファイルアップロードの終了通知に対応する画面更新通知を、環境管理部１５を介してエミュレータクライアント２５に送信する。エミュレータクライアント２５のＵＩ部８１は、この画面更新通知を受信すると、表示部４７に対して、「ファイルアップロード終了」の文字を表示する。
【０１０２】
なお、外部ストレージサービスに対してスキャンしたファイルをアップロードする動作が設定されている場合、ＷｅｂＡＰＩエミュレータ１６は、ステップＳ１５３において、この外部ストレージサービスに対してスキャンしたファイルをアップロードするエミュレート動作を行う。外部ストレージサービスは、例えば図１に示す外部サービス情報ＤＢ２２を参照して設定される。
【０１０３】
以上の説明から明らかなように、第２の実施の形態のエミュレータ提供システムは、開発用ＰＣ２側に設けられていたクライアントアプリ２６を、インターネット上のエミュレータ提供装置１側に記憶する。これにより、通信手順を簡素化すると共に、インターネット６を介して行う通信の通信時間を短縮化でき、システムの処理速度を向上させることができる他、上述の第１の実施の形態と同じ効果を得ることができる。
【０１０４】
上述の各実施の形態は、例として提示したものであり、本発明の範囲を限定することは意図していない。これらの新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことも可能である。例えば、上述の各実施の形態の説明において、「エミュレータ」という用語を用いた。しかし、エミュレータと同様の処理を実行する機器または機能に対して、「シミュレータ」等の他の用語が用いられる場合がある。本発明は、このような用語（称呼）にかかわらず、アプリケーションなどのプログラムの動作検証などを行う全ての機器、または、機能等に適用可能である。そして、いずれに適用した場合でも、上述と同じ効果を得ることができる。実施の形態及び実施の形態の変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０５】
１  エミュレータ提供装置
２  開発用ＰＣ
３  開発用ＰＣ
４  イントラネット
５  イントラネット
６  インターネット
１１  エミュレータ環境部
１２  ユーザ認証部
１３  バックエンド
１５  環境管理部
１６  ＷｅｂＡＰＩエミュレータ
１７  実機エミュレータ
１８  実機エミュレータ
１９  ＷｅｂＡＰＩエミュレータ
２０  実機エミュレータ
２１  ＷｅｂＡＰＩ情報ＤＢ
２２  外部サービス情報ＤＢ
２３  機器情報ＤＢ
２５  エミュレータクライアント
２６  クライアントアプリ
５１  Ｗｅｂサーバ機能
５３  エミュレータ
５４  シナリオ実行部
５５  エミュレータ
５６  シナリオ実行部
５７  設定入力部
５８  イベント処理部
５９  実機操作部エミュレータ
６０  動作内容通知部
６１  エミュレータ生成部
６２  イベント処理部
６３  シナリオ実行設定部
６４  構成検証部
６５  ユーザ認証部
８１  ＵＩ部
８２  ＵＩ更新通知部
８４  機器ブラウザエミュレータ
【先行技術文献】
【特許文献】
【０１０６】
【特許文献１】特開２００４−１８５５９４号公報
【図１】
2016177696.tif 000003
【図２】
2016177696.tif 000004
【図３】
2016177696.tif 000005
【図４】
2016177696.tif 000006
【図５】
2016177696.tif 000007
【図６】
2016177696.tif 000008
【図７】
2016177696.tif 000009
【図８】
2016177696.tif 000010
【図９】
2016177696.tif 000011
【図１０】
2016177696.tif 000012
【図１１】
2016177696.tif 000013
【図１２】
2016177696.tif 000014
【図１３】
2016177696.tif 000015
【図１４】
2016177696.tif 000016
【図１５】
2016177696.tif 000017
【図１６】
2016177696.tif 000018
【図１７】
2016177696.tif 000019