説明

エミュレーション装置及びエミュレーションシステム

【課題】操作部を有する機器のエミュレートを容易且つ迅速に実行できるエミュレーション装置及びエミュレーションシステムを提供することを目的とする。
【解決手段】コントローラと、描画表示及び入力操作を受け付ける操作部とを有する機器用のエミュレーション装置であって、ホストOS上でコントローラのゲストOS11を動作させ、ゲストOS11上でコントローラのプログラム12を動作させる第1仮想マシン40と、ホストOS上で操作部のゲストOS21を動作させ、操作部のゲストOS21上で操作部のプログラム23等を動作させる第2仮想マシン42とを有し、コントローラと操作部との間の通信を、第1仮想マシン40と第2仮想マシン42との通信として取り扱うことにより上記課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、エミュレーション装置及びエミュレーションシステムに係り、特に操作部を有する機器用のエミュレーション装置及びエミュレーションシステムに関する。
【背景技術】
【0002】
例えば複合機(MFP)の構成は、コピー,プリンタ,スキャナあるいはファクシミリなどの画像形成処理に関わるサービスを提供するコントローラと、ユーザからの入力操作の受付やユーザに対する描画表示を行う操作部とに大別される。近年、このような複合機に搭載されるプログラムの開発において、プログラムの動作確認はエミュレータを利用して行われることが多くなった(例えば特許文献1参照)。
【発明の概要】
【発明が解決しようとする課題】
【0003】
通常、エミュレータはパーソナルコンピュータ(PC)上で動作する。例えば複合機用のエミュレータを実行するPC(エミュレータ用PC)のプラットフォームやオペレーティングシステム(OS)は、複合機が採用しているプラットフォームやOSと異なることがある。
【0004】
このようにエミュレータ用PCと、エミュレート対象のプログラムを搭載する複合機とでプラットフォームやOSが異なる場合は、エミュレート対象のプログラムを、エミュレータ用PCのプラットフォームやOSに合わせて改造しなければならないという問題があった。
【0005】
また、複合機の構成はコントローラと操作部とに大別される。このため、コントローラのプログラムと操作部のプログラムとは異なるプラットフォームやOSを採用していることがあった。このため、複合機に搭載されるプログラムをエミュレートする場合は、コントローラのプログラムに採用されているプラットフォームやOSと操作部のプログラムに採用されているプラットフォームやOSとをそれぞれ考慮して、エミュレータ用PCのプラットフォームやOSに合わせて改造しなければならず、容易ではなかった。
【0006】
なお、エミュレータはエミュレート対象のプログラムの動作確認に利用されるため、エミュレート対象のプログラムとの同時開発を求められることが一般的である。しかしながら従来のエミュレータはプログラムをエミュレートするため、エミュレート対象のプログラムをエミュレータ用PCのプラットフォームやOSに合わせる改造(以下、単に改造という)が必要である。したがって、従来のエミュレータはエミュレート対象のプログラムとの同時開発が容易でなく、エミュレートを迅速に実行できないという問題があった。
【0007】
本発明は、上記の点に鑑みなされたもので、操作部を有する機器のエミュレートを容易且つ迅速に実行できるエミュレーション装置及びエミュレーションシステムを提供することを目的とする。
【課題を解決するための手段】
【0008】
上記課題を解決するため、本発明は、実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーション装置であって、前記エミュレーション装置上で稼動するホストオペレーティングシステムと、前記ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第1仮想マシンと、前記ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第2仮想マシンと、を有し、前記コントローラと前記操作部との間の通信を、前記第1仮想マシンと前記第2仮想マシンとの通信として取り扱う。
【0009】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【0010】
本発明によれば、操作部を有する機器のエミュレートを容易且つ迅速に実行できるエミュレーション装置及びエミュレーションシステムを提供可能である。
【図面の簡単な説明】
【0011】
【図1】複合機の一例の構成図である。
【図2】複合機のエミュレータ環境の一例を示す構成図である。
【図3】コントローラを仮想PC上で動作させたとき、PCに表示される画面のイメージ図である。
【図4】操作部を仮想PC上で動作させたとき、PCに表示される画面のイメージ図である。
【図5】パネルエミュレータ画面の一例のイメージ図である。
【図6】複合機のエミュレータ環境におけるFlash画面表示処理の一例を表したシーケンス図である。
【図7】複合機のエミュレータ環境におけるLED点灯処理の一例を表したシーケンス図である。
【図8】複合機のエミュレータ環境におけるパネルエミュレータを使用したハードキー押下処理の一例を表したシーケンス図である。
【図9】同一PC上で二つの仮想PCを動作させる例を表した一例の構成図である。
【図10】別々のPC上で二つの仮想PCを動作させる例を表した一例の構成図である。
【図11】複合機のエミュレータ環境の他の例を示す構成図である。
【図12】コントローラ側と操作部側との間の通信プロトコル例を表した構成図である。
【図13】コントローラ側から操作部側への方向の通信の仕分け処理を表した一例のフローチャートである。
【図14】操作部側からコントローラ側への方向の通信の仕分け処理を表した一例のフローチャートである。
【図15】同一PC上で二つの仮想PCを動作させる例を表した一例の構成図である。
【図16】別々のPC上で二つの仮想PCを動作させる例を表した一例の構成図である。
【図17】複合機のエミュレータ環境の他の例を示す構成図である。
【図18】ポートフォワーディングの一例の説明図である。
【図19】複合機のエミュレータ環境の他の例を示す構成図である。
【発明を実施するための形態】
【0012】
次に、本発明を実施するための形態を、以下の実施例に基づき図面を参照しつつ説明していく。なお、本実施例では操作部を有する機器の一例として複合機を例に説明するが、複合機に限らない。本発明は、ユーザが操作を行う操作部とユーザへのサービスを実現するモジュール群とを分離し、通信で処理命令の交換を行うOA機器、組み込み機器及び電装装置にも適用できる。
【0013】
また、以下の図面において記載されているプログラム,モジュール,アプリケーションのブロックは、CPUがプログラム,モジュール,アプリケーションを実行することにより実現される処理の主体を表している。
【実施例1】
【0014】
図1は複合機の一例の構成図である。図1の複合機1は大別すると、コントローラ10と操作部20とを有する構成である。コントローラ10は実処理を行うモジュール全体である。操作部20はユーザに対する描画表示やユーザからの入力操作の受付を行う例えばオペレーションパネルである。
【0015】
コントローラ10はゲストOS11を搭載する。また、コントローラ10はゲストOS11上で動作するコントローラモジュール群12を有する。操作部20はゲストOS21を搭載する。操作部20はゲストOS21上で動作するサーバプログラム22,デバイス/APPセレクタモジュール23,DirectFB/wm24,デバイス/APPコントロール・モジュール25を有する。また操作部20はハードウェア/デバイス26を有する。
【0016】
サーバプログラム22はコントローラ10との通信を担当する。デバイス/APPセレクタモジュール23は外部から操作部20への通信によるメッセージが到達した場合に、どの表示アプリケーション(APP)又はデバイスに対する処理命令か切り分けを行う。DirectFB/wm24は、ソフトウェアキーボード(ソフトキーボード),ブラウザ31,FlashPlayer32等のフレームバッファをレイヤ管理し、適時、要求された画面を最前面に表示させ、マウスやタッチパネルといったインプットデバイスのイベントを取得可能なライブラリである。
【0017】
図1の構成の複合機1では、フレームバッファへ画像の描画ができ,マウスやタッチパネルといったインプットデバイスのイベントを取得可能とするためにDirectFB/wm24を採用している。DirectFB/wm24を使用することで、図1の構成の複合機1では、マウスやタッチパネル等による表示画面上への入力操作を同一のイベントとして、扱うことができる。
【0018】
この結果、LCD画面にタッチパネル形式を採用している複合機1のエミュレータ環境は汎用的な入出力装置(ディスプレイやマウス、キーボード)を有するPC上であっても実現できる。
【0019】
デバイス/APPコントロール・モジュール25は表示アプリケーション又はデバイスを制御するモジュール群である。ハードウェア/デバイス26はユーザに対して物理的に提供された各種入出力デバイスである。
【0020】
デバイス/APPコントロール・モジュール25は、LEDモジュール27,ブザーモジュール28,ハードキーモジュール29,ソフトキーボードモジュール30,ブラウザ31,FlashPlayer32を有する。ハードウェア/デバイス26は、LED33,ブザー34,ハードキー35を有する。
【0021】
ソフトキーボードモジュール30,ブラウザ31,FlashPlayer32は表示アプリケーションの一例である。LED33,ブザー34,ハードキー35はデバイスの一例である。
【0022】
LEDモジュール27はLED33の点灯,消灯などを操作するものである。LEDモジュール27はデバイスドライバであってもよい。ブザーモジュール28はブザー34の鳴動を操作するものである。ブザーモジュール28はデバイスドライバであってもよい。ハードキーモジュール29はハードキー35の押下を検知し、イベント処理を行うものである。
【0023】
ソフトキーボードモジュール30は文字入力を行わせるソフトキーボードを画面上に表示させるものである。ブラウザ31は操作部20に組み込まれたWebページ閲覧アプリケーションである。FlashPlayer32は操作部20に組み込まれたFlashコンテンツ再生プラグインである。
【0024】
図1の複合機1は、コントローラ10及び操作部20のそれぞれに個別のゲストOS11,21を搭載する。複合機1は、コントローラ10と操作部20との間に通信が発生するものである。ゲストOS11,21は異種類のOSであっても同種類のOSであってもよい。
【0025】
コントローラ10から送信されたメッセージは、操作部20のゲストOS21上で動作しているサーバプログラム22によって受信される。サーバプログラム22によって受信されたメッセージはデバイス/APPセレクタモジュール23に提供される。
【0026】
デバイス/APPセレクタモジュール23は受信したメッセージを解析し、メッセージのヘッダなどに書かれた種別を見て、どのデバイスあるいは表示アプリケーションに対する要求なのかを判別する。
【0027】
LED33やブザー34などのデバイスに対する要求であった場合、デバイス/APPセレクタモジュール23はLEDモジュール27やブザーモジュール28など、そのまま対応するデバイスドライバあるいはモジュールに処理を要求する。
【0028】
また、ブラウザ31やFlashPlayer32などの操作部20の画面に関する要求であった場合、デバイス/APPセレクタモジュール23は画面の描画、レイヤ管理、タッチパネルなどのインプットデバイスの管理を行っているDirectFB/wm24を介して、要求があった画面に表示切替する。例えばブラウザ31の表示要求であった場合は、指定されたURLのロードを行う。
【0029】
また、ハードキー35の押下によるイベントをハードキーモジュール29経由で受信した場合、デバイス/APPセレクタモジュール23は、どのハードキー35が押下されたのか判別可能な形にメッセージを作成し、サーバプログラム22を介してコントローラ10にメッセージの送信を行う。
【0030】
デバイス/APPセレクタモジュール23は、ブラウザ31の表示完了、LED33の点灯完了などの結果通知に関しても、サーバプログラム22を介して、コントローラ10に通知を行う。
【0031】
図1のような構成を持つ複合機1は、PC上で動作するエミュレータ環境にすると図2のような構成となる。図2は複合機のエミュレータ環境の一例を示す構成図である。図2のエミュレータ環境では2つの仮想PC(バーチャルPC)40,42を使用している。仮想PC40,42はPC上に仮想マシン環境を構築するためのソフトウェアである。
【0032】
仮想PC40,42をインストールしたPCは、一台のPC上で仮想的に複数台のPCが動作しているように見せかけることができる。仮想化されたそれぞれのPC(仮想マシン)上では別のOSを同時に動作させることができる。
【0033】
図2のエミュレータ環境は、コントローラ10のゲストOS11と、操作部20のゲストOS21とを、それぞれ個別の仮想PC40又は42上で動作させている。仮想PC40及び42はホストOS上で異なるOSをゲストOS11,21として稼動させるためのプログラムである。ホストOSはPC上にインストールされているOSである。ゲストOS11,21は仮想PC40及び42を使用してホストOS上で稼動されるOSである。
【0034】
図3はコントローラを仮想PC上で動作させたとき、PCに表示される画面のイメージ図である。図4は操作部を仮想PC上で動作させたとき、PCに表示される画面のイメージ図である。
【0035】
図2に示すエミュレータ環境は、コントローラ10のコントローラモジュール群12を動作させているゲストOS11、操作部20のサーバプログラム22,デバイス/APPセレクタモジュール23などを動作させているゲストOS21ごとに、仮想PC40又は42に移植できるため、図1に示す構成の複合機(実機)1上で動作させるモジュールやプログラムなどの流用が可能となる。また、図2に示すエミュレータ環境ではIPアドレスの設定やポートフォワーディングに関しても、仮想PC40及び42で容易に設定することができる。
【0036】
ところで、PC上で実現されるエミュレータ環境では、PCが有する汎用的な入出力装置(マウス,キーボード,ディスプレイなど)を利用することが多い。このため、PC上で実現されるエミュレータ環境では複合機1に特有の操作部(例えばLED33,ハードキー35など)を、そのままの形でエミュレートしきれない場合があった。
【0037】
図2に示すエミュレータ環境は、操作部20の仮想PC42に加えて外部にあるパネルエミュレータ41を補助的に利用している。このため、操作部20のゲストOS21はパネルエミュレータ41との通信を行うクライアントプログラム43を動作させる。
【0038】
図2に示すエミュレータ環境では、コントローラ10のゲストOS11が仮想PC40で動作し、操作部20のゲストOS21が仮想PC42で動作している。図2におけるゲストOS11は図1と同様、コントローラモジュール群12を動作させる。コントローラモジュール群12は図1と同様であるため説明を省略する。
【0039】
図2におけるゲストOS21は、サーバプログラム22,デバイス/APPセレクタモジュール23,DirectFB/wm24,デバイス/APPコントロール・モジュール25,クライアントプログラム43を動作させる。サーバプログラム22,DirectFB/wm24,デバイス/APPコントロール・モジュール25は図1と同様であるため説明を省略する。
【0040】
図2に示すエミュレータ環境では、デバイス/APPセレクタモジュール23は外部から操作部20への通信によるメッセージが到達した場合に、どの表示アプリケーション又はデバイスに対する処理命令か切り分けを行う。なお、ハードウェア/デバイス26が存在しない場合、デバイス/APPセレクタモジュール23はクライアントプログラム43にメッセージをバイパスし、外部にあるパネルエミュレータ41に処理を委託する。
【0041】
クライアントプログラム43は、ハードウェア/デバイス26が存在しないためにパネルエミュレータ41が必要となる場合、処理命令あるいは状態変化をhttpなどのプロトコルを利用してパネルエミュレータ41に通知する。クライアントプログラム43は図2に示すエミュレータ環境におけるパネルエミュレータ41との通信処理ブロックである。
【0042】
パネルエミュレータ41は複合機1のハードキー35の押下処理、あるいはLED33の点灯などを擬似的に表示、再現するプログラムである。図5はパネルエミュレータ画面の一例のイメージ図である。
【0043】
図5のパネルエミュレータ画面は、例えばFlash及びJava(登録商標)で作成される。図5のパネルエミュレータ画面は、複合機1のオペレーションパネル上にあるハードキー35の押下処理、あるいはLED33の点灯などを擬似的に表示、再現する。
【0044】
例えば、パネルエミュレータ画面上のハードキー35に対応するボタンがマウス等でクリックされると、パネルエミュレータ41はハードキー35の押下イベントをメッセージとして操作部20の仮想PC42経由でコントローラ10の仮想PC40に送信する。パネルエミュレータ41はLED33の点灯もFlashで作成されたパネルエミュレータ画面上のLEDの画像を変化させることで、ユーザに通知できる。
【0045】
なお、デバイス/APPセレクタモジュール23は、処理命令(処理要求)の対象となるハードウェア/デバイス26が、仮想PC42に存在しない、あるいは実行不可能、あるいは実行を試みた結果NGである場合に、受信したメッセージをそのままの形でクライアントプログラム43に送信する。クライアントプログラム43は受信したメッセージをパネルエミュレータ41に通知する。
【0046】
図6は複合機のエミュレータ環境におけるFlash画面表示処理の一例を表したシーケンス図である。図6のシーケンス図は図2に示すエミュレータ環境において、Flash画面表示要求がコントローラ側のコントローラモジュール群12から発生した場合の操作部側の振る舞いを表している。なお、Flash画面の表示は、仮想PC42上でも必要なライブラリ及びプログラムが動作するため、実行可能である。
【0047】
ステップS1に進み、サーバプログラム22はサーバソケットを作成する。ステップS2に進み、サーバプログラム22はコントローラ側のコントローラモジュール群12からのメッセージを受信する。ステップS3に進み、サーバプログラム22はデバイス/APPセレクタモジュール23に対し、受信したメッセージの解析を要求する。
【0048】
ステップS4に進み、デバイス/APPセレクタモジュール23は受信したメッセージを解析し、受信したメッセージのヘッダなどに書かれた種別を見て、FlashPlayer32に対する要求であることを判断する。デバイス/APPセレクタモジュール23はDirectFB/wm24にFlashPlayer32を通知する。
【0049】
ステップS5に進み、DirectFB/wm24はFlashPlayer32へアプリケーション切替を要求する。ステップS6に進み、FlashPlayer32はFlash画面を描画し、仮想PC42がインストールされたPCの表示装置にFlash画面を表示する。
【0050】
ステップS7に進み、FlashPlayer32はアプリケーション切替完了をDirectFB/wm24に通知する。ステップS8に進み、DirectFB/wm24は受信処理結果通知をサーバプログラム22に対して行う。ステップS9に進み、サーバプログラム22はコントローラ側のコントローラモジュール群12に対して受信処理結果を通知する。
【0051】
したがって、コントローラ側のコントローラモジュール群12は実機と同様、サーバプログラム22,デバイス/APPセレクタモジュール23及びDirectFB/wm24を介して、FlashPlayer32にFlash画面の描画及び表示を行わせることができる。
【0052】
図7は複合機のエミュレータ環境におけるLED点灯処理の一例を表したシーケンス図である。図7のシーケンス図は図2に示すエミュレータ環境において、LED点灯要求がコントローラ側のコントローラモジュール群12から発生した場合の操作部側の振る舞いを示している。
【0053】
ステップS11に進み、サーバプログラム22はサーバソケットを作成する。ステップS12に進み、クライアントプログラム43はクライアントソケットを作成する。ステップS13に進み、サーバプログラム22はコントローラ側のコントローラモジュール群12からのメッセージを受信する。ステップS14に進み、サーバプログラム22はデバイス/APPセレクタモジュール23に対し、受信したメッセージの解析を要求する。
【0054】
ステップS15に進み、デバイス/APPセレクタモジュール23は受信したメッセージを解析し、受信したメッセージのヘッダなどに書かれた種別を見て、処理要求対象のデバイスとしてLED33を選択する。デバイス/APPセレクタモジュール23はLEDモジュール27にLED33の点灯処理要求を行う。
【0055】
しかし、LEDモジュール27は仮想PC42をインストールしたPC上にLED33が存在しないため、LED33の点灯処理を実行することができない。そこで、LEDモジュール27はステップS16に進み、LED33の点灯処理を実行することができない旨をデバイス/APPセレクタモジュール23に通知する。
【0056】
ステップS17に進み、デバイス/APPセレクタモジュール23はLED33の点灯処理要求メッセージを作成し、クライアントプログラム43に送信する。ステップS18に進み、クライアントプログラム43はLED33の点灯処理要求メッセージをパネルエミュレータ41に送信する。ステップS19に進み、パネルエミュレータ41は受信したLED33の点灯処理要求メッセージに基づき、パネルエミュレータ画面上のLED33の画像を変化させることでLED33の状態変化(点灯)をユーザに通知できる。ステップS20に進み、パネルエミュレータ41は点灯処理結果通知をサーバプログラム22に対して行う。
【0057】
このように、コントローラ側のコントローラモジュール群12はLED33の有無を考慮することなく、実機と同様、サーバプログラム22を介してデバイス/APPセレクタモジュール23にLED33の点灯処理要求メッセージを送信すればよい。デバイス/APPセレクタモジュール23は仮想PC42をインストールしたPC上にLED33が無ければ、クライアントプログラム43を介してLED33の点灯処理要求メッセージをパネルエミュレータ41に送信し、パネルエミュレータ画面上のLED33の画像を点灯に変化させることで、LED33の点灯をユーザに通知できる。
【0058】
図8は複合機のエミュレータ環境におけるパネルエミュレータを使用したハードキー押下処理の一例を表したシーケンス図である。図8のシーケンス図は図2に示すエミュレータ環境において、パネルエミュレータ41からパネルエミュレータ画面上のハードキー押下のイベントが通知された場合の操作部側の振る舞いを示している。
【0059】
ステップS21に進み、サーバプログラム22はサーバソケットを作成する。ステップS22に進み、クライアントプログラム43はクライアントソケットを作成する。パネルエミュレータ画面上でハードキーが押下されると、パネルエミュレータ41はステップS23に進み、ハードキー押下イベントをメッセージでクライアントプログラム43に通知する。
【0060】
ステップS24に進み、クライアントプログラム43はデバイス/APPセレクタモジュール23に対し、受信したメッセージの解析を要求する。ステップS25に進み、デバイス/APPセレクタモジュール23は受信したメッセージを解析し、受信したメッセージのヘッダなどに書かれた種別を見て、処理要求対象のデバイスとしてハードキー35を選択する。デバイス/APPセレクタモジュール23はハードキーモジュール29にハードキー35のハードキー押下イベントを通知する。
【0061】
ステップS26に進み、ハードキーモジュール29はハードキー押下イベントに応じた処理を行う。ステップS27に進み、ハードキーモジュール29はハードキー35が押下された旨をデバイス/APPセレクタモジュール23に通知する。
【0062】
ステップS28に進み、デバイス/APPセレクタモジュール23はハードキー35のハードキー押下イベントのメッセージを作成し、サーバプログラム22に通知する。ステップS29に進み、サーバプログラム22はハードキー35のハードキー押下イベントのメッセージをコントローラ側のコントローラモジュール群12に送信する。ステップS30に進み、コントローラモジュール群12は受信したハードキー35のハードキー押下イベントのメッセージに基づき、ハードキーイベント受信処理を行う。ステップS31に進み、コントローラ側のコントローラモジュール群12は送信処理結果をサーバプログラム22に通知する。
【0063】
このように、クライアントプログラム43を介してデバイス/APPセレクタモジュール23に通知されたハードキー押下イベントは、実機のハードキー35が押下されたものと同等のものとして扱われ、ハードキーモジュール29で処理されて、ハードキー押下イベントがコントローラ側のコントローラモジュール群12へ送信される。
【0064】
図2に示すエミュレータ環境は、図9に示すように同一PC50上で二つの仮想PC40及び仮想PC42を動作させてもよいし、図10に示すように別々のPC50A及びPC50B上で二つの仮想PC40及び仮想PC42を動作させてもよい。
【0065】
図9は同一PC上で二つの仮想PCを動作させる例を表した一例の構成図である。図9の構成図はPC50にインストールされているホストOS51上で仮想PC40,パネルエミュレータ41,仮想PC42を動作させている。仮想PC40,パネルエミュレータ41,仮想PC42には、それぞれローカルネットワークアドレスをアサインする。
【0066】
図10は別々のPC上で二つの仮想PCを動作させる例を表した一例の構成図である。図10の構成図はPC50AにインストールされているホストOS51A上で仮想PC42,パネルエミュレータ41を動作させ、PC50BにインストールされているホストOS51B上で仮想PC40を動作させている。
【0067】
片方のPC50A側ではユーザが操作することを想定して、タッチパネルの役割を果たす操作部の仮想PC42とパネルエミュレータ41とを動作させる。一方、もう片方のPC50B側ではコントローラの仮想PC40を動作させる。仮想PC40と仮想PC42との間の通信は外部ネットワーク52を介して行われる。
【0068】
その他、図2のエミュレータ環境では各ディレクトリにユーザごとのアクセス制限の属性をつけ、管理することが考えられる。UNIX(登録商標)等のOSでは、各ディレクトリにユーザごとのアクセス制限の属性をつけ、管理する機能がコマンドシェルとして用意されているため、設定が容易である。ファイルのアップロードはFTPを利用してもよいし、SMB(Server Message Block)を利用して特定のディレクトリのみを公開とするように設定してもよい。
【0069】
仮想PCでは、仮想のハードディスクを持つことができる。仮想のハードディスクは仮想PC上でOS部分と別のファイルイメージとして管理することができる。仮想のハードディスクはOS部分との紐付け関係を「.vmx」ファイルによって記載する。仮想PCでは「.vmx」ファイルに仮想のハードディスクのファイルイメージの名前を記載することにより、あたかも実際のPCにUSBのハードディスクをつないだかのように認識される。
【0070】
図2のエミュレータ環境では、仮想のハードディスクのファイルイメージを、開発プログラムのバージョンと対応して作成することにより、無駄にOS部分のファイルイメージを保存する必要がなくなり、より効率的に開発プログラムのバージョン管理を行うことができる。
【0071】
また、仮想PCには2ポートのUSB1.1コントローラを提供するものがある。ホストOSとゲストOSとが共にUSBをサポートしていれば、仮想PCでは2つまでUSBデバイスを使用することが可能である。例えば、操作部側の仮想PC42を起動させているPCにドライバをインストールし、USBにて外部機器を接続し、また仮想PC42の設定を行うことで、図2のエミュレータ環境では、実際にICカードリーダなどの外部機器を使って、認証などの評価を行うことができる。
【実施例2】
【0072】
図11は複合機のエミュレータ環境の他の例を示す構成図である。なお、図11のエミュレータ環境は図2のエミュレータ環境と一部を除いて同様であるため同一部分について適宜説明を省略する。
【0073】
図11のエミュレータ環境は、コントローラ側の仮想PC40と操作部側の仮想PC42との通信を解析及び処理するため、パネルエミュレータ41にブリッジ接続を行わせる方式である。操作部側の仮想PC42は送信受信対象をパネルエミュレータ41のIPアドレスに設定する。コントローラ側の仮想PC40は送信受信対象をパネルエミュレータ41のIPアドレスに設定する。
【0074】
コントローラ側の仮想PC40と操作部側の仮想PC42との間の通信は例えば図12に示すような通信プロトコルを利用して行われる。図12はコントローラ側と操作部側との間の通信プロトコル例を表した構成図である。図12の通信プロトコル例のようにコントローラ側と操作部側との間で送信受信されるメッセージは、ヘッダに記載された種別を参照することにより、操作部側のどのデバイス/APPに対する要求か判別することができる。例えばヘッダに記載された種別が「0x01」であるコントローラ側と操作部側との間で送信受信されるメッセージは、LED33に対する要求であると判別できる。
【0075】
図13は、コントローラ側から操作部側への方向の通信の仕分け処理を表した一例のフローチャートである。コントローラ側から操作部側への方向の通信は、例えばブラウザ31やFlashPlayer32などの画面表示要求、あるいはLED33の点灯要求がある。
【0076】
ステップS41に進み、コントローラ側の仮想PC40はデバイス/APP操作要求処理によりメッセージをパネルエミュレータ41に送信する。ステップS42に進み、パネルエミュレータ41はコントローラ側の仮想PC40からメッセージを受信する。ステップS43に進み、パネルエミュレータ41は受信したメッセージによる要求が操作部側の仮想PC42で実現可能かを、メッセージのヘッダに記載された種別により判定する。
【0077】
例えばパネルエミュレータ41はメッセージのヘッダに記載された種別毎に操作部側の仮想PC42で実現可能かを記録したテーブルを利用することで、操作部側の仮想PC42で実現可能かを判定できる。
【0078】
操作部側の仮想PC42で実現可能であれば、パネルエミュレータ41はステップS44に進み、メッセージを操作部側の仮想PC42に送信する。例えばブラウザ31やFlashPlayer32の表示命令の場合はステップS44に進む。
【0079】
操作部側の仮想PC42で実現可能でなければ、パネルエミュレータ41はステップS45に進み、自身がパネルエミュレータ画面上に例えばLEDの点灯画像を表示するなどの代替手段でデバイス/APP操作を実現する。例えばLED33の点灯命令の場合はステップS45に進む。
【0080】
図14は、操作部側からコントローラ側への方向の通信の仕分け処理を表した一例のフローチャートである。操作部側からコントローラ側への方向の通信は、例えばタッチパネルの操作やハードキー35の押下、ソフトキーボードの操作の情報がある。
【0081】
例えばタッチパネルやソフトキーボードの操作があると、操作部側の仮想PC42はステップS51に進み、パネルエミュレータ41にメッセージを送信する。ステップS52に進み、パネルエミュレータ41は操作部側の仮想PC42からメッセージを受信する。ステップS55に進み、パネルエミュレータ41は操作部側の仮想PC42から受信したメッセージをコントローラ側の仮想PC40に送信する。
【0082】
一方、パネルエミュレータ画面上のハードキーの押下があると、パネルエミュレータ41はステップS53に進み、ハードキー押下処理を行う。ステップS54に進み、パネルエミュレータ41はコントローラ側の仮想PC40に送信するハードキー押下イベントのメッセージを作成する。ステップS55に進み、パネルエミュレータ41は作成したメッセージをコントローラ側の仮想PC40に送信する。
【0083】
図11に示すエミュレータ環境は、図15に示すように同一PC50上で二つの仮想PC40及び仮想PC42を動作させてもよいし、図16に示すように別々のPC50A及びPC50B上で二つの仮想PC40及び仮想PC42を動作させてもよい。
【0084】
図15は同一PC上で二つの仮想PCを動作させる例を表した一例の構成図である。図15の構成図は仮想PC40と仮想PC42とがパネルエミュレータ41を介して通信する点で図9の構成図と異なる。また、図16は別々のPC上で二つの仮想PCを動作させる例を表した一例の構成図である。図16の構成図は仮想PC40と仮想PC42とがパネルエミュレータ41を介して通信する点で図10の構成図と異なる。
【実施例3】
【0085】
図17は複合機のエミュレータ環境の他の例を示す構成図である。図17のエミュレータ環境は、操作部側の仮想PC42を動作させるPC60と、コントローラ側の仮想PC40A〜40Cを動作させる複数のサーバ62A〜62Cと、プロクシサーバ61とを有する構成である。プロクシサーバ61はPC60とサーバ62A〜62Cとの間に立てられる。
【0086】
プロクシサーバ61はPC60側にグローバルIPアドレスを設定し、サーバ62A〜62C側にローカルIPアドレスを設定する。プロクシサーバ61はグローバルIPアドレスとローカルIPアドレスとを使い分けることで、PC60と同一のIPアドレスで通信を行い、使用状況や負荷状況に併せて適切なコントローラ側の仮想PC40A〜40Cの何れかへ接続することができる。
【0087】
また、図17のエミュレータ環境では、プロクシサーバ61も仮想PCで実現し、仮想的なネットワークアダプタで、プロクシサーバ61と仮想PC40A〜40Cとの間で通信可能なローカルネットワークを使用することもできる。
【実施例4】
【0088】
図18はポートフォワーディングの一例の説明図である。ポートフォワーディングは図18のようにローカルマシン(ローカルコンピュータ)70の特定のポートに送られてきたデータを、別な通信経路を用いてリモートマシン(リモートコンピュータ)71の特定ポートに送信する技術である。
【0089】
ポートフォワーディングでは、一度、ローカルマシン70とリモートマシン71をSSH(Secure SHell)で接続し、その経路を使用してローカルマシン70とリモートマシン71との間で通信を行う。例えば図2のエミュレータ環境では、コントローラ側の仮想PC40と操作部側の仮想PC42とをSSHで接続し、その経路を使用してコントローラ側の仮想PC40と操作部側の仮想PC42との間で通信を行う。
【0090】
ポートフォワーディングの機能は、仮想PC40,42に標準で搭載されていることが多く、仮想PC40,42に標準で搭載されているポートフォワーディングの機能を利用することで、設定が容易となる。また、ポートフォワーディングの機能は、別途、ポートフォワーディングを行うアプリケーションを作成し、そのアプリケーション経由で通信を行うことで実現してもよい。
【実施例5】
【0091】
図19は複合機のエミュレータ環境の他の例を示す構成図である。なお、図19のエミュレータ環境は図2のエミュレータ環境と一部を除いて同様であるため同一部分について適宜説明を省略する。
【0092】
図19のエミュレータ環境は、コントローラ10と操作部20との間で通信に使用しているポートについてポートフォワーディングを行うことで、操作部側の仮想PC42から複合機(実機)のコントローラ10を動作させることが可能となる。
【0093】
例えば、操作部側の仮想PC42が稼動しているPC50のグローバルIPアドレスへメッセージが送信された場合、所定のポートを介している場合は、操作部側の仮想PC42のローカルIPアドレスへポートフォワーディングを行う。逆に、複合機1のグローバルIPアドレスへメッセージが送信された場合、所定のポートを介している場合は、コントローラ側のローカルIPアドレスへポートフォワーディングを行う。
【0094】
(効果)
本実施例によれば、コントローラ10で利用されているゲストOS11,操作部20で利用されているゲストOS21ごとに仮想PC40,42を使用してエミュレートしているので、実際の複合機1で使用されているモジュールを流用することができる。特に操作部20については、エミュレータ用に描画プログラムを再度作成する必要がないため、解像度、フォント、タッチパネル押下処理に対する位置取得処理に差分がなくなる。
【0095】
したがって、本実施例によれば、エミュレータの開発コストを削減でき、実際の複合機1と同等の操作部20のエミュレータを実現することができる。また、ネットワークの構成や設定に関しても、仮想PC40,42上で設定が行われるため、コントローラ10と操作部20と間で同一の設定手順を応用することができ、簡単に行うことができる。
【0096】
また、操作部20のエミュレータがPC上で扱われるため、マウスやキーボードなどの汎用的な入力装置でハードウェアキーなどの複合機1に特有の入力装置の操作を再現することは困難である。本実施例によれば、ハードキー35など、複合機1にデバイスが存在しない場合に、外部のパネルエミュレータ41と通信をさせることで、例えばFlashで作成されたハードキーやLEDで代替することが可能となる。
【0097】
また、本実施例によれば、コントローラ10と操作部20との間についてブリッジ接続を行わせることで、コントローラ10にエミュレータ環境用の通信プログラムを常駐させる必要がなく、実装が容易である。
【0098】
複合機1においては、タッチパネル押下時の動作をPC上のエミュレータで再現することが難しい。理由として、画面のどの部分を押下したのか、エミュレータ用に位置情報取得し、またブラウザのボタンやフォーム等どの表示部品にイベントを送信するべきか、判定を行う処理が別途必要になるからである。
【0099】
しかし、本実施例によれば、操作部20のプログラムにマウスによる画面操作とタッチパネルによる操作とを透過的に扱う画面描画ライブラリを使用することで、エミュレータにおいてマウスによって操作するというインプットデバイスの切替を容易に行うことができる。また、マウスによる画面操作とタッチパネルによる操作とを透過的に扱う画面描画ライブラリとしてはDirectFB/wm24がすでに提供されているため、仮想PC42で動作させるエミュレータにおいてタッチパネルによる操作の再現を容易に行うことができる。
【0100】
また、画像生成処理のユーザサービスを担当している処理は技術的価値が高く、容易に参照、あるいは改ざんできないように隠蔽することが求められる。そこで、本実施例によれば、コントローラ10の仮想PC40をユーザが実際に操作をおこなうPCと別のPCで動作させることにより、直接、コントローラモジュール群12を参照あるいは改ざんすることを回避できる。
【0101】
また、実際の複合機1で使用されているコントローラ10と操作部20との通信プロトコルを流用するため、悪意のあるユーザに通信を傍受されると問題がある。また、仮に複数のポートを使用していた場合、開発者であるユーザはファイアーウォール設定などを通常の業務用からエミュレータ環境用に変更する必要が出てきてしまう。そこで、本実施例によれば、コントローラ10と操作部20との間の通信を特定のポートに絞り、あるいはSSHなどの暗号化されたトンネルを使用して外部ネットワーク52で通信を行わせることにより、不正に傍受されるリスクを低下させることができる。
【0102】
また、複合機1は比較的大きな装置である。開発者であるユーザは必要に応じて機器の前に移動して評価を行う必要がある。本実施例によれば、操作部20のエミュレータから複合機1の遠隔操作を可能にすることで、複合機1の前に移動する必要がなく、各ユーザの机上からテストを行うことが可能である。
【0103】
また、エミュレータ使用時は、後からインストールするアプリケーションやユーザが個別に持っている設定ファイルなどを随時使用することが想定される。しかしながら、コントローラモジュール群12などの技術的な価値の高い箇所は、秘匿しておくことが求められる。そこで、本実施例によれば、特定のディレクトリのみをユーザから参照可能とすることで、セキュリティを高めることができる。
【0104】
また、本実施例では、常に、ゲストOS11,21とコントローラ10及び操作部20のプログラム、ファイルを同一のファイルイメージで管理する必要があり、サイズが大きくなるという課題に対して、コントローラ10及び操作部20のプログラム、ファイルを別のファイルイメージとして管理することにより、ゲストOS11,21と切り離して複製することが可能になり、バックアップや開発状況にあわせたバージョン管理などが可能になる。
【0105】
また、複合機1では、USBと接続してファイルの転送を行ったり、あるいは外部機器とつなげてICカード認証などを行ったりすることも考えられる。そこで、本実施例によれば、エミュレータ生成時に、これらのデバイスのエミュレート方式を検討、独自に開発することなく、ゲストOS21にドライバがインストールされていれば、仮想PC42で外部機器を利用することができ、連携動作をテストすることができる。
【0106】
以上のように、本実施例によれば、コントローラ10,操作部20の両方に仮想PC40,42を利用することによって、例えそれぞれが異なるプラットフォームやゲストOS11,21を採用している場合であっても、仮想PC40,42がハードウェア差分などを吸収し、複合機(実機)1上で動かしているプログラムを最大限に流用できる。
【0107】
また、本実施例によれば、補助的な位置づけで外部のパネルエミュレータ41を通信によって使用できるようにすることで、擬似的に複合機1に特有の入力装置を再現することができる。
【0108】
また、本実施例によれば、コントローラ10と操作部20との間の受け渡しをする通信の経路、本数を増やしたくない場合などには、ブリッジ接続形式によって通信経路を一本化することができる。
【0109】
また、本実施例によれば、マウスとタッチパネルを同等、相互変換可能な入力装置として扱うライブラリを使用して操作部20の画面描画処理を作成することで、エミュレータ生成時に特別に入力形式の変換処理などを行う必要がなくなる。
【0110】
また、本実施例によれば、コントローラ10と操作部20とをそれぞれ、クライアント及びサーバの関係で運用することにより、仮想PC40,42で利用するリソースを分割することができ、また、操作部20及びパネルエミュレータ41を有しているユーザから技術的な情報を隠蔽できる。
【0111】
また、本実施例によれば、コントローラ10と操作部20との間の通信を特定のポートに絞り、あるいはSSHなどの暗号化されたトンネルを使用して外部ネットワークで通信を行わせることにより、不正に傍受されるリスクを低下させることができる。
【0112】
また、本実施例によれば、操作部20のエミュレータから複合機1の遠隔操作を可能にすることで複合機1の前に移動する必要がなく、開発者である各ユーザの机上からテストを行うことが可能である。
【0113】
また、本実施例によれば、特定のディレクトリのみをユーザから参照可能とすることにより、コントローラモジュール群12などの技術的な価値の高い箇所を秘匿しておくことができ、セキュリティを高めることができる。
【0114】
また、本実施例によれば、コントローラ10及び操作部20のプログラム、ファイルを別のファイルイメージとして管理することにより、ゲストOS11,21と切り離して複製することが可能になり、バックアップや開発状況にあわせたバージョン管理などが可能となる。
【0115】
また、本実施例によれば、エミュレータ生成時に外部機器等のデバイスのエミュレート方式を検討、独自に開発することなく、ゲストOS21にドライバがインストールされていれば、仮想PC42で外部機器を利用することができ、連携動作をテストすることができる。
【0116】
このように、本実施例ではエミュレータ用にコントローラ10及び操作部20のプログラムの改造を行うのでなく、仮想PC40,42を用いて複合機1に搭載されているゲストOS11,21を動作させることにより、上層のプログラムに実際の機器であるか、あるいは仮想PC40,42上であるかを意識させずに動作させることができる。
【0117】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【符号の説明】
【0118】
1 複合機
10 コントローラ
11,21 ゲストOS
12 コントローラモジュール群
20 操作部
22 サーバプログラム
23 デバイス/APPセレクタモジュール
24 DirectFB/wm
25 デバイス/APPコントロール・モジュール
26 ハードウェア/デバイス
27 LEDモジュール
28 ブザーモジュール
29 ハードキーモジュール
30 ソフトキーボードモジュール
31 ブラウザ
32 FlashPlayer
33 LED
34 ブザー
35 ハードキー
40,40A〜40C,42 仮想PC
41 パネルエミュレータ
43 クライアントプログラム
50,50A,50B,60 PC
51,51A,51B ホストOS
52 外部ネットワーク
61 プロクシサーバ
62A〜62C サーバ
70 ローカルマシン(ローカルコンピュータ)
71 リモートマシン(リモートコンピュータ)
【先行技術文献】
【特許文献】
【0119】
【特許文献1】特開2003−280844号公報

【特許請求の範囲】
【請求項1】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーション装置であって、
前記エミュレーション装置上で稼動するホストオペレーティングシステムと、
前記ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第1仮想マシンと、
前記ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第2仮想マシンと、
を有し、
前記コントローラと前記操作部との間の通信を、前記第1仮想マシンと前記第2仮想マシンとの通信として取り扱うエミュレーション装置。
【請求項2】
前記操作部のプログラムは、ユーザに対して物理的に提供された各種入出力デバイスを制御するデバイス制御手段と、
画面に関する要求に基づいて処理を行う画面表示制御手段と、
外部から通信によるメッセージが到達した場合、前記メッセージの対象を、前記デバイス制御手段及び前記画面表示制御手段から判別し、判別した前記メッセージの対象へ前記メッセージを送信するセレクタ手段と
を有する請求項1記載のエミュレーション装置。
【請求項3】
前記エミュレーション装置は、前記入出力デバイスをエミュレーション画面上で擬似的に表示、再現するパネルエミュレータ手段を更に有し、
前記セレクタ手段は、判別した前記メッセージの対象が前記入出力デバイスであり、且つ前記入出力デバイスが前記メッセージに基づく処理を行えないとき、前記メッセージに基づく処理を前記パネルエミュレータ手段に委託する請求項2記載のエミュレーション装置。
【請求項4】
前記パネルエミュレータ手段は、前記第1仮想マシンと前記第2仮想マシンとの間を仲介し、前記メッセージに基づく処理を前記第1仮想マシン又は前記第2仮想マシンで実現可能なとき、前記メッセージを前記第1仮想マシン又は前記第2仮想マシンにそのまま送信し、前記メッセージに基づく処理を前記第1仮想マシン又は前記第2仮想マシンで実現不可能なとき、前記メッセージに基づく処理を前記エミュレーション画面上で擬似的に表示、再現する請求項3記載のエミュレーション装置。
【請求項5】
前記エミュレーション装置は、各種入力デバイスの操作を同一のイベントとして取得可能な入力デバイスイベント取得手段を更に有し、
前記入力デバイスイベント取得手段は、画面を触れることで入力を行う入力デバイスの操作を、ポインティングデバイスによる入力の操作で擬似的に再現する請求項3記載のエミュレーション装置。
【請求項6】
前記第1仮想マシン及び前記第2仮想マシンは、認証によって許可されたユーザに特定のディレクトリを参照させる請求項1乃至5何れか一項記載のエミュレーション装置。
【請求項7】
前記第1仮想マシンは、前記コントローラのゲストオペレーティングシステムと前記コントローラのプログラムとを別々のファイルイメージに分離して管理し、
前記第2仮想マシンは、前記操作部のゲストオペレーティングシステムと前記操作部のプログラムとを別々のファイルイメージに分離して管理する請求項1乃至5何れか一項記載のエミュレーション装置。
【請求項8】
前記第2仮想マシンは、前記ホストオペレーティングシステムに接続された実際のデバイスを認識し、前記操作部のゲストオペレーティングシステム上で操作可能なデバイスとして連携動作をテストする請求項1乃至5何れか一項記載のエミュレーション装置。
【請求項9】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーションシステムであって、
第1ホストオペレーティングシステムと、前記第1ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第1仮想マシンと、を有する第1エミュレーション装置と、
第2ホストオペレーティングシステムと、前記第2ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第2仮想マシンと、を有する第2エミュレーション装置と、
を有し、
前記第1エミュレーション装置と前記第2エミュレーション装置とは外部ネットワーク経由で通信を行うエミュレーションシステム。
【請求項10】
前記操作部のプログラムは、ユーザに対して物理的に提供された各種入出力デバイスを制御するデバイス制御手段と、
画面に関する要求に基づいて処理を行う画面表示制御手段と、
外部から通信によるメッセージが到達した場合、前記メッセージの対象を、前記デバイス制御手段及び前記画面表示制御手段から判別し、判別した前記メッセージの対象へ前記メッセージを送信するセレクタ手段と
を有する請求項9記載のエミュレーションシステム。
【請求項11】
前記第2エミュレーション装置は、前記入出力デバイスをエミュレーション画面上で擬似的に表示、再現するパネルエミュレータ手段を更に有し、
前記セレクタ手段は、判別した前記メッセージの対象が前記入出力デバイスであり、且つ前記入出力デバイスが前記メッセージに基づく処理を行えないとき、前記メッセージに基づく処理を前記パネルエミュレータ手段に委託する請求項9記載のエミュレーションシステム。
【請求項12】
前記パネルエミュレータ手段は、前記第1仮想マシンと前記第2仮想マシンとの間を仲介し、前記メッセージに基づく処理を前記第1仮想マシン又は前記第2仮想マシンで実現可能なとき、前記メッセージを前記第1仮想マシン又は前記第2仮想マシンにそのまま送信し、前記メッセージに基づく処理を前記第1仮想マシン又は前記第2仮想マシンで実現不可能なとき、前記メッセージに基づく処理を前記エミュレーション画面上で擬似的に表示、再現する請求項11記載のエミュレーションシステム。
【請求項13】
前記第2エミュレーション装置は、各種入力デバイスの操作を同一のイベントとして取得可能な入力デバイスイベント取得手段を更に有し、
前記入力デバイスイベント取得手段は、画面を触れることで入力を行う入力デバイスの操作を、ポインティングデバイスによる入力の操作で擬似的に再現する請求項12記載のエミュレーションシステム。
【請求項14】
前記第1仮想マシン及び前記第2仮想マシンは、認証によって許可されたユーザに特定のディレクトリを参照させる請求項9乃至13何れか一項記載のエミュレーションシステム。
【請求項15】
前記第1仮想マシンは、前記コントローラのゲストオペレーティングシステムと前記コントローラのプログラムとを別々のファイルイメージに分離して管理し、
前記第2仮想マシンは、前記操作部のゲストオペレーティングシステムと前記操作部のプログラムとを別々のファイルイメージに分離して管理する請求項9乃至13何れか一項記載のエミュレーションシステム。
【請求項16】
前記第2仮想マシンは、前記第2ホストオペレーティングシステムに接続された実際のデバイスを認識し、前記操作部のゲストオペレーティングシステム上で操作可能なデバイスとして連携動作をテストする請求項9乃至13何れか一項記載のエミュレーションシステム。
【請求項17】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーションシステムであって、
第1ホストオペレーティングシステムと、前記第1ホストオペレーティングシステム上で前記コントローラのゲストオペレーティングシステムを動作させ、前記コントローラのゲストオペレーティングシステム上で前記コントローラのプログラムを動作させる第1仮想マシンと、を有する第1エミュレーション装置と、
第2ホストオペレーティングシステムと、前記第2ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる第2仮想マシンと、を有する複数の第2エミュレーション装置と、
前記第1エミュレーション装置と前記第2エミュレーション装置との間を仲介するプロクシサーバ装置とを有し、
前記プロクシサーバ装置は、前記第1エミュレーション装置の使用状況又は負荷状況に基づき前記第2エミュレーション装置と通信を行う前記第2エミュレーション装置を選択するエミュレーションシステム。
【請求項18】
前記第1エミュレーション装置と前記第2エミュレーション装置とは暗号化された経路を使用して通信を行う請求項9乃至17何れか一項記載のエミュレーションシステム。
【請求項19】
実処理を行うコントローラと、ユーザに対する描画表示及びユーザからの入力操作を受け付ける操作部と、を有する機器用のエミュレーションシステムであって、
ホストオペレーティングシステム上で前記操作部のゲストオペレーティングシステムを動作させ、前記操作部のゲストオペレーティングシステム上で前記操作部のプログラムを動作させる仮想マシンを有するエミュレーション装置を有し、
前記エミュレーション装置は、前記機器の前記コントローラと外部ネットワーク経由で通信を行うエミュレーションシステム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate


【公開番号】特開2010−191543(P2010−191543A)
【公開日】平成22年9月2日(2010.9.2)
【国際特許分類】
【出願番号】特願2009−33116(P2009−33116)
【出願日】平成21年2月16日(2009.2.16)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】