(57)【要約】【課題】画像処理装置におけるファームウェアの更新による、当該画像処理装置の既存の通信相手との通信の不具合が生じることを回避すること。【解決手段】ＭＦＰ１００は、ホスト３００−１〜Ｎと通信するように構成されている。ＭＦＰ１００のＣＰＵは、当該ＭＦＰ１００のファームウェアが更新された場合に、更新前のファームウェアの通信履歴に従って、更新後のファームウェアを利用して、端末とテスト通信を実行する。ＣＰＵは、テスト通信の結果に基づいて、ファームウェアの更新を維持するか否かを決定するように構成されている。【選択図】図１
2019133313.tif 000002
【特許請求の範囲】
【請求項１】
端末と通信するように構成された画像処理装置であって、
前記画像処理装置を制御するためのファームウェアを記憶するように構成されたメモリーと、
前記ファームウェアに基づいて前記画像処理装置を制御するための処理を実行するように構成されたプロセッサーと、
前記端末と通信するための通信インターフェースとを備え、
前記メモリーは、前記端末と前記画像処理装置との通信履歴を記憶し、
前記プロセッサーは、
前記ファームウェアが更新された場合に、更新前のファームウェアの前記通信履歴に従って、更新後のファームウェアを利用して、前記端末とテスト通信を実行し、
前記テスト通信の結果に基づいて、前記ファームウェアの更新を維持するか否かを決定する、ように構成されている、画像処理装置。
【請求項２】
前記プロセッサーは、
前記テスト通信の結果が通信の失敗を示すものである場合に、更新前のファームウェアで、前記通信履歴に従った通信を再度実行し、
前記再度の通信の結果が通信の失敗を示すものである場合には、前記ファームウェアの更新を維持するように構成されている、請求項１に記載の画像処理装置。
【請求項３】
前記プロセッサーは、前記通信履歴の中の一部の通信内容であって、所与の条件を満たす通信内容について、前記テスト通信を実行するように構成されている、請求項１または２に記載の画像処理装置。
【請求項４】
前記所与の条件は、通信の結果が通信の成功を示すものであることを含む、請求項３に記載の画像処理装置。
【請求項５】
前記通信履歴は、２以上の通信先のそれぞれとの通信の内容を含み、
前記所与の条件は、前記画像処理装置との通信の頻度が所与の基準より高い通信先との通信内容であることを含む、請求項３または４に記載の画像処理装置。
【請求項６】
前記所与の条件は、共通する条件を有する２以上の通信内容の中の１つの通信内容であることを含む、請求項３〜５のいずれか１項に記載の画像処理装置。
【請求項７】
前記プロセッサーは、
前記ファームウェアが更新されてから第１の期間以内に、前記通信履歴に含まれる通信内容のうち第１の条件を満たす通信内容について前記テスト通信を実行し、
前記ファームウェアが更新されてから前記第１の期間経過後に、前記通信履歴に含まれる通信内容のうち前記第１の条件を満たす通信内容以外の通信内容についての前記テスト通信を実行する、ように構成されている請求項１〜６のいずれか１項に記載の画像処理装置。
【請求項８】
更新された前記ファームウェアは、所与の機能に関連付けられており、
前記プロセッサーは、前記通信履歴に含まれる通信内容のうち、前記所与の機能に関連する通信内容を含む一部の通信内容について、前記テスト通信を実行するように構成されている、請求項１〜７のいずれか１項に記載の画像処理装置。
【請求項９】
前記ファームウェアは、前記更新によって一部の機能の設定値を変更され、
前記プロセッサーは、前記通信履歴についての前記テスト通信では、前記一部の機能について更新前の設定値を利用する、請求項１〜８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記プロセッサーは、前記テスト通信の結果が通信の失敗を示すものである場合に、当該テスト通信のパケットを用いた検証のための処理を実行するように構成されている、請求項１〜９のいずれか１項に記載の画像処理装置。
【請求項１１】
コンピューターに、請求項１〜１０のいずれか１項に記載の画像処理装置の前記プロセッサーによって実行される処理を実行させる、画像処理装置の制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、画像処理装置のファームウェアのバージョンの変更に関する。
【背景技術】
【０００２】
従来、端末におけるプリンタードライバーのインストールに際して、プリンター（画像処理装置）側のファームウェアと当該ドライバーとの整合を確認する技術が提案されている。たとえば、特開２００７−２９３５１４号公報（特許文献１）は、プリンタードライバーのインストーラーを開示している。当該インストーラーは、プリンターのファームウェアのバージョンを取得し、データベースからプリンターのファームウェアのバージョンの整合性に関する情報を読み出し、ドライバーのバージョンとファームウェアのバージョンとの整合性を維持する機能を有する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２９３５１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一方、プリンター側でファームウェアが更新される場合がある。更新後のファームウェアと端末のプリンタードライバーとの組合せによっては、ファームウェアの更新によって端末とプリンターとの通信に不具合が生じる場合があり得る。
【０００５】
本開示は、係る実情に鑑み考え出されたものであり、その目的は、画像処理装置におけるファームウェアの更新による、当該画像処理装置の既存の通信相手との通信の不具合が生じることを回避することである。
【課題を解決するための手段】
【０００６】
本開示のある局面に従うと、端末と通信するように構成された画像処理装置であって、画像処理装置を制御するためのファームウェアを記憶するように構成されたメモリーと、ファームウェアに基づいて画像処理装置を制御するための処理を実行するように構成されたプロセッサーと、端末と通信するための通信インターフェースとを備え、メモリーは、端末と画像処理装置との通信履歴を記憶し、プロセッサーは、ファームウェアが更新された場合に、更新前のファームウェアの通信履歴に従って、更新後のファームウェアを利用して、端末とテスト通信を実行し、テスト通信の結果に基づいて、ファームウェアの更新を維持するか否かを決定する、ように構成されている、画像処理装置が提供される。
【０００７】
プロセッサーは、テスト通信の結果が通信の失敗を示すものである場合に、更新前のファームウェアで、通信履歴に従った通信を再度実行し、再度の通信の結果が通信の失敗を示すものである場合には、ファームウェアの更新を維持するように構成されていてもよい。
【０００８】
プロセッサーは、通信履歴の中の一部の通信内容であって、所与の条件を満たす通信内容について、テスト通信を実行するように構成されていてもよい。
【０００９】
所与の条件は、通信の結果が通信の成功を示すものであることを含んでいてもよい。
通信履歴は、２以上の通信先のそれぞれとの通信の内容を含んでいてもよい。所与の条件は、画像処理装置との通信の頻度が所与の基準より高い通信先との通信内容であることを含んでいてもよい。
【００１０】
所与の条件は、共通する条件を有する２以上の通信内容の中の１つの通信内容であることを含んでいてもよい。
【００１１】
プロセッサーは、ファームウェアが更新されてから第１の期間以内に、通信履歴に含まれる通信内容のうち第１の条件を満たす通信内容についてテスト通信を実行し、ファームウェアが更新されてから第１の期間経過後に、通信履歴に含まれる通信内容のうち第１の条件を満たす通信内容以外の通信内容についてのテスト通信を実行する、ように構成されていてもよい。
【００１２】
更新されたファームウェアは、所与の機能に関連付けられていてもよい。プロセッサーは、通信履歴に含まれる通信内容のうち、所与の機能に関連する通信内容を含む一部の通信内容について、テスト通信を実行するように構成されていてもよい。
【００１３】
ファームウェアは、更新によって一部の機能の設定値を変更されていてもよい。プロセッサーは、通信履歴についてのテスト通信では、一部の機能について更新前の設定値を利用してもよい。
【００１４】
プロセッサーは、テスト通信の結果が通信の失敗を示すものである場合に、当該テスト通信のパケットを用いた検証のための処理を実行するように構成されていてもよい。
【００１５】
本開示の他の局面に従うと、コンピューターに、上記の画像処理装置のプロセッサーによって実行される処理を実行させる、画像処理装置の制御プログラムが提供される。
【発明の効果】
【００１６】
本開示によれば、画像処理装置のプロセッサーは、ファームウェアが更新された場合に、テスト通信の結果に基づいて、当該ファームウェアの更新を維持するか否かを決定する。これにより、画像処理装置は、ファームウェアの更新によって既存の通信相手との通信に不具合が生じる場合に、ファームウェアの更新を回避することができる。
【図面の簡単な説明】
【００１７】
【図１】情報処理システムの構成の一例を示す図である。
【図２】ＭＦＰ１００のハードウェア構成を概略的に示す図である。
【図３】ジョブ履歴の一例を模式的に示す図である。
【図４】ＭＦＰ１００のファームウェアの更新について、ＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートの一例を示す図である。
【図５】ある実施の形態における、テスト通信の履歴の一例を示す図である。
【図６】第２の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【図７】ステップＳ１８２における、更新前のファームウェアを用いた、再度ジョブＡの通信が実行されたときのジョブ履歴の一例を表わす。
【図８】第３の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【図９】ジョブ履歴の内容の一例を模式的に示す図である。
【図１０】第４の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【図１１】第５の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【図１２】ジョブ履歴の内容の一例を模式的に示す図である。
【図１３】図１２のジョブ履歴から作成された「送信頻度順ジョブ履歴」の一例を示す図である。
【図１４】第６の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【図１５】ジョブ履歴の内容の一例を模式的に示す図である。
【図１６】図１５のジョブ履歴から抽出されたジョブを示す図である。
【図１７】第７の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理の一部分のフローチャートである。
【図１８】第７の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理の他の部分のフローチャートである。
【図１９】ジョブ履歴の内容の一例を模式的に示す図である。
【図２０】図１９のジョブ履歴から抽出されたジョブを示す図である。
【図２１】図１９のジョブ履歴に含まれるジョブのうち、抽出されたジョブ以外のジョブを示す図である。
【図２２】第８の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【図２３】ファームウェアの更新情報の一例を模式的に示す図である。
【図２４】第９の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【図２５】格納される設定情報の一例を示す図である。
【図２６】ファームウェア更新後の設定情報の一例を示す図である。
【図２７】第１０の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。
【発明を実施するための形態】
【００１８】
以下に、図面を参照しつつ、画像処理装置の実施の形態を含む情報処理システムについて説明する。以下の説明では、同一の部品および構成要素には同一の符号を付してある。それらの名称および機能も同じである。したがって、これらの説明は繰り返さない。
【００１９】
＜第１の実施の形態＞
［１．情報処理システムの構成］
図１は、情報処理システムの構成の一例を示す図である。情報処理システムは、ＭＦＰ（Multi-Functional  Peripheral）１００を含む。情報処理システムにおいて、ＭＦＰ１００は、ネットワークＮを介して、管理サーバー２００およびＸ台のホスト３００−１〜Ｘと通信する。Ｘは１以上の整数である。Ｘ台のホスト３００−１〜Ｘは、これらの間で共通した性質について言及されるときには、「ホスト３００」と称される。ホスト３００の一例は、プリンターサーバー等の情報処理装置である。他の例は、ユーザーによって操作されるパーソナルコンピューター等の端末である。
【００２０】
本実施の形態において、ＭＦＰ１００は、ホスト３００との間で、ジョブとして文書を送受信する。一例において、ＭＦＰ１００は、スキャンジョブとして、当該ＭＦＰ１００において生成されたファイルをホスト３００へ送信する。他の例において、ＭＦＰ１００は、プルプリントジョブとして、ホスト３００からファイルを受信し、当該ファイルの画像を出力する。
【００２１】
管理サーバー２００は、たとえばＭＦＰ１００の製造元によって管理されるサーバーであり、ＭＦＰ１００のファームウェアを管理する。ＭＦＰ１００のファームウェアの更新版がリリースされると、管理サーバー２００はＭＦＰ１００に当該リリースを通知する。ＭＦＰ１００は、管理サーバー２００に対して、更新後のファームウェアのプログラムを要求する。管理サーバー２００は、ＭＦＰ１００に対して更新後のファームウェアを送信する。ＭＦＰ１００は、更新後のファームウェアを受信し、当該更新後のファームウェアを当該ＭＦＰ１００にインストールする。
【００２２】
［２．ハードウェア構成］
図２は、ＭＦＰ１００のハードウェア構成を概略的に示す図である。図２を参照して、ＭＦＰ１００は、全体を制御するためのＣＰＵ（Central  Processing  Unit）１５０と、プログラムおよびデータを格納するための記憶装置１６０と、操作パネル１７０とを含む。
【００２３】
記憶装置１６０は、ＣＰＵ１５０により実行されるプログラムおよび各種データを記憶する。操作パネル１７０は、ディスプレイ１７１と、操作部１７２とを含む。ディスプレイ１７１の一例は、液晶表示装置である。ディスプレイ１７１の他の例は、プラズマディスプレイである。操作部１７２は、ＭＦＰ１００に対する操作の入力を受け付ける。
【００２４】
ＭＦＰ１００は、さらに、画像処理部１５１と、画像形成部１５２と、画像読取部１５３と、ファクシミリ通信部１５４と、ＮＩＣ（Network  Interface  Controller）１５５とを含む。画像処理部１５１は、入力された画像に対して拡大・縮小を含む各種の処理を施す。画像形成部１５２は、感光体等の、記録用紙に画像を形成するための要素を含む。画像読取部１５３は、スキャナー等の原稿の画像データを生成するための要素を含み、原稿のスキャンによりスキャンデータを生成する。ファクシミリ通信部１５４は、モデム等のファクシミリ通信により画像データの送受信するための要素を含む。ＮＩＣ１５５は、ネットワークを介してデータ通信をするための要素を含む。画像処理部１５１、画像形成部１５２、画像読取部１５３、ファクシミリ通信部１５４、および、ＮＩＣ１５５のそれぞれの機能は、画像形成装置においてよく知られたものであるから、ここでは詳細な説明は繰返さない。
【００２５】
［３．ジョブ履歴］
ＭＦＰ１００の記憶装置１６０は、ＭＦＰ１００のジョブ履歴（通信履歴）を格納する。図３は、ジョブ履歴の一例を模式的に示す図である。
【００２６】
図３を参照して、ジョブ履歴は、「ジョブＩＤ」「種類」「機能」「通信相手のアドレス」「ユーザーＩＤ」「パスワード」「時刻」「ジョブ結果」および「ＭＦＰファームＶｅｒ」を含む。「ジョブＩＤ」は、各ジョブを識別する。
【００２７】
「種類」は、ジョブの種類を表わす。「受信」は、ＭＦＰ１００が文書を受信したジョブを表わす。「送信」は、ＭＦＰ１００が文書を送信したジョブを表わす。
【００２８】
「機能」は、ジョブの送信に利用されたプロトコルを表わす。「通信相手のアドレス」は、ジョブの送受信における通信相手（端末（ホスト３００）等）のアドレスを表わす。「ユーザーＩＤ」は、ジョブの実行を指示したユーザーを識別する。「パスワード」は、ユーザーＩＤに関連付けられているパスワードを表わす。ユーザーは、ネットワークシステムにログインするために、ユーザーＩＤとパスワードとの組合せを利用する。
【００２９】
「時刻」は、ジョブが実行された時刻を表わす。「ジョブ結果」は、ＭＦＰ１００と端末（ホスト３００）との間のジョブのデータ送信の結果を表わす。ＯＫは、データ送信が正常に終了したことを表わす。ＮＧは、データ送信が正常に終了しなかったことを表わす。
【００３０】
「ＭＦＰファームＶｅｒ」は、ジョブが送受信された際のＭＦＰ１００のファームウェアのバージョンを表わす。
【００３１】
［４．処理の流れ］
図４は、ＭＦＰ１００のファームウェアの更新について、ＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートの一例を示す図である。図４の処理は、たとえば、ＣＰＵ１５０が所与のプログラムを実行することによって実現される。
【００３２】
図４を参照して、ステップＳ１００にて、ＣＰＵ１５０は、管理サーバー２００からファームウェアの更新の通知を受信したか否かを判断する。ＣＰＵ１５０は、当該通知を受信したと判断するまでステップＳ１００に制御をとどめ（ステップＳ１００にてＮＯ）、当該通知を受信したと判断すると（ステップＳ１００にてＹＥＳ）、ステップＳ１１０へ制御を進める。
【００３３】
ステップＳ１１０にて、ＣＰＵ１５０は、管理サーバー２００から更新後のファームウェアのプログラムを受信し、当該更新後のファームウェアをＭＦＰ１００にインストールする。これにより、ＭＦＰ１００において、ファームウェアが更新される。
【００３４】
ステップＳ１２０にて、ＣＰＵ１５０は、ジョブ履歴に含まれる通信相手に接続する。一例では、ステップＳ１２０において、ＣＰＵ１５０は、ジョブ履歴における最もジョブＩＤの値が大きいジョブであって、ステップＳ１２０の処理対象になっていないジョブの通信相手に接続する。
【００３５】
ステップＳ１３０にて、ＣＰＵ１５０は、通信相手に対して、ジョブ履歴の内容に従って通信し、当該通信の結果を記憶装置１６０に保存する。
【００３６】
たとえば、ＣＰＵ１５０は、ステップＳ１２０にて、図３のジョブＩＤ「３」の通信相手のアドレス（１７２．１６．０．３０）に接続する。ジョブＩＤ「３」において、種類は「送信」であり、機能は「ＷｅｂＤＡＶ（Web-based  Distributed  Authoring  and  Versioning）」である。ＣＰＵ１５０は、ステップＳ１３０にて、ジョブＩＤ「３」において送信されたファイルを、アドレス「１７２．１６．０．３０」の端末へ、プロトコル「ＷｅｂＤＡＶ」に従って送信する。
【００３７】
なお、ステップＳ１１０において、ファームウェアが更新されている。したがって、ＣＰＵ１５０は、ジョブＩＤ「３」の内容に従った通信を、更新後のファームウェアを利用して実行する。このような、更新後のファームウェアを用いて、更新前のジョブ履歴（プロトコル等）の内容を利用した通信を行うことを、「テスト通信」という。図３のジョブ履歴では、ファームウェアのバージョンは「４．２２」である。テスト通信では、ＣＰＵ１５０は、バージョン「４．２２」に対する更新後のバージョンのファームウェアを利用する。ＣＰＵ１５０は、テスト通信の結果（たとえば、ＯＫまたはＮＧ）を保存する。
【００３８】
ステップＳ１４０にて、ＣＰＵ１５０は、ジョブ履歴内の通信の結果（項目「ジョブ結果」）と、ステップＳ１３０で保存したテスト通信の結果（ファームウェア更新後の通信の結果）とを比較する。たとえば、ＣＰＵ１５０は、ステップＳ１３０においてジョブＩＤ「３」のテスト通信を実施した場合、ステップＳ１４０において、ジョブ履歴内のジョブＩＤ「３」の通信の結果と、ステップＳ１３０において得られた通信の結果とを比較する。
【００３９】
ステップＳ１５０にて、ＣＰＵ１５０は、ステップＳ１４０における比較において、２つの結果が同じであるか否かを判断する。ＣＰＵ１５０は、２つの結果が同じであると判断すると（ステップＳ１５０にてＹＥＳ）、ステップＳ１７０へ制御を進める。ＣＰＵ１５０は、２つの結果が異なると判断すると（ステップＳ１５０にてＮＯ）、ステップＳ１６０へ制御を進める。
【００４０】
ステップＳ１６０にて、ＣＰＵ１５０は、ファームウェア更新後の通信の結果（ステップＳ１３０にて取得された結果）が「ＮＧ」であるか否かを判断する。ＣＰＵ１５０は、ファームウェア更新後の通信の結果が「ＮＧ」であると判断すると（ステップＳ１６０にてＹＥＳ）、ステップＳ１８０へ制御を進める。ファームウェア更新後の通信の結果が「ＯＫ」であると判断すると（ステップＳ１６０にてＮＯ）、ステップＳ１７０へ制御を進める。
【００４１】
たとえば、ステップＳ１３０にてジョブＩＤ「３」についてのテスト通信が実施された場合、ジョブ履歴においてジョブＩＤ「３」の項目「ジョブ結果」の値が「ＯＫ」であって、テスト通信の通信の結果が「ＮＧ」であれば、制御はステップＳ１６０からステップＳ１８０へ進められる。ジョブ履歴においてジョブＩＤ「３」の項目「ジョブ結果」の値が「ＮＧ」であって、テスト通信の通信の結果が「ＯＫ」であれば、制御はステップＳ１６０からステップＳ１７０へ進められる。
【００４２】
ステップＳ１８０にて、ＣＰＵ１５０は、ステップＳ１１０において更新したファームウェアのバージョンを元に戻す。すなわち、更新後のファームウェアをアンインストールすること等により、ファームウェアのバージョンを更新前のものに戻す。その後、ＣＰＵ１５０は、図４の処理を終了させる。
【００４３】
ステップＳ１７０にて、ＣＰＵ１５０は、ジョブ履歴において未だテスト通信の対象となっていない（接続未確認の）ジョブがあるか否かを判断する。ＣＰＵ１５０は、そのようなジョブがあると判断すると（ステップＳ１７０にてＹＥＳ）、ステップＳ１２０へ制御を戻す。ＣＰＵ１５０は、そのようなジョブが無いと判断すると（ステップＳ１７０にてＮＯ）、図４の処理を終了させる。
【００４４】
以上説明された図４の処理によれば、ＭＦＰ１００においてファームウェアが更新されると、ジョブ履歴内の各ジョブについてテスト通信が実行される。ジョブ履歴の中の少なくとも１つのジョブについて、ジョブ履歴中の通信の結果が「ＯＫ」であって、テスト通信の結果が「ＮＧ」である場合、ファームウェアの更新が解消される。すなわち、ファームウェアのバージョンが更新前のものへ戻される。
【００４５】
なお、ＣＰＵ１５０は、ジョブ履歴内の全てのジョブについてテスト通信を実行しなくてもよい。一例では、ＣＰＵ１５０は、ジョブ履歴において、ジョブ結果の値が「ＯＫ」のジョブについてのみ、テスト通信を実行する。
【００４６】
図５は、ある実施の形態における、テスト通信の履歴の一例を示す図である。図５の履歴は、図３の履歴のうち、ジョブ履歴においてジョブ結果の値が「ＯＫ」のジョブ（ジョブＩＤ「１」および「２」）についてのテスト通信の結果を含む。図３の「ＭＦＰファームウェアＶｅｒ」の値が4.22であるのに対し、図５の「ＭＦＰファームウェアＶｅｒ」の値が5.00である。これは、ファームウェアのバージョンが更新されたことを表わす。
【００４７】
図５に示されるように、ＣＰＵ１５０は、ジョブ履歴において、ジョブ結果の値が「ＯＫ」のジョブについてのみ、テスト通信を実行してもよい。
【００４８】
＜第２の実施の形態＞
図６は、第２の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図６の処理は、図４の処理に対して、ステップＳ１８２，Ｓ１８３，Ｓ１８４をさらに含む。
【００４９】
第２の実施の形態において、ＣＰＵ１５０は、ステップＳ１８０にてファームウェアのバージョンを更新前のものに戻した後、ステップＳ１８２にて、更新前のファームウェアで、再度、処理対象のジョブについての通信を行う。すなわち、ＣＰＵ１５０は、更新前のファームウェアを用いて、ジョブ履歴の内容に従ってファイルの送信等を実行する。その後、ＣＰＵ１５０は、ステップＳ１８３へ制御を進める。
【００５０】
ステップＳ１８３にて、ＣＰＵ１５０は、ステップＳ１８２における元のファームウェアを用いた通信の結果がＮＧであるか否かを判断する。ＣＰＵ１５０は、ステップＳ１８２における通信の結果がＮＧであれば（ステップＳ１８３にてＹＥＳ）、ステップＳ１８４へ制御を進める。ＣＰＵ１５０は、ステップＳ１８２における通信の結果がＯＫであれば（ステップＳ１８３にてＮＯ）、図６の処理を終了させる。
【００５１】
ステップＳ１８４にて、ＣＰＵ１５０は、再度、ファームウェアを更新する。これにより、ＭＦＰ１００では、ファームウェアのバージョンは、ステップＳ１１０で更新され、ステップＳ１３０で更新前のものに戻された後、再度、ステップＳ１８４で更新される。その後、ＣＰＵ１５０は図６の処理を終了させる。
【００５２】
以上説明された第２の実施の形態では、ＣＰＵ１５０は、ジョブ履歴においてジョブＡのジョブ結果の値が「ＯＫ」であるが、更新後のファームウェアを用いた当該ジョブＡのテスト通信の結果が「ＮＧ」である場合、一旦、ステップＳ１８０にて、ファームウェアのバージョンを更新前のものに戻す。その後、更新前のバージョンのファームウェアを用いて、再度ジョブＡの通信を実行し、当該通信の結果が「ＮＧ」であれば、ＣＰＵ１５０は、ステップＳ１８４にて、ファームウェアのバージョンを再度更新する。すなわち、結果として、ファームウェアのバージョンの更新が維持される。
【００５３】
図７は、ステップＳ１８２における、更新前のファームウェアを用いた、再度ジョブＡの通信が実行されたときのジョブ履歴の一例を表わす。図７の例では、ジョブＡとして、ジョブＩＤ「２」のジョブが採用されている。
【００５４】
図３、図５、および図７を参照する。ジョブＩＤ「２」について、ジョブ履歴（図３）、更新後のファームウェアのテスト通信（図５）、更新前のファームウェアを用いた再度の通信（図７）のそれぞれのジョブ結果の値は、「ＯＫ」「ＮＧ」「ＮＧ」である。すなわち、２０１７年９月２日では、ファームウェアを更新しても、ファームウェアを更新しなくても、ジョブＩＤ「２」として示される内容の通信の結果はＮＧである。このような場合、ＣＰＵ３０１は、ファームウェアを再度更新する。これにより、ファームウェアの更新が維持される。
【００５５】
すなわち、第２の実施の形態では、テスト通信の結果が通信の失敗を示すもの（ＮＧ）である場合に、更新前のファームウェアで、通信履歴に従った通信を再度実行し、再度の通信の結果が通信の失敗を示すもの（ＮＧ）である場合には、ファームウェアの更新が維持されてもよい。
【００５６】
＜第３の実施の形態＞
図８は、第３の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図８の処理は、図４の処理に対して、ステップＳ１１２をさらに含む。第３の実施の形態では、テスト通信の対象となるジョブの条件が設定される。ＣＰＵ１５０は、ジョブ履歴のうち、当該条件を満たすジョブについてのみ、テスト通信を実行する。
【００５７】
より具体的には、図８を参照して、ＣＰＵ１５０は、ステップＳ１１０でファームウェアを更新した後、ステップＳ１１２へ制御を進める。
【００５８】
ステップＳ１１２にて、ＣＰＵ１５０は、ジョブ履歴が特定期間に実行されたジョブを含むか否かを判断する。特定期間は、テスト通信についての条件の一例である。ＣＰＵ１５０は、ジョブ履歴における各ジョブの項目「時間」の値に基づいて、ジョブ履歴が特定期間に実行されたジョブを含むか否かを判断する。ＣＰＵ１５０は、ジョブ履歴がそのようなジョブを含むと判断すると（ステップＳ１１２にてＹＥＳ）、ステップＳ１２０へ制御を進め、そのようなジョブを含まないと判断すると（ステップＳ１１２にてＮＯ）、そのまま図８の処理を終了する。
【００５９】
ステップＳ１２０にて、ＣＰＵ１５０は、上記特定期間に実行されたジョブのうち、テスト通信の対象になっていないジョブのうちジョブＩＤの値が最も大きいジョブについて、通信相手のアドレスに接続する。
【００６０】
図９は、ジョブ履歴の内容の一例を模式的に示す図である。図９の例に対して、テスト通信の条件である特定期間が「２０１７年９月１日から２０１７年９月３０日」と設定された場合、ＣＰＵ３０１は、ジョブ履歴の中のジョブの内、ジョブＩＤ「１０２」〜「１５０」のそれぞれについてテスト通信を実行し、ファームウェアの更新を維持するか否かを判断する。
【００６１】
なお、「ジョブが特定期間内に実行されたものであること」は、テスト通信のための所与の条件の単なる一例である。当該条件の他の例は、「ジョブに使用された通信プロトコルの種類が特定の種類であること」である。さらに他の例は、「通信相手のアドレスが特定のアドレスであること」である。さらに他の例は、「通信相手のユーザーＩＤが特定のユーザーＩＤであること」である。
【００６２】
＜第４の実施の形態＞
図１０は、第４の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図１０の処理は、図４の処理に対して、ステップＳ１１４をさらに含む。
【００６３】
第４の実施の形態において、ＣＰＵ１５０は、ジョブ履歴のうち通信の結果の値が「ＯＫ」であるジョブについてのみ、テスト通信を実施する。
【００６４】
より具体的には、ＣＰＵ１５０は、ステップＳ１１０にてファームウェアを更新した後、ステップＳ１１４へ制御を進める。
【００６５】
ステップＳ１１４にて、ＣＰＵ１５０は、ジョブ履歴に登録されているジョブの内、テスト通信の対象となっていないものであって、結果の値が「ＯＫ」であるジョブがあるか否かを判断する。ＣＰＵ１５０は、ジョブ履歴が、テスト通信の対象となっておらずかつ結果の値が「ＯＫ」であるジョブを含むと判断すると（ステップＳ１１４にてＹＥＳ）、ステップＳ１２０へ制御を進める。そうでなければ（ステップＳ１１４にてＮＯ）、ＣＰＵ１５０は、図１０の処理を終了させる。
【００６６】
結果の値が「ＯＫ」であることは、通信の結果が通信の成功を示すものであることの一例である。第４の実施の形態では、ＣＰＵ１５０は、過去に通信が成功していた通信相手についてのみ、テスト通信を実施する。ＣＰＵ１５０は、過去に通信できなかった通信相手とはテスト通信を行わない。これにより、ＭＦＰ１００は、更新後のファームウェアが、更新前のファームウェアによって通信できた通信相手と継続して通信ができるか否かを効率的に確認することができる。
【００６７】
＜第５の実施の形態＞
図１１は、第５の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図１１の処理は、図４の処理に対して、ステップＳ１２０，Ｓ１７０は含まないが、ステップＳ１１６，Ｓ１２２，Ｓ１７２を含む。
【００６８】
図１１を参照して、ＣＰＵ１５０は、ステップＳ１１０にてファームウェアを更新すると、ステップＳ１１６へ制御を進める。
【００６９】
ステップＳ１１６にて、ＣＰＵ１５０は、ジョブ履歴から、「送信頻度順ジョブ履歴」を作成する。「送信頻度順ジョブ履歴」は、ジョブ履歴に含まれるジョブがＭＦＰ１００との接続頻度の高い順に並べ直されることによって、作成される。
【００７０】
図１２は、ジョブ履歴の内容の一例を模式的に示す図である。図１２のジョブ履歴は、６のジョブ（ジョブＩＤ「１」〜「６」）を含む。図１２のジョブ履歴は、通信相手のアドレスとして、２種類のアドレス（「１７２．１６．０．１０」「１７２．１６．０．２０」）を含む。前者のアドレスは４のジョブに対応し、後者のアドレスは２のジョブに対応する。すなわち、ＭＦＰ１００は、後者のアドレスより前者のアドレスの方に多く接続している。したがって、後者のアドレスより前者のアドレスの方が、ＭＦＰ１００の接続頻度が高い。
【００７１】
図１３は、図１２のジョブ履歴から作成された「送信頻度順ジョブ履歴」の一例を示す図である。図１３では、前者のアドレス（１７２．１６．０．１０）に対応するジョブが、後者のアドレス（１７２．１６．０．２０）に対応するジョブよりも上方に配置されている。
【００７２】
図１１に戻って、ステップＳ１２２にて、ＣＰＵ１５０は、テスト通信の対象となるジョブを設定する。設定されるジョブは、「送信頻度順ジョブ履歴」（図１３）において、まだテスト通信の対象となっていないジョブのうち、最も上方に配置されたジョブである。ＣＰＵ１５０は、当該ジョブにおける通信相手に接続する。
【００７３】
その後、ステップＳ１３０にて、ＣＰＵ１５０は、ステップＳ１２２にて接続した通信相手との間で、テスト通信の対象として設定されたジョブの内容を利用して、テスト通信を実施する。
【００７４】
第５の実施の形態において、ＣＰＵ１５０は、図１３に示されたように並べ直されたジョブ履歴のうち上方に配置された特定の数のジョブについてのみ、テスト通信を実行してもよい。
【００７５】
また、ＣＰＵ１５０は、図１３のジョブ履歴のうち、情報に配置された特定の数の通信相手のアドレスのそれぞれについて１回ずつテスト通信を実施してもよい。すなわち、ＣＰＵ１５０は、アドレス（「１７２．１６．０．１０」）についてテスト通信を１回実施し、アドレス（「１７２．１６．０．２０」）についてテスト通信を１回実施してもよい。この場合、たとえば、ジョブＩＤ「１」〜「６」のうち、ジョブＩＤ「５」，「４」についてのみ、テスト通信が実施されてもよい。
【００７６】
ＣＰＵ１５０は、図４等のステップＳ１７０の代わりに、ステップＳ１７２の制御を実行する。ステップＳ１７２にて、ＣＰＵ１５０は、「送信頻度順ジョブ履歴」に未確認の（未だテスト通信の対象となっていない）ジョブがあるか否かを判断する。ＣＰＵ１５０は、そのようなジョブがあると判断すれば（ステップＳ１７２にてＹＥＳ）、ステップＳ１２２へ制御を戻し、そのようなジョブが無いと判断すると（ステップＳ１７２にてＮＯ）、図１１の処理を終了する。
【００７７】
ＣＰＵ１５０は、ジョブ履歴のうち、通信頻度の低い通信相手については、テスト通信を省略してもよい。たとえば、ジョブ履歴において、１つのジョブしか登録されていない通信相手については、ＣＰＵ１５０は、テスト通信の実施を省略してもよい。
【００７８】
以上説明された第５の実施の形態では、図１２に示されたように、通信履歴は、２以上の通信先（通信相手のアドレス）のそれぞれとの通信の内容を含んでいてもよい。テスト通信の実施のための条件は、「ＭＦＰ１００との通信の頻度が所与の基準より高い通信先との通信内容であること」を含んでいてもよい。
【００７９】
＜第６の実施の形態＞
図１４は、第６の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図１４の処理は、図４の処理に対して、ステップＳ１２０，Ｓ１７０は含まないが、ステップＳ１２４，Ｓ１２６，Ｓ１７３を含む。
【００８０】
図１４を参照して、ステップＳ１１０にてファームウェアを更新した後、ＣＰＵ１５０は、ステップＳ１２４にて、ジョブ履歴から、同一機能、同一の通信相手のアドレス、および、同一のユーザーＩＤに関連付けられたジョブから１のジョブを抽出する。
【００８１】
図１５は、ジョブ履歴の内容の一例を模式的に示す図である。図１５のジョブ履歴は、６のジョブ（ジョブＩＤ「１」〜「６」）を含む。図１６は、図１５のジョブ履歴から抽出されたジョブを示す図である。図１５の例では、ジョブＩＤ「６」とジョブＩＤ「３」では、機能（ＷｅｂＤＡＶ）、通信相手のアドレス（172.2.0.30）、および、ユーザーＩＤ（user3）が共通する。したがって、図１６では、ジョブＩＤ「６」とジョブＩＤ「３」のうちジョブＩＤ「６」のみが選択されて登録されている。選択される基準は、たとえば、「時刻」が最も遅いものであることである。
【００８２】
また、図１５の例では、ジョブＩＤ「５」とジョブＩＤ「２」では、機能（ＳＭＢ（Server  Message  Block））、通信相手のアドレス（172.2.0.20）、および、ユーザーＩＤ（user2）が共通する。したがって、図１６では、ジョブＩＤ「５」とジョブＩＤ「２」のうちジョブＩＤ「５」のみが選択されて登録されている。
【００８３】
また、図１５の例では、ジョブＩＤ「４」とジョブＩＤ「１」では、機能（ＦＴＰ（File  Transfer  Protocol））、通信相手のアドレス（172.2.0.10）、および、ユーザーＩＤ（user1）が共通する。したがって、図１６では、ジョブＩＤ「４」とジョブＩＤ「１」のうちジョブＩＤ「４」のみが選択されて登録されている。
【００８４】
図１４に戻って、ステップＳ１２６にて、ＣＰＵ１５０は、ステップＳ１２４にて抽出されたジョブのうち、まだテスト通信の対象になっていないジョブを、テスト対象のジョブとして設定する。ＣＰＵ１５０は、当該ジョブにおける通信相手に接続する。その後、制御はステップＳ１３０へ進む。
【００８５】
ＣＰＵ１５０は、図４等のステップＳ１７０の代わりに、ステップＳ１７３の制御を実行する。ステップＳ１７３にて、ＣＰＵ１５０は、ステップＳ１２４にて抽出されたジョブのうち未確認の（未だテスト通信の対象となっていない）ジョブがあるか否かを判断する。ＣＰＵ１５０は、そのようなジョブがあると判断すると（ステップＳ１７３にてＹＥＳ）、ステップＳ１２６へ制御を戻し、そのようなジョブが無いと判断すると（ステップＳ１７３にてＮＯ）、図１４の処理を終了する。
【００８６】
以上説明された第６の実施の形態では、ＣＰＵ１５０は、テスト通信の対象のジョブとして、共通する条件（機能、等）を有する２以上の通信内容（ジョブ）の中の１つの通信内容（ジョブ）を設定してもよい。
【００８７】
＜第７の実施の形態＞
図１７および図１８は、第７の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図１７の処理は、図１４（第６の実施の形態）の処理に対して、ステップＳ１１８，Ｓ１８２をさらに含む。第７の実施の形態では、ＣＰＵ１５０は、ファームウェアの更新通知を受信した時点では、第６の実施の形態と同様に、抽出されたジョブについてのみテスト通信を実施する。第７の実施の形態では、ＣＰＵ１５０は、さらに、他のタイミングにおいて、残りのジョブについてのテスト通信を実施する。
【００８８】
図１７を参照して、ＣＰＵ１５０は、ステップＳ１１０にてファームウェアを更新した後、ステップＳ１１８にて、「更新」フラグをオンする。その後、制御はステップＳ１２４へ進む。ＣＰＵ１５０は、ステップＳ１２４にて、第６の実施の形態と同様にジョブ履歴からジョブを抽出し、ステップＳ１２６にて、抽出されたジョブの中から順にテスト通信の対象のジョブを設定する。
【００８９】
図１９は、ジョブ履歴の内容の一例を模式的に示す図である。図１９のジョブ履歴は、６のジョブ（ジョブＩＤ「１」〜「６」）を含む。図２０は、図１９のジョブ履歴から抽出されたジョブを示す図である。図２０の例は、４のジョブ（ジョブＩＤ「６」「５」「４」「３」）を含む。図２１は、図１９のジョブ履歴に含まれるジョブのうち、抽出されたジョブ以外のジョブを示す図である。図２１の例は、２のジョブ（ジョブＩＤ「２」「１」）を含む。
【００９０】
図１７の処理において、ＣＰＵ１５０は、ステップＳ１２６にて、図２０に示された４のジョブ（ジョブＩＤ「６」「５」「４」「３」）の中から１つのジョブを、順に、テスト通信の対象として設定する。これらの４つのジョブについてテスト通信を終了するか、少なくとも１つのジョブについてステップＳ１８０（ファームウェアのバージョンを元に戻す）を実行すると、ＣＰＵ１５０は図１７の処理を終了させる。なお、ステップＳ１８０にてファームウェアのバージョンを元に戻した後、ＣＰＵ１５０は、ステップＳ１８２にて、ステップＳ１１８にてオンした「更新」フラグをオフする。その後、ＣＰＵ１５０は、図１７の処理を終了させる。
【００９１】
図１８を参照して、ステップＳ２００にて、ＣＰＵ１５０は、予め定められた期間が到来したか否かを判断する。図１８の例において、予め定められた期間とは、たとえば、夜間（たとえば、午後２２時から午前２時）または休日（たとえば、日曜日）である。
【００９２】
ステップＳ２１０にて、ＣＰＵ１５０は、「更新」フラグがオンであるか否かを判断する。「更新」フラグは、ステップＳ１１８にてオンされて、ステップＳ１８２またはステップＳ２６０にてオフされる。
【００９３】
ステップＳ２２０〜Ｓ２７０にて、ＣＰＵ１５０は、ジョブ履歴に含まれるジョブのうち、図１７の処理においてテスト通信の対象となったジョブ（図２０：抽出されたジョブ）以外のジョブ（図２１：残りのジョブ）について、順にテスト通信を実行する。
【００９４】
すなわち、ＣＰＵ１５０は、ステップＳ２２０にて、ＣＰＵ１５０は、残りのジョブ（図２１）のうち１のジョブを処理対象に設定し、当該ジョブの通信相手に接続する。一例では、ステップＳ２２０において、ＣＰＵ１５０は、残りのジョブのうち最もジョブＩＤの値が大きいジョブであって、ステップＳ２２０の処理対象になっていないジョブを、テスト通信の対象のジョブとして設定する。
【００９５】
ステップＳ２３０にて、ＣＰＵ１５０は、通信相手に対して、ジョブ履歴の内容に従って通信し、当該通信の結果を記憶装置１６０に保存する。ステップＳ２４０にて、ＣＰＵ１５０は、ジョブ履歴内の通信の結果（項目「ジョブ結果」）と、ステップＳ２３０で保存したテスト通信の結果（ファームウェア更新後の通信の結果）とを比較する。
【００９６】
ステップＳ２５０にて、ＣＰＵ１５０は、ステップＳ２４０における比較において、２つの結果が同じであるか否かを判断する。ＣＰＵ１５０は、２つの結果が同じであると判断すると（ステップＳ２５０にてＹＥＳ）、ステップＳ２７０へ制御を進める。ＣＰＵ１５０は、２つの結果が異なると判断すると（ステップＳ２５０にてＮＯ）、ステップＳ２６０へ制御を進める。
【００９７】
ステップＳ２６０にて、ＣＰＵ１５０は、ファームウェア更新後の通信の結果（ステップＳ２３０にて取得された結果）が「ＮＧ」であるか否かを判断する。ＣＰＵ１５０は、ファームウェア更新後の通信の結果が「ＮＧ」であると判断すると（ステップＳ２６０にてＹＥＳ）、ステップＳ２８０へ制御を進める。ファームウェア更新後の通信の結果が「ＯＫ」であると判断すると（ステップＳ２６０にてＮＯ）、ステップＳ２７０へ制御を進める。
【００９８】
ステップＳ２８０にて、ＣＰＵ１５０は、ステップＳ１１０（図１７）において更新したファームウェアのバージョンを元に戻す。その後、制御はステップＳ２９０へ進められる。
【００９９】
ステップＳ２７０にて、ＣＰＵ１５０は、残りのジョブ（図２１）のうち未だテスト通信の対象となっていないジョブがあるか否かを判断する。ＣＰＵ１５０は、そのようなジョブがあると判断すると（ステップＳ２７０にてＹＥＳ）、ステップＳ２２０へ制御を戻す。ＣＰＵ１５０は、そのようなジョブが無いと判断すると（ステップＳ２７０にてＮＯ）、ステップＳ２９０へ制御を進める。
【０１００】
ステップＳ２９０にて、ＣＰＵ１５０は、「更新」フラグをオフにして、図１８の処理を終了する。
【０１０１】
以上説明された第７の実施の形態では、ＣＰＵ１５０は、ステップＳ１１０にてファームウェアが更新された直後に、ジョブ履歴から所与の条件に従って抽出されたジョブについてのテスト通信を実行する（図１７）。ＣＰＵ１５０は、ファームウェアの更新の後、残りのジョブについてのテスト通信を実行する。ファームウェア更新直後とは、ファームウェア更新に付随して実行されることを意味し、ファームウェアが更新されてから第１の期間（図１７の処理に要することが想定される時間期間）以内であることを意味する。ＣＰＵ１５０は、当該第１の期間内に、通信履歴に含まれる通信内容のうち第１の条件を満たす通信内容（図２０に示された、抽出されたジョブ）についてテスト通信を実行する。さらに、ＣＰＵ１５０は、ファームウェアが更新されてから第１の期間経過後に、通信履歴に含まれる通信内容のうち第１の条件を満たす通信内容以外の通信内容（図２１に示された、残りのジョブ）についてのテスト通信を実行する。
【０１０２】
なお、本実施の形態において、ジョブ履歴からジョブを抽出（図２０）する条件は、任意に設定することができる。条件の一例は、接続頻度が高いこと（ジョブ履歴において１０回以上の通信が通信アドレスであること、等）である。他の例は、特定のユーザーＩＤとの通信であることである。
【０１０３】
＜第８の実施の形態＞
図２２は、第８の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図２２の処理は、図４の処理に対して、ステップＳ３００，Ｓ３１０をさらに含む。
【０１０４】
図２２を参照して、ＣＰＵ１５０は、ステップＳ１１０にてファームウェアを更新した後、ステップＳ３００にて、管理サーバー２００からファームウェアの更新情報を受信する。
【０１０５】
図２３は、ファームウェアの更新情報の一例を模式的に示す図である。図２３に示されるように、ファームウェアの更新情報は、ファームウェアバージョンと更新機能とを含む。ファームウェアバージョンは、更新後のファームウェアのバージョンを識別する。更新機能は、今回の更新に関連する通信の機能を識別する。図２３の例では、更新機能は「ＳＭＢ送信」である。すなわち、図２３の例において、更新に関連する機能は、プロトコルＳＭＢを利用したデータの送信である。
【０１０６】
図２２に戻って、ＣＰＵ１５０は、ステップＳ３１０にて、ジョブ履歴のうち、ファームウェアの更新情報における更新機能に関連付けられたジョブを抽出する。たとえば、図２３の例に従うと、更新機能が「ＳＭＢ」であるため、図１９に示されたジョブ履歴から機能がＳＭＢに関連付けられた２つのジョブ（ジョブＩＤ「４」「２」）が抽出される。
【０１０７】
その後、ＣＰＵ１５０は、ステップＳ１２０〜Ｓ１７０において、ステップＳ３１０にて抽出されたジョブについて順にテスト通信を実施する。
【０１０８】
以上説明された第８の実施の形態では、更新されたファームウェアは、所与の機能に関連付けられており、ＭＦＰ１００は、通信履歴に含まれる通信内容のうち当該所与の機能に関連する通信内容を含む一部の通信内容（図２３の例に従って抽出された２つのジョブ（ジョブＩＤ「４」「２」））について、テスト通信を実行する。
【０１０９】
＜第９の実施の形態＞
図２４は、第９の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図２４の処理は、図４の処理に対して、ステップＳ１０２，Ｓ４００，Ｓ４１０，Ｓ４２０，Ｓ４３０，Ｓ４４０をさらに含む。
【０１１０】
第９の実施の形態において、ＣＰＵ１５０は、通信に各種の設定値を利用し、ファームウェア更新前の通信に利用されていた設定値を記憶装置１６０に格納する。ファームウェアの更新によってある項目の設定値が変更された場合、ＣＰＵ１５０は、テスト通信では、当該項目の設定値として変更前の設定値を利用する。ＣＰＵ１５０は、テスト通信における通信の結果が成功を表わすものであれば、当該項目の設定値として変更後の設定値を利用する。
【０１１１】
図２４を参照して、ＣＰＵ１５０は、ステップＳ１００にてファームウェアの更新の通知を受信した後、ステップＳ１０２にて、ジョブ履歴に含まれる機能のファームウェア更新前の設定情報を記憶装置１６０に格納する。図２５は、格納される設定情報の一例を示す図である。
【０１１２】
図２５に示されるように、設定情報は、機能と、設定項目と、設定値と、設定可能値とを含む。機能は、通信のプロトコルを表わす。設定項目は、機能における設定値の内容である。図２５の例（ＳＭＢバージョン）は、ＳＭＢプロトコルのバージョンを表わす。設定値は、設定される値である。図２５の例では、設定値は、ＳＭＢプロトコルのバージョン（ｖ２）である。設定可能値は、設定項目の設定値として設定され得る値を表わす。図２５の例では、ＳＭＢプロトコルのバージョンとして３つの値（ｖ１，ｖ２，ｖ３）が設定可能であることが示されている。
【０１１３】
図２４に戻って、ステップＳ１０２の後、ステップＳ１１０にて、ＣＰＵ１５０は、ファームウェアを更新する。その後、ステップＳ４００にて、ＣＰＵ１５０は、ステップＳ１１０でのファームウェアの更新の前後で、設定情報が同じであるか否かを判断する。ＣＰＵ１５０は、設定情報が同じであると判断すると（ステップＳ４００にてＹＥＳ）、ステップＳ１２０へ制御を進め、そうでなければ（ステップＳ４００にてＮＯ）、ステップＳ４１０へ制御を進める。
【０１１４】
図２６は、ファームウェア更新後の設定情報の一例を示す図である。設定情報は、たとえば、ファームウェアの更新時に、更新されたファームウェアによって変更される。図２５の例と比較して、図２６の例では、設定値が「ｖ３」へと変更されている。図２５および図２６の例に従うと、ＣＰＵ１５０は、ステップＳ４００からステップＳ４１０へと制御を進める。
【０１１５】
図２４に戻って、ステップＳ４１０にて、ＣＰＵ１５０は、設定値を変更された項目について、（ファームウェア更新後の現時点において）ファームウェア更新前の設定情報に戻すことが可能であるか否かを判断する。ＣＰＵ１５０は、戻すことが可能であると判断すると（ステップＳ４１０にてＹＥＳ）、ステップＳ４２０へ制御を進め、そうでなければ（ステップＳ４１０にてＮＯ）、ステップＳ１２０へ制御を進める。
【０１１６】
図２５に示されるように、ファームウェア更新前の設定項目「ＳＭＢバージョン」の設定値は「ｖ２」である。図２６に示されるように、ファームウェア更新後において、設定項目「ＳＭＢバージョン」の設定可能値が「ｖ２」を含む。したがって、図２５および図２６に示された例では、設定値を更新された項目について、ファームウェア更新前の設定情報に戻すことが可能である。
【０１１７】
ステップＳ４２０にて、ＣＰＵ１５０は、変更された設定情報を、ファームウェア更新前のものに変更した後、ステップＳ１２０へ制御を進める。図２５および図２６に示された例では、ＣＰＵ１５０は、図２６の設定値を「ｖ３」から「ｖ２」へと変更する。
【０１１８】
その後、ＣＰＵ１５０は、ステップＳ１２０以降でテスト通信を実行する。すなわち、ファームウェア更新によって、ある項目の設定値が変更された場合、テスト通信では、可能な限り変更前の設定値が利用される。
【０１１９】
ステップＳ１５０にて、ジョブ履歴の結果とテスト通信の結果とが同じであると判断すると（ステップＳ１５０にてＹＥＳ）、ＣＰＵ１５０は、ステップＳ４３０へ制御を進める。ステップＳ４３０にて、ＣＰＵ１５０は、ステップＳ４２０にてファームウェア更新前の設定情報への変更を実施していたか否かを判断する。ＣＰＵ１５０は、当該変更を実施していたと判断すると（ステップＳ４３０にてＹＥＳ）、ステップＳ４４０で設定情報を再度変更する。ステップＳ４４０では、たとえば、図２６の設定値が「ｖ２」から「ｖ３」に戻される。その後、制御はステップＳ１７０へ進む。一方、ＣＰＵ１５０は、上記変更を実施していなかったと判断すると（ステップＳ４３０にてＮＯ）、そのままステップＳ１７０へ制御を進める。
【０１２０】
以上説明された第９の実施の形態では、ファームウェアの更新によって一部の機能の設定値を変更された場合、テスト通信では、一部の機能について更新前の設定値が利用され得る。なお、テスト通信の後、当該設定値は、変更後のものに戻される。
【０１２１】
＜第１０の実施の形態＞
図２７は、第１０の実施の形態のＭＦＰ１００のＣＰＵ１５０が実行する処理のフローチャートである。図２７の処理は、図４の処理に対して、ステップＳ１１４，Ｓ１６８をさらに含む。
【０１２２】
図２７を参照して、ＣＰＵ１５０は、ステップＳ１１０にてファームウェアを更新した後、ステップＳ１１４にて、ジョブ履歴は、結果が「ＯＫ」であるジョブを含むか否かを判断する。ＣＰＵ１５０は、ジョブ履歴がそのようなジョブを含むと判断すると（ステップＳ１１４にてＹＥＳ）、ステップＳ１２０以降において、各ジョブについてのテスト通信を実行する。一方、ＣＰＵ１５０は、ジョブ履歴が、結果が「ＯＫ」であるジョブを含まない場合（ステップＳ１１４にてＮＯ）、すなわち、ジョブ履歴に含まれるすべてのジョブの結果が「ＮＧ」である場合、図２７の処理を終了させる。
【０１２３】
また、ＣＰＵ１５０は、ステップＳ１６０にて、テスト通信の結果がＮＧであると判断した場合（ステップＳ１６０にてＹＥＳ）、ステップＳ１６８へ制御を進める。ステップＳ１６８にて、ＣＰＵ１５０は、当該テスト通信において送信または受信したパケットを取得し、当該パケットを仮想検証環境に送信して、通信の失敗の原因の解析を依頼する。当該依頼の際に、ＣＰＵ１５０は、さらに、仮想検証環境に通信条件（プロトコル、設定値、等）を送信してもよい。仮想検証環境とは、たとえば、情報処理システム内に設けられた、通信環境の解析用のサーバーである。仮想検証環境は、解析の依頼を受信すると、通信の失敗原因を解析し、当該解析の結果を管理サーバー２００へ送信する。
【０１２４】
管理サーバー２００は、当該結果に基づいて、さらにファームウェアを更新することができる。管理サーバー２００は、さらなるファームウェアの更新をＭＦＰ１００に通知してもよい。当該通知と受けると、ＣＰＵ１５０は、図２７等に記載された処理を、ステップＳ１００から実行する。
【０１２５】
第１０の実施の形態では、ＣＰＵ１５０は、テスト通信の結果が通信の失敗を示すものである場合に、当該テスト通信のパケットを用いた検証のための処理の一例として、仮想検証環境に、テスト通信のパケットを送信する。
【０１２６】
今回開示された各実施の形態は全ての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内での全ての変更が含まれることが意図される。また、実施の形態および各変形例において説明された発明は、可能な限り、単独でも、組合わせても、実施することが意図される。
【符号の説明】
【０１２７】
１００  ＭＦＰ、１５０  ＣＰＵ、１６０  記憶装置、２００  管理サーバー、３００  ホスト、Ｎ  ネットワーク。
【図１】
2019133313.tif 000003
【図２】
2019133313.tif 000004
【図３】
2019133313.tif 000005
【図４】
2019133313.tif 000006
【図５】
2019133313.tif 000007
【図６】
2019133313.tif 000008
【図７】
2019133313.tif 000009
【図８】
2019133313.tif 000010
【図９】
2019133313.tif 000011
【図１０】
2019133313.tif 000012
【図１１】
2019133313.tif 000013
【図１２】
2019133313.tif 000014
【図１３】
2019133313.tif 000015
【図１４】
2019133313.tif 000016
【図１５】
2019133313.tif 000017
【図１６】
2019133313.tif 000018
【図１７】
2019133313.tif 000019
【図１８】
2019133313.tif 000020
【図１９】
2019133313.tif 000021
【図２０】
2019133313.tif 000022
【図２１】
2019133313.tif 000023
【図２２】
2019133313.tif 000024
【図２３】
2019133313.tif 000025
【図２４】
2019133313.tif 000026
【図２５】
2019133313.tif 000027
【図２６】
2019133313.tif 000028
【図２７】
2019133313.tif 000029