(57)【要約】【課題】仮想マシン間通信への対応箇所が少なく、システム管理・保守が容易に行える画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供する。【解決手段】画像処理装置１００は、当該装置の標準機能と標準機能を利用した拡張機能とが異なる仮想マシン２１上で動作する装置であって、標準機能を実現する複数の動作モジュール３０と、各仮想マシン２１１及び２１２上で動作し、複数の動作モジュール３０に対して共通の仮想マシン間通信を行う通信インタフェース部４１と、を有し、通信インタフェース部４１が、仮想マシン２１上での機能実行指示を受け付ける受付手段４１１と、受け付けた機能実行のために、仮想マシン間通信を行う必要があるか否かを判定する判定手段４１２と、判定結果に基づき、他の仮想マシンに対して機能動作を要求する要求手段４１３と、を有している。【選択図】図４
2011018235.tif 000002
【特許請求の範囲】
【請求項１】
当該画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する画像処理装置であって、
前記標準機能を実現する複数の動作モジュールと、
各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有し、
前記通信インタフェース部が、
前記仮想マシン上での機能実行指示を受け付ける受付手段と、
前記受付手段により受け付けた機能実行のために、前記仮想マシン間通信を行う必要があるか否かを判定する判定手段と、
前記判定手段による判定結果に基づき、他の仮想マシンに対して機能動作を要求する要求手段と、を有することを特徴とする画像処理装置。
【請求項２】
前記判定手段は、
前記通信インタフェース部が、前記標準機能が動作する仮想マシン上で動作しているか否かを判定することで、前記仮想マシン間通信を行う必要があるか否かを判定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
要求手段は、
前記判定手段により、前記通信インタフェース部が動作する仮想マシンが、前記標準機能が動作する仮想マシンと異なると判定した場合に、
前記仮想マシン間通信により、前記標準機能が動作する仮想マシンに対して機能動作要求を送信することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記通信インタフェース部は、
受信した機能動作要求を解析し、要求された機能を実行する実行手段を、有し、
前記実行手段は、
解析結果に基づき、要求された機能を実現するために利用する前記動作モジュールを実行することを特徴とする請求項１ないし３のいずれか一項に記載の画像処理装置。
【請求項５】
画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する環境において、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有する画像処理装置における仮想マシン間の動作モジュール実行制御方法であって、
前記通信インタフェース部が、
前記仮想マシン上での機能実行指示を受け付ける受付手順と、
前記受付手順により受け付けた機能実行のために、前記仮想マシン間通信を行う必要があるか否かを判定する判定手順と、
前記判定手順による判定結果に基づき、他の仮想マシンに対して機能動作を要求する要求手順と、
機能動作要求を解析し、解析結果に基づき、要求された機能を実現するために利用する前記動作モジュールを実行する実行手順と、を有することを特徴とする動作モジュール実行制御方法。
【請求項６】
画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する環境において、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有する画像処理装置における動作モジュール実行制御プログラムであって、
前記通信インタフェース部を動作させることにより、
コンピュータを、
前記仮想マシン上での機能実行指示を受け付ける受付手段と、
前記受付手段により受け付けた機能実行のために、前記仮想マシン間通信を行う必要があるか否かを判定する判定手段と、
前記判定手段による判定結果に基づき、他の仮想マシンに対して機能動作を要求する要求手段と、
機能動作要求を解析し、解析結果に基づき、要求された機能を実現するために利用する前記動作モジュールを実行する実行手段として機能させる動作モジュール実行制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシンが動作可能な画像処理装置に関し、特に、仮想マシン間で行うデータ通信により動作モジュールの実行を制御する技術に関するものである。
【背景技術】
【０００２】
１台の物理コンピュータ上に、あたかもコンピュータが複数稼働しているかのような疑似システムを構築する仮想化技術は既に知られている。このような仮想化技術により実現される擬似的な情報処理システム環境（論理コンピュータ）を、仮想マシン（ＶＭ：Virtual Machine）と言う。
【０００３】
単体の仮想マシンが構築されたシステムの場合には、何らかの原因で処理が停止してしまうと、システム全体が停止することになる。しかし、複数の仮想マシンが構築されたシステムの場合には、ある仮想マシンにおいて処理が停止したとしても、他の仮想マシンに影響しないため、システム全体が停止することなく、処理を継続できる。
【０００４】
このような利点から、単体の仮想マシンが構築されたシステムを複数の仮想マシンが構築されたシステムに変更したい。そのためには、各仮想マシン間でデータ通信が行えるように対応する必要がある。
【０００５】
例えば特許文献１には、拡張記憶装置を有する計算機における、仮想マシン間の通信処理に関し、仮想マシン間データ転送のシミュレートするとき、拡張記憶装置の記憶領域に対する直接のデータ転送を可能にする仮想計算機間データ送受信処理方法が開示されている。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の対応方法では、システム規模が大きく、かつシステム内で多くの動作モジュールが協働する場合、作業時間や作業コストがかかると言った問題があった。
【０００７】
従来の対応では、利用するインタフェースすべてに対してデータ通信対応を行う必要がある。すなわち、動作モジュール単位で対応する必要がある。
【０００８】
このようなことから、従来の対応方法は、対応しなければならない箇所が多く、現実的な対応方法ではない。また、たとえ対応を行ったとしても、障害が発生した場合など、その後のシステム管理・保守が煩雑となる。
【０００９】
本発明は上記従来技術の問題点を鑑み提案されたものであり、その目的とするところは、仮想マシン間通信への対応箇所が少なく、システム管理・保守を容易に行うことができる画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供することにある。
【課題を解決するための手段】
【００１０】
上記目的を達成するため、本発明に係る画像処理装置は、当該装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する画像処理装置であって、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有し、前記通信インタフェース部が、前記仮想マシン上での機能実行指示を受け付ける受付手段と、前記受付手段により受け付けた機能実行のために、前記仮想マシン間通信を行う必要があるか否かを判定する判定手段と、前記判定手段による判定結果に基づき、他の仮想マシンに対して機能動作を要求する要求手段と、を有している。
【００１１】
このような構成によって、本発明に係る画像処理装置は、各仮想マシンにおいて、仮想マシン間通信を行う通信インタフェース部（サブセットモジュール）を動作させることにより、通信インタフェース部を介して、他の仮想マシンが有する動作モジュールに実行要求を行う。画像処理装置は、仮想マシン上の動作モジュールの実行を他の仮想マシンから制御する。
【００１２】
これによって、本発明に係る画像処理装置は、システム内の動作モジュールに対して、仮想マシンにおけるインタフェースを共通化する（対応箇所を１箇所とする）ことができる。その結果、仮想マシン間通信への対応箇所が少なく、システム管理・保守を容易に行うことができ、作業時間や作業コストの削減に繋がる。
【００１３】
上記目的を達成するため、本発明に係る仮想マシン間の動作モジュール実行制御方法は、画像処理装置の標準機能と前記標準機能を利用した拡張機能とが異なる仮想マシン上で動作する環境において、前記標準機能を実現する複数の動作モジュールと、各仮想マシン上で動作し、前記複数の動作モジュールに対して共通の仮想マシン間通信を行う通信インタフェース部と、を有する仮想マシン間の動作モジュール実行制御方法であって、前記通信インタフェース部が、前記仮想マシン上での機能実行指示を受け付ける受付手順と、前記受付手順により受け付けた機能実行のために、前記仮想マシン間通信を行う必要があるか否かを判定する判定手順と、前記判定手順による判定結果に基づき、他の仮想マシンに対して機能動作を要求する要求手順と、機能動作要求を解析し、解析結果に基づき、要求された機能を実現するために利用する前記動作モジュールを実行する実行手順と、を有している。
【００１４】
このような手順によって、本発明に係る仮想マシン間の動作モジュール実行制御方法は、各仮想マシンにおいて、仮想マシン間通信を行う通信インタフェース部を動作させ、通信インタフェース部を介して、他の仮想マシンが有する動作モジュールに実行要求を行い、仮想マシン上の動作モジュールの実行を他の仮想マシンから制御すると言う動作を実現する。
【００１５】
これによって、本発明に係る仮想マシン間の動作モジュール実行制御方法は、仮想マシン間通信への対応箇所が少なく、システム管理・保守が容易に行える環境を提供できる。
【発明の効果】
【００１６】
本発明によれば、システム内の動作モジュールに対して仮想マシン間通信を行う機能を共通化することで、仮想マシン間通信への対応箇所が少なく、システム管理・保守が容易に行える画像処理装置、仮想マシン間の動作モジュール実行制御方法、及び動作モジュール実行制御プログラムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施形態に係る画像処理装置のハードウェア構成例を示す図である。
【図２】本発明の第１の実施形態に係る複数の仮想マシンが構築されたシステム構成例を示す図である。
【図３】本発明の第１の実施形態に係る複数の仮想マシンが構築されたシステムのソフトウェア構成例を示す図である。
【図４】本発明の第１の実施形態に係るサブセットモジュールの機能構成例を示す図である。
【図５】本発明の第１の実施形態に係る第１仮想マシンで機能実行指示を受け付けた場合の処理手順例を示すシーケンス図である。
【図６】本発明の第１の実施形態に係る第２仮想マシンで機能実行指示を受け付けた場合の処理手順例を示すシーケンス図である。
【発明を実施するための形態】
【００１８】
以下、本発明の好適な実施の形態（以下「実施形態」と言う）について、図面を用いて詳細に説明する。
【００１９】
［第１の実施形態］
＜ハードウェア構成＞
図１は、本実施形態に係る画像処理装置１００のハードウェア構成例を示す図である。
図１に示すように、画像処理装置１００は、コントローラ１１０、操作パネル１２０、プロッタ１３０、及びスキャナ１４０などを備え、それぞれが相互にバスＢで接続されている。
【００２０】
操作パネル１２０は、表示部及び入力部を備えており、機器情報などの各種情報をユーザに提供したり、動作設定や動作指示などの各種ユーザ操作を受け付けたりする。プロッタ１３０は、画像形成部を備えており、用紙に出力画像を形成する。例えば出力画像を形成する方式には、電子写真方式やインクジェット方式などがある。スキャナ１４０は、原稿を光学的に読み取り、読み取り画像を生成する。
【００２１】
コントローラ１１０は、ＣＰＵ（Central Processing Unit）１１１、記憶装置１１２、ネットワークＩ／Ｆ１１３、及び外部記憶Ｉ／Ｆ１１４などを備えており、それぞれが相互にバスＢで接続されている。
【００２２】
ＣＰＵ１１１は、プログラムを実行することにより各種機能の実現や装置全体を制御する。また記憶装置１１２は、上記プログラムや各種データ（例えば「画像データ」）を格納し保持する。例えば記憶装置１１２には、揮発性のメモリであるＲＡＭ（Random Access Memory）、不揮発性のメモリであるＲＯＭ（Read Only Memory）、及び大容量の記憶領域を備えたＨＤＤ（Hard Disk Drive）などがある。ＲＡＭは、ＣＰＵ１１１のワークエリア（プログラムやデータが一時的に読み出される記憶エリア）として機能する。ＲＯＭやＨＤＤは、プログラムや各種データの格納先として用いられる。これにより、画像処理装置１００では、ＣＰＵ１１１がＲＯＭに格納されたプログラムをＲＡＭ上に読み出し、プログラムを実行する。
【００２３】
ネットワークＩ／Ｆ１１３は、画像処理装置１００をネットワークなどの所定のデータ伝送路に接続するためのインタフェースである。外部記憶Ｉ／Ｆ１１４は、外部記憶装置にあたる記録媒体１１４ａを接続するためのインタフェースである。例えば外部記憶装置には、ＳＤメモリカード（SD Memory Card）やＵＳＢ（Universal Serial Bus）メモリなどがある。これにより、画像処理装置１００は、外部記憶Ｉ／Ｆ１１４を介して、記録媒体１１４ａに格納されたプログラムやデータを読み取る。
【００２４】
画像処理装置１００では、上記ハードウェア構成により、例えばＨＤＤからＲＡＭ上に読み出したプログラムをＣＰＵ１１１により実行することで、１又は複数の仮想マシン環境を動作させることができる。
【００２５】
＜システム及びソフトウェア構成＞
図２は、本実施形態に係る複数の仮想マシンが構築されたシステム構成例を示す図である。図２には、１台の物理コンピュータ上に２つの仮想マシンが動作するシステム構成が示されている。
【００２６】
図２に示すように、仮想マシン環境は、ＯＳ（Operating System）１０上で仮想マシン環境を実現するプログラムを動作させることで実現される。本実施形態では、組み込み型システムの開発環境として使用頻度の高いＪａｖａ（登録商標：以下略）ＶＭ（Java Virtual Machine）２１を動作させることで実現している。なおＯＳ１０は、組み込み系の基本ソフトウェアであり、例えばＬｉｎｕｘ（登録商標：以下略）などがある。
【００２７】
複数の仮想マシン環境は、ＯＳ１０上で複数のＪａｖａＶＭ２１を動作させることで実現できる。本実施形態では、ＪａｖａＶＭ２１１及び２１２（２つのＪａｖａＶＭ２１）を動作させることで、第１及び第２仮想マシン環境（２つの仮想マシン環境）を実現している。以降では、ＪａｖａＶＭ２１１及び２１２を「第１仮想マシン２１１及び第２仮想マシン２１２」に置き換え説明する。また、第１仮想マシン２１１及び第２仮想マシン２１２を総称する際には、「仮想マシン２１」とする。同様に、各仮想マシン２１上で動作するソフトウェア（例えば「プログラム」や「データ」）及び使用される記憶領域についても、同じソフトウェア名や記憶領域名を総称する際には、共通する名称と参照符号を用いることとする。
【００２８】
仮想マシン２１は、仮想マシン２１上でＪａｖａコンポーネント２２を動作させるためのヒープメモリ２１１を有している。ヒープメモリ２１１は、仮想マシン２１上で動作するアプリケーションが自由に確保できるメモリ領域である。このように、複数の仮想マシン２１が構築されたシステムでは、仮想マシン２１ごとに独立したヒープメモリ２１１を有することから、処理停止などの障害が発生しても、互いのシステムに影響を及ぼすことがない。
【００２９】
仮想マシン２１上で動作するＪａｖａコンポーネント２２には、プラットフォーム及びアプリケーション（図中のＪａｖａプラットフォーム２２１及びＪａｖａアプリケーション２２２）の各機能を実現するための複数のＪａｖａプログラムが含まれる。Ｊａｖａプラットフォーム２２１は、仮想マシン２１が実現するシステム（動作環境）の標準機能として動作する。またＪａｖａアプリケーション２２２は、上記基本機能を利用し、例えばユーザが実行したい作業を実施する機能（仮想マシン環境におけるユーザ提供機能）として動作する。Ｊａｖａアプリケーション２２２は、提供する機能構成に応じてインストール／アンインストールが可能である。
【００３０】
以上のように、本実施形態に係る画像処理装置１００には、複数の仮想マシン２１が動作する環境を構築することができる。
【００３１】
次に、上記システムにおける詳細なソフトウェア構成について説明する。
図３は、本実施形態に係る複数の仮想マシン２１が構築されたシステムのソフトウェア構成例を示す図である。
【００３２】
例えば、上記システムが構築された画像処理装置１００が、ＭＦＰ（Multifunction Peripheral）であった場合、次のようなシステム構築が考えられる。
【００３３】
第１仮想マシン２１１では、プリンタ、スキャナ、ＦＡＸ（ファクシミリ）などの標準機能を動作させる。
【００３４】
第１仮想マシン２１１上で動作するＪａｖａコンポーネント２２１が有するＪａｖａアプリケーション２２２１は、標準アプリケーション２２２ａ１及びＳＤＫ（Software Development Kit）アプリケーション２２２ｂ１を含む。またＪａｖａプラットフォーム２２１１は、Ｊａｖａモジュール群（動作モジュール群）２２１ａ１及びＳＤＫ  ＡＰＩ（Application Program Interface）２２１ｂ１を含む。
【００３５】
標準アプリケーション２２２ａ１は、ＭＦＰ搭載の標準機能を利用したユーザ提供機能を実現するソフトウェアである。標準アプリケーション２２２ａ１は、標準機能として、プラットフォームが有するＪａｖａモジュール群２２１ａ１の動作モジュール３０を利用する。例えばＪａｖａモジュール群２２１ａ１には、プリンタモジュール３０ａ、スキャナモジュール３０ｂ、及びＦＡＸモジュール３０ｃなどが、標準機能を実現する動作モジュール３０として含まれる。これにより、例えば標準アプリケーション２２２ａ１は、Ｊａｖａモジュール群２２１ａ１のプリンタモジュール３０ａ及びスキャナモジュール３０ｂを利用してコピー機能（コピーアプリ）を実現する。
【００３６】
ＳＤＫアプリケーション２２２ｂ１は、ソフトウェアを開発する際に使用できる命令や関数の集合であるＳＤＫ  ＡＰＩ２２１ｂ１を用いて開発され、ユーザへの個別対応機能（カスタマイズ機能）などを実現するソフトウェアである。ＳＤＫアプリケーション２２２ｂ１は、ＳＤＫ  ＡＰＩ２２１ｂ１を介して、プラットフォームが有するＪａｖａモジュール群２２１ａ１の動作モジュール３０を利用する。これにより、例えばＳＤＫアプリケーション２２２ｂ１は、ＳＤＫ  ＡＰＩ２２１ｂ１を介して、Ｊａｖａモジュール群２２１ａ１のプリンタモジュール３０ａを利用し、認証モジュール（非図示）と合わせて印刷の利用認証機能（セキュアプリントアプリ）を実現する。
【００３７】
これに対して第２仮想マシン２１２では、標準機能を利用する拡張機能（例えば「サードベンダ提供機能」）を動作させる。
【００３８】
第２仮想マシン２１２上で動作するＪａｖａコンポーネント２２２が有するＪａｖａアプリケーション２２２２は、ＳＤＫアプリケーション２２２ｂ２を含み、Ｊａｖａプラットフォーム２２１２は、ＳＤＫ  ＡＰＩ２２１ｂ２を含む。
【００３９】
上述したように、ＳＤＫアプリケーション２２２ｂ２は、プラットフォームが有するＳＤＫ  ＡＰＩ２２１ｂ２を用いれば独自に開発できる。特に拡張機能を実現するＳＤＫアプリケーション２２２ｂ２は、サードベンダにより開発され提供されるソフトウェアである。サードベンダにより開発されたソフトウェアは、どのように設計・プログラミングされ、かつどのような工程を経て動作テストされ、提供されたものなのかを、知ることができない。そのため、動作中のメモリリークなど、予期せぬエラー（障害）が発生する恐れがある。
【００４０】
このような場合、ＳＤＫアプリケーション２２２ｂ２（拡張機能）を、標準アプリケーション２２２ａ１（標準機能）と同じ仮想マシン２１（第１仮想マシン２１１）上で動作させると、障害発生の影響からシステム全体を停止（システムダウン）させてしまう可能性がある。そのため、本実施形態では、ＭＦＰ搭載の標準機能と拡張機能とを異なる仮想マシン２１上で動作させることにより、たとえ拡張機能に何らかの障害が発生したとしても、ユーザに対して、標準機能のサービス提供を継続して行うことができる。
【００４１】
しかしこのようなシステム構成の場合、第２仮想マシン２１２上で動作するＳＤＫアプリケーション２２２ｂ２は、第１仮想マシン２１１上で動作するＪａｖａモジュール群２２１ａ１の動作モジュール３０とデータ通信（仮想マシン間通信）を行う必要がある。なぜなら、第２仮想マシン２１２上で動作するＳＤＫアプリケーション２２２ｂ２は、第１仮想マシン２１１上で動作する動作モジュール３０（標準機能を実現するモジュール）を利用して機能（拡張機能）を実現しているからである。
【００４２】
仮想マシン間通信への対応方法には、第２仮想マシン２１２上で、各動作モジュール３０に対応する通信モジュールを動作させる方法（動作モジュール単位で対応する方法）がある。しかし、システム規模が大きく、かつシステム内で多くの動作モジュール３０が協働する場合には、多くの通信モジュールを用意する必要があり、現実的な対応方法ではない。また、たとえ通信モジュールが用意できたとしても、障害が発生した場合など、その後のシステム管理・保守が煩雑となる。さらに、仮想マシン２１上で多くの通信モジュールを動作させなければならず、リソースを無駄に消費することとなる。
【００４３】
そこで本実施形態では、各仮想マシン２１に、仮想マシン２１間のデータ通信機能（仮想マシン間通信機能）を有するシステム全体のインタフェース部が設けられている。このインタフェース部が、各仮想マシン２１上で動作するＪａｖａプラットフォーム２２１が有するＪａｖａモジュール群２２１ａのサブセットモジュール（通信インタフェース部）４１である。各仮想マシン２１上で動作するサブセットモジュール４１は、同一モジュールである。また各仮想マシン２１上では、１つのサブセットモジュール４１が動作する。
【００４４】
サブセットモジュール４１は、ＳＤＫアプリケーション２２２ｂから受け付けた機能実行要求に基づき、機能を実現するために連係する動作モジュール３０に対して処理の実行を要求する。またサブセットモジュール４１は、他の仮想マシンと機能実行要求を送受信し、他の仮想マシン上で動作する動作モジュール３０の実行を制御する。例えば、第２仮想マシン２１２上で動作するＳＤＫアプリケーション２２２ｂ２が、第１仮想マシン２１１上で動作する動作モジュール３０と連係する場合には、次のように行われる。ＳＤＫアプリケーション２２２ｂ２は、第２仮想マシン２１２側のサブセットモジュール４１２を介して、第１仮想マシン２１１側のサブセットモジュール４１１に対し、機能実行要求を行う。第１仮想マシン２１１側のサブセットモジュール４１１は、受け付けた機能実行要求に基づき、指定された動作モジュール３０に対して処理の実行を要求する。
【００４５】
このように、サブセットモジュール４１は、複数の動作モジュール３０に対して共通の通信インタフェースとして機能する。
【００４６】
＜仮想マシン間の動作モジュール実行制御機能＞
次に、上記サブセットモジュール４１が有する機能について説明する。
図４は、本実施形態に係るサブセットモジュール４１の機能構成例を示す図である。
【００４７】
本実施形態に係る画像処理装置１００は、各仮想マシン２１において、仮想マシン間通信を行う通信インタフェース部（サブセットモジュール４１）を動作させることにより、通信インタフェース部を介して、他の仮想マシンが有する動作モジュール３０に実行要求を行う。これにより、画像処理装置１００は、仮想マシン２１上の動作モジュール３０の実行を他の仮想マシンから制御する。画像処理装置１００は、このような動作モジュール実行制御機能を有している。
【００４８】
よって、画像処理装置１００は、システム内の動作モジュール３０に対して、仮想マシン２１におけるインタフェースを共通化する（仮想マシン間通信に係る対応箇所を１箇所とする）ことができる。その結果、仮想マシン間通信への対応箇所が少なく、システム管理・保守を容易に行うことができ、作業時間や作業コストの削減に繋がる。
【００４９】
以下に、上記動作モジュール実行制御機能の構成とその動作について説明する。以降では、各仮想マシン２１上で動作するサブセットモジュール４１の機能名を総称する際、共通する名称と参照符号を用いることとする。
【００５０】
図４に示すように、サブセットモジュール４１は、要求受付部４１１、仮想マシン判定部４１２、仮想マシン間通信部４１３、及び処理要求部４１４などを有している。
【００５１】
要求受付部４１１は、ＳＤＫ  ＡＰＩ２２１を介して、ＳＤＫアプリケーション２２ｂからの機能動作要求を受け付ける機能部である。
【００５２】
仮想マシン判定部４１２は、サブセットモジュール４１自身が動作する仮想マシン２１が、第１仮想マシン２１１か否かを判定する機能部である。
【００５３】
本実施形態では、画像処理装置１００がユーザに提供する標準機能を第１仮想マシン２１１で動作する。一方、第２仮想マシン２１２では、第１仮想マシン２１１が有する動作モジュール３０を利用した拡張機能が動作する。つまり、仮想マシン判定部４１２は、サブセットモジュール４１が、標準機能が動作する仮想マシン２１（第１仮想マシン２１１）上で動作しているか否かを判定している。
【００５４】
また本実施形態では、上記標準機能及び拡張機能との関係から、仮想マシン間通信により、拡張機能を動作させる際に、第２仮想マシン２１２から第１仮想マシン２１１に対して、機能動作要求を送信する必要がある。
【００５５】
よって、仮想マシン判定部４１２では、仮想マシン２１を判別することで、要求された機能を動作させるために仮想マシン間通信を行う必要があるか否かを判定している（データ通信要否判定機能）。
【００５６】
仮想マシン間通信部４１３は、仮想マシン２１間でデータ通信を行う機能部である。本実施形態では、仮想マシン環境がＪａｖａＶＭにより実現されている。よって、仮想マシン間通信部４１３は、ＪａｖａＲＭＩ（Remote Method Invocation）を用いて実現できる。ＪａｖａＲＭＩとは、別ホスト（他のＪａｖａＶＭ）のＪａｖａオブジェクトのメソッドを呼び出すための通信手段であり、ＲＰＣ（Remote Procedure Call）のオブジェクトに相当する機能を果たすためのＡＰＩである。これにより、仮想マシン間通信部４１３では、仮想マシン２１間のデータ通信（情報送受信）を行う。例えば、第２仮想マシン２１２が有する仮想マシン間通信部４１３２では、仮想マシン判定部４１２２による判定結果「第１仮想マシンでない（標準機能が動作する仮想マシンでない）」に基づき、要求受付部４１１２により受け付けた機能動作要求を、第１仮想マシン２１１に送信する。つまり、仮想マシン間通信部４１３は、仮想マシン判定部４１２による判定結果に基づき、他の仮想マシンに対して機能動作を要求する（機能動作要求機能）。
【００５７】
処理要求部４１４は、要求時指定の動作モジュール３０に対して処理の実行を要求する機能部である。例えば処理要求部４１４は、仮想マシン判定部４１２による判定結果が「第１仮想マシンである」となった場合、要求時に指定された仮想マシン２１上で動作する動作モジュール３０に対して処理の実行を要求する。仮想マシン判定部４１２は、要求受付部４１１により受け付けた機能動作要求を解析し、解析結果として、動作要求された機能（要求処理）に係る情報を得る。これにより、処理要求部４１４は、得られた情報（例えば「機能実現のために連係する動作モジュール３０に係る情報」）に基づき、該当する動作モジュール３０を実行する。
【００５８】
このように、本実施形態に係る仮想マシン２１間の動作モジュール実行制御機能は、上記各機能部が連係動作することにより実現される。
【００５９】
次に、動作モジュール実行制御機能の詳細な動作（機能部群の連係動作）について、処理手順を示すシーケンス図を用いて説明する。
【００６０】
動作モジュール実行制御機能は、各仮想マシン２１上でサブセットモジュール４１が動作することで実現される機能である。仮想マシン環境は、画像処理装置１００に搭載（インストール）されるＪａｖａＶＭ（仮想マシン環境を実現するプログラム）が、ＣＰＵ１１１により、格納先（例えば「ＲＯＭ」）からＲＡＭ上に読み出され、実行されることで構築される。サブセットモジュール４１は、この環境下において、Ｊａｖａプラットフォーム２２１が有するＪａｖａモジュール群２２１ａの１つのモジュールとして起動される。
【００６１】
なお以下の説明では、第１仮想マシン２１１で機能実行要求を受け付けた場合の処理（処理１）と、第２仮想マシン２１２で機能実行要求を受け付けた場合の処理（処理２）に分けて説明する。
【００６２】
《処理１》
図５は、本実施形態に係る第１仮想マシン２１１で機能実行指示を受け付けた場合の処理手順例を示すシーケンス図である。
【００６３】
図５に示すように、画像処理装置１００は、第１仮想マシン２１１上で動作するＪａｖａアプリケーション２２２１に対しての機能実行の指示を受け付ける（ステップＳ１１）。機能実行の指示は、例えば画像処理装置１００が備える操作パネル１２０に表示されるＧＵＩ（Graphical User Interface）を介して受け付ける。
【００６４】
画像処理装置１００は、指示を受け付けたＪａｖａアプリケーション２２２１により、第１仮想マシン２１１上で動作するサブセットモジュール４１１に対して機能動作要求が通知される（ステップＳ１２）。
【００６５】
動作中のサブセットモジュール４１１では、要求受付部４１１１、仮想マシン判定部４１２１、仮想マシン間通信部４１３１、及び処理要求部４１４１が機能する。
【００６６】
画像処理装置１００は、Ｊａｖａアプリケーション２２２１からの機能動作要求通知を、要求受付部４１１１により受け付ける。
【００６７】
要求受付部４１１１は、受け付けた機能動作要求を仮想マシン判定部４１２１に通知し、サブセットモジュール４１１が動作する仮想マシン２１の判定を要求する（ステップＳ１３）。
【００６８】
仮想マシン判定部４１２１は、サブセットモジュール４１１が動作する仮想マシン２１が、標準機能が動作する第１仮想マシン２１１であるか否かを判定する（ステップＳ１４）。その結果、仮想マシン判定部４１２１は、「第１仮想マシンである」と判定し、機能動作要求を処理要求部４１４１に通知する（ステップＳ１５）。
【００６９】
処理要求部４１４１は、通知された機能動作要求を解析する（ステップＳ１６）。これにより、処理要求部４１４１は、解析結果として、動作要求された機能（要求処理）に係る情報を得る。得られる情報には、例えば、指示された機能を実現するために実行する必要のある動作モジュール３０に係る情報（例えば「モジュール名」）などがある。具体的には、ＭＦＰにおいて、通知された機能動作要求が「コピー要求」であった場合、処理要求部４１４１により、印刷機能を実現するためのプリンタモジュール３０ａに係る情報及び原稿読取機能を実現するためのスキャナモジュール３０ｂに係る情報（２つの標準機能に係る情報）が得られる。
【００７０】
処理要求部４１４１は、得られた情報に基づき、機能を実現する動作モジュール３０に処理の実行を要求する（ステップＳ１７）。その結果、動作モジュール３０は、要求処理を行う（ステップＳ１８）。
【００７１】
以上のように、画像処理装置１００では、第１仮想マシン２１１で機能実行要求を受け付けた場合、サブセットモジュール４１１により仮想マシン２１を判別し、指示された機能実行に係る処理が、同仮想マシン２１１が有する動作モジュール３０により行われることを判断する。つまり、要求された機能を動作させるために仮想マシン２１間のデータ通信を行う必要がないと判定する。
【００７２】
《処理２》
図６は、本実施形態に係る第２仮想マシン２１２で機能実行指示を受け付けた場合の処理手順例を示すシーケンス図である。
【００７３】
図６に示すように、画像処理装置１００は、第２仮想マシン２１２上で動作するＪａｖａアプリケーション２２２２に対しての機能実行の指示を受け付ける（ステップＳ２１）。
【００７４】
画像処理装置１００は、指示を受け付けたＪａｖａアプリケーション２２２２により、第２仮想マシン２１２上で動作するサブセットモジュール４１２に対して機能動作要求が通知される（ステップＳ２２）。
【００７５】
動作中のサブセットモジュール４１２では、要求受付部４１１２、仮想マシン判定部４１２２、仮想マシン間通信部４１３２、及び処理要求部４１４２が機能する。
【００７６】
画像処理装置１００は、Ｊａｖａアプリケーション２２２２からの機能動作要求通知を、要求受付部４１１２により受け付ける。
【００７７】
要求受付部４１１２は、受け付けた機能動作要求を仮想マシン判定部４１２２に通知し、サブセットモジュール４１２が動作する仮想マシン２１の判定を要求する（ステップＳ２３）。
【００７８】
仮想マシン判定部４１２２は、サブセットモジュール４１２が動作する仮想マシン２１が、標準機能が動作する第１仮想マシン２１１であるか否かを判定する（ステップＳ２４）。その結果、仮想マシン判定部４１２２は、「第１仮想マシンでない」と判定し、機能動作要求を仮想マシン間通信部４１３１に通知する（ステップＳ２５）。
【００７９】
仮想マシン間通信部４１３１は、機能動作要求を、画像処理装置１００で動作する第１仮想マシン２１１に対して送信する（ステップＳ２６）。このようにして、画像処理装置１００は、仮想マシン２１間の機能動作要求を行う。
【００８０】
画像処理装置１００は、第１仮想マシン２１１上で動作するサブセットモジュール４１１により、機能動作要求を受信する。
【００８１】
第１仮想マシン２１１上で動作するサブセットモジュール４１１は、第２仮想マシン２１２と同様に、要求受付部４１１１、仮想マシン判定部４１２１、仮想マシン間通信部４１３１、及び処理要求部４１４１が機能する。
【００８２】
仮想マシン間通信部４１３１は、第２仮想マシン２１２から受信した機能動作要求を処理要求部４１４１に通知する（ステップＳ２７）。
【００８３】
処理要求部４１４１は、通知された機能動作要求を解析する（ステップＳ２８）。これにより、処理要求部４１４１は、解析結果として、動作要求された機能（要求処理）に係る情報を得る。具体的には、ＭＦＰにおいて、通知された機能動作要求が「セキュア印刷要求」であった場合、処理要求部４１４１により、印刷機能を実現するためのプリンタモジュール３０ａに係る情報（標準機能に係る情報）及び認証機能を実現するためのセキュアモジュール（非図示）に係る情報（拡張機能に係る情報）が得られる。
【００８４】
処理要求部４１４１は、得られた情報に基づき、機能を実現する動作モジュール３０に処理の実行を要求する（ステップＳ２９）。その結果、動作モジュール３０は、要求処理を行う（ステップＳ３０）。
【００８５】
以上のように、画像処理装置１００では、第２仮想マシン２１２で機能実行要求を受け付けた場合、サブセットモジュール４１２により仮想マシン２１を判別し、指示された機能実行に係る処理が、他の仮想マシン（第１仮想マシン２１１）が有する動作モジュール３０により行われることを判断する。つまり、要求された機能を動作させるために仮想マシン２１間のデータ通信を行う必要があると判定する。
【００８６】
＜まとめ＞
以上のように、本実施形態に係る画像処理装置１００によれば、各仮想マシン２１において、仮想マシン間通信を行う通信インタフェース部（サブセットモジュール４１）を動作させることにより、通信インタフェース部を介して、他の仮想マシンが有する動作モジュール３０に実行要求を行う。その中で、画像処理装置１００は、通信インタフェース部により仮想マシン２１を判別し、要求された機能を動作させるために仮想マシン間通信を行う必要があるか否かを判定している。
【００８７】
これにより、画像処理装置１００は、仮想マシン（第１仮想マシン２１１）上の動作モジュール３０の実行を他の仮想マシン（第２仮想マシン２１２）から制御する。
【００８８】
よって、画像処理装置１００は、システム内の動作モジュール３０に対して、仮想マシン２１におけるインタフェースを共通化する（仮想マシン間通信に係る対応箇所を１箇所とする）ことができる。その結果、仮想マシン間通信への対応箇所が少なく、システム管理・保守を容易に行うことができ、作業時間や作業コストの削減に繋がる。
【００８９】
ここまで、上記実施形態の説明を行ってきたが、実施形態に係る画像処理装置１００が有する「動作モジュール実行制御機能」は、図を用いて説明を行った各処理手順を動作環境（プラットフォーム）にあったプログラミング言語でコード化したプログラムが、ＣＰＵ１１１により実行されることで実現される。
【００９０】
上記プログラムは、コンピュータが読み取り可能な記録媒体１１４ａに格納することができる。上記記録媒体１１４ａには、例えばＳＤメモリカード及びＵＳＢメモリなどがある。
【００９１】
よって、上記プログラムは、上記記録媒体１１４ａに記憶させることで、記録媒体１１４ａを読み取り可能な外部記憶Ｉ／Ｆ１１４などを介して画像処理装置１００にインストールすることができる。また画像処理装置１００は、ネットワークＩ／Ｆ１１３を備えていることから、インターネットなどの電気通信回線を用いて上記プログラムをダウンロードし、インストールすることもできる。
【００９２】
最後に、上記実施形態に挙げた形状や構成に、その他の要素との組み合わせなど、ここで示した要件に、本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
【符号の説明】
【００９３】
１０      ＯＳ
２１      ＪａｖａＶＭ（１：第１仮想マシン側、２：第２仮想マシン側）
２１１    ヒープメモリ
２２      Ｊａｖａコンポーネント
２２１    Ｊａｖａプラットフォーム
２２１ａ  Ｊａｖａモジュール群
２２１ｂ  ＳＤＫ  ＡＰＩ
２２２    Ｊａｖａアプリケーション
２２２ａ  標準アプリケーション（１：第１仮想マシン側）
２２２ｂ  ＳＤＫアプリケーション
３０      動作モジュール（ａ：プリンタ、ｂ：スキャナ、ｃ：ＦＡＸ）
４１      サブセットモジュール
４１１    要求受付部
４１２    仮想マシン判定部
４１３    仮想マシン間通信部
４１４    処理要求部
１００  画像処理装置
１１０  コントローラ
１１１  ＣＰＵ（中央処理装置）
１１２  記憶装置
１１３  ネットワークＩ／Ｆ
１１４  外部記憶Ｉ／Ｆ（ａ：記録媒体）
１２０  操作パネル
１３０  プロッタ（画像形成部）
１４０  スキャナ（読み取り部）
【先行技術文献】
【特許文献】
【００９４】
【特許文献１】特開平０６−７５７９３号公報
【図１】
2011018235.tif 000003
【図２】
2011018235.tif 000004
【図３】
2011018235.tif 000005
【図４】
2011018235.tif 000006
【図５】
2011018235.tif 000007
【図６】
2011018235.tif 000008