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