(57)【要約】【課題】複数のプログラムが有する依存関係を階層化し、階層化した結果に従ってプログラムの動作を管理する画像処理装置、画像形成装置、プログラム管理方法及びプログラムを管理する管理プログラムを提供する。【解決手段】画像処理装置１０は、依存関係を有する複数のプログラム３１と、プログラム３１間の依存関係を示す依存情報データ３２とが格納された画像処理装置１０であって、依存情報データ３２に基づいて、複数のプログラム３１間の依存関係が階層化された階層構造情報を生成する構成管理手段７１と、前記階層構造情報が格納される階層構造情報テーブル８０と、階層構造情報テーブル８０を用いて、プログラム３１の起動、終了、インストール、及びアンインストールの少なくともいずれかを行う動作管理手段７２とを有することを特徴とする。【選択図】図６
2008041057.tif 000002
【特許請求の範囲】
【請求項１】
依存関係を有する複数のプログラムと、前記プログラム間の依存関係を示す依存情報データとが格納された画像処理装置であって、
前記依存情報データに基づいて、前記複数のプログラム間の依存関係が階層化された階層構造情報を生成する構成管理手段と、
前記階層構造情報が格納される階層構造情報テーブルと、
前記階層構造情報テーブルを用いて、前記プログラムの起動、終了、インストール、及びアンインストールの少なくともいずれかを行う動作管理手段とを有することを特徴とする画像処理装置。
【請求項２】
前記動作管理手段は、
所定のプログラムが起動した場合に、
前記構成管理手段に対して、前記階層構造情報の取得を要求し、取得した前記階層構造情報に基づいて、前記所定のプログラムが使用するプログラムを起動することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記動作管理手段は、
所定のプログラムを終了する場合に、
前記構成管理手段に対して、前記階層構造情報の取得を要求し、取得した前記階層構造情報に基づいて、前記所定のプログラムが使用するプログラムに終了を要求することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記動作管理手段は、
前記プログラムをインストール又はアンインストールする場合に、
前記構成管理手段に対して、インストール又はアンインストールを行うように要求することを特徴とする請求項１ないし３のいずれか一項に記載の画像処理装置。
【請求項５】
前記構成管理手段は、
前記プログラムをインストール又はアンインストールした場合に、
前記階層構造情報テーブルを更新することを特徴とする請求項１ないし４のいずれか一項に記載の画像処理装置。
【請求項６】
前記構成管理手段は、
前記階層構造情報の取得を要求された場合に、
前記階層構造情報テーブルに基づいて、前記階層構造情報を返答することを特徴とする請求項１ないし５のいずれか一項に記載の画像処理装置。
【請求項７】
前記プログラムに関する情報を表示画面に表示する表示手段と、
前記プログラムに関する情報を閲覧できる利用者か否かを認証する認証手段とを有し、
前記表示手段は、
前記認証手段により認証に成功した場合に、
前記プログラムに関する情報を表示することを特徴とする請求項１ないし６のいずれか一項に記載の画像処理装置。
【請求項８】
前記認証手段は、
認証した利用者毎に、前記プログラムに関する情報のうち、参照できる範囲を示す参照権限を決定することを特徴とする請求項１ないし７のいずれか一項に記載の画像処理装置。
【請求項９】
前記表示手段は、
前記参照権限に基づいて制限した範囲内の前記プログラムに関する情報を表示することを特徴とする請求項１ないし８のいずれか一項に記載の画像処理装置。
【請求項１０】
請求項１から９を有する該画像処理装置を備えたことを特徴とする画像形成装置。
【請求項１１】
依存関係を有する複数のプログラムと、前記プログラム間の依存関係を示す依存情報データとが格納された画像処理装置におけるプログラム管理方法であって、
前記依存情報データに基づいて、前記複数のプログラム間の依存関係が階層化された階層構造情報を生成する構成管理手順と、
前記階層構造情報が格納される階層構造情報テーブルと、
前記階層構造情報テーブルを用いて、前記プログラムの起動、終了、インストール、及びアンインストールの少なくともいずれかを行う動作管理手順とを有することを特徴とする画像処理装置におけるプログラム管理方法。
【請求項１２】
依存関係を有する複数のプログラムと、前記プログラム間の依存関係を示す依存情報データとが格納された画像処理装置におけるプログラムを管理する管理プログラムであって、
コンピュータを、
前記依存情報データに基づいて、前記複数のプログラム間の依存関係が階層化された階層構造情報を生成する構成管理手段と、
前記階層構造情報が格納される階層構造情報テーブルと、
前記階層構造情報テーブルを用いて、前記プログラムの起動、終了、インストール、及びアンインストールの少なくともいずれかを行う動作管理手段として機能させる画像処理装置におけるプログラムを管理する管理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、画像形成装置、プログラム管理方法及びプログラムを管理する管理プログラムに関するものである。
【背景技術】
【０００２】
現在のデジタル複合機（MFP：Multi-Function Peripheral）は、CPU（Central Processing Unit）の性能向上、メモリの大容量化、通信技術の高速化及びデジタル画像技術の高度化等、MFP（以下、「画像処理装置」と言う。）に関連する技術の進化に伴い、単にデジタル複写機としての機能だけでなく、ファクシミリ、プリンタ及びスキャナ機能等の様々な機能を搭載し、利用者の環境において様々な場面で利用されている。
【０００３】
そのため、利用者から用途に合わせた機能拡張を要求されることも多く、製造者（メーカー）側では、機能拡張を迅速に行うため、機能の拡張性や導入の柔軟性に優れた画像処理装置を設計しなければならない。
【０００４】
これらの点を鑑み提案された方法に、拡張機能のプログラムを蓄積したダウンロードサーバから、拡張したい機能を選択し、該当するプログラム及び認証情報をダウンロード（画像処理装置側に転送）することで、ダウンロードした認証情報に基づいて、プログラムを実行する方法等がある（例えば、特許文献１を参照。）。
【特許文献１】特開２００２―１５２４５８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかしながら、特開２００２―１５２４５８号公報による方法では、開発された拡張機能を迅速に導入する点で効果はあるが、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質に関して、下に挙げる問題点が解決されていない。
【０００６】
現在の画像処理装置では、導入した全ての拡張機能の仕様をシステムの中心に位置するプログラムが管理しており、この管理プログラムが、全ての拡張機能のプログラム構成を把握し、拡張機能の動作を管理する一極集中型の構造となっている。
【０００７】
そのため、拡張性の点においては、新規開発された拡張機能を導入する場合、管理プログラムのプログラムコードをその都度変更する必要があり拡張性がない。
【０００８】
また、柔軟性の点においては、画像処理装置を熟知した開発者が拡張機能を開発するとは限らず、サードベンダーを含め自社以外の製造者（メーカー）が、拡張機能のプログラムを提供することも考えられ、拡張機能のプログラムとプログラム管理部との依存性が高いため、機能拡張を導入するのが難しく柔軟性がない。
【０００９】
また、プラットフォームの異なる複数の画像処理装置に対して、同様の理由で機能の移植が難しく柔軟性がない。
【００１０】
その他、一極集中型の構造では、多数の拡張機能が導入された状態において、拡張機能の起動や終了及び追加や削除等の管理が複雑となり、各機能を制御するのが困難であり、管理が複雑になれば処理性能にも影響を及ぼす可能性がある。
【００１１】
このように、拡張機能のプログラムとプログラム管理部との依存性が高いことから、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質の低下が挙げられる。
【００１２】
本発明は、上記従来技術の問題点を鑑み、複数のプログラムが有する依存関係を階層化し、階層化した結果に従ってプログラムの動作を管理する画像処理装置、画像形成装置、プログラム管理方法及びプログラムを管理する管理プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明の画像処理装置は、依存関係を有する複数のプログラムと、前記プログラム間の依存関係を示す依存情報データとが格納された画像処理装置であって、前記依存情報データに基づいて、前記複数のプログラム間の依存関係が階層化された階層構造情報を生成する構成管理手段と、前記階層構造情報が格納される階層構造情報テーブルと、前記階層構造情報テーブルを用いて、前記プログラムの起動、終了、インストール、及びアンインストールの少なくともいずれかを行う動作管理手段とを有することを特徴とする。
【００１４】
これによって、画像処理装置は、複数のプログラムが有する依存関係を、依存情報データに基づいて階層化し、階層化した情報である階層構造情報を階層構造情報テーブルへ格納し（階層構造情報を生成し）、階層構造情報に従って、拡張機能のプログラムを動作させ、起動と終了を行うため、拡張機能のプログラムとプログラムを管理する機能部との依存性が低く、拡張機能の管理を容易にすることができる。
【００１５】
よって、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現することができる。
【００１６】
上記目的を達成するため、本発明の画像処理装置は、前記動作管理手段により、所定のプログラムが起動した場合に、前記構成管理手段に対して、前記階層構造情報の取得を要求し、取得した前記階層構造情報に基づいて、前記所定のプログラムが使用するプログラムを起動することを特徴とする。
【００１７】
これによって、画像処理装置は、取得した階層構造情報に基づいて、依存関係（使用／被使用）にある拡張機能のプログラムを起動することができる。
【００１８】
上記目的を達成するため、本発明の画像処理装置は、前記動作管理手段により、所定のプログラムを終了する場合に、前記構成管理手段に対して、前記階層構造情報の取得を要求し、取得した前記階層構造情報に基づいて、前記所定のプログラムが使用するプログラムに終了を要求することを特徴とする。
【００１９】
これによって、画像処理装置は、取得した階層構造情報に基づいて、依存関係（使用／被使用）にある拡張機能のプログラムを終了することができる。
【００２０】
上記目的を達成するため、本発明の画像処理装置は、前記動作管理手段により、前記プログラムをインストール又はアンインストールする場合に、前記構成管理手段に対して、インストール又はアンインストールを行うように要求することを特徴とする。
【００２１】
これによって、画像処理装置は、インストール又はアンインストールする場合、プログラムの動作を管理する処理においてインストール又はアンインストールを指示すること実行するため、拡張機能のプログラム構成を把握しなくてもプログラムの動作を管理することができる。
【００２２】
上記目的を達成するため、本発明の画像処理装置は、前記構成管理手段により、前記プログラムをインストール又はアンインストールした場合に、前記階層構造情報テーブルを更新することを特徴とする。
【００２３】
これによって、画像処理装置は、インストール又はアンインストールする場合、前記階層構造情報テーブルの階層構造情報を自動的に更新するため、インストールされた最新のプログラム構成に関する情報を管理することができる。
【００２４】
上記目的を達成するため、本発明の画像処理装置は、前記構成管理手段により、前記階層構造情報の取得を要求された場合に、前記階層構造情報テーブルに基づいて、前記階層構造情報を返答することを特徴とする。
【００２５】
これによって、画像処理装置は、階層構造情報の取得要求に対して階層構造情報を返答するため、最新の階層構造に関する情報を取得することができる。
【００２６】
上記目的を達成するため、本発明の画像処理装置は、前記プログラムに関する情報を表示画面に表示する表示手段と、前記プログラムに関する情報を閲覧できる利用者か否かを認証する認証手段とを有し、前記表示手段により、前記認証手段により認証に成功した場合に、前記プログラムに関する情報を表示することを特徴とする。
【００２７】
これによって、画像処理装置は、拡張機能のプログラムに関する情報を、閲覧可能な利用者に対して表示画面へ情報を表示するため、閲覧する利用者を制限し、インストールされた拡張機能のプログラムに関する情報を開示することができる。
【００２８】
上記目的を達成するため、本発明の画像処理装置は、前記認証手段により、認証した利用者毎に、前記プログラムに関する情報のうち、参照できる範囲を示す参照権限を決定することを特徴とする。
【００２９】
これによって、画像処理装置は、利用者毎に、拡張機能のプログラムに関する情報の参照可能範囲を示す権限を決定するため、閲覧可能な利用者毎に、拡張機能のプログラムに関する情報の閲覧範囲を制限することができる。
【００３０】
上記目的を達成するため、本発明の画像処理装置は、前記表示手段により、前記参照権限に基づいて制限した範囲内の前記プログラムに関する情報を表示することを特徴とする。
【００３１】
これによって、画像処理装置は、利用者毎の権限に基づいて、制限された範囲の拡張機能のプログラムに関する情報を表示画面へ表示するため、制限された範囲の拡張機能のプログラムに関する情報を開示することができる。
【００３２】
上記目的を達成するため、本発明の画像形成装置は、請求項１から９を有する該画像処理装置を備えたことを特徴とする。
【００３３】
これによって、画像形成装置は、上記説明に挙げた課題を解決するための手段を有する画像処理装置を備えているため、該画像処理装置と同様の作用効果を実現することができる。
【００３４】
上記目的を達成するため、本発明のプログラム管理方法は、依存関係を有する複数のプログラムと、前記プログラム間の依存関係を示す依存情報データとが格納された画像処理装置におけるプログラム管理方法であって、前記依存情報データに基づいて、前記複数のプログラム間の依存関係が階層化された階層構造情報を生成する構成管理手順と、前記階層構造情報が格納される階層構造情報テーブルと、前記階層構造情報テーブルを用いて、前記プログラムの起動、終了、インストール、及びアンインストールの少なくともいずれかを行う動作管理手順とを有することを特徴とする。
【００３５】
これによって、プログラム管理方法は、複数のプログラムが有する依存関係を、依存情報データに基づいて階層化し、階層化した情報である階層構造情報を階層構造情報テーブルへ格納し（階層構造情報を生成し）、階層構造情報に従って、拡張機能のプログラムを動作させ、起動と終了を行うため、拡張機能のプログラムとプログラムを管理する機能部との依存性が低く、拡張機能の管理を容易にすることができる。
【００３６】
よって、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現するように拡張機能のプログラムを管理することができる。
【００３７】
また、上記目的を達成するため、本発明の管理プログラムは、依存関係を有する複数のプログラムと、前記プログラム間の依存関係を示す依存情報データとが格納された画像処理装置におけるプログラムを管理する管理プログラムであって、コンピュータを、前記依存情報データに基づいて、前記複数のプログラム間の依存関係が階層化された階層構造情報を生成する構成管理手段と、前記階層構造情報が格納される階層構造情報テーブルと、前記階層構造情報テーブルを用いて、前記プログラムの起動、終了、インストール、及びアンインストールの少なくともいずれかを行う動作管理手段として機能させる。
【００３８】
これによって、管理プログラムは、コンピュータにおいて、複数のプログラムが有する依存関係を、依存情報データに基づいて階層化し、階層化した情報である階層構造情報を階層構造情報テーブルへ格納し（階層構造情報を生成し）、階層構造情報に従って、拡張機能のプログラムを動作させ、起動と終了を行うため、拡張機能のプログラムとプログラムを管理する機能部との依存性が低く、拡張機能の管理を容易にすることができる。
【００３９】
よって、コンピュータにおいて、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現するように拡張機能のプログラムを管理する管理プログラムを機能させることができる。
【発明の効果】
【００４０】
本発明によれば、依存情報データに基づいて、複数のプログラムが有する依存関係を、依存情報データに基づいて階層化し、階層化した情報である階層構造情報を階層構造情報テーブルに格納し（階層構造情報を生成し）、階層構造情報に従って、拡張機能のプログラムの動作を管理する画像処理装置、画像形成装置、プログラム管理方法及びプログラムを管理する管理プログラムを提供することができる。
【００４１】
また、本発明によれば、複数のプログラムが有する依存関係を、依存情報データに基づいて階層化し、階層化した情報である階層構造情報を階層構造情報テーブルに格納し、（階層構造情報を生成し）、階層構造情報に従って、拡張機能のプログラムを動作させ、起動と終了を行うため、拡張機能のプログラムとプログラムを管理する機能部との依存性が低く、拡張機能の管理を容易にすることができる。
【００４２】
また、拡張機能のプログラム管理方法が単純化したことにより、多くの機能が拡張された場合において、プログラム管理を行う処理の負荷を軽減することができる。
【００４３】
よって、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現することができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明の好適な実施の形態について、図面を用いて詳細に説明する。
【実施例１】
【００４５】
図１は、本発明の実施例１に係る画像処理装置のハードウェア構成例を示すブロック図である。
【００４６】
図１に示すように、画像処理装置１０は、入力部１１、表示部１２、補助記憶部１３、ネットワークI/F１４、外部記憶装置I/F１５、外部入力装置I/F１６、主記憶部１７、制御部１８を備えている。
【００４７】
入力部１１は、操作部と呼ばれ、テンキー、各種ファンクションキー、スタート/ストップキー等を備え、画像処理機能の各種条件設定の入力（例えば、テンキーによる「解像度設定」、「変倍の倍率設定」等。）や機能実行を指示する入力（例えば、スタートキーによる「変倍の実行」。）を各キーにより受け付ける。本実施例において入力部１１は、後に説明する利用者認証を行う際に、利用者の識別コードやパスワード等を入力により受け付ける。
【００４８】
表示部１２は、液晶表示機器を備え、ジョブに関する情報（例えば、「画像処理中のジョブ名」。）、並びに画像処理装置１０の駆動条件（例えば、「設定された解像度値」、「設定された倍率」。）、装置状態（例えば、「ジョブ待ちの状態」、「ジョブ処理中の状態」。）等の各種情報を表示する。また、表示部１２がタッチパネル機能を有している場合には、タッチパネル上からタッチペン等を用いてタッチ入力を行うことができ、パネル上に表示された機能ボタンを選択することで、入力部１１が行う機能と同様の操作が行える。本実施例において表示部１２は、後に説明するインストールされた拡張機能に関する情報を利用者が閲覧する際に表示画面へ表示する。
【００４９】
補助記憶部１３は、画像処理装置１０が取り扱うデータ（例えば、「画像データ」）の格納先であるHD（Hard Disk）等の記憶装置である。本実施例において補助記憶部１３は、拡張機能のプログラム及び関連するデータを格納する。
【００５０】
ネットワークI/F１４は、LAN（Local Area Network）、公衆回線及び無線回線等のネットワーク上の通信機器と画像処理装置１０との間で、データを双方向通信するためのハードウェアインタフェースである。本実施例においてネットワークI/F１４は、インストールする拡張機能のプログラム及び関連データ等を、管理サーバ等からダウンロードする際のネットワークインタフェースとして使用される。
【００５１】
外部記憶装置I/F１５は、メモリカード等の外部記憶装置と画像処理装置１０との間で、データを伝送するためのハードウェアインタフェースである。また、外部記憶装置には、メモリカードの他、FD（floppy disk）、MO（Magneto-Optical disk）、CD（Compact Disc）、DVD（Digital Versatile Disk）等の記録メディアドライブも含まれる。本実施例において外部記憶装置I/F１５は、メモリカードや記録メディア内に格納された拡張機能のプログラム及び関連するデータ等を伝送する際のデータインタフェースとして使用される。
【００５２】
外部入力装置I/F１６は、スキャナやデジタルカメラ等の画像読み取り装置と画像処理装置１０との間で、データを伝送するためのハードウェアインタフェースである。本実施例において外部入力装置I/F１６は、画像処理を行う画像データを入力する（画像を読み取る）。
【００５３】
主記憶部１７は、ROM（Read Only Memory）、RAM（Random Access Memory）から構成される記憶回路である。本実施例において主記憶部１７は、画像処理装置１０を制御する基本ソフト（以下、「OS：Operating System」と言う。）及び画像処理装置１０が起動した際に機能提供される基本機能（例えば、「画像入力機能」、「画像加工機能」、「画像出力機能」。）のプログラム及び関連データがROMに格納されており、CPU（Central Processing Unit）により、ROMに格納されたプログラムやデータがRAMへ展開（ロード）される。
【００５４】
制御部１８は、コントローラ部と呼ばれ、CPUを備えた制御回路である。本実施例において、制御部１８は、画像処理装置１０に電源が投入された後、ROMに格納されたプログラム及びデータを必要に応じてRAMへ展開（ロード）し、展開（ロード）したプログラムを実行することで、電源投入後OSが起動し、起動したOS上で基本機能をアプリケーションとして動作させている。また、制御部１８は、拡張機能がインストールされている場合、補助記憶部１３に格納された拡張機能のプログラム及び関連データを、基本機能のプログラム同様に、起動したOS上で拡張機能をプラグインソフトウェアとして動作させている。
【００５５】
上述した各ハードウェアは、信号の伝送路であるバス及び接続ケーブルによって接続されている。よって、制御部１８は、周辺の入力部１１、表示部１２、補助記憶部１３、ネットワークI/F１４、外部記憶装置I/F１５、外部入力装置I/F１６、主記憶部１７へ、制御命令信号を伝送し、それに対して、入力部１１、表示部１２、補助記憶部１３、ネットワークI/F１４、外部記憶装置I/F１５、外部入力装置I/F１６、主記憶部１７からは、制御命令に従って各装置で処理されたデータ信号が制御部１８へ伝送される。
【００５６】
よって、制御部１８は、画像処理装置１０全体の動作を制御することができる。
【００５７】
このように、画像処理装置１０は、インストールする拡張機能のプログラム及び関連データがネットワーク上の管理サーバに格納されている場合、ネットワークI/F1１４を介して取得し、又、メモリカード、記録メディアに格納されている場合、外部記憶装置I/F１５を介して取得し、取得したプログラム及びデータをインストールする（補助記憶部１３へ格納する）ことができる。
【００５８】
また、制御部１８が、インストールされた拡張機能のプログラムや関連データを、補助記憶部１３から主記憶部１７のRAMへ展開（ロード）し、展開したプログラムを実行することで基本機能の機能拡張を実現している。
【００５９】
次に、画像処理装置１０に対して拡張する機能がどのように開発提供されているのかについて、図２を用いて説明する。
【００６０】
図２は、本発明の実施例１に係るフレームワークを用いた拡張機能の開発作業の例を示す図である。
【００６１】
まず、画像処理装置１０が有する機能構成４０は、大きく分けて基本機能４１と拡張機能４２から構成されている。
【００６２】
図２に示すように、基本機能４１は、画像データを入力する「画像入力機能」、入力した画像データを加工する「画像加工機能」、加工した画像データを出力する「画像出力機能」であり、入力データに対して画像処理を行い、処理した画像データを出力する上で必要な機能で構成されている。
【００６３】
拡張機能４２は、先に説明した基本機能４１を拡張する機能で構成されている。
【００６４】
よって、基本機能４１は、画像処理装置１０における機能アプリケーションであり、拡張機能４２は、機能アプリケーションのプラグインソフトウェアという関係を持っている。
【００６５】
この拡張機能４２のプラグインソフトウェアは、図２に示すプラグインソフトウェアを開発する開発環境（例えば、「コンパイラ」、「デバッガ」。）が整備されたPC（Personal Computer）２０によって、プラグインソフトウェアの雛形である拡張機能用フレームワーク２１を基に開発される。
【００６６】
拡張機能用フレームワーク２１には、画像処理装置１０が採用しているアーキテクチャやプラットフォームの仕様にあわせてプログラムの動作を制御する（動作規則に従ってプログラムの動作を制御する）汎用的な機能（以下、「動作制御機能」と言う。）が予めプログラム化された状態でまとめて提供されている。
【００６７】
そのため、拡張機能４２のプラグインソフトウェアの開発作業の中で、画像処理装置１０のアーキテクチャやプラットフォームの仕様に影響されることがなく、開発者は、画像処理装置１０に対応した拡張機能用フレームワーク２１を基に、設計した拡張機能部のみをプログラムコード化し、プラグインソフトウェアを開発すれば良い。
【００６８】
このようにして開発された拡張機能４２のプラグインソフトウェアは、図２に示すような「機種情報３３」、「仕向け情報３４」及び「ファームウェア情報３５」のデータ識別用のヘッダファイルと「更新用データ（プログラム）３１」、「プログラム名称３６」及び「バージョン情報３７」の更新データで構成されており、拡張機能単位でパッケージ化し、拡張機能パッケージ３０として管理サーバ又はメモリカード、記録メディア等に格納され、画像処理装置１０へ提供される。
【００６９】
よって、拡張機能用フレームワーク２１を基に拡張機能４２のプラグインソフトウェアを開発し、画像処理装置１０へ提供する方法は、サードベンダーを含めた自社以外の製造者（メーカー）により開発されたソフトウェアや将来開発する新規拡張機能４２のプラグインソフトウェアにおいても、低コスト且つ迅速な対応による機能拡張が可能となり、柔軟性の高いシステムを実現できる。
【００７０】
また、アーキテクチャやプラットフォームの異なる画像処理装置１０同士の機能移植も、移植する画像処理装置１０に対応した拡張機能用フレームワーク２１を基に、拡張機能部を移植するだけで良いため効率よく行うことができる。
【００７１】
次に、拡張機能パッケージ３０がどのようなプログラムとデータで構成され、画像処理装置１０内においてインストール後どのように管理されるかについて、図３を用いて説明する。
【００７２】
図３は、本発明の実施例１に係る拡張機能パッケージ３０がインストール後に階層構造化された例を示す図である。
【００７３】
まず、図３に示すように、拡張機能-1パッケージ３０a及び拡張機能-2パッケージ３０bは、基本アプリケーションを機能拡張するためのプログラム３１（プログラムA〜E）、プログラムの依存関係を示す依存情報データ３２で構成されている。
【００７４】
ここで言う「プログラムの依存関係」とは、例えば、プログラムAとプログラムBにおいて、「プログラムBがプログラムAを使用する」や「プログラムAはプログラムBに使用される」、また「プログラムBがプログラムAを呼び出す」や「プログラムAはプログラムBに呼び出される」等のような2つ以上のプログラム間において、あるプログラムの動作が他のプログラムによって規定され、条件付けられている関係のことを言い、依存情報データ３２は、このようなプログラム間の依存関係の情報によって構成されている。
【００７５】
次に、拡張機能-1パッケージ３０a及び拡張機能-2パッケージ３０bは、画像処理装置１０へインストールした後、図３に示すように階層構造５０によってプログラム構成が管理される。
【００７６】
例えば、拡張機能-1パッケージ３０aの場合には、依存情報データ３２に示された依存関係（A→B→C）に基づいて、最上位の階層（1）にプログラムA、最上位の階層から1つ下の階層（2）にプログラムB、最上位の階層から2つ下の階層（3）にプログラムCとなるようにプログラムA、B及びCが有する依存関係を階層化する。
【００７７】
また、拡張機能-2パッケージ３０bの場合は、依存情報データ３２に示された依存関係（D→B→C,D→E）に基づいて、最上位の階層（1）にプログラムD、最上位の階層から1つ下の階層（2）にプログラムBとプログラムE、最上位の階層から2つ下の階層（3）にプログラムCとなるようにプログラムB、C、D及びEが有する依存関係を階層化する。
【００７８】
このように、画像処理装置１０にインストールされた拡張機能-1パッケージ３０aと拡張機能-2パッケージ３０bにおける複数のプログラム間の依存関係を階層化（階層（1）、（2）、（3））することによって、パッケージ内のプログラム構成を管理することができる。
【００７９】
例えば、図３に示すように、拡張機能-1パッケージ３０aをインストールした場合では、最上位の階層（1）にプログラムA、最上位から1つ下の階層（2）にプログラムB、最上位から2つ下の階層（3）にプログラムCのようにプログラムを管理する。
【００８０】
また、拡張機能-2パッケージ３０bをインストールした場合では、最上位の階層（1）にプログラムD、最上位から1つ下の階層（2）にプログラムBとプログラムE、最上位から2つ下の階層（3）にプログラムCのようにプログラムを管理する。
【００８１】
次に、階層化された依存関係によりプログラムが、画像処理装置１０においてどのように動作するのかについて、図４を用いて説明する。
【００８２】
図４は、本発明の実施例１に係る拡張機能４２のプログラム３１の動作例を示す図である。
【００８３】
拡張機能用フレームワーク２１を基に開発されたプログラムには、プログラム自身の動作を制御する動作制御機能が含まれている。
【００８４】
例えば、拡張機能-1パッケージ３０aのプログラムを起動した場合、まず、最上位の階層に位置するプログラムAが起動されると、プログラムAは、階層構造５０に基づいてプログラムA自身が使用する（1つ下の階層に位置する）プログラムBを起動する。次に、プログラムBは、プログラムB自身が使用する（1つ下の階層に位置する）プログラムCを起動する。
【００８５】
プログラムCは、プログラムC自身が使用する（次に起動する）プログラムがないため、自分が起動完了した旨を1つ上の階層に位置するプログラムBへ通知する。プログラムBは、プログラムCからの起動完了通知を受け取り、その後、自分が起動完了した旨を1つ上の階層に位置するプログラムAへ通知する。最後に、プログラムAは、プログラムBからの起動完了通知を受け取り、自分が起動完了した旨をプログラムの管理先へ通知する。
【００８６】
この通知によって、拡張機能-1パッケージ３０aのプログラムが全て起動完了したこととなる。
【００８７】
また、拡張機能-2パッケージ３０bのプログラムを起動した場合、まず、最上位の階層に位置するプログラムDが起動されると、プログラムDは、階層構造５０に基づいてプログラムD自身が使用する（1つ下の階層に位置する）プログラムB及びプログラムEを起動する。プログラムBは、プログラムB自身が使用する（1つ下の階層に位置する）プログラムCを起動する。
【００８８】
プログラムCは、プログラムC自身が使用する（次に起動する）プログラムがないため、自分が起動完了した旨を1つ上の階層に位置するプログラムBへ通知する。プログラムBは、プログラムCからの起動完了通知を受け取り、その後、自分が起動した旨を1つ上の階層に位置するプログラムDへ通知する。
【００８９】
また、プログラムEも、プログラムCと同様に、プログラムE自身が使用する（次に起動する）プログラムがないため、自分が起動完了した旨を1つ上の階層に位置するプログラムDへ通知する。最後に、プログラムDは、プログラムB及びプログラムDからの起動完了通知を受け取り、自分が起動完了した旨をプログラムの管理先へ通知する。
【００９０】
この通知によって、拡張機能-2パッケージ３０bのプログラムが全て起動完了したこととなる。
【００９１】
動作制御機能は、プログラム間の依存関係（使用／被使用）が階層化された階層構造５０の各階層（階層（1）、（2）、（3））に位置するプログラムが、階層構造５０の情報に基づいて、上位の階層に位置するプログラムの起動及び終了の要求に従って動作することで、拡張機能４２のプログラム３１を動作制御する。
【００９２】
例えば、図４に示すように、拡張機能-1パッケージ３０aの場合には、最上位の階層（1）に位置するプログラムAが起動すると、起動動作を継承し最上位から1つ下の階層（2）に位置するプログラムBが起動し、さらに起動動作を継承し最上位から2つ下の階層（3）に位置するプログラムCが起動する。
【００９３】
また、拡張機能-2パッケージ３０bの場合には、最上位の階層（1）に位置するプログラムDが起動すると、起動動作を継承し最上位から1つ下の階層（2）に位置するプログラムB及びプログラムEが起動し、さらに起動動作を継承し最上位から2つ下の階層（3）に位置するプログラムCが起動する。
【００９４】
このように、拡張機能４２のプログラム３１は、階層構造５０の情報に基づいて、依存関係を有する複数のプログラムの動作を制御することができる。
【００９５】
次に、図３及び図４において説明した拡張機能４２のプログラム管理を、どのような機能部により実現しているかについて、図５を用いて説明する。
【００９６】
図５は、本発明の実施例１に係る主要機能部の構成例を示すブロック図である。
【００９７】
図５に示す主要機能部は、プログラム構成管理部６１、拡張機能動作管理部６２、認証部６３から構成されている。
【００９８】
プログラム構成管理部６１は、構成管理手段７１を有し、拡張機能４２のプログラム３１の依存関係を階層化し、プログラム構成及び階層構造５０の情報を階層毎に管理する。
【００９９】
拡張機能動作管理部６２は、動作管理手段７２を有し、拡張機能４２のプログラム３１の起動と終了、インストールとアンインストールを行い、インストールされた拡張機能４２のプログラム３１の動作を管理する。
【０１００】
また、拡張機能動作管理部６２は、表示手段７４を有し、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を、画像処理装置１０が有する表示部１２の表示画面に表示する。
【０１０１】
認証部６３は、認証手段７３を有し、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を閲覧（参照）できる利用者か否かを認証する。
【０１０２】
このように、画像処理装置１０は、上記主要機能部により拡張機能４２のプログラム３１を管理している。
【０１０３】
次に、図５において説明した各機能部が有する手段について、図６を用いて説明する。
【０１０４】
図６は、本発明の実施例１に係る主要機能部が有する手段の構成例を示すブロック図である。
【０１０５】
図６に示す主要機能部が有する手段は、構成管理手段７１、動作管理手段７２、認証手段７３、表示手段７４から構成されている。
【０１０６】
まず、プログラム構成管理部６１が有する構成管理手段７１は、インストール又はアンインストールの要求に従って、拡張機能パッケージ３０を画像処理装置１０へインストール又はアンインストールを行う。
【０１０７】
また、構成管理手段７１は、インストールを行う際に、拡張機能４２のプログラム３１の依存関係を依存情報データ３２に基づいて階層化する。階層化した結果（階層構造５０の情報）は、プログラムの動作を管理する上で必要なため、階層構造５０の情報をテーブル化し、階層構造情報テーブルとして補助記憶部１３に保持する。
【０１０８】
以下に、構成管理手段７１が、階層構造情報テーブルに階層構造５０の情報を格納する方法について、図７の階層構造情報テーブルのデータ構成例を示す図を用いて説明する。
【０１０９】
階層構造情報テーブル８０は、2行N列の形式を有し、1行目が起動されるプログラム（下位層）の情報８１、2行目が起動するプログラム（上位層）の情報８２が格納される。
【０１１０】
構成管理手段７１は、例えば、拡張機能-1パッケージ３０aをインストールした場合、2行1列目の項目に、拡張機能を識別するデータであるパッケージ名の「拡張機能-1パッケージ（Package-1）」を格納し、同列の1行目の項目に、拡張機能-1パッケージ３０aが起動する際に最初に起動される「プログラムAの情報」を格納する。
【０１１１】
次に、2行2列目の項目に、起動するプログラムAの情報を格納し、1行2列目の項目に、プログラムAから起動される「プログラムBの情報」を格納する。
【０１１２】
最後に、2行3列目の項目に、起動するプログラムBの情報を格納し、1行3列目の項目に、プログラムBから起動される「プログラムCの情報」を格納する。
【０１１３】
階層構造情報テーブル８０に格納するプログラムの情報８１、８２は、図７に示すように、インストールの際にプログラムを格納した補助記憶部１３内のディレクトリ構造に従った格納場所を示す情報（例えば、「プログラムデータパス名」。）である。
【０１１４】
例えば、プログラムAの情報は、補助記憶部１３のドライブ名がDドライブだった場合、"D:\xxx/yyy/zzz/prog_a.dll"となる。
【０１１５】
このように、構成管理手段７１は、インストールの際に、プログラムの情報８１、８２（格納場所の情報）を階層構造情報テーブル８０の各項目に格納することで、図７の矢印に示すような拡張機能４２のプログラム３１の依存関係（階層構造５０の情報）を階層化する。
【０１１６】
例えば、拡張機能-1パッケージ３０aの場合には、「Package-1 → D:\xxx/yyy/zzz/prog_a.dll」、「prog_a.dll → D:\xxx/yyy/zzz/prog_b.dll」、「prog_b.dll → D:\xxx/yyy/zzz/prog_c.dll」の依存関係（階層構造５０の情報）を階層化する。
【０１１７】
よって、プログラム構成管理部６１は、構成管理手段７１により、インストールの際に、拡張機能パッケージ３０のプログラムを補助記憶部１３へ格納するとともに、依存情報データ３２に基づいて、拡張機能４２のプログラム３１の依存関係を階層化した結果を階層構造情報テーブル８０として保持することで、パッケージ単位で、拡張機能４２のプログラム３１を階層毎に管理することができる。
【０１１８】
以下に、構成管理手段７１が、インストール又はアンインストールの際に行う、階層構造情報テーブル８０の更新について、図８の階層構造情報テーブル８０の内容を更新する例を示す図を用いて説明する。
【０１１９】
構成管理手段７１は、例えば、画像処理装置１０に対して、既に拡張機能-1パッケージ３０aがインストールされている状態で、拡張機能-2パッケージ３０bをインストールした場合、依存情報データ３２に基づいて、拡張機能４２のプログラム３１の依存関係を階層化し、図８の中段に示す階層構造情報テーブル８０の網掛け部のプログラムの情報８１、８２を追加する。
【０１２０】
この時、拡張機能-2パッケージ３０bのプログラムB及びプログラムCについては、既にインストールされた拡張機能-1パッケージ３０aに含まれているプログラムであるため、2行2列目の項目にプログラムDを追加し、プログラムDがプログラムBを起動する依存関係を示すプログラム情報８１を追加する。
【０１２１】
また、インストールした拡張機能-1パッケージ３０aをアンインストールした場合、インストールの際に更新した階層構造情報テーブル８０から、拡張機能-1パッケージ３０aに関するプログラムの情報８１、８２を削除する。
【０１２２】
この時、拡張機能-1パッケージ３０aのプログラムB及びプログラムCについては、後にインストールされた拡張機能-2パッケージ３０bに含まれているプログラムDから起動されるプログラムであるため、削除を行わない（図８の下段に示す階層構造情報テーブル８０の網掛け部）。
【０１２３】
よって、プログラム構成管理部６１は、構成管理手段７１により、インストール又はアンインストールの際に、拡張機能パッケージ３０のプログラムを追加又は削除するとともに、階層構造情報テーブル８０内のプログラムの情報８１、８２も追加又は削除することで、拡張機能４２のプログラム構成及び階層構造５０の情報を管理することができる。
【０１２４】
また、構成管理手段７１は、階層構造情報テーブル８０で管理する階層構造５０の情報を取得要求された場合、要求に応じて階層構造５０の情報を応答する。
【０１２５】
よって、プログラム構成管理部６１は、構成管理手段７１により、他の機能部から階層構造５０の情報を取得要求された場合、要求に応じて階層構造５０の情報を応答することができる。
【０１２６】
次に、拡張機能動作管理部６２が有する動作管理手段７２は、拡張機能４２の起動指示を受け、階層構造情報テーブル８０の階層構造５０の情報に基づいて、起動する拡張機能４２の最上位の階層に位置するプログラムを起動する。
【０１２７】
そのため、動作管理手段７２は、拡張機能４２の起動指示を受けた場合、プログラム構成管理部６１が有する構成管理手段７１へ、階層構造情報テーブル８０で管理する階層構造５０の情報を取得要求し、構成管理手段７１から返答された階層構造５０の情報を取得する。
【０１２８】
以下に、動作管理手段７２による拡張機能パッケージ３０の起動について、図７の下段に示すデータ構成例を用いて説明する。
【０１２９】
動作管理手段７２は、例えば、拡張機能-1パッケージ３０aの起動指示を受けた場合、構成管理手段７１から返答され取得した階層構造５０の情報に対して、パッケージ名"Package-1"をキーに2行目の項目全ての情報を検索する。
【０１３０】
その後、該当するパッケージ名"Package-1"に対して依存関係にある同列1行目の情報"D:\xxx/yyy/zzz/prog_a.dll"に従ってプログラムAを起動する。
【０１３１】
このように、動作管理手段７２は、拡張機能-1パッケージ３０aの最上位の階層に位置するプログラムを起動する。
【０１３２】
また、動作管理手段７２は、プログラムが有する動作制御機能により、下位層から上位層へ伝達される各プログラムの起動完了通知に基づいて、最上位の階層に位置するプログラムから起動完了通知を受け取ることで、起動した拡張機能４２が正常に起動したか否かを把握する。
【０１３３】
プログラムの終了についても、起動と同様に、終了する拡張機能４２の最上位の階層に位置するプログラムに対して終了を要求する。
【０１３４】
よって、拡張機能動作管理部６２は、動作管理手段７２により、構成管理手段７１から返答され取得した階層構造５０の情報に基づいてプログラムの起動と終了を行い、インストールされた拡張機能４２のプログラム３１の動作を管理することができる。
【０１３５】
このように、構成管理部７１により、拡張機能４２に関する情報を階層構造情報テーブル８０により管理し、動作管理手段７２により、階層構造情報テーブル８０に基づいて、拡張機能４２のプログラム３１における起動と終了の動作を管理するため、従来のような、プログラム管理部のプログラムコードを変更する必要がなく、拡張機能４２のプログラム３１とプログラム管理部との依存性が低く、拡張機能の管理を容易にすることができる。
【０１３６】
また、拡張機能４２のプログラム管理方法が単純化したことにより、多くの機能が拡張された場合において、プログラム管理を行う処理の負荷を軽減することができる。
【０１３７】
よって、画像処理装置１０は、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現することができる。
【０１３８】
また、拡張機能動作管理部６２が有する表示手段７４は、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報の閲覧（参照）指示を受け、階層構造情報テーブル８０の階層構造５０の情報に基づいて、表示部１２の表示画面に階層構造５０の情報を表示する。
【０１３９】
そのため、表示手段７４は、拡張機能４２のプログラム３１に関する階層構造５０の情報の閲覧（参照）指示を受けた場合、プログラム構成管理部６１が有する構成管理手段７１へ、階層構造情報テーブル８０で管理する階層構造５０の情報を取得要求し、構成管理手段７１から返答された階層構造５０の情報を取得する。
【０１４０】
また、表示手段７４は、認証部６３で管理する参照権限（閲覧権限）に基づいて、表示する階層構造５０の情報の範囲を制限する。
【０１４１】
そのため、表示手段７４は、次に説明する認証部６３の認証手段７３へ、閲覧（参照）しようとしている利用者の認証を要求し、認証結果として認証手段７３から返答された利用者の参照権限（閲覧権限）の情報を取得する。
【０１４２】
よって、拡張機能動作管理部６２は、表示手段７４により、構成管理手段７１から返答され取得した階層構造５０の情報に基づいて、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を表示部１２の表示画面に表示することができる。
【０１４３】
また、認証結果として認証手段７３から返答された利用者の参照権限（閲覧権限）の情報に基づいて、表示する階層構造５０の情報の範囲を制限することができる。
【０１４４】
次に、認証部６３が有する認証手段７３は、利用者に対する認証要求を受け、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を閲覧（参照）できる利用者か否かを認証する。
【０１４５】
認証手段７３は、拡張機能動作管理部６２が有する表示手段７４から認証要求された場合、入力部１１から入力された利用者の識別情報（例えば、「ユーザID」。）とパスワードに基づいて、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を閲覧（参照）できる利用者か否かを認証する。
【０１４６】
また、認証手段７３は、認証登録された利用者に対して、利用者毎に、表示する階層構造５０の情報の範囲を制限する参照権限（閲覧権限）を管理し、認証結果として、該当する利用者の参照権限（閲覧権限）を応答する。
【０１４７】
よって、認証部６３は、認証手段７３により、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を閲覧（参照）できる利用者か否かを認証することができる。
【０１４８】
このように、画像処理装置１０は、主要機能部が有する各手段により拡張機能４２のプログラム３１を管理している。
【０１４９】
よって、画像処理装置１０は、動作制御機能を有するプログラムを、階層構造５０によって管理することで、従来のように、全てのプログラムを1箇所の管理部が集中管理する必要がなく、拡張機能４２のプログラム３１とプログラム管理部との依存性が低く、拡張機能４２のプログラム管理を容易にすることができ、拡張性の高いシステムを実現することができる。
【０１５０】
次に、拡張機能４２のプログラム管理を実現する詳細な方法について図９から図２０を用いて説明する。
【０１５１】
また、以降に説明する拡張機能４２のプログラム管理方法は、全て、プログラムにより実現されるものであり、図５で示したように、画像処理装置１０が有する制御部１８で実行される。
【０１５２】
よって、コンピュータに読み取り可能な記録媒体であれば、本発明を構成するプログラムを格納することができる。
【０１５３】
まず、図４で示した拡張機能４２のプログラム３１における動作制御機能の処理について、図９及び図１０を用いて詳細説明する。
【０１５４】
拡張機能動作管理部６２は、拡張機能４２の起動及び終了が指示された場合、動作管理手段７２により、拡張機能４２のプログラム３１のうち、最上位の階層に位置するプログラムを起動及び終了する。
【０１５５】
その結果、プログラム間の連鎖的な依存関係（階層構造５０の情報）に従って、階層毎に動作を継承することにより、拡張機能パッケージ３０の全てのプログラムが起動及び終了する。
【０１５６】
よって、拡張機能４２のプログラム３１が有する動作制御機能は、プログラム間による連鎖的な起動及び終了動作を実現する機能である。
【０１５７】
拡張機能４２のプログラム３１が有する動作制御機能は、プログラム起動機能として、「プログラム起動機能」、「プログラム起動完了通知受取機能」、「プログラム起動完了通知機能」を有し、また、プログラム終了機能として、「プログラム終了要求受取機能」、「プログラム終了要求機能」とを有している。
【０１５８】
図９は、本発明の実施例１に係る拡張機能４２のプログラム３１が有するプログラム起動機能に関する処理を示すフローチャートである。
【０１５９】
プログラム起動機能は、自らが起動を指示された（起動された）回数をカウントし、そのカウント値（初期値0）をRAMに保持する（Ｓ１０１）。
【０１６０】
次に、保持したカウント値に基づいて、メインプロセスが起動済みか否かを判定する（Ｓ１０２）。
【０１６１】
カウント値が2以上で、メインプロセスが起動済みの場合（Ｓ１０２がYESの場合）、起動した際に取得した階層構造５０の情報に基づいて、1つ上の階層に位置するプログラムに対して起動完了通知を応答する（Ｓ１０９）。
【０１６２】
また、カウント値が1で、メインプロセスが初めて起動される場合（Ｓ１０２がNOの場合）、プログラム構成管理部６１の構成管理手段７１へ、階層構造情報テーブル８０が管理する階層構造５０の情報の取得を要求し（Ｓ１０３）、要求に対して、構成管理手段７１から階層構造５０の情報の応答があるまで待つ（Ｓ１０４）。
【０１６３】
構成管理手段７１から応答があった場合（Ｓ１０４がYESの場合）、取得した階層構造５０の情報に基づいて、次に起動するプログラムがあるか否かを判定する（Ｓ１０５）。
【０１６４】
次に起動するプログラムがある場合（Ｓ１０５がYESの場合）、起動するプログラムの情報（プログラムデータパス）に基づいて、1つ下の階層に位置するプログラムを起動し（Ｓ１０６）、起動したプログラムから起動完了通知を受け取るまで待つ（Ｓ１０７）。
【０１６５】
起動したプログラムから起動完了通知を受け取った場合（Ｓ１０７がYESの場合）又は次に起動するプログラムがない場合（Ｓ１０５がNOの場合）、自らが最下位の階層に位置するプログラムと判断し、メインプロセスが起動完了するまで待ち（Ｓ１０８）、起動完了した後（Ｓ１０８がYESの場合）に、階層構造５０の情報に基づいて、1つ上の階層に位置するプログラムに対して起動完了通知を送信する（Ｓ１０９）。
【０１６６】
このように、プログラム起動機能は、「プログラム起動機能（Ｓ１０３〜Ｓ１０６）」、「プログラム起動完了通知受取機能（Ｓ１０７）」、「プログラム起動完了通知機能（Ｓ１０８、Ｓ１０９）」の他に、異なる拡張機能４２に共通して含まれるプログラムを考慮して、起動指示が来た際に、自らのメインプロセスが既に起動済みであることを判断し（自らが起動済みであれば、下位層に位置するプログラムも起動済みであることも判断）、起動完了通知のみを送信するようにしている。
【０１６７】
図１０は、本発明の実施例１に係る拡張機能４２のプログラム３１が有するプログラム終了機能に関する処理を示すフローチャートである。
【０１６８】
プログラム終了機能は、1つ上の階層に位置するプログラムから終了要求を受け取るまで待ち（Ｓ２０１）、終了要求を受け取った場合（Ｓ２０１がYESの場合）、起動を指示された際にカウントし、RAMへ保持していた起動指示回数を示す値（カウント値）から1減算する。
【０１６９】
次に、減算後の値に基づいて、起動中のメインプロセスを終了可能か否かを判定する（Ｓ２０３）。
【０１７０】
減算後の値が1以上で、メインプロセスを終了可能でない場合（Ｓ２０３がNOの場合）、1つ上の階層に位置するプログラムから終了要求を受け取る待ち状態に戻る（Ｓ２０１へ戻る）。
【０１７１】
また、減算後の値が1で、メインプロセスを終了可能な場合（Ｓ２０３がYESの場合）、プログラム構成管理部６１の構成管理手段７１へ、階層構造情報テーブル８０が管理する階層構造５０の情報の取得を要求し（Ｓ２０４）、要求に対して、構成管理手段７１から階層構造５０の情報の応答があるまで待つ（Ｓ２０５）。
【０１７２】
構成管理手段７１から応答があった場合（Ｓ２０５がYESの場合）、取得した階層構造５０の情報に基づいて、次に終了要求するプログラムがあるか否かを判定する（Ｓ２０６）。
【０１７３】
次に終了要求するプログラムがある場合（Ｓ２０６がYESの場合）、起動するプログラムの情報（プログラムデータパス）に基づいて、1つ下の階層に位置するプログラムに終了要求し（Ｓ２０７）、自らのメインプロセスを終了する（Ｓ２０８）。
【０１７４】
また、次に終了要求するプログラムがない場合（Ｓ２０６がNOの場合）、自らが最下位の階層に位置するプログラムと判断し、自らのメインプロセスを終了する（Ｓ２０８）。
【０１７５】
このように、プログラム終了機能は、「プログラム終了要求受取機能（Ｓ２０１）」、「プログラム終了要求機能（Ｓ２０４〜Ｓ２０７）」の他に、異なる拡張機能４２に共通して含まれるプログラムを考慮して、終了要求を受け付けた際に、自らのメインプロセスが終了可能であることを判断し（他の拡張機能４２がメインプロセスを使用していないことを判断）、メインプロセスを終了している。
【０１７６】
次に、図５及び図６で示した画像処理装置１０の主要機能部の処理について、図１１から図１４を用いて詳細説明する。
【０１７７】
図１１は、本発明の実施例１に係る拡張機能動作管理部６２に関する処理を示すフローチャートである。
【０１７８】
拡張機能動作管理部６２が有する動作管理手段７２は、画像処理装置１０のシステムから動作要求を受け付けるまで待つ（Ｓ３０１）。この時、受け付ける動作要求の種類は、「起動」、「終了」、「インストール」、「アンインストール」又は「情報閲覧（情報参照）」である。
【０１７９】
例えば、「起動」は、画像処理装置１０に電源投入時、「終了」は、画像処理装置１０のシステム終了前やアンインストール前等に要求される。
【０１８０】
「インストール又はアンインストール」は、画像処理装置１０の管理者が入力部１１から指示した場合や管理サーバから指示された場合等、不定期に要求される。
【０１８１】
「閲覧要求（参照要求）」も、「インストール又はアンインストール」と同様に、画像処理装置１０の利用者が入力部１１から指示した場合や管理サーバから指示された場合等、不定期に要求される。
【０１８２】
動作管理手段７２は、動作要求を受け付けた場合（Ｓ３０１がYESの場合）、要求された動作が「起動」、「終了」、「インストール」、「アンインストール」又は「情報閲覧（情報参照）」のうち、どの要求であるかを判定する（Ｓ３０２、Ｓ３０７、Ｓ３１１、Ｓ３１３、Ｓ３１５）。
【０１８３】
要求された動作が「起動要求」の場合（Ｓ３０２がYESの場合）、プログラム構成管理部６１の構成管理手段７１へ、階層構造情報テーブル８０が管理する階層構造５０の情報の取得を要求し（Ｓ３０３）、要求に対して、構成管理手段７１から階層構造５０の情報が返答されるまで待つ（Ｓ３０４）。
【０１８４】
構成管理手段７１から返答があった場合（Ｓ３０４がYESの場合）、取得した階層構造５０の情報（プログラムデータパス）に基づいて、起動する拡張機能４２の最上位の階層に位置するプログラムを起動し（Ｓ３０５）、起動したプログラムから起動完了通知を受け取るまで待つ（Ｓ３０６）。
【０１８５】
起動したプログラムから起動完了通知を受け取った場合（Ｓ３０７がYESの場合）、起動した拡張機能４２が起動完了したと判断し、その後、画像処理装置１０のシステムから動作要求待ちの状態へ戻る（Ｓ３０１へ戻る）。
【０１８６】
また、要求された動作が「終了要求」の場合（Ｓ３０２がNO且つＳ３０７がYESの場合）、プログラム構成管理部６１の構成管理手段７１へ、階層構造情報テーブル８０が管理する階層構造５０の情報の取得を要求し（Ｓ３０８）、要求に対して、構成管理手段７１から階層構造５０の情報の返答があるまで待つ（Ｓ３０９）。
【０１８７】
構成管理手段７１から返答があった場合（Ｓ３０９がYESの場合）、取得した階層構造５０の情報（プログラムデータパス）に基づいて、終了する拡張機能４２の最上位の階層に位置するプログラムに終了要求し（Ｓ３１０）、その後、画像処理装置１０のシステムから動作要求待ちの状態へ戻る（Ｓ３０１へ戻る）。
【０１８８】
また、要求された動作が「インストール要求」の場合（Ｓ３０７がNO且つＳ３１１がYESの場合）、プログラム構成管理部６１の構成管理手段７１へ、新規の拡張機能４２をインストールするように要求し（Ｓ３１２）、その後、画像処理装置１０のシステムから動作要求待ちの状態へ戻る（Ｓ３０１へ戻る）。
【０１８９】
また、要求された動作が「アンインストール要求」の場合（Ｓ３１１がNO且つＳ３１３がYESの場合）、プログラム構成管理部６１の構成管理手段７１へ、インストールされた拡張機能４２のうち、指定された機能をアンインストールするように要求する（Ｓ３１４）。
【０１９０】
その後、画像処理装置１０のシステムから動作要求待ちの状態へ戻る（Ｓ３０１へ戻る）。
【０１９１】
また、要求された動作が「閲覧要求（参照）」の場合（Ｓ３１３がNO且つＳ３１５がYESの場合）、表示手段７４による表示処理を行い（Ｓ３１６）、その後、画像処理装置１０のシステムから動作要求待ちの状態へ戻る（Ｓ３０１へ戻る）。
【０１９２】
また、要求された動作が、「起動」、「終了」、「インストール」、「アンインストール」、「閲覧（参照）」のうち該当するものがない場合（Ｓ３１５がNOの場合）、画像処理装置１０のシステムから動作要求を受け付ける待ち状態に戻る（Ｓ３０１へ戻る）。
【０１９３】
図１２は、本発明の実施例１に係るプログラム構成管理部６１に関する処理を示すフローチャートである。
【０１９４】
プログラム構成管理部６１が有する構成管理手段７１は、拡張機能動作管理部６２（動作管理手段７２、表示手段７４）又は拡張機能４２の各プログラムから要求を受け付けるまで待つ（Ｓ４０１）。この時、受け付ける要求の内容は、「階層構造５０の情報取得」、「インストール」、「アンインストール」である。
【０１９５】
「階層構造５０の情報取得」は、拡張機能動作管理部６２及び拡張機能４２の各プログラムから要求される。
【０１９６】
「インストール又はアンインストール」は、拡張機能動作管理部６２から要求される。
【０１９７】
構成管理手段７１は、動作要求を受け付けた場合（Ｓ４０１がYESの場合）、要求された内容が、「階層構造５０の情報取得」、「インストール」又は「アンインストール」のうち、どの要求であるかを判定する（Ｓ４０２、Ｓ４０４、Ｓ４０７）。
【０１９８】
要求された内容が「階層構造５０の情報取得要求」の場合（Ｓ４０２がYESの場合）、階層構造情報テーブル８０が管理する階層構造５０の情報を、取得要求先（拡張機能動作管理部６２又は拡張機能４２の各プログラム）へ応答し（Ｓ４０３）、その後、拡張機能動作管理部６２又は拡張機能４２の各プログラムから要求を受け付ける待ち状態に戻る（Ｓ４０１へ戻る）。
【０１９９】
また、要求された内容が「インストール要求」の場合（Ｓ４０２がNO且つＳ４０４がYESの場合）、インストールする拡張機能パッケージ３０を、管理サーバ又はメモリカード、記録メディア等から取得し、パッケージを構成する拡張機能４２のプログラム３１及び依存情報データ３２を補助記憶部１３へ格納する（Ｓ４０５）。この時、階層構造情報テーブル８０が管理する階層構造５０の情報に基づいて、既にインストールされているプログラムに関しては補助記憶部１３への格納を行わない。
【０２００】
次に、依存情報データ３２に基づいて、新規拡張機能４２のプログラム３１に関する情報を追加し、階層構造情報テーブル８０を更新する（Ｓ４０６）。この時、階層構造情報テーブル８０が管理する階層構造５０の情報に基づいて、既にインストールされているプログラムに関する情報は更新しない。
【０２０１】
その後、拡張機能動作管理部６２又は拡張機能４２の各プログラムから要求を受け付ける待ち状態に戻る（Ｓ４０１へ戻る）。
【０２０２】
また、要求された内容が「アンインストール要求」の場合（Ｓ４０４がNO且つＳ４０７がYESの場合）、依存情報データ３２に基づいて、拡張機能４２のプログラム３１に関する情報を削除し、階層構造情報テーブル８０を更新する（Ｓ４０８）。この時、階層構造情報テーブル８０が管理する階層構造５０の情報に基づいて、アンインストールする拡張機能４２のプログラム３１のうち、他の拡張機能４２に使用されているプログラムに関する情報は削除しない。
【０２０３】
次に、依存情報データ３２に基づいて、拡張機能４２のプログラム３１を補助記憶部１３から削除し、次に、依存情報データ３２を削除する（Ｓ４０９）。この時、階層構造情報テーブル８０が管理する階層構造５０の情報に基づいて、アンインストールする拡張機能４２のプログラム３１のうち、他の拡張機能４２に使用されているプログラムは削除しない。
【０２０４】
その後、拡張機能動作管理部６２又は拡張機能４２の各プログラムから要求を受け付ける待ち状態に戻る（Ｓ４０１へ戻る）。
【０２０５】
また、要求された動作が、「階層構造５０の情報取得」、「インストール」、「アンインストール」のうち該当するものがない場合（Ｓ４０７がNOの場合）、拡張機能動作管理部６２又は拡張機能４２の各プログラムから要求を受け付ける待ち状態に戻る（Ｓ４０１へ戻る）。
【０２０６】
図１３は、本発明の実施例１に係る認証部６３に関する処理を示すフローチャートである。
【０２０７】
認証部６３が有する認証手段７３は、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を閲覧（参照）できる利用者か否かを認証する認証要求を受け付けるまで待つ（Ｓ５０１）。この時、認証要求は、利用者の認証情報として、入力部１１から入力された利用者の識別情報（例えば、「ユーザID」。）とパスワードを受け取る。
【０２０８】
認証手段７３は、認証要求（利用者の認証情報）を受け取った場合（Ｓ５０１がYESの場合）、認証情報に基づいて利用者の認証を判定し、利用者毎に設定された閲覧可能な情報の範囲を制限する参照権限（閲覧権限）を示す権限識別情報を応答する（Ｓ５０２）。
【０２０９】
その後、階層構造５０の情報を閲覧（参照）できる利用者か否かを認証する認証要求を受け付ける待ち状態に戻る（Ｓ５０１へ戻る）。
【０２１０】
図１４は、本発明の実施例１に係る表示処理を示すフローチャートである。
【０２１１】
拡張機能動作管理部６２が有する表示手段７４は、認証部６３が有する認証手段７３へ、利用者の認証を要求し（Ｓ６０１）、要求に対して、認証手段７３から権限識別情報が返答されるまで待つ（Ｓ６０２）。
【０２１２】
表示手段７４は、認証手段７３から返答された場合（Ｓ６０２がYESの場合）、プログラム構成管理部６１の構成管理手段７１へ、階層構造情報テーブル８０が管理する階層構造５０の情報の取得を要求し（Ｓ６０３）、要求に対して、構成管理手段７１から階層構造５０の情報が返答されるまで待つ（Ｓ６０４）。
【０２１３】
構成管理手段７１から返答があった場合（Ｓ６０４がYESの場合）、取得した権限識別情報（参照権限（閲覧権限））に基づいて、取得した階層構造５０の情報に対して、利用者の閲覧可能な情報の範囲を判定する（Ｓ６０５）。
【０２１４】
利用者の参照権限（閲覧権限）が強い場合（Ｓ６０５が「権限が強い」の場合）、取得した全ての階層構造５０の情報を表示画面に表示するため、必要な階層構造５０の情報をシステムへ送信する（Ｓ６０６）。
【０２１５】
また、利用者の参照権限（閲覧権限）が弱い場合（Ｓ６０５が「権限が弱い」の場合）、取得した階層構造５０の情報のうち、拡張機能４２のパッケージ名のみを表示画面に表示するため、必要な階層構造５０の情報をシステムへ送信する（Ｓ６０７）。
【０２１６】
次に、図９及び図１０で示した動作制御機能を有するプログラムと、図１１から図１４で示した主要機能部の処理との関係性を明確にするため、画像処理装置１０における拡張機能４２の起動と終了及びインストールとアンインストールの流れについて、図１５から図２０を用いて説明する。
【０２１７】
図１５は、本発明の実施例１に係る拡張機能-1を起動する流れを示すシーケンス図である。
【０２１８】
まず、画像処理装置１０のシステムから拡張機能動作管理部６２へ拡張機能-1を起動する指示が送られる（１−１）。
【０２１９】
拡張機能動作管理部６２は、動作管理手段７２により、プログラム構成管理部６１へ階層構造５０の情報取得を要求する（１−２）。
【０２２０】
プログラム構成管理部６１は、構成管理手段７１により、補助記憶部１３に格納された階層構造情報テーブル８０から階層構造５０の情報を取得し（１−３）、拡張機能動作管理部６２へ取得した階層構造５０の情報を応答する（１−４）。
【０２２１】
拡張機能動作管理部６２は、返答された階層構造５０の情報「Package-1 → D:\xxx/yyy/zzz/prog_a.dll」に基づいて、拡張機能-1の最上位の階層に位置するプログラムAを起動する（１−５）。
【０２２２】
プログラムAは、動作制御機能により、プログラム構成管理部６１へ階層構造５０の情報取得を要求し（１−６）、プログラム構成管理部６１は、構成管理手段７１により、階層構造５０の情報をプログラムAへ応答する（１−７）。
【０２２３】
プログラムAは、プログラム起動機能により、返答された階層構造５０の情報「prog_a.dll → D:\xxx/yyy/zzz/prog_b.dll」に基づいて、1つ下の階層に位置するプログラムBを起動する（１−８）。
【０２２４】
プログラムBは、動作制御機能により、プログラム構成管理部６１へ階層構造５０の情報取得を要求し（１−９）、プログラム構成管理部６１は、構成管理手段７１により、階層構造５０の情報をプログラムBへ応答する（１−１０）。
【０２２５】
プログラムBは、プログラム起動機能により、返答された階層構造５０の情報「prog_b.dll → D:\xxx/yyy/zzz/prog_c.dll」に基づいて、1つ下の階層に位置するプログラムCを起動する（１−１１）。
【０２２６】
プログラムCは、動作制御機能により、プログラム構成管理部６１へ階層構造５０の情報取得を要求し（１−１２）、プログラム構成管理部６１は、構成管理手段７１により、階層構造５０の情報をプログラムCへ応答する（１−１３）。
【０２２７】
プログラムCは、プログラム起動機能により、返答された階層構造５０の情報に基づいて、自らが最下位の階層に位置するプログラムであると判断し、自らのメインプロセスが起動した後、プログラム起動完了通知機能により、1つ上の階層に位置するプログラムBへ起動完了通知を送信する（１−１４）。
【０２２８】
プログラムBは、自らのメインプロセスが起動した後、プログラム起動完了通知受取機能により、プログラムCからの起動完了通知を受け取り、下位層のプログラムCが起動完了したことを確認した後、プログラム起動完了通知機能により、取得した階層構造５０の情報に基づいて、1つ上の階層に位置するプログラムAへ起動完了通知を送信する（１−１５）。
【０２２９】
プログラムAは、自らのメインプロセスが起動した後、プログラム起動完了通知受取機能により、プログラムBからの起動完了通知を受け取り、下位層のプログラムB及びプログラムCが起動完了したことを確認した後、プログラム起動完了通知機能により、取得した階層構造５０の情報に基づいて、自らを起動した拡張機能動作管理部６２が有する動作管理手段７２へ起動完了通知を送信する（１−１６）。
【０２３０】
図１６は、本発明の実施例１に係る拡張機能-2を起動する流れを示すシーケンス図である。
【０２３１】
まず、画像処理装置１０のシステムから拡張機能動作管理部６２へ拡張機能-2を起動する指示が送られる（２−１）。
【０２３２】
拡張機能動作管理部６２は、動作管理手段７２により、プログラム構成管理部６１へ階層構造５０の情報取得を要求する（２−２）。
【０２３３】
プログラム構成管理部６１は、構成管理手段７１により、補助記憶部１３に格納された階層構造情報テーブル８０から階層構造５０の情報を取得し（２−３）、拡張機能動作管理部６２へ取得した階層構造５０の情報を応答する（２−４）。
【０２３４】
拡張機能動作管理部６２は、返答された階層構造５０の情報「Package-2→ D:\xxx/yyy/zzz/prog_d.dll」に基づいて、拡張機能-2の最上位の階層に位置するプログラムDを起動する（２−５）。
【０２３５】
プログラムDは、動作制御機能により、プログラム構成管理部６１へ階層構造５０の情報取得を要求し（２−６）、プログラム構成管理部６１は、構成管理手段７１により、階層構造５０の情報をプログラムDへ応答する（２−７）。
【０２３６】
プログラムDは、プログラム起動機能により、返答された階層構造５０の情報「prog_d.dll → D:\xxx/yyy/zzz/prog_b.dll及びprog_d.dll → D:\xxx/yyy/zzz/prog_e.dll」に基づいて、1つ下の階層に位置するプログラムB及びプログラムEを起動する（２−８、２−９）。
【０２３７】
プログラムBは、動作制御機能により、他の拡張機能４２（拡張機能-1）によりメインプロセスが起動されていることを判断し、プログラム起動完了通知機能により、取得した階層構造５０の情報に基づいて、1つ上の階層に位置するプログラムAへ起動完了通知を送信する（２−１０）。
【０２３８】
プログラムEは、動作制御機能により、プログラム構成管理部６１へ階層構造５０の情報取得を要求し（２−１１）、プログラム構成管理部６１は、構成管理手段７１により、階層構造５０の情報をプログラムEへ応答する（２−１２）。
【０２３９】
プログラムEは、プログラム起動機能により、返答された階層構造５０の情報に基づいて、自らが最下位の階層に位置するプログラムであると判断し、自らのメインプロセスが起動した後、プログラム起動完了通知機能により、1つ上の階層に位置するプログラムAへ起動完了通知を送信する（２−１３）。
【０２４０】
プログラムDは、自らのメインプロセスが起動した後、プログラム起動完了通知受取機能により、プログラムB及びプログラムEからの起動完了通知を受け取り、下位層のプログラムB、プログラムC及びプログラムDが起動完了したことを確認した後、プログラム起動完了通知機能により、取得した階層構造５０の情報に基づいて、自らを起動した拡張機能動作管理部６２が有する動作管理手段７２へ起動完了通知を送信する（２−１４）。
【０２４１】
また、図１５及び図１６は、拡張機能４２が起動する流れが分かり易いように1つの拡張機能４２が起動する流れを説明した。実際の画像処理装置１０では、電源投入後、インストールされた拡張機能４２に対して、同時に起動指示されることから、拡張機能動作管理部６２において、取得した階層構造５０の情報「Package-X → C:\xxx/yyy/zzz/prog_x.dll」に基づいて、各拡張機能４２で最上位の階層に位置するプログラムを同時に起動する。その結果、階層構造５０の情報に基づいて、階層毎にプログラムが起動する。
【０２４２】
図１７は、本発明の実施例１に係る拡張機能-1を終了する流れを示すシーケンス図である。
【０２４３】
まず、画像処理装置１０のシステムから拡張機能動作管理部６２へ拡張機能-2を起動する指示が送られる（３−１）。
【０２４４】
拡張機能動作管理部６２は、動作管理手段７２により、プログラム構成管理部６１へ階層構造５０の情報取得を要求する（３−２）。
【０２４５】
プログラム構成管理部６１は、構成管理手段７１により、補助記憶部１３に格納された階層構造情報テーブル８０から階層構造５０の情報を取得し（３−３）、拡張機能動作管理部６２へ取得した階層構造５０の情報を応答する（３−４）。
【０２４６】
拡張機能動作管理部６２は、返答された階層構造５０の情報「Package-1→ D:\xxx/yyy/zzz/prog_a.dll」に基づいて、拡張機能-1の最上位の階層に位置するプログラムAに終了を要求する（３−５）。
【０２４７】
プログラムAは、動作制御機能により、プログラム構成管理部６１へ階層構造５０の情報取得を要求し（３−６）、プログラム構成管理部６１は、構成管理手段７１により、階層構造５０の情報をプログラムAへ応答する（３−７）。
【０２４８】
プログラムAは、プログラム終了要求機能により、返答された階層構造５０の情報「prog_a.dll → D:\xxx/yyy/zzz/prog_b.dll」に基づいて、1つ下の階層に位置するプログラムBに終了を要求する（３−８）。
【０２４９】
プログラムBは、プログラム終了要求受取機能により、プログラムAからの終了要求を受け取るが、動作制御機能により、他の拡張機能４２（拡張機能-2）によりメインプロセスが使用されていることを判断し、終了要求を拒絶する。
【０２５０】
よって、プログラムB及びプログラムC等のように、他の拡張機能４２によりメインプロセスが使用されているプログラムは、プログラム終了要求受取機能により、最後までメインプロセスを使用した拡張機能４２からの終了要求を受け取り、終了する。
【０２５１】
図１８は、本発明の実施例１に係る拡張機能-1及び拡張機能-2をインストールする流れを示すシーケンス図である。
【０２５２】
まず、拡張機能-1をインストールする場合、画像処理装置１０のシステムから拡張機能動作管理部６２へ拡張機能-1をインストールする指示が送られる（４−１）。
【０２５３】
拡張機能動作管理部６２は、動作管理手段７２により、プログラム構成管理部６１へ拡張機能-1のインストールを要求する（４−２）。
【０２５４】
プログラム構成管理部６１は、構成管理手段７１により、インストールする拡張機能-1パッケージ３０aを、管理サーバ又はメモリカード、記録メディア等から取得し、パッケージを構成する拡張機能４２のプログラムA、プログラムB、プログラムC及び依存情報データ３２を補助記憶部１３へ格納する（４−３）。
【０２５５】
次に、依存情報データ３２に基づいて、階層構造情報テーブル８０を更新（新規拡張機能４２のプログラムA、プログラムB及びプログラムCに関する情報を追加）する（４−４）。
【０２５６】
また、拡張機能-2をインストールする場合、画像処理装置１０のシステムから拡張機能動作管理部６２へ拡張機能-2をインストールする指示が送られる（４−５）。
【０２５７】
拡張機能動作管理部６２は、動作管理手段７２により、プログラム構成管理部６１へ拡張機能-2のインストールを要求する（４−６）。
【０２５８】
プログラム構成管理部６１は、構成管理手段７１により、インストールする拡張機能-2パッケージ３０bを、管理サーバ又はメモリカード、記録メディア等から取得し、パッケージを構成する拡張機能４２のプログラムB及びプログラムCは、他の拡張機能４２（拡張機能-1）をインストールした際に格納されているため、新規のプログラムD、プログラムE及び依存情報データ３２を補助記憶部１３へ格納する（４−７）。
【０２５９】
次に、依存情報データ３２に基づいて、他の拡張機能４２（拡張機能-1）をインストールした際に格納されているプログラムB及びプログラムC以外のプログラムD及びプログラムEに関する情報を追加し、階層構造情報テーブル８０を更新する（４−８）。
【０２６０】
図１９は、本発明の実施例１に係る拡張機能-1をアンインストールする流れを示すシーケンス図である。
【０２６１】
まず、画像処理装置１０のシステムから拡張機能動作管理部６２へ拡張機能-1をアンインストールする指示が送られる（５−１）。
【０２６２】
拡張機能動作管理部６２は、動作管理手段７２により、プログラム構成管理部６１へ拡張機能-1のアンインストールを要求する（５−２）。
【０２６３】
プログラム構成管理部６１は、構成管理手段７１により、依存情報データ３２と階層構造情報テーブル８０に基づいて、他の拡張機能４２（拡張機能-2）が使用するプログラムB及びプログラムC以外のプログラムAに関する情報のみ削除し、階層構造情報テーブル８０を更新する（５−３）。
【０２６４】
次に、依存情報データ３２と更新された階層構造情報テーブル８０に基づいて、他の拡張機能４２（拡張機能-2）が使用するプログラムB及びプログラムC以外のプログラムAを補助記憶部１３から削除し、次に、依存情報データ３２を削除する（５−４）。
【０２６５】
図２０は、本発明の実施例１に係る拡張機能-1及び拡張機能-2に関する階層構造５０の情報を表示する流れを示すシーケンス図である。
【０２６６】
まず、画像処理装置１０のシステムから拡張機能動作管理部６２へ、インストールされた拡張機能４２に関する階層構造５０の情報を閲覧する指示が送られる（６−１）。
【０２６７】
拡張機能動作管理部６２は、表示手段７４により、認証部６３へ閲覧する利用者の認証を要求する（６−２）。
【０２６８】
認証部６３は、認証手段７３により、要求された利用者の認証情報に基づいて利用者の認証を判定し、利用者毎に設定された閲覧可能な情報の範囲を制限する参照権限（閲覧権限）を示す権限識別情報を応答する（６−３）。
【０２６９】
次に、拡張機能動作管理部６２は、表示手段７４により、プログラム構成管理部６１へ階層構造５０の情報取得を要求する（６−４）。
【０２７０】
プログラム構成管理部６１は、構成管理手段７１により、補助記憶部１３に格納された階層構造情報テーブル８０から階層構造５０の情報を取得し（６−５）、拡張機能動作管理部６２へ取得した階層構造５０の情報を応答する（６−６）。
【０２７１】
拡張機能動作管理部６２は、表示手段７４により、取得した権限識別情報（参照権限（閲覧権限））に基づいて、取得した階層構造５０の情報に対して、利用者の閲覧可能な情報の範囲を判定し、表示画面に表示するために必要な階層構造５０の情報をシステムへ送信する（６―７）。
【０２７２】
以下に、図２０で示した階層構造５０の情報を表示する流れを実施した際に、表示部１２に表示された例を、図２１及び図２２を用いて示す。
【０２７３】
図２１は、本発明の実施例１に係る拡張機能-1及び拡張機能-2に関する階層構造情報の表示例（利用者の権限が弱い場合）を示す図である。
【０２７４】
図２１に示すように、認証部６３から返答された権限識別情報（参照権限（閲覧権限））が弱い利用者の場合は、インストールされた拡張機能４２に対する階層構造５０の情報のうち、パッケージ名９２のみが表示部１２の表示画面９１に表示される。
【０２７５】
また、図２２は、本発明の実施例１に係る拡張機能-1及び拡張機能-2に関する階層構造情報の表示例（利用者の権限が強い場合）を示す図である。
【０２７６】
図２２に示すように、認証部６３から返答された権限識別情報（参照権限（閲覧権限））が強い利用者の場合は、インストールされた拡張機能４２に対する階層構造５０の全ての情報９２が表示部１２の表示画面９１に表示される。
【０２７７】
最後に、本発明の変形例である画像形成装置について、図２３を用いて説明する。
【０２７８】
図２３は、本発明の変形例に係るハードウェア構成例を示すブロック図。
【０２７９】
図２３に示すように、画像形成装置９０は、図１に示した画像処理装置１０が有するハードウェア構成に加え、印刷部１９を備えている。
【０２８０】
印刷部１９は、プリンタエンジンと呼ばれ、画像処理（例えば、「フィルタ処理」、「解像度変換」、「カラーマッチング」、「γ補正」、「階調変換」等。）後に生成されたラスタイメージ（ビットマップイメージ）を用紙へ印刷する画像形成部と、用紙を画像形成部へ搬送する給紙搬送部と、印刷後の用紙を排紙する用紙排紙部とから構成される。
【０２８１】
よって、印刷部１９は、図２で示した基本機能４１（「画像入力機能」、「画像加工機能」、「画像出力機能」）のうち、画像出力機能から受け取った画像データを用紙へ印刷する。
【０２８２】
このように、画像形成装置９０に代表される画像処理装置１０を有する装置であれば、本発明を実施することができる。
【０２８３】
以上のように、本発明の実施例１によれば、画像処理装置１０は、連鎖的な依存関係を有する拡張機能４２のプログラム３１を、プログラム構成管理部６１、拡張機能動作管理部６２及び認証部６３の各機能部により管理することで、本発明を実現している。
【０２８４】
プログラム構成管理部６１は、構成管理手段７１を有し、拡張機能パッケージ３０のインストール又はアンインストールを行い、インストールの際に、拡張機能４２のプログラム３１の依存関係を階層化し、階層化した情報である階層構造５０の情報を階層構造情報テーブル８０に格納することで、インストールされた拡張機能４２のプログラム及び階層構造５０の情報を管理する。
【０２８５】
拡張機能動作管理部６２は、動作管理手段７２を有し、階層構造情報テーブル８０が管理する階層構造５０の情報に基づいて、拡張機能４２の最上位の階層に位置するプログラムの起動と終了を行い、インストールされた拡張機能４２のプログラム３１の動作を管理する。
【０２８６】
このように、画像処理装置１０は、依存情報データ３２に基づいて、依存関係を有するプログラムの依存関係を階層化し、階層化した情報である階層構造情報を階層構造情報テーブル８０に格納し（階層構造情報を生成し）、階層構造５０の情報に従って拡張機能４２のプログラム３１を動作させ、起動と終了を行うため、従来のように、全てのプログラムを1箇所の管理部が集中管理する必要がなく、拡張機能４２のプログラム３１とプログラムを管理する機能部との依存性が低く、拡張機能４２の管理を容易にすることができる。
【０２８７】
また、拡張機能４２のプログラム管理方法が単純化したことにより、多くの機能が拡張された場合において、プログラム管理を行う処理の負荷を軽減することができる。
【０２８８】
よって、機能の拡張性、機能を導入する際の柔軟性及び製品の性能品質が高いシステムを実現することができる。
【０２８９】
また、拡張機能動作管理部６２は、表示手段７４を有し、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を、画像処理装置１０が有する表示部１２の表示画面９１に表示する。
【０２９０】
認証部６３は、認証手段７３を有し、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を閲覧（参照）できる利用者か否かを認証し、階層構造５０の情報の閲覧範囲を、利用者毎に制限する。
【０２９１】
このように、画像処理装置１０は、インストールされた拡張機能４２のプログラム３１に関する階層構造５０の情報を利用者毎に制限し、表示することができる。
【０２９２】
実施例１に基づき本発明の説明を行ってきたが、上記実施例に挙げた階層構造情報テーブル８０が管理する「プログラムデータパス名」は、階層構造５０の情報のうちプログラムの格納先を示す一例であって、この要件に、本発明が限定されるものではない。
【０２９３】
例えば、「プログラムデータパス名」の代わりに、プログラムが格納されているアドレス値でも良い。
【０２９４】
また、上記実施例に挙げた新規拡張機能４２を格納する補助記憶部１３は、記憶装置の一例であって、この要件に、本発明が限定されるものではない。
【０２９５】
例えば、補助記憶部１３のハードディスクの代わりに、メモリカード等の不揮発性の半導体メモリでもよく、インストールする拡張機能４２のパッケージ一式が格納できれば良い。
【０２９６】
また、上記実施例に挙げた利用者IDとパスワード入力による認証方法は、利用者の認証方法の一例であって、この要件に、本発明が限定されるものではない。
【０２９７】
例えば、画像処理装置１０がICカードリーダーを備えている場合、ICカードによる利用者認証を行っても良い。その他、利用者の身体的な特徴（個人が特定可能な顔や指紋等）に基づいて利用者認証を行っても良い。
【０２９８】
最後に、上記実施例１に挙げた形状に、その他の要素との組み合わせ等、ここで示した要件に、本発明が限定されるものではない。
【０２９９】
これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
【図面の簡単な説明】
【０３００】
【図１】本発明の実施例１に係る画像処理装置のハードウェア構成例を示すブロック図である。
【図２】本発明の実施例１に係るフレームワークを用いた拡張機能の開発環境の例を示す図である。
【図３】本発明の実施例１に係る拡張機能パッケージがインストール後に階層構造化された例を示す図である。
【図４】本発明の実施例１に係る拡張機能のプログラムの動作例を示す図である。
【図５】本発明の実施例１に係る主要機能部の構成例を示すブロック図である。
【図６】本発明の実施例１に係る主要機能部が有する構成手段の例を示すブロック図である。
【図７】本発明の実施例１に係る階層構造情報テーブルのデータ構成例を示す図である。
【図８】本発明の実施例１に係るインストール又はアンインストールにおける階層構造情報テーブルの内容を更新する例を示す図である。
【図９】本発明の実施例１に係る拡張機能のプログラムが有するプログラム起動機能に関する処理を示すフローチャートである。
【図１０】本発明の実施例１に係る拡張機能のプログラムが有するプログラム終了機能に関する処理を示すフローチャートである。
【図１１】本発明の実施例１に係る拡張機能動作管理部に関する処理を示すフローチャートである。
【図１２】本発明の実施例１に係るプログラム構成管理部に関する処理を示すフローチャートである。
【図１３】本発明の実施例１に係る認証部に関する処理を示すフローチャートである。
【図１４】本発明の実施例１に係る表示処理を示すフローチャートである。
【図１５】本発明の実施例１に係る拡張機能-1を起動する流れを示すシーケンス図である。
【図１６】本発明の実施例１に係る拡張機能-2を起動する流れを示すシーケンス図である。
【図１７】本発明の実施例１に係る拡張機能-1を終了する流れを示すシーケンス図である。
【図１８】本発明の実施例１に係る拡張機能-1及び拡張機能-2をインストールする流れを示すシーケンス図である。
【図１９】本発明の実施例１に係る拡張機能-1をアンインストールする流れを示すシーケンス図である。
【図２０】本発明の実施例１に係る拡張機能-1及び拡張機能-2に関する階層構造情報を表示する流れを示すシーケンス図である。
【図２１】本発明の実施例１に係る拡張機能-1及び拡張機能-2に関する階層構造情報の表示例（利用者の権限が弱い場合）を示す図である。
【図２２】本発明の実施例１に係る拡張機能-1及び拡張機能-2に関する階層構造情報の表示例（利用者の権限が強い場合）を示す図である。
【図２３】本発明の変形例に係るハードウェア構成例を示すブロック図である。
【符号の説明】
【０３０１】
１０  画像処理装置
１１  入力部（操作部）
１２  表示部（ディスプレイ）
１３  補助記憶部（HD）
１４  ネットワークI/F
１５  外部記憶装置I/F
１６  外部入力装置I/F
１７  主記憶部（ROM,RAM）
１８  制御部（CPU）
１９  印刷部（プリンタエンジン）
２０  開発者端末（PC）
２１  拡張機能用フレームワーク
３０a、３０b  拡張機能-1パッケージ、拡張機能-2パッケージ
３１  拡張機能プログラム
３２  依存情報データ
３３  機種情報
３４  仕向け情報
３５  ファームウェア情報
３６  プログラム名称
３７  バージョン情報
４１  基本機能
４２  拡張機能
６１  プログラム構成管理部
６２  拡張機能動作管理部
６３  認証部
７１  構成管理手段
７２  動作管理手段
７３  認証手段
７４  表示手段
８０  階層構造情報テーブル
９０  画像形成装置
９１  表示画面
９２  階層構造情報（参照権限が強い場合）
９３  階層構造情報（参照権限が弱い場合）
【図１】
2008041057.tif 000003
【図２】
2008041057.tif 000004
【図３】
2008041057.tif 000005
【図４】
2008041057.tif 000006
【図５】
2008041057.tif 000007
【図６】
2008041057.tif 000008
【図７】
2008041057.tif 000009
【図８】
2008041057.tif 000010
【図９】
2008041057.tif 000011
【図１０】
2008041057.tif 000012
【図１１】
2008041057.tif 000013
【図１２】
2008041057.tif 000014
【図１３】
2008041057.tif 000015
【図１４】
2008041057.tif 000016
【図１５】
2008041057.tif 000017
【図１６】
2008041057.tif 000018
【図１７】
2008041057.tif 000019
【図１８】
2008041057.tif 000020
【図１９】
2008041057.tif 000021
【図２０】
2008041057.tif 000022
【図２１】
2008041057.tif 000023
【図２２】
2008041057.tif 000024
【図２３】
2008041057.tif 000025