以下、図面を参照して、本発明の実施形態を詳細に説明する。本実施形態においては、情報処理装置として、ユーザが操作を行うためのUI(User Interface)としてタッチパネルなどの操作表示部34を備えた画像処理装置1について説明する。
なお、本実施形態における画像処理装置1は、コピー機能、プリント機能、スキャン機能、FAX機能などを実現するためのソフトウェアが実装されているMFP(Multi Function Peripheral:複合機)を例として説明する。
図3は本実施形態に係る画像処理装置1のハードウェア構成を示すブロック図である。画像処理装置1は、コントローラ100とエンジン部33とをPCI(Peripheral Component Interface)バス11で接続した構成となる。
コントローラ100は、画像処理装置1全体の制御と描画、通信、操作表示部34からの入力を制御する。エンジン部33は、PCIバス11に接続可能なプリンタエンジンなどであり、たとえば白黒プロッタ、1ドラムカラープロッタ、4ドラムカラープロッタ、スキャナまたはファックスユニットなどである。
なお、このエンジン部33には、プロッタなどのいわゆる画像形成出力を行うエンジン部分に加えて、誤差拡散やガンマ変換などの画像処理を行う画像処理部分が含まれる。
コントローラ100は、CPU21、ノースブリッジ(NB)23、システムメモリ(MEM-P)22、サウスブリッジ(SB)24、ローカルメモリ(MEM-C)27、ASIC(Application Specific Integrated Circuit)26、ハードディスクドライブ(HDD)35を含む。
また、ノースブリッジ(NB)23とASIC26とが、AGP(Accelerated Graphics Port)バス25によって接続される。さらに、MEM-P22は、ROM(Read Only Memory)22a、RAM(Random Access Memory)22bを含む。
CPU21は、画像処理装置1を制御し、NB23、MEM-P22、SB24を含むチップセットを含む構成であり、このチップセットを介して他の機器と接続される。NB23は、CPU21とMEM-P22、SB24、AGPバス25とを接続するためのブリッジであり、MEM-P22に対する読み書きなどを制御するメモリコントローラと、PCIマスタおよびAGPターゲットとを含む構成である。
MEM-P22は、プログラムやデータの格納用メモリ、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いるシステムメモリであり、ROM22aとRAM22bとを含む。
ROM22aは、プログラムやデータの格納用メモリとして用いる読み出し専用のメモリであり、RAM22bは、プログラムやデータの展開用メモリ、プリンタの描画用メモリなどとして用いる書き込みおよび読み出し可能なメモリである。
SB24は、NB23とPCIデバイス、周辺デバイスとを接続するためのブリッジである。このSB24は、PCIバスを介してNB23と接続されており、このPCIバスには、ネットワークインタフェース(I/F)部が接続される構成であってもよい。
ASIC26は、画像処理用のハードウェア要素を有する画像処理用途向けのIC(Integrated Circuit)であり、AGPバス25、PCIバス、HDD35およびMEM-C27をそれぞれ接続するブリッジの機能を実現する。
ASIC26は、PCIターゲットおよびAGPマスタと、ASIC26の中核をなすアービタ(ARB)と、MEM-C27を制御するメモリコントローラと、ハードウェアロジックなどにより画像データの回転などをおこなう複数のDMAC(Direct Memory Access Controller)と、エンジン部33との間でPCIバス11を介したデータ転送をおこなうPCIユニットとを含む。
ASIC26には、PCIバスを介してFCU(Facsimile Control Unit)28、USB(Universal Serial Bus)29、IEEE1394(the Institute of Electrical and Electronics Engineers 1394)インタフェース31、NFC(Near field radio communication)インタフェース32が接続される。
ASIC26は、入出力インタフェースなどの汎用機能を実現する構成が組み込まれているため、操作表示部34は、バス30を介してASIC26に直接接続されている。また、MEM-C27は、ASIC26がコピー用画像バッファ、符号バッファとして用いるローカルメモリである。
FCU28は、画像処理装置1におけるファクシミリの送受信を制御する。USB29は、画像処理装置1と、画像処理装置1にUSB接続されている外部の端末との間でデータの送受信を行う。IEEE1394インタフェース31は、画像処理装置1と、画像処理装置1にIEEE1394端子を介して接続されている外部の端末との間でデータの送受信を行う。NFCインタフェース32は、非接触型の近距離無線通信を行う。
HDD35は、画像データの蓄積、プログラムの蓄積、フォントデータの蓄積、フォームの蓄積を行うためのストレージであり、画像処理装置1において実行されるアプリケーションのプログラムファイルが保存されている。AGPバス25は、グラフィック処理を高速化するために提案されたグラフィックスアクセラレータカード用のバスインタフェースであり、MEM-P22に高スループットで直接アクセスすることにより、グラフィックスアクセラレータカードを高速にするものである。
なお、画像処理装置1において実行されるアプリケーションのプログラムファイルは、コントローラ100において、CPU21によってRAM22bに展開される。そして、RAM22bに展開されたプログラムに従ってCPU21が演算処理を行うことによってアプリケーションが実行される。
次に、本実施形態に係る操作表示部34のハードウェア構成について図2を参照して説明する。図2に示すように、操作表示部34は、CPU341、RAM342、ROM343、HDD344、内部I/F345、外部I/F346、操作パネル347がバス349を介して互いに接続されて構成される。
本実施形態においては、画像処理装置1の本体10(図3参照)に取り外し可能なディスプレイパネルとして構成されるものを操作表示部34として説明を行う。なお、本体10と通信可能な端末、例えば、タブレット型情報処理端末などを操作表示部34として用いる構成であってもよい。
CPU341は演算手段であり、操作表示部34の全体の動作を制御する。RAM342は、情報の高速な読み書きが可能な揮発性の記憶媒体であり、CPU341が情報を処理する際の作業領域として用いられる。ROM343は、読み出し専用の不揮発性記憶媒体であり、ファームウェアなどのプログラムが格納されている。
HDD344は、情報の読み書きが可能な不揮発性の記憶媒体であり、操作表示部34のOS(Operating System)や各種の制御プログラム、アプリケーションのプログラムファイルなどが格納されている。なお、HDD344の代わりに、SSD(Solid State Drive)などの不揮発性の記憶媒体を用いる構成であってもよい。
内部I/F345は、ASIC26の内部I/F265と接続され、ユーザによる操作パネル347の操作信号をコントローラ100に対して出力する。外部I/F346は、バス90と各種のハードウェアやネットワークなどを接続し制御する。
操作パネル347は、ユーザが操作表示部34の状態を確認するためのディスプレイなどの表示装置およびユーザが操作表示部34において、情報を入力するための入力部が一体的に形成されている。本実施形態において操作パネル347は、タッチパネルやハードキーなどによって構成される。
このようなハードウェア構成において、ROM343やHDD344もしくは光学ディスクなどの記録媒体に格納されたプログラムがRAM342に読み出され、CPU341がそれらのプログラムに従って演算を行うことにより、操作表示部34におけるソフトウェア制御部がそれぞれ構成される。このようにして構成されたソフトウェア制御部と、ハードウェアとの組み合わせによって、操作表示部34の機能を実現する機能ブロックがそれぞれ構成される。
図3は、画像処理装置1のソフトウェア構成の一例を示す模式図である。図3に示すように、本体10は、アプリ層101と、サービス層102と、OS層103とを有する。アプリ層101、サービス層102、および、OS層103の実体は、ROM22aやHDD35等に格納されている各種ソフトウェアである。CPU21が、これらのソフトウェアを実行することにより、各種の機能が提供される。
アプリ層101のソフトウェアは、画像処理装置1を構成するハードウェア資源を動作させて所定の機能を提供するためのアプリケーションである。例えばアプリケーションとしては、コピー機能を提供するためのコピーApp101a、プリンタ機能を提供するためのプリントApp101b、スキャナ機能を提供するためのスキャンApp101c、ファクス機能を提供するためのFAXApp101d、ネットワーク機能を提供するためのNWApp101eなどが挙げられる。さらに、アプリ層101のアプリケーションとしては、ウェブブラウザやアプリケーションを利用するのに必要なソフトウェアなどがある。
サービス層102のソフトウェアは、アプリ層101とOS層103との間に介在し、アプリケーションに対し、本体10が備えるハードウェア資源を利用するためのインタフェースを提供するためのソフトウェアである。具体的には、ハードウェア資源に対する動作要求の受付、動作要求の制御を行う機能を提供するためのソフトウェアである。サービス層102が受け付ける動作要求としては、エンジン部33によるスキャン動作や印刷要求が考えられる。
なお、サービス層102によるインタフェースの機能は、本体10のアプリ層101だけではなく、操作表示部34のアプリ層301に対しても提供される。すなわち、操作表示部34のアプリ層301(アプリケーション)も、サービス層102のインタフェース機能を介して、本体10のハードウェア資源(例えばエンジン部17)を利用した機能を実現することができる。例えばサービス層102のインタフェース機能は、WebAPIで提供される。
これらのWebAPIとして、本体10には、コピーApp101aに対応するAPIであるコピーApp API120a、プリントApp101bに対応するAPIであるプリントApp API120b、スキャンApp101cに対応するAPIであるスキャンApp API120c、FAXApp101dに対応するAPIであるFAXApp API120d、NWApp101eに対応するAPIであるNWApp API120eなどが提供されている。
OS層103のソフトウェアは、本体10が備えるハードウェアを制御する機能を提供するための基本ソフトウェア(オペレーティングシステム(OS))である。サービス層102のソフトウェアは、各アプリケーションから出力されたハードウェア資源の利用要求を、OS層103が解釈可能なコマンドに変換し、OS層103に転送する。そして、OS層103のソフトウェアによりコマンドが実行されることで、ハードウェア資源はアプリケーションの要求に従った動作を行う。
一方、操作表示部34も本体10と同様に、アプリ層301、サービス層302、OS層303を備える。操作表示部34が備えるアプリ層301、サービス層302、および、OS層303も階層構造については本体10側と同様である。ただし、アプリ層301のアプリケーションにより提供される機能や、サービス層302が受け付け可能な動作要求の種類は、本体10側とは異なる。
アプリ層301のアプリケーションは、操作表示部34が備えるハードウェア資源を動作させて所定の機能を提供するためのソフトウェアであってもよい。このようなソフトウェアとしては、例えば、操作表示部34は、本体10が備える機能(コピー機能、スキャナ機能、ファクス機能、プリンタ機能)に関する操作や表示を行うためのGUI(グラフィカルユーザインタフェース)の機能を提供するためのソフトウェアを備える。また、アプリ層301には、ネイティブアプリケーション、ブラウザアプリケーションなどが存在し、サービス層302には、インストーラなどが存在する。
なお、本実施の形態では、機能の独立性を保つために、本体10側のOS層103のソフトウェアと操作表示部34側のOS層303のソフトウェアが互いに異なる。つまり、本体10と操作表示部34は、別々のオペレーティングシステムで互いに独立して動作する。
以上のように、本実施の形態の画像処理装置1において、本体10と操作表示部34は別々のオペレーティングシステムで動作するため、本体10と操作表示部34との間の通信は、共通化された画像処理装置1内部のプロセス間通信ではなく、異なる装置間の通信として行われる。
操作表示部34が受け付けた情報(ユーザが操作表示部34を操作して入力した内容)を本体10へ転送する動作(コマンド通信)や、本体10が操作表示部34へイベントを通知する動作などが異なる装置間の通信に該当する。
そして、操作表示部34が本体10へコマンド通信を行うことにより、本体10の機能を使用することができる。また、本体10から操作表示部34に通知するイベントには本体10における動作の実行状況、および、本体10側で設定された内容(例えば、印刷ジョブの設定内容の情報)などが挙げられる。
また、本実施形態に係る画像処理装置1では、操作表示部34に対する電力供給が本体10からバス30を経由して行われる。ゆえに、操作表示部34の電源制御を本体10の電源制御とは別に(独立して)行うことができる。
次に、本実施形態に係る画像処理装置1において実現される機能について図4を参照して説明する。なお、図4に示す機能は、コントローラ100を実現する各ハードウェアによって実行されるソフトウェア・プログラムによって実現され、図3において説明したアプリ層101、サービス層102、OS層103のうち、いずれにおいて実現される構成であってもよい。
例えば、図4に示す構成によって実現される機能の全てをOS層103のソフトウェア・モジュールとして実装してもよい。また、図4に示す機能によって実現される機能を、アプリ層101のアプリケーション・ソフトウェアとして実装してもよい。
図4に示すように、画像処理装置1は、通信制御部201、インストール制御部202、更新判定情報取得部203、更新実行判定部204、バージョン情報記憶部205、本体側更新実行部206、外部端末更新制御部207、ソフトウェア記憶部208を含む。
通信制御部201は、コントローラ100に入出力される情報を制御する。通信制御部201は、例えば、画像処理装置1にダウンロードされた更新プログラムをインストール制御部202に送信する。
インストール制御部202は、画像処理装置1にダウンロードされた更新プログラムを更新判定情報取得部203および更新実行判定部204に送信する。このとき、インストール制御部202は、必要があれば、ダウンロードされた更新プログラムの解凍もしくは更新プログラムの暗号化を解除(復号化)して、RAM22bもしくはHDD35に展開し、更新判定情報取得部203に送信する。
更新判定情報取得部203は、インストール制御部202から更新プログラムを取得する更新プログラム取得部として機能し、更新プログラムに含まれる情報からヘッダ部の情報やバージョン情報リスト、API利用可能情報を取得する。これらの情報についての詳細は、後述する。
更新実行判定部204は、インストール制御部202から取得した更新プログラムに含まれる情報に基づいて、その更新プログラムが更新可能なプログラムであるか否かを判定する。また、更新実行判定部204は、更新判定情報取得部203からバージョン情報リストを取得して、インストール制御部202から取得した更新プログラムが更新可能なプログラムであるか否かを判定する構成であってもよい。
バージョン情報記憶部205は、更新判定情報取得部203が取得したバージョン情報を記憶する記憶領域であり、RAM22bやHDD35によって実現される。本体側更新実行部206は、更新実行判定部204により、インストール制御部202から取得した更新プログラムが、本体10において更新可能なプログラムであると判定された場合に、ソフトウェア記憶部208に記憶されているプログラムを、インストールされた更新プログラムを用いて書き換えることにより更新する。
外部端末更新制御部207は、更新実行判定部204により、インストール制御部202から取得した更新プログラムが、操作表示部34において更新可能なプログラムであると判定された場合に、ROM343に記憶されているプログラムを、インストールされた更新プログラムに書き換えることにより更新する。
ソフトウェア記憶部208は、本体10に実装されるプログラムを記憶する記憶領域であり、RAM22bやHDD35によって実現されるプログラム記憶部である。本実施形態に係る画像処理装置1は、このような構成により、画像処理装置1に搭載されている機能を実現するためのソフトウェアのプログラムを更新する。
ところで、図3で説明したように、ソフトウェア間の情報のやりとりは、ソフトウェアに実装されているAPIを利用して実現されている。また、ソフトウェアの開発キットであるSDKのバージョンによって、SDKを用いて作成されるソフトウェアにおいて利用可能なAPIの種類が異なる。
例えば、バージョンが1.00のSDKにおいては、API-α、API-βが利用可能であるが、バージョンが1.02のSDKにおいては、API-βの利用が抹消され、API-α、API-γが利用可能なAPIとなることがある。
従来の画像処理装置においては、図5に示すように、プリンタ、ファクシミリ、スキャナ、複写機としての機能を実現するプログラムを更新するために更新プログラムパッケージを用いられている。
例えば、画像処理装置に搭載されている各機能を実現するソフトウェア(本体OS、コピーApp、プリントApp、・・・)の更新プログラムをひとつにまとめ、さらに、これらの更新プログラムを作成したSDKのバージョンに関する情報(例えば、パッケージ情報に含まれるSDKバージョン情報)を含めてパッケージ化してソフトウェアの更新を行っている。
このようにすることによって、従来の画像処理装置においては、全て同じバージョンのSDKを用いて作成されたプログラムに更新されるため、更新されたプログラムには、そのバージョンで利用可能なAPIの実装およびAPIを実行するためのアクセス権限が与えられることとなる。したがって、更新プログラムパッケージを用いた場合には、APIの組み合わせを考慮することなくソフトウェア間の情報をやり取りすることができる。
図6は、従来の画像処理装置においてソフトウェアを更新する処理の流れを示すフローチャートである。更新プログラムパッケージが記憶された外部記憶媒体から、更新プログラムパッケージを画像処理装置にダウンロードすることにより、本処理が開始される。
画像処理装置においては、更新プログラムパッケージがダウンロードされると、更新プログラムパッケージのデータファイルを解凍し、解凍された更新プログラムパッケージはRAMに展開される(S601)。
画像処理装置は、更新プログラムパッケージに含まれるパッケージ情報(図5参照)に基づいて、更新プログラムパッケージがどのバージョンのものであるかを示すパッケージバージョン情報を取得する(S602)。
次に、画像処理装置においては、更新プログラムパッケージによって画像処理装置に実装されているプログラムの更新を行うことができるか否かが判定される(S603)。更新プログラムパッケージには、例えば、図8にしめすように、画像処理装置に実装されている機能を実現するためのプログラムが含まれている。図8は、従来の画像処理装置に実装されている機能のうち、コピー機能を実現するためのプログラムの情報構成を例示した図である。
図8に示すコピー機能更新プログラムは、ヘッダ部にベンダ情報、機種情報および機能バージョン情報、ボディに更新プログラムのソースコードであるプログラム情報を有して構成される。S603の処理において、画像処理装置では、ヘッダ部に記述されているベンダ情報または機能バージョン情報を参照して、プログラムの更新を行うことができるか否かが判定される。
このとき、画像処理装置においては、ベンダ情報を用いる例として、画像処理装置のベンダと更新プログラムのベンダが異なる場合に、プログラムの更新が実行できないと判定され(S603/NO)、画像処理装置のベンダと更新プログラムのベンダが同じである場合に、プログラムの更新を行うことが可能であると判定される(S603/YES)。
また、画像処理装置においては、機種情報を用いる例として、更新プログラムの機種情報が画像処理装置の機種と一致しない場合に、プログラムの更新が実行できないと判定され(S603/NO)、新プログラムの機種情報が画像処理装置の機種と一致する場合に、プログラムの更新を行うことが可能であると判定される(S603/YES)。
更新プログラムに含まれる機種情報は、例えば、予め画像処理装置の機種ごとにわりあてられている機種IDなどの識別子を用いてもよい。
なお、S603において、パッケージバージョン情報や更新プログラムパッケージに含まれるSDKのバージョン情報を画像処理装置の操作表示部に表示させ、操作表示部に対するユーザの操作に基づいてプログラムの更新を行うことができるか否かが判定される構成であってもよい。
S603でプログラムの更新が可能であると判定されると、操作表示部には図7に示すような、プログラム更新の実行をユーザが確認するために操作されるGUIとして更新実行確認画面が表示される(S604)。
図7の更新実行確認画面では、例えば、画像処理装置1の本体10のOSが、バージョン1.0Xから1.03に、コピー機能を実現するソフトウェアが1.0Xから1.03に更新されることが示されている。
操作表示部に表示された更新実行確認画面において、「はい」のボタンが操作されると、プログラムの更新を開始する信号が出力され(S605)、「いいえ」のボタンが操作されると、本処理は終了される。
S604の更新実行確認画面において「はい」が操作されたと仮定して、以後の処理ステップについて説明する。画像処理装置は、S602で取得したパッケージバージョン情報をRAMなどの不揮発性記憶媒体に記憶させる(S606)。
そして、画像処理装置は、ROMに記憶されている各ソフトウェアのプログラムを、S601で展開した更新プログラムパッケージに含まれる各ソフトウェアの更新プログラムに書き換えることにより、ソフトウェアの更新を行う(S607)。画像処理装置は、更新プログラムパッケージに含まれる全てのソフトウェアの更新を終えると(S608/YES)、本処理を終了させる。
以上説明したように、従来の画像処理装置においては、更新プログラムを作成したSDKのバージョンに関する情報を含めてパッケージ化してソフトウェアの更新が行われている。しかし、画像処理装置の性能や作業効率向上を目的として、特定のソフトウェアについて個別にプログラムの更新を行うことがある。このような場合、更新後の画像処理装置において、ソフトウェア間での情報のやりとりができるか否かを考慮する必要がある。
そこで、本実施形態に係る画像処理装置1においては、画像処理装置1に実装された機能を実現するためのソフトウェアを更新するための更新プログラムに、SDKのバージョンを識別可能な情報であるバージョン情報リストを含めるように構成する。
図9は、本実施形態に係る画像処理装置1に実装された機能を実現するためのソフトウェアを更新するための更新プログラムの情報構成を示す図である。図9に示す、画像処理装置1に実装されている機能XXのソフトウェアを更新するための更新プログラムは、ヘッダ部にベンダ情報、機種情報および機能バージョン情報、ボディに、SDKのバージョンを識別可能な情報であるバージョン情報リストおよび更新プログラムのソースコードであるプログラム情報を有して構成される。
図10は、本実施形態に係るバージョン情報リストの情報構成を示す図である。ここでは、図9に示した機能XXのソフトウェアを更新するための更新プログラムに、図10で示すバージョン情報リスト1.00が記述されていると仮定して説明を行う。
バージョン情報リスト1.00には、画像処理装置1に実装されているソフトウェアのバージョンを示すソフトウェアバージョン情報と、SDKのバージョンを示すSDKバージョン情報とが含まれている。
上述したように、SDKでは、バージョンごとに利用可能なAPIの種類が異なる。また、バージョンが異なるSDKでは、APIを実行するためのアクセス権限も異なることがある。そこで、本実施形態では、画像処理装置1に実装されているソフトウェアごとに、それぞれのソフトウェア間での情報のやり取りが可能なAPIが実装されているソフトウェアのバージョンの組み合わせを示す組み合わせ情報であるバージョン情報と、SDKバージョン情報とを含むデータリストを作成する。
例えば、データリスト001では、ソフトウェアバージョン情報として、画像処理装置1の本体10のOSのバージョンが1.00、コピー機能を実現するソフトウェアのバージョンが1.00、プリント機能を実現するソフトウェアのバージョンが1.00、ネットワーク機能を実現するソフトウェアのバージョンが1.00、・・・、であることを示す情報が、SDKバージョン情報として、SDKのバージョンが1.00であることを示す情報が含まれる。
また、データリスト002では、ソフトウェアバージョン情報として、画像処理装置1の本体10のOSのバージョンが1.00、コピー機能を実現するソフトウェアのバージョンが1.01、プリント機能を実現するソフトウェアのバージョンが1.00、ネットワーク機能を実現するソフトウェアのバージョンが1.01、・・・、であることを示す情報が、SDKバージョン情報として、SDKのバージョンが1.01であることを示す情報が含まれる。
さらに、データリスト003では、ソフトウェアバージョン情報として、画像処理装置1の本体10のOSのバージョンが1.01、コピー機能を実現するソフトウェアのバージョンが1.01、プリント機能を実現するソフトウェアのバージョンが1.01、ネットワーク機能を実現するソフトウェアのバージョンが1.02、・・・、であることを示す情報が、SDKバージョン情報として、SDKのバージョンが1.02であることを示す情報が含まれる。
そして、データリストを複数組み合わせたもの、すなわち、データリスト001からデータリスト003をバージョン情報リスト1.00として管理する。図9に示す画像処理装置1に実装されている機能XXのソフトウェアを更新するための更新プログラムにおいては、バージョン情報リスト1.00が記述されていると仮定しているが、例えば、他のバージョンのバージョン情報リストを含む構成であってもよい。
また、バージョン情報リストは、画像処理装置1に実装されているソフトウェアの更新プログラムを作成する際に、それぞれの更新プログラムにふくまれる情報であり、バージョンリストに含まれるデータリストの組み合わせが異なるものとなると、バージョン情報リストのバージョンも変化する。
例えば、バージョン情報リスト1.00は、データリスト001、データリスト002、データリスト003によって構成される一方で、バージョン情報リスト1.01は、データリスト002、データリスト003によって構成される情報であるとしてもよい。なお、画像処理装置1において、バージョン情報リストは、バージョン情報記憶部205に記憶される。
次に、本実施形態に係る画像処理装置1に実装されているソフトウェアを更新する処理の流れについて図11を参照して説明する。図11は、本実施形態に係る画像処理装置1においてソフトウェアを更新する処理の流れを示すフローチャートである。更新プログラムパッケージが記憶された外部記憶媒体から、更新プログラムパッケージを画像処理装置1にダウンロードすることにより、本処理が開始される。
通信制御部201を介して、画像処理装置1に更新プログラムがダウンロードされると、インストール制御部202は、更新プログラムのデータファイルを解凍し、解凍した更新プログラムをRAM22bに展開する(S1101)。更新判定情報取得部203は、更新プログラムに含まれる情報から、ヘッダ部の情報、および、バージョン情報リストを取得する(S1102)。
次に、更新実行判定部204は、更新判定情報取得部203が取得した情報から、更新プログラムによって画像処理装置1に実装されている機能XXのプログラムの更新を行うことができるか否かを判定する(S1103)。
図9に示す画像処理装置1の機能XXについての更新プログラムは、ヘッダ部にベンダ情報、機種情報および機能バージョン情報、ボディに、バージョン情報リスト、および、更新プログラムのソースコードであるプログラム情報を有して構成される。S1103の処理において、更新実行判定部204は、ヘッダ部に記述されているベンダ情報、機種情報、および、機能バージョン情報を参照して、プログラムの更新を行うことができるか否かを判定する。
このとき、更新実行判定部204は、ベンダ情報を用いる例として、画像処理装置1のベンダと更新プログラムのベンダが異なる場合に、プログラムの更新が実行できないと判定する(S1103/NO)。一方で、更新実行判定部204は、画像処理装置1のベンダと更新プログラムのベンダが同じである場合に、プログラムの更新を行うことが可能であると判定する(S1103/YES)。
また、更新実行判定部204は、機種情報を用いる例として、更新プログラムの機種情報が画像処理装置1の機種と一致しない場合に、プログラムの更新が実行できないと判定する(S1103/NO)。一方で、更新実行判定部204は、更新プログラムの機種情報が画像処理装置1の機種と一致する場合に、プログラムの更新を行うことが可能であると判定する(S1103/YES)。
更新プログラムに含まれる機種情報は、例えば、予め画像処理装置1の機種ごとにわりあてられている機種IDなどの識別子を用いてもよい。
S1103でプログラムの更新が可能であると判定されると、操作表示部34には図12に示すような、プログラム更新の実行をユーザが確認するために操作されるGUIとして更新実行確認画面が表示される(S1104)。
図12の更新実行確認画面では、例えば、画像処理装置1の本体10のOSが、バージョン1.0Xから1.03に、コピー機能を実現するソフトウェアが1.0Xから1.03に、SDKのバージョンが1.0Xから1.03に更新されることが示されている。
操作表示部34に表示された更新実行確認画面において、「はい」のボタンが操作されると、更新実行判定部204は、プログラムの更新を開始する信号が出力し(S1105)、「いいえ」のボタンが操作されると、本処理を終了する。
S1104の更新実行確認画面において「はい」が操作されたと仮定して、以後の処理ステップについて説明する。更新判定情報取得部203は、S1102で取得したバージョン情報リストをバージョン情報記憶部205に記憶させる(S1106)。
次に、更新実行判定部204は、バージョン情報記憶部205に記憶されているバージョン情報リストを参照して、そのバージョン情報リストに含まれるデータリストに示されるソフトウェアの組み合わせと、S1101で展開された更新プログラムを用いてソフトウェアを更新した後の画像処理装置1に実装されることとなるソフトウェアとの組み合わせを比較する(S1107)。
そして、更新実行判定部204は、S1101で展開された更新プログラムを用いてソフトウェアを更新した後の画像処理装置1に実装されることとなるソフトウェアの組み合わせが、S1106で記憶されたバージョン情報リストのデータリストに示されるソフトウェアの組み合わせに含まれない組み合わせである場合には(S1108/NO)、S1101で展開された更新プログラムを用いてソフトウェアを更新することなく、本処理を終了する。
一方で、S1101で展開された更新プログラムを用いてソフトウェアを更新した後の画像処理装置1に実装されることとなるソフトウェアの組み合わせが、S1106で記憶されたバージョン情報リストのデータリストに示されるソフトウェアの組み合わせに含まれる組み合わせである場合には(S1108/YES)、更新実行判定部204は、本体側更新実行部206に、ソフトウェア記憶部208に記憶されているソフトウェアのプログラムを、S1101で展開したソフトウェアの更新プログラムに書き換えさせて、ソフトウェアの更新を行い(S1109)、本処理を終了する。
なお、S1101で展開された更新プログラムが操作表示部34に実装されているソフトウェアの更新プログラムである場合、S1109の処理において、更新実行判定部204は、展開した更新プログラムを外部端末更新制御部207に転送し、外部端末更新制御部207に外部端末(ここでは、操作表示部34)に実装されているソフトウェアの更新を実行させ、本処理を終了する。
なお、S1106の処理において、更新プログラムに含まれているバージョン情報リストが、画像処理装置1に記憶されているバージョン情報リストよりも新しい場合にのみ、そのバージョン情報リストを不揮発性記憶媒体に記憶させる構成であってもよい。
また、S1109でソフトウェアの更新を行う際に、更新可能なソフトウェアと判定されたソフトウェアおよびそのバージョンに関する情報を操作表示部34に表示させる構成であってもよい。
図13は、本実施形態に係るバージョン情報記憶部205におけるバージョン情報リストを更新する処理の流れである。S1105の処理において、更新実行確認画面において、「はい」のボタンが操作されると、プログラムの更新を開始する信号が出力されると、更新実行判定部204は、更新プログラムに含まれているバージョン情報リストのバージョンと、バージョン情報記憶部205に記憶されている現状のバージョンとを比較する(S1301)。
更新実行判定部204は、バージョン情報記憶部205に記憶されているバージョン情報リストのバージョンよりも更新プログラムに含まれているバージョン情報リストのバージョンが新しいものであると判定した場合(S1302/YES)、更新プログラムに含まれるバージョン情報リストをバージョン情報記憶部205に送信する。
更新実行判定部204からバージョン情報記憶部更新プログラムに含まれているバージョン情報リストを受信すると、バージョン情報記憶部205は受信したバージョン情報リストを記憶し(S1303)、本処理を終了する。
一方で、更新実行判定部204は、バージョン情報記憶部205に記憶されているバージョン情報リストのバージョンよりも更新プログラムに含まれているバージョン情報リストのバージョンが新しいものではないと判定した場合(S1302/NO)、更新プログラムに含まれるバージョン情報リストをバージョン情報記憶部205に送信することなく本処理を終了する。
このように、本実施形態においては、画像処理装置1には、常に最新のバージョン情報リストが記憶され、記憶されたバージョン情報リストに基づいて画像処理装置1のソフトウェアが更新されることとなる。
したがって、SDKのバージョンアップによりAPIの仕様やAPIのアクセス権限に変更が生じた場合に、画像処理装置1がネットワークに接続されていない環境下であっても、適切なバージョンのソフトウェアを画像処理装置1にインストールすることができる。
ゆえに、APIが違うために画像処理装置1に実装されているソフトウェア間の情報のやりとりができないといった事態が生じることなく、画像処理装置1の動作保証性を高めてソフトウェアの更新を行うことができる。
また、図9のバージョン情報リストの代わりに、図14に示すようなAPI利用可能リストを更新プログラムのデータファイルに含める構成であってもよい。また、API利用可能リストは、図15に示すような情報によって構成される。
図15は、本実施形態に係るAPI利用可能リストの情報構成を示す図である。図15に示すように、画像処理装置1に実装されている機能XXのソフトウェアの更新プログラムに含まれるAPI利用可能リストには、API-α、API-β、API-γ、・・・、について、それぞれのAPIが利用可能なソフトウェアのバージョンが記述された情報が含まれる。
なお、本実施形態における「利用可能」とは、それぞれのソフトウェアがAPIの仕様を解釈することができ、APIのアクセス権限を有している状態であることを示す。
図15に示すAPI利用可能リストでは、組み合わせ情報として、API-αを利用可能なソフトウェアのバージョンが「本体OS:1.00」、「コピー機能:1.00」、「ネットワーク機能:1.00」、・・・、API-βを利用可能なソフトウェアのバージョンが「本体OS:1.00」、「プリント機能:1.00」、「ネットワーク機能:1.01」、・・・、API-γを利用可能なソフトウェアのバージョンが「コピー機能:1.00」、「プリント機能:1.00」、・・・、であることが記述されている。
そして、図16に示すように、画像処理装置1において、API利用可能リストを記憶する利用条件情報記憶部210をバージョン情報記憶部205の代わりに設けることにより、API利用可能リストに記述されている情報に基づいて画像処理装置1に実装された機能を実現するためのソフトウェアの更新を行う。
図17は、API利用可能リストを使用した場合における画像処理装置1のソフトウェアを更新する処理の流れを示すフローチャートである。なお、図11に示すフローチャートと同様の処理を行う処理ステップには同じ符号を付し、重複する説明を省略する。なお、図17のフローチャートにおいては、バージョン情報リストの代わりにAPI利用可能リストが含まれるものとする。
更新判定情報取得部203は、S1102で取得したAPI利用可能リストを利用条件情報記憶部209に記憶させる(S1701)。
次に、更新実行判定部204は、利用条件情報記憶部209に記憶されているAPI利用可能リストを参照して、S1701の時点において画像処理装置1に実装されているソフトウェアの構成を示す情報を取得する(S1801)。
次に更新実行判定部204は、API利用可能リストに含まれるそれぞれのAPIを利用可能なソフトウェアのバージョンに基づいて、S1701の時点において画像処理装置1に実装されているソフトウェアがそれぞれのAPIを利用可能であるかを判定する(S1802)。
図19は、本実施形態に係る利用可能API情報の情報構成を示す図である。例えば、コピー機能については、画像処理装置1に実装されているコピーApp101aのバージョンが1.01であったとする。
更新実行判定部204は、S1701の時点において画像処理装置1に実装されているソフトウェアのバージョンが、API利用可能リストに含まれるそれぞれのAPIを利用可能なソフトウェアのバージョンと同じ、もしくは、新しいバージョンであれば、S1701の時点において画像処理装置1に実装されているソフトウェアがそのAPIを利用可能であると判定し、TRUEをセットする。
一方で、更新実行判定部204は、S1701の時点において画像処理装置1に実装されているソフトウェアのバージョンが、API利用可能リストに含まれるそれぞれのAPIを利用可能なソフトウェアのバージョンよりも古い場合、および、そのAPIを使用できない場合には、S1701の時点において画像処理装置1に実装されているソフトウェアがそのAPIを利用可能ではないと判定し、FALSEをセットする。
このような場合、更新実行判定部204は、API-α、API-γについては、TRUEをセットする。一方で、コピーApp101aでは、API-βを利用できないため、更新実行判定部204は、API-βについては、FALSEをセットする。
更新実行判定部204は、S1802の判定処理を、S1701の時点において画像処理装置1に実装されている全てのソフトウェアについて実行する(S1803/YES)と、判定結果を利用可能API情報として生成し(S1804)、生成した利用可能API情報を利用条件情報記憶部209に転送する。したがって、更新実行判定部204は、利用可能API情報を生成する利用可能情報生成部として機能する。
このように、利用可能API情報には、複数のソフトウェア間における情報のやりとりを行うAPIと、このAPIを利用して情報を取得可能なソフトウェアとの組み合わせが記述される。
利用条件情報記憶部209は、更新実行判定部204から利用可能API情報を受信して記憶する(S1805)。図17に戻って説明を続ける。
次に、更新実行判定部204は、利用条件情報記憶部209に記憶されている利用可能API情報を参照して、その利用可能API情報に含まれるAPIを利用可能なソフトウェアの組み合わせと、S1101で展開された更新プログラムを用いてソフトウェアを更新した後の画像処理装置1に実装されることとなるソフトウェアとの組み合わせを比較する(S1703)。
そして、更新実行判定部204は、S1101で展開された更新プログラムを用いてソフトウェアを更新した後の画像処理装置1に実装されることとなるソフトウェアの組み合わせが、その利用可能API情報に含まれるAPIを利用可能なソフトウェアの組み合わせに含まれない組み合わせである場合には(S1704/NO)、S1101で展開された更新プログラムを用いてソフトウェアを更新することなく、本処理を終了する。
一方で、S1101で展開された更新プログラムを用いてソフトウェアを更新した後の画像処理装置1に実装されることとなるソフトウェアの組み合わせがその利用可能API情報に含まれるAPIを利用可能なソフトウェアの組み合わせに含まれる組み合わせである場合には(S1704/YES)、更新実行判定部204は、本体側更新実行部206に、ソフトウェア記憶部208に記憶されているソフトウェアのプログラムを、S1101で展開したソフトウェアの更新プログラムに書き換えさせて、ソフトウェアの更新を行い(S1705)、本処理を終了する。
なお、S1101で展開された更新プログラムが操作表示部34に実装されているソフトウェアの更新プログラムである場合、S1705の処理において、更新実行判定部204は、展開した更新プログラムを外部端末更新制御部207に転送し、外部端末更新制御部207に外部端末(ここでは、操作表示部34)に実装されているソフトウェアの更新を実行させ、本処理を終了する。
このように、本実施形態においては、画像処理装置1には、記憶された利用可能API情報に基づいて、画像処理装置1のソフトウェアが更新されることとなる。ゆえに、APIの仕様やAPIのアクセス権限に変更が生じた場合に、画像処理装置1がネットワークに接続されていない環境下であっても、適切なバージョンのソフトウェアを画像処理装置1にインストールすることができる。
本発明は、説明した実施形態に限定されるものではなく、その他の実施形態、追加、修正、削除など、当業者が想到することができる範囲内で変更することができ、いずれの態様においても本発明の作用や効果を奏する限り、本発明の範囲に含まれるものである。