(57)【要約】【課題】他のプログラムに動的に処理を割り込ませることが可能なプログラムの実行を適切に制限することのできる電子機器、プログラム実行制御方法、及びプログラムの提供を目的とする。【解決手段】適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な第二のプログラムに関連付けられている第二のデータと、前記第一のプログラムに関連付けられている第一のデータとが予め定義された対応関係に合致するか否かに基づいて前記第二のプログラムの適用の可否を判定する判定手段と、前記判定手段の判定結果に応じて、前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手段とを有することにより上記課題を解決する。【選択図】図５
2009271726.tif 000002
【特許請求の範囲】
【請求項１】
適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な第二のプログラムに関連付けられている第二のデータと、前記第一のプログラムに関連付けられている第一のデータとが予め定義された対応関係に合致するか否かに基づいて前記第二のプログラムの適用の可否を判定する判定手段と、
前記判定手段の判定結果に応じて、前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手段とを有することを特徴とする電子機器。
【請求項２】
前記第一のデータ及び前記第二のデータはそれぞれが付加されているプログラムの作成者を示すデータであり、
前記判定手段は、前記第一のデータと前記第二のデータとが一致する場合に前記第二のプログラムの適用は可能であると判定することを特徴とする請求項１記載の電子機器。
【請求項３】
前記第一のデータは複数の前記第一のプログラムのそれぞれを識別するプログラム識別子であり、前記第二のデータは前記第二のプログラムの作成者を示すデータであり、
前記プログラム識別子と前記作成者との適用可能な対応関係を判定可能な対応情報を管理する管理手段を有し、
前記判定手段は、前記第一のデータと前記第二のデータと前記対応情報とに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項１記載の電子機器。
【請求項４】
前記第一のデータは複数の前記第一のプログラムのそれぞれを識別するプログラム識別子であり、前記第二のデータは複数の前記第二のプログラムのそれぞれを識別するプログラム識別子であり、
前記第一プログラムのプログラム識別子と前記第二のプログラムの識別子との適用可能な対応関係を判定可能な対応情報を管理する管理手段を有し、
前記判定手段は、前記第一のデータと前記第二のデータと前記対応情報とに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項１記載の電子機器。
【請求項５】
前記第一のデータ及び前記第二のデータはそれぞれが付加されているプログラムの作成者を示すデータであり、
前記第一プログラムの作成者と前記第二のプログラムの作成者との適用可能な対応関係を判定可能な対応情報を管理する管理手段を有し、
前記判定手段は、前記第一のデータと前記第二のデータと前記対応情報とに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項１記載の電子機器。
【請求項６】
適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な複数の第二のプログラムについて実行時期の排他関係を判定可能な対応情報を管理する管理手段と、
既に適用中の前記第二のプログラムと、これから適用される前記第二のプログラムとが排他関係にあるか否かを前記対応情報に基づいて判定する判定手段と、
前記判定手段の判定結果に応じて、こらから適用される前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手段とを有することを特徴とする電子機器。
【請求項７】
電子機器が実行するプログラム実行制御方法であって、
適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な第二のプログラムに関連付けられている第二のデータと、前記第一のプログラムに関連付けられている第一のデータとが予め定義された対応関係に合致するか否かに基づいて前記第二のプログラムの適用の可否を判定する判定手順と、
前記判定手順の判定結果に応じて、前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手順とを有することを特徴とするプログラム実行制御方法。
【請求項８】
前記第一のデータ及び前記第二のデータはそれぞれが付加されているプログラムの作成者を示すデータであり、
前記判定手順は、前記第一のデータと前記第二のデータとが一致する場合に前記第二のプログラムの適用は可能であると判定することを特徴とする請求項７記載のプログラム実行制御方法。
【請求項９】
前記第一のデータは複数の前記第一のプログラムのそれぞれを識別するプログラム識別子であり、前記第二のデータは前記第二のプログラムの作成者を示すデータであり、
前記判定手順は、前記プログラム識別子と前記作成者との適用可能な対応関係を判定可能な対応情報を管理する管理手段と、前記第一のデータ及び前記第二のデータとに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項７記載のプログラム実行制御方法。
【請求項１０】
前記第一のデータは複数の前記第一のプログラムのそれぞれを識別するプログラム識別子であり、前記第二のデータは複数の前記第二のプログラムのそれぞれを識別するプログラム識別子であり、
前記判定手順は、前記第一プログラムのプログラム識別子と前記第二のプログラムの識別子との適用可能な対応関係を判定可能な対応情報を管理する管理手手段と、前記第一のデータ及び前記第二のデータとに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項７記載のプログラム実行制御方法。
【請求項１１】
前記第一のデータ及び前記第二のデータはそれぞれが付加されているプログラムの作成者を示すデータであり、
前記判定手順は、前記第一プログラムの作成者と前記第二のプログラムの作成者との適用可能な対応関係を判定可能な対応情報を管理する管理手段と、前記第一のデータ及び前記第二のデータとに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項７記載のプログラム実行制御方法。
【請求項１２】
電子機器が実行するプログラム実行制御方法であって、
適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な複数の第二のプログラムについて実行時期の排他関係を判定可能な対応情報を管理する管理手段に基づいて、既に適用中の前記第二のプログラムと、これから適用される前記第二のプログラムとが排他関係にあるか否かを前記対応情報に基づいて判定する判定手順と、
前記判定手順の判定結果に応じて、こらから適用される前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手順とを有することを特徴とするプログラム実行制御方法。
【請求項１３】
電子機器に、
適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な第二のプログラムに関連付けられている第二のデータと、前記第一のプログラムに関連付けられている第一のデータとが予め定義された対応関係に合致するか否かに基づいて前記第二のプログラムの適用の可否を判定する判定手順と、
前記判定手順の判定結果に応じて、前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手順とを実行させるためのプログラム。
【請求項１４】
前記第一のデータ及び前記第二のデータはそれぞれが付加されているプログラムの作成者を示すデータであり、
前記判定手順は、前記第一のデータと前記第二のデータとが一致する場合に前記第二のプログラムの適用は可能であると判定することを特徴とする請求項１３記載のプログラム。
【請求項１５】
前記第一のデータは複数の前記第一のプログラムのそれぞれを識別するプログラム識別子であり、前記第二のデータは前記第二のプログラムの作成者を示すデータであり、
前記判定手順は、前記プログラム識別子と前記作成者との適用可能な対応関係を判定可能な対応情報を管理する管理手段と、前記第一のデータ及び前記第二のデータとに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項１３記載のプログラム。
【請求項１６】
前記第一のデータは複数の前記第一のプログラムのそれぞれを識別するプログラム識別子であり、前記第二のデータは複数の前記第二のプログラムのそれぞれを識別するプログラム識別子であり、
前記判定手順は、前記第一プログラムのプログラム識別子と前記第二のプログラムの識別子との適用可能な対応関係を判定可能な対応情報を管理する管理手手段と、前記第一のデータ及び前記第二のデータとに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項１３記載のプログラム。
【請求項１７】
前記第一のデータ及び前記第二のデータはそれぞれが付加されているプログラムの作成者を示すデータであり、
前記判定手順は、前記第一プログラムの作成者と前記第二のプログラムの作成者との適用可能な対応関係を判定可能な対応情報を管理する管理手段と、前記第一のデータ及び前記第二のデータとに基づいて前記第二のプログラムの適用の可否を判定することを特徴とする請求項１３記載のプログラム。
【請求項１８】
電子機器に、
適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な複数の第二のプログラムについて実行時期の排他関係を判定可能な対応情報を管理する管理手段に基づいて、既に適用中の前記第二のプログラムと、これから適用される前記第二のプログラムとが排他関係にあるか否かを前記対応情報に基づいて判定する判定手順と、
前記判定手順の判定結果に応じて、こらから適用される前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手順とを実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電子機器、プログラム実行制御方法、及びプログラムに関し、特に他のプログラムに動的に処理を割り込ませることが可能なプログラムの実行を制御する電子機器、プログラム実行制御方法、及びプログラムに関する。
【背景技術】
【０００２】
従来、特に組み込み機器等において動作するプログラムの障害解析（デバッグ等）の代表的な作業として、プログラムが出力するログの解析が行われている。すなわち、プログラムのソースコードには、プログラムが用いている変数の値や、プログラムが動作しているハードウェアの状態を示す情報等をログファイルに出力するための命令（例えば、Ｃ言語におけるｐｒｉｎｔｆ関数）が予め各所に埋め込まれている。障害が発生した際、斯かる命令（以下、「ログ出力命令」という。）に従って出力されたログファイルを解析することにより、障害の原因が推測又は特定される。
【０００３】
しかし、予め埋め込まれたログ出力命令に基づいて出力されるログファイル（最初に出力されるログファイル）では、詳細な解析を行うには情報として不十分な場合が多々ある。斯かる場合、最初に出力されるログファイルに基づいて、或る程度障害箇所が絞り込まれる。続いて、その障害箇所周辺について更に詳細なログを出力するように、プログラムのソースコードが修正され、コンパイル及びリンクが行われた上で、プログラムの置き換えが行われる。改めて出力されるログファイルによっても原因が特定できない場合は、更に、ソースコードにログ出力命令が埋め込まれ、上記作業が繰り返される。このように、ログに基づいて障害解析を行う場合、時として大変煩雑な作業が要求されていた。
【０００４】
そこで、従来、動作中のプログラムの任意の箇所（診断位置）に当該プログラムの診断用プログラムの処理を動的に（実行時に）割り込ませる技術が存在する。診断用プログラムでは、診断対象となるプログラムの変数の値等を参照することができる。診断用プログラムの処理の終了後は、診断対象となるプログラムについて診断用プログラムによって割り込まれた位置に処理が復帰する。斯かる技術によれば、診断対象となるプログラムのソースコードを修正することなく、診断用プログラムによって診断対象となるプログラムのログの出力が可能となる。
【特許文献１】特開２００４−１３９５７２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、斯かる診断用プログラムはあらゆるプログラムに適用可能であるため、適用対象のプログラム（アプリケーション）の開発者又は保守担当者でない者によって作成された診断用プログラムが安易に適用される可能性がある。その結果、適用されたプログラム又は機器全体の動作が不安定となる可能性があるばかりか、セキュリティが適切に確保されない可能性が生じる。また、排他的な関係にある複数の診断用プログラムが同時に実行された場合、それぞれの診断用プログラムで意図した動作が得られない可能性がある。
【０００６】
本発明は、上記の点に鑑みてなされたものであって、他のプログラムに動的に処理を割り込ませることが可能なプログラムの実行を適切に制限することのできる電子機器、プログラム実行制御方法、及びプログラムの提供を目的とする。
【課題を解決するための手段】
【０００７】
そこで上記課題を解決するため、本発明は、適用対象とされた第一のプログラムに動的に処理を割り込ませることが可能な第二のプログラムに関連付けられている第二のデータと、前記第一のプログラムに関連付けられている第一のデータとが予め定義された対応関係に合致するか否かに基づいて前記第二のプログラムの適用の可否を判定する判定手段と、前記判定手段の判定結果に応じて、前記第二のプログラムを前記第一のプログラムに適用して実行させる実行制御手段とを有することを特徴とする。
【０００８】
このような電子機器では、他のプログラムに動的に処理を割り込ませることが可能なプログラムの実行を適切に制限することができる。
【発明の効果】
【０００９】
本発明によれば、他のプログラムに動的に処理を割り込ませることが可能なプログラムの実行を適切に制限することのできる電子機器、プログラム実行制御方法、及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【００１０】
以下、図面に基づいて本発明の実施の形態を説明する。図１は、本発明の実施の形態における機器管理システムの構成例を示す図である。図１の機器管理システム１において、管理サーバ１０と、機器２０ａ、機器２０ｂ及び機器２０ｃ（以下、総称する場合「機器２０」という。）とは、オフィスにおけるＬＡＮ（Local Area Network）等のネットワーク５０（有線又は無線の別は問わない。）を介して接続されている。
【００１１】
機器２０は、コピー、ファクシミリ、プリンタ、及びスキャナ等の複数の機能を一台の筐体において実現する画像形成装置（複合機）である。機器２０は、ＣＰＵやメモリを備え、メモリに記録されたプログラムに従ったＣＰＵによる制御に基づいて各種の機能を実現する。なお、本実施の形態では、機器２０が電子機器の一例に相当する。
【００１２】
管理サーバ１０は、機器２０において利用されるプログラムに対して適用される追加プログラムの管理及び当該追加プログラムの機器２０への転送等を行うコンピュータである。本実施の形態において、追加プログラムとは、適用対象とされるプログラムの任意の箇所において、当該追加プログラムに定義された処理を動的に割り込ませることのできるプログラムをいう。
【００１３】
図２は、追加プログラムの概要を説明するための図である。図２において、５０１は、追加プログラム５０５が適用されるプログラムにおける仮想メモリ上における命令の配列を示す。プログラム５０１は、追加プログラム５０１が適用される前（通常実行時）は、命令１、２、３の順で処理を実行する。５０１ａは、プログラム５０１に追加プログラム５０１が適用された状態を示す。ここでは、命令１と命令２との間に追加プログラム５０５の処理を割り込ませる例が示されている。この場合、命令２がテーブル５０２への分岐命令に置き換えられる。テーブル５０２には、初期化処理、前処理（変数のスタックへの退避等）、追加プログラム５０５の呼び出し処理、後処理（スタックに退避されていた変数等の取り出し等）の後に命令２が実行され、プログラム５０１の命令３に戻るような定義がされている。
【００１４】
すなわち、追加プログラムが適用される場合、適用対象とされたプログラムの実行ステップが予め指定された箇所（追加位置）に到達すると、追加プログラムの処理が実行される。当該追加プログラムの処理が終了すると、適用対象とされたプログラムに処理制御が復帰する。その後、適用対象とされたプログラムは、追加位置より処理を再開する。なお、追加プログラムには、適用対象のプログラムに割り込ませる処理の他、適用対象とするプログラム及び追加位置を識別するための情報が含まれている。
【００１５】
追加プログラムの中では、適用対象とされるプログラムの変数等を参照可能である。したがって、追加プログラムによって、適用対象とされるプログラムの任意の箇所における変数の値等を示すログ情報を出力させるための処理や、新たな機能を実現するための処理を適用対象とされるプログラムに割り込ませることができる。
【００１６】
斯かる追加プログラムによれば、適用対象とされるプログラムについて、ソースコードの修正、コンパイル及びリンク、更に、再インストール等を行うことなく（すなわち、動的に）、ログ情報の出力や機能強化等を図ることができる。
【００１７】
図３は、本発明の実施の形態における機器のハードウェア構成の一例を示す図である。同図において、機器２０は、コントローラ６０１、オペレーションパネル６０２、ファクシミリコントロールユニット（ＦＣＵ）６０３、撮像部６０４、及び印刷部６０５等より構成される。
【００１８】
コントローラ６０１は、ＣＰＵ６１１、ＡＳＩＣ６１２、ＮＢ６２１、ＳＢ６２２、ＭＥＭ−Ｐ６３１、ＭＥＭ−Ｃ６３２、ＨＤＤ（ハードディスクドライブ）６３３、メモリカードスロット６３４、ＮＩＣ（ネットワークインタフェースコントローラ）６４１、ＵＳＢデバイス６４２、ＩＥＥＥ１３９４デバイス６４３、セントロニクスデバイス６４４により構成される。
【００１９】
ＣＰＵ６１１は、種々の情報処理用のＩＣである。ＡＳＩＣ６１２は、種々の画像処理用のＩＣである。ＮＢ６２１は、コントローラ６０１のノースブリッジである。ＳＢ６２２は、コントローラ６０１のサウスブリッジである。ＭＥＭ−Ｐ６３１は、機器２０のシステムメモリである。ＭＥＭ−Ｃ６３２は、機器２０のローカルメモリである。ＨＤＤ６３３は、機器２０のストレージである。メモリカードスロット６３４は、メモリカード６３５をセットするためのスロットである。ＮＩＣ６４１は、ＭＡＣアドレスによるネットワーク通信用のコントローラである。ＵＳＢデバイス６４２は、ＵＳＢ規格の接続端子を提供するためのデバイスである。ＩＥＥＥ１３９４デバイス６４３は、ＩＥＥＥ１３９４規格の接続端子を提供するためのデバイスである。セントロニクスデバイス６４４は、セントロニクス仕様の接続端子を提供するためのデバイスである。オペレーションパネル６０２は、オペレータが機器２０に入力を行うためのハードウェア（操作部）であると共に、オペレータが機器２０から出力を得るためのハードウェア（表示部）である。
【００２０】
図４は、本発明の実施の形態における機器のソフトウェア構成例を示す図である。図４において、機器２０は、標準アプリケーション２１と、ＳＤＫアプリケーション２２と、サービス層２３と、追加プログラム制御部２４と、ＯＳ２５と等を有する。これらのソフトウェアは、ＭＥＭ−Ｐ６３１におけるＲＡＭ上にロードされ、ＣＰＵ６１１に処理を実行させることによりその機能を実現させる。
【００２１】
標準アプリケーション２１は、機器２０の出荷時より標準機能として組み込まれているアプリケーションである。同図では、標準アプリケーション２１としてコピーアプリ２１ａ、ＦＡＸアプリ２１ｂ、プリンタアプリ２１ｃ、及びスキャナアプリ２１ｄが例示されている。
【００２２】
コピーアプリ２１ａは、コピー機能を実現するアプリケーションである。ＦＡＸアプリ２１ｂは、ＦＡＸ機能を実現するアプリケーションである。プリンタアプリ２１ｃは、印刷機能を実現するアプリケーションである。スキャナアプリ２１ｄは、スキャナ機能を実現するアプリケーションである。
【００２３】
ＳＤＫアプリ２２は、機器２０に専用のＳＤＫ（ソフトウェア開発キット）を使用して作成されたアプリケーションである。より詳しくは、サービス層２３の一部のＡＰＩ（Application Program Interface）が公開されており、ＳＤＫアプリ２２は、当該ＡＰＩを用いてサードベンダによって作成されたアプリケーションである。同図では、ＳＤＫアプリケーション２２として、ＳＤＫアプリ２２ａ及び２２ｂが例示されている。なお、各ＳＤＫアプリケーション２２には、証明書（電子証明書）が添付されている（又は関連付けられている）。例えば、ＳＤＫアプリ２２ａには証明書２２１ａが、ＳＤＫアプリ２２ｂには証明書２２１ｂが添付されている（以下、これらの証明書を総称する場合、「証明書２２１」という。）。証明書２２１には、所有者情報、公開鍵、認証局の署名、及びプログラムＩＤ等が含まれている。このうち、所有者情報は、当該証明書２２１が添付されたＳＤＫアプリケーション２２の作成者（開発ベンダ）の識別情報（例えば、ＩＤ）である。また、プログラムＩＤは、各ＳＤＫアプリケーション２２を一意に識別可能なＩＤである。
【００２４】
サービス層２３は、複数のアプリケーション２１によって共通に必要とされるサービス（機能）をアプリケーション２１に対して提供するプログラム群によって構成される。サービス層２３には、例えば、ネットワーク通信の仲介を行うプログラム、撮像部６０４や印刷部６０５等のハードウェアの制御を行うプログラム、メモリやハードディスクドライブ等の記憶装置の管理を行うプログラム、オペレーションパネル６０２の制御を行うプログラム等が存在する。
【００２５】
ＯＳ２５は、いわゆるＯＳ（Operating System）である。ＯＳ２５は、所定のものに限定されない。
【００２６】
追加プログラム制御部２４は、上述した追加プログラム（図中では、追加プログラム２６として示されている。）の実行制御等を行うソフトウェアである。例えば、追加プログラム制御部２４は、追加プログラム２６のダウンロード、適用対象への適用（実行）等を行う。なお、図示されるように、本実施の形態において各追加プログラム２６には証明書２６１が添付されている。証明書２６１は、電子証明書であり、例えば、所有者情報、公開鍵、認証局の署名、及びプログラムＩＤ等が含まれている。このうち、所有者情報は、当該証明書２６１が添付された追加プログラム２６の作成者（開発ベンダ）の識別情報（例えば、ＩＤ）である。また、プログラムＩＤは、各追加プログラム２６を一意に識別可能なＩＤである。なお、斯かる証明書２６１の構成は、ＳＤＫアプリケーション２２に対する証明書２２１と同じであるが、両者は必ずしも同じ構成である必要はない。
【００２７】
以下、機器２０の処理手順について説明する。図５は、第一の実施の形態における追加プログラムの適用処理を説明するためのフローチャートである。なお、同図では、既にユーザの認証は行われていることとする。すなわち、機器２０の各プログラムは、現在操作中のユーザ（カレントユーザ）を識別することが可能である。
【００２８】
オペレーションパネル６０２を介したユーザによる操作入力に応じ、追加プログラム制御部２４は、管理サーバ１０によって管理されている追加プログラム２６の一覧情報を管理サーバ１０より取得し、オペレーションパネル６０２に表示させる（Ｓ１０１）。
【００２９】
ユーザによって、一覧情報の中から利用する追加プログラム２６が選択されると（Ｓ１０２）、追加プログラム制御部２４は、選択された追加プログラム２６を管理サーバ１０よりダウンロードし、当該追加プログラム２６（以下「カレント追加プログラム２６」という。）に対するカレントユーザの利用権限の有無を確認する（Ｓ１０３）。当該利用権限の確認の有無は、例えば、予め定義されている、追加プログラム２６に対するアクセス制御情報等に基づいて行えばよい。当該アクセス制御情報には、追加プログラム２６ごとに利用可能なユーザ名等が定義されていてもよいし、ユーザごとに利用可能な追加プログラム２６のプログラム名（ファイル名）又はプログラムＩＤが定義されていてもよい。又は、単に、追加プログラム２６を利用可能なユーザとそうでないユーザとを識別可能な情報であってもよい。また、当該アクセス制御情報は、機器２０のＨＤＤ６３３に保存されていてもよいし、管理サーバ１０に保存されていてもよい。
【００３０】
カレントユーザに利用権限が有る場合（Ｓ１０３でＹｅｓ）、追加プログラム制御部２４は、カレント追加プログラム２６が、当該機器２０上で実行可能であるか否かを判定する（Ｓ１０４）。ここでの判定は、カレント追加プログラム２６が当該機器２０のプログラムの実行環境において実行可能であるか否かの判定に相当する。例えば、追加プログラム２６の属性情報として、追加プログラム２６が動作可能な機器２０の機種、サービス層２３のバージョン、ＯＳ２５のバージョン等が含まれており、当該機器２０における環境がそれらの情報（機種、バージョン等）に合致するか否かが判定される。なお、カレント追加プログラム２６の属性情報は、カレント追加プログラム２６と共に管理サーバ１０よりダウンロードされる。
【００３１】
カレント追加プログラム２６が当該機器２０上で実行可能である場合（Ｓ１０４でＹｅｓ）、追加プログラム制御部２４は、証明書２６１に基づいてカレント追加プログラム２６の認証処理（正当性の検証）を行う（Ｓ１０５）。を電子証明書に基づくプログラムの認証は、一般的な方式に従えばよい。
【００３２】
カレント追加プログラム２６が認証されると（Ｓ１０５でＹｅｓ）、追加プログラム制御部２４は、カレント追加プログラム２６の適用対象（適用先）のＳＤＫアプリケーション２２（ここでは、「ＳＤＫアプリ２２ａ」であるとする。）の証明書２２１ａより所有者情報を取得する（Ｓ１０６）。なお、カレント追加プログラム２６の適用対象となるプログラムを識別するための情報は、追加プログラム制御部２４が解釈可能な形式で追加プログラム２６内に含まれている。したがって、斯かる情報に基づいて、追加プログラム制御部２４は、適用対象がＳＤＫアプリ２２ａであると判定することができる。
【００３３】
続いて、追加プログラム制御部２４は、カレント追加プログラム２６の証明書２６１より所有者情報を取得する（Ｓ１０７）。続いて、追加プログラム制御部２４は、図６に示されるように、適用対象の所有者情報とカレント追加プログラム２６の所有者情報とを照合する（Ｓ１０８）。二つの所有者情報が一致する場合（Ｓ１０８でＹｅｓ）、追加プログラム制御部２４は、カレント追加プログラム２６１を適用対象のＳＤＫアプリ２２ａに適用する（Ｓ１０９）。具体的には、ＳＤＫアプリ２２ａの実行ステップがカレント追加プログラム２６内に指定された箇所（追加位置）に到達すると、追加プログラム制御部２４は、追加プログラム２６の処理を実行させる（割り込ませる）。
【００３４】
一方、カレントユーザにカレント追加プログラム２６の利用権限が無い場合（Ｓ１０３でＮｏ）、カレント追加プログラム２６が機器２０上で実行可能でない場合（Ｓ１０４でＮｏ）、カレント追加プログラム２６の認証に失敗した場合（Ｓ１０５でＮｏ）、又は適用対象の所有者情報とカレント追加プログラム２６の所有者情報とが一致しない場合（Ｓ１０８でＮｏ）、追加プログラム制御部２４は、カレント追加プログラム２６の適用を行わず、例えば、カレント追加プログラム２６が利用できない旨を示すメッセージをオペレーションパネル６０２に表示させる（Ｓ１１０）。
【００３５】
上述したように、第一の実施の形態によれば、適用対象の所有者情報と追加プログラム２６の所有者情報とが一致しない場合は、追加プログラム２６は実行されない。したがって、或る開発ベンダによって作成された追加プログラム２６が、他の開発ベンダによって開発されたＳＤＫアプリケーション２２に対して安易に適用されることが防止される。
【００３６】
続いて、第二の実施の形態について説明する。第二の実施の形態では第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については第一の実施の形態と同様でよい。
【００３７】
図７は、第二の実施の形態における追加プログラムの適用処理を説明するためのフローチャートである。図７中、図５と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
【００３８】
同図では、ステップＳ１０６がステップＳ１０６ａに、ステップＳ１０８がＳ１０８ａに置き換わっている。ステップＳ１０６ａにおいて、追加プログラム制御部２４は、カレント追加プログラム２６の適用対象のＳＤＫアプリ２２ａの証明書２２１ａよりプログラムＩＤを取得する。続いて、追加プログラム制御部２４は、カレント追加プログラム２６の証明書２６１より所有者情報を取得する（Ｓ１０７）。続いて、追加プログラム制御部２４は、適用可否判定テーブルを参照してカレント追加プログラム２６の適用の可否を判定する（Ｓ１０８ａ）。
【００３９】
図８は、適用可否判定テーブルの構成例を示す図である。同図において、適用可否判定テーブル３１は、ＳＤＫアプリケーション２２のプログラムＩＤごとに（すなわち、ＳＤＫアプリケーション２２ごとに）、いずれの所有者に係る追加プログラム２６が適用可能であるかが定義（登録）されている。例えば、同図では、プログラムＩＤが「ＳＤＫ−０００１」であるＳＤＫアプリケーション２２に対しては、所有者情報が「ＡＡＡ」、「ＢＢＢ」、又は「ＣＣＣ」である追加プログラム２６の適用が可能であることが定義されている。なお、適用可否判定テーブル３１は、機器２０のＨＤＤ６３３に保存されていてもよいし、管理サーバ１０に保存されていてもよい。また、適用可否判定テーブル３１は、管理者等、所定の者に限って編集可能とすればよい。
【００４０】
したがって、追加プログラム制御部２４は、ステップＳ１０６ａにおいて取得されたプログラムＩＤ（適用対象のプログラムＩＤ）を適用可否判定テーブル３１に当てはめることにより適用可能な所有者情報を判定し、当該所有者情報に、ステップＳ１０７において取得されたカレント追加プログラム２６の所有者情報が含まれているか否かによって、適用の可否を判定する。適用可能な所有者情報にカレント追加プログラム２６の所有者情報が含まれている場合（Ｓ１０８ａでＹｅｓ）、追加プログラム制御部２４は、カレント追加プログラム２６１を適用対象のＳＤＫアプリ２２ａに適用する（Ｓ１０９）。
【００４１】
適用可能な所有者情報にカレント追加プログラム２６の所有者情報が含まれていない場合（Ｓ１０８ａでＮｏ）、追加プログラム制御部２４は、カレント追加プログラム２６の適用は行わない（Ｓ１１０）。
【００４２】
上述したように、第二の実施の形態によれば、適用可否判定テーブル３１に基づいて追加プログラム２６の適用の可否が判定される。したがって、ＳＤＫアプリケーション２２と追加プログラム２６との所有者情報（開発ベンダ）が異なる場合であっても、追加プログラム２６を適用させることができる。よって、第一の実施の形態に比べて、追加プログラム２６の適用について柔軟性を向上させることができる。
【００４３】
なお、適用可否判定テーブル３１には、ＳＤＫアプリケーション２２と追加プログラム２６の所有者情報との対応関係ではなく、ＳＤＫアプリケーション２２と追加プログラム２６との対応関係を登録するようにしてもよい。具体的には、ＳＤＫアプリケーション２２のプログラムＩＤごとに、適用可能な追加プログラム２６のプログラムＩＤを登録するようにしてもよい。この場合、ステップＳ１０７では、カレント追加プログラム２６のプログラムＩＤを証明書２６１より取得し、当該プログラムＩＤを用いてステップＳ１０８ａにおける判定を行えばよい。但し、この場合、追加プログラム２６が作成されるたびに適用可否判定テーブル３１を更新する必要がある。したがって、適用可否判定テーブル３１の安定性（保守作業の軽減）の観点からは、図８に示される形態の方が好ましい。
【００４４】
斯かる観点を更に追求すれば、適用可否判定テーブル３１には、ＳＤＫアプリケーション２２の所有者情報と追加プログラム２６の所有者情報との対応関係を登録するようにしてもよい。この場合、新たな所有者（開発ベンダ）が追加されなければ、適用可否判定テーブル３１を変更する必要性は低いため、適用可否判定テーブル３１の安定性をより高めることができる。
【００４５】
続いて、第三の実施の形態について説明する。第三の実施の形態では第一の実施の形態と異なる点について説明する。したがって、特に言及しない点については第一の実施の形態と同様でよい。
【００４６】
図９は、第三の実施の形態における追加プログラムの適用処理を説明するためのフローチャートである。図９中、図５と同一ステップには同一ステップ番号を付し、その説明は適宜省略する。
【００４７】
同図では、ステップＳ１０６〜Ｓ１０８が、それぞれステップＳ１０６ｂ、１０７ｂ、Ｓ１０８ｂに置き換わっている。ステップＳ１０６ｂにおいて、追加プログラム制御部２４は、現在適用中（既に適用中）の追加プログラム２６のプログラムＩＤの一覧を生成する。なお、追加プログラム制御部２４は、追加プログラム２６の実行を制御するプログラムであるため、現在適用中である追加プログラム２６のプログラムＩＤを把握している。
【００４８】
続いて、追加プログラム制御部２４は、これから適用されるカレント追加プログラム２６の証明書２６１よりプログラムＩＤを取得する（Ｓ１０７ｂ）。続いて、追加プログラム制御部２４は、排他関係管理テーブルを参照してカレント追加プログラム２６の適用の可否を判定する（Ｓ１０８ｂ）。
【００４９】
図１０は、排他関係管理テーブルの構成例を示す図である。同図において、排他関係管理テーブル３２は、追加プログラム２６のプログラムＩＤごとに（すなわち、追加プログラム２６ごとに）、実行時期について排他的な関係にある（すなわち、同時に実行させることのできない又は同時に実行させることが好ましくない）追加プログラムのプログラムＩＤが定義（登録）されている。例えば、同図では、プログラムＩＤが「Ｐ０００１」である追加プログラム２６は、プログラムＩＤが「Ｐ０００２」、「Ｃ０００１」、「Ｃ０００２」、及び「Ｆ０００１」の追加プログラム２６とは排他的な関係にあることが定義されている。なお、排他関係管理テーブル３２は、機器２０のＨＤＤ６３３に保存されていてもよいし、管理サーバ１０に保存されていてもよい。また、排他関係管理テーブル３２は、管理者等、所定の者に限って編集可能とすればよい。
【００５０】
したがって、追加プログラム制御部２４は、ステップＳ１０７ｂにおいて取得されたカレント追加プログラム２６のプログラムＩＤに対して排他的な関係にある追加プログラム２６のプログラムＩＤを排他関係管理テーブル３２より取得し、取得されたプログラムＩＤの少なくともいずれか一つが、ステップＳ１０６ｂにおいて生成された現在適用中（実行中）の追加プログラム２６のプログラムＩＤの一覧に含まれているか否かによって適用の可否を判定する。排他的な関係にあるプログラムＩＤのいずれかが現在実行中のプログラムＩＤに含まれていない場合（Ｓ１０８ｂでＹｅｓ）、追加プログラム制御部２４は、カレント追加プログラム２６１を適用対象のＳＤＫアプリ２２ａに適用する（Ｓ１０９）。
【００５１】
適排他的な関係にあるプログラムＩＤのいずれかが現在実行中のプログラムＩＤに含まれている場合（Ｓ１０８ｂでＮｏ）、追加プログラム制御部２４は、カレント追加プログラム２６の適用は行わない（Ｓ１１０）。
【００５２】
なお、上記では、排他関係管理テーブル３２には排他的な関係を示す情報が管理されている例を示した。しかし、同時に実行可能な関係を示す情報を排他関係管理テーブル３２において管理するようにしてもよい。この場合であっても排他的な関係を判定することが可能だからである。
【００５３】
上述したように、第三の実施の形態によれば、排他的な関係にある追加プログラム２６の並列的な実行（同時期の実行）を適切に回避することができる。したがって、排他的な関係にある追加プログラム２６の並列的な実行による機器２０の不正動作の発生を防止することができる。なお、排他的な関係とは、例えば、適用対象が同じである、機器２０が備える同一のパラメータに対してアクセスする等の関係が挙げられる。但し、この条件が満たされることにより直ちに排他的な関係であると定義されることを意図するものではない。例えば、適用対象が同じであっても、お互いに干渉し合うことなく適用対象に処理を割り込ませることができるのであれば排他的な関係とはならない可能性もある。
【００５４】
なお、第三の実施の形態を、第一又は第二の実施の形態と組み合わせて実施してもよい。そうすることにより、適用対象のプログラムと追加プログラム２６との関係と、追加プログラム２６間の関係との組み合わせに基づいて、追加プログラム２６の適用及び実行を制限することができる。
【００５５】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００５６】
【図１】本発明の実施の形態における機器管理システムの構成例を示す図である。
【図２】追加プログラムの概要を説明するための図である。
【図３】本発明の実施の形態における機器のハードウェア構成の一例を示す図である。
【図４】本発明の実施の形態における機器のソフトウェア構成例を示す図である。
【図５】第一の実施の形態における追加プログラムの適用処理を説明するためのフローチャートである。
【図６】所有者情報の照合を概念的に示す図である。
【図７】第二の実施の形態における追加プログラムの適用処理を説明するためのフローチャートである。
【図８】適用可否判定テーブルの構成例を示す図である。
【図９】第三の実施の形態における追加プログラムの適用処理を説明するためのフローチャートである。
【図１０】排他関係管理テーブルの構成例を示す図である。
【符号の説明】
【００５７】
１、２    機器管理システム
１０      管理サーバ
１１      追加処理制御部
１２      追加プログラム管理部
２０      機器
２１      標準アプリケーション
２１ａ    コピーアプリ
２１ｂ    ＦＡＸアプリ
２１ｃ    プリンタアプリ
２１ｄ    スキャナアプリ
２２      ＳＤＫアプリケーション
２２ａ、２２ｂ    ＳＤＫアプリ
２３      サービス層
２４      追加プログラム制御部
２５      ＯＳ
２６      追加プログラム
２２１ａ、２２１ｂ、２６１    証明書
６０１    コントローラ
６０２    オペレーションパネル
６０３    ファクシミリコントロールユニット
６０４    撮像部
６０５    印刷部
６１１    ＣＰＵ
６１２    ＡＳＩＣ
６２１    ＮＢ
６２２    ＳＢ
６３１    ＭＥＭ−Ｐ
６３２    ＭＥＭ−Ｃ
６３３    ＨＤＤ
６３４    メモリカードスロット
６３５    メモリカード
６４１    ＮＩＣ
６４２    ＵＳＢデバイス
６４３    ＩＥＥＥ１３９４デバイス
６４４    セントロニクスデバイス
【図１】
2009271726.tif 000003
【図２】
2009271726.tif 000004
【図３】
2009271726.tif 000005
【図４】
2009271726.tif 000006
【図５】
2009271726.tif 000007
【図６】
2009271726.tif 000008
【図７】
2009271726.tif 000009
【図８】
2009271726.tif 000010
【図９】
2009271726.tif 000011
【図１０】
2009271726.tif 000012