(57)【要約】【課題】操作部を有する機器のエミュレートを容易且つ迅速に実行できるエミュレーション装置及びエミュレーションシステムを提供することを目的とする。【解決手段】コントローラと、描画表示及び入力操作を受け付ける操作部とを有する機器用のエミュレーション装置であって、ホストＯＳ上でコントローラのゲストＯＳ１１を動作させ、ゲストＯＳ１１上でコントローラのプログラム１２を動作させる第１仮想マシン４０と、ホストＯＳ上で操作部のゲストＯＳ２１を動作させ、操作部のゲストＯＳ２１上で操作部のプログラム２３等を動作させる第２仮想マシン４２とを有し、コントローラと操作部との間の通信を、第１仮想マシン４０と第２仮想マシン４２との通信として取り扱うことにより上記課題を解決する。【選択図】  図２
2010191543.tif 000002
【特許請求の範囲】
【請求項１】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーション装置であって、
前記エミュレーション装置上で稼動するホストオペレーティングシステムと、
前記ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第１仮想マシンと、
前記ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第２仮想マシンと、
を有し、
前記コントローラと前記操作部との間の通信を、前記第１仮想マシンと前記第２仮想マシンとの通信として取り扱うエミュレーション装置。
【請求項２】
前記操作部のプログラムは、ユーザに対して物理的に提供された各種入出力デバイスを制御するデバイス制御手段と、
画面に関する要求に基づいて処理を行う画面表示制御手段と、
外部から通信によるメッセージが到達した場合、前記メッセージの対象を、前記デバイス制御手段及び前記画面表示制御手段から判別し、判別した前記メッセージの対象へ前記メッセージを送信するセレクタ手段と
を有する請求項１記載のエミュレーション装置。
【請求項３】
前記エミュレーション装置は、前記入出力デバイスをエミュレーション画面上で擬似的に表示、再現するパネルエミュレータ手段を更に有し、
前記セレクタ手段は、判別した前記メッセージの対象が前記入出力デバイスであり、且つ前記入出力デバイスが前記メッセージに基づく処理を行えないとき、前記メッセージに基づく処理を前記パネルエミュレータ手段に委託する請求項２記載のエミュレーション装置。
【請求項４】
前記パネルエミュレータ手段は、前記第１仮想マシンと前記第２仮想マシンとの間を仲介し、前記メッセージに基づく処理を前記第１仮想マシン又は前記第２仮想マシンで実現可能なとき、前記メッセージを前記第１仮想マシン又は前記第２仮想マシンにそのまま送信し、前記メッセージに基づく処理を前記第１仮想マシン又は前記第２仮想マシンで実現不可能なとき、前記メッセージに基づく処理を前記エミュレーション画面上で擬似的に表示、再現する請求項３記載のエミュレーション装置。
【請求項５】
前記エミュレーション装置は、各種入力デバイスの操作を同一のイベントとして取得可能な入力デバイスイベント取得手段を更に有し、
前記入力デバイスイベント取得手段は、画面を触れることで入力を行う入力デバイスの操作を、ポインティングデバイスによる入力の操作で擬似的に再現する請求項３記載のエミュレーション装置。
【請求項６】
前記第１仮想マシン及び前記第２仮想マシンは、認証によって許可されたユーザに特定のディレクトリを参照させる請求項１乃至５何れか一項記載のエミュレーション装置。
【請求項７】
前記第１仮想マシンは、前記コントローラのゲストオペレーティングシステムと前記コントローラのプログラムとを別々のファイルイメージに分離して管理し、
前記第２仮想マシンは、前記操作部のゲストオペレーティングシステムと前記操作部のプログラムとを別々のファイルイメージに分離して管理する請求項１乃至５何れか一項記載のエミュレーション装置。
【請求項８】
前記第２仮想マシンは、前記ホストオペレーティングシステムに接続された実際のデバイスを認識し、前記操作部のゲストオペレーティングシステム上で操作可能なデバイスとして連携動作をテストする請求項１乃至５何れか一項記載のエミュレーション装置。
【請求項９】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーションシステムであって、
第１ホストオペレーティングシステムと、前記第１ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第１仮想マシンと、を有する第１エミュレーション装置と、
第２ホストオペレーティングシステムと、前記第２ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第２仮想マシンと、を有する第２エミュレーション装置と、
を有し、
前記第１エミュレーション装置と前記第２エミュレーション装置とは外部ネットワーク経由で通信を行うエミュレーションシステム。
【請求項１０】
前記操作部のプログラムは、ユーザに対して物理的に提供された各種入出力デバイスを制御するデバイス制御手段と、
画面に関する要求に基づいて処理を行う画面表示制御手段と、
外部から通信によるメッセージが到達した場合、前記メッセージの対象を、前記デバイス制御手段及び前記画面表示制御手段から判別し、判別した前記メッセージの対象へ前記メッセージを送信するセレクタ手段と
を有する請求項９記載のエミュレーションシステム。
【請求項１１】
前記第２エミュレーション装置は、前記入出力デバイスをエミュレーション画面上で擬似的に表示、再現するパネルエミュレータ手段を更に有し、
前記セレクタ手段は、判別した前記メッセージの対象が前記入出力デバイスであり、且つ前記入出力デバイスが前記メッセージに基づく処理を行えないとき、前記メッセージに基づく処理を前記パネルエミュレータ手段に委託する請求項９記載のエミュレーションシステム。
【請求項１２】
前記パネルエミュレータ手段は、前記第１仮想マシンと前記第２仮想マシンとの間を仲介し、前記メッセージに基づく処理を前記第１仮想マシン又は前記第２仮想マシンで実現可能なとき、前記メッセージを前記第１仮想マシン又は前記第２仮想マシンにそのまま送信し、前記メッセージに基づく処理を前記第１仮想マシン又は前記第２仮想マシンで実現不可能なとき、前記メッセージに基づく処理を前記エミュレーション画面上で擬似的に表示、再現する請求項１１記載のエミュレーションシステム。
【請求項１３】
前記第２エミュレーション装置は、各種入力デバイスの操作を同一のイベントとして取得可能な入力デバイスイベント取得手段を更に有し、
前記入力デバイスイベント取得手段は、画面を触れることで入力を行う入力デバイスの操作を、ポインティングデバイスによる入力の操作で擬似的に再現する請求項１２記載のエミュレーションシステム。
【請求項１４】
前記第１仮想マシン及び前記第２仮想マシンは、認証によって許可されたユーザに特定のディレクトリを参照させる請求項９乃至１３何れか一項記載のエミュレーションシステム。
【請求項１５】
前記第１仮想マシンは、前記コントローラのゲストオペレーティングシステムと前記コントローラのプログラムとを別々のファイルイメージに分離して管理し、
前記第２仮想マシンは、前記操作部のゲストオペレーティングシステムと前記操作部のプログラムとを別々のファイルイメージに分離して管理する請求項９乃至１３何れか一項記載のエミュレーションシステム。
【請求項１６】
前記第２仮想マシンは、前記第２ホストオペレーティングシステムに接続された実際のデバイスを認識し、前記操作部のゲストオペレーティングシステム上で操作可能なデバイスとして連携動作をテストする請求項９乃至１３何れか一項記載のエミュレーションシステム。
【請求項１７】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーションシステムであって、
第１ホストオペレーティングシステムと、前記第１ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第１仮想マシンと、を有する第１エミュレーション装置と、
第２ホストオペレーティングシステムと、前記第２ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第２仮想マシンと、を有する複数の第２エミュレーション装置と、
前記第１エミュレーション装置と前記第２エミュレーション装置との間を仲介するプロクシサーバ装置とを有し、
前記プロクシサーバ装置は、前記第１エミュレーション装置の使用状況又は負荷状況に基づき前記第２エミュレーション装置と通信を行う前記第２エミュレーション装置を選択するエミュレーションシステム。
【請求項１８】
前記第１エミュレーション装置と前記第２エミュレーション装置とは暗号化された経路を使用して通信を行う請求項９乃至１７何れか一項記載のエミュレーションシステム。
【請求項１９】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーションシステムであって、
ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる仮想マシンを有するエミュレーション装置を有し、
前記エミュレーション装置は、前記機器の前記コントローラと外部ネットワーク経由で通信を行うエミュレーションシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、エミュレーション装置及びエミュレーションシステムに係り、特に操作部を有する機器用のエミュレーション装置及びエミュレーションシステムに関する。
【背景技術】
【０００２】
例えば複合機（ＭＦＰ）の構成は、コピー，プリンタ，スキャナあるいはファクシミリなどの画像形成処理に関わるサービスを提供するコントローラと、ユーザからの入力操作の受付やユーザに対する描画表示を行う操作部とに大別される。近年、このような複合機に搭載されるプログラムの開発において、プログラムの動作確認はエミュレータを利用して行われることが多くなった（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
通常、エミュレータはパーソナルコンピュータ（ＰＣ）上で動作する。例えば複合機用のエミュレータを実行するＰＣ（エミュレータ用ＰＣ）のプラットフォームやオペレーティングシステム（ＯＳ）は、複合機が採用しているプラットフォームやＯＳと異なることがある。
【０００４】
このようにエミュレータ用ＰＣと、エミュレート対象のプログラムを搭載する複合機とでプラットフォームやＯＳが異なる場合は、エミュレート対象のプログラムを、エミュレータ用ＰＣのプラットフォームやＯＳに合わせて改造しなければならないという問題があった。
【０００５】
また、複合機の構成はコントローラと操作部とに大別される。このため、コントローラのプログラムと操作部のプログラムとは異なるプラットフォームやＯＳを採用していることがあった。このため、複合機に搭載されるプログラムをエミュレートする場合は、コントローラのプログラムに採用されているプラットフォームやＯＳと操作部のプログラムに採用されているプラットフォームやＯＳとをそれぞれ考慮して、エミュレータ用ＰＣのプラットフォームやＯＳに合わせて改造しなければならず、容易ではなかった。
【０００６】
なお、エミュレータはエミュレート対象のプログラムの動作確認に利用されるため、エミュレート対象のプログラムとの同時開発を求められることが一般的である。しかしながら従来のエミュレータはプログラムをエミュレートするため、エミュレート対象のプログラムをエミュレータ用ＰＣのプラットフォームやＯＳに合わせる改造（以下、単に改造という）が必要である。したがって、従来のエミュレータはエミュレート対象のプログラムとの同時開発が容易でなく、エミュレートを迅速に実行できないという問題があった。
【０００７】
本発明は、上記の点に鑑みなされたもので、操作部を有する機器のエミュレートを容易且つ迅速に実行できるエミュレーション装置及びエミュレーションシステムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するため、本発明は、実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーション装置であって、前記エミュレーション装置上で稼動するホストオペレーティングシステムと、前記ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第１仮想マシンと、前記ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第２仮想マシンと、を有し、前記コントローラと前記操作部との間の通信を、前記第１仮想マシンと前記第２仮想マシンとの通信として取り扱う。
【０００９】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１０】
本発明によれば、操作部を有する機器のエミュレートを容易且つ迅速に実行できるエミュレーション装置及びエミュレーションシステムを提供可能である。
【図面の簡単な説明】
【００１１】
【図１】複合機の一例の構成図である。
【図２】複合機のエミュレータ環境の一例を示す構成図である。
【図３】コントローラを仮想ＰＣ上で動作させたとき、ＰＣに表示される画面のイメージ図である。
【図４】操作部を仮想ＰＣ上で動作させたとき、ＰＣに表示される画面のイメージ図である。
【図５】パネルエミュレータ画面の一例のイメージ図である。
【図６】複合機のエミュレータ環境におけるＦｌａｓｈ画面表示処理の一例を表したシーケンス図である。
【図７】複合機のエミュレータ環境におけるＬＥＤ点灯処理の一例を表したシーケンス図である。
【図８】複合機のエミュレータ環境におけるパネルエミュレータを使用したハードキー押下処理の一例を表したシーケンス図である。
【図９】同一ＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。
【図１０】別々のＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。
【図１１】複合機のエミュレータ環境の他の例を示す構成図である。
【図１２】コントローラ側と操作部側との間の通信プロトコル例を表した構成図である。
【図１３】コントローラ側から操作部側への方向の通信の仕分け処理を表した一例のフローチャートである。
【図１４】操作部側からコントローラ側への方向の通信の仕分け処理を表した一例のフローチャートである。
【図１５】同一ＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。
【図１６】別々のＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。
【図１７】複合機のエミュレータ環境の他の例を示す構成図である。
【図１８】ポートフォワーディングの一例の説明図である。
【図１９】複合機のエミュレータ環境の他の例を示す構成図である。
【発明を実施するための形態】
【００１２】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明していく。なお、本実施例では操作部を有する機器の一例として複合機を例に説明するが、複合機に限らない。本発明は、ユーザが操作を行う操作部とユーザへのサービスを実現するモジュール群とを分離し、通信で処理命令の交換を行うＯＡ機器、組み込み機器及び電装装置にも適用できる。
【００１３】
また、以下の図面において記載されているプログラム，モジュール，アプリケーションのブロックは、ＣＰＵがプログラム，モジュール，アプリケーションを実行することにより実現される処理の主体を表している。
【実施例１】
【００１４】
図１は複合機の一例の構成図である。図１の複合機１は大別すると、コントローラ１０と操作部２０とを有する構成である。コントローラ１０は実処理を行うモジュール全体である。操作部２０はユーザに対する描画表示やユーザからの入力操作の受付を行う例えばオペレーションパネルである。
【００１５】
コントローラ１０はゲストＯＳ１１を搭載する。また、コントローラ１０はゲストＯＳ１１上で動作するコントローラモジュール群１２を有する。操作部２０はゲストＯＳ２１を搭載する。操作部２０はゲストＯＳ２１上で動作するサーバプログラム２２，デバイス／ＡＰＰセレクタモジュール２３，ＤｉｒｅｃｔＦＢ／ｗｍ２４，デバイス／ＡＰＰコントロール・モジュール２５を有する。また操作部２０はハードウェア／デバイス２６を有する。
【００１６】
サーバプログラム２２はコントローラ１０との通信を担当する。デバイス／ＡＰＰセレクタモジュール２３は外部から操作部２０への通信によるメッセージが到達した場合に、どの表示アプリケーション（ＡＰＰ）又はデバイスに対する処理命令か切り分けを行う。ＤｉｒｅｃｔＦＢ／ｗｍ２４は、ソフトウェアキーボード（ソフトキーボード），ブラウザ３１，ＦｌａｓｈＰｌａｙｅｒ３２等のフレームバッファをレイヤ管理し、適時、要求された画面を最前面に表示させ、マウスやタッチパネルといったインプットデバイスのイベントを取得可能なライブラリである。
【００１７】
図１の構成の複合機１では、フレームバッファへ画像の描画ができ，マウスやタッチパネルといったインプットデバイスのイベントを取得可能とするためにＤｉｒｅｃｔＦＢ／ｗｍ２４を採用している。ＤｉｒｅｃｔＦＢ／ｗｍ２４を使用することで、図１の構成の複合機１では、マウスやタッチパネル等による表示画面上への入力操作を同一のイベントとして、扱うことができる。
【００１８】
この結果、ＬＣＤ画面にタッチパネル形式を採用している複合機１のエミュレータ環境は汎用的な入出力装置（ディスプレイやマウス、キーボード）を有するＰＣ上であっても実現できる。
【００１９】
デバイス／ＡＰＰコントロール・モジュール２５は表示アプリケーション又はデバイスを制御するモジュール群である。ハードウェア／デバイス２６はユーザに対して物理的に提供された各種入出力デバイスである。
【００２０】
デバイス／ＡＰＰコントロール・モジュール２５は、ＬＥＤモジュール２７，ブザーモジュール２８，ハードキーモジュール２９，ソフトキーボードモジュール３０，ブラウザ３１，ＦｌａｓｈＰｌａｙｅｒ３２を有する。ハードウェア／デバイス２６は、ＬＥＤ３３，ブザー３４，ハードキー３５を有する。
【００２１】
ソフトキーボードモジュール３０，ブラウザ３１，ＦｌａｓｈＰｌａｙｅｒ３２は表示アプリケーションの一例である。ＬＥＤ３３，ブザー３４，ハードキー３５はデバイスの一例である。
【００２２】
ＬＥＤモジュール２７はＬＥＤ３３の点灯，消灯などを操作するものである。ＬＥＤモジュール２７はデバイスドライバであってもよい。ブザーモジュール２８はブザー３４の鳴動を操作するものである。ブザーモジュール２８はデバイスドライバであってもよい。ハードキーモジュール２９はハードキー３５の押下を検知し、イベント処理を行うものである。
【００２３】
ソフトキーボードモジュール３０は文字入力を行わせるソフトキーボードを画面上に表示させるものである。ブラウザ３１は操作部２０に組み込まれたＷｅｂページ閲覧アプリケーションである。ＦｌａｓｈＰｌａｙｅｒ３２は操作部２０に組み込まれたＦｌａｓｈコンテンツ再生プラグインである。
【００２４】
図１の複合機１は、コントローラ１０及び操作部２０のそれぞれに個別のゲストＯＳ１１，２１を搭載する。複合機１は、コントローラ１０と操作部２０との間に通信が発生するものである。ゲストＯＳ１１，２１は異種類のＯＳであっても同種類のＯＳであってもよい。
【００２５】
コントローラ１０から送信されたメッセージは、操作部２０のゲストＯＳ２１上で動作しているサーバプログラム２２によって受信される。サーバプログラム２２によって受信されたメッセージはデバイス／ＡＰＰセレクタモジュール２３に提供される。
【００２６】
デバイス／ＡＰＰセレクタモジュール２３は受信したメッセージを解析し、メッセージのヘッダなどに書かれた種別を見て、どのデバイスあるいは表示アプリケーションに対する要求なのかを判別する。
【００２７】
ＬＥＤ３３やブザー３４などのデバイスに対する要求であった場合、デバイス／ＡＰＰセレクタモジュール２３はＬＥＤモジュール２７やブザーモジュール２８など、そのまま対応するデバイスドライバあるいはモジュールに処理を要求する。
【００２８】
また、ブラウザ３１やＦｌａｓｈＰｌａｙｅｒ３２などの操作部２０の画面に関する要求であった場合、デバイス／ＡＰＰセレクタモジュール２３は画面の描画、レイヤ管理、タッチパネルなどのインプットデバイスの管理を行っているＤｉｒｅｃｔＦＢ／ｗｍ２４を介して、要求があった画面に表示切替する。例えばブラウザ３１の表示要求であった場合は、指定されたＵＲＬのロードを行う。
【００２９】
また、ハードキー３５の押下によるイベントをハードキーモジュール２９経由で受信した場合、デバイス／ＡＰＰセレクタモジュール２３は、どのハードキー３５が押下されたのか判別可能な形にメッセージを作成し、サーバプログラム２２を介してコントローラ１０にメッセージの送信を行う。
【００３０】
デバイス／ＡＰＰセレクタモジュール２３は、ブラウザ３１の表示完了、ＬＥＤ３３の点灯完了などの結果通知に関しても、サーバプログラム２２を介して、コントローラ１０に通知を行う。
【００３１】
図１のような構成を持つ複合機１は、ＰＣ上で動作するエミュレータ環境にすると図２のような構成となる。図２は複合機のエミュレータ環境の一例を示す構成図である。図２のエミュレータ環境では２つの仮想ＰＣ（バーチャルＰＣ）４０，４２を使用している。仮想ＰＣ４０，４２はＰＣ上に仮想マシン環境を構築するためのソフトウェアである。
【００３２】
仮想ＰＣ４０，４２をインストールしたＰＣは、一台のＰＣ上で仮想的に複数台のＰＣが動作しているように見せかけることができる。仮想化されたそれぞれのＰＣ（仮想マシン）上では別のＯＳを同時に動作させることができる。
【００３３】
図２のエミュレータ環境は、コントローラ１０のゲストＯＳ１１と、操作部２０のゲストＯＳ２１とを、それぞれ個別の仮想ＰＣ４０又は４２上で動作させている。仮想ＰＣ４０及び４２はホストＯＳ上で異なるＯＳをゲストＯＳ１１，２１として稼動させるためのプログラムである。ホストＯＳはＰＣ上にインストールされているＯＳである。ゲストＯＳ１１，２１は仮想ＰＣ４０及び４２を使用してホストＯＳ上で稼動されるＯＳである。
【００３４】
図３はコントローラを仮想ＰＣ上で動作させたとき、ＰＣに表示される画面のイメージ図である。図４は操作部を仮想ＰＣ上で動作させたとき、ＰＣに表示される画面のイメージ図である。
【００３５】
図２に示すエミュレータ環境は、コントローラ１０のコントローラモジュール群１２を動作させているゲストＯＳ１１、操作部２０のサーバプログラム２２，デバイス／ＡＰＰセレクタモジュール２３などを動作させているゲストＯＳ２１ごとに、仮想ＰＣ４０又は４２に移植できるため、図１に示す構成の複合機（実機）１上で動作させるモジュールやプログラムなどの流用が可能となる。また、図２に示すエミュレータ環境ではＩＰアドレスの設定やポートフォワーディングに関しても、仮想ＰＣ４０及び４２で容易に設定することができる。
【００３６】
ところで、ＰＣ上で実現されるエミュレータ環境では、ＰＣが有する汎用的な入出力装置（マウス，キーボード，ディスプレイなど）を利用することが多い。このため、ＰＣ上で実現されるエミュレータ環境では複合機１に特有の操作部（例えばＬＥＤ３３，ハードキー３５など）を、そのままの形でエミュレートしきれない場合があった。
【００３７】
図２に示すエミュレータ環境は、操作部２０の仮想ＰＣ４２に加えて外部にあるパネルエミュレータ４１を補助的に利用している。このため、操作部２０のゲストＯＳ２１はパネルエミュレータ４１との通信を行うクライアントプログラム４３を動作させる。
【００３８】
図２に示すエミュレータ環境では、コントローラ１０のゲストＯＳ１１が仮想ＰＣ４０で動作し、操作部２０のゲストＯＳ２１が仮想ＰＣ４２で動作している。図２におけるゲストＯＳ１１は図１と同様、コントローラモジュール群１２を動作させる。コントローラモジュール群１２は図１と同様であるため説明を省略する。
【００３９】
図２におけるゲストＯＳ２１は、サーバプログラム２２，デバイス／ＡＰＰセレクタモジュール２３，ＤｉｒｅｃｔＦＢ／ｗｍ２４，デバイス／ＡＰＰコントロール・モジュール２５，クライアントプログラム４３を動作させる。サーバプログラム２２，ＤｉｒｅｃｔＦＢ／ｗｍ２４，デバイス／ＡＰＰコントロール・モジュール２５は図１と同様であるため説明を省略する。
【００４０】
図２に示すエミュレータ環境では、デバイス／ＡＰＰセレクタモジュール２３は外部から操作部２０への通信によるメッセージが到達した場合に、どの表示アプリケーション又はデバイスに対する処理命令か切り分けを行う。なお、ハードウェア／デバイス２６が存在しない場合、デバイス／ＡＰＰセレクタモジュール２３はクライアントプログラム４３にメッセージをバイパスし、外部にあるパネルエミュレータ４１に処理を委託する。
【００４１】
クライアントプログラム４３は、ハードウェア／デバイス２６が存在しないためにパネルエミュレータ４１が必要となる場合、処理命令あるいは状態変化をｈｔｔｐなどのプロトコルを利用してパネルエミュレータ４１に通知する。クライアントプログラム４３は図２に示すエミュレータ環境におけるパネルエミュレータ４１との通信処理ブロックである。
【００４２】
パネルエミュレータ４１は複合機１のハードキー３５の押下処理、あるいはＬＥＤ３３の点灯などを擬似的に表示、再現するプログラムである。図５はパネルエミュレータ画面の一例のイメージ図である。
【００４３】
図５のパネルエミュレータ画面は、例えばＦｌａｓｈ及びＪａｖａ（登録商標）で作成される。図５のパネルエミュレータ画面は、複合機１のオペレーションパネル上にあるハードキー３５の押下処理、あるいはＬＥＤ３３の点灯などを擬似的に表示、再現する。
【００４４】
例えば、パネルエミュレータ画面上のハードキー３５に対応するボタンがマウス等でクリックされると、パネルエミュレータ４１はハードキー３５の押下イベントをメッセージとして操作部２０の仮想ＰＣ４２経由でコントローラ１０の仮想ＰＣ４０に送信する。パネルエミュレータ４１はＬＥＤ３３の点灯もＦｌａｓｈで作成されたパネルエミュレータ画面上のＬＥＤの画像を変化させることで、ユーザに通知できる。
【００４５】
なお、デバイス／ＡＰＰセレクタモジュール２３は、処理命令（処理要求）の対象となるハードウェア／デバイス２６が、仮想ＰＣ４２に存在しない、あるいは実行不可能、あるいは実行を試みた結果ＮＧである場合に、受信したメッセージをそのままの形でクライアントプログラム４３に送信する。クライアントプログラム４３は受信したメッセージをパネルエミュレータ４１に通知する。
【００４６】
図６は複合機のエミュレータ環境におけるＦｌａｓｈ画面表示処理の一例を表したシーケンス図である。図６のシーケンス図は図２に示すエミュレータ環境において、Ｆｌａｓｈ画面表示要求がコントローラ側のコントローラモジュール群１２から発生した場合の操作部側の振る舞いを表している。なお、Ｆｌａｓｈ画面の表示は、仮想ＰＣ４２上でも必要なライブラリ及びプログラムが動作するため、実行可能である。
【００４７】
ステップＳ１に進み、サーバプログラム２２はサーバソケットを作成する。ステップＳ２に進み、サーバプログラム２２はコントローラ側のコントローラモジュール群１２からのメッセージを受信する。ステップＳ３に進み、サーバプログラム２２はデバイス／ＡＰＰセレクタモジュール２３に対し、受信したメッセージの解析を要求する。
【００４８】
ステップＳ４に進み、デバイス／ＡＰＰセレクタモジュール２３は受信したメッセージを解析し、受信したメッセージのヘッダなどに書かれた種別を見て、ＦｌａｓｈＰｌａｙｅｒ３２に対する要求であることを判断する。デバイス／ＡＰＰセレクタモジュール２３はＤｉｒｅｃｔＦＢ／ｗｍ２４にＦｌａｓｈＰｌａｙｅｒ３２を通知する。
【００４９】
ステップＳ５に進み、ＤｉｒｅｃｔＦＢ／ｗｍ２４はＦｌａｓｈＰｌａｙｅｒ３２へアプリケーション切替を要求する。ステップＳ６に進み、ＦｌａｓｈＰｌａｙｅｒ３２はＦｌａｓｈ画面を描画し、仮想ＰＣ４２がインストールされたＰＣの表示装置にＦｌａｓｈ画面を表示する。
【００５０】
ステップＳ７に進み、ＦｌａｓｈＰｌａｙｅｒ３２はアプリケーション切替完了をＤｉｒｅｃｔＦＢ／ｗｍ２４に通知する。ステップＳ８に進み、ＤｉｒｅｃｔＦＢ／ｗｍ２４は受信処理結果通知をサーバプログラム２２に対して行う。ステップＳ９に進み、サーバプログラム２２はコントローラ側のコントローラモジュール群１２に対して受信処理結果を通知する。
【００５１】
したがって、コントローラ側のコントローラモジュール群１２は実機と同様、サーバプログラム２２，デバイス／ＡＰＰセレクタモジュール２３及びＤｉｒｅｃｔＦＢ／ｗｍ２４を介して、ＦｌａｓｈＰｌａｙｅｒ３２にＦｌａｓｈ画面の描画及び表示を行わせることができる。
【００５２】
図７は複合機のエミュレータ環境におけるＬＥＤ点灯処理の一例を表したシーケンス図である。図７のシーケンス図は図２に示すエミュレータ環境において、ＬＥＤ点灯要求がコントローラ側のコントローラモジュール群１２から発生した場合の操作部側の振る舞いを示している。
【００５３】
ステップＳ１１に進み、サーバプログラム２２はサーバソケットを作成する。ステップＳ１２に進み、クライアントプログラム４３はクライアントソケットを作成する。ステップＳ１３に進み、サーバプログラム２２はコントローラ側のコントローラモジュール群１２からのメッセージを受信する。ステップＳ１４に進み、サーバプログラム２２はデバイス／ＡＰＰセレクタモジュール２３に対し、受信したメッセージの解析を要求する。
【００５４】
ステップＳ１５に進み、デバイス／ＡＰＰセレクタモジュール２３は受信したメッセージを解析し、受信したメッセージのヘッダなどに書かれた種別を見て、処理要求対象のデバイスとしてＬＥＤ３３を選択する。デバイス／ＡＰＰセレクタモジュール２３はＬＥＤモジュール２７にＬＥＤ３３の点灯処理要求を行う。
【００５５】
しかし、ＬＥＤモジュール２７は仮想ＰＣ４２をインストールしたＰＣ上にＬＥＤ３３が存在しないため、ＬＥＤ３３の点灯処理を実行することができない。そこで、ＬＥＤモジュール２７はステップＳ１６に進み、ＬＥＤ３３の点灯処理を実行することができない旨をデバイス／ＡＰＰセレクタモジュール２３に通知する。
【００５６】
ステップＳ１７に進み、デバイス／ＡＰＰセレクタモジュール２３はＬＥＤ３３の点灯処理要求メッセージを作成し、クライアントプログラム４３に送信する。ステップＳ１８に進み、クライアントプログラム４３はＬＥＤ３３の点灯処理要求メッセージをパネルエミュレータ４１に送信する。ステップＳ１９に進み、パネルエミュレータ４１は受信したＬＥＤ３３の点灯処理要求メッセージに基づき、パネルエミュレータ画面上のＬＥＤ３３の画像を変化させることでＬＥＤ３３の状態変化（点灯）をユーザに通知できる。ステップＳ２０に進み、パネルエミュレータ４１は点灯処理結果通知をサーバプログラム２２に対して行う。
【００５７】
このように、コントローラ側のコントローラモジュール群１２はＬＥＤ３３の有無を考慮することなく、実機と同様、サーバプログラム２２を介してデバイス／ＡＰＰセレクタモジュール２３にＬＥＤ３３の点灯処理要求メッセージを送信すればよい。デバイス／ＡＰＰセレクタモジュール２３は仮想ＰＣ４２をインストールしたＰＣ上にＬＥＤ３３が無ければ、クライアントプログラム４３を介してＬＥＤ３３の点灯処理要求メッセージをパネルエミュレータ４１に送信し、パネルエミュレータ画面上のＬＥＤ３３の画像を点灯に変化させることで、ＬＥＤ３３の点灯をユーザに通知できる。
【００５８】
図８は複合機のエミュレータ環境におけるパネルエミュレータを使用したハードキー押下処理の一例を表したシーケンス図である。図８のシーケンス図は図２に示すエミュレータ環境において、パネルエミュレータ４１からパネルエミュレータ画面上のハードキー押下のイベントが通知された場合の操作部側の振る舞いを示している。
【００５９】
ステップＳ２１に進み、サーバプログラム２２はサーバソケットを作成する。ステップＳ２２に進み、クライアントプログラム４３はクライアントソケットを作成する。パネルエミュレータ画面上でハードキーが押下されると、パネルエミュレータ４１はステップＳ２３に進み、ハードキー押下イベントをメッセージでクライアントプログラム４３に通知する。
【００６０】
ステップＳ２４に進み、クライアントプログラム４３はデバイス／ＡＰＰセレクタモジュール２３に対し、受信したメッセージの解析を要求する。ステップＳ２５に進み、デバイス／ＡＰＰセレクタモジュール２３は受信したメッセージを解析し、受信したメッセージのヘッダなどに書かれた種別を見て、処理要求対象のデバイスとしてハードキー３５を選択する。デバイス／ＡＰＰセレクタモジュール２３はハードキーモジュール２９にハードキー３５のハードキー押下イベントを通知する。
【００６１】
ステップＳ２６に進み、ハードキーモジュール２９はハードキー押下イベントに応じた処理を行う。ステップＳ２７に進み、ハードキーモジュール２９はハードキー３５が押下された旨をデバイス／ＡＰＰセレクタモジュール２３に通知する。
【００６２】
ステップＳ２８に進み、デバイス／ＡＰＰセレクタモジュール２３はハードキー３５のハードキー押下イベントのメッセージを作成し、サーバプログラム２２に通知する。ステップＳ２９に進み、サーバプログラム２２はハードキー３５のハードキー押下イベントのメッセージをコントローラ側のコントローラモジュール群１２に送信する。ステップＳ３０に進み、コントローラモジュール群１２は受信したハードキー３５のハードキー押下イベントのメッセージに基づき、ハードキーイベント受信処理を行う。ステップＳ３１に進み、コントローラ側のコントローラモジュール群１２は送信処理結果をサーバプログラム２２に通知する。
【００６３】
このように、クライアントプログラム４３を介してデバイス／ＡＰＰセレクタモジュール２３に通知されたハードキー押下イベントは、実機のハードキー３５が押下されたものと同等のものとして扱われ、ハードキーモジュール２９で処理されて、ハードキー押下イベントがコントローラ側のコントローラモジュール群１２へ送信される。
【００６４】
図２に示すエミュレータ環境は、図９に示すように同一ＰＣ５０上で二つの仮想ＰＣ４０及び仮想ＰＣ４２を動作させてもよいし、図１０に示すように別々のＰＣ５０Ａ及びＰＣ５０Ｂ上で二つの仮想ＰＣ４０及び仮想ＰＣ４２を動作させてもよい。
【００６５】
図９は同一ＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。図９の構成図はＰＣ５０にインストールされているホストＯＳ５１上で仮想ＰＣ４０，パネルエミュレータ４１，仮想ＰＣ４２を動作させている。仮想ＰＣ４０，パネルエミュレータ４１，仮想ＰＣ４２には、それぞれローカルネットワークアドレスをアサインする。
【００６６】
図１０は別々のＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。図１０の構成図はＰＣ５０ＡにインストールされているホストＯＳ５１Ａ上で仮想ＰＣ４２，パネルエミュレータ４１を動作させ、ＰＣ５０ＢにインストールされているホストＯＳ５１Ｂ上で仮想ＰＣ４０を動作させている。
【００６７】
片方のＰＣ５０Ａ側ではユーザが操作することを想定して、タッチパネルの役割を果たす操作部の仮想ＰＣ４２とパネルエミュレータ４１とを動作させる。一方、もう片方のＰＣ５０Ｂ側ではコントローラの仮想ＰＣ４０を動作させる。仮想ＰＣ４０と仮想ＰＣ４２との間の通信は外部ネットワーク５２を介して行われる。
【００６８】
その他、図２のエミュレータ環境では各ディレクトリにユーザごとのアクセス制限の属性をつけ、管理することが考えられる。ＵＮＩＸ（登録商標）等のＯＳでは、各ディレクトリにユーザごとのアクセス制限の属性をつけ、管理する機能がコマンドシェルとして用意されているため、設定が容易である。ファイルのアップロードはＦＴＰを利用してもよいし、ＳＭＢ（Server Message Block）を利用して特定のディレクトリのみを公開とするように設定してもよい。
【００６９】
仮想ＰＣでは、仮想のハードディスクを持つことができる。仮想のハードディスクは仮想ＰＣ上でＯＳ部分と別のファイルイメージとして管理することができる。仮想のハードディスクはＯＳ部分との紐付け関係を「．ｖｍｘ」ファイルによって記載する。仮想ＰＣでは「．ｖｍｘ」ファイルに仮想のハードディスクのファイルイメージの名前を記載することにより、あたかも実際のＰＣにＵＳＢのハードディスクをつないだかのように認識される。
【００７０】
図２のエミュレータ環境では、仮想のハードディスクのファイルイメージを、開発プログラムのバージョンと対応して作成することにより、無駄にＯＳ部分のファイルイメージを保存する必要がなくなり、より効率的に開発プログラムのバージョン管理を行うことができる。
【００７１】
また、仮想ＰＣには２ポートのＵＳＢ１．１コントローラを提供するものがある。ホストＯＳとゲストＯＳとが共にＵＳＢをサポートしていれば、仮想ＰＣでは２つまでＵＳＢデバイスを使用することが可能である。例えば、操作部側の仮想ＰＣ４２を起動させているＰＣにドライバをインストールし、ＵＳＢにて外部機器を接続し、また仮想ＰＣ４２の設定を行うことで、図２のエミュレータ環境では、実際にＩＣカードリーダなどの外部機器を使って、認証などの評価を行うことができる。
【実施例２】
【００７２】
図１１は複合機のエミュレータ環境の他の例を示す構成図である。なお、図１１のエミュレータ環境は図２のエミュレータ環境と一部を除いて同様であるため同一部分について適宜説明を省略する。
【００７３】
図１１のエミュレータ環境は、コントローラ側の仮想ＰＣ４０と操作部側の仮想ＰＣ４２との通信を解析及び処理するため、パネルエミュレータ４１にブリッジ接続を行わせる方式である。操作部側の仮想ＰＣ４２は送信受信対象をパネルエミュレータ４１のＩＰアドレスに設定する。コントローラ側の仮想ＰＣ４０は送信受信対象をパネルエミュレータ４１のＩＰアドレスに設定する。
【００７４】
コントローラ側の仮想ＰＣ４０と操作部側の仮想ＰＣ４２との間の通信は例えば図１２に示すような通信プロトコルを利用して行われる。図１２はコントローラ側と操作部側との間の通信プロトコル例を表した構成図である。図１２の通信プロトコル例のようにコントローラ側と操作部側との間で送信受信されるメッセージは、ヘッダに記載された種別を参照することにより、操作部側のどのデバイス／ＡＰＰに対する要求か判別することができる。例えばヘッダに記載された種別が「０ｘ０１」であるコントローラ側と操作部側との間で送信受信されるメッセージは、ＬＥＤ３３に対する要求であると判別できる。
【００７５】
図１３は、コントローラ側から操作部側への方向の通信の仕分け処理を表した一例のフローチャートである。コントローラ側から操作部側への方向の通信は、例えばブラウザ３１やＦｌａｓｈＰｌａｙｅｒ３２などの画面表示要求、あるいはＬＥＤ３３の点灯要求がある。
【００７６】
ステップＳ４１に進み、コントローラ側の仮想ＰＣ４０はデバイス／ＡＰＰ操作要求処理によりメッセージをパネルエミュレータ４１に送信する。ステップＳ４２に進み、パネルエミュレータ４１はコントローラ側の仮想ＰＣ４０からメッセージを受信する。ステップＳ４３に進み、パネルエミュレータ４１は受信したメッセージによる要求が操作部側の仮想ＰＣ４２で実現可能かを、メッセージのヘッダに記載された種別により判定する。
【００７７】
例えばパネルエミュレータ４１はメッセージのヘッダに記載された種別毎に操作部側の仮想ＰＣ４２で実現可能かを記録したテーブルを利用することで、操作部側の仮想ＰＣ４２で実現可能かを判定できる。
【００７８】
操作部側の仮想ＰＣ４２で実現可能であれば、パネルエミュレータ４１はステップＳ４４に進み、メッセージを操作部側の仮想ＰＣ４２に送信する。例えばブラウザ３１やＦｌａｓｈＰｌａｙｅｒ３２の表示命令の場合はステップＳ４４に進む。
【００７９】
操作部側の仮想ＰＣ４２で実現可能でなければ、パネルエミュレータ４１はステップＳ４５に進み、自身がパネルエミュレータ画面上に例えばＬＥＤの点灯画像を表示するなどの代替手段でデバイス／ＡＰＰ操作を実現する。例えばＬＥＤ３３の点灯命令の場合はステップＳ４５に進む。
【００８０】
図１４は、操作部側からコントローラ側への方向の通信の仕分け処理を表した一例のフローチャートである。操作部側からコントローラ側への方向の通信は、例えばタッチパネルの操作やハードキー３５の押下、ソフトキーボードの操作の情報がある。
【００８１】
例えばタッチパネルやソフトキーボードの操作があると、操作部側の仮想ＰＣ４２はステップＳ５１に進み、パネルエミュレータ４１にメッセージを送信する。ステップＳ５２に進み、パネルエミュレータ４１は操作部側の仮想ＰＣ４２からメッセージを受信する。ステップＳ５５に進み、パネルエミュレータ４１は操作部側の仮想ＰＣ４２から受信したメッセージをコントローラ側の仮想ＰＣ４０に送信する。
【００８２】
一方、パネルエミュレータ画面上のハードキーの押下があると、パネルエミュレータ４１はステップＳ５３に進み、ハードキー押下処理を行う。ステップＳ５４に進み、パネルエミュレータ４１はコントローラ側の仮想ＰＣ４０に送信するハードキー押下イベントのメッセージを作成する。ステップＳ５５に進み、パネルエミュレータ４１は作成したメッセージをコントローラ側の仮想ＰＣ４０に送信する。
【００８３】
図１１に示すエミュレータ環境は、図１５に示すように同一ＰＣ５０上で二つの仮想ＰＣ４０及び仮想ＰＣ４２を動作させてもよいし、図１６に示すように別々のＰＣ５０Ａ及びＰＣ５０Ｂ上で二つの仮想ＰＣ４０及び仮想ＰＣ４２を動作させてもよい。
【００８４】
図１５は同一ＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。図１５の構成図は仮想ＰＣ４０と仮想ＰＣ４２とがパネルエミュレータ４１を介して通信する点で図９の構成図と異なる。また、図１６は別々のＰＣ上で二つの仮想ＰＣを動作させる例を表した一例の構成図である。図１６の構成図は仮想ＰＣ４０と仮想ＰＣ４２とがパネルエミュレータ４１を介して通信する点で図１０の構成図と異なる。
【実施例３】
【００８５】
図１７は複合機のエミュレータ環境の他の例を示す構成図である。図１７のエミュレータ環境は、操作部側の仮想ＰＣ４２を動作させるＰＣ６０と、コントローラ側の仮想ＰＣ４０Ａ〜４０Ｃを動作させる複数のサーバ６２Ａ〜６２Ｃと、プロクシサーバ６１とを有する構成である。プロクシサーバ６１はＰＣ６０とサーバ６２Ａ〜６２Ｃとの間に立てられる。
【００８６】
プロクシサーバ６１はＰＣ６０側にグローバルＩＰアドレスを設定し、サーバ６２Ａ〜６２Ｃ側にローカルＩＰアドレスを設定する。プロクシサーバ６１はグローバルＩＰアドレスとローカルＩＰアドレスとを使い分けることで、ＰＣ６０と同一のＩＰアドレスで通信を行い、使用状況や負荷状況に併せて適切なコントローラ側の仮想ＰＣ４０Ａ〜４０Ｃの何れかへ接続することができる。
【００８７】
また、図１７のエミュレータ環境では、プロクシサーバ６１も仮想ＰＣで実現し、仮想的なネットワークアダプタで、プロクシサーバ６１と仮想ＰＣ４０Ａ〜４０Ｃとの間で通信可能なローカルネットワークを使用することもできる。
【実施例４】
【００８８】
図１８はポートフォワーディングの一例の説明図である。ポートフォワーディングは図１８のようにローカルマシン（ローカルコンピュータ）７０の特定のポートに送られてきたデータを、別な通信経路を用いてリモートマシン（リモートコンピュータ）７１の特定ポートに送信する技術である。
【００８９】
ポートフォワーディングでは、一度、ローカルマシン７０とリモートマシン７１をＳＳＨ（Secure SHell）で接続し、その経路を使用してローカルマシン７０とリモートマシン７１との間で通信を行う。例えば図２のエミュレータ環境では、コントローラ側の仮想ＰＣ４０と操作部側の仮想ＰＣ４２とをＳＳＨで接続し、その経路を使用してコントローラ側の仮想ＰＣ４０と操作部側の仮想ＰＣ４２との間で通信を行う。
【００９０】
ポートフォワーディングの機能は、仮想ＰＣ４０，４２に標準で搭載されていることが多く、仮想ＰＣ４０，４２に標準で搭載されているポートフォワーディングの機能を利用することで、設定が容易となる。また、ポートフォワーディングの機能は、別途、ポートフォワーディングを行うアプリケーションを作成し、そのアプリケーション経由で通信を行うことで実現してもよい。
【実施例５】
【００９１】
図１９は複合機のエミュレータ環境の他の例を示す構成図である。なお、図１９のエミュレータ環境は図２のエミュレータ環境と一部を除いて同様であるため同一部分について適宜説明を省略する。
【００９２】
図１９のエミュレータ環境は、コントローラ１０と操作部２０との間で通信に使用しているポートについてポートフォワーディングを行うことで、操作部側の仮想ＰＣ４２から複合機（実機）のコントローラ１０を動作させることが可能となる。
【００９３】
例えば、操作部側の仮想ＰＣ４２が稼動しているＰＣ５０のグローバルＩＰアドレスへメッセージが送信された場合、所定のポートを介している場合は、操作部側の仮想ＰＣ４２のローカルＩＰアドレスへポートフォワーディングを行う。逆に、複合機１のグローバルＩＰアドレスへメッセージが送信された場合、所定のポートを介している場合は、コントローラ側のローカルＩＰアドレスへポートフォワーディングを行う。
【００９４】
（効果）
本実施例によれば、コントローラ１０で利用されているゲストＯＳ１１，操作部２０で利用されているゲストＯＳ２１ごとに仮想ＰＣ４０，４２を使用してエミュレートしているので、実際の複合機１で使用されているモジュールを流用することができる。特に操作部２０については、エミュレータ用に描画プログラムを再度作成する必要がないため、解像度、フォント、タッチパネル押下処理に対する位置取得処理に差分がなくなる。
【００９５】
したがって、本実施例によれば、エミュレータの開発コストを削減でき、実際の複合機１と同等の操作部２０のエミュレータを実現することができる。また、ネットワークの構成や設定に関しても、仮想ＰＣ４０，４２上で設定が行われるため、コントローラ１０と操作部２０と間で同一の設定手順を応用することができ、簡単に行うことができる。
【００９６】
また、操作部２０のエミュレータがＰＣ上で扱われるため、マウスやキーボードなどの汎用的な入力装置でハードウェアキーなどの複合機１に特有の入力装置の操作を再現することは困難である。本実施例によれば、ハードキー３５など、複合機１にデバイスが存在しない場合に、外部のパネルエミュレータ４１と通信をさせることで、例えばＦｌａｓｈで作成されたハードキーやＬＥＤで代替することが可能となる。
【００９７】
また、本実施例によれば、コントローラ１０と操作部２０との間についてブリッジ接続を行わせることで、コントローラ１０にエミュレータ環境用の通信プログラムを常駐させる必要がなく、実装が容易である。
【００９８】
複合機１においては、タッチパネル押下時の動作をＰＣ上のエミュレータで再現することが難しい。理由として、画面のどの部分を押下したのか、エミュレータ用に位置情報取得し、またブラウザのボタンやフォーム等どの表示部品にイベントを送信するべきか、判定を行う処理が別途必要になるからである。
【００９９】
しかし、本実施例によれば、操作部２０のプログラムにマウスによる画面操作とタッチパネルによる操作とを透過的に扱う画面描画ライブラリを使用することで、エミュレータにおいてマウスによって操作するというインプットデバイスの切替を容易に行うことができる。また、マウスによる画面操作とタッチパネルによる操作とを透過的に扱う画面描画ライブラリとしてはＤｉｒｅｃｔＦＢ／ｗｍ２４がすでに提供されているため、仮想ＰＣ４２で動作させるエミュレータにおいてタッチパネルによる操作の再現を容易に行うことができる。
【０１００】
また、画像生成処理のユーザサービスを担当している処理は技術的価値が高く、容易に参照、あるいは改ざんできないように隠蔽することが求められる。そこで、本実施例によれば、コントローラ１０の仮想ＰＣ４０をユーザが実際に操作をおこなうＰＣと別のＰＣで動作させることにより、直接、コントローラモジュール群１２を参照あるいは改ざんすることを回避できる。
【０１０１】
また、実際の複合機１で使用されているコントローラ１０と操作部２０との通信プロトコルを流用するため、悪意のあるユーザに通信を傍受されると問題がある。また、仮に複数のポートを使用していた場合、開発者であるユーザはファイアーウォール設定などを通常の業務用からエミュレータ環境用に変更する必要が出てきてしまう。そこで、本実施例によれば、コントローラ１０と操作部２０との間の通信を特定のポートに絞り、あるいはＳＳＨなどの暗号化されたトンネルを使用して外部ネットワーク５２で通信を行わせることにより、不正に傍受されるリスクを低下させることができる。
【０１０２】
また、複合機１は比較的大きな装置である。開発者であるユーザは必要に応じて機器の前に移動して評価を行う必要がある。本実施例によれば、操作部２０のエミュレータから複合機１の遠隔操作を可能にすることで、複合機１の前に移動する必要がなく、各ユーザの机上からテストを行うことが可能である。
【０１０３】
また、エミュレータ使用時は、後からインストールするアプリケーションやユーザが個別に持っている設定ファイルなどを随時使用することが想定される。しかしながら、コントローラモジュール群１２などの技術的な価値の高い箇所は、秘匿しておくことが求められる。そこで、本実施例によれば、特定のディレクトリのみをユーザから参照可能とすることで、セキュリティを高めることができる。
【０１０４】
また、本実施例では、常に、ゲストＯＳ１１，２１とコントローラ１０及び操作部２０のプログラム、ファイルを同一のファイルイメージで管理する必要があり、サイズが大きくなるという課題に対して、コントローラ１０及び操作部２０のプログラム、ファイルを別のファイルイメージとして管理することにより、ゲストＯＳ１１，２１と切り離して複製することが可能になり、バックアップや開発状況にあわせたバージョン管理などが可能になる。
【０１０５】
また、複合機１では、ＵＳＢと接続してファイルの転送を行ったり、あるいは外部機器とつなげてＩＣカード認証などを行ったりすることも考えられる。そこで、本実施例によれば、エミュレータ生成時に、これらのデバイスのエミュレート方式を検討、独自に開発することなく、ゲストＯＳ２１にドライバがインストールされていれば、仮想ＰＣ４２で外部機器を利用することができ、連携動作をテストすることができる。
【０１０６】
以上のように、本実施例によれば、コントローラ１０，操作部２０の両方に仮想ＰＣ４０，４２を利用することによって、例えそれぞれが異なるプラットフォームやゲストＯＳ１１，２１を採用している場合であっても、仮想ＰＣ４０，４２がハードウェア差分などを吸収し、複合機（実機）１上で動かしているプログラムを最大限に流用できる。
【０１０７】
また、本実施例によれば、補助的な位置づけで外部のパネルエミュレータ４１を通信によって使用できるようにすることで、擬似的に複合機１に特有の入力装置を再現することができる。
【０１０８】
また、本実施例によれば、コントローラ１０と操作部２０との間の受け渡しをする通信の経路、本数を増やしたくない場合などには、ブリッジ接続形式によって通信経路を一本化することができる。
【０１０９】
また、本実施例によれば、マウスとタッチパネルを同等、相互変換可能な入力装置として扱うライブラリを使用して操作部２０の画面描画処理を作成することで、エミュレータ生成時に特別に入力形式の変換処理などを行う必要がなくなる。
【０１１０】
また、本実施例によれば、コントローラ１０と操作部２０とをそれぞれ、クライアント及びサーバの関係で運用することにより、仮想ＰＣ４０，４２で利用するリソースを分割することができ、また、操作部２０及びパネルエミュレータ４１を有しているユーザから技術的な情報を隠蔽できる。
【０１１１】
また、本実施例によれば、コントローラ１０と操作部２０との間の通信を特定のポートに絞り、あるいはＳＳＨなどの暗号化されたトンネルを使用して外部ネットワークで通信を行わせることにより、不正に傍受されるリスクを低下させることができる。
【０１１２】
また、本実施例によれば、操作部２０のエミュレータから複合機１の遠隔操作を可能にすることで複合機１の前に移動する必要がなく、開発者である各ユーザの机上からテストを行うことが可能である。
【０１１３】
また、本実施例によれば、特定のディレクトリのみをユーザから参照可能とすることにより、コントローラモジュール群１２などの技術的な価値の高い箇所を秘匿しておくことができ、セキュリティを高めることができる。
【０１１４】
また、本実施例によれば、コントローラ１０及び操作部２０のプログラム、ファイルを別のファイルイメージとして管理することにより、ゲストＯＳ１１，２１と切り離して複製することが可能になり、バックアップや開発状況にあわせたバージョン管理などが可能となる。
【０１１５】
また、本実施例によれば、エミュレータ生成時に外部機器等のデバイスのエミュレート方式を検討、独自に開発することなく、ゲストＯＳ２１にドライバがインストールされていれば、仮想ＰＣ４２で外部機器を利用することができ、連携動作をテストすることができる。
【０１１６】
このように、本実施例ではエミュレータ用にコントローラ１０及び操作部２０のプログラムの改造を行うのでなく、仮想ＰＣ４０，４２を用いて複合機１に搭載されているゲストＯＳ１１，２１を動作させることにより、上層のプログラムに実際の機器であるか、あるいは仮想ＰＣ４０，４２上であるかを意識させずに動作させることができる。
【０１１７】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【０１１８】
１    複合機
１０    コントローラ
１１，２１    ゲストＯＳ
１２    コントローラモジュール群
２０    操作部
２２    サーバプログラム
２３    デバイス／ＡＰＰセレクタモジュール
２４    ＤｉｒｅｃｔＦＢ／ｗｍ
２５    デバイス／ＡＰＰコントロール・モジュール
２６    ハードウェア／デバイス
２７    ＬＥＤモジュール
２８    ブザーモジュール
２９    ハードキーモジュール
３０    ソフトキーボードモジュール
３１    ブラウザ
３２    ＦｌａｓｈＰｌａｙｅｒ
３３    ＬＥＤ
３４    ブザー
３５    ハードキー
４０，４０Ａ〜４０Ｃ，４２    仮想ＰＣ
４１    パネルエミュレータ
４３    クライアントプログラム
５０，５０Ａ，５０Ｂ，６０    ＰＣ
５１，５１Ａ，５１Ｂ    ホストＯＳ
５２    外部ネットワーク
６１    プロクシサーバ
６２Ａ〜６２Ｃ    サーバ
７０    ローカルマシン（ローカルコンピュータ）
７１    リモートマシン（リモートコンピュータ）
【先行技術文献】
【特許文献】
【０１１９】
【特許文献１】特開２００３−２８０８４４号公報
【図１】
2010191543.tif 000003
【図２】
2010191543.tif 000004
【図３】
2010191543.tif 000005
【図４】
2010191543.tif 000006
【図５】
2010191543.tif 000007
【図６】
2010191543.tif 000008
【図７】
2010191543.tif 000009
【図８】
2010191543.tif 000010
【図９】
2010191543.tif 000011
【図１０】
2010191543.tif 000012
【図１１】
2010191543.tif 000013
【図１２】
2010191543.tif 000014
【図１３】
2010191543.tif 000015
【図１４】
2010191543.tif 000016
【図１５】
2010191543.tif 000017
【図１６】
2010191543.tif 000018
【図１７】
2010191543.tif 000019
【図１８】
2010191543.tif 000020
【図１９】
2010191543.tif 000021