(57)【特許請求の範囲】
【請求項１】
プログラムを分割した要素である複数のソフトウェアを記憶する第１の記憶手段と、
前記第１の記憶手段に記憶された前記複数のソフトウェアから、更新が行われるソフトウェアを識別する識別情報を入力する入力処理手段と、
前記識別情報で識別される前記ソフトウェア単位で変更が許可されているか否かを示す認証情報を記憶する第２の記憶手段と、
認証を行う主体が示された設定情報を記憶する第３の記憶手段と、
自装置の機種を示す機種情報を取得する機種取得手段と、
前記入力処理手段により入力された前記識別情報で識別されるソフトウェアに対して、前記設定情報に示された認証を行う主体で、前記機種情報に対応する、前記認証情報を用いて更新を許可するか否かを認証する認証手段と、
前記認証手段により更新を許可すると認証された場合に、更新が許可された前記識別情報で識別されるソフトウェア単位で更新する制御手段と、
を備えたことを特徴とする画像処理装置。
【請求項２】
前記入力処理手段は、さらに、前記ソフトウェアを構成するサブモジュールを識別する前記識別情報を入力し、
前記認証手段は、前記入力処理手段により入力された前記識別情報で識別されるサブモジュールに対して、前記設定情報に示された認証を行う主体で、前記機種情報に対応する、前記認証情報を用いて更新を許可するか否かを認証し、
前記制御手段は、さらに、サブモジュール単位で更新すること、
を特徴とする請求項１に記載の画像処理装置。
【請求項３】
更新の対象となる前記ソフトウェア単位の更新データを取得する取得手段を、さらに備え、
前記制御手段は、前記取得手段により取得された更新データを用いて、前記ソフトウェア単位で更新すること、
を特徴とする請求項１に記載の画像処理装置。
【請求項４】
前記認証手段が認証に用いる前記認証情報は、個人情報を使用するソフトウェアに対して更新を許可しないことを示す情報が含まれていること、
を特徴とする請求項１乃至３のいずれか１つに記載の画像処理装置。
【請求項５】
前記入力処理手段は、ネットワークを介して接続された情報処理装置から、当該情報処理装置が更新する前記ソフトウェアを識別する識別情報を入力すること、
を特徴とする請求項１乃至４のいずれか１つに記載の画像処理装置。
【請求項６】
画像処理装置で実行される情報処理方法であって、
前記画像処理装置は、
プログラムを分割した要素である複数のソフトウェアを記憶する第１の記憶手段と、
識別情報で識別される前記ソフトウェア単位で変更が許可されているか否かを示す認証情報を記憶する第２の記憶手段と、
認証を行う主体が示された設定情報を記憶する第３の記憶手段と、を備え、
入力処理手段が、前記第１の記憶手段に記憶された前記複数のソフトウェアから、更新が行われるソフトウェアを識別する識別情報を入力する入力処理ステップと、
機種取得手段が、前記画像処理装置の機種を示す機種情報を取得する機種取得ステップと、
認証手段が、前記入力処理ステップにより入力された前記識別情報で識別されるソフトウェアに対して、前記設定情報に示された認証を行う主体で、前記機種情報に対応する、前記認証情報を用いて更新を許可するか否かを認証する認証ステップと、
制御手段が、前記認証ステップにより更新を許可すると認証された場合に、更新が許可された前記識別情報で識別されるソフトウェア単位で更新する制御ステップと、
を有することを特徴とする情報処理方法。
【請求項７】
プログラムを分割した要素である複数のソフトウェアを記憶する第１の記憶手段と、
識別情報で識別される前記ソフトウェア単位で変更が許可されているか否かを示す認証情報を記憶する第２の記憶手段と、
認証を行う主体が示された設定情報を記憶する第３の記憶手段と、
を備えたコンピュータに対して、
前記第１の記憶手段に記憶された前記複数のソフトウェアから、更新が行われるソフトウェアを識別する識別情報を入力する入力処理ステップと、
前記コンピュータの機種を示す機種情報を取得する機種取得ステップと、
前記入力処理ステップにより入力された前記識別情報で識別されるソフトウェアに対して、前記設定情報に示された認証を行う主体で、前記機種情報に対応する、前記認証情報を用いて更新を許可するか否かを認証する認証ステップと、
前記認証ステップにより更新を許可すると認証された場合に、更新が許可された前記識別情報で識別されるソフトウェア単位で更新する制御ステップと、
を実行させるための情報処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、モジュール単位でカスタマイズを行う画像処理装置、情報処理方法及び情報処理プログラムに関するに関するものである。
【背景技術】
【０００２】
従来、複合機（ＭＦＰ）上には、様々なアプリケーションが搭載されている。そして、近年、複合機上に搭載されるソフトウェアとしては、アプリケーション等ソフトウェアの構成単位である処理モジュールから、より細かい単位へと移行し、利用者の要求に応じてより柔軟なサービスの提供が可能となっている。
【０００３】
また、複合機（ＭＦＰ）はネットワークに接続されているため、ネットワークを介して接続されたＰＣからのソフトウェアのカスタマイズが可能となる。これにより、利用者の要求に応じたカスタマイズが容易となり、柔軟なサービスの提供が可能となった。
【０００４】
しかしながら、従来は、複合機に搭載されたソフトウェアのカスタマイズは、特定の管理者に限定されていた。このため、利用者個人で、複合機に搭載されているソフトウェアのカスタマイズを行うことはできなかった。
【０００５】
仮に、各利用者にソフトウェアカスタマイズを認めた場合、利用者はソフトウェアを使用目的に応じてカスタマイズすることで、柔軟に変更することが可能となる。つまり、アプリケーションのカスタマイズを、特定の管理者に限定することは、必ずしも望ましいものとではないといえる。
【０００６】
そこで、各利用者にソフトウェアカスタマイズを可能とするためには、複合機における認証が必要となる。特許文献１には、利用者毎に認証を行う技術が記載されている。当該技術を用いることで、利用者毎に認証が可能となる。
【０００７】
【特許文献１】特開２００４−５４０８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に記載された技術では、利用者毎の認証に制限され、カスタマイズの対象となるソフトウェア単位で、認証を行う技術ではない。
【０００９】
つまり、複合機に搭載されたソフトウェアには、複合機に蓄積された重要データや、個人情報を含む機密情報を使用するソフトウェアもある。であれば、これら重要データや機密情報の漏洩を防止するためには、利用者単位で認証を行うのではなく、ソフトウェア単位でカスタマイズを許容するか否か設定する必要がある。
【００１０】
本発明は、上記に鑑みてなされたものであって、カスタマイズの対象となるソフトウェア単位で認証を行うことで、利用者の利便性と機密性の両立を図る画像処理装置、情報処理方法及び情報処理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１１】
上述した課題を解決し、目的を達成するために、請求項１にかかる発明は、プログラムを分割した要素である複数のソフトウェアを記憶する第１の記憶手段と、前記第１の記憶手段に記憶された前記複数のソフトウェアから、更新が行われるソフトウェアを識別する識別情報を入力する入力処理手段と、前記識別情報で識別される前記ソフトウェア単位で変更が許可されているか否かを示す認証情報を記憶する第２の記憶手段と、認証を行う主体が示された設定情報を記憶する第３の記憶手段と、自装置の機種を示す機種情報を取得する機種取得手段と、前記入力処理手段により入力された前記識別情報で識別されるソフトウェアに対して、前記設定情報に示された認証を行う主体で、前記機種情報に対応する、前記認証情報を用いて更新を許可するか否かを認証する認証手段と、前記認証手段により更新を許可すると認証された場合に、更新が許可された前記識別情報で識別されるソフトウェア単位で更新する制御手段と、を備えたことを特徴とする。
【００１４】
また、請求項２にかかる発明は、請求項１にかかる発明において、前記入力処理手段は、さらに、前記ソフトウェアを分割したサブモジュールを識別する前記識別情報を入力し、前記認証手段は、前記認証情報に基づいて、前記識別情報で識別される前記サブモジュールに対して、更新を許可するか否かを認証し、前記制御手段は、さらに、サブモジュール単位で更新すること、を特徴とする。
【００１５】
また、請求項３にかかる発明は、請求項１にかかる発明において、更新の対象となる前記ソフトウェア単位の更新データを取得する取得手段を、さらに備え、前記制御手段は、前記取得手段により取得された更新データを用いて、前記ソフトウェア単位で更新すること、を特徴とする。
【００１６】
また、請求項４にかかる発明は、請求項１乃至３のいずれか１つにかかる発明において、前記認証手段が認証に用いる前記認証情報は、個人情報を使用するソフトウェアに対して更新を許可しないことを示す情報が含まれていること、を特徴とする。
【００１７】
また、請求項５にかかる発明は、請求項１乃至４のいずれか１つにかかる発明において、前記入力処理手段は、ネットワークを介して接続された情報処理装置から、当該情報処理装置が更新する前記ソフトウェアを識別する識別情報を入力すること、を特徴とする。
【００１８】
また、請求項６にかかる発明は、画像処理装置で実行される情報処理方法であって、前記画像処理装置は、プログラムを分割した要素である複数のソフトウェアを記憶する第１の記憶手段と、識別情報で識別される前記ソフトウェア単位で変更が許可されているか否かを示す認証情報を記憶する第２の記憶手段と、認証を行う主体が示された設定情報を記憶する第３の記憶手段と、を備え、入力処理手段が、前記第１の記憶手段に記憶された前記複数のソフトウェアから、更新が行われるソフトウェアを識別する識別情報を入力する入力処理ステップと、機種取得手段が、前記画像処理装置の機種を示す機種情報を取得する機種取得ステップと、認証手段が、前記入力処理ステップにより入力された前記識別情報で識別されるソフトウェアに対して、前記設定情報に示された認証を行う主体で、前記機種情報に対応する、前記認証情報を用いて更新を許可するか否かを認証する認証ステップと、制御手段が、前記認証ステップにより更新を許可すると認証された場合に、更新が許可された前記識別情報で識別されるソフトウェア単位で更新する制御ステップと、を有することを特徴とする。
【００１９】
また、請求項７にかかる発明は、プログラムを分割した要素である複数のソフトウェアを記憶する第１の記憶手段と、識別情報で識別される前記ソフトウェア単位で変更が許可されているか否かを示す認証情報を記憶する第２の記憶手段と、認証を行う主体が示された設定情報を記憶する第３の記憶手段と、を備えたコンピュータに対して、前記第１の記憶手段に記憶された前記複数のソフトウェアから、更新が行われるソフトウェアを識別する識別情報を入力する入力処理ステップと、前記コンピュータの機種を示す機種情報を取得する機種取得ステップと、前記入力処理ステップにより入力された前記識別情報で識別されるソフトウェアに対して、前記設定情報に示された認証を行う主体で、前記機種情報に対応する、前記認証情報を用いて更新を許可するか否かを認証する認証ステップと、前記認証ステップにより更新を許可すると認証された場合に、更新が許可された前記識別情報で識別されるソフトウェア単位で更新する制御ステップと、を実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、プログラムを分割した要素であるソフトウェア単位で更新可能か否かの制御を行うことが可能になるので、セキュリティを向上できるという効果を奏する。
【発明を実施するための最良の形態】
【００２１】
以下に添付図面を参照して、この発明にかかる画像処理装置を適用した複合機の最良な実施の形態を詳細に説明する。なお、以下に示す実施の形態は、画像処理装置を複合機に制限するものではなく、さまざまな画像処理装置に適用することができる。
【００２２】
以下に示す実施の形態は、コピー機能、ファクシミリ（ＦＡＸ）機能、プリント機能、スキャナ機能及び入力画像（スキャナ機能による読み取り原稿画像やプリンタあるいはＦＡＸ機能により入力された画像）を配信する機能等を複合したいわゆるＭＦＰ（Multi  Function  Peripheral）と称される複合機１００に適用した例を示す。
【００２３】
複合機１００における、モジュール又はサブモジュールの認証手法として２つの手法がある。第１の手法としては、認証処理を複合機１００が実行するローカル認証手法とする。第２に手法としては、認証処理を、複合機１００とネットワークを介して接続されたＮＴサーバやＬＤＡＰサーバ等の「認証サーバ」に実行させるリモート認証手法とする。そして、本実施の形態では、ローカル認証手法について説明する。
【００２４】
まず、複合機１００の全体構成について説明する。図１は、第１の実施の形態にかかる複合機１００の全体構成を示すブロック図である。
【００２５】
本図に示すように、複合機１００は、白黒ラインプリンタ（B&W  LP）１０１と、カラーラインプリンタ（Color  LP）１０２と、ＨＤＤ１０３と、ネットワークＩ／Ｆ１０５と、ＳＤＲＡＭ１０６と、スキャナ、ファクシミリ、メモリなどのその他ハードウェアリソース１０４と、ソフトウェア群１１０とを有するように構成される。また、ソフトウェア群１１０は、プラットフォーム１２０と、アプリケーション１５０とを有するように構成される。
【００２６】
プラットフォーム１２０は、アプリケーション１５０からの処理要求を解釈してハードウェア資源の獲得要求を発生させる各種コントロールサービスと、１つ以上のハードウェア資源の管理を行って各種コントロールサービスからの獲得要求を調停するシステムリソースマネージャ（以下、ＳＲＭという）１２３と、オペレーティングシステム（以下、ＯＳという）１２１とを有するように構成されている。
【００２７】
コントロールサービスは、システムコントロールサービス（以下、ＳＣＳという）１２２、エンジンコントロールサービス（以下、ＥＣＳという）１２４、メモリコントロールサービス（以下、ＭＣＳという）１２５、オペレーションパネルコントロールサービス（以下、ＯＣＳという）１２６、ファックスコントロールサービス（以下、ＦＣＳという）１２７、ＮＣＳ（ネットワークコントロールサービス）１２８、ＵＣＳ（ユーザ情報管理サービス）１２９、ＣＣＳ（認証コントロールサービス）１３０など１つ以上のサービスモジュールを有するように構成されている。
【００２８】
なお、プラットフォーム１２０は予め定義されている関数によりアプリケーション１５０からの処理要求を受信可能とするアプリケーションプログラムインターフェース（以下、ＡＰＩという）を有するように構成されている。
【００２９】
ＯＳ１２１は、ＵＮＩＸ（登録商標）などの汎用オペレーティングシステムであって、プラットフォーム１２０およびアプリケーション１５０の各ソフトウェアをプロセスとして並列実行する。
【００３０】
ＳＲＭ１２３のプロセスは、ＳＣＳ１２２と共にシステムの制御およびリソースの管理を行うものである。例えば、ＳＲＭ１２３のプロセスは、スキャナ部やプリンタ部などのエンジン、メモリ、ハードディスク装置（ＨＤＤ）ファイル、ホストＩ／Ｏ（セントロインターフェース、ネットワークインターフェース、ＩＥＥＥ１３９４インターフェース、ＲＳ２３２Ｃインターフェースなど）のハードウェア資源を利用する上位層からの要求にしたがって調停を行い、実行制御する。
【００３１】
具体的には、ＳＲＭ１２３は、要求されたハードウェア資源が利用可能であるか（他の要求により利用されていないかどうか）を判定し、利用可能であれば要求されたハードウェア資源が利用可能である旨を上位層に伝える。また、ＳＲＭ１２３は、上位層からの要求に対してハードウェア資源の利用スケジューリングを行い、例えばプリンタエンジンにより紙搬送と作像動作、メモリ確保、ファイル生成などの要求内容を直接実施している。
【００３２】
ＳＣＳ１２２のプロセスは、アプリ管理、操作部制御、システム画面表示、ＬＥＤ表示、リソース管理、割り込みアプリ制御などを行う。
【００３３】
ＥＣＳ１２４のプロセスは、白黒ラインプリンタ（B&W  LP）１０１、カラーラインプリンタ（Color  LP）１０２、ＨＤＤ１０３、スキャナ、ファクシミリなどからなるハードウェアリソース１０７のエンジンの制御を行う。
【００３４】
ＭＣＳ１２５のプロセスは、画像メモリの取得および解放、ハードディスク装置（ＨＤＤ）の利用、画像データの圧縮および伸張などを行う。
【００３５】
ＯＣＳ１２６は、オペレータ（ユーザ）と本体制御間の情報伝達手段となるオペレーションパネル（操作パネル１７０）の制御を行う。ＯＣＳ１２６は、操作パネル１７０からキー押下（またはタッチ操作）をキーイベントとして取得し、取得したキーに対応したキーイベント関数をＳＣＳ１２２に送信するＯＣＳプロセスの部分と、アプリケーション１５０またはコントロールサービスからの要求により操作パネル１７０に各種画面を描画出力する描画関数や、その他の操作パネル１７０に対する制御を行う関数などがあらかじめ登録されたＯＣＳライブラリの部分とから構成される。
【００３６】
このＯＣＳライブラリは、アプリケーション１５０およびコントロールサービスの各モジュールにリンクされて実装されている。なお、ＯＣＳ１２６のすべてをプロセスとして動作させるように構成してもよいし、あるいはＯＣＳ１２６のすべてをＯＣＳライブラリとして構成してもよい。
【００３７】
ＦＣＳ１２７のプロセスは、システムコントローラの各アプリケーション層からＰＳＴＮまたはＩＳＤＮ網を利用したファクシミリ送受信、ＢＫＭ（バックアップＳＲＡＭ）で管理されている各種ファクシミリデータの登録／引用、ファクシミリ読みとり、ファクシミリ受信印刷、融合送受信を行うためのアプリケーションを提供する。
【００３８】
ＮＣＳ１２８は、ネットワークＩ／Ｏを必要とする複合機１００上のスキャナアプリ１１４等のアプリケーションに対し、共通に利用できるサービスを提供するためのプロセスであり、ネットワーク側から受信したデータを各アプリケーションに振り分ける処理や、アプリケーションからデータをネットワーク側に送信する際の仲介処理を行う。
【００３９】
ＵＣＳ１２９は、図示しないユーザデータベース等により複合機１００を使用するユーザ情報の管理を行うプロセスであり、要求に応じたユーザ情報が格納されている記憶装置を判定し、判定した記憶装置からユーザ情報を取得して各アプリケーションに供給する処理を行う。
【００４０】
ＣＣＳ１３０は、ＨＤＤ１０３に格納されている認証ファイル２２６を用いて、カスタマイズ対象となるモジュール又はサブモジュールに対する認証を行うプロセスである。なお、詳細な構成等については後述する。
【００４１】
そして、複合機１００は、アプリケーション１５０として、プリンタアプリ１１１と、コピーアプリ１１２と、ファックスアプリ１１３と、スキャナアプリ１１４と、メール自動配信アプリ１１５と、工程検査アプリ１１６と、ＲＯＭ更新アプリ１１７とを備えている。
【００４２】
そして、アプリケーション１５０のうち、プリンタアプリ１１１、コピーアプリ１１２、ファックスアプリ１１３、スキャナアプリ１１４、メール自動配信アプリ１１５、及び工程検査アプリ１１６は、カスタマイズ対象となるアプリケーションとする。
【００４３】
このように、本実施の形態にかかる複合機１００には、アプリケーション１５０として、一つ以上のモジュールが搭載されている。そして、利用者が、アプリケーション等をカスタマイズする時に、モジュール単位でカスタマイズを許容するか否かを、ＣＣＳ（認証コントロールサービス）１３０で認証する。そして、ＣＣＳ１３０による認証結果に基づいて、各モジュールのカスタマイズを制御する。
【００４４】
本実施の形態では、独立して分割できるソフトウェアの単位を、モジュールとする。図２は、本実施の形態にかかる複合機１００に搭載されているアプリケーション１５０のモジュール構成を示した説明図である。図２に示すアプリケーション（１１１〜１１５）は、それぞれ１つのモジュールで構成されている。そして、各モジュールは、サブモジュール２００ａ〜２００ｎの組み合わせで構成されている。
【００４５】
また、アプリケーション１５０のみならず、図１のプラットフォーム１２０内の各コントロールサービスも、モジュール単位で構成され、これらモジュールについてもサブモジュールの組み合わせで構成されている。
【００４６】
本実施の形態では、これらモジュール又はサブモジュール単位で、認証を行うものとするが、さらに細かいソフトウェア単位で認証を行ってもよい。この認証手法についても本実施の形態と同様の手法で可能となる。
【００４７】
図２に示すソフトウェア構成例では、モジュールの一つにアドレス帳を使用するサブモジュール（例えば、アドレス抽出処理サブモジュール２００ｍ）を含んでいる。このサブモジュールが使用するアドレス帳は、個人情報である。このため、アドレス帳を使用するアドレス抽出処理サブモジュール２００ｍは、容易にカスタマイズをできないように保護する必要がある。
【００４８】
図１に戻り、ＲＯＭ更新アプリ１１７は、入力処理部１５１と、格納処理部１５２と、通知部１５３とを備え、モジュール又はサブモジュールが格納されたＲＯＭの更新を行うための処理を行うアプリケーションとする。ＲＯＭ更新アプリ１１７は、リモートからのＲＯＭ更新を可能にし、遠隔からアプリケーションの更新を可能とする。
【００４９】
入力処理部１５１は、カスタマイズ（更新）に用いる更新データと共に、カスタマイズの対象となるモジュール又はサブモジュールを識別するモジュールＩＤを入力処理する。
【００５０】
格納処理部１５２は、入力されたモジュールＩＤで識別されるモジュール又はサブモジュールの更新データをＳＤＲＡＭ１０６に格納する処理を行う。
【００５１】
通知部１５３は、更新データをＳＤＲＡＭ１０６に格納したことを、ＳＣＳ１２２に通知する。これにより、ＳＣＳ１２２によるＲＯＭデータの更新処理が開始される。
【００５２】
複合機起動部１４０は、複合機１００が起動する際に処理を行うユニットとする。そして、複合機１００の電源が投入された際、複合機起動部１４０は、ソフトウェア群１１０の動作を制御して、複合機１００を利用可能な状態になるまで処理を行う。なお、詳細な構成などについては後述する。
【００５３】
次に、複合機１００のハードウェア構成について説明する。図３は、複合機１００のハードウェア構成を示した図である。図３に示すように、複合機１００は、ＣＰＵ３０２、ＳＤＲＡＭ１０６、ＳＲＡＭ３０６、フラッシュメモリ（以下、フラッシュＲＯＭともいう）３０４、フラッシュカードインターフェース部３０８及びＨＤＤ１０３などをＡＳＩＣ３０１に接続したコントローラボード３００と、オペレーションパネル３１０と、ファックスコントロールユニット（ＦＣＵ）３２０と、ＵＳＢ３３０と、ＬＡＮボード３５０（１００ＢＡＳＥ−ＴＸ／１０ＢＡＳＥ−Ｔ、無線ＬＡＮなどに対応）と、ＩＥＥＥ１３９４Ｉ／Ｆ３４０と、プリンタ３６０とから構成されている。オペレーションパネル３１０はＡＳＩＣ３０１に直接接続され、ＦＣＵ３２０、ＵＳＢＩ／Ｆ３３０、ＩＥＥＥ１３９４Ｉ／Ｆ３４０、ＬＡＮボード３５０及びプリンタ３６０はＰＣＩバスを介してＡＳＩＣ３０１に接続されている。
【００５４】
フラッシュＲＯＭ３０４は、製品出荷時から、上述したアプリケーション１５０内の各アプリ、プラットフォーム１２０を構成する各コントロールサービスやＳＲＭ１２３の各プログラムが予め格納されているものとする。
【００５５】
ＳＲＡＭ３０６は、プログラムが利用する環境情報、例えばモードフラグなどを記憶する。
【００５６】
ＵＳＢＩ／Ｆ３３０、ＩＥＥＥ１３９４Ｉ／Ｆ３４０、ＬＡＮボード３５０を介することで、複合機１００は、ＰＣと接続することができる。
【００５７】
また、複合機１００は、複合機１００が備えるオペレーションパネル３１０からのカスタマイズ要求の他に、ＬＡＮ等を介して接続されたＰＣ(Personal  Computer)からのカスタマイズ要求を受け付けることができる。図４は、複合機１００を含むネットワーク構成を示した説明図である。図４に示すように、ネットワーク４００には、モジュール提供サーバ４０１、複合機１００、複合機４０３等が接続されている。そして、複合機１００とＰＣ４０２とは、ＬＡＮ４０４を介して接続されている。
【００５８】
ＰＣ４０２は、利用者から複合機１００に対するカスタマイズ要求を受け付けた場合に、複合機１００に対して、カスタマイズの要求を送信する。
【００５９】
モジュール提供サーバ４０１は、ネットワークを介して接続された複合機（例えば、複合機１００や複合機４０３）に対して、カスタマイズ要求の対象となったモジュール又はサブモジュールの更新データを提供する。
【００６０】
そして、モジュール提供サーバ４０１が提供する更新データとしては様々なモジュールの更新データがある。例えば、モジュール提供サーバ４０１にログインできる利用者であれば、自由に利用できるモジュールの更新データがある。また、複合機１００に対して提供することが制限されるモジュールの更新データも存在する。この提供することが制限されるモジュールとしては、例えば、特定の個人情報や重要データなどの機密保持すべきデータを利用するモジュール又はサブモジュールの更新データ等が考えられる。
【００６１】
そして、複合機１００は、ネットワーク４００を介して接続されたＰＣ４０２からのカスタマイズ（例えば更新）の要求を受け付ける。そして、複合機１００は、カスタマイズ要求を受け付けた場合に、モジュール提供サーバ４０１から、ネットワーク４００経由でフラッシュメモリ（フラッシュＲＯＭ）上に記録されるソフトウェアをカスタマイズする機能を備える。これにより、複合機１００は、ネットワーク経由の遠隔地のＰＣからもアプリケーションなどのソフトウェアをカスタマイズが可能となる。
【００６２】
また、本実施の形態では、カスタマイズの例として、ソフトウェアを更新する場合について説明する。なお、本実施の形態は、カスタマイズを更新に制限するものではなく、あらゆるカスタマイズに対して適用することができる。
【００６３】
また、複合機１００は、このようにネットワーク経由でソフトウェアの更新が要求された場合に、カスタマイズ要求の対象となるソフトウェアモジュールに対する認証機能を備える。これにより、本実施の形態にかかる複合機１００は、更新の対象となるモジュール又はサブモジュールに応じて、更新データによる更新を制限することを可能としている。
【００６４】
本実施の形態にかかる複合機１００では、モジュールなどの更新を、電源投入による起動した際に行われるものとする。そこで、複合機１００の電源投入時に処理を行う複合機起動部１４０について説明する。
【００６５】
図５は、複合機起動部１４０の構成を示すブロック図である。図５に示すように、複合機起動部１４０は、ＲＯＭモニタ５１０と、プログラム起動部５２０と、ＲＯＭ更新部５３０とを備える。
【００６６】
複合機起動部１４０は、複合機１００の電源投入時に最初に実行される。そして、実行された複合機起動部１４０は、コントロールユニットやアプリケーションの起動を行う。
【００６７】
ＲＯＭモニタ５１０は、フラッシュＲＯＭ３０４のブートベクタに記録されているものとする。そして、複合機１００の電源投入時に、ＲＯＭモニタ５１０が、最初に起動される。
【００６８】
このＲＯＭモニタ５１０の起動は、外部からの起動命令でも可能とする。また、複合機１００内部のＲＯＭモニタ起動命令でも実現できる。この起動命令の利用例としては、ネットワーク介してデータパケット（モジュールに必要な更新データ等）の受信及び格納が終了した後、遠隔から複合機１００の再起動する場合などが考えられる。
【００６９】
そして、起動した後のＲＯＭモニタ５１０は、ハードウェアの初期化、コントローラボードの診断、ソフトウェアの初期化、汎用ＯＳ１２１の起動などを行う。
【００７０】
プログラム起動部５２０は、起動モード設定部５２１と、サービス層起動部５２２と、アプリ起動部５２３と、アプリ起動情報設定部５２４とを備えている。
【００７１】
このプログラム起動部５２０は、汎用ＯＳ１２１から呼び出されることで、起動される。起動したプログラム起動部５２０により、アプリケーション１５０又はプラットフォーム１２０が適宜起動される。
【００７２】
詳細な例としては、汎用ＯＳ１２１のカーネルを、プログラム起動部５２０としても良い。この場合、汎用ＯＳ１２１が起動される場合に、プログラム起動部５２０が起動され、ルートファイルシステムが展開され、アプリケーション１５０やプラットフォーム１２０に係るファイルシステムがルートファイルシステムにマウントされることになる。そして、アプリケーション１５０やプラットフォーム１２０のプログラムの起動が開始される。
【００７３】
プログラム起動部５２０の処理実行内容は、起動モードに応じて決定される。プログラム起動部５２０の起動モードには、通常モードと、ＲＯＭ更新モードとがある。通常モードは、複合機１００でコピー、プリント、スキャナ、ファクシミリなど通常の複合サービスを行うために起動するモードとする。ＲＯＭ更新モードは、フラッシュメモリ３０４の更新を行うために複合機１００を起動するモードである。
【００７４】
そして、プログラム起動部５２０がＲＯＭ更新モードで起動した場合に、ハードディスクドライブ、メモリカードに記録された更新データ、又はネットワーク経由で提供された更新データに基づいて、フラッシュメモリ３０４のモジュール又はサブモジュールの更新が行われることになる。
【００７５】
起動モード設定部５２１は、ＳＲＡＭ３０６に保持されているモードフラグから、プログラム起動部５２０の動作モードを、通常モード及びＲＯＭ更新モードのいずれか一方に設定する。起動モード設定部５２１の設定に基づいて、プログラム起動部５２０が起動される。
【００７６】
サービス層起動部５２２は、汎用ＯＳ１２１の起動情報を取得して、コントロールサービスを起動する。
【００７７】
アプリ起動情報設定部５２４は、動作モードがＲＯＭ更新モードの場合に実行され、各アプリの起動情報を取得して、取得したアプリ起動情報を環境変数に設定する。
【００７８】
アプリ起動部５２３は、いずれの動作モードであっても、アプリケーションを起動させる処理を行う。例えば、動作モードがＲＯＭ更新モードの場合に、アプリ起動部５２３は、ＲＯＭ更新アプリ１１７の起動情報を取得して、ＲＯＭ更新アプリ１１７を起動する。これによりＲＯＭ更新アプリ１１７、ＳＣＳ１２２及びＣＣＳ１３０による処理が行われた後、最終的にＲＯＭ更新部５３０によるフラッシュＲＯＭ３０４の更新処理が行われることになる。
【００７９】
一方、動作モードが通常モードの場合に、アプリ起動部５２３は、各アプリの起動情報を取得して、各アプリを起動する。
【００８０】
ＲＯＭ更新部５３０は、ＲＯＭ更新命令解読部５３１と、ＳＲＡＭ処理部５３２と、ＲＯＭ更新処理部５３３と、表示制御部５３４と、から構成される。
【００８１】
ＲＯＭ更新命令解読部５３１は、ＳＣＳ１２２からのＲＯＭ更新命令を解析する。
【００８２】
ＲＯＭ更新処理部５３３は、更新先アドレスと解析したＲＯＭ更新命令に基づいてフラッシュメモリ３０４のプログラムを更新する。
【００８３】
ＳＲＡＭ処理部５３２は、ＲＯＭ更新中の各種情報をＳＲＡＭ３０６へ格納する。
【００８４】
表示制御部５３４は、ＲＯＭ更新処理中のユーザへの進捗表示を制御する。
【００８５】
ところで、アプリ起動部５２３がＲＯＭ更新モードで起動した場合に、最後にＲＯＭ更新アプリ１１７が起動される。そして、ＲＯＭ更新アプリ１１７が、更新データを確保した後、ＳＣＳ１２２による処理が開始される。そして、ＳＣＳ１２２は、認証を行う際に、ＣＣＳ１３０を呼び出す。次に、認証を行うＣＣＳ１３０について説明する。
【００８６】
図６は、ＣＣＳ１３０で実行されるプロセスを説明した図である。図６に示すように、ＣＣＳ１３０のプロセスは、制御スレッド６０１と、認証スレッド６０２と、ＸＭＬ変換スレッド６０３と、で構成されている。そして、ＣＣＳ１３０のプロセスは、各モジュールに対してカスタマイズの認証処理を行い、各モジュールの認証の結果をＸＭＬ形式に変換し、認証ファイル２２６としてＨＤＤ１０３に格納する。
【００８７】
また、ＨＤＤ１０６は、認証ファイル２２６の他に、設定情報６１１と、プログラムＩＤＤＢ６１２と、を記憶する。
【００８８】
設定情報６１１は、認証を行う主体や、認証方法が記載されている。認証を行う主体としては、認証スレッド６０２本体、又はネットワーク４００を介して接続された認証用サーバなどが考えられる。記載されている認証方法としては、周知の手法を問わずあらゆる手法が考えられる。本実施の形態では、設定情報６１１には、ＨＤＤ１０３のプログラムＩＤデータベース６１２を参照して、認証スレッド６０２が認証を行う旨が記載されているものとする。
【００８９】
プログラムＩＤデータベース６１２は、カスタマイズを許可するモジュール又はサブモジュールを識別するＩＤ（以下、モジュールＩＤ、サブモジュールＩＤとする）を記憶する。図７は、プログラムＩＤデータベース６１２のテーブル構造を示した図である。図７に示すように、プログラムＩＤデータベース６１２は、カスタマイズを許可するモジュールＩＤ又はサブモジュールＩＤを格納する。
【００９０】
本実施の形態では、アドレス情報が記録されたアドレス帳を利用するモジュール又はサブモジュールのＩＤが、プログラムＩＤデータベース６１２に登録されているものとする。これにより、アドレス帳を利用するモジュール又はサブモジュールのカスタマイズが禁止されることになる。これにより、モジュール又はサブモジュールのカスタマイズ時に、アドレス帳に格納された、機密情報（個人情報）であるアドレス情報を保護することができる。
【００９１】
図６に戻り、制御スレッド６０１は、ＣＣＳ１３０の種々の機能を制御する。例えば、制御スレッド６０１は、ＳＣＳ１２２などのプログラムからの認証要求を受け付けた場合に、認証スレッド６０２、及びＸＭＬ変換スレッド６０３の生成し、生成した各スレッドに対する処理要求を行う。また、制御スレッド６０１は、認証方式の採択処理や、ＳＣＳ１２２のプロセスとプロセス間通信で各種情報の送受信処理を行う。なお、設定情報６１１を設定するための処理も制御スレッド６０１が行ってもよい。
【００９２】
認証スレッド６０２は、ＨＤＤ１０３に格納された設定情報６１１を読み取り、設定情報６１１に記載された認証手法で、モジュールカスタマイズ認証を行う。本実施の形態では、認証スレッド６０２で認証を行う例とする。
【００９３】
ＳＣＳ１２２は、ＣＣＳ１３０との関連では、ＣＣＳ１３０に対して初期設定の要求や、認証処理時の認証画面の表示等を行う。
【００９４】
本実施の形態は、ＨＤＤ１０３に格納された情報により認証を行う例とする。そこで、各スレッドは以下に示す処理を行う。つまり、認証スレッド６０２は、設定情報６１１を参照し、当該設定情報６１１に記載された情報に従って、認証手法を決定する。
【００９５】
そして、認証スレッド６０２は、決定された認証手法を利用して、プログラムＩＤデータベース６１２に格納されているモジュールＩＤ又はサブモジュールＩＤと、更新要求のあったモジュール又はサブモジュールを識別するモジュールＩＤ又はサブモジュールＩＤとを比較し、モジュール単位で更新が許容されるか否かの認証を行う。その後、認証スレッド６０２は、認証結果（認証ＯＫ、認証ＮＧ等）を生成する。
【００９６】
その後、ＸＭＬ変換スレッド６０３が、認証スレッド６０２によって生成された認証結果を、それぞれＸＭＬ形式に変換して、認証ファイル２２６としてＨＤＤ１０３に格納する。なお、ＸＭＬ形式への変換処理は公知の手法で行われる。
【００９７】
図８は、カスタマイズ用の認証ファイル２２６の概念を示した図である。図８に示すような複合機１００でカスタマイズ可能なモジュールＩＤ又はサブモジュールＩＤが、ＸＭＬ形式で列挙して格納されている。認証ファイル２２６は、ソフトウェア（モジュール）単位でカスタマイズ（更新）するときに参照される。
【００９８】
これにより、複合機１００に搭載するソフトウェアを更新する場合には、既に記憶されている認証ファイル２２６を用いて照合することもできる。この認証ファイル２２６の更新及び当該認証ファイル２２６を用いた照合は起動時のみに制限するものではなく、例えば、任意のタイミングで認証ファイル２２６を更新した後に、更新した認証ファイル２２６を用いて照合しても良い。
【００９９】
なお、本実施の形態では、カスタマイズ要求を行った複合機１００の使用者を特定していないが、使用者単位で認証ファイル２２６を更新するように構成してもよい。
【０１００】
そして、生成された認証ファイル２２６を参照することで、ＲＯＭ更新部５３０が、モジュール単位でカスタマイズの更新を行うことが可能となる。
【０１０１】
次に、以上のように構成された本実施の形態にかかる複合機１００が起動してから、モジュールの更新が行われるまでの処理について説明する。図９は、本実施の形態にかかる複合機１００における上述した処理の手順を示すフローチャートである。
【０１０２】
まず、複合機起動部１４０のＲＯＭモニタ５１０が、ハードウェアの初期化を行う（ステップＳ９０１）。
【０１０３】
次に、ＲＯＭモニタ５１０は、コントローラボードの診断処理を行う（ステップＳ９０２）。そして、ＲＯＭモニタ５１０は、ソフトウェアの初期化処理を行う（ステップＳ９０３）。
【０１０４】
次に、ＲＯＭモニタ５１０は、複合機１００のフラッシュＲＯＭ３０４に記録されている機種識別情報を取得する（ステップＳ９０４）。機種識別情報は、複合機の機種を特定するものであり、機種ごとに固有のデータとする。
【０１０５】
そして、ＲＯＭモニタ５１０は、ＨＤＤ１０３から、プログラムＩＤデータベース６１２を読み込む（ステップＳ９０５）。この読み込む対象は、フラッシュメモリ３０４に記録されている機種識別情報に対応した認証ファイル２２６に特定される。
【０１０６】
その後、ＲＯＭモニタ５１０は、汎用ＯＳ１２１を起動する（ステップＳ９０６）。
【０１０７】
この後、汎用ＯＳ１２１からの呼出により、プログラム起動部５２０が起動し、プログラム起動部５２０は、コントロールサービスやアプリケーションの起動を行う（Ｓ９０７）。そして、ＲＯＭ更新を行う場合には、ＲＯＭ更新アプリ１１７が起動する。なお、ＲＯＭ更新を行わない場合には、これで起動処理を終了する。
【０１０８】
次に、ＲＯＭ更新アプリ１１７が起動した場合、ＲＯＭ更新アプリ１１７が、ＲＯＭの更新に用いる更新データを、ＳＤＲＡＭ１０６に格納する（ステップＳ９０８）。
【０１０９】
そして、ＳＣＳ１２２が、格納された更新データのうち、更新に用いる更新データの選定処理を行う（ステップＳ９０９）。この選定処理を行う際に、認証ファイル２２６のモジュールＩＤ又はサブモジュールＩＤを用いて、認証処理を行う。
【０１１０】
そして、ＲＯＭ更新部５３０が、選定処理が行われた更新データを用いて、モジュール又はサブモジュールの更新処理を行う（ステップＳ９１０）。
【０１１１】
次に、以上のように構成された本実施の形態にかかるプログラム起動部５２０における、図９のステップＳ９０７で示したコントロールサービス又はアプリを起動する処理について説明する。図１０は、本実施の形態にかかるプログラム起動部５２０における上述した処理の手順を示すフローチャートである。
【０１１２】
プログラム起動部５２０が、起動モード設定部５２１によって、ＳＲＡＭ３０６に格納されているリモートＲＯＭ更新フラグの状態をチェックする(ステップＳ１００１)。
【０１１３】
このリモートＲＯＭ更新フラグは、複合機１００の前回の終了時に設定されるものとする。例えば、前回の起動時に、複合機１００のＮＣＳ１２８は、ＰＣ４０２またはモジュール提供サーバ４０１からの更新要求を受信する。そして、更新要求を受信したＮＣＳ１２８は、ＳＣＳ１２２に対して複合機１００の再起動リブート依頼通知を送信する。その後、リブート依頼通知を受けたＳＣＳ１２２は、ＳＲＡＭ３０６に格納されているリモートＲＯＭ更新フラグをＯＮに設定する。その後、ＳＣＳ１２２が再起動コマンドを発行して、複合機１００を再起動する。このようにして、リモートＲＯＭ更新フラグがＯＮに設定されることになる。なお、通常通りに複合機１００を終了した場合には、リモートＲＯＭ更新フラグがＯＦＦに設定される。
【０１１４】
そして、リモートＲＯＭ更新フラグがＯＮである場合（ステップＳ１００１：ＯＮ）、起動モード設定部５２１は、起動モードをＲＯＭ更新モードに設定する（ステップＳ１００２）。
【０１１５】
その後、サービス層起動部５２２が、フラッシュＲＯＭ３０４のファイルシステムをマウントする（ステップＳ１００３）。次に、サービス層起動部５２２が、フラッシュＲＯＭ３０４からＳＣＳ１２２、ＥＣＳ１２４、ＭＣＳ１２５、ＣＣＳ１３０などのコントロールサービスの起動情報を取得する（ステップＳ１００４）。取得するＣＣＳ１３０の起動情報の中には、認証ファイル２２６、プログラムＩＤデータベース６１２、及び設定情報６１１が含まれている。
【０１１６】
そして、サービス層起動部５２２が、ステップＳ１００４で取得した起動情報を環境変数に設定する（ステップＳ１００５）。
【０１１７】
次に、サービス層起動部５２２が、ＳＣＳ１２２、ＥＣＳ１２４、ＭＣＳ１２５などのコントロールサービスを汎用ＯＳ１２１上で起動する（ステップＳ１００６）。このとき、各種コントロールサービス（ＳＣＳ１２２を含む）では、ＲＯＭ更新モードスレッドが起動される。さらに、ＣＣＳ１３０では、制御スレッド６０１、認証スレッド６０２、及びＸＭＬ変換スレッド６０３が起動される。
【０１１８】
そして、サービス層起動部５２２は、ＳＣＳ１２２のＲＯＭ更新モードスレッドが起動した後、起動したコントロールサービスのコントロールサービス起動情報を環境変数に設定する（ステップＳ１００７）。
【０１１９】
コントロールサービス起動情報とは、起動したコントロールサービスのプロセスＩＤやモジュール名など、コントロールサービスのプログラムを識別するものであり、各コントロールサービスに固有の情報とする。
【０１２０】
そして、アプリ起動情報設定部５２４は、フラッシュＲＯＭ３０４のファイルシステムをマウントする（ステップＳ１００８）。
【０１２１】
次に、アプリ起動情報設定部５２４は、マウントしたファイルシステムを検索して、格納されているアプリのプログラムを抽出し、複合機１００で起動されるアプリのアプリ起動情報を取得する（ステップＳ１００９）。
【０１２２】
そして、アプリ起動情報設定部５２４が、ステップＳ１００９で取得したアプリ起動情報を環境変数に設定する（ステップＳ１０１０）。
【０１２３】
ここで、アプリ起動情報とは、複合機１００で動作可能なアプリを識別するアプリ固有の情報であり、アプリのモジュールＩＤ、モジュール名などである。また、環境変数に設定されたコントロールサービス起動情報とアプリ起動情報は、ＳＣＳ１２２に受け渡される。ただし、ＲＯＭ更新モードでは、受け渡されるアプリ起動情報は、ＲＯＭ更新アプリ１１７のアプリ起動情報のみとする。
【０１２４】
そして、アプリ起動部５２３が、ＲＯＭ更新アプリ１１７を起動する（ステップＳ１０１１）。ここで、環境変数に設定されたコントロールサービス起動情報は、ＳＣＳ１２２などのコントロールサービスへ、アプリ起動情報は、アプリケーションＳＣＳ１２２へ受け渡される。また、ＲＯＭ更新モードでは、ＲＯＭ更新アプリ１１７以外のアプリは起動しない。
【０１２５】
一方、リモートＲＯＭ更新フラグがＯＦＦである場合（ステップＳ１００１：ＯＦＦ）、起動モード設定部５２１は、起動モードを通常モードに設定する（ステップＳ１０１２）。
【０１２６】
そして、サービス層起動部５２２が、フラッシュＲＯＭ３０４のファイルシステムをマウントする（ステップＳ１０１３）。
【０１２７】
次に、サービス層起動部５２２が、フラッシュＲＯＭ３０４からＳＣＳ１２２，ＥＣＳ１２４，ＭＣＳ１２５などのコントロールサービスの起動情報を取得する（ステップＳ１０１４）。
【０１２８】
その後、サービス層起動部５２２が、ＳＣＳ１２２、ＥＣＳ１２４、ＭＣＳ１２５などのコントロールサービスを汎用ＯＳ上で起動する（ステップＳ１０１５）。このとき、各コントロールサービスのプロセスでは、通常モードスレッドが起動される。
【０１２９】
そして、アプリ起動部５２３が、フラッシュＲＯＭ３０４のファイルシステムをマウントする（ステップＳ１０１６）。
【０１３０】
次に、アプリ起動部５２３が、マウントしたファイルシステムから複合機１００で起動される上述のアプリ起動情報を取得する（ステップＳ１０１７）。
【０１３１】
そして、アプリ起動部５２３が、各アプリを起動する（ステップＳ１０１８）。なお、ステップＳ１０１８においては、ＲＯＭ更新アプリ１１７は起動しない。
【０１３２】
上述した処理手順でステップＳ１０１１により、ＲＯＭ更新アプリ１１７が起動した後、ＲＯＭ更新アプリ１１７の処理の後に、更新要求があったモジュール又はサブモジュール単位で認証を行っていくことになる。そして、認証結果、許容されたサービス層プログラム（モジュール）、または、アプリプログラム（モジュール）だけがカスタマイズされる。
【０１３３】
また、ＣＣＳ１３０についてもカスタマイズを行う場合、ＣＣＳ１３０を先にカスタマイズする。その後に、サービス層プログラム（モジュール）またはアプリプログラム（モジュール）のカスタマイズを、ＣＣＳ１３０を使用して認証を行うことになる。
【０１３４】
後述するネットワークを介して遠隔から複合機へソフトウェアをカスタマイズする場合には、アプリの登録要求に対して認証処理を実行する。
【０１３５】
そして、ステップＳ１０１１で呼び出されたＲＯＭ更新アプリ１１７は、ＳＣＳ１２２のＲＯＭ更新モードスレッドを利用して、フラッシュメモリ３０４の内容の書き換える又は書き込みに関する処理を行う。
【０１３６】
このため、ＲＯＭ更新アプリ１１７は、上述した処理を行うためにＳＣＳ１２２やＭＣＳ１２５等のコントロールサービスを利用する。詳細には、ＲＯＭ更新アプリ１１７は、ＨＤＤ１０３やフラッシュカード３０７に記録された更新データ、又は、ネットワーク４００を介して接続されているモジュール提供サーバ４０１から提供された更新データを、ＲＯＭ更新モードスレッドによってＭＣＳ１２５を介して確保されたＳＤＲＡＭ３０３の更新データ領域に格納する。
【０１３７】
次に、以上のように構成された本実施の形態にかかるＲＯＭ更新アプリ１１７における更新データの格納処理について説明する。図１１は、本実施の形態にかかるＲＯＭ更新アプリ１１７における上述した処理の手順を示すフローチャートである。本処理手順では、当然ながら、複合機１００はＲＯＭ更新モードで起動されているため、各コントロールユニット及びアプリケーションについて、ＲＯＭ更新可能な状態となっている。
【０１３８】
まず、ＲＯＭ更新アプリ１１７の入力処理部１５１は、更新データの入力処理を行う。具体的には、入力処理部１５１は、ＨＤＤ１０３やフラッシュカード３０７に記録された更新データの読み込み、又は、ネットワーク４００を介して接続されているモジュール提供サーバ４０１から提供された更新データの受信処理を行う（ステップＳ１１０１）。
【０１３９】
また、ＲＯＭ更新アプリ１１７の入力処理部１５１は、更新データと共に、更新対象となるモジュールのモジュールＩＤ又はサブモジュールのサブモジュールＩＤ等の読み取り又は受信処理を行う。
【０１４０】
次に、ＲＯＭ更新アプリ１１７の格納処理部１５２が、更新データファイルの更新データを格納するために必要な領域を得るために、ＭＣＳ１２５に対して、ＳＤＲＡＭ３０３上に更新データ領域の確保を要求する（ステップＳ１１０２）。そして、確保要求を受けたＭＣＳ１２５のＲＯＭ更新モードスレッドが、ＳＤＲＡＭ３０３上に更新データ領域を確保して、その領域の先頭アドレスと確保した領域サイズとをＲＯＭ更新アプリ１１７に送信する。
【０１４１】
そして、ＲＯＭ更新アプリ１１７の格納処理部１５２は、更新データファイルの更新データをＭＣＳ１２５のＲＯＭ更新モードスレッドから通知されたＳＤＲＡＭ３０３の領域の先頭アドレスから展開する（ステップＳ１１０３）。ここで、更新データファイルの更新データの展開とは、受信した更新データファイルから、更新に不要な宛先ネットワークアドレス、パケット長などのネットワーク情報を除去して、ＲＯＭ更新に必要なデータのみを、ＳＤＲＡＭ３０３の領域に参照可能に書き込むことをいう。
【０１４２】
図１２は、ＲＯＭ更新アプリ１１７により更新データが格納された更新データ領域の例を示した図である。図１２に示すように、更新データ領域は、ヘッダ部１２０１と、データ部１２０２とで構成されている。
【０１４３】
ヘッダ部１２０１は、更新するモジュール毎にヘッダブロックを保持している。各ヘッダブロックは、次のヘッダブロックまでのオフセットである次ヘッダオフセットと、モジュールの更新データまでのオフセットである更新データオフセットと、更新データのサイズと、モジュールの識別情報であるモジュールＩＤ１２０３と、そのモジュールのフラッシュメモリ（フラッシュＲＯＭ）３０４上での相対番地を示す更新先アドレスと、そのモジュールのサイズである『更新先領域長』とから構成されている。
【０１４４】
ここでモジュールとは、ＭＣＳ１２５、ＥＣＳ１２４、ＮＣＳ１２８などのコントロールサービス単位のプログラム、プリンタアプリ１１１、コピーアプリ１１２などのアプリ単位のプログラム、プリンタエンジン１０１，１０２、スキャナエンジンなどのエンジン単位のプログラムとする。これらプログラムを更新可能とされている。
【０１４５】
受信または読み取った更新データは、これらのモジュールに対する変更プログラムのバイナリデータに対して圧縮処理を施したデータとする。圧縮された更新データは、ＳＤＲＡＭ３０３に展開される際に、ＲＯＭ更新アプリ１１７によって伸張される。
【０１４６】
また、ヘッダ部１２０１のモジュールＩＤ１２０３には、モジュールＩＤの他に、更新対象のサブモジュールを識別するサブモジュールＩＤを格納してもよい。そして、データ部１２０２には、更新データの実体が格納されている。データ部１２０２には、モジュール毎の更新データが格納されている。このように更新データ領域は、（プログラム）モジュール単位で区別できるような構成になっている。
【０１４７】
さらに、更新データ領域には、ヘッダ部１２０１に続いてデータ部１２０２が記録されている。データ部１２０２には、更新データがモジュールごとに格納されている。各モジュールの更新データの先頭は、モジュール毎のヘッダブロックの更新データオフセットを参照することで特定できる。
【０１４８】
図１１に戻り、ＲＯＭ更新アプリ１１７の通知部１５３は、更新データファイルの更新データを格納したＳＤＲＡＭ３０３上の領域の先頭アドレスを、ＳＣＳ１２２へ通知する（ステップＳ１１０４）。これにより、ＳＣＳ１２２のＲＯＭ更新モードスレッドで更新データの選定処理が開始される。
【０１４９】
つまり、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＳＤＲＡＭ３０３に格納された更新データ領域を参照して、複合機１００の構成に応じた更新データを選定する。
【０１５０】
次に、以上のように構成された本実施の形態にかかるＳＣＳ１２２のＲＯＭ更新モードスレッドで実行される更新データの選定処理およびＲＯＭ更新命令発行処理について説明する。図１３及び図１４は、本実施の形態にかかるＳＣＳ１２２における上述した処理の手順を示すフローチャートである。
【０１５１】
まず、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＳＲＡＭ３０６にモジュールＩＤやＳＤＲＡＭ３０３の更新データ（モジュールＩＤ、バージョン情報、更新先アドレス、更新データオフセットおよび更新データサイズ）がすでに記憶されているか否かを確認する（ステップＳ１３０１）。これは、フラッシュＲＯＭ３０４の更新データは、ＲＯＭ更新処理が始まったときにＳＲＡＭ３０６に書き込まれ、更新データは順次取り出されて更新処理が進むので、更新処理が途中で中断された場合には、ＳＲＡＭ３０６には未処理な更新情報が記録されていることになる。
【０１５２】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＳＲＡＭ３０６に更新データがすでに記憶されていると判断した場合（ステップＳ１３０１：Ｙｅｓ）、ＲＯＭ更新モードスレッドはＲＯＭ更新処理が中断された後の起動であると判断し、ＳＲＡＭ３０６から更新情報を取得する（ステップＳ１３０２）。
【０１５３】
次に、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＳＤＲＡＭ３０３の先頭のヘッダブロックを参照する（ステップＳ１３０３）。
【０１５４】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ヘッダブロックからモジュールＩＤを取得する（ステップＳ１３０４）。この取得したモジュールＩＤは、ＣＣＳ１３０に出力される。
【０１５５】
その後、ＣＣＳ１３０により、取得したモジュールＩＤで識別されるモジュールについても認証処理が行われる（ステップＳ１３０５）。認証結果は、認証ファイルに格納される。なお、詳細な認証処理については後述する。
【０１５６】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、認証ファイルを参照し、認証結果に基づいて、カスタマイズを許容するか否か判断する（ステップＳ１３０６）。カスタマイズを許容しないと判断した場合（ステップＳ１３０６：Ｎｏ）、ステップＳ１３１０から処理を開始する。
【０１５７】
そして、カスタマイズを許容すると判断した場合（ステップＳ１３０６：Ｙｅｓ）、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ヘッダブロックから取得したモジュールＩＤが、ステップＳ１３０２でＳＲＡＭ３０６から取得した更新データに相当するか否かを判断する（ステップＳ１３０７）。
【０１５８】
そして、ヘッダブロックから取得したモジュールＩＤが、ＳＲＡＭ３０６から取得した更新データに該当すると判断した場合（ステップＳ１３０７：Ｙｅｓ）、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、当該モジュールＩＤの更新データを選定し、さらにヘッダブロックから更新先アドレス、更新データオフセット、更新データサイズを取得する（ステップＳ１３０８）。
【０１５９】
その後、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、取得した更新先アドレス、更新データオフセット、更新データサイズを、「更新対象」の変数等に設定する（ステップＳ１３０９）。
【０１６０】
一方、ステップＳ１３０７で、ＲＯＭモード更新スレッドが、ヘッダブロックから取得したモジュールＩＤを、ＳＲＡＭ３０６から取得した更新情報に相当しないと判断した場合（ステップＳ１３０７：Ｎｏ）、ＳＣＳ１２２のＲＯＭ更新モードスレッドは取得したモジュールＩＤの更新データを選定などの処理を行わず、ステップＳ１３１０に進む。
【０１６１】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、更新データが格納された領域のうち、次ヘッダブロックオフセットを参照し、次のヘッダブロックが存在するか否かを判断する（ステップＳ１３１０）。
【０１６２】
そして、ＲＯＭモード更新スレッドが、次のヘッダブロックが存在すると判断した場合（ステップＳ１３１０：Ｙｅｓ）、次のヘッダブロックを参照する（ステップＳ１３１１）。そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ステップＳ１３０４からステップＳ１３１０までの処理を繰り返し行う。
【０１６３】
一方、ＲＯＭモード更新スレッドが、次のヘッダブロックが存在しないと判断した場合（ステップＳ１３１０：Ｎｏ）、ヘッダブロックのモジュールＩＤについての更新データの選定が終了したものとして、ＲＯＭ更新部５３０を起動し、ＲＯＭ更新部５３０に対して、ＲＯＭ更新命令を発行すると共に、更新対象の変数を引き渡して、処理を終了する（ステップＳ１３１２）。
【０１６４】
一方、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、ＳＲＡＭ３０６に更新データが存在しないと判断した場合（ステップＳ１３０１：Ｎｏ）、図１４のステップＳ１４０１に進む。
【０１６５】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＲＯＭ更新アプリ１１７から、ＳＤＲＡＭ３０３上の更新データ領域の先頭アドレスを、ＳＣＳ１２２に通知されるまで待機する。そして、通知を受け付けた場合に、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ＳＤＲＡＭ３０３の先頭のヘッダブロックを参照する（ステップＳ１４０１）。その後、ＲＯＭモード更新スレッドは、ヘッダブロックからモジュールＩＤを取得する（ステップＳ１４０２）。この取得したモジュールＩＤは、ＣＣＳ１３０に出力される。
【０１６６】
その後、ＣＣＳ１３０により、取得したモジュールＩＤで識別されるモジュールについても認証処理が行われる（ステップＳ１４０３）。認証結果は、認証ファイルに格納される。なお、詳細な認証処理については後述する。
【０１６７】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、認証ファイルを参照し、認証結果に基づいて、カスタマイズを許容するか否か判断する（ステップＳ１４０４）。カスタマイズを許容しないと判断した場合（ステップＳ１４０４：Ｎｏ）、ステップＳ１４０８から処理を開始する。
【０１６８】
そして、カスタマイズを許容すると判断した場合（ステップＳ１４０４：Ｙｅｓ）、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ヘッダブロックから取得したモジュールＩＤが、環境変数の中のコントロールサービスまたはアプリに相当するか否かを判断する（ステップＳ１４０５）。
【０１６９】
そして、ＲＯＭモード更新スレッドが、上記のモジュールＩＤが、環境変数の中のコントロールサービスまたはアプリに相当すると判断した場合（ステップＳ１４０５：Ｙｅｓ）、当該モジュールＩＤの更新データを選定し、ヘッダブロックから更新先アドレス、更新データオフセット、更新データサイズを取得する（ステップＳ１４０６）。
【０１７０】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、取得した更新先アドレス、更新データオフセット、及び更新データサイズを、「更新対象」の変数等に設定する（ステップＳ１４０７）。
【０１７１】
一方、ＲＯＭモード更新スレッドが、ヘッダブロックから取得したモジュールＩＤが、環境変数の中のコントロールサービスまたはアプリに相当しないと判断した場合（ステップＳ１４０３：Ｎｏ）、ＲＯＭ更新モードスレッドは、取得したモジュールＩＤの更新データを選定せず、ステップＳ１４０８に進む。
【０１７２】
そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、次ヘッダブロックオフセットを参照し、次のヘッダブロックが存在するか否かを判断する（ステップＳ１４０８）。ＲＯＭモード更新スレッドが、次のヘッダブロックが存在すると判断した場合（ステップＳ１４０８：Ｙｅｓ）、次のヘッダブロックを参照する（ステップＳ１４０９）。そして、ＳＣＳ１２２のＲＯＭ更新モードスレッドは、ステップＳ１４０２〜Ｓ１４０８までの処理を繰り返し行う。
【０１７３】
一方、ＳＣＳ１２２のＲＯＭ更新モードスレッドが、次のヘッダブロックが存在しないと判断した場合（ステップＳ１４０８：Ｎｏ）、すべてのヘッダブロックのモジュールＩＤについての更新データの選定が終了したものとして、ＲＯＭ更新部５３０を起動し、ＲＯＭ更新部５３０に対してＲＯＭ更新命令を発行し、更新対象の変数を引き渡して、終了する（ステップＳ１４１０）。
【０１７４】
上述した処理フローにより、更新データ領域に格納された更新データから、複合機１００内に存在するモジュールであって、更新する認証が得られた更新データが選定されることになる。その後、ＲＯＭ更新部５３０が、更新データでフラッシュＲＯＭ３０４を更新する。
【０１７５】
次に、以上のように構成された本実施の形態にかかるＣＣＳ１３０における、図１３のステップＳ１３０５及び図１４のステップＳ１４０３の認証処理について説明する。図１５は、本実施の形態にかかるＣＣＳ１３０における上述した処理の手順を示すフローチャートである。
【０１７６】
認証を行う際に、ＣＣＳ１３０の制御スレッドが、認証スレッド６０２、及びＸＭＬ変換スレッド６０３を生成する。そして、制御スレッドが、設定情報６１１を読み取り、認証スレッド６０２で認証を行うと決定されたものとする。
【０１７７】
まず、ＣＣＳ１３０の認証スレッド６０２は、ＳＣＳ１２２から入力された、カスタマイズ対象であるモジュールＩＤzを読み込む（ステップＳ１５０１）。
【０１７８】
次に、ＣＣＳ１３０の認証スレッド６０２は、プログラムＩＤデータベース６１２からカスタマイズ可能なモジュールＩＤiを抽出する（ステップＳ１５０２）。
【０１７９】
そして、認証スレッド６０２は、モジュールＩＤzが、カスタマイズ可能なモジュールＩＤiに含まれているか否かを判断する（ステップＳ１５０３）。
【０１８０】
そして、認証スレッド６０２が、モジュールＩＤzがカスタマイズ可能なモジュールＩＤiに含まれていると判断した場合（ステップＳ１５０３：Ｙｅｓ）、当該モジュールＩＤzで識別されるモジュールのカスタマイズは許容される旨の認証を行う。そして、ＸＭＬ変換スレッド６０３が、当該モジュールＩＤzをＸＭＬ形式の認証ファイル２２６に追加して、処理を終了する（ステップＳ１５０４）。なお、認証ファイル２２６が存在しない場合、新たに生成する。
【０１８１】
一方、認証スレッド６０２が、モジュールＩＤzがカスタマイズ可能なモジュールＩＤiに含まれていないと判断した場合（ステップＳ１５０３：Ｎｏ）、当該モジュールＩＤzで識別されるモジュールのカスタマイズは許容されない旨の認証を行い、処理を終了する（ステップＳ１５０５）。
【０１８２】
上述した処理手順に示すように、認証処理には、モジュールＩＤを使用して照合するものとする。また、当然ながら、モジュールＩＤのみならず、サブモジュールＩＤも同様の処理手順で認証を行うこととする。
【０１８３】
また、複数のモジュールを複数回でカスタマイズする場合、まだカスタマイズされていないモジュールについてだけ認証してもよい。この場合、既にカスタマイズしたモジュールを識別するモジュールＩＤをＨＤＤ１０３内に更新情報として保持し、該更新情報に含まれていないモジュールを、カスタマイズする必要があるモジュールとみなせばよい。
【０１８４】
次に、本実施の形態とは異なる別の認証処理について説明する。本実施の形態の変形例にかかるＣＣＳ１３０におけるサブモジュールＩＤを用いた認証処理について説明する。図１６は、変形例にかかるＣＣＳ１３０における上述した処理の手順を示すフローチャートである。
【０１８５】
一般的にソフトウェア（モジュール）は、サブモジュールで構成されている。そこで、本変形例では、アプリケーションが、カスタマイズを許容できないサブモジュールを備える場合、該サブモジュールをカスタマイズできないように制御する。このカスタマイズから保護する必要のあるサブモジュールには、アドレス帳を使用するサブモジュール等がある。アドレス帳は個人情報の一つであり、アドレス帳を使用するサブモジュールを使用するアプリは、個人情報を使用するサブモジュールといえる。
【０１８６】
まず、ＣＣＳ１３０の認証スレッド６０２は、ＳＣＳ１２２から入力された、カスタマイズ対象であるサブモジュールを含むアプリケーションプログラムＡＰxを読み込む（ステップＳ１６０１）。
【０１８７】
次に、ＣＣＳ１３０の認証スレッド６０２は、プログラムＩＤデータベース６１２からカスタマイズ可能なサブモジュールＩＤiを抽出する（ステップＳ１６０２）。
【０１８８】
そして、認証スレッド６０２は、ＡＰxを構成するサブモジュールを識別するサブモジュールＩＤxが、カスタマイズ可能なサブモジュールＩＤiに含まれているか否かを判断する（ステップＳ１６０３）。
【０１８９】
そして、認証スレッド６０２は、モジュールＩＤxがカスタマイズ可能なサブモジュールＩＤiに含まれていると判断した場合（ステップＳ１６０３：Ｙｅｓ）、当該サブモジュールＩＤzで識別されるアプリケーションプログラムＡＰxのサブモジュールのカスタマイズは許容される旨の認証を行う。そして、ＸＭＬ変換スレッド６０３が、アプリケーションプログラムＡＰxの識別情報及び当該サブモジュールＩＤxをＸＭＬ形式の認証ファイル２２６に追加して、処理を終了する（ステップＳ１６０４）。なお、認証ファイル２２６が存在しない場合、新たに生成する。
【０１９０】
一方、認証スレッド６０２が、サブモジュールＩＤxがカスタマイズ可能なモジュールＩＤiに含まれていないと判断した場合（ステップＳ１６０３：Ｎｏ）、当該モジュールＩＤxで識別されるモジュールのカスタマイズは許容されない旨の認証を行い、処理を終了する（ステップＳ１６０５）。
【０１９１】
上述した認証処理では、カスタマイズするアプリケーションを構成するサブモジュールを調べ、該サブモジュール単位で照合を行い、該サブモジュールがカスタマイズを許容できない場合、許容されないように認証する。このような認証処理を行うことで、個人情報を使用するアプリのカスタマイズの認証を実施することができる。
【０１９２】
また、本実施の形態及び変形例にかかる複合機１００では、プログラムＩＤデータベース６１２に個人情報を利用するモジュール又はサブモジュールのＩＤを登録することで、個人情報を使用するモジュールが含まれるかどうか判定ことが可能となる。
【０１９３】
次に、以上のように構成された本実施の形態にかかるＲＯＭ更新部５３０におけるフラッシュＲＯＭ３０４の更新処理について説明する。図１７は、本実施の形態にかかるＲＯＭ更新部５３０における上述した処理の手順を示すフローチャートである。
【０１９４】
まず、ＲＯＭ更新部５３０は、ＳＣＳ１２２のＲＯＭ更新モードスレッドにより起動され、ＳＣＳ１２２からＲＯＭ更新命令を受け取って、更新データでフラッシュＲＯＭ３０４の更新処理を開始する。この受け取ったＲＯＭ更新命令は、ＲＯＭ更新命令解読部５３１が解析する。
【０１９５】
そして、ＲＯＭ更新部５３０のＳＲＡＭ処理部５３２は、ＳＣＳ１２２から受け渡された更新対象の変数から、モジュールＩＤ、更新先アドレス、更新データオフセットおよび更新データサイズを順次取り出して、ＳＲＡＭ３０６に格納する（ステップＳ１７０１）。なお、ステップＳ１７０１で更新処理が途中でエラー発生等により中断した場合でも、次回の起動後に以降の処理を再実行することができる。
【０１９６】
次に、ＲＯＭ更新部５３０のＲＯＭ更新処理部５３３は、ＳＤＲＡＭ３０３の先頭アドレスから更新データオフセットで示されるアドレスから更新データサイズ分のデータを更新データとして読み出し、この更新データでフラッシュメモリ３０４上の更新先アドレスから始まるモジュールを更新する（ステップＳ１７０２）。
【０１９７】
そして、ＲＯＭ更新部５３０のＲＯＭ更新処理部５３３は、ＳＤＲＡＭ３０３の更新データと、更新されたフラッシュＲＯＭ３０４内のモジュールのデータとの間で同一性をチェックする（ステップＳ１７０３）。
【０１９８】
ＲＯＭ更新部５３０のＲＯＭ更新処理部５３３が、同一性がないと判断した場合（ステップＳ１７０３：異なる）、表示制御部５３４が、更新処理が失敗した旨のエラーを表示して（ステップＳ１７０４）、再びステップＳ１７０２から処理を開始する。
【０１９９】
一方、ＲＯＭ更新処理部５３３が、更新データと、更新されたフラッシュＲＯＭ３０４内のモジュールのデータとの間に同一性があると判断した場合（ステップＳ１７０３：同一）、ＲＯＭ更新処理部５３３が、更新対象の変数に、次のモジュールＩＤ、更新先アドレス、更新データオフセットおよび更新データサイズが存在するか否かを判断する（ステップＳ１７０５）。
【０２００】
そして、ＲＯＭ更新部５３０のＲＯＭ更新処理部５３３が、次のモジュールＩＤ、更新先アドレス、更新データオフセットおよび更新データサイズが存在すると判断した場合（ステップＳ１７０５：Ｙｅｓ）、次のモジュールＩＤ、更新先アドレス、更新データオフセットおよび更新データサイズを用いて、ステップＳ１７０２から処理を開始する。つまり、ＲＯＭ更新処理部５３３は、ＳＣＳ１２２から引き渡されたすべてのモジュールＩＤ、更新先アドレス、更新データオフセットおよび更新データサイズについて、ステップＳ１７０２〜Ｓ１７０４の処理を実行する。
【０２０１】
そして、ＲＯＭ更新部５３０のＲＯＭ更新処理部５３３が、次のモジュールＩＤ、更新先アドレス、更新データオフセットおよび更新データサイズが存在しないと判断した場合（ステップＳ１７０５：Ｎｏ）、ＳＲＡＭ処理部５３２がＳＲＡＭ３０６をクリアして、ＲＯＭ更新処理を終了する（ステップＳ１７０６）。
【０２０２】
上述した処理手順により、ＳＣＳ１２２で認証及び選定が終了したモジュールをフラッシュＲＯＭに書き込むことができる。
【０２０３】
複合機１００では、オペレーションパネル３１０又はＰＣ４０２から更新要求を受け付けた場合に、フラッシュカード３０７又はモジュール提供サーバ４０１から提供された更新データのモジュール又はサブモジュール毎に認証及び選定を行った後に、カスタマイズが許容され且つ選定された更新データで、フラッシュＲＯＭ３０４上のモジュールを更新する。
【０２０４】
従来の複合機では、利用者毎にソフトウェアのカスタマイズを許可すると、各ソフトウェアが利用している機密情報（個人情報等）の保護を維持することが難しくなる。これに対し、本実施の形態にかかる複合機１００では、モジュール又はサブモジュール単位でカスタマイズ可能か否か設定できるので、機密情報（個人情報等）を利用するモジュール又はサブモジュールのカスタマイズを抑止することが可能となる。これにより、機密情報（個人情報等）を保護することができる。
【０２０５】
つまり、本実施の形態にかかる複合機１００においては、モジュール単位でのカスタマイズを許可するか否かの認証をすることが可能となる。換言すれば、本実施の形態にかかる複合機１００は、アプリケーションのカスタマイズ時に、アプリケーションを構成するモジュール単位で認証する機能を備えているので、モジュール単位の使用許容制御をすることが可能となる。これにより、セキュリティを向上させることができる。
【０２０６】
特に、本実施の形態にかかる複合機１００では、プログラムＩＤデータベース６１２にアドレス帳を利用するモジュール又はサブモジュールのＩＤが登録されているので、利用者の個人情報を第三者が閲覧することを抑止することができる。
【０２０７】
認証情報に個人情報を使用するモジュールに対してカスタマイズを許可しないことを示す情報が格納されていることで、個人情報を使用するモジュールに対して使用制限を加えることができる。これにより、セキュリティを向上させることができる。
【０２０８】
この個人情報の例としては、個人のネットワークアドレスなどが考えられる。ネットワークアドレスは、個人の住所に相当し、特に重要であるため、当該個人情報を利用するモジュール又はサブモジュールのカスタマイズに制限を掛けることで、セキュリティを向上させることができる。
【０２０９】
さらに、本実施の形態にかかる複合機１００は、自装置内部で認証を行うことで、より効率的な認証を実現できる。
【０２１０】
（第２の実施の形態）
第１の実施の形態では、ＣＣＳ１３０の認証スレッド６０２による、ローカル認証の例について説明した。しかしながら、認証を複合機１００本体で行うことに制限するものではなく、外部に認証を行わせてもよい。そこで、第２の実施の形態では、認証サーバで認証を行うリモート認証の例について説明する。なお、複合機１００の構成は特に変更がないので説明を省略する。
【０２１１】
図１８は、第２の実施の形態にかかる複合機１００を含むネットワーク構成を示した図である。図１８に示すように、ネットワーク４００には、さらに認証サーバ１８０１が接続されている。
【０２１２】
そして、認証サーバ１８０１は、プログラムＩＤデータベース６１２を備え、モジュール単位又はサブモジュール単位で、カスタマイズ可能か否かの認証を行う。
【０２１３】
図１９は、ＣＣＳ１３０で実行されるプロセスを説明した図である。図１９に示すように、ＣＣＳ１３０のプロセスは、制御スレッド６０１と、認証スレッド１９０１と、ＸＭＬ変換スレッド６０３と、で構成されている。そして、ＣＣＳ１３０のプロセスは、各モジュールに対してカスタマイズの認証処理を行い、各モジュールの認証の結果をＸＭＬ形式に変換し、認証ファイルとしてＨＤＤ１０３に格納する。
【０２１４】
また、ＨＤＤ１０６は、認証ファイル２２６と、設定情報１９０２と、機器ＩＤ１９０３と、を記憶する。本実施の形態にかかる設定情報１９０２では、認証サーバ１８０１で認証する旨と、図２０に示すような認証サーバのアドレスが記載されている。機器ＩＤ１９０３は、複合機１００を特定する機器ＩＤとする。
【０２１５】
認証スレッド１９０１は、設定情報１９０２を参照することで、認証を認証サーバ１８０１で行うこと、及び当該認証サーバ１８０１のアドレスを認識する。そして、認証スレッド１９０１は、当該アドレスが指し示す認証サーバ１８０１にアクセスし、認証を要求する。このために、認証スレッド１９０１は、ＨＤＤ１０３の機器ＩＤ１９０３と、カスタマイズの対象となるモジュールＩＤ又はサブモジュールＩＤを、認証サーバ１８０１に送信する。この送信には、ＮＣＳ１２８を用いる。
【０２１６】
そして、認証サーバ１８０１は、機器ＩＤに対応したプログラムＩＤデータベース６１２に含まれたモジュールＩＤと、を受信した（サブ）モジュールＩＤと、の照合で、認証を行う。そして、認証結果を、複合機１００の認証スレッド１９０１に送信する。なお、認証スレッド１９０１が行う認証処理は、図１６と同様として説明を省略する。
【０２１７】
このように、ネットワーク４００を介して接続された認証サーバ１８０１でも認証を行うことができる。この場合、よりセキュリティの高い認証を行うことが可能となる。
【０２１８】
また、認証スレッド１９０１から認証を行う際に、ＸＭＬ変換スレッド６０３が認証要求をＸＭＬ形式に変換し、ＳＯＡＰメッセージを生成する。また、ＸＭＬ変換スレッド６０３は、認証サーバ１８０１から受信した認証結果が記載されたＳＯＡＰメッセージを、ＸＭＬ形式から、認証スレッド１９０１が認識可能な形式に変換し、認証結果を、認証スレッド１９０１に受け渡す。このように、認証サーバ１８０１と複合機１００間で、ＳＯＡＰメッセージによる送受信がなされる。
【０２１９】
そして、ＳＯＡＰメッセージの送受信を行うためには、ＮＣＳ１２８を用いる。ＮＣＳ１２８は、ＳＯＡＰプロキシ１９１１と、ＳＯＡＰリスナ１９１２と、ｈｔｔｐによるサービスを提供するスレッド１９１３と、ｆｔｐによるサービスを提供するスレッド１９１４と、ｓｍｔｐによるサービスを提供するスレッド１９１５等と、が動作している。
【０２２０】
ＳＯＡＰプロキシ１９１１は、メッセージ送信手段を構成し、ＸＭＬ形式の認証（結果）ファイル２２６を含み、また送信先のＳＯＡＰサーバとなるネットワーク上の他の複合機、ＰＣ又は管理サーバのＵＲＩ（Uniform  Resource  Identifier）を指定した送信用のＳＯＡＰメッセージを生成する。
【０２２１】
ＳＯＡＰプロキシ１９１１は、ＳＯＡＰメッセージで指定されたアドレスに、生成されたＳＯＡＰメッセージを送信する。本実施の形態においては、ＳＯＡＰメッセージの送信先は設定情報１９０２で設定されている。
【０２２２】
ＳＯＡＰリスナ１９１２は、メッセージ受信手段を構成し、ＳＯＡＰメッセージの受信と、受信したＳＯＡＰメッセージの内容を解析とを行う。そして、ＳＯＡＰリスナ１９１２は、ＳＯＡＰメッセージの解析結果を、他のコントロールサービスやアプリに受け渡す。このために、ＳＯＡＰリスナ１９１２は、解析結果の受け渡し先であるコントロールサービス又はアプリを選定して、ＳＯＡＰメッセージの解析結果、又はＳＯＡＰメッセージを受信した旨を、選定されたプロセスに通知する。
【０２２３】
図２１は、ＳＯＡＰプロキシ１９１１による、送信用のＳＯＡＰメッセージに格納されるデータの構造を示した図である。図２１では、データ構造のみ示し、ＸＭＬのタグ等は省略してある。そして、図２１に示すように、ＳＯＡＰメッセージの本文には、機器ＩＤの他、（サブ）モジュールＩＤが格納される。そして、ＳＯＡＰメッセージに、機器ＩＤと、（サブ）モジュールＩＤが格納されていることで、認証サーバ１８０１で認証を行うことが可能となる。
【０２２４】
図２２は、ＮＣＳ１２８のＳＯＡＰプロキシ１９１１により生成されるＳＯＡＰメッセージの構造を示す説明図である。図２２に示すように、ＳＯＡＰメッセージは、ヘッダ２２００とＳＯＡＰエンベロープ２２１０から構成される。更に、ＳＯＡＰエンベロープ２２１０は、ＳＯＡＰヘッダ２２１１とＳＯＡＰメッセージ本体２２１２から構成される。
【０２２５】
図２２に示すように、ＳＯＡＰヘッダ２２００には、ＳＯＡＰメッセージの送信先のＵＲＩ（Uniform  Resource  Identifier）が設定される。ＳＯＡＰメッセージ本体２２１２には、＜ＳＯＡＰ−ＥＮＶ：Ｂｏｄｙ＞タグの要素として、図２１に示した内容がＸＭＬ形式で挿入される。
【０２２６】
図２３は、複合機１００及び認証サーバ１８０１による認証処理を示すシーケンスを示す図である。
【０２２７】
まず、ＣＣＳ１３０は、ＨＤＤ１０３に格納された設定情報６１１から認証サーバ１８０１のアドレスを読み取る（ステップＳ２３０１）。
【０２２８】
その後、ＣＣＳ１３０は、読み取ったアドレスを用いて機器ＩＤと共に、カスタマイズの対象である（サブ）モジュールを識別する（サブ）モジュールＩＤを、認証サーバ１８０１に送信する（ステップＳ２３０２）。
【０２２９】
認証サーバ１８０１は、受信した（サブ）モジュールＩＤと、受信した機器ＩＤに対するプログラムＩＤデータベース６１２に格納されたモジュールＩＤと、を照合することにより認証を行い、認証結果をＣＣＳ１３０に送信する（ステップＳ２３０３）。
【０２３０】
上述した処理手順により、認証サーバ１８０１で行った認証結果をＣＣＳ１３０が取得できるので、認証結果に基づいたモジュール又はサブモジュールのカスタマイズが可能となる。
【０２３１】
本実施の形態にかかる複合機１００は、ネットワークを介して接続されたＰＣのカスタマイズを受け付けることを可能にするとともに、認証も認証サーバ１８０１で実行できる。つまり、複合機１００は、遠隔地からの制御を可能としている。
【０２３２】
第２の実施の形態にかかる複合機１００は、ネットワークを介して接続された認証サーバで認証を行うことで、より客観的な認証が可能となる。
【図面の簡単な説明】
【０２３３】
【図１】第１の実施の形態にかかる複合機の全体構成を示すブロック図である。
【図２】第１の実施の形態にかかる複合機に搭載されているアプリケーションのモジュール構成を示した説明図である。
【図３】複合機のハードウェア構成を示した図である。
【図４】複合機を含むネットワーク構成を示した説明図である。
【図５】複合機起動部の構成を示すブロック図である。
【図６】ＣＣＳで実行されるプロセスを説明した図である。
【図７】プログラムＩＤデータベースのテーブル構造を示した図である。
【図８】カスタマイズ用の認証ファイルの概念を示した図である。
【図９】第１の実施の形態にかかる複合機が起動してから、モジュールの更新が行われるまでの処理の手順を示すフローチャートである。
【図１０】第１の実施の形態にかかるプログラム起動部における、コントロールサービス又はアプリを起動する処理の手順を示すフローチャートである。
【図１１】第１の実施の形態にかかるＲＯＭ更新アプリにおける更新データの格納処理の手順を示すフローチャートである。
【図１２】第１のＲＯＭ更新アプリにより更新データが格納された更新データ領域の例を示した図である。
【図１３】第１の実施の形態にかかるＳＣＳにおける、更新データの選定処理およびＲＯＭ更新命令発行処理の第１の手順を示すフローチャートである。
【図１４】第１の実施の形態にかかるＳＣＳにおける、更新データの選定処理およびＲＯＭ更新命令発行処理の第２の手順を示すフローチャートである。
【図１５】第１の実施の形態にかかるＣＣＳにおける認証処理の手順を示すフローチャートである。
【図１６】変形例にかかるＣＣＳにおける認証処理の手順を示すフローチャートである。
【図１７】第１の実施の形態にかかるＲＯＭ更新部における、フラッシュＲＯＭの更新処理の手順を示すフローチャートである。
【図１８】第２の実施の形態にかかる複合機を含むネットワーク構成を示した図である。
【図１９】第２の実施の形態にかかるＣＣＳで実行されるプロセスを説明した図である。
【図２０】第２の実施の形態にかかる設定情報に含まれる認証サーバのアドレスの例を示す図である。
【図２１】第２の実施の形態にかかる、ＳＯＡＰプロキシによる、送信用のＳＯＡＰメッセージに格納されるデータの構造を示した図である。
【図２２】第２の実施の形態にかかる、ＮＣＳのＳＯＡＰプロキシにより生成されるＳＯＡＰメッセージの構造を示す説明図である。
【図２３】第２の実施の形態にかかる複合機及び認証サーバによる認証処理を示すシーケンスを示す図である。
【符号の説明】
【０２３４】
１００  複合機
１０１，１０２  プリンタエンジン
１０３  ＨＤＤ
１０４  その他ハードウェアリソース
１０５  ネットワークＩ／Ｆ
１０６  ＳＤＲＡＭ
１１０  ソフトウェア群
１１１  プリンタアプリ
１１２  コピーアプリ
１１３  ファックスアプリ
１１４  スキャナアプリ
１１５  メール自動配信アプリ
１１６  工程検査アプリ
１１７  ＲＯＭ更新アプリ
１２０  プラットフォーム
１２１  ＯＳ
１２２  ＳＣＳ
１２３  ＳＲＭ
１２４  ＥＣＳ
１２５  ＭＣＳ
１２６  ＯＣＳ
１２７  ＦＣＳ
１２８  ＮＣＳ
１２９  ＵＣＳ
１３０  ＣＣＳ
１４０  複合機起動部
１５０  アプリケーション
１５１  入力処理部
１５２  格納処理部
１５３  通知部
１７０  操作パネル
２００ａ〜２００ｍ  サブモジュール
２２６  認証ファイル
３００  コントローラボード
３０１  ＡＳＩＣ
３０２  ＣＰＵ
３０４  フラッシュメモリ
３０６  ＳＲＡＭ
３０７  フラッシュカード
３０８  フラッシュカードインターフェース部
３０９  フラッシュカード
３１０  オペレーションパネル
３２０  ＦＣＵ
３３０  ＵＳＢ
３４０  ＩＥＥＥ１３９４
３５０  ＬＡＮボード
３６０  プリンタ
４００  ネットワーク
４０１  モジュール提供サーバ
４０２  ＰＣ
４０３  複合機
５１０  モニタ
５２０  プログラム起動部
５２１  起動モード設定部
５２２  サービス層起動部
５２３  アプリ起動部
５２４  アプリ起動情報設定部
５３０  ＲＯＭ更新部
５３１  ＲＯＭ更新命令解読部
５３２  ＳＲＡＭ処理部
５３３  ＲＯＭ更新処理部
５３４  表示制御部
６０１  制御スレッド
６０２  認証スレッド
６０３  変換スレッド
６１１  設定情報
６１２  プログラムＩＤデータベース
１８０１  認証サーバ
１９０１  認証スレッド
１９１１  ＳＯＡＰプロキシ
１９１２  ＳＯＡＰリスナ
１９１３  ｈｔｔｐスレッド
１９１４  ｆｔｐスレッド
１９１５  ｓｍｔｐスレッド
【図１】
0005081668.tif 000002
【図２】
0005081668.tif 000003
【図３】
0005081668.tif 000004
【図４】
0005081668.tif 000005
【図５】
0005081668.tif 000006
【図６】
0005081668.tif 000007
【図７】
0005081668.tif 000008
【図８】
0005081668.tif 000009
【図９】
0005081668.tif 000010
【図１０】
0005081668.tif 000011
【図１１】
0005081668.tif 000012
【図１２】
0005081668.tif 000013
【図１３】
0005081668.tif 000014
【図１４】
0005081668.tif 000015
【図１５】
0005081668.tif 000016
【図１６】
0005081668.tif 000017
【図１７】
0005081668.tif 000018
【図１８】
0005081668.tif 000019
【図１９】
0005081668.tif 000020
【図２０】
0005081668.tif 000021
【図２１】
0005081668.tif 000022
【図２２】
0005081668.tif 000023
【図２３】
0005081668.tif 000024