(57)【要約】【課題】開発したプログラムの挙動を画像形成装置により近い挙動を実現することにより、複合機の開発作業を効率的に行うこと。【解決手段】ＰＣは、プログラムを解釈し、複合機の動作を実行する仮想マシン１（１１１）と、プログラムの命令に対する複合機の動作に相当する動作の処理であるエミュレーション処理を実行する仮想マシン２（１１２）と、エミュレーション処理を仮想マシン２（１１２）に実行させるエミュレータ１３０とを備えた。【選択図】図１
2010218469.tif 000002
【特許請求の範囲】
【請求項１】
画像形成装置で実行されるプログラムを開発するために使用される情報処理装置であって、
プログラムを解釈し、前記画像形成装置の動作を実行する第１実行手段と、
前記プログラムの命令に対する前記画像形成装置の動作に相当する動作の処理であるエミュレーション処理を実行する第２実行手段と、
前記エミュレーション処理を前記第２実行手段に実行させるエミュレータと、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記第１実行手段は、前記画像形成装置が備える仮想マシンと同等の機能を有する第１仮想マシンであることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第２実行手段は、前記画像形成装置が備える前記仮想マシンと異なる第２仮想マシンであることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記エミュレータは、
前記プログラムとして実行されるアプリケーション部と、
前記エミュレーション処理を前記第２実行手段に実行させるエミュレーション部と
を備えたことを特徴とする請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項５】
前記アプリケーション部は、前記プログラムの命令が前記エミュレーション処理を必要か否かを判断し、必要と判断した場合に前記プログラムの命令の実行依頼を前記エミュレーション部に送出し、
前記エミュレーション部は、前記実行依頼のあった前記プログラムの命令に対する前記エミュレーション処理を前記第２実行手段に実行させることを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記プログラムのソースコードを、前記第１仮想マシンおよび前記第２仮想マシンが実行可能なコードに変換するコンパイラを更に備えた請求項１〜３のいずれか一つに記載の情報処理装置。
【請求項７】
前記プログラムはＪａｖａ（登録商標）プログラムであり、当該Ｊａｖａ（登録商標）プログラムが参照するクラスライブラリを更に備えたことを特徴とする請求項４に記載の情報処理装置。
【請求項８】
画像形成装置で実行されるプログラムを開発するために使用される情報処理装置で実行される情報処理方法であって、
第１実行手段が、プログラムを解釈し、前記画像形成装置の動作を実行する第１実行ステップと、
第２実行手段が、前記プログラムの命令に対する前記画像形成装置の動作に相当する動作の処理であるエミュレーション処理を実行する第２実行ステップと、
エミュレータが、前記エミュレーション処理を前記第２実行手段に実行させるエミュレーションステップと、
を含むことを特徴とする情報処理方法。
【請求項９】
前記第１実行手段は、前記画像形成装置が備える仮想マシンと同等の機能を有する第１仮想マシンであることを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記第２実行手段は、前記画像形成装置が備える前記仮想マシンと異なる第２仮想マシンであることを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記エミュレーションステップは、前記プログラムとして実行されるステップと、
前記エミュレーション処理を前記第２実行手段に実行させるステップと、
を備えたことを特徴とする請求項８〜１０のいずれか一つに記載の情報処理方法。
【請求項１２】
前記アプリケーションステップは、前記プログラムの命令が前記エミュレーション処理を必要か否かを判断し、必要と判断した場合に前記プログラムの命令の実行依頼を前記エミュレーション部に送出し、
前記エミュレーションステップは、前記実行依頼のあった前記プログラムの命令に対する前記エミュレーション処理を前記第２実行手段に実行させることを特徴とする請求項１１に記載の情報処理方法。
【請求項１３】
前記プログラムのソースコードを、前記第１仮想マシンおよび前記第２仮想マシンが実行可能なコードに変換するステップを更に備えた請求項８〜１０のいずれか一つに記載の情報処理方法。
【請求項１４】
前記プログラムはＪａｖａ（登録商標）プログラムであり、当該Ｊａｖａ（登録商標）プログラムが参照するクラスライブラリを更に備えたことを特徴とする請求項１１に記載の情報処理方法。
【請求項１５】
画像形成装置で実行されるプログラムを開発するために使用されるコンピュータを、
プログラムを解釈し、前記画像形成装置の動作を実行する第１実行手段と、
前記プログラムの命令に対する前記画像形成装置の動作に相当する動作の処理であるエミュレーション処理を実行する第２実行手段と、
前記エミュレーション処理を前記第２実行手段に実行させるエミュレータと、
して機能させるための情報処理プログラム。
【請求項１６】
前記情報処理プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置で実行されるプログラムを開発するために使用される情報処理装置、情報処理方法、プログラムおよび記録媒体に関する。
【背景技術】
【０００２】
近年では、プリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を１つの筐体内に収納した画像形成装置（以下、「複合機」という。）が知られている。この複合機は、１つの筐体内に表示部、印刷部および撮像部などを設けるとともに、プリンタ、コピーおよびファクシミリ装置にそれぞれ対応した３種類のソフトウェアを設け、これらのソフトウェアを切り替えることによって、当該装置をプリンタ、コピー、スキャナ又はファクシミリ装置として動作させるものである。
【０００３】
このような従来の複合機では、予め提供される機能が定められていたため、利用者が複合機に対して行う操作も大きな変更はなく、複合機の動作をカスタマイズする必要性はない。このため、従来の複合機にはカスタマイズ機能は搭載されていなかった。
【０００４】
ところで、このような従来の複合機では、プリンタ、コピー、スキャナおよびファクシミリ装置に対応するソフトウェアをそれぞれ別個に設けているため、各ソフトウェアの開発に多大の時間を要する。このため、出願人は、表示部、印刷部および撮像部などの画像形成処理で使用されるハードウェア資源を有し、プリンタ、コピー又はファクシミリなどの各ユーザサービスにそれぞれ固有の処理を行うアプリケーションを複数搭載し、これらのアプリケーションとハードウェア資源との間に介在して、ユーザサービスを提供する際に、アプリケーションの少なくとも２つが共通に必要とするハードウェア資源の管理、実行制御並びに画像形成処理を行う各種コントロールサービスからなるプラットホームを備えた画像形成装置（複合機）を発明した。なお、各種コントロールサービスが行う処理をシステム側の処理と呼ぶ。 
【０００５】
このような新規な複合機では、アプリケーションと、ハードウェア資源にアクセスするような開発が難しい処理を行うコントロールサービスとを別個に設けているため、複合機の出荷後にユーザもしくは第三者であるサードベンダが画像形成処理などにかかるアプリケーションとして新規な外部アプリケーションを開発して複合機に搭載可能な構成となっている。
【０００６】
このため、新たに開発された外部アプリケーションの起動や実行中に、例えば、操作表示部における画面表示やタッチ操作等によって、予め提供されている機能とは異なる実行処理を行わせたい場合がある。このように、新規な複合機では、カスタマイズという、出荷後に外部アプリケーションを搭載することを想定していない従来の複合機では問題にならなかった新規な課題が生じてくる。
【０００７】
このようなカスタマイズを、外部アプリケーションの開発段階でソースコードを記述し、ソースコードをコンパイルおよびリンクすることによって行うことが考えられる例えば、外部アプリケーションの開発段階で、外部アプリケーション自体の処理の中に操作表示部のタッチ操作に伴う実行処理を開発する場合が多くなる。
【０００８】
この場合、操作表示部のタッチ操作に伴う実行処理の検証を逐次行いながら外部アプリケーション自体の開発を進めていくことがプログラム開発効率上好ましい。
【０００９】
しかしながら、タッチ操作に伴う実行処理に障害を検出するたびに、ソースコードの修正、再コンパイル、再リンクを行って、開発対象の複合機に再インストールし、動作検証を行わなければならないとすると、プログラム開発の効率が悪くなるという問題がある。
【００１０】
また、複合機のカスタマイズに限らず、複合機とは別のＰＣ等の環境でのプログラムの作成と、複合機での動作検証とによる従来のプログラム開発は効率が悪いという問題がある。 
【００１１】
上記問題を解決するために、画像形成装置で実行されるプログラムを解釈し、実行する仮想マシンと、当該プログラムの命令に対する画像形成装置の動作に相当する動作を前記情報処理装置に実行させるエミュレータを備える情報処理装置が特許文献１に開示されている。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、複合機のプリンタ、コピー、ファクシミリ、スキャナなどの各装置の機能を実行するネイティブ実行部のエミュレーションが上記仮想マシンのリソースを使用することになるため、実際に複合機にインストールした時のプログラムの挙動をエミュレーションできない場合があり、複合機の開発作業を効率的に行うことができないという問題がある。
【００１３】
本発明は、上記に鑑みてなされたものであって、開発したプログラムの挙動を画像形成装置により近い挙動を実現することにより、複合機の開発作業を効率的に行うことができる情報処理装置、情報処理方法、プログラムおよび記録媒体を提供することを目的とする。
【課題を解決するための手段】
【００１４】
上記課題を解決するために、本発明にかかる情報処理装置は、画像形成装置で実行されるプログラムを開発するために使用される情報処理装置であって、プログラムを解釈し、前記画像形成装置の動作を実行する第１実行手段と、前記プログラムの命令に対する前記画像形成装置の動作に相当する動作の処理であるエミュレーション処理を実行する第２実行手段と、前記エミュレーション処理を前記第２実行手段に実行させるエミュレータと、を備えたことを特徴とする。
【００１５】
また、本発明にかかる情報処理方法は、画像形成装置で実行されるプログラムを開発するために使用される情報処理装置で実行される情報処理方法であって、第１実行手段が、プログラムを解釈し、前記画像形成装置の動作を実行する第１実行ステップと、第２実行手段が、前記プログラムの命令に対する前記画像形成装置の動作に相当する動作の処理であるエミュレーション処理を実行する第２実行ステップと、エミュレータが、前記エミュレーション処理を前記第２実行手段に実行させるエミュレーションステップと、を含むことを特徴とする。
【００１６】
また、本発明にかかる情報処理プログラムは、画像形成装置で実行されるプログラムを開発するために使用されるコンピュータを、プログラムを解釈し、前記画像形成装置の動作を実行する第１実行手段と、前記プログラムの命令に対する前記画像形成装置の動作に相当する動作の処理であるエミュレーション処理を実行する第２実行手段と、前記エミュレーション処理を前記第２実行手段に実行させるエミュレータとして機能させる。
【発明の効果】
【００１７】
本発明によれば、第１実行手段が、プログラムを解釈し、画像形成装置の動作を実行し、第２実行手段が、プログラムの命令に対する画像形成装置の動作に相当する動作の処理であるエミュレーション処理を実行し、エミュレータが、エミュレーション処理を第２実行手段に実行させることで、開発したプログラムの挙動を画像形成装置により近い挙動を実現することにより、複合機の開発作業を効率的に行うことができるという効果を奏する。
【図面の簡単な説明】
【００１８】
【図１】図１は、本実施の形態にかかるＰＣにおけるＪａｖａ（登録商標）開発環境２５０と複合機におけるＪａｖａ（登録商標）実行環境２４０を主とした機能的構成を示すブロック図である。
【図２】図２は、クラスライブラリ１０１，１０２の詳細を示す説明図である。
【図３】図３は、エミュレータ１３０によりＰＣに表示されるオペレーションパネル画面を示す図である。
【図４−１】図４−１は、アプリケーション部１３１の起動コマンドを示す説明図である。
【図４−２】図４−２は、アプリケーション命令エミュレーション部１３４の起動コマンドを示す説明図である。
【図５−１】図５−１は、アプリケーション部１３１の起動コマンドの一例を示す説明図である。
【図５−２】図５−２は、アプリケーション命令エミュレーション部１３４の起動コマンドの一例を示す説明図である。
【図６】図６は、本実施の形態の複合機２００の構成を示すブロック図である。
【図７】図７は、Ｊａｖａ（登録商標）アプリの実行処理の手順を示すフローチャートである。
【図８】図８は、本実施の形態にかかる複合機２００のハードウェア構成を示すブロック図である。
【図９】図９は、Ｊａｖａ（登録商標）開発環境の他の例を示すブロック図である。
【発明を実施するための形態】
【００１９】
以下に添付図面を参照して、この発明にかかる情報処理装置、情報処理方法、プログラムおよび記録媒体の最良な実施の形態を詳細に説明する。
【００２０】
本実施の形態は、複合機とＰＣ（Ｐｅｒｓｏｎａｌ Ｃｏｍｐｕｔｅｒ ）などのクライアント端末とがインターネットに接続され、ＰＣ等のクライアント端末から複合機の操作表示部等のカスタマイズプログラムの入力およびデバッグ作業を行うことを可能としたものである。
【００２１】
本実施の形態では、アプリをＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）等で開発して、開発したアプリを複合機上で実行する構成となっている。すなわち、Ｊａｖａ（登録商標）アプリケーションをＰＣ等で開発し、それを複合機にダウンロードしてＪａｖａ（登録商標）実行環境２４０を用いて実行する。なお、このＰＣは、ＣＰＵ、メモリ、ハードディスクなどを有する一般的なコンピュータである。
【００２２】
図１は、本実施の形態にかかるＰＣにおけるＪａｖａ（登録商標）開発環境２５０と複合機におけるＪａｖａ（登録商標）実行環境２４０の機能的構成を示すブロック図である。図１に示すように、複合機におけるＪａｖａ（登録商標）実行環境２４０は、汎用ＯＳ２２１の下、共通サービス２６０（後述）上で動作する。複合機におけるＪａｖａ（登録商標）実行環境２４０は、図１に示すように、クラスライブラリ１７１、仮想マシン１８１、アプリケーション管理部１８０、アプリケーション命令ネイティブ実行部１９１を備えている。ここで、図１において、アプリケーション部１９２は、Ｊａｖａ（登録商標）アプリが実行された状態を示している。
【００２３】
クラスライブラリ１７１は、Ｊａｖａ（登録商標）アプリが容易に複合機を操作するためのサービスを提供するために用いられるクラスライブラリである。本実施の形態におけるクラスライブラリ１７１は、例えば、操作パネルクラス、イベントクラス、複合機制御クラス、ネットワークトランザクションクラス、基本的なＪａｖａ（登録商標）クラスライブラリ等から構成される。
【００２４】
なお、Ｊａｖａ（登録商標）アプリ自身もクラスの集合であり、そのクラスがクラスライブラリのクラスを呼び出すことにより、アプリの処理が実行される。Ｊａｖａ（登録商標）アプリに、それが使用するクラスライブラリのクラスの機能を全て含めることにより、クラスライブラリ１７１を搭載しない構成もあり得る。
【００２５】
Ｊａｖａ（登録商標）のソースコードプログラムはコンパイルして中間コード形式のバイトコードにされ、複合機にロードされる。仮想マシン１８１はそのバイトコードを解釈・実行する。
【００２６】
アプリケーション管理部１９０は、Ｊａｖａ（登録商標）アプリを管理する機能を有しており、例えば、Ｊａｖａ（登録商標）アプリのリスト表示、起動や強制終了などのＪａｖａ（登録商標）アプリ実行管理、Ｊａｖａ（登録商標）アプリのロードやバージョンアップ、インストール済みのＪａｖａ（登録商標）アプリの削除、アプリケーション登録のためのパスワード設定等を行う機能を有している。
【００２７】
アプリケーション命令ネイティブ実行部１９１は、仮想マシン１８１で実行されるＪａｖａ（登録商標）コードが、Ｃ言語などの他のプログラミング言語で書かれたアプリケーションやライブラリと相互運用するための機能を有している。このアプリケーション命令ネイティブ実行部１９１の機構を用いて、アプリは共通サービス２６０の中のコントロールサービスのＡＰＩにアクセスできる。
【００２８】
一方、ＰＣのＪａｖａ（登録商標）開発環境２５０は、ＯＳ１６０と、エミュレータ１３０と、アプリケーション管理部１４０と、仮想マシン１（１１１）と、仮想マシン２（１１２）と、クラスライブラリ１０１と、クラスライブラリ１０２と、Ｊａｖａ（登録商標）コンパイラ１５０とを備えている。
【００２９】
アプリケーション管理部１４０は、Ｊａｖａ（登録商標）の実行環境２４０のアプリケーション管理部１９０と同様に、Ｊａｖａ（登録商標）アプリを管理する機能を有している。
【００３０】
図２は、クラスライブラリ１０１，１０２の詳細を示す説明図である。クラスライブラリ１０１は、Ｊａｖａ（登録商標）の実行環境２４０のクラスライブラリ１７１と同様のクラスライブラリであり、操作パネルクラス、イベントクラス、複合機制御クラス、ネットワークトランザクションクラス、基本的なＪａｖａ（登録商標）クラスライブラリ等から構成される。
【００３１】
クラスライブラリ１０２は、Ｊａｖａ（登録商標）の実行環境２４０のクラスライブラリ１７１とは異なるクラスライブラリであり、エミュレータ１３０によるエミュレーション処理で用いるエミュレーション用のクラスを有している。
【００３２】
仮想マシン１（１１１）は、Ｊａｖａ（登録商標）の実行環境２４０における仮想マシン１８１と同様の機能を有し、Ｊａｖａ（登録商標）アプリのバイトコードを解釈、複合機の動作を実行する。
【００３３】
仮想マシン２（１１２）は、Ｊａｖａ（登録商標）の実行環境２４０における仮想マシン１８１と異なる機能を有し、エミュレータ１３０の下、Ｊａｖａ（登録商標）アプリのバイトコードの命令に対する複合機の動作に相当する動作をエミュレートするエミュレーション処理を実行する。
【００３４】
エミュレータ１３０は、Ｊａｖａ（登録商標）アプリによる複合機の操作をエミュレートするものであり、エミュレーション処理を仮想マシン２（１１２）に実行させるアプリケーション命令エミュレーション部１３４を有している。ここで、図１におけるアプリケーション部１３１は、Ｊａｖａ（登録商標）アプリが実行された状態を示している。
【００３５】
アプリケーション命令エミュレーション部１３４は、アプリケーション部１３１（Ｊａｖａ（登録商標）アプリ）側からの命令を受信し、それに応じた動作を行うように記述したプログラムとして構成される。すなわち、複合機のコアの部分をエミュレーションする処理は、アプリケーション部１３１からアプリケーション命令エミュレーション部１３４に実行依頼され、アプリケーション命令エミュレーション部１３４が仮想マシン２（１１２）に実行させる。
【００３６】
例えば、複合機のオペレーションパネルの表示部への表示命令に対しては、仮想マシン２（１１２）およびアプリケーション命令エミュレーション部１３４が複合機上に表示する画面と同様の画面をＰＣのディスプレイ上に表示する。ただし、開発環境であるＰＣには複合機におけるエンジン（スキャナ、プリンタなど）がないので、例えば、Ｊａｖａ（登録商標）アプリからのプリント命令に対しては、ＰＣの画面上にプリントを行う画像を表示したり、ＰＣ自身に接続されているデフォルトのプリンタに印刷を行う。また、ユーザがコピー操作をＰＣのエミュレータ画面上でした場合には、例えば、ユーザにコピー対象となるファイルをローカルファイルシステムから選ぶように通知し、コピーのあて先を尋ねるダイアログボックスを表示し、選択されたファイルをその指定された宛先にコピーする。
【００３７】
このように、アプリケーション命令エミュレーション部１３４は、複合機に搭載されるＪａｖａ（登録商標）アプリを実行したアプリケーション部１３１では存在しない処理、例えば、エミュレータ１３０のハードキー、メニューバーとスクリーンなどを構築する処理の実行依頼をアプリケーション部１３１から受信し、当該処理を仮想マシン２（１１２）に実行させる。これによりアプリケーション部１３１は、複合機に載せる機能と同等の機能の処理しか実行しないことになり、エミュレーション処理によって仮想マシン１（１１１）のリソースを使用せず、Ｊａｖａ（登録商標）開発環境２５０上で最大限に複合機上のアプリケーション部１９２を実現できるようになっている。
【００３８】
このようなエミュレータ１３０のハードキー、メニューバーとスクリーンなどを構築する処理は、アプリケーション命令エミュレーション部１３４が起動するときに実行される。図３は、エミュレータ１３０によりＰＣに表示されるオペレーションパネル画面を示す。この画面に表示されるボタンなどの要素は、実際の複合機のものと同等である。
【００３９】
図１に戻り、Ｊａｖａ（登録商標）コンパイラ１５０は、Ｊａｖａ（登録商標）ソースコードからバイトコードを生成するものである。
【００４０】
このＪａｖａ（登録商標）開発環境２５０で開発されたＪａｖａ（登録商標）アプリは、ＩＣカード等の記録媒体を介して複合機のＪａｖａ（登録商標）実行環境２４０にロードでき、また、ネットワークを介してロードすることもできる。
【００４１】
次に、アプリケーション部１３１とアプリケーション命令エミュレーション部１３４の起動方法について説明する。アプリケーション部１３１は、図４−１に示す起動コマンドで起動し、アプリケーション命令エミュレーション部１３４は図４−２に示す起動コマンドで起動する。
【００４２】
すなわち、アプリケーション部１３１では、図４−１に示すように、仮想マシン１起動ファイルが仮想マシン１（１１１）を起動し、アプリケーション部１３１の実行用のＪａｒファイルであるアプリケーションＪａｒファイルを仮想マシン１（１１１）の専有領域にロードし、アプリケーション起動クラスを起動する流れとなっている。ここで、アプリケーションＪａｒファイルは、Ｊａｖａ（登録商標）コンパイラでコンパイルしたクラスファイルをまとめたＪａｒファイルであり、アプリケーション部１３１の実行に必要となるクラスが含まれている。アプリケーション起動クラスは、メインメソッドが含まれるクラスであり、上述した操作パネルクラス、イベントクラス、複合機制御クラス等である。
【００４３】
また、アプリケーション命令エミュレーション部１３４では、図４−２に示すように、仮想マシン２起動ファイルが仮想マシン２（１１２）を起動し、エミュレーション用のＪａｒファイルであるエミュレーション用Ｊａｒファイルを仮想マシン２（１１２）の専有領域にロードし、エミュレーション用起動クラスを起動する流れとなっている。ここで、エミュレーション用Ｊａｒファイルは、Ｊａｖａ（登録商標）コンパイラでコンパイルしたクラスファイルをまとめたＪａｒファイルであり、エミュレーション処理の実行に必要となるクラスが含まれている。エミュレーション用起動クラスは、メインメソッドが含まれるクラスであり、上述したエミュレーション用クラス等である。
【００４４】
図５−１は、アプリケーション部１３１の起動コマンドの一例を示し、図５−２は、アプリケーション命令エミュレーション部１３４の起動コマンドの一例を示している。
【００４５】
次に、本実施の形態にかかる複合機２００の全体の機能的構成について説明する。図６は、本実施の形態の複合機２００の構成を示すブロック図である。図６に示すように、複合機２００は、白黒ラインプリンタ（Ｂ＆Ｗ ＬＰ）２０１と、カラーラインプリンタ（Ｃｏｌｏｒ ＬＰ）２０２と、ハードディスク装置（ＨＤＤ）２０３と、スキャナ、ファクシミリ、メモリ、ネットワークインタフェースなどのハードウェアリソース２０４を有するとともに、プラットホーム２２０と、アプリケーション２３０と、複合機初期化部２２９と、プログラム起動部２３０と、各種コントロールサービスとを主に備えている。
【００４６】
プラットホーム２２０は、アプリケーションからの処理要求を解釈してハードウェア資源の獲得要求を発生させるコントロールサービスと、一又は複数のハードウェア資源の管理を行い、コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（ＳＲＭ）１２３と、汎用ＯＳ１２１とを有する。ここで、各種コントロールサービスとＳＲＭ２２３とが共通サービス２６０を構成する。
【００４７】
コントロールサービスは、複数のサービスモジュールから形成され、ＳＣＳ（システムコントロールサービス）２２２と、ＥＣＳ（エンジンコントロールサービス）２２４と、ＭＣＳ（メモリコントロールサービス）２２５と、ＯＣＳ（オペレーションパネルコントロールサービス）２２６と、ＦＣＳ（ファックスコントロールサービス）２２７と、ＮＣＳ（ネットワークコントロールサービス）２２８とから構成される。また、プログラミングサービス２３２も、コントロールサービス層に含まれている。なお、このプラットホーム２２０は、あらかじめ定義された関数によりアプリケーション２３０から処理要求を受信可能とするアプリケーションプログラムインタフェース（ＡＰＩ）を有する。
【００４８】
汎用ＯＳ２２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであり、プラットホーム２２０並びにアプリケーション２３０の各ソフトウェアをそれぞれプロセスとして並列実行する。
【００４９】
ＳＲＭ２２３のプロセスは、ＳＣＳ２２２とともにシステムの制御およびリソースの管理を行うものである。ＳＲＭ２２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ＨＤＤファイル、ホストＩ／Ｏ（セントロＩ／Ｆ、ネットワークＩ／Ｆ 、ＩＥＥＥ１３９４ Ｉ ／Ｆ、ＲＳ２３２Ｃ Ｉ／Ｆなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【００５０】
具体的には、このＳＲＭ２２３は、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判断し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ２２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、要求内容（例えば、プリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成など）を直接実施している。
【００５１】
ＳＣＳ２２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。
【００５２】
ＥＣＳ２２４のプロセスは、白黒ラインプリンタ（Ｂ＆Ｗ ＬＰ）２０１、カラーラインプリンタ（Ｃｏｌｏｒ ＬＰ）２０２、スキャナ、ファクシミリなどからなるハードウェアリソース２０３のエンジンの制御を行う。
【００５３】
ＭＣＳ２２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などを行う。
【００５４】
ＦＣＳ２２７のプロセスは、システムコントローラの各アプリ層からＰＳＴＮ／ＩＳＤＮ 網を利用したファクシミリ送受信、ＢＫＭ （バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのＡＰＩを提供する。
【００５５】
ＮＣＳ２２８のプロセスは、ネットワークＩ／Ｏ を必要とするアプリケーションに対して共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から各プロトコルによって受信したデータを各アプリケーションに振り分けたり、アプリケーションからデータをネットワーク側に送信する際の仲介を行う。具体的には、ｆｔｐｄ、ｌｐｄ、ｓｎｍｐｄ、ｔｅｌｎｅｔｄ、ｓｍｔｐｄなどのサーバデーモンや、同プロトコルのクライアント機能などを有している。
【００５６】
ＯＣＳ２２６のプロセスは、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル）の制御を行う。ＯＣＳ２２６は、オペレーションパネルからキー押下（又はタッチ操作）をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ２２２に送信するＯＣＳプロセスの部分と、アプリケーション２３０又はコントロールサービスからの要求によりオペレーションパネルに各種画面を描画出力する描画関数やその他オペレーションパネルに対する制御を行う関数などがあらかじめ登録されたＯＣＳライブラリの部分とから構成される。このＯＣＳライブラリは、アプリケーション２３０およびコントロールサービスの各モジュールにリンクされて実装されている。なお、ＯＣＳ２２６のすべてをプロセスとして動作させるように構成しても良く、あるいはＯＣＳ２２６のすべてをＯＣＳライブラリとして構成しても良い。
【００５７】
アプリケーション２３０は、ページ記述言語（ＰＤＬ）、ＰＣＬおよびポストスクリプト（ＰＳ）を有するプリンタ用のアプリケーションであるプリンタアプリ２１１と、コピー用アプリケーションであるコピーアプリ２１２と、ファクシミリ用アプリケーションであるファックスアプリ２１３と、スキャナ用アプリケーションであるスキャナアプリ２１４と、ネットワークファイル用アプリケーションであるネットファイルアプリ２１５と、工程検査用アプリケーションである工程検査アプリ２１６ とを有している。
【００５８】
アプリケーション２３０の各プロセス、コントロールサービスの各プロセスは、関数呼び出しとその戻り値送信およびメッセージの送受信によってプロセス間通信を行いながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを実現している。
【００５９】
このように、本実施の形態にかかる複合機２００には、複数のアプリケーション２３０および複数のコントロールサービスが存在し、いずれもプロセスとして動作している。そして、これらの各プロセス内部には、一又は複数のスレッドが生成されて、スレッド単位の並列実行が行われる。そして、コントロールサービスがアプリケーション２３０に対し共通サービスを提供しており、このため、これらの多数のプロセスが並列動作、およびスレッドの並列動作を行って互いにプロセス間通信を行って協調動作をしながら、コピー、プリンタ、スキャナ、ファクシミリなどの画像形成処理にかかるユーザサービスを提供するようになっている。
【００６０】
また、複合機２００のアプリケーション層には、上述したＪａｖａ（登録商標）実行環境２４０が設けられ、複合機２００の顧客、サードベンダなどの第三者がコントロールサービス層の上のアプリケーション層にＪａｖａ（登録商標）アプリ２６０等の外部アプリを開発して搭載して実行可能となっている。
【００６１】
なお、本実施の形態にかかる複合機２００では、複数のアプリケーション２３０のプロセスと複数のコントロールサービスのプロセスとが動作しているが、アプリケーション２３０とコントロールサービスのプロセスがそれぞれ単一の構成とすることも可能である。また、各アプリケーション２３０は、アプリケーションごとに追加又は削除することができる。
【００６２】
また、複合機２００はインストーラ（不図示）を含む。インストーラは、第三者が開発したＪａｖａ（登録商標）アプリ２６０等の外部アプリを、ＨＤＤ２０３にインストールするものである。本実施の形態にかかる複合機２００では、フラッシュカードなどのＩＣカードの記憶媒体にＪａｖａ（登録商標）アプリ２６０を格納し、インストーラによってＪａｖａ（登録商標）アプリ２６０をＨＤＤ２０３にインストールし、プログラム起動部２３０によって、ＨＤＤ２０３からＪａｖａ（登録商標）アプリ２５０を起動してアプリケーション層で動作させるようになっている。一方、プリンタアプリ２１１、コピーアプリ２１２、ファックスアプリ２１３、スキャナアプリ２１４、ネットファイルアプリ２１５、工程検査アプリ２１６などの複合機２００の出荷時に提供されるアプリケーション２３０、各コントロールサービスおよびプログラム起動部２３０、フラッシュメモリに出荷時に組み込まれており、複合機２００の起動時（電源投入時）に複合機初期化部２２９によって起動されるようになっている。
【００６３】
なお、ＷｅｂサーバにＪａｖａ（登録商標）開発環境２５０で開発したＪａｖａ（登録商標）アプリ２６０を格納しておき、Ｊａｖａ（登録商標）実行環境２４０からＷｅｂサーバにアクセスしてＪａｖａ（登録商標）アプリ２６０をロードするように構成できる。また、Ｗｅｂサーバの代わりにＦＴＰサーバを使用することもできる。
【００６４】
次に、Ｊａｖａ（登録商標）開発環境におけるＪａｖａ（登録商標）アプリの開発は以下のように行われる。まず、Ｊａｖａ（登録商標）のソースコードをＪａｖａ（登録商標）ファイルとして作成し、これをＪａｖａ（登録商標）コンパイラ１５０でコンパイルし、クラスファイルとする。そして、複数のクラスをまとめてＪａｒファイルとする。なお、Ｊａｒファイルにはｍａｉｎルーチンを持つクラスを示すファイルを含めておくことが好ましい。
【００６５】
本実施の形態では、このようにして作成したＪａｖａ（登録商標）アプリを、エミュレータ１３０を用いることにより、ターゲットである複合機を用いずにＰＣ上でＪａｖａ（登録商標）アプリのデバッグをすることが可能である。これは、Ｊａｖａ（登録商標）では、仮想マシンを使用する構成となっているため、実行環境をエミュレートすることが比較的容易であることによる。エミュレータを用いた開発が完了したら、Ｊａｖａ（登録商標）アプリ（バイトコード）をネットワーク又はＩＣカードを介して複合機にロードすることにより、複合機を用いた評価を行うことが可能である。
【００６６】
次に、以上のように構成された本実施の形態のＰＣのＪａｖａ（登録商標）開発環境２５０によるＪａｖａ（登録商標）アプリの実行処理について説明する。図７は、Ｊａｖａ（登録商標）アプリの実行処理の手順を示すフローチャートである。
【００６７】
図４−１、図５−１の例で示す起動コマンドにより仮想マシン１（１１１）が起動される（ステップＳ１１）。これにより、アプリケーション部１３１が実行されることになる。一方、図４−２、図５−２の例で示す起動コマンドにより仮想マシン２（１１２）が起動される（ステップＳ１１）。これにより、アプリケーション命令エミュレーション部１３４が実行されることになる。
【００６８】
仮想マシン１（１１１）は、Ｊａｖａ（登録商標）アプリのバイトコードの命令を逐次読み出して（ステップＳ１２）、読み出した命令を解釈する（ステップＳ１３）。
【００６９】
そして、仮想マシン１（１１１）は、解釈した命令がエミュレーション処理が必要ないか否かを判断する（ステップＳ１４）。そして、解釈した命令がエミュレーション処理が必要な場合には（ステップＳ１４：Ｙｅｓ）、アプリケーション命令エミュレーション部１３４へその命令の実行依頼を送出する（ステップＳ１５）。
【００７０】
アプリケーション命令エミュレーション部１３４では、起動後はアプリケーション部１３１からの命令実行依頼の受信待ちとなっており（ステップＳ２２）、アプリケーション部１３１からの命令実行依頼を受信すると（ステップＳ２２：Ｙｅｓ）、当該命令のＰＣ上でエミュレーション処理を仮想マシン２（１１２）により実行する（ステップＳ２３）。
【００７１】
一方、ステップＳ１４において、解釈した命令がエミュレーション処理が必要ない場合には（ステップＳ１４：Ｎｏ）、仮想マシン１（１１１）はその命令を実行する（ステップＳ１６）。
【００７２】
そして、以上のステップＳ１２からＳ１６までの処理を命令が終了するまで繰り返す（ステップＳ１７）。
【００７３】
このように本実施の形態では、Ｊａｖａ（登録商標）開発環境２５０において、複合機の仮想マシン１８１と同じ機能を有する仮想マシン１（１１１）と、複合機の仮想マシン１８１と異なる機能を有する仮想マシン２（１１２）とを設け、エミュレータ１３０によって複合機に搭載されるＪａｖａ（登録商標）アプリでは存在しない処理を仮想マシン２（１１２）に実行させているので、エミュレーション処理によって仮想マシン１（１１１）のリソースを使用せず、Ｊａｖａ（登録商標）開発環境２５０上で最大限に複合機上のアプリケーション部１９２を実現できる。このため、開発したＪａｖａ（登録商標）アプリの挙動を複合機２００により近い挙動を実現することにより、複合機の開発作業を効率的に行うことができる。
【００７４】
本実施の形態のＰＣは、ＣＰＵなどの制御装置と、ＲＯＭ（Read  Only  Memory）やＲＡＭなどの記憶装置と、ＨＤＤ、ＣＤドライブ装置などの外部記憶装置と、ディスプレイ装置などの表示装置と、キーボードやマウスなどの入力装置を備えており、通常のコンピュータを利用したハードウェア構成となっている。
【００７５】
本実施形態のＰＣで実行される仮想マシン１（１１１）、仮想マシン２（１１２）、クラスライブラリ１０１，１０２、エミュレータ１３０、アプリケーション管理部１４０からなる情報処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【００７６】
また、本実施の形態のＰＣで実行される情報処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成しても良い。また、本実施形態の〜装置で実行される〜プログラムをインターネット等のネットワーク経由で提供または配布するように構成しても良い。
【００７７】
また、本実施の形態のＰＣで実行される情報処理プログラムを、ＲＯＭ等に予め組み込んで提供するように構成してもよい。
【００７８】
本実施の形態のＰＣで実行される情報処理プログラムは、上述した各部（仮想マシン１（１１１）、仮想マシン２（１１２）、クラスライブラリ１０１，１０２、エミュレータ１３０、アプリケーション管理部１４０）を含むモジュール構成となっており、実際のハードウェアとしてはＣＰＵ（プロセッサ）が上記記憶媒体から情報処理プログラムを読み出して実行することにより上記各部が主記憶装置上にロードされ、仮想マシン１（１１１）、仮想マシン２（１１２）、クラスライブラリ１０１，１０２、エミュレータ１３０、アプリケーション管理部１４０が主記憶装置上に生成されるようになっている。
【００７９】
図８は、本実施の形態にかかる複合機２００のハードウェア構成を示すブロック図である。本図に示すように、この複合機２００は、コントローラ１０とエンジン部（Ｅｎｇｉｎｅ）６０とをＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｆａｃｅ）バスで接続した構成となる。コントローラ１０は、複合機２００全体の制御と描画、通信、図示しない操作部からの入力を制御するコントローラである。エンジン部６０は、ＰＣＩバスに接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、１ドラムカラープロッタ、４ドラムカラープロッタ、スキャナまたはファックスユニットなどである。なお、このエンジン部６０には、プロッタなどのいわゆるエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理部分が含まれる。
【００８０】
コントローラ１０は、ＣＰＵ１１と、ノースブリッジ（ＮＢ）１３と、システムメモリ（ＭＥＭ−Ｐ）１２と、サウスブリッジ（ＳＢ）１４と、ローカルメモリ（ＭＥＭ−Ｃ）１７と、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）１６と、ハードディスクドライブ（ＨＤＤ）１８とを有し、ノースブリッジ（ＮＢ）１３とＡＳＩＣ１６との間をＡＧＰ（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）バス１５で接続した構成となる。また、ＭＥＭ−Ｐ１２は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１２ａと、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ)１２ｂと、をさらに有する。
【００８１】
ＣＰＵ１１は、複合機２００の全体制御をおこなうものであり、ＮＢ１３、ＭＥＭ−Ｐ１２およびＳＢ１４からなるチップセットを有し、このチップセットを介して他の機器と接続される。
【００８２】
ＮＢ１３は、ＣＰＵ１１とＭＥＭ−Ｐ１２、ＳＢ１４、ＡＧＰ１５とを接続するためのブリッジであり、ＭＥＭ−Ｐ１２に対する読み書きなどを制御するメモリコントローラと、ＰＣＩマスタおよびＡＧＰターゲットとを有する。
【００８３】
ＭＥＭ−Ｐ１２は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ＲＯＭ１２ａとＲＡＭ１２ｂとからなる。ＲＯＭ１２ａは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、ＲＡＭ１２ｂは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
【００８４】
ＳＢ１４は、ＮＢ１３とＰＣＩデバイス、周辺デバイスとを接続するためのブリッジである。このＳＢ１４は、ＰＣＩバスを介してＮＢ１３と接続されており、このＰＣＩバスには、ネットワークインターフェース（Ｉ／Ｆ）部なども接続される。
【００８５】
ＡＳＩＣ１６は、画像処理用のハードウェア要素を有する画像処理用途向けのＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）であり、ＡＧＰ１５、ＰＣＩバス、ＨＤＤ１８およびＭＥＭ−Ｃ１７をそれぞれ接続するブリッジの役割を有する。このＡＳＩＣ１６は、ＰＣＩターゲットおよびＡＧＰマスタと、ＡＳＩＣ１６の中核をなすアービタ（ＡＲＢ）と、ＭＥＭ−Ｃ１７を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などをおこなう複数のＤＭＡＣ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ  Ｃｏｎｔｒｏｌｌｅｒ）と、エンジン部６０との間でＰＣＩバスを介したデータ転送をおこなうＰＣＩユニットとからなる。このＡＳＩＣ１６には、ＰＣＩバスを介してＦＣＵ（Ｆａｃｓｉｍｉｌｅ  Ｃｏｎｔｒｏｌ  Ｕｎｉｔ）３０、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）４０、ＩＥＥＥ１３９４（ｔｈｅ  Ｉｎｓｔｉｔｕｔｅ  ｏｆ  Ｅｌｅｃｔｒｉｃａｌ  ａｎｄ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｅｎｇｉｎｅｅｒｓ  １３９４）インターフェース５０が接続される。操作表示部２０はＡＳＩＣ１６に直接接続されている。
【００８６】
ＭＥＭ−Ｃ１７は、コピー用画像バッファ、符号バッファとして用いるローカルメモリであり、ＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）１８は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージである。
【００８７】
ＡＧＰ１５は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレーターカード用のバスインターフェースであり、ＭＥＭ−Ｐ１２に高スループットで直接アクセスすることにより、グラフィックスアクセラレーターカードを高速にするものである。
【００８８】
なお、本実施の形態のエミュレータ１３０は、図１に示すように仮想マシン１（１１１），仮想マシン２（１１２）とクラスライブラリ１０１，１０２とは別のプラグラムとして実装したが、図９に示すように、クラスライブラリ８０１の中のアプリケーションクラス８３１として実装し、クラスライブラリ８０２の中のエミュレータクラス８３２として実装することもできる。
【００８９】
また、上記実施の形態では、本発明の画像形成装置を、コピー機能、プリンタ機能、スキャナ機能およびファクシミリ機能のうち少なくとも２つの機能を有する複合機に適用した例を挙げて説明するが、複写機、プリンタ、スキャナ装置、ファクシミリ装置等の画像形成装置であればいずれにも適用することができる。
【符号の説明】
【００９０】
１０１，１０２，１７１，８０１，８０２   クラスライブラリ
１８１ 仮想マシン
１１１  仮想マシン１
１１２  仮想マシン２
１４０，１９０ アプリケーション管理部
１３０ エミュレータ
１３１，１９２  アプリケーション部
１３４  アプリケーション命令エミュレーション部
１５０ Ｊａｖａ（登録商標）コンパイラ
１９１  アプリケーション命令ネイティブ実行部
２００ 複合機
２０１ 白黒ラインプリンタ
２０２ カラーラインプリンタ
２０３ ハードディスク装置（ＨＤＤ）
２０４ ハードウェアリソース
２１１ プリンタアプリ
２１２ コピーアプリ
２１３ ファックスアプリ
２１４ スキャナアプリ
２１５ ネットファイルアプリ
２１６ 工程検査アプリ
２２０ プラットホーム
２２１ 汎用ＯＳ
２２２ ＳＣＳ
２２３ ＳＲＭ
２２４ ＥＣＳ
２２５ ＭＣＳ
２２６ ＯＣＳ
２２７ ＦＣＳ
２２８ ＮＣＳ
２２９ 複合機初期化部
２３０ アプリケーション
２３１ プログラム起動部
２３２ プログラミングサービス
２４０ Ｊａｖａ（登録商標）実行環境
２５０ Ｊａｖａ（登録商標）開発環境
２６０  共通サービス
２８０ Ｊａｖａ（登録商標）アプリ
【先行技術文献】
【特許文献】
【００９１】
【特許文献１】特開２００４−１８５５９５号公報
【図１】
2010218469.tif 000003
【図２】
2010218469.tif 000004
【図３】
2010218469.tif 000005
【図４−１】
2010218469.tif 000006
【図４−２】
2010218469.tif 000007
【図５−１】
2010218469.tif 000008
【図５−２】
2010218469.tif 000009
【図６】
2010218469.tif 000010
【図７】
2010218469.tif 000011
【図８】
2010218469.tif 000012
【図９】
2010218469.tif 000013