(57)【要約】【課題】カスタマイズされたプログラムの状態を維持しつつ、一斉配信のプログラムのインストールを適切に行うことを目的とする。【解決手段】稼働データと、配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、個別データに記載されていないプログラムの一覧を配信対象データとし、配信対象データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、配信対象データに含まれるプログラムと、個別データに含まれるプログラムと、において依存関係がないと判断した場合、配信対象データに含まれるプログラムを画像処理装置に配信するプログラムに決定する。【選択図】図２
2011242891.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークを介して通信可能な複数の画像処理装置にプログラムを配信する配信装置であって、
前記画像処理装置に配信するプログラムを決定する決定手段と、
前記決定手段で決定されたプログラムを前記画像処理装置に配信する配信手段と、
を有し、
前記決定手段は、前記画像処理装置で稼働中の、前記配信装置から配信されたプログラムの一覧である稼働データと、前記画像処理装置に配信しようとしているプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記画像処理装置に個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧を配信対象データとし、前記配信対象データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記配信対象データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記配信対象データに含まれるプログラムを前記画像処理装置に配信するプログラムに決定する配信装置。
【請求項２】
前記決定手段は、プログラム間の依存関係を示す情報に基づいて、プログラム間のＡＰＩ読み出しにおける間接呼び出しも含めて解析し、呼び出し関係がある場合は、依存関係があると判断する請求項１記載の配信装置。
【請求項３】
前記決定手段は、プログラム間の依存関係を示す情報に基づいて、プログラム間のＡＰＩ読み出しにおける間接呼び出しも含めて解析し、間接呼び出し中に特定のインタフェースを経由している場合は、依存関係がないと判断する請求項１記載の配信装置。
【請求項４】
前記決定手段は、プログラム間の依存関係を示す情報に基づいて、プログラム間のＡＰＩ読み出しにおける間接呼び出しも含めて解析し、呼び出し関係がある場合であっても、依存関係が疎であると定義されている場合は、依存関係がないと判断する請求項１記載の配信装置。
【請求項５】
ネットワークを介して通信可能な配信装置から配信されたプログラムをインストールする画像処理装置であって、
前記配信装置から配信されたプログラムのうち、前記画像処理装置にインストールするプログラムを決定する決定手段と、
前記決定手段で決定されたプログラムを前記画像処理装置にインストールするインストール手段と、
を有し、
前記決定手段は、前記画像処理装置で稼働中の、前記配信装置から配信されたプログラムの一覧である稼働データと、前記配信装置から配信されたプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記画像処理装置に個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧をインストール候補データとして、前記インストール候補データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記インストール候補データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記インストール候補データに含まれるプログラムを前記画像処理装置にインストールするプログラムに決定する画像処理装置。
【請求項６】
ネットワークを介して通信可能な複数の画像処理装置にプログラムを配信する配信装置における配信方法であって、
前記画像処理装置に配信するプログラムを決定する決定ステップと、
前記決定ステップで決定されたプログラムを前記画像処理装置に配信する配信ステップと、
を含み、
前記決定ステップでは、前記画像処理装置で稼働中の、前記配信装置から配信されたプログラムの一覧である稼働データと、前記画像処理装置に配信しようとしているプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記画像処理装置に個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧を配信対象データとし、前記配信対象データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記配信対象データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記配信対象データに含まれるプログラムを前記画像処理装置に配信するプログラムに決定する配信方法。
【請求項７】
ネットワークを介して通信可能な配信装置から配信されたプログラムをインストールする画像処理装置におけるインストール方法であって、
前記配信装置から配信されたプログラムのうち、前記画像処理装置にインストールするプログラムを決定する決定ステップと、
前記決定ステップで決定されたプログラムを前記画像処理装置にインストールするインストールステップと、
を含み、
前記決定ステップでは、前記画像処理装置で稼働中の、前記配信装置から配信されたプログラムの一覧である稼働データと、前記配信装置から配信されたプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記画像処理装置に個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧をインストール候補データとして、前記インストール候補データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記インストール候補データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記インストール候補データに含まれるプログラムを前記画像処理装置にインストールするプログラムに決定するインストール方法。
【請求項８】
ネットワークを介して通信可能な複数の画像処理装置にプログラムを配信するコンピュータを、
前記画像処理装置に配信するプログラムを決定する決定手段と、
前記決定手段で決定されたプログラムを前記画像処理装置に配信する配信手段と、
として機能させる制御プログラムであって、
前記決定手段は、前記画像処理装置で稼働中の、前記コンピュータから配信されたプログラムの一覧である稼働データと、前記画像処理装置に配信しようとしているプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記画像処理装置に個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧を配信対象データとし、前記配信対象データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記配信対象データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記配信対象データに含まれるプログラムを前記画像処理装置に配信するプログラムに決定する制御プログラム。
【請求項９】
ネットワークを介して通信可能な配信装置から配信されたプログラムをインストールするコンピュータを、
前記配信装置から配信されたプログラムのうち、前記コンピュータにインストールするプログラムを決定する決定手段と、
前記決定手段で決定されたプログラムを前記コンピュータにインストールするインストール手段と、
して機能させる制御プログラムであって、
前記決定手段は、前記コンピュータで稼働中の、前記配信装置から配信されたプログラムの一覧である稼働データと、前記配信装置から配信されたプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記コンピュータに個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧をインストール候補データとして、前記インストール候補データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記インストール候補データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記インストール候補データに含まれるプログラムを前記コンピュータにインストールするプログラムに決定する制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、配信装置、画像処理装置、配信方法及びインストール方法に関する。
【背景技術】
【０００２】
従来デジタル複合機等の情報処理装置におけるファームウェアアップデートは、サービスマンが現地に出向き、客先で作業を行うのが一般的であった。近年効率的なファームアップデートのために配信サーバを利用して、インターネットを使った自動ダウンロード、自動インストール機能が運用され始めている。
また一方でデジタル複合機は、客先のニーズに合わせてカスタマイズを行ったファームウェアを運用しているケースがあり、配信サーバによって全世界で一律なアップデートを行おうとすると、カスタマイズファームはその対象から外されることが多い。なぜならカスタマイズされたスペシャルファームが上書きされたり、カスタマイズされたライブラリとの間に不整合を起こしたりする可能性があるからである。
自動配信の機能性は特許文献１のようにバージョニングされたファームウェアを利用して、機器で運用されているファームウェアより配信サーバのもつファームウェアの方が新しければ自動的にインストールするといった構成が提案されている。
また特許文献２のようにデータのダウンロードの際に、著作権情報にしたがってファームウェアをアップデートさせないという制御を行うといった形態も提案されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−７６９７９号公報
【特許文献２】特開平１０−２１１４４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、デジタル複合機のように客先でカスタマイズされたファームウェアを利用している場合は、単純にバージョンの新旧比較でアップデートを行えない。
カスタマイズされたスペシャルファームが上書きされたり、カスタマイズされたライブラリとの間に不整合を起こしたりする可能性があるためである。
また著作権情報等のファームそのものに埋められた情報では、客先の個別のデバイス上でどういった組み合わせやで運用されているのかといった状態を取得できないため、個別デバイス毎に異なったアップデートを行う運用が困難である。
【０００５】
そこで、本発明は、個別にカスタマイズされたプログラムが画像処理装置にインストールされている場合でも、カスタマイズされたプログラムの状態を維持しつつ、一斉配信のプログラムのインストールを適切に行うことを目的とする。
【課題を解決するための手段】
【０００６】
そこで、本発明は、ネットワークを介して通信可能な複数の画像処理装置にプログラムを配信する配信装置であって、前記画像処理装置に配信するプログラムを決定する決定手段と、前記決定手段で決定されたプログラムを前記画像処理装置に配信する配信手段と、を有し、前記決定手段は、前記画像処理装置で稼働中の、前記配信装置から配信されたプログラムの一覧である稼働データと、前記画像処理装置に配信しようとしているプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記画像処理装置に個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧を配信対象データとし、前記配信対象データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記配信対象データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記配信対象データに含まれるプログラムを前記画像処理装置に配信するプログラムに決定する。
また、本発明は、ネットワークを介して通信可能な配信装置から配信されたプログラムをインストールする画像処理装置であって、前記配信装置から配信されたプログラムのうち、前記画像処理装置にインストールするプログラムを決定する決定手段と、前記決定手段で決定されたプログラムを前記画像処理装置にインストールするインストール手段と、を有し、前記決定手段は、前記画像処理装置で稼働中の、前記配信装置から配信されたプログラムの一覧である稼働データと、前記配信装置から配信されたプログラムの一覧である配信データと、においてプログラムのバージョンに差分がある、新しいバージョンのプログラムで、かつ、前記画像処理装置に個別にインストールされたプログラムの一覧である個別データに記載されていないプログラムの一覧をインストール候補データとして、前記インストール候補データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析すると共に、前記個別データに含まれるプログラムのプログラム間の依存関係を示す情報に基づいて、プログラム間の呼び出しを解析し、前記インストール候補データに含まれるプログラムと、前記個別データに含まれるプログラムと、において依存関係がないと判断した前記インストール候補データに含まれるプログラムを前記画像処理装置にインストールするプログラムに決定する。
【発明の効果】
【０００７】
本発明によれば、個別にカスタマイズされたプログラムが画像処理装置にインストールされている場合でも、カスタマイズされたプログラムの状態を維持しつつ、一斉配信のプログラムのインストールを適切に行うことができる。
【図面の簡単な説明】
【０００８】
【図１】システムのシステム構成の一例を示す図である。
【図２】画像処理装置のソフトウェア構成の一例を示す図である。
【図３】画像処理装置のハードウェア構成の一例を示す図である。
【図４】配信サーバのハードウェア構成の一例を示す図である。
【図５】パッケージとパッケージリストとを説明するための図である。
【図６】配信サーバと、画像処理装置との間における配信パッケージの決定までの処理の概要を説明するための図である。
【図７】パッケージ間のＡＰＩ呼び出し関係に基づく依存関係の一例を示す図である。
【図８】パッケージ間の依存関係の有無を判断する処理の一例を示すフローチャートである。
【図９】実施の形態１の間接参照を含んだ依存関係の全列挙の処理の一例を示すフローチャートである。
【図１０】パッケージ間のＡＰＩ呼び出し関係に基づく依存関係で、システムインタフェースの概念を取り入れた場合の一例を示す図である。
【図１１】実施の形態２の間接参照を含んだ依存関係の全列挙の処理の一例を示すフローチャートである。
【発明を実施するための形態】
【０００９】
以下、本発明の実施形態について図面に基づいて説明する。
【００１０】
（第１の実施形態）
図１は、システムのシステム構成の一例を示す図である。
システムは、図１に示すように、配信サーバ１５３、広域ネットワーク１５２、及びユーザ先イントラネット環境１５１から構成される。ここで、広域ネットワーク１５２は、インターネットである。
配信サーバ１５３は、広域ネットワーク１５２を介してユーザ先イントラネット環境１５１の内部に配置された画像処理装置と通信を行う。つまり、配信サーバ１５３は、画像処理装置とネットワークを介して通信可能に接続されている。
【００１１】
ユーザ先イントラネット環境１５１は、画像処理装置１１０、１２０、１３０等の複数のネットワーク機器と、ネットワーク機器群が接続されているＬＡＮ１００と、から構成される。ユーザ先イントラネット環境１５１のＬＡＮ１００は、ルータ等を介して広域ネットワーク１５２に接続されている。ここで、上記ルータは、所謂防火壁（ｆｉｒｅｗａｌｌ）の機能を有する。即ち、ルータは、外部ネットワークからの攻撃からユーザサイトを守るためにパケットフィルタリング等を行う。また、ルータにおいては、アドレス管理上の理由等のために、ネットワークアドレス変換やネットワークポート変換が行われる場合がある。
ルータのこれらの機能のために、ユーザ先イントラネット環境１５１と外部ネットワークとの間の通信には制限が設けられている。即ち、多くの場合、いくつかの特定のプロトコルによる通信のみが可能とされている。例えば、内部から外部に向かって確立されるＨＴＴＰ接続は、一般に許可されている通信であり、これは一般的なウェブベースの技術に基づいてアプリケーションサービスの提供が有効であるとの理由の一つとなっている。
【００１２】
画像処理装置１１０は、画像の入出力と送受信及び各種の画像処理を行う複合機（ＭＦＰ；Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌ）である。画像処理装置１１０は、画像入力デバイスであるスキャナ１１３、画像出力デバイスであるプリンタ１１４、コントロールユニット（Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）１１１、及びユーザインタフェースである操作部１１２を備える。スキャナ１１３、プリンタ１１４、操作部１１２は、それぞれ、コントロールユニット１１１に接続され、コントロールユニット１１１からの命令によって制御される。コントロールユニット１１１は、ＬＡＮ１００に接続されている。またコントロールユニット１１１は、着脱可能なメモリメディア１１５等を接続し、データの読み書きを行うことが可能である。
各画像処理装置１２０、１３０は、画像処理装置１１０と同様の機器構成を有し、それらは同様にＬＡＮ１００に接続されている。画像処理装置１２０は、スキャナ１２３、プリンタ１２４、操作部１２２、及びスキャナ１２３、プリンタ１２４、操作部１２２のそれぞれを制御するコントロールユニット１２１を備える。また、画像処理装置１３０は、スキャナ１３３、プリンタ１３４、操作部１３２、及びスキャナ１３３、プリンタ１３４、操作部１３２を制御するコントロールユニット１３１を備える。
【００１３】
次に、画像処理装置１１０のソフトウェア構成について図２を参照しながら説明する。図２は、画像処理装置１１０のソフトウェア構成の一例を示す図である。ソフトウェアは、通常、ユーザが利用する際に動作する通常モードで動作するモジュール群２０１と、サービスマンモードやファームアップデートの際に動作するモードで動作するモジュール群２０２と、の構成を有する。両モードで共通に利用されるモジュールも存在する。
ソフトウェアは、互いにお互いの機能を利用しあう、モジュールという単位で構成され、モジュール間は、公開されたインタフェースを利用して通信を行う。２２０、２３０、２４０、２５０がインタフェースの概念である。詳細は後述する。
通常モードで起動された場合、システムの最下層のＯＳサービス２５１は、ＯＳインタフェース２５０を通して機能を提供する。ＯＳサービス２５１は、基本的なファイル操作、一般的なカーネルオブジェクトや、タスク制御、タスク間通信等のサービスを提供している。
また、システムで起きたイベントをロギングするＬｏｇモジュール２４１や画像処理装置に必要なコンフィギュレーションを保持、更新、通知するＣｏｎｆｉｇｕｒａｔｉｏｎモジュール２４２等が機能を提供する。これらはシステムサービス機能システムサービスインタフェース２４０を通してサービスを提供している。
【００１４】
更に、画像処理装置としての機能するデバイスを制御するモジュール群２３１〜２３５が機能を提供する。Ｎｅｔｗｏｒｋ２３１は、ネットワークデバイスを通してＬＡＮ１００を通した通信を行う。Ｉｍａｇｅ２３２は、画像処理チップを通して画像処理を行う。Ｐｒｉｎｔ２３３は、プリンタを、Ｓｃａｎ２３４は、スキャナを、Ｔｅｌ２３５は、ＦＡＸ通信等のための電話回線の制御をそれぞれ行う。これらデバイス制御モジュール群は、デバイス制御モジュールインタフェース２３０を通してその機能の提供を行う。
デバイス制御モジュール群を利用するのがＪｏｂＣｔｒｌ２２１である。これは画像処理装置内に投入される様々なジョブを解釈し、画像処理装置の持つ様々なデバイス機能を実行するモジュールである。ＪｏｂＣｔｒｌ２２１は、前述のデバイス制御モジュールインタフェース２３０を通してデバイスを動作させて、スキャン、プリント、送信、受信、画像変換等の動作を行う。ＪｏｂＣｔｒｌ２２１に対してＪｏｂを投入するために用意されているのが、ジョブ制御インタフェース２２０である。
システムの最上位に位置するのが、アプリケーションモジュール群２１１〜２１６である。Ｃｏｐｙ２１１、ＦＡＸ２１２、Ｓｃａｎ２１３、Ｓｅｎｄ２１４、Ｍｅｍｏｒｙ２１５、ＰＤＬ２１６等、それぞれのアプリは、操作部１１２上にユーザインタフェースを持ち、提供する機能に応じて、ユーザからのジョブ投入の命令を受ける。アプリケーション２１１〜２１６は、ユーザからの命令を受けて、ジョブ制御インタフェース２２０を通して、ジョブの投入、中断、変更、キャンセル等を行うことができる。
【００１５】
アップデートモードで起動された場合、画像処理装置１１０は、ＯＳサービス２５１、Ｃｏｎｆｉｇｕｒａｔｉｏｎモジュール２４２、Ｎｅｔｗｏｒｋ２３１の機能等を、それぞれの提供するインタフェースを通し、通常モードで起動された場合と同様に提供することができる。
アップデートモードで起動された場合にのみ起動されるモジュールとしてはＵｐｄａｔｅｒ２６１と、Ｉｍｉｇｒａｔｏｒ２６２と、がある。
Ｕｐｄａｔｅｒ２６１は、Ｎｅｔｗｏｒｋ２３１を利用して、配信サーバ１５３と通信を行って、ファームウェアのダウンロードを行い、ＯＳサービス２５１を利用してのファームウェアの保存やインストールを司る。またＩｍｉｇｒａｔｏｒ２６２は、インストール前後の設定や、新旧のデータの移行等を司る。
【００１６】
次に、画像処理装置１１０の構成について図３を参照しながら説明する。図３は、画像処理装置１１０のハードウェア構成の一例を示す図である。ここでは、各画像処理装置１１０、１２０、１３０の構成は、同じであるので、画像処理装置１１０の構成を説明するものとする。
画像処理装置１１０は、図３に示すように、装置全体を制御するコントロールユニット１１１を備える。コントロールユニット１１１は、画像入力デバイスであるスキャナ１１３や画像出力デバイスであるプリンタ１１４を接続し、これらを制御する一方、ＬＡＮや公衆回線と接続され、これらを介して画像情報やデバイス情報の入出力を行うものである。
コントロールユニット１１１は、ＣＰＵ３０１を有する。
ＣＰＵ３０１は、システムバス３０７を介して、ＲＡＭ３０２、ＲＯＭ３０３、ＨＤＤ（ハードディスク装置）３０４、イメージバスＩ／Ｆ３０５、操作部Ｉ／Ｆ３０６、ネットワークＩ／Ｆ３０８、及びモデム３０９と接続される。
ＲＡＭ３０２は、ＣＰＵ３０１の作業領域を提供するためのメモリであり、また、画像データを一時記憶するための画像メモリとしても使用される。ＲＯＭ３０３は、ブートＲＯＭであり、ＲＯＭ３０３には、システムのブートプログラムが格納されている。ＨＤＤ３０４には、システムソフトウェア、画像データ等が格納される。
【００１７】
操作部Ｉ／Ｆ３０６は、操作部１１２との間で入出力を行うためのインタフェースであり、操作部１１２に表示する画像データを操作部１１２に対して出力し、ユーザが操作部１１２を介して入力した情報を、ＣＰＵ３０１に伝送する等の役割を果たす。
ネットワークＩ／Ｆ３０８は、ＬＡＮと接続され、ＬＡＮに対して情報の入出力を行う。モデム３０９は、公衆回線と接続され、公衆回線に対して情報の入出力を行う。
イメージバスＩ／Ｆ３０５は、システムバス３０７と画像データを高速で転送する画像バス３１０とを接続し、データ構造を変換するバスブリッジである。
画像バス３１０には、ＲＩＰ（ラスタイメージプロセッサ）３１１、デバイスＩ／Ｆ３１２、スキャナ画像処理部３１３、プリンタ画像処理部３１４、画像回転部３１５、及び画像圧縮部３１６が接続されている。
ＲＩＰ３１１は、ＬＡＮから受信されたＰＤＬコードをビットマップイメージに展開する。デバイスＩ／Ｆ３１２は、スキャナ１１３及びプリンタ１１４とコントロールユニット１１１とを接続し、画像データの同期系／非同期系の変換を行う。スキャナ画像処理部３１３は、入力画像データに対し補正、加工、編集等を行う。プリンタ画像処理部３１４は、プリント出力画像データに対して、プリンタの補正、解像度変換等を行う。画像回転部３１５は、画像データの回転を行う。画像圧縮部３１６は、多値画像データに対してはＪＰＥＧ圧縮伸長処理を行い、２値画像データに対してはＪＢＩＧ、ＭＭＲ、ＭＨ等の圧縮伸長処理を行う。
外部ストレージＩ／Ｆ３１７は、メモリメディア１１５と接続され、メモリメディア１１５へ機器内のデータや画像を保存する、或いはメモリメディア１１５内のデータを機器内に書き込む際に利用される。
【００１８】
図４は、配信サーバ１５３のハードウェア構成の一例を示す図である。配信サーバ１５３のハードウェア構成は、一般的なコンピュータのハードウェア構成に相当するものとし、配信サーバ１５３には、一般的なコンピュータのハードウェア構成を適用できる。
ＣＰＵ１４０は、ＲＯＭ１４２のプログラムＲＯＭに記憶された、或いは外部メモリ１４９からＲＡＭ１４１にロードされたＯＳやアプリケーション等の制御プログラムを実行する。配信サーバ１５３の機能や後述するフローチャートの処理は、ＣＰＵ１４０が、この制御プログラムを実行することにより実現される。ＲＡＭ１４１は、ＣＰＵ１４０の主メモリ、ワークエリア等として機能する。
入力デバイスコントローラ１４３は、キーボードやマウス等の入力デバイス１４７からの入力を制御する。ディスプレイコントローラ１４４は、ディスプレイ１４８の表示を制御する。ディスクコントローラ１４５は、各種データを記憶する外部メモリ１４９（ハードディスク（ＨＤ）、フレキシブルディスク（ＦＤ）等）におけるデータアクセスを制御する。ＮＣ１４６は、ネットワーク１０２に接続された他の機器との通信制御処理を実行する。
【００１９】
次に、パッケージとパッケージリストとについて図５を用いて説明する。図５は、パッケージとパッケージリストとを説明するための図である。
Ｕｐｄａｔｅｒ２６１によって画像処理装置１１０に対してファームウェアをアップデートする際には、パッケージという構成単位で行われる。パッケージは、ライブラリ名称とバージョンとを保持している。４０２は、パッケージの構成イメージであるが、内部に複数のファイルを抱えた圧縮形式ファイルで実現されるものとする。パッケージ４０２には、内部には少なくともプログラム実体であるライブラリ４１１と、ライブラリの情報を記載したパッケージ情報ファイル４１２と、が保持されている。このパッケージ情報ファイル４１２には少なくとも、パッケージの名称４１３と、パッケージのバージョン４１４と、ライブラリの配置先４１５と、依存関係を示す情報（依存関係情報）４１６と、が記載される。名称は、そのパッケージを一意に特定できる文字列である。パッケージバージョンは、複数の数値で示される。図５の例ではパッケージバージョンは、２つの数字をドットつなぎで表現されており、上位がメジャーバージョン、下位がマイナーバージョンを表わしている。もちろんこの桁数は増やすことも減らすこともできる。ライブラリの配置先には、システムにインストールする際にライブラリを配置するフォルダの絶対パスが記載される。
【００２０】
依存関係情報４１６は、ＣＰＵ１４０が管理する情報になる。依存関係は、直接的に別のライブラリのインタフェースを利用している場合、そのパッケージ名とパッケージバージョンとが記載される。図５の例ではＡ−１．０パッケージは、Ｘ―１．０パッケージが公開するインタフェースと、Ｚ−２．０パッケージが公開するインタフェースと、を利用して動作する、ということが示されている。
またこれらのパッケージ情報をまとめて、システムで運用されるパッケージ群の管理を行っているのが、パッケージリスト４０１である。パッケージリスト４０１にはファームウェアを構成する全てのパッケージの名称とそのバージョンとが記載される。この組み合わせがシステムの安定動作を保証する組み合わせであり、稼働や配信のためのよりどころとされる。
ＣＰＵ１４０（より具体的には後述する配信アプリケーション）は、パッケージ情報ファイルを保持する。また、画像処理装置１１０のコントロールユニット１１１（より具体的には、Ｕｐｄａｔｅｒ２６１）は、パッケージリスト４０１の情報に従って、各バージョンのパッケージを機器内に配置し、パッケージ情報ファイルを保持する。
【００２１】
次に配信サーバと、画像処理装置との間における配信パッケージの決定までの処理の概要について図６を用いて説明する。図６は、配信サーバと、画像処理装置との間における配信パッケージの決定までの処理の概要を説明するための図である。なお、配信パッケージは、画像処理装置に配信するプログラムの一例である。
ここで、画像処理装置１１０と配信サーバ１５３とは、広域ネットワーク１５２を介して接続されている状態である。
画像処理装置１１０のファームウェアは、５１０のようになっている。５１１等で示されるのが、画像処理装置１１０内内のファームウェアを構成するライブラリ群である。これらはパッケージ毎に分割されて配信され、画像処理装置１１０にインストールされる。またライブラリ間の依存関係は５１０上では矢印で示されている。パッケージ情報ファイルに記載された依存関係がこれにあたる。また、この画像処理装置１１０内には個別インストールライブラリ５１２が適用されている。これはこの画像処理装置１１０に特別にインストールされたユーザ向けのカスタマイズファームであることを意味している。
画像処理装置１１０には配信サーバ１５３から配信された画像処理装置１１０で稼働中のパッケージを管理する稼働パッケージリスト５０１と画像処理装置１１０に個別にインストールされたパッケージを管理する個別パッケージリスト５０２とを保持している。Ｐ―９９．０は、個別インストールライブラリ５１２を指しており、一般的に配信されているパッケージのパッケージリストに対して、このパッケージが差分で画像処理装置１１０にカスタマイズインストールされていることを意味している。
【００２２】
この稼働パッケージリスト５０１と個別パッケージリスト５０２とは、配信サーバ１５３上にも同じものが配置可能であり、配信サーバ１５３と画像処理装置とで常に同期をとっていてもよい。また、アップデート時にのみ広域ネットワーク１５２を通して、配信サーバ１５３と画像処理装置とで稼働パッケージリスト５０１と個別パッケージリスト５０２とを同期することも可能である。どちらであっても本実施形態では、アップデートのためのパッケージ配信時には配信サーバ１５３上に稼働パッケージリスト５０１と個別パッケージリスト５０２とが存在することが必要である。
配信サーバ１５３には、配信パッケージを決定する配信アプリケーション５２１が配置される。更に配信サーバ１５３には、配信対象のパッケージ群が保持されているパッケージリポジトリ５２０や、配信しようとする新しいパッケージバージョンが記載された配信パッケージリスト５０３も配置される。
配信アプリケーション５２１は、稼働パッケージリスト５０１と個別パッケージリスト５０２と配信パッケージリスト５０３とを受け取ると、新規の稼働パッケージリスト５０４と配信対象パッケージリスト５０５とを生成する。ここで生成された配信対象パッケージリスト５０５に記載されたパッケージが、パッケージリポジトリ５２０から取得され、配信サーバ１５３によって画像処理装置に配信されることになる。配信アプリケーション５２１における処理の詳細については後述する。
なお、リストはデータの一覧の一例である。稼働パッケージリスト５０１は、稼働データの一例である。個別パッケージリスト５０２は、個別データの一例である。配信パッケージリスト５０３は、配信データの一例である。配信対象パッケージリスト５０５は、配信対象データの一例である。
【００２３】
次にパッケージの依存関係と、依存関係の有無の判断とについて図７を用いて説明する。図７は、パッケージ間のＡＰＩ呼び出し関係に基づく依存関係の一例を示す図である。各パッケージの中に存在するライブラリは、一般的に別のパッケージのライブラリの持つＡＰＩを利用する。図７では、その呼び出し関係を矢印で表現している。
図７において、Ｐｋｇ−Ｐ６０１は、Ｐｋｇ−Ａ６１０とＰｋｇ−Ｂ６１１とが提供するＡＰＩをコールするという実装を持っているという意味であり、このことはＰｋｇ−Ｐのパッケージ情報ファイル４１２に記載された、依存関係情報４１６に記載されている。
逆にＰｋｇ−Ａ６１０とＰｋｇ−Ｂ６１１とについてはＰｋｇ−Ｐ６０１から呼びだされているが、Ｐｋｇ−Ａ６１０とＰｋｇ−Ｂ６１１とがＰｋｇ−Ｐ６０１に依存するという関係ではない。したがってＰｋｇ−Ａ６１０やＰｋｇ−Ｂ６１１の依存関係情報４１６にはＰｋｇ−Ｐ６０１は記載されない。
同様に、Ｐｋｇ−Ｑ６０２は、Ｐｋｇ−Ｘ６２１の提供ライブラリとＰｋｇ−Ｙ６２２の提供ライブラリとを利用している。
更にＰｋｇ−Ｂ６１１は、Ｐｋｇ−Ｘ６２１を利用しているため、結果としてＰｋｇ−Ｐ６０１は、Ｐｋｇ−Ｘ６２１と間接的に依存関係を持っている間接呼びだしを持つ関係である。
図７では模式的にツリー構造で依存関係が表現されているが、これは、配信アプリケーション５２１が、各パッケージが持つパッケージ情報ファイル４１２に記載された依存関係情報４１６を順次走査していくことで導き出すことができる。依存関係情報を順次走査する処理は、依存関係情報を解析する処理の一例である。
【００２４】
次に配信アプリケーション５２１が、配信対象のパッケージを決めるために、パッケージ間の依存関係の有無を判断する処理について図８と図９とを用いて説明する。
図８は、パッケージ間の依存関係の有無を判断する処理の一例を示すフローチャートである。
Ｓ７０１で配信アプリケーション５２１は、比較する２つのパッケージを確定する。比較対象の１つは個別パッケージリスト５０２に記載されているパッケージである。１つは稼働パッケージリスト５０１と配信パッケージリスト５０３との間においてバージョン差分があり、新しいバージョンのパッケージで、かつ、個別パッケージリスト５０２に記載されていないパッケージである。もう一つは、配信候補パッケージである。
Ｓ７０２で配信アプリケーション５２１は、Ｐ（個別パッケージ）を起点にして、パッケージの参照関係を示すパッケージ情報ファイル４１２の依存関係情報４１６の情報を順次走査して、間接参照を含んだ依存パッケージを全列挙する。そしてＳ７０３おいて配信アプリケーション５２１は、その列挙した中にＱ（配信対象パッケージ）が存在するかどうかを確認する。存在すれば配信アプリケーション５２１は、Ｓ７０７へと進み、依存関係ありと判断する。存在しなければ配信アプリケーション５２１は、Ｓ７０４に進む。
Ｓ７０４では配信アプリケーション５２１は、Ｓ７０２とは逆に、Ｑを起点にして依存関係をたどり、関連パッケージを全列挙する。列挙後、配信アプリケーション５２１は、Ｓ７０５に進み、その中にＰが存在するかどうかを確認する。Ｐが存在すれば配信アプリケーション５２１は、Ｓ７０７へ進み、依存関係をありと判断する。Ｐが存在しなければ配信アプリケーション５２１は、Ｓ７０６へと進み、この２つのパッケージ間には依存関係がないと判断する。
【００２５】
間接参照を含んだ依存関係の全列挙の処理のより具体的な処理を図９に示す。
図９は、実施の形態１の間接参照を含んだ依存関係の全列挙の処理の一例を示すフローチャートである。
Ｓ８０１において配信アプリケーション５２１は、起点となるパッケージの依存情報を、依存関係情報４１６から確認する。Ｓ８０２において配信アプリケーション５２１は、そこに依存関係が記載されていなければ、列挙する処理を終了する。
依存関係が１つ以上記載されていれば、Ｓ８０３にて、配信アプリケーション５２１は、パッケージを列挙する。更にＳ８０４において、配信アプリケーション５２１は、列挙した全パーケージに対して繰り返し処理を行う。この繰り返し処理では配信アプリケーション５２１は、関連パッケージの列挙の自身のルーチンを再帰的にコールする。これにより依存関係を持たないプリミティブなＡＰＩのみを利用した実装のみのパッケージに至るまでの全ての呼び出しの間接参照を全列挙することができる。
このフローチャートは、２つのパッケージ間の依存関係の有無についての確認を行うロジックである。配信アプリケーション５２１は、１つの配信予定のパッケージに対して、個別運用されている全てのパッケージについてパッケージの間で依存関係有無の判断を行う。そして、配信アプリケーション５２１は、全ての個別運用パッケージと依存関係なしと判断した場合、その配信パッケージを配信可能であると判断する。
配信アプリケーション５２１は、依存なしと判断した配信可能パッケージのみを配信対象パッケージリスト５０５に記載する。配信サーバ１５３は、配信対象パッケージリスト５０５を基にパッケージを配信する。そして、画像処理装置１１０が配信されたパッケージを受信する。そして、画像処理装置１１０内のＵｐｄａｔｅｒ２６１が配信されたファームウェアをアップデートする。
【００２６】
（第２の実施形態）
画像処理装置１１０のシステム内のライブラリは、図２に示すように、細かなライブラリ毎のインタフェースではなく、機能の単位ごとの大きなインタフェース（２２０、２３０、２４０、２５０）が存在していることが多い。インタフェースを切れ目としてアプリ層、システム層、ＯＳ層等、機能のレイヤを切り分けて、その上下で独立したモジュールとして画像処理装置１１０にモジュールを実装し、機能させることができる。
これに関して図１０を用いて説明する。図１０は、パッケージ間のＡＰＩ呼び出し関係に基づく依存関係で、システムインタフェースの概念を取り入れた場合の一例を示す図である。
第１の実施形態では、配信アプリケーション５２１は、間接参照を含めたＡＰＩの呼び出し関係のみで、モジュール間の依存関係の有無を判断していた。したがって図１０のような依存関係を持っている場合、Ｐｋｇ−Ｐ９０１とＰｋｇ−Ｑ９０２とは間接的な呼び出し関係があるため、依存関係ありと判断される。
ここで間接参照の途中に存在するＰｋｇ−Ｓ９０３を通した呼び出し関係になっていることに着目する。Ｐｋｇ−Ｓ９０３が、システムとしての大きなインタフェース、例えば２２０、２３０、２４０、２５０等に該当するような位置づけのインタフェースの場合を考える。このインタフェースの呼び出しにおいて、配信アプリケーション５２１は、呼び出し元と呼び出し先とはアプリとシステム等、かなり関係が疎な立場であると判断することができる。
【００２７】
次に図１１を用いて第２の実施形態における依存パッケージの全列挙の処理について説明する。図１１は、実施の形態２の間接参照を含んだ依存関係の全列挙の処理の一例を示すフローチャートである。
Ｓ１００１において、配信アプリケーション５２１は、起点となるパッケージの依存情報を、依存関係情報４１６から確認する。Ｓ１００２において、配信アプリケーション５２１は、そこに依存関係が記載されていなければ、列挙する処理を終了する。
依存関係が１つ以上記載されていれば、Ｓ１００３にて、配信アプリケーション５２１は、パッケージを列挙する。更にＳ１００４で配信アプリケーション５２１は、列挙された全パーケージに対して繰り返し処理を行う。
この中のＳ１００５において、配信アプリケーション５２１は、対象のパッケージがＰｋｇ−Ｓ９０３のような特定のインタフェースの一例であるシステムインタフェースか否かを判断する。システムインタフェースであればそれ以下の階層の列挙を行わないため、配信アプリケーション５２１は、その時点で図１１に示す処理を終了する。システムインタフェースでなければ、配信アプリケーション５２１は、第１の実施形態同様にＳ１００６で再帰的に自身のルーチンをコールする。
これにより依存関係を持たないプリミティブなＡＰＩのみを利用した実装のみのパッケージに至るまでの全ての呼び出しの間接参照を全列挙する一方、システムインタフェースを超えた（経由した）先のパッケージは列挙されないことになる。
なお、Ｓ１００５で判断の基準になるシステムインタフェースか否かの判断材料としては、例えば、予め特定のパッケージに対して設計者によって情報が付与された定義テーブルをパッケージリストと共に別ファイルとして配信サーバ１５３に設定する。別の方法としては、Ｐｋｇ−Ｓ９０３のパッケージ情報ファイル４１２等にシステムインタフェースである旨を記載する等の方法がある。
【００２８】
（第３の実施形態）
本実施形態の配信アプリケーション５２１は、パッケージ間（プログラム間）のＡＰＩ読み出しにおける間接呼び出しも含めて順次走査し、呼び出し関係がある場合であっても、依存関係が疎であると定義されている場合は、依存関係がないと判断する。例えば、配信アプリケーション５２１は、開発者等が、パッケージ情報ファイル４１２等に設定した依存関係か疎か否かを示す情報に基づいて、依存関係が疎か否かを判断する。
【００２９】
（第４の実施形態）
上述した実施形態では、配信サーバ１５３が、図８や図９又は図１１に示される処理を実行した。しかしながら、画像処理装置１１０が、依存パッケージの全列挙の処理等を実行するようにしてもよい。
例えば、本実施形態の配信サーバ１５３は、配信パッケージリスト５０３を画像処理装置に配信する。画像処理装置は、図６の稼働パッケージリスト５０１と個別パッケージリスト５０２とを保持している。したがって、画像処理装置は、配信サーバ１５３より配信パッケージリスト５０３を受け取ると、図８や図９又は図１１に示される処理を実行し、図６の５０４や５０５に相当するリストを生成する。そして、画像処理装置は、５０５に相当するリストに含まれるパッケージ（又はプログラム）を自装置にインストールするようにしてもよい。なお、本実施形態の場合、５０５は、例えば、インストール候補リスト等の名称となる。なお、インストール候補リストは、インストール候補データの一例である。
【００３０】
（その他の実施形態）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【００３１】
以上、上述した各実施形態によれば、画像処理装置は、一括で行うアップデートのサービスを受けつつ、カスタマイズされた状態を保存し続けられる。
また画像処理装置を利用するユーザには安定したファームウェアを利用してもらえる一方で、配信側では個別対応のファームを意識してアップデートを切り分けるような処理とコストとを削減することができる。
したがって、個別にカスタマイズされたプログラムが画像処理装置にインストールされている場合でも、カスタマイズされたプログラムの状態を維持しつつ、一斉配信のプログラムのインストールを適切に行うことができる。
【００３２】
以上、本発明の好ましい実施形態について詳述したが、本発明は係る特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図１】
2011242891.tif 000003
【図２】
2011242891.tif 000004
【図３】
2011242891.tif 000005
【図４】
2011242891.tif 000006
【図５】
2011242891.tif 000007
【図６】
2011242891.tif 000008
【図７】
2011242891.tif 000009
【図８】
2011242891.tif 000010
【図９】
2011242891.tif 000011
【図１０】
2011242891.tif 000012
【図１１】
2011242891.tif 000013