(57)【要約】【課題】模倣する対象の機器における各種の状態を容易に再現可能とすること。【解決手段】情報処理装置は、機器に所定の処理を実行させるプログラムから要求を受け付ける要求受付部と、前記要求に応じて前記機器によって実行される処理を模倣する模倣部と、前記模倣部の状態の変更指示を、ユーザから受け付ける指示受付部と、前記変更指示に応じた状態の変更を、前記模倣部に実行させる状態変更部と、前記要求受付部が受け付ける要求の発生、又は前記指示受付部が受け付ける変更指示の発生に応じ、前記要求を示す情報又は前記変更指示を示す情報を、第一の記憶部に記憶する記憶処理部とを有し、前記模倣部は、前記状態変更部によって変更された状態において前記機器が実行する処理を模倣する。【選択図】図２
2016066339.tif 000002
【特許請求の範囲】
【請求項１】
機器に所定の処理を実行させるプログラムから要求を受け付ける要求受付部と、
前記要求に応じて前記機器によって実行される処理を模倣する模倣部と、
前記模倣部の状態の変更指示を、ユーザから受け付ける指示受付部と、
前記変更指示に応じた状態の変更を、前記模倣部に実行させる状態変更部と、
前記要求受付部が受け付ける要求の発生、又は前記指示受付部が受け付ける変更指示の発生に応じ、前記要求を示す情報又は前記変更指示を示す情報を、第一の記憶部に記憶する記憶処理部とを有し、
前記模倣部は、前記状態変更部によって変更された状態において前記機器が実行する処理を模倣することを特徴とする情報処理装置。
【請求項２】
前記第一の記憶部に記憶されている情報が示す前記要求の前記要求受付部への入力、又は前記第一の記憶部に記憶されている情報が示す前記変更指示の前記指示受付部への入力を再現する再現部、
を有することを特徴とする請求項１記載の情報処理装置。
【請求項３】
前記記憶処理部は、前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象を示す情報と、当該事象の発生に応じて前記指示受付部が受け付けた前記模倣部の状態の変更指示を示す情報とを対応付けて前記第一の記憶部に記憶し、
前記再現部は、前記第一の記憶部に記憶されている情報が示す前記要求の前記要求受付部への入力、又は前記第一の記憶部に記憶されている情報が示す前記変更指示の前記指示受付部への入力の再現に応じて前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象に応じ、当該事象を示す情報に対応付けられて前記第一の記憶部に記憶されている情報が示す前記変更指示を、前記指示受付部に入力する、
ことを特徴とする請求項２記載の情報処理装置。
【請求項４】
前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象に関する情報を、前記状態変更部に配信する配信部を有し、
前記状態変更部は、前記配信部から配信される情報に基づいて特定されるタイミングで、前記変更指示に応じた状態の変更を、前記模倣部に実行させる請求項１乃至３いずれか一項記載の情報処理装置。
【請求項５】
前記配信部は、前記状態変更部に対して配信対象とされる事象を示す情報を記憶する第二の記憶部を参照して、前記模倣部が前記要求に応じて前記機器によって実行される処理を模倣する過程において発生する事象のうち、特定の事象に関する情報を前記状態変更部に配信することを特徴とする請求項４記載の情報処理装置。
【請求項６】
前記模倣部は、当該模倣部を構成する複数の構成部を含み、
前記配信部は、前記要求受付部が受け付けた要求を、前記各構成部に対して配信対象とされる要求を示す情報を記憶する第二の記憶部を参照して特定される構成部に、配信することを特徴とする請求項４又は５記載の情報処理装置。
【請求項７】
前記配信部によって配信対象とされた事象に関する情報の履歴が、前記履歴に関する照合対象として予め作成されている情報に一致するか否かを判定する判定部を有することを特徴とする請求項４乃至６いずれか一項記載の情報処理装置。
【請求項８】
前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象に関する情報をユーザに通知するユーザ通知部を有することを特徴とする請求項１乃至７いずれか一項記載の情報処理装置。
【請求項９】
１以上のコンピュータを含む情報処理システムであって、
機器に所定の処理を実行させるプログラムから要求を受け付ける要求受付部と、
前記要求に応じて前記機器によって実行される処理を模倣する模倣部と、
前記模倣部の状態の変更指示を、ユーザから受け付ける指示受付部と、
前記変更指示に応じた状態の変更を、前記模倣部に実行させる状態変更部と、
前記要求受付部が受け付ける要求の発生、又は前記指示受付部が受け付ける変更指示の発生に応じ、前記要求を示す情報又は前記変更指示を示す情報を、第一の記憶部に記憶する記憶処理部とを有し、
前記模倣部は、前記状態変更部によって変更された状態において前記機器が実行する処理を模倣することを特徴とする情報処理システム。
【請求項１０】
コンピュータが実行する情報処理方法であって、
前記コンピュータの要求受付部が、機器に所定の処理を実行させるプログラムから要求を受け付ける手順と、
前記コンピュータの模倣部が、前記要求に応じて前記機器によって実行される処理を模倣する手順と、
前記コンピュータの指示受付部が、前記模倣部の状態の変更指示を、ユーザから受け付ける手順と、
前記コンピュータの状態変更部が、前記変更指示に応じた状態の変更を、前記模倣部に実行させる手順と、
前記コンピュータの記憶処理部が、前記要求受付部が受け付ける要求の発生、又は前記指示受付部が受け付ける変更指示の発生に応じ、前記要求を示す情報又は前記変更指示を示す情報を、第一の記憶部に記憶する手順とを有し、
前記模倣部は、前記状態変更部によって変更された状態において前記機器が実行する処理を模倣することを特徴とする情報処理方法。
【請求項１１】
前記コンピュータの再現部が、前記第一の記憶部に記憶されている情報が示す前記要求の前記要求受付部への入力、又は前記第一の記憶部に記憶されている情報が示す前記変更指示の前記指示受付部への入力を再現する手順を、
を有することを特徴とする請求項１０記載の情報処理方法。
【請求項１２】
前記記憶処理部が、前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象を示す情報と、当該事象の発生に応じて前記指示受付部が受け付けた前記模倣部の状態の変更指示を示す情報とを対応付けて前記第一の記憶部に記憶する手順を実行し、
前記再現部が、前記第一の記憶部に記憶されている情報が示す前記要求の前記要求受付部への入力、又は前記第一の記憶部に記憶されている情報が示す前記変更指示の前記指示受付部への入力の再現に応じて前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象に応じ、当該事象を示す情報に対応付けられて前記第一の記憶部に記憶されている情報が示す前記変更指示を、前記指示受付部に入力する手順を実行する、
ことを特徴とする請求項１１記載の情報処理方法。
【請求項１３】
前記コンピュータの配信部が、前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象に関する情報を、前記状態変更部に配信する手順を有し、
前記状態変更部が、前記配信部から配信される情報に基づいて特定されるタイミングで、前記変更指示に応じた状態の変更を、前記模倣部に実行させる請求項１０乃至１２いずれか一項記載の情報処理方法。
【請求項１４】
前記配信する手順は、前記状態変更部に対して配信対象とされる事象を示す情報を記憶する記憶部を参照して、前記模倣部が前記要求に応じて前記機器によって実行される処理を模倣する過程において発生する事象のうち、特定の事象に関する情報を前記状態変更部に配信することを特徴とする請求項１３記載の情報処理方法。
【請求項１５】
前記模倣部は、当該模倣部を構成する複数の構成部を含み、
前記配信する手順は、前記要求受付部が受け付けた要求を、前記各構成部に対して配信対象とされる要求を示す情報を記憶する記憶部を参照して特定される構成部に、配信することを特徴とする請求項１３又は１４記載の情報処理方法。
【請求項１６】
前記配信部によって配信対象とされた事象に関する情報の履歴が、前記履歴に関する照合対象として予め作成されている情報に一致するか否かを判定する判定手順を有することを特徴とする請求項１３乃至１５いずれか一項記載の情報処理方法。
【請求項１７】
前記コンピュータが有するユーザ通知部が、前記模倣部が前記機器によって実行される処理を模倣する過程において発生する事象に関する情報をユーザに通知する手順を有することを特徴とする請求項１０乃至１６いずれか一項記載の情報処理方法。
【請求項１８】
機器に所定の処理を実行させるプログラムから要求を受け付ける要求受付部と、
前記要求に応じて前記機器によって実行される処理を模倣する模倣部と、
前記模倣部の状態の変更指示を、ユーザから受け付ける指示受付部と、
前記変更指示に応じた状態の変更を、前記模倣部に実行させる状態変更部と、
前記要求受付部が受け付ける要求の発生、又は前記指示受付部が受け付ける変更指示の発生に応じ、前記要求を示す情報又は前記変更指示を示す情報を、第一の記憶部に記憶する記憶処理部としてコンピュータを機能させ、
前記模倣部は、前記状態変更部によって変更された状態において前記機器が実行する処理を模倣することを特徴とする情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、情報処理方法、及び情報処理プログラムに関する。
【背景技術】
【０００２】
複合機等の画像形成装置をはじめとする様々な機器では、アプリケーションプラットフォームを有し、当該アプリケーションプラットフォームが提供するＡＰＩ（Application Program Interface）を利用したアプリケーションプログラム（以下、「アプリ」という。）の実装が可能とされているものがある。斯かるＡＰＩが公開されることにより、機器を製造する企業のみならず、当該企業外のサードベンダ等によっても、アプリの開発を行うことが可能となる。
【０００３】
開発中のアプリの動作確認等は、機器等を用いて行われるのが望ましい。しかし、開発者ごとに機器を用意するのは経済的ではない。また、一台の機器を複数の開発者で利用するのは効率的ではない。そこで、機器のハードウェアや、アプリケーションプラットフォーム等の動作をエミュレート又はシミュレート等（以下、「エミュレート」で統一する。）するソフトウェア（以下「エミュレータ」という。）が利用されている。例えば、エミュレータを、各開発者のＰＣ（Personal Computer）等にインストールすることで、各開発者は、開発中のアプリの動作確認等を効率的に行うことができる。また、新機種の機器のエミュレータを用意することで、機器自体の開発と、アプリの開発とを並行して行うことも可能となる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のエミュレータでは、エミュレート対象の機器が有する各種の状態を、ユーザの任意のタイミングで変更するのは困難であった。したがって、例えば、機器においてジャムが発生している状態、トナー切れの状態、又は用紙切れの状態等、各種の状態におけるアプリの動作を確認するのは困難であった。斯かる問題は、画像形成装置以外の機器においても同様であると考えられる。
【０００５】
本発明は、上記の点に鑑みてなされたものであって、模倣する対象の機器における各種の状態を容易に再現可能とすることを目的とする。
【課題を解決するための手段】
【０００６】
そこで上記課題を解決するため、情報処理装置は、機器に所定の処理を実行させるプログラムから要求を受け付ける要求受付部と、前記要求に応じて前記機器によって実行される処理を模倣する模倣部と、前記模倣部の状態の変更指示を、ユーザから受け付ける指示受付部と、前記変更指示に応じた状態の変更を、前記模倣部に実行させる状態変更部と、前記要求受付部が受け付ける要求の発生、又は前記指示受付部が受け付ける変更指示の発生に応じ、前記要求を示す情報又は前記変更指示を示す情報を、第一の記憶部に記憶する記憶処理部とを有し、前記模倣部は、前記状態変更部によって変更された状態において前記機器が実行する処理を模倣する。
【発明の効果】
【０００７】
模倣する対象の機器における各種の状態を容易に再現可能とすることができる。
【図面の簡単な説明】
【０００８】
【図１】第一の実施の形態における情報処理装置のハードウェア構成例を示す図である。
【図２】第一の実施の形態における情報処理装置の機能構成例を示す図である。
【図３】各モジュール間においてイベントが直接的に通知される様子を示す図である。
【図４】イベント配信情報の登録処理の処理手順の一例を説明するためのシーケンス図である。
【図５】イベント配信情報記憶部の構成例を示す図である。
【図６】イベント配信処理の処理手順の一例を説明するためのフローチャートである。
【図７】第一の実施の形態において評価シナリオの生成のためのアプリの動作確認時に実行される処理手順の一例を説明するためのシーケンス図である。
【図８】イベント配信情報記憶部の記憶内容の変化例を示す図である。
【図９】評価シナリオの一例を示す図である。
【図１０】第一の実施の形態において評価シナリオの実行時に実行される処理手順の一例を説明するためのシーケンス図である。
【図１１】第二の実施の形態における情報処理装置の機能構成例を示す図である。
【図１２】第二の実施の形態において評価シナリオの実行時に実行される処理手順の一例を説明するためのシーケンス図である。
【図１３】受信履歴記憶部に記憶される情報の一例を示す図である。
【発明を実施するための形態】
【０００９】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、第一の実施の形態における情報処理装置のハードウェア構成例を示す図である。図１の情報処理装置１０は、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、インタフェース装置１０５、表示装置１０６、及び入力装置１０７等を有する。
【００１０】
情報処理装置１０での処理を実現するプログラムは、ＣＤ−ＲＯＭ等の記録媒体１０１によって提供される。プログラムを記憶した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００１１】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従って情報処理装置１０に係る機能を実現する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。表示装置１０６はプログラムによるＧＵＩ（Graphical User Interface）等を表示する。入力装置１０７はキーボード及びマウス等で構成され、様々な操作指示を入力させるために用いられる。
【００１２】
なお、情報処理装置１０は、図１に示される構成を有する１以上の集合であるコンピュータシステムであってもよい。
【００１３】
図２は、第一の実施の形態における情報処理装置の機能構成例を示す図である。図２において、情報処理装置１０は、エミュレータ部１１を有する。また、情報処理装置１０には、１以上のアプリ１２がインストールされる。アプリ１２は、エミュレータ部１１がエミュレートする画像形成装置（以下、「対象機器」という。）が有するアプリケーションプラットフォームにおいて動作可能なアプリケーションプログラムである。すなわち、エミュレータ部１１は、対象機器におけるアプリケーションプラットフォームや、対象機器のハードウェア等の動作をエミュレート（模倣）する。したがって、エミュレータ部１１は、アプリ１２に対して、対象機器と同様の動作環境を提供することができる。なお、エミュレータ部１１は、情報処理装置１０にインストールされたプログラムが、ＣＰＵ１０４に実行させる処理により実現される。なお、本実施の形態において、エミュレート又は模倣には、シミュレートの意味も包含される。
【００１４】
図２において、エミュレータ部１１は、リクエスト管理部１１１、レスポンス生成部１１２、ディスパッチ部１１３、ジョブ管理部１１４、サービス管理部１１５、システム管理部１１６、状態変更部１１７、状態監視部１１８、ＵＩ部１１９、及び評価シナリオ処理部１３０等を含む。エミュレータ部１１は、また、イベント配信情報記憶部１２０及び評価シナリオ記憶部１４０等を利用する。これら各記憶部は、例えば、補助記憶装置１０２又は情報処理装置１０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【００１５】
リクエスト管理部１１１は、対象機器のアプリケーションプラットフォームが備えるＡＰＩ（Application Program Interface）と同じＡＰＩを有し、当該ＡＰＩを介してアプリ１２からの要求を受け付ける。当該ＡＰＩは、関数又はメソッドであってもよいし、ＷｅｂＡＰＩであってもよい。ここで、ＷｅｂＡＰＩとは、ＨＴＴＰ（HyperText Transfer Protocol）通信を利用したＡＰＩをいう。但し、ＨＴＴＰ以外の通信プロトコルが利用されてもよい。
【００１６】
レスポンス生成部１１２は、アプリ１２からの要求に対する応答を生成するための処理を実行する。レスポンス生成部１１２は、また、アプリ１２からの要求を、イベントとしてディスパッチ部１１３に通知する。
【００１７】
ディスパッチ部１１３は、イベント配信情報記憶部１２０を参照して、レスポンス生成部１１２、ジョブ管理部１１４、サービス管理部１１５、システム管理部１１６、状態変更部１１７、又は状態監視部１１８から通知される各種のイベントの配信又は通知の仲介を行う。イベントとは、エミュレータ部１１が対象機器の動作を模倣する過程において発生する事象に関する情報、又は当該事象の発生を示す情報である。イベント配信情報記憶部１２０には、イベントの種類ごとに、当該イベントの配信先（通知先）を示す情報（以下、「イベント配信情報」という。）が記憶されている。又は、イベント配信情報は、各部に対して配信対象とされるイベントを示す情報であるともいえる。ディスパッチ部１１３によって、イベントの配信が仲介されることにより、各部（各モジュール）が、イベントの配信先を意識する必要性を低減させることができる。その結果、或るイベントの配信先を変更する必要が生じた場合、当該イベントの通知元のモジュール等を改変する必要性を低減させることができる。
【００１８】
ジョブ管理部１１４は、対象機器における、ジョブの実行等の管理を模倣する。ジョブ管理部１１４は、ジョブの種類ごとに、当該種類に係るジョブを管理するモジュールを含む。例えば、対象機器において、コピージョブ、スキャンジョブ、ＦＡＸ送信ジョブ、及び印刷ジョブ等を実行可能な場合、ジョブ管理部１１４は、コピージョブ、スキャンジョブ、ＦＡＸ送信ジョブ、及び印刷ジョブごとに、モジュールを含む。ジョブ管理部１１４は、ジョブの状態の変化に関するイベントを通知する。
【００１９】
サービス管理部１１５は、ジョブの実行に応じて利用される、対象機器のハードウェア（エンジン部分）の制御機構を模倣する。当該制御機構は、例えば、ハードウェアに対応するドライバプログラムによって実現されてもよい。サービス管理部１１５は、例えば、対象機器のハードウェアの状態の変化に関するイベントを通知する。斯かる状態の変化としては、トナー切れ、ジャムの発生、スキャンの開始若しくは終了、印刷の開始若しくは終了等が有る。
【００２０】
システム管理部１１６は、ジョブの実行とは独立して変化する、対象機器の状態の管理を模倣する。斯かる状態の一例として、ユーザのログイン状態、省エネ状態等が挙げられる。システム管理部１１６は、このような状態の変化に関するイベントを通知する。
【００２１】
状態変更部１１７は、ＵＩ部１１９からの要求に応じ、ユーザから指定されたタイミングで、エミュレータ部１１の状態を強制的に変更させる。例えば、状態変更部１１７は、トナー切れ、ジャム等を強制的に発生させる。また、状態変更部１１７は、仮想的な給紙トレイにおける用紙枚数を強制的に設定したり、ログインユーザの情報を強制的に設定したりすることもできる。エミュレータ部１１は、状態変更部１１７によって変更された状態において対象機器が実行する処理を模倣する。
【００２２】
状態監視部１１８は、エミュレータ部１１において発生しているイベントを、ＵＩ部１１９に通知する。
【００２３】
ＵＩ部１１９は、ユーザインタフェースを提供する。例えば、ＵＩ部１１９は、表示装置１０６に画面を表示させ、当該画面を介して、エミュレータ部１１の状態の変更指示の入力を受け付ける。ＵＩ部１１９は、また、当該画面を介して、エミュレータ部１１において発生しているイベントを、ユーザに通知する。
【００２４】
評価シナリオ処理部１３０は、評価シナリオの生成や、評価シナリオの実行等を行う。評価シナリオとは、ＵＩ部１１９が提供する画面を介して入力されたユーザによる指示（エミュレータ部１１の状態の変更指示等）を示すイベント、又はエミュレータ部１１が対象機器の動作をエミュレートする過程において発生するイベント等が時系列に記録されたデータである。例えば、評価シナリオの生成の開始指示から終了指示までの間において発生したイベントに関する情報が、一つの評価シナリオに記録される。なお、評価シナリオの実行とは、評価シナリオに記録されたイベントを再現することをいう。
【００２５】
図２において、評価シナリオ処理部１３０は、イベント検知部１３１、シナリオ生成部１３２、シナリオ実行部１３３、及び擬似イベント生成部１３４等を含む。
【００２６】
イベント検知部１３１は、アプリ１２に関して発生するイベントを検知し、当該イベントをシナリオ生成部１３２に通知する。アプリ１２に関して発生するイベントの一例として、アプリ１２による、リクエスト管理部１１１が有するＡＰＩの呼び出しが挙げられる。当該ＡＰＩの呼び出しは、例えば、情報処理装置１０のＯＳ（Operating System）を介して検知することができる。また、アプリ１２に対する実行指示（例えば、アプリ１２のアイコンの押下）や、アプリ１２に対する設定情報の設定等）が、アプリ１２に関して発生するイベントに含まれてもよい。
【００２７】
シナリオ生成部１３２は、イベント検知部１３１から通知されるイベント、ＵＩ部１１９から通知される、ＵＩ部１１９が提供する画面を介して入力されたユーザによる指示（エミュレータ部１１の状態の変更指示等）を示すイベント、又はエミュレータ部１１が対象機器の動作をエミュレートする過程において発生するイベント等に基づいて、評価シナリオを生成する。生成された評価シナリオは、評価シナリオ記憶部１４０に記憶される。
【００２８】
シナリオ実行部１３３は、評価シナリオ記憶部１４０に記憶されている１以上の評価シナリオの中から実行対象として選択された評価シナリオに記録されている情報に基づいて、当該情報が示すイベントを再現又は生成する。当該情報が示すイベントのうち、アプリ１２によるＡＰＩの呼び出しに関するイベントは、擬似イベント生成部１３４によって再現又は生成される。
【００２９】
なお、評価シナリオ処理部１３０は、エミュレータ部１１に含まれなくてもよい。すなわち、評価シナリオ処理部１３０は、エミュレータ部１１からは独立した存在であってもよい。
【００３０】
ところで、ジョブ管理部１１４、サービス管理部１１５、及びシステム管理部１１６は、対象機器において、高いリアルタイム性が要求される部分である。したがって、これら各モジュールの特定のイベントのやり取りについては、直接的に行われてもよい。
【００３１】
図３は、各モジュール間においてイベントが直接的に通知される様子を示す図である。例えば、対象機器においてリアルタイム性が要求されるイベントは、図３に示されるように、ディスパッチ部１１３を介さずに、直接的に行われてもよい。そうすることにより、エミュレータ部１１の動作を、対象機器により近いものとすることができる。なお、図３において、各矢印は、イベントを示す。
【００３２】
以下、情報処理装置１０が実行する処理手順について説明する。図４は、イベント配信情報の登録処理の処理手順の一例を説明するためのシーケンス図である。図４における各モジュールは、ジョブ管理部１１４、サービス管理部１１５、システム管理部１１６、及びレスポンス生成部１１２である。例えば、図４の処理は、各モジュールの起動時に実行される。
【００３３】
ステップＳ１０１において、各モジュールは、当該モジュールの識別情報と、当該モジュールに配信されるべきイベントの識別情報（以下、「イベント名」という。）とを含むイベント配信情報の登録要求を、ディスパッチ部１１３に送信する。ディスパッチ部１１３は、当該要求に含まれているイベント配信情報を、イベント配信情報記憶部１２０に登録（記憶）する（Ｓ１０２）。
【００３４】
図５は、イベント配信情報記憶部の構成例を示す図である。図５において、イベント配信情報記憶部１２０の各レコードは、イベント名、配信先、及び配信パラメータ等を対応付けて記憶する。
【００３５】
イベント名は、配信対象とされるイベントのイベント名である。配信先は、イベント名に係るイベントの配信先（すなわち、当該イベントの通知の要求元）の識別情報である。配信パラメータは、イベントに付随するパラメータのうち、イベントと共に配信先に配信されるパラメータである。「ＡＬＬ」は、全てのパラメータが配信されることを示す。配信パラメータも、イベント配信情報の構成要素であり、各モジュールからの登録要求に含まれる。
【００３６】
図５に示されるように、イベント名には、正規表現の指定が可能とされてもよい。例えば、「ＲＥＱ＿＊＿ＪＯＢ」は、「ＲＥＱ＿ＣＯＰＹ＿ＪＯＢ」、「ＲＥＱ＿ＳＣＡＮ＿ＪＯＢ」、「ＲＥＱ＿ＦＡＸ＿ＪＯＢ」、及び「ＲＥＱ＿ＰＲＩＮＴ＿ＪＯＢ」等の集合を示す。「ＲＥＱ＿＊＿ＪＯＢ」は、「＊」の部分で識別される種類のジョブの実行要求を示す。また、「ＲＥＱ＿ＧＥＴ＿＊＿ＪＯＢ＿ＳＴＡＴＥ」は、「＊」の部分で識別される種類のジョブの状態の取得要求を示す。なお、「ＲＥＱ」で始まるイベント名は、アプリ１２からの要求に応じて、リクエスト管理部１１１から通知される、当該要求を示すイベント（以下、「リクエストイベント」という。）のイベント名である。一方、「ＲＥＳ」で始まるイベント名は、リクエストイベントに対する応答として通知されるイベント（以下、「レスポンスイベント」という。）のイベント名である。
【００３７】
図５において、「ＲＥＱ＿＊＿ＪＯＢ」及び「ＲＥＱ＿ＧＥＴ＿＊＿ＪＯＢ＿ＳＴＡＴＥ」は、ジョブ管理部１１４に配信されることが示されている。換言すれば、ジョブ管理部１１４から、「ＲＥＱ＿＊＿ＪＯＢ」及び「ＲＥＱ＿ＧＥＴ＿＊＿ＪＯＢ＿ＳＴＡＴＥ」の配信が要求されたことが示されている。ジョブの実行やジョブの状態は、ジョブ管理部１１４によって管理されるため、「ＲＥＱ＿＊＿ＪＯＢ」及び「ＲＥＱ＿ＧＥＴ＿＊＿ＪＯＢ＿ＳＴＡＴＥ」は、ジョブ管理部１１４に配信される必要が有るからである。
【００３８】
一方、「ＲＥＳ＿＊」は、レスポンス生成部１１２に配信されることが示されている。換言すれば、レスポンス生成部１１２から、「ＲＥＳ＿＊」の配信が要求されたことが示されている。レスポンス生成部１１２は、レスポンスイベントに基づいて、アプリケーションからの要求に応じた応答を示す情報（以下、「レスポンス情報」という。）を生成するため、「ＲＥＳ＿＊」は、レスポンス生成部１１２に配信される必要が有るからである。
【００３９】
また、「ＥＭＵＬＡＴＥ＿ＪＡＭ＿ＣＲＥＡＴＥ」は、擬似的又は仮想的なジャム状態の発生命令（ジャム状態への移行命令）を示すイベント（以下、「ジャム発生命令イベント」という。）のイベント名である。「ＥＭＵＬＡＴＥ＿ＪＡＭ＿ＲＥＣＯＶＥＲ」は、擬似的又は仮想的なジャム状態の解除命令（ジャム状態からの復帰命令）を示すイベント（以下、「ジャム解除命令イベント」という。）のイベント名である。図８において、ジャム発生命令イベント及びジャム解除命令イベントは、サービス管理部１１５に配信されることが示されている。換言すれば、サービス管理部１１５から、ジャム発生命令イベント及びジャム解除命令イベントの配信が要求されたことが示されている。ジャム状態の擬似的又は仮想的な発生は、サービス管理部１１５によって実現されるからである。
【００４０】
なお、２以上のモジュールから、同じイベント名に係るイベント配信情報の登録が要求された場合、当該イベント名に対して、当該２以上のモジュールが配信先として登録される。すなわち、一つのイベントが、複数のモジュールに対して配信されてもよい。例えば、図５では、「ＲＥＱ＿＊＿ＪＯＢ」について、ジョブ管理部１１４に加えて、システム管理部１１６が配信先とされている。このことは、システム管理部１１６からも、「ＲＥＱ＿＊＿ＪＯＢ」の配信が要求されたことを意味する。例えば、エミュレータ部１１が、省エネ状態であった場合、ジョブの実行時には、エミュレータ部１１を省エネ状態から復帰させる必要が有るため、システム管理部１１６にも「ＲＥＱ＿＊＿ＪＯＢ」の配信が必要とされるのである。
【００４１】
なお、エミュレータ部１１の動作過程において、或モジュールにおいて、或るイベントの通知が必要になったり不要になったりすることがある。例えば、ジョブ管理部１１４は、実行中のジョブ又はスプールされているジョブが存在する場合は、サービス管理部１１５から通知されるイベントを受信する必要が有るが、該当するジョブが存在しなければイベントを受信する必要はない。この場合、ジョブ管理部１１４は、該当するジョブが発生した際に、配信が必要なイベントに係るイベント配信情報の登録要求を、ディスパッチ部１１３に対して送信してもよい。また、ジョブが存在しなくなったときに、ジョブ管理部１１４は、配信が不要となったイベントに係るイベント配信情報の登録解除要求を、ディスパッチ部１１３に対して送信してもよい。ディスパッチ部１１３は、登録解除要求に係るレコードを、イベント配信情報記憶部１２０から削除する。
【００４２】
すなわち、イベント配信情報の登録又は削除は、各モジュールの任意のタイミングで行われてもよい。そうすることにより、ディスパッチ部１１３は、各モジュールが必要なイベントを必要な時に配信することができる。
【００４３】
なお、状態変更部１１７及び状態監視部１１８は、基本的に、ユーザからの指示に応じてイベント配信情報の登録をディスパッチ部１１３に要求する。但し、ユーザからの指示が無くても状態変更部１１７又は状態監視部１１８としての機能を実現するために必要となるイベントが有る場合には、状態変更部１１７及び状態監視部１１８も、図４における各モジュールに含まれてもよい。
【００４４】
なお、イベントの通知と、イベントに対する応答とは、必ずしも、非同期に行われなくてもよい。例えば、イベントは、関数又はメソッド等の呼び出しによって、各モジュールに通知されてもよい。
【００４５】
続いて、ディスパッチ部１１３によるイベントの配信処理について説明する。図６は、イベント配信処理の処理手順の一例を説明するためのフローチャートである。
【００４６】
ディスパッチ部１１３は、レスポンス生成部１１２、ジョブ管理部１１４、サービス管理部１１５、及びシステム管理部１１６の各モジュールからのイベントの受信を待機している（Ｓ２０１）。いずれかのモジュールからのイベントが受信されると（Ｓ２０１でＹｅｓ）、ディスパッチ部１１３は、当該イベントの配信先の有無を、イベント配信情報記憶部１２０（図５）を参照して判定する（Ｓ２０２）。具体的には、当該イベントに含まれているイベント名を含むレコードが、イベント配信情報記憶部１２０から検索される。該当するレコードが存在する場合、当該イベントの配信先は有ると判定される。該当するレコードが存在しない場合、当該イベントの配信先は無いと判定される。
【００４７】
配信先が有る場合（Ｓ２０２でＹｅｓ）、ディスパッチ部１１３は、ステップＳ２０２において検索されたレコードの配信先に基づいて特定されるモジュールに、当該イベントを配信する（Ｓ２０３）。また、当該イベントに含まれているパラメータのうち、当該レコードの配信パラメータに該当するパラメータも、当該モジュールに配信される。
【００４８】
一方、配信先が無い場合（Ｓ２０２でＮｏ）、ディスパッチ部１１３は、当該イベントの配信は行わない。
【００４９】
続いて、エミュレータ部１１を利用したアプリ１２の動作確認時に実行される処理手順について説明する。図７は、第一の実施の形態において評価シナリオの生成のためのアプリの動作確認時に実行される処理手順の一例を説明するためのシーケンス図である。なお、図７において、評価シナリオ処理部１３０に関連するステップ（Ｓ３０１〜Ｓ３１０）と、評価シナリオ処理部１３０に関連しないステップ（Ｓ４０１〜Ｓ４４３）とについては、便宜上、ステップ番号の系列が異なる。
【００５０】
例えば、表示装置１０６に表示されている画面を介して、評価シナリオの生成の開始指示がユーザによって入力されると、ＵＩ部１１９は、評価シナリオの生成の開始指示をシナリオ生成部１３２に通知する（Ｓ３０１）。当該開始指示には、例えば、評価シナリオの名前（以下、「シナリオ名」という。）が含まれてもよい。シナリオ生成部１３２は、当該開始指示の通知を受けると、当該開始指示に含まれているシナリオ名を、例えば、メモリ装置１０３に記憶する。続いて、シナリオ生成部１３２は、当該開始指示を、イベント検知部１３１に通知する（Ｓ３０２）。イベント検知部１３１は、当該開始指示に応じ、アプリ１２に関するイベントの監視を開始する。
【００５１】
続いて、ＵＩ部１１９は、例えば、表示装置１０６に表示されている画面を介して、エミュレータ部１１の強制的な状態変更の指示をユーザから受け付けると、当該指示を示すイベントを、シナリオ生成部１３２に通知する（Ｓ３０３）。当該指示においては、状態変更のタイミングの指定も可能である。図７では、１０枚印刷した時点でジャムを発生させること（ジャム状態とすること）が指示された例が示されている。シナリオ生成部１３２は、当該イベントを示す情報を、評価シナリオへの記録対象として、例えば、メモリ装置１０３に記憶する。すなわち、１０枚印刷した時点でジャムを発生させること（ジャム状態とすること）の指示を示す情報が、評価シナリオへの記録対象として記憶される。
【００５２】
続いて、ＵＩ部１１９は、当該指示を、状態変更部１１７に通知する（Ｓ４０１）。状態変更部１１７は、当該指示に応じ、指定されたタイミングを検知又は特定するためのイベントが自らに通知されるように、当該イベントに係るイベント配信情報の登録要求をディスパッチ部１１３に送信する（Ｓ４０２）。具体的には、印刷カウンタイベント（「ＪＯＢ＿ＰＲＩＮＴ＿ＣＯＵＮＴＥＲ」）に係るイベント配信情報の登録要求がディスパッチ部１１３に送信される。印刷カウンタイベントは、印刷カウンタの値が増加するたびに、ジョブ管理部１１４から通知されるイベントをいう。印刷カウンタとは、対象機器において印刷の累積枚数が記憶される記憶領域をいう。なお、「ＪＯＢ」で始まるイベント名は、ジョブ管理部１１４から通知されるイベントであることを示す。
【００５３】
続いて、ＵＩ部１１９は、例えば、表示装置１０６に表示されている画面を介して、エミュレータ部１１の状態の監視指示を受け付けると、当該監視指示を示すイベントを、シナリオ生成部１３２に通知する（Ｓ３０４）。図７では、ジャムの発生を監視することが指示された例が示されている。シナリオ生成部１３２は、当該イベントを示す情報を、評価シナリオへの記録対象として、例えば、メモリ装置１０３に記憶する。すなわち、ジャムの発生の監視指示を示す情報が、評価シナリオへの記録対象として記憶される。
【００５４】
続いて、ＵＩ部１１９は、当該監視指示を、状態監視部１１８に通知する（Ｓ４０３）。状態監視部１１８は、当該監視指示に応じ、ジャムの発生を検知又は特定するためのイベントが自らに通知されるように、当該イベントに係るイベント配信情報の登録要求をディスパッチ部１１３に送信する（Ｓ４０４）。具体的には、ジャム発生イベント（「ＳＥＲＶＩＣＥ＿ＪＡＭ＿ＯＮ」）に係るイベント配信情報の登録要求がディスパッチ部１１３に送信される。ジャム発生イベントは、ジャムの発生時に、サービス管理部１１５から通知されるイベントをいう。なお、「ＳＥＲＶＩＣＥ」で始まるイベント名は、サービス管理部１１５から通知されるイベントであることを示す。
【００５５】
上記の処理の結果、イベント配信情報記憶部１２０の記憶内容は、例えば、図８にされるように変化する。
【００５６】
図８は、イベント配信情報記憶部の記憶内容の変化例を示す図である。図８では、「ＪＯＢ＿ＰＲＩＮＴ＿ＣＯＵＮＴＥＲ」に係るレコードと、「ＳＥＲＶＩＣＥ＿ＪＡＭ＿ＯＮ」に係るレコードとが新たに追加されている。
【００５７】
続いて、ユーザによって、アプリ１２に対する指示が入力されると、アプリ１２は、当該アプリ１２に実装されたロジックに従った処理を実行する。例えば、アプリ１２は、或る文書データ（以下、「文書Ａ」という。）の印刷要求を示すＨＴＴＰリクエストを、リクエスト管理部１１１に送信する（Ｓ４１１）。当該印刷要求には、印刷条件も含まれる。図７では、印刷条件の一部として、２０枚の印刷が指定されたことが示されている。なお、印刷対象の文書データ及び印刷条件等は、ユーザによる操作によって、アプリ１２に対して設定される。また、アプリ１２からリクエスト管理部１１１への要求は、例えば、ＵＲＬ（Uniform Resource Locator）によって識別される。
【００５８】
アプリ１２に関するイベントを監視しているイベント検知部１３１は、当該ＨＴＴＰリクエストを検知すると（Ｓ３０５）、当該ＨＴＴＰリクエストを示すイベントを、シナリオ生成部１３２に通知する（Ｓ３０６）。シナリオ生成部１３２は、当該イベントを示す情報を、評価シナリオへの記録対象として、例えば、メモリ装置１０３に記憶する。すなわち、文書Ａの印刷要求及び当該印刷要求に含まれている印刷条件等が、評価シナリオへの記録対象として記憶される。なお、ユーザによるアプリ１２に対する指示が、イベント検知部１３１によって検知され、当該指示の内容が、評価シナリオへの記録対象として記憶されてもよい。
【００５９】
なお、図７においては、便宜上、ステップＳ３０５が、ステップＳ４１１より上に記載されているが、ステップＳ３０５は、ステップＳ４１１の実行に応じて実行される。また、ステップＳ３０５を示す矢印は、便宜上、アプリ１２の軸を起点としているが、これは、アプリ１２がイベント検知部１３１を呼び出すことを示すものではない。イベント検知部１３１は、例えば、ＯＳ等を介して、アプリ１２に関するイベントを検知する。したがって、アプリ１２は、評価シナリオ処理部１３０の存在を意識しなくてもよい。
【００６０】
一方、アプリ１２からの印刷要求を受信したリクエスト管理部１１１は、ＵＲＬによって示される要求をイベントに変換し、当該イベントをレスポンス生成部１１２に通知する（Ｓ４１２）。本実施の形態において、印刷要求を示すイベント（以下、「印刷要求イベント」という。）のイベント名は、「ＲＥＱ＿ＰＲＩＮＴ＿ＪＯＢ」であるとする。また、当該イベントには、印刷条件も含まれる。
【００６１】
続いて、レスポンス生成部１１２は、印刷要求イベントを、ディスパッチ部１１３に通知する（Ｓ４１３）。ディスパッチ部１１３は、印刷要求イベントの受信に応じ、イベント配信処理（図６）を実行する。その結果、印刷要求イベントは、ジョブ管理部１１４に配信される（Ｓ４１４）。なお、図８によれば、印刷要求イベント（「ＲＥＱ＿ＰＲＩＮＴ＿ＪＯＢ」）は、システム管理部１１６にも配信されるが、図７では、便宜上、省略されている。
【００６２】
ジョブ管理部１１４は、印刷要求イベントが正常に受理されたことを示すレスポンスイベント（「ＲＥＳ＿ＲＥＱＵＥＳＴ＿ＲＥＣＥＩＶＥＤ」）を、ディスパッチ部１１３に通知する（Ｓ４１５）。ディスパッチ部１１３は、当該レスポンスイベントの受信に応じ、イベント配信処理（図６）を実行する。その結果、当該レスポンスイベントは、レスポンス生成部１１２に配信される（Ｓ４１６）。
【００６３】
レスポンス生成部１１２は、ステップＳ４１３において印刷要求イベントをディスパッチ部１１３に通知後、印刷要求イベントに対する応答に必要な情報を含むイベントが通知されるのを待機している。例えば、レスポンス生成部１１２は、印刷要求イベントに対するレスポンス情報のデータ構造を知っており、当該データ構造に対応したメモリ領域を、メモリ装置１０３に確保しておく。レスポンス生成部１１２は、ディスパッチ部１１３からレスポンスイベントが通知されるたびに、当該メモリ領域において当該レスポンスに対応する部分（対応する変数）に、当該レスポンスイベントが示す値を格納する。レスポンス生成部１１２は、当該メモリ領域を構成する全ての変数の値が埋められると、待機状態を解除し、当該メモリ領域に格納されているレスポンス情報を、リクエスト管理部１１１に返信する。
【００６４】
レスポンス生成部１１２が、このような処理を実行するのは、レスポンス生成部１１２からディスパッチ部１１３へ通知されたリクエストイベントが、複数のモジュールに配信され、複数のモジュールからのレスポンスイベントが相互に非同期に返信される可能性が考えられるからである。図７の例では、ジョブ管理部１１４からのレスポンスイベントがレスポンス生成部１１２に配信された時点で、レスポンス生成部１１２は、レスポンス情報をリクエスト管理部１１１に返信する（Ｓ４１７）。
【００６５】
但し、例えば、エミュレータ部１１の状態の逐次的な通知が要求された場合、レスポンス生成部１１２は、待機を行うことなく、ストリーミング形式で、レスポンス情報をアプリ１２に返信してもよい。
【００６６】
続いて、リクエスト管理部１１１は、当該レスポンス情報を含むＨＴＴＰレスポンスを、アプリ１２に返信する（Ｓ４１８）。
【００６７】
一方、ジョブ管理部１１４は、印刷要求イベントに対するレスポンスイベントの通知後（Ｓ４１５）、当該印刷要求イベントを、サービス管理部１１５に直接的に通知する（Ｓ４１９）。なお、イベント配信情報記憶部１２０における、印刷要求イベントに対する配信先に、サービス管理部１１５を登録しておき、ステップＳ４１５において、ジョブ管理部１１４と共にサービス管理部１１５に対してもディスパッチ部１１３から印刷要求イベントが配信されてもよい。この場合、ステップＳ４１９は実行されなくてもよい。
【００６８】
印刷要求イベントに応じ、サービス管理部１１５は、擬似的又は仮想的な印刷を開始する（Ｓ４２０）。擬似的又は仮想的な印刷は、例えば、印刷の実行に応じて変化すべきパラメータの値の更新によって実現される。例えば、印刷カウンタが、１枚分の印刷の実行速度に応じた周期で更新（インクリメント）される。
【００６９】
一方、ジョブ管理部１１４は、印刷カウンタを監視している。ジョブ管理部１１４は、印刷カウンタの値が１増加するたびに、印刷カウンタイベント（「ＪＯＢ＿ＰＲＩＮＴ＿ＣＯＵＮＴＥＲ」）をディスパッチ部１１３に通知する（Ｓ４２１）。ディスパッチ部１１３は、印刷カウンタイベントの受信に応じ、イベント配信処理（図６）を実行する。その結果、印刷カウンタイベントは、状態変更部１１７に配信される（Ｓ４２２）。
【００７０】
本実施の形態では、ステップＳ４２１及びＳ４２２が１０回繰り返された時点（すなわち、１０枚の印刷が行われた時点）で、状態変更部１１７は、ジャム発生命令イベント（「ＥＭＵＬＡＴＥ＿ＪＡＭ＿ＣＲＥＡＴＥ」）を、ディスパッチ部１１３に通知する（Ｓ４３１）。すなわち、印刷カウンタイベントに基づいて、ジャム発生命令イベント通知するタイミングが特定される。なお、ステップＳ４３１の前後において、状態変更部１１７は、印刷カウンタイベントの配信の解除を、ディスパッチ部１１３に要求してもよい。本実施の形態において、状態変更部１１７は、１０枚の印刷が実行されたことを検知すればよく、以降の印刷カウンタイベントの配信は状態変更部１１７にとって不要だからである。
【００７１】
ディスパッチ部１１３は、ジャム発生命令イベントの受信に応じ、イベント配信処理（図６）を実行する。その結果、ジャム発生命令イベントは、サービス管理部１１５に配信される（Ｓ４３２）。
【００７２】
サービス管理部１１５は、ジャム発生命令イベントの受信に応じ、擬似的又は仮想的な印刷を停止させる（Ｓ４３３）。その結果、印刷カウンタ等、各種のパラメータの更新が停止する。続いて、サービス管理部１１５は、ジャム発生イベント（「ＳＥＲＶＩＣＥ＿ＪＡＭ＿ＯＮ」）を、ジョブ管理部１１４に通知する（Ｓ４３４）。ジョブ管理部１１４は、ジャム発生イベントの受信に応じ、例えば、印刷カウンタの監視を中止する。続いて、サービス管理部１１５は、ジャム発生イベントを、ディスパッチ部１１３に通知する（Ｓ４３５）。
【００７３】
ディスパッチ部１１３は、ジャム発生イベントの受信に応じ、イベント配信処理（図６）を実行する。その結果、ジャム発生イベントは、状態監視部１１８に配信される（Ｓ４３６）。状態監視部１１８は、ジャムの発生をＵＩ部１１９に通知する（Ｓ４３７）。ＵＩ部１１９は、例えば、表示装置１０６に、ジャムの発生を示すメッセージを表示させる。
【００７４】
ＵＩ部１１９は、また、ジャムの発生を、シナリオ生成部１３２に通知する（Ｓ３０７）。シナリオ生成部１３２は、ジャムの発生を示す情報を、評価シナリオへの記録対象として、例えば、メモリ装置１０３に記憶する。
【００７５】
続いて、ＵＩ部１１９によって表示されたメッセージを確認したユーザが、表示装置１０６に表示されている画面を介して、ジャムの解除指示を入力すると、ＵＩ部１１９は、ジャムの解除命令を、状態変更部１１７に送信する（Ｓ４３８）。ジャムの解除指示の入力は、詰まっている用紙の、擬似的又は仮想的な除去作業に相当する。
【００７６】
ＵＩ部１１９は、また、ジャムの解除指示を示すイベントを、シナリオ生成部１３２に通知する（Ｓ３０８）。シナリオ生成部１３２は、ジャムの解除指示を示す情報を、評価シナリオへの記録対象として、例えば、メモリ装置１０３に記憶する。ここで、ステップＳ３０７におけるジャムの発生と、ステップＳ３０８におけるジャムの解除指示とは、対をなすイベントである。すなわち、ジャムの解除指示は、ジャムの発生に応じて、ユーザによって入力された指示である。このようなイベントに関して、シナリオ生成部１３２は、ジャムの発生を条件（ＩＦ文）とし、ジャムの解除指示を結果（ＴＨＥＮ文）とする関係が保持されるように、これらのイベントに関する情報を対応付けてメモリ装置１０３に記憶する。一般化すると、シナリオ生成部１３２は、状態監視部１１８から配信されたイベントに基づいてＵＩ部１１９から通知される情報は、ＩＦ文に該当する情報として記憶し、ユーザによる指示の入力に応じてＵＩ部１１９から通知される情報は、ＴＨＥＮ文該当する情報として記憶する。ＵＩ部１１９から通知される情報が、ＩＦ文及びＴＨＥＮ文のいずれに該当するかは、通知される情報の内容に基づいて判定されてもよい。又は、ＵＩ部１１９からの通知に、当該通知の原因となった事象（状態監視部１１８からのイベントの配信又はユーザによる指示入力）を示す情報が含まれてもよい。この場合、シナリオ生成部１３２は、当該事象を示す情報に基づいて、通知された情報が、ＩＦ文に該当するのか、ＴＨＥＮ文に該当するのかを判定してもよい。
【００７７】
ＵＩ部１１９からのジャムの解除命令を受信した状態変更部１１７は、ジャムの解除命令に応じ、ジャム解除命令イベント（「ＥＭＵＬＡＴＥ＿ＪＡＭ＿ＲＥＣＯＶＥＲ」）を、ディスパッチ部１１３に通知する（Ｓ４３９）。ディスパッチ部１１３は、ジャム解除命令イベントの受信に応じ、イベント配信処理（図６）を実行する。その結果、ジャム解除命令イベントは、サービス管理部１１５に配信される（Ｓ４４０）。
【００７８】
サービス管理部１１５は、ジャム解除命令イベントの受信に応じ、擬似的又は仮想的な印刷を再開させる（Ｓ４４１）。続いて、サービス管理部１１５は、印刷の再開を示すイベント（「ＳＥＲＶＩＣＥ＿ＰＲＩＮＴ＿ＲＥＳＵＭＥ」）を、ジョブ管理部１１４に、直接的に通知する（Ｓ４４２）。ジョブ管理部１１４は、当該イベントの受信に応じ、印刷カウンタの監視を再開する。その結果、ステップＳ４２１〜Ｓ４２２が、繰り返し実行される。但し、状態変更部１１７が、既に、印刷カウンタイベントの配信の解除をディスパッチ部１１３に要求している場合、ステップＳ４２２は実行されない。
【００７９】
その後、２０枚分の印刷が完了すると、サービス管理部１１５は、印刷の終了を示すイベント（「ＳＥＲＶＩＣＥ＿ＰＲＩＮＴ＿ＥＮＤ」）を、ジョブ管理部１１４に通知する（Ｓ４４３）。
【００８０】
続いて、表示装置１０６に表示されている画面を介して、評価シナリオの生成の終了指示がユーザによって入力されると、ＵＩ部１１９は、評価シナリオの生成の終了を、シナリオ生成部１３２に通知する（Ｓ３０９）。シナリオ生成部１３２は、当該通知に応じ、メモリ装置１０３に記憶されている情報に基づいて、評価シナリオを生成し、当該評価シナリオを評価シナリオ記憶部１４０に記憶（保存）する（Ｓ３１０）。この際、当該評価シナリオには、メモリ装置１０３に記憶されているシナリオ名が付与される。シナリオ名は、各評価シナリオの識別情報の一例である。すなわち、相互に異なる複数の評価シナリオが生成されてもよい。なお、評価シナリオは、例えば、データベースのレコードとして記憶されてもよいし、ファイルとして記憶されてもよい。
【００８１】
図９は、評価シナリオの一例を示す図である。図９には、図７の処理によって生成される評価シナリオの例が示されている。
【００８２】
評価シナリオｎ１の最初の行には、シナリオ名が含まれている。続く各行は、「＜行番号＞：＜通知元＞：＜イベント内容＞」の形式で記載されている。行番号は、イベントの発生順を示す。通知元は、当該イベントの通知元を示す。「ＵＩ」は、ＵＩ部１１９を示し、「ＥＶＥＮＴ」は、イベント検知部１３１を示す。イベント内容は、イベントの内容を示す。１行目は、ステップＳ３０３に応じて記録された行である。なお、Ｎ行目というとき、Ｎの値は、評価シナリオｎ１内において付されている行番号である。２行目は、ステップＳ３０４に応じて記録された行である。３行目は、ステップＳ３０６に応じて記録された行である。４行目は、ステップＳ３０７及びＳ３０８に応じて記録された行である。すなわち、４行目におけるＩＦ文は、ステップＳ３０７に応じて記録され、ＴＨＥＮ文は、ステップＳ３０８に応じて記録された内容である。なお、４行目については、通知元は省略されている。ＩＦ−ＴＨＥＮ構文に関して、ＩＦ文の対象となるイベントの通知元は、ＵＩ部１１９であることが明確だからである。
【００８３】
なお、図７において、アプリ１２は、ステップＳ４１８において応答を受信した後、ジョブの状態を監視するように実装されていてもよい。この場合、ジャムの発生やジャムの解除に応じて、アプリ１２が期待通り動作するか否かを、ユーザは確認することができる。または、動作確認の対象のアプリ１２は、図７におけるアプリ１２と別のアプリ１２であってもよい。すなわち、図７におけるアプリ１２が印刷を実行させており、当該印刷の途中でジャムが発生した場合に、並列的に動作している動作確認対象のアプリ１２に対するジャムによる影響が期待通りであるか否かが確認されてもよい。
【００８４】
また、図７は、或る一つのシナリオに対応する処理手順を示したものであり、本実施の形態における情報処理装置１０において実行可能な処理手順は、図７示したものに限定されない。例えば、状態変更部１１７は、トナー切れや用紙切れ等、対象機器において発生しうる各種の事象を発生させてもよい。また、アプリ１２からの要求は、印刷要求に限定されない。リクエスト管理部１１１は、リクエスト管理部１１１が有するＡＰＩ（すなわち、対象機器のアプリケーションプラットフォームが提供するＡＰＩ）を介して受け付け可能な各種の要求を受け付けることができる。
【００８５】
続いて、評価シナリオの実行時の処理手順について説明する。図１０は、第一の実施の形態において評価シナリオの実行時に実行される処理手順の一例を説明するためのシーケンス図である。図１０中、図７と同一ステップには、同一ステップ番号を付し、その説明は、適宜省略する。なお、図７において、評価シナリオ処理部１３０に関連するステップ（Ｓ５０１〜Ｓ５０８）と、評価シナリオ処理部１３０に関連しないステップ（Ｓ４０１〜Ｓ４４３）とについては、便宜上、ステップ番号の系列が異なる。
【００８６】
例えば、表示装置１０６に表示されている画面を介して、評価シナリオの実行指示がユーザによって入力されると（Ｓ５０１）、ＵＩ部１１９は、当該実行指示をシナリオ実行部１３３に通知する（Ｓ５０２）。なお、当該実行指示には、実行対象とされる評価シナリオのシナリオ名が含まれる。シナリオ実行部１３３は、当該シナリオ名に対応する評価シナリオを評価シナリオ記憶部１４０から取得し、取得された評価シナリオの実行を開始する。ここでは、図９に示した評価シナリオｎ１が実行対象であるとする。
【００８７】
まず、シナリオ実行部１３３は、評価シナリオｎ１の１行目に基づいて、１０枚印刷した時点でジャムを発生させることの指示を、ＵＩ部１１９に入力する（Ｓ５０３）。シナリオ実行部１３３からの当該指示に応じ、ステップＳ４０１及びＳ４０２が実行される。なお、評価シナリオｎ１の各行に基づく指示の入力先は、当該行に含まれている、通知元を示す情報に基づいて特定される。すなわち、「ＵＩ」を含む行に基づく指示は、ＵＩ部１１９に入力され、「ＥＶＥＮＴ」を含む行に基づく指示は、擬似イベント生成部１３４に入力される。
【００８８】
続いて、シナリオ実行部１３３は、評価シナリオｎ１の２行目に基づいて、ジャムの発生の監視指示をＵＩ部１１９に入力する（Ｓ５０４）。シナリオ実行部１３３からの当該指示に応じ、ステップＳ４０３及びＳ４０４が実行される。
【００８９】
続いて、シナリオ実行部１３３は、評価シナリオｎ１の３行目に基づいて、文書Ａの印刷要求イベントの発生指示を、擬似イベント生成部１３４に入力する（Ｓ５０５）。当該発生指示には、印刷要求に関する印刷条件も含まれる。擬似イベント生成部１３４は、当該発生指示に基づいて、印刷要求を示すイベントを擬似的に発生させる（Ｓ５０６）。当該イベントの擬似的な発生は、例えば、リクエスト管理部１１１のＡＰＩの呼び出しによって実現されてもよいし、ユーザによるアプリ１２に対する指示に相当する擬似的なイベントの生成によって実現されてもよい。前者の場合、当該イベントに応じ、ステップＳ４１２〜Ｓ４３６が実行される。後者の場合、当該イベントに応じ、ステップＳ４１１〜Ｓ４３６が実行される。
【００９０】
シナリオ実行部１３３は、評価シナリオｎ１の４行目の実行については、ＩＦ文に示されている条件が満たされるまで待機する。
【００９１】
その後、ステップＳ４３７に応じて、ＵＩ部１１９からジャムの発生が通知されると（Ｓ５０７）、シナリオ実行部１３３は、ジャムの発生が、評価シナリオｎ１の４行目のＩＦ文の条件を満たすか否かを判定する。ジャムの発生は、当該４行目のＩＦ文の条件を満たすため、シナリオ実行部１３３は、当該４行目のＴＨＥＮ文に基づいて、ジャムの解除指示をＵＩ部１１９に入力する（Ｓ５０８）。当該解除指示に応じ、ステップＳ４３８〜Ｓ４４３が実行される。
【００９２】
上述したように、第一の実施の形態によれば、ＵＩ部１１９及び状態変更部１１７を介して、ユーザは、エミュレータ部１１の状態を強制的に、かつ、任意のタイミングで変更することができる。したがって、ユーザは、対象機器において発生しうる各種の状態を容易に再現させて、当該状態においてアプリ１２の動作確認等を実行することができる。
【００９３】
また、各モジュールからのイベントの配信は、ディスパッチ部１１３によって、イベント配信情報記憶部１２０に基づいて仲介される。したがって、イベントの配信先の変更等に伴う、各モジュールのソースコードの変更等の必要性を低減させることができる。
【００９４】
また、第一の実施の形態によれば、アプリ１２の動作確認において発生したイベントを評価シナリオに記録することができ、当該評価シナリオに記録されているイベントを再現することができる。その結果、アプリ１２の動作確認に関して、同じシナリオを繰り返す場合に、ユーザによる作業負担を軽減することができる。
【００９５】
次に、第二の実施の形態について説明する。第二の実施の形態では第一の実施の形態と異なる点について説明する。したがって、特に言及されない点については、第一の実施の形態と同様でもよい。
【００９６】
図１１は、第二の実施の形態における情報処理装置の機能構成例を示す図である。図１１中、図２と同一部分には同一符号を付し、その説明は省略する。
【００９７】
図１１において、エミュレータ部１１は、更に、評価結果判定部１５０を含む。評価結果判定部１５０は、評価シナリオの実行結果の正否を判定する。評価シナリオの実行結果が正しい状態とは、評価シナリオの実行に応じてエミュレータ部１１が実行する処理手順が、期待通りの手順である状態をいう。評価シナリオの実行結果が正しくない状態とは、評価シナリオの実行に応じてエミュレータ部１１が実行する処理手順が、期待通りの手順とは異なる状態をいう。
【００９８】
情報処理装置１０は、更に、受信履歴記憶部１６０及び合否判定情報記憶部１７０を利用する。これら各記憶部は、例えば、補助記憶装置１０２又は情報処理装置１０にネットワークを介して接続される記憶装置等を用いて実現可能である。
【００９９】
受信履歴記憶部１６０は、評価シナリオの実行時において、ディスパッチ部１１３が通知を受けたイベントの履歴を時系列に記憶する。合否判定情報記憶部１７０は、評価シナリオの実行によって、ディスパッチ部１１３に通知されるべきイベントが時系列に記憶されている。換言すれば、合否判定情報記憶部１７０には、評価シナリオの実行結果が正しい場合に受信履歴記憶部１６０に記憶されるべき情報（以下、「合否判定情報」という。）が記憶されている。すなわち、本実施の形態では、ディスパッチ部１１３に通知されるイベントの履歴に基づいて、評価シナリオの実行結果の正否が判定される。ディスパッチ部１１３には、ジョブ管理部１１４、サービス管理部１１５、及びシステム管理部１１６が直接的にやりとりするイベントを除く全てのイベントが集約されるため、ディスパッチ部１１３に通知されるイベントの履歴を参照することで、エミュレータ部１１が実行した処理手順を推定可能であるからである。なお、合否判定情報記憶部１７０には、評価シナリオごとに、合否判定情報が記憶されていてもよい。例えば、各評価シナリオのシナリオ名に関連付けられて、当該評価シナリオに関する合否判定情報が記憶されていてもよい。また、合否判定情報は、例えば、評価シナリオの作成者等によって作成されてもよい。
【０１００】
図１２は、第二の実施の形態において評価シナリオの実行時に実行される処理手順の一例を説明するためのシーケンス図である。図１２中、図１０と同一ステップには同一ステップ番号を付し、その説明は省略する。
【０１０１】
図１２においても、図９に示した評価シナリオｎ１が、実行対象とされている。この場合、ディスパッチ部１１３には、ステップＳ４０２、Ｓ４０４、Ｓ４１３、Ｓ４１５、Ｓ４２１、Ｓ４３１、Ｓ４３５、及びＳ４３９において、要求又はイベントが通知される。ディスパッチ部１１３は、これら各ステップにおいて、自らが受信した要求又はイベントのログ情報（履歴情報）を、時系列に受信履歴記憶部１６０に記憶する。その結果、評価シナリオｎ１の実行の終了時において、受信履歴記憶部１６０には、図１３に示されるような情報が記憶される。
【０１０２】
図１３は、受信履歴記憶部に記憶される情報の一例を示す図である。図１３には、ステップＳ４０２、Ｓ４０４、Ｓ４１３、Ｓ４１５、Ｓ４２１、Ｓ４３１、Ｓ４３５、又はＳ４３９においてディスパッチ部１１３が受信した要求又はイベントが、時系列（これらのステップの順）に示されている。なお、本実施の形態では、ディスパッチ部１１３によって配信対象とされない情報（例えば、図１３の１行目及び２行目のイベント配信情報の登録要求）についても、受信履歴記憶部１６０に記憶される例が示されているが、ディスパッチ部１１３によって配信対象とされたイベントのみが、受信履歴記憶部１６０に記憶されるようにしてもよい。この場合、ディスパッチ部１１３によって配信対象とされるべきイベントの履歴が、合否判定情報とされればよい。
【０１０３】
その後、ＵＩ部１１９は、評価シナリオｎ１の終了を検知すると、評価シナリオｎ１の実行の終了を評価結果判定部１５０に通知する（Ｓ６０１）。この際、評価シナリオｎ１のシナリオ名が、ＵＩ部１１９から評価結果判定部１５０に通知されてもよい。
【０１０４】
評価結果判定部１５０は、当該通知に応じ、評価シナリオｎ１の実行結果の正否を判定する（Ｓ６０２）。例えば、評価結果判定部１５０は、評価シナリオｎ１のシナリオ名に関連付けられている合否判定情報を、合否判定情報記憶部１７０から取得する。評価結果判定部１５０は、また、受信履歴記憶部１６０に記憶されている情報を取得する。評価結果判定部１５０は、取得された２つの情報を照合し、両者が一致すれば、評価シナリオｎ１の実行結果は正しいと判定する。両者が異なる場合、評価結果判定部１５０は、評価シナリオｎ１の実行結果は正しくないと判定する。なお、本実施の形態では、エミュレータ部１１は、期待通りの動作をしているため、合否判定情報の内容は、図１３と同様のものである。したがって、評価シナリオｎ１の実行結果は正しいと判定される。
【０１０５】
評価結果判定部１５０は、判定結果を表示してもよいし、補助記憶装置１０２に記憶してもよい。ユーザは、当該判定結果を参照することで、アプリ１２の動作の正否を確認することができる。
【０１０６】
上述したように、第二の実施の形態によれば、評価シナリオｎ１の実行結果の正否を容易に確認することができる。したがって、例えば、アプリ１２の品質を評価する専門機関において、第二の実施の形態を実施することで、多数のアプリ１２に関する評価作業を効率化することができる。
【０１０７】
なお、本実施の形態では、エミュレータ部１１がエミュレートする機器（対象機器）が、画像形成装置である例について説明したが、エミュレータ部１１がエミュレートする機器は、プロジェクタ、テレビ会議システム、デジタルカメラ等、画像形成装置以外の機器がエミュレートの対象であってもよい。
【０１０８】
また、本実施の形態における情報処理装置１０の機能は、クラウドサービス、ＡＳＰ（Application Service Provider）が提供するサービス、又はＷｅｂサービス等、ネットワークを介して利用されるサービスとして提供されてもよい。この場合、アプリ１２は、情報処理装置１０にネットワークを介して接続される、ユーザ側のＰＣ（Personal Computer）等に配置されてもよいし、情報処理装置１０に対してアップロードされてもよい。
【０１０９】
なお、上記各実施の形態において、情報処理装置１０は、情報処理装置及び情報処理システムの一例である。リクエスト管理部１１１は、要求受付部の一例である。エミュレータ部１１は、模倣部の一例である。ＵＩ部１１９は、指示受付部及びユーザ通知部の一例である。シナリオ生成部１３２は、記憶処理部の一例である。シナリオ実行部１３３は、再現部の一例である。評価シナリオ記憶部１４０は、第一の記憶部の一例である。ディスパッチ部１１３は、配信部の一例である。イベント配信情報記憶部１２０は、第二の記憶部の一例である。ジョブ管理部１１４、及びサービス管理部１１５は、構成部の一例である。評価結果判定部１５０は、判定部の一例である。
【０１１０】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１１１】
１０          情報処理装置
１１          エミュレータ部
１２          アプリ
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１０６        表示装置
１０７        入力装置
１１１        リクエスト管理部
１１２        レスポンス生成部
１１３        ディスパッチ部
１１４        ジョブ管理部
１１５        サービス管理部
１１６        システム管理部
１１７        状態変更部
１１８        状態監視部
１１９        ＵＩ部
１２０        イベント配信情報記憶部
１３０        評価シナリオ処理部
１３１        イベント検知部
１３２        シナリオ生成部
１３３        シナリオ実行部
１３４        擬似イベント生成部
１４０        評価シナリオ記憶部
１５０        評価結果判定部
１６０        受信履歴記憶部
１７０        合否判定情報記憶部
Ｂ            バス
【先行技術文献】
【特許文献】
【０１１２】
【特許文献１】特開２００４−１８５５９５号公報
【図１】
2016066339.tif 000003
【図２】
2016066339.tif 000004
【図３】
2016066339.tif 000005
【図４】
2016066339.tif 000006
【図５】
2016066339.tif 000007
【図６】
2016066339.tif 000008
【図７】
2016066339.tif 000009
【図８】
2016066339.tif 000010
【図９】
2016066339.tif 000011
【図１０】
2016066339.tif 000012
【図１１】
2016066339.tif 000013
【図１２】
2016066339.tif 000014
【図１３】
2016066339.tif 000015