以下、本発明の一実施の形態について、図面を用いて説明する。
まず、本実施の形態に係る動作確認システムとしての開発システムの構成について説明する。
図1は、本実施の形態に係る開発システム10のシステム構成を示すブロック図である。
図1に示すように、開発システム10は、本発明の対象装置としての複合機20と、複合機20用のプログラムの動作の確認を行うための本発明の動作確認装置としての開発用PC30とを備えている。複合機20および開発用PC30は、互いに通信可能な状態でネットワーク11に接続されている。
開発システム10は、複合機20の他にも複合機を備えていても良い。開発システム10は、複数種類の複合機を備えることによって、複数種類の複合機用のプログラムの開発および動作の確認が行われることができる。
また、開発システム10は、開発用PC30の他にも開発用PCを備えていても良い。開発システム10は、複数台の開発用PCを備えることによって、複数の利用者によって同時に複合機用のプログラムの開発および動作の確認が行われることができる。
図2は、複合機20の構成を示すブロック図である。
図2に示すように、複合機20は、装置全体を制御する制御部21と、種々の情報を記憶する記憶部22と、利用者によって種々の操作が入力される操作パネル上の操作部(以下「パネル上操作部」という。)23と、種々の情報を表示する操作パネル上のモニタ(以下「パネル上モニタ」という。)24と、ネットワーク11(図1参照。)を介して開発用PC30(図1参照。)と通信を行うための通信部25と、画像を読み取るスキャナ26と、画像を印刷するプリンタ27とを備えている。制御部21は、例えばCPU(Central Processing Unit)などから構成されている。記憶部22は、例えばハードディスクなどから構成されている。パネル上操作部23は、パネル上モニタ24とともにタッチパネルを形成する操作部や、操作パネル上のボタンなどから構成されている。パネル上モニタ24は、例えばLCD(Liquid Crystal Display)などから構成されている。
記憶部22は、複合機20の固有の命令である機器固有命令を処理するための機器固有命令処理プログラム22aと、機器固有命令に対応付けられた機器制御API(Application Program Interface)22bとを記憶しており、機器固有命令処理プログラム22aによって処理される機器固有命令22cと、開発用PC30によって開発されるプログラム22dとが記憶されるようになっている。
機器固有命令としては、スキャナ26によるスキャンやプリンタ27による印刷などの開発用PC30にはない機能の命令や、記憶部22への入出力などの開発用PC30に同等の機能があるが実行手順が異なるなどの何らかの違いがある機能の命令などがある。例えば、機器固有命令としては、ジョブの送信、ジョブ情報の取得、ジョブの削除等の制御、パネル上モニタ24による表示、スキャナ26によるスキャン、プリンタ27による印刷などの命令がある。どのような命令を機器固有命令とするかは、設定次第である。
図3は、開発用PC30の構成を示すブロック図である。
図3に示すように、開発用PC30は、装置全体を制御する制御部31と、種々の情報を記憶する記憶部32と、利用者によって種々の操作が入力される操作部33と、種々の情報を表示するモニタ34と、ネットワーク11(図1参照。)を介して複合機20(図1参照。)と通信を行うための通信部35とを備えており、複合機20用のプログラムの開発装置である。制御部31は、例えばCPUなどから構成されている。記憶部32は、例えばハードディスクなどから構成されている。操作部33は、例えばキーボードやマウスなどから構成されている。モニタ34は、例えばLCDなどから構成されている。
記憶部32は、プログラミング言語で記述されたプログラムを複合機20のインストールのために複合機20の制御部21(図2参照。)によって直接実行されることが可能な機械語のプログラムに変換するためのプログラムであるインストール用コンパイラ32aと、プログラミング言語で記述されたプログラムを動作確認のために制御部31によって直接実行されることが可能な機械語のプログラムに変換するためのプログラムである動作確認用コンパイラ32bと、複合機20の動作を複合機20の代わりに開発用PC30で実行するためのプログラムであるシミュレータ32cとを記憶しており、インストール用コンパイラ32aおよび動作確認用コンパイラ32bでコンパイルされる前のプログラムであってプログラミング言語によって記述されたソースコード32dと、ソースコード32dがインストール用コンパイラ32aでコンパイルされた後のプログラムであって機械語で記述されたインストール用オブジェクトコード32eと、ソースコード32dが動作確認用コンパイラ32bでコンパイルされた後のプログラムであって機械語で記述された動作確認用オブジェクトコード32fと、シミュレータ32cによって処理される機器固有命令32gとが記憶されるようになっている。
シミュレータ32cは、機器固有命令を含む予め設定された命令を処理するようになっている。シミュレータ32cがどのような命令を処理するかは、設定次第である。なお、本実施の形態においては、開発用PC30は、シミュレータ32cを備えているが、シミュレータ32cに代えてシミュレータ32cと同様な機能を実現することができるエミュレータを備えていても良い。
次に、開発システム10(図1参照。)の動作について説明する。
開発用PC30(図1参照。)の利用者は、開発用PC30のモニタ34(図3参照。)の画面を確認しながら操作部33(図3参照。)から開発用PC30に操作内容を入力することによって、複合機20(図1参照。)用のプログラムのソースコード32d(図3参照。)を作成する。作成されたソースコード32dは、開発用PC30の記憶部32(図3参照。)に記憶される。
説明を簡単にするため、以下においては、ソースコード32dは、次のように記載されているとする。
1. Input A
2. Add A , 1
3. Display A
4. Print A
ここで、ソースコード32dの1行目の「Input A」という命令は、パネル上操作部23(図2参照。)から入力されたデータを記憶部22(図2参照。)のデータ領域Aに記憶することを意味している。2行目の「Add A , 1」という命令は、データ領域Aに記憶されたデータに1を加えることを意味している。3行目の「Display A」という命令は、データ領域Aに記憶されたデータをパネル上モニタ24(図2参照。)に表示することを意味している。4行目の「Print A」という命令は、データ領域Aに記憶されたデータをプリンタ27(図2参照。)で印刷することを意味している。すなわち、ソースコード32dは、複合機20においてパネル上操作部23から入力されたデータに1を加えたデータをパネル上モニタ24に表示させてプリンタ27に印刷させるように設計されたプログラムである。
図4は、開発用PC30(図3参照。)の動作のフローチャートであって、ソースコード32d(図3参照。)の動作確認用のコンパイル時の図である。
開発用PC30の利用者が操作部33(図3参照。)を用いてソースコード32dの動作確認用のコンパイルを開発用PC30に指示すると、開発用PC30の制御部31(図3参照。)は、記憶部32(図3参照。)に記憶されている動作確認用コンパイラ32b(図3参照。)を起動して、図4に示す処理を実行する。
図4に示すように、制御部31は、ソースコード32dから命令を1つ取り出し(ステップS41)、ステップS41において取り出した命令と同名の呼出し点がシミュレータ32c(図3参照。)にあるか否かを判断する(ステップS42)。
制御部31は、ステップS41において取り出した命令と同名の呼出し点がシミュレータ32cにないとステップS42において判断すると、ステップS41において取り出した命令をプログラミング言語から機械語に変換し(ステップS43)、ソースコード32dの全ての命令を機械語に変換したか否かを判断する(ステップS44)。
制御部31は、ステップS41において取り出した命令と同名の呼出し点がシミュレータ32cにあるとステップS42において判断すると、ステップS41において取り出した命令についてシミュレータ32cの呼出し点が呼出されるようにプログラミング言語から機械語に変換し(ステップS45)、ソースコード32dの全ての命令を機械語に変換したか否かを判断する(ステップS44)。
制御部31は、ソースコード32dの全ての命令を機械語に変換していないとステップS44において判断すると、再びステップS41の処理を実行する。一方、制御部31は、ソースコード32dの全ての命令を機械語に変換したとステップS44において判断すると、図4に示す処理を終了する。
したがって、シミュレータ32cに「Input」および「Add」という呼出し点がなく「Display」および「Print」という呼出し点がある場合、上述したソースコード32dは、図4に示す処理によって、1行目の「Input A」という命令と、2行目の「Add A , 1」という命令とがプログラミング言語から機械語に変換され(ステップS43)、3行目の「Display A」という命令と、4行目の「Print A」という命令とがシミュレータ32cの呼出し点が呼出されるようにプログラミング言語から機械語に変換される(ステップS45)。
このようにして生成された動作確認用オブジェクトコード32f(図3参照。)は、開発用PC30の記憶部32に記憶される。
次に、動作確認用オブジェクトコード32fが実行されるときの動作について説明する。図5は、開発用PC30(図3参照。)の動作のフローチャートであって、動作確認用オブジェクトコード32f(図3参照。)の実行時の図である。
開発用PC30の利用者が操作部33(図3参照。)を用いて動作確認用オブジェクトコード32fの実行を開発用PC30に指示すると、開発用PC30の制御部31(図3参照。)は、図5に示す処理を実行する。
図5に示すように、制御部31は、動作確認用オブジェクトコード32fから命令を1つ取り出し(ステップS51)、ステップS51において取り出した命令にシミュレータ32c(図3参照。)の呼出しがあるか否かを判断する(ステップS52)。
制御部31は、ステップS51において取り出した命令にシミュレータ32cの呼出しがないとステップS52において判断すると、ステップS51において取り出した命令をシミュレータ32cを呼出さずに実行し(ステップS53)、動作確認用オブジェクトコード32fの全ての命令を処理したか否かを判断する(ステップS54)。
制御部31は、ステップS51において取り出した命令にシミュレータ32cの呼出しがあるとステップS52において判断すると、シミュレータ32cを呼出し(ステップS55)、ステップS51において取り出した命令が機器固有命令であるか否かをシミュレータ32cによって判断する(ステップS56)。
制御部31は、ステップS51において取り出した命令が機器固有命令ではないとシミュレータ32cによってステップS56において判断すると、ステップS51において取り出した命令をシミュレータ32cによって実行し(ステップS57)、動作確認用オブジェクトコード32fの全ての命令を処理したか否かを判断する(ステップS54)。
制御部31は、ステップS51において取り出した命令が機器固有命令であるとシミュレータ32cによってステップS56において判断すると、ステップS51において取り出した命令を機器固有命令32g(図3参照。)としてシミュレータ32cによって記憶部32に記憶し(ステップS58)、動作確認用オブジェクトコード32fの全ての命令を処理したか否かを判断する(ステップS54)。
制御部31は、動作確認用オブジェクトコード32fの全ての命令を処理していないとステップS54において判断すると、再びステップS51の処理を実行する。一方、制御部31は、動作確認用オブジェクトコード32fの全ての命令を処理したとステップS54において判断すると、記憶部32に機器固有命令32gが記憶されているか否かを判断する(ステップS59)。
制御部31は、記憶部32に機器固有命令32gが記憶されていないとステップS59において判断すると、図5に示す処理を終了する。一方、制御部31は、記憶部32に機器固有命令32gが記憶されているとステップS59において判断すると、記憶部32に記憶されている機器固有命令32gを例えばXML形式に変換して通信部35(図3参照。)を介して複合機20(図1参照。)に送信し(ステップS60)、記憶部32に記憶されている機器固有命令32gを削除して(ステップS61)、図5に示す処理を終了する。
なお、制御部31は、ステップS60の処理をシミュレータ32cによって実行する。
続いて、ステップS60において開発用PC30から送信された機器固有命令を複合機20が受信したときの複合機20の動作について説明する。図6は、複合機20(図2参照。)の動作のフローチャートであって、開発用PC30(図3参照。)から機器固有命令を受信したときの図である。
開発用PC30から送信された機器固有命令を通信部25(図2参照。)を介して複合機20が受信すると、複合機20の制御部21(図2参照。)は、図6に示す処理を実行する。
図6に示すように、制御部21は、通信部25を介して受信した機器固有命令を機器固有命令22c(図2参照。)として記憶部22(図2参照。)に記憶した後(ステップS71)、パネル上操作部23(図2参照。)から機器固有命令22cの実行が指示されたか否かを判断する(ステップS72)。
利用者がパネル上操作部23を用いて機器固有命令22cの実行を複合機20に指示しない限り、制御部21は、パネル上操作部23から機器固有命令22cの実行が指示されていないとステップS72において判断するので、ステップS72の処理を継続し続ける。利用者がパネル上操作部23を用いて機器固有命令22cの実行を複合機20に指示すると、制御部21は、パネル上操作部23から機器固有命令22cの実行が指示されたとステップS72において判断し、記憶部22に記憶された機器固有命令22cから命令を1つ取り出し(ステップS73)、ステップS73において取り出した命令を機器固有命令処理プログラム22a(図2参照。)によって実行する(ステップS74)。すなわち、制御部21は、ステップS73において取り出した命令に対する機器制御API22bを呼出すことによって、命令を実行する。
次いで、制御部21は、記憶部22に記憶された機器固有命令22cの全てを処理したか否かを判断する(ステップS75)。
制御部21は、記憶部22に記憶された機器固有命令22cの全てを処理していないとステップS75において判断すると、再びステップS73の処理を実行する。一方、制御部21は、記憶部22に記憶された機器固有命令22cの全てを処理したとステップS75において判断すると、記憶部22に記憶されている機器固有命令22cを削除し(ステップS76)、図6に示す処理を終了する。
したがって、開発用PC30の操作部33(図3参照。)に例えば“99”が入力されるとき、図5および図6に示す処理が次のように実行される。
まず、上述した動作確認用オブジェクトコード32f(図3参照。)の1行目の「Input A」という命令は、シミュレータ32c(図3参照。)の呼出し点が呼出されないようにコンパイル時に記述されているので、開発用PC30の制御部31(図3参照。)によってシミュレータ32cが呼出されずに実行される(ステップS53)。すなわち、制御部31は、操作部33から入力されたデータ“99”を開発用PC30の記憶部32(図3参照。)のデータ領域Aに記憶する。
次いで、動作確認用オブジェクトコード32fの2行目の「Add A , 1」という命令も、シミュレータ32cの呼出し点が呼出されないようにコンパイル時に記述されているので、制御部31によってシミュレータ32cが呼出されずに実行される(ステップS53)。すなわち、制御部31は、記憶部32のデータ領域Aに記憶されたデータ“99”に1を加えて“100”とする。
次いで、動作確認用オブジェクトコード32fの3行目の「Display A」という命令は、上述したようにシミュレータ32cの呼出し点が呼出されるようにコンパイル時に記述されているので、制御部31によってシミュレータ32cが呼出される(ステップS55)。そして、「Display」という命令は、機器固有命令であるとシミュレータ32cによって判断されて(ステップS56)、シミュレータ32cによって記憶部32に記憶させられる(ステップS58)。すなわち、制御部31は、記憶部32のデータ領域Aに記憶されたデータが“100”になっているので、シミュレータ32cによって記憶部32に「Display 100」という機器固有命令を記憶する。
次いで、動作確認用オブジェクトコード32fの4行目の「Print A」という命令も、上述したようにシミュレータ32cの呼出し点が呼出されるようにコンパイル時に記述されているので、制御部31によってシミュレータ32cが呼出される(ステップS55)。そして、「Print」という命令は、機器固有命令であるとシミュレータ32cによって判断されて(ステップS56)、シミュレータ32cによって記憶部32に記憶させられる(ステップS58)。すなわち、制御部31は、記憶部32のデータ領域Aに記憶されたデータが“100”になっているので、シミュレータ32cによって記憶部32に「Print 100」という機器固有命令を記憶する。
この時点で、記憶部32には、次の2行の機器固有命令32g(図3参照。)が記憶されている。
1. Display 100
2. Print 100
そして、制御部31は、記憶部32に記憶されている機器固有命令32gをシミュレータ32cによって例えばXML形式に変換して複合機20(図1参照。)に送信する(ステップS60)。複合機20の制御部21(図2参照。)は、開発用PC30から受信した機器固有命令を機器固有命令22c(図2参照。)として記憶部22(図2参照。)に記憶する(ステップS71)。
次いで、利用者がパネル上操作部23を用いて機器固有命令22cの実行を複合機20に指示すると(ステップS72)、記憶部22に記憶されている機器固有命令22cの1行目の「Display 100」という命令は、制御部21によって機器固有命令処理プログラム22a(図2参照。)で実行される(ステップS74)。すなわち、制御部21は、データ“100”をパネル上モニタ24(図2参照。)に表示させる。
次いで、記憶部22に記憶されている機器固有命令22cの2行目の「Print 100」という命令も、制御部21によって機器固有命令処理プログラム22aで実行される(ステップS74)。すなわち、制御部21は、データ“100”をプリンタ27(図2参照。)に印刷させる。
以上に説明したように、動作確認用オブジェクトコード32fは、開発用PC30の操作部33から入力されたデータに1を加えたデータを複合機20のパネル上モニタ24に表示させて複合機20のプリンタ27に印刷させるプログラムである。開発用PC30の利用者は、複合機20のパネル上モニタ24による表示結果と、複合機20のプリンタ27による印刷結果とを確認することによって、プログラムの開発が成功したか否かを認識することができる。
なお、以上においては、「Display」という命令が機器固有命令であるとシミュレータ32cによって判断される場合について説明したが、開発用PC30にも複合機20のパネル上モニタ24と同様に表示機能を有するモニタ34が備えられているので、シミュレータ32cが「Display」という命令を機器固有命令であると判断しないように設定されていても良い。このように設定されている場合、動作確認用オブジェクトコード32fの3行目の「Display A」という命令は、機器固有命令であるとシミュレータ32cによって判断されずに(ステップS56)、シミュレータ32cによって実行される(ステップS57)。すなわち、制御部31は、記憶部32のデータ領域Aに記憶されたデータ“100”をモニタ34に表示させる。したがって、動作確認用オブジェクトコード32fは、開発用PC30の操作部33から入力されたデータに1を加えたデータを開発用PC30のモニタ34に表示させて複合機20のプリンタ27に印刷させるプログラムとなる。開発用PC30の利用者は、開発用PC30のモニタ34による表示結果と、複合機20のプリンタ27による印刷結果とを確認することによって、プログラムの開発が成功したか否かを認識することができる。
以上に説明したように、複合機20用のプログラムの動作の確認における動作には、複合機20に実際に実行させる実機動作(ステップS74)と、複合機20に実際に実行させる代わりに開発用PC30自体で実行する模擬動作(ステップS53およびステップS57)とがある。開発用PC30の制御部31は、ステップS52およびステップS56によって複合機20用のプログラムの動作の確認において動作が実機動作および模擬動作の何れであるかを判断するようになっており、本発明の動作種類判断手段を構成している。また、制御部31は、複合機20用のプログラムの動作の確認において動作が模擬動作であると判断したときに模擬動作を実行する(ステップS53およびステップS57)ようになっており、本発明の模擬動作実行手段を構成している。また、制御部31は、複合機20用のプログラムの動作の確認において動作が実機動作であると判断したときに機器固有命令32gを複合機20に送信する(ステップS60)ようになっている。
また、複合機20の記憶部22に記憶される機器固有命令22cや開発用PC30の記憶部32に記憶される機器固有命令32gは、複合機20用のプログラムの動作の確認において実機動作の指示情報である。開発用PC30の制御部31は、機器固有命令32gを複合機20に送信する(ステップS60)ようになっており、本発明の指示情報送信手段を構成している。複合機20の記憶部22は、開発用PC30の制御部31によって送信された機器固有命令32gを機器固有命令22cとして記憶する(ステップS71)ようになっており、本発明の指示情報記憶手段を構成している。複合機20の制御部21は、記憶部22に記憶された機器固有命令22cに基づいて実機動作を実行する(ステップS74)ようになっており、本発明の実機動作実行手段を構成している。複合機20のパネル上操作部23は、制御部21による実機動作の実行を開始するために利用者によって操作される(ステップS72)ようになっており、本発明の操作手段を構成している。
上述した動作確認によってプログラムの開発が成功したことが判明した場合、プログラムを複合機20にインストールするためのコンパイルが行われる。一方、動作確認によってプログラムの開発が失敗していることが判明した場合には、プログラムの開発が成功したことが判明するまで、開発用PC30でソースコード32d(図3参照。)を修正し、動作確認用のコンパイルを行い、動作確認を行うという上述した一連の処理を繰り返す。
次に、プログラムを複合機20にインストールするためのコンパイル時の動作について説明する。なお、図7は、開発用PC30(図3参照。)の動作のフローチャートであって、ソースコード32d(図3参照。)のインストール用のコンパイル時の図である。
開発用PC30の利用者が操作部33(図3参照。)を用いてソースコード32dのインストール用のコンパイルを開発用PC30に指示すると、開発用PC30の制御部31(図3参照。)は、記憶部32(図3参照。)に記憶されているインストール用コンパイラ32a(図3参照。)を起動して、図7に示す処理を実行する。
図7に示すように、制御部31は、ソースコード32dから命令を1つ取り出し(ステップS81)、ステップS81において取り出した命令をプログラミング言語から機械語に変換し(ステップS82)、ソースコード32dの全ての命令を機械語に変換したか否かを判断する(ステップS83)。
制御部31は、ソースコード32dの全ての命令を機械語に変換していないとステップS83において判断すると、再びステップS81の処理を実行する。一方、制御部31は、ソースコード32dの全ての命令を機械語に変換したとステップS83において判断すると、図7に示す処理を終了する。
したがって、上述したソースコード32dは、図7に示す処理によって、1行目の「Input A」という命令と、2行目の「Add A , 1」という命令と、3行目の「Display A」という命令と、4行目の「Print A」という命令との全てがプログラミング言語から機械語に変換される(ステップS82)。
このようにして生成されたインストール用オブジェクトコード32e(図3参照。)は、例えばネットワーク11(図1参照。)を介して複合機20(図1参照。)に送信されて複合機20にインストールされ、複合機20の記憶部22(図2参照。)にプログラム22d(図2参照。)として記憶される。
次に、複合機20にインストールされたプログラム22dが実行されるときの動作について説明する。図8は、複合機20(図2参照。)の動作のフローチャートであって、インストールされたプログラム22d(図2参照。)の実行時の図である。
複合機20の利用者がパネル上操作部23(図2参照。)を用いてプログラム22dの実行を複合機20に指示すると、複合機20の制御部21(図2参照。)は、図8に示す処理を実行する。
図8に示すように、制御部21は、プログラム22dから命令を1つ取り出し(ステップS91)、ステップS91において取り出した命令を実行し(ステップS92)、プログラム22dの全ての命令を処理したか否かを判断する(ステップS93)。
制御部21は、プログラム22dの全ての命令を処理していないとステップS93において判断すると、再びステップS91の処理を実行する。一方、制御部21は、プログラム22dの全ての命令を処理したとステップS93において判断すると、図8に示す処理を終了する。
したがって、複合機20のパネル上操作部23に例えば“99”が入力されるとき、図8に示す処理が次のように実行される。
まず、上述したプログラム22dの1行目の「Input A」という命令によって、制御部21は、パネル上操作部23から入力されたデータ“99”を記憶部22(図2参照。)のデータ領域Aに記憶する(ステップS92)。
次いで、プログラム22dの2行目の「Add A , 1」という命令によって、制御部21は、記憶部22のデータ領域Aに記憶されたデータ“99”に1を加えて“100”とする(ステップS92)。
次いで、プログラム22dの3行目の「Display A」という命令によって、制御部21は、記憶部22のデータ領域Aに記憶されたデータ“100”をパネル上モニタ24(図2参照。)に表示させる(ステップS92)。
最後に、プログラム22dの4行目の「Print A」という命令によって、制御部21は、記憶部22のデータ領域Aに記憶されたデータ“100”をプリンタ27(図2参照。)に印刷させる(ステップS92)。
すなわち、プログラム22dは、開発時の設計通り、複合機20においてパネル上操作部23から入力されたデータに1を加えたデータをパネル上モニタ24に表示させてプリンタ27に印刷させるプログラムである。
以上に説明したように、開発システム10は、複合機20用のプログラム22dの動作の確認において、プログラム22dが複合機20に実際にインストールされなくても、複合機20で実際に実行する必要がある動作を複合機20に実行させることができる。したがって、開発システム10は、複合機20用のプログラム22dの動作の確認を利用者に従来より効率良く行わせることができる。
複合機20用のプログラム22dの動作の確認において、仮に実機動作が利用者のパネル上操作部23による指示を待たずに自動的に行われるとすると、複合機20と、開発用PC30とが離れて設置されている場合には、利用者が実際に複合機20の前に駆け付けたときに既に実機動作が終了していて利用者が実機動作を確認できない可能性がある。これに対して、開発システム10は、利用者がパネル上操作部23を用いて機器固有命令22cの実行を複合機20に指示してから実機動作を開始するので、利用者が実際に複合機20の前に立って実機動作を確認できるタイミングで実機動作を行わせることができる。この利点は、例えば大規模な開発組織などのように、複合機20と、開発用PC30とが離れて設置されているほど、大きい。
また、開発システム10は、複合機20用のプログラム22dの動作の確認において、複合機20に実際に実行させる代わりに開発用PC30自体で実行することができる動作を開発用PC30に実行させることができる。したがって、開発システム10は、複合機20用のプログラム22dの動作の確認を利用者に更に効率良く行わせることができる。
なお、開発システム10は、本発明の動作確認装置としてプログラムの開発装置が採用されており、複合機20用のプログラムの開発と、その動作の確認とを同一の装置において実現することができるので、複合機20用のプログラムの動作の確認を利用者に更に効率良く行わせることができる。もちろん、開発システム10は、プログラムの開発装置とは別に動作確認装置が設けられていても良い。
また、本発明の対象装置は、本実施の形態において複合機について説明しているが、コピー機、プリンタ、ファクシミリ機などの複合機以外の画像形成装置であっても良いし、プログラムをインストールできる装置であれば画像形成装置以外の装置であっても良い。