(57)【要約】【課題】ＭＦＰで、アクセサリＦＷグループを構成するコンポーネントを除いたＦＷグループでＦＷバージョンの不一致が発生している場合であっても、ＦＷの安全な自動更新を行う配信システムを提供する。【解決手段】この配信システムは、ＭＦＰとそのアクセサリに適用すべきファームウェアの情報の組み合わせを登録する第１の登録手段と、アクセサリのために適用すべきファームウェアの情報を登録する第２の登録手段と、ファームウェアの情報を受信する受信手段と、受信した情報を包含する組み合わせが存在するかを判定する第１の判定手段と、組み合わせが存在する場合、更新すべき情報を通知する通知手段と、組み合わせが存在しない場合、受信したアクセサリに適用されている情報があるかを判定する第２の判定手段と、情報が存在する場合、登録された組み合わせから、アクセサリに適用されている情報を包含する組み合わせを特定する特定手段とを有する。【選択図】図１３
2016057708.tif 000002
【特許請求の範囲】
【請求項１】
ネットワーク機器に適用すべきファームウェアの情報と、前記ネットワーク機器のアクセサリのために適用すべきファームウェアの情報との組み合わせを登録する第１の登録手段と、
前記ネットワーク機器のアクセサリのために適用すべきファームウェアの情報を登録する第２の登録手段と、
ネットワーク上のネットワーク機器に適用されているファームウェアの情報を受信する受信手段と、
前記第１の登録手段により登録された組み合わせの中で、前記受信手段により受信されたファームウェアの情報を包含する情報を持つ組み合わせが存在するか否かを判定する第１の判定手段と、
前記第１の判定手段により存在すると判定された場合に、前記ネットワーク上の前記ネットワーク機器に対して、更新として適用すべきファームウェアの情報を通知する通知手段と、
前記第１の判定手段により存在しないと判定された場合に、前記第２の登録手段により登録された情報の中に、前記受信手段により受信されたファームウェアの情報に含まれる前記ネットワーク機器のアクセサリのために適用されているファームウェアの情報を包含する情報が存在するか否か判定する第２の判定手段と、
前記第２の判定手段により存在すると判定された場合に、前記第１の登録手段により登録された組み合わせの中から、前記ネットワーク機器のアクセサリのために適用されているファームウェアの情報を包含する情報を含む組み合わせを特定する特定手段と、
を有し、
前記通知手段は、前記特定手段により特定された組み合わせに基づき、前記ネットワーク機器に対して、更新として適用すべきファームウェアの情報を通知する
ことを特徴とする配信システム。
【請求項２】
前記ファームウェアの情報には、ファームウェアの種類とバージョンの情報が含まれる
ことを特徴とする請求項１に記載の配信システム。
【請求項３】
前記通知手段は、前記特定手段が特定した組み合わせが複数存在する場合、最も低いバージョンの組み合わせに基づき、前記更新として適用すべきファームウェアの情報を通知する
ことを特徴とする請求項２に記載の配信システム。
【請求項４】
前記通知手段は、前記特定手段が特定した組み合わせが複数存在し、かつ中継バージョンの組み合わせが存在する場合、前記中継バージョンの組み合わせに基づき、前記更新として適用すべきファームウェアの情報を通知する
ことを特徴とする請求項２に記載の配信システム。
【請求項５】
前記特定手段は、予め作成された前記ネットワーク機器のアクセサリのために適用されているファームウェアの情報を包含する情報を含む組み合わせのカタログに基づいて、前記組み合わせを特定する
ことを特徴とする請求項１に記載の配信システム。
【請求項６】
前記通知手段は、前記特定手段による前記組み合わせを特定するための処理の負荷が閾値未満である場合、前記特定手段により特定した組み合わせに基づいて、前記更新として適用すべきファームウェアの情報を通知し、前記処理の負荷が閾値以上である場合、エラーを通知する
ことを特徴とする請求項１に記載の配信システム。
【請求項７】
ネットワーク機器に適用すべきファームウェアの情報と、前記ネットワーク機器のアクセサリのために適用すべきファームウェアの情報との組み合わせを登録する第１の登録工程と、
前記ネットワーク機器のアクセサリのために適用すべきファームウェアの情報を登録する第２の登録工程と、
ネットワーク上のネットワーク機器に適用されているファームウェアの情報を受信する受信工程と、
前記第１の登録工程において登録された組み合わせの中で、前記受信工程において受信されたファームウェアの情報を包含する情報を持つ組み合わせが存在するか否かを判定する第１の判定工程と、
前記第１の判定工程において存在すると判定された場合に、前記ネットワーク上の前記ネットワーク機器に対して、更新として適用すべきファームウェアの情報を通知する通知工程と、
前記第１の判定工程において存在しないと判定された場合に、前記第２の登録工程において登録された情報の中に、前記受信工程において受信されたファームウェアの情報に含まれる前記ネットワーク機器のアクセサリのために適用されているファームウェアの情報を包含する情報が存在するか否か判定する第２の判定工程と、
前記第２の判定工程において存在すると判定された場合に、前記第１の登録工程において登録された組み合わせの中から、前記ネットワーク機器のアクセサリのために適用されているファームウェアの情報を包含する情報を含む組み合わせを特定する特定工程と、
を有し、
前記通知工程において、前記特定工程で特定された組み合わせに基づき、前記ネットワーク機器に対して、更新として適用すべきファームウェアの情報が通知される
ことを特徴とする配信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配信システム及び配信方法に関する。特に、インターネットなどのネットワークを介して、ＭＦＰなどのデバイスの更新ファームウェアを配信する配信システムに関する。
【背景技術】
【０００２】
ＭＦＰの生産者（ＭＦＰメーカー）は、顧客のＭＦＰのファームウェア（以下、「ＦＷ」と略す）を更新するため、配信サーバに最新のＦＷを登録する。ＦＷは、一般的に、ＦＷグループとして、複数のＦＷコンポーネントから構成される。ＦＷコンポーネントは、ファイルとして配信サーバに保存され、ＦＷグループ単位で配信される。ＦＷグループは、ＭＦＰの機種毎、あるいは、商品毎にバージョン付けされ、初期のバージョンから最新のバージョンまでが配信サーバに登録される。ＦＷグループは、ＭＦＰ本体用のＦＷと、本体に設置可能なアクセサリー用のＦＷの組み合わせで構成される。ＦＷグループは、ＭＦＰメーカーが動作確認を行った組み合わせのみが配信サーバに登録され、インターネット上に公開される。
【０００３】
ＭＦＰには、自身のＦＷを更新するための組込アプリケーション（アップデーター）が配置されている。配信サーバは、アップデーターからＦＷ更新確認のリクエストを受け、レスポンスとして、適用可能なＦＷグループの情報を返す。アップデーターは、ＦＷ更新確認のリクエストの際、ＭＦＰに現在搭載されているＦＷコンポーネントの情報一覧をパラメータに設定して、配信サーバに送信する。配信サーバは、アップデーターから受け取ったＦＷコンポーネントの情報一覧を基に、クライアントＭＦＰに現在搭載されているＦＷグループのバージョン（以下、「現在ＦＷバージョン」と略す）を特定する。アップデーターから受け取ったＦＷコンポーネントの情報と合致する登録済みのＦＷグループが存在すれば、そのＦＷグループに付けられたバージョンが、そのクライアントＭＦＰの現在ＦＷバージョンである。もし、アップデーターから受け取ったＦＷコンポーネントの情報と合致する登録済みのＦＷグループが見つからなければ、配信サーバは、アップデーターにバージョン不明エラーを返す。
【０００４】
ＭＦＰメーカーは、ＭＦＰ本体とアクセサリを市場に出荷する。アクセサリとは、ＭＦＰ本体に設置可能なフィニッシャー、スタッカー、ＦＡＸボードなどのオプション商品である。市場において、サービスエンジニアが顧客オフィスにＭＦＰの設置を行う際、オプションとしてアクセサリをＭＦＰ本体に１つ以上設置する。このオプションの設置作業後、ＦＷバージョン不一致の問題が発生する場合がある。ＦＷバージョン不一致とは、ＭＦＰ本体のＦＷと、オプションとして設置した１つ以上のアクセサリーのＦＷの組み合わせが、動作確認済みの配信サーバに登録されたＦＷグループのＦＷコンポーネントの組み合わせと合致しないということである。ＭＦＰ本体およびアクセサリ類は、それぞれ工場で製造された時点での最新ＦＷが搭載されて出荷されるが、製造時期が異なれば、異なるバージョンのＦＷが搭載されて出荷される。市場でこれらの商品を組み合わせる際、工場出荷直後のＭＦＰ本体と、在庫のアクセサリ類のＦＷバージョン不一致の組み合わせパターンは、頻繁に起こりうる。特に、工場がある生産地と、販売を行う消費地の距離が離れている場合、在庫を持たざるをえない関係上、この問題は顕著に起こりうる。
【０００５】
ＦＷバージョン不一致については、サービスエンジニアが、ＭＦＰ設置後、アップデーターのサービスエンジニア専用モードにて、配信サーバからＦＷグループを手動で選択し、ＭＦＰ本体およびアクセサリのＦＷを更新することで解消できる。サービスエンジニア専用モードで、ＦＷを更新する作業が実施されなかった場合、または、適切なＦＷグループでＦＷが更新されなかった場合、ＦＷバージョン不一致の問題が放置されたまま、顧客側でＭＦＰの運用が始まってしまう。ＦＷバージョン不一致の問題が放置されたまま、顧客の方でＭＦＰの運用が始まってしまうと、そのＭＦＰで、配信サーバを用いた、顧客（エンドユーザ）によるＦＷの自動更新が出来なくなってしまう。
【０００６】
これに対して、特許文献１では、ＭＦＰの現在のモジュール名と更新先のアップデート用モジュール名との一致比較の際、オプション機能（アクセサリ）のモジュール（ＦＷコンポーネント）を比較対象から除外するという技術を開示している。すなわち、特許文献１によれば、ＭＦＰ本体のＦＷとアクセサリのＦＷの組み合わせがＦＷバージョン不一致の問題を起こしている場合であっても、アクセサリーＦＷを比較対象から無条件に除外するため、ＭＦＰ本体のＦＷの比較で問題がなければ、更新可能とする。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−３３７８１７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１では、アクセサリＦＷを比較対象から無条件に除外しているため、あるアクセサリーのＦＷが複数のＦＷコンポーネントから構成されている場合、それらのＦＷコンポーネント間でバージョン不整合を起こしている状態を検知できない。アップデーターによるアクセサリＦＷの更新が何らかの理由で途中終了し、アクセサリＦＷのＦＷコンポーネントの一部が更新されないという状況は、ソフトウエア障害など様々な原因で起こりうる。アクセサリＦＷ内での不適切なＦＷコンポーネントの組み合わせを是正するには、サービスエンジニアが、顧客のもとに赴き、サービスエンジニア専用モードでＦＷを更新する必要がある。
【０００９】
また、特許文献１では、中継バージョンの問題を解消できない恐れがある。ここで、中継バージョンとは、ＦＷを現在のバージョンから新しいバージョンに更新する際、その新しいバージョンの前に一旦更新を行う必要があるＦＷバージョンのことである。例えば、現在ＦＷバージョンがＶ１．０のＦＷグループを、Ｖ２．０のＦＷグループに更新する際、中継バージョンとしてＶ１．８が存在する場合、Ｖ１．０からＶ１．８に更新後、Ｖ１．８からＶ２．０に更新する必要がある。中継バージョンは、一旦中継バージョンに更新した後に目的のバージョンに更新しないと、更新時または更新後にＭＦＰに動作不具合が発生する可能性がある。動作不具合の可能性を避けるため、中継バージョンを経ての更新が強く推奨される。
【００１０】
中継バージョンを経ての更新が必要なアクセサリＦＷが存在している場合、特許文献１を適用したとしても、アクセサリＦＷを比較対象から無条件に除外しているため、中継バージョンが存在するアクセサリＦＷの存在を特定できない。そのため、中継バージョンを経てのＦＷ更新を、配信サーバ側で判断することができない。
【００１１】
本発明は、上記の問題に鑑みて、ＭＦＰで、アクセサリＦＷグループを構成するコンポーネントを除いたＦＷグループでＦＷバージョン不一致が発生している場合であっても、ＦＷの安全な自動更新を行う配信システムを提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記課題を解決するために、本発明の配信システムは、ネットワーク機器に適用すべきファームウェアの情報と、前記ネットワーク機器のアクセサリのために適用すべきファームウェアの情報との組み合わせを登録する第１の登録手段と、前記ネットワーク機器のアクセサリのために適用すべきファームウェアの情報を登録する第２の登録手段と、ネットワーク上のネットワーク機器に適用されているファームウェアの情報を受信する受信手段と、前記第１の登録手段により登録された組み合わせの中で、前記受信手段により受信されたファームウェアの情報を包含する情報を持つ組み合わせが存在するか否かを判定する第１の判定手段と、前記第１の判定手段により存在すると判定された場合に、前記ネットワーク上の前記ネットワーク機器に対して、更新として適用すべきファームウェアの情報を通知する通知手段と、前記第１の判定手段により存在しないと判定された場合に、前記第２の登録手段により登録された情報の中に、前記受信手段により受信されたファームウェアの情報に含まれる前記ネットワーク機器のアクセサリのために適用されているファームウェアの情報を包含する情報が存在するか否か判定する第２の判定手段と、前記第２の判定手段により存在すると判定された場合に、前記第１の登録手段により登録された組み合わせの中から、前記ネットワーク機器のアクセサリのために適用されているファームウェアの情報を包含する情報を含む組み合わせを特定する特定手段と、を有し、前記通知手段は、前記特定手段により特定された組み合わせに基づき、前記ネットワーク機器に対して、更新として適用すべきファームウェアの情報を通知することを特徴とする。
【発明の効果】
【００１３】
本発明によれば、ＭＦＰで、アクセサリーＦＷグループを構成するコンポーネントを除いたＦＷグループでＦＷバージョン不一致が発生している場合であっても、エンドユーザに対して、ＦＷの安全な自動更新を行う配信システムを提供することができる。
【図面の簡単な説明】
【００１４】
【図１】ファームウェア（ＦＷ）配信システムの全体構成を示す図である。
【図２】ＦＷ配信サーバおよびクライアント端末のハードウェア構成図である。
【図３】ＭＦＰのハードウェア構成図である。
【図４】ファームウェア（ＦＷ）登録を行う際のＵＩ図である。
【図５】ファームウェア（ＦＷ）登録を行う際のＵＩ図である。
【図６】ＦＷ配信サーバのソフトウェアモジュール構成図である。
【図７】ＦＷ配信サーバのＦＷ情報のデータ構造を示す図である。
【図８】ＦＷ配信サーバのＦＷ情報のデータ構造を示す図である。
【図９】ＦＷ配信サーバのＦＷ情報のデータ構造を示す図である。
【図１０】デバイス商品情報のデータ構造を示す図である。
【図１１】ＭＦＰのアップデーターのソフトウェアモジュール構成図である。
【図１２】適用可能ＦＷ確認の動作を示すフローチャートである。
【図１３】適用可能ＦＷリクエスト受信時のフローチャートである。
【図１４】適用可能ＦＷリクエスト受信時のフローチャートである。
【図１５】適用可能ＦＷリクエスト受信時のフローチャートである。
【図１６】第２実施形態のカタログ追加処理のフローチャートである。
【図１７】第２実施形態の適用可能ＦＷリクエスト受信時のフローチャートである。
【図１８】第３実施形態の適用可能ＦＷリクエスト受信時のフローチャートである。
【図１９】第３実施形態の限定適用可能ＦＷ遅延決定のフローチャートである。
【発明を実施するための形態】
【００１５】
以下、本発明を実施するための形態について図面などを参照して説明する。
【００１６】
（第１実施形態）
まず、図１を参照して、本実施形態に係る配信システムの全体構成について説明する。図１は、本実施形態に係るファームウェア（ＦＷ）配信システムの全体構成を示す模式図である。ＦＷ配信システムは、ＦＷ配信サーバ１０１と、ＭＦＰ（ネットワーク機器）１１１と、クライアント端末１２１を含む。ＦＷ配信サーバ１０１と、ＭＦＰ１１１と、クライアント端末１２１は、ネットワーク１３１〜１３３を介して通信可能に構成されている。なお、本実施形態では、ＭＦＰ１１１およびクライアント端末１２１は、ネットワーク１３１〜１３３に複数台接続されているとする。ＦＷ配信サーバ１０１は、サーバコンピュータなどであってよい。ＦＷ配信サーバ１０１は、ネットワーク上のＭＦＰ１１１向けに、更新されたバージョンのＦＷの配信を行う。ＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｒｉｎｔｅｒ）１１１は、ＦＷの更新を行うアップデーターを搭載した画像形成装置であってよい。ここで、アップデーターは、ＦＷ配信サーバ１０１からＦＷをダウンロードし、ＭＦＰ１１１のＦＷ更新を行う。なお、ＭＦＰ１１１は、顧客のオフィス等に設置されていてよい。
【００１７】
クライアント端末１２１は、例えば、デスクトップパソコン、ノートパソコン等の情報処理装置であってよく、Ｗｅｂブラウザを実行する環境が内蔵されている。クライアント端末１２１は、ＭＦＰメーカー等のクライアント端末を示しており、ＦＷ配信サーバ１０１に新しいＦＷの登録を行うための端末である。ネットワーク１３１〜１３３は、いわゆる通信ネットワークであって、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、電話回線、専用デジタル回線等の組み合わせにより実現される。
【００１８】
図２は、本実施形態に係るＦＷ配信サーバ１０１、クライアント端末１２１のハードウェア構成例を示している。本実施形態に係るＦＷ配信サーバ１０１およびクライアント端末１２１は、一般的な情報処理装置等のコンピュータのハードウェア構成であってよい。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）２０１は、メモリにロードされたＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）やアプリケーション等のプログラムを実行する。メモリは、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）２０２やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）２０３などで実現される。なお、ＲＡＭ２０２は、ＣＰＵ２０１の主メモリであり、ワークエリア等として機能する。本実施形態では、ＲＯＭ２０３は、プログラムＲＯＭとデータＲＯＭを有する。後述する各フローチャートの処理は、このＣＰＵ２０１により実行されるプログラムによって実現される。すなわち、プログラムは、コンピュータを、後述するフローチャートの各処理を実行する各処理部として機能させる。
【００１９】
キーボードコントローラ２０４は、キーボード２０８や不図示のマウスなどの入力装置であるポインティングデバイスからのキー入力やポイント入力などを制御する。ディスプレイコントローラ２０５は、表示用デバイスであるディスプレイ２０９の表示を制御する。ディスクコントローラ２０６は、各種データを記憶する外部記憶装置２１０であるハードディスク（ＨＤ）やソリッドステートドライブ（ＳＳＤ）へのデータアクセスを制御する。ＮＩＣ（ネットワークインターフェースカード）２０７は、ネットワークインターフェース（以下、インタフェースを「Ｉ／Ｆ」と略す）であり、ネットワーク１３１、１３３を介して接続された他の機器との通信制御処理を実行する。外部記憶装置２１０には、ＯＳ、アプリケーション、サービス群のプログラム等が格納されると共に、ＯＳによりファイルシステムが構築され、ＯＳの管理下で各種ファイルが格納される。バス２１１は、相互接続バスであり、ＣＰＵ２０１により各ブロック間の通信を仲介する。
【００２０】
図３は、ＭＦＰ１１１のハードウェア構成例を示す図である。ＭＦＰ１１１は、コントローラ３１０と、プリンタ３０１、スキャナ３０２、操作部３０３から構成される。コントローラ３１０は、ＣＰＵ３１１、ＲＡＭ３１２、ＨＤＤ３１３、ネットワークＩ／Ｆ３１４、プリンタＩ／Ｆ３１５、スキャナＩ／Ｆ３１６、ＦＡＸＩ／Ｆ３１９、操作部Ｉ／Ｆ３１７、拡張Ｉ／Ｆ３１８から構成される。ＣＰＵ３１１は、ＲＡＭ３１２、ＨＤＤ３１３、ネットワークＩ／Ｆ３１４、プリンタＩ／Ｆ３１５、スキャナＩ／Ｆ３１６、ＦＡＸＩ／Ｆ３１９、操作部Ｉ／Ｆ３１７、拡張Ｉ／Ｆ３１８との間で、データを授受することが可能である。また、ＣＰＵ３１１は、ＨＤＤ３１３から読み出したＭＦＰのＦＷのプログラムをＲＡＭ３１２に展開し、展開したＲＡＭ３１２に記憶されたプログラムを実行する。なお、ＨＤＤ３１３には、ＣＰＵ３１１で実行可能なＭＦＰのＦＷのプログラムや、デバイスで使用する設定値、ユーザから依頼された処理に関するデータ等を記憶しておくことが可能である。
【００２１】
ＲＡＭ３１２は、ＨＤＤ３１３に記憶されたＭＦＰ１１１のＦＷのプログラムを展開してＣＰＵ３１１から読み出し可能とし、プログラムの実行に必要な各種のデータを記憶しておくことが可能である。ネットワークＩ／Ｆ３１４は、ネットワーク１３２を通じて、ＭＦＰ１１１と他の装置とでネットワーク通信を行うためのＩ／Ｆである。ネットワークＩ／Ｆ３１４は、データ受信を行ったことをＣＰＵ３１１に伝達すると共に、ＣＰＵ３１１からの指示に基づき、ＲＡＭ３１２上のデータをネットワーク１２３に送信する。プリンタＩ／Ｆ３１５は、ＣＰＵ３１１から送信された画像データをプリンタ３０１に送信するＩ／Ｆである。また、プリンタ３０１から受信したプリンタの状態をＣＰＵ３１１に伝達する。スキャナＩ／Ｆ３１６は、ＣＰＵ３１１から送信された画像読み取り指示をスキャナ３０２に送信するＩ／Ｆである。また、スキャナ３０２から受信した画像データをＣＰＵ３１１に通知する。ＦＡＸＩ／Ｆ３１９は、ＣＰＵ３１１から送信された画像データを、電話番号などのＦＡＸ送信先の情報と共に、ＦＡＸ３０４に送信するＩ／Ｆである。また、ＦＡＸ３０４から受信した画像データを、電話番号などのＦＡＸ送信元の情報と共に、ＣＰＵ３１１に伝達する。操作部Ｉ／Ｆ３１７は、操作部３０３から入力されたユーザからの指示をＣＰＵ３１１に伝達するＩ／Ｆである。また、ユーザが操作するための画面情報を操作部３０３に伝達する。
【００２２】
プリンタ３０１は、プリンタＩ／Ｆ３１５から受信した画像データを用紙に印刷する。また、プリンタ３０１は、自身の状態をプリンタＩ／Ｆ３１５に伝達する。スキャナ３０２は、スキャナＩ／Ｆ３１６から受信した画像読み取り指示に従って、スキャナに置かれた用紙を読み取りデジタルデータ化してスキャナＩ／Ｆ３１６に伝達する。また、スキャナ３０２は、自身の状態をスキャナＩ／Ｆ３１６に伝達する。ＦＡＸ３０４は、不図示の電話通信網やＦＡＸ通信網と接続されている。ＦＡＸ３０４は、ＦＡＸＩ／Ｆ３１９から受信した画像データを同じく受信したＦＡＸ送信先の情報に基づき、ＦＡＸ送信する。また、ＦＡＸ受信した画像データを、その送信元の情報と共に、ＦＡＸＩ／Ｆ３１９に伝達する。更に、ＦＡＸ３０４は、自身の状態を、ＦＡＸＩ／Ｆ３１９に伝達する。操作部３０３は、ＭＦＰ１１１をユーザから操作することを可能にする。例えば、タッチパネルを有する液晶画面を具備し、ユーザに操作画面を提供すると共に、ユーザからの操作を受け付ける。拡張Ｉ／Ｆ３１８は、画像形成装置１０１に外部機器を接続することを可能とするＩ／Ｆである。例えば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）形式のＩ／Ｆを具備し、ＵＳＢメモリなどの外部記憶装置を接続してデータの読み取り、書き込みを行うことが可能である。
【００２３】
図４は、本実施形態に係るＦＷ配信サーバ１０１のＦＷ登録ＵＩ（ユーザインターフェース）の一例を示す図である。ＦＷ登録ＵＩ４０１は、ＭＦＰメーカーのクライアント端末１２１のＷｅｂブラウザに表示される。ユーザは、例えば、クライアント端末１２１のＷｅｂブラウザを用いて、ＦＷ配信サーバ１０１にアクセスし、ＦＷ登録者としてログインした際にＦＷ登録ＵＩ４０１がＷｅｂブラウザに表示される。
【００２４】
ＦＷ登録ＵＩ４０１は、ＦＷ登録者がＭＦＰのＦＷグループ、または、アクセサリーのＦＷグループの登録作業を行うためのＵＩである。ＦＷ登録ＵＩ４０１において、ラジオボタン４０２は、登録するＦＷの種別を選択する。本実施形態では、ＦＷ種別として、ＭＦＰ、アクセサリーを選択することができる。
【００２５】
エディットボックス４０３は、ＦＷグループ名を指定し、新規のＦＷグループ名を入力するか、既存のＦＷグループ名を検索して入力するかのいずれかの方法で指定する。既存のＦＷグループ名を検索して入力するには、ボタン４１３を押下した際に別途表示されるＦＷグループ名検索ボックスで検索した結果から選択してもよい。ＦＷグループ名指定ボックスでの検索は、ＦＷ種別ボタン４０２で指定されたＦＷ種別に基づき、ＦＷ配信サーバ１０１により実行される。ＦＷ配信サーバ１０１に、ＦＷ種別ボタン４０２で指定されたＦＷ種別で登録済みのＦＷグループ名を一覧表示する。
【００２６】
エディットボックス４０４は、ＦＷグループのバージョンを指定する。ＦＷグループのバージョンは、直接入力するか、検索ボタン４１４を押下した際に別途表示されるＦＷグループバージョン検索ボックスで検索した結果から選択してもよい。ＦＷグループバージョン検索ボックスでの検索は、ＦＷグループ名指定のエディットボックス４０３で指定されたＦＷグループ名に基づきＦＷ配信サーバ１０１により実行される。ＦＷ配信サーバ１０１に、ＦＷグループ名指定のエディットボックス４０３で指定されたＦＷグループ名で登録済みのバージョンを一覧表示する。
【００２７】
エディットボックス４０５は、ＦＷグループのデバイス商品名を指定する。ＭＦＰまたはアクセサリーのデバイス商品名を入力する。デバイス商品名は、検索ボタン４１５を押下した際に別途表示されるデバイス商品名検索ボックスで検索した結果から選択してもよい。デバイス商品名検索ボックスでの検索は、ＦＷグループ名指定エディットボックス４０３で指定されたＦＷグループ名に基づき、ＦＷ配信サーバ１０１により実行される。ＦＷ配信サーバ１０１に、ＦＷグループ名指定のエディットボックス４０３で指定されたＦＷグループ名で登録済みのデバイス商品名を一覧表示する。なお、デバイス商品名は、１つのＦＷグループに対して、複数設定可能である。デバイス商品名は、ＦＷ登録とは別に、デバイス商品登録として、デバイスシリアル番号と紐付けられてＦＷ配信サーバ１０１に登録されていてもよい。
【００２８】
エディットボックス４０６は、ＦＷグループのＦＷ管理ファイルを指定する。ここで、ＦＷ管理ファイルとは、ＦＷグループを構成する各ＦＷコンポーネントの情報を記載したファイルである。ＦＷ登録の際に、ＦＷ登録者が規定のフォーマットに従って記述し、用意しておく。ＦＷコンポーネントの情報とは、例えば、タイプ名、バージョン、コンポーネントのファイル名等のＦＷコンポーネント毎に一意な情報である。ＦＷ管理ファイルの指定は、クライアント端末１２１の外部記憶装置２１０等に構築されたファイルシステム上のパスを直接入力するか、参照ボタン４１７を押下した際に別途表示されるファイル選択ダイアログで、ファイルを選択することで行ってよい。
【００２９】
エディットボックス４０７は、ＦＷグループを構成する各ＦＷコンポーネントのファイルを指定する。ＦＷコンポーネントのファイル指定は、クライアント端末１２１の外部記憶装置２１０等に構築されたファイルシステム上のパスを直接入力する。または、参照ボタン４１７、４１８を押下した際に別途表示されるファイル選択ダイアログで、ファイルを選択して指定してもよい。ＦＷコンポーネントのファイル指定は、行の追加ボタン４１９でＦＷコンポーネント指定エディットボックスの数を必要数追加して、それぞれのエディットボックスで個々のＦＷコンポーネントのファイルを指定する。または、複数のＦＷコンポーネントのファイルをＺＩＰ形式でアーカイブしたファイルを用意し、そのアーカイブファイルのパスをＦＷコンポーネント指定エディットボックスで指定してもよい。
【００３０】
ＦＷグループを構成する各ＦＷコンポーネントは、ＦＷ種別毎に異なる。ＦＷ種別がＭＦＰの場合、ＭＦＰ本体のＦＷコンポーネントと、そのＭＦＰに設置可能なアクセサリーのＦＷコンポーネントが、１つのＦＷグループとして登録される。これは通常、ＭＦＰメーカーが、ＭＦＰ本体と同時に動作確認を行ったアクセサリーの最新ＦＷコンポーネントの組み合わせである。ここで、ＦＷ種別がアクセサリーの場合、アクセサリー個別のＦＷコンポーネントが、ＦＷグループとして登録される。
【００３１】
エディットボックス４０８は、ＦＷグループのアップデート対象バージョンを指定する。ＦＷ登録を行うＭＦＰまたはアクセサリーのＦＷグループにアップデート可能なＦＷグループおよびそのバージョンを指定する。これは、例えば、ＦＲＯＭやＴＯ指定の考え方に基づいてよい。ここで、ＦＲＯＭ、ＴＯ指定の考え方とは、アップデート元のバージョンと、アップデート先のバージョンを指定するという考え方である。すなわち、現在登録を行っているＦＷグループのバージョンをアップデート先の”ＴＯ”のＦＷグループバージョンとした場合、その”ＴＯ”のＦＷグループバージョンにアップデート可能なアップデート元の”ＦＲＯＭ”のＦＷグループバージョンを登録する。これにより、アップデート可能なＦＷグループバージョンを限定することができる。この指定は、いわゆる中継バージョンを設定する場合に必要である。具体的には、例えば、バージョンが”Ｖ１．９”の登録時に、中継バージョンとして”Ｖ１．８”を設定する場合、”ＦＲＯＭ”のＦＷグループバージョンに”Ｖ１．８”のみを指定し、それ以前の”Ｖ１．７”などの登録バージョンを設定しない。従って、”Ｖ１．８”以前のバージョンから”Ｖ１．９”にアップデートする際には、必ず”Ｖ１．８”を経由する必要があることを、明示的に指定できる。
【００３２】
ここで、図５を参照して、ＦＷアップデート対象バージョン選択ＵＩ４５１について説明する。アップデート対象バージョンは、１つのＦＷグループに対して、複数設定可能である。現在登録するＦＷグループのバージョン自身は、ＦＷアップデート対象バージョン選択ＵＩ４５１で１つの選択も行われない場合でも、暗黙的に設定される。例えば、バージョンが”Ｖ１．９”の登録時には、”Ｖ１．９”が暗黙的にアップデート対象バージョンの１つとして設定される。
【００３３】
アップデート対象バージョンの指定は、検索ボタン４２０を押下した際に別途表示されるＦＷアップデート対象バージョン選択ＵＩ４５１で選択することで行う。ＦＷアップデート対象バージョン選択ＵＩ４５１での検索は、ＦＷ種別ボタン４０２、ＦＷグループ名指定のエディットボックス４０３、ＦＷグループバージョン指定のエディットボックス４０４での指定値に基づいて、ＦＷ配信サーバ１０１により実行される。ＦＷ種別がＭＦＰの場合、ＦＷ配信サーバ１０１に、ＦＷグループ名指定エディットボックス４０３で指定されたＦＷグループ名で登録されているＦＷグループバージョンが一覧表示される。ＦＷ種別がアクセサリーの場合、ＦＷ配信サーバ１０１に、ＦＷグループ名指定エディットボックス４０３で指定されたＦＷグループ名で登録されているＦＷグループバージョンが一覧表示される。加えて、ＦＷ配信サーバ１０１に、ＦＷ種別がＭＦＰとして登録されているＦＷグループと、そのＦＷグループバージョンが一覧表示される。
【００３４】
図５に示すＦＷアップデート対象バージョン選択ＵＩ４５１では、ＦＷ種別がアクセサリーの場合の表示例を示している。ＦＷアップデート対象バージョン選択ＵＩ４５１において、ファームウェア種別４５２には、ＦＷ登録ＵＩ４０１で検索ボタン４２０が押下された際のＦＷ種別ボタン４０２の選択値が表示される。ＦＷグループ名４５３には、ＦＷ登録ＵＩ４０１で検索ボタン４２０が押下された際のＦＷグループ名指定エディットボックス４０３の入力値が表示される。ＦＷグループバージョン４５４には、ＦＷ登録ＵＩ４０１で検索ボタン４２０が押下された際のＦＷグループバージョン指定エディットボックス４０４の入力値が表示される。
【００３５】
デバイス商品名４５５には、ＦＷ登録ＵＩ４０１で検索ボタン４２０が押下された際のデバイス商品名指定のエディットボックス４０５の入力値が表示される。チェックボックス４５８は、アップデート対象バージョンを指定する。アクセサリー、ＭＦＰのＦＷ種別毎、および、ＦＷグループ別に選択可能なバージョンが表示される。全選択ボタン４６１、４６３、４６５、４６７は、ＦＷグループ内のバージョン毎のチェックボックスを全てチェック状態にする。全解除ボタン４６２、４６４、４６６、４６８は、ＦＷグループ内のバージョン毎のチェックボックスを全て非チェック状態にする。選択ボタン４９１は、アップデート対象バージョン指定チェックボックス４５８でチェックが付いているＦＷグループバージョンを選択値として確定する。そして、ＦＷ登録ＵＩ４０１のアップデート対象バージョン指定のエディットボックス４０８に反映し、ＦＷアップデート対象バージョン選択ＵＩ４５１を閉じる。キャンセルボタン４９２は、ＦＷアップデート対象バージョン選択ＵＩ４５１での選択値をＦＷ登録ＵＩ４０１に反映することなく、ＦＷアップデート対象バージョン選択ＵＩ４５１を閉じる。
【００３６】
図４に戻って、登録ボタン４３１は、押下された際、クライアント端末１２１のＷｅｂブラウザからＦＷ配信サーバ１０１にＦＷ登録リクエストが送信される。そして、ＦＷ登録リクエストのパラメータには、ＦＷ種別ボタン４０２、エディットボックス４０３〜４０５、４０８で指定された値が設定されると共に、エディットボックス４０６〜４０７でパス指定されたファイルのコンテンツが読み込まれて、設定される。すなわち、ＦＷ種別、ＦＷグループ名、ＦＷグループバージョン、デバイス商品名の情報と共に、ＦＷ管理ファイルのコンテンツ、および、ＦＷグループを構成する各ＦＷコンポーネントのファイルのコンテンツがＦＷ配信サーバ１０１にアップロードされる。キャンセルボタン４３２は、それぞれ指定された値を設定することなく、ＦＷ登録ＵＩ４０１を閉じる。
【００３７】
図６は、本実施形態に係るＦＷ配信サーバ１０１のソフトウェアモジュールの構成を示すブロック図である。メイン制御部５０２は、ＦＷ配信サーバ１０１における中心的な処理部であり、図５に示す他のソフトウェアモジュールと連携して、ＦＷ登録、および、ＦＷ配信に関わる各種処理を実行する。クライアント通信部５０３は、ＮＩＣ２０７を介して、ＭＦＰデバイス１１１やクライアント端末１２１のＷｅｂブラウザとＨＴＴＰによる通信を行う。クライアントＵＩ生成部５０４は、クライアント端末１２１のＷｅｂブラウザからのリクエストに応じて、ＵＩ表示用のＨＴＭＬデータを生成する。例えば、前述のＦＷ登録ＵＩ４０１などを生成する。メイン制御部５０２は、クライアント通信部５０３を介して、クライアント端末１２１のＷｅｂブラウザからリクエストを受けた際、リクエストの内容に応じて、クライアントＵＩ生成部５０４を用いて前述のＦＷ登録ＵＩ４０１を生成する。
【００３８】
デバイス商品情報５３１には、デバイス商品名と、それに対応するデバイスシリアル番号の範囲（以下、「機番データバンド」と呼ぶ）と、デバイス商品種別が保持される。メイン制御部５０２は、クライアント端末１２１のＷｅｂブラウザからデバイス商品情報登録リクエストを受けた際、リクエストパラメータに設定されたデバイス商品種別、デバイス商品情報名、機番データバンドの情報をデバイス商品情報５３１に格納する。
【００３９】
ＦＷ情報５３２には、ＦＷ登録ＵＩ４０１で登録されたＦＷグループに関するＦＷ種別、ＦＷグループ名、ＦＷグループバージョン、デバイス商品名、アップデート対象バージョンの情報が保持される。メイン制御部５０２は、クライアント端末１２１のＷｅｂブラウザからＦＷグループ名、ＦＷグループバージョン、デバイス商品名、アップデート対象バージョンの検索リクエストを受けた際、ＦＷ情報５３２から検索して、クライアント端末１２１に返す。また、メイン制御部５０２は、ＦＷ登録リクエストを受けた際、リクエストパラメータに設定されたＦＷ種別、ＦＷグループ名、ＦＷグループバージョン、デバイス商品名、アップデート対象バージョンの情報をＦＷ情報５３２に格納する。さらに、メイン制御部５０２は、ＦＷ登録リクエストのリクエストパラメータに含まれるＦＷ管理ファイルのコンテンツを分解し、ＦＷコンポーネント情報として、同じくＦＷ情報５３２に格納する。
【００４０】
ＦＷ実体保持領域５３４には、ＦＷ登録ＵＩ４０１からアップロードされたＦＷコンポーネントのコンテンツがファイル単位で保持される。メイン制御部５０２は、クライアント通信部５０３を介して、クライアント端末１２１のＷｅｂブラウザからＦＷ登録リクエストを受けた際、リクエストパラメータに含まれる各ＦＷコンポーネントのコンテンツをファイル化して、ＦＷ実体保持領域５３４に格納する。メイン制御部５０２は、リクエストパラメータに含まれるＦＷコンポーネントがアーカイブファイルのデータであった場合、アーカイブデータを展開し、個々のＦＷコンポーネントのコンテンツにファイル化して、ＦＷ実体保持領域５３４に格納する。
【００４１】
なお、ＦＷカタログ情報５３３は、本実施形態では使用せず、後述の第２実施形態で使用するため、本実施形態における説明を省略する。また、バージョン不明応答リクエスト５３５は、本実施形態では使用せず、後述の第３実施形態で使用するため、本実施形態における説明を省略する。デバイス商品情報５３１、ＦＷ情報５３２、ＦＷカタログ情報５３３、ＦＷ実体保持領域５３４は、ＦＷ配信サーバ１０１のハードディスク２１０上に確保された永続的なデータを保存するための領域であり、メイン制御部５０２よって管理される。デバイス商品情報５３１、ＦＷ情報５３２、ＦＷカタログ情報５３３は、ＤＢテーブルとして構築され、ＦＷ実体保持領域５３４は、ファイルシステム上のディレクトリとして構築される。
【００４２】
次に、図７〜９は、ＦＷ配信サーバ１０１のＦＷ情報５３２のデータ構造を示す模式図である。ＦＷ情報５３２は、ＦＷグループ情報テーブル６０１と、ＦＷコンポーネント情報テーブル６０２との２つのテーブルから構成される。ＦＷグループ情報テーブル６０１は、ＦＷグループＩＤ６１１と、ＦＷ種別６１２と、ＦＷグループ名６１３と、ＦＷグループバージョン６１４と、デバイス商品名６１５と、アップデート対象バージョン６１６と、登録日６１７の情報を保持する。ＦＷコンポーネント情報テーブル６０２は、ＦＷコンポーネントＩＤ６５１と、ＦＷグループＩＤ６５２と、ＦＷタイプ名６５３と、ＦＷコンポーネントバージョン６５４と、ＦＷコンポーネントファイル名６５５のＦＷコンポーネント情報を保持する。
【００４３】
図７のＦＷグループ情報テーブル６０１において、ＦＷグループＩＤ６１１は、ＦＷグループＩＤの値を格納する列である。ＦＷグループＩＤ６１１に格納されるＦＷグループＩＤは、メイン制御部５０２が新規ＦＷグループを登録する際、ＦＷグループ毎に一意に付与する値である。ＦＷ種別６１２は、ＦＷ種別を格納する列であり、１または２が値として格納される。値１は、ＦＷ種別がＭＦＰであることを示し、値２は、ＦＷ種別がアクセサリーであることを示す。ＦＷグループ名６１３は、ＦＷグループ名の値を格納する列であり、ＦＷグループ名は、ＦＷグループバージョンが異なる前提で重複する。ＦＷグループバージョン６１４は、ＦＷグループバージョンの値を格納する列であり、ＦＷグループ名６１３とＦＷグループバージョン６１４の組み合わせは、ＦＷグループ情報テーブルで一意であり、ＦＷグループ情報テーブルの主キーとなる。デバイス商品名６１５は、デバイス商品名の値を格納する列であり、カンマ区切りで複数のデバイス商品名の値が保持される。なお、本実施形態では、１つのＦＷグループに複数のデバイス商品名が対応付け可能なデータ構造となっている。アップデート対象バージョン６１６は、アップデート対象バージョンの値を格納する列であり、セミコロン区切りでアップデート対象のＦＷグループが複数保持される。また、セミコロンで区切られたＦＷグループ毎に、カンマ区切りで複数のアップデート対象バージョンが保持される。例えば、「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ、１．０、１．１、１．２、１．３；ＭＦＰ  ＤＥＦ４５６Ｓｅｒｉｅｓ、１．０、１．１」の値を該当の列に有するＦＷグループの場合、次のようになる。すなわち、ＦＷグループ「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ」のバージョン「１．０」、「１．１」、「１．２」、「１．３」からアップデート可能である。また、ＦＷグループ「ＭＦＰ  ＤＥＦ４５６Ｓｅｒｉｅｓ」のバージョン「１．０」、「１．１」からアップデート可能である。登録日６１７は、登録日の値を格納する列であり、メイン制御部５０２が該当の行のＦＷグループを登録した日時を値として格納する。
【００４４】
図８および９のＦＷコンポーネント情報テーブル６０２において、ＦＷコンポーネントＩＤ６５１は、ＦＷコンポーネントＩＤの値を格納する列である。ＦＷコンポーネントＩＤは、メイン制御部５０２が新規ＦＷコンポーネントを登録する際、ＦＷコンポーネント毎に一意に付与する値である。ＦＷグループＩＤ６５２は、ＦＷグループＩＤの値を格納する列であり、ＦＷコンポーネントが属するＦＷグループのＦＷグループＩＤが格納される。ＦＷグループ情報テーブル６０１のＦＷグループＩＤ６１１に格納される値と同一の値が格納される。ＦＷタイプ名６５３は、ＦＷタイプ名の値を格納する列であり、ＦＷタイプ名は、ＦＷコンポーネントを識別する略称である。ＦＷタイプ名は、ＦＷグループ内で一意である。メイン制御部５０２が、ＦＷグループ間でコンポーネント毎のバージョンを比較する際には、ＦＷタイプ名毎に、バージョンの比較を行う。ＦＷコンポーネントバージョン６５４は、ＦＷコンポーネントのバージョンの値を格納する列であり、ＦＷコンポーネントバージョンは、大小比較が可能なよう、数値で設定される。ＦＷコンポーネントファイル名６５５は、ＦＷコンポーネントのファイル名の値を格納する列であり、ＦＷコンポーネントの実体となるＦＷコンポーネントファイルは、ＦＷ実体保持領域５３４に保持される。ＦＷコンポーネントファイルは、コンポーネント毎、および、コンポーネントのバージョン毎に一意な名前が付与される。各ＦＷコンポーネントファイルは、メイン制御部５０２よって、ＦＷ実体保持領域５３４において管理される。
【００４５】
図１０は、ＦＷ配信サーバ１０１のデバイス商品情報５３１のデータ構造を示す模式図である。デバイス商品情報５３１は、図１０に示すデバイス商品情報テーブル７０１で構成される。デバイス商品情報テーブル７０１は、デバイス商品ＩＤ７１１と、デバイス商品種別７１２と、デバイス商品名７１３と、機番データバンド７１４と、登録日７１５の情報を保持する。デバイス商品ＩＤ７１１は、デバイス商品ＩＤの値を格納する列である。デバイス商品ＩＤ７１１に格納されるデバイス商品ＩＤは、メイン制御部５０２が新規デバイス商品を登録する際、デバイス商品毎に一意に付与する値である。デバイス商品種別７１２は、デバイス商品種別の値を格納する列であり、１または２がデバイス商品種別の値として格納される。なお、本実施形態では、値１は、デバイス商品種別がＭＦＰであることを示し、値２は、デバイス商品種別がアクセサリであることを示す。デバイス商品名７１３は、デバイス商品情報名の値を格納する列である。機番データバンド７１４は、機番データバンドを格納する列であり、カンマ区切りで機番データバンドの型式、開始値、終了値の３つの値を格納する。例えば、型式が「ＭＦＰＡＡＡ」、開始値が「０００００」、終了値が「４９９９９」の場合、機番データバンドは、「ＭＦＰＡＡＡ０００００〜ＭＦＰＡＡＡ４９９９９」となる。機番データバンドの範囲内のデバイスシリアル番号を有するデバイスは、該当のデバイス商品情報のデバイス商品であることを示す。登録日７１５は、登録日の値を格納する列であり、メイン制御部５０２が該当の行のデバイス商品を登録した日時を値として格納する。
【００４６】
図１１は、本実施形態に係るＭＦＰ１１１のＦＷ更新を行うアップデーターのソフトウェアモジュール構成を示すブロック図である。図８において、アップデーター８０１は、ＭＦＰ１１１のＭＦＰコントローラ８９２のソフトウェアモジュールの１つである。ＭＦＰ１１１は、ソフトウェア構成として、ＭＦＰコントローラのＦＷ８９２と、ＭＦＰ本体に後付けで設置するアクセサリーのコントローラのＦＷ８９５〜８９７の２種類に大別される。アップデーター８０１は、ＭＦＰコントローラＦＷ８９２のみならず、アクセサリーコントローラＦＷ８９５〜８９７を含めたＭＦＰ１１１の全てのＦＷを更新するソフトウェアモジュールである。アップデーター８０１において、ＦＷ更新制御部８０２は、ＭＦＰ１１１のアップデーターにおける中心的な処理部であり、図１１に示す他のアップデーター関連のソフトウェアモジュールと連携して、ＦＷ更新に関わる各種処理を実行する。ＦＷ更新通信部８０３は、ＮＩＣ２０７を介して、ＦＷ配信サーバ１０１とＨＴＴＰによる通信を行う。ＦＷ更新ＵＩ部８０４は、操作部３０３に、ＦＷ更新用のＵＩを表示し、サービスエンジニアまたはエンドユーザからのＦＷ更新の要求を、操作部ＩＦ１３７１を介して、受け取る。または、定期的にＦＷの自動更新を実行するスケジュール設定の要求を受け取る。ＭＦＰ本体ＦＷ更新部８１１は、ＭＦＰコントローラＦＷ８９２の更新を制御する。アクセサリーＦＷ更新部８１２は、アクセサリーコントローラＦＷ８９５〜８９７の更新を制御する。
【００４７】
ＦＷ更新制御部８０２は、コントローラＩＦ８１３を介して、ＭＦＰコントローラＦＷ８９２およびアクセサリーコントローラＦＷ８９５〜８９７から情報を取得する。また、ＭＦＰ本体ＦＷ更新部８１１およびアクセサリーＦＷ更新部８１２は、コントローラＩＦ８１３を介して、それぞれＭＦＰ本体ＦＷおよびアクセサリーＦＷの更新を行う。
【００４８】
現在ＦＷグループ情報８２１は、現在ＦＷグループの情報として、ＭＦＰコントローラＦＷ８９２と、アクセサリーコントローラＦＷ８９５〜８９７のＦＷコンポーネントの構成情報を一纏めにして保持する。ＦＷ更新制御部８０２は、ＭＦＰコントローラＦＷ８９２およびアクセサリーコントローラＦＷ８９５〜８９７から各ＦＷコンポーネントの構成情報を取得して、それらの情報を一纏めにし、現在ＦＷグループの情報として格納する。新たなアクセサリーがＭＦＰ本体に新規に追加設置された際、その都度、ＦＷ更新制御部８０２は、追加設置されたアクセサリーコントローラＦＷからＦＷコンポーネントの構成情報を取得し、現在ＦＷグループ情報８２１の情報に追加する。また、ＭＦＰ１１１のＦＷが、ＭＦＰ本体ＦＷ更新部８１１およびアクセサリーＦＷ更新部８１２により、新しいＦＷに更新された場合にも、現在ＦＷグループ情報８２１の情報を更新する。すなわち、ＦＷ更新制御部８０２は、ＭＦＰコントローラＦＷ８９２およびアクセサリーコントローラＦＷ８９５〜８９７から、最新のＦＷコンポーネントの構成情報を再取得し、その情報に基づき、現在ＦＷグループ情報８２１の情報を再設定する。
【００４９】
現在ＦＷグループ情報８２１に格納される各ＦＷコンポーネントの構成情報は、ＦＷコンポーネントのタイプ名、バージョン、コンポーネントのファイル名である。これは、前述のＦＷ配信サーバ１０１のＦＷコンポーネント情報テーブル６０２に格納される値と同様の値であってよい。すなわち、ＭＦＰ１１１の現在ＦＷグループ情報８２１は、ＦＷ配信サーバ１０１のＦＷコンポーネント情報テーブル６０２と類似のテーブルから構成される。更新ＦＷ情報８２２は、ＦＷ更新制御部８０２が、ＦＷ更新通信部８０３を介して、ＦＷ配信サーバ１０１から受信した更新ＦＷのＦＷコンポーネント情報を保持する。更新ＦＷ実体８２３は、ＦＷ更新制御部８０２が、ＦＷ更新通信部８０３を介して、ＦＷ配信サーバ１０１からダウンロードしたＦＷコンポーネントのコンテンツをファイル単位で保持する。
【００５０】
本実施形態に係るＭＦＰ１１１のアップデーター８０１によるＦＷ更新は、次の３ステップで行われる。
１．ＦＷ配信サーバへの適用可能ＦＷ確認
２．ＦＷ配信サーバからのＦＷダウンロード
３．ダウンロードＦＷ適用
以下、上記ＦＷ更新ステップ１〜３に関して、説明する。
【００５１】
図１２は、ＦＷ更新ステップ１（ＦＷ配信サーバへの適用可能ＦＷ確認）に該当するアップデーター８０１による適用可能ＦＷ確認の動作を示すフローチャートである。まず、ステップＳ９０１で、ＭＦＰ１１１のアップデーター８０１のＦＷ更新制御部８０２は、ＦＷ更新ＵＩ部８０４を介して、ユーザ操作によるＦＷ更新の要求を検知して処理を開始する。次に、ステップＳ９０２で、ＦＷ更新制御部８０２は、ＦＷ更新の要求を行ったオペレータ区分を特定する。ここで、オペレータ区分の特定とは、操作を行ったユーザが、エンドユーザなのか、サービスエンジニアなのかを特定することである。オペレータ区分は、ＦＷ更新ＵＩ部８０４が操作部３０３に表示中のＵＩが、エンドユーザ向けのＵＩなのか、サービスエンジニア向けのＵＩなのかで判定される。ＦＷ更新制御部８０２は、エンドユーザ向けのＵＩでＦＷ更新の要求が行われた際、オペレータは、エンドユーザであると判定する。同様に、サービスエンジニア向けのＵＩでＦＷ更新の要求が行われた際、オペレータは、サービスエンジニア向けであると判定する。
【００５２】
次に、ステップＳ９０３で、ＦＷ更新制御部８０２は、コントローラＩＦ８１３を介して、ＭＦＰコントローラＦＷ８９２からＭＦＰ本体のデバイスシリアル番号の情報を取得する。そして、ステップＳ９０４で、ＦＷ更新制御部８０２は、現在ＦＷグループ情報８２１から、現在ＦＷグループの情報を取得する。現在ＦＷグループの情報として、前述の通り、ＭＦＰコントローラＦＷ８９２、およびＭＦＰ本体に設置されたアクセサリーのアクセサリーコントローラＦＷ８９５〜８９７のＦＷコンポーネントの構成情報を取得する。なお、ＦＷコンポーネントの構成情報とは、前述の通り、タイプ名、バージョン、コンポーネントのファイル名の情報である。
【００５３】
次に、ステップＳ９０５で、ＦＷ更新制御部８０２は、適用可能ＦＷリクエストを、ＦＷ更新通信部８０３を介して、ＦＷ配信サーバ１０１に送信する。適用可能ＦＷリクエストのリクエストパラメータとして、オペレータ区分、デバイスシリアル番号、現在ＦＷグループの情報を設定する。次に、ステップＳ９０６で、ＦＷ更新制御部８０２は、適用可能ＦＷリクエストに対するＦＷ配信サーバ１０１のレスポンスを待つ。すなわち、ＦＷ配信サーバ１０１からレスポンスを受信したか否かを判定する。ＦＷ配信サーバ１０１からレスポンスを受信した場合（ＹＥＳ）、ステップＳ９０７に進み、ＦＷ配信サーバ１０１からレスポンスを受信していない場合（ＮＯ）、レスポンスを受信するまで判定を続ける。
【００５４】
次に、ステップＳ９０７で、ＦＷ更新制御部８０２は、ＦＷ配信サーバ１０１のレスポンスパラメータに、適用可能なＦＷグループバージョンの情報が１つ以上存在するか否かを判定する。ＦＷ配信サーバ１０１のレスポンスパラメータに、適用可能なＦＷグループバージョンの情報が１つ以上存在する場合（ＹＥＳ）、ＦＷ更新制御部８０２は、ステップＳ９０８の処理に進む。一方、ステップＳ９０７で、ＦＷ配信サーバ１０１のレスポンスパラメータに、適用可能なＦＷグループバージョンの情報が１つも存在しない場合（ＮＯ）、ＦＷ更新制御部８０２は、ステップＳ９０９の処理に進む。
【００５５】
次に、ステップＳ９０８で、ＦＷ更新制御部８０２は、ＦＷ更新ＵＩ部８０４を用いて、ＦＷ配信サーバ１０１から受け取った適用可能なＦＷグループバージョンから適用するＦＷグループバージョンをユーザに選択させるＵＩを、操作部３０３に表示する。そして、ステップＳ９０９で、ＦＷ更新制御部８０２は、ＦＷ配信サーバ１０１のレスポンスパラメータに含まれるエラーコードに基づき、エラーメッセージを生成し、ＦＷ更新ＵＩ部８０４を用いて、操作部３０３にエラー表示を行う。以上がアップデーター８０１によるＦＷ更新ステップ１（ＦＷ配信サーバへの適用可能ＦＷ確認）の動作である。
【００５６】
次に、ＦＷ更新ステップ２（ＦＷ配信サーバからのＦＷダウンロード）の処理概要を以下に説明する。ＦＷ更新ステップ２として、ＦＷ更新制御部８０２は、ステップＳ９０８でＵＩ表示した適用可能なＦＷグループバージョンの選択ＵＩで選択されたＦＷグループバージョンに基づき、ＦＷ配信サーバ１０１にＦＷ取得リクエストを行う。ＦＷ更新制御部８０２は、ＦＷ取得リクエストのレスポンスとして受け取った適用可能ＦＷのＦＷコンポーネントの情報を更新ＦＷ情報８２２に保存する。次に、ＦＷ更新制御部８０２は、更新ＦＷ情報８２２に保存したＦＷコンポーネントのファイル名の情報に従い、個々のＦＷコンポーネントのファイルダウンロードリクエストをＦＷ配信サーバ１０１に送信する。ＦＷ更新制御部８０２は、ＦＷ配信サーバ１０１からファイルダウンロードリクエストのレスポンスとして受け取った、ファイルのコンテンツをファイル化して、更新ＦＷ実体８２３に格納する。以上が、アップデーター８０１によるＦＷ更新ステップ２（ＦＷ配信サーバからのＦＷダウンロード）の処理概要である。
【００５７】
次に、ＦＷ更新ステップ３（ダウンロードＦＷ適用）の処理概要を以下に説明する。ＦＷ更新ステップ３として、ＦＷ更新制御部８０２は、更新ＦＷ情報８２２に保存されたＦＷコンポーネントの情報を、ＭＦＰ本体ＦＷ更新部８１１およびアクセサリーＦＷ更新部８１２に渡し、ＦＷの更新指示を行う。ＭＦＰ本体ＦＷ更新部８１１およびアクセサリーＦＷ更新部８１２は、ＦＷ更新制御部８０２から渡されたＦＷコンポーネントのタイプ名の情報に従い、自分が処理可能なＦＷコンポーネントであるか否かを判定する。自分が処理可能なＦＷコンポーネントである場合、該当のＦＷコンポーネントのファイル名の情報に従い、更新ＦＷ実体８２３から更新ＦＷコンポーネントのファイルを取得する。アクセサリーＦＷ更新部８１２は、更新ＦＷコンポーネントとタイプ名が同一な現在ＦＷコンポーネントを、更新ＦＷコンポーネントのファイルで置き換え、更新する。ＦＷコンポーネントファイルの置き換えによる更新が正常終了、またはエラー終了したことを、個々のＦＷコンポーネント単位で、ＦＷ更新制御部８０２に通知する。ＦＷ更新制御部８０２は、更新ＦＷ情報８２２に保存された全てのＦＷコンポーネントの情報が、ＭＦＰ本体ＦＷ更新部８１１またはアクセサリーＦＷ更新部８１２で処理し終えた段階で、ＦＷ更新処理結果の成功／失敗を決定する。ＦＷ更新制御部８０２は、ＦＷ更新処理結果の成功／失敗と、更新後の現在ＦＷグループの情報を、ＦＷ更新結果通知リクエストとしてＦＷ配信サーバ１０１に送信し、そのレスポンスを待って、処理を終了する。
【００５８】
なお、ＦＷ更新の要求を指示したオペレータが、エンドユーザである場合、ＦＷ更新制御部８０２は、個々のＦＷコンポーネントのバージョンアップのみを許す更新を、ＭＦＰ本体ＦＷ更新部８１１およびアクセサリーＦＷ更新部８１２に指示する。この場合、ＭＦＰ本体ＦＷ更新部８１１およびアクセサリーＦＷ更新部８１２は、ＦＷコンポーネントのファイルを置き換える前に、更新前後のＦＷコンポーネントのバージョン確認を行う。バージョンダウンとなる場合には、該当のＦＷコンポーネントのファイルの置き換えをスキップし、次のＦＷコンポーネントに更新処理に移る。ファイルの置き換えをスキップしたＦＷコンポーネントがある場合でも、ＦＷ更新処理結果を失敗としない。以上がアップデーター８０１によるＦＷ更新ステップ３（ダウンロードＦＷ適用）の処理概要である。
【００５９】
図１３〜１５は、本実施形態に係るＦＷ配信サーバ１０１が適用可能ＦＷリクエストをＭＦＰ１１１のアップデーター８０１から受けた際のフローチャートである。ＦＷ配信サーバ１０１のメイン制御部５０２は、クライアント通信部５０３を介して、適用可能ＦＷリクエストを受けて処理を開始する。まず、図１３のステップＳ１００１で、メイン制御部５０２は、リクエストパラメータから、オペレータ区分、デバイスシリアル番号、現在ＦＷグループの情報を取得する。次に、ステップＳ１００２で、メイン制御部５０２は、受信したＭＦＰ１１１のデバイスシリアル番号に該当するデバイス商品名を特定する。デバイス商品名の特定は、デバイス商品情報テーブル７０１から、機番データバンド７１４の値の機番データバンド範囲に、受信したＭＦＰ１１１のデバイスシリアル番号を包含する行を検索し、該当行のデバイス商品名列７１３の値を取得することによって行う。
【００６０】
次に、ステップＳ１００３で、メイン制御部５０２は、特定したＭＦＰ１１１のデバイス商品名から、ＭＦＰ１１１のＦＷグループ名を特定する。ＭＦＰ１１１のＦＷグループ名の特定は、ＦＷ情報５３２のＦＷグループ情報テーブル６０１におけるデバイス商品名６１５から該当のデバイス商品名を値に包含する行を検索し、該当行のＦＷグループ名６１３の値を取得することによって行う。複数のＦＷグループ名６１３の値が取得される場合には、値を重複させることなく、１つに特定する。すなわち、同一のデバイス商品名を有する、同一のＦＷグループ名であれば、１つのＦＷグループ名に集約する。１つに集約した後でも単数のＦＷグループ名に集約できない場合は、集約した後に残った複数のＦＷグループ名の値を、該当のデバイス商品名に対応するＦＷグループ名、すなわち、ＭＦＰ１１１のＦＷグループ名として特定する。
【００６１】
次に、ステップＳ１００４で、メイン制御部５０２は、特定したＭＦＰ１１１のＦＷグループ名の情報と、受信したＭＦＰ１１１の現在ＦＷグループの情報を基に、登録されたＭＦＰのＦＷグループの中から、ＭＦＰ１１１の現在ＦＷバージョンを特定する。
【００６２】
具体的には、メイン制御部５０２は、ＭＦＰ１１１の現在ＦＷバージョンの特定を、以下のように行う。
・（１Ａ−１）ＦＷ情報５３２のＦＷグループ情報テーブル６０１から、特定したＭＦＰ１１１のＦＷグループ名の値を、ＦＷグループ名６１３に持つ行を検索する。
・（１Ａ−２）検索にヒットした行のＦＷグループＩＤ６１１の値を取得する。ＦＷグループＩＤは、少なくとも１つ以上取得される。
・（１Ａ−３）ＦＷグループ情報テーブル６０１から取得したＦＷグループＩＤの１つ１つに関し、以下の処理を順々に実行する。処理が成功した段階で、残りのＦＷグループＩＤに関する処理をスキップする。以下の処理で、現在の処理対象のＦＷグループＩＤの値を「Ａ００００００００Ｘ」として、記述する。
・（１Ａ−３−１）ＦＷコンポーネント情報テーブル６０２のＦＷグループＩＤ６５２に「Ａ００００００００Ｘ」を持つ行のＦＷタイプ名６５３、ＦＷコンポーネントバージョン６５４、ＦＷコンポーネントファイル名６５５の値を一覧で取得する。
・（１Ａ−３−２）受信したＭＦＰ１１１の現在ＦＷグループの情報が、（１Ａ−３−１）で取得した情報に包含されるかを確認する。これは、現在ＦＷグループの各ＦＷコンポーネントのタイプ名、バージョン、およびコンポーネントのファイル名の３つの情報がすべて一致する、ＦＷタイプ名、ＦＷコンポーネントバージョン、ＦＷコンポーネントファイル名を持つ行が存在するか否かで判定する。
・（１Ａ−３−３）受信したＭＦＰ１１１の現在ＦＷグループの各ＦＷコンポーネントの情報が１つでも包含されない場合、次のＦＷグループＩＤに関し、再び、（１Ａ−３−１）から実行する。
・（１Ａ−４）受信したＭＦＰ１１１の現在ＦＷグループの各ＦＷコンポーネントの情報を全て包含するＦＷコンポーネントを持つＦＷグループＩＤがなかった場合、現在バージョンの特定に失敗とする。
・（１Ａ−５）受信したＭＦＰ１１１の現在ＦＷグループの各ＦＷコンポーネントの情報を全て包含するＦＷコンポーネントを持つＦＷグループＩＤがある場合、以下を実行する。
・（１Ａ−６）該当のＦＷグループＩＤを、ＦＷグループ情報テーブル６０１のＦＷグループＩＤ列６１１に持つ行を検索する。
・（１Ａ−７）検索にヒットしたＦＷグループ情報テーブル６０１の行のＦＷグループバージョン列６１４の値を、受信したＭＦＰ１１１の現在ＦＷグループの現在バージョンと特定する。
【００６３】
次に、ステップＳ１００５で、メイン制御部５０２は、現在ＦＷバージョンの特定に成功したか否かを判定する。現在ＦＷバージョンの特定に成功した場合（ＹＥＳ）、ステップＳ１０５１に進む。そして、ステップＳ１０５１で、メイン制御部５０２は、ステップＳ１００３で特定したＦＷグループ名と、ステップＳ１００５で特定した現在ＦＷバージョンを基に、ＭＦＰ１１１に適用可能なＦＷグループ名とＦＷグループバージョンの組をリストアップする。
【００６４】
適用可能なＦＷグループ名とＦＷグループバージョンの組のリストアップは、以下のように行う。
・（１Ｂ−１）ＦＷグループ情報テーブル６０１において、ステップＳ１００３で特定したＦＷグループ名をＦＷグループ名列６１３に持つ行を検索する。
・（１Ｂ−２）検索にヒットした行のアップデート対象バージョン６１６において、ステップＳ１００３で特定したＦＷグループ名、およびステップＳ１００５で特定した現在ＦＷバージョンを値に包含する行を絞り込む。
・（１Ｂ−３）絞り込んだ行のＦＷグループＩＤ６１１の値をリストアップする。この絞り込んだ行のＦＷグループ名６１３の値と、ＦＷグループバージョン６１４の値の組み合わせが、ＭＦＰ１１１に適用可能なＦＷとなる。
【００６５】
例えば、ステップＳ１００３で特定したＦＷグループ名が「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ」、ステップＳ１００５で特定した現在ＦＷバージョンが「１．０」の場合、該当する行がリストアップされる。すなわち、「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ、１．０」の値をＦＷグループ名６１３に持ち、「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ、１．０」の値を、アップデート対象バージョン６１６の値に包含する行がリストアップされる。図７〜９の中で言えば、ＦＷグループ名「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ」のＦＷグループバージョン「１．８」の列がリストアップの対象となる。
【００６６】
ステップＳ１０５２で、メイン制御部５０２は、ステップＳ１０５１でリストアップしたＭＦＰ１１１に適用可能なＦＷグループ名とＦＷグループバージョンの組を、適用可能ＦＷリクエストのレスポンスとして、ＭＦＰ１１１のアップデーター８０１に返す。そして、ＦＷ配信サーバ１０１は、処理を終了する。
【００６７】
一方、ステップＳ１００５で、メイン制御部５０２は、現在ＦＷバージョンの特定に失敗した場合（ＮＯ）、現在ＦＷバージョン不明と判定し、ステップＳ１００６に進む。そして、ステップＳ１００６で、メイン制御部５０２は、受信したＭＦＰ１１１のオペレータ区分の値がサービスエンジニアか否かを判定する。メイン制御部５０２は、受信したＭＦＰ１１１のオペレータ区分が、サービスエンジニアの場合（ＹＥＳ）、ステップＳ１０６１に進む。
【００６８】
次に、ステップＳ１０６１で、メイン制御部５０２は、ステップＳ１００３で特定したＦＷグループ名を基に、ＭＦＰ１１１で適用見込みがあると想定されるＦＷグループ名とＦＷグループバージョンの組をリストアップする。ここで、ＭＦＰ１１１で適用見込みがあると想定されるＦＷとは、ＭＦＰ１１１の現在ＦＷバージョンが不明なため、該当のＦＷを適用した場合、安全なＦＷ更新が可能かどうかは不明であるということを意味する。そのため、サービスエンジニアが、責任を持ってＦＷ適用を行う必要がある。
【００６９】
適用見込みがあると想定されるＦＷグループ名とＦＷグループバージョンの組のリストアップは、以下のように行う。
・（１Ｃ−１）ＦＷグループ情報テーブル６０１で、ステップＳ１００３で特定したＦＷグループ名をＦＷグループ名６１３に持つ行を検索する。
・（１Ｃ−２）検索にヒットした行のＦＷグループ名６１３の値およびＦＷグループバージョン６１４の値の組み合わせが、ＭＦＰ１１１に適用見込みがあると想定されるＦＷとなる。
【００７０】
次に、ステップＳ１０６２で、メイン制御部５０２は、現在ＦＷバージョン不明のエラーを適用可能ＦＷリクエストのレスポンスとして、ＭＦＰ１１１のアップデーター８０１に返す。すなわち、レスポンスパラメータに、ステップＳ１０６１でリストアップしたＭＦＰ１１１に適用見込みがあると想定されるＦＷグループ名と、ＦＷグループバージョンの組のデータを併せて設定して、ＭＦＰ１１１のアップデーター８０１に返す。そして、ＦＷ配信サーバ１０１は、処理を終了する。
【００７１】
一方、ステップＳ１００６で、メイン制御部５０２は、受信したＭＦＰ１１１のオペレータ区分が、サービスエンジニア以外の場合（ＮＯ）、すなわち、エンドユーザの場合、ステップＳ１００７に進む。そして、ステップＳ１００７で、メイン制御部５０２は、ＦＷ配信サーバ１０１に登録されたアクセサリーＦＷグループの中に、ＭＦＰ１１１の現在ＦＷバージョンに包含されているものが１つ以上存在するか否かを確認する。
【００７２】
なお、ＭＦＰ１１１の現在ＦＷバージョンに包含されているものが存在するか否かの確認は、以下のように行う。
・（１Ｄ−１）ＦＷグループ情報テーブル６０１でＦＷ種別６１２の値がアクセサリーであることを示す行を選択する。
・（１Ｄ−２）ＦＷ種別６１２の値がアクセサリーである行のＦＷグループＩＤ６１１の値と同じ値を持つＦＷグループＩＤ６５２の行をＦＷコンポーネント情報テーブル６０２から検索する。
・（１Ｄ−３）検索にヒットしたＦＷコンポーネント情報テーブル６０２の行のＦＷタイプ名６５３、ＦＷコンポーネントバージョン６５４、ＦＷコンポーネントファイル名６５５の値を取得する。
・（１Ｄ−４）取得したＦＷタイプ名、ＦＷコンポーネントバージョン、ＦＷコンポーネントファイル名が、受信したＭＦＰ１１１の現在ＦＷグループのＦＷコンポーネントのいずれかの情報と一致するか否かを確認する。
・（１Ｄ−５）（１Ｄ−２）の検索でヒットしたＦＷコンポーネント情報テーブル６０２のすべての行に関して、（１Ｄ−３）〜（１Ｄ−４）が確認できた場合、該当のアクセサリーＦＷグループは、ＭＦＰ１１１の現在ＦＷバージョンに包含されると判定する。１つでも不一致の場合、包含されないと判定する。例えば、アクセサリーＦＷグループが３つのＦＷコンポーネントで構成されている場合、その１つのＦＷコンポーネントバージョンにのみ差異があった場合でも、該当のアクセサリーＦＷグループは、ＭＦＰ１１１の現在ＦＷバージョンに包含されないと判定する。
・（１Ｄ−６）（１Ｄ−１）で選択したＦＷグループ情報テーブル６０１の行のＦＷグループＩＤ６１１の値を、ＭＦＰ１１１の現在ＦＷバージョンに包含されるアクセサリーＦＷグループの情報として、ＲＡＭ２０２に記憶する。
・（１Ｄ−７）（１Ｄ−１）〜（１Ｄ−６）をＦＷグループ情報テーブル６０１でＦＷ種別６１２の値がアクセサリーであることを示す全ての行に関して実行する。
【００７３】
次に、ステップＳ１００８で、メイン制御部５０２は、ＦＷ配信サーバ１０１に登録されたアクセサリーＦＷグループの中に、ＭＦＰ１１１の現在ＦＷバージョンに包含されているものが１つ以上存在するか否かを判定する。現在ＦＷバージョンに包含されているものが１つも存在しない場合（ＮＯ）、ステップＳ１０７１に進む。そして、ステップＳ１０７１で、メイン制御部５０２は、現在ＦＷバージョン不明のエラーを適用可能ＦＷリクエストのレスポンスとして、ＭＦＰ１１１のアップデーター８０１に返す。そして、ＦＷ配信サーバ１０１は、処理を終了する。
【００７４】
一方、ステップＳ１００８で、メイン制御部５０２は、ＦＷ配信サーバ１０１に登録されたアクセサリーＦＷグループの中に、ＭＦＰ１１１の現在ＦＷバージョンに包含されているものが１つ以上存在する場合（ＹＥＳ）、ステップＳ１００９に進む。そして、ステップＳ１００９で、メイン制御部５０２は、ＭＦＰ１１１の現在ＦＷバージョンに包含されていると判定したアクセサリーＦＷグループを除外したアクセサリーＦＷグループ除外現在ＦＷグループを生成する。
【００７５】
なお、アクセサリーＦＷグループ除外現在ＦＷグループの生成は、以下のように行う。
・（１Ｅ−１）ＭＦＰ１１１の現在ＦＷグループのコピーを、アクセサリーＦＷグループ除外現在ＦＷグループとして、ＲＡＭ２０２上に生成する。
・（１Ｅ−２）（１Ｄ−６）でＲＡＭ２０２上に記憶したＭＦＰ１１１の現在ＦＷバージョンに包含されるアクセサリーＦＷグループを識別するＦＷグループＩＤ６１１の値を１つずつ取得する。
・（１Ｅ−３）ＦＷグループＩＤ６１１の値と同じ値を持つＦＷグループＩＤ６５２の行をＦＷコンポーネント情報テーブル６０２から検索する。
・（１Ｅ−４）検索にヒットしたＦＷコンポーネント情報テーブル６０２の行のＦＷタイプ名６５３、ＦＷコンポーネントバージョン６５４、ＦＷコンポーネントファイル名６５５の値を取得する。
・（１Ｅ−５）取得したＦＷタイプ名、ＦＷコンポーネントバージョン、ＦＷコンポーネントファイル名と一致するアクセサリーＦＷグループ除外現在ＦＷグループのＦＷコンポーネントを除外する。ＦＷコンポーネントを除外するとは、アクセサリーＦＷグループ除外現在ＦＷグループの情報から該当のＦＷコンポーネントの情報を削除することを言う。
・（１Ｅ−６）（１Ｅ−３）〜（１Ｅ−５）の処理を、ＲＡＭ２０２上に記憶したＭＦＰ１１１の現在ＦＷバージョンに包含されるアクセサリーＦＷグループを識別するＦＷグループＩＤ６１１の値に関して、すべて実施する。すなわち、（１Ｅ−１）〜（１Ｅ−５）の処理により、ＭＦＰ１１１の現在ＦＷグループから、アクセサリーＦＷグループ単位でＦＷコンポーネントを除外したＦＷグループが生成される。
【００７６】
次に、ステップＳ１０１０で、メイン制御部５０２は、現在ＦＷグループから生成したアクセサリーＦＷグループ除外現在ＦＷグループと、受信したＭＦＰ１１１の現在ＦＷグループの情報を基に、ＭＦＰ１１１の現在ＦＷバージョンを特定する。メイン制御部５０２は、ＭＦＰ１１１の現在ＦＷバージョンの特定を、（１Ａ−１）〜（１Ａ−７）と同様に実施する。そして、ステップＳ１０１１で、メイン制御部５０２は、アクセサリーＦＷグループ除外現在ＦＷグループに対して、現在ＦＷバージョンの特定に成功したか否かを判定する。現在ＦＷバージョンの特定に失敗した場合（ＮＯ）、現在ＦＷバージョン不明と判定し、ステップＳ１０７１に進む。
【００７７】
一方、ステップＳ１０１１で、メイン制御部５０２は、アクセサリーＦＷグループ除外現在ＦＷグループに対して、現在ＦＷバージョンの特定に成功した場合（ＹＥＳ）、ステップＳ１０１２に進む。そして、ステップＳ１０１２で、メイン制御部５０２は、ステップＳ１００３で特定したＦＷグループ名と、ステップＳ１０１１で特定した現在ＦＷバージョンを基に、ＭＦＰ１１１に限定適用可能なＦＷグループ名とＦＷグループバージョンの組をリストアップする。ここで、限定適用可能なＦＷとは、該当のＭＦＰ１１１の現在ＦＷグループのＦＷコンポーネント構成に限定して、適用可能であることを示す。なお、限定適用可能なＦＷグループ名とＦＷグループバージョンの組のリストアップは、前述のステップＳ１０５１と同様に行う。ただし、リストアップ結果から、アクセサリーＦＷグループ除外現在ＦＷグループ自体を示す組は除外する。すなわち、ステップＳ１０１１で特定した現在ＦＷグループのＦＷグループ名とＦＷグループバージョンの組は除外する。
【００７８】
次に、ステップＳ１０１３で、メイン制御部５０２は、限定適用可能ＦＷリストアップ結果に、ＦＷグループ名とＦＷグループバージョンの組が１つ存在する、複数存在する、または、１つも存在しない（組数が０である）のいずれであるかを判定する。限定適用可能ＦＷリストアップ結果に、ＦＷグループ名とＦＷグループバージョンの組が１つも存在しない（組数が０である）と判定した場合、メイン制御部５０２は、現在ＦＷバージョン不明と判定し、ステップＳ１０７１に進む。
【００７９】
また、ステップＳ１０１３で、限定適用可能ＦＷリストアップ結果にＦＷグループ名とＦＷグループバージョンの組が１つ存在すると判定した場合、メイン制御部５０２は、ステップＳ１０８１に進む。そして、ステップＳ１０８１で、メイン制御部５０２は、ステップＳ１０１２でリストアップした一組の限定適用可能なＦＷグループ名とＦＷグループバージョンを、適用可能ＦＷリクエストのレスポンスとして、ＭＦＰ１１１のアップデーター８０１に返す。
【００８０】
さらに、ステップＳ１０１３で、限定適用可能ＦＷリストアップ結果にＦＷグループ名とＦＷグループバージョンの組が複数存在すると判定した場合、メイン制御部５０２は、ステップＳ１０１４に進む。そして、ステップＳ１０１４で、メイン制御部５０２は、限定適用可能ＦＷリストアップ結果の組から、ステップＳ１００９で除外したアクセサリーＦＷグループを含む、最も低いＦＷグループバージョンを持つ組を１つピックアップする。
【００８１】
なお、ステップＳ１００９で除外したアクセサリーＦＷグループを含む、最も低いＦＷグループバージョンを持つ組のピックアップは、以下のように行う。
・（１Ｆ−１）ＭＦＰ１１１の現在ＦＷバージョンに包含されるアクセサリーＦＷグループ全てに関し、（１Ｅ−２）〜（１Ｅ−４）を実行し、その結果を、個々のアクセサリーＦＷグループ単位で、ＲＡＭ２０２上に記憶する。すなわち、アクセサリーＦＷグループ除外現在ＦＷグループ生成の際に除外したアクセサリーＦＷグループの全てのＦＷタイプ名、ＦＷコンポーネントバージョン、ＦＷコンポーネントファイル名の情報をＲＡＭ２０２上に、アクセサリーＦＷグループ単位で記憶する。
・（１Ｆ−２）複数存在する限定適用可能ＦＷリストアップ結果のＦＷグループ名とＦＷグループバージョンの組を、ＦＷグループバージョンが最も低い組から、１つずつ順次選択する。選択した限定適用可能ＦＷグループに対して、以下を実施する。
・（１Ｆ−３）選択した１つの限定適用可能リストアップ結果のＦＷグループ名とＦＷグループバージョンを値に持つ、ＦＷグループ情報テーブル６０１の行を検索し、そのＦＷグループＩＤ６１１の値を全て取得する。これにより、現在の処理対象の限定適用可能ＦＷグループのＦＷコンポーネントのＦＷグループＩＤの値一覧が取得される。
・（１Ｆ−４）取得したＦＷグループＩＤの値一覧に関し、（１Ｅ−３）〜（１Ｅ−４）を実行する。これにより、現在の処理対象の限定適用可能リストアップ結果のＦＷグループを構成するＦＷコンポーネントのＦＷタイプ名、ＦＷコンポーネントバージョン、ＦＷコンポーネントファイル名の値一覧が取得される。
・（１Ｆ−５）取得したＦＷコンポーネントの値一覧に、（１Ｆ−１）でＲＡＭ２０２上に記憶したアクセサリーＦＷグループのいずれが包含されるかを確認する。すなわち、現在の処理対象の限定適用可能ＦＷグループのＦＷコンポーネントの値一覧に、アクセサリーＦＷグループ除外現在ＦＷグループの生成の際に使用したアクセサリーＦＷグループのいずれが包含されるかを確認する。前述と同様に、各ＦＷコンポーネントのタイプ名、バージョン、およびコンポーネントのファイル名の３つの情報がすべて一致するものが存在するか否かで判定する。また、前述と同様に、アクセサリーＦＷグループを構成するＦＷコンポーネント全てに関して、一致するものが現在の処理対象の限定適用可能ＦＷグループのＦＷコンポーネントに存在した場合のみ、そのアクセサリーＦＷグループが包含されたと判定する。
・（１Ｆ−６）いずれかのアクセサリーＦＷグループを包含する限定適用可能ＦＷグループが見つかるまで、順次、現在の処理対象を変更して、（１Ｆ−３）〜（１Ｆ−５）を繰り返す。
・（１Ｆ−７）いずれかのアクセサリーＦＷグループを包含する限定適用可能ＦＷグループが見つかった場合、その限定適用可能ＦＷグループを、除外したアクセサリーＦＷグループを含む、最も低いＦＷグループバージョンを持つ組として決定する。
【００８２】
次に、ステップＳ１０１５で、メイン制御部５０２は、ステップＳ１０１４で、限定適用可能ＦＷリストアップ結果から、ステップＳ１００９で除外したアクセサリーＦＷグループを含む組がピックアップできたか否かを判定する。メイン制御部５０２は、限定適用可能ＦＷリストアップ結果から、ステップＳ１００９で除外したアクセサリーＦＷグループを含む組がピックアップできなかった場合（ＮＯ）、ステップＳ１０１６に進む。そして、ステップＳ１０１６で、メイン制御部５０２は、限定適用可能ＦＷリストアップ結果の中でＦＷグループバージョンが最も低い組を、適用可能ＦＷとして決定する。決定後、メイン制御部５０２は、ステップＳ１０８１に進む。
【００８３】
一方、ステップＳ１０１５で、メイン制御部５０２は、限定適用可能ＦＷリストアップ結果から、ステップＳ１００９で除外したアクセサリーＦＷグループを含む組をピックアップできた場合（ＹＥＳ）、ステップＳ１０１７に進む。そして、ステップＳ１０１７で、メイン制御部５０２は、ステップＳ１０１４でピックアップしたＦＷグループ名とＦＷグループバージョンの組の限定適用可能ＦＷグループに、中継バージョンのＦＷグループが存在するか否かを確認する。
【００８４】
中継バージョンのＦＷグループが存在するか否かの確認は、以下のように行う。
・（１Ｇ−１）該当のＦＷグループ名とＦＷグループバージョンを値に持つ、ＦＷグループ情報テーブル６０１の行を検索し、そのアップデート対象バージョン６１６の値を取得する。
・（１Ｇ−２）取得したアップデート対象バージョン６１６の値に、ステップＳ１０１０で決定した現在ＦＷバージョンが含まれているか否かを確認する。すなわち、アクセサリーＦＷグループ除外現在ＦＷグループと、受信した現在ＦＷグループの情報を基に特定したＭＦＰ１１１の現在ＦＷバージョンから、該当のＦＷグループ名とＦＷグループバージョンのＦＷグループにアップデート可能か否かを確認する。
・（１Ｇ−３）アップデート可能である場合、中継バージョンはないと判定する。
・（１Ｇ−４）アップデート可能ではない場合、中継バージョンが存在すると判定する。
【００８５】
次に、ステップＳ１０１８において、メイン制御部５０２は、ステップＳ１０１７における中継バージョンの存在確認の結果を確認する。すなわち、メイン制御部５０２は、ステップＳ１０１４でピックアップしたＦＷグループ名とＦＷグループバージョンの組の限定適用可能ＦＷグループに、中継バージョンのＦＷグループが存在するか否かを判定する。中継バージョンのＦＷグループが存在しないと判定した場合（ＮＯ）、ステップＳ１０１９に進む。そして、ステップＳ１０１９で、メイン制御部５０２は、ステップＳ１０１４でピックアップしたＦＷグループ名とＦＷグループバージョンの組を適用可能ＦＷとして決定する。決定後、メイン制御部５０２は、ステップＳ１０８１に進む。
【００８６】
一方、ステップＳ１０１８で、メイン制御部５０２は、中継バージョンのＦＷグループが存在すると判定した場合（ＹＥＳ）、ステップＳ１０２０に進む。そして、ステップＳ１０２０で、メイン制御部５０２は、前述のステップＳ１０１４でピックアップした限定適用可能ＦＷグループの中継バージョンのＦＷグループを適用可能ＦＷとして決定する。決定後、メイン制御部５０２は、ステップＳ１０８１に進む。
【００８７】
なお、限定適用可能ＦＷグループの中継バージョンのＦＷグループの決定は、以下のように行う。
・（１Ｈ−１）ステップＳ１０１７における中継バージョンの判定における（１Ｇ−１）で取得したアップデート対象バージョン６１６の値を取得する。
・（１Ｈ−２）取得したアップデート対象バージョン６１６の中から、限定適用可能ＦＷリストアップ結果の中のＦＷグループ名とＦＷグループバージョンの組と同一の組を検索する。
・（１Ｈ−３）アップデート対象バージョン６１６の中で検索にヒットしたＦＷグループ名とＦＷグループバージョンの組を適用可能ＦＷとして決定する。
・（１Ｈ−４）検索にヒットしたＦＷグループ名とＦＷグループバージョンの組が複数存在する場合、その中のＦＷグループバージョンが最も低い組を適用可能ＦＷとして決定する。
【００８８】
以上が適用可能ＦＷリクエストをＭＦＰ１１１のアップデーター８０１から受けた際のＦＷ配信サーバ１０１の処理である。なお、本実施形態では、アクセサリーＦＷグループの登録を、図４に示すＦＷ登録ＵＩ４０１でＦＷ種別にアクセサリーを指定して行った。しかしながら、アクセサリーＦＷグループの登録は、この方法に限定されるものではない。例えば、ＭＦＰのＦＷ管理ファイルに、ＭＦＰを構成するＦＷコンポーネントの中に含まれるアクセサリーＦＷグループを定義しておく方法であってもよい。
【００８９】
具体的には、以下の方法である。
（１）ＦＷ管理ファイルに、アクセサリーＦＷグループセクションを設ける。
［ＡＣＣＥＳＳＡＲＹ］
ＦＷ＿ＧＲＯＵＰ＿ＮＡＭＥ＝
ＦＷ＿ＧＲＯＵＰ＿ＶＥＲＳＩＯＮ＝
ＤＥＶＩＣＥ＿ＰＲＯＤＵＣＴ＿ＮＡＭＥ＝
ＵＰＤＡＴＥ＿ＴＡＲＧＥＴ＿ＶＥＲＳＩＯＮＳ＝
ＭＥＭＢＥＲ＿ＣＯＭＰＯＮＥＮＴ＿ＴＹＰＥＮＡＭＥＳ＝
ＭＦＰのＦＷグループに、アクセサリーＦＷグループが複数含まれる場合、アクセサリーＦＷグループ毎にアクセサリーＦＷグループセクションを設ける。
（２）アクセサリーＦＷグループセクションに、アクセサリーＦＷグループ毎にＦＷグループ名、ＦＷグループバージョン、デバイス商品名、アップデート対象バージョンの情報を記述する。
（３）さらに、アクセサリーＦＷグループセクションに、アクセサリーＦＷグループ毎にアクセサリーＦＷグループを構成する（アクセサリーＦＷグループのメンバーである）ＦＷコンポーネントのＦＷタイプ名を記述する。
（４）図４に示すＦＷ登録ＵＩ４０１において、ＦＷ種別にＭＦＰを指定してＦＷの登録が行われた場合、ＦＷ配信サーバ１０１は、ＦＷ管理ファイルを読み込む際、上記アクセサリーＦＷグループセクションの情報を識別する。
（５）識別したアクセサリーＦＷグループセクションの情報に従って、ＭＦＰのＦＷグループ登録とは別に、個々のアクセサリーＦＷグループを登録する。
【００９０】
以上、本実施形態によれば、ＭＦＰで、アクセサリーＦＷグループを構成するコンポーネントを除いたＦＷグループでＦＷバージョン不一致が発生している場合であっても、エンドユーザに対して、ＦＷの安全な自動更新を行うことができる。
【００９１】
（第２実施形態）
第１実施形態では、適用可能ＦＷリクエストのリクエストパラメータとして受け取った現在ＦＷグループに、ＦＷ配信サーバ１０１に登録されたアクセサリーＦＷグループのいずれかが包含されているかを判定する。この判定は、図１３のステップＳ１００４〜Ｓ１００５によれば、リクエストパラメータとして受け取った現在ＦＷグループを基にＭＦＰ１１１の現在ＦＷバージョンを特定できなかった場合、オペレータ区分がエンドユーザであれば、常に実施される。しかしながら、この処理は、登録アクセサリーＦＷグループすべてに関する総当たり確認であるため、ＦＷ配信サーバ１０１に登録されたアクセサリーＦＷグループの数が多ければ多いほど、処理に時間がかかってしまう。すなわち、サーバのＣＰＵ、メモリなどのハードウェアリソースが大きく割かれてしまう。通常、ＦＷ配信サーバ１０１は、世界中のＭＦＰ１１１のＦＷ更新を行うため、１つのリクエスト処理に対してサーバのハードウェアリソースが大きく割かれてしまうと、他のリクエストに対する処理遅延を引き起こしてしまう。このような処理遅延を軽減するため、本実施形態では、アクセサリーＦＷグループの包含確認を伴う適用可能ＦＷの決定処理を速くする手段を設ける。本実施形態では、アクセサリーＦＷグループの包含を確認する場合の適用可能ＦＷの決定処理を速くするため、ＭＦＰのＦＷグループとアクセサリーＦＷグループの可能な組み合わせを、ＦＷ登録時にあらかじめカタログ化しておく。
【００９２】
図１６は、本実施形態に係るＦＷ配信サーバ１０１のＦＷ登録後のカタログ追加処理のフローチャートである。図４のＦＷ登録ＵＩ４０１においてＦＷ登録が指示された場合、ＦＷ配信サーバ１０１のメイン制御部５０２は、ＦＷ情報５３２およびＦＷ実体保持領域５３４に登録されたＦＷ情報を保管した後、以下のカタログへの項目追加処理を行う。本実施形態のカタログとは、限定適用可能なＦＷグループの一覧表である。ここで、カタログの項目とは、限定適用可能なＦＷグループである。メイン制御部５０２は、カタログを、ＦＷカタログ保持領域５３３に格納する。まず、ステップＳ１１０１で、メイン制御部５０２は、新規登録されたＦＷグループの情報に従って、限定適用可能なＦＷグループの組み合わせを洗い出し、限定適用可能なＦＷグループのＦＷコンポーネント情報を新規作成する。
【００９３】
なお、限定適用可能なＦＷグループのＦＷコンポーネント情報の新規作成は、以下のように行う。
・（２Ａ−１）新規登録されたＦＷグループのＦＷ種別がアクセサリーの場合、該当のアクセサリーＦＷグループのアップデート対象バージョンの値をＦＷグループ情報テーブル６０１のアップデート対象バージョン６１６から取得する。例えば、ＦＷグループ名が「ＦｉｎｉｓｈｅｒＹ」、ＦＷグループバージョンが「１．３」のアクセサリーＦＷが登録された場合、そのアップデート対象バージョンの値をアップデート対象バージョン６１６から取得する。すなわち、「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ，１．０，１．１，１．２，１．３；ＭＦＰ  ＤＥＦ４５６Ｓｅｒｉｅｓ，１．０，１．１；ＭＦＰ  ＧＨＩ７８９Ｓｅｒｉｅｓ，１．０；ＦｉｎｉｓｈｅｒＹ，１．０，１．１，１．２，１．３；」を取得する。
・（２Ａ−２）取得したアップデート対象バージョンの値から、該当のアクセサリーＦＷグループと同一のＦＷグループ名を持つアップデート対象バージョンを抽出し、かつ、取得結果から該当のアクセサリーＦＷグループのＦＷグループバージョンを除外する。上記の例で言えば、「ＦｉｎｉｓｈｅｒＹ，１．０，１．１，１．２；」のみを取り出す。
・（２Ａ−３）抽出したアップデート対象バージョンのアクセサリーＦＷグループのＦＷグループ名と、ＦＷグループバージョンの各組に関し、以下の処理を交代で実行する。上記の例で言えば、「ＦｉｎｉｓｈｅｒＹ，１．０」、「ＦｉｎｉｓｈｅｒＹ，１．１」、「ＦｉｎｉｓｈｅｒＹ，１．２」の各アクセサリーＦＷグループに関して以下を実行する。
・（２Ａ−４）ＦＷコンポーネント情報テーブル６０２から、ＦＷ種別がＭＦＰのＦＷグループに関し、処理対象のアクセサリーＦＷグループを構成するＦＷコンポーネントをすべて包含するＦＷグループＩＤを検索する。
・（２Ａ−５）処理対象のアクセサリーＦＷグループを構成するＦＷコンポーネントを全て包含するＦＷグループから、全てのＦＷコンポーネントの情報を、ＦＷコンポーネント情報テーブル６０２から取り出す。すなわち、処理対象のアクセサリーＦＷグループを構成するＦＷコンポーネントを全て包含するＦＷグループＩＤと同一のＦＷグループＩＤを持つ行の値を列挙することによって行う。つまり、処理対象のアクセサリーＦＷグループを構成するＦＷコンポーネントを全て包含するＦＷグループＩＤと同一のＦＷグループＩＤを持つ行のＦＷタイプ名６５３、ＦＷコンポーネントバージョン６５４、ＦＷコンポーネントファイル名６５５の値を列挙する。
・（２Ａ−６）列挙したＦＷコンポーネント情報内の処理対象のアクセサリーＦＷグループに関し、そのアクセサリーＦＷグループの情報を新規登録されたアクセサリーＦＷグループに置き換える。上記の例で言えば、「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ，１．０」のＦＷコンポーネントに関し、「ＦｉｎｉｓｈｅｒＹ，１．０」のＦＷコンポーネントの情報を「ＦｉｎｉｓｈｅｒＹ，１．３」のＦＷコンポーネントの情報で置き換える。なお、置き換えは、（２Ａ−５）で列挙したＦＷコンポーネントの情報から、現在の処理対象のアクセサリーＦＷグループのＦＷコンポーネントの情報を削除する。そして、新たに、（２Ａ−１）の新規登録されたアクセサリーＦＷグループのＦＷコンポーネントの情報を追加することで行う。
・（２Ａ−７）（２Ａ−６）の結果を、限定適用可能なＦＷグループのカタログ項目としてＦＷカタログ保持領域５３３に格納する。
【００９４】
次に、ステップＳ１１０２で、メイン制御部５０２は、ステップＳ１１０１で新規作成した限定適用可能なＦＷグループのＦＷコンポーネント情報があるか否かを判定する。新規作成した限定適用可能なＦＷグループのＦＷコンポーネント情報がある場合（ＹＥＳ）、ステップＳ１１０３に進む。一方、ステップＳ１１０２で、メイン制御部５０２は、ステップＳ１１０１で新規作成した限定適用可能なＦＷグループのＦＷコンポーネント情報が無い場合（ＮＯ）、処理を終了する。
【００９５】
そして、ステップＳ１１０３で、メイン制御部５０２は、ステップＳ１１０１で新規作成した限定適用可能なＦＷグループのＦＷコンポーネント情報を、カタログ項目として、ＦＷカタログ保持領域５３３に格納する。次に、ステップＳ１１０４で、メイン制御部５０２は、ステップＳ１１０２またはステップＳ１１０３でカタログに追加された限定適用可能なＦＷグループのアップデート先のＦＷグループのバージョンを特定する。
【００９６】
なお、限定適用可能なＦＷグループのＦＷコンポーネント情報のアップデート先のＦＷグループのバージョンを特定は、以下のように行う。
・（２Ａ−８）（２Ａ−１）記載の新規登録されたアクセサリーＦＷグループのＦＷグループを包含する、ＦＷ種別がＭＦＰのＦＷグループの、アップデート対象バージョンの値を取得する。取得は、ＦＷコンポーネント情報テーブル６０２およびＦＷグループ情報テーブル６０１から行う。
・（２Ａ−８）アップデート対象バージョンの値に、（２Ａ−４）で検索にヒットしたＦＷグループのＦＷグループ名と、ＦＷグループバージョンが含まれていれば、そのＦＷグループをアップデート先のバージョンとして決定する。すなわち、「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ，１．０」と「ＦｉｎｉｓｈｅｒＹ，１．３」のＦＷコンポーネントのカタログ項目で言えば、「ＭＦＰ  ＡＢＣ１２３Ｓｅｒｉｅｓ，１．３」が、アップデート先のバージョンとして決定される。
【００９７】
次に、ステップＳ１１０５で、メイン制御部５０２は、カタログ項目のＴＯ情報に、ステップＳ１１０４で特定したアップデート先のＦＷのＦＷグループ名とＦＷグループバージョンの情報を組で設定する。そして、ステップＳ１１０５の実行後、メイン制御部５０２は、カタログ追加処理を終了する。
【００９８】
図１７は、本実施形態に係るＦＷ配信サーバ１０１の図１４に示すステップＳ１００７以降の処理に対応する処理を示すフローチャートである。メイン制御部５０２は、ＭＦＰ１１１のアップデーター８０１からリクエストパラメータとして受け取った現在ＦＷグループを基にＭＦＰ１１１の現在ＦＷバージョンを特定できなかった場合、かつオペレータ区分がエンドユーザの場合、以下の処理を実行する。
【００９９】
まず、ステップＳ１２０１で、メイン制御部５０２は、アップデーター８０１から受け取った現在ＦＷグループを包含する限定適用可能なＦＷグループのカタログ項目が、ＦＷカタログ保持領域５３３に存在するか否かを確認する。アップデーター８０１から受け取った現在ＦＷグループを包含するカタログ項目が存在するか否かの確認は、ＦＷカタログ保持領域５３３に格納された限定適用可能なＦＷグループの各カタログ項目を照会することによって行う。
【０１００】
次に、ステップＳ１２０２で、メイン制御部５０２は、ステップＳ１２０１で、現在ＦＷグループを包含する限定適用可能なＦＷグループのカタログ項目が、ＦＷカタログ保持領域５３３内にあるか否かを判定する。限定適用可能なＦＷグループのカタログ項目の中で、アップデーター８０１から受け取った現在ＦＷグループを包含するものを見つけることが出来なかった場合（ＮＯ）、メイン制御部５０２は、ステップＳ１２５１に進む。そして、ステップＳ１２５１で、メイン制御部５０２は、図１４のステップＳ１０７１を実行し、処理を終了する。
【０１０１】
一方、ステップＳ１２０２で、限定適用可能なＦＷグループのカタログ項目の中で、アップデーター８０１から受け取った現在ＦＷグループを包含するものを見つけることが出来た場合（ＹＥＳ）、メイン制御部５０２は、ステップＳ１２０３に進む。そして、ステップＳ１２０３で、メイン制御部５０２は、アップデーター８０１から受け取った現在ＦＷグループを包含する限定適用可能なＦＷグループのカタログ項目の中のＴＯ情報から、ＦＷグループ名と、ＦＷグループバージョンの情報の組を取り出す。
【０１０２】
次に、ステップＳ１２０４で、メイン制御部５０２は、図１４のステップＳ１０８１を実行する。すなわち、ＴＯ情報から取り出したＦＷグループ名と、ＦＷグループバージョンの組を適用可能ＦＷリクエストのレスポンスとして、ＭＦＰ１１１のアップデーター８０１に返す。そして、メイン制御部５０２は、適用可能ＦＷリクエスト受信時の処理を終了する。
【０１０３】
以上、本実施形態によれば、ＭＦＰのＦＷグループとアクセサリーＦＷグループの可能な組み合わせをＦＷ登録時にあらかじめカタログ化しておく。そして、アクセサリーＦＷグループの包含確認を伴う適用可能ＦＷの決定時にそのカタログを参照することで、ＦＷ配信サーバ１０１の適用可能ＦＷの決定に関わる処理速度を向上させることができる。
【０１０４】
（第３実施形態）
第２実施形態では、ＭＦＰのＦＷグループとアクセサリーＦＷグループの可能な組み合わせをカタログ化しておき、適用可能ＦＷの決定時にそのカタログを参照することで、アクセサリーＦＷグループの包含確認を伴う適用可能ＦＷの決定処理の速度を向上させた。しかしながら、ＦＷ配信サーバ１０１は、ＭＦＰメーカーの世界中のＭＦＰ１１１からのＦＷ更新のリクエストを一手に引き受けている。また、ＭＦＰ１１１の販売台数の増加に伴い、ＦＷ配信サーバ１０１へのＦＷ更新のリクエスト数は増加している。さらに、ＦＷ更新のリクエストは、決まった時間に集中することが多い。加えて、第２実施形態に係る処理を実施した場合でも、アクセサリーＦＷグループの包含確認を伴う適用可能ＦＷの決定の処理負荷は、アクセサリーＦＷグループの包含確認を伴わない適用可能ＦＷの決定の処理負荷に比べて、かなり高い。そのため、第１実施形態または第２実施形態を実施しなかった場合に処理できていたリクエスト数を、ＦＷ配信サーバ１０１側の過負荷のため、処理できなくなる可能性がある。ＦＷ配信サーバ１０１が過負荷のためＨＴＴＰリクエストに対する処理ができない場合、通例、ＨＴＴＰステータスコード５０３のレスポンスがＭＦＰ１１１のアップデーター８０１に返される。アップデーター８０１は、ＨＴＴＰステータスコード５０３のレスポンスをＦＷ配信サーバ１０１から受け取った場合、ＦＷ更新処理を継続することが出来ない。そのため、本実施形態では、第１実施形態または第２実施形態を実施した場合でも、従来と同様のリクエスト数を処理することができるシステムについて説明する。
【０１０５】
図１８は、本実施形態に係るＦＷ配信サーバ１０１の図１４に示すステップＳ１００７以降の処理に対応する処理を示すフローチャートである。メイン制御部５０２は、ＭＦＰ１１１のアップデーター８０１からリクエストパラメータとして受け取った現在ＦＷグループを基にＭＦＰ１１１の現在ＦＷバージョンを特定できなかった場合、かつ、オペレータ区分がエンドユーザの場合、処理を開始する。
【０１０６】
まず、ステップＳ１３０１で、メイン制御部５０２は、バージョン不明応答リクエスト５３５に、ＭＦＰ１１１のアップデーター８０１から受け取った情報に一致する情報が保存されているか否かを判定する。バージョン不明応答リクエスト５３５に保管された情報に対する一致の確認は、適用可能ＦＷリクエストのリクエストパラメータとして受け取ったデバイスシリアル番号および現在ＦＷグループの情報に関して行う。デバイスシリアル番号が一致し、かつ現在ＦＷグループの各ＦＷコンポーネントのタイプ名、バージョン、および、コンポーネントのファイル名の３つの情報がすべて一致する行が存在するか否かを判定する。
【０１０７】
次に、ステップＳ１３０２で、メイン制御部５０２は、バージョン不明応答リクエスト５３５に、ＭＦＰ１１１のアップデーター８０１から受け取った情報に一致する情報が存在しない場合（ＮＯ）、ステップＳ１３０３に進む。そして、ステップＳ１３０３で、メイン制御部５０２は、ＦＷ配信サーバ１０１の現在のシステム負荷を確認する。システム負荷の確認の方法は様々だが、大きく以下の２通りの方法がある。
（１）ＯＳコマンドを用いて、現在のＣＰＵ、メモリの使用量を取得する。
（２）現在のリクエスト処理数を確認する。適用可能ＦＷ確認する。
【０１０８】
なお、本実施形態では、それぞれ閾値を決めておき、（１）であれば、一定のＣＰＵ使用量、メモリ使用量を超えている場合、システム負荷が高いと判定する。一方、（２）であれば、一定のリクエスト処理数を超えている場合、システム負荷が高いと判定する。
【０１０９】
次に、ステップＳ１３０４で、メイン制御部５０２は、システム負荷が高いか否かを判定する。システム負荷が低い（閾値未満）と判定した場合（ＮＯ）、ステップＳ１３６１に進む。そして、ステップＳ１３６１で、メイン制御部５０２は、図１４のステップＳ１００７以降の処理、または図１７のステップＳ１２０１以降の処理を実施する。いずれかを実施後、処理を終了する。例えば、図１４のステップＳ１００７以降の処理を実施後、メイン制御部５０２は、処理を終了する。
【０１１０】
一方、ステップＳ１３０４で、メイン制御部５０２は、システム負荷が高い（閾値以上）と判定した場合（ＹＥＳ）、ステップＳ１３０５に進む。そして、ステップＳ１３０５で、メイン制御部５０２は、適用可能ＦＷリクエストのリクエストパラメータとしてアップデーター８０１受け取ったデバイスシリアル番号、および現在ＦＷグループの情報をバージョン不明応答リクエスト５３５に保存する。バージョン不明応答リクエスト５３５のテーブルは、デバイスシリアル番号を主キーとするテーブルである。
【０１１１】
次に、ステップＳ１３０６で、メイン制御部５０２は、図１４のステップＳ１０７１を実行する。すなわち、現在ＦＷバージョン不明のエラーを適用可能ＦＷリクエストのレスポンスとして、ＭＦＰ１１１のアップデーター８０１に返す。その後、処理を終了する。
【０１１２】
一方、ステップＳ１３０２で、メイン制御部５０２は、バージョン不明応答リクエスト５３５に、ＭＦＰ１１１のアップデーター８０１から受け取った情報に一致する情報が存在する場合（ＹＥＳ）、ステップＳ１３５１に進む。ステップＳ１３５１で、メイン制御部５０２は、アップデーター８０１から受け取った情報に一致する、バージョン不明応答リクエスト行の限定適用可能ＦＷグループ列に保存された値を、適用可能ＦＷリクエストのレスポンスとしてアップデーター８０１に返す。なお、バージョン不明応答リクエスト５３５のＭＦＰ１１１のアップデーター８０１から受け取った情報に一致する行に保存されている限定適用可能ＦＷグループ列の値の設定に関しては、後述する。
【０１１３】
次に、ステップＳ１３５２で、メイン制御部５０２は、ステップＳ１３５１で使用したＭＦＰ１１１のアップデーター８０１から受け取った情報に一致する行を、バージョン不明応答リクエスト５３５から削除する。その後、処理を終了する。
【０１１４】
図１９は、本実施形態に係るＦＷ配信サーバ１０１の、バージョン不明応答リクエスト５３５の各バージョン不明応答リクエスト行に、限定適用可能ＦＷグループの設定を行うフローチャートである。メイン制御部５０２は、タイマーを用いた定期処理により一定間隔毎に、例えば、１分毎に、処理を開始する。
【０１１５】
まず、ステップＳ１４０１で、メイン制御部５０２は、ステップＳ１３０３の処理を実施する。すなわち、システム負荷の確認を行う。次に、ステップＳ１４０２で、メイン制御部５０２は、ステップＳ１３０４の処理を実施する。すなわち、システム負荷が高いか否かを判定する。そして、ステップＳ１４０２で、メイン制御部５０２は、システム負荷が高いと判定した場合（ＹＥＳ）、処理を終了する。
【０１１６】
一方、ステップＳ１４０２で、メイン制御部５０２は、システム負荷が低いと判定した場合（ＮＯ）、ステップＳ１４０３に進む。そして、ステップＳ１４０３で、メイン制御部５０２は、バージョン不明応答リクエスト５３５のテーブルで、限定適用可能ＦＷグループに値が設定されていないバージョン不明応答リクエスト行を探す。
【０１１７】
次に、ステップＳ１４０４で、メイン制御部５０２は、限定適用可能ＦＷグループ列に値が設定されていないバージョン不明応答リクエスト行が見つかったか否かを判定する。限定適用可能ＦＷグループの値が設定されていないバージョン不明応答リクエスト行がない場合（ＮＯ）、メイン制御部５０２は、処理を終了する。
【０１１８】
一方、ステップＳ１４０４で、限定適用可能ＦＷグループの値が設定されていないバージョン不明応答リクエスト行がある場合（ＹＥＳ）、メイン制御部５０２は、ステップＳ１４０５に進む。そして、ステップＳ１４０５で、メイン制御部５０２は、バージョン不明応答リクエスト５３５の各バージョン不明応答リクエスト行で、限定適用可能ＦＷグループの値が設定されていない行の１つを選択する。
【０１１９】
次に、ステップＳ１４０６で、メイン制御部５０２は、選択したバージョン不明応答リクエスト行のデバイスシリアル番号および現在ＦＷグループの情報を基に、限定適用可能ＦＷグループを決定する。限定適用可能ＦＷグループの決定は、図１３〜１５のフローチャートで説明した処理と同様であるため、説明を省略する。次に、ステップＳ１４０７で、メイン制御部５０２は、選択したバージョン不明応答リクエスト行に関して、限定適用可能ＦＷグループを決定することができたか否かを判定する。限定適用可能ＦＷグループを決定することができた場合（ＹＥＳ）、ステップＳ１４０８に進む。そして、ステップＳ１４０８で、メイン制御部５０２は、該当のバージョン不明応答リクエスト行の限定適用可能ＦＷグループに、ステップＳ１４０６で決定した限定適用可能ＦＷグループのＦＷグループ名と、ＦＷグループバージョンの組の値を設定する。
【０１２０】
一方、ステップＳ１４０７で、メイン制御部５０２が、選択したバージョン不明応答リクエスト行に関して、限定適用可能ＦＷグループを決定することができない場合（ＮＯ）、ステップＳ１４０９に進む。そして、ステップＳ１４０９で、メイン制御部５０２は、限定適用可能ＦＷグループを決定できなかった、現在選択中のバージョン不明応答リクエスト行をバージョン不明応答リクエスト５３５から削除する。
【０１２１】
ステップＳ１４０８の実行後、またはステップＳ１４０９の実行後、メイン制御部５０２は、次の限定適用可能ＦＷグループの値が設定されていないバージョン不明応答リクエスト行を処理するため、ステップＳ１４０１に戻る。メイン制御部５０２は、システム負荷の状態に応じて、次のバージョン不明応答リクエスト行の処理の実行を判定する。
【０１２２】
以上、本実施形態によれば、リクエスト処理数が閾値を超えた際、図１４のステップＳ１００７以降の処理を実行せず、現在ＦＷバージョン不明のエラーを返す。ＦＷ配信サーバ１０１のリクエスト処理数が低下し、ＦＷ配信サーバ１０１の処理負荷が下がった段階で、ステップＳ１００７以降の処理を、同一のＭＦＰ１１１のアップデーター８０１からの次のリクエストに備えて用意しておく。そのため、ＭＦＰ１１１のアップデーター８０１から、次回、適用可能ＦＷ確認リクエストを受けた際、サーバ側の処理負荷が高い状態でも、第１実施形態または第２実施形態に係る処理を実施した結果をＭＦＰ１１１のアップデーター８０１を受け取ることができる。すなわち、エンドユーザからのスケジュール設定の要求に従い週毎にＦＷの自動更新を実行するアップデーター８０１であれば、アクセサリーＦＷグループを除くＦＷグループでＦＷバージョン不一致が発生している場合でも、次週にＦＷの自動更新を実行できる。
【０１２３】
（他の実施例）
本発明は、上述した実施形態を適宜組み合わせることにより構成された装置あるいはシステムやその方法も含まれるものとする。
ここで、本発明は、上述した実施形態の機能を実現する１以上のソフトウェア（プログラム）を実行する主体となる装置あるいはシステムである。また、その装置あるいはシステムで実行される上述した実施形態を実現するための方法も本発明の一つである。また、そのプログラムは、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給され、そのシステム或いは装置の１以上のコンピュータ（ＣＰＵやＭＰＵ等）によりそのプログラムが読み出され、実行される。つまり、本発明の一つとして、さらにそのプログラム自体、あるいは該プログラムを格納したコンピュータにより読み取り可能な各種記憶媒体も含むものとする。また、上述した実施形態の機能を実現する回路（例えば、ＡＳＩＣ）によっても、本発明は実現可能である。
【０１２４】
また、本発明の好ましい実施形態について説明したが、本発明は、これらの実施形態に限定されず、その要旨の範囲内で種々の変形および変更が可能である。
【図１】
2016057708.tif 000003
【図２】
2016057708.tif 000004
【図３】
2016057708.tif 000005
【図４】
2016057708.tif 000006
【図５】
2016057708.tif 000007
【図６】
2016057708.tif 000008
【図７】
2016057708.tif 000009
【図８】
2016057708.tif 000010
【図９】
2016057708.tif 000011
【図１０】
2016057708.tif 000012
【図１１】
2016057708.tif 000013
【図１２】
2016057708.tif 000014
【図１３】
2016057708.tif 000015
【図１４】
2016057708.tif 000016
【図１５】
2016057708.tif 000017
【図１６】
2016057708.tif 000018
【図１７】
2016057708.tif 000019
【図１８】
2016057708.tif 000020
【図１９】
2016057708.tif 000021