以下、本発明の実施の形態について、図面を用いて説明する。
(第1の実施の形態)
まず、本実施の形態に係る画像形成装置の構成について説明する。
図1は、本実施の形態に係る画像形成装置10の正面図である。
図1に示すように、画像形成装置10は、本体20と、本体20に電気的に接続されたスキャナー47aと、本体20およびスキャナー47aを支持する台50とを備えている。
図2は、画像形成装置10の構成を示すブロック図である。
図2に示すように、画像形成装置10は、画像形成装置10全体を制御するコンピューターであるコントローラー30と、コントローラー30に接続されていて種々の情報を表示する表示部41と、コントローラー30に接続されていて利用者によって種々の操作が入力される操作部42と、コントローラー30に接続されていてPC(Personal Computer)などの図示していない外部の装置と直接またはネットワーク経由で通信を行うための通信インターフェイス43と、コントローラー30に接続されているEEPROM(Electrically Erasable Programmable Read Only Memory)などの不揮発性記憶装置44と、本体20に対して電気的に着脱可能であって種々の情報を記憶している記憶媒体であるUSB(Universal Serial Bus)メモリー45aと、コントローラー30に接続されていてUSBメモリー45aが電気的に接続されるUSBコネクター45bと、コントローラー30に接続されていて用紙に印刷を実行する印刷デバイスであるプリンター46と、用紙から画像を読み取る読取デバイスであるスキャナー47aと、コントローラー30に接続されていてスキャナー47aが電気的に接続されるスキャナー用コネクター47bと、FAXの送受信を行うFAXデバイスであるFAX通信装置48aと、コントローラー30に接続されていてFAX通信装置48aが電気的に接続されるFAX通信装置用コネクター48bとを備えている。
なお、コントローラー30、表示部41、操作部42、通信インターフェイス43、不揮発性記憶装置44、USBコネクター45b、プリンター46、スキャナー用コネクター47bおよびFAX通信装置用コネクター48bは、本体20に備えられている。
コントローラー30は、プリンター46、スキャナー47aおよびFAX通信装置48aを制御するCPU(Central Processing Unit)31と、プログラムおよび各種のデータを予め記憶しているROM(Read Only Memory)32と、CPU31の作業領域として用いられる書き換え可能な揮発性の記憶装置であるRAM(Random Access Memory)33とを備えている。CPU31は、ROM32に記憶されているプログラムを実行することによってコントローラー30を動作させる演算処理装置である。RAM33は、CPU31によってプログラムが実行されるときにプログラムや各種のデータを一時的に記憶するようになっている。ROM32は、実行ファイル11を記憶している。
表示部41は、例えばLCD(Liquid Crystal Display)などの表示デバイスである。
操作部42は、表示部41とともにタッチパネルを形成するボタンなどの入力デバイスである。
通信インターフェイス43は、例えば、プリンター46で印刷されるための印刷データを外部の装置から受信したり、スキャナー47aによって生成された画像データを外部の装置に送信したりする。
不揮発性記憶装置44は、画像形成装置10の各デバイスの処理を実行するクラスの抽象クラスを実現するダイナミックリンクライブラリーであるデバイス用DLL12と、プリンター46を制御するためのダイナミックリンクライブラリーであるプリンター用DLL13と、スキャナー47aを制御するためのダイナミックリンクライブラリーであるスキャナー用DLL14と、FAX通信装置48aを制御するためのダイナミックリンクライブラリーであるFAX通信装置用DLL15とを記憶している。スキャナー用DLL14およびFAX通信装置用DLL15は、本体20に電気的に着脱可能なデバイスの種類別に設けられており、本発明のデバイス別DLLを構成している。ここで、不揮発性記憶装置44は、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15が書き換え可能である。
なお、ROM32に記憶されている実行ファイル11は、不揮発性記憶装置44に記憶されているデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15がダイナミックリンクされるようにパスが設定されている。つまり、実行ファイル11、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15は、コントローラー30によって実行されるプログラムである。したがって、ROM32および不揮発性記憶装置44は、コントローラー30によって実行されるプログラムを記憶しているプログラム記憶部を構成している。
USBメモリー45aは、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15の少なくとも1つを記憶している。
プリンター46は、通信インターフェイス43を介して外部の装置から受信された印刷データ、スキャナー47aによって生成された画像データ、FAX通信装置48aを介して外部のファクシミリ装置からFAX受信されたFAXデータなどのデータに基づいて、用紙に印刷を実行する。
スキャナー47aは、通信インターフェイス43を介して外部の装置に送信されるための画像データ、プリンター46によって印刷されるための画像データ、FAX通信装置48aを介して外部のファクシミリ装置にFAX送信されるための画像データなどの画像データを生成する。スキャナー47aは、スキャナー用コネクター47bを介して本体20に電気的に着脱可能なデバイスである。
FAX通信装置48aは、外部のファクシミリ装置からFAXデータをFAX受信したり、外部のファクシミリ装置にFAXデータをFAX送信したりする。FAX通信装置48aは、FAX通信装置用コネクター48bを介して本体20に電気的に着脱可能なデバイスである。
以下においては、実行ファイル11、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15が実行されるOS(Operating System)がLinux(登録商標)であり、実行ファイル11、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のプログラミング言語がC++であるとして説明する。しかしながら、OSやプログラミング言語としては、任意のものが採用可能である。
<画像形成装置10がスキャナー47aおよびFAX通信装置48aを備えていない場合>
図3は、スキャナー47aを備えていない場合の画像形成装置10の正面図である。図4は、スキャナー47aおよびFAX通信装置48aを備えていない場合の画像形成装置10の構成を示すブロック図である。
画像形成装置10は、スキャナー47aおよびFAX通信装置48aを備えていない場合、すなわち、プリンター専用機としてカスタマイズされる場合、図3および図4に示す状態である。画像形成装置10は、図3に示す状態である場合、外部の装置から通信インターフェイス43を介して受信した印刷データに基づいた画像をプリンター46によって用紙に印刷する印刷機能を備えている。
図5は、図4に示す画像形成装置10のプログラムのクラス図である。
図5に示すように、画像形成装置10のプログラムは、処理の実行を要求するclientクラス61と、画像形成装置10の各デバイスの処理を実行するクラスをclientクラス61からの要求を受けて生成するfactoryクラス62と、画像形成装置10の各デバイスの処理を実行するクラスの抽象クラスであるdeviceクラス63と、画像形成装置10のデバイスに依存しない共通の処理および画像形成装置10のデバイスのうちプリンター46に特化した処理を担当するprinterクラス64とによって構成されている。
ここで、clientクラス61、factoryクラス62、deviceクラス63、printerクラス64のソースファイルをそれぞれclient.cpp、factory.cpp、device.cpp、printer.cppとする。また、clientクラス61の処理を開始するメソッドをコールするためにmain.cppが用意される。
図6は、図4に示す実行ファイル11の作成手順を示す図である。
図6に示すように、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が実行ファイル11である。
なお、libdev.soには、実行ファイル11が実行されている場合にlibprn.so、libscn.so、libfax.soが見つからないときの処理が規定されている。
図7は、図4に示すデバイス用DLL12およびプリンター用DLL13の作成手順を示す図である。
図7に示すように、device.cpp、printer.cppがそれぞれコンパイルされることによって、libdev.so、libprn.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.soがそれぞれデバイス用DLL12、プリンター用DLL13である。
<画像形成装置10がスキャナー47aを備えていてFAX通信装置48aを備えていない場合>
図8は、スキャナー47aを備えていてFAX通信装置48aを備えていない場合の画像形成装置10の構成を示すブロック図である。
画像形成装置10は、スキャナー47aを備えていてFAX通信装置48aを備えていない場合、図1および図8に示す状態である。画像形成装置10は、図8に示す状態である場合、上述した印刷機能だけでなく、例えば、スキャナー47aによって原稿から画像を読み取って画像データを生成するスキャナー機能や、スキャナー47aによって原稿から読み取った画像をプリンター46によって用紙に印刷する複写機能を備えている。
図9は、図8に示す画像形成装置10のプログラムのクラス図である。
図9に示すように、画像形成装置10のプログラムは、図5に示す構成と異なり、画像形成装置10のデバイスのうちスキャナー47aに特化した処理を担当するscannerクラス65を備えている。
ここで、scannerクラス65のソースファイルをscanner.cppとする。
図10は、図8に示すデバイス用DLL12、プリンター用DLL13およびスキャナー用DLL14の作成手順を示す図である。
図10に示すように、device.cpp、printer.cpp、scanner.cppがそれぞれコンパイルされることによって、libdev.so、libprn.so、libscn.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.so、libscn.soがそれぞれデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14である。
なお、device.cpp、printer.cpp、scanner.cppからそれぞれ作成されたデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14は、これらのデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14が記憶されているUSBメモリー45aがUSBコネクター45bに電気的に接続されることによって、コントローラー30によって不揮発性記憶装置44に書き込まれる。
したがって、利用者は、画像形成装置10が図4に示す状態である場合、スキャナー47aを本体20のスキャナー用コネクター47bに電気的に接続するとともに、device.cpp、printer.cpp、scanner.cppからそれぞれ作成されたデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14が記憶されたUSBメモリー45aをUSBコネクター45bに電気的に接続することによって、画像形成装置10を図8に示す状態にカスタマイズすることができる。
<画像形成装置10がFAX通信装置48aを備えていてスキャナー47aを備えていない場合>
図11は、FAX通信装置48aを備えていてスキャナー47aを備えていない場合の画像形成装置10の構成を示すブロック図である。
画像形成装置10は、FAX通信装置48aを備えていてスキャナー47aを備えていない場合、図3および図11に示す状態である。画像形成装置10は、図11に示す状態である場合、上述した印刷機能だけでなく、例えば、外部のファクシミリ装置からFAX通信装置48aによってFAX受信したFAXデータに基づいた画像をプリンター46によって用紙に印刷するFAX受信機能、外部のファクシミリ装置からFAXデータをFAX通信装置48aによってFAX受信して通信インターフェイス43を介して外部の装置に送信するネットワークFAX受信機能、外部の装置から通信インターフェイス43を介して受信したFAXデータを外部のファクシミリ装置にFAX通信装置48aによってFAX送信するネットワークFAX送信機能を備えている。
図12は、図11に示す画像形成装置10のプログラムのクラス図である。
図12に示すように、画像形成装置10のプログラムは、図5に示す構成と異なり、画像形成装置10のデバイスのうちFAX通信装置48aに特化した処理を担当するfaxクラス66を備えている。
ここで、faxクラス66のソースファイルをfax.cppとする。
図13は、図11に示すデバイス用DLL12、プリンター用DLL13およびFAX通信装置用DLL15の作成手順を示す図である。
図13に示すように、device.cpp、printer.cpp、fax.cppがそれぞれコンパイルされることによって、libdev.so、libprn.so、libfax.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.so、libfax.soがそれぞれデバイス用DLL12、プリンター用DLL13、FAX通信装置用DLL15である。
なお、device.cpp、printer.cpp、fax.cppからそれぞれ作成されたデバイス用DLL12、プリンター用DLL13、FAX通信装置用DLL15は、これらのデバイス用DLL12、プリンター用DLL13、FAX通信装置用DLL15が記憶されているUSBメモリー45aがUSBコネクター45bに電気的に接続されることによって、コントローラー30によって不揮発性記憶装置44に書き込まれる。
したがって、利用者は、画像形成装置10が図4に示す状態である場合、FAX通信装置48aを本体20のFAX通信装置用コネクター48bに電気的に接続するとともに、device.cpp、printer.cpp、fax.cppからそれぞれ作成されたデバイス用DLL12、プリンター用DLL13、FAX通信装置用DLL15が記憶されたUSBメモリー45aをUSBコネクター45bに電気的に接続することによって、画像形成装置10を図11に示す状態にカスタマイズすることができる。
<画像形成装置10がスキャナー47aおよびFAX通信装置48aを備えている場合>
画像形成装置10は、スキャナー47aおよびFAX通信装置48aを備えている場合、図1および図2に示す状態である。画像形成装置10は、図2に示す状態である場合、上述した印刷機能、スキャナー機能、複写機能、FAX受信機能、ネットワークFAX受信機能、ネットワークFAX送信機能だけでなく、例えば、スキャナー47aによって原稿から読み取った画像に基づいて生成したFAXデータを外部のファクシミリ装置にFAX通信装置48aによってFAX送信するFAX送信機能を備えている。
図14は、図2に示す画像形成装置10のプログラムのクラス図である。
図14に示すように、画像形成装置10のプログラムは、図5に示す構成と異なり、画像形成装置10のデバイスのうちスキャナー47aに特化した処理を担当するscannerクラス65と、画像形成装置10のデバイスのうちFAX通信装置48aに特化した処理を担当するfaxクラス66とを備えている。
図15は、図2に示すデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15の作成手順を示す図である。
図15に示すように、device.cpp、printer.cpp、scanner.cpp、fax.cppがそれぞれコンパイルされることによって、libdev.so、libprn.so、libscn.so、libfax.soという名称でライブラリーが作成される。このようにして作成されたlibdev.so、libprn.so、libscn.so、libfax.soがそれぞれデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14、FAX通信装置用DLL15である。
なお、device.cpp、printer.cpp、scanner.cpp、fax.cppから作成されたデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14、FAX通信装置用DLL15は、これらのデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14、FAX通信装置用DLL15が記憶されているUSBメモリー45aがUSBコネクター45bに電気的に接続されることによって、コントローラー30によって不揮発性記憶装置44上に書き込まれる。
したがって、利用者は、画像形成装置10が図4に示す状態である場合、スキャナー47a、FAX通信装置48aをそれぞれ本体20のスキャナー用コネクター47b、FAX通信装置用コネクター48bに電気的に接続するとともに、device.cpp、printer.cpp、scanner.cpp、fax.cppからそれぞれ作成されたデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14、FAX通信装置用DLL15が記憶されたUSBメモリー45aをUSBコネクター45bに電気的に接続することによって、画像形成装置10を図2に示す状態にカスタマイズすることができる。
なお、以上においては、図4に示す状態から図2、図8または図11に示す状態への変更について説明しているが、図8または図11に示す状態から図2に示す状態への変更など、図4に示す状態から図2、図8または図11に示す状態への変更以外の変更についても同様である。また、スキャナー47aやFAX通信装置48aを電気的に接続する変更だけでなく、電気的な接続を解除する変更についても同様である。どのような変更であっても、不揮発性記憶装置44上のスキャナー用DLL14、FAX通信装置用DLL15が変更後のスキャナー47aおよびFAX通信装置48aの状態に応じたものになっていれば良い。
次に、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15を生成するコンピューターの構成について説明する。
図16は、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15を生成するコンピューター110のブロック図である。
図16に示すように、コンピューター110は、種々の操作が入力されるマウスやキーボードなどの入力デバイスである操作部111と、種々の情報を表示するLCDなどの表示デバイスである表示部112と、外部の装置と通信を行う通信デバイスである通信部113と、プログラムおよび各種のデータを記憶しているHDD(Hard Disk Drive)などの記憶デバイスである記憶部114と、コンピューター110全体を制御する制御部115とを備えている。コンピューター110は、例えばPCなどのコンピューターによって構成されている。
記憶部114は、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のソースファイル、すなわち、後述のdevice.cpp114c、printer.cpp114d、scanner.cpp114eおよびfax.cpp114fのうちコンパイルの対象であるコンパイル対象ファイルを指定するファイルである後述のコンフィグスイッチ114hを生成するためのコンフィグスイッチ生成プログラム114aと、コンフィグスイッチ114hによって指定されているコンパイル対象ファイルをコンパイルしてデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15を生成するためのDLL生成プログラム114bとを記憶している。
コンフィグスイッチ生成プログラム114aおよびDLL生成プログラム114bは、コンピューター110の製造段階でコンピューター110にインストールされていても良いし、CD(Compact Disk)、DVD(Digital Versatile Disk)などの記憶媒体からコンピューター110に追加でインストールされても良いし、ネットワーク上からコンピューター110に追加でインストールされても良い。
なお、以下においては、コンフィグスイッチ生成プログラム114aのプログラミング言語がVisual Basic(登録商標)であり、DLL生成プログラム114bのプログラミング言語がC++であるとして説明する。しかしながら、プログラミング言語としては、任意のものが採用可能である。
記憶部114は、デバイス用DLL12のソースファイルであるdevice.cpp114cと、プリンター用DLL13のソースファイルであるprinter.cpp114dと、スキャナー用DLL14のソースファイルであるscanner.cpp114eと、FAX通信装置用DLL15のソースファイルであるfax.cpp114fと、device.cpp114c、printer.cpp114d、scanner.cpp114eおよびfax.cpp114fのコンパイルに必要な情報が記載されているテキストファイルであるmakefile114gと、device.cpp114c、printer.cpp114d、scanner.cpp114eおよびfax.cpp114fのうちコンパイル対象ファイルを指定するテキストファイルであるコンフィグスイッチ114hと、画像形成装置10の機能が記載された文書である機能仕様書の電子データである機能仕様書ファイル114iと、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15に対応する機能およびキーワードの対応関係を示すキーワードファイル114jとを記憶することが可能である。
makefile114gは、コンフィグスイッチ114hにおけるコンパイル対象ファイルの指定を参照するための記述を含んでいる。
図17は、コンフィグスイッチ114hの一例を示す図である。
図17に示すように、コンフィグスイッチ114hは、device.cpp114c、printer.cpp114d、scanner.cpp114eおよびfax.cpp114fのそれぞれに対して、コンパイル対象ファイルであるか否かを指定している。例えば、図17に示すコンフィグスイッチ114hにおいては、device.cpp114c、printer.cpp114dおよびscanner.cpp114eがコンパイル対象ファイルとして指定されており、fax.cpp114fがコンパイル対象ファイルではないファイル、すなわち、非コンパイル対象ファイルとして指定されている。
図18は、機能仕様書ファイル114iの一例を示す図である。
図18に示すように、機能仕様書ファイル114iの機能仕様書は、機能毎に区分された機能別ブロック120を備えている。機能別ブロック120のそれぞれは、タイトル121と、説明文122とを含んでいる。
図19は、キーワードファイル114jの一例を示す図である。
図19に示すように、キーワードファイル114jは、ダイナミックリンクライブラリー、機能およびキーワードの対応関係を示すファイルである。例えば、図19に示すキーワードファイル114jにおいては、「プリンター用DLL」に対して「印刷機能」、「複写機能」などの機能が対応付けられている。また、「印刷機能」に対して「印刷」、「プリント」、「プリンター」などのキーワードが対応付けられている。
図16に示す制御部115は、例えば、CPUと、プログラムおよび各種のデータを予め記憶しているROMと、CPUの作業領域として用いられるRAMとを備えている。CPUは、ROMまたは記憶部114に記憶されているプログラムを実行するようになっている。
制御部115は、記憶部114に記憶されているコンフィグスイッチ生成プログラム114aを実行することによって、機能仕様書ファイル114iの機能仕様書にデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15に対応する機能が含まれているか否かを機能仕様書中の所定のキーワードに基づいて判断する機能有無判断手段115a、および、対応する機能が機能仕様書に含まれていると機能有無判断手段115aが判断したデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15のソースファイルをコンパイル対象ファイルとしてコンフィグスイッチ114hを生成するコンフィグスイッチ生成手段115bとして機能する。
また、制御部115は、記憶部114に記憶されているDLL生成プログラム114bを実行することによって、コンフィグスイッチ114hによって指定されているコンパイル対象ファイルをコンパイルしてデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15を生成するコンパイラー115cとして機能する。
次に、コンピューター110の動作について説明する。
図20は、コンフィグスイッチ114hを生成する場合のコンピューター110の動作のフローチャートである。
コンピューター110の制御部115は、操作部111を介してコンフィグスイッチ114hの生成が指示されると、図20に示す処理を実行する。
図20に示すように、制御部115のコンフィグスイッチ生成手段115bは、記憶部114上にコンフィグスイッチ114hが存在するか否かを判断する(S131)。
コンフィグスイッチ生成手段115bは、記憶部114上にコンフィグスイッチ114hが存在しないとS131において判断すると、記憶部114上にコンフィグスイッチ114hを生成する(S132)。
コンフィグスイッチ生成手段115bは、記憶部114上にコンフィグスイッチ114hが存在するとS131において判断するか、S132の処理を終了すると、デバイス用DLL12のソースファイルであるdevice.cpp114cをコンパイル対象ファイルとしてコンフィグスイッチ114hを更新する(S133)。
次いで、制御部115の機能有無判断手段115aは、記憶部114上の機能仕様書ファイル114iの機能仕様書の最初の機能別ブロック120を対象にする(S134)。
次いで、機能有無判断手段115aは、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15に対応する機能が対象の機能別ブロック120に含まれているか否かを判断する(S135)。ここで、機能有無判断手段115aは、記憶部114上のキーワードファイル114jにおいてプリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15に対応付けられている機能に対応付けられているキーワードが対象の機能別ブロック120に含まれている場合に、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15に対応する機能が対象の機能別ブロック120に含まれていると判断する。例えば、図18に示す機能仕様書ファイル114iの機能仕様書の最初の機能別ブロック120は、タイトル121に「印刷」というキーワードが1つ含まれており、説明文122にも「印刷」というキーワードが2つ含まれている。したがって、機能有無判断手段115aは、プリンター用DLL13に対応する「印刷機能」が最初の機能別ブロック120に含まれていると判断する。
制御部115のコンフィグスイッチ生成手段115bは、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15に対応する機能が対象の機能別ブロック120に含まれているとS135において判断されると、対応する機能が対象の機能別ブロック120に含まれていると機能有無判断手段115aが判断したプリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15のソースファイルをコンパイル対象ファイルとしてコンフィグスイッチ114hを更新する(S136)。例えば、機能有無判断手段115aがスキャナー用DLL14について、対応する機能が対象の機能別ブロック120に含まれているとS135において判断した場合、コンフィグスイッチ生成手段115bは、スキャナー用DLL14のソースファイルであるscanner.cpp114eをコンパイル対象ファイルとしてコンフィグスイッチ114hを更新する。
制御部115の機能有無判断手段115aは、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15に対応する機能が対象の機能別ブロック120に含まれていないとS135において判断するか、S136の処理が終了すると、記憶部114上の機能仕様書ファイル114iの機能仕様書において現在対象にしている機能別ブロック120の次の機能別ブロック120が存在するか否かを判断する(S137)。
機能有無判断手段115aは、次の機能別ブロック120が存在するとS137において判断すると、機能仕様書において現在対象にしている機能別ブロック120の次の機能別ブロック120を新たな対象にして(S138)、再びS135の処理に戻る。
制御部115のコンフィグスイッチ生成手段115bは、次の機能別ブロック120が存在しないとS137において判断されると、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のソースファイルのうち、S136においてコンパイル対象ファイルとされなかったソースファイルが存在するか否かを判断する(S139)。
コンフィグスイッチ生成手段115bは、コンパイル対象ファイルとされなかったソースファイルが存在するとS139において判断すると、そのソースファイルを非コンパイル対象ファイルとしてコンフィグスイッチ114hを更新する(S140)。
コンフィグスイッチ生成手段115bは、コンパイル対象ファイルとされなかったソースファイルが存在しないとS139において判断するか、S140の処理を終了すると、図20に示す処理を終了する。
図21は、デバイス用DLL12、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15を生成する場合のコンピューター110の動作のフローチャートである。
コンピューター110の制御部115は、操作部111を介してコンパイルが指示されると、図21に示す処理を実行する。
図21に示すように、制御部115のコンパイラー115cは、記憶部114上のmakefile114gの記述と、makefile114gにおいてコンパイル対象ファイルの指定の参照先として記述されているコンフィグスイッチ114hの記述とに従って、device.cpp114c、printer.cpp114d、scanner.cpp114eまたはfax.cpp114fをコンパイルする(S141)。
例えば、コンパイラー115cは、コンフィグスイッチ114hにおいてコンパイル対象ファイルとしてdevice.cpp114c、printer.cpp114dおよびscanner.cpp114eが指定されていて、非コンパイル対象ファイルとしてfax.cpp114fが指定されている場合、device.cpp114c、printer.cpp114dおよびscanner.cpp114eのみをコンパイルしてデバイス用DLL12、プリンター用DLL13およびスキャナー用DLL14のみを生成し、FAX通信装置用DLL15を生成しない。
制御部115は、S141の処理の後、図21に示す処理を終了する。
コンピューター110によって以上のように生成されたデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14またはFAX通信装置用DLL15は、上述したようにUSBメモリー45aを介して画像形成装置10の不揮発性記憶装置44上に書き込まれる。
以上に説明したように、画像形成装置10は、スキャナー47a、FAX通信装置48aが本体20に対して着脱される場合、不揮発性記憶装置44上のスキャナー用DLL14、FAX通信装置用DLL15が書き換えられれば良く、実行ファイル11が再ビルドされる必要がない。したがって、画像形成装置10は、スキャナー47a、FAX通信装置48aの着脱によって従来より容易に機能がカスタマイズされることができる。
また、画像形成装置10は、スキャナー用DLL14、FAX通信装置用DLL15を記憶しているUSBメモリー45aがUSBコネクター45bに電気的に接続されるだけでスキャナー用DLL14、FAX通信装置用DLL15が書き換えられるので、容易に機能がカスタマイズされることができる。
なお、ROM32に記憶されている実行ファイル11は、本実施の形態において、不揮発性記憶装置44に記憶されているデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15がダイナミックリンクされるようにパスが設定されているが、USBコネクター45bに電気的に接続されているUSBメモリー45aに記憶されているデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15がダイナミックリンクされるようにパスが設定されていても良い。そのように構成されている場合、不揮発性記憶装置44にデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15が記憶される必要がない。
また、変更後のデバイス用DLL12、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15は、本実施の形態において、USBメモリー45aを介して本体20に導入されるようになっているが、USBメモリー45a以外の記憶媒体を介して本体20に導入されるようになっていても良い。
コンピューター110は、画像形成装置10の機能仕様書に記載されている機能に対応するプリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のソースファイル、すなわち、printer.cpp114d、scanner.cpp114eまたはfax.cpp114fをコンパイルの対象とする(S135でYESおよびS136)ので、適切なデバイス別DLLを容易に生成することができる。
コンピューター110は、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15に対応する機能が機能仕様書に含まれているか否かを機能仕様書の機能別ブロック120毎に判断する(S134、S138)ので、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15に対応する機能が機能仕様書に含まれているか否かを機能別ブロック120毎ではなく機能仕様書全体に対して一括して判断する構成と比較して、機能仕様書の内容に沿っていない不適切なダイナミックリンクライブラリーを生成する可能性を低減することができる。
なお、コンピューター110は、プリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15に対応する機能が機能仕様書に含まれているか否かを機能別ブロック120毎ではなく機能仕様書全体に対して判断するようになっていても良い。
コンピューター110は、機能仕様書に所定のキーワードが含まれている場合にこのキーワードに対応するプリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のソースファイルをコンパイルの対象とするようになっているが、機能仕様書に所定のキーワードが2以上の所定の数以上含まれている場合にこのキーワードに対応するプリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のソースファイルをコンパイルの対象とするようになっていても良い。
コンピューター110は、機能仕様書に所定のキーワードが2以上の所定の数以上含まれている場合にこのキーワードに対応するプリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のソースファイルをコンパイルの対象とするようになっている場合、機能仕様書に所定のキーワードが1つでも含まれている場合にこのキーワードに対応するプリンター用DLL13、スキャナー用DLL14およびFAX通信装置用DLL15のソースファイルをコンパイルの対象とする構成と比較して、機能仕様書の内容に沿っていない不適切なダイナミックリンクライブラリーを生成する可能性を低減することができる。
コンピューター110は、機能仕様書ファイル114iが機能仕様書とともに、この機能仕様書を処理するコンフィグスイッチ生成プログラム114aをマクロとして含んでいても良い。例えば、機能仕様書ファイル114iは、コンフィグスイッチ生成プログラム114aをマクロとして含んでいるMicrosoft(登録商標) WordのファイルまたはMicrosoft Excel(登録商標)のファイルであっても良い。
コンピューター110は、機能仕様書ファイル114iが機能仕様書とともに、この機能仕様書を処理するコンフィグスイッチ生成プログラム114aをマクロとして含んでいる場合、コンフィグスイッチ生成プログラム114aと、機能仕様書ファイル114iとが別々に備えられている構成と比較して、デバイス別DLLを容易に生成することができる。
なお、図20に示す処理を実行するコンピューターと、図21に示す処理を実行するコンピューターとは、本実施の形態において、同一のコンピューター110である。しかしながら、図20に示す処理を実行するコンピューターと、図21に示す処理を実行するコンピューターとは、別々のコンピューターであっても良い。
(第2の実施の形態)
図22は、本実施の形態に係る画像形成装置210の構成を示すブロック図である。なお、画像形成装置210の構成のうち、第1の実施の形態に係る画像形成装置10(図1および図2参照。)の構成と同様な構成については画像形成装置10の構成と同一の符号を付して説明を省略する。
図22に示すように、画像形成装置210の構成は、画像形成装置10(図2参照。)がUSBメモリー45aおよびUSBコネクター45bを備えておらず、スキャナー47a、スキャナー用コネクター47b、FAX通信装置48a、FAX通信装置用コネクター48bに代えてスキャナー247a、スキャナー用コネクター247b、FAX通信装置248a、FAX通信装置用コネクター248bを備えている構成と同様である。
スキャナー247aは、スキャナー用DLL14を記憶している記憶媒体として不揮発性記憶装置247cを備えている。つまり、不揮発性記憶装置247cは、スキャナー247aと一体である。
スキャナー用コネクター247bは、スキャナー247aが電気的に接続されることによって不揮発性記憶装置247cが電気的に接続される。
FAX通信装置248aは、FAX通信装置用DLL15を記憶している記憶媒体として不揮発性記憶装置248cを備えている。つまり、不揮発性記憶装置248cは、FAX通信装置248aと一体である。
FAX通信装置用コネクター248bは、FAX通信装置248aが電気的に接続されることによって不揮発性記憶装置248cが電気的に接続される。
以上の構成により、画像形成装置210は、スキャナー247a、FAX通信装置248aが本体20に電気的に接続されるだけでスキャナー用DLL14、FAX通信装置用DLL15が書き換えられるので、容易に機能がカスタマイズされることができる。
なお、上述した各実施の形態において、本体20に電気的に着脱可能なデバイスとしてスキャナーおよびFAX通信装置について説明したが、これらのデバイス以外のデバイスであっても良い。