(57)【要約】【課題】ネットワーク接続可能な情報処理装置のファームウェアを適切且つ効率的に所望のファームウェアに更新できるようにする。【解決手段】ＭＦＰ１０は、中間サーバ３０との間で常時接続型の通信プロトコルに従ったコネクションを確立する。ＭＦＰ１０は、サービスサーバ４０から送信された、ファームウェアを特定ファームウェアに更新させるための特定ファーム情報が、中間サーバ３０経由で上記コネクションを介して送信されてくると、その特定ファーム情報を取得する。そして、その特定ファーム情報の内容（例えば特定ファームウェアの所在情報）に基づき、ファームウェア提供サーバ５０にアクセスして、特定ファームウェアを取得する。そして、その取得した特定ファームウェアに対応するファームウェアを、その取得した特定ファームウェアに更新する。【選択図】図１
2014179021.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続可能な通信部と、
制御部と、
を備え、前記ネットワークに接続された特定ファーム情報送信装置及びファームウェア提供サーバと前記通信部を介して通信可能な情報処理装置であって、
前記制御部は、
前記特定ファーム情報送信装置からサーバプッシュを可能とするセッションを張るための通信プロトコルに従ったセッションを前記特定ファーム情報送信装置との間で確立させ、その確立したセッションにおいて前記特定ファーム情報送信装置とのコネクションを確立させるコネクション確立処理と、
前記特定ファーム情報送信装置から当該情報処理装置宛に送信された、当該情報処理装置が有するファームウェアを所定の特定ファームウェアに更新させるための、その特定ファームウェアの所在を示す特定ファーム所在情報を少なくとも含む特定ファーム情報を、前記コネクションを介して取得する特定ファーム情報取得処理と、
前記特定ファーム情報取得処理により取得した前記特定ファーム情報に含まれている前記特定ファーム所在情報に基づき、その特定ファーム所在情報が示す前記ファームウェア提供サーバから前記特定ファームウェアを取得する特定ファームウェア取得処理と、
当該情報処理装置が有する、前記特定ファームウェア取得処理により取得した前記特定ファームウェアに対応する前記ファームウェアを、その取得した特定ファームウェアに更新する特定ファームウェア更新処理と、
を実行することを特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
情報を記憶することが可能な第１の記憶部を備え、
前記制御部は、
前記特定ファーム情報取得処理により前記特定ファーム情報を取得した場合にその取得した特定ファーム情報を前記第１の記憶部に記憶させる記憶処理と、
前記ファームウェアの更新要求を受け付ける更新要求受付処理と、
を実行し、前記更新要求受付処理により前記更新要求が受け付けられた場合は、前記第１の記憶部に記憶されている前記特定ファーム情報に基づいて、前記特定ファームウェア取得処理及び前記特定ファームウェア更新処理を実行する
ことを特徴とする情報処理装置。
【請求項３】
請求項２に記載の情報処理装置であって、
当該情報処理装置が有する前記ファームウェアに対応した所定の組込ファームウェアの所在を示す組込ファーム所在情報が予め記憶された第２の記憶部を備え、
前記制御部は、
前記更新要求受付処理により前記更新要求が受け付けられた場合に、その更新要求対象のファームウェアに対応した前記特定ファーム情報が前記第１の記憶部に記憶されているか否か判断する特定ファーム情報有無判断処理と、
前記特定ファーム情報有無判断処理により前記特定ファーム情報が前記第１の記憶部に記憶されていると判断されなかった場合に、前記第２の記憶部に記憶されている前記更新要求対象のファームウェアに対応した前記組込ファーム所在情報が示す前記ファームウェア提供サーバから、前記組込ファームウェアを取得する第１の組込ファームウェア取得処理と、
前記更新要求対象のファームウェアを前記第１の組込ファームウェア取得処理により取得した前記組込ファームウェアに更新する第１の組込ファームウェア更新処理と、
を実行することを特徴とする情報処理装置。
【請求項４】
請求項２又は請求項３に記載の情報処理装置であって、
当該情報処理装置が有する前記ファームウェアに対応した所定の組込ファームウェアの所在を示す組込ファーム所在情報が予め記憶された第２の記憶部を備え、
前記制御部は、
前記特定ファーム情報送信装置から当該情報処理装置宛に送信された、当該情報処理装置が有する前記特定ファームウェアを所定の組込ファームウェアへ戻すべき旨の解除情報を前記コネクションを介して取得する解除情報取得処理と、
前記解除情報取得処理により前記解除情報を取得した場合に、前記第２の記憶部に記憶されている前記解除情報に対応した前記組込ファーム所在情報が示す前記ファームウェア提供サーバから、前記組込ファームウェアを取得する第２の組込ファームウェア取得処理と、
前記解除情報に対応した前記特定ファームウェアを第２の組込ファームウェア取得処理により取得した前記組込ファームウェアに更新する第２の組込ファームウェア更新処理と、
を実行することを特徴とする情報処理装置。
【請求項５】
請求項４に記載の情報処理装置であって、
前記制御部は、前記解除情報取得処理により前記解除情報を取得した場合に、前記第１の記憶部に記憶されている、前記解除情報に対応した前記特定ファームウェアの前記特定ファーム情報を消去する特定ファーム情報消去処理を実行する
ことを特徴とする情報処理装置。
【請求項６】
請求項１〜請求項５の何れか１項に記載の情報処理装置であって、
前記制御部は、前記特定ファーム情報送信装置との間で前記セッションを連続的又は断続的に維持させるセッション維持処理を実行する
ことを特徴とする情報処理装置。
【請求項７】
請求項１〜請求項６の何れか１項に記載の情報処理装置であって、
前記通信プロトコルはＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨ（eXtensible Messaging and Presence Protocol over Bidirectional-streams Over Synchronous HTTP ）である
ことを特徴とする情報処理装置。
【請求項８】
ネットワークに接続可能な通信部と、
制御部と、
を備え、前記ネットワークに接続された特定サーバ及び少なくとも１つの情報処理装置と前記通信部を介して通信可能な中継サーバであって、
前記制御部は、
前記情報処理装置からの要求に応じて、前記中継サーバからサーバプッシュを可能とするセッションを張るための第１の通信プロトコルに従ったセッションの確立に応じて、前記情報処理装置との間で第１のコネクションを確立させる第１確立処理と、
前記特定サーバとの間で前記第１の通信プロトコルとは異なる第２の通信プロトコルに従った第２のコネクションを確立させる第２確立処理と、
前記特定サーバから、前記少なくとも１つの情報処理装置のうち所定の更新対象装置が有するファームウェアを所定の特定ファームウェアに更新させるための、その更新対象装置を示す装置情報及び前記特定ファームウェアの所在を示す特定ファーム所在情報を少なくとも含む特定ファーム更新指令を、前記第２のコネクションを介して取得する特定ファーム更新指令取得処理と、
前記特定ファーム更新指令取得処理により取得した前記特定ファーム更新指令に基づき、前記特定ファーム所在情報を少なくとも含む特定ファーム情報を、前記第１のコネクションを介して前記更新対象装置へ送信する第１の特定ファーム情報送信処理と、
を実行することを特徴とする中継サーバ。
【請求項９】
請求項８に記載の中継サーバであって、
情報を記憶することが可能な記憶部を備え、
前記制御部は、
前記特定ファーム更新指令取得処理により前記特定ファーム更新指令を取得した場合に、その取得した特定ファーム更新指令に基づき、前記特定ファーム情報を前記装置情報と対応付けて前記記憶部に記憶させる記憶処理と、
何れかの前記情報処理装置に対する所定の送信条件が成立した場合に、その情報処理装置へ、前記記憶部に記憶されている、その情報処理装置に対応した前記特定ファーム情報を、前記第１のコネクションを介してその情報処理装置へ送信する第２の特定ファーム情報送信処理と、
を実行することを特徴とする中継サーバ。
【請求項１０】
請求項９に記載の中継サーバであって、
前記送信条件として、前記記憶処理が実行されたこと、及び前記情報処理装置から当該中継サーバへ前記第１の通信プロトコルによる通信の接続が行われたこと、のうち少なくとも１つが設定されている
ことを特徴とする中継サーバ。
【請求項１１】
請求項８〜請求項１０の何れか１項に記載の中継サーバであって、
前記制御部は、
前記特定サーバから、前記少なくとも１つの情報処理装置のうち所定の解除対象装置が有する前記特定ファームウェアを所定の組込ファームウェアに戻すための、少なくともその解除対象装置を示す装置情報を含む特定ファーム解除指令を、前記第２のコネクションを介して取得する特定ファーム解除指令取得処理と、
前記特定ファーム解除指令取得処理により取得した前記特定ファーム解除指令に基づき、前記解除対象装置へ、前記特定ファームウェアを前記組込ファームウェアへ戻すべき旨の解除情報を、前記第１のコネクションを介して送信する解除情報送信処理と、
を実行することを特徴とする中継サーバ。
【請求項１２】
請求項９又は請求項１０に記載の中継サーバであって、
前記制御部は、
前記特定サーバから、前記少なくとも１つの情報処理装置のうち所定の解除対象装置が有する前記特定ファームウェアを所定の組込ファームウェアに戻すための、少なくともその解除対象装置を示す装置情報を含む特定ファーム解除指令を、前記第２のコネクションを介して取得する特定ファーム解除指令取得処理と、
前記特定ファーム解除指令取得処理により前記特定ファーム解除指令を取得した場合に、その取得した特定ファーム解除指令に基づき、前記記憶部に記憶されている、前記解除対象装置に対応した前記特定ファーム情報を消去する特定ファーム情報消去処理と、
を実行することを特徴とする中継サーバ。
【請求項１３】
請求項８〜請求項１２の何れか１項に記載の中継サーバであって、
前記第１の通信プロトコルはＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨ（eXtensible Messaging and Presence Protocol over Bidirectional-streams Over Synchronous HTTP ）である
ことを特徴とする中継サーバ。
【請求項１４】
請求項８〜請求項１３の何れか１項に記載の中継サーバであって、
前記第２の通信プロトコルはＨＴＴＰ（Hypertext Transfer Protocol ）である
ことを特徴とする中継サーバ。
【請求項１５】
特定サーバ及び少なくとも１つの情報処理装置とネットワークを介して通信可能な中継サーバにおいて用いられる情報中継方法であって、
前記特定サーバから、前記少なくとも１つの情報処理装置のうち所定の更新対象装置が有するファームウェアを所定の特定ファームウェアに更新させるための、その更新対象装置を示す装置情報及び前記特定ファームウェアの所在を示す特定ファーム所在情報を少なくとも含む特定ファーム更新指令を、前記中継サーバからサーバプッシュを可能とするセッションを張るための第１の通信プロトコルに従ったセッションの確立に応じて、前記情報処理装置との間で第１のコネクションを介して取得する特定ファーム更新指令取得ステップと、
前記特定ファーム更新指令取得ステップにより取得した前記特定ファーム更新指令に基づき、前記特定ファーム所在情報を少なくとも含む特定ファーム情報を、前記第１の通信プロトコルとは異なる第２の通信プロトコルに従った第２のコネクションを介して前記更新対象装置へ送信する特定ファーム情報送信ステップと、
を備えることを特徴とする情報中継方法。
【請求項１６】
特定サーバ及び少なくとも１つの情報処理装置とネットワークを介して通信可能な中継サーバが有するコンピュータに実行させる情報中継プログラムであって、
前記コンピュータに、
前記情報処理装置からの要求に応じて、前記中継サーバからサーバプッシュを可能とするセッションを張るための第１の通信プロトコルに従ったセッションの確立に応じて、前記情報処理装置との間で第１のコネクションを確立させる第１確立処理と、
前記特定サーバとの間で前記第１の通信プロトコルとは異なる第２の通信プロトコルに従った第２のコネクションを確立させる第２確立処理と、
前記特定サーバから、前記少なくとも１つの情報処理装置のうち所定の更新対象装置が有するファームウェアを所定の特定ファームウェアに更新させるための、その更新対象装置を示す装置情報及び前記特定ファームウェアの所在を示す特定ファーム所在情報を少なくとも含む特定ファーム更新指令を、前記第２のコネクションを介して取得する特定ファーム更新指令取得処理と、
前記特定ファーム更新指令取得処理により取得した前記特定ファーム更新指令に基づき、前記特定ファーム所在情報を少なくとも含む特定ファーム情報を、前記第１のコネクションを介して前記更新対象装置へ送信する特定ファーム情報送信処理と、
を実行させることを特徴とする情報中継プログラム。
【請求項１７】
特定サーバ及び少なくとも１つの情報処理装置とネットワークを介して通信可能な中継サーバと、
前記中継サーバ及びファームウェア提供サーバと前記ネットワークを介して通信可能な前記少なくとも１つの情報処理装置と、
を備えた通信システムであって、
前記中継サーバは、
前記情報処理装置からの要求に応じて、前記中継サーバからサーバプッシュを可能とするセッションを張るための第１の通信プロトコルに従ったセッションの確立に応じて、前記情報処理装置との間で第１のコネクションを確立させる第１確立処理と、
前記特定サーバとの間で前記第１の通信プロトコルとは異なる第２の通信プロトコルに従った第２のコネクションを確立させる第２確立処理と、
前記特定サーバから、前記少なくとも１つの情報処理装置のうち所定の更新対象装置が有するファームウェアを所定の特定ファームウェアに更新させるための、その更新対象装置を示す装置情報及び前記特定ファームウェアの所在を示す特定ファーム所在情報を少なくとも含む特定ファーム更新指令を、前記第２のコネクションを介して取得する特定ファーム更新指令取得処理と、
前記特定ファーム更新指令取得処理により取得した前記特定ファーム更新指令に基づき、前記特定ファーム所在情報を少なくとも含む特定ファーム情報を、前記第１のコネクションを介して前記更新対象装置へ送信する特定ファーム情報送信処理と、
を実行し、
前記情報処理装置は、
前記第１のコネクションを前記中継サーバとの間で確立させるコネクション確立処理と、
前記中継サーバから当該情報処理装置宛に送信された前記特定ファーム情報を前記第１のコネクションを介して取得する特定ファーム情報取得処理と、
前記特定ファーム情報取得処理により取得した前記特定ファーム情報に含まれている前記特定ファーム所在情報に基づき、その特定ファーム所在情報が示す前記ファームウェア提供サーバから前記特定ファームウェアを取得する特定ファームウェア取得処理と、
当該情報処理装置が有する、前記特定ファームウェア取得処理により取得した前記特定ファームウェアに対応する前記ファームウェアを、その取得した特定ファームウェアに更新する特定ファームウェア更新処理と、
を実行することを特徴とする通信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ファームウェアを有する情報処理装置、この情報処理装置と特定のサーバとの間の通信を中継する機能を有する中継サーバ、この中継サーバで用いられる情報中継方法と情報中継プログラム、及び通信システムに関する。
【背景技術】
【０００２】
ネットワーク接続機能を備えた各種情報処理装置におけるファームウェアの更新方法が種々提案されている。
特許文献１には、情報処理装置からインターネットに接続して更新情報をサーチし、そのサーチにより得られたＵＲＬ（Uniform Resource Locator）のウェブサイトにアクセスして、更新対象のソフトウェアをダウンロードする技術が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１１−２７２４５４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
情報処理装置から主体的に更新情報をサーチしてファームウェア等のソフトウェアを更新する方法は、情報処理装置における処理負荷やユーザの負担の増大を招くおそれがあるし、必ずしも適切なタイミングで更新できるとは限らない。
【０００５】
また、近年、クラウド（インターネット上の各種リソース）を利用した顧客（情報処理装置）向けの特定サービスが各種展開されつつある。特定サービスの具体例として、特定業者が、顧客に対してその顧客が保有する複数の情報処理装置をクラウド側から一括して管理することが考えられる。
【０００６】
そのような特定サービスを実現するためには、顧客の情報処理装置のファームウェアについてその一部又は全てをその特定サービスに特化した特定ファームウェアに変更する必要性が生じることも予想される。このような特定サービスを提供するにあたっては、特に、特定サービス提供対象の情報処理装置のファームウェアを適切且つ効率的に所望の特定ファームウェアに更新できるようにすることが望まれる。
【０００７】
本発明は上記課題に鑑みなされたものであり、ネットワーク接続可能な情報処理装置のファームウェアを適切且つ効率的に所望のファームウェアに更新できるようにすることを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するためになされた本発明の情報処理装置は、ネットワークに接続可能な通信部と、制御部とを備え、ネットワークに接続された特定ファーム情報送信装置及びファームウェア提供サーバと通信部を介して通信可能に構成されたものである。制御部は、コネクション確立処理と、特定ファーム情報取得処理と、特定ファームウェア取得処理と、特定ファームウェア更新処理とを実行する。
【０００９】
コネクション確立処理は、特定ファーム情報送信装置からサーバプッシュを可能とするセッションを張るための通信プロトコルに従ったセッションを特定ファーム情報送信装置との間で確立させ、その確立したセッションにおいて特定ファーム情報送信装置とのコネクションを確立させる処理である。特定ファーム情報取得処理は、特定ファーム情報送信装置から当該情報処理装置宛に送信された、当該情報処理装置が有するファームウェアを所定の特定ファームウェアに更新させるための、その特定ファームウェアの所在を示す特定ファーム所在情報を少なくとも含む特定ファーム情報を、前記コネクションを介して取得する処理である。特定ファームウェア取得処理は、特定ファーム情報取得処理により取得した特定ファーム情報に含まれている特定ファーム所在情報に基づき、その特定ファーム所在情報が示すファームウェア提供サーバから特定ファームウェアを取得する処理である。特定ファームウェア更新処理は、当該情報処理装置が有する、特定ファームウェア取得処理により取得した特定ファームウェアに対応するファームウェアを、その取得した特定ファームウェアに更新する処理である。
【００１０】
このように構成された本発明の情報処理装置では、特定ファーム情報送信装置との間で、特定ファーム情報送信装置からサーバプッシュを可能とするセッションを張るための通信プロトコルによるコネクションが確立される。そして、特定ファーム情報送信装置から上記コネクションを介して自身宛に送信されてきた特定ファーム情報を取得すると、その特定ファーム情報に含まれている特定ファーム所在情報に基づいて特定ファームウェアを取得し、対応するファームウェアをその取得した特定ファームウェアに更新する。
【００１１】
したがって、本発明の情報処理装置によれば、自身に送信されてくる特定ファーム情報をもとに自身のファームウェアを適切且つ効率的に所望のファームウェア（特定ファームウェア）に更新することができる。
【００１２】
上記課題を解決するためになされた本発明の中継サーバは、ネットワークに接続可能な通信部と、制御部とを備え、ネットワークに接続された特定サーバ及び少なくとも１つの情報処理装置と通信部を介して通信可能に構成されたものである。制御部は、第１確立処理と、第２確立処理と、特定ファーム更新指令取得処理と、第１の特定ファーム情報送信処理とを実行する。
【００１３】
第１確立処理は、情報処理装置からの要求に応じて、中継サーバからサーバプッシュを可能とするセッションを張るための第１の通信プロトコルに従ったセッションの確立に応じて、情報処理装置との間で第１のコネクションを確立させる処理である。第２確立処理は、特定サーバとの間で第１の通信プロトコルとは異なる第２の通信プロトコルに従った第２のコネクションを確立させる処理である。特定ファーム更新指令取得処理は、特定サーバから、上記少なくとも１つの情報処理装置のうち所定の更新対象装置が有するファームウェアを所定の特定ファームウェアに更新させるための、その更新対象装置を示す装置情報及び特定ファームウェアの所在を示す特定ファーム所在情報を少なくとも含む特定ファーム更新指令を、第２のコネクションを介して取得する処理である。第１の特定ファーム情報送信処理は、特定ファーム更新指令取得処理により取得した特定ファーム更新指令に基づき、特定ファーム所在情報を少なくとも含む特定ファーム情報を、第１のコネクションを介して更新対象装置へ送信する処理である。
【００１４】
このように構成された本発明の中継サーバでは、情報処理装置との間で第１のコネクションが確立され、特定サーバとの間で第２のコネクションが確立される。そして、特定サーバから第２のコネクションを介して特定ファーム更新指令を取得すると、その特定ファーム更新指令に基づく特定ファーム情報を更新対象の情報処理装置へ第１のコネクションを介して送信する。
【００１５】
したがって、本発明の中継サーバによれば、特定サーバからの特定ファーム更新指令を元に、情報処理装置のファームウェアを適切且つ効率的に所望のファームウェア（特定ファームウェア）に更新させることができる。
【００１６】
また、本発明の中継サーバにおいて制御部が実行する各処理は、それぞれ、コンピュータにそれら各処理を実行させるための情報中継プログラムとして実現することができる。
また、本発明の中継サーバ及び情報処理装置の双方を用いて通信システムを構築することで、情報処理装置のファームウェアを適切且つ効率的に所望のファームウェア（特定ファームウェア）に更新させることが可能な通信システムを提供することができる。
【図面の簡単な説明】
【００１７】
【図１】実施形態の特定サービス提供システムの概略構成を表す構成図である。
【図２】ＭＦＰに記憶されるファーム状態テーブル（ＮＶＲＡＭに記憶）及び組込ファーム情報（ＲＯＭに記憶）を表す説明図である。
【図３】中間サーバに記憶されるファーム設定テーブル及びデバイス管理テーブルを表す説明図である。
【図４】実施形態の特定サービス提供システムの動作例を表すシーケンス図である。
【図５】サービスサーバが実行するサービス処理を表すフローチャートである。
【図６】中間サーバが実行する中間サーバ処理を表すフローチャートである。
【図７】中間サーバが実行する周期タイマ処理を表すフローチャートである。
【図８】ＭＦＰが実行するＭＦＰ処理を表すフローチャートである。
【発明を実施するための形態】
【００１８】
以下に、本発明の好適な実施形態を図面に基づいて説明する。なお、本発明は、下記の実施形態に示された具体的手段や構造等に限定されるものではなく、本発明の要旨を逸脱しない範囲において種々の形態を採り得る。また、下記の実施形態の構成の一部を、課題を解決できる限りにおいて省略した態様も本発明の実施形態であり、下記の複数の実施形態を適宜組み合わせて構成される態様も本発明の実施形態である。
【００１９】
（１）特定サービス提供システム１の概要
図１に示すように、本実施形態の特定サービス提供システム１は、複数のＭＦＰ（Multi Function Peripheral ；複合機）１０と、ＰＣ（パーソナルコンピュータ）１８と、ルータ２０と、中間サーバ３０と、サービスサーバ４０と、ファームウェア提供サーバ５０とを備えている。
【００２０】
各ＭＦＰ１０は、それぞれ、ルータ２０を介してインターネット（クラウド）５上の各種リソースに接続可能であり、本実施形態では少なくとも中間サーバ３０及びファームウェア提供サーバ５０に接続して相互にデータ通信可能である。ＰＣ１８は、ルータ２０を介してインターネット５へ接続できるほか、ルータ２０を介して各ＭＦＰ１０とデータ通信することもできる。
【００２１】
ルータ２０は、複数のＭＦＰ１０とＰＣ１８とのデータ通信を中継したり、複数のＭＦＰ１０やＰＣ１８とインターネット５上の各種リソースとのデータ通信を中継したりするための周知のデータ中継装置である。ルータ２０は、ファイアウォール機能やアドレス変換機能（例えばＮＡＴ）などの各種機能を備えている。
【００２２】
ルータ２０からみてインターネット５およびこれに接続される各種リソースはいわゆるクラウドであり、一方、ルータ２０及びこれに接続された各ＭＦＰ１０及びＰＣからなるネットワークは、いわゆるＬＡＮ（Local Area Network）である。クラウド側では、中間サーバ３０、サービスサーバ４０、及びファームウェア提供サーバ５０がインターネット５に接続されている。
【００２３】
ＬＡＮ内の各ＭＦＰ１０及びＰＣ１８は、ルータ２０を介してクラウド上の中間サーバ３０やサービスサーバ４０、ファームウェア提供サーバ５０に接続してデータ通信することが可能である。また、クラウド側においても、中間サーバ、サービスサーバ４０及びファームウェア提供サーバ５０はインターネット５を介して相互にデータ通信可能である。本実施形態では、サービスサーバ４０と中間サーバ３０との間の通信、中間サーバ３０と各ＭＦＰ１０との通信、及び各ＭＦＰ１０とファームウェア提供サーバ５０との通信について詳しく説明する。
【００２４】
ルータ２０において、ファイアウォール機能は、ルータ２０内のネットワーク（ＬＡＮ）に対する外部（インターネット５側）からの不正侵入を防止する機能である。ファイアウォール機能では、外部との境界を流れるデータを監視し、不正なアクセスを検出・遮断する。アドレス変換機能は、ルータ２０内のネットワークでのみ通用するプライベートＩＰアドレスと、インターネット５上のグローバルＩＰアドレスとを、１対１で相互変換する機能である。
【００２５】
ファイアウォール機能とアドレス変換機能の具体的動作について説明する。例として、何れか１つのＭＦＰ１０と中間サーバ３０又はファームウェア提供サーバ５０との間にコネクションが確立される場合にルータで行われる動作を説明する。ファイアウォール機能およびアドレス変換機能の動作は、ＭＦＰ１０と通信相手とのコネクションが、リクエスト−レスポンス型のプロトコルに従って確立されるか、それとも常時接続型のプロトコルに従って確立されるか、によって異なる。
【００２６】
常時接続型のプロトコルとは、接続（セッション）をできるだけ（連続的又は断続的に）維持して、双方から任意のタイミングで通信を行える形式のプロトコルである。リクエスト−レスポンス型のプロトコルとは、リクエストに対してレスポンスで返信する形式のプロトコルである。本実施形態では、一例として、常時接続型のプロトコルとしてＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨ（eXtensible Messaging and Presence Protocol over Bidirectional-streams Over Synchronous HTTP の略）が用いられ、リクエスト−レスポンス型のプロトコルとしてＨＴＴＰ（Hypertext Transfer Protocol の略）が用いられる。
【００２７】
具体的には、本実施形態では、ＭＦＰ１０と中間サーバ３０との通信は主に常時接続型のＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨによるコネクションを介して行われ、ＭＦＰ１０とファームウェア提供サーバ５０との通信は主にリクエストーレスポンス型のＨＴＴＰによるコネクションを介して行われる。なお、サービスサーバ４０と中間サーバ３０との通信も主にＨＴＴＰによるコネクションを介して行われる。
【００２８】
常時接続型のプロトコルであるＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨによるＸＭＰＰセッション要求に従ったコネクション（以下「ＸＭＰＰコネクション」ともいう）が中間サーバ３０とＭＦＰ１０との間で確立される場合、ルータ２０のファイアウォール機能は、中間サーバ３０とＭＦＰ１０との通信を全て通過させる。またルータ２０のアドレス変換機能は、中間サーバ３０とＭＦＰ１０との全ての通信に対してアドレス変換を実行する。これらの動作は、ルータ２０が、ＸＭＰＰセッションを維持している通信相手を識別することによって実現される。これにより、ＸＭＰＰコネクションを用いる場合には、中間サーバ３０からＭＦＰ１０へのリクエスト情報を通過させることが可能となる。ＸＭＰＰセッションを確立するための具体的な手順については、図８のＳ６１０において説明するため、ここでの説明は省略する。
【００２９】
リクエスト−レスポンス型のプロトコルであるＨＴＴＰに従ったコネクション（以下「ＨＴＴＰコネクション」ともいう）がＭＦＰ１０とファームウェア提供サーバ５０との間で確立される場合、ルータ２０のファイアウォール機能は、ＭＦＰ１０からファームウェア提供サーバ５０へのリクエスト情報、及びファームウェア提供サーバ５０からＭＦＰ１０へのレスポンス情報は通過させる。しかし、ファイアウォール機能は、ファームウェア提供サーバ５０からＭＦＰ１０へのリクエスト情報は遮断する。これは、ファイアウォールの外部からのリクエスト情報には、不正アクセスや侵入のためのリクエスト情報が含まれている危険性があるためである。この機能は、ルータ２０のファイアウォール機能が、ＭＦＰ１０からファームウェア提供サーバ５０へ送信されたリクエスト情報に対するレスポンス情報を識別することによって実現される。
【００３０】
また、ルータ２０のアドレス変換機能は、ＭＦＰ１０からファームウェア提供サーバ５０へのリクエスト情報、及びファームウェア提供サーバ５０からＭＦＰ１０へのレスポンス情報については、アドレス変換を行う。しかし、アドレス変換機能は、ファームウェア提供サーバ５０からＭＦＰ１０へのリクエスト情報についてはアドレス変換を実行できない。従って、ファームウェア提供サーバ５０からＭＦＰ１０へのリクエスト情報は遮断される。これらの動作は、ルータ２０が、ＭＦＰ１０からファームウェア提供サーバ５０へ送信されたリクエスト情報に対するレスポンス情報を識別することによって実現される。
【００３１】
本実施形態の特定サービス提供システム１は、特定業者が予め契約した顧客に対して特定サービスを提供することが可能なシステムである。複数のＭＦＰ１０は顧客が使用するものであり、特定業者は、特定サービスとして、顧客が使用する複数のＭＦＰ１０をクラウド側から一括管理する。具体的には、特定業者は、主にサービスサーバ４０から、各ＭＦＰ１０の使用状態や消耗品の交換・補充時期等を管理したり、各ＭＦＰ１０に対して上記管理のために必要な特定の機能や顧客が要望する特定の機能を提供したりすることができる。
【００３２】
特定サービスの内容によっては、顧客の各ＭＦＰ１０が有するファームウェアの一部又は全てを、汎用の組込ファームウェアからその特定サービスに特化した顧客専用のカスタムファームウェアに変更（更新）する必要が生じる。
【００３３】
そこで本実施形態では、必要に応じてカスタムファームウェアをファームウェア提供サーバ５０に格納しておき、サービスサーバ４０から顧客の各ＭＦＰ１０を宛先としてそのカスタムファームウェアの所在（ＵＲＬ）や内容等を示すファーム情報を送信する。顧客の各ＭＦＰ１０は、クラウド側からファーム情報を受信すると、そのファーム情報に基づいてファームウェア提供サーバ５０の所定のＵＲＬにアクセスし、カスタムファームウェアをダウンロードすることができる。
【００３４】
ただし本実施形態では、サービスサーバ４０から顧客の各ＭＦＰ１０へファーム情報が直接送信されるのではなく、中間サーバ３０を介して間接的に送信される。すなわち、サービスサーバ４０からのファーム情報は、直接的には、そのファーム情報を含むカスタムファーム指定コマンドとして中間サーバ３０に送信される。中間サーバ３０は、サービスサーバ４０からカスタムファーム指定コマンドを受けると、その内容に基づいて、送信対象のＭＦＰ１０へ個別にファーム情報を送信する。
【００３５】
サービスサーバ４０と顧客の各ＭＦＰ１０との間に中間サーバ３０を介在させている理由はいろいろあるが、その主な理由は、サービス提供側（特定業者側）が様々なサービスを容易に提供できるようにするためである。提供すべき特定サービスの種類が多くなったり、特定サービス提供対象のＭＦＰの数が多くなったりすると、サービスサーバ４０の負担が増大し、サービス提供側の負担が増す。
【００３６】
また、必要なときに各ＭＦＰ１０のファームウェアを最新のカスタムファームウェアに更新させるためには、サービスサーバ４０からそのファーム情報を所望のＭＦＰ１０へすぐに送信できるようにしておくことが望ましい。しかし、各ＭＦＰ１０はルータ２０を介してインターネット５に接続されているため、ルータ２０が障壁となって、サービスサーバ４０から各ＭＦＰ１０へ直接アクセスすることは難しい。
【００３７】
そこで本実施形態では、中間サーバ３０と各ＭＦＰ１０との間でＸＭＰＰセッションによる常時接続状態を維持させておき、必要に応じて中間サーバ３０から各ＭＦＰ１０へデータを送信できるようにしている。このような構成により、サービスサーバ４０が中間サーバ３０に対して所定のＭＦＰ１０宛の情報を送信すると、中間サーバ３０が、常時接続中の宛先ＭＦＰ１０へＸＭＰＰコネクションを介して必要な情報を送信することができる。
【００３８】
つまり、中間サーバ３０を介在させることで、サービスサーバ４０は、特定サービス提供対象のＭＦＰの数にかかわらず、また各ＭＦＰ１０がどのような状態にあるのか（例えば通信可能な状態にあるのかどうか）を気にすることなく、様々な特定サービスを容易に提供することができる。
【００３９】
（２）特定サービス提供システム１の構成
本実施形態の特定サービス提供システム１が備える各装置等の構成や機能について具体的に説明する。
【００４０】
（２−１）ＭＦＰ１０の構成
ＭＦＰ１０は、印刷機能やスキャン機能、コピー機能、ネットワーク接続機能などの複数の機能を有する。ＭＦＰ１０は、図１に示すように、ＣＰＵ１１、ＲＯＭ１２、ＲＡＭ１３、ＮＶＲＡＭ１４、印刷部１５、読取部１６、通信部１７などを備えている。
【００４１】
ＭＦＰ１０において、ＣＰＵ１１は、ＲＯＭ１２やＮＶＲＡＭ１４に記憶されている各種プログラム（後述の各ファームウェアを含む）やデータに従ってＭＦＰ１０内の各部の制御および各種演算を実行する。ＲＡＭ１３は、ＣＰＵ１１から直接アクセスされるメインメモリ等として利用される。印刷部１５は、印刷用紙等の被記録媒体に画像を形成（印刷）する。読取部１６は、イメージセンサを備え、原稿の画像を読み取ってその画像を表す画像データを生成する。
【００４２】
通信部１７は、ＭＦＰ１０と他の機器とを通信可能に接続するためのネットワークインタフェースである。この通信部１７により、ＭＦＰ１０は、ＰＣ１８とのデータ通信やクラウド側とのデータ通信が可能となる。
【００４３】
ＮＶＲＡＭ１４（Non Volatile RAM）は、記憶内容を電気的に書き換え可能な不揮発性メモリである。ＮＶＲＡＭ１４に記憶されている各種プログラム等の中には、ＭＦＰ１０の動作に必要なファームウェアが含まれている。本実施形態のＭＦＰ１０は、三種類のファームウェアを搭載し、これら三種類のファームウェアをもとに動作するよう構成されている。三種類のファームウェアにはそれぞれファーム番号Ｆ１，Ｆ２，Ｆ３が対応づけられている。
【００４４】
ＭＦＰ１０の製品出荷段階では、三種類のファームウェアはいずれも、汎用の組込ファームウェアとなっている。つまり、特定サービスの顧客向けに特化したカスタムファームウェアではなく、一般のユーザが標準的な機能を利用できるようにするための汎用のファームウェアがデフォルトで組み込まれている。
【００４５】
一方、ＭＦＰ１０は、特定サービスにおける管理対象として特定業者に登録されると、当該ＭＦＰ１０固有のデバイスＩＤが付与され、ＮＶＲＡＭ１４に設定（記憶）される。本実施形態の各ＭＦＰ１０は、いずれも特定サービスの管理対象となっているため、それぞれ、固有のデバイスＩＤが設定されている。
【００４６】
ＭＦＰ１０が管理対象として登録されると、ＭＦＰ１０のＮＶＲＡＭ１４には、図２（ａ）に示すようなファーム状態テーブルが生成される。このファーム状態テーブルの生成は、例えばＭＦＰ１０のユーザ自らの入力操作等により実現するようにしてもいいし、特定業者による直接操作又は遠隔操作等により実現するようにしてもよく、種々の方法で実現できる。
【００４７】
ＭＦＰ１０のＮＶＲＡＭ１４に生成されるファーム状態テーブルは、図２（ａ）に示すように、三種類のファームウェアそれぞれについて、カスタムファームウェアに変更されているか否か、カスタムファームウェアに変更されている場合にはそれはどのバージョン（ファームバージョン）であってどのＵＲＬから取得（ダウンロード）したものであるかを示す情報が記憶されたものである。
【００４８】
ファーム状態テーブルは、生成された直後は、通常、三種類のファームウェアはいずれもまだ組込ファームウェアの状態であるため、テーブル中のＵＲＬ及びファームバージョンはいずれも空欄の状態又は未設定を示すデータが書き込まれた状態である。そして、サービスサーバ４０から中間サーバ３０を介してカスタムファームウェアに変更すべき旨の要求（具体的には後述のサーバ側ファーム情報）を受けると、ＭＦＰ１０は、その要求内容に従ってファーム状態テーブルを更新する。具体的には、カスタムファームウェアに変更すべき要求を受けたファーム番号についてそのカスタムファームウェアのファームバージョンとＵＲＬを上書きする。そして、変更要求対象のファームウェアについて、要求内容に基づき、ＵＲＬにアクセスしてカスタムファームウェアを取得（ダウンロード）し、カスタムファームウェアに更新する。
【００４９】
また、サービスサーバ４０からは、中間サーバ３０を介して、カスタムファームウェアを組込ファームウェアに戻すべき旨の要求（後述のサーバ側ファーム情報）も受信されることがある。ＭＦＰ１０は、あるファームウェアについてカスタムファームウェアから組込ファームウェアに戻すべき旨の要求を受けたら、ファーム状態テーブルからその要求されたファームウェアのＵＲＬ及びファームバージョンを消去する。そして、組込ファームウェアに戻すべきファームウェアについて、ＲＯＭ１２に記憶されている組込ファーム情報に基づいて、その組込ファームウェアのＵＲＬにアクセスして組込ファームウェアをダウンロードし、組込ファームウェアに更新する。
【００５０】
ＲＯＭ１２に記憶されている組込ファーム情報は、図２（ｂ）に示すように、各ファームウェア（各ファーム番号）毎にそれぞれその組込ファームウェアの所在を示すＵＲＬが設定されたものである。この組込ファーム情報は、ＭＦＰ１０の製品出荷段階でＲＯＭ１２に記憶されている。
【００５１】
そのため、ＭＦＰ１０は、ファームウェアをカスタムファームウェアから組込ファームウェアに戻す必要がある場合、又は組込ファームウェアを更新させる際には、ＲＯＭ１２に記憶されている組込ファーム情報に基づいて、指定のＵＲＬから最新の組込ファームウェアをダウンロードして更新することができる。
【００５２】
ファーム状態テーブルの内容、即ちファーム番号毎のカスタムファームウェアのＵＲＬ及びファームバージョンは、ＭＦＰ側ファーム情報として、対応するデバイスＩＤのＭＦＰ１０へ送信される。
【００５３】
（２−２）ファームウェア提供サーバ５０の説明
ファームウェア提供サーバ５０には、各ＭＦＰ１０の各ファームウェアが格納される。本実施形態では、ＭＦＰ１０の各ファームウェアについて、組込ファームウェア及びカスタムファームウェアの双方が格納される。そのため、各ＭＦＰ１０は、必要に応じてこのファームウェア提供サーバ５０のＵＲＬにＨＴＴＰにてアクセスすることで、必要なファームウェアをダウンロードすることができる。
【００５４】
なお、各種ファームウェアを全て１つのファームウェア提供サーバ５０に格納することは必須ではない。ＭＦＰ１０からアクセスして所望のファームウェアをダウンロードできる限り、ファームウェアをどこに格納しておくかについては適宜決めることができる。
【００５５】
（２−３）サービスサーバ４０の説明
サービスサーバ４０からは、適宜、管理対象の各ＭＦＰ１０のうちいずれか（一又は複数）を対象としたファームウェアの変更等のコマンドが中間サーバ３０へ送信される。このコマンドには、少なくとも、ファームウェアをカスタムファームウェアに更新（変更）させるためのカスタムファーム指定コマンド、及びファームウェアをカスタムファームウェアから組込ファームウェアに戻させるためのカスタムファーム解除コマンドの２種類がある。
【００５６】
カスタムファーム指定コマンドは、特定業者のオペレータ等によってカスタムファームウェア指定操作がなされた場合に生成されて中間サーバ３０へ送信されるコマンドである。カスタムファームウェア指定操作とは、カスタムファームウェアに更新すべき所望のデバイス（ＭＦＰ１０）のデバイスＩＤ、更新対象のファーム番号とファームバージョン、更新対象のカスタムファームウェアが格納されているファームウェア提供サーバ５０内のＵＲＬを指定する操作である。
【００５７】
サービスサーバ４０は、オペレータ等によってカスタムファームウェア指定操作がなされると、その操作により指定された各種情報に基づき、カスタムファーム指定コマンドを生成する。カスタムファーム指定コマンドには、当該コマンドがファームウェアをカスタムファームウェアに更新するよう要求するコマンドであることを更新対象の各ＭＦＰ１０に認識させるためのセットコマンド、更新対象のＭＦＰ１０（一又は複数）それぞれのデバイスＩＤ、更新対象のファームウェアのファーム番号、更新すべきカスタムファームウェアのバージョンを示すファームバージョン、及び更新対象のファームウェアの所在（本実施形態ではファームウェア提供サーバ５０内）を示すＵＲＬが含まれている。つまり、サービスサーバ４０から送信されるカスタムファーム指定コマンドは、ファームウェアをカスタムファームウェアに更新すべき全てのＭＦＰに対し、更新指示及び更新に必要な情報を一括して指示するためのコマンドである。
【００５８】
カスタムファーム解除コマンドは、特定業者のオペレータ等によってカスタムファームウェア解除操作がなされた場合に生成されて中間サーバ３０へ送信されるコマンドである。カスタムファームウェア解除操作とは、カスタムファームウェアを組込ファームウェアに更新すべき所望のデバイス（ＭＦＰ１０）のデバイスＩＤと更新対象のファーム番号を指定する操作である。
【００５９】
サービスサーバ４０は、オペレータ等によってカスタムファームウェア解除操作がなされると、その操作により指定された各種情報に基づき、カスタムファーム解除コマンドを生成する。カスタムファーム解除コマンドには、当該コマンドがファームウェアをカスタムファームウェアから組込ファームウェアに更新する（戻す）べきコマンドであることを更新対象の各ＭＦＰ１０に認識させるためのセットコマンド、更新対象のＭＦＰ１０（一又は複数）それぞれのデバイスＩＤ、及び更新対象のファームウェアのファーム番号が含まれている。つまり、サービスサーバ４０から送信されるカスタムファーム指定コマンドは、ファームウェアを組込ファームウェアに更新すべき全てのＭＦＰに対し、更新指示及び更新に必要な情報を一括して指示するためのコマンドである。
【００６０】
（２−４）中間サーバの構成
中間サーバ３０は、サービスサーバ４０から特定サービス提供対象の各ＭＦＰ１０への各種コマンドを中継するために設けられており、ＣＰＵ３１、ＲＯＭ３２、ＲＡＭ３３、ＨＤＤ（ハードディスクドライブ）３４、通信部３５などを備えている。
【００６１】
ＣＰＵ３１は、ＲＯＭ３２やＨＤＤ３４に記憶されている各種プログラムを実行することによって、上記のコマンド中継等の機能を実現する。ＲＯＭ３２には、ＣＰＵ３１によって実行される各種プログラムやデータ等が記憶されている。ＲＡＭ３３は、ＣＰＵ３１から直接アクセスされるメインメモリ等として利用される。
【００６２】
通信部３５は、中間サーバ３０と他の機器とを通信可能に接続するためのネットワークインタフェースである。この通信部３５により、中間サーバ３０は、各ＭＦＰ１０やサービスサーバ４０とのデータ通信が可能となる。
【００６３】
ＨＤＤ３４には、ＯＳを含む各種ソフトウェアがインストールされている。また、ＨＤＤ３４には、図３（ａ）に示すファーム設定テーブル及び図３（ｂ）に示すデバイス管理テーブルも記憶される。これら各テーブルは、初期状態では記憶されておらず、ＭＦＰ１０やサービスサーバ４０との通信を行うことにより生成されて記憶される。
【００６４】
図３（ａ）に示すファーム設定テーブルは、特定サービス提供対象の各デバイス（各ＭＦＰ１０）について、デバイス毎（ＭＦＰ毎）に個別に生成されるものである。具体的には、サービスサーバ４０から、あるＭＦＰ１０を対象とするカスタムファーム指定コマンドが初めて送信されてきたときに、そのＭＦＰ１０に対応したファーム設定テーブルが生成される。
【００６５】
ファーム設定テーブルは、図３（ａ）に示すように、三種類のファームウェアそれぞれについて、カスタムファームウェアに変更すべきか否か、カスタムファームウェアに更新すべき場合にはそれはどのバージョン（ファームバージョン）であってどのＵＲＬから取得（ダウンロード）すればよいのかを示す情報が、ＭＦＰ１０のデバイスＩＤと対応付けられたものである。
【００６６】
ファーム設定テーブルの内容は、サービスサーバ４０からそのファーム設定テーブルを対象とした上記何れかのコマンドを受信する度に、そのコマンドの内容にしたがって更新される。例えば、あるデバイスＩＤのＭＦＰ１０を対象として、ファーム番号Ｆ１のファームウェアをカスタムファームウェアに更新すべき旨のカスタムファーム指定コマンドが送信されてきた場合は、対象ＭＦＰ１０のファーム設定テーブルにおいて、ファーム番号Ｆ１に対応したＵＲＬ及びファームバージョンとして、カスタムファーム指定コマンドに含まれているＵＲＬ及びファームバージョンが書き込み（又は上書き）される。また例えば、あるデバイスＩＤのＭＦＰ１０を対象として、ファーム番号Ｆ２，Ｆ３のファームウェアをカスタムファームウェアから組込ファームウェアに戻すべき旨のカスタムファーム解除コマンドが送信されてきた場合は、対象ＭＦＰ１０のファーム設定テーブルにおいて、ファーム番号Ｆ２，Ｆ３に対応したＵＲＬ及びファームバージョンが消去される。
【００６７】
中間サーバ３０は、ファーム設定テーブルの内容、即ちファーム番号毎のカスタムファームウェアのＵＲＬ及びファームバージョンを、サーバ側ファーム情報として、必要に応じてＭＦＰ１０へ送信する。
【００６８】
図３（ｂ）に示すデバイス管理テーブルは、特定サービス提供対象の各デバイス（各ＭＦＰ１０）について、デバイス毎（ＭＦＰ毎）に個別に生成されるものである。具体的には、ＭＦＰ１０から初めてＸＭＰＰ接続されたときに、そのＭＦＰ１０に対応したデバイス管理テーブルが生成される。
【００６９】
デバイス管理テーブルは、図３（ｂ）に示すように、対応するＭＦＰ１０について、周期タイマのタイマ値及びステータスが、当該ＭＦＰ１０のデバイスＩＤと対応付けられたものである。
【００７０】
周期タイマとは、中間サーバ３０のＣＰＵ３１がプログラムに従って計時されるソフトウェアタイマであり、１５０を初期値として、一定周期（本実施形態では１秒毎）で１つずつ減算されていくものである。周期タイマのタイマ値がどのように用いられるかについては後述する。
【００７１】
ステータスとは、対応するＭＦＰ１０と中間サーバ３０とのＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨによるセッション（以下「ＸＭＰＰセッション」ともいう）が維持されているか否かを示す情報であり、後述するように、対応するＭＦＰ１０からのＸＭＰＰ接続や周期タイマのタイマ値などに応じてオンライン（ＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨによるセッション維持）又はオフライン（ＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨによるセッション切断）が設定される。
【００７２】
（３）特定サービス提供システム１の概略動作例
次に、本実施形態の特定サービス提供システム１の動作例について、図４を用いて説明する。なお、図４の動作例は、システム全体の動作を概略的に説明することを目的としてその動作の一部のみを抜粋して示している。
【００７３】
まず、ＭＦＰ１０の起動後にサービスサーバからカスタムファーム指定コマンドが送信されるケースについて、図４（ａ）を用いて説明する。図４（ａ）に示すように、ＭＦＰ１０は、電源投入により起動すると、中間サーバ３０へＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨによるセッション（ＸＭＰＰセッション）を確立し、ＸＭＰＰコネクションを確立させる。なお、ＸＭＰＰセッションは、中間サーバ３０からサーバプッシュを可能とするセッションである。
【００７４】
その後、サービスサーバ４０から中間サーバ３０へＨＴＴＰコネクションにてカスタムファーム指定コマンドが送信されると、中間サーバ３０は、カスタムファーム指定コマンドに基づき、カスタムファームウェアへ更新すべき対象ＭＦＰのファーム設定テーブルの記憶内容（サーバ側ファーム情報）を更新する。
【００７５】
例えば、カスタムファーム指定コマンドとして、あるＭＦＰ１０を対象ＭＦＰとして（デバイスＩＤを指定して）ファーム番号Ｆ２のファームウェアを最新バージョンのカスタムファームウェアに変更すべき旨のコマンドが送信されてきた場合は、その対象ＭＦＰのファーム設定テーブルにおけるファーム番号Ｆ２のファーム情報（ＵＲＬ及びファームバージョン）をそのコマンドに基づいて書き込む上書き（または新規書き込み）する。
【００７６】
中間サーバ３０は、サービスサーバ４０からのカスタムファーム指定コマンドに基づいて対象ＭＦＰのファーム設定テーブルを更新すると、その対象ＭＦＰへ、更新後のサーバ側ファーム情報をＸＭＰＰコネクションを介して送信し、サービスサーバ４０へＨＴＴＰコネクションを介して送信済レスポンスをＨＴＴＰで送信する。
【００７７】
ＭＦＰ１０は、中間サーバ３０からＸＭＰＰでサーバ側ファーム情報を受信すると、自身のファーム状態テーブルのＭＦＰ側ファーム情報を、サーバ側ファーム情報にしたがって更新する。そして、更新対象のファームウェアについて、更新後のＭＦＰ側ファーム情報に基づいて、ファームウェア提供サーバ５０へＨＴＴＰコネクションを介して更新対象の最新バージョンのカスタムファームウェアを要求し、ダウンロードする。ダウンロード後は、更新対象のファームウェアをそのダウンロードしたカスタムファームウェアに更新する。
【００７８】
例えば、中間サーバ３０からのサーバ側ファーム情報においてファーム番号Ｆ２に対するカスタムファームウェアのＵＲＬ及びファーブバージョンが更新されていた場合は、ＭＦＰ１０は、ファーム番号Ｆ２のファームウェアについて、更新後のＵＲＬにアクセスして指定ファームバージョンのカスタムファームウェアをダウンロードし、更新することになる。
【００７９】
次に、ＭＦＰ１０が起動するよりも先にサービスサーバ４０からカスタムファーム指定コマンドが送信され、その送信後にＭＦＰ１０が起動されるケースについて、図４（ｂ）を用いて説明する。図４（ｂ）に示すように、対象ＭＦＰ１０がまだ起動していないときにサービスサーバ４０からカスタムファーム指定コマンドがＨＴＴＰコネクションを介して送信されると、中間サーバ３０は、図４（ａ）のケースと同様に、そのカスタムファーム指定コマンドに基づき、カスタムファームウェアへ更新すべき対象ＭＦＰのファーム設定テーブルの記憶内容（サーバ側ファーム情報）を更新する。
【００８０】
このとき、中間サーバ３０と対象ＭＦＰ１０との間には、まだＸＭＰＰセッションが確立していないため、中間サーバ３０は更新後のサーバ側ファーム情報を対象ＭＦＰ１０へ送信できない。そのため、その場合は、中間サーバ３０は、サービスサーバ４０へＭＦＰオフラインレスポンスをＨＴＴＰコネクションを介して送信する。その後、対象ＭＦＰ１０が起動してＸＭＰＰセッションが確立され、対象ＭＦＰ１０との間でＸＭＰＰコネクションが確立すると、中間サーバ３０は、対象ＭＦＰ１０へ、サーバ側ファーム情報をＸＭＰＰコネクションを介して送信する。中間サーバ３０から対象ＭＦＰ１０へサーバ側ファーム情報が送信された後の対象ＭＦＰ１０の動作は、図４（ａ）と同様である。
【００８１】
（４）サービスサーバ４０によるサービス処理の説明
次に、サービスサーバ４０が実行するサービス処理について図５を用いて説明する。サービスサーバ４０は、図５のサービス処理を開始すると、Ｓ１１０で、何らかのイベントが発生したか否か判断する。イベントが発生した場合は、Ｓ１２０で、そのイベントが、オペレータ等による、デバイス（具体的には特定サービス提供対象のＭＦＰ１０）のカスタムファームウェア指定操作であるか否か判断する。
【００８２】
発生したイベントが、オペレータ等によるカスタムファームウェア指定操作だった場合は、Ｓ１３０で、そのカスタムファームウェア指定操作の内容が反映されたカスタムファーム指定コマンドを、ＨＴＴＰリクエストで中間サーバ３０へ送信する。その送信後、Ｓ１４０で中間サーバ３０からの応答（送信済レスポンス又はＭＦＰオフラインレスポンス）をＨＴＴＰレスポンスで受信すると、Ｓ１１０に戻る。
【００８３】
Ｓ１２０で、発生したイベントがカスタムファームウェア指定操作ではなかった場合は、Ｓ１５０で、発生したイベントが、オペレータ等による、デバイスのカスタムファームウェア解除操作であるか否か判断する。発生したイベントが、オペレータ等によるカスタムファームウェア解除操作だった場合は、Ｓ１６０で、そのカスタムファームウェア解除操作の内容が反映されたカスタムファーム解除コマンドを、ＨＴＴＰリクエストで中間サーバ３０へ送信する。カスタムファーム解除コマンドの送信後、Ｓ１７０で中間サーバ３０からの応答（送信済レスポンス又はＭＦＰオフラインレスポンス）をＨＴＴＰレスポンスで受信すると、Ｓ１１０に戻る。
【００８４】
Ｓ１５０で、発生したイベントがカスタムファームウェア解除操作ではなかった場合は、Ｓ１８０で、その他の処理（発生したイベントに応じた処理）を実行して、Ｓ１１０に戻る。
【００８５】
（５）中間サーバ３０による中間サーバ処理及び周期タイマ処理の説明
次に、中間サーバ３０が実行する中間サーバ処理について図６を用いて説明する。中間サーバ３０のＣＰＵ３１は、電源が投入されて動作を開始すると、ＨＤＤ３４から図６の中間サーバ処理のプログラムを読み出して実行する。
【００８６】
中間サーバ３０のＣＰＵ３１は、図６の中間サーバ処理を開始すると、Ｓ２１０で、周期タイマをスタートさせる。本実施形態の周期タイマはソフトウェアタイマであり、具体的には、図７の周期タイマ処理を開始させる。中間サーバ３０のＣＰＵ３１は、中間サーバ処理のＳ２１０で周期タイマをスタートさせる指示がなされると、ＨＤＤ３４から図７の周期タイマ処理のプログラムを読み出し、一定周期（本実施形態では１秒毎）で繰り返し実行する。この周期タイマ処理は、中間サーバ処理と並行して実行されるものである。
【００８７】
中間サーバ３０のＣＰＵ３１は、図７の周期タイマ処理を開始すると、Ｓ５１０で、生成されている全てのデバイス管理テーブルに対し、周期タイマのタイマ値を１減算する。既述の通り、デバイス管理テーブルにおける周期タイマのタイマ値は初期状態では１５０に設定される。そのため、図７の周期タイマ処理が開始されると、１秒経過ごとに、テーブル中のタイマ値が１５０から１４９，１４８，・・・と、順次減算されていく。
【００８８】
Ｓ５２０では、タイマ値が０になったデバイス管理テーブルについて、ステータスをオフラインとし、該当するＭＦＰとのＸＭＰＰ接続を切断する。具体的には、該当するＭＦＰとのＸＭＰＰセッション維持のために確保しているコネクションリソースを破棄する。つまり、本実施形態では、一定時間（本実施形態では１５０秒）ＭＦＰ１０からＸＭＰＰでのアクセスがなかった場合は、そのＭＦＰ１０についてはオフライン状態になったものと判断するのである。
【００８９】
ただし、後述するように、ＭＦＰ１０からは、定期的に（本実施形態では１２０秒毎に）ＸＭＰＰ生存通知が送信され、中間サーバ３０は、ＭＦＰ１０からＸＭＰＰ生存通知を受信する度に、後述するＳ４１０の処理で、当該ＭＦＰ１０のタイマ値を１５０にセット（初期化）する。そのため、ＭＦＰ１０から定期的にＸＭＰＰ生存通知が受信されている間は、ＸＭＰＰセッションは維持される。また、何らかの要因でタイマ値が０になってオフラインになったとしても、その後ＭＦＰ１０からＸＭＰＰ生存通知を受信した場合は再びオンラインに設定されてかつタイマ値も１５０に初期化される。
【００９０】
図６に戻り、中間サーバ処理の説明を続ける。Ｓ２１０で周期タイマをスタートさせたら、Ｓ２２０で、何らかのイベントが発生したか否か判断する。イベントが発生した場合は、Ｓ２３０で、そのイベントがＭＦＰ１０からのＸＭＰＰ接続（ＸＭＰＰセッション要求）であるか否か判断する。ＭＦＰ１０からのＸＭＰＰ接続である場合は、そのＭＦＰ１０とのＸＭＰＰコネクションを確立させて（コネクションリソースを確保して）、Ｓ２４０に進む。
【００９１】
Ｓ２４０では、ＸＭＰＰ接続された当該ＭＦＰ１０のデバイス管理テーブルがあるか否か、つまりすでにＨＤＤ３４内に生成されているか否か判断する。デバイス管理テーブルがすでにある場合はＳ２６０に進む。まだデバイス管理テーブルが生成されていない場合は、Ｓ２５０で、当該ＭＦＰ１０のデバイス管理テーブルを生成して、Ｓ２６０に進む。
【００９２】
Ｓ２６０では、当該ＭＦＰ１０のデバイス管理テーブルにおけるステータスをオンラインに設定する。Ｓ２７０では、当該ＭＦＰ１０のデバイス管理テーブルにおける周期タイマのタイマ値を１５０にセットする。
【００９３】
Ｓ２８０では、当該ＭＦＰ１０のファーム設定テーブルがあるか否か、つまりすでにＨＤＤ３４内に生成されているか否か判断する。当該ＭＦＰ１０のデバイス管理テーブルがまだ生成されていない場合はＳ２２０に戻る。当該ＭＦＰ１０のデバイス管理テーブルが生成されている場合は、Ｓ２９０で、そのデバイス管理テーブル内のサーバ側ファーム情報をＸＭＰＰで当該ＭＦＰ１０へ送信して、Ｓ２２０に戻る。なお、本明細書において、「ＸＭＰＰで」とは、ＸＭＰＰコネクションを介してという意味であり、「ＨＴＴＰで」とは、ＨＴＴＰコネクションを介してという意味である。
【００９４】
Ｓ２３０で、発生したイベントがＭＦＰ１０からのＸＭＰＰ接続ではないと判断した場合は、Ｓ３００で、発生したイベントがサービスサーバ４０からのＨＴＴＰコネクションを介したＨＴＴＰリクエストであるか否か判断する。発生したイベントがサービスサーバ４０からのＨＴＴＰリクエストである場合は、Ｓ３１０で、そのＨＴＴＰリクエストがカスタムファーム指定コマンド又はカスタムファーム解除コマンドであるか否か判断する。
【００９５】
ＨＴＴＰリクエストがこれら各コマンドの何れでもない場合は、Ｓ３２０で、その他の処理、即ちＨＴＴＰリクエストに応じた処理を実行して、Ｓ２２０に戻る。
ＨＴＴＰリクエストがこれら各コマンドの何れかである場合は、コマンドにより指定された対象ＭＦＰ１０それぞれについて、Ｓ３３０〜Ｓ３９０の一連の処理を実行する。即ち、図６では図示を省略したが、Ｓ３３０〜Ｓ３９０の一連の処理は、サービスサーバ４０からＨＴＴＰで取得したカスタムファーム指定コマンド（又はカスタムファーム解除コマンド）において指定されている一又は複数の対象ＭＦＰ１０それぞれについて個別に実行されるものである。
【００９６】
Ｓ３００では、コマンドで指定されたＭＦＰ１０のうち１つの対象ＭＦＰ１０について、その対象ＭＦＰ１０のファーム設定テーブルがあるか否か判断する。対象ＭＦＰ１０のファーム設定テーブルがある場合は、Ｓ３５０に進む。対象ＭＦＰ１０のファーム設定テーブルがまだない場合は、Ｓ３４０で対象ＭＦＰ１０のファーム設定テーブルを生成して、Ｓ３５０に進む。
【００９７】
Ｓ３５０では、対象ＭＦＰ１０のファーム設定テーブルのサーバ側ファーム情報を、サービスサーバ４０からのコマンドの内容に従って更新する。例えばファーム番号Ｆ１，Ｆ２のカスタムファームウェアのＵＲＬ及びファームバージョンがカスタムファーム指定コマンドにて通知されている場合は、ファーム設定テーブル中の各ファーム番号Ｆ１，Ｆ２のＵＲＬ及びファームバージョンを、その通知された各ＵＲＬ及びファームバージョンに書き換える。また例えば、ファーム番号Ｆ１のカスタムファームウェアを指定したカスタムファーム解除コマンドが通知されている場合は、ファーム設定テーブル中のファーム番号Ｆ１のＵＲＬ及びファームバージョンを消去する。
【００９８】
Ｓ３６０では、対象ＭＦＰ１０がデバイス管理テーブルにおいてオンラインに設定されているか否か判断する。対象ＭＦＰ１０がオフラインに設定されている場合は、Ｓ３９０で、サービスサーバ４０へ、その対象ＭＦＰ１０についてのＭＦＰオフラインレスポンスをＨＴＴＰで返して、Ｓ２２０に戻る。
【００９９】
対象ＭＦＰ１０がオンラインに設定されている場合は、Ｓ３７０で、対象ＭＦＰ１０へ、ファーム設定テーブル内のサーバ側ファーム情報をＸＭＰＰで送信する。そして、Ｓ３８０で、サービスサーバ４０へ、その対象ＭＦＰ１０についての送信済レスポンスをＨＴＴＰで返して、Ｓ２２０に戻る。
【０１００】
Ｓ３００で、発生したイベントがサービスサーバ４０からのＨＴＴＰリクエストではないと判断した場合は、Ｓ４００で、発生したイベントが何れかのＭＦＰ１０からのＸＭＰＰ生存通知の受信であるか否かを判断する。ＸＭＰＰ生存通知は、ＸＭＰＰで定期的に各ＭＦＰ１０から受信されるものである。発生したイベントがＭＦＰ１０からのＸＭＰＰ生存通知ではない場合は、Ｓ３２０で、その他の処理、イベントに応じた処理を実行して、Ｓ２２０に戻る。
【０１０１】
発生したイベントがＭＦＰ１０からのＸＭＰＰ生存通知である場合は、Ｓ４１０で、当該ＭＦＰ１０のデバイス管理テーブルのタイマ値を１５０にセット（つまり初期化）して、Ｓ２２０に戻る。なお、Ｓ４１０では、当該ＭＦＰ１０のデバイス管理テーブルにおいて、ステータスがオフラインになっている場合は、ステータスをオンラインに変更する処理も行う。
【０１０２】
（６）ＭＦＰ１０によるＭＦＰ処理の説明
次に、ＭＦＰ１０が実行するＭＦＰ処理について図８を用いて説明する。ＭＦＰ１０のＣＰＵ１１は、電源が投入されて動作を開始すると、ＲＯＭ１２又はＮＶＲＡＭ１４から図８のＭＦＰ処理のプログラムを読み出して実行する。
【０１０３】
ＭＦＰ１０のＣＰＵ１１は、図８のＭＦＰ処理を開始すると、Ｓ６１０で、中間サーバにＸＭＰＰ接続する。具体的には、ＣＰＵ１１は、中間サーバ３０との間で、常時接続型のプロトコルであるＸＭＰＰ  ｏｖｅｒ  ＢＯＳＨに従ったＸＭＰＰセッションを確立し、これによりＸＭＰＰコネクションを確立させる。
【０１０４】
ＸＭＰＰセッションを確立するための具体的な手順について説明する。ＭＦＰ１０は、当該ＭＦＰ１０の電源がＯＦＦ状態からＯＮ状態に変化する場合に、ＢＯＳＨ（Bidirectional-streams Over Synchronous HTTP の略）の第１の要求信号（即ちＨＴＴＰリクエスト）を中間サーバ３０に送信する。第１の要求信号は、ＸＭＰＰセッションで利用されるべきセッションＩＤの送信を中間サーバ３０に要求するための信号である。
【０１０５】
中間サーバ３０は、ＭＦＰ１０から第１の要求信号を受信した場合、セッションＩＤを生成して、セッションＩＤを含む応答信号（即ちＨＴＴＰレスポンス）をＭＦＰ１０に送信する。
【０１０６】
ＭＦＰ１０は、中間サーバ３０から応答信号を受信する場合に、ＢＯＳＨの第２の要求信号（即ちＨＴＴＰリクエスト）を中間サーバ３０に送信する。第２の要求信号は、応答信号に含まれるセッションＩＤに一致するセッションＩＤを含む。第２の要求信号は、ＸＭＰＰセッションの確立を中間サーバ３０に要求するための信号である。
【０１０７】
中間サーバ３０は、ＭＦＰ１０からセッションＩＤを含む第２の要求信号を受信した場合、ＯＫを示す応答信号（即ちＨＴＴＰレスポンス）をＭＦＰ１０に送信する。これにより、ＭＦＰ１０及び中間サーバ３０は、ＸＭＰＰセッションを確立するための認証信号、応答信号等の様々な信号の通信を実行して、ＸＭＰＰセッションを確立する。
【０１０８】
ＭＦＰ１０は、ＸＭＰＰセッションが確立される場合に、ＢＯＳＨの第３の要求信号（即ちＨＴＴＰリクエスト）を中間サーバ３０に送信する。第３の要求信号は、上記のセッションＩＤを含む。第３の要求信号は、中間サーバ３０からＭＦＰ１０に送信されるべきデータ（例えばセットコマンド）を含む応答信号を送信するための元になる信号である。
【０１０９】
中間サーバ３０は、ＭＦＰ１０から第３の要求信号を受信した際、ＭＦＰ１０に送信されるべきセットコマンドが存在すれば、第３の要求信号に対する応答信号（即ちＨＴＴＰレスポンス）として、当該セットコマンドをＭＦＰ１０に送信する。ただし、中間サーバ３０は、ＭＦＰ１０から第３の要求信号を受信した際に、ＭＦＰ１０に送信されるべきセットコマンドが存在しなければ、サービスサーバ４０からセットコマンドを受信するまで、セットコマンドをＭＦＰ１０に送信しない。ＢＯＳＨの要求信号は、ＢＯＳＨではない通常のＨＴＴＰの要求信号と比べて、長いタイムアウト時間を有する。従って、中間サーバ３０は、第３の要求信号を受信してからセットコマンド（即ち応答信号）を送信するまでの時間が長くても、タイムアウトと判断せずに、セットコマンドを適切に送信することができる。また、ルータ２０も、タイムアウトと判断せずに、インターネット側（即ち中間サーバ３０）からＬＡＮ側（即ちＭＦＰ１０）へのセットコマンドの送信を許容する。
【０１１０】
中間サーバ３０は、ＭＦＰ１０と中間サーバ３０との間にＸＭＰＰセッションが確立されていると判断した場合に、第３の要求信号に対する応答信号として、セットコマンドをＭＦＰ１０に送信する。なお、当該応答信号は、上記のセッションＩＤを含まない。ただし、当該応答信号は、上記のセッションＩＤを含む第３の要求信号（即ちＸＭＰＰセッションを利用して通信される第３の要求信号）に対する応答信号であるので、ＸＭＰＰセッションを利用して通信される信号である、と言える。
【０１１１】
Ｓ６２０では、タイマをスタートさせる。このタイマは、一定時間（本実施形態では１２０秒）経過するごとにタイマ割込を発生させるソフトウェアタイマである。
Ｓ６３０では、何らかのイベントが発生したか否か判断する。イベントが発生した場合は、Ｓ６４０で、そのイベントがタイマ割込であるか否か判断する。イベントがタイマ割込であった場合は、Ｓ６５０で、中間サーバ３０へＸＭＰＰ生存通知をＸＭＰＰで送信して、Ｓ６３０に戻る。イベントがタイマ割込ではなかった場合は、Ｓ６６０に進む。
【０１１２】
Ｓ６６０では、発生したイベントがＰＣ１８からのファーム更新要求であるか否か判断する。ＰＣ１８においては、ユーザ等が任意のタイミングで、何れかのＭＦＰ１０を指定して、そのＭＦＰ１０のファームウェアの何れか又は全てを最新版に更新させるためのファーム更新要求を送信することができる。Ｓ６６０では、そのＰＣ１８からのファーム更新要求があったか否かを判断する。
【０１１３】
Ｓ６６０で、発生したイベントがＰＣ１８からのファーム更新要求であった場合は、Ｓ６７０で、更新の要求対象のファームウェアについて、ＭＦＰ側ファーム情報がファーム状態テーブルに記憶されているか否か判断する。要求対象のファームウェアについてＭＦＰ側ファーム情報が記憶されている場合は、Ｓ６８０で、その記憶されているＭＦＰ側ファーム情報（ＵＲＬ及びファームバージョン）に基づき、要求対象のファームウェアのカスタムファームウェアをＨＴＴＰでファームウェア提供サーバ５０からダウンロードし、そのカスタムファームウェアに更新する。要求対象のファームウェアについてＭＦＰ側ファーム情報が記憶されていない場合は、Ｓ６９０で、ＲＯＭ１２に記憶されている組込ファーム情報（ＵＲＬ）に基づき、要求対象のファームウェアの組込ファームウェアをＨＴＴＰでファームウェア提供サーバ５０からダウンロードし、その組込ファームウェアに更新する。Ｓ６８０又はＳ６９０によるファームウェアの更新後は、Ｓ６３０に戻る。
【０１１４】
Ｓ６６０で、発生したイベントがＰＣ１８からのファーム更新要求ではなかった場合は、Ｓ７００で、発生したイベントが中間サーバ３０からのＸＭＰＰでのサーバ側ファーム情報の受信であるか否かを判断する。発生したイベントが中間サーバ３０からのサーバ側ファーム情報の受信でもない場合は、Ｓ７８０で、その他の処理、即ち発生したイベントに応じた処理を実行して、Ｓ６３０に戻る。
【０１１５】
Ｓ７００で、発生したイベントが中間サーバ３０からのサーバ側ファーム情報の受信であった場合は、Ｓ７１０で、その受信したサーバ側ファーム情報を、該当するＭＦＰ１０のＮＶＲＡＭ１４に記憶されているファーム状態テーブルの内容（ＭＦＰ側ファーム情報）と照合する。
【０１１６】
Ｓ７２０では、Ｓ７１０での照合結果に基づき、ＭＦＰ側ファーム情報中に更新（上書き）すべき項目があるか否か、即ちＭＦＰ側ファーム情報とは異なるＵＲＬ及びファームバージョンを示すサーバ側ファーム情報が受信されたか否かを判断する。異なるＵＲＬ及びファームバージョンに更新（上書き）すべき項目がある場合は、Ｓ７３０で、受信したサーバ側ファーム情報に従ってファーム状態テーブルのＭＦＰ側ファーム情報を更新する。
【０１１７】
そしてＳ７４０で、３つのファームウェアのうちＳ７３０にてＭＦＰ側ファーム情報が更新されたファームウェアについて、その更新後のＭＦＰ側ファーム情報（更新後のＵＲＬ及びファームバージョン）に基づいて、更新対象のファームウェアのカスタムファームウェアをＨＴＴＰでファームウェア提供サーバ５０からダウンロードし、そのカスタムファームウェアに更新する。
【０１１８】
Ｓ７２０で、ＭＦＰ側ファーム情報中に更新（上書き）すべき項目がないと判断した場合は、Ｓ７５０で、Ｓ７１０での照合結果に基づき、ＭＦＰ側ファーム情報中に消去すべき項目があるか否か、即ちＭＦＰ側ファーム情報内ではカスタムファームウェアのＵＲＬ及びファームバージョンが記憶されているものの受信したサーバ側ファーム情報内ではそのＵＲＬ及びファームバージョンが消去されているか否かを判断する。
【０１１９】
ＭＦＰ側ファーム情報中に消去すべき項目がない場合は、ＭＦＰ側ファーム情報の内容が受信したサーバ側ファーム情報と同じということであるため、Ｓ６３０に戻る。ＭＦＰ側ファーム情報中に消去すべき項目がある場合は、Ｓ７６０で、該当する項目（該当するファーム番号のＵＲＬ及びファームバージョン）をＭＦＰ側ファーム情報から消去する。
【０１２０】
そしてＳ７７０で、３つのファームウェアのうちＳ７６０にてＭＦＰ側ファーム情報の項目が消去されたファームウェアについて、ＲＯＭ１２に記憶されている組込ファーム情報に基づいて、組込ファームウェアをＨＴＴＰでファームウェア提供サーバ５０からダウンロードし、その組込ファームウェアに更新する。Ｓ７４０又はＳ７７０によるファームウェアの更新後は、Ｓ６３０に戻る。
【０１２１】
（７）実施形態の効果等
以上説明したように、本実施形態の特定サービス提供システム１では、中間サーバ３０とＭＦＰ１０との間で常時接続型のＸＭＰＰコネクションが確立され、中間サーバ３０とサービスサーバ４０との間でリクエスト−レスポンス型のＨＴＴＰコネクションが確立される。そして、サービスサーバ４０から中間サーバへＨＴＴＰコネクションを介してカスタムファーム指定コマンド又はカスタムファーム解除コマンドが送信されると、中間サーバ３０は、受信したコマンドで指定されているＭＦＰ１０に対し、そのコマンドの内容が反映されたサーバ側ファーム情報をＸＭＰＰコネクションを介して送信する。ＭＦＰ１０は、中間サーバ３０から自身宛にＸＭＰＰで送信されたサーバ側ファーム情報を受信すると、その内容に応じてカスタムファームウェアの更新等を行う。
【０１２２】
具体的には、あるファーム番号のファームウェアをカスタムファームウェアに変更すべき旨のカスタムファーム指定コマンドがサービスサーバ４０から送信されてそのコマンドが反映されたサーバ側ファーム情報が中間サーバ３０から送信された場合は、ＭＦＰ１０は、変更すべきファームウェアについて、中間サーバ３０から受信したサーバ側ファーム情報内のＵＲＬ及びファームバージョンに基づいて、カスタムファームウェアをダウンロードし、更新する。
【０１２３】
そのため、サービスサーバ４０から必要に応じてカスタムファーム指定コマンドを送信することで、特定サービス提供対象の各ＭＦＰ１０のファームウェアを適切且つ効率的にカスタムファームウェアに更新することができる。
【０１２４】
また、あるファーム番号のファームウェアをカスタムファームウェアから組込ファームウェアに戻すべき旨のカスタムファーム解除コマンドがサービスサーバ４０から送信されてそのコマンドが反映されたサーバ側ファーム情報が中間サーバ３０から送信された場合は、ＭＦＰ１０は、組込ファームウェアに戻すべきファームウェアについて、ＲＯＭ１２の組込ファーム情報に基づいて組込ファームウェアをダウンロードし、更新する。
【０１２５】
そのため、サービスサーバ４０から必要に応じてカスタムファーム解除コマンドを送信することで、カスタムファームウェアが不要となったファームウェアについては適切なタイミングで効率的に組込ファームウェアに戻すことができる。
【０１２６】
また、中間サーバ３０は、サービスサーバ４０から上記各コマンドを受信する毎に、各ＭＦＰ１０の各ファーム設定テーブルの内容（サーバ側ファーム情報）をそのコマンドの内容に基づいて書き換える。そのため、中間サーバ３０にＭＦＰ１０がＸＭＰＰ接続したとき、その時点での最新のサーバ側ファーム情報をそのＭＦＰ１０に送信して、そのＭＦＰ１０のファームウェアを最新の状態にさせることができる。
【０１２７】
また、ＭＦＰ１０においても、中間サーバ３０からサーバ側ファーム情報を受信する度に、自身のファーム状態テーブル中のＭＦＰ側ファーム情報に、その受信したサーバ側ファーム情報の内容を反映させる。これにより、ＰＣ１８からファーム更新要求があった場合に、カスタムファームウェアについてはファーム状態テーブルの内容をもとに最新バージョンのカスタムファームウェアを取得することができる。
【０１２８】
組込ファームウェアについても、ＲＯＭ１２に予め組込ファーム情報が記憶されているため、ＰＣ１８からファーム更新要求があった場合は、ＲＯＭ１２の組込ファーム情報をもとに最新バージョンの組込ファームウェアを取得することができる。
【０１２９】
つまり、ＭＦＰ１０においては、ＮＶＲＡＭ１４にカスタムファームウェアに関するファーム状態テーブルが記憶されてかつ中間サーバ３０からのサーバ側ファーム情報によって適宜更新され、ＲＯＭ１２には組込ファーム情報が予め記憶されている。そのため、ファーム状態テーブル及び組込ファーム情報に基づいて、ＭＦＰ１０のファームウェアを、特定サービス向けの内容に維持させることができ、特定サービスを適切に享受することができる。
【０１３０】
また、各ＭＦＰ１０と中間サーバ３０との間では、ＸＭＰＰセッションが維持される。そのため、各ＭＦＰ１０は、中間サーバ３０からのサーバ側ファーム情報に対してリアルタイムに対応することができ、ファームウェアを最新の所望の状態に維持させることが可能となる。
【０１３１】
なお、本実施形態において、ＭＦＰ１０は本発明の情報処理装置の一例に相当し、中間サーバ３０は本発明の中継サーバの一例に相当し、サービスサーバ４０は本発明の特定サーバの一例に相当し、中間サーバ３０のＨＤＤ３４は本発明の記憶部の一例に相当し、ＭＦＰ１０のＮＶＲＡＭ１４は本発明の第１の記憶部の一例に相当し、ＭＦＰ１０のＲＯＭ１２は本発明の第２の記憶部の一例に相当する。また、カスタムファームウェアは本発明の特定ファームウェアの一例に相当し、カスタムファームウェアのＵＲＬは本発明の特定ファーム所在情報の一例に相当し、組込ファームウェアのＵＲＬは本発明の組込ファーム所在情報の一例に相当し、デバイスＩＤは本発明の装置情報の一例に相当し、サーバ側ファーム情報は本発明の特定ファーム情報の一例に相当し、ＭＦＰ１０によるＸＭＰＰ生存通知の送信は本発明の通信維持処理の一例に相当し、カスタムファーム指定コマンドは本発明の特定ファーム更新指令の一例に相当し、カスタムファーム解除コマンドは本発明の特定ファーム解除指令の一例に相当する。また、ファームウェアを組込ファームウェアに戻すために中間サーバ３０からＭＦＰ１０へ送信されるサーバ側ファーム情報であって、そのファームウェアに対応したＵＲＬ及びファームバージョンが消去された状態のサーバ側ファーム情報は、本発明の解除情報の一例に相当する。
【０１３２】
［他の実施形態］
（１）中間サーバ３０は、サービスサーバ４０から各コマンドを受信した場合、そのコマンドを反映させたサーバ側ファーム情報（三種類のファームウェアの情報を全て含む情報）を送信するものとしたが、必ずしも、三種類全てのファームウェアの情報を送信しなくてもよい。
【０１３３】
例えば、サービスサーバ４０から、ファーム番号Ｆ１のファームウェア１つについて、カスタムファームウェアを更新すべき旨のカスタムファーム指定コマンドが送信されてきた場合は、中間サーバ３０は、その更新対象のファーム番号Ｆ１のカスタムファームウェアについてのみ、そのＵＲＬ及びファームバージョンをＭＦＰ１０へ送信するようにしてもよい。
【０１３４】
また例えば、サービスサーバ４０から、ファーム番号Ｆ１のファームウェア１つについて、カスタムファームウェアから組込ファームウェアへ戻すべき旨のカスタムファーム解除コマンドが送信されてきた場合は、中間サーバ３０は、その組込ファームウェアへ戻すべきファーム番号Ｆ１のファームウェアについてのみ、そのファーム番号Ｆ１のファームウェアを組込ファームウェアへ戻すべき旨の情報をＭＰ１０へ送信するようにしてもよい。
【０１３５】
結果として、中間サーバ３０はカスタムファームウェアに関する最新のサービスサーバ４０の情報（つまりどのＭＦＰ１０のどのファームウェアをどのバージョンのカスタムファームにすべきなのか、逆に言えばどのＭＦＰ１０のどのファームは組込ファームウェアのままでよいのか、などの情報）を認識できて、必要に応じて各ＭＦＰ１０へその最新情報を伝えることができる限り、中間サーバ３０において具体的にどのような方法で各種情報を保持・記憶しておいてどのタイミングでＭＦＰ１０へ送信するかについては適宜決めることができる。
【０１３６】
ＭＦＰ１０側の観点でいえば、自身が有する各ファームウェアはそれぞれどれにすべきなのか（カスタムファームウェアにすべきなのか組込ファームウェアにすべきなのか、カスタムファームウェアにすべきならどこに取得しにいけばいいのか、など）を適切に知ることができる限り、当該ＭＦＰ１０及び中間サーバ３０の具体的構成は適宜決めることができる。
【０１３７】
（２）上記実施形態では、ＭＦＰ１０のファームウェアが三種類あるものとして説明したが、ファームウェアの種類はこれに限るものではない。一種類であっても良いし、二種類又は四種類以上であってもよい。
【０１３８】
（３）サービスサーバ４０と各ＭＦＰ１０との間に中間サーバ３０を介在させることは必須ではない。サービスサーバ４０から各ＭＦＰ１０へ直接コマンドを送って、ファームウェアを更新させるようにしてもよい。ただしその場合、例えば各ＭＦＰ１０からサービスサーバ４０へ定期的にアクセスしてコマンドを取得したり、各ＭＦＰ１０とサービスサーバ４０との間でＸＭＰＰセッションを確立するなどして、サービスサーバ４０から各ＭＦＰ１０へ直接コマンドを送信できる状況を適宜発生させるようにする必要がある。
【符号の説明】
【０１３９】
１…特定サービス提供システム、５…インターネット、１０…ＭＦＰ、１１，３１…ＣＰＵ、１２，３２…ＲＯＭ、１３，３３…ＲＡＭ、１４…ＮＶＲＡＭ、１５…印刷部、１６…読取部、１７，３５…通信部、１８…ＰＣ、２０…ルータ、３０…中間サーバ、３４…ＨＤＤ、４０…サービスサーバ、５０…ファームウェア提供サーバ
【図１】
2014179021.tif 000003
【図２】
2014179021.tif 000004
【図３】
2014179021.tif 000005
【図４】
2014179021.tif 000006
【図５】
2014179021.tif 000007
【図６】
2014179021.tif 000008
【図７】
2014179021.tif 000009
【図８】
2014179021.tif 000010