(57)【要約】【課題】ソフトウェアの開発効率、品質およびメンテナンス性を向上させる。【解決手段】画像形成装置は、アプリケーションプログラムのプログラム部分を記憶するとともに、タグを用いる所定のデータ記述言語で作成されたデータを解析するための構文解析プログラムを記憶する記憶部と、機能データを外部から取得する取得部と、処理部と、を備え、機能データは、所定のデータ記述言語で作成されるとともに、コンパイルされずに記憶部に格納され、記憶部には、アプリケーションプログラムのプログラム部分の関数名と記憶部上のアドレスとを対応付けた変換テーブルが記憶され、処理部は、機能を実行するための処理を行うとき、機能データに定義されたアプリケーションプログラムのプログラム部分の関数名に対応するアドレスを判別し、判別したアドレスに記憶されたプログラム部分を読み出す。【選択図】図３
2016097621.tif 000002
【特許請求の範囲】
【請求項１】
画像形成装置が有する機能の実行に必要なアプリケーションプログラムのプログラム部分と、前記アプリケーションプログラムのプログラム部分の関数名と前記アプリケーションプログラムのプログラム部分の記憶部上のアドレスとを対応付けた変換テーブルと、タグを用いる所定のデータ記述言語で作成されたデータを解析するための構文解析プログラムと、
前記アプリケーションプログラムのデータ部分を示すデータである機能データを外部から取得し、前記アプリケーションプログラムのプログラム部分とは別個に格納する取得部と、
前記アプリケーションプログラムに基づき前記機能を実行するための処理を行う処理部と、を備え、
前記機能データは、前記所定のデータ記述言語で作成されるとともに、コンパイルされずに前記記憶部に格納され、
前記機能データには、対応する前記アプリケーションプログラムのプログラム部分の関数名が定義されており、
前記処理部は、前記機能を実行するための処理を行うとき、前記構文解析プログラムに基づき前記機能データを解析するとともに、前記変換テーブルを参照することによって前記機能データに定義された前記アプリケーションプログラムのプログラム部分の関数名に対応する前記記憶部上のアドレスを判別し、判別した前記記憶部上のアドレスに記憶された前記アプリケーションプログラムのプログラム部分を読み出すことを特徴とする画像形成装置。
【請求項２】
前記アプリケーションプログラムのプログラム部分は、複数の機種間で共通して使用できるプログラムであることを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記変換テーブルは、コンパイルされる前は、前記アプリケーションプログラムのプログラム部分の関数名に関数ポインタを対応付けたテーブルとなっており、コンパイルされることによって、前記アプリケーションプログラムのプログラム部分の関数名に前記アプリケーションプログラムのプログラム部分の前記記憶部上のアドレスが対応付けられたテーブルとなることを特徴とする請求項１または２に記載の画像形成装置。
【請求項４】
前記所定のデータ記述言語は、ＸＭＬであることを特徴とする請求項１〜３のいずれか１項に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機能の実行に必要なアプリケーションプログラムを格納する画像形成装置に関する。
【背景技術】
【０００２】
画像形成装置には、搭載機能（アプリケーション）に対応するアプリケーションプログラムが格納される。そして、画像形成装置の処理部（ＣＰＵ）は、機能の実行指示を受けると、実行対象の機能に対応するアプリケーションプログラムを読み出し、そのアプリケーションプログラムに基づき機能を実行するための処理を行う。
【０００３】
ところで、コピー機能やプリンター機能など複数種の機能を搭載する画像形成装置（複合機）では、複数種の機能にそれぞれ対応する複数のアプリケーションプログラムが必要となるが、各アプリケーションプログラムをそれぞれ別個に開発（作成）すると、ソフトウェアの開発効率が低下する。
【０００４】
そこで、特許文献１では、各アプリケーションプログラムのうち共通する部分を共通プログラムとして括りだし、その共通プログラムを画像形成装置に格納するようにしている。このようにすると、或る機能に対応するアプリケーションプログラムを作成した後、別の機能に対応するアプリケーションプログラムを作成するときには、共通プログラム以外の部分を作成するだけでよくなるので、ソフトウェアの開発を効率的に行える。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００２−８４３８３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
通常、画像形成装置のアプリケーションプログラムはＣ言語やＣ＋＋言語などのプログラミング言語で作成されるが、そのようなプログラミング言語は構文が複雑であるため、アプリケーションプログラムの作成には時間がかかる。したがって、特許文献１のように、アプリケーションプログラムを共通部分とそれ以外の部分とに分離しても、ソフトウェアの開発効率は大きくは向上しない。また、構文が複雑なプログラミング言語でアプリケーションプログラムを作成すると、アプリケーションプログラムに不具合が発生し易くなり、品質の低下に繋がる。さらに、メンテナンス性も悪い。
【０００７】
本発明は、上記課題を解決するためになされたものであり、ソフトウェアの開発効率、品質およびメンテナンス性を向上させることが可能な画像形成装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記目的を達成するために、本発明の画像形成装置は、画像形成装置が有する機能の実行に必要なアプリケーションプログラムのプログラム部分と、アプリケーションプログラムのプログラム部分の関数名とアプリケーションプログラムのプログラム部分の記憶部上のアドレスとを対応付けた変換テーブルと、タグを用いる所定のデータ記述言語で作成されたデータを解析するための構文解析プログラムと、アプリケーションプログラムのデータ部分を示すデータである機能データを外部から取得し、アプリケーションプログラムのプログラム部分とは別個に格納する取得部と、アプリケーションプログラムに基づき機能を実行するための処理を行う処理部と、を備える。機能データは、所定のデータ記述言語で作成されるとともに、コンパイルされずに記憶部に格納される。機能データには、対応するアプリケーションプログラムのプログラム部分の関数名が定義されている。そして、処理部は、機能を実行するための処理を行うとき、構文解析プログラムに基づき機能データを解析するとともに、変換テーブルを参照することによって機能データに定義されたアプリケーションプログラムのプログラム部分の関数名に対応する記憶部上のアドレスを判別し、判別した記憶部上のアドレスに記憶されたアプリケーションプログラムのプログラム部分を読み出す。なお、タグを用いる所定のデータ記述言語としては、たとえば、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）などがある。
【０００９】
本発明の構成では、アプリケーションプログラムのプログラム部分の関数名（テキスト）と、アプリケーションプログラムのプログラム部分の記憶部上のアドレスとが対応付けられた変換テーブルが記憶部に記憶されるので、記憶部に格納されたアプリケーションプログラムのデータ部分（機能データ）の記述言語が所定のデータ記述言語であっても、変換テーブルを参照することにより、機能データに対応するアプリケーションプログラムのプログラム部分の記憶部上のアドレスを判別することができる。すなわち、機能データに対応するアプリケーションプログラムのプログラム部分を読み出すことができる。これにより、プログラム作成者からすると、アプリケーションプログラムのデータ部分については、所定のデータ記述言語で作成した機能データをそのまま記憶部に格納するだけでよくなる（コンパイルが不要となる）ので、利便性が良い。
【００１０】
ここで、所定のデータ記述言語（ＸＭＬなど）はプログラミング言語（Ｃ言語やＣ＋＋言語など）のように複雑ではなく、所定のデータ記述言語でのアプリケーションプログラム（データ部分）の作成は簡単な規則（タグの使い方など）を覚えておくだけで行える。これにより、アプリケーションプログラムの作成にかかる時間が短縮され、ソフトウェアの開発効率が向上する。
【００１１】
また、所定のデータ記述言語は制御コード（分岐や反復など）を含まないので、アプリケーションプログラム（データ部分）に不具合が発生し難くなり、品質が向上する。さらに、所定のデータ記述言語は制御コードを含まないので、アプリケーションプログラム（データ部分）の可読性が向上する。すなわち、メンテナンス性が向上する。
【００１２】
なお、仮にアプリケーションプログラムのデータ部分にデバッグの必要が生じた場合には、機能データを修正し、その修正した機能データを記憶部に格納するだけでよく、アプリケーションプログラムのプログラム部分（分岐や反復などの制御コード）を修正する必要はない。このため、デグレードが発生し難くなる。また、修正した機能データのコンパイルは不要であるので、作業工数が短縮される。
【発明の効果】
【００１３】
以上のように、本発明によれば、ソフトウェアの開発効率、品質およびメンテナンス性を向上させることができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の一実施形態による複合機の概略図
【図２】本発明の一実施形態による複合機のハードウェア構成の一例を示した図
【図３】本発明の一実施形態による複合機のソフトウェア構成の一例を示した図
【図４】本発明の一実施形態による複合機に格納される機能データ（ＸＭＬデータ）の一例を示した図
【図５】本発明の一実施形態による複合機に格納される機能データの一例を示した図（図４の続き）
【図６】本実施形態の一実施形態による複合機にて機能を実行するときに参照される変換テーブルの一例を示した図
【図７】本発明の一実施形態による複合機においてレポート機能が実行されるときの処理の流れを説明するためのフローチャート
【図８】本発明の一実施形態による複合機でのレポート機能の実行により印刷出力されるレポートの一例を示した図
【図９】本発明の一実施形態による複合機に格納される機能データの修正例を示した図
【図１０】本発明の一実施形態による複合機でのレポート機能の実行により印刷出力されるレポートの一例を示した図（機能データ修正前のレポートと機能データ修正後のレポート）
【発明を実施するための形態】
【００１５】
以下、本発明の一実施形態について、複合機を例にとって説明する。
【００１６】
［複合機の全体構成］
図１に示すように、複合機１００（「画像形成装置」に相当）は、画像読取部１０１、印刷部１０２および操作パネル１０３を備える。
【００１７】
画像読取部１０１は、原稿を読み取り、原稿の画像データを生成する。たとえば、画像読取部１０１の読み取りによって得られた原稿の画像データは、後述する主制御部１１０により各種処理が施される。そして、その画像データは、印刷画像の基データや、ファクシミリデータの基データとなる。
【００１８】
印刷部１０２は、給紙部２１、用紙搬送部２２、画像形成部２３および定着部２４によって構成される。給紙部２１は、用紙カセットＰＣに収容された用紙を用紙搬送路ＰＰに供給する。用紙搬送部２２は、用紙搬送路ＰＰに沿って用紙を搬送する。画像形成部２３は、感光体ドラム１、帯電装置２、露光装置３、現像装置４、転写ローラー５およびクリーニング装置６を含む。そして、画像形成部２３は、画像データに基づきトナー像を形成し、そのトナー像を用紙に転写する。定着部２４は、用紙に転写されたトナー像を加熱および加圧して定着させる。
【００１９】
操作パネル１０３は、タッチパネル付きの液晶表示パネル３１を含む。液晶表示パネル３１は、各種設定などを受け付けるためのソフトキーやメッセージを表示する。また、操作パネル１０３には、スタートキー３２やテンキー３３などのハードキーが設けられる。たとえば、操作パネル１０３は、複合機１００が有する機能の実行指示（操作）を受け付ける。
【００２０】
なお、複合機１００は、コピー機能やプリンター機能など標準的な機能以外に、たとえば、装置状態などを示すレポートＲＰ（図８参照）を印刷出力する機能、メンテナンスや調整を行うための機能、および、オプション装置やオプション言語を使用する機能などが備えられる。
【００２１】
［複合機のハードウェア構成］
図２に示すように、複合機１００は、主制御部１１０を備える。主制御部１１０は、ＣＰＵ１１１、画像処理部１１２および記憶部１１３を含む。画像処理部１１２は、画像処理専用のＡＳＩＣなどからなり、画像データに対して画像処理（拡大／縮小、濃度変換およびデータ形式変換など）を施す。記憶部１１３は、ＲＯＭ１１３ａおよびＲＡＭ１１３ｂなどからなる。この記憶部１１３（ＲＯＭ１１３ａ）には、制御用のプログラムやデータが格納される。なお、以下の説明では、複合機１００が有する機能の実行に必要な制御用のプログラムをアプリケーションプログラム１００Ｐと称する場合がある。これは、図３のアプリケーション層が外部装置２００または外部メモリー３００により、複合機１００の記憶部１１３にダウンロードされたものである。
【００２２】
そして、主制御部１１０は、記憶部１１３に記憶されたプログラムやデータに基づき、複合機１００の動作を制御する。具体的には、主制御部１１０は、画像読取部１０１に接続され、画像読取部１０１の読取動作を制御する。また、主制御部１１０は、印刷部１０２に接続され、印刷部１０２の印刷動作を制御する。さらに、主制御部１１０は、操作パネル１０３に接続され、操作パネル１０３の表示動作を制御したり、操作パネル１０３に対して行われた操作を検知したりする。
【００２３】
また、複合機１００は、通信部１２０および接続部１３０を備える。通信部１２０および接続部１３０は、主制御部１１０に接続される。
【００２４】
通信部１２０は、外部装置２００（パーソナルコンピューターやサーバーなど）と通信可能に接続される。そして、通信部１２０は、主制御部１１０から指示を受け、外部装置２００との間でファクシミリデータなど各種データの送受信を行う。
【００２５】
接続部１３０は、ＵＳＢメモリーなどの外部メモリー３００を接続するためのインターフェースである。たとえば、外部メモリー３００には、画像データなど各種データが格納される。そして、主制御部１１０は、接続部１３０への外部メモリー３００の接続を認識すると、その外部メモリー３００に格納されたデータを取得するための処理を行う。
【００２６】
［複合機のソフトウェア構成］
図３に示すように、複合機１００のソフトウェア構成は、プラットフォーム層の上位にアプリケーション層が配置されたものとなっている。アプリケーション層のプログラムやデータは外部装置２００または外部メモリー３００から読み出され、ＲＯＭ１１３ａに格納される。
【００２７】
プラットフォーム層には、ＤＬＬ（ダイナミックリンクライブラリー）ファイル５１０が備えられる。
【００２８】
また、プラットフォーム層には、オペレーティングシステム（ＯＳ）５２０などの基本プログラムも備えられる。
【００２９】
アプリケーション層には、ライブラリー５３０や機能データ５４０などが備えられる。ライブラリー５３０は、複数種の機能にそれぞれ対応する各アプリケーションプログラム１００Ｐのプログラム部分のうち機能特有の処理を行うための部分を一つのファイルにまとめたものである。たとえば、レポート機能の実行時には、ライブラリー５３０から、レポート機能の実行に必要なアプリケーションプログラム１００Ｐのプログラム部分が読み出される。なお、ライブラリー５３０に含まれるアプリケーションプログラム１００Ｐのプログラム部分は、複数の機種間で共通して使用できるものである。
【００３０】
機能データ５４０は、複数種の機能にそれぞれ対応する各アプリケーションプログラム１００Ｐのデータ部分を示すデータである。この機能データ５４０には、対応する機能特有のパラメータなどが定義される。レポート機能を例にとると、印字内容、印字位置、印字フォント、印字サイズおよび印字色などが機能特有のパラメータに相当する。
【００３１】
ここで、アプリケーションプログラム１００Ｐのプログラム部分は、Ｃ言語やＣ＋＋言語などのプログラミング言語で作成されたものである。一方で、機能データ５４０は、タグを用いる所定のデータ記述言語で作成されたものである。たとえば、機能データ５４０は、ＸＭＬ（Ｅｘｔｅｎｓｉｂｌｅ  Ｍａｒｋｕｐ  Ｌａｎｇｕａｇｅ）形式で作成されたＸＭＬデータである。そして、機能データ５４０は、コンパイルされず、ＸＭＬデータのまま記憶部１１３（ＲＯＭ１１３ａ）に格納される。
【００３２】
以下に、図４および図５を参照し、機能データ５４０（ＸＭＬデータ）について、レポート機能（１番目のブロックＡ）を例にとって説明する。
【００３３】
＜Ｆｕｎｃｔｉｏｎ＞ｆｕｎｃｔｉｏｎ＿ａ＜／Ｆｕｎｃｔｉｏｎ＞
この記述は、「関数名（プログラム名）」が「ｆｕｎｃｔｉｏｎ＿ａ」であることを示している。「ｆｕｎｃｔｉｏｎ＿ａ」に対応するプログラム（関数）は、後述の「メッセージ」の内容を印字するためのアプリケーションプログラム１００Ｐのプログラム部分である。すなわち、機能データ５４０（ＸＭＬデータ）には、対応するアプリケーションプログラム１００Ｐのプログラム部分の関数名が定義されている。
【００３４】
＜Ｍｅｓｓａｇｅ＞ジョブエラーレポート＜／Ｍｅｓｓａｇｅ＞
この記述は、「メッセージ」として「ジョブエラーレポート」という文字列を印字することを示している。「ジョブエラーレポート」という文字列は、「ｆｕｎｃｔｉｏｎ＿ａ」に対応するアプリケーションプログラム１００Ｐによって印字される。
【００３５】
＜Ｐｏｓｉｔｉｏｎ＞０，０＜／Ｐｏｓｉｔｉｏｎ＞
この記述は、「メッセージ」としての文字列を（Ｘ座標，Ｙ座標）＝（０，０）の位置で印字することを示している。
【００３６】
＜Ｖａｒｉａｂｌｅ＞＜／Ｖａｒｉａｂｌｅ＞
この記述は、参照する変数が無いことを示している。なお、参照する変数が有る場合には、その変数が記述される。
【００３７】
＜Ｆｏｎｔ＞ＭＳ  Ｐゴシック＜／Ｆｏｎｔ＞
この記述は、「メッセージ」としての文字列の印字フォントをＭＳＰゴシックにするということを示している。
【００３８】
＜ＦｏｎｔＳｉｚｅ＞１６＜／ＦｏｎｔＳｉｚｅ＞
この記述は、「メッセージ」としての文字列の印字サイズを１６ポイントにするということを示している。
【００３９】
＜ＦｏｎｔＣｏｌｏｒ＞Ｂｌｕｅ＜／ＦｏｎｔＣｏｌｏｒ＞
この記述は、「メッセージ」としての文字列の印字色を青色にするということを示している。
【００４０】
＜ＥｘｔＦｕｎｃｔｉｏｎ＞＜／ＥｘｔＦｕｎｃｔｉｏｎ＞
この記述は、外部関数を使用しないことを示している。使用する外部関数が有る場合には、その外部関数名が記述される。
【００４１】
なお、２番のブロックＢから７番目のブロックＧについては、詳細な内容は１番目のブロックＡと異なるが、タグの定義の仕方など基本的な内容は１番目のブロックＡと同様である。
【００４２】
図３に戻って、アプリケーション層には、パーサープログラムなどと称される構文解析プログラム５５０が備えられる。構文解析プログラム５５０は、所定のデータ記述言語で作成された機能データ（ＸＭＬデータ）を解析し、単なるテキストをアプリケーションプログラム１００Ｐで扱えるようなデータ構造の集合体に変換するためのプログラムである。このような構文解析プログラム５５０を備えることにより、機能データがＸＭＬデータであっても、その機能データで定義された内容（パラメータなど）を認識することができる。
【００４３】
また、アプリケーション層には、変換テーブル５６０が備えられる。この変換テーブル５６０では、複数種の機能にそれぞれ対応する各アプリケーションプログラム１００Ｐについて、アプリケーションプログラム１００Ｐのプログラム部分の関数名（プログラム名）を示すテキストデータ（文字列）と、そのアプリケーションプログラム１００Ｐのプログラム部分の記憶部１１３上のアドレスとが対応付けられている。なお、変換テーブル５６０は、ライブラリー５３０とセットになっており、コンパイルされている。
【００４４】
ここで、図６に示すように、コンパイルされる前の変換テーブル５６０は、アプリケーションプログラム１００Ｐのプログラム部分の関数名（テキスト）に関数ポインタを対応付けたテーブルとなっている。たとえば、関数名「ｆｕｎｃｔｉｏｎ＿ａ」に対応する関数ポインタは「（*ｆｕｎｃｔｉｏｎ＿ａ）（）」である。
【００４５】
そして、この変換テーブル５６０は、コンパイルされることによって、アプリケーションプログラム１００Ｐのプログラム部分の関数名にアプリケーションプログラム１００Ｐのプログラム部分の記憶部１１３上のアドレス（番地）が対応付けられたテーブルとなる。たとえば、図６に示す例では、変換テーブル５６０がコンパイルされると、関数名「ｆｕｎｃｔｉｏｎ＿ａ」にアドレス「１２００番地」が対応付けられる。
【００４６】
なお、アプリケーションプログラム１００Ｐのプログラム部分を書き換えた場合には、アプリケーションプログラム１００Ｐのプログラム部分の記憶部１１３上のアドレスが変更されることがある。この場合には、変換テーブル５６０をコンパイルし直すことにより、アプリケーションプログラム１００Ｐのプログラム部分の関数名に変更後のアドレスが対応付けられる。
【００４７】
［機能を実行するための処理］
アプリケーションプログラム１００Ｐのプログラム部分（ライブラリー５３０、変換テーブル５６０、構文解析プログラム５５０）と機能データ５４０（ＸＭＬデータ）は、別個に記憶部１１３に格納される。すなわち、機能データ５４０は、対応するアプリケーションプログラム１００Ｐのプログラム部分と共にコンパイルされるわけではない。なお、アプリケーションプログラム１００Ｐのプログラム部分（ライブラリー５３０、変換テーブル５６０、構文解析プログラム５５０）と機能データ５４０は、装置出荷前に記憶部１１３に格納される場合もあれば、装置出荷後にオプションとして記憶部１１３に格納される場合もある。
【００４８】
たとえば、機能データ５４０（ＸＭＬデータ）は、外部装置２００からダウンロードされる。あるいは、機能データ５４０は、外部メモリー３００からダウンロードされる。機能データ５４０が外部装置２００からダウンロードされる場合では、機能データ５４０は通信部１２０により取得され、記憶部１１３に格納される。この場合には、通信部１２０が「取得部」に相当する。また、機能データ５４０が外部メモリー３００からダウンロードされる場合では、機能データ５４０は接続部１３０により取得され、記憶部１１３に格納される。この場合には、接続部１３０が「取得部」に相当する。
【００４９】
そして、このように機能データがＸＭＬデータのまま記憶部１１３に格納されることにより、対応する機能の実行が可能となる。すなわち、コンパイルは不要である。以下に、図７のフローチャートを参照し、レポート機能を例にとって、機能を実行するときの処理の流れを説明する。
【００５０】
まず、図７のフローチャートのスタート時点では、レポート機能の実行に必要なアプリケーションプログラム１００Ｐのプログラム部分（ライブラリー５３０、変換テーブル５６０、構文解析プログラム５５０）と、実行対象の機能に対応する機能データ５４０（ＸＭＬデータ）が外部装置２００または外部メモリー３００からダウンロードされ、記憶部１１３に格納されているとする。この状態において、レポート機能の実行指示を受けたとき、図７のフローチャートがスタートする。
【００５１】
ステップＳ１において、ＣＰＵ１１１は、構文解析プログラム５５０に基づき機能データ５４０を解析し、タグ間のテキストを抽出する。たとえば、図４に示すブロックＡを例にとると、「ｆｕｎｃｔｉｏｎ＿ａ」、「ジョブエラーレポート」「０，０」、「ＭＳ  Ｐゴシック」、「１６」および「Ｂｌｕｅ」の各テキストが抽出される。そして、アプリケーションプログラム１００Ｐで扱えるようなデータ構造の集合体に変換される（ＲＡＭ１１３ｂに読み出される）。
【００５２】
続いて、ステップＳ２において、ＣＰＵ１１１は、変換テーブル５６０を参照し、抽出した関数名（ここでは、「ｆｕｎｃｔｉｏｎ＿ａ」となる）に対応付けられた記憶部１１３上のアドレスを判別する。すなわち、ＣＰＵ１１１は、実行対象のアプリケーションプログラム１００Ｐの記憶部１１３上のアドレスを判別する。
【００５３】
その後、ステップＳ３において、ＣＰＵ１１１は、判別したアドレスに記憶されたアプリケーションプログラム１００Ｐのプログラム部分を読み出す。そして、ＣＰＵ１１１は、構文解析プログラム５５０による解析結果（機能データ５４０で定義されたパラメータなど）をアプリケーションプログラム１００Ｐに渡し、そのアプリケーションプログラム１００Ｐに基づきレポート機能を実行するための処理を行う。すなわち、レポート機能を実行するための処理は、機能データ５４０で定義された内容を反映したものとなる。これにより、図８に示すようなレポートＲＰが印刷出力される。
【００５４】
ここで、印刷出力されたレポートＲＰの印刷内容がユーザー（装置開発者や装置出荷先ユーザー）の意図とは異なっていることがある。この場合には、レポートＲＰの印刷内容が正しいもとのなるようデバッグする必要がある。
【００５５】
たとえば、「ジョブエラーレポート」というメッセージ内容が誤りで、正しくは「エラーレポート」であったとする。この場合のデバッグでは、図９に示すように、機能データ５４０（ＸＭＬデータ）の＜Ｍｅｓｓａｇｅ＞〜＜／Ｍｅｓｓａｇｅ＞というタグ間に記述された「ジョブエラーレポート」を「エラーレポート」に変更する。そして、変更後の機能データ５４０をダウンロードし、変更前の機能データ５４０を変更後の機能データ５４０に書き換える。これにより、図１０に示すように、レポートＲＰのメッセージ内容が「ジョブエラーレポート」から「エラーレポート」に変更される。
【００５６】
なお、デバッグを行うときには、アプリケーションプログラム１００Ｐのプログラム部分に修正を加える必要はない。すなわち、機能データ５４０（ＸＭＬデータ）の書き換えだけでよく、結果として、コンパイルも不要となる。
【００５７】
本実施形態の複合機１００（画像形成装置）は、機能（レポート機能など）の実行に必要なアプリケーションプログラム１００Ｐのプログラム部分（ライブラリー５３０、変換テーブル５６０）と、ＸＭＬ（タグを用いる所定のデータ記述言語）で作成されたデータを解析するための構文解析プログラム５５０と、アプリケーションプログラム１００Ｐのデータ部分を示すデータである機能データ５４０を外部から取得し、記憶部１１３に別個に格納する通信部１２０（取得部）または接続部１３０（取得部）と、アプリケーションプログラム１００Ｐに基づき機能を実行するための処理を行うＣＰＵ１１１（処理部）と、を備える。機能データ５４０は、ＸＭＬで作成されるとともに、コンパイルされずに記憶部１１３に格納される。機能データ５４０には、対応するアプリケーションプログラム１００Ｐのプログラム部分の関数名が定義されている。記憶部１１３には、アプリケーションプログラム１００Ｐのプログラム部分の関数名と、アプリケーションプログラム１００Ｐのプログラム部分の記憶部１１３上のアドレスとを対応付けた変換テーブル５６０が記憶される。そして、ＣＰＵ１１１は、機能を実行するための処理を行うときに、構文解析プログラム５５０に基づき機能データ５４０を解析するとともに、変換テーブル５６０を参照することによって機能データ５４０に定義されたアプリケーションプログラム１００Ｐのプログラム部分の関数名に対応する記憶部１１３上のアドレスを判別し、判別した記憶部１１３上のアドレスに記憶されたアプリケーションプログラム１００Ｐのプログラム部分を読み出す。
【００５８】
本実施形態の構成では、アプリケーションプログラム１００Ｐのプログラム部分の関数名（テキスト）と、アプリケーションプログラム１００Ｐのプログラム部分の記憶部１１３上のアドレスとが対応付けられた変換テーブル５６０が記憶部１１３に記憶されるので、記憶部１１３に格納されたアプリケーションプログラム１００Ｐのデータ部分（機能データ５４０）の記述言語がＸＭＬであっても、変換テーブル５６０を参照することにより、機能データ５４０に対応するアプリケーションプログラム１００Ｐのプログラム部分の記憶部１１３上のアドレスを判別することができる。すなわち、機能データ５４０に対応するアプリケーションプログラム１００Ｐのプログラム部分を読み出すことができる。これにより、プログラム作成者からすると、アプリケーションプログラム１００Ｐのデータ部分については、ＸＭＬで作成した機能データ５４０をそのまま記憶部１１３に格納するだけでよくなる（コンパイルが不要となる）ので、利便性が良い。
【００５９】
ここで、ＸＭＬはＣ言語やＣ＋＋言語などのように複雑ではなく、ＸＭＬでのアプリケーションプログラム１００Ｐ（データ部分）の作成は簡単な規則（タグの使い方など）を覚えておくだけで行える。これにより、アプリケーションプログラム１００Ｐの作成にかかる時間が短縮され、ソフトウェアの開発効率が向上する。
【００６０】
また、ＸＭＬは制御コード（分岐や反復など）を含まないので、アプリケーションプログラム１００Ｐ（データ部分）に不具合が発生し難くなり、品質が向上する。さらに、ＸＭＬは制御コードを含まないので、アプリケーションプログラム１００Ｐ（データ部分）の可読性が向上する。すなわち、メンテナンス性が向上する。
【００６１】
なお、仮にアプリケーションプログラム１００Ｐのデータ部分にデバッグの必要が生じた場合には、機能データ５４０（ＸＭＬデータ）を修正し、その修正した機能データ５４０を記憶部１１３に格納するだけでよく、アプリケーションプログラム１００Ｐのプログラム部分（分岐や反復などの制御コード）を修正する必要はない。このため、デグレードが発生し難くなる。また、修正した機能データ５４０のコンパイルは不要であるので、作業工数が短縮される。
【００６２】
また、本実施形態では、上記のように、アプリケーションプログラム１００Ｐのプログラム部分は、複数の機種間で共通して使用できるプログラムである。このように構成すれば、或る複合機１００のアプリケーションプログラム１０００Ｐを作成した後、機種が異なる別の複合機１００のアプリケーションプログラム１００Ｐを作成する場合、アプリケーションプログラム１００Ｐのプログラム部分については、既に作成されたアプリケーションプログラム１００Ｐのプログラム部分を流用することができる。すなわち、アプリケーションプログラム１００Ｐのデータ部分だけを作成すればよい。これにより、ソフトウェアの開発効率がより向上する。
【００６３】
今回開示された実施形態は、すべての点で例示であって、制限的なものではないと考えられるべきである。本発明の範囲は、上記実施形態の説明ではなく特許請求の範囲によって示され、さらに、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれる
【００６４】
たとえば、制御コード（ｉｆ文などの分岐処理やｆｏｒ文などのループ処理）を構文解析プログラムで解釈できるようにしてもよい。これにより、たとえば、「オプション機能が搭載されているときには所定テキストを印刷し、オプション機能が搭載されていないときには所定テキストを印刷しない」といった処理を機能データの中で定義することができるようになる。
【符号の説明】
【００６５】
１００  複合機（画像形成装置）
１００Ｐ  アプリケーションプログラム
１１１  ＣＰＵ（処理部）
１１３  記憶部
１２０  通信部（取得部）
１３０  接続部（取得部）
５４０  機能データ
５５０  構文解析プログラム
５６０  変換テーブル
【図１】
2016097621.tif 000003
【図２】
2016097621.tif 000004
【図３】
2016097621.tif 000005
【図４】
2016097621.tif 000006
【図５】
2016097621.tif 000007
【図６】
2016097621.tif 000008
【図７】
2016097621.tif 000009
【図８】
2016097621.tif 000010
【図９】
2016097621.tif 000011
【図１０】
2016097621.tif 000012