(57)【要約】【課題】  効率的なソフトウェア開発を実現できるようにする。【解決手段】  （ａ）開発装置１において、ソースコード２１から、当該開発装置１の演算処理装置１３においてネイティブな第１バイナリコードが生成され、（ｂ）開発装置１において、第１バイナリコードが当該開発装置１の演算処理装置１３に実行され、（ｃ）開発装置１において、第１バイナリコードにおける所定のコールを実行するとき、そのコールに対応するリモートコールが画像形成装置２へ送信され、（ｄ）画像形成装置２において、リモートコールが受信されると、そのリモートコールに従って制御部７３が動作し、（ｅ）その動作結果がリモートコールの戻り値として開発装置１へ送信され、（ｆ）開発装置１において、そのリモートコールの戻り値が画像形成装置２から受信され所定のコールの戻り値とされる。【選択図】  図１
2010191578.tif 000002
【特許請求の範囲】
【請求項１】
電子機器と、
その電子機器で実行されるプログラムを開発する開発装置とを備え、
前記開発装置は、
第１通信装置と、
第１演算処理装置と、
ソースコードから、当該開発装置の前記第１演算処理装置においてネイティブな第１バイナリコードを生成するコンパイラと、
前記第１バイナリコードを前記第１演算処理装置に実行させるコントローラと、
前記第１バイナリコードにおける所定のコールが実行されるとき、そのコールに対応するリモートコールを、前記第１通信装置を介して前記電子機器へ送信し、そのリモートコールの戻り値を、前記第１通信装置を介して前記電子機器から受信し、前記所定のコールの戻り値とするリモート呼出部とを有し、
前記電子機器は、
第２通信装置と、
所定の機能を有する内部装置と、
前記内部装置を制御する制御部と、
前記第２通信装置を介して供給される前記リモートコールで呼び出されると、前記制御部を動作させ、その動作結果を前記リモートコールの戻り値として前記第２通信装置を介して送信するインターフェース部とを有すること、
を特徴とするソフトウェア開発システム。
【請求項２】
前記開発装置は、前記ソースコードから、前記電子機器の演算処理装置において実行可能な第２バイナリコードを生成するクロスコンパイラを備え、
前記開発装置の前記コントローラは、前記第２バイナリコードを、前記第１通信装置を介して前記電子機器へ送信し、
前記電子機器は、第２演算処理装置と、記憶装置と、前記第２通信装置を介して前記第２バイナリコードを受信し前記第２バイナリコードを前記記憶装置に格納する処理部とを備え、
前記インターフェース部は、前記第２バイナリコードが前記第２演算処理装置で実行され前記所定のコールが実行されると、前記制御部を動作させ、その動作結果を前記所定のコールの戻り値とすること、
を特徴とする請求項１記載のソフトウェア開発システム。
【請求項３】
前記電子機器の前記インターフェース部は、リモートコールを、前記第２通信装置を介して前記開発装置へ送信し、
前記開発装置の前記第１演算処理装置は、前記第１バイナリコードに従って、前記第１通信装置を介して前記リモートコールを受信すると、そのリモートコールにより指定されている処理を実行すること、
を特徴とする請求項１記載のソフトウェア開発システム。
【請求項４】
前記インターフェース部は、アプリケーションプログラムインタフェースであることを特徴とする請求項１または請求項２記載のソフトウェア開発システム。
【請求項５】
前記電子機器は、画像形成装置であり、
前記電子機器の内部装置は、表示装置、印刷装置、画像読取装置およびファクシミリ装置のいずれかであること、
を特徴とする請求項１から請求項４のいずれか１項記載のソフトウェア開発システム。
【請求項６】
電子機器で実行可能なプログラムを、開発装置で開発するソフトウェア開発方法において、
前記開発装置において、ソースコードから、当該開発装置の演算処理装置においてネイティブな第１バイナリコードを生成し、
前記開発装置において、前記第１バイナリコードを当該開発装置の演算処理装置に実行させ、
前記開発装置において、前記第１バイナリコードにおける所定のコールを実行するとき、そのコールに対応するリモートコールを前記電子機器へ送信し、
前記電子機器において、前記リモートコールを受信すると、前記電子機器内の所定の機能を有する内部装置を制御する制御部を動作させ、
その動作結果を前記リモートコールの戻り値として前記開発装置へ送信し、
前記開発装置において、そのリモートコールの戻り値を前記電子機器から受信し前記所定のコールの戻り値とすること、
を特徴とするソフトウェア開発方法。
【請求項７】
前記開発装置において、クロスコンパイラで、前記ソースコードから、前記電子機器の演算処理装置において実行可能な第２バイナリコードを生成し、
前記開発装置において、前記第２バイナリコードを前記電子機器へ送信し、
前記電子機器において、前記第２バイナリコードを受信して記憶装置に格納し、
前記電子機器において、前記第２バイナリコードを実行し、
前記電子機器において、前記第２バイナリコードにおける前記所定のコールが実行されると、前記電子機器の内部装置を制御する制御部を動作させ、
その動作結果を前記所定のコールの戻り値とすること、
を特徴とする請求項６記載のソフトウェア開発方法。
【請求項８】
前記電子機器から前記開発装置へリモートコールを送信し、
前記開発装置において、前記第１バイナリコードに従って、そのリモートコールを受信すると、そのリモートコールにより指定されている処理を実行すること、
を特徴とする請求項６記載のソフトウェア開発方法。
【請求項９】
前記リモートコールで呼び出されるアプリケーションプログラムインタフェースで前記制御部を動作させることを特徴とする請求項６記載のソフトウェア開発方法。
【請求項１０】
前記電子機器は、画像形成装置であり、
前記電子機器の内部装置は、表示装置、印刷装置、画像読取装置およびファクシミリ装置のいずれかであること、
を特徴とする請求項６から請求項９のいずれか１項記載のソフトウェア開発方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェア開発システムおよびソフトウェア開発方法に関するものである。
【背景技術】
【０００２】
プリンタ、複写機などの電子機器において特定の機能を実現するために、ソフトウェアモジュールが記録媒体または通信媒体から導入される。このようなソフトウェアモジュールの開発は、通常、対象の電子機器内ではなく、開発装置で行われる。開発装置としては、例えば、開発環境を導入されたパーソナルコンピュータが使用される。
【０００３】
開発段階では、開発中のソフトウェアモジュールを対象の電子機器で使用した場合の動作を確認する必要がある。開発装置のプラットホームは、電子機器のプラットホームと異なるため、開発段階での動作確認には、（１）開発途中のソフトウェアモジュールを電子機器に導入して電子機器上で実行させたり（例えば特許文献１参照）、（２）開発装置のプラットホーム上で電子機器のプラットホームを模擬するシミュレータを開発装置に導入し、シミュレータ上で開発途中のソフトウェアモジュールを実行させたりする（例えば特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開昭６４−６５６４４号公報
【特許文献２】特開平４−３２９３３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、開発途中のソフトウェアモジュールを電子機器に導入して電子機器上で実行させる方法では、ソフトウェアモジュールを変更するたびに、電子機器にソフトウェアモジュールを導入しなければならないため作業負担が大きく、効率的なソフトウェア開発を行うことが難しい。
【０００６】
また、シミュレータを開発装置に導入し、シミュレータ上で開発途中のソフトウェアモジュールを実行させる方法では、開発するソフトウェアモジュールの機能が特に限定されていない場合には、シミュレータは、対象の電子機器のすべての機能を模擬する必要があり、正確に電子機器の動作を模擬するシミュレータの開発が容易ではない。また、異なる複数の機種のそれぞれに対してシミュレータを開発しなければならず、さらに、電子機器のモデルチェンジ、バージョンチェンジなどの仕様変更があるたびに、シミュレータを変更しなければならない。したがって、シミュレータの開発負担が大きい。また、ソフトウェアモジュールの動作が正しくない場合、開発中のソフトウェアモジュールのバグではなく、シミュレータのバグが動作不良の原因となる可能性があり、動作不良の原因を特定する作業負担が大きくなる。
【０００７】
このように、上述の技術では、効率的なソフトウェア開発を行うことが難しい。
【０００８】
本発明は、上記の問題に鑑みてなされたものであり、効率的なソフトウェア開発を実現できるソフトウェア開発システムおよびソフトウェア開発方法を得ることを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するために、本発明では以下のようにした。
【００１０】
本発明に係るソフトウェア開発システムは、電子機器と、その電子機器で実行されるプログラムを開発する開発装置とを備える。開発装置は、第１通信装置と、第１演算処理装置と、ソースコードから、当該開発装置の第１演算処理装置においてネイティブな第１バイナリコードを生成するコンパイラと、第１バイナリコードを第１演算処理装置に実行させるコントローラと、第１バイナリコードにおける所定のコールが実行されるとき、そのコールに対応するリモートコールを、第１通信装置を介して電子機器へ送信し、そのリモートコールの戻り値を、第１通信装置を介して電子機器から受信し、所定のコールの戻り値とするリモート呼出部とを有する。一方、電子機器は、第２通信装置と、所定の機能を有する内部装置と、内部装置を制御する制御部と、第２通信装置を介して供給されるリモートコールで呼び出されると、制御部を動作させ、その動作結果をリモートコールの戻り値として第２通信装置を介して送信するインターフェース部とを有する。
【００１１】
これにより、開発途中のバイナリコードを電子機器に導入する必要がなく、かつ実機の内部装置を実際に動作させてバイナリコードの動作確認を行うことができるため、開発装置において効率的なソフトウェア開発を実現できる。
【００１２】
また、本発明に係るソフトウェア開発システムは、上記のソフトウェア開発システムに加え、次のようにしてもよい。この場合、開発装置は、ソースコードから、電子機器の演算処理装置において実行可能な第２バイナリコードを生成するクロスコンパイラを備える。そして、開発装置のコントローラは、第２バイナリコードを、第１通信装置を介して電子機器へ送信する。一方、電子機器は、第２演算処理装置と、記憶装置と、第２通信装置を介して第２バイナリコードを受信し第２バイナリコードを記憶装置に格納する処理部とを備える。そして、インターフェース部は、第２バイナリコードが第２演算処理装置で実行され所定のコールが実行されると、制御部を動作させ、その動作結果を所定のコールの戻り値とする。
【００１３】
これにより、開発途中の動作確認で使用されるインターフェース部が、開発後にバイナリコードが電子機器で実行される際にも同様に使用されるため、開発環境が、実機でのバイナリコード実行時のものにより近づく。
【００１４】
また、本発明に係るソフトウェア開発システムは、上記のソフトウェア開発システムに加え、次のようにしてもよい。この場合、電子機器のインターフェース部は、リモートコールを、第２通信装置を介して開発装置へ送信し、開発装置の第１演算処理装置は、第１バイナリコードに従って、第１通信装置を介してリモートコールを受信すると、そのリモートコールにより指定されている処理を実行する。
【００１５】
これにより、電子機器の内部装置の状態変化などに起因して開始されるソフトウェアモジュールの処理も開発装置において試験的に実行することができる。
【００１６】
また、本発明に係るソフトウェア開発システムは、上記のソフトウェア開発システムのいずれかに加え、次のようにしてもよい。この場合、インターフェース部は、アプリケーションプログラムインタフェースである。
【００１７】
また、本発明に係るソフトウェア開発システムは、上記のソフトウェア開発システムのいずれかに加え、次のようにしてもよい。この場合、電子機器は、画像形成装置であり、電子機器の内部装置は、表示装置、印刷装置、画像読取装置およびファクシミリ装置のいずれかである。
【００１８】
本発明に係るソフトウェア開発方法は、（ａ）開発装置において、ソースコードから、当該開発装置の演算処理装置においてネイティブな第１バイナリコードを生成し、（ｂ）開発装置において、第１バイナリコードを当該開発装置の演算処理装置に実行させ、（ｃ）開発装置において、第１バイナリコードにおける所定のコールを実行するとき、そのコールに対応するリモートコールを電子機器へ送信し、（ｄ）電子機器において、リモートコールを受信すると、電子機器内の所定の機能を有する内部装置を制御する制御部を動作させ、（ｅ）その動作結果をリモートコールの戻り値として開発装置へ送信し、（ｆ）開発装置において、そのリモートコールの戻り値を電子機器から受信し所定のコールの戻り値とする。
【００１９】
これにより、開発途中でバイナリコードを電子機器に導入する必要がなく、かつ実機の内部装置を実際に動作させてバイナリコードの動作確認を行うことができるため、開発装置において効率的なソフトウェア開発を実現できる。
【００２０】
また、本発明に係るソフトウェア開発方法は、上記のソフトウェア開発方法に加え、次のようにしてもよい。この場合、このソフトウェア開発方法は、さらに、（ｇ）開発装置において、クロスコンパイラで、ソースコードから、電子機器の演算処理装置において実行可能な第２バイナリコードを生成し、（ｈ）開発装置において、第２バイナリコードを電子機器へ送信し、（ｉ）電子機器において、第２バイナリコードを受信して記憶装置に格納し、（ｊ）電子機器において、第２バイナリコードを実行し、（ｋ）電子機器において、第２バイナリコードにおける所定のコールが実行されると、電子機器の内部装置を制御する制御部を動作させ、（ｌ）その動作結果を所定のコールの戻り値とする。
【００２１】
これにより、開発途中の動作確認で使用されるインターフェース部が、開発後にバイナリコードが電子機器で実行される際にも同様に使用されるため、開発環境が、実機でのバイナリコード実行時のものにより近づく。
【００２２】
また、本発明に係るソフトウェア開発方法は、上記のソフトウェア開発方法のいずれかに加え、次のようにしてもよい。この場合、このソフトウェア開発方法は、さらに、（ｍ）電子機器から開発装置へリモートコールを送信し、（ｎ）開発装置において、第１バイナリコードに従って、そのリモートコールを受信すると、そのリモートコールにより指定されている処理を実行する。
【００２３】
これにより、電子機器の内部装置の状態変化などに起因して開始されるソフトウェアモジュール処理も開発装置において試験的に実行することができる。
【００２４】
また、本発明に係るソフトウェア開発方法は、上記のソフトウェア開発方法のいずれかに加え、次のようにしてもよい。この場合、リモートコールで呼び出されるアプリケーションプログラムインタフェースで制御部を動作させる。
【００２５】
また、本発明に係るソフトウェア開発方法は、上記のソフトウェア開発方法のいずれかに加え、次のようにしてもよい。この場合、電子機器は、画像形成装置であり、電子機器の内部装置は、表示装置、印刷装置、画像読取装置およびファクシミリ装置のいずれかである。
【発明の効果】
【００２６】
本発明によれば、開発装置において効率的なソフトウェア開発を実現できるソフトウェア開発システムおよびソフトウェア開発方法を得ることができる。
【図面の簡単な説明】
【００２７】
【図１】図１は、本発明の実施の形態に係るソフトウェア開発システムの構成を示すブロック図である。
【図２】図２は、図１におけるソフトウェア開発システムにおける開発手順を示すフローチャートである。
【図３】図３は、図１に示すシステムにおいて、ソフトウェア開発段階での開発装置の動作を説明するフローチャートである。
【発明を実施するための形態】
【００２８】
以下、図に基づいて本発明の実施の形態を説明する。
【００２９】
図１は、本発明の実施の形態に係るソフトウェア開発システムの構成を示すブロック図である。図１に示すシステムは、開発装置１と、画像形成装置２とを備える。開発装置１は、画像形成装置２に導入されるソフトウェアモジュールであるアプリケーションプログラム（バイナリコード）を開発するための装置である。開発装置１は、例えば、開発プラットホームソフトウェアをインストールされたパーソナルコンピュータである。画像形成装置２は、そのアプリケーションプログラムを導入可能な電子機器であり、印刷などの所定の機能を有する内部装置を備える。画像形成装置２は、例えば印刷装置、複写機、スキャナ機、ファクシミリ機、複合機などである。開発装置１と画像形成装置２とは、コンピュータネットワークなどの通信路を介して接続されている。
【００３０】
開発装置１は、通信装置１１と、記憶装置１２と、演算処理装置１３とを備える。
【００３１】
通信装置１１は、ネットワークなどを介して画像形成装置２とデータ通信が可能な装置である。通信装置１１としては、例えばネットワークインタフェースが使用される。
【００３２】
記憶装置１２は、各種プログラムおよび各種データを格納する装置である。記憶装置１２としては、例えば、ハードディスクドライブ、不揮発性の半導体メモリなどが使用される。記憶装置１２には、ＴＣＰ／ＩＰ（Transmission Control Protocol / Internet Protocol）などといった所定のプロトコルでデータ通信を行うためのデータ通信プログラム（図示せず）、開発装置１における開発プラットホームを実現するための開発環境プログラム（図示せず）、画像形成装置２で使用されるソフトウェアモジュールのソースコード２１、そのソースコード２１をコンパイルして得られるバイナリコードであるアプリケーションプログラム２２などが格納される。
【００３３】
演算処理装置１３は、ＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）などを有するコンピュータであって、ＲＡＭにプログラムをロードして、ＣＰＵでそのプログラムを実行して各種処理部を実現する。上述のデータ通信プログラムが演算処理装置１３で実行されることにより、通信部３１が実現される。また、上述の開発環境プログラムが演算処理装置１３で実行されることにより、開発プラットホーム３２が実現される。
【００３４】
通信部３１は、通信装置１１を制御して、所定のプロトコルに従って、画像形成装置２との間でデータ通信を行う処理部である。
【００３５】
開発プラットホーム３２は、コントローラ４１、クロスコンパイラ４２、コンパイラ４３、リモート呼出部４４、ソースコードエディタ（図示せず）、デバッガ（図示せず）などの処理部を有する。
【００３６】
コントローラ４１は、図示せぬ入力装置に対するユーザ操作などに応じて、開発プラットホーム３２内の他の処理部の動作を制御する処理部である。
【００３７】
コンパイラ４２は、ソースコード２１から、開発装置１の演算処理装置１３においてネイティブなバイナリコード（以下、第１バイナリコードという）のアプリケーションプログラム２２を生成する処理部である。なお、ここでいうネイティブなバイナリコードとは、シミュレータを使用せずに開発装置１における元来のプログラム実行環境で動作可能なコードのことを指す。
【００３８】
このコンパイラ４２により生成された第１バイナリコードのアプリケーションプログラム２２が演算処理装置１３で実行されることで、アプリケーション３３が、試験的に開発装置１において実現される。このアプリケーション３３が動作することで、開発装置１において、画像形成装置２のために開発中のソフトウェアモジュールの動作確認を行うことができる。
【００３９】
クロスコンパイラ４３は、ソースコード２１から、画像形成装置２の演算処理装置において実行可能なバイナリコード（以下、第２バイナリコードという）のアプリケーションプログラム２２を生成する処理部である。
【００４０】
リモート呼出部４４は、第１バイナリコードにおける所定のコールが実行されるとき、そのコールに対応するリモートコールを、通信部３１および通信装置１１を介して画像形成装置２へ送信し、そのリモートコールの戻り値を、通信装置１１および通信部３１を介して画像形成装置２から受信し、その所定のコールの戻り値とする処理部である。
【００４１】
画像形成装置２は、表示装置５１と、印刷装置５２と、通信装置５３と、記憶装置５４と、演算処理装置５５とを備える。
【００４２】
表示装置５１は、画像形成装置２の筺体表面に配置され、各種情報を表示する内部装置である。表示装置５１としては、例えば液晶ディスプレイが使用される。
【００４３】
印刷装置５２は、レーザ印刷エンジンなどを内蔵し、印刷データに基づいて原稿画像を、印刷用紙などの媒体上に印刷する内部装置である。なお、内部装置としては、表示装置５１および印刷装置５２の他に、画像読取装置、ファクシミリ装置などが設けられてもよい。
【００４４】
通信装置５３は、ネットワークなどを介して開発装置１とデータ通信が可能な装置である。通信装置５３としては、例えばネットワークインタフェースが使用される。
【００４５】
記憶装置５４は、各種プログラムおよび各種データを格納する装置である。記憶装置５４としては、例えば、ハードディスクドライブ、不揮発性の半導体メモリなどが使用される。記憶装置５４には、ＴＣＰ／ＩＰなどといった所定のプロトコルでデータ通信を行うためのデータ通信プログラム（図示せず）、オペレーティングシステムプログラム（図示せず）、印刷装置５２などの内部装置を制御するための制御プログラム６１、制御プログラム６１を実行させるためのインターフェースを提供するためのＡＰＩ（Application Program Interface）コード６２、第２バイナリコードであるアプリケーションプログラム６３などが格納される。
【００４６】
演算処理装置５５は、ＣＰＵ、ＲＯＭ、ＲＡＭなどを有するコンピュータであって、ＲＡＭにプログラムをロードして、ＣＰＵでそのプログラムを実行して各種処理部を実現する。上述のオペレーティングシステムプログラムが演算処理装置５５で実行されることにより、オペレーティングシステム（ＯＳ）７１が実現される。また、上述のデータ通信プログラムが演算処理装置５５で実行されることにより、通信部７２が実現される。また、制御プログラム６１が演算処理装置５５で実行されることにより、制御部７３が実現される。また、ＡＰＩコード６２が演算処理装置５５で実行されることにより、ＡＰＩ７４が実現される。また、アプリケーションプログラム６３が演算処理装置５５で実行されることにより、アプリケーション７５が実現される。
【００４７】
通信部７２は、通信装置５３を制御して、所定のプロトコルに従って、開発装置１との間でデータ通信を行う処理部である。
【００４８】
制御部７３は、表示装置５１、印刷装置５２などといった内部装置を制御する処理部である。
【００４９】
ＡＰＩ７４は、通信装置５３および通信部７２を介して供給されるリモートコールで呼び出されると、制御部７３を動作させ、その動作結果をそのリモートコールの戻り値として通信装置５３および通信部７２を介して送信するとともに、ローカルのアプリケーション７５からのコールで呼び出されると、制御部７３を動作させ、その動作結果をそのコールの戻り値とする処理部である。
【００５０】
アプリケーション７５は、画像形成装置２における内部装置の機能を利用して所定の処理を行う処理部である。
【００５１】
次に、上記システムにおけるソフトウェアの開発について説明する。
【００５２】
図２は、図１におけるソフトウェア開発システムにおける開発手順を示すフローチャートである。
【００５３】
まず、開発装置１において、開発プラットホーム３２が起動される。
【００５４】
そして、図示せぬ入力装置に対するユーザ操作に従って、開発プラットホーム３２におけるエディタによりソースコード２１が編集される（ステップＳ１）。その後、そのソースコード２１をコンパイルするためのユーザ操作が検出されると、コントローラ４１は、コンパイラ４２に、ソースコード２１から、第１バイナリコードのアプリケーションプログラム２２を生成させる（ステップＳ２）。
【００５５】
次に、そのアプリケーションプログラム２２を実行させるためのユーザ操作が検出されると、コントローラ４１は、アプリケーションプログラム２２を呼び出し、アプリケーション３３を起動する。これにより、アプリケーション３３が動作する（ステップＳ３）。アプリケーション３３において、画像形成装置２の内部装置を動作させる処理が実行される場合、リモート呼出部４４によるリモートコールにより、画像形成装置２のＡＰＩ７４が呼び出され、その動作結果が戻り値として得られる。アプリケーション３３は、その動作結果を使用して、それ以降の処理を実行する。
【００５６】
このようにして、開発装置１において、アプリケーション３３が試験的に実行される。
【００５７】
その後、ユーザは、ソースコード２１のアプリケーションプログラム６３を画像形成装置２へインストールするか否かを判断する（ステップＳ４）。
【００５８】
ソースコード２１が完成したとユーザが判断した場合には、ユーザは、ソースコード２１によるアプリケーションプログラムを画像形成装置２へインストールするための操作を行う。コントローラ４１は、その操作を検出すると、クロスコンパイラ４３に、ソースコード２１から、第２バイナリコードのアプリケーションプログラム２２を生成させる（ステップＳ５）。そして、コントローラ４１は、生成された第２バイナリコードのアプリケーションプログラム２２を、通信部３１および通信装置１１を介して画像形成装置２へ送信する（ステップＳ６）。画像形成装置２では、ＯＳ７１が、通信装置５３および通信部７２を介してその第２バイナリコードのアプリケーションプログラムを受信し、記憶装置５４に格納する。
【００５９】
このようにして、完成したソースコード２１から生成されたアプリケーションプログラム６３が画像形成装置２に格納される。
【００６０】
このようにして記憶装置５４に格納されたアプリケーションプログラム６３には、ＡＰＩ７４を呼び出すためのコールが記述されている。このため、このアプリケーションプログラム６３が実行されると、アプリケーションプログラム６３からＡＰＩコード６２が呼び出される。つまり、アプリケーション７５からＡＰＩ７４が呼び出され、そのコールに対応して制御部７３が内部装置に動作させる。
【００６１】
以上のようにして、アプリケーションプログラム６３が、開発され、インストールされ、実行される。
【００６２】
ここで、上述のステップＳ２，Ｓ３における、ソフトウェア開発段階での開発装置１の動作の詳細について説明する。図３は、図１に示すシステムにおいて、ソフトウェア開発段階での開発装置の動作を説明するフローチャートである。
【００６３】
コントローラ４１は、ユーザ操作により指定されたソースコード２１を記憶装置１２から読み込み（ステップＳ１１）、コンパイラ４２に、そのソースコード２１のコンパイルを実行させる（ステップＳ１２）。これにより、ソースコード２１から、第１バイナリコードのアプリケーションプログラム２２が生成される。
【００６４】
次に、コントローラ４１は、生成された第１バイナリコードのアプリケーションプログラム２２を呼び出し実行させる（ステップＳ１３）。
【００６５】
このアプリケーションプログラム２２には、画像形成装置２の内部装置の機能を使用するときにＡＰＩ７４を呼び出すためのコールが記述されている。アプリケーション３３の動作中に、このコールが実行されると、リモート呼出部４４は、そのコールを検出し、そのコールに対応するリモートコールを生成し、通信部３１および通信装置１１を介して画像形成装置２へ送信する（ステップＳ１４）。そして、画像形成装置２におけるＡＰＩ７４がそのリモートコールにより呼び出され、制御部７３が、そのリモートコールにより指定された動作を内部装置に実行させる。そして、ＡＰＩ７４は、制御部７３から内部装置の動作結果を受信すると、その動作結果をリモートコールの戻り値（つまり、応答）として、開発装置１へ送信する。リモート呼出部４４は、その戻り値を、通信装置１１および通信部３１を介して受信する（ステップＳ１５）。
【００６６】
このように、アプリケーションプログラム２２が画像形成装置２の内部装置の機能を使用するたびに、ステップＳ１４，Ｓ１５のように、リモートコールが発生し、そのリモートコールに応じて画像形成装置２が動作し、その動作結果が戻り値として得られる。例えば、リモート呼出部４４は、表示装置５１にある文字列を表示させるためのリモートコールを送信し、その表示が成功したか否かを示す戻り値を受信する。また、リモート呼出部４４は、所定の入力画面を表示させるリモートコールを送信し、画像形成装置２における入力装置（図示せず）により検出されたその入力画面に対するユーザ操作を示す値が戻り値として得られる。
【００６７】
その後、アプリケーション３３は、その戻り値を使用して、処理を継続する。
【００６８】
そして、アプリケーションプログラム２２が最後まで実行されると、アプリケーション３３の処理が終了する（ステップＳ１６）。
【００６９】
このようにして、開発装置１は、アプリケーションプログラム２２を実行し、画像形成装置２の機能をリモートコールで使用して、アプリケーション３３（すなわち、画像形成装置２におけるアプリケーション７５）を試験的に動作させることができる。
【００７０】
以上のように、上記実施の形態によれば、（ａ）開発装置１において、ソースコード２１から、当該開発装置１の演算処理装置１３においてネイティブな第１バイナリコードが生成され、（ｂ）開発装置１において、第１バイナリコードが当該開発装置１の演算処理装置１３に実行され、（ｃ）開発装置１において、第１バイナリコードにおける所定のコールを実行するとき、そのコールに対応するリモートコールが画像形成装置２へ送信され、（ｄ）画像形成装置２において、リモートコールが受信されると、そのリモートコールに従って制御部７３が動作し、（ｅ）その動作結果がリモートコールの戻り値として開発装置１へ送信され、（ｆ）開発装置１において、そのリモートコールの戻り値が画像形成装置２から受信され所定のコールの戻り値とされる。
【００７１】
これにより、開発途中のバイナリコードを画像形成装置２に導入する必要がなく、かつ実機の内部装置を実際に動作させてバイナリコードの動作確認を行うことができるため、開発装置１において効率的なソフトウェア開発を実現できる。また、シミュレータの開発コストが不要である。
【００７２】
さらに、この技術は、画像形成装置２以外の組み込みシステム（特定の機能を実現する目的でコンピュータおよびプログラムを内蔵した電子機器）で使用されるプログラムの開発にも適用可能である。
【００７３】
なお、上述の実施の形態は、本発明の好適な例であるが、本発明は、これらに限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々の変形、変更が可能である。
【００７４】
例えば、上記実施の形態において、画像形成装置２のＡＰＩ７４がリモートコールを送信して、開発装置１のアプリケーション３３がリモートコールを受信して、そのリモートコールに対応する処理を実行し、その処理結果を戻り値として応答するようにしてもよい。これにより、画像形成装置２の内部装置の状態変化などに起因して開始されるアプリケーション３３の処理も試験的に実行することができる。
【００７５】
なお、上述のアプリケーションプログラム２２，６３は、画像形成装置２の内部装置を利用するプログラムのことであり、ドライバプログラム、ユーティリティプログラムなども含む。
【産業上の利用可能性】
【００７６】
本発明は、例えば、複合機にインストールされるアプリケーションプログラムの開発に適用可能である。
【符号の説明】
【００７７】
１  開発装置
２  画像形成装置（電子機器の一例）
１１  通信装置（第１通信装置の一例）
１３  演算処理装置（第１演算処理装置の一例）
２１  ソースコード
２２  アプリケーションプログラム（第１バイナリコードの一例）
４１  コントローラ
４２  コンパイラ
４３  クロスコンパイラ
４４  リモート呼出部
５１  表示装置（内部装置の一例）
５２  印刷装置（内部装置の一例）
５３  通信装置（第２通信装置の一例）
５４  記憶装置
５５  演算処理装置（第２演算処理装置）
６３  アプリケーションプログラム（第２バイナリコードの一例）
７１  オペレーティングシステム（処理部の一例）
７４  ＡＰＩ（インターフェース部の一例）
【図１】
2010191578.tif 000003
【図２】
2010191578.tif 000004
【図３】
2010191578.tif 000005