(57)【要約】【課題】  画像形成装置の本体に電気的に着脱可能なデバイスの種類別に設けられた適切なダイナミックリンクライブラリーを容易に生成することができる画像形成装置用ＤＬＬ生成方法を提供する。【解決手段】  画像形成装置用ＤＬＬ生成方法は、画像形成装置の機能が記載された文書である機能仕様書に、画像形成装置の本体に電気的に着脱可能なデバイスの種類別に設けられたダイナミックリンクライブラリーであるデバイス別ＤＬＬに対応する機能が含まれているか否かを、機能仕様書中の所定のキーワードに基づいてコンピューターが判断し（Ｓ１３５）、対応する機能が機能仕様書に含まれているとコンピューターが判断したデバイス別ＤＬＬのソースファイルをコンピューターがコンパイル対象ファイルとしてコンフィグスイッチを生成し（Ｓ１３６）、コンフィグスイッチによって指定されているコンパイル対象ファイルをコンパイルしてデバイス別ＤＬＬを生成する。【選択図】  図２０
2014048753.tif 000002
【特許請求の範囲】
【請求項１】
画像形成装置の本体に電気的に着脱可能なデバイスの種類別に設けられたダイナミックリンクライブラリーであるデバイス別ＤＬＬと、前記デバイス別ＤＬＬがダイナミックリンクされる実行ファイルとを含んでいる前記画像形成装置用のプログラムの前記デバイス別ＤＬＬを生成する画像形成装置用ＤＬＬ生成方法であって、
複数の前記デバイス別ＤＬＬのソースファイルのうちコンパイルの対象であるコンパイル対象ファイルを指定するファイルであるコンフィグスイッチを生成するスイッチ生成ステップと、前記スイッチ生成ステップによって生成された前記コンフィグスイッチによって指定されている前記コンパイル対象ファイルをコンパイルして前記デバイス別ＤＬＬを生成するコンパイルステップとを備えており、
前記スイッチ生成ステップは、前記画像形成装置の機能が記載された文書である機能仕様書に前記デバイス別ＤＬＬに対応する機能が含まれているか否かを前記機能仕様書中の所定のキーワードに基づいてコンピューターが判断し、対応する機能が前記機能仕様書に含まれていると前記コンピューターが判断した前記デバイス別ＤＬＬのソースファイルを前記コンピューターが前記コンパイル対象ファイルとして前記コンフィグスイッチを生成するステップであることを特徴とする画像形成装置用ＤＬＬ生成方法。
【請求項２】
前記機能仕様書は、機能毎に区分された機能別ブロックを備えており、
前記スイッチ生成ステップは、前記デバイス別ＤＬＬに対応する機能が前記機能仕様書に含まれているか否かを前記機能別ブロック毎に判断することを特徴とする請求項１に記載の画像形成装置用ＤＬＬ生成方法。
【請求項３】
前記スイッチ生成ステップは、前記キーワードが前記機能仕様書に２以上の所定の数以上含まれている場合に、前記デバイス別ＤＬＬに対応する機能が前記機能仕様書に含まれていると判断することを特徴とする請求項１または請求項２に記載の画像形成装置用ＤＬＬ生成方法。
【請求項４】
請求項１から請求項３までの何れかに記載の画像形成装置用ＤＬＬ生成方法の前記スイッチ生成ステップをコンピューターに実行させることを特徴とするコンフィグスイッチ生成プログラム。
【請求項５】
請求項４に記載のコンフィグスイッチ生成プログラムによって処理される前記機能仕様書の電子データである機能仕様書ファイルであって、
前記コンフィグスイッチ生成プログラムをマクロとして含んでいることを特徴とする機能仕様書ファイル。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置の本体に電気的に着脱可能なデバイスの種類別に設けられたダイナミックリンクライブラリーを生成する画像形成装置用ＤＬＬ生成方法に関する。
【背景技術】
【０００２】
従来、画像形成装置としては、印刷機能専用のプリンター専用機や、印刷機能だけでなく、複写機能、ＦＡＸ機能などの印刷機能以外の機能も備えている複合機などが知られている（例えば、特許文献１（第１図、第８図）参照。）。そして、例えば、プリンター専用機と、複合機とは、印刷機能を発揮する印刷デバイスとして同一の型式の印刷デバイスを備えていることがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−２６８２５０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、従来のプリンター専用機は、たとえ複合機と同一の型式の印刷デバイスを備えている場合であっても、プリンター専用機自身を制御する実行ファイルが複合機を制御する実行ファイルとは異なるので、読取デバイスやＦＡＸデバイスなどの新たなデバイスが単に電気的に接続されただけでは、新たに接続されたデバイスを制御するプログラムが存在しないので、複合機として動作することができない。そのため、従来の画像形成装置は、デバイスの着脱によって機能がカスタマイズされる場合、画像形成装置自身を制御する実行ファイルが型式毎に製造されなければならない。
【０００５】
そこで、本願の発明者は、デバイスが電気的に着脱可能な本体と、本体に設けられてデバイスを制御するコンピューターと、コンピューターによって実行されるプログラムを記憶しているプログラム記憶部とを備えている画像形成装置であって、プログラム記憶部は、本体に電気的に着脱可能なデバイスの種類別に設けられたダイナミックリンクライブラリーであるデバイス別ＤＬＬと、デバイス別ＤＬＬがダイナミックリンクされる実行ファイルとをプログラムとして備えており、プログラム記憶部は、デバイス別ＤＬＬが書き換え可能である画像形成装置を発明した。この画像形成装置は、デバイスが本体に対して着脱される場合、プログラム記憶部上のデバイス別ＤＬＬが書き換えられれば良く、実行ファイルが再ビルドされる必要がないので、デバイスの着脱によって従来より容易に機能がカスタマイズされることができる。
【０００６】
本願の発明者が発明した上述の画像形成装置は、デバイスの着脱によって機能がカスタマイズされる場合にデバイス別ＤＬＬが書き換えられる必要がある。ここで、デバイスの着脱によって画像形成装置の機能をカスタマイズする者は、適切なデバイス別ＤＬＬを準備する必要がある。
【０００７】
そこで、本発明は、画像形成装置の本体に電気的に着脱可能なデバイスの種類別に設けられた適切なダイナミックリンクライブラリーを容易に生成することができる画像形成装置用ＤＬＬ生成方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の画像形成装置用ＤＬＬ生成方法は、画像形成装置の本体に電気的に着脱可能なデバイスの種類別に設けられたダイナミックリンクライブラリーであるデバイス別ＤＬＬと、前記デバイス別ＤＬＬがダイナミックリンクされる実行ファイルとを含んでいる前記画像形成装置用のプログラムの前記デバイス別ＤＬＬを生成する画像形成装置用ＤＬＬ生成方法であって、複数の前記デバイス別ＤＬＬのソースファイルのうちコンパイルの対象であるコンパイル対象ファイルを指定するファイルであるコンフィグスイッチを生成するスイッチ生成ステップと、前記スイッチ生成ステップによって生成された前記コンフィグスイッチによって指定されている前記コンパイル対象ファイルをコンパイルして前記デバイス別ＤＬＬを生成するコンパイルステップとを備えており、前記スイッチ生成ステップは、前記画像形成装置の機能が記載された文書である機能仕様書に前記デバイス別ＤＬＬに対応する機能が含まれているか否かを前記機能仕様書中の所定のキーワードに基づいてコンピューターが判断し、対応する機能が前記機能仕様書に含まれていると前記コンピューターが判断した前記デバイス別ＤＬＬのソースファイルを前記コンピューターが前記コンパイル対象ファイルとして前記コンフィグスイッチを生成するステップであることを特徴とする。
【０００９】
この構成により、本発明の画像形成装置用ＤＬＬ生成方法は、画像形成装置の機能仕様書に記載されている機能に対応するデバイス別ＤＬＬのソースファイルをコンピューターがコンパイルの対象とするので、適切なデバイス別ＤＬＬを容易に生成することができる。
【００１０】
また、本発明の画像形成装置用ＤＬＬ生成方法において、前記機能仕様書は、機能毎に区分された機能別ブロックを備えており、前記スイッチ生成ステップは、前記デバイス別ＤＬＬに対応する機能が前記機能仕様書に含まれているか否かを前記機能別ブロック毎に判断しても良い。
【００１１】
この構成により、本発明の画像形成装置用ＤＬＬ生成方法は、デバイス別ＤＬＬに対応する機能が機能仕様書に含まれているか否かを機能仕様書の機能別ブロック毎に判断するので、デバイス別ＤＬＬに対応する機能が機能仕様書に含まれているか否かを機能別ブロック毎ではなく機能仕様書全体に対して判断する構成と比較して、機能仕様書の内容に沿っていない不適切なダイナミックリンクライブラリーを生成する可能性を低減することができる。
【００１２】
また、本発明の画像形成装置用ＤＬＬ生成方法において、前記スイッチ生成ステップは、前記キーワードが前記機能仕様書に２以上の所定の数以上含まれている場合に、前記デバイス別ＤＬＬに対応する機能が前記機能仕様書に含まれていると判断しても良い。
【００１３】
この構成により、本発明の画像形成装置用ＤＬＬ生成方法は、機能仕様書に所定のキーワードが２以上の所定の数以上含まれている場合にこのキーワードに対応するデバイス別ＤＬＬのソースファイルをコンピューターがコンパイルの対象とするので、機能仕様書に所定のキーワードが１つでも含まれている場合にこのキーワードに対応するデバイス別ＤＬＬのソースファイルをコンピューターがコンパイルの対象とする構成と比較して、機能仕様書の内容に沿っていない不適切なダイナミックリンクライブラリーを生成する可能性を低減することができる。
【００１４】
本発明のコンフィグスイッチ生成プログラムは、上述の画像形成装置用ＤＬＬ生成方法の前記スイッチ生成ステップをコンピューターに実行させることを特徴とする。
【００１５】
この構成により、本発明のコンフィグスイッチ生成プログラムを実行するコンピューターは、画像形成装置の機能仕様書に記載されている機能に対応するデバイス別ＤＬＬのソースファイルをコンパイルの対象とするので、適切なデバイス別ＤＬＬを容易に生成することができる。
【００１６】
本発明の機能仕様書ファイルは、上述のコンフィグスイッチ生成プログラムによって処理される前記機能仕様書の電子データである機能仕様書ファイルであって、前記コンフィグスイッチ生成プログラムをマクロとして含んでいることを特徴とする。
【００１７】
この構成により、本発明の機能仕様書ファイルは、機能仕様書ファイルが機能仕様書とともに、この機能仕様書を処理するコンフィグスイッチ生成プログラムをマクロとして含んでいるので、デバイス別ＤＬＬをコンピューターに容易に生成させることができる。
【発明の効果】
【００１８】
本発明の画像形成装置用ＤＬＬ生成方法は、画像形成装置の本体に電気的に着脱可能なデバイスの種類別に設けられた適切なダイナミックリンクライブラリーを容易に生成することができる。
【図面の簡単な説明】
【００１９】
【図１】本発明の第１の実施の形態に係る画像形成装置の正面図である。
【図２】図１に示す画像形成装置の構成を示すブロック図である。
【図３】スキャナーを備えていない場合の図１に示す画像形成装置の正面図である。
【図４】スキャナーおよびＦＡＸ通信装置を備えていない場合の図１に示す画像形成装置の構成を示すブロック図である。
【図５】図４に示す画像形成装置のプログラムのクラス図である。
【図６】図４に示す実行ファイルの作成手順を示す図である。
【図７】図４に示すデバイス用ＤＬＬおよびプリンター用ＤＬＬの作成手順を示す図である。
【図８】スキャナーを備えていてＦＡＸ通信装置を備えていない場合の図１に示す画像形成装置の構成を示すブロック図である。
【図９】図８に示す画像形成装置のプログラムのクラス図である。
【図１０】図８に示すデバイス用ＤＬＬ、プリンター用ＤＬＬおよびスキャナー用ＤＬＬの作成手順を示す図である。
【図１１】ＦＡＸ通信装置を備えていてスキャナーを備えていない場合の図１に示す画像形成装置の構成を示すブロック図である。
【図１２】図１１に示す画像形成装置のプログラムのクラス図である。
【図１３】図１１に示すデバイス用ＤＬＬ、プリンター用ＤＬＬおよびＦＡＸ通信装置用ＤＬＬの作成手順を示す図である。
【図１４】図２に示す画像形成装置のプログラムのクラス図である。
【図１５】図２に示すデバイス用ＤＬＬ、プリンター用ＤＬＬ、スキャナー用ＤＬＬおよびＦＡＸ通信装置用ＤＬＬの作成手順を示す図である。
【図１６】図２に示すデバイス用ＤＬＬ、プリンター用ＤＬＬ、スキャナー用ＤＬＬおよびＦＡＸ通信装置用ＤＬＬを生成するコンピューターのブロック図である。
【図１７】図１６に示すコンフィグスイッチの一例を示す図である。
【図１８】図１６に示す機能仕様書ファイルの一例を示す図である。
【図１９】図１６に示すキーワードファイルの一例を示す図である。
【図２０】コンフィグスイッチを生成する場合の図１６に示すコンピューターの動作のフローチャートである。
【図２１】デバイス用ＤＬＬ、プリンター用ＤＬＬ、スキャナー用ＤＬＬまたはＦＡＸ通信装置用ＤＬＬを生成する場合の図１６に示すコンピューターの動作のフローチャートである。
【図２２】本発明の第２の実施の形態に係る画像形成装置の構成を示すブロック図である。
【発明を実施するための形態】
【００２０】
以下、本発明の実施の形態について、図面を用いて説明する。
【００２１】
（第１の実施の形態）
まず、本実施の形態に係る画像形成装置の構成について説明する。
【００２２】
図１は、本実施の形態に係る画像形成装置１０の正面図である。
【００２３】
図１に示すように、画像形成装置１０は、本体２０と、本体２０に電気的に接続されたスキャナー４７ａと、本体２０およびスキャナー４７ａを支持する台５０とを備えている。
【００２４】
図２は、画像形成装置１０の構成を示すブロック図である。
【００２５】
図２に示すように、画像形成装置１０は、画像形成装置１０全体を制御するコンピューターであるコントローラー３０と、コントローラー３０に接続されていて種々の情報を表示する表示部４１と、コントローラー３０に接続されていて利用者によって種々の操作が入力される操作部４２と、コントローラー３０に接続されていてＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）などの図示していない外部の装置と直接またはネットワーク経由で通信を行うための通信インターフェイス４３と、コントローラー３０に接続されているＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などの不揮発性記憶装置４４と、本体２０に対して電気的に着脱可能であって種々の情報を記憶している記憶媒体であるＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリー４５ａと、コントローラー３０に接続されていてＵＳＢメモリー４５ａが電気的に接続されるＵＳＢコネクター４５ｂと、コントローラー３０に接続されていて用紙に印刷を実行する印刷デバイスであるプリンター４６と、用紙から画像を読み取る読取デバイスであるスキャナー４７ａと、コントローラー３０に接続されていてスキャナー４７ａが電気的に接続されるスキャナー用コネクター４７ｂと、ＦＡＸの送受信を行うＦＡＸデバイスであるＦＡＸ通信装置４８ａと、コントローラー３０に接続されていてＦＡＸ通信装置４８ａが電気的に接続されるＦＡＸ通信装置用コネクター４８ｂとを備えている。
【００２６】
なお、コントローラー３０、表示部４１、操作部４２、通信インターフェイス４３、不揮発性記憶装置４４、ＵＳＢコネクター４５ｂ、プリンター４６、スキャナー用コネクター４７ｂおよびＦＡＸ通信装置用コネクター４８ｂは、本体２０に備えられている。
【００２７】
コントローラー３０は、プリンター４６、スキャナー４７ａおよびＦＡＸ通信装置４８ａを制御するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）３１と、プログラムおよび各種のデータを予め記憶しているＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３２と、ＣＰＵ３１の作業領域として用いられる書き換え可能な揮発性の記憶装置であるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）３３とを備えている。ＣＰＵ３１は、ＲＯＭ３２に記憶されているプログラムを実行することによってコントローラー３０を動作させる演算処理装置である。ＲＡＭ３３は、ＣＰＵ３１によってプログラムが実行されるときにプログラムや各種のデータを一時的に記憶するようになっている。ＲＯＭ３２は、実行ファイル１１を記憶している。
【００２８】
表示部４１は、例えばＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）などの表示デバイスである。
【００２９】
操作部４２は、表示部４１とともにタッチパネルを形成するボタンなどの入力デバイスである。
【００３０】
通信インターフェイス４３は、例えば、プリンター４６で印刷されるための印刷データを外部の装置から受信したり、スキャナー４７ａによって生成された画像データを外部の装置に送信したりする。
【００３１】
不揮発性記憶装置４４は、画像形成装置１０の各デバイスの処理を実行するクラスの抽象クラスを実現するダイナミックリンクライブラリーであるデバイス用ＤＬＬ１２と、プリンター４６を制御するためのダイナミックリンクライブラリーであるプリンター用ＤＬＬ１３と、スキャナー４７ａを制御するためのダイナミックリンクライブラリーであるスキャナー用ＤＬＬ１４と、ＦＡＸ通信装置４８ａを制御するためのダイナミックリンクライブラリーであるＦＡＸ通信装置用ＤＬＬ１５とを記憶している。スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５は、本体２０に電気的に着脱可能なデバイスの種類別に設けられており、本発明のデバイス別ＤＬＬを構成している。ここで、不揮発性記憶装置４４は、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５が書き換え可能である。
【００３２】
なお、ＲＯＭ３２に記憶されている実行ファイル１１は、不揮発性記憶装置４４に記憶されているデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５がダイナミックリンクされるようにパスが設定されている。つまり、実行ファイル１１、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５は、コントローラー３０によって実行されるプログラムである。したがって、ＲＯＭ３２および不揮発性記憶装置４４は、コントローラー３０によって実行されるプログラムを記憶しているプログラム記憶部を構成している。
【００３３】
ＵＳＢメモリー４５ａは、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５の少なくとも１つを記憶している。
【００３４】
プリンター４６は、通信インターフェイス４３を介して外部の装置から受信された印刷データ、スキャナー４７ａによって生成された画像データ、ＦＡＸ通信装置４８ａを介して外部のファクシミリ装置からＦＡＸ受信されたＦＡＸデータなどのデータに基づいて、用紙に印刷を実行する。
【００３５】
スキャナー４７ａは、通信インターフェイス４３を介して外部の装置に送信されるための画像データ、プリンター４６によって印刷されるための画像データ、ＦＡＸ通信装置４８ａを介して外部のファクシミリ装置にＦＡＸ送信されるための画像データなどの画像データを生成する。スキャナー４７ａは、スキャナー用コネクター４７ｂを介して本体２０に電気的に着脱可能なデバイスである。
【００３６】
ＦＡＸ通信装置４８ａは、外部のファクシミリ装置からＦＡＸデータをＦＡＸ受信したり、外部のファクシミリ装置にＦＡＸデータをＦＡＸ送信したりする。ＦＡＸ通信装置４８ａは、ＦＡＸ通信装置用コネクター４８ｂを介して本体２０に電気的に着脱可能なデバイスである。
【００３７】
以下においては、実行ファイル１１、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５が実行されるＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）がＬｉｎｕｘ（登録商標）であり、実行ファイル１１、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のプログラミング言語がＣ＋＋であるとして説明する。しかしながら、ＯＳやプログラミング言語としては、任意のものが採用可能である。
【００３８】
＜画像形成装置１０がスキャナー４７ａおよびＦＡＸ通信装置４８ａを備えていない場合＞
【００３９】
図３は、スキャナー４７ａを備えていない場合の画像形成装置１０の正面図である。図４は、スキャナー４７ａおよびＦＡＸ通信装置４８ａを備えていない場合の画像形成装置１０の構成を示すブロック図である。
【００４０】
画像形成装置１０は、スキャナー４７ａおよびＦＡＸ通信装置４８ａを備えていない場合、すなわち、プリンター専用機としてカスタマイズされる場合、図３および図４に示す状態である。画像形成装置１０は、図３に示す状態である場合、外部の装置から通信インターフェイス４３を介して受信した印刷データに基づいた画像をプリンター４６によって用紙に印刷する印刷機能を備えている。
【００４１】
図５は、図４に示す画像形成装置１０のプログラムのクラス図である。
【００４２】
図５に示すように、画像形成装置１０のプログラムは、処理の実行を要求するclientクラス６１と、画像形成装置１０の各デバイスの処理を実行するクラスをclientクラス６１からの要求を受けて生成するfactoryクラス６２と、画像形成装置１０の各デバイスの処理を実行するクラスの抽象クラスであるdeviceクラス６３と、画像形成装置１０のデバイスに依存しない共通の処理および画像形成装置１０のデバイスのうちプリンター４６に特化した処理を担当するprinterクラス６４とによって構成されている。
【００４３】
ここで、clientクラス６１、factoryクラス６２、deviceクラス６３、printerクラス６４のソースファイルをそれぞれclient.cpp、factory.cpp、device.cpp、printer.cppとする。また、clientクラス６１の処理を開始するメソッドをコールするためにmain.cppが用意される。
【００４４】
図６は、図４に示す実行ファイル１１の作成手順を示す図である。
【００４５】
図６に示すように、main.cpp、client.cpp、factory.cppがそれぞれコンパイルされることによって、main.o、client.o、factory.oが作成される。そして、main.o、client.o、factory.oがリンクされるとともに、libdev.so、libprn.so、libscn.so、libfax.soがダイナミックリンクされることによって、test.exeが作成される。このようにして作成されたtest.exeが実行ファイル１１である。
【００４６】
なお、libdev.soには、実行ファイル１１が実行されている場合にlibprn.so、libscn.so、libfax.soが見つからないときの処理が規定されている。
【００４７】
図７は、図４に示すデバイス用ＤＬＬ１２およびプリンター用ＤＬＬ１３の作成手順を示す図である。
【００４８】
図７に示すように、device.cpp、printer.cppがそれぞれコンパイルされることによって、libdev.so、libprn.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.soがそれぞれデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３である。
【００４９】
＜画像形成装置１０がスキャナー４７ａを備えていてＦＡＸ通信装置４８ａを備えていない場合＞
【００５０】
図８は、スキャナー４７ａを備えていてＦＡＸ通信装置４８ａを備えていない場合の画像形成装置１０の構成を示すブロック図である。
【００５１】
画像形成装置１０は、スキャナー４７ａを備えていてＦＡＸ通信装置４８ａを備えていない場合、図１および図８に示す状態である。画像形成装置１０は、図８に示す状態である場合、上述した印刷機能だけでなく、例えば、スキャナー４７ａによって原稿から画像を読み取って画像データを生成するスキャナー機能や、スキャナー４７ａによって原稿から読み取った画像をプリンター４６によって用紙に印刷する複写機能を備えている。
【００５２】
図９は、図８に示す画像形成装置１０のプログラムのクラス図である。
【００５３】
図９に示すように、画像形成装置１０のプログラムは、図５に示す構成と異なり、画像形成装置１０のデバイスのうちスキャナー４７ａに特化した処理を担当するscannerクラス６５を備えている。
【００５４】
ここで、scannerクラス６５のソースファイルをscanner.cppとする。
【００５５】
図１０は、図８に示すデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３およびスキャナー用ＤＬＬ１４の作成手順を示す図である。
【００５６】
図１０に示すように、device.cpp、printer.cpp、scanner.cppがそれぞれコンパイルされることによって、libdev.so、libprn.so、libscn.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.so、libscn.soがそれぞれデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４である。
【００５７】
なお、device.cpp、printer.cpp、scanner.cppからそれぞれ作成されたデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４は、これらのデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４が記憶されているＵＳＢメモリー４５ａがＵＳＢコネクター４５ｂに電気的に接続されることによって、コントローラー３０によって不揮発性記憶装置４４に書き込まれる。
【００５８】
したがって、利用者は、画像形成装置１０が図４に示す状態である場合、スキャナー４７ａを本体２０のスキャナー用コネクター４７ｂに電気的に接続するとともに、device.cpp、printer.cpp、scanner.cppからそれぞれ作成されたデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４が記憶されたＵＳＢメモリー４５ａをＵＳＢコネクター４５ｂに電気的に接続することによって、画像形成装置１０を図８に示す状態にカスタマイズすることができる。
【００５９】
＜画像形成装置１０がＦＡＸ通信装置４８ａを備えていてスキャナー４７ａを備えていない場合＞
【００６０】
図１１は、ＦＡＸ通信装置４８ａを備えていてスキャナー４７ａを備えていない場合の画像形成装置１０の構成を示すブロック図である。
【００６１】
画像形成装置１０は、ＦＡＸ通信装置４８ａを備えていてスキャナー４７ａを備えていない場合、図３および図１１に示す状態である。画像形成装置１０は、図１１に示す状態である場合、上述した印刷機能だけでなく、例えば、外部のファクシミリ装置からＦＡＸ通信装置４８ａによってＦＡＸ受信したＦＡＸデータに基づいた画像をプリンター４６によって用紙に印刷するＦＡＸ受信機能、外部のファクシミリ装置からＦＡＸデータをＦＡＸ通信装置４８ａによってＦＡＸ受信して通信インターフェイス４３を介して外部の装置に送信するネットワークＦＡＸ受信機能、外部の装置から通信インターフェイス４３を介して受信したＦＡＸデータを外部のファクシミリ装置にＦＡＸ通信装置４８ａによってＦＡＸ送信するネットワークＦＡＸ送信機能を備えている。
【００６２】
図１２は、図１１に示す画像形成装置１０のプログラムのクラス図である。
【００６３】
図１２に示すように、画像形成装置１０のプログラムは、図５に示す構成と異なり、画像形成装置１０のデバイスのうちＦＡＸ通信装置４８ａに特化した処理を担当するfaxクラス６６を備えている。
【００６４】
ここで、faxクラス６６のソースファイルをfax.cppとする。
【００６５】
図１３は、図１１に示すデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３およびＦＡＸ通信装置用ＤＬＬ１５の作成手順を示す図である。
【００６６】
図１３に示すように、device.cpp、printer.cpp、fax.cppがそれぞれコンパイルされることによって、libdev.so、libprn.so、libfax.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.so、libfax.soがそれぞれデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、ＦＡＸ通信装置用ＤＬＬ１５である。
【００６７】
なお、device.cpp、printer.cpp、fax.cppからそれぞれ作成されたデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、ＦＡＸ通信装置用ＤＬＬ１５は、これらのデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、ＦＡＸ通信装置用ＤＬＬ１５が記憶されているＵＳＢメモリー４５ａがＵＳＢコネクター４５ｂに電気的に接続されることによって、コントローラー３０によって不揮発性記憶装置４４に書き込まれる。
【００６８】
したがって、利用者は、画像形成装置１０が図４に示す状態である場合、ＦＡＸ通信装置４８ａを本体２０のＦＡＸ通信装置用コネクター４８ｂに電気的に接続するとともに、device.cpp、printer.cpp、fax.cppからそれぞれ作成されたデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、ＦＡＸ通信装置用ＤＬＬ１５が記憶されたＵＳＢメモリー４５ａをＵＳＢコネクター４５ｂに電気的に接続することによって、画像形成装置１０を図１１に示す状態にカスタマイズすることができる。
【００６９】
＜画像形成装置１０がスキャナー４７ａおよびＦＡＸ通信装置４８ａを備えている場合＞
【００７０】
画像形成装置１０は、スキャナー４７ａおよびＦＡＸ通信装置４８ａを備えている場合、図１および図２に示す状態である。画像形成装置１０は、図２に示す状態である場合、上述した印刷機能、スキャナー機能、複写機能、ＦＡＸ受信機能、ネットワークＦＡＸ受信機能、ネットワークＦＡＸ送信機能だけでなく、例えば、スキャナー４７ａによって原稿から読み取った画像に基づいて生成したＦＡＸデータを外部のファクシミリ装置にＦＡＸ通信装置４８ａによってＦＡＸ送信するＦＡＸ送信機能を備えている。
【００７１】
図１４は、図２に示す画像形成装置１０のプログラムのクラス図である。
【００７２】
図１４に示すように、画像形成装置１０のプログラムは、図５に示す構成と異なり、画像形成装置１０のデバイスのうちスキャナー４７ａに特化した処理を担当するscannerクラス６５と、画像形成装置１０のデバイスのうちＦＡＸ通信装置４８ａに特化した処理を担当するfaxクラス６６とを備えている。
【００７３】
図１５は、図２に示すデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５の作成手順を示す図である。
【００７４】
図１５に示すように、device.cpp、printer.cpp、scanner.cpp、fax.cppがそれぞれコンパイルされることによって、libdev.so、libprn.so、libscn.so、libfax.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.so、libscn.so、libfax.soがそれぞれデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５である。
【００７５】
なお、device.cpp、printer.cpp、scanner.cpp、fax.cppから作成されたデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５は、これらのデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５が記憶されているＵＳＢメモリー４５ａがＵＳＢコネクター４５ｂに電気的に接続されることによって、コントローラー３０によって不揮発性記憶装置４４上に書き込まれる。
【００７６】
したがって、利用者は、画像形成装置１０が図４に示す状態である場合、スキャナー４７ａ、ＦＡＸ通信装置４８ａをそれぞれ本体２０のスキャナー用コネクター４７ｂ、ＦＡＸ通信装置用コネクター４８ｂに電気的に接続するとともに、device.cpp、printer.cpp、scanner.cpp、fax.cppからそれぞれ作成されたデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５が記憶されたＵＳＢメモリー４５ａをＵＳＢコネクター４５ｂに電気的に接続することによって、画像形成装置１０を図２に示す状態にカスタマイズすることができる。
【００７７】
なお、以上においては、図４に示す状態から図２、図８または図１１に示す状態への変更について説明しているが、図８または図１１に示す状態から図２に示す状態への変更など、図４に示す状態から図２、図８または図１１に示す状態への変更以外の変更についても同様である。また、スキャナー４７ａやＦＡＸ通信装置４８ａを電気的に接続する変更だけでなく、電気的な接続を解除する変更についても同様である。どのような変更であっても、不揮発性記憶装置４４上のスキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５が変更後のスキャナー４７ａおよびＦＡＸ通信装置４８ａの状態に応じたものになっていれば良い。
【００７８】
次に、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５を生成するコンピューターの構成について説明する。
【００７９】
図１６は、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５を生成するコンピューター１１０のブロック図である。
【００８０】
図１６に示すように、コンピューター１１０は、種々の操作が入力されるマウスやキーボードなどの入力デバイスである操作部１１１と、種々の情報を表示するＬＣＤなどの表示デバイスである表示部１１２と、外部の装置と通信を行う通信デバイスである通信部１１３と、プログラムおよび各種のデータを記憶しているＨＤＤ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）などの記憶デバイスである記憶部１１４と、コンピューター１１０全体を制御する制御部１１５とを備えている。コンピューター１１０は、例えばＰＣなどのコンピューターによって構成されている。
【００８１】
記憶部１１４は、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のソースファイル、すなわち、後述のdevice.cpp１１４ｃ、printer.cpp１１４ｄ、scanner.cpp１１４ｅおよびfax.cpp１１４ｆのうちコンパイルの対象であるコンパイル対象ファイルを指定するファイルである後述のコンフィグスイッチ１１４ｈを生成するためのコンフィグスイッチ生成プログラム１１４ａと、コンフィグスイッチ１１４ｈによって指定されているコンパイル対象ファイルをコンパイルしてデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５を生成するためのＤＬＬ生成プログラム１１４ｂとを記憶している。
【００８２】
コンフィグスイッチ生成プログラム１１４ａおよびＤＬＬ生成プログラム１１４ｂは、コンピューター１１０の製造段階でコンピューター１１０にインストールされていても良いし、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｋ）などの記憶媒体からコンピューター１１０に追加でインストールされても良いし、ネットワーク上からコンピューター１１０に追加でインストールされても良い。
【００８３】
なお、以下においては、コンフィグスイッチ生成プログラム１１４ａのプログラミング言語がＶｉｓｕａｌ  Ｂａｓｉｃ（登録商標）であり、ＤＬＬ生成プログラム１１４ｂのプログラミング言語がＣ＋＋であるとして説明する。しかしながら、プログラミング言語としては、任意のものが採用可能である。
【００８４】
記憶部１１４は、デバイス用ＤＬＬ１２のソースファイルであるdevice.cpp１１４ｃと、プリンター用ＤＬＬ１３のソースファイルであるprinter.cpp１１４ｄと、スキャナー用ＤＬＬ１４のソースファイルであるscanner.cpp１１４ｅと、ＦＡＸ通信装置用ＤＬＬ１５のソースファイルであるfax.cpp１１４ｆと、device.cpp１１４ｃ、printer.cpp１１４ｄ、scanner.cpp１１４ｅおよびfax.cpp１１４ｆのコンパイルに必要な情報が記載されているテキストファイルであるmakefile１１４ｇと、device.cpp１１４ｃ、printer.cpp１１４ｄ、scanner.cpp１１４ｅおよびfax.cpp１１４ｆのうちコンパイル対象ファイルを指定するテキストファイルであるコンフィグスイッチ１１４ｈと、画像形成装置１０の機能が記載された文書である機能仕様書の電子データである機能仕様書ファイル１１４ｉと、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５に対応する機能およびキーワードの対応関係を示すキーワードファイル１１４ｊとを記憶することが可能である。
【００８５】
makefile１１４ｇは、コンフィグスイッチ１１４ｈにおけるコンパイル対象ファイルの指定を参照するための記述を含んでいる。
【００８６】
図１７は、コンフィグスイッチ１１４ｈの一例を示す図である。
【００８７】
図１７に示すように、コンフィグスイッチ１１４ｈは、device.cpp１１４ｃ、printer.cpp１１４ｄ、scanner.cpp１１４ｅおよびfax.cpp１１４ｆのそれぞれに対して、コンパイル対象ファイルであるか否かを指定している。例えば、図１７に示すコンフィグスイッチ１１４ｈにおいては、device.cpp１１４ｃ、printer.cpp１１４ｄおよびscanner.cpp１１４ｅがコンパイル対象ファイルとして指定されており、fax.cpp１１４ｆがコンパイル対象ファイルではないファイル、すなわち、非コンパイル対象ファイルとして指定されている。
【００８８】
図１８は、機能仕様書ファイル１１４ｉの一例を示す図である。
【００８９】
図１８に示すように、機能仕様書ファイル１１４ｉの機能仕様書は、機能毎に区分された機能別ブロック１２０を備えている。機能別ブロック１２０のそれぞれは、タイトル１２１と、説明文１２２とを含んでいる。
【００９０】
図１９は、キーワードファイル１１４ｊの一例を示す図である。
【００９１】
図１９に示すように、キーワードファイル１１４ｊは、ダイナミックリンクライブラリー、機能およびキーワードの対応関係を示すファイルである。例えば、図１９に示すキーワードファイル１１４ｊにおいては、「プリンター用ＤＬＬ」に対して「印刷機能」、「複写機能」などの機能が対応付けられている。また、「印刷機能」に対して「印刷」、「プリント」、「プリンター」などのキーワードが対応付けられている。
【００９２】
図１６に示す制御部１１５は、例えば、ＣＰＵと、プログラムおよび各種のデータを予め記憶しているＲＯＭと、ＣＰＵの作業領域として用いられるＲＡＭとを備えている。ＣＰＵは、ＲＯＭまたは記憶部１１４に記憶されているプログラムを実行するようになっている。
【００９３】
制御部１１５は、記憶部１１４に記憶されているコンフィグスイッチ生成プログラム１１４ａを実行することによって、機能仕様書ファイル１１４ｉの機能仕様書にデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５に対応する機能が含まれているか否かを機能仕様書中の所定のキーワードに基づいて判断する機能有無判断手段１１５ａ、および、対応する機能が機能仕様書に含まれていると機能有無判断手段１１５ａが判断したデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５のソースファイルをコンパイル対象ファイルとしてコンフィグスイッチ１１４ｈを生成するコンフィグスイッチ生成手段１１５ｂとして機能する。
【００９４】
また、制御部１１５は、記憶部１１４に記憶されているＤＬＬ生成プログラム１１４ｂを実行することによって、コンフィグスイッチ１１４ｈによって指定されているコンパイル対象ファイルをコンパイルしてデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５を生成するコンパイラー１１５ｃとして機能する。
【００９５】
次に、コンピューター１１０の動作について説明する。
【００９６】
図２０は、コンフィグスイッチ１１４ｈを生成する場合のコンピューター１１０の動作のフローチャートである。
【００９７】
コンピューター１１０の制御部１１５は、操作部１１１を介してコンフィグスイッチ１１４ｈの生成が指示されると、図２０に示す処理を実行する。
【００９８】
図２０に示すように、制御部１１５のコンフィグスイッチ生成手段１１５ｂは、記憶部１１４上にコンフィグスイッチ１１４ｈが存在するか否かを判断する（Ｓ１３１）。
【００９９】
コンフィグスイッチ生成手段１１５ｂは、記憶部１１４上にコンフィグスイッチ１１４ｈが存在しないとＳ１３１において判断すると、記憶部１１４上にコンフィグスイッチ１１４ｈを生成する（Ｓ１３２）。
【０１００】
コンフィグスイッチ生成手段１１５ｂは、記憶部１１４上にコンフィグスイッチ１１４ｈが存在するとＳ１３１において判断するか、Ｓ１３２の処理を終了すると、デバイス用ＤＬＬ１２のソースファイルであるdevice.cpp１１４ｃをコンパイル対象ファイルとしてコンフィグスイッチ１１４ｈを更新する（Ｓ１３３）。
【０１０１】
次いで、制御部１１５の機能有無判断手段１１５ａは、記憶部１１４上の機能仕様書ファイル１１４ｉの機能仕様書の最初の機能別ブロック１２０を対象にする（Ｓ１３４）。
【０１０２】
次いで、機能有無判断手段１１５ａは、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５に対応する機能が対象の機能別ブロック１２０に含まれているか否かを判断する（Ｓ１３５）。ここで、機能有無判断手段１１５ａは、記憶部１１４上のキーワードファイル１１４ｊにおいてプリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５に対応付けられている機能に対応付けられているキーワードが対象の機能別ブロック１２０に含まれている場合に、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５に対応する機能が対象の機能別ブロック１２０に含まれていると判断する。例えば、図１８に示す機能仕様書ファイル１１４ｉの機能仕様書の最初の機能別ブロック１２０は、タイトル１２１に「印刷」というキーワードが１つ含まれており、説明文１２２にも「印刷」というキーワードが２つ含まれている。したがって、機能有無判断手段１１５ａは、プリンター用ＤＬＬ１３に対応する「印刷機能」が最初の機能別ブロック１２０に含まれていると判断する。
【０１０３】
制御部１１５のコンフィグスイッチ生成手段１１５ｂは、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５に対応する機能が対象の機能別ブロック１２０に含まれているとＳ１３５において判断されると、対応する機能が対象の機能別ブロック１２０に含まれていると機能有無判断手段１１５ａが判断したプリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５のソースファイルをコンパイル対象ファイルとしてコンフィグスイッチ１１４ｈを更新する（Ｓ１３６）。例えば、機能有無判断手段１１５ａがスキャナー用ＤＬＬ１４について、対応する機能が対象の機能別ブロック１２０に含まれているとＳ１３５において判断した場合、コンフィグスイッチ生成手段１１５ｂは、スキャナー用ＤＬＬ１４のソースファイルであるscanner.cpp１１４ｅをコンパイル対象ファイルとしてコンフィグスイッチ１１４ｈを更新する。
【０１０４】
制御部１１５の機能有無判断手段１１５ａは、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５に対応する機能が対象の機能別ブロック１２０に含まれていないとＳ１３５において判断するか、Ｓ１３６の処理が終了すると、記憶部１１４上の機能仕様書ファイル１１４ｉの機能仕様書において現在対象にしている機能別ブロック１２０の次の機能別ブロック１２０が存在するか否かを判断する（Ｓ１３７）。
【０１０５】
機能有無判断手段１１５ａは、次の機能別ブロック１２０が存在するとＳ１３７において判断すると、機能仕様書において現在対象にしている機能別ブロック１２０の次の機能別ブロック１２０を新たな対象にして（Ｓ１３８）、再びＳ１３５の処理に戻る。
【０１０６】
制御部１１５のコンフィグスイッチ生成手段１１５ｂは、次の機能別ブロック１２０が存在しないとＳ１３７において判断されると、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のソースファイルのうち、Ｓ１３６においてコンパイル対象ファイルとされなかったソースファイルが存在するか否かを判断する（Ｓ１３９）。
【０１０７】
コンフィグスイッチ生成手段１１５ｂは、コンパイル対象ファイルとされなかったソースファイルが存在するとＳ１３９において判断すると、そのソースファイルを非コンパイル対象ファイルとしてコンフィグスイッチ１１４ｈを更新する（Ｓ１４０）。
【０１０８】
コンフィグスイッチ生成手段１１５ｂは、コンパイル対象ファイルとされなかったソースファイルが存在しないとＳ１３９において判断するか、Ｓ１４０の処理を終了すると、図２０に示す処理を終了する。
【０１０９】
図２１は、デバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５を生成する場合のコンピューター１１０の動作のフローチャートである。
【０１１０】
コンピューター１１０の制御部１１５は、操作部１１１を介してコンパイルが指示されると、図２１に示す処理を実行する。
【０１１１】
図２１に示すように、制御部１１５のコンパイラー１１５ｃは、記憶部１１４上のmakefile１１４ｇの記述と、makefile１１４ｇにおいてコンパイル対象ファイルの指定の参照先として記述されているコンフィグスイッチ１１４ｈの記述とに従って、device.cpp１１４ｃ、printer.cpp１１４ｄ、scanner.cpp１１４ｅまたはfax.cpp１１４ｆをコンパイルする（Ｓ１４１）。
【０１１２】
例えば、コンパイラー１１５ｃは、コンフィグスイッチ１１４ｈにおいてコンパイル対象ファイルとしてdevice.cpp１１４ｃ、printer.cpp１１４ｄおよびscanner.cpp１１４ｅが指定されていて、非コンパイル対象ファイルとしてfax.cpp１１４ｆが指定されている場合、device.cpp１１４ｃ、printer.cpp１１４ｄおよびscanner.cpp１１４ｅのみをコンパイルしてデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３およびスキャナー用ＤＬＬ１４のみを生成し、ＦＡＸ通信装置用ＤＬＬ１５を生成しない。
【０１１３】
制御部１１５は、Ｓ１４１の処理の後、図２１に示す処理を終了する。
【０１１４】
コンピューター１１０によって以上のように生成されたデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４またはＦＡＸ通信装置用ＤＬＬ１５は、上述したようにＵＳＢメモリー４５ａを介して画像形成装置１０の不揮発性記憶装置４４上に書き込まれる。
【０１１５】
以上に説明したように、画像形成装置１０は、スキャナー４７ａ、ＦＡＸ通信装置４８ａが本体２０に対して着脱される場合、不揮発性記憶装置４４上のスキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５が書き換えられれば良く、実行ファイル１１が再ビルドされる必要がない。したがって、画像形成装置１０は、スキャナー４７ａ、ＦＡＸ通信装置４８ａの着脱によって従来より容易に機能がカスタマイズされることができる。
【０１１６】
また、画像形成装置１０は、スキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５を記憶しているＵＳＢメモリー４５ａがＵＳＢコネクター４５ｂに電気的に接続されるだけでスキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５が書き換えられるので、容易に機能がカスタマイズされることができる。
【０１１７】
なお、ＲＯＭ３２に記憶されている実行ファイル１１は、本実施の形態において、不揮発性記憶装置４４に記憶されているデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５がダイナミックリンクされるようにパスが設定されているが、ＵＳＢコネクター４５ｂに電気的に接続されているＵＳＢメモリー４５ａに記憶されているデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５がダイナミックリンクされるようにパスが設定されていても良い。そのように構成されている場合、不揮発性記憶装置４４にデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５が記憶される必要がない。
【０１１８】
また、変更後のデバイス用ＤＬＬ１２、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５は、本実施の形態において、ＵＳＢメモリー４５ａを介して本体２０に導入されるようになっているが、ＵＳＢメモリー４５ａ以外の記憶媒体を介して本体２０に導入されるようになっていても良い。
【０１１９】
コンピューター１１０は、画像形成装置１０の機能仕様書に記載されている機能に対応するプリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のソースファイル、すなわち、printer.cpp１１４ｄ、scanner.cpp１１４ｅまたはfax.cpp１１４ｆをコンパイルの対象とする（Ｓ１３５でＹＥＳおよびＳ１３６）ので、適切なデバイス別ＤＬＬを容易に生成することができる。
【０１２０】
コンピューター１１０は、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５に対応する機能が機能仕様書に含まれているか否かを機能仕様書の機能別ブロック１２０毎に判断する（Ｓ１３４、Ｓ１３８）ので、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５に対応する機能が機能仕様書に含まれているか否かを機能別ブロック１２０毎ではなく機能仕様書全体に対して一括して判断する構成と比較して、機能仕様書の内容に沿っていない不適切なダイナミックリンクライブラリーを生成する可能性を低減することができる。
【０１２１】
なお、コンピューター１１０は、プリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５に対応する機能が機能仕様書に含まれているか否かを機能別ブロック１２０毎ではなく機能仕様書全体に対して判断するようになっていても良い。
【０１２２】
コンピューター１１０は、機能仕様書に所定のキーワードが含まれている場合にこのキーワードに対応するプリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のソースファイルをコンパイルの対象とするようになっているが、機能仕様書に所定のキーワードが２以上の所定の数以上含まれている場合にこのキーワードに対応するプリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のソースファイルをコンパイルの対象とするようになっていても良い。
【０１２３】
コンピューター１１０は、機能仕様書に所定のキーワードが２以上の所定の数以上含まれている場合にこのキーワードに対応するプリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のソースファイルをコンパイルの対象とするようになっている場合、機能仕様書に所定のキーワードが１つでも含まれている場合にこのキーワードに対応するプリンター用ＤＬＬ１３、スキャナー用ＤＬＬ１４およびＦＡＸ通信装置用ＤＬＬ１５のソースファイルをコンパイルの対象とする構成と比較して、機能仕様書の内容に沿っていない不適切なダイナミックリンクライブラリーを生成する可能性を低減することができる。
【０１２４】
コンピューター１１０は、機能仕様書ファイル１１４ｉが機能仕様書とともに、この機能仕様書を処理するコンフィグスイッチ生成プログラム１１４ａをマクロとして含んでいても良い。例えば、機能仕様書ファイル１１４ｉは、コンフィグスイッチ生成プログラム１１４ａをマクロとして含んでいるＭｉｃｒｏｓｏｆｔ（登録商標）  ＷｏｒｄのファイルまたはＭｉｃｒｏｓｏｆｔ  Ｅｘｃｅｌ（登録商標）のファイルであっても良い。
【０１２５】
コンピューター１１０は、機能仕様書ファイル１１４ｉが機能仕様書とともに、この機能仕様書を処理するコンフィグスイッチ生成プログラム１１４ａをマクロとして含んでいる場合、コンフィグスイッチ生成プログラム１１４ａと、機能仕様書ファイル１１４ｉとが別々に備えられている構成と比較して、デバイス別ＤＬＬを容易に生成することができる。
【０１２６】
なお、図２０に示す処理を実行するコンピューターと、図２１に示す処理を実行するコンピューターとは、本実施の形態において、同一のコンピューター１１０である。しかしながら、図２０に示す処理を実行するコンピューターと、図２１に示す処理を実行するコンピューターとは、別々のコンピューターであっても良い。
【０１２７】
（第２の実施の形態）
【０１２８】
図２２は、本実施の形態に係る画像形成装置２１０の構成を示すブロック図である。なお、画像形成装置２１０の構成のうち、第１の実施の形態に係る画像形成装置１０（図１および図２参照。）の構成と同様な構成については画像形成装置１０の構成と同一の符号を付して説明を省略する。
【０１２９】
図２２に示すように、画像形成装置２１０の構成は、画像形成装置１０（図２参照。）がＵＳＢメモリー４５ａおよびＵＳＢコネクター４５ｂを備えておらず、スキャナー４７ａ、スキャナー用コネクター４７ｂ、ＦＡＸ通信装置４８ａ、ＦＡＸ通信装置用コネクター４８ｂに代えてスキャナー２４７ａ、スキャナー用コネクター２４７ｂ、ＦＡＸ通信装置２４８ａ、ＦＡＸ通信装置用コネクター２４８ｂを備えている構成と同様である。
【０１３０】
スキャナー２４７ａは、スキャナー用ＤＬＬ１４を記憶している記憶媒体として不揮発性記憶装置２４７ｃを備えている。つまり、不揮発性記憶装置２４７ｃは、スキャナー２４７ａと一体である。
【０１３１】
スキャナー用コネクター２４７ｂは、スキャナー２４７ａが電気的に接続されることによって不揮発性記憶装置２４７ｃが電気的に接続される。
【０１３２】
ＦＡＸ通信装置２４８ａは、ＦＡＸ通信装置用ＤＬＬ１５を記憶している記憶媒体として不揮発性記憶装置２４８ｃを備えている。つまり、不揮発性記憶装置２４８ｃは、ＦＡＸ通信装置２４８ａと一体である。
【０１３３】
ＦＡＸ通信装置用コネクター２４８ｂは、ＦＡＸ通信装置２４８ａが電気的に接続されることによって不揮発性記憶装置２４８ｃが電気的に接続される。
【０１３４】
以上の構成により、画像形成装置２１０は、スキャナー２４７ａ、ＦＡＸ通信装置２４８ａが本体２０に電気的に接続されるだけでスキャナー用ＤＬＬ１４、ＦＡＸ通信装置用ＤＬＬ１５が書き換えられるので、容易に機能がカスタマイズされることができる。
【０１３５】
なお、上述した各実施の形態において、本体２０に電気的に着脱可能なデバイスとしてスキャナーおよびＦＡＸ通信装置について説明したが、これらのデバイス以外のデバイスであっても良い。
【符号の説明】
【０１３６】
１０  画像形成装置
１１  実行ファイル
１２  デバイス用ＤＬＬ（ダイナミックリンクライブラリー）
１３  プリンター用ＤＬＬ（ダイナミックリンクライブラリー）
１４  スキャナー用ＤＬＬ（ダイナミックリンクライブラリー、デバイス別ＤＬＬ）
１５  ＦＡＸ通信装置用ＤＬＬ（ダイナミックリンクライブラリー、デバイス別ＤＬＬ）
２０  本体
４６  プリンター（デバイス）
４７ａ  スキャナー（デバイス）
４８ａ  ＦＡＸ通信装置（デバイス）
１１０  コンピューター
１１４ａ  コンフィグスイッチ生成プログラム
１１４ｃ  device.cpp（ソースファイル）
１１４ｄ  printer.cpp（ソースファイル）
１１４ｅ  scanner.cpp（ソースファイル）
１１４ｆ  fax.cpp（ソースファイル）
１１４ｈ  コンフィグスイッチ
１１４ｉ  機能仕様書ファイル
１２０  機能別ブロック
２１０  画像形成装置
２４７ａ  スキャナー（デバイス）
２４８ａ  ＦＡＸ通信装置（デバイス）
【図１】
2014048753.tif 000003
【図２】
2014048753.tif 000004
【図３】
2014048753.tif 000005
【図４】
2014048753.tif 000006
【図５】
2014048753.tif 000007
【図６】
2014048753.tif 000008
【図７】
2014048753.tif 000009
【図８】
2014048753.tif 000010
【図９】
2014048753.tif 000011
【図１０】
2014048753.tif 000012
【図１１】
2014048753.tif 000013
【図１２】
2014048753.tif 000014
【図１３】
2014048753.tif 000015
【図１４】
2014048753.tif 000016
【図１５】
2014048753.tif 000017
【図１６】
2014048753.tif 000018
【図１７】
2014048753.tif 000019
【図１８】
2014048753.tif 000020
【図１９】
2014048753.tif 000021
【図２０】
2014048753.tif 000022
【図２１】
2014048753.tif 000023
【図２２】
2014048753.tif 000024