(57)【要約】【課題】アプリケーション開発を行いながら、同時に実機による動作確認が行える情報処理装置、エミュレーションシステム、及びエミュレーションプログラムを提供する。【解決手段】情報処理装置２００は、機能を実現する動作モジュール３０の動作環境として仮想マシン２１１を搭載する画像処理装置１００と同一の仮想マシン２１２が実装され、動作モジュール３０を利用して機能を実現する画像処理装置１００のアプリケーション２２２ｂを開発する装置であって、当該装置で実行された開発中のアプリケーション２２２ｂから、アプリケーション動作時に利用する動作モジュール３０の実行要求を受け付けると、受け付けた実行要求に従って、画像処理装置１００に対し、動作モジュール３０の実行を要求し、実行された動作モジュール３０の実行結果を、画像処理装置１００から受信する。【選択図】図４
2011180771.tif 000002
【特許請求の範囲】
【請求項１】
機能を実現する動作モジュールの動作環境として仮想マシンを搭載する画像処理装置と同一の仮想マシンが実装され、前記動作モジュールを利用して機能を実現する前記画像処理装置のアプリケーションを開発する情報処理装置であって、
当該情報処理装置で実行された開発中のアプリケーションから、アプリケーション動作時に利用する前記動作モジュールの実行要求を受け付ける受付手段と、
前記受付手段により受け付けた実行要求に従って、前記画像処理装置に対し、前記動作モジュールの実行を要求する要求手段と、
前記要求手段により実行された前記動作モジュールの実行結果を、前記画像処理装置から受信する受信手段と、を有することを特徴とする情報処理装置。
【請求項２】
装置間でデータ通信を行う前記画像処理装置が有する通信インタフェース部と同一の通信インタフェース部を有し、
前記通信インタフェース部は、
装置間でデータ通信を行う必要があるか否かを判定する判定手段を有し、
前記判定手段は、
前記通信インタフェース部が、当該情報処理装置で動作している場合に、前記画像処理装置とデータ通信を行う必要があると判定することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記要求手段は、
前記判定手段により、前記画像処理装置とデータ通信を行う必要があると判定された場合に、
前記画像処理装置に対して、アプリケーション動作時に利用する前記動作モジュールの実行条件を送信し、前記動作モジュールの実行を要求することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記仮想マシンがＪａｖａ（登録商標）ＶＭ（Java Virtual Machine）であり、
前記アプリケーションがＪａｖａ（登録商標）アプリケーションであることを特徴とする請求項１ないし３のいずれか一項に記載の情報処理装置。
【請求項５】
機能を実現する動作モジュールの動作環境として仮想マシンを搭載する画像処理装置と、前記画像処理装置と同一の仮想マシンが実装され、前記動作モジュールを利用して機能を実現する前記画像処理装置のアプリケーションを開発する情報処理装置とが、所定のデータ伝送路で接続されるエミュレーションシステムであって、
前記情報処理装置が、
前記情報処理装置で実行された開発中のアプリケーションから、アプリケーション動作時に利用する前記動作モジュールの実行要求を受け付ける受付手段と、
前記受付手段により受け付けた実行要求に従って、前記画像処理装置に対し、前記動作モジュールの実行を要求する要求手段と、
実行された前記動作モジュールの実行結果を、前記画像処理装置から受信する受信手段と、を有し、
前記画像処理装置が、
前記要求手段により実行された前記動作モジュールの実行結果を、前記情報処理装置に応答する応答手段を有することを特徴とするエミュレーションシステム。
【請求項６】
機能を実現する動作モジュールの動作環境として仮想マシンを搭載する画像処理装置と同一の仮想マシンが実装され、前記動作モジュールを利用して機能を実現する前記画像処理装置のアプリケーションを開発する情報処理装置におけるエミュレーションプログラムであって、
コンピューターを、
当該情報処理装置で実行された開発中のアプリケーションから、アプリケーション動作時に利用する前記動作モジュールの実行要求を受け付ける受付手段と、
前記受付手段により受け付けた実行要求に従って、前記画像処理装置に対し、前記動作モジュールの実行を要求する要求手段と、
前記要求手段により実行された前記動作モジュールの実行結果を、前記画像処理装置から受信する受信手段として機能させるエミュレーションプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、特に、画像処理装置をエミュレートする技術に関するものである。
【背景技術】
【０００２】
近年の画像処理装置は、使用用途の多様化に伴い、様々な機能を実現するアプリケーションが搭載可能なソフトウェア環境を備えている。また、これらのアプリケーションは、機器の製造元であるメーカの他、様々なソフトウェアベンダにより開発され提供されている。
【０００３】
そこで、アプリケーション開発を行うための環境として、画像処理装置のエミュレーション環境が知られている。例えば、特許文献１には、開発したアプリケーションプログラムの命令に対する画像処理装置の動作に相当する動作を情報処理装置に実行させるエミュレータが開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のエミュレーション環境では、画像処理装置の機能動作（例えば「コピー」など機能の動作）をスタブ処理で実現している。例えば、コピー要求を行うアプリケーションを開発した場合、従来のエミュレーション環境でアプリケーションを動作させても、スタブ処理により、コピーした旨の実行結果のみが要求元に応答されるだけである。そのため、実際のコピー機能と連携した動作確認を行うことができない。すなわち、従来では、開発アプリケーションを画像処理装置へインストール後に動作確認を行い、動作結果が記録された動作ログを基に問題を発見し、プログラムを修正（デバッグ）すると言う作業を繰り返し行っている。
【０００５】
このように、従来の環境では、開発者が、アプリケーション開発を行いながら、同時に実機による動作確認を行うことができないため、アプリケーション開発を効率良く行うことができなかった。
【０００６】
本発明は上記従来技術の問題点を鑑み提案されたものであり、その目的とするところは、アプリケーション開発を行いながら、同時に実機による動作確認が行える情報処理装置、エミュレーションシステム、及びエミュレーションプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上記目的を達成するため、本発明に係る情報処理装置は、機能を実現する動作モジュールの動作環境として仮想マシンを搭載する画像処理装置と同一の仮想マシンが実装され、前記動作モジュールを利用して機能を実現する前記画像処理装置のアプリケーションを開発する情報処理装置であって、当該情報処理装置で実行された開発中のアプリケーションから、アプリケーション動作時に利用する前記動作モジュールの実行要求を受け付ける受付手段と、前記受付手段により受け付けた実行要求に従って、前記画像処理装置に対し、前記動作モジュールの実行を要求する要求手段と、前記要求手段により実行された前記動作モジュールの実行結果を、前記画像処理装置から受信する受信手段と、を有している。
【０００８】
このような構成によって、本発明に係る情報処理装置は、アプリケーションの動作環境である画像処理装置と通信を行う通信インタフェース部を介して、開発中のアプリケーションから、画像処理装置の機能（開発アプリケーションの機能を実現するために利用する下位機能）に対し、動作要求を行う。その結果、情報処理装置は、通信インタフェース部を介して、画像処理装置から、要求に応じた実際の動作結果を得る。このように、情報処理装置は、開発アプリケーションを動作させた際に、開発アプリケーションで利用する画像処理装置の機能を遠隔で動作させ、画像処理装置をエミュレートする。
【０００９】
これによって、本発明に係る情報処理装置では、アプリケーション開発を行いながら、同時に実機による動作確認を行うことができる。
【００１０】
上記目的を達成するため、本発明に係るエミュレーションシステムは、機能を実現する動作モジュールの動作環境として仮想マシンを搭載する画像処理装置と、前記画像処理装置と同一の仮想マシンが実装され、前記動作モジュールを利用して機能を実現する前記画像処理装置のアプリケーションを開発する情報処理装置とが、所定のデータ伝送路で接続されるエミュレーションシステムであって、前記情報処理装置が、前記情報処理装置で実行された開発中のアプリケーションから、アプリケーション動作時に利用する前記動作モジュールの実行要求を受け付ける受付手段と、前記受付手段により受け付けた実行要求に従って、前記画像処理装置に対し、前記動作モジュールの実行を要求する要求手段と、前記動作モジュールの実行結果を、前記画像処理装置から受信する受信手段と、を有し、前記画像処理装置が、前記要求手段により実行された前記動作モジュールの実行結果を、前記情報処理装置に応答する応答手段を有している。
【００１１】
このような構成によって、本発明に係るエミュレーションシステムは、アプリケーションの動作環境である画像処理装置と通信を行う通信インタフェース部を介して、開発中のアプリケーションから、画像処理装置の機能に対し、動作要求を行い、画像処理装置から、要求に応じた実際の動作結果を得ると言うエミュレーション環境を実現する。
【００１２】
これによって、本発明に係るエミュレーションシステムでは、アプリケーション開発を行いながら、同時に実機による動作確認が可能な環境を提供できる。
【発明の効果】
【００１３】
本発明によれば、開発アプリケーションを実行した際に、開発アプリケーションで利用する画像処理装置の機能を遠隔実行し、実機による実際の実行結果が得られるようにしたことで、アプリケーション開発を行いながら、同時に実機による動作確認が行える情報処理装置、エミュレーションシステム、及びエミュレーションプログラムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１の実施形態に係るエミュレーションシステムの構成例を示す図である。
【図２】本発明の第１の実施形態に係る情報処理装置（エミュレータ）のハードウェア構成例を示す図である。
【図３】本発明の第１の実施形態に係るエミュレーションシステムのソフトウェア構成例（その１）を示す図である。
【図４】本発明の第１の実施形態に係るエミュレーションシステムのソフトウェア構成例（その２）を示す図である。
【図５】本発明の第１の実施形態に係るサブセットモジュールの機能構成例を示す図である。
【図６】本発明の第１の実施形態に係るエミュレーションの処理手順例を示すシーケンス図である。
【図７】本発明の変形例に係るエミュレーションシステムの構成例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本発明の好適な実施の形態（以下「実施形態」と言う）について、図面を用いて詳細に説明する。
【００１６】
［第１の実施形態］
＜システム構成＞
図１は、本実施形態に係るエミュレーションシステム１の構成例を示す図である。
図１には、画像処理装置１００と情報処理装置２００とが、ネットワークなどのデータ伝送路Ｎを介して接続されるシステム構成例が示されている。
【００１７】
情報処理装置２００は、画像処理装置１００で機能するアプリケーションの開発や動作確認を行う機器である。つまり、情報処理装置２００は、画像処理装置１００をエミュレートするエミュレータ（エミュレーション環境）であり、アプリケーション開発環境である。それに対して、画像処理装置１００は、アプリケーションの動作環境であり、開発アプリケーションの動作確認環境である。
【００１８】
このように、本実施形態に係るエミュレーションシステム１では、上記システム構成により、情報処理装置２００で開発中のアプリケーションから、画像処理装置１００が有する開発アプリケーションの下位モジュールにあたる動作モジュールを遠隔実行可能な環境を提供できる。
【００１９】
＜ハードウェア構成＞
図２は、本実施形態に係る情報処理装置（エミュレータ）１００のハードウェア構成例を示す図である。
図２に示すように、情報処理装置２００は、入力装置２０１、表示装置２０２、ドライブ装置２０３、ＲＡＭ（Random Access Memory）２０４、ＲＯＭ（Read Only Memory）２０５、ＣＰＵ（Central Processing Unit）２０６、インタフェース装置２０７、及びＨＤＤ（Hard Disk Drive）２０８などを備え、それぞれがバスＢで相互に接続されている。
【００２０】
入力装置２０１は、キーボード及びマウスなどを含み、情報処理装置２００に各操作信号を入力するのに用いられる。表示装置２０２は、ディスプレイなどを含み、情報処理装置２００による処理結果を表示する。
【００２１】
インタフェース装置２０７は、情報処理装置２００をデータ伝送路Ｎに接続するインタフェースである。これにより、情報処理装置２００は、インタフェース装置２０７を介して、通信装置を備えた他の機器（画像処理装置）とデータ通信を行うことができる。
【００２２】
ＨＤＤ２０８は、各種プログラム及びデータを格納している不揮発性の記憶装置である。格納されるプログラム及びデータには、例えば、情報処理装置２００全体を制御する情報処理システム（「Ｗｉｎｄｏｗｓ（登録商標：以下略）」や「ＵＮＩＸ（登録商標：以下略）」などの基本ソフトウェアであるＯＳ：Operating System）、及び情報処理システム上において各種機能を提供するアプリケーション（ソフトウェア開発アプリ）などがある。また、ＨＤＤ２０８は、格納している上記プログラム及びデータを、所定のファイルシステム及び／又はＤＢ（Data Base）により管理している。
【００２３】
ドライブ装置２０３は、着脱可能な記録媒体２０３ａとのインタフェースである。これにより、情報処理装置２００は、ドライブ装置２０３を介して、記録媒体２０３ａの読み取り及び／又は書き込みを行うことができる。
【００２４】
ＲＯＭ２０５は、電源を切っても内部データを保持することができる不揮発性の半導体メモリ（記憶装置）である。ＲＯＭ２０５には、情報処理装置２００が起動されるときに実行されるＢＩＯＳ（Basic Input/Output System）や、情報処理装置２００のシステム設定及びネットワーク関連設定などのデータが格納されている。
【００２５】
ＲＡＭ２０４は、上記各種記憶装置から読み出されたプログラム及びデータを一時保持する揮発性の半導体メモリ（記憶装置）である。ＣＰＵ２０６は、ＲＯＭ２０５やＨＤＤ２０８からＲＡＭ２０４上に読み出したプログラムを実行することにより、情報処理装置２００の全体制御及び各種搭載機能の動作を実現する。
【００２６】
このように、情報処理装置２００では、上記ハードウェア構成により、アプリケーション開発を含む各種情報処理を行うサービス（情報処理機能）を提供できる。
【００２７】
＜ソフトウェア構成＞
図３は、本実施形態に係るエミュレーションシステム１のソフトウェア構成例（その１）を示す図である。
図３には、アプリケーションの動作環境として、仮想マシン（ＶＭ：Virtual Machine）環境が実装された画像処理装置１００のソフトウェア構成例が示されている。よって、画像処理装置１００のアプリケーションを開発する情報処理装置２００には、画像処理装置１００と同一の仮想マシン環境が実装されたソフトウェア構成となっている。なお、仮想マシンとは、１台の物理コンピュータ上に、あたかもコンピュータが複数稼働しているかのような疑似システムを構築する仮想化技術により実現される擬似的な情報処理システム環境（論理コンピュータ）を言う。
【００２８】
仮想マシン環境は、ＯＳ１０上で仮想マシン環境を実現するプログラムを動作させることで実現される。本実施形態では、組み込み型システムの開発環境として使用頻度の高いＪａｖａ（登録商標：以下略）ＶＭ２１を動作させることで実現している。なお、ＯＳ１０は、組み込み系の基本ソフトウェアであり、例えば、Ｌｉｎｕｘ（登録商標）などである。情報処理装置２００が有するＯＳ１０２の場合には、上述したＷｉｎｄｏｗｓやＵＮＩＸなどであってもよい。
【００２９】
このように、本実施形態に係る情報処理装置２００では、画像処理装置１００で動作するＪａｖａＶＭ２１１と同一のＪａｖａＶＭ２１２を動作させることで、画像処理装置１００に実装された仮想マシン環境、すなわち、アプリケーションの動作環境を擬似的に実現している。
【００３０】
以降では、画像処理装置１００のＪａｖａＶＭ２１１を「第１仮想マシン２１１」、情報処理装置２００のＪａｖａＶＭ２１２を「第２仮想マシン２１２」に置き換え説明する。また、第１仮想マシン２１１及び第２仮想マシン２１２を総称する際には、「仮想マシン２１」とする。同様に、各仮想マシン２１上で動作するソフトウェア（例えば「プログラム」や「データ」）及び使用される記憶領域についても、同じソフトウェア名や記憶領域名を総称する際には、共通する名称と参照符号を用いることとする。
【００３１】
仮想マシン２１は、仮想マシン２１上でＪａｖａコンポーネント２２を動作させるためのヒープメモリ２１１を有している。ヒープメモリ２１１は、仮想マシン２１上で動作するアプリケーションが自由に確保できるメモリ領域である。
【００３２】
仮想マシン２１上で動作するＪａｖａコンポーネント２２には、プラットフォーム及びアプリケーション（Ｊａｖａプラットフォーム２２１及びＪａｖａアプリケーション２２２）の各機能を実現するための複数のＪａｖａプログラムが含まれる。
【００３３】
Ｊａｖａプラットフォーム２２１は、仮想マシン２１が実現するシステムの基本機能として動作する。Ｊａｖａアプリケーション２２２は、基本機能などを利用したユーザ提供機能として動作する。Ｊａｖａアプリケーション２２２は、提供する機能構成に応じてインストール／アンインストールが可能である。
【００３４】
以上のように、本実施形態に係る情報処理装置２００では、上記方法で画像処理装置１００の動作環境を擬似的に構築することにより、画像処理装置１００で動作するアプリケーションの開発や動作確認を行うことができる。
【００３５】
次に、上記ソフトウェア構成の詳細について説明する。
図４は、本実施形態に係るエミュレーションシステム１のソフトウェア構成例（その２）を示す図である。
【００３６】
例えば、画像処理装置１００が、ＭＦＰ（Multifunction Peripheral）であった場合、第１仮想マシン２１１では、コピーやＦＡＸ配信などの標準機能が動作する。
【００３７】
第１仮想マシン２１１上で動作するＪａｖａコンポーネント２２１が有するＪａｖａアプリケーション２２２１は、標準アプリケーション２２２ａ１及びＳＤＫ（Software Development Kit）アプリケーション２２２ｂ１を含む。Ｊａｖａプラットフォーム２２１１は、Ｊａｖａモジュール群（動作モジュール群）２２１ａ１及びＳＤＫ  ＡＰＩ（SDK Application Program Interface）２２１ｂ１を含む。
【００３８】
標準アプリケーション２２２ａ１は、ユーザ提供機能のうち、ＭＦＰの標準機能を実現するソフトウェアであり、主に、画像処理装置１００の製造元であるメーカにより開発され提供される。標準アプリケーション２２２ａ１は、機能実現のために、プラットフォームが有するＪａｖａモジュール群２２１ａ１の動作モジュール３０を利用する。例えば、Ｊａｖａモジュール群２２１ａ１には、プリンタモジュール３０ａ、スキャナモジュール３０ｂ、及びＦＡＸモジュール３０ｃなどが、基本機能を実現する動作モジュール３０として含まれる。これにより、例えば、標準アプリケーション２２２ａ１は、Ｊａｖａモジュール群２２１ａ１のプリンタモジュール３０ａ及びスキャナモジュール３０ｂを利用し、コピー機能（コピーアプリ）を実現できる。
【００３９】
ＳＤＫアプリケーション２２２ｂ１は、ユーザ提供機能のうち、ＭＦＰの拡張機能を実現するソフトウェアであり、ソフトウェアベンダにより開発され提供される。よって、このＳＤＫアプリケーション２２２ｂ１が、情報処理装置２００で開発されるアプリケーションである。ＳＤＫアプリケーション２２２ｂ１は、メーカからソフトウェアベンダに提供されたＳＤＫを用いて開発される。よって、ＳＤＫアプリケーション２２２ｂ１は、機能実現のために、ＳＤＫ  ＡＰＩ２２１ｂ１を介して、プラットフォームが有するＪａｖａモジュール群２２１ａ１の動作モジュール３０を利用する。なお、ＳＤＫ  ＡＰＩ２２１ｂ１は、ソフトウェアを開発する際に使用できる命令や関数の集合である。これにより、例えば、ＳＤＫアプリケーション２２２ｂ１は、ＳＤＫ  ＡＰＩ２２１ｂ１を介して、Ｊａｖａモジュール群２２１ａ１のプリンタモジュール３０ａを利用し、認証モジュール（非図示）と合わせて、印刷の利用認証機能（セキュアプリントアプリ）を実現できる。
【００４０】
これに対して情報処理装置２００には、開発するＳＤＫアプリケーション２２２ｂを動作させる第２仮想マシン２１２が実装され、画像処理装置１００の動作環境が擬似的に構築されている。
【００４１】
＜エミュレーション機能＞
従来のエミュレーション環境では、第２仮想マシン２１２で動作するＳＤＫアプリケーション２２２ｂ２に対して、下位モジュールのスタブ処理が、Ｊａｖａモジュール群２２１ａ２に含まれるモジュールにより行われていた。具体的には、Ｊａｖａモジュール群２２１ａ２が、プリンタ、スキャナ、ＦＡＸなどの基本機能のスタブ処理を行う擬似モジュールを有し、ＳＤＫアプリケーション２２２ｂ２が実行されると、実行時に利用される基本機能の動作結果を、擬似モジュールがＳＤＫアプリケーション２２２ｂ２に返す。
【００４２】
上述したように、このような環境では、開発者が、アプリケーション開発を行いながら、同時に実機による動作確認が行えず、アプリケーション開発を効率良く行うことができない。
【００４３】
そこで、本実施形態に係る情報処理装置２００では、開発アプリケーションを動作させた際に、開発アプリケーションで利用する画像処理装置１００の機能を遠隔で動作させ、画像処理装置１００をエミュレートする。具体的には、情報処理装置２００において、開発したＳＤＫアプリケーション２２２ｂ２を実行した際に、ＳＤＫアプリケーション２２２ｂ２で利用する画像処理装置１００の動作モジュール３０を遠隔実行し、実機による実際の実行結果が得られると言うエミュレーション環境を有している。
【００４４】
これによって、本実施形態に係る情報処理装置２００では、アプリケーション開発を行いながら、同時に実機による動作確認を行うことができる。
【００４５】
また、本実施形態に係る情報処理装置２００が有するエミュレーション環境では、次のような利点もある。
【００４６】
従来のエミュレーション環境では、開発アプリケーションからの利用を想定し、画像処理装置１００が有する全ての基本機能をエミュレートするため、各機能のスタブ処理を行う擬似モジュールを用意しなければならなかった。しかし、本実施形態に係るエミュレーション環境では、画像処理装置１００が有する実際の動作モジュール３０を用いて、画像処理装置１００をエミュレートするため、疑似モジュールを用意する必要がない。これにより、環境構築や維持に係るコストを削減できる。
【００４７】
また、従来のエミュレーション環境では、デバッグ用の動作ログをソフトウェアベンダに提供する必要があり、その動作ログに画像処理装置１００の内部情報が含まれるため、第三者への情報漏洩の危険性があり、情報の機密性を確保するのが困難であった。しかし、本実施形態に係るエミュレーション環境では、画像処理装置１００が有する実際の動作モジュール３０を用いて、画像処理装置１００をエミュレートするため、エミュレーション環境と異なる装置で情報を管理することができる。これにより、第三者に対して開示される情報を制限することができる。
【００４８】
このような本実施形態に係るエミュレーション環境を実現するためには、開発アプリケーションが動作する情報処理装置２００と、開発アプリケーションが利用する基本機能を搭載した画像処理装置１００との間で、実行要求及び実行結果をやり取りする（データ通信を行う）必要がある。
【００４９】
装置間で行うデータ通信への対応方法には、画像処理装置１００の各動作モジュール３０に対応する通信モジュールを、情報処理装置２００の第２仮想マシン２１２上で動作させる方法（動作モジュール単位で対応する方法）が考えられる。しかし、この方法では、画像処理装置１００が多くの動作モジュール３０を有している場合、搭載数に合わせた通信モジュールを用意する必要があり、現実的な対応方法ではない。また、たとえ通信モジュールが用意できたとしても、障害が発生した場合など、エミュレーション環境の管理・保守が煩雑なものとなる。さらに、情報処理装置２００で多くの通信モジュールが動作すると、情報処理装置２００が備える記憶リソースを無駄に消費することになる。
【００５０】
そこで、本実施形態では、開発アプリケーションと開発アプリケーションが利用する基本機能との間でデータ通信を行うインタフェース部が、各装置に設けられている。このインタフェース部が、各仮想マシン２１上で動作するＪａｖａプラットフォーム２２１が有するＪａｖａモジュール群２２１ａのサブセットモジュール（通信インタフェース部）４１である。
【００５１】
《サブセットモジュール》
各仮想マシン２１上で動作するサブセットモジュール４１は、同一モジュールである。つまり、サブセットモジュール４１は、画像処理装置１００と情報処理装置２００とで共通化されたモジュールである。また、各仮想マシン２１上では、１つのサブセットモジュール４１が動作する。つまり、サブセットモジュール４１は、画像処理装置１００が有する動作モジュール３０に対して共通化されたモジュールである。
【００５２】
サブセットモジュール４１は、情報処理装置２００で開発アプリケーションを実行した場合、開発アプリケーションと開発アプリケーションが利用する基本機能との間で、次のように動作する。
【００５３】
ＳＤＫアプリケーション２２２ｂ２は、第２仮想マシン２１２上のサブセットモジュール４１２を介して、第１仮想マシン２１１上のサブセットモジュール４１１に対し、実行条件を送信することで、動作モジュール３０による処理の実行を要求する。第１仮想マシン２１１上のサブセットモジュール４１１は、受信した実行要求に従って、利用指定された動作モジュール３０に対し、受信した実行条件に従って、処理の実行を要求する。動作モジュール３０は、第１仮想マシン２１１上のサブセットモジュール４１１を介して、第２仮想マシン２１２上のサブセットモジュール４１２に対し、実行結果を送信する。第２仮想マシン２１２上のサブセットモジュール４１２は、受信した実行結果をＳＤＫアプリケーション２２２ｂ２に渡す。
【００５４】
ここからは、サブセットモジュール４１が有する機能について詳細に説明する。
図５は、本実施形態に係るサブセットモジュール４１の機能構成例を示す図である。
図５に示すように、サブセットモジュール４１は、要求受付部４１１、仮想マシン判定部４１２、通信部４１３、及び処理要求部４１４などを有している。
【００５５】
要求受付部４１１は、ＳＤＫ  ＡＰＩ２２１を介して、ＳＤＫアプリケーション２２２ｂからの実行要求を受け付ける機能部（受付手段）である。要求受付部４１１は、ＳＤＫアプリケーション２２２ｂから実行条件を受け取ることで、実行要求を受け付ける。要求受付部４１１は、受け取った実行条件を仮想マシン判定部４１２に渡す。
【００５６】
仮想マシン判定部４１２は、サブセットモジュール自身が動作する仮想マシン２１が、第２仮想マシン２１２か否かを判定する機能部（判定手段）である。つまり、仮想マシン判定部４１２は、サブセットモジュール４１が、開発環境（エミュレーション環境）である情報処理装置２００で動作しているか否かを判定している。仮想マシン判定部４１２は、判定結果に基づき、実行条件を、通信部４１３又は処理要求部４１４のどちらか一方に渡す。
【００５７】
本実施形態では、画像処理装置１００と情報処理装置２００とが、同一のサブセットモジュール４１を搭載する構成としている。そのため、サブセットモジュール４１では、仮想マシン判定部４１２による判定結果に基づき、装置間のデータ通信を制御される。
【００５８】
具体的には、次のように制御される。情報処理装置２００が有するサブセットモジュール４１２では、仮想マシン判定部４１２２により、自身が情報処理装置２００で動作していると判定される。その結果、サブセットモジュール４１２では、装置間のデータ通信を行う必要があるとし、ＳＤＫアプリケーション２２２ｂ２から受け取った実行条件が、通信部４１３２により、画像処理装置１００に送信される。一方、画像処理装置１００が有するサブセットモジュール４１１では、仮想マシン判定部４１２１により、自身が情報処理装置２００で動作していないと判定される。その結果、サブセットモジュール４１１では、装置間のデータ通信を行う必要がないとし、ＳＤＫアプリケーション２２２ｂ１から受け取った実行条件に従って、処理要求部４１４１により、動作モジュール３０の処理を実行する。
【００５９】
このように、サブセットモジュール４１では、自身の動作環境を判別することで、ＳＤＫアプリケーション２２２ｂが実行された際に、装置間のデータ通信を行う必要があるか否かを判定している（データ通信要否判定機能）。
【００６０】
通信部４１３は、装置間でデータ通信を行う機能部（要求手段、受信手段）である。通信部４１３は、開発アプリケーションが実行された際に、情報処理装置２００からの実行条件及び画像処理装置１００からの実行結果を送受信する。なお、通信部４１３は、設定されたネットワーク識別情報（例えば「ＩＰアドレス」（Internet Protocol Address））に基づき、データ通信を行う。例えば、ネットワーク識別情報は、エミュレーションシステム１を構築する際に、各装置が有するサブセットモジュール４１の通信部４１３に設定される。通信部４１３によるデータ通信は、仮想マシン判定部４１２の判定結果に基づき制御される。
【００６１】
具体的には、次のように制御される。情報処理装置２００が有するサブセットモジュール４１２の通信部４１３２は、仮想マシン判定部４１２２により、サブセットモジュール自身が第２仮想マシン２１２で動作しているとの判定結果に基づき、実行条件を、画像処理装置１００に送信し、動作モジュール３０の実行を要求する。その結果、画像処理装置１００が有するサブセットモジュール４１１の通信部４１３１は、受信した実行条件に従って、動作モジュール３０により処理された実行結果を、要求元の情報処理装置２００に送信する。このとき、通信部４１３１は、情報処理装置２００から受信した印刷条件を処理要求部４１４１に渡す。
【００６２】
このように、サブセットモジュール４１では、判別された動作環境が情報処理装置２００（エミュレーション環境）であった場合に、開発アプリケーションで利用する画像処理装置１００（開発アプリ動作確認環境）の機能に対して動作を要求し（遠隔動作要求機能）、画像処理装置１００をエミュレートする。その結果、サブセットモジュール４１では、画像処理装置１００から応答された実機による実際の動作結果を得る（動作結果受信機能）。
【００６３】
なお、通信部４１３は、通信データの機密性を高めるために、暗号化機能を有していてもよい。
【００６４】
処理要求部４１４は、受け取った実行条件に従って、利用指定された動作モジュール３０に対して処理の実行を要求する機能部である。処理要求部４１４は、実行条件を、仮想マシン判定部４１２又は通信部４１３から受け取る。処理要求部４１４による実行要求は、仮想マシン判定部４１２又は通信部４１３のどちらの機能部から実行条件を受け取ったかに基づき制御される。
【００６５】
具体的には、次のように制御される。画像処理装置１００が有するサブセットモジュール４１１の処理要求部４１４１は、仮想マシン判定部４１２１から実行条件を受け取ると、実行条件に従って、利用指定された動作モジュール３０に対して処理の実行を要求する。このとき、処理要求部４１４１は、画像処理装置１００の搭載アプリケーションによる通常動作であると判断する。また、画像処理装置１００が有するサブセットモジュール４１１の処理要求部４１４１は、通信部４１３１から実行条件を受け取ると、実行条件に従って、利用指定された動作モジュール３０に対して処理の実行を要求し、得られた実行結果を通信部４１３１に渡す。このとき、処理要求部４１４１は、情報処理装置２００の開発アプリケーションによる確認動作であると判断する。
【００６６】
このように、サブセットモジュール４１では、判別された動作環境が画像処理装置１００（開発アプリ動作確認環境）であった場合に、実行条件の受け取り経路に応じて、動作モジュール３０による実行結果を要求元に応答する（実行結果応答機能）。
【００６７】
以上のように、サブセットモジュール４１が有するデータ通信要否判定機能、遠隔動作要求機能、動作結果受信機能、及び実行結果応答機能は、上記各機能部が連係動作することにより実現される。
【００６８】
ここからは、本実施形態に係るエミュレーションシステム１の詳細な動作（サブセットモジュールが有する機能部群の連携動作を含む）について、処理手順を示すシーケンス図を用いて説明する。
【００６９】
本実施形態に係るエミュレーション機能は、画像処理装置１００及び情報処理装置２００の各仮想マシン２１上でサブセットモジュール４１が動作することにより実現される機能である。仮想マシン環境は、各装置に搭載（インストール）されるプログラムが、制御部（例えば「ＣＰＵ」）により、格納先（例えば「ＨＤＤ」）からメモリ（例えば「ＲＡＭ」）上に読み出され、実行されることで機能する。サブセットモジュール４１は、この環境下において、Ｊａｖａプラットフォーム２２１が有するＪａｖａモジュール群２２１ａの１つとして起動される。また、開発アプリケーションは、情報処理装置２００の第２仮想マシン２１２において、Ｊａｖａアプリケーション２２２２が有するＳＤＫアプリケーション２２２ｂ２の１つとして起動される。
【００７０】
以下の説明では、開発中のアプリケーションを情報処理装置２００（エミュレーション環境）で実行し、同時に、アプリケーションの動作環境である画像処理装置１００（開発アプリ動作確認環境）での動作確認を行う場合のエミュレーション処理について説明する。
【００７１】
図６は、本実施形態に係るエミュレーションの処理手順例を示すシーケンス図である。なお、図６に示す処理例では、情報処理装置２００で起動されたサブセットモジュール４１２では、要求受付部４１１２、仮想マシン判定部４１２２、及び通信部４１３２が機能する。一方、画像処理装置１００で起動されたサブセットモジュール４１１では、通信部４１３１及び処理要求部４１４１が機能する。
【００７２】
図６に示すように、情報処理装置２００では、第２仮想マシン２１２上で開発中のＳＤＫアプリケーション２２２ｂ２を実行させることで、動作確認を開始する（ステップＳ１１）。
【００７３】
情報処理装置２００では、動作確認中のＳＤＫアプリケーション２２２ｂ２により、画像処理装置１００が有する動作モジュール３０を利用する処理が開始されると、第２仮想マシン２１２上で動作するサブセットモジュール４１２に対して、利用する動作モジュール３０の実行要求が通知される（ステップＳ１２）。このとき、ＳＤＫアプリケーション２２２ｂ２から、サブセットモジュール４１２に対して、利用する動作モジュール３０の実行条件が渡される。
【００７４】
サブセットモジュール４１２は、ＳＤＫアプリケーション２２２ｂ２からの実行要求通知を、要求受付部４１１２により受け付ける。要求受付部４１１２は、受け付けた実行要求を仮想マシン判定部４１２２に通知し、サブセットモジュール４１２が動作する仮想マシン２１の判定を要求する（ステップＳ１３）。
【００７５】
仮想マシン判定部４１２２は、サブセットモジュール４１２が動作する仮想マシン２１が、エミュレーション環境の第２仮想マシン２１２であるか否かを判定する（ステップＳ１４）。その結果、仮想マシン判定部４１２２は、エミュレーション環境の「第２仮想マシンである」と判定し、実行要求を通信部４１３２に通知する（ステップＳ１５）。
【００７６】
通信部４１３２は、実行要求通知時に受け取った実行条件を、画像処理装置１００に送信する（ステップＳ１６）。このようにして、情報処理装置２００は、画像処理装置１００が有する動作モジュール３０に対して、遠隔実行を要求する。
【００７７】
画像処理装置１００では、第１仮想マシン２１１上で動作するサブセットモジュール４１１により、情報処理装置２００からの実行要求を受け付ける。
【００７８】
サブセットモジュール４１１は、情報処理装置２００から送信された実行条件を、通信部４１３１により受信する。通信部４１３１は、受け付けた実行要求を処理要求部４１４１に通知する（ステップＳ１７）。このとき、通信部４１３１から、処理要求部４１４１に対して、利用する動作モジュール３０の実行条件が渡される。
【００７９】
処理要求部４１４１は、受け付けた実行要求を解析する（ステップＳ１８）。具体的には、次のような解析を行う。処理要求部４１４１は、実行条件に基づき、利用指定された動作モジュール３０と、実行する際に動作モジュール３０に設定する処理条件とを特定する。
【００８０】
処理要求部４１４１は、特定した動作モジュール３０の処理条件を設定し、動作モジュール３０に対して処理の実行を要求する（ステップＳ１９）。その結果、動作モジュール３０は、要求処理を行い（ステップＳ２０）、実行結果を要求元の処理要求部４１４１に通知する（ステップＳ２１）。
【００８１】
処理要求部４１４１は、受け付けた実行結果を通信部４１３１に通知し、情報処理装置２００への実行結果応答を要求する（ステップＳ２２）。
【００８２】
通信部４１３１は、実行結果通知時に受け取った実行結果を、情報処理装置２００に送信する（ステップＳ２３）。このようにして、画像処理装置１００は、情報処理装置２００で動作確認中のＳＤＫアプリケーション２２２ｂ２に対して、実機による実際の実行結果を応答する。
【００８３】
情報処理装置２００では、第２仮想マシン２１２上で動作するサブセットモジュール４１２により、画像処理装置１００からの実行結果を受け付ける。
【００８４】
サブセットモジュール４１２は、画像処理装置１００から送信された実行結果を、通信部４１３２により受信する。通信部４１３２は、受け付けた実行結果を仮想マシン判定部４１２２及び要求受付部４１１２を介して、ＳＤＫアプリケーション２２２ｂ２に通知する（ステップＳ２４，Ｓ２５，Ｓ２６）。
【００８５】
以上のように、情報処理装置２００は、アプリケーションの動作環境である画像処理装置１００と通信を行う通信インタフェース部を介して、開発中のアプリケーションから、画像処理装置１００の機能に対し、動作要求を行い、画像処理装置１００から、要求に応じた実際の動作結果を得る。
【００８６】
＜まとめ＞
以上のように、本実施形態に係る情報処理装置２００によれば、アプリケーションの動作環境である画像処理装置１００と通信を行うサブセットモジュール４１を介して、開発中のＳＤＫアプリケーション２２２ｂ２から、画像処理装置１００が有する動作モジュール３０（開発アプリケーションの機能を実現するために利用する下位モジュール）に対し、動作要求を行う。その結果、情報処理装置２００は、サブセットモジュール４１を介して、画像処理装置１００から、要求に応じた実際の動作結果を得る。このように、情報処理装置２００は、開発アプリケーションを動作させた際に、開発アプリケーションで利用する画像処理装置１００の機能を遠隔で動作させ、画像処理装置１００をエミュレートする。
【００８７】
これによって、本実施形態に係る情報処理装置２００では、アプリケーション開発を行いながら、同時に実機による動作確認を行うことができる。その結果、ソフトウェアベンダでは、アプリケーション開発を効率良く行うことができる。
【００８８】
＜変形例＞
ここからは、本実施形態に係るエミュレーションシステム１の変形例について説明する。
図７は、本変形例に係るエミュレーションシステム１の構成例を示す図である。
図７に示すように、例えば、エミュレーションシステム１には、上記実施形態に示した画像処理装置１００と情報処理装置２００とが１台ずつのシステム構成の他に、複数台のシステム構成も考えられる。
【００８９】
（Ａ）には、エミュレーション環境である１台の情報処理装置２００に対して、動作環境である画像処理装置１００が、データ伝送路Ｎを介して、複数台接続されるシステム構成例が示されている。（Ａ）に示すシステム構成では、次のようなアプリケーション開発が可能である。例えば、開発中のアプリケーションを、複数台の実機で動作確認することができる。また、１台の情報処理装置２００において、画像処理装置１００の機種ごとに複数のアプリケーションを開発し、各機種の実機で動作確認を行うこともできる。このように、（Ａ）に示すシステム構成では、より効率的なアプリケーション開発が行える。
【００９０】
また、（Ａ）に示すシステム構成の場合には、情報処理装置２００において、実行要求先を切替制御する必要がある。切替制御方法には、次のような方法が挙げられる。例えば、情報処理装置２００で動作するサブセットモジュール４１２により、実行要求先となる画像処理装置１００を切り替える。情報処理装置２００では、画像処理装置１００のネットワーク識別情報に基づき、遠隔実行を要求している。そのため、情報処理装置２００は、まず、ブロードキャストなどによるネットワーク検索を行う。続いて、情報処理装置２００は、検索結果として得られた画像処理装置１００のネットワーク識別情報（１又は複数の情報）を、サブセットモジュール４１２に設定保持する。その結果、情報処理装置２００では、設定保持されたネットワーク識別情報に基づき、画像処理装置１００を切り替え、実行条件を送信し、実行要求が行える。
【００９１】
また、検索結果としてＭＩＢ（Management Information Base）情報などを得る場合には、ネットワーク識別情報の他に、"機器名"や"機種名"などの機器情報も得ることができる。よって、情報処理装置２００では、これらの機器情報も、ネットワーク識別情報と同じように、サブセットモジュール４１２に設定保持しておくことで、より細かい切替制御を行うことができる。例えば、情報処理装置２００では、設定保持されたネットワーク識別情報及び機種識別情報（機種名）に基づき、機種に応じて画像処理装置１００を切り替え、実行条件を送信し、機種ごとの実機に実行要求が行える。
【００９２】
（Ｂ）には、１台の画像処理装置１００に対して、情報処理装置２００が、データ伝送路Ｎを介して、複数台接続されるシステム構成例が示されている。（Ｂ）に示すシステム構成では、次のようなアプリケーション開発が可能である。例えば、複数の開発者により開発中の複数のアプリケーションを、１台の実機で動作確認することができる。このように、（Ｂ）に示すシステム構成では、開発アプリ動作確認環境（画像処理装置）の導入にかかるコストを軽減できる。
【００９３】
なお、図示しないが、エミュレーションシステム１には、複数の画像処理装置１００と複数の情報処理装置２００とがデータ伝送路Ｎを介して接続されるシステム構成も考えられる。
【００９４】
ここまで、上記実施形態の説明を行ってきたが、「エミュレーション機能」は、図を用いて説明を行った各処理手順を動作環境（プラットフォーム）にあったプログラミング言語でコード化したプログラムが、各装置の制御部（例えば「ＣＰＵ」）により実行されることで実現される。
【００９５】
例えば、情報処理装置２００の場合、上記プログラムは、コンピュータが読み取り可能な記録媒体２０３ａに格納することができる。上記記録媒体２０３ａには、例えば、フロッピー（登録商標）ディスク、ＣＤ（Compact Disk）、ＤＶＤ（Digital Versatile Disk）、ＳＤメモリカード（SD Memory Card）、及びＵＳＢ（Universal Serial Bus）メモリなどがある。
【００９６】
よって、上記プログラムは、記録媒体２０３ａを読み取り可能なドライブ装置２０３を介して、情報処理装置２００にインストールすることができる。また、情報処理装置２００は、インタフェース装置２０７を備えていることから、電気通信回線を用いて上記プログラムをダウンロードし、インストールすることもできる。
【００９７】
最後に、上記実施形態に挙げた形状や構成に、その他の要素との組み合わせなど、ここで示した要件に、本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
【符号の説明】
【００９８】
１        エミュレーションシステム
１０      ＯＳ（１：画像処理装置側、２：情報処理装置側）
２１      ＪａｖａＶＭ
２１１    ヒープメモリ
２２      Ｊａｖａコンポーネント
２２１    Ｊａｖａプラットフォーム
２２１ａ  Ｊａｖａモジュール群
２２１ｂ  ＳＤＫ  ＡＰＩ
２２２    Ｊａｖａアプリケーション
２２２ａ  標準アプリケーション（１：画像処理装置側）
２２２ｂ  ＳＤＫアプリケーション
３０      動作モジュール（ａ：プリンタ、ｂ：スキャナ、ｃ：ＦＡＸ）
４１      サブセットモジュール
４１１    要求受付部
４１２    仮想マシン判定部
４１３    通信部
４１４    処理要求部
１００  画像処理装置
２００  情報処理装置
２０１  入力装置
２０２  表示装置
２０３  ドライブ装置（ａ：記録媒体）
２０４  ＲＡＭ（揮発性の半導体メモリ）
２０５  ＲＯＭ（不揮発性の半導体メモリ）
２０６  ＣＰＵ（中央処理装置）
２０７  インタフェース装置（ＮＩＣ：Network I/F Card）
２０８  ＨＤＤ（不揮発性の記憶装置）
Ｂ      バス
Ｎ      データ伝送路
【先行技術文献】
【特許文献】
【００９９】
【特許文献１】特開２００４−１８５５９５号公報
【図１】
2011180771.tif 000003
【図２】
2011180771.tif 000004
【図３】
2011180771.tif 000005
【図４】
2011180771.tif 000006
【図５】
2011180771.tif 000007
【図６】
2011180771.tif 000008
【図７】
2011180771.tif 000009