(57)【要約】【課題】マルチ仮想マシンの環境を開発者が意識することなく、好適なソフトウェアの開発環境を提供する情報処理装置等を提供する。【解決手段】本発明に係る情報処理装置は、一のコンピュータ上に、複数の仮想マシンが仮想マシン間通信可能に構築され、標準機能と前記標準機能を利用した拡張機能とを、異なる仮想マシン上で動作させるコンピュータに対し、前記拡張機能を実現するソフトウェアの開発支援を行う情報処理装置であって、インタフェース仕様が記述された定義ファイル３３０が追加されると、インタフェース仕様に基づくソースコード３４０を生成するソースコード生成手段を有し、ソースコード生成手段は、異なる仮想マシン上で動作する前記標準機能からの連携を仮想マシン間通信により実現させるコードを、生成するソースコードに加えて内包させる。【選択図】図１５
2011060236.tif 000002
【特許請求の範囲】
【請求項１】
一のコンピュータ上に、複数の仮想マシンが仮想マシン間通信可能に構築され、標準機能と前記標準機能を利用した拡張機能とを、異なる仮想マシン上で動作させるコンピュータに対し、前記拡張機能を実現するソフトウェアの開発支援を行う情報処理装置であって、
インタフェース仕様が記述された定義ファイルが追加されると、前記インタフェース仕様に基づくソースコードを生成するソースコード生成手段を有し、
前記ソースコード生成手段は、異なる仮想マシン上で動作する前記標準機能からの連携を仮想マシン間通信により実現させるコードを、生成するソースコードに加えて内包させること、
を特徴とする情報処理装置。
【請求項２】
前記コンピュータにおいて、
前記複数の仮想マシンは、異なる仮想マシン相互の通信を行う仮想マシン間通信部を有し、
前記仮想マシン間通信部は、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドの情報を登録し、当該情報が登録されると前記標準機能を動作させる仮想マシンに伝達されるテーブルを有し、
前記情報処理装置において、
前記コードは、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドを前記テーブルに登録させる命令コードであること、
を特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記ソースコード生成手段により生成されたソースコードからテストケースを生成するテストケース生成手段を有し、
生成されるテストケースは、生成されたソースコードに渡す所定の引数を含み、前記標準機能に代わって、生成されたソースコードから期待される戻り値の取得の成否をテストするテストケースであること、
を特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記コンピュータと当該情報処理装置とがネットワークを介して接続されるテスト環境、又は、前記コンピュータを当該情報処理装置が内包するテスト環境において、
前記テストケース生成手段により生成されたテストケースを実行するテストケース実行手段を有すること、
を特徴とする請求項３に記載の情報処理装置。
【請求項５】
請求項１ないし４何れか一項に記載の情報処理装置を含むソフトウェア統合開発環境。
【請求項６】
一のコンピュータ上に、複数の仮想マシンが仮想マシン間通信可能に構築され、標準機能と前記標準機能を利用した拡張機能とを、異なる仮想マシン上で動作させるコンピュータに対し、前記拡張機能を実現するソフトウェアの開発支援を行うプログラムであって、
情報処理装置を、
インタフェース仕様が記述された定義ファイルが追加されると、前記インタフェース仕様に基づくソースコードを生成するソースコード生成手段として機能させ、
前記ソースコード生成手段は、異なる仮想マシン上で動作する前記標準機能からの連携を仮想マシン間通信により実現させるコードを、生成するソースコードに加えて内包させること、
を特徴とする開発支援プログラム。
【請求項７】
前記複数の仮想マシンは、異なる仮想マシン相互の通信を行う仮想マシン間通信部を有し、
前記仮想マシン間通信部は、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドの情報を登録し、当該情報が登録されると前記標準機能を動作させる仮想マシンに伝達されるテーブルを有し、
前記コードは、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドを前記テーブルに登録させる命令コードであること、
を特徴とする請求項６に記載の開発支援プログラム。
【請求項８】
前記情報処理装置を、
前記ソースコード生成手段により生成されたソースコードからテストケースを生成するテストケース生成手段として機能させ、
生成されるテストケースは、生成されたソースコードに渡す所定の引数を含み、前記標準機能に代わって、生成されたソースコードから期待される戻り値の取得の成否をテストするテストケースであること、
を特徴とする請求項６又は７に記載の開発支援プログラム。
【請求項９】
前記コンピュータと当該情報処理装置とがネットワークを介して接続されるテスト環境、又は、前記コンピュータを当該情報処理装置が内包するテスト環境において、
前記情報処理装置を、
前記テストケース生成手段により生成されたテストケースを実行するテストケース実行手段として機能させること、
を特徴とする請求項８に記載の開発支援プログラム。
【請求項１０】
請求項６ないし９何れか一項に記載の開発支援プログラムを含むソフトウェア統合開発環境。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、開発支援プログラム、及びソフトウェア統合開発環境の分野に関する。
【背景技術】
【０００２】
従来から、画像形成装置、コピーおよびスキャナなどの複数の機能を一つの筐体内に収納した画像形成装置が知られている。現在の画像形成装置（MFP：Multi-Function Peripheral）は、ＣＰＵの性能向上、メモリの大容量化、通信技術の高速化及びデジタル画像技術の高度化等、ＭＦＰに関連する技術の進化に伴い、単にデジタル複写機としての機能だけでなく、例えば、ネットワークやファクシミリ等で画像や文書などのデータの送受信を可能とし、ユーザ環境において様々な利用形態を提供するものである。
【０００３】
また、このような画像形成装置の機能を実現するアプリケーションは、画像形成に係る基本機能を提供する標準機能ソフトウェア、標準機能を拡張する拡張機能ソフトウェアなどにより構成され、ユーザニーズに合った機能を追加できることが知られている。具体的に、画像形成装置は機能を容易に追加・カスタマイズができるよう設計されており、拡張機能ソフトウェアをプラグインとして追加できる。ユーザは利用したい拡張機能をプラグイン単位で購入して、画像形成装置に対して容易にインストール又はアンインストールすることができるようになっている。
【０００４】
図１は、標準機能及び拡張機能ソフトウェアによる機能の提供を示す概念図である。図に示されるように、標準機能ソフトウェアは、内部に機能拡張点を用意しており、拡張点に対して追加された拡張機能ソフトウェアを利用して拡張機能を実現する。また、一つの拡張点に対して複数の拡張機能ソフトウェアを追加する事も可能で、この場合、ユーザが機能を選択したり、機器の状態や利用者のアクセス権に応じて実施する機能を使い分ける事ができる。このように画像形成装置は、標準機能ソフトウェアを介してユーザに拡張機能を提供するようになっている（拡張機能ソフトウェアは直接利用されない）。
【０００５】
図２は、拡張機能ソフトウェアが利用される際の一般的シーケンスを示す。最初に拡張機能ソフトウェアは、標準機能ソフトウェアに対しプログラム登録を行うことで、標準機能ソフトウェアは拡張機能の存在を認識でき、拡張機能ソフトウェアを利用することが可能となる。そしてユーザから拡張機能の実行を指示された標準機能ソフトウェアは、拡張機能ソフトウェアのインタフェースを呼出して拡張機能ソフトウェアに処理を委譲することにより、当該拡張機能を実行する。
【０００６】
ところで、１台の物理コンピュータ上に、あたかもコンピュータが複数稼働しているかのような疑似システムを構築する仮想化技術が知られている。このような仮想化技術により実現される擬似的な情報処理システム環境（論理コンピュータ）は、仮想マシン（ＶＭ：Virtual Machine）と呼ばれる。
【０００７】
単体の仮想マシンが構築されたシステムの場合には、何らかの原因で処理が停止してしまうと、システム全体が停止することになる。しかし、複数の仮想マシン、即ちマルチ仮想マシン（ＭＶＭ：Multi Virtual Machine）が構築されたシステムの場合には、ある仮想マシンにおいて処理が停止したとしても、他の仮想マシンに影響しないため、システム全体が停止することなく処理を継続できる。このような利点から、上述の画像形成装置においてもロバストネス性を考慮して、標準機能ソフトウェアと拡張機能ソフトウェアとを、複数の仮想マシンに別々に配置して構築することができる。
【０００８】
というのも、拡張機能ソフトウェアは、サードベンダにより開発され提供される場合があり、サードベンダにより開発されたソフトウェアは、どのように設計・プログラミングされ、かつどのような工程を経て動作テストされ、提供されたものなのかを正確に知ることができない。そのため、画像形成装置本体の開発元が提供する標準機能ソフトウェアと比べ、完全な動作保障までは望むことはできず、例えば動作中のメモリリークなど、予期せぬエラーや障害が発生する恐れもある。
【０００９】
従って、１台の物理コンピュータ上に、複数の疑似システムを構築する。そして、画像形成装置において最も重要で基本的な機能を提供する標準機能ソフトウェアを一の仮想マシン内に配置し、上述の拡張機能ソフトウェアを別の仮想マシン内に配置する。このように画像形成装置搭載の標準機能と拡張機能とを異なる仮想マシン上で動作させることにより、たとえ拡張機能に何らかの障害が発生したとしても、ユーザに対して、標準機能のサービス提供を継続して行うことが可能となるのである。
【００１０】
図３は、仮想マシン上の標準機能及び拡張機能ソフトウェアによる機能の提供を示す概念図である。図に示されるように、画像形成装置においては２の仮想マシンが構築され、異なる仮想マシン上に標準機能及び拡張機能ソフトウェアが配置されている。そして標準機能ソフトウェアは、ＶＭ間通信を介して、仮想的に拡張点に対して追加された拡張機能ソフトウェアを利用して拡張機能を実現するようになっている。
【００１１】
図４は、仮想マシン上の拡張機能ソフトウェアが利用される際の一般的シーケンスを示す。最初に第２仮想マシン上の拡張機能ソフトウェアは、第１仮想マシン上の標準機能ソフトウェアに対しプログラム登録を行うことで、標準機能ソフトウェアは拡張機能の存在を認識でき、拡張機能ソフトウェアを利用することが可能となる。なお、ＭＶＭメカニズムの仲介的な動作により、標準機能ソフトウェア及び拡張機能ソフトウェアは、ＶＭ間通信を意識することなく、お互いを認識できるようになっている（詳細は後述）。
【発明の概要】
【発明が解決しようとする課題】
【００１２】
ここで、上述のような、拡張機能ソフトウェアを後から追加することで機能仕様を変更可能な画像形成装置において、顧客毎に異なる機能仕様要望に迅速に対応するために、高い品質のソフトウェアを迅速に開発することは重要な課題である。
【００１３】
しかしながら、複数の仮想マシン環境下において使用されるソフトウェアを開発する場合、開発者は、ＭＶＭメカニズムやＶＭ間通信を意識しながら、そのソースコードを作成しなくてはならない。具体的に、拡張機能ソフトウェアを開発する場合、標準拡張ソフトウェアの配置位置や呼出し位置を意識してソースコードを作成する必要がある。また動作テストを行う際にも、同様にＭＶＭメカニズムやＶＭ間通信を意識しながら、テストケースを実施することが必要である。従来、開発者にとって、これらの条件下で、高い品質のソフトウェアを迅速に且つ効率よく開発するには、重い負担となっていた。
【００１４】
なお、ソフトウェアの開発効率の向上を目的として、ソースコードを自動生成するような開発支援ツールは、従来から提供されてはいるものの、上述のマルチ仮想マシン環境で動作するためのソースコードの生成に関しては考慮されているものではなかった（例えば、特許文献１参照）。
【００１５】
本発明は上記従来技術の問題点を鑑み提案されたものであり、その目的とするところは、マルチ仮想マシンの環境を開発者が意識することなく、好適なソフトウェアの開発環境を提供する情報処理装置、開発支援プログラム、及びソフトウェア統合開発環境を提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するため、本発明に係る情報処理装置は、一のコンピュータ上に、複数の仮想マシンが仮想マシン間通信可能に構築され、標準機能と前記標準機能を利用した拡張機能とを、異なる仮想マシン上で動作させるコンピュータに対し、前記拡張機能を実現するソフトウェアの開発支援を行う情報処理装置であって、インタフェース仕様が記述された定義ファイルが追加されると、前記インタフェース仕様に基づくソースコードを生成するソースコード生成手段を有し、前記ソースコード生成手段は、異なる仮想マシン上で動作する前記標準機能からの連携を仮想マシン間通信により実現させるコードを、生成するソースコードに加えて内包させることを特徴とする。
【００１７】
また上記目的を達成するため、本発明に係る情報処理装置は、前記コンピュータにおいて、前記複数の仮想マシンは、異なる仮想マシン相互の通信を行う仮想マシン間通信部を有し、前記仮想マシン間通信部は、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドの情報を登録し、当該情報が登録されると前記標準機能を動作させる仮想マシンに伝達されるテーブルを有し、前記情報処理装置において、前記コードは、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドを前記テーブルに登録させる命令コードであることを特徴とする。
【００１８】
また上記目的を達成するため、本発明に係る情報処理装置は、前記ソースコード生成手段により生成されたソースコードからテストケースを生成するテストケース生成手段を有し、生成されるテストケースは、生成されたソースコードに渡す所定の引数を含み、前記標準機能に代わって、生成されたソースコードから期待される戻り値の取得の成否をテストするテストケースであることを特徴とする。
【００１９】
また上記目的を達成するため、本発明に係る情報処理装置は、前記コンピュータと当該情報処理装置とがネットワークを介して接続されるテスト環境、又は、前記コンピュータを当該情報処理装置が内包するテスト環境において、前記テストケース生成手段により生成されたテストケースを実行するテストケース実行手段を有することを特徴とする。
【００２０】
また上記目的を達成するため、本発明に係るソフトウェア統合開発環境は、前記情報処理装置を含む。
【００２１】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、などに適用したものも本発明の態様として有効である。
【発明の効果】
【００２２】
本発明によれば、マルチ仮想マシンの環境を開発者が意識することなく、好適なソフトウェアの開発環境を提供する情報処理装置、開発支援プログラム、及びソフトウェア統合開発環境を提供することができる。
【図面の簡単な説明】
【００２３】
【図１】標準機能及び拡張機能ソフトウェアによる機能の提供を示す概念図である。
【図２】拡張機能ソフトウェアが利用される際の一般的シーケンスを示す。
【図３】仮想マシン上の標準機能及び拡張機能ソフトウェアによる機能の提供を示す概念図である。
【図４】仮想マシン上の拡張機能ソフトウェアが利用される際の一般的シーケンスを示す。
【図５】本実施形態に係るソフトウェア開発を説明する全体概念図である。
【図６】本実施形態に係る画像処理装置１００のハードウェア構成例を示す図である。
【図７】本実施形態に係る複数の仮想マシンが構築されたシステムの構成例を示す図である。
【図８】本実施形態に係る複数の仮想マシン２１が構築されたシステムのソフトウェア構成例を示す図である。
【図９】拡張機能追加及びＶＭ間通信部を説明する図である。
【図１０】ＭＶＭメカニズムの継承を説明するコードの一例を示す図である。
【図１１】拡張機能追加及びＶＭ間通信部を説明する図である。
【図１２】ＶＭ間通信を伴う拡張機能の利用を説明する図である。
【図１３】本実施形態に係る開発環境３００の主要機能構成を示す機能ブロック図である。
【図１４】本実施形態に係る開発支援ツール３１０のＧＵＩ３２０を示す。
【図１５】本実施形態に係るＸＭＬファイル、ソースコード及びテストケースの一例を示す。
【図１６】テスト環境（その１）を示す図である。
【図１７】テスト環境（その２）を示す図である。
【図１８】テスト環境（その３）を示す図である。
【図１９】開発支援ツールの統合開発環境への組み込みを示す概念図である。
【発明を実施するための形態】
【００２４】
以下、本発明を実施するための形態を各実施形態において図面を用いて説明する。なお、本発明を説明するにあたって、画像形成装置において動作するソフトウェアに関して、本発明を適用した例を以下に示す。
【００２５】
[全体概念図]
図５は、本実施形態に係るソフトウェア開発を説明する全体概念図である。図５には、第１及び第２仮想マシン環境で構成される画像形成装置１００と、開発支援ツール３１０がインストールされた開発環境３００としてのＰＣ（Personal Computer）とが示されている。開発者は、本発明に係る開発支援ツール３１０を利用して、第２仮想マシン環境で動作する拡張機能ソフトウェア等のソフトウェア開発を当該開発環境３００にて行う。開発された拡張機能ソフトウェアは、開発支援ツール３１０によりソースコード生成されてから、画像形成装置１００の第２仮想マシンに配置される。そして、配置された拡張機能ソフトウェアについて、第１仮想マシン上の標準機能ソフトウェアと連携して動作するかどうか、を含んだ動作テストが実施される。
【００２６】
以下、まず複数の仮想マシン環境で構成される画像形成装置１００について説明を行い、その後、本発明に係る開発支援ツール３１０を有する開発環境３００について説明していく。
【００２７】
[画像形成装置]
（ハードウェア）
図６は、本実施形態に係る画像処理装置１００のハードウェア構成例を示す図である。図１に示すように、画像処理装置１００は、コントローラ１１０、操作パネル１１５、プロッタ１１６、及びスキャナ１１７などを備え、それぞれが相互にバスＢで接続されている。
【００２８】
操作パネル１１５は、表示部及び入力部を備えており、機器情報などの各種情報をユーザに提供したり、動作設定や動作指示などの各種ユーザ操作を受け付けたりする。プロッタ１１６は、画像形成部を備えており、用紙に出力画像を形成する。例えば出力画像を形成する方式には、電子写真プロセスやインクジェット方式などがある。スキャナ１１７は、原稿を光学的に読み取り、読み取り画像を生成する。
【００２９】
コントローラ１１０は、ＣＰＵ（Central Processing Unit）１１１、記憶装置１１２、ネットワークＩ／Ｆ１１３、及び外部記憶Ｉ／Ｆ１１４などを備えており、それぞれが相互にバスＢで接続されている。
【００３０】
ＣＰＵ１１１は、プログラムを実行することにより各種機能の実現や装置全体を制御する。また記憶装置１１２は、上記プログラムや各種データ（例えば画像データ）を格納し保持する。例えば記憶装置１１２には、揮発性のメモリであるＲＡＭ（Random Access Memory）、不揮発性のメモリであるＲＯＭ（Read Only Memory）、及び大容量の記憶領域を備えたＨＤＤ（Hard Disk Drive）などがある。ＲＡＭは、ＣＰＵ１１１のワークエリア（プログラムやデータが一時的に読み出される記憶エリア）として機能する。ＲＯＭやＨＤＤは、プログラムや各種データの格納先として用いられる。これにより、画像処理装置１００では、ＣＰＵ１１１がＲＯＭに格納されたプログラムをＲＡＭ上に読み出し、プログラムを実行する。
【００３１】
ネットワークＩ／Ｆ１１３は、画像処理装置１００をネットワークなどの所定のデータ伝送路に接続するためのインタフェースである。外部記憶Ｉ／Ｆ１１４は、外部記憶装置にあたる記録媒体１１４ａを接続するためのインタフェースである。例えば、外部記憶装置には、ＳＤメモリカード（SD Memory Card）やＵＳＢ（Universal Serial Bus）メモリなどがある。これにより、画像処理装置１００は、外部記憶Ｉ／Ｆ１１４を介して、記録媒体１１４ａに格納されたプログラムやデータを読み取る。
【００３２】
画像処理装置１００では、上記ハードウェア構成により、例えばＨＤＤからＲＡＭ上に読み出したプログラムをＣＰＵ１１１により実行することで、１又は複数の仮想マシン環境を動作させることができる。
【００３３】
（システム及びソフトウェア構成）
図７は、本実施形態に係る複数の仮想マシンが構築されたシステムの構成例を示す図である。本実施形態においては、上述の画像処理装置１００に当該システムを適用する。図７には、１台の物理コンピュータ上に２つの仮想マシンが動作するシステム構成が示されている。
【００３４】
図７に示すように、仮想マシン環境は、ＯＳ（Operating System）１０上で仮想マシン環境を実現するプログラムを動作させることで実現される。本実施形態では、組み込み型システムの開発環境として使用頻度の高いＪａｖａ（登録商標：以下略）ＶＭ（Java Virtual Machine）２１を動作させることで実現している。なおＯＳ１０は、組み込み系の基本ソフトウェアであり、例えばＬｉｎｕｘ（登録商標：以下略）などがある。
【００３５】
複数の仮想マシン環境は、ＯＳ１０上で複数のＪａｖａＶＭ２１を動作させることで実現できる。本実施形態では、ＪａｖａＶＭ２１１及び２１２（２つのＪａｖａＶＭ２１）を動作させることで、第１及び第２仮想マシン環境（２つの仮想マシン環境）を実現している。以降では、ＪａｖａＶＭ２１１及び２１２を「第１仮想マシン２１１及び第２仮想マシン２１２」に置き換え説明する。また、第１仮想マシン２１１及び第２仮想マシン２１２を総称する際には、「仮想マシン２１」とする。同様に、各仮想マシン２１上で動作するソフトウェア（例えば「プログラム」や「データ」）及び使用される記憶領域についても、同じソフトウェア名や記憶領域名を総称する際には、共通する名称と参照符号を用いることとする。
【００３６】
仮想マシン２１は、仮想マシン２１上でＪａｖａコンポーネント２２を動作させるためのヒープメモリ２１１を有している。ヒープメモリ２１１は、仮想マシン２１上で動作するアプリケーションが自由に確保できるメモリ領域である。このように、複数の仮想マシン２１が構築されたシステムでは、仮想マシン２１ごとに独立したヒープメモリ２１１を有することから、処理停止などの障害が発生しても、互いのシステムに影響を及ぼすことがない。
【００３７】
仮想マシン２１上で動作するＪａｖａコンポーネント２２には、プラットフォーム及びアプリケーション（図中のＪａｖａプラットフォーム２２１及びＪａｖａアプリケーション２２２）の各機能を実現するための複数のＪａｖａプログラムが含まれる。Ｊａｖａプラットフォーム２２１は、仮想マシン２１が実現するシステム（動作環境）の標準機能として動作する。またＪａｖａアプリケーション２２２は、上記基本機能を利用し、例えばユーザが実行したい作業を実施する機能（仮想マシン環境におけるユーザ提供機能）として動作する。Ｊａｖａアプリケーション２２２は、提供する機能構成に応じてインストール／アンインストールが可能である。
【００３８】
以上のように、本実施形態に係る画像処理装置１００には、複数の仮想マシン２１が動作する環境を構築することができる。次に、上記システムにおける詳細なソフトウェア構成について説明する。
【００３９】
図8は、本実施形態に係る複数の仮想マシン２１が構築されたシステムのソフトウェア構成例を示す図である。例えば、上記システムが構築された画像処理装置１００が、ＭＦＰ（Multifunction Peripheral）であった場合、次のようなシステム構築が考えられる。
【００４０】
第１仮想マシン２１１では、コピー、プリンタ、スキャナ、ＦＡＸ（ファクシミリ）などの標準機能を動作させる。
【００４１】
第１仮想マシン２１１上で動作するＪａｖａコンポーネント２２１が有するＪａｖａアプリケーション２２２１は、標準機能アプリケーション２２２ａ１を含む。またＪａｖａプラットフォーム２２１１は、ＶＭ間通信部４１１を含む。
【００４２】
標準機能アプリケーション２２２ａ１は、ＭＦＰ搭載の標準機能を利用したユーザ提供機能を実現する標準機能ソフトウェアである。具体的に、標準機能アプリケーション２２２ａ１は、コピー、プリンタ、スキャナ、ＦＡＸなどの標準機能を提供する。この場合、標準機能アプリケーション２２２ａ１は、標準機能を実現するモジュール群、つまりプリンタモジュール、スキャナモジュール、ＦＡＸモジュールなどを含むものとする（なおコピー機能はプリンタモジュール及びスキャナモジュールで実現される）。
【００４３】
これに対して第２仮想マシン２１２では、標準機能を利用する拡張機能（例えば「サードベンダ提供機能」）を動作させる。
【００４４】
第２仮想マシン２１２上で動作するＪａｖａコンポーネント２２２が有するＪａｖａアプリケーション２２２２は、ＳＤＫ（Software Development Kit）アプリケーション２２２ｂ２を含み、Ｊａｖａプラットフォーム２２１２は、ＳＤＫ  ＡＰＩ（Application Program Interface）２２１ｂ２を含む。
【００４５】
ＳＤＫアプリケーション２２２ｂ２は、ソフトウェアを開発する際に使用できる命令や関数の集合であるＳＤＫ  ＡＰＩ２２１ｂ２を用いて開発され、ユーザへの個別対応機能（カスタマイズ機能）などを実現する拡張機能ソフトウェアである。ＳＤＫアプリケーション２２２ｂ２は、ＳＤＫ  ＡＰＩ２２１ｂ２及びＶＭ間通信部４１２を介して、標準機能アプリケーション２２２ａ１を利用する。例えば、ＳＤＫアプリケーション２２２ｂ２が認証モジュールである場合、標準機能アプリケーション２２２ａ１と連携して、印刷の利用認証機能（セキュアプリントアプリ）を実現できるようになる。
【００４６】
この拡張機能ソフトウェアであるＳＤＫアプリケーション２２２ｂ２は、プラットフォームが有するＳＤＫ  ＡＰＩ２２１ｂ２を用いれば独自に開発できる。特に拡張機能を実現するＳＤＫアプリケーション２２２ｂ２は、サードベンダにより開発され提供されるソフトウェアであるので、サードベンダにより開発されたソフトウェアは、どのように設計・プログラミングされ、かつどのような工程を経て動作テストされ、提供されたものなのかを、知ることができない。そのため、動作中のメモリリークなど、予期せぬエラーや障害が発生する恐れがある。
【００４７】
このような場合、ＳＤＫアプリケーション２２２ｂ２（拡張機能ソフトウェア）を、標準機能アプリケーション２２２ａ１（標準機能ソフトウェア）と同じ仮想マシン２１（第１仮想マシン２１１）上で動作させると、障害発生の影響からシステム全体を停止させてしまう可能性がある。そのため、本実施形態では、ＭＦＰ搭載の標準機能と拡張機能とを異なる仮想マシン２１上で動作させることにより、たとえ拡張機能に何らかの障害が発生したとしても、ユーザに対して、標準機能のサービス提供を継続して行うことができる。
【００４８】
このようなシステム構成の場合、第２仮想マシン２１２上で動作するＳＤＫアプリケーション２２２ｂ２は、第１仮想マシン２１１上で動作する標準機能アプリケーション２２２ａ１と仮想マシン間通信を行う。第２仮想マシン２１２上で動作するＳＤＫアプリケーション２２２ｂ２は、第１仮想マシン２１１上で動作する標準機能アプリケーション２２２ａ１を利用して拡張機能を実現するためである。
【００４９】
ＶＭ間通信部４１は、各仮想マシン２１に、仮想マシン２１間の仮想マシン間通信機能を提供する機能部である。本実施形態では、仮想マシン環境がＪａｖａＶＭにより実現されているため、仮想マシン間通信部４１は、ＪａｖａＲＭＩ（Remote Method Invocation）を用いて実現できる。ＪａｖａＲＭＩとは、別ホスト（他のＪａｖａＶＭ）のＪａｖａオブジェクトのメソッドを呼び出すための通信手段であり、ＲＰＣ（Remote Procedure Call）のオブジェクトに相当する機能を果たすためのＡＰＩである。これにより、ＶＭ間通信部４１では、仮想マシン２１間のデータ通信（情報送受信）を行う。例えば、第２仮想マシン２１２上で動作するＳＤＫアプリケーション２２２ｂ２が、第１仮想マシン２１１上で動作する標準機能アプリケーション２２２ａ１と連携する場合、ＶＭ間通信部４１１は、標準機能アプリケーション２２２ａ１からの拡張機能の呼び出し要求に基づき、ＶＭ間通信部４１２と仮想マシン間通信を行う。そしてＶＭ間通信部４１２は、第２仮想マシン２１２上で動作するＳＤＫアプリケーション２２２ｂ２に対して拡張機能の呼び出し要求を行う。このようにＶＭ間通信部４１によるＭＶＭメカニズムの仲介的な動作により、異なる仮想マシン２１上に配置される標準機能ソフトウェアは、ＶＭ間通信を意識することなく、拡張機能ソフトウェアを認識できるようになっている。
【００５０】
MＶＭ動作実現に先立って、拡張点を有する側の標準機能アプリケーション２２２ａ１は、あるＩ／Ｆを利用するという宣言を第１仮想マシン２１１上に登録しておく。いいかえると、標準機能アプリケーション２２２ａ１は、例えばこういうＩ／Ｆを持った拡張機能が欲しいとの登録をしておく。一方、ＳＤＫアプリケーション２２２ｂ２は、このＩ／Ｆを提供するという宣言を第２仮想マシン２１２上に登録しておく。そして、第１仮想マシン２１１上のＶＭ間通信部４１１及び第２仮想マシン２１２のＶＭ間通信部４１２は、相互に登録されているＩ／Ｆを参照し、Ｉ／Ｆを利用する側とＩ／Ｆを提供する側との、Ｉ／Ｆのマッチングを行う。
【００５１】
この登録を含めＶＭ間通信部４１に関し、図９〜１１を参照して説明する。まず図９に示されるように、第１仮想マシン２１１上のＶＭ間通信部４１１は、ＶＭ間通信判定部４１１、クラス管理テーブル４１２１、メソッド管理テーブル４１３１を含む。また、第２仮想マシン２１２上のＶＭ間通信部４１２は、クラス管理テーブル４１２２、メソッド管理テーブル４１３２を含む。
【００５２】
ＶＭ間通信判定部４１１は、ＶＭ間通信を行うか否かを判定する機能部である。本実施形態では、画像処理装置１００がユーザに提供する標準機能は、第１仮想マシン２１１で動作する。一方、第２仮想マシン２１２では、第１仮想マシン２１１が有する標準機能を利用した拡張機能が動作する。つまり、ＶＭ間通信判定部４１１は、利用されるべき機能が、標準機能が動作する第１仮想マシン２１１上で動作しているか否かを判定している。そして、利用されるべき機能が標準機能の動作する第１仮想マシン２１１上で動作していない場合、つまり利用されるべき機能が別ホスト（他のＪａｖａＶＭ）で動作する場合、仮想マシン間通信により第２仮想マシン２１２から第１仮想マシン２１１に対して機能動作要求を送信するのである。
【００５３】
このように、ＶＭ間通信判定部４１１は、要求された機能を動作させるために仮想マシン間通信を行う必要があるか否かを判定している。例えば、ＶＭ間通信部４１１は、標準機能アプリケーション２２２ａ１からｃｌａｓｓＢのメソッドのコールを受けると、ＶＭ間通信判定部４１１は、クラス管理テーブル４１２１及びメソッド管理テーブル４１３１を参照する。そして、ｃｌａｓｓＢが第２仮想マシン２１２上に配置されていることを知ると、ＶＭ間通信を行うと判定する。ＶＭ間通信を行うと判定されると、ＶＭ間通信部４１１は、ＭＶＭメカニズムによる仲介的な動作を行って、標準機能アプリケーション２２２ａ１が拡張機能に係るメソッドを利用できるように、第２仮想マシン２１２上の拡張機能に係るメソッドをコールする。
【００５４】
クラス管理テーブル４１２及びメソッド管理テーブル４１３は、仮想マシン２１上に機能プログラムが登録される際、自己の仮想マシン２１及び通信先の仮想マシン２１の有する機能に係るクラス及びメソッドが登録、管理されているテーブルである。
【００５５】
再び図９を参照し、例えば、第２仮想マシン２１２上に、ＳＤＫアプリケーション２２２ｂ２に相当する拡張機能アプリケーション（ｃｌａｓｓＢを含む）が追加されたとする。通常、拡張機能プログラムを仮想マシンに登録するために、Ａｃｔｉｖａｔｏｒというクラスを用意する必要がある（例えば、本出願人による特開2007-048270参照）。ここで、本実施形態の拡張機能アプリケーション（ｃｌａｓｓＢを含む）は、通常のＡｃｔｉｖａｔｏｒとは異なり、ＭＶＭメカニズムを継承するＡｂｓｔｒｕｃｔＥｘｔｅｎｓｉｏｎＡｃｔｉｖａｔｏｒというクラスを継承（extexds）している。ＡｂｓｔｒｕｃｔＥｘｔｅｎｓｉｏｎＡｃｔｉｖａｔｏｒクラスは、マルチ仮想マシン環境におけるクラス管理テーブル４１２に拡張機能のプログラムを登録するためのクラスである。これにより、拡張機能のプログラムを仮想マシンに登録する際に、ＭＶＭ環境におけるクラステーブルへの登録が可能となっている。具体的に、ｃｌａｓｓＢは、ＡｂｓｔｒｕｃｔＥｘｔｅｎｓｉｏｎＡｃｔｉｖａｔｏｒクラスを継承しているので、クラス管理テーブル４１２２に登録される。
【００５６】
図１０は、ＭＶＭメカニズムの継承を説明するコードの一例を示す図である。図に示されるように、ｃｌａｓｓＢは、ＡｂｓｔｒｕｃｔＥｘｔｅｎｓｉｏｎＡｃｔｉｖａｔｏｒクラスを継承しているので、拡張機能のプログラムをマルチ仮想マシン環境におけるクラステーブルの登録が可能となっている。なお、このＡｂｓｔｒｕｃｔＥｘｔｅｎｓｉｏｎＡｃｔｉｖａｔｏｒクラスは、本発明に係る開発支援ツール３１０により、ＸＭＬ（Extensible Markup Language）ファイルに特に指定しなくとも、ソースコード自動生成時に生成される。ツールの利用者は、//の箇所に、プログラムを拡張点に登録成功した際の手続きや、拡張プログラムを起動／終了した際の手続きを記述する。これにより、プログラムを仮想環境に登録した際に、MVM環境におけるクラステーブル登録が可能となる。
【００５７】
また次いで図１１を参照し、例えば、第２仮想マシン２１２上に、ＳＤＫアプリケーション２２２ｂ２に相当する拡張機能アプリケーション（ｃｌａｓｓＢを含む）が追加されると、メソッド管理テーブル４１３２には、拡張機能に係るメソッドが登録、管理される。MVM対応を行うためにはメソッドの認識が必要となるので、そのため専用のメソッド管理テーブルを用意し、メソッド管理テーブルに拡張機能に係るメソッドを登録することにより、異なる仮想マシン間でのI/F呼び出しが発生した場合でも、仮想マシン間でRMIなどのVM間通信を行い、異なる仮想マシン間でのメソッド相互利用が可能となっている。このメソッド管理テーブル４１３へのメソッド登録は、通常のＪａｖａプログラムでは必要がなく、MVMに対応する場合のみ必要となる特別な手続き処理である。そのために、本発明に係る開発支援ツール３１０では、この本来使わないメソッド登録の処理を意識させないようにするべく、XMLファイルにて指定したメソッドに対応する関数コード（例えば、ＩｎｖｏｋｅＭｅｔｈｉｄ()）を自動生成する。図１１においては、「ＤｏＳｏｍｅｔｈｉｎｇ」が、XMLで記述されているメソッド名である。
【００５８】
なお、クラス管理テーブル４１２２及びメソッド管理テーブル４１３２に新たなエントリーが登録されると、第１仮想マシン２１１上のＶＭ間通信部４１１及び第２仮想マシン２１２のＶＭ間通信部４１２によりＶＭ間通信が行われ、第１仮想マシン２１１上のクラス管理テーブル４１２１にクラス管理テーブル４１２２の登録情報が伝達され、また第１仮想マシン２１１上のメソッド管理テーブル４１３１にメソッド管理テーブル４１３２の登録情報が伝達される（図９、１１）。第１仮想マシン２１１上のＶＭ間通信部４１１では、第２仮想マシン２１２側のクラス、メソッドの情報が登録、管理されているため、ＶＭ間通信判定部４１１がこれを参照することで、ＶＭ間通信を行うか否かを判定することができる。なお、異なる仮想マシン間でのI/F呼び出しが発生した時点において仮想マシン間でVM間通信を行って、メソッド管理テーブル４１３１にメソッド管理テーブル４１３２の登録情報が伝達される構成とすることも可能である。
【００５９】
図１２は、ＶＭ間通信を伴う拡張機能の利用を説明する図である。標準機能アプリケーション２２２ａ１がＶＭ間通信部４１に対して、ＤｏＳｏｍｅｔｈｉｎｇ()をコールするに際し、当該要求に従ってＶＭ間通信部４１１は、ＤｏＳｏｍｅｔｈｉｎｇ()に渡すＩ／Ｆ（メソッド引数やそのデータ型などのデータ受け渡しの詳細等）の情報をメソッド管理テーブル４１３１から取得し、標準機能アプリケーション２２２ａ１に返答する。そして標準機能アプリケーション２２２ａ１は、ＤｏＳｏｍｅｔｈｉｎｇ()のＩ／Ｆに従って、ＶＭ間通信部４１１に対してＤｏＳｏｍｅｔｈｉｎｇ()をコールする。するとＶＭ間通信判定部４１１は、ＶＭ間通信を行うか否かを判定する。つまりＶＭ間通信判定部４１１は、少なくともクラス管理テーブル４１２１を参照すると、ｃｌａｓｓＢが第２仮想マシン２１２上に配置されていることを知るので、ＶＭ間通信を行うと判定する。ＶＭ間通信を行うと判定されると、ＶＭ間通信部４１１は、Ｉ／Ｆを指定してＤｏＳｏｍｅｔｈｉｎｇ()を利用すべく、ＶＭ間通信を実行する。一方、第２仮想マシン２１２側の拡張機能アプリケーション２２２ｂ２は、当該コールに応答してＤｏＳｏｍｅｔｈｉｎｇ()を実行し、最終的に標準機能アプリケーション２２２ａ１に対して戻り値（return）を返答する。
【００６０】
このように、ＶＭ間通信部４１により実現されるＭＶＭメカニズム、より具体的にはクラス管理テーブル４１２及びメソッド管理テーブル４１３におけるクラス及びメソッドの登録情報により、標準機能アプリケーションは拡張機能の存在を認識でき、拡張機能を利用することが可能となる。また、ＭＶＭメカニズムの仲介的な動作により、標準機能アプリケーション及び拡張機能アプリケーションは、ＶＭ間通信を意識することなく、お互いを認識できるようになっている。
【００６１】
[開発支援ツール]
次に、本実施形態に係る開発支援ツール３１０を説明する。上述したように、開発者は本発明に係る開発支援ツール３１０を利用して、第２仮想マシン環境で動作する拡張機能ソフトウェア等のソフトウェア開発を当該開発環境３００にて行う（図５）。開発された拡張機能ソフトウェアは、開発支援ツール３１０によりそのソースコードが生成されるが、このとき、開発支援ツール３１０は、第１仮想マシン環境及び第２仮想マシン環境で動作するようにソースコード生成する。具体的に、ＭＶＭ環境で開発された拡張機能ソフトウェアが第１仮想マシンから利用できるように、拡張機能に係るクラス及びメソッドを、クラス管理テーブル４１２及びメソッド管理テーブル４１３に登録されるようソースコードを自動生成する。以下、説明していく。
【００６２】
（機能）
図１３は、本実施形態に係る開発環境３００の主要機能構成を示す機能ブロック図である。開発環境３００は、開発支援ツール３１０により実現され、ＧＵＩ部３１１、ソースコード生成部３１２、テストケース生成部３１３、テストケース実行３１４を含む構成である。
【００６３】
ＧＵＩ部３１１は、操作画面のＧＵＩを提供する機能を有している。例えば、後述のＧＵＩ画面を生成して表示装置等に表示させる（例えば図１４参照）。
【００６４】
ソースコード生成部３１２は、インタフェース仕様が記述された定義ファイル（例えばＸＭＬ定義ファイル）が追加されると、前記インタフェース仕様に基づくソースコードを生成し、また、異なる仮想マシン上で動作する前記標準機能からの連携を仮想マシン間通信により実現させるコードを、生成するソースコードに加えて内包させる機能を有している。具体的に、画像形成装置１００の仮想マシン間通信部は、拡張機能を実現するソフトウェアが有するクラス及びメソッドの情報を登録し、当該情報が登録されると前記標準機能を動作させる仮想マシンに伝達されるテーブルを有しているが、ソースコード生成部３１２は、拡張機能を実現するソフトウェアが有するクラス及びメソッドを仮想マシン間通信部のテーブルに登録させる命令コードをソースコードに出力する。この点、詳細は再度後述する。
【００６５】
テストケース生成部３１３は、ソースコード生成部３１２により生成されたソースコードからテストケースを生成する機能を有している。詳細は後述するが、生成されるテストケースは、生成されたソースコードに渡す所定の引数を含み、標準機能に代わって、生成されたソースコードから期待される戻り値の取得の成否、可否をテストするテストケースである。
【００６６】
テストケース実行部３１４は、テストケース生成部３１３により生成されたテストケースを実行する機能を有している。なお、テスト環境として、上記の画像形成装置１００と開発環境３００とがネットワークを介して接続される環境が用意される。またもしくは、上記の画像形成装置１００を当該開発環境３００が内包する環境が用意される。この点、詳細は後述する。
【００６７】
なおこれらの機能は、実際には開発環境３００のＣＰＵが実行するプログラムによりコンピュータに実現させるものである。また、開発環境３００のハードウェア構成としては、一般的なＰＣ等により実現されればよい。例えば、開発環境３００は、ＣＰＵ、ＲＡＭ、ＲＯＭ、ＨＤＤ、ディスプレイ、マウス、キーボードを含み構成される（非図示）。
【００６８】
（ＧＵＩ）
図１４は、本実施形態に係る開発支援ツール３１０のＧＵＩ３２０を示す。開発支援ツール３１０はＰＣ等にインストールされるので、開発支援ツール３１０のＧＵＩ３２０はＰＣの表示装置等に出力される。図に示されるように、本実施形態のＧＵＩ３２０は、プロジェクト選択３２１、ソースコード生成３２２、テストケース生成３２３、テスト実行３２４、ファイル選択３２５、編集画面３２６といった操作部品等を含んで構成されている。
【００６９】
プロジェクト選択３２１は、選択したプロジェクトに対応したＸＭＬ定義ファイルを処理対象として選択できる。
【００７０】
ソースコード生成３２２は、プロジェクト（又はプロジェクトに対応付けられたＸＭＬ定義ファイル）に対応したソースコードの自動生成を指示するための操作ボタンである。当該ボタンが操作されると、ソースコードが自動生成され、またその生成結果が表示される。例えば生成結果には、生成したファイル数やファイル名称等が合わせて表示される。
【００７１】
テストケース生成３２３は、プロジェクトに対応したテストケースの自動生成を指示するための操作ボタンである。当該ボタンが操作されると、テストケースが自動生成され、またその生成結果が表示される。生成結果には、生成したファイル数やファイル名称等が合わせて表示される。
【００７２】
テスト実行３２４は、プロジェクトに対応して生成されたテストケースを実行するための操作ボタンである。テスト実行後はテスト結果が表示される。テスト結果には、テストを実施した総数や成功したテストケース数、失敗（エラー）となったテストケース数等が表示される。
【００７３】
また、ＧＵＩ３２０上では、ソフトウェアを構成するファイル一覧、テストケース一覧を確認・選択できるファイル選択３２５が用意されている。また、編集画面３２６においては、各種ファイルの編集を行うことが可能となっている。例えば、プロジェクト選択３２１において、プロジェクトが選択されると、対応するＸＭＬ定義ファイルが読み込まれて表示される。
【００７４】
図１５は、本実施形態に係るＸＭＬファイル、ソースコード及びテストケースの一例を示す。開発支援ツール３１０のＧＵＩ３２０上、例えばプロジェクト選択３２１で「プロジェクトＡ」が選択されると、「プロジェクトＡ」に対応するＸＭＬ定義ファイル３３０が指定される。ＸＭＬ定義ファイル３３０は、開発者により、ファイル名定義（例えばＸＸＸ．ｊａｖａ）、クラス定義（例えばｃｌａｓｓＢ）、メソッド定義（例えばＤｏＳｏｍｅｔｈｉｎｇ）、引数定義（例えばＶ、Ｍ）、戻り値定義（例えばＴｙｐｅＡ）などがＸＭＬタグで記述されている。勿論、一のＸＭＬ定義ファイル３３０には、複数のファイル名、クラス、メソッド、引数、戻り値について定義可能となっている。なお、本実施形態では、定義ファイルとしてＸＭＬを用いているが、javadocなど、他のＩ／Ｆ記述手段を用いることも可能である。
【００７５】
そして、「プロジェクトＡ」に対して、ソースコード生成３２２のボタンが操作されると、ＸＭＬ定義ファイル３３０に従って、対応するソースコード３４０が自動生成される。このとき、開発者は、ＸＭＬ定義ファイル３３０においてＭＶＭメカニズムを意識する必要はなく、ファイル名、クラス、メソッド、引数、戻り値について定義を行っている。一方、自動生成されたソースコード３３１には、ＭＶＭメカニズムに対応する形でソースコード３３１が自動生成される。具体的に、ｃｌａｓｓＢが予め用意されているＭＶＭメカニズム（例えばＡｂｓｔｒｕｃｔＥｘｔｅｎｓｉｏｎＡｃｔｉｖａｔｏｒクラス）を継承（extends）する形でソースコード３３１が自動生成される。また上述のＩｎｖｏｋｅＭｅｔｈｏｄ（）が自動生成され、ＩｎｖｏｋｅＭｅｔｈｏｄ（）により、ＤｏＳｏｍｅｔｈｉｎｇ（）がメソッド管理テーブル４１３にメソッド情報が登録される。これにより、当該メソッド(例えばＤｏＳｏｍｅｔｈｉｎｇ（）)が呼出されたときに、上述の如くＭＶＭメカニズムを利用して、相手先に拡張機能を提供することができるようになる。なお、このソースコード３４０は、ファイル選択(欄)３２５に表示されているように、指定したファイル名「ＸＸＸ．ｊａｖａ」、「ＹＹＹ．ｊａｖａ」として自動生成されている。
【００７６】
次いで、生成されたソースコード３４０に対して、テストケース生成３２３のボタンが操作されると、ソースコード３４０に対応するテストケース３５０が自動生成される。このテストケース３５０は、ファイル選択(欄)３２５に表示されているように、ファイル名「ＸＸＸ．ｔｅｓｔ」、「ＹＹＹ．ｔｅｓｔ」として自動生成されている。なおこのテストケースとは、自動生成されたソースコードに対して引数を渡してやり、期待される戻り値が得られるか等をテストするためのテストケースである。具体的に、テストケース３５０においては、ＤｏＳｏｍｅｔｈｉｎｇ（）に対して、整数型の引数Ｖに「１０」を、文字列型の引数Ｗに「ａａａ」を渡してやり、戻り値（ｖａｌｕｅ）として「１」を期待する、といったテストケースになっている。そして、テストケース３５０に対してテスト実行３２４が操作されると、当該テストが実行される。
【００７７】
このように、本実施形態に係る開発支援ツール３１０を利用して、例えば拡張機能に係るソフトウェアを開発する際、開発支援ツール３１０のソースコード自動生成機能によりＭＶＭメカニズムに関するコードが自動生成されるので、開発者は、ＭＶＭメカニズムやＶＭ間通信を意識しながらそのソースコードを作成する必要がなくなり、拡張機能に係る処理等のプログラムだけに専念することができる。また、拡張機能の仕様が追加／変更となった場合でも、ＸＭＬ定義ファイルを定義し直したり、新たなＸＭＬ定義ファイルを選択し直すことにより、仕様の追加／変更に柔軟に対応できる。
【００７８】
なお、テストを実行するためには適当なテスト環境が用意される必要がある。続いて以下、テスト環境について説明する。
【００７９】
（テスト環境）
上述したように、本実施形態に係る開発支援ツール３１０においては、生成されたソースコード３４０のテストを行う目的で、テストケース生成３２３のボタンが操作されると、ソースコード３４０に対応するテストケース３５０が自動生成される。このテストケース３５０は、自動生成されたソースコード３４０に対して引数を渡してやり、期待される戻り値が得られるか等をテストするためのテストケースである。従って、このようなテストを実行するためにはテスト環境が必要であるが、ここではテスト環境として次のような環境が考えられる。
【００８０】
図１６は、テスト環境（その１）を示す図である。上述したように、開発者は本実施形態に係る開発支援ツール３１０を使用して拡張機能アプリケーションの開発を行うが、開発者として、第一に関心があり、あくまで開発に注力すべき点は、拡張機能アプリケーションが期待通りに機能するか否かであるため、まずは拡張機能アプリケーションの機能テストに興味がある。
【００８１】
従って図に示されるように、テスト機として単体の仮想マシン上が構築された画像形成装置１２０を用意し、自動生成されたテストケース３５０及びソースコード３４０を一の仮想マシン内に配置する。また、画像形成装置１２０と開発環境３００とは、ネットワークを介して接続する。開発環境３００において生成されたソースコード３４０及びテストケース３５０がネットワークを介し開発環境３００から画像形成装置１２０に配置されると、画像形成装置１２０は開発環境３００により制御され、テストケース３５０が実行される。
【００８２】
このように、テスト環境（その１）によれば、開発者自身が開発した拡張機能アプリケーションがマルチ仮想マシン環境において動作可能か否かの前に、拡張機能アプリケーションが期待通りに機能するか否かのテストを行うことができる。
【００８３】
図１７は、テスト環境（その２）を示す図である。テスト環境（その２）は、マルチ仮想マシン環境が想定されたテスト環境であり、このテスト環境において、自身が開発した拡張機能アプリケーションがマルチ仮想マシン環境において動作可能か否かのテストを行うことができる。
【００８４】
図に示されるように、テスト機として複数の仮想マシン上が構築された画像形成装置１３０を用意し、自動生成されたテストケース３５０及びソースコード３４０を異なる仮想マシン内に配置する。また、画像形成装置１２０と開発環境３００とは、ネットワークを介して接続する。開発環境３００において生成されたソースコード３４０及びテストケース３５０がネットワークを介し開発環境３００から画像形成装置１２０に配置されると、画像形成装置１２０は開発環境３００により制御され、ＶＭ間通信を介してのテストケース３５０が実行される。
【００８５】
このように、テスト環境（その２）によれば、開発者自身が開発した拡張機能アプリケーションがマルチ仮想マシン環境において動作可能を含め、拡張機能アプリケーションが期待通りに機能するか否かのテストを行うことができる。
【００８６】
図１８は、テスト環境（その３）を示す図である。テスト環境（その３）は、開発環境３００と同一筐体内にマルチ仮想マシン環境が想定されたテスト環境であり、このテスト環境においても同様に、自身が開発した拡張機能アプリケーションがマルチ仮想マシン環境において動作可能か否かのテストを行うことができる。
【００８７】
図に示されるように、開発環境兼テスト機として、開発環境３００と同一筐体内に複数の仮想マシン上が構築された画像形成装置１３０を用意しておき、自動生成されたテストケース３５０及びソースコード３４０を異なる仮想マシン内に配置する。開発支援ツール３１０において生成されたソースコード３４０及びテストケース３５０は、それぞれ異なる仮想マシン内に配置されると、開発支援ツール３１０からの指示により、ＶＭ間通信を介してのテストケース３５０が実行される。
【００８８】
このように、テスト環境（その３）によれば、開発環境３００と同一筐体内にマルチ仮想マシン環境が構築されているので、より便宜的に、拡張機能アプリケーションが期待通りに機能するか否かのテストを行うことができる。
【００８９】
（統合環境）
次に、本実施形態に係る開発支援ツール３１０の統合開発環境への組み込みに関して説明する。ソフトウェアを開発する場合、一般的には、作業の各段階に応じて複数のソフトウェアやツールが使用されるが、統合開発環境とは、ソフトウェアの開発作業の各段階において用いられる複数のソフトウェアやツール群、例えばエディタ、コンパイラ、リンカ、デバッガ、その他の支援ツールなどを統合・統一化した開発環境である。統合開発環境には、ソフトウェア開発に必要な最低限のソフトウェアやツール群が用意されているので、本実施形態に係る開発支援ツール３１０を統合開発環境に組み込むことで、より開発者の開発効率を向上させたり、開発支援ツール３１０の有効性を高めることができる。また、各機能の操作感が同一のＧＵＩ上で統一されたり、機能間の連携も取られているため、開発の効率化が図られる。
【００９０】
一般に、ＪＡＶＡを中心としたプログラミング言語を扱う統合開発環境としては、オープンソースで提供されているEclipseがよく知られている。本実施形態では、このEclipseに対して開発支援ツール３１０の組み込みを行う。
【００９１】
図１９は、開発支援ツールの統合開発環境への組み込みを示す概念図である。Eclipse側では、プロジェクト、テンプレート、プラグイン、ヘルプマニュアルをプラグインするためのＩ／Ｆが規定されている。よって開発支援ツール３１０においては、Eclipseが規定するＩ／Ｆを継承する形で実装する必要があるため、必要なクラスファイルを用意する。具体的に、開発支援ツール３１が有するソースコード生成部３１２、テストケース生成部３１３、テストケース実行部３１４を実現するプログラムは、EclipseのプラグインＩ／Ｆを継承して作られたプラグインクラスから呼び出しを行うよう実装する。また、EclipseのプロジェクトＩ／Ｆを継承して作られたプロジェクトクラスから、テンプレートクラス、先のプラグインクラス、ヘルプクラスの呼び出しを行えるように実装する。
【００９２】
なお、統合開発環境とは、複数のソフトウェアやツール群から成るプログラム、及び、当該プログラムを有する情報処理装置を含むものとしている。
【００９３】
[総括]
以下、本実施形態に係る開発支援ツール３１０による開発環境３００の作用効果について説明する。
【００９４】
本実施形態の開発環境３００により具現化される情報処理装置の構成においては、一のコンピュータ上に、複数の仮想マシンが仮想マシン間通信可能に構築され、標準機能と前記標準機能を利用した拡張機能とを、異なる仮想マシン上で動作させるコンピュータに対し、前記拡張機能を実現するソフトウェアの開発支援を行う情報処理装置であって、インタフェース仕様が記述された定義ファイルが追加されると、前記インタフェース仕様に基づくソースコードを生成し、異なる仮想マシン上で動作する前記標準機能からの連携を仮想マシン間通信により実現させるコードを、生成するソースコードに加えて内包させる。
【００９５】
このため、この構成によれば、標準機能と異なる仮想マシンに配置される拡張機能を実現するソフトウェアの開発を行う際、ソースコード自動生成機能によりＭＶＭメカニズムに関するコードが自動生成されるので、開発者は、ＭＶＭメカニズムやＶＭ間通信を意識しながらそのソースコードを作成する必要がなくなり、拡張機能に係る処理等のプログラムだけに専念することができる。
【００９６】
また、上記情報処理装置の構成においては、前記コンピュータにおいて、前記複数の仮想マシンは、異なる仮想マシン相互の通信を行う仮想マシン間通信部を有し、前記仮想マシン間通信部は、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドの情報を登録し、当該情報が登録されると前記標準機能を動作させる仮想マシンに伝達されるテーブルを有し、前記情報処理装置において、前記コードは、前記拡張機能を実現するソフトウェアが有するクラス及びメソッドを前記テーブルに登録させる命令コードである。
【００９７】
このため、この構成によれば、同様に、標準機能と異なる仮想マシンに配置される拡張機能を実現するソフトウェアの開発を行う際、ソースコード自動生成機能によりＭＶＭメカニズムに関するコードが自動生成されるので、開発者は、ＭＶＭメカニズムやＶＭ間通信を意識しながらそのソースコードを作成する必要がなくなり、拡張機能に係る処理等のプログラムだけに専念することができる。
また、上記情報処理装置の構成においては、前記ソースコード生成手段により生成されたソースコードからテストケースを生成し、生成されるテストケースは、生成されたソースコードに渡す所定の引数を含み、前記標準機能に代わって、生成されたソースコードから期待される戻り値の取得の成否をテストするテストケースである。
【００９８】
このため、この構成によれば、ソースコード生成機能により生成されたソースコードからテストケースを生成できる。そしてテストケースが実行されれば、標準機能と異なる仮想マシンに配置される拡張機能を実現するソフトウェアの動作確認を行なうことができる。
【００９９】
また、上記情報処理装置の構成においては、前記コンピュータと当該情報処理装置とがネットワークを介して接続されるテスト環境、又は、前記コンピュータを当該情報処理装置が内包するテスト環境において、生成されたテストケースを実行する。
【０１００】
このため、この構成によれば、テストケースを実行できるので、標準機能と異なる仮想マシンに配置される拡張機能を実現するソフトウェアの動作確認を行なうことができる。
【０１０１】
また、ソフトウェア統合開発環境は、上記情報処理装置の構成を含む。
【０１０２】
このため、この構成によれば、統合開発環境には、ソフトウェア開発に必要な最低限のソフトウェアやツール群が用意されているので、本実施形態に係る開発支援ツール３１０を統合開発環境に組み込むことで、各機能の操作感が同一のＧＵＩ上で統一されたり、機能間の連携も取られ、より開発者の開発効率を向上させたり、開発支援ツール３１０の有効性を高めることができる。
【０１０３】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、以上以外にも様々な構成を採用することもできる。
【０１０４】
例えば、上記実施形態では、開発支援ツール３１０によって、拡張機能を実現する拡張機能アプリケーションを開発する構成としたが、特に限定する意図はなく、例えば、基本機能を実現する基本機能アプリケーションを開発することも可能である。このように構成すれば、標準機能、拡張機能といった機能に依存せず、汎用的なソフトウェア開発し使用することができる。
【０１０５】
また例えば、上記実施形態では、３つのテスト環境を説明したが、特に限定する意図はなく、テストが実行可能な限りにおいて任意にテスト環境を構築可能である。このように構成すれば、開発者の実現可能に最も容易なテスト環境において、当該テストを実行できる。
【０１０６】
また例えば、上記実施形態では、同一のソースコードで、単体の仮想マシン環境下、及び異なる仮想マシン下におけるテストを実行可能として説明を行った。これは、まず同一の仮想マシン内にコール先があれば当該コール先をコールし、同一の仮想マシン内にコール先がなければＶＭ間通信を行うという設計仕様によるためである。しかしながら、例えば、開発支援ツール３１０のＧＵＩ３２０上に、単体の仮想マシン環境で動作するソフトウェアなのか、異なる仮想マシン環境で動作するソフトウェアなのか、を選択可能な設定部品を設け、当該設定に従って、ＭＶＭメカニズムの継承を行う為のコードの要否が選択される構成とすることも可能である。
【０１０７】
以上、本発明の実施形態によれば、マルチ仮想マシンの環境を開発者が意識することなく、好適なソフトウェアの開発環境を提供する情報処理装置、開発支援プログラム、及びソフトウェア統合開発環境を提供することができる。
【０１０８】
なお、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【符号の説明】
【０１０９】
１０        ＯＳ
２１        ＪａｖａＶＭ（１：第１仮想マシン側、２：第２仮想マシン側）
４１        ＶＭ間通信部
２２        Ｊａｖａコンポーネント
１００        画像処理装置
１１０        コントローラ
１１１        ＣＰＵ
１１２        記憶装置
１１３        ネットワークＩ／Ｆ
１１４        外部記憶Ｉ／Ｆ（ａ：記録媒体）
１１５        操作パネル
１１６        プロッタ    
１１７        スキャナ
１２０        画像処理装置
１３０        画像処理装置
２１１        ヒープメモリ
２２１        Ｊａｖａプラットフォーム
２２１ｂ２    ＳＤＫ  ＡＰＩ
２２２        Ｊａｖａアプリケーション
２２２ａ１    標準機能アプリケーション
２２２ｂ２    ＳＤＫアプリケーション／拡張機能アプリケーション
３００        開発環境
３１０        開発支援ツール
３１１        ＧＵＩ部
３１２        ソースコード生成部
３１３        テストケース生成部
３１４        テストケース実行部
３２０        ＧＵＩ
３２１        プロジェクト選択
３２２        ソースコード生成
３２３        テストケース生成
３２４        テストケース実行
３２５        ファイル選択
３２６        編集画面
３３０        ＸＭＬ定義ファイル
３４０        ソースコード
３５０        テストケース
４１１        ＶＭ間通信判定部
４１２        クラス管理テーブル
４１３        メソッド管理テーブル
【先行技術文献】
【特許文献】
【０１１０】
【特許文献１】特開２００５−１５８０３０号公報
【図１】
2011060236.tif 000003
【図２】
2011060236.tif 000004
【図３】
2011060236.tif 000005
【図４】
2011060236.tif 000006
【図５】
2011060236.tif 000007
【図６】
2011060236.tif 000008
【図７】
2011060236.tif 000009
【図８】
2011060236.tif 000010
【図９】
2011060236.tif 000011
【図１０】
2011060236.tif 000012
【図１１】
2011060236.tif 000013
【図１２】
2011060236.tif 000014
【図１３】
2011060236.tif 000015
【図１４】
2011060236.tif 000016
【図１５】
2011060236.tif 000017
【図１６】
2011060236.tif 000018
【図１７】
2011060236.tif 000019
【図１８】
2011060236.tif 000020
【図１９】
2011060236.tif 000021