(57)【特許請求の範囲】
【請求項１】
複数種類の更新プログラムを複数種類の機能ごとの更新状態を含む更新情報とともに記憶するサーバと通信可能な画像形成装置であって、
実行プログラムを記憶するプログラム記憶手段と、
記憶された前記実行プログラムを実行し、複数種類の機能の少なくとも１つを実行する機能実行手段と、
複数種類の前記機能のいずれかが実行されると、実行された前記機能毎に該機能の実行に関する履歴情報を記憶する履歴記憶手段と、
前記履歴情報と前記サーバに記憶されている前記更新情報とに基づいて、前記サーバに記憶された複数種類の前記更新プログラムのうち前記履歴情報に含まれる前記機能に関する部分が更新されている前記更新プログラムを、前記実行プログラムを更新するための対象プログラムと決定する決定手段と、
決定された前記対象プログラムを取得し、取得された前記対象プログラムで前記プログラム記憶手段に記憶されている前記実行プログラムを更新する更新手段と、
他の画像形成装置が複数種類の前記機能を実行し、前記機能の実行に関する履歴情報を前記他の画像形成装置から取得する履歴情報収集手段と、
前記履歴記憶手段に記憶される前記履歴情報を、前記他の画像形成装置から取得された前記履歴情報で更新する履歴情報更新手段と、を備え、
前記履歴情報は、前記機能が実行されて発生した不具合を特定する不具合識別情報を該機能と関連付けた不具合情報を含み、
前記決定手段は、複数種類の前記更新プログラムのうち前記不具合情報に含まれる前記不具合識別情報と関連付けられた前記機能に関する部分が更新されている前記更新プログラムをさらに前記対象プログラムに決定し、
前記更新情報は、前記更新プログラムに対応して更新の緊急度合いを示す緊急情報を含み、
前記決定手段は、所定の緊急度合い以上である前記緊急情報に対応する前記更新プログラムを、前記履歴情報の有無に係わらず、前記対象プログラムに決定する、画像形成装置。
【請求項２】
前記履歴情報は、前記機能が実行された頻度を含み、
前記決定手段は、複数種類の前記更新プログラムのうち前記履歴情報において前記頻度が所定値以上の前記機能に関する部分が更新されている前記更新プログラムを前記対象プログラムに決定する、請求項１に記載の画像形成装置。
【請求項３】
前記機能を実行する指示が受け付けられたとき、前記更新情報を参照して、実行が指示された前記機能に関する部分が更新された前記更新プログラムが存在する場合、警告を出力する警告手段をさらに備えた、請求項１または２に記載の画像形成装置。
【請求項４】
前記更新手段は、所定のタイミングに、決定された前記対象プログラムで、前記プログラム記憶手段に記憶されている前記実行プログラムを更新する、請求項１〜３のいずれかに記載の画像形成装置。
【請求項５】
複数種類の更新プログラムを複数種類の機能ごとの更新状態を含む更新情報とともに記憶するサーバと通信可能な画像形成装置であって、
実行プログラムを記憶するプログラム記憶手段と、
記憶された前記実行プログラムを読出し、複数種類の機能の少なくとも１つを実行する機能実行手段と、
複数種類の前記機能が実行されると、前記機能の実行に関し、前記機能が実行されて発生した不具合を特定する不具合識別情報を該機能と関連付けた不具合情報を含む履歴情報を記憶する履歴記憶手段と、
前記プログラム記憶手段に記憶されている前記実行プログラムのバージョン情報および前記履歴情報を前記サーバに送信する履歴情報送信手段と、
前記履歴情報の送信に応じて、前記サーバに記憶された複数種類の前記更新プログラムのうち前記履歴情報に含まれる前記機能に関する部分が更新されている前記更新プログラムを、前記実行プログラムを更新するための対象プログラムとして前記サーバから受信する受信手段と、
受信された前記対象プログラムで、前記プログラム記憶手段に記憶されている前記実行プログラムを更新する更新手段と、
他の画像形成装置が複数種類の前記機能を実行し、前記機能の実行に関する履歴情報を前記他の画像形成装置から取得する履歴情報収集手段と、
前記履歴記憶手段に記憶される前記履歴情報を、前記他の画像形成装置から取得された前記履歴情報で更新する履歴情報更新手段と、を備え、
前記更新情報は、前記更新プログラムに対応して更新の緊急度合いを示す緊急情報を含み、
前記対象プログラムは、複数種類の前記更新プログラムのうち前記不具合情報に含まれる前記不具合識別情報と関連付けられた前記機能に関する部分が更新されている前記更新プログラムが存在する場合は該更新プログラムに前記サーバにより決定され、所定の緊急度合い以上である前記緊急情報に対応する前記更新プログラムが存在する場合は該更新プログラムに、前記履歴情報の有無に係わらず、前記サーバにより決定される、画像形成装置。
【請求項６】
前記サーバから前記更新情報を受信する更新情報受信手段と、
機能を実行させる指示を受け付ける指示受付手段と、
受け付けられた前記指示で特定される前記機能に関する部分が更新されているか否かを、前記更新情報に基づいて判断する判断手段と、
前記判断手段により更新されていないと判断された場合、警告を出力する警告手段と、をさらに備えた請求項５に記載の画像形成装置。
【請求項７】
前記更新手段は、所定のタイミングに、受信された前記対象プログラムで、前記プログラム記憶手段に記憶されている前記実行プログラムを更新する、請求項５または６に記載の画像形成装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、画像形成装置、プログラム更新システム、プログラム更新方法およびプログラム更新プログラムに関し、特に複数人により使用される画像形成装置、その画像形成装置を含むプログラム更新システム、その画像形成装置で実行されるプログラムを更新するためのプログラム更新方法およびプログラム更新プログラムに関する。
【背景技術】
【０００２】
近年、複合機（以下「ＭＦＰ」という）は、プログラムを実行することにより機能を実行する。このプログラムは、ＭＦＰに機能が追加される場合や、インストールされていたプログラムに不具合が発見された場合等に、更新される。プログラムを更新するためには、新たなプログラムを、例えばＭＦＰのメーカが提供するＷｅｂサーバ等からダウンロードし、ＭＦＰがそれまで記憶していたプログラムを書き換える作業が必要である。また、場合によっては、ＭＦＰをリブートする手順が必要な場合がある。このように、ＭＦＰが記憶するプログラムを更新する場合には、ある程度の時間が必要とされる。
【０００３】
また、ＭＦＰがプログラムを書き換えている最中、およびＭＦＰをリブートしている最中はＭＦＰを使用することができない。したがって、複数のユーザが共有して使用するＭＦＰにおいては、プログラムを更新する頻度は少ないほど望ましい。
【０００４】
特開２００１−６７２２８号公報には、プリンタファームウェアの一部または全部をホストＰＣが持ち、印刷処理を行う度にプリンタドライバがプリンタの動作ファームウェアの状態と利用アプリケーションが要求するファームウェアとを比較して必要なモジュールだけプリンタ側にダウンロードするファームウェアのダウンロード方式が記載されている。
【０００５】
しかしながら、従来のダウンロード方式においては、プリンタで実行する処理が定まってからでないと、ファームウェアをダウンロードしないので、プリンタで実行する処理が定まってからファームウェアをダウンロードするまでの時間が必ず必要となり、処理を実行するまでに長時間かかるといった問題がある。
【特許文献１】特開２００１−６７２２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
この発明は上述した問題点を解決するためになされたもので、この発明の目的の一つは、使用できなくなる期間を短くした画像形成装置を提供することである。
【０００７】
この発明の他の目的は、画像形成装置を使用できなくなる期間を短くしたプログラム更新システム、プログラム更新方法およびプログラム更新プログラムを提供することである。
【課題を解決するための手段】
【０００８】
上述した目的を達成するためにこの発明のある局面によれば、画像形成装置は、複数種類の更新プログラムを複数種類の機能ごとの更新状態を含む更新情報とともに記憶するサーバと通信可能な画像形成装置であって、実行プログラムを記憶するプログラム記憶手段と、記憶された実行プログラムを実行し、複数種類の機能の少なくとも１つを実行する機能実行手段と、複数種類の機能のいずれかが実行されると、実行された機能毎に該機能の実行に関する履歴情報を記憶する履歴記憶手段と、履歴情報とサーバに記憶されている更新情報とに基づいて、サーバに記憶された複数種類の更新プログラムのうち履歴情報に含まれる機能に関する部分が更新されている更新プログラムを、実行プログラムを更新するための対象プログラムと決定する決定手段と、決定された対象プログラムを取得し、取得された対象プログラムでプログラム記憶手段に記憶されている実行プログラムを更新する更新手段と、他の画像形成装置が複数種類の機能を実行し、機能の実行に関する履歴情報を他の画像形成装置から取得する履歴情報収集手段と、履歴記憶手段に記憶される履歴情報を、他の画像形成装置から取得された履歴情報で更新する履歴情報更新手段と、を備え、履歴情報は、機能が実行されて発生した不具合を特定する不具合識別情報を該機能と関連付けた不具合情報を含み、決定手段は、複数種類の更新プログラムのうち不具合情報に含まれる不具合識別情報と関連付けられた機能に関する部分が更新されている更新プログラムをさらに対象プログラムに決定し、更新情報は、更新プログラムに対応して更新の緊急度合いを示す緊急情報を含み、決定手段は、所定の緊急度合い以上である緊急情報に対応する更新プログラムを、履歴情報の有無に係わらず、対象プログラムに決定する。
【０００９】
この局面に従えば、記憶された実行プログラムが実行され、複数種類の機能の少なくとも１つが実行されると、実行された機能毎に該機能の実行に関する履歴情報が記憶され、記憶される履歴情報が他の画像形成装置から取得された履歴情報で更新される。そして、履歴情報とサーバに記憶されている更新情報とに基づいて、サーバに記憶された複数種類の更新プログラムのうちから対象プログラムが決定され、決定された対象プログラムが取得され、取得された対象プログラムで実行プログラムが更新される。履歴情報は機能が実行されて発生した不具合を特定する不具合識別情報を該機能と関連付けた不具合情報を含むので、他の画像形成装置において発生した不具合情報に基づいて、対象プログラムが決定される。このため、他の画像形成装置において発生した不具合が発生する前に実行プログラムを更新することができる。また、所定の緊急度合い以上である緊急情報に対応する更新プログラムが、履歴情報の有無に係わらず、対象プログラムに決定される。このため、サーバに記憶された更新プログラムのすべてにより、実行プログラムが更新されないので、実行プログラムを更新する回数を少なくすることができる。その結果、使用できなくなる期間を短くした画像形成装置を提供することができる。
【００１１】
好ましくは、履歴情報は、機能が実行された頻度を含み、決定手段は、複数種類の更新プログラムのうち履歴情報において頻度が所定値以上の機能に関する部分が更新されている更新プログラムを対象プログラムに決定する。
【００１２】
好ましくは、機能を実行する指示が受け付けられたとき、更新情報を参照して、実行が指示された前記機能に関する部分が更新された更新プログラムが存在する場合、警告を出力する警告手段をさらに備える。
【００１３】
この局面に従えば、実行プログラムを更新するための更新プログラムが存在するにも係わらず更新されていない場合であっても、その更新プログラムにより更新される機能を実行する指示が受け付けられたときに警告が出力されるので、その時点で実行プログラムを更新することができる。
【００１６】
好ましくは、更新手段は、所定のタイミングに、決定された対象プログラムで、プログラム記憶手段に記憶されている実行プログラムを更新する。
【００１８】
この発明のさらに他の局面によれば、画像形成装置は、複数種類の更新プログラムを複数種類の機能ごとの更新状態を含む更新情報とともに記憶するサーバと通信可能な画像形成装置であって、実行プログラムを記憶するプログラム記憶手段と、記憶された実行プログラムを読出し、複数種類の機能の少なくとも１つを実行する機能実行手段と、複数種類の機能が実行されると、機能の実行に関し、機能が実行されて発生した不具合を特定する不具合識別情報を該機能と関連付けた不具合情報を含む履歴情報を記憶する履歴記憶手段と、プログラム記憶手段に記憶されている実行プログラムのバージョン情報および履歴情報を含む履歴情報をサーバに送信する履歴情報送信手段と、履歴情報の送信に応じて、サーバに記憶された複数種類の更新プログラムのうち履歴情報に含まれる機能に関する部分が更新されている更新プログラムを、実行プログラムを更新するための対象プログラムとしてサーバから受信する受信手段と、受信された対象プログラムで、プログラム記憶手段に記憶されている実行プログラムを更新する更新手段と、他の画像形成装置が複数種類の機能を実行し、機能の実行に関する履歴情報を他の画像形成装置から取得する履歴情報収集手段と、履歴記憶手段に記憶される履歴情報を、他の画像形成装置から取得された履歴情報で更新する履歴情報更新手段と、を備え、更新情報は、更新プログラムに対応して更新の緊急度合いを示す緊急情報を含み、対象プログラムは、複数種類の更新プログラムのうち不具合情報に含まれる不具合識別情報と関連付けられた機能に関する部分が更新されている更新プログラムが存在する場合は該更新プログラムにサーバにより決定され、所定の緊急度合い以上である緊急情報に対応する更新プログラムが存在する場合は該更新プログラムに、履歴情報の有無に係わらず、サーバにより決定される。
【００１９】
この局面に従えば、使用できなくなる期間を短くした画像形成装置を提供することができる。
【００２０】
好ましくは、サーバから更新情報を受信する更新情報受信手段と、機能を実行させる指示を受け付ける指示受付手段と、受け付けられた指示で特定される機能に関する部分が更新されているか否かを、更新情報に基づいて判断する判断手段と、判断手段により更新されていないと判断された場合、警告を出力する警告手段と、をさらに備える。
【００２１】
好ましくは、更新手段は、所定のタイミングに、受信された対象プログラムで、プログラム記憶手段に記憶されている実行プログラムを更新する。
【発明を実施するための最良の形態】
【００３１】
以下、本発明の実施の形態について図面を参照して説明する。以下の説明では同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがってそれらについての詳細な説明は繰返さない。
【００３２】
図１は、本発明の実施の形態の一つにおけるプログラム更新システムの全体概要を示す図である。図１を参照して、プログラム更新システム１は、ネットワーク２にそれぞれ接続されたＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）１００，１００Ａ，１００Ｂ，１００Ｃと、サーバ２００と、を含む。
【００３３】
ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃは、画像形成装置の一例である。それらのハード構成および機能は同じなので、ここではＭＦＰ１００を例に説明する。サーバ２００は、一般的なコンピュータであり、例えば、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃのメーカが提供する。サーバ２００は、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃそれぞれが実行するためのプログラムを記憶しており、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃのいずれかからのダウンロード要求に応じて、要求されたプログラムを送信する。また、サーバ２００は、プログラムが更新される毎に、その時点のプログラムを前のバージョンのプログラムから変更された情報を含む更新情報と対応付けて記憶する。
【００３４】
ネットワーク２は、ローカルエリアネットワーク（ＬＡＮ）であり、有線または無線を問わない。またネットワーク２は、ＬＡＮに限らず、インターネットなどのワイドエリアネットワーク（ＷＡＮ）、一般公衆回線を用いたネットワーク等であってもよい。
【００３５】
なお、ここでは、プログラム更新システム１が、サーバ２００と、４台のＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃを含む場合を例に説明するが、台数を限定するものではなく、１台のサーバ２００と、１台以上のＭＦＰを含んでいればよい。
【００３６】
図２は、サーバのハード構成の一例を示す図である。図２を参照して、サーバ２００は、それぞれがバス２０９に接続された中央演算装置（ＣＰＵ）２０１と、ＣＰＵ２０１の作業領域として用いられるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０５と、ＣＰＵ２０１が実行するプログラムを記憶するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０６と、ハードディスクドライブ（ＨＤＤ）２０７と、サーバ２００をネットワーク２に接続するための通信Ｉ／Ｆ２０２と、キーボードおよびマウス等を備えた入力部２０４と、情報を表示するためのモニタ２０３と、を含む。
【００３７】
図３は、ＭＦＰの外観を示す斜視図である。図３を参照して、ＭＦＰ１００は、自動原稿搬送装置（ＡＤＦ）１０と、画像読取部２０と、画像形成部３０と、給紙部４０と、後処理部５０と、を含む。
【００３８】
ＡＤＦ１０は、原稿給紙トレイ１１上にセットされた複数枚の原稿を１枚ずつ自動的に画像読取部２０のプラテンガラス上に設定された所定の原稿読み取り位置まで搬送し、画像読取部２０により原稿画像が読み取られた原稿を原稿排紙トレイ１２上に排出する。画像読取部２０は、原稿読取位置に搬送されてきた原稿に光を照射する光源と、原稿で反射した光を受光する光電変換素子とを含み、原稿のサイズに応じた原稿画像を走査する。光電変換素子は、受光した光を電気信号である画像データに変換して、画像形成部３０に出力する。給紙部４０は、給紙トレイに収納された用紙を画像形成部３０に搬送する。
【００３９】
画像形成部３０は、周知の電子写真方式により画像を形成するものであって、画像読取部２０から入力される画像データにシェーディング補正などの各種のデータ処理を施し、データ処理後の画像データに基づいて、給紙部４０により搬送される用紙に画像を形成する。
【００４０】
後処理部５０は、画像が形成された記録シートを排紙する。後処理部５０は、複数の排紙トレイを有し、画像が形成された用紙をソートして排紙することが可能である。また、後処理部５０は、パンチ穴加工部、ステープル加工部を備えており、排紙された用紙にパンチ穴加工、またはステープル加工することが可能である。また、ＭＦＰ１００は、その上面にユーザとのユーザインターフェースとしての操作パネル９を備えている。
【００４１】
なお、本実施の形態においては画像形成装置の一例としてＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃを例に説明するが、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃに代えて、たとえば、スキャナ、プリンタ、ファクシミリ、パーソナルコンピュータ等であってもよい。
【００４２】
図４は、ＭＦＰの回路構成の一例を示すブロック図である。図４を参照して、ＭＦＰ１００は、メイン回路１０１と、ファクシミリ部１２２と、通信制御部１２３と、を含む。メイン回路１０１は、自動原稿搬送装置（ＡＤＦ）１０と、画像読取部２０と、画像形成部３０と、給紙部４０と、後処理部５０とに接続されている。
【００４３】
メイン回路１０１は、ＣＰＵ１１１と、ＣＰＵ１１１の作業領域として使用されるＲＡＭ１１２と、ＣＰＵ１１１が実行するプログラム等を記憶するためのＥＥＰＲＯＭ１１３と、表示部１１４と、操作部１１５と、大容量記憶装置としてのハードディスクドライブ（ＨＤＤ）１１６と、データ通信制御部１１７と、を含む。
【００４４】
ＣＰＵ１１１は、フラッシュメモリ１１３に記憶された実行プログラムを実行して、複数の機能を実行する。フラッシュメモリ１１３は、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）である。
【００４５】
ＣＰＵ１１１は、表示部１１４、操作部１１５、ＨＤＤ１１６およびデータ通信制御部１１７と、それぞれ接続され、メイン回路１０１の全体を制御する。また、ＣＰＵ１１１は、ファクシミリ部１２２、通信制御部１２３、ＡＤＦ１０、画像読取部２０、画像形成部３０、給紙部４０、後処理部５０と接続され、ＭＦＰ１００の全体を制御する。
【００４６】
表示部１１４は、液晶表示装置（ＬＣＤ）、有機ＥＬＤ（Ｅｌｅｃｔｒｏ  Ｌｕｍｉｎｅｓｃｅｎｃｅ  Ｄｉｓｐｌａｙ）等の表示装置であり、ユーザに対する指示メニューや取得した画像データに関する情報等を表示する。操作部１１５は、複数のキーを備え、キーに対応するユーザの操作による各種の指示、文字、数字などのデータの入力を受付ける。操作部１１５は、表示部１１４上に設けられたタッチパネルを含む。表示部１１４と、操作部１１５とで、ＭＦＰ１００の上面に設けられる操作パネル９が構成される。
【００４７】
データ通信制御部１１７は、ＴＣＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ）またはＵＤＰ（Ｕｓｅｒ  Ｄａｔａｇｒａｍ  Ｐｒｏｔｏｃｏｌ）等の通信プロトコルで通信するためのインターフェースであるＬＡＮ端子１１８と、シリアル通信のためのシリアル通信インターフェース端子１１９とを有する。データ通信制御部１１７は、ＣＰＵ１１１からの指示に従って、ＬＡＮ端子１１８またはシリアル通信インターフェース端子１１９に接続された外部の機器との間でデータを送受信する。
【００４８】
ＬＡＮ端子１１８に、ネットワーク２に接続するためのＬＡＮケーブルが接続される場合、データ通信制御部１１７は、ＬＡＮ端子１１８を介して接続された他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃまたはサーバ２００と通信する。さらに、データ通信制御部１１７は、インターネットに接続された他のコンピュータと通信する。ＣＰＵ１１１は、データ通信制御部１１７を制御して、サーバ２００からプログラムをダウンロードし、フラッシュメモリ１１３に記憶することにより、プログラムを更新することが可能である。プログラムは、後述する実行プログラムを含む。
【００４９】
シリアル通信インターフェース端子１１９に機器が接続された場合、データ通信制御部１１７は、シリアル通信インターフェース端子１１９に接続された機器、例えば、デジタルカメラ、デジタルビデオカメラまたは携帯情報端末との間で通信して画像データを入出力する。また、シリアル通信インターフェース端子１１９には、フラッシュメモリを内蔵したメモリカード１１９Ａが接続可能である。ＣＰＵ１１１は、データ通信制御部１１７を制御して、メモリカード１１９ＡからＣＰＵ１１１が実行するためのプログラムを読出し、フラッシュメモリ１１３に記憶することにより、プログラムを更新することが可能である。
【００５０】
なお、ＣＰＵ１１１が実行するためのプログラムを記憶する記録媒体としては、メモリカード１１９Ａに限られず、フレキシブルディスク、カセットテープ、光ディスク（ＣＤ−ＲＯＭ（Ｃｏｍｐａｃｔ  Ｄｉｓｃ−Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）／ＭＯ（Ｍａｇｎｅｔｉｃ  Ｏｐｔｉｃａｌ  Ｄｉｓｃ）／ＭＤ（Ｍｉｎｉ  Ｄｉｓｃ）／ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ））、ＩＣカード（メモリカードを含む）、光カード、マスクＲＯＭ、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｏｎｉｃａｌｌｙ  ＥＰＲＯＭ）などの半導体メモリ等の媒体でもよい。さらに、ＣＰＵ１１１がサーバ２００からプログラムをダウンロードしてフラッシュメモリ１１３に記憶する、または、サーバ２００がプログラムをフラッシュメモリ１１３に書込みするようにして、フラッシュメモリ１１３に記憶されたプログラムをＲＡＭ１１２にロードしてＣＰＵ１１１で実行するようにしてもよい。ここでいうプログラムは、ＣＰＵ１１１により直接実行可能なプログラムだけでなく、ソースプログラム、圧縮処理されたプログラム、暗号化されたプログラム等を含む。
【００５１】
通信制御部１２３は、ＣＰＵ１１１を公衆交換電話網（ＰＳＴＮ）７に接続するためのモデムである。ＭＦＰ１００には、ＰＳＴＮ７における電話番号が予め割り当てられており、ＰＳＴＮ７に接続されたファクシミリ装置からＭＦＰ１００に割り当てられた電話番号に発呼があると、通信制御部１２３がその発呼を検出する。通信制御部１２３は、発呼を検出すると通話を確立し、ファクシミリ部１２２に通信させる。
【００５２】
ファクシミリ部１２２は、ＰＳＴＮ７に接続され、ＰＳＴＮ７にファクシミリデータを送信する、またはＰＳＴＮ７からファクシミリデータを受信する。
【００５３】
図５は、サーバが備えるＣＰＵ２０１の機能の一例を、ＨＤＤ２０７に記憶されるデータとともに示す機能ブロック図である。図５を参照して、ＨＤＤ２０７は、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃが実行するためのバージョン１．０のプログラム２２０と、バージョン１．１のプログラム２２１と、バージョン１．２のプログラム２２２と、バージョン１．３のプログラム２２３と、更新情報２３１とを記憶する。更新情報２３１は、プログラム２２０〜２２３がＨＤＤ２０７に記憶される際に、ＨＤＤ２０７に記憶される。
【００５４】
図６は、更新情報の一例を示す図である。更新情報２３１は、各プログラム２２０〜２２３の関連を定義するとともに、プログラム２２０〜２２３の違いを定義する。図６を参照して、バージョン１．０のプログラム２２０が、最も古いプログラムであり、バージョン１．１、バージョン１．２、バージョン１．３の順に新しいプログラムである。更新情報は、プログラム毎に、更新内容と、緊急度とを定義する。更新内容は、モジュールおよび機能毎に更新内容の詳細を含む。モジュールおよび機能は、ＭＦＰ１００が実行可能な複数の機能の分類を示す。
【００５５】
ここでは、モジュールは、ＭＦＰ１００が実行可能な複数の機能の大分類を示し、プログラムを実行するためのＢｏｏｔ機能、操作パネル９の入出力を制御するためのパネル機能、データを受信するためのデータ受信機能、コピー機能、スキャン機能、ＨＤＤ１１６に記憶するデータを管理するためのＢＯＸ機能、ファクシミリ部１２２の送受信を制御するためのＦＡＸ機能、ＡＤＦ１０を制御するためのＡＤＦ機能、後処理部５０を制御するためのフィニッシャ機能、ユーザ認証するための認証機能、データのファイル形式を変換するためのファイル変換機能、画像データを処理するための画像処理機能、およびデータ通信制御部１１７を制御するためのネットワーク機能を含む。Ｂｏｏｔ機能のモジュールには、ＭＦＰ１００を起動させる機能と、プログラムを更新する機能とが含まれる。例えば、パネル機能のモジュールには、パネルに入力される操作を受け付けるためのパネル受付処理機能と、パネルに情報を表示するパネル表示機能とを含む。データ受信機能のモジュールには、データを受信するためのデータ受信処理機能が含まれる。
【００５６】
プログラム２２０〜２２３は、ＭＦＰ１００が備えるＣＰＵ１１１がそれを実行することにより、上記機能がＭＦＰ１００で実行される。更新内容は、プログラム２２０〜２２３が変更された部分に相当する部分で実行される機能毎に、変更された具体的な内容を定義する。具体的には、バージョン１．１のプログラム２２１は、バージョン１．０のプログラム２２０に対して、モジュールＣの機能Ｃ１を実行するための部分のバグが修正されたことを示す。バージョン１．２のプログラム２２２は、バージョン１．１のプログラム２２１に対して、モジュールＡの機能Ａ１を実行するための部分に新たな機能が追加されたことを示す。バージョン１．３のプログラム２２３は、バージョン１．２のプログラム２２２に対して、モジュールＢの機能Ｂ２を実行するための部分が機能変更されたことを示す。
【００５７】
また、更新情報は、プログラム毎に緊急度を定義する。緊急度は、プログラム２２０〜２２３のバージョンを管理する管理者により付与され、緊急度Ａ、ＢおよびＣのいずれかである。緊急度は、そのプログラムに更新するための重要度を示し、緊急度Ａが最も重要度が高く、緊急度Ｃが最も重要度が低い。ここでは、バージョン１．１のプログラム２２１に対して緊急度Ａが、バージョン１．２のプログラム２２２に対して緊急度Ｂが、バージョン１．３のプログラム２２３に対して緊急度Ｃがそれぞれ付与されている。
【００５８】
図５に戻って、ＣＰＵ２０１は、プログラム２２１〜２２３のいずれかを送信するプログラム送信部２１１と、更新情報２３１を送信する更新情報送信部２１３とを含む。サーバ２００は、通信Ｉ／Ｆ２０２を介して、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃと通信可能であり、通信Ｉ／Ｆ２０２がＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃのいずれかから更新情報の送信要求またはプログラムの送信要求を受信すると、通信Ｉ／Ｆ２０２は、ＣＰＵ２０１に更新情報の送信要求またはプログラムの送信要求を出力する。
【００５９】
更新情報送信部２１３は、通信Ｉ／Ｆ２０２から更新情報の送信要求が入力されると、更新情報２３１を読み出し、通信Ｉ／Ｆ２０２を制御して、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃのうち更新情報の送信要求を送信してきたＭＦＰに対して更新情報２３１を送信する。プログラム送信部２１１は、プログラムの送信要求が通信Ｉ／Ｆ２０２から入力されると、プログラム２２１〜２２３のうち要求されたプログラムを読出し、通信Ｉ／Ｆ２０２を制御して、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃのうちプログラムの送信要求を送信してきたＭＦＰに対して読み出したプログラムを送信する。
【００６０】
図７は、ＭＦＰ１００が備えるＣＰＵ１１１の機能の概要を、フラッシュメモリ１１３に記憶されるデータとともに示す機能ブロック図である。図７を参照して、フラッシュメモリ１１３は、実行プログラム７１と、実績情報７３と、不具合発生情報リスト７５とを記憶する。ＣＰＵ１１１は、実行プログラム７１を実行し、機能を実行する機能実行部５１と、サーバ２００からプログラムをダウンロードするためのダウンロード部５３と、ダウンロードされたプログラムで実行プログラム７１を更新するための更新部５５と、サーバ２００から更新情報を取得するための更新情報取得部５７と、実行プログラム７１を更新するか否かを判断するための判断部５９と、実績情報７３および不具合発生情報リスト７５を更新するための履歴更新部６３と、警告を発する警告部６１とを含む。
【００６１】
機能実行部５１は、フラッシュメモリ１１３に記憶されている実行プログラム７１をＲＡＭ１１２にロードし、実行プログラム７１を実行する。ここでは、実行プログラム７１として、バージョン１．０のプログラムが記憶されている場合を例に説明する。機能実行部５１は、ユーザにより操作部１１５に入力される操作を受け付け、実行プログラム７１を実行することにより、受け付けた操作により特定される機能を実行する。また、ＭＦＰ１００がネットワーク２に接続された他のＭＦＰ１００Ａ，１００Ｂ，１００ＣまたはＰＣ２００から遠隔操作される場合、機能実行部５１は、データ通信制御部１１７が遠隔操作元の装置から受信する操作がデータ通信制御部１１７から入力され、入力される操作により特定される機能を実行する。機能実行部５１は、機能を実行すると機能毎の実績を実績情報としてフラッシュメモリ１１３に記憶する。また、機能実行部５１は、機能を実行する際に、エラー等の不具合が発生した場合には不具合発生情報をフラッシュメモリ１１３に記憶する。
【００６２】
図８は、実績情報の一例を示す図である。図８を参照して、実績情報は、機能毎に使用回数と、頻度と、を記録する。使用回数は、その機能が機能実行部５１により実行された回数であり、頻度は、機能実行部５１が機能を実行した総回数に対するその機能が実行された回数の割合である。機能実行部５１は、同時に複数の機能を実行する場合がある。例えば、コピー機能とフィニッシャ機能とを同時に実行する等の場合である。この場合は、全体として１回で全回数をカウントする。
【００６３】
図９は、不具合発生情報リストの一例を示す図である。図９を参照して、不具合発生情報リスト７５は、機能と不具合コードとの組と、不具合ランクと、発生頻度とを含む不具合情報を記憶する。不具合コードは、不具合の種類毎に予め定められたコードである。不具合ランクは、機能と不具合コードとの組に対して予め定められる。異なる機能で同じ不具合が発生する場合があるが、不具合ランクが異なる場合がある。図９において、モジュールＡの機能Ａ２を実行する際に発生する不具合コードＣ−００１１の不具合に対する不具合ランクがＡであるのに対して、モジュールＢの機能Ｂ２を実行する際に発生する不具合コードＣ−００１１の不具合に対する不具合ランクはＢである。発生頻度は、機能が実行された全回数に占める不具合コードで特定される不具合の発生した回数の割合である。
【００６４】
図７に戻って、更新情報取得部５７は、サーバ２００に更新情報の送信要求を送信し、サーバ２００から更新情報２３１を受信する。具体的には、データ通信制御部１１７を制御して、更新情報の送信要求を送信し、データ通信制御部１１７がサーバ２００から更新情報２３１を受信すると、データ通信制御部１１７から更新情報２３１が入力される。更新情報取得部５７は、データ通信制御部１１７から入力される更新情報２３１を判断部５９および警告部６１に出力する。
【００６５】
判断部５９は、フラッシュメモリ１１３に記憶されている実績情報に基づいて、実行プログラム７１を更新するか否かを判断する。具体的には、更新情報２３１に記録されている更新内容に基づいて、実行プログラム７１より新しいバージョンのプログラム毎に更新の対象となった機能を特定する。そして、フラッシュメモリ１１３に記憶されている実績情報７３に、特定された機能（更新された部分に対応する機能）が実行されていることが記録されているか否かを判断する。特定された機能が実行されていることが実績情報７３に記録されていれば、実行プログラム７１を更新すると判断する。この際、特定された機能が更新された新しいバージョンのプログラムを、実行プログラム７１を更新するためのプログラム（以下「対象プログラム」という）に決定する。なお、特定された機能（更新された部分に対応する機能）が実行されていることが実績情報に記録されていることを条件とするのに代えて、特定された機能（更新された部分に対応する機能）が所定の頻度を越えて実行されていることが実績情報に記録されていることを条件とするようにしてもよい。
【００６６】
さらに、判断部５９は、不具合発生情報リスト７５に基づいて、実行プログラム７１を更新するか否かを判断する。具体的には、フラッシュメモリ１１３に記憶されている不具合発生情報リスト７５を読出し、不具合発生情報リスト７５に記録されている不具合発生情報に含まれる機能（不具合の発生した機能）を特定する。そして、不具合発生情報に含まれる不具合ランクと発生頻度とが予め定められた不具合条件に合致するか否かを判断する。不具合条件に合致する場合、特定された機能（不具合の発生した機能）に関する部分が更新されたプログラムが更新情報２３１で定義されていれば、実行プログラム７１を更新すると判断する。この際、特定された機能（不具合の発生した機能）に関する部分が更新されたプログラムであって、フラッシュメモリ１１３に記憶されている実行プログラム７１のバージョンよりも新しいバージョンのプログラムを、対象プログラムに決定する。
【００６７】
図１０は、不具合条件テーブルの一例を示す図である。不具合条件テーブルは、不具合条件を定義し、ＭＦＰ１００の管理者により設定され、予めフラッシュメモリ１１３に記憶される。図１０を参照して、不具合条件テーブルは、更新が必要な不具合ランクを定義する。例えば、番号１の不具合条件は、不具合ランクがＡであれば、更新が必要であることを定義する。また、更新が必要な不具合ランク、発生回数および／または発生頻度の組を定義する。例えば、番号２の不具合条件は、不具合ランクがＢであって、かつ発生回数が２回以上かつ発生頻度が５０％以上であれば、更新が必要であることを定義する。さらに、不具合条件テーブルは、更新が必要な不具合ランクと機能との組を定義する。例えば、番号３の不具合条件は、機能Ａ２について、不具合ランクがＢ以上、具体的には、ＡまたはＢの場合に更新が必要であることを定義する。さらに、不具合条件テーブルは、更新が必要な機能と不具合コードとの組を定義する。例えば、番号４の不具合条件は、機能Ｂ１と不具合コードＣ−００３の組に対して、更新が必要であることを定義する。
【００６８】
図７に戻って、判断部５９は、さらに、更新情報２３１の緊急度を参照し、緊急度に基づいて実行プログラム７１を更新するか否かを判断する。具体的には、更新情報２３１によってプログラムに割り当てられた緊急度が予め定められた緊急度条件に一致すれば、そのプログラムを対象プログラムとし、実行プログラム７１を更新すると判断する。また、判断部５９は、更新情報２３１の緊急度および実績情報に基づいて実行プログラム７１を更新するか否かを判断する。具体的には、プログラムに割り当てられた緊急度およびそのプログラムの機能の使用回数または使用頻度が緊急度条件に一致すれば、そのプログラムを対象プログラムとし、実行プログラム７１を更新すると判断する。
【００６９】
図１１は、緊急度条件テーブルの一例を示す図である。図１１を参照して、緊急度条件テーブルは、緊急度条件を定義し、ＭＦＰ１００の管理者により設定され、予めフラッシュメモリ１１３に記憶される。緊急度条件テーブルは、更新が必要な緊急度を定義する緊急度条件を含む。例えば、番号１の緊急度条件は、更新が必要な緊急度にＡを定義する。また、緊急度条件テーブルは、更新が必要な緊急度と使用実績との組みを含む緊急度条件を含む。例えば、番号２の緊急度条件は、更新が必要な条件として、緊急度がＢ以上、具体的には緊急度がＢで、かつ使用暦がある条件を定義する。使用歴の有無は、実績情報７３におけるプログラムの機能に対応する使用回数に基づいて判断される。使用回数が１以上であれば使用歴ありと判断する。また、番号３の緊急度条件は、更新が必要な条件として、緊急度がＣで、かつ使用歴があり、かつ使用頻度が２０％以上の条件を定義する。使用頻度は、実績情報７３におけるプログラムの機能に対応する使用頻度に基づいて判断される。
【００７０】
図７に戻って、判断部５９は、実行プログラム７１を更新すると判断した場合、対象プログラムを特定するための識別情報を、更新部５５に通知する。識別情報は、バージョン情報を含む。対象プログラムの候補が複数存在する場合には、複数の対象プログラムのうち最新のバージョンのプログラムを、実行プログラム７１を更新するための唯一のプログラムに決定する。
【００７１】
更新部５５は、判断部５９から対象プログラムが通知されると、ダウンロード部５３に対象プログラムをサーバ２００からダウンロードさせる。ダウンロード部５３は、データ通信制御部１１７を制御して、更新部５５から入力される通知に含まれる識別情報をサーバ２００に送信し、サーバ２００から送信される対象プログラムを受信する。ダウンロード部５３は、受信した対象プログラムを、更新部５５に出力する。更新部５５は、ダウンロード部５３から対象プログラムが入力されると、その対象プログラムでフラッシュメモリ１１３に記憶されている実行プログラム７１を更新する。具体的には、サーバ２００から受信した対象プログラムで実行プログラム７１を書き換える。また、更新部５５は、必要に応じて、ＣＰＵ１１１をリブートする。
【００７２】
更新部５５は、予め定められたタイミングで、フラッシュメモリ１１３に記憶されている実行プログラム７１を、サーバ２００から受信した対象プログラムで更新する。予め定められたタイミングは、ＭＦＰ１００の電源をＯＦＦにする指示が入力された後、ＭＦＰ１００の電源がＯＮになった後、ユーザにより予め定められた時刻等である。予め定められた時刻は、例えば、夜間など、ＭＦＰ１００を使用する頻度の少ない時間帯に設定するのが望ましい。実行プログラムを書き換える、さらに場合によってはリブートすることにより、その間ＭＦＰ１００が使用できない状態になるが、電源をＯＮまたはＯＦＦにする指示が入力された後、予め定められた時刻は、ＭＦＰ１００が使用される可能性がないか、または使用される確率が低い。このため、ユーザがＭＦＰ１００の使用を試みるときに、ＭＦＰ１００を直ちに使用できる状態にすることができる。また、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃが同時に実行プログラムを更新しないように、予め定められた時刻を異ならせるのが望ましい。ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃの複数を同時に使用できなくなるのを回避するためである。
【００７３】
履歴更新部６３は、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃそれぞれが記憶する実績情報を取得し、取得した実績情報で、フラッシュメモリ１１３に記憶されている実績情報７３を更新する。したがって、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃそれぞれが実行した機能に基づく実績情報がＭＦＰ１００のフラッシュメモリ１１３に記憶される。このため、ＭＦＰ１００Ａ，１００Ｂ，１００Ｃの使用状態をＭＦＰ１００に反映することができるので、実行プログラムを更新するためのプログラムを適切に定めることができる。また、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃのいずれかを主に使用するユーザが、ＭＦＰ１００を使用する場合でも、主に使用していたＭＦＰにインストールされているプログラムと同じプログラムが実行されるので、主に使用していたＭＦＰが実行するのと同じ機能をＭＦＰ１００に実行させることができる。
【００７４】
また、履歴更新部６３は、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃそれぞれが記憶する不具合発生情報リストを取得し、取得した不具合発生情報リストに含まれる不具合発生情報で、フラッシュメモリ１１３に記憶されている不具合発生情報リスト７５を更新する。このため、ＭＦＰ１００Ａ，１００Ｂ，１００Ｃにおける不具合の発生状態をＭＦＰ１００に反映することができるので、実行プログラムを更新するためのプログラムを適切に定めることができる。また、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃのいずれかで発生した不具合が、ＭＦＰ１００において発生していない場合であっても、その不具合が発生するのを事前に防止することができる。
【００７５】
警告部６１は、更新情報取得部５７から更新情報２３１が入力される。警告部６１は、機能実行部５１が機能を実行する前に、実行プログラム７１を更新する必要があるか否かを判断する。ここでは、機能実行部５１が実行しようとする機能を対象機能という。警告部６１は、更新情報２３１を参照して、実行プログラム７１の対象機能に対応する部分を更新するためのプログラムが存在するか否かを判断する。実行プログラム７１の対象機能に対応する部分を更新するためのプログラムが存在するか否かは、更新情報２３１に対処機能が更新されたプログラムであって、実行プログラム７１のバージョンよりも新しいバージョンのプログラムが存在するか否かを判断する。そのようなプログラムが存在すれば、そのプログラムを対象プログラムに決定し、実行プログラム７１を更新するためのプログラムが存在すると判断する。
【００７６】
警告部６１は、実行プログラム７１を更新するためのプログラム（対象プログラム）が存在と判断した場合、警告を発する。警告は、例えば、表示部１１４に警告メッセージを出力する、または、警告音をスピーカから出力する等である。ユーザが実行プログラム７１を更新する指示を操作部１１５に入力すると、警告部６１は、その更新指示を受け付け、更新部５５に更新指示を出力する。更新指示は、実行プログラム７１を更新するための対象プログラムを特定するための識別情報を含む。識別情報は、バージョン情報を含む。
【００７７】
更新部５５は、更新指示を受け付けると、ダウンロード部５３に識別情報で特定されるプログラムをサーバ２００からダウンロードさせ、ダウンロードされたプログラムで実行プログラム７１を更新する。ユーザが実行プログラムを更新する指示を操作部１１５に入力しない場合には、警告部６１は、更新部５５に更新指示を出力することなく、機能実行部５１に実行許可を出力する。機能実行部５１は、実行許可が入力されると、先に入力された操作に従って機能を実行する。
【００７８】
ユーザがこれまで使用していない機能、または使用する頻度の少ない機能に対応する部分が更新されたプログラムがサーバ２００に記憶されている場合、そのプログラムで実行プログラム７１が更新されない場合がある。ユーザがＭＦＰ１００を操作して、ＭＦＰ１００に実際に機能を実行させる際に、更新された新しいプログラムが存在することをユーザに警告するので、ユーザは、その時点で更新後のプログラムで機能を実行させるのか、更新させることなく古いバージョンのプログラムで機能を実行させるのかを選択することができる。
【００７９】
図１２は、プログラム更新処理の流れの一例を示すフローチャートである。プログラム更新処理は、フラッシュメモリ１１３に記憶されている実行プログラム７１を実行することにより、ＣＰＵ１１１により実行される処理である。ＣＰＵ１１１は、ＭＦＰ１００に電源が投入された後、フラッシュメモリ１１３に記憶されている実行プログラム７１をＲＡＭ１１２にロードし、実行プログラム７１のブート部分を実行する。実行プログラム７１のブート部分は、プログラム更新プログラムを含む。
【００８０】
図１２を参照して、まず、ＣＰＵ１１１は、サーバ２００から更新情報を取得する（ステップＳ０１）。サーバ２００に更新情報の送信要求を送信し、サーバ２００が送信する更新情報２３１を受信する。そして、操作を受け付けたか否かを判断する（ステップＳ０２）。操作を受け付けた場合は処理をステップＳ０３に進め、そうでなければ処理をステップＳ０４に進める。ユーザが操作部１１５に操作を入力すると、入力された操作を操作部１１５から受け付ける。また、ＭＦＰ１００がネットワーク２に接続された他のＭＦＰ１００Ａ，１００Ｂ，１００ＣまたはＰＣから遠隔操作される場合、データ通信制御部１１７が遠隔操作元の装置から操作を受信すると、データ通信制御部１１７から操作を受け付ける。
【００８１】
次のステップＳ０３においては、ステップＳ０２で受け付けた操作に従って機能を実行するための機能実行処理を実行する。機能実行処理についての詳細は後述する。次のステップＳ０４においては、所定のタイミングか否かを判断する。所定のタイミングであれば処理をステップＳ０５に進めるが、そうでなければ処理をステップＳ０２に戻す。所定のタイミングは、予め定められており、例えば、ＭＦＰ１００の電源をＯＦＦにする指示が入力された後、ＭＦＰ１００の電源がＯＮになった後、ユーザにより予め定められた時刻である。所定のタイミングは、ＭＦＰ１００を使用する頻度の少ない時に設定するのが望ましい。後述する処理で実行プログラム７１が更新された場合、またはリブートが実行された場合に、実行プログラム７１を更新している間、またはリブートしている間はＭＦＰ１００を使用することができなくなるからである。
【００８２】
ステップＳ０５においては、履歴更新処理を実行する。履歴更新処理についての詳細は後述するが、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃから実績情報および不具合発生情報を収集し、ＭＦＰ１００のフラッシュメモリ１１３に記憶されている実績情報７３および不具合発生情報リスト７５を更新する処理である。
【００８３】
ステップＳ０６においては、対象プログラム決定処理を実行する。対象プログラム決定処理についての詳細は後述するが、実行プログラム７１を更新するための対象プログラムを決定する処理である。ステップＳ０５において履歴更新処理が実行されるので、ＭＦＰ１００、１００Ａ，１００Ｂ，１００Ｃ間で実績情報７３および不具合発生情報リスト７５が共有されている。このため、適切なバージョンのプログラムを対象プログラムに決定することができる。また、他のＭＦＰで発生した不具合に対応したバージョンのプログラムを対象プログラムに決定することができる。その結果、他のＭＦＰで発生した不具合が発生するのを事前に回避することができる。
【００８４】
ステップＳ０７においては、対象プログラム決定処理により対象プログラムが決定されたか否かを判断する。対象プログラムが決定されたならば処理をステップＳ０８に進め、そうでなければ処理をステップＳ０２に戻す。実行プログラム７１を更新するための対象プログラムが存在しなければ、実行プログラム７１を更新できないからである。
【００８５】
ステップＳ０８においては、サーバ２００から対象プログラムを取得する。具体的には、対象プログラムを特定するための識別情報を含む送信要求をサーバ２００に送信し、サーバ２００が送信する対象プログラムを受信する。識別情報は、プログラムのバージョンを含む。そして、サーバ２００から受信した対象プログラムをフラッシュメモリ１１３に保存し（ステップＳ０９）、実行プログラム７１を対象プログラムで更新する（ステップＳ１０）。具体的には、実行プログラム７１に代えて対象プログラムを新たな実行プログラム７１に設定する。
【００８６】
次のステップＳ１１においては、リブートが必要か否かを判断する。リブートが必要ならば処理をステップＳ１２に進め、そうでなければ対象プログラムで更新された実行プログラム７１を実行し、処理をステップＳ０２に戻す。ステップＳ１２においては、リブートし、処理を終了する。
【００８７】
図１３は、機能実行処理の流れの一例を示すフローチャートである。機能実行処理は、図１２に示したプログラム更新処理のステップＳ０３において実行される処理である。図１３を参照して、実行プログラム７１を更新するための対象プログラムがあるか否かを判断する（ステップＳ２１）。対象プログラムが存在する場合、実行プラグラム７１のうち受け付けられた操作に対応する機能（以下「対象機能」という）に関する部分が更新されていないことを示し、対象プログラムが存在しない場合、実行プラグラム７１のうち対象機能に関する部分が更新されていることを示す。具体的には、更新情報２３１を参照して、実行プログラム７１よりも新しいバージョンであって、図１２のステップＳ０２で受け付けられた操作に対応する機能（対象機能）に対応する部分が更新されたプログラムの有無を判断する。そのようなプログラムがあれば、そのプログラムを対象プログラムに決定する。対象プログラムがあれば処理をステップＳ２２に進め、なければ処理をステップＳ２４に進める。ステップＳ２２においては、警告を出力する。ここでは、表示部１１４に機能を更新するプログラムが存在することを通知し、プログラムを更新するか否かを問い合わせるメッセージを表示する。また、ブザーを鳴らすようにしてもよい。
【００８８】
ステップＳ２３においては、ユーザによる更新指示を受け付けたか否かを判断する。ユーザにより操作部１１５に予め設けられた更新指示を入力するためのキーが押下されると、操作部１１５から更新指示を受け付ける。更新指示を受け付けたならば処理を、図１２に示したプログラム更新処理のステップＳ０８に進めるが、更新指示を受け付けなければ処理をステップＳ２４に進める。更新指示を受け付けた場合、ステップＳ２１において存在することが確認された対象プログラムが、サーバ２００から受信され、実行プログラム７１がサーバから受信されたプログラムで更新される。したがって、ユーザが操作を入力した場合に、その操作に対応する機能が、更新された新たな実行プログラム７１に基づき実行される。このため、適切なタイミングで実行プログラム７１を新しいバージョンに更新することができる。また、不具合が発生するのを回避することができる。
【００８９】
ステップＳ２４においては、実行プログラム７１のうち操作に対応する機能の部分が実行される。ＣＰＵ１１１は、図１２に示したプログラム更新処理のステップＳ０２において受け付けられる操作により複数の機能のいずれかを特定し、実行プログラムの特定された機能に対応する部分を実行する。これにより、操作に対応する機能が実行プログラム７１に基づき実行される。機能は、上述したモジュールで分類される複数の機能のいずれかであり、例えば、Ｂｏｏｔ機能、パネル機能、データ受信機能、コピー機能、スキャン機能、ＢＯＸ機能、ＦＡＸ機能、ＡＤＦ機能、フィニッシャ機能、認証機能、ファイル変換機能、画像処理機能、ネットワーク機能である。操作は、複数の機能を特定する場合もあり得、複数の機能が特定される場合には、実行プログラムのうち特定された複数の機能それぞれに対応する部分が実行される。
【００９０】
次のステップＳ２５においては、ステップＳ２４において機能を実行した結果に基づき、フラッシュメモリ１１３に記憶されている実績情報７３を更新する。具体的には、実績情報７３における実行した機能に対応する使用回数を１増加し、頻度を更新する。そして、不具合が発生したか否かを判断する（ステップＳ２６）。機能を実行した結果、不具合が発生したならば処理をステップＳ２７に進め、そうでなければステップＳ２７をスキップして処理をプログラム更新処理に戻す。ステップＳ２７においては、ステップＳ２４において機能を実行した結果に基づきフラッシュメモリ１１３に記憶されている不具合発生情報リスト７５を更新する。具体的には、実行した機能を特定する情報と発生した不具合に対応する不具合コードとを含む不具合発生情報の発生頻度を更新する。
【００９１】
図１４は、履歴更新処理の流れの一例を示すフローチャートである。履歴更新処理は、図１２に示したプログラム更新処理のステップＳ０５において実行される処理である。図１４を参照して、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃから実績情報を収集する（ステップＳ３１）。具体的には、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃそれぞれに実績情報の送信要求を送信し、それぞれから実績情報を受信する。そして、受信した実績情報でフラッシュメモリ１１３に記憶されている実績情報７３を更新する（ステップＳ３２）。これにより、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃそれぞれが実行した機能に基づく実績情報がＭＦＰ１００のフラッシュメモリ１１３に記憶される。
【００９２】
次に、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃから不具合発生情報を収集する（ステップＳ３３）。具体的には、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃそれぞれに不具合発生情報リストの送信要求を送信し、それぞれから不具合発生情報リストを受信する。そして、受信した不具合発生情報リストに含まれる不具合発生情報でフラッシュメモリ１１３に記憶されている不具合発生情報リスト７５を更新する（ステップＳ３４）。これにより、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃのいずれかにおいて発生した不具合発生情報をＭＦＰ１００が記憶することができる。このため、不具合が発生する対策が施された新たなバージョンのプログラムで実行プログラム７１を更新することができる。
【００９３】
図１５は、対象プログラム決定処理の流れの一例を示す図である。対象プログラム決定処理は、図１２に示したプログラム更新処理のステップＳ０６において実行される処理である。図１５を参照して、まず、サーバ２００から更新情報を取得する（ステップＳ４１）。サーバ２００に更新情報の送信要求を送信し、サーバ２００が送信する更新情報を受信する。そして、緊急度に基づく対象プログラム決定処理を実行する。
【００９４】
次に、不具合発生情報が存在するか否かを判断する（ステップＳ４３）。具体的には、不具合発生情報リスト７５に不具合発生情報が記憶されているか否かを判断する。不具合発生情報が存在すれば処理をステップＳ４４に進めるが、そうでなければ処理をステップＳ４５に進める。ステップＳ４４においては、不具合発生情報に基づく対象プログラム決定処理を実行し、処理をステップＳ４５に進める。ステップＳ４５においては、履歴情報に基づく対象プログラム決定処理を実行し、処理をプログラム更新処理に戻す。
【００９５】
図１６は、緊急度に基づく対象プログラム決定処理の流れの一例を示すフローチャートである。緊急度に基づく対象プログラム決定処理は、図１５のステップＳ４２において実行される処理である。図１６を参照して、ＣＰＵ１１１は、更新情報を参照して、緊急度がＡのプログラムがあるか否かを判断する（ステップＳ５１）。緊急度Ａのプログラムが存在すれば処理をステップＳ５２に進めるが、存在しなければ処理をステップＳ５４に進める。ステップＳ５２においては、緊急度Ａのプログラムを抽出する。緊急度Ａのプログラムが複数あれば複数のプログラムすべてを抽出する。そして、抽出したプログラムのうちから最新のバージョンのプログラムを対象プログラムとするためのプログラムに決定し（ステップＳ５３）、処理をステップＳ５４に進める。図６に示した更新情報をサーバ２００から受信した場合、バージョンが１．１のプログラムが対象プログラムとして決定される。
【００９６】
ステップＳ５４においては、緊急度Ｂのプログラムがあるか否かを判断する。緊急度Ｂのプログラムが存在すれば処理をステップＳ５５に進めるが、存在しなければ処理をステップＳ５９に進める。ステップＳ５５においては、フラッシュメモリ１１３から実績情報７３を読み出す。そして、ステップＳ５４で存在が確認された緊急度Ｂのプログラムが更新された部分に対応する機能の利用歴があるか否かを判断する（ステップＳ５６）。その機能が１回以上実行されている場合に利用歴ありと判断する。利用暦があれば処理をステップＳ５７に進め、なければ処理をステップＳ５９に進める。
【００９７】
図６に示した更新情報がサーバ２００から受信された場合、緊急度Ｂのプログラムは、バージョン１．２のプログラムであり、そのプログラムが更新された部分に対応する機能は、モジュールＡの機能Ａ１である。次に、図８に示す実績情報７３を参照して、モジュールＡの機能Ａ１は、使用回数が１０回なので、利用歴があると判断する。
【００９８】
ステップＳ５７においては、ステップＳ５４で存在が確認された緊急度Ｂのプログラム、ここではバージョン１．２のプログラムは、そのとき対象プログラムに設定されているプログラムよりもバージョンが新しいか否かを判断する。バージョンが新しければ処理をステップＳ５８に進め、そうでなければステップＳ５８をスキップして処理をステップＳ５９に進める。ステップＳ５８においては、ステップＳ５４で存在が確認された緊急度Ｂのプログラムを、ステップＳ５３において対象プログラムとされていたプログラムに代えて対象プログラムとするためのプログラムに決定する。より新しいバージョンのプログラムを対象プログラムとするためである。ステップＳ５３において対象プログラムとするためのプログラムが決定されていない場合には、ステップＳ５４で存在が確認された緊急度Ｂのプログラムを対象プログラムとするためのプログラムに決定する。
【００９９】
ステップＳ５９においては、緊急度Ｃのプログラムがあるか否かを判断する。緊急度Ｃのプログラムが存在すれば処理をステップＳ６０に進めるが、存在しなければ処理を対象プログラム決定処理に戻す。ステップＳ６０においては、フラッシュメモリ１１３から実績情報７３を読み出す。そして、ステップＳ５９で存在が確認された緊急度Ｃのプログラムが更新された部分に対応する機能の使用頻度が２０％以上か否かを判断する（ステップＳ６１）。使用頻度が２０％以上ならば処理をステップＳ６２に進め、そうでなければ処理を対象プログラム決定処理に戻す。
【０１００】
図６に示した更新情報がサーバ２００から受信された場合、緊急度Ｃのプログラムは、バージョン１．３のプログラムであり、そのプログラムが更新された部分に対応する機能は、モジュールＡの機能Ａ２である。次に、図８に示す実績情報７３を参照して、モジュールＡの機能Ａ２の使用頻度は、４０％である。この場合は、処理をステップＳ６２に進める。
【０１０１】
ステップＳ６２においては、ステップＳ５９で存在が確認された緊急度Ｃのプログラム、ここではバージョン１．３のプログラムは、そのとき対象プログラムに設定されているプログラムよりもバージョンが新しいか否かを判断する。バージョンが新しければ処理をステップＳ６３に進め、そうでなければ処理を対象プログラム決定処理に戻す。ステップＳ６３においては、ステップＳ５９で存在が確認された緊急度Ｃのプログラムを、ステップＳ５３またはステップＳ５８において対象プログラムとされていたプログラムに代えて対象プログラムとするためのプログラムに決定する。より新しいバージョンのプログラムを対象プログラムとするためである。ステップＳ５３またはステップＳ５８において対象プログラムとするためのプログラムが決定されていない場合には、ステップＳ５９で存在が確認された緊急度Ｃのプログラムを対象プログラムにするためのプログラムに決定する。
【０１０２】
図１７は、不具合発生情報に基づく対象プログラム決定処理の流れの一例を示すフローチャートである。不具合発生情報に基づく対象プログラム決定処理は、図１５のステップＳ４４において実行される処理である。図１７を参照して、ＣＰＵ１１１は、フラッシュメモリ１１３に記憶されている不具合発生情報リスト７５から不具合発生情報を読み出し（ステップＳ７１）、不具合発生条件を読み出す（ステップＳ７２）。ここでは、図９に示した不具合発生情報リスト７５に含まれる不具合発生情報を読出し、図１０に示した不具合条件を読み出した場合を例に説明する。以下のステップでは、不具合条件に適合する不具合発生情報を抽出し、対象プログラムとするためのプログラムを決定する。
【０１０３】
ステップＳ７３においては、不具合ランクがＡの不具合発生情報が存在するか否かを判断する。不具合ランクがＡの不具合発生情報が存在するならば処理をステップＳ７４に進め、そうでなければ処理をステップＳ７７に進める。ステップＳ７４においては、不具合ランクがＡの不具合発生情報に含まれる機能の部分が更新されたプログラムが、更新情報に存在するか否かを判断する。そのようなプログラムが存在すれば処理をステップＳ７５に進め、存在しなければ処理をステップＳ７７に進める。図９に示した不具合発生情報リストにおいては、番号３の不具合発生情報の不具合ランクがＡである。そして、その機能は、モジュールＡの機能Ａ２である。サーバ２００から図６に示した更新情報が受信された場合、モジュールＡの機能Ａ２の部分が更新されたバージョン１．３のプログラムが存在する。したがって、この場合には処理をステップＳ７５に進める。
【０１０４】
ステップＳ７５においては、ステップＳ７４で存在が確認された不具合ランクがＡの不具合発生情報に含まれる機能の部分が更新されたプログラム、ここではバージョン１．３のプログラムは、そのとき対象プログラムに設定されているプログラムよりもバージョンが新しいか否かを判断する。バージョンが新しければ処理をステップＳ７６に進め、そうでなければステップＳ７６をスキップして処理をステップＳ７７に進める。ステップＳ７６においては、不具合ランクがＡの不具合発生情報に含まれる機能の部分が更新されたプログラムを、それまでに対象プログラムに設定されているプログラムに代えて対象プログラムとするためのプログラムに決定する。より新しいバージョンのプログラムを対象プログラムとするためである。
【０１０５】
ステップＳ７７においては、不具合ランクがＢの不具合発生情報が存在するか否かを判断する。不具合ランクがＢの不具合発生情報が存在するならば処理をステップＳ７８に進め、そうでなければ処理をステップＳ８２に進める。ステップＳ７８においては、不具合ランクがＢの不具合発生情報に含まれる機能が発生回数２回以上で、かつ、発生頻度が５０％以上か否かを判断する。この条件を満たしていれば処理をステップＳ７９に進め、そうでなければ処理をステップＳ８２に進める。
【０１０６】
ステップＳ７９においては、不具合ランクがＢの不具合発生情報に含まれる機能の部分が更新されたプログラムが、更新情報に存在するか否かを判断する。そのようなプログラムが存在すれば処理をステップＳ８０に進め、存在しなければ処理をステップＳ８２に進める。図９に示した不具合発生情報リストにおいては、番号１と番号５の不具合発生情報の不具合ランクがＢである。番号１の不具合発生情報の発生回数は１回、発生頻度は、１０％なので、条件を満たさない。また、番号５の不具合発生情報の発生回数は４回、発生頻度は５７％なので、条件を満たす。そして、番号５の不具合発生情報の機能は、モジュールＢの機能Ｂ２である。ここで、図６に示した更新情報を参照して、モジュールＢの機能Ｂ２の部分が更新されたプログラムは、バージョン１．３のプログラムである。したがって、この例の場合は、バージョン１．３のプログラムが選択されて処理をステップＳ８０に進める。
【０１０７】
ステップＳ８０においては、ステップＳ７９で存在が確認された不具合ランクがＢの不具合発生情報に含まれる機能の部分が更新されたプログラム、ここではバージョン１．３のプログラムは、そのとき対象プログラムに設定されているプログラムよりもバージョンが新しいか否かを判断する。バージョンが新しければ処理をステップＳ８１に進め、そうでなければステップＳ８１をスキップして処理をステップＳ８２に進める。不具合ランクがＢの不具合発生情報に含まれる機能の部分が更新されたプログラムを、それまでに対象プログラムに設定されているプログラムに代えて対象プログラムとするためのプログラムに決定する。より新しいバージョンのプログラムを対象プログラムとするためである。
【０１０８】
ステップＳ８２においては、他の不具合条件に適合する不具合発生情報が存在するか否かを判断する。そのような不具合情報が存在すればその不具合発生情報を抽出し、処理をステップＳ８３に進めるが、そうでなければ処理をステップＳ８６に進める。ステップＳ８３においては、抽出された不具合発生情報に含まれる機能の部分が更新されたプログラムが、更新情報２３１に含まれるか否かを判断する。そのようなプログラムが更新情報２３１にふくまれていれば処理をステップＳ８４に進め、そうでなければ処理をステップＳ８６に進める。図９に示した不具合発生情報リストにおいては、残りの不具合条件は、番号３と番号４の不具合条件である。番号３の不具合条件は、機能Ａ２で不具合ランクがＢ以上であり、番号４の不具合条件は、機能Ｂ１で不具合コードＣ００３である。図９に示す不具合発生情報リスト７５においては、番号３の不具合条件に一致する不具合発生情報は、番号３の不具合発生情報であるが、番号４の不具合条件に一致する不具合発生情報は存在しない。したがって、番号３の不具合発生情報が抽出される。番号３の不具合発生情報に含まれる機能は、機能Ａ２ある。そして、機能Ａ２の部分が更新されたプログラムを含む更新情報２３１は存在しない。したがって、この例の場合には、処理をステップＳ８６に進める。
【０１０９】
ステップＳ８４においては、ステップＳ８３において存在が確認されたプログラムのバージョンが、そのとき対象プログラムに設定されているプログラムよりもバージョンが新しいか否かを判断する。バージョンが新しければ処理をステップＳ８５に進め、そうでなければステップＳ８５をスキップして処理をステップＳ８６に進める。ステップＳ８５においては、ステップＳ８３において存在が確認されたプログラムを、それまでに対象プログラムに設定されているプログラムに代えて、対象プログラムとするためのプログラムに決定する。より新しいバージョンのプログラムを対象プログラムとするためである。
【０１１０】
ステップＳ８６においては、不具合発生情報を消去し、処理を対象プログラム決定処理に戻す。不具合発生情報に基づき実行プログラムを更新するためのプログラムを決定する処理を終了したので、同じ不具合発生情報を用いて上述した処理を実行しても同じ結果となるからである。
【０１１１】
図１８は、履歴情報に基づく対象プログラム決定処理の流れの一例を示すフローチャートである。履歴情報に基づく対象プログラム決定処理は、図１５のステップＳ４５において実行される処理である。図１８を参照して、フラッシュメモリ１１３に記憶されている実績情報を読み出す（ステップＳ９１）。そして、更新情報２３１で定義されているプログラムのうちから処理対象とするプログラムを選択し（ステップＳ９２）、処理対象のプログラムの更新された部分の機能の使用回数がしきい値Ｔを越えるか否かを判断する（ステップＳ９３）。使用回数がしきい値Ｔを越えるならば処理をステップＳ９４に進め、そうでなければ処理をステップＳ９６に進める。しきい値Ｔは、ＭＦＰ１００の管理者により予め設定されるか、メーカにより予め設定された値である。例えば、図６に示した更新情報のバージョン１．１のプログラムが処理対象に設定されたとすると、更新された部分の機能はモジュールＣの機能Ｃ１である。ここで、図８に示した実績情報を参照して、モジュールＣの機能Ｃ１の使用回数は、０回である。この場合には、処理をステップＳ９６に進める。
【０１１２】
ステップＳ９４においては、処理対象のプログラムのバージョンが、そのとき対象プログラムに設定されているプログラムよりもバージョンが新しいか否かを判断する。バージョンが新しければ処理をステップＳ９５に進め、そうでなければ処理をステップＳ９６に進める。ステップＳ９５においては、処理対象のプログラムを、それまでに対象プログラムに設定されているプログラムに代えて、対象プログラムとするためのプログラムに決定する。より新しいバージョンのプログラムを対象プログラムとするためである。
【０１１３】
ステップＳ９６においては、次に処理対象とするべきプログラムが存在するか否かを判断する。処理対象とするべきプログラムが存在すれば処理をステップＳ９２に戻し、存在しなければ処理を対象プログラム決定処理に戻す。
【０１１４】
以上説明したように本実施の形態におけるＭＦＰ１００は、フラッシュメモリ１１３に記憶された実行プログラム７１を実行し、複数種類の機能の少なくとも１つが実行されると、実行された機能毎に該機能が実行されたことを示す実績情報７３を更新する。そして、実績情報７３とサーバ２００に記憶されている更新情報２３１とに基づいて、サーバ２００に記憶された複数のプログラム２２０〜２２３のうちから対象プログラムを決定し、対象プログラムをダウンロードし、対象プログラムで実行プログラム７１を更新する。このため、サーバ２００に記憶された複数のプログラム２２０〜２２３のうちで、最新のバージョンのプログラムで実行プログラムを更新することなく、実行した機能に関する部分が更新された場合、不具合の発生した機能に関する部分が更新された場合、緊急度が高く設定されたプログラムがサーバ２００に記憶された場合等の限られた場合に実行プログラムを更新するので、実行プログラムを更新する回数を少なくすることができる。
【０１１５】
また、より新しいバージョンのプログラムがサーバ２００に記憶されているにも係わらず実行プログラム７１が更新されていない場合であっても、そのバージョンのプログラムにより更新される機能を実行する指示が受け付けられたときに警告が出力されるので、機能の実行を指示した時点で実行プログラム７１を更新することができる。
【０１１６】
また、所定のタイミングに、実行プログラム７１を更新するので、ＭＦＰ１００が使用される確率の低い時間帯に実行プログラムを更新することができる。
【０１１７】
さらに、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃから実績情報および不具合発生情報を収集し、それらで自装置に記憶する実績情報および不具合情報をそれぞれ更新するので、他のＭＦＰ１００Ａ，１００Ｂ，１００Ｃの使用実績を反映して更新するプログラムを決定することができるとともに、他の装置で発生した不具合が自装置で発生するのを未然に防止することができる。
【０１１８】
＜変形例＞
上述した実施の形態においては、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃが、実行プログラム７１を更新するか否かを判断するようにした。変形例においては、サーバ２００が、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃそれぞれに記憶された実行プログラム７１を更新するか否かを判断するようにしたものである。
【０１１９】
図１９は、変形例におけるサーバが備えるＣＰＵ２０１Ａの機能の一例を、ＨＤＤ２０７に記憶されるデータとともに示す機能ブロック図である。図１９を参照して、図５に示した機能ブロック図と異なる点は、履歴受信部２１５と、比較判断部２１７とが追加された点である。履歴受信部２１５は、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃのいずれかから履歴を受信する。ここでは、ＭＦＰ１００から履歴を受信する場合を例に説明する。履歴は、実績情報７３と、不具合発生情報リスト７５と、ＭＦＰ１００の実行プログラム７１のバージョンとを含む。履歴受信部２１５は、受信した履歴と、その履歴を送信してきたＭＦＰ１００を特定するための装置識別情報とを比較判断部２１７に出力する。
【０１２０】
比較判断部２１７は、履歴受信部２１５から履歴を受信すると、その履歴を送信してきたＭＦＰが記憶する実行プログラム７１を更新するか否かを判断する。具体的には、ＨＤＤ２０７に記憶している更新情報２３１を読出し、更新情報２３１に記録されている更新内容に基づいて、実行プログラム７１より新しいバージョンのプログラム毎に更新の対象となった機能を特定する。そして、履歴の実績情報７３に、特定された機能（更新された部分に対応する機能）が実行されていることが記録されているか否かを判断する。特定された機能が実行されていることが実績情報７３に記録されていれば、実行プログラム７１を更新すると判断し、特定された機能が更新された新しいバージョンのプログラムを、実行プログラム７１を更新するためのプログラム（対象プログラム）に決定する。なお、特定された機能が実行されていることが実績情報７３に記録されていることを条件とするのに代えて、特定された機能が所定の頻度を越えて実行されていることが実績情報に記録されていることを条件とするようにしてもよい。
【０１２１】
さらに、比較判断部２１７は、履歴に含まれる不具合発生情報リスト７５に基づいて、実行プログラム７１を更新するか否かを判断する。具体的には、履歴に含まれる不具合発生情報リスト７５に記録されている不具合発生情報に含まれる機能（不具合の発生した機能）を特定する。そして、不具合発生情報に含まれる不具合ランクと発生頻度とが予め定められた不具合条件に合致するか否かを判断する。不具合条件に合致する場合、特定された機能（不具合の発生した機能）に関する部分が更新されたプログラムが更新情報２３１で定義されていれば、実行プログラム７１を更新すると判断する。この際、特定された機能（不具合の発生した機能）に関する部分が更新されたプログラムであって、履歴に含まれる実行プログラム７１のバージョンよりも新しいバージョンのプログラムを、対象プログラムに決定する。サーバ２００は、ＨＤＤ２０７に図１９に示した不具合条件テーブルを記憶している。
【０１２２】
比較判断部２１７は、更新情報２３１の緊急度を参照し、緊急度に基づいて実行プログラム７１を更新するか否かを判断する。具体的には、更新情報２３１によってプログラムに割り当てられた緊急度が予め定められた緊急度条件に一致すれば、そのプログラムを対象プログラムとし、実行プログラム７１を更新すると判断する。また、比較判断部２１７は、更新情報２３１の緊急度および実績情報７３に基づいて実行プログラム７１を更新するか否かを判断する。具体的には、プログラムに割り当てられた緊急度およびそのプログラムの機能の使用回数または使用頻度が緊急度条件に一致すれば、そのプログラムを対象プログラムとし、実行プログラム７１を更新すると判断する。サーバ２００は、ＨＤＤ２０７に、図１１に示した緊急度条件テーブルを記憶している。
【０１２３】
比較判断部２１７は、実行プログラム７１を更新すると判断した場合、実行プログラム７１を更新するためのプログラムを特定するための識別情報を、プログラム送信部２１１に出力する。プログラム送信部２１１は、比較判断部２１７から入力される識別情報で特定されるプログラムをＨＤＤ２０７のうちから読み出して、読み出したプログラムを、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃのうち履歴を送信してきたＭＦＰに送信する。
【０１２４】
図２０は、変形例におけるＭＦＰ１００が備えるＣＰＵ１１１Ａの機能の概要を、フラッシュメモリ１１３に記憶されるデータとともに示す機能ブロック図である。図２０を参照して、図７に示した機能ブロック図と異なる点は、判断部５９が削除された点、履歴送信部６５が追加された点、更新部５５Ａが変更された点である。
【０１２５】
図２０を参照して、履歴送信部６５は、フラッシュメモリ１１３に記憶されている実績情報７３と、不具合発生情報リスト７５と、実行プログラム７１のバージョンとを含む履歴を、サーバ２００に送信する。ダウンロード部５３は、履歴送信部６５が履歴を送信することに応じて、サーバ２００が送信するプログラムを受信し、受信したプログラムを更新部５５に出力する。更新部５５Ａは、ダウンロード部５３がプログラムを受信すると、そのプログラムでフラッシュメモリ１１３に記憶されている実行プログラムを更新する。
【０１２６】
変形例におけるプログラム更新システムにおいては、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃそれぞれは、上述したのと同様の効果を奏することができる。また、サーバ２００においてＭＦＰ１００に記憶された実行プログラム７１を更新するか否かを決定するので、ＭＦＰ１００，１００Ａ，１００Ｂ，１００Ｃの負荷を低減させることができる。
【０１２７】
なお、上述した実施の形態においては、プログラム更新システム１について説明したが、図１２〜図１８に示した処理を含むプログラム更新方法、またはそれらの処理をコンピュータに実行させるためのプログラム更新プログラムとして発明を捉えることができるのは言うまでもない。
【０１２８】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【０１２９】
＜付記＞
（１）  前記履歴情報は、前記機能が実行されたことを示す実績情報を含む、請求項１に記載の画像形成装置。
（２）  前記決定手段は、複数種類の前記更新プログラムのうち前記履歴情報に含まれる前記機能に関する部分が更新されている前記更新プログラムを前記対象プログラムに決定する、請求項１３に記載のプログラム更新システム。
（３）  履歴記憶手段は、前記機能が実行されて発生した不具合を特定する識別情報を含む不具合情報をさらに記憶し、
前記決定手段は、複数種類の前記更新プログラムのうち前記不具合情報と関連付けられた前記機能に関する部分が更新されている前記更新プログラムを前記対象プログラムに決定する、請求項１３に記載のプログラム更新システム。
（４）  前記更新情報は、前記更新プログラムに対応して更新の緊急度合いを示す緊急情報を含み、
前記決定手段は、所定の緊急度合いを示す前記緊急情報を含む前記更新情報に対応する前記更新プログラムを、前記実績情報に係わらず、前記対象プログラムに決定する、請求項１３に記載のプログラム更新システム。
【図面の簡単な説明】
【０１３０】
【図１】本発明の実施の形態の一つにおけるプログラム更新システムの全体概要を示す図である。
【図２】サーバのハード構成の一例を示す図である。
【図３】ＭＦＰの外観を示す斜視図である。
【図４】ＭＦＰの回路構成の一例を示すブロック図である。
【図５】サーバが備えるＣＰＵの機能の一例を、ＨＤＤに記憶されるデータとともに示す機能ブロック図である。
【図６】更新情報の一例を示す図である。
【図７】ＭＦＰが備えるＣＰＵの機能の概要を、フラッシュメモリに記憶されるデータとともに示す機能ブロック図である。
【図８】実績情報の一例を示す図である。
【図９】不具合発生情報リストの一例を示す図である。
【図１０】不具合条件テーブルの一例を示す図である。
【図１１】緊急度条件テーブルの一例を示す図である。
【図１２】プログラム更新処理の流れの一例を示すフローチャートである。
【図１３】機能実行処理の流れの一例を示すフローチャートである。
【図１４】履歴更新処理の流れの一例を示すフローチャートである。
【図１５】対象プログラム決定処理の流れの一例を示す図である。
【図１６】緊急度に基づく対象プログラム決定処理の流れの一例を示すフローチャートである。
【図１７】不具合発生情報に基づく対象プログラム決定処理の流れの一例を示すフローチャートである。
【図１８】履歴情報に基づく対象プログラム決定処理の流れの一例を示すフローチャートである。
【図１９】変形例におけるサーバが備えるＣＰＵの機能の一例を、ＨＤＤに記憶されるデータとともに示す機能ブロック図である。
【図２０】変形例におけるＭＦＰが備えるＣＰＵの機能の概要を、フラッシュメモリ１１３に記憶されるデータとともに示す機能ブロック図である。
【符号の説明】
【０１３１】
１  プログラム更新システム、２  ネットワーク、９  操作パネル、１０  ＡＤＦ、２０  画像読取部、３０  画像形成部、４０  給紙部、５０  後処理部、５１  機能実行部、５３  ダウンロード部、５５，５５Ａ  更新部、５７  更新情報取得部、５９  判断部、６１  警告部、６３  履歴更新部、６５  履歴送信部、７１  実行プログラム、７３  実績情報、７５  不具合発生情報リスト、１００，１００Ａ，１００Ｂ，１００Ｃ  ＭＦＰ、１０１  メイン回路、１１１  ＣＰＵ、１１２  ＲＡＭ、１１３  フラッシュメモリ、１１４  表示部、１１５  操作部、１１６  ＨＤＤ、１１７  データ通信制御部、１１８  端子、１１９  シリアル通信インターフェース端子、１１９Ａ  メモリカード、１２２  ファクシミリ部、１２３  通信制御部、２００  サーバ、２０１  ＣＰＵ、２０２  通信Ｉ／Ｆ、２０３  モニタ、２０４  入力部、２０５  ＲＡＭ、２０６  ＲＯＭ、２０７  ＨＤＤ１１６、２０９  バス、２１１  プログラム送信部、２１３  更新情報送信部、２１５  履歴受信部、２１７  比較判断部、２２０〜２２３  プログラム、２３１  更新情報。
【図１】
0004539676.tif 000002
【図２】
0004539676.tif 000003
【図３】
0004539676.tif 000004
【図４】
0004539676.tif 000005
【図５】
0004539676.tif 000006
【図６】
0004539676.tif 000007
【図７】
0004539676.tif 000008
【図８】
0004539676.tif 000009
【図９】
0004539676.tif 000010
【図１０】
0004539676.tif 000011
【図１１】
0004539676.tif 000012
【図１２】
0004539676.tif 000013
【図１３】
0004539676.tif 000014
【図１４】
0004539676.tif 000015
【図１５】
0004539676.tif 000016
【図１６】
0004539676.tif 000017
【図１７】
0004539676.tif 000018
【図１８】
0004539676.tif 000019
【図１９】
0004539676.tif 000020
【図２０】
0004539676.tif 000021