(57)【要約】【課題】自装置がアップデート管理対象とする第１のソフトウェアのアップデート後に、アップデート管理対象としない第２のソフトウェアが正常動作するかを自動でかつ効率良くテストする画像形成装置を提供する。【解決手段】自装置がアップデート管理対象とする第１のソフトウェアと、アップデート管理対象としない第２のソフトウェアとがインストールされた画像形成装置１０２を設ける。画像形成装置１０２が、第１のソフトウェアがアップデートされた後に第２のソフトウェアの動作確認テストを実行するテストモジュールを起動する。そして、画像形成装置１０２が、上記テストモジュールによる第２のソフトウェアの動作確認テストの実行前に、動作確認テスト時に第２のソフトウェアの指示にしたがって動作する画像形成装置の機能のふるまいを設定する。【選択図】図１
2013250911.tif 000002
【特許請求の範囲】
【請求項１】
第１のソフトウェアと第２のソフトウェアとがインストールされた画像形成装置であって、
前記第１のソフトウェアは、前記画像形成装置がアップデート管理対象とするソフトウェアであり、前記第２のソフトウェアは、前記画像形成装置がアップデート管理対象としないソフトウェアであり、
前記第１のソフトウェアをアップデートまたはダウングレードする更新手段と、
前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアの動作確認テストを実行するテストモジュールを起動する起動手段と、
前記起動したテストモジュールによる前記第２のソフトウェアの動作確認テストの実行前に、該動作確認テスト時に該第２のソフトウェアの指示にしたがって動作する前記画像形成装置の機能のふるまいを設定する設定手段とを備える
ことを特徴とする画像形成装置。
【請求項２】
前記テストモジュールは、予め決められた前記起動手段と前記設定手段の仕様に応じて作成され、前記第２のソフトウェアとともに前記画像形成装置にインストールされており、
前記設定手段は、前記テストモジュールが実行する前記動作確認テストの内容に対応する、予め決められた前記画像形成装置の機能のふるまいを設定する
ことを特徴とする請求項１に記載の画像形成装置。
【請求項３】
前記設定手段は、前記動作確認テスト時に、前記画像形成装置が、前記第２のソフトウェアの指示により生成した画像データを媒体に印刷出力せずに前記テストモジュールによる動作確認テスト用のデータとして出力することを設定する
ことを特徴とする請求項１に記載の画像形成装置。
【請求項４】
前記設定手段は、前記動作確認テスト時に、前記画像形成装置が、前記第２のソフトウの指示により生成された外部装置への送信用データを送信せずに前記テストモジュールによる前記動作確認テスト用のデータとして出力することを設定する
ことを特徴とする請求項１に記載の画像形成装置。
【請求項５】
前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアが正常動作しない場合に、該第１のソフトウェアが含むモジュールに対応する版数を記憶手段に記憶して管理する管理手段と、
前記第１のソフトウェアのアップデート指示がされた場合に、該第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致するかを判断する判断手段と、
前記第１のソフトウェアがアップデートされた場合の該第１のソフトウェアが含むモジュールに関する版数が前記記憶手段に記憶されている版数と合致すると判断された場合に、前記更新手段による該第１のソフトウェアのアップデートを中止する中止手段とを備える
ことを特徴とする請求項１乃至４のいずれか１項に記載の画像形成装置。
【請求項６】
第１のソフトウェアと第２のソフトウェアとがインストールされた画像形成装置と、前記画像形成装置にインストールされた前記第２のソフトウェアと連携動作する第３のアプリケーションがインストールされた情報処理装置とを備えるシステムであって、
前記第１のソフトウェアは、前記画像形成装置がアップデート管理対象とするソフトウェアであり、前記第２のソフトウェアは、前記画像形成装置がアップデート管理対象としないソフトウェアであり、
前記画像形成装置は、
前記第１のソフトウェアをアップデートまたはダウングレードする更新手段と、
前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアの動作確認テストを実行するテストモジュールを起動する起動手段と、
前記テストモジュールによる前記第２のソフトウェアの動作確認テストの実行前に、該動作確認テスト時に該第２のソフトウェアの指示にしたがって動作する前記画像形成装置の機能のふるまいを設定する設定手段とを備え、
前記起動されたテストモジュールは、前記情報処理装置にアクセスし、
前記アクセスされた情報処理装置にインストールされた前記第３のアプリケーションが、前記画像形成装置にインストールされている前記第２のソフトウェアにアクセスし、該アクセスされた第２のソフトウェアが前記画像形成装置の機能を動作させる
ことを特徴とする情報処理システム。
【請求項７】
第１のソフトウェアと第２のソフトウェアとがインストールされた画像形成装置の制御方法であって、
前記第１のソフトウェアは、前記画像形成装置がアップデート管理対象とするソフトウェアであり、前記第２のソフトウェアは、前記画像形成装置がアップデート管理対象としないソフトウェアであり、
前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアの動作確認テストを実行するテストモジュールを起動する工程と、
前記テストモジュールによる前記第２のソフトウェアの動作確認テストの実行前に、該動作確認テスト時に該第２のソフトウェアの指示にしたがって動作する前記画像形成装置の機能のふるまいを設定する工程とを有する
ことを特徴とする制御方法。
【請求項８】
請求項７に記載の制御方法をコンピュータに実行させる
ことを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像形成装置、画像形成装置の制御方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
デジタル複合機等の画像形成装置が備えるファームウェアのアップデートが必要になった場合、一般に、サービスマンが、顧客先に出向いて、当該ファームウェアのアップデートを実施する。しかし、近年は、インターネット環境が整い、ファームウェアをインターネットによってデジタル複合機に通知し、サービスマンが出向くことなく、ユーザによってファームウェアのアップデートを実施することが可能になってきている。上記ファームウェアは、画像形成装置のメーカーによって提供される。
【０００３】
アップデートを実施するファームウェア構成は、基本的に品質保証されたもので、アップデートしても動作に問題がないことを前提としている。しかし、現在のデジタル複合機には、ユーザのニーズによって機能をカスタマイズするためのオープンな外部アプリがインストールされていることがある。外部アプリは、デジタル複合機がアップデート管理対象としないソフトウェアであって、デジタル複合機のメーカーとは異なる他のメーカー（以下、外部アプリ提供メーカーと記述）によって提供される。一方、デジタル複合機には、デジタル複合機自身がアップデート管理対象とするソフトウェア（例えば、ファームウェア）がインストールされている。
【０００４】
外部アプリと、デジタル複合機自身がアップデート管理対象とするファームウェアとの組み合わせが、評価されていない組み合わせとなった場合、ファームウェアのアップデートが原因で機器の動作に異常が発生する可能性がある。例えば、ファームウェアのアップデート後にある機能のメモリの使用方法が変わると、外部アプリが動作しなくなる場合がある。
【０００５】
また、ファームウェアのアップデートの目的として、一度製品化されたファームウェアの機能を大きく変更することを目的とするよりも、バグの修正を目的とすることが多いと考えられる。したがって、外部アプリが、潜在バグに依存した作りになっている場合には、アップデートによってファームウェアのバグが修正された場合、外部アプリが動作しなくなることがある。
【０００６】
デジタル複合機内のファームウェアのアップデートに伴って外部アプリが動作しなくなった場合、ユーザは、カスタマイズされた外部アプリを使用するために、アップデート前の過去のバージョンにバージョンダウンを行う必要がある。特許文献１は、バージョンアップ指示対象のコンポーネントのテストを実行し、このコンポーネントの正常動作が確認できなかった場合に、当該コンポーネントとそのテストプログラムを削除するバージョンアップ管理装置を開示している。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００８−２６９１２８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、デジタル複合機本体とデジタル複合機のファームウェアを提供しているメーカーは、外部アプリをアップデート管理対象としない。したがって、外部アプリは、メーカー製のファームウェアから見ると未知のソフトウェアであり、ファームウェアは外部アプリの自動テストを実行することができない。その結果、デジタル複合機のファームウェアのアップデートの直後に、外部アプリが正常動作しないことを検知することができない場合がある。その場合、外部アプリを使用するときに初めて外部アプリが正常動作しないことが発見されることになり、ユーザの利便性を大きく損ねてしまう。
【０００９】
また、外部アプリの自動テストは、自動テスト時の画像形成装置１０２が有する機能のふるまいを自動テスト用に切り替えた上で実行したほうが効率的である。例えば、外部アプリの自動テストにおいて、画像形成装置１０２が有する印刷機能を動作させる場合、当該印刷機能が生成した画像データを実際に紙媒体に出力することなく自動テストの成否の判定に用いたほうが効率的である。
【００１０】
本発明は、自装置がアップデート管理対象とする第１のソフトウェアのアップデート後に、アップデート管理対象としない第２のソフトウェアが正常動作するかを自動でかつ効率良くテストする画像形成装置の提供を目的とする。
【課題を解決するための手段】
【００１１】
本発明の一実施形態の画像形成装置は、第１のソフトウェアと第２のソフトウェアとがインストールされた画像形成装置である。前記第１のソフトウェアは、前記画像形成装置がアップデート管理対象とするソフトウェアであり、前記第２のソフトウェアは、前記画像形成装置がアップデート管理対象としないソフトウェアである。そして、前記画像形成装置は、前記第１のソフトウェアをアップデートまたはダウングレードする更新手段と、前記第１のソフトウェアがアップデートされた後に前記第２のソフトウェアの動作確認テストを実行するテストモジュールを起動する起動手段と、前記起動したテストモジュールによる前記第２のソフトウェアの動作確認テストの実行前に、該動作確認テスト時に該第２のソフトウェアの指示にしたがって動作する前記画像形成装置の機能のふるまいを設定する設定手段とを備える。
【発明の効果】
【００１２】
本発明の画像形成装置によれば、自装置がアップデート管理対象とする第１のソフトウェアのアップデート後に、アップデート管理対象としない第２のソフトウェアが正常動作するかを自動でかつ効率良くテストすることができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態のシステム構成例を示す図である。
【図２】画像形成装置の構成例を示す図である。
【図３】画像形成装置が備えるコントローラ部の構成例を示す図である。
【図４】画像形成装置のファームウェア構成の一例を示す図である。
【図５】ファームウェアのアップデートを説明する図である。
【図６】ファームウェアのアップデート処理を説明するフローチャートである。
【図７】アップデートタイミング制御処理の例を説明するフローチャートである。
【図８】外部アプリの動作確認テストの実行処理の例を説明するフローチャートである。
【図９】他の実施形態のシステム構成例を示す図である。
【発明を実施するための形態】
【００１４】
図１は、本実施形態のシステム構成例を示す図である。本実施形態の情報処理システムは、コンテンツサーバ１０１と画像形成装置１０２とを備える。コンテンツサーバ１０１と画像形成装置１０２とは、ネットワーク（この例ではインターネット）１００を介して通信する。画像形成装置１０２は、画像データを生成して出力する処理装置である。画像形成装置１０２は、例えば、プリンタ、スキャナ、ファクシミリ装置、ＭＦＰ（Ｍｕｌｔｉｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）等である。画像形成装置１０２は、顧客先に設置される。
【００１５】
コンテンツサーバ１０１は、インターネット１００を介して、画像形成装置１０２に対し、画像形成装置１０２のファームウェアをアップデートするために必要なファームウェア構成情報を配信する。また、コンテンツサーバ１０１は、ファームウェアのアップデート・ダウングレード時に画像形成装置１０２がインストールする差分モジュールを画像形成装置１０２に配信する。
【００１６】
図２は、画像形成装置の構成例を示す図である。画像形成装置１０２は、ＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）２０１を介してインターネット１００（図１）に接続されている。ＬＡＮ２０１は、例えばイーサネット（登録商標）である。
【００１７】
画像形成装置１０２は、リーダ部２０３、プリンタ部２０４、操作部２０５、コントローラ部２０６を備える。リーダ部２０３は、画像データの読取処理を行う。プリンタ部２０４は、画像データの出力処理を行う。操作部２０５は、ユーザの操作に応じた処理を実行する。例えば、操作部２０５は、画像データや各種機能の表示処理を行う液晶パネルを備える。コントローラ部２０６は、画像形成装置１０２が備える各処理部に指示することによって、画像形成装置全体を制御する。
【００１８】
リーダ部２０３は、原稿給紙ユニット２０７、スキャナユニット２０８を備える。原稿給紙ユニット２０７は、原稿用紙を搬送する。スキャナユニット２０８は、搬送された原稿画像を光学的に読み取って電気信号としての画像データに変換する。
【００１９】
プリンタ部２０３は、給紙ユニット２０９、マーキングユニット２１０、排紙ユニット２１２、アクセサリユニット２１３を備える。給紙ユニット２０９は、記録用紙を収容する。このために、給紙ユニット２０９は、複数段の給紙カセットを備える。マーキングユニット２１０は、画像データを記録用紙に転写、定着する。排紙ユニット２１２は、印字された記録用紙を外部に排出する。この例では、排紙ユニット２０９は、画像形成装置１０２の外部に接続されたアクセサリユニット２１３に接続されている。したがって、排紙ユニット２０９は、記録用紙をアクセサリユニット２１３へ排出する。
【００２０】
アクセサリユニット２１３は、ソート処理やステイプル処理などのフィニッシング処理を施して、記録用紙を排出する。また、画像形成装置１０２がＦＡＸ機能付きの画像形成装置である場合は、アクセサリユニット２１３にＦＡＸ送信部が設けられる。
【００２１】
図３は、図２に示す画像形成装置が備えるコントローラ部の構成例を示す図である。コントローラ部２０６が備える構成要素のうち、メインコントローラ３２は、ＣＰＵ３３とバスコントローラ３４とを備える。本実施形態の画像形成装置の制御方法は、ＣＰＵ３３がＦＬＡＳＨメモリ９９に格納されたコンピュータプログラムを実行することによって実現される。
【００２２】
メインコントローラ３２は、ＤＲＡＭＩ／Ｆ３７を介して、ＤＲＡＭ３８と接続される。また、メインコントローラ３２は、コーデックＩ／Ｆ３９を介して、コーデック４０と接続される。また、メインコントローラ３２は、ネットワークＩ／Ｆ４１を介して、ネットワークコントローラ４２と接続される。また、メインコントローラ３２は、スキャナバス４５を介して、スキャナＩ／Ｆ４６に接続される。また、メインコントローラ３２は、プリンタバス４７を介して、プリンタＩ／Ｆ４８に接続される。また、メインコントローラ４２は、ＰＣＩバス等の汎用高速バス４９を介して拡張ボードを接続するための拡張コネクタ５０及び入出力制御部（Ｉ／Ｏ制御部）５１に接続されている。
【００２３】
ＤＲＡＭ３８は、ＣＰＵ３３が動作するための作業領域や画像データを蓄積するための領域として使用される。コーデック４０は、ＤＲＡＭ３８に蓄積されたラスターイメージデータをＭＨ／ＭＲ／ＭＭＲ／ＪＢＩＧなどの周知の圧縮方式で圧縮する。また、コーデック４０は、圧縮されたデータをラスターイメージに伸長する。また、コーデック４０にはＳＲＡＭ４３が接続されており、ＳＲＡＭ４３は、コーデック４０の一時的な作業領域として使用される。
【００２４】
ネットワークコントローラ４２は、ネットワークコネクタ４４を介して、ＬＡＮ２０１（図２）との間で所定の制御動作を行う。Ｉ／Ｏ制御部５１は、図２に示すリーダ部２０３やプリンタ部２０４との間で、制御コマンドを送受信する。Ｉ／Ｏ制御部５１には、上記制御コマンドを送受信するための調歩同期式のシリアル通信コントローラ５２が２チャンネル装備されている。シリアル通信コントローラ５２は、Ｉ／Ｏバス５３を介して、スキャナＩ／Ｆ４６及びプリンタＩ／Ｆ４８に接続されている。
【００２５】
スキャナＩ／Ｆ４６は、第一の調歩同期シリアルＩ／Ｆ５４及び第一のビデオＩ／Ｆ５５を介して、スキャナコネクタ５６に接続されている。また、スキャナコネクタ５６は、リーダ部１０５のスキャナユニット２０８に接続されている。そして、スキャナＩ／Ｆ４６は、スキャナユニット２０８から受信した画像データに対して、所望の２値化処理や、主走査方向及び／又は副走査方向の変倍処理を行う。また、スキャナＩ／Ｆ４６は、スキャナユニット２０８から送られてきたビデオ信号に基づいて制御信号を生成し、スキャナバス４５を介して、メインコントローラ３２に転送する。
【００２６】
また、プリンタＩ／Ｆ４８は、第２の調歩同期シリアルＩ／Ｆ５７及び第２のビデオＩ／Ｆ５８を介して、プリンタコネクタ５９に接続されている。また、プリンタコネクタ５９は、プリンタ部２０４のマーキングユニット２１０に接続されている。そして、プリンタＩ／Ｆ４８は、メインコントローラ３２から出力された画像データにスムージング処理を施して、マーキングユニット２１０に出力する。また、プリンタＩ／Ｆ４８は、マーキングユニット２１０から送られたビデオ信号に基づいて、生成された制御信号をプリンタバス４７に出力する。プリンタＩ／Ｆ４８は、例えば、ＬＡＮ２０１に接続されたホストコンピュータから受信したＰＤＬ（ページ記述言語）データを解釈し、ラスターイメージデータに展開する。
【００２７】
また、バスコントローラ３４は、スキャナＩ／Ｆ４６プリンタＩ／Ｆ４８、その他拡張コネクタ５０等に接続された外部機器から入出力されるデータ転送を制御する。具体的には、バスコントローラ３４は、バスの使用権のアービトレーション（調停）やＤＭＡデータ転送の制御を行う。例えば、上述したＤＲＡＭ３８とコーデック４０との間のデータ転送や、スキャナユニット２０８からＤＲＡＭ３８へのデータ転送、ＤＲＡＭ３８からマーキングユニット２１０へのデータ転送等は、バスコントローラ３４によって制御され、ＤＭＡ転送される。
【００２８】
また、Ｉ／Ｏ制御部５１は、ＬＣＤコントローラ６０及びキー入力Ｉ／Ｆ６１を介して、パネルＩ／Ｆ６２に接続されている。パネルＩ／Ｆ６２は、操作部１０７に接続されている。また，Ｉ／Ｏ制御部５１は、Ｅ−ＩＤＥコネクタ６３を介して、ハードディスクドライブ８および９、Ｆｌａｓｈメモリ９９に接続されている。
【００２９】
Ｆｌａｓｈメモリ９９は、メインコントローラ制御用の各種制御プログラム、各種データ記憶領域を記憶する。また、Ｆｌａｓｈメモリ９９は、機器内で管理する日付と時刻を更新／保存するリアルタイムクロックモジュール６４に接続されている。リアルタイムクロックモジュール６４は、バックアップ用電池６５に接続されて、バックアップ用電池６５によりバックアップされている。
【００３０】
図４は、画像形成装置のファームウェア構成の一例を示す図である。画像形成装置１０２は、機能モジュール群４０１、Ｕｐｄａｔｅｒ４０２、Ｔｅｓｔｅｒ４０３、Ｅｎｇｉｎｅｃｏｎ４０４、Ａｃｃｅｓｏｒｙ４０５、外部アプリ実行プラットフォーム４０７がファームウェアとしてインストールされている。このファームウェアは、画像形成装置１０２がアップデート管理対象とするソフトウェア（第１のソフトウェア）である。ファームウェアは、画像形成装置１０２のメーカーによって提供される。
【００３１】
また、画像形成装置１０２には、外部アプリ群４０６がインストールされている。外部アプリ群４１５に含まれる外部アプリ４１５は、画像形成装置１０２がアップデート管理対象としないソフトウェア（第２のソフトウェア）である。外部アプリ４１５は、画像形成装置１０２のメーカーとは異なる他のメーカーである外部アプリ提供メーカーによって提供される。
【００３２】
機能モジュール群４０１は、ユーザが通常使用する複数のモジュールであって、画像形成装置１０２の各種機能処理を実行する。Ｕｐｄａｔｅｒ４０２は、ファームウェアのアップデートまたはダウングレードに用いられるモジュールである。Ｕｐｄａｔｅｒ４０２は、ユーザアップデート、ダウングレード時に起動して、ＣＰＵ３３によって実行される。
【００３３】
Ｔｅｓｔｅｒ４０３は、ファームウェアのアップデート後の自動テスト、すなわち外部アプリ４１５の動作確認テストを実行する。Ｔｅｓｔｅｒ４０３は、画像形成装置１０２がテストフレームワークとして提供するモジュール（更新手段）である。Ｅｎｇｉｎｅｃｏｎ４０４は、プリンタ部２０４のエンジンコントローラモジュールである。Ａｃｃｅｓｓｏｒｙ４０５は、アクセサリユニット２３１のコントローラモジュールである。
【００３４】
外部アプリ群４０６は、ユーザが機能をカスタマイズして使用するアプリケーションプログラム群である。外部アプリ実行プラットフォーム４０７は、外部アプリ４１５の実行環境を提供するモジュールである。外部アプリテストサービス４０８は、外部アプリテストモジュール４１６による外部アプリ４１５の動作確認テストの実行前に、該動作確認テスト時に該外部アプリ４１５の指示にしたがって動作する画像形成装置の機能のふるまいを設定する。外部アプリテストサービス４０８は、画像形成装置の機能の動作結果すなわち外部アプリ４１５の動作結果を取得して外部アプリテストモジュール４１６に渡す。
【００３５】
機能モジュール群４０１、Ｕｐｄａｔｅｒ４０２、Ｔｅｓｔｅｒ４０３、外部アプリ群４０６、外部アプリ実行プラットフォーム４０７は、ＦＬＡＳＨメモリ９９に格納される。Ｅｎｇｉｎｃｏｎ４０４は、プリンタ部２０４に格納される。Ａｃｅｓｓｏｒｙ４０５は、アクセサリユニット２１３に格納される。
【００３６】
機能モジュール群４０１は、ＵＩ４０８、ＳＣＡＮ４０９、ＰＲＩＮＴ４１０、Ｎ／Ｗ４１１、ＦＡＸ４１２、ＳＥＮＤ４１３、ＰＤＬ４１４を備える。ＵＩ４０８は、ユーザが操作部２０５を操作する際の動作モジュールである。スキャン４０９は、リーダ部２０３のコントローラモジュールである。ＰＲＩＮＴ４１０は、プリンタ部２０４のコントローラモジュールである。すなわち、ＰＲＩＮＴ４１０は、エンジンそのものに指示を出すＥｎｇｉｎｅｃｏｎ４０５の上位のコントローラモジュールである。
【００３７】
Ｎ／Ｗ４１１は、ネットワーク通信部分のモジュールであり、ネットワーク経由のプリント指示などを受ける。ＦＡＸ４１２は、画像形成装置１０２上で読み取った画像データのＦＡＸ送信を行う。また、ＦＡＸ４１２は、Ｎ／Ｗ４１１および外部のネットワークを介してＦＡＸ受信を行う。ＳＥＮＤ４１３は、画像形成装置１０２上で読み取った画像データをメール添付で外部に送信するモジュールである。ＰＤＬ４１４は、Ｎ／Ｗ４１０が外部のネットワーク経由で受信したＰＤＬデータを画像変換する。機能モジュール群４０１が備える各々の機能モジュールは、画像形成装置１０２のモジュールの例であり、機能モジュール群４０１が、図４に示す機能モジュール以外の機能モジュールを備えるようにしてもよい。
【００３８】
外部アプリ群４０６は、外部アプリ４１５と外部アプリテストモジュール４１６とを備える。外部アプリ４１５は、外部アプリ実行プラットフォーム４０７が提供する実行環境で動作するように作られたモジュールである。外部アプリ４１５は、外部アプリ実行プラットフォーム４０７を通して、機能モジュール群４０１が備える各モジュールを使用して、ユーザのニーズに合わせてカスタマイズされた機能を提供する。
【００３９】
外部アプリテストモジュール４１６は、外部アプリ４１５とともに画像形成装置１０２にインストールされている。外部アプリテストモジュール４１６は、ファームウェアがアップデートされた後に外部アプリ４１５の動作確認テストを実行するテストモジュールである。外部アプリテストモジュール４１６は、Ｔｅｓｔｅｒ４０３および外部アプリテストサービス４０８と連携して動作することで、外部アプリ４１５の動作確認テストを実行する。外部アプリテストモジュール４１６は、外部アプリ作成者によって提供される。
【００４０】
外部アプリ実行プラットフォーム４０７が提供するＡＰＩは、外部公開されており、外部アプリ提供メーカーが、外部アプリを作成して使用することができる。そのため、画像形成装置１０２のメーカー製のファームウェアを構成するモジュールがアップデートされて変更された場合、外部アプリ提供メーカー製の外部アプリ４１５とは評価されていない組み合わせとなる。
【００４１】
図５は、ファームウェアのアップデートを説明する図である。図５（Ａ）に示す５０１は、画像形成装置１０２内のファームウェアを構成するモジュール一覧として機能するリストの例である。図５（Ｂ）は、アップデート対象となるモジュールを含むモジュール一覧として機能するリストである。以後、これらのリストをコンテンツリストと呼ぶ。また、ファームウェアを構成するモジュールは、パッケージと呼ばれる。すなわち、ファームウェアは、コンテンツリストに記述されたパッケージ群によって構成されている。コンテンツサーバ１０１は、コンテンツリストと対応付けて、ファームウェアの更新時に画像形成装置１０２に提供するＴｅｓｔｅｒ４０３を保持している。
【００４２】
コンテンツサーバ１０１が、画像形成装置１０２のファームウェア構成を、コンテンツリストの単位で管理する。画像形成装置１０２のファームウェア構成のアップデート・ダウングレードは、画像形成装置１０２が、コンテンツリストのバージョンが変更されたときの差分パッケージをコンテンツサーバ１０１から取得してインストールすることで実施される。
【００４３】
図５（Ｂ）中に示すコンテンツリスト５０２は、図５（Ａ）中に示すコンテンツリスト５０１に対してバージョンアップされたコンテンツリストである。画像形成装置１０２は、コンテンツリスト５０１とコンテンツリスト５０２とを比較して、図５（Ｃ）に示す差分パッケージ５０３を特定する。差分パッケージ５０３に記載されているモジュールは、コンテンツリスト５０１とコンテンツリスト５０２との差分に対応するモジュールである。そして、画像形成装置１０２は、特定した差分パッケージをコンテンツサーバ１０１からインストールする。
【００４４】
コンテンツリストに記述されているパッケージは、それぞれ、コントローラ部２０６のＦｌａｓｈメモリ９９、プリンタ部２０４、アクセサリユニット２１３に格納されている。画像形成装置１０２が備える各モジュールに１または複数のパッケージが対応することになる。コンテンツリストは、コンテンツリストに記述されたファームウェア構成で品質を保証される。ファームウェアのアップデートが必要になった場合、ファームウェア提供者は、コンテンツリストに記述されたパッケージを変更し、その構成での品質保証を行い、バージョンを上げたコンテンツリストをコンテンツサーバ１０１へ登録する。これにより、各ユーザ先の機器から新しいバージョンのコンテンツリストを取得することができる。
【００４５】
ファームウェア提供者は、コンテンツリストをコンテンツサーバ１０１に登録する際に、コンテンツリストのバージョンに対応したテストフレームワーク（Ｔｅｓｔｅｒ４０３と外部アプリテストサービス４０８）を一緒に登録する。これにより、ユーザ先の機器がテストフレームワークも取得できるようになる。
【００４６】
図６は、ファームウェアのアップデート処理の例を説明するフローチャートである。図６を参照して説明するファームウェアのアップデート処理は、ＦＬＡＳＨメモリ９９に格納されたプログラムに従って、ＣＰＵ３３によって実行される。
【００４７】
まず、ＣＰＵ３３が、コンテンツサーバ１０１からファームウェアのアップデート通知を受信し、ＦＬＡＳＨメモリ９９内のＵｐｄａｔｅｒ４０２を起動する（ステップＳ６０１）。ファームウェアのアップデート通知は、画像形成装置１０２に対するファームウェアのアップデート指示として機能する。ファームウェアのアップデート通知には、アップデート対象のモジュールを含むコンテンツリスト５０２が含まれる。
【００４８】
次に、ＣＰＵ３３が、コンテンツサーバ１０１から受けたアップデート通知内容に基づいて、更新の発生する差分パッケージを特定する（ステップＳ６０２）。例えば、ＣＰＵ３３は、ファームウェアのアップデート前のコンテンツリスト５０１（図５（Ａ））と、アップデート通知に含まれるコンテンツリスト５０２とを比較し、差分パッケージ５０３の特定を行う。
【００４９】
次に、ＣＰＵ３３が、コンテンツサーバ１０１から、ステップＳ６０２で特定した差分パッケージをダウンロードする（ステップＳ６０３）。ステップＳ６０３では、ＣＰＵ３３は、さらに、差分パッケージを特定するのに用いたコンテンツリスト５０２に対応するＴｅｓｔｅｒ４０３をコンテンツサーバ１０１からダウンロードする。
【００５０】
次に、ＣＰＵ３３が、Ｕｐｄａｔｅｒ４０２に設定されている定期アップデート時刻に達したかを判断する（ステップＳ６０４）。ＣＰＵ３３が、Ｕｐｄａｔｅｒ４０２に設定されている定期アップデート時刻に達していないと判断した場合は、処理がステップＳ６０６に進む。そして、ＣＰＵ３３が、一定時間待機して（ステップＳ６０６）、処理がステップＳ６０４に戻る。
【００５１】
ＣＰＵ３３が、Ｕｐｄａｔｅｒ４０２に設定されている定期アップデート時刻に達していると判断した場合は、処理がステップＳ６０５に進む。そして、ＣＰＵ３３が、アップデートタイミング制御処理を実行する（ステップＳ６０５）。
【００５２】
図７は、実施例１におけるアップデートタイミング制御処理の例を説明するフローチャートである。このアップデートタイミング制御処理は、図６のステップＳ６０５での処理に対応し、ＣＰＵ３３が、ＦＬＡＳＨメモリ９９に格納されているＵｐｄａｔｅｒ４０２を実行することで行われる。
【００５３】
まず、ＣＰＵ３３が、今回アップデート対象となっているモジュールを含むコンテンツリストのバージョンが、ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンであるかを判断する（ステップＳ７０１）。すなわち、ＣＰＵ３３は、ファームウェアがアップデートされた場合の当該ファームウェアが含むモジュールに関するバージョンが、記憶手段に記憶されているバージョンと合致するかを判断する判断手段として機能する。ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンは、過去に外部アプリ４１５が正常動作しなかった時に記憶されたコンテンツリストのバージョン、つまり、外部アプリ４１５が正常動作しない原因となったコンテンツリストのバージョンである。
【００５４】
今回アップデート対象となっているモジュールを含むコンテンツリストのバージョンが、ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンでない場合は、処理がステップＳ７０４に進む。
【００５５】
一方、今回アップデート対象となっているモジュールを含むコンテンツリストのバージョンが、ＦＬＡＳＨメモリ９９に記憶されているコンテンツリストのバージョンである場合は、処理がステップＳ７０２に進む。続いて、ＣＰＵ３３が、外部アプリ４１５のバージョンが前回のアップデート以後に修正されたか（アップデートされたか）を判断する（ステップＳ７０２）。
【００５６】
外部アプリ４１５のバージョンとインストール日時は、外部アプリ実行プラットフォーム４０７を介してＦＬＡＳＨメモリ９９の特定の領域に保存されている。また、外部アプリ４１５の過去のアップデート日時も、ＦＬＡＳＨメモリ９９の特定の領域に保存されている。ＣＰＵ３３は、ＦＬＡＳＨメモリ９９に保存されている、外部アプリ４１５のインストール日時と過去のアップデート日時とを比較することで、外部アプリ４１５のバージョンが前回のアップデート以後に修正されたかを判断する。
【００５７】
外部アプリ４１５のバージョンが前回のアップデート以後に修正された場合は、ステップＳ７０４に進む。外部アプリ４１５のバージョンが前回のアップデート以後に修正されていなかった場合は、ステップＳ７０３に進む。そして、ＣＰＵ３３が、今回のファームウェアのアップデート処理を中止する。すなわち、ＣＰＵ３３は、Ｕｐｄａｔｅｒ４０２によるファームウェアのアップデートを中止する中止手段として機能する。
【００５８】
ステップＳ７０４において、ＣＰＵ３３が、今回アップデート対象となっているモジュールを含むコンテンツリストと、アップデート前のコンテンツリストとに基づいて、差分パッケージを特定する。そして、ＣＰＵ３３が、コンテンツサーバ１０１から差分パッケージをダウンロードし、画像形成装置１０２にインストールする。これにより、ファームウェアがアップデートされる。
【００５９】
次に、ＣＰＵ３３が、外部アプリＴｅｓｔｅｒ４１６によって、外部アプリ４１５の動作確認テストを行う（ステップＳ７０５）。外部アプリＴｅｓｔｅｒ４１６による動作確認テストは、以下のようにして実行される。まず、ＣＰＵ３３が、Ｔｅｓｔｅｒ４１５を起動する。Ｔｅｓｔｅｒ４１５が、外部アプリテストモジュール４１６を起動する。そして、外部アプリテストモジュール４１６が、外部アプリ４１５を叩く。外部アプリ４１５が、外部アプリ実行プラットフォーム４０７を介して、機能モジュール群４０１に含まれるモジュールを叩く。これにより外部アプリ４１５が動作する。このとき、外部アプリテストモジュール４１６は、外部アプリテストサービス４０８と連携して動作確認テストを実行する。
【００６０】
外部アプリテストモジュール４１６が、外部アプリ４１５の動作結果を取得し、動作結果が予め決められた期待する動作（戻り値）と一致しているかを判断する。外部アプリテストモジュール４１６が、動作結果が予め決められた期待する動作（戻り値）と一致していると判断した場合、ＣＰＵ３３は、外部アプリ４１５が正常動作すると判断して、処理を終了する。外部アプリテストモジュール４１６が、動作結果が予め決められた期待する動作（戻り値）と一致していないと判断した場合、ＣＰＵ３３は、外部アプリ４１５が正常動作しないと判断して、処理がステップＳ７０７に進む。
【００６１】
ステップＳ７０７において、ＣＰＵ３３が、アップデート前のパッケージに戻すために、ファームウェアのダウングレードを実行する（ステップＳ７０７）。具体的には、ＣＰＵ３３は、アップデートの処理と同様に、アップデート前のコンテンツリストをコンテンツリストサーバ１０１から取得して、差分パッケージのインストールを行うことで、ダウングレードを実行する。
【００６２】
次に、ＣＰＵ３３が、今回アップデート対象となったモジュールを含むコンテンツリストのバージョンを取得して、ＦＬＡＳＨメモリ９９の特定の領域に記憶して管理し（ステップＳ７０８）、処理を終了する。すなわち、ＣＰＵ３３は、ファームウェアがアップデートされた後に外部アプリ４１５が正常動作しない場合に、このファームウェアが含むモジュールに関する版数を記憶手段に記憶して管理する管理手段として機能する。
【００６３】
なお、上記ステップＳ７０５において、画像形成装置１０２が備える機能モジュールが、ユーザの操作にしたがって機能動作するようにしてもよい。そして、ＣＰＵ３３が、上記ステップＳ７０６乃至７０８の処理を、ユーザの操作にしたがって実行するようにしてもよい。
【００６４】
また、他の実施形態においては、上記ステップＳ７０１において、ＣＰＵ３３が、以下の処理を行うようにしてもよい。ＣＰＵ３３が、今回アップデート対象であるモジュールを含むコンテンツリストに含まれる原因モジュールのバージョンが、ＦＬＡＳＨメモリ９９に記憶されている原因モジュールのバージョンであるかを判断する。今回アップデート対象であるモジュールを含むコンテンツリストに含まれる原因モジュールのバージョンが、ＦＬＡＳＨメモリ９９に記憶されている原因モジュールのバージョンである場合は、処理がステップＳ７０２に進む。
【００６５】
今回アップデート対象であるモジュールを含むコンテンツリストに含まれる原因モジュールのバージョンが、ＦＬＡＳＨメモリ９９に記憶されている原因モジュールのバージョンでない場合は、処理がステップＳ７０４に進む。また、上記ステップＳ７０８において、ＣＰＵ３３が、外部アプリ４１５が正常動作しない原因となったモジュールを原因モジュールとして、そのバージョンをＦＬＡＳＨメモリ９９の特定の領域に保存する。
【００６６】
（外部アプリの動作確認テスト）
次に、外部アプリ４１５の動作確認テスト（自動テスト）について説明する。前提として、画像形成装置１０２に、外部アプリ４１５の動作確認テストを実行するためのテストフレームワークを提供する。この例では、テストフレームワークは、Ｔｅｓｔｅｒ４０３と外部アプリテストサービス４０８である。
【００６７】
画像形成装置１０２のメーカーは、テストフレームワークの仕様を公開し、外部アプリ提供メーカーは、公開された仕様に基づいて、Ｔｅｓｔｅｒ４０３から起動できるように外部アプリテストモジュール４１６を作成する。すなわち、外部アプリテストモジュール４１６は、予め決められたテストフレームワークの仕様に応じて作成され、外部アプリ４１５とともに画像形成装置１０２にインストールされる。外部アプリテストモジュール４１６がテストフレームワークの仕様に応じて作成されているので、Ｔｅｓｔｅｒ４０３から正常に外部アプリテストモジュールを起動させることができる。また、外部アプリテストモジュールから外部アプリテストサービス４０８に対して機能モジュールの動作のふるまいの設定を指示することができる。
【００６８】
外部アプリテストモジュール４１６は、テストフレームワークと連携して、外部アプリ４１５のテストを実行し、テスト結果をＴｅｓｔｅｒ４０３に通知する。このテストフレームワークの仕組みにより、未知の外部アプリ４１５の自動テストが可能になる。前述した図７のＳ７０６においては、Ｔｅｓｔｅｒ４０３に通知された自動テストの実行結果に基づいて、そのままアップデートを終了するか、ダウングレードを実施するかが判断される。
【００６９】
図８は、外部アプリの動作確認テストの実行処理の例を説明するフローチャートである。外部アプリの動作確認テストの実行処理は、ＦＬＡＳＨメモリ９９に格納されたプログラムに従って、ＣＰＵ３３がＴｅｓｔｅｒ４０３を実行することで行われる。
【００７０】
まず、ＣＰＵ３３が、Ｔｅｓｔｅｒ４０３を起動する（ステップＳ８０１）。続いて、Ｔｅｓｔｅｒ４０３が、外部アプリテストサービス４０８を起動する（ステップＳ８０２）。
【００７１】
次に、Ｔｅｓｔｅｒ４０３が、外部アプリ提供メーカーから提供された外部アプリテストモジュール４１６を起動する（ステップＳ８０３）。続いて、外部アプリテストモジュール４１６が、実際に外部アプリ４１５を動作させて自動テストを実行する前に、外部アプリテストサービス４０８に指示する（ステップＳ８０４）。そして外部アプリテストサービス４０８が、テスト実行中の機能モジュール群４０１の機能のふるまいを設定する（ステップＳ８０５）。
【００７２】
すなわち、外部アプリテストサービス４０８は、動作確認テストの内容に対応する、予め決められた画像形成装置の機能のふるまいを設定する。例えば、外部アプリテストサービス４０８は、動作確認テスト時のＰＲＩＮＴ４１１の機能のふるまいを以下のように設定する。外部アプリテストサービス４０８は、ＰＲＩＮＴ４１１が外部アプリ４１５の指示により生成した画像データを媒体に印刷出力せずに外部アプリテストモジュール４１６による動作確認テスト用のデータとして出力することを設定する。動作確認テスト用のデータは、外部アプリ４１５の動作結果として、外部アプリテストサービス４０８を介して外部アプリテストモジュール４１６に渡される。
【００７３】
また、例えば、外部アプリテストサービス４０８は、動作確認テスト時のＳＥＮＤ４１４の機能のふるまいを以下のように設定する。外部アプリテストサービス４０８は、ＳＥＮＤ４１４が外部アプリ４１５の指示により生成した送信用データを外部の機器に送信せずに、動作確認テスト用のデータとして出力することを設定する。外部アプリテストサービス４０８は、これらの例にとどまらず、機能モジュール群４０１の機能のふるまいをテスト実行用に切り替える処理を行うことができる。
【００７４】
外部アプリテストモジュール４１６は、実施したい自動テストに応じた機能モッジュール群４０１のふるまいの設定を外部アプリテストサービス４０８に指示する。このために、外部アプリテストサービス４０８からどのように機能動作の切り替えを行うかに関する情報が、外部アプリ提供メーカーに予め公開されている。外部アプリ提供メーカーは、公開されている情報に基づいて、外部アプリテストモジュール４１６を作成し、画像形成装置１０２に提供する。
【００７５】
次に、外部アプリテストモジュール４１６が、外部アプリ４１５の自動テストを実行する（ステップＳ８０６）。次に、外部アプリテストモジュール４１６が、外部アプリテストサービス４０８を介して、自動テスト時の外部アプリ４１５の動作結果を取得する（ステップＳ８０７）。そして、外部アプリテストモジュール４１６が、取得した動作結果に基づいて、自動テストの成否（成功したか失敗したか）を示す情報を生成する（ステップＳ８０８）。外部アプリテストモジュール４１６が、自動テストの成否を示す情報（テスト結果）をＴｅｓｔｅｒ４０３に通知する（ステップＳ８０９）。これにより、外部アプリテストモジュール４１６による自動テスト実行が終了する。外部アプリテストモジュール４１６が、操作部２０５を介して自動テストの実行結果を表示するようにしてもよい。
【００７６】
自動テスト実行終了後、ＣＰＵ３３が、外部アプリテストサービス４１６から機能モジュール群４０１に対してテスト実行時の機能のふるまいが設定されているかを判断する（ステップＳ８１０）。テスト実行時の機能のふるまいが設定されていない場合は、処理がステップＳ８１３に進む。テスト実行時の機能のふるまいが設定されている場合、Ｔｅｓｔｅｒ４０３が、外部アプリテストサービス４１６に対して、機能のふるまいの設計の解除を指示する（ステップＳ８１１）。外部アプリテストサービス４１６が、機能モジュール群４０１内の各機能に対して行ったふるまいの設定を解除する（ステップＳ８１２）。そして、Ｔｅｓｔｅｒ４０３が、外部アプリテストサービス４１６を終了させる（ステップＳ８１３）。
【００７７】
本実施形態の画像形成装置１０２によれば、ファームウェアのアップデート後に、外部アプリが正常動作するかを自動でかつ効率良くテストすることができる。したがって、外部アプリが正常動作しない場合に、すぐにユーザに通知することができる。
【００７８】
図９は、他の実施形態のシステム構成例を示す図である。図９に示す情報処理システムでは、外部アプリ４１６が、画像形成装置１０２とネットワークを介して接続された情報処理装置である外部システムサーバ１０３と連携して動作する。ユーザは、画像形成装置１０２が備えるブラウザ４１７から外部システムサーバ１０３上の外部システムアプリ９０１を介して、外部アプリ４１５にアクセスし、画像形成装置１０２の機能を動作させる。
【００７９】
ＣＰＵ３３が、Ｔｅｓｔｅｒ４０３をアップデート処理終了後に起動する。Ｔｅｓｔｅｒ４０３が、外部アプリテストサービス４０８と外部アプリテストモジュール４１６とを起動する。起動された外部アプリテストモジュール４１６が、画像形成装置１０２内のブラウザ４１７を介して、外部システムサーバ１０３にアクセスする。
【００８０】
外部システムサーバ１０３には、外部アプリ４１５と連携動作する外部システムアプリ９０１（第３のアプリケーション）がインストールされている。外部システムアプリ９０１が、画像形成装置１０２内にインストールされている外部アプリ４１５にアクセスする。外部アプリ４１６は、外部システムアプリ９０１からのアクセスに応じて、外部アプリ実行プラットフォーム４０７、機能モジュール群４０１へ指示を行って、画像形成装置１０２の機能を動作させる。テストフレームワーク（Ｔｅｓｔｅｒ４０３と外部アプリテストサービス４０８）による自動テスト実行は、図８を参照して説明した手順と同様の手順で行うことができる。図９に示す情報処理システムによれば、画像形成装置１０２が、外部システムサーバ１０３と連携して外部アプリ４１５の自動テストを実行することができる。
【００８１】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【符号の説明】
【００８２】
１００  コンテンツサーバ
１０２  画像形成装置
【図１】
2013250911.tif 000003
【図２】
2013250911.tif 000004
【図３】
2013250911.tif 000005
【図４】
2013250911.tif 000006
【図５】
2013250911.tif 000007
【図６】
2013250911.tif 000008
【図７】
2013250911.tif 000009
【図８】
2013250911.tif 000010
【図９】
2013250911.tif 000011