(57)【要約】【課題】アプリケーションのカスタマイズ又は拡張を簡便に行え、高い堅牢性を有するアプリケーション実行環境を提供することができる情報処理装置、画像処理装置、アプリケーション実行方法、及びアプリケーション実行プログラムを提供する。【解決手段】情報処理装置２００は、データを入力する入力手段１０３aと、データを加工する加工手段１０３bと、データを出力する出力手段１０３cとを連携し動作させることで１つのアプリケーションＡＰが有する機能を実現する装置であって、アプリケーションAPの起動や終了などの管理を行うアプリケーション管理ソフトウェアを動作させる第１のプロセス３２aと、当該装置が有する基本機能を実現する基本アプリケーションソフトウェア８１を動作させる第２のプロセス３２bと、当該装置に追加される拡張機能を実現する拡張アプリケーションソフトウェア８２を動作させる第３のプロセス３２cとを有することを特徴とする。【選択図】図１０
2009134695.tif 000002
【特許請求の範囲】
【請求項１】
データを入力する入力手段と、データを加工する加工手段と、データを出力する出力手段とを有し、前記入力手段と、前記加工手段と、前記出力手段とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置であって、
前記アプリケーションの起動や終了などの管理を行うアプリケーション管理ソフトウェアを動作させる第１のプロセスと、
当該情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを動作させる第２のプロセスと、
当該情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを動作させる第３のプロセスとを有し、
更に、前記第１のプロセス、前記第２のプロセス、及び前記第３のプロセスを実行する実行手段を有することを特徴とする情報処理装置。
【請求項２】
データを入力する入力手段と、データを加工する加工手段と、データを出力する出力手段とを有し、前記入力手段と、前記加工手段と、前記出力手段とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置であって、
前記アプリケーションの起動や終了などの管理を行うアプリケーション管理ソフトウェア、及び当該情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを動作させる第１のプロセスと、
当該情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを動作させる第２のプロセスとを有し、
更に、前記第１のプロセス及び前記第２のプロセスを実行する実行手段を有することを特徴とする情報処理装置。
【請求項３】
所定のアプリケーションが有する機能を実現するために動作する前記入力手段と、前記加工手段と、前記出力手段は、
同一プロセスで動作することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
所定のアプリケーションが有する機能を実現するために動作する前記入力手段と、前記加工手段と、前記出力手段は、
それぞれが特定の単一プロセスで動作することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項５】
前記アプリケーションに対して、前記アプリケーション管理ソフトウェアと前記アプリケーションとの間で行うデータのやり取りと同じ振る舞いをするソフトウェア部品を有し、
前記ソフトウェア部品は、
前記アプリケーションと同じプロセスで動作することを特徴とする請求項１ないし４のいずれか一項に記載の情報処理装置。
【請求項６】
動作させる前記アプリケーションの選択指示を受け付けたときに、
前記アプリケーションを識別するアプリケーション識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報に基づいて、前記アプリケーション識別情報から特定したプロセスに対して、動作要求を送信する動作要求送信手段を有することを特徴とする請求項１ないし５のいずれか一項に記載の情報処理装置。
【請求項７】
前記アプリケーションの動作設定要求を受け付けたときに、
前記アプリケーションごとの前記動作設定要求に対応するユーザインタフェースを構成する画面要素を識別する画面要素識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報に基づいて、前記画面要素識別情報から特定したプロセスに対して、前記動作設定要求を送信する動作設定要求送信手段を有することを特徴とする請求項１ないし６のいずれか一項に記載の情報処理装置。
【請求項８】
前記アプリケーションの実行要求を受け付けたときに、
前記実行要求を識別する実行要求識別情報と、実行対象となる前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報に基づいて、前記実行要求識別情報から特定したプロセスに対して前記実行要求を送信し、前記アプリケーションに実行開始を指示する実行要求管理手段を有することを特徴とする請求項１ないし７のいずれか一項に記載の情報処理装置。
【請求項９】
前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセスが異常終了したことを検知する検知手段と、
前記検知手段により検知されたプロセス異常終了を前記アプリケーション管理ソフトウェアが動作するプロセスに通知する通知手段とを有することを特徴とする請求項１ないし８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記検知手段及び前記通知手段は、
前記第１のプロセス、前記第２のプロセス、及び前記第３のプロセス、又は、前記第１のプロセス及び前記第２のプロセスを生成した親プロセスで動作することを特徴とする請求項９に記載の情報処理装置。
【請求項１１】
前記検知手段は、
子プロセスにあたる前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセス終了によるシグナルを受信することで、プロセスの異常終了を検知することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記検知手段及び前記通知手段は、
前記第１のプロセスで動作することを特徴とする請求項９に記載の情報処理装置。
【請求項１３】
前記検知手段は、
前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセスに対して、プロセスの状態を示す状態情報の取得を要求し、要求への応答があるか否かに基づき、プロセスの異常終了を検知することを特徴とする請求項１２に記載の情報処理装置。
【請求項１４】
前記検知手段は、
前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセスから送信されるプロセスの状態を示す状態情報を受信したか否かに基づき、プロセスの異常終了を検知することを特徴とする請求項１２に記載の情報処理装置。
【請求項１５】
前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、
前記アプリケーション管理ソフトウェアが有するコンポーネントが、前記アプリケーションを識別するアプリケーション識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報から、異常終了したプロセスで動作するアプリケーションのアプリケーション識別情報を削除することを特徴とする請求項９ないし１４のいずれか一項に記載の情報処理装置。
【請求項１６】
前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、
前記アプリケーション管理ソフトウェアが有するコンポーネントが、前記アプリケーションごとの前記動作設定要求に対応するユーザインタフェースを構成する画面要素を識別する画面要素識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報から、異常終了したプロセスで生成された画面要素の画面要素識別情報を削除することを特徴とする請求項９ないし１５のいずれか一項に記載の情報処理装置。
【請求項１７】
前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、
前記アプリケーション管理ソフトウェアが有するコンポーネントが、前記実行要求を識別する実行要求識別情報と、実行対象となる前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報から、異常終了したプロセスで生成された実行要求の実行要求識別情報を削除することを特徴とする請求項９ないし１６のいずれか一項に記載の情報処理装置。
【請求項１８】
前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、
異常終了したプロセスで動作していたアプリケーションのうち、
プロセスが異常終了する直前に動作していたアプリケーションと、それ以外のアプリケーションとを、異なる態様で表示することを特徴とする請求項９ないし１７のいずれか一項に記載の情報処理装置。
【請求項１９】
異常終了したプロセスの有効化／無効化を選択設定する画面を表示することを特徴とする請求項９ないし１８のいずれか一項に記載の情報処理装置。
【請求項２０】
前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、
異常終了したプロセスを無効に設定することを特徴とする請求項９ないし１９のいずれか一項に記載の情報処理装置。
【請求項２１】
原稿を画像データとして読み取る原稿読み取り装置と、
画像データを紙に印刷する印刷装置と、
請求項１ないし２０のいずれか一項に記載の情報処理装置とを有することを特徴とする画像処理装置。
【請求項２２】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアと、
前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアと、
前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアとを、それぞれが異なるプロセスで実行することを特徴とするアプリケーション実行方法。
【請求項２３】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、及び前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを第１のプロセスで実行し、
前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを第２のプロセスで実行することを特徴とするアプリケーション実行方法。
【請求項２４】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアが動作する第１のプロセスを実行し、
予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行し、
機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第３のプロセスを実行することを特徴とするアプリケーション実行方法。
【請求項２５】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、ならびに予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第１のプロセスを実行し、
機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行することを特徴とするアプリケーション実行方法。
【請求項２６】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プログラムであって、
コンピュータに、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアと、
前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアと、
前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアとを、それぞれが異なるプロセスで実行させるアプリケーション実行プログラム。
【請求項２７】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プログラムであって、
コンピュータに、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、及び前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを第１のプロセスで実行させ、
前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを第２のプロセスで実行させるアプリケーション実行プログラム。
【請求項２８】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プログラムであって、
コンピュータに、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアが動作する第１のプロセスを実行させ、
予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行させ、
機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第３のプロセスを実行させるアプリケーション実行プログラム。
【請求項２９】
データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プロセスであって、
コンピュータに、
前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、ならびに予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第１のプロセスを実行させ、
機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行させるアプリケーション実行プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力、加工、出力の各機能を連携し動作させることでアプリケーションが有する機能を実現する情報処理装置、画像処理装置、アプリケーション実行方法、及びアプリケーション実行プログラムに関するものである。
【背景技術】
【０００２】
近年におけるプリンタ、コピー機、スキャナ、ファクシミリ、又はこれらの機能を一台の筐体で実現する複合機（MFP：Multifunction Peripheral）などの画像処理装置では、メモリなどの制限は厳しいものの、汎用的なコンピュータと同様にCPU（Central Processing Unit）を備え、各機能がアプリケーションの制御によって実現されるようになっている。
【０００３】
例えば、特許文献１に記載された画像処理装置では、各アプリケーションから共通的に利用される機能をプラットフォームとして備えており、当該プラットフォームのAPI（Application Program Interface）を利用してアプリケーションを実装することができる。係る画像処理装置によれば、共通的に利用される機能がプラットフォームとして備えられていることにより、アプリケーションごとに重複した機能の実装が回避され、アプリケーション全体の開発効率を向上させることができる。
【０００４】
その結果、係る画像処理装置では、システムにアプリケーションを追加・拡張することで、ユーザの所望する機能を提供する。
【０００５】
また、このような画像処理装置の中には、現在、実装する環境（実装機種）などに依存しないという特徴を生かし、携帯電話や家電製品などの開発にも用いられている、Sun Microsystems社が開発したJava（登録商標）言語によって機能開発されているものもある。また、実装する環境において、プロセスを複数に分割することでマルチプロセス化を行うことのできるプロセスベースのUNIX（登録商標）系OS（Operating System）を採用しているものもある。
【特許文献１】特許３６７９３４９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、このような画像処理装置では、以下に挙げる点を考慮する必要がある。
【０００７】
まず、１つ目は、システムの堅牢性である。拡張性の高い画像処理装置では、システムの基本機能を実現する自社製アプリケーションや、後に導入され拡張機能を実現する他社（以下、「サードベンダ」という。）製アプリケーションなど、様々な環境化で開発されたアプリケーションが動作する。
【０００８】
しかし、このような環境化であっても、当該画像処理装置では、拡張機能の導入によって、システムの基本機能がそこなわれることがあってはならない。
【０００９】
プロセスベースのOSでは、システムの堅牢性を向上させるために、適切な粒度でプロセスを分割するのが一般的である。しかし、Java（登録商標）言語によって開発を行う場合、単一のプロセス（JVM：Java Virtual Machine）上で複数のアプリケーションを動作させることになり、細かい粒度でプロセス（JVM）を分割するのは現実的でなく、少なくとも自社とサードベンダのアプリケーションが動作するJVMを分離することが要件となる。
【００１０】
また、Java（登録商標）言語ベースシステムの堅牢性については、Nativeコードの実行とメモリ使用量を考慮すべきである。すなわち、悪意のあるNativeコードの実行によりシステム全体がクラッシュ（異常終了）する可能性があり、巨大なメモリを使用するアプリケーションによりJave（登録商標）のヒープが占有され、OutOfMemoryErrorが発生する可能性がある。
【００１１】
次に、アプリケーションに開発容易性である。システムを複数JVMに分散する場合、マルチプロセス化の影響をうけるコンポーネント（ソフトウェア部品）をなるべく少なくする必要がある。
【００１２】
カスタマイズ可能なシステムにおいて、SDK（Software Development Kit）によるアプリケーション開発が容易であることは必須であり、複数のJVM上で動作することを意識することなくアプリケーション開発が行えなければならない。
【００１３】
このように、マルチプロセス化の影響は、フレームワークに相当する限定されたコンポーネント（ソフトウェア部品）で行い、アプリケーションはマルチプロセス化を意識しなくてよい設計を検討する必要がある。
【００１４】
そこで、本発明では、上記従来技術の問題点に鑑み、マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供することができる情報処理装置、画像処理装置、アプリケーション実行方法、及びアプリケーション実行プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するため、本発明に係る情報処理装置は、データを入力する入力手段と、データを加工する加工手段と、データを出力する出力手段とを有し、前記入力手段と、前記加工手段と、前記出力手段とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置であって、前記アプリケーションの起動や終了などの管理を行うアプリケーション管理ソフトウェアを動作させる第１のプロセスと、当該情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを動作させる第２のプロセスと、当該情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを動作させる第３のプロセスとを有し、更に、前記第１のプロセス、前記第２のプロセス、及び前記第３のプロセスを実行する実行手段を有することを特徴とする。
【００１６】
上記目的を達成するため、本発明に係る情報処理装置は、データを入力する入力手段と、データを加工する加工手段と、データを出力する出力手段とを有し、前記入力手段と、前記加工手段と、前記出力手段とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置であって、前記アプリケーションの起動や終了などの管理を行うアプリケーション管理ソフトウェア、及び当該情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを動作させる第１のプロセスと、当該情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを動作させる第２のプロセスとを有し、更に、前記第１のプロセス及び前記第２のプロセスを実行する実行手段を有することを特徴とする。
【００１７】
これによって、本発明に係る情報処理装置は、システムの基本機能を実現する基本アプリケーション（自社製アプリケーション）と、追加される拡張機能を実現する拡張アプリケーション（サードベンダ製アプリケーション）とを、異なるプロセス（JVM）で動作させ、更に、プロセス間通信などのマルチプロセス化の影響を、フレームワークに相当する限定されたコンポーネント（ソフトウェア部品）で行う（マルチプロセス化の影響を隠蔽する）ことにより、マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供することができる。
【００１８】
よって、本発明に係る情報処理装置は、開発者に対して簡便なアプリケーション開発を許可し、且つユーザに対して安定した機能を提供することができる。
【００１９】
また、上記目的を達成するため、本発明に係る情報処理装置は、所定のアプリケーションが有する機能を実現するために動作する前記入力手段と、前記加工手段と、前記出力手段において、同一プロセスで動作することを特徴とする。また、前記所定のアプリケーションは、前記基本アプリケーションソフトウェアであることを特徴とする。
【００２０】
これによって、本発明に係る情報処理装置は、システムが有する機能のうち、比較的使用頻度の高い基本機能を安定してユーザに提供することができる。
【００２１】
また、上記目的を達成するため、本発明に係る情報処理装置は、所定のアプリケーションが有する機能を実現するために動作する前記入力手段と、前記加工手段と、前記出力手段において、それぞれが特定の単一プロセスで動作することを特徴とする。
【００２２】
これによって、本発明に係る情報処理装置は、当該装置が有するメモリ資源を効率的に使用し、基本機能をユーザに提供することができる。
【００２３】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーションに対して、前記アプリケーション管理ソフトウェアと前記アプリケーションとの間で行うデータのやり取りと同じ振る舞いをするソフトウェア部品を有し、前記ソフトウェア部品が、前記アプリケーションと同じプロセスで動作することを特徴とする。
【００２４】
これによって、本発明に係る情報処理装置は、マルチプロセス環境における各プロセス同士で行うプロセス間通信を、フレームワークに相当する限定されたコンポーネント（ソフトウェア部品）で行うことにより、マルチプロセス化の影響を隠蔽することができる。その結果、アプリケーションを、マルチプロセス環境を意識することなく設計・開発することができる。
【００２５】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーションの動作設定要求を受け付けたときに、前記アプリケーションごとの前記動作設定要求に対応する前記ユーザインタフェースを構成する画面要素を識別する画面要素識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報に基づいて、前記画面要素識別情報から特定したプロセスに対して、前記動作設定要求を送信する動作設定要求送信手段を有することを特徴とする。
【００２６】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーションの動作設定要求を受け付けたときに、前記アプリケーションごとの前記動作設定要求に対応する前記ユーザインタフェースを構成する画面要素を識別する画面要素識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報に基づいて、前記画面要素識別情報から特定したプロセスに対して、前記動作設定要求を送信する動作設定要求送信手段を有することを特徴とする。
【００２７】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーションの実行要求を受け付けたときに、前記実行要求を識別する実行要求識別情報と、実行対象となる前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報に基づいて、前記実行要求識別情報から特定したプロセスに対して前記実行要求を送信し、前記アプリケーションに実行開始を指示する実行要求管理手段を有することを特徴とする。
【００２８】
これによって、本発明に係る情報処理装置は、マルチプロセス環境において、アプリケーションの選択・動作設定・機能実行などを安定して行うことができる。
【００２９】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセスが異常終了したことを検知する検知手段と、前記検知手段により検知されたプロセス異常終了を前記アプリケーション管理ソフトウェアが動作するプロセスに通知する通知手段とを有することを特徴とする。
【００３０】
これによって、本発明に係る情報処理装置は、異常終了したプロセスを、システム環境から切り離しことができ、例えば基本機能のみなどのような機能縮退した状態で、ユーザへの機能提供サービスを継続することができる。
【００３１】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記検知手段及び前記通知手段が、前記第１のプロセス、前記第２のプロセス、及び前記第３のプロセス、又は、前記第１のプロセス及び前記第２のプロセスを生成した親プロセスで動作することを特徴とする。また、前記検知手段は、子プロセスにあたる前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセス終了によるシグナルを受信することで、プロセスの異常終了を検知することを特徴とする。
【００３２】
これによって、本発明に係る情報処理装置は、プロセスの異常終了を即座に検知することができる。
【００３３】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記検知手段及び前記通知手段が、前記第１のプロセスで動作することを特徴とする。また、前記検知手段は、前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセスに対して、プロセスの状態を示す状態情報の取得を要求し、要求への応答があるか否かに基づき、プロセスの異常終了を検知する、又は、前記アプリケーション管理ソフトウェアが動作するプロセス以外のプロセスから送信されるプロセスの状態を示す状態情報を受信したか否かに基づき、プロセスの異常終了を検知することを特徴とする。
【００３４】
これによって、本発明に係る情報処理装置は、簡単な機能構成によりプロセスの異常終了を検知することができる。
【００３５】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、前記アプリケーション管理ソフトウェアが有するコンポーネントが、前記アプリケーションを識別するアプリケーション識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報から、異常終了したプロセスで動作するアプリケーションのアプリケーション識別情報を削除することを特徴とする。
【００３６】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、前記アプリケーション管理ソフトウェアが有するコンポーネントが、前記アプリケーションごとの前記動作設定要求に対応するユーザインタフェースを構成する画面要素を識別する画面要素識別情報と、前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報から、異常終了したプロセスで生成された画面要素の画面要素識別情報を削除することを特徴とする。
【００３７】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、前記アプリケーション管理ソフトウェアが有するコンポーネントが、前記実行要求を識別する実行要求識別情報と、実行対象となる前記アプリケーションが動作するプロセスを識別するプロセス識別情報とを関連付ける情報から、異常終了したプロセスで生成された実行要求の実行要求識別情報を削除することを特徴とする。
【００３８】
これによって、本発明に係る情報処理装置は、不要な情報を削除することで、記憶リソース資源を効率良く使用し、かつ、異常終了により動作不可能なアプリケーションの誤動作を防ぐことができる。
【００３９】
また、上記目的を達成するため、本発明に係る情報処理装置は、前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、異常終了したプロセスで動作していたアプリケーションのうち、プロセスが異常終了する直前に動作していたアプリケーションと、それ以外のアプリケーションとを、異なる態様で表示することを特徴とする。
【００４０】
これによって、本発明に係る情報処理装置は、ユーザに対して異常終了の原因を推定又は特定するための情報を提示することができる。その結果、ユーザが原因を解決する手段を講じることで（例えば、原因となったソフトの無効化やアンインストールなど。）、システムを安定した状態に復帰させることができる。
【００４１】
また、上記目的を達成するため、本発明に係る情報処理装置は、異常終了したプロセスの有効化／無効化を選択設定する画面を表示することを特徴とする。また、前記アプリケーション管理ソフトウェアが動作するプロセスが、前記通知手段によるプロセス異常終了の通知を受け付けたときに、異常終了したプロセスを無効に設定することを特徴とする。
【００４２】
また、上記目的を達成するため、本発明に係る画像処理装置は、原稿を画像データとして読み取る原稿読み取り装置と、画像データを紙に印刷する印刷装置と、上記に記載した、いずれかの特徴を有する情報処理装置とを有することを特徴とする。
【００４３】
これによって、本発明に係る画像処理装置は、マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有する画像処理システムを、ユーザに提供することができる。
【００４４】
よって、本発明に係る画像処理装置は、開発者に対して簡便なアプリケーション開発を許可し、且つユーザに対して安定した機能を提供することができる。
【００４５】
上記目的を達成するため、本発明に係るアプリケーション実行方法は、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアと、前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアと、前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアとを、それぞれが異なるプロセスで実行することを特徴とする。
【００４６】
上記目的を達成するため、本発明に係るアプリケーション実行方法は、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、及び前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを第１のプロセスで実行し、前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを第２のプロセスで実行することを特徴とする。
【００４７】
上記目的を達成するため、本発明に係るアプリケーション実行方法は、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアが動作する第１のプロセスを実行し、予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行し、機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第３のプロセスを実行することを特徴とする。
【００４８】
上記目的を達成するため、本発明に係るアプリケーション実行方法は、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行方法であって、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、ならびに予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第１のプロセスを実行し、機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行することを特徴とする。
【００４９】
これによって、本発明に係るアプリケーション実行方法は、システムの基本機能を実現する基本アプリケーションと、追加される拡張機能を実現する拡張アプリケーションとを、異なるプロセスで動作させ、更に、プロセス間通信などのマルチプロセス化の影響を、フレームワークに相当する限定されたコンポーネントで行うことにより、マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供することができる。
【００５０】
上記目的を達成するため、本発明に係るアプリケーション実行プログラムは、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プログラムであって、コンピュータで、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアと、前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアと、前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアとを、それぞれが異なるプロセスで実行する。
【００５１】
上記目的を達成するため、本発明に係るアプリケーション実行プログラムは、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記入力部と、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プログラムであって、コンピュータで、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、及び前記情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを第１のプロセスで実行し、前記情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを第２のプロセスで実行する。
【００５２】
上記目的を達成するため、本発明に係るアプリケーション実行プログラムは、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プログラムであって、コンピュータで、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェアが動作する第１のプロセスを実行し、予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行し、機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第３のプロセスを実行する。
【００５３】
上記目的を達成するため、本発明に係るアプリケーション実行プログラムは、データを入力する入力部と、データを加工する加工部と、データを出力する出力部とを有し、前記加工部と、前記出力部とを連携し動作させることで１つのアプリケーションが有する機能を実現する情報処理装置におけるアプリケーション実行プロセスであって、コンピュータで、前記アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、ならびに予め前記情報処理装置が有する、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第１のプロセスを実行し、機能拡張のときに前記情報処理装置に追加される、前記入力部、前記加工部、及び／又は前記出力部として機能するコンポーネントプログラムが動作する第２のプロセスを実行する。
【００５４】
これによって、本発明に係るアプリケーション実行プログラムは、コンピュータを、システムの基本機能を実現する基本アプリケーションと、追加される拡張機能を実現する拡張アプリケーションとが、異なるプロセスで動作するように実行させることができる。
【発明の効果】
【００５５】
本発明によれば、マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを備える情報処理装置、画像処理装置、アプリケーション実行方法、及びアプリケーション実行プログラムを提供することができる。
【発明を実施するための最良の形態】
【００５６】
以下、本発明の好適な実施の形態（以下、「実施形態」という。）について、図面を用いて詳細に説明する。
【００５７】
［第１の実施形態］
＜画像処理装置のハードウェア構成について＞
まず、本実施形態に係る画像処理装置のハードウェア構成について、図１を用いて説明する。
【００５８】
図１は、本発明の第１の実施形態に係る画像処理装置１００のハードウェア構成の一例を示す図である。
【００５９】
図中に示すように、画像処理装置１００は、制御部１１、主記憶部１２、補助記憶部１３、ネットワークI/F１４、外部記憶装置I/F１５、外部装置I/F１６、表示部（パネル表示）１９、入力部（操作部）２０、印刷部（プロッタ部）２１及びスキャナ部（原稿読み取り部）２２などにより構成されている。
【００６０】
制御部（CPU）１１は、コンピュータの中で、各装置の制御やデータの演算・加工を行う。制御部１１は、主記憶部１２に記憶されたプログラムを実行する演算装置で、入力装置や記憶装置からデータを受け取り、演算・加工した上で、出力装置や記憶装置に出力する。
【００６１】
主記憶部（ROM：Read Only Memory、RAM：Random Access Memory）１２は、制御部１１が実行する基本ソフトウェアであるOSやアプリケーションソフトウェアなどのプログラムやデータを記憶又は一時保持する記憶装置である。
【００６２】
補助記憶部（HD：Hard Disk）１３は、アプリケーションソフトウェアなどに関連するデータを記憶する記憶装置である。また、補助記憶部１３には、画像処理装置１００が管理する各種情報（例えば、ユーザ情報など。）が格納され、データベース（DB：database）やファイルシステム（FS：File System）などの機能により管理される。
【００６３】
ネットワークI/F１４は、有線及び／又は無線回線などのデータ伝送路により構築されたLAN（Local Area Network）、WAN（Wide Area Network）などのネットワークを介して接続された通信機能を有する周辺機器と当該画像処理装置１００とのインタフェースである。
【００６４】
外部記憶装置I/F１５は、USB（Universal Serial Bus）などのデータ伝送路を介して接続された外部記憶装置（例えば、記憶メディアドライブなど。）と当該画像処理装置１００とのインタフェースである。
【００６５】
外部装置I/F１６は、USBなどのデータ伝送路を介して接続された外部装置（例えば、デジタルカメラなど。）と当該画像処理装置１００とのインタフェースである。
【００６６】
画像処理装置１００は、これらのインタフェースを介して、外部と各種データ（例えば、画像データなど。）のやり取り（送受信や読み込み／書き込み）を行っている。
【００６７】
表示部（パネル表示）１９及び入力部（操作部）２０は、キースイッチ（ハードキー）とタッチパネル機能（GUI（Graphical User Interface）のソフトウェアキーを含む。）を備えたLCD（Liquid Crystal Display）とから構成され、画像処理装置１００が有する機能を利用する際のUI（User Interface）として機能する表示及び／又は入力装置である。
【００６８】
印刷部（プロッタ部）２１は、CMYKからなる画像データを受け取ると、レーザービームを用いた電子写真プロセス（露光、潜像、現像及び転写のプロセス）を用いて、受け取った画像データを転写紙（印刷用紙）に出力（印刷）するプロッタ装置である。
【００６９】
スキャナ部（原稿読み取り部）２２は、CCD（Charge Coupled Devices）光電変換素子からなるラインセンサとA/Dコンバータとこれらを駆動する駆動回路を備え、原稿読み取り面（コンタクトガラス上）にセットされた原稿をスキャンすることでRGB各8ビットのデジタル画像データを生成（原稿から情報を読み取り電子化）する読み取り装置である。
【００７０】
このように、画像処理装置１００は、主記憶部１２や補助記憶部１３などの記憶装置に格納されたプログラムを制御部１１で実行し、制御信号（制御命令）を各装置へ送出すること（各装置を制御すること）で、画像処理装置１００が有するコピー、ファックス、スキャナ、プリンタなどの機能を実現し、画像処理装置１００で管理する情報、又は画像処理装置１００が接続されたシステム内で管理する情報を処理することができる。
【００７１】
＜画像処理装置１００のソフトウェア構成及び基本処理手順について＞
次に、本実施形態に係る画像処理装置１００の機能を実現するためのソフトウェア構成及び基本処理手順について、図２〜５を用いて説明する。
【００７２】
図２は、本発明の第１の実施形態に係る画像処理装置１００のソフトウェア構成の一例を示す図である。
【００７３】
図中に示すように、本実施形態に係るソフトウェアは、ユーザインタフェース層１０１、コントロール層１０２、アプリケーションロジック層１０３、デバイスサービス層１０４及びデバイス制御層１０５などにより構成されている。なお、図中における各層の上下関係は、基本的に上にある層が下の層を呼び出す関係に基づいている。
【００７４】
ユーザインタフェース層１０１は、機能（例えば、コピー、ファックス、スキャナ、プリンタなどのアプリケーション機能）の実行要求を受け付けるためのUI機能が実装されている部分であり、例えば、通信サーバ部３０１及びローカルUI部３０２などが含まれる。
【００７５】
通信サーバ部３０１は、例えば、非図示の通信機器を有する周辺機器であるクライントPC（Personal Computer）などからネットワークを介して各種要求（例えば、印刷動作要求など。）を受け付ける。また、ローカルUI部３０２は、例えば、非図示のオペレーションパネルを介して入力される各種要求（例えば、コピー動作要求や動作設定など。）を受け付ける。
【００７６】
ユーザインタフェース層１０１において受け付けられた要求は、コントロール層１０２に伝えられる。
【００７７】
コントロール層１０２は、要求された機能を実現するための処理を制御するための機能が実装されている部分である。例えば、コントロール部３０３などが含まれている。具体的には、コントロール部３０３において、要求された機能に応じて、後述するアプリケーションロジック層１０３における各フィルタを接続し、接続されたフィルタに基づいて機能の実行を制御する。なお、本実施形態において「画像処理装置１００の機能」とは、画像処理装置１００がユーザに対して提供する1つのまとまった単位（要求が入力されて最終的な出力が得られるまで）のサービスと同義であり、ソフトウェア的には1つのまとまった単位のサービスを提供するアプリケーションと同義である。
【００７８】
アプリケーションロジック層１０３は、それぞれが画像処理装置１００において提供される機能の一部を実現する部品群（ソフトウェア部品群）が実装されている部分である。すなわち、アプリケーションロジック層１０３における部品を組み合わせることにより1つの機能が実現される。本実施形態では、各部品を「フィルタ」と呼ぶ。これは、画像処理装置１００のソフトウェアアーキテクチャが「パイプ＆フィルタ」と呼ばれる考え方に基づくものである。
【００７９】
図３は、本発明の第１の実施形態に係るパイプ＆フィルタの概念及びフィルタの構成要素の一例を示す図である。図３の（a）には、パイプ＆フィルタの概念を示し、図３の（b）には、フィルタの構成要素の一例を示す。
【００８０】
まず、パイプ＆フィルタの概念について説明する。図３の（a）において、「Ｆ」はフィルタを示し、「Ｐ」はパイプを示す。図中に示すように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して所定の変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。すなわち、本実施形態に係る画像処理装置１００では、各機能を、画像処理装置１００内部で管理する情報（例えば、ユーザ情報や画像データなど。）に対する「変換」の連続として捉える。画像処理装置１００の各機能は、画像処理装置１００内部で取り扱う情報の入力、加工及び出力によって構成されるものとして一般化することができる。そこで「入力」、「加工」及び「出力」を「変換」として捉え、1つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ（入力手段）」と言う。また、加工を実現するフィルタを特に「変換フィルタ（加工手段）」と言う。更に、出力を実現するフィルタを特に「出力フィルタ（出力手段）」と言う。なお、各フィルタは独立しており、フィルタ間における依存関係（呼び出し関係）は基本的に存在しない。従って、フィルタ単位で追加（インストール）又は削除（アンインストール）が可能とされている。
【００８１】
図２に戻り、アプリケーションロジック層１０３には、入力フィルタ１０３aとして、例えば、読み取りフィルタ３０４などが含まれている。
【００８２】
読み取りフィルタ３０４は、スキャナ部２２による画像データの読み取りを制御し、読み取られた画像データを出力する。
【００８３】
その他、入力フィルタ１０３aとして、補助記憶部１３に保管されている文書データ（画像データ）を読み出し、読み出されたデータを出力する保管文書読出フィルタ、電子メールの受信し、当該電子メールに含まれているデータを出力するメール受信フィルタ、FAX受信を制御し、受信されたデータを出力するFAX受信フィルタ、非図示のクライアントPCから印刷データを受信し、受信された印刷データを出力するPC文書受信フィルタ、画像処理装置１００の設定情報や履歴情報などを、例えば表形式に整形されたデータとして出力するレポートフィルタなどが含まれている。
【００８４】
また、変換フィルタ１０３bとしては、例えば、文書加工フィルタ３０５などが含まれている。文書加工フィルタ３０５は、入力されたデータに所定の画像変換処理（集約、拡大、又は縮小など）を施し出力する。
【００８５】
その他、変換フィルタ１０３bとして、入力されたPostScriptデータをビットマップデータに変換して出力する（レンダリング処理を実行する）文書変換フィルタなどが含まれている。
【００８６】
また、出力フィルタ１０３cとしては、例えば、印刷フィルタ３０６などが含まれている。印刷フィルタ３０６は、入力されたデータを印刷部２１に出力（印刷）させる。
【００８７】
その他、出力フィルタ１０３cとして、入力されたデータを補助記憶部１３に保存する保管文書登録フィルタ、入力されたデータを電子メールに添付して送信するメール送信フィルタ、入力されたデータをFAX送信するFAX送信フィルタ、入力されたデータを、非図示のクラインアントPCに送信するPC文書送信フィルタ、入力されたデータを表示部１９にプレビュー表示させるプレビューフィルタなどが含まれている。
【００８８】
デバイスサービス層１０４は、アプリケーションロジック層１０３における各フィルタから共通に利用される下位機能が実装されている部分であり、例えば、画像パイプ３０７、データ管理部３０８などが含まれている。
【００８９】
画像パイプ３０７は、或るフィルタからの出力データを次のフィルタに伝達するパイプの機能を実現する。また、データ管理部３０８は、ユーザ情報が登録されたデータベース（DB）や文書又は画像データなどが蓄積されるデータベースなどの各種のデータベースを表現する。
【００９０】
デバイス制御層１０５は、デバイス（ハードウェア）を制御するドライバと呼ばれるプログラムモジュール群が実装されている部分であり、例えば、スキャナ制御部３０９、プロッタ制御部３１０、メモリ制御部３１１、及び操作デバイス制御部３１２などが含まれる。各制御部は、当該制御部の名前に付けられている各デバイスを制御する。
【００９１】
アスペクト１０６は、例えば、アクセス制御、履歴、課金といった、システム全体に渡る横断的な情報を取り扱うプログラムモジュール群が実装されている部分である。
【００９２】
ここから、フィルタについて更に詳しく説明する。図３の（b）は、フィルタの構成要素の一例を示す図である。図中に示すように、各フィルタは、フィルタ設定用UI、フィルタロジック、フィルタ固有下位サービス及び永続記憶領域情報などにより構成されている。このうち、フィルタ設定用UI、フィルタ固有下位サービス及び永続記憶領域情報については、フィルタによって必ずしも構成要素に含まれない。
【００９３】
フィルタ設定用UIは、フィルタの実行条件などを設定させるための画面を表示部１９などに表示させるプログラムである。例えば、読取フィルタ３０４であれば、解像度、濃度、画像種別などを設定させる画面（動作（条件）設定画面）が相当する。なお、表示部１９の表示がHTML（HyperText Markup Language）データやスクリプトに基づいて行われることを考えると、フィルタ設定用UIは、HTMLデータやスクリプトであってもよい。
【００９４】
フィルタロジックは、フィルタの機能を実現するためロジックが実装されたプログラムである。すなわち、フィルタの構成要素としてのフィルタ固有下位サービスやデバイスサービス層１０４又はデバイス制御層１０５などを利用して、フィルタ設定用UIを介して設定された実行条件に応じてフィルタの機能を実現する。例えば、読取フィルタ３０４であれば、スキャナ部２２による原稿の読み取り制御のためのロジックが相当する。
【００９５】
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能（ライブラリ）である。すなわち、デバイスサービス層１０４又はデバイス制御層１０５に相当する機能であるが、他のフィルタから使用されないものについては、フィルタの一部として実装されてもよく、当該一部がフィルタ固有下位サービスに相当する。例えば、読取フィルタ３０４であれば、スキャナ部２２を制御するための機能が相当するが、本実施形態では、デバイス制御層１０５においてスキャナ制御部３０９として実装されている。従って、読取フィルタ３０４において、フィルタ固有下位サービスの実装は必ずしも必要ではない。
【００９６】
永続記憶領域情報は、フィルタに対する設定情報（例えば、実行条件のデフォルト値など。）など、不揮発メモリ（例えば、NVRAM（Non Volatile RAM）など。）に記憶する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタがインストールされるときにデータ管理部３０８に登録される。
【００９７】
ここで、本実施形態に係る画像処理装置１００における各機能を実現するためのフィルタの組み合わせの一例について以下に説明する。
【００９８】
例えば、コピー機能の場合は、読取フィルタ３０４と印刷フィルタ３０６とを接続することにより実現される。読取フィルタ３０４によって原稿より読み取られた画像データを印刷フィルタ３０６によって印刷すればよいからである。なお、集約、拡大、又は縮小などの加工が要求された場合には、これらの加工を実現する文書加工フィルタ３０５が二つのフィルタの間に挿入されることにより実現される。
【００９９】
次に、本実施形態のソフトウェア構成により実行される基本処理手順について、図４及び５を用いて説明する。
図４及び５は、本発明の第１の実施形態に係る画像処理装置１００の基本処理手順の一例を示すフローチャートである。ここで言う「基本処理手順」とは、画像処理装置１００が1つの機能を実現する際の処理手順のことを意味する。
【０１００】
まず、ユーザによって入力フィルタ１０３aが選択され（Ｓ１１）、選択された入力フィルタ１０３aの実行条件が設定される（Ｓ１２）。同様に、変換フィルタ（加工手段）１０３b又は出力フィルタ１０３cについても選択が行われ（Ｓ１３）、フィルタ間の接続が指定され（Ｓ１４）、実行条件が設定される（Ｓ１５）。
【０１０１】
上記の操作は、ユーザインタフェース層１０１のローカルUI部３０２の制御の基、例えば、図１において例に挙げたタッチパネル機能を有する表示部１９や入力部２０などを介して行われる。
【０１０２】
各フィルタの選択が完了し（Ｓ１６がYESの場合）、スタートボタンが押下されると、ユーザインタフェース層１０１からコントロール層１０２に対して、要求内容（例えば、フィルタの種別と当該フィルタに対する動作設定情報など。）が通知される。
【０１０３】
コントロール層１０２は、ユーザインタフェース層１０１からの要求内容を受けて、選択された各フィルタ間をパイプによって接続する（Ｓ１７）。パイプの実体はメモリ（補助記憶部１３の格納領域も含む。）であるが、パイプの両端のフィルタに応じて利用するメモリの種類が異なり、その対応関係は、例えば、画像処理装置１００の補助記憶部１３内に予め定義されている。従って、コントロール層１０２は、定義された対応関係に基づいて、各フィルタ間を特定のパイプで接続する。
【０１０４】
続いて、コントロール層１０２は、各フィルタに対して並列的に実行要求を出力する（Ｓ１８）。すなわち、フィルタの呼び出しはフィルタの接続順ではなく、全てのフィルタに対してほぼ同時に行われる。なぜならフィルタ間の同期はパイプによってとられるからである。すなわち、コントロール層１０２からの実行要求を受けて、各フィルタは自分の入力側のパイプにデータが入力されるまで待機する。但し、入力フィルタ１０３aには、入力側にパイプは存在しない。従って、入力フィルタ１０３aは実行要求に応じて処理を開始する。
【０１０５】
処理手順は図５に移り、まず、入力フィルタ１０３aは、入力デバイスよりデータを入力し（Ｓ２１）、当該データを、出力側に接続されているパイプに出力する（Ｓ２２）。なお、データが複数回に分けて入力される場合（複数枚の原稿がスキャンされる場合など）は、データの入力とパイプへの出力が繰り返される。全ての入力データについて処理が終了すると（Ｓ２３がYESの場合）、入力フィルタ１０３aの処理は終了する。
【０１０６】
変換フィルタ１０３bは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み（Ｓ３１）、データに対して画像処理を施す（Ｓ３２）。続いて、処理結果としてのデータを出力側に接続されているパイプに出力する（Ｓ３３）。入力側のパイプに入力された全てのデータについて処理が終了すると（Ｓ３４がYESの場合）、変換フィルタ１０３bの処理は終了する。
【０１０７】
出力フィルタ１０３cは、入力側に接続されているパイプに対するデータの入力を検知すると処理を開始する。まず、当該パイプからデータを読み込み（Ｓ４１）。続いて、読み込まれたデータを出力デバイスを利用して出力する（Ｓ４２）。入力側のパイプに入力された全てのデータについて処理が終了すると（Ｓ４３がYESの場合）、出力フィルタ１０３cの処理は終了する。
【０１０８】
＜「パイプ＆フィルタ」によるアプリケーション機能について＞
これまで説明した「パイプ＆フィルタ」のソフトウェア構成及び基本処理手順を踏まえて、本実施形態に係るアプリケーション機能を実現する場合について考える。
【０１０９】
このように、これまで説明を行ってきた「パイプ＆フィルタ」のソフトウェア構成上で動作するアプリケーションを実現するためには、画像処理装置１００で行いたい処理の目的にあわせて、データを入力する入力フィルタ１０３aと、入力したデータを加工する変換フィルタ１０３bと、加工したデータを出力する出力フィルタ１０３cとを組み合わせ、入力・加工・出力の一連の作業工程（ワークフロー）を構成する。次に、これらの各フィルタ（入力・加工・出力の各手段）をパイプで接続する。
【０１１０】
これによって、アプリケーションは、入力フィルタ１０３aで入力したデータを、次工程の変換フィルタ１０３bへ伝達でき、変換フィルタ１０３bで加工したデータを、次工程の出力フィルタ１０３cへ伝達する。すなわち、画像処理装置１００が有する入力・加工・出力機能コンポーネント（入力・加工・出力の各ソフトウェア部品）を連携し動作させることで機能を実現する。
【０１１１】
このように、本実施形態に係る画像処理装置１００には、アプリケーションが目的とする機能を実現する入力・加工・出力機能コンポーネントを、必要に応じてインストールすることで、アプリケーションがもつ機能そのものを実装できる。
【０１１２】
＜情報処理装置のハードウェア構成について＞
図６は、本発明の第１の実施形態に係る情報処理装置２００のハードウェア構成の一例を示す図である。
【０１１３】
図中に示すように、本実施形態に係る情報処理装置２００は、制御部１１、主記憶部１２、補助記憶部１３、ネットワークI/F１４、外部記憶装置I/F１５、外部装置I/F１６、出力装置I/F１７、及び入力装置I/F１８などにより構成されている。これらの構成要素は、図１を用いて説明した本実施形態に係る画像処理装置１００で示した構成要素と一部同じ装置を有していることから、同じ構成要素については、図１と同じ参照符号を用いることで説明を省略し、異なる構成要素についてのみ以下に説明する。
【０１１４】
出力装置I/F１７は、専用ケーブルなどのデータ伝送路を介して接続された出力装置（例えば、CRT（Cathode Ray Tube）やLCDなど。）と当該情報処理装置２００とのインタフェースである。
【０１１５】
入力装置I/F１８は、USBなどのデータ伝送路を介して接続された入力装置（例えば、キーボードやマウスなど。）と当該情報処理装置２００とのインタフェースである。
【０１１６】
このように、本実施形態に係る情報処理装置２００は、主記憶部１２や補助記憶部１３などの記憶装置に格納されたプログラムを制御部１１で実行し、制御信号を各装置へ送出することで、情報処理装置２００が有する機能を実現している。画像処理装置１００との違いは、装置に接続された入力／出力装置の特性が異なる点であって、制御部１１によりプログラムを実行し、各装置を制御することで「情報処理装置２００で管理する情報、又は情報処理装置２００が接続されたシステム内で管理する情報を処理する」点において同じである。
【０１１７】
よって、本発明の「マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供する」という目的を達成するために必要なハードウェアの最小構成要素は、画像処理装置１００及び情報処理装置２００ともに同じであることから、これまでに説明した画像処理装置１００を、印刷部２１、スキャナ部２２、及び情報処理装置２００を有する装置として解釈できる。このことから、以降、情報処理装置２００として本発明の実施形態について説明を行う。
【０１１８】
＜マルチプロセス化について＞
では、図２〜５を用いて説明した「パイプ＆フィルタ」のソフトウェア構成におけるマルチプロセス化について、図７〜９を用いて説明する。
【０１１９】
本実施形態に係る情報処理装置２００では、「マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供する」ために、以下の基本方針に従ってマルチプロセス化を行う。
（方針１）自社が提供する基本機能と、サードベンダが提供する拡張機能とを、異なるプロセスで動作させる。
（方針２）ユーザからの使用頻度が高い基本機能（基本アプリケーション）を、同じプロセス（同じJVM）で動作させる。
（方針３）アプリケーションロジック層１０３へのコンポーネント実装の影響を最小化する。
【０１２０】
＜＜プロセス構成＞＞
図７は、本発明の第１の実施形態に係るプロセス構成の一例を示す図である。
【０１２１】
図中に示すように、本実施形態に係る情報処理装置２００は、先に示した（方針１）に従ってマルチプロセス化を実現するため、OS３１（例えば、NetBSDなど。）から起動されるプロセス構成を、アプリケーション管理用JVMを動作させるプロセスA（第１のプロセス）３２aと、自社製アプリケーション用（基本アプリケーション用）JVMを動作させるプロセスB（第２のプロセス）３２bと、サードベンダ製アプリケーション用（拡張アプリケーション用）JVMを動作させるプロセスC（第３のプロセス）３２cとする。
【０１２２】
ここで、JVMについて簡単に説明する。JVMはOS３１上のプロセスの１つとして、メインメモリ上にアドレス空間を構築する。ここで言う「アドレス空間」とは、プロセス管理下のメモリ管理単位を意味する。OS３１は、ハードディスクなどの補助記憶部１３に格納されたプログラムをメモリ上に展開（ロード）することでプロセスを起動し、プロセスごとに物理メモリを割り振り（ディスパッチして）、使用状況を管理する。メモリ上に展開されたJVMのアドレス空間には、Javaアプリケーションを展開するための領域が確保される。
【０１２３】
プロセスA３２aでは、アプリケーションの起動や終了などの管理を行う「アプリケーション管理ソフトウェア（システム：自社開発した基盤ソフト）」を実行する。プロセスB３２bでは、情報処理装置２００が有する基本機能を実現する「基本アプリケーションソフトウェア」を実行する。プロセスC３２cでは、情報処理装置２００に追加される拡張機能を実現する「拡張アプリケーションソフトウェア」を実行する。
【０１２４】
これによって、本実施形態に係る情報処理装置２００は、拡張した機能（インストールした拡張アプリケーション）の不具合がシステムの基本機能に影響を及ぼす（例えば、システムがクラッシュ（異常終了）する。）ことがなく、また、拡張した機能が多くのメモリを使用した場合でも、アプリケーション管理ソフトウェアに影響を与えることなく、ユーザに対して安定した機能を提供することができる。
【０１２５】
＜＜各レイヤのプロセス配置＞＞
図８は、本発明の第１の実施形態に係る各レイヤをプロセスに配置する一例を示す図である。
【０１２６】
図７を用いて説明したように、適切な粒度で分割された３つのプロセス（３種類のJVM）に対して、各プロセスで動作させるレイヤのコンポーネントを、図８に示すように配置する。
【０１２７】
ユーザインタフェース層１０１は、全ての機能に対するUIのフレームワークとなるコンポーネントが含まれており、これらはシステムワイドな性質からアプリケーション管理ソフトウェアが動作するプロセスA３２aに配置する。また、アプリケーション個別のUIについては、基本アプリケーション（自社製アプリケーション）や拡張アプリケーション（サードベンダ製アプリケーション）それぞれが動作するプロセスB３２b及びプロセスC３２cに配置する。
【０１２８】
コントロール層１０２は、アプリケーションの動作を制御するコンポーネント（リクエスト管理、セッション管理などのソフトウェア部品）と、全てのコンポーネントに関連する機能を実現するコンポーネント（プラグイン管理、機内監視などのソフトウェア部品）が含まれており、いずれもシステムワイドな性質からアプリケーション管理ソフトウェアが動作するプロセスA３２aに配置する。
【０１２９】
アプリケーションロジック層１０３は、情報処理装置２００が有する機能を実現するためのコンポーネントが含まれており、機能追加・変更・削除などが簡便に行えるように、アプリケーション管理ソフトウェアが動作するプロセスA３２aと異なる、基本アプリケーションが動作するプロセスB３２b及び拡張アプリケーションが動作するプロセスC３２cに配置する。
【０１３０】
デバイスサービス層１０４は、アプリケーション層１０３から利用される共通のサービスを実現するコンポーネントが含まれており、アプリケーション層１０３のコンポーネントが、その動作単位でプロセスB３２b及びプロセスC３２cに配置されることを考慮し、必要なサービスも同一のプロセスB３２b及びプロセスC３２cに配置する。
【０１３１】
デバイス制御層１０５は、システムで扱うデバイスに相当するコンポーネントが含まれており、情報処理装置２００の性能に大きく影響するため、アプリケーション管理ソフトウェアが動作するプロセスA３２a及び情報処理装置２００が有する機能を実現する基本アプリケーションが動作するプロセスB３２bに配置する。
【０１３２】
アスペクト１０６は、システム全体に渡る横断的な関心ごとを取り扱うコンポーネントが含まれており、いずれもシステムワイドな性質からアプリケーション管理ソフトウェアが動作するプロセスA３２aに配置する。
【０１３３】
このように、本実施形態に係る情報処理装置２００は、各レイヤの特徴を考慮して、レイヤのコンポーネントを最適なプロセスに配置する。また、先に示した（方針２）に従って、「情報処理装置２００が有する基本機能のうち、ユーザからの使用頻度の高いコピー機能などのアプリケーションが有する機能を実現するために用いる入力フィルタ１０３a、変換フィルタ１０３b、出力フィルタ１０３cなどの各コンポーネントを、同じプロセスで動作させること」とする。
【０１３４】
これによって、本実施形態に係る情報処理装置２００は、システムが有する機能のうち、比較的使用頻度の高い基本機能を安定してユーザに提供することができる。
【０１３５】
＜＜アクティビティ及びフィルタのプロセス配置＞＞
図９は、本発明の第１の実施形態に係る各アクティビティ及びフィルタをプロセスに配置する一例を示す図である。
【０１３６】
図８では、各レイヤの特徴に基づいたマルチプロセス化における各レイヤのコンポーネントの配置について説明を行った。ここでは、更に細かい単位に視点を移し、「パイプ＆フィルタ」における「フィルタ」と、一連のフィルタをつなぎ合わせることで実現される機能の「アクティビティ」それぞれの単位で、マルチプロセス化におけるコンポーネントの配置について、図９を用いて説明する。
【０１３７】
図９の（a）には、「アクティビティ」の単位でコンポーネントを配置する「アクティビティ集約型」の一例が示されている。また、図９の（b）には、「フィルタ」の単位でコンポーネントを配置する「フィルタ集約型」の一例が示されている。また、図９では、「フィルタA」Faと「フィルタB」Fbとを「パイプ」Pで接続して実現される「アクティビティ１」A1、また、「フィルタA」Faと「フィルタC」Fcとを「パイプ」Pで接続して実現される「アクティビティ２」A2が示されている。
【０１３８】
「アクティビティ集約型」は、図９の（a）に示すように、アクティビティコンポーネントに必要な１つ又は複数のフィルタコンポーネントを、アクティビティコンポーネントと同じプロセスに配置し、アクティビティが単一プロセス（単一JVM）で実行するためのコンポーネント構成である。
【０１３９】
それに対して、「フィルタ集約型」は、図９の（b）に示すように、単一プロセスに、１つのフィルタコンポーネントを配置し、アクティビティが複数のプロセス（複数のJVM）をまたいで各フィルタを利用するコンポーネント構成である。
【０１４０】
「アクティビティ集約型」のメリット及びデメリットは、以下の通りである。
［メリット］
・拡張アプリケーションのコンポーネントが不正な処理を行っても、他のアクティビティの実行に影響しない。
・機能選択、動作設定、アクティビティ実行まで、単一プロセスで動作するため、フィルタ間でのプロセス間通信が発生しないため、プロセス間通信を実装するコンポーネントが少なくてすみ、またプロセス間通信のオーバーヘッドにより生じる性能低下を抑えることができる。
・アクティビティ実行中に、プロセスを動的に終了するなどの後処理を容易に行うことができる。
［デメリット］
・複数のプロセスに同じコンポーネントが配置されるため、同じクラスのバイトコードが必要となる（但し、プロセス間でバイトコードを共有する対応策がある）。
・同じフィルタコンポーネントが複数のプロセスに存在するため、複数のプロセス間で、フィルタが使用するリソースのスケジューリング（排他制御）を行う必要がある。
【０１４１】
「フィルタ集約型」のメリット及びデメリットは、以下の通りである。
［メリット］
・同じフィルタコンポーネントが複数のプロセスに存在しないため、メモリ効率がよい。
・同じフィルタコンポーネントが複数のプロセスに存在しないため、フィルタで使用するリソースのスケジューリングが単一プロセス内で解決できる。
［デメリット］
・拡張アプリケーションが基本アプリケーション用のフィルタコンポーネントを利用する場合、基本アプリケーションの実行に影響を及ぼす。
・機能選択、動作設定、アクティビティ実行まで、複数のプロセスで動作するため、複数のフィルタコンポーネントにアクセスする必要があり、頻繁にフィルタ間でのプロセス間通信が発生する。
・フィルタコンポーネントごとにプロセスが割り当てられているため、アクティビティ実行中に、プロセスを動的に終了するなどの後処理が難しい。
【０１４２】
これらのことを踏まえて総合的に判断すると、本実施形態に係る情報処理装置２００の「パイプ＆フィルタ」における最適なマルチプロセス化には、「拡張アプリケーションのコンポーネントが不正な処理を行っても、他のアクティビティの実行に影響しない」と「機能選択、動作設定、アクティビティ実行まで、単一プロセスで動作し、フィルタ間でのプロセス間通信が発生しないため、プロセス間通信を実装するコンポーネントが少なくてすみ、またプロセス間通信のオーバーヘッドにより生じる性能低下を抑えることができる。」の利点がある「アクティビティ集約型」を採用する。
【０１４３】
このように、本実施形態に係る情報処理装置２００は、先に示した（方針３）に従って、「アクティビティコンポーネントで利用可能なフィルタコンポーネントを、アクティビティコンポーネントと同じプロセスに配置し、アクティビティが単一プロセスで実行するためのコンポーネント構成である「アクティビティ集約型」」を採用し、「マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステム」を実現している。
【０１４４】
これによって、本実施形態に係る情報処理装置２００は、マルチプロセス環境における各プロセス同士（各JVM同士）で行うプロセス間通信を、フレームワークに相当する限定されたコンポーネントで行えるように構成することにより、アプリケーションへのマルチプロセス化の影響を隠蔽することができる。その結果、アプリケーションを、マルチプロセス環境を意識することなく設計・開発することができる。
【０１４５】
＜情報処理装置における主な機能構成について＞
ここからは、図７〜９を用いて説明したプロセス構成及び各レイヤのプロセス配置において、本実施形態に係る情報処理装置２００が有する基本機能及び拡張機能をどうのように動作させるのか、すなわち「マルチプロセス環境においてアプリケーションをどのような仕組みで実行させるのか」について、図１０〜１６を用いて説明する。
【０１４６】
図１０は、本発明の第１の実施形態に係る情報処理装置２００の主な機能構成の一例を示す図である。
【０１４７】
本実施形態に係る情報処理装置２００は、図７に示した３つのプロセス（３種類のJVM）を実行する実行手段５１を有している。
【０１４８】
実行手段５１は、図１０に示すように、以下の３つのプロセスを実行する。実行手段５１は、例えばOS３１である。
【０１４９】
［プロセスＡ］
プロセスA３２aは、アプリケーションの起動や終了などの管理を行うアプリケーション管理ソフトウェアを動作させるプロセスである。また、プロセスA３２aは、情報処理装置２００の起動後、常駐する。
【０１５０】
［プロセスＢ］
プロセスB３２bは、予め当該情報処理装置２００が有する、入力フィルタ１０３a、変換フィルタ１０３b、及び／又は出力フィルタ１０３cとして機能するコンポーネント、すなわち情報処理装置２００が有する標準的な機能を実現するコンポーネントを動作させるプロセスである。
【０１５１】
［プロセスＣ］
プロセスC３２cは、機能拡張のときに当該情報処理装置２００に追加される、入力フィルタ１０３a、変換フィルタ１０３b、及び／又は出力フィルタ１０３cとして機能するコンポーネントを動作させるプロセスである。
【０１５２】
また、プロセスB３２b及びプロセスC３２cは、ユーザからの動作要求を受けたときなど、必要に応じて実行手段５１により実行される。
【０１５３】
このように、本実施形態に係る情報処理装置２００は、システムと、基本機能を実現する基本アプリケーション８１と、拡張機能を実現する拡張アプリケーション８２とにおいて、それぞれが動作するメモリ空間を分離し、互いに影響を及ぼさないマルチプロセス化を実現している。
【０１５４】
実行手段５１によって実行された３つのプロセスでは、先に説明した（方針３）に従って、プロセス間通信が最小限となるコンポーネント構成としたが、アプリケーション管理ソフトウェアと基本アプリケーション８１や、アプリケーション管理ソフトウェアと拡張アプリケーション８２との間では、動作要求、動作設定、及び実行要求などのプロセス間通信を行わなければならない。
【０１５５】
そこで、本実施形態に係る情報処理装置２００では、アプリケーション管理ソフトウェアと、アプリケーション管理ソフトウェアが動作するプロセスA３２aと異なるプロセスB３２b又はプロセスC３２cで動作する各アプリケーションとの間で、データのやり取りを行う代理コンポーネント７１を有している。
【０１５６】
図１１は、本発明の第１の実施形態に係る代理コンポーネントの仕組みの一例を示す図である。
【０１５７】
図１１の（a）には、アプリケーション管理ソフトウェアからアプリケーションAPを呼び出す例が示されている。また、図１１の（b）には、アプリケーションAPからアプリケーション管理ソフトウェアを呼び出す例が示されている。
【０１５８】
通常、アプリケーション管理ソフトウェアから各アプリケーションAP1及びAP2を呼び出す場合、呼び出しイベントは、システムワイドなフレームワークFWコンポーネントからプロセス間通信によってアプリケーションAPに送信される。また、各アプリケーションAP1及びAP2からアプリケーション管理ソフトウェアを呼び出す場合、呼び出しイベントは、アプリケーションAPからプロセス間通信によってシステムワイドなフレームワークFWコンポーネントに送信される。そのため、アプリケーションAPを開発するときに、プロセス間通信を考慮して開発を行わなければならない。
【０１５９】
そこで、本実施形態では、アプリケーション管理用プロセスＡ３２aとアプリケーション用プロセスＢ３２b又はＣ３２cとの間でプロセス間通信を行うことで、アプリケーションAPに対して、アプリケーション管理ソフトウェアとのデータのやり取りと同じ振る舞いをする代理コンポーネント７１を、各アプリケーションAP1及びAP2が動作するプロセスB３２b又はプロセスC３２cに配置し、プロセス間通信（リモート呼び出し機能）を隠蔽する。
【０１６０】
その結果、アプリケーションAPは、単一プロセスで動作しているときと同じように、ローカル呼び出しによって、アプリケーション管理ソフトウェアとのイベントのやり取りを行うことができる。
【０１６１】
このように、本実施形態に係る情報処理装置２００は、マルチプロセス環境における各プロセス同士で行うプロセス間通信を、フレームワークFWに相当する限定されたコンポーネントで行うことにより、マルチプロセス化の影響を隠蔽することができる。その結果、アプリケーションAPを、アプリケーション管理ソフトウェアとのプロセス間通信を意識することなく（マルチプロセス環境を意識することなく）設計・開発することができる。
【０１６２】
図１２は、本発明の第１の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（アクティビティ集約型の場合）を示す図である。
【０１６３】
アプリケーション管理ソフトウェアが動作するプロセスA３２aと、基本プリケーション８１が動作するプロセスB３２b又は拡張プリケーション８２が動作するプロセスC３２cとの間でプロセス間通信を行う必要がある、システムワイドな性質をもつコンポーネントは、ユーザインタフェース層１０１のローカルUI部３０２、コントロール層１０２のコントロール部３０３、デバイスサービス層１０４のデータ管理部３０８、データ制御層１０５のスキャナ制御部３０９、プロッタ制御部３１０、及びメモリ制御部３１１である。
【０１６４】
そこで、図中の破線枠に示すように、上記コンポーネントの代理コンポーネント７１を、各アプリケーションが動作するプロセスB３２b及びプロセスC３２cに配置する。
【０１６５】
次に、本実施形態に係る情報処理装置２００は、マルチプロセス化においてアプリケーションAPを実行するときの「アプリケーションの動作要求」、「アプリケーションの動作設定要求」、及び「アプリケーションの実行要求」をどのように行うのかについて説明する。
【０１６６】
本実施形態に係る情報処理装置２００において、ユーザが、UI画面を介してアプリケーションAPを実行するまでに行う操作は、「動作対象のアプリケーションAPの選択（動作要求の指示）」、「選択されたアプリケーションAPにおける入力・加工・出力の各フィルタの動作設定（動作設定の指示）」、「アプリケーションAPの実行指示（実行要求の指示）」の順で行われる。
【０１６７】
そのため、マルチプロセス化を行った場合には、アプリケーション管理ソフトウェアが、各操作段階において、次処理を行うコンポーネントにユーザの指示に従ったイベントを通知しなければならないため、次処理を行うコンポーネントが動作するプロセスを知る必要がある。
【０１６８】
そのため、本実施形態に係る情報処理装置２００は、動作要求送信手段６１、動作設定送信手段６２、及び実行要求管理手段６３を有している。
【０１６９】
動作要求送信手段６１は、動作させるアプリケーションAPの選択指示を受け付けたときに、選択指示されたアプリケーションAPが動作するプロセスに対して、受け付けた動作要求を送信する。
【０１７０】
動作設定送信手段６２は、アプリケーションAPの動作設定要求を受け付けたときに、動作設定を行うアプリケーションAPが動作するプロセスに対して、受け付けた動作設定要求を送信する。
【０１７１】
実行要求管理手段６３は、受け付けた実行要求（リクエスト）をスケジューリングし、実行可能となったアプリケーションAPが動作するプロセスに対して、実行開始を指示する。
【０１７２】
では、動作要求送信手段６１、動作設定送信手段６２、及び実行要求管理手段６３について、以降に詳しく説明する。
【０１７３】
まず、動作要求送信手段６１について説明する。動作要求送信手段６１は、アプリケーション管理ソフトウェアのローカルUI部３０２が有する機能であり、動作させるアプリケーションAPの選択指示を、UIを介してユーザから受け付けたときに、選択されたアプリケーションAPが動作するプロセスを特定可能な情報に基づいてプロセスを特定し、特定されたプロセスに受け付けた動作要求を送信する。
【０１７４】
そのため、アプリケーション管理ソフトウェアは、図１３に示す方法によって、アプリケーションAPが動作するプロセスを特定できる情報を生成し、メモリに保持する。
【０１７５】
図１３は、本発明の第１の実施形態に係る動作するプロセスの判別方法（アクティビティ選択方法）の一例を示す図である。
【０１７６】
図１３には、各アプリケーションAPがインストールされたときに、「どのプロセスで動作するのか」を、アプリケーション管理ソフトウェアに登録するときの一例が示されている。
【０１７７】
図中に示すよう、アプリケーションAPは、自らがインストールされたときに、ローカルUI部３０２の代理コンポーネント７１を介して、アプリケーションAPを識別するアプリケーション識別情報（例えば、アクティビティの名称。）と、アプリケーションAPが動作するプロセスを識別するプロセス識別情報（例えば、プロセスID。）とを、アプリケーション管理ソフトウェアに送信する。
【０１７８】
例えば、コピーアプリケーションがインストールされた場合には、図中に示すように、コピーアプリケーションのコピーアクティビティUI（Copy Activity UI）４０１が、代理コンポーネント７１を介して、「アクティビティ名前="Copy"」及び「プロセスID="プロセスB"」の情報を、登録情報としてアプリケーション管理ソフトウェアに送信する。また、ベンダアプリケーションがインストールされた場合には、図中に示すように、ベンダアプリケーションのベンダアクティビティUI（Vendor Activity UI）４０５が、代理コンポーネント７１を介して、「アクティビティ名前="Vendor"」及び「プロセスID="プロセスC"」の情報を、登録情報としてアプリケーション管理ソフトウェアに送信する。
【０１７９】
図１４は、本発明の第１の実施形態に係るアクティビティとアクティビティが動作するプロセスとが対応付けられたデータ４１の一例を示す図である。
【０１８０】
その結果、アプリケーション管理ソフトウェアでは、代理コンポーネント７１とのプロセス間通信によって、アプリケーションAPを識別するアプリケーション識別情報とアプリケーションAPが動作するプロセスを識別するプロセス識別情報とを各プロセスから収集し、収集したアプリケーション識別情報とプロセス識別情報とを、例えば、図１４に示すようなデータ構造によって関連付けて、関連付けデータ４１としてメモリ上に一時保持する。
【０１８１】
これによって、動作要求送信手段６１は、アプリケーション識別情報とプロセス識別情報とを関連付ける情報４１に基づいて、選択指示されたアプリケーションAPのアプリケーション識別情報から特定したプロセスに対して、受け付けた動作要求を送信する。
【０１８２】
図１０に戻り、動作設定要求送信手段６２について説明する。動作設定要求送信手段６２は、アプリケーション管理ソフトウェアのローカルUI部３０２が有する機能であり、アプリケーションAPごとの動作設定要求を、UIを介してユーザから受け付けたときに、要求されたアプリケーションAPが動作するプロセスを特定可能な情報に基づいて特定し、特定されたプロセスに受け付けた動作設定要求を送信する。
【０１８３】
「動作対象のアプリケーションAPの選択（動作要求の指示）」の次に、ユーザによって行われる操作は、「選択されたアプリケーションAPにおける入力・加工・出力の各フィルタの動作設定（動作設定の指示）」である。そのため、アプリケーション管理ソフトウェアは、アプリケーションAPの動作設定をユーザから受け付けるためのUI画面表示の生成を、UI要素（オブジェクト）を生成するコンポーネントである各アクティビティUIや各フィルタUIに通知しなければならない。また、生成されたUI画面表示を介して操作イベントを受け取るのは、アプリケーション管理ソフトウェアの操作デバイス制御部３１２であるため、受け取ったイベントを適切なプロセスに分配しなければならない。このことから、アプリケーション管理ソフトウェアは、各アクティビティUIや各フィルタUIが動作するプロセスを特定する必要がある。
【０１８４】
そこで、アプリケーション管理ソフトウェア、アクティビティUIやフィルタUIが動作するプロセスを特定可能な情報として、例えば図１５に示すようなデータをメモリに保持する。
【０１８５】
図１５は、本発明の第１の実施形態に係るにUIとUIを生成するプロセスとが対応付けられたデータ４２の一例を示す図である。
【０１８６】
図中に示すように、アプリケーション管理ソフトウェアは、メモリ上に、各アクティビティUIや各フィルタUIを制御する（UI要素の生成を含む）コンポーネントを識別するUI制御コンポーネント識別情報と、UIを制御するコンポーネント（以下、「UI制御コンポーネント」という。）により生成され表示画面に表示されるアプリケーションAPのUI要素を識別する画面要素識別情報と、要求を分配する対象となる各アクティビティや各フィルタが動作するプロセスを識別するプロセス識別情報とを関連付けて保持する。
【０１８７】
上記画面要素識別情報は、アプリケーションAPがUIを介して選択されたときに、選択されたアプリケーションAPのUI制御コンポーネント（アクティビティUI又はフィルタUI）によってUI要素が生成され、生成されたUI要素に対して自動的に採番される。このとき、代理コンポーネント７１を含むローカルUI部３０２が、採番された画面要素識別情報とプロセス識別情報とを関連付けてデータ４２に追加する。
【０１８８】
例えば、コピーアプリケーションがインストールされている場合には、図中に示すように、コピーアプリケーションのUI制御コンポーネント（コピーアクティビティUI４０１）により生成されたUI要素に対して画面要素ID'1'が採番され、ローカルUI部３０２とプロセスB３２bで動作する代理コンポーネント７１とによって、採番された画面要素ID'1'とコピーアクティビティUI４０１が動作するプロセスB３２bとが関連付けられる。コピーアプリケーション機能を実現するために動作する読み取りフィルタUI（Scan Filter UI）４０２及び印刷フィルタUI（Print Filter UI）４０３についても同様の方法で関連付けられデータ４２に追加される。また、ベンダアプリケーションがインストールされている場合には、ベンダアプリケーションのUI制御コンポーネント（ベンダアクティビティUI４０５）により生成されたUI要素に対して画面要素ID'4'が採番され、ローカルUI部３０２とプロセスC３２cで動作する代理コンポーネント７１とによって、採番された画面要素ID'4'とベンダアクティビティUI４０５とが動作するプロセスC３２cとが関連付けられる。ベンダアプリケーション機能を実現するために動作するベンダフィルタUI（Vender Filter UI）４０６及び印刷フィルタUI４０３についても同様の方法で関連付けられデータ４２に追加される。
【０１８９】
このように、アプリケーション管理ソフトウェアでは、ローカルUI部３０２（代理コンポーネント７１を含む）において、採番した画面要素識別情報とプロセス識別情報とを関連付けて、関連付けデータ４２としてメモリ上に一時保持する。
【０１９０】
その結果、アプリケーション管理ソフトウェアは、例えば、本実施形態に係る情報処理装置２００が有する出力装置I/F１７を介して、タッチパネル機能を有する表示装置が接続されている場合、ユーザが表示装置に表示された表示画面をタッチすることでアプリケーションAPの動作設定を指示すると、表示画面でタッチされた画面要素（所定の画面表示領域）を認識し、認識した画面要素の画面要素識別番号を得る。
【０１９１】
これによって、動作設定要求送信手段６２は、画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、画面要素識別情報から特定された、各アクティビティUI及び各フィルタUI（代理コンポーネント７１を含む）が動作するプロセスに対して、操作デバイス制御部３１２で受け付けた動作設定要求を分配する。
【０１９２】
図１０に戻り、実行要求管理手段６３ついて説明する。実行要求管理手段６３は、主に２つの機能を有している。一つは、アプリケーション管理ソフトウェアのローカルUI部３０２（代理コンポーネント７１を含む）により実現する「実行要求登録」機能であり、もう一つは、コントロール部３０３により実現する「実行開始指示」機能である。
【０１９３】
・「実行要求登録機能について」
実行要求管理手段６３は、ローカルUI部３０２により受け付けた実行要求（リクエスト）をコントローラ部３０３へ登録する実行要求登録機能を有している。より具体的には、アプリケーションAPの実行要求を受け付けたときに、要求されたアプリケーションAPが動作するプロセスを特定可能な情報に基づいてプロセスを特定し、特定されたプロセスに受け付けた実行要求を送信する。
【０１９４】
「選択されたアプリケーションAPにおける入力・加工・出力の各フィルタの動作設定（動作設定の指示）」の次に、ユーザによって行われる操作は、「アプリケーションAPの実行指示（実行要求の指示）」である。
【０１９５】
ユーザがアプリケーションAPの実行指示の操作（実行要求の指示）を行うと、操作デバイス制御部３１２は対象となる画面要素IDを含む操作イベントを受け取る。実行指示がハードキー（例えば、画像処理装置１００の場合には「スタートキー」、また情報処理装置２００の場合には「エンターキー」など。）でなされた場合は、現在表示画面の前面に表示されている画面要素が対象となる。
【０１９６】
実行要求管理手段６３は、実行要求登録機能により、図１５に示すデータ４２を参照し、実行要求の送信対象となるコンポーネントとそのコンポーネントが動作するプロセスを特定する。その後、実行要求管理手段６３は、プロセス間通信により操作イベントを代理コンポーネント７１に転送し、代理コンポーネント７１からUI制御コンポーネント（実行対象となるアプリケーションAPに対応するアクティビティUI）に通知する。その結果、UI制御コンポーネントが、通知された画面要素にて現在設定されている動作設定の情報を含む実行要求をコントロール部３０３に登録する。
【０１９７】
・「実行開始指示機能について」
次に、実行要求管理手段６４は、登録された実行要求をスケジューリングし、要求が実行可能となったアプリケーションAPに実行開始を指示する実行開始指示機能を有している。より具体的には、アプリケーションAPの実行要求を受け付けたときに、受け付けたリクエストを所定の方法によってキューイングし、キューイングされた情報に基づいて、実行可能となったリクエストをアプリケーションAPに通知する。
【０１９８】
上記リクエストは、複数のプロセスで生成されるため、全てのプロセスで生成されたリクエストを一元的に管理（キューイング）する必要がある。よって、UI制御コンポーネントがコントロール部３０３に登録するリクエストは、代理コンポーネント７１を介してアプリケーション管理用プロセスA３２aに通知され、アプリケーション管理用プロセスA３２aで動作するコントロール部３０３で一元的に管理される。また、実行可能となったリクエストをアプリケーションAPに通知する必要があるため、リクエストを生成したアプリケーションAPが動作するプロセスを特定可能な情報として、例えば図１６に示すようなデータをメモリに保持する。
【０１９９】
図１６は、本発明の第１の実施形態に係るにリクエストとリクエストを生成するプロセスとが対応付けられたデータ４３の一例を示す図である。
【０２００】
図中に示すように、アプリケーション管理ソフトウェアは、メモリ上に、アプリケーションAPの実行要求を受け付けたときにコントロール部３０３へ登録する実行要求を識別する実行要求識別情報と、要求を分配する対象となるアプリケーションAPが動作するプロセスを識別するプロセス識別情報とを関連付けて保持する。
【０２０１】
上記実行要求識別情報は、アプリケーションAPの実行要求を受け付けたときに、受け付け順などに従って自動的に発行される。このとき、コントロール部３０３が、発行された実行要求識別情報とプロセス識別情報とを関連付けてデータ４３に追加する。
【０２０２】
例えば、コピーアプリケーションの実行要求を受け付けた場合には、図中に示すように、コントロール部３０３とプロセスB３２bで動作する代理コンポーネント７１とによって、受け付けたときに発行された実行要求を識別するリクエストID'1'と、コピーアプリケーションが動作するプロセスB３２bとが関連付けられデータ４３に追加される。また、ベンダアプリケーションの実行要求を受け付けた場合には、コントロール部３０３とプロセスC３２cで動作する代理コンポーネント７１とによって、受け付けたときに発行された実行要求を識別するリクエストID'2'と、ベンダアプリケーションが動作するプロセスC３２cとが関連付けられデータ４３に追加される。
【０２０３】
このように、アプリケーション管理ソフトウェアでは、コントロール部３０３（代理コンポーネント７１を含む）において、発行された実行要求識別情報とプロセス識別情報とを関連付けて、関連付けデータ４３としてメモリ上に一時保持する。
【０２０４】
実行要求管理手段６３は、実行開始指示機能により、図１６に示す実行要求識別情報とプロセス識別情報とを関連付ける情報４３に基づいて、実行可能になった実行要求識別情報から特定された、発行元のアプリケーションAPが動作するプロセスに対して、そのプロセス上で動作する代理コンポーネント７１にリクエスト実行開始の指示を送信し、代理コンポーネント７１と同一プロセス上で動作するアプリケーションAPに対してこれを通知する。
【０２０５】
このように、実行要求管理手段６３は、上記２つの機能によって、ユーザから受け付けた実行要求に従って、要求されたアプリケーションAPの実行開始を指示する。
【０２０６】
本実施形態に係る情報処理装置２００は、マルチプロセス環境において、アプリケーションを実行するために、上記に説明した各手段を以下の手順に従って実施する。
【０２０７】
（手順１）動作対象アプリケーションAPの選択（アクティビティの選択）
本実施形態に係る情報処理装置２００は、アプリケーション管理ソフトウェアのローカルUI部３０２によって、ユーザからの動作要求を受け付ける。
情報処理装置２００は、動作させるアプリケーションAPの選択指示を受け付けたときに、ローカルUI部３０２が有する動作要求送信手段６１によって、メモリ上に保持されたアプリケーション識別情報とプロセス識別情報とを関連付ける情報４１に基づいて、アプリケーション識別情報から特定したプロセスに対して、受け付けた動作要求を送信する。
【０２０８】
（手順２）アプリケーションAPの動作設定
本実施形態に係る情報処理装置２００は、アプリケーション管理ソフトウェアのローカルUI部３０２によって、ユーザからの動作設定要求を受け付ける。
情報処理装置２００は、アプリケーションAPの動作設定要求を受け付けたときに、ローカルUI部３０２が有する動作設定要求送信手段６２によって、メモリ上に保持された画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、画面要素識別情報から特定したプロセスに対して、受け付けた動作設定要求を送信する。
【０２０９】
（手順３）アプリケーションAPの実行
本実施形態に係る情報処理装置２００は、アプリケーション管理ソフトウェアのローカルUI部３０２によって、ユーザからの動作設定要求を受け付ける。
情報処理装置２００は、アプリケーションAPの実行要求を受け付けたときに、実行要求管理手段６３におけるローカルUI部３０２が有する実行要求転送機能によって、メモリ上に保持された画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、実行要求情報から特定したプロセスに対して、受け付けた実行要求を送信する。その後、情報処理装置２００は、実行要求管理手段６３におけるコントロール部３０３が有する実行開始指示機能によって、実行要求識別情報とプロセス識別情報とを関連付ける情報４３に基づいて、実行要求識別情報から特定したプロセスに対して、実行可能となった実行要求を送信し、アプリケーションAPに実行開始を指示する。
【０２１０】
このように、本実施形態に係る情報処理装置２００では、上記に説明した（手順１）〜（手順３）により、「マルチプロセス環境において、アプリケーションAPの選択・動作設定・機能実行などを安定して行う」ことができる。すなわち、「ユーザに対し、安定した機能提供」を実現している。
【０２１１】
＜アプリケーション実行の基本処理手順について（コピー機能の場合）＞
これまでに説明した本実施形態に係る情報処理装置２００におけるアプリケーション実行の具体的な処理手順について、基本アプリケーション８１のコピー機能を例に図１７〜１９を用いて説明する。
【０２１２】
本実施形態に係る情報処理装置２００は、例えば、情報処理装置２００が有するハードディスクなどの補助記憶部１３に格納されたアプリケーション管理ソフトウェアや基本アプリケーションプログラム（自社製アプリケーションプログラム）、また、インストールされた拡張アプリケーションプログラム（サードベンダ製アプリケーションプログラム）などを主記憶部１２であるメモリ上に展開し、制御部１１で実行する。このとき、以下の図１７〜１９に示す処理手順が、ユーザ操作段階に応じて実行される。ここで言う「操作段階」とは、UI画面を介してアプリケーションAPを実行するまでにユーザが行う、「動作対象のアプリケーションAPの選択（動作要求の指示）」、「選択されたアプリケーションAPにおける入力・加工・出力の各フィルタの動作設定（動作設定の指示）」、及び「アプリケーションAPの実行指示（実行要求の指示）」の操作を意味する。
【０２１３】
図１７は、本発明の第１の実施形態に係るコピー機能を実現するときの処理手順（その１：アクティビティ選択）の一例を示す図である。
【０２１４】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、動作させるアプリケーションAPの選択指示（コピー機能を選択）によるユーザからの動作要求を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（動作要求）をローカルUI部３０２へ通知する（Ｓ１０１）。
【０２１５】
ローカルUI部３０２は、動作要求送信手段６１によって、メモリ上に保持されているアプリケーション識別情報とプロセス識別情報とを関連付ける情報４１に基づいて、実行手段５１によって実行された、コピー機能が動作するプロセスB３２bを特定し、プロセス間通信によって、特定したプロセスB３２bにUIイベント（動作要求）を送信する（Ｓ１０２）。
【０２１６】
プロセスB３２bでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのローカルUI部）を介して、受信したUIイベント（動作要求）を、動作させるコピー機能のコピーアクティビティUI（Copy Activity UI）４０１に渡す（Ｓ１０３）。
【０２１７】
UIイベント（動作要求）を受け取ったコピーアクティビティUI４０１は、自らのUI要素を生成し、更に、コピーアプリケーションを実現するための読み取りフィルタUI４０２及び印刷フィルタUI４０３に受け取ったUIイベント（動作要求）を渡す（Ｓ１０４）。
【０２１８】
UIイベント（動作要求）を受け取った読み取りフィルタUI４０２及び印刷フィルタUI４０３は、それぞれが自らのUI要素を生成する。その後、生成された各UI要素は、ローカルUI部３０２の代理コンポーネント７１に渡され、ローカルUI部３０２が、各UI要素に対して画面要素識別情報を採番し、画面要素識別情報とプロセス識別情報とを関連付けて、メモリ上の関連付け情報４２に登録する。登録された各UI要素は、操作デバイス制御部３１２に渡され、操作デバイス制御部３１２によって表示される。
【０２１９】
これによって、本実施形態に係る情報処理装置２００では、ユーザの動作要求に応じて、動作させるアプリケーションAPの動作設定を行うUI画面を表示させることができる。
【０２２０】
図１８は、本発明の第１の実施形態に係るコピー機能を実現するときの処理手順（その２：設定変更）の一例を示す図である。
【０２２１】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、アプリケーションAPの動作設定によるユーザからの動作設定要求を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（動作設定要求）をローカルUI部３０２へ通知する（Ｓ２０１）。
【０２２２】
ローカルUI部３０２は、動作設定要求送信手段６２によって、メモリ上に保持されている画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、実行手段５１によって実行された、コピー機能が動作するプロセスB３２bを特定し、プロセス間通信によって、特定したプロセスB３２bにUIイベント（動作設定要求）を送信する（Ｓ２０２）。
【０２２３】
プロセスB３２bでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのローカルUI部）を介して、受信したUIイベント（動作設定要求）に含まれる画面要素識別情報を基に、各UI要素を生成したコンポーネント、すなわち、コピーアクティビティUI４０１、コピーアプリケーションを実現するための読み取りフィルタUI（Scan Filter UI）４０２、又は印刷フィルタUI（Print Filter UI）４０３を特定し、動作設定を転送する（Ｓ２０３）。
【０２２４】
コピーアクティビティUI４０１、読み取りフィルタUI４０２及び印刷フィルタUI４０３は、それぞれの動作条件を、コピーアクティビティロジック（Copy Activity Logic）５０１、読み取りフィルタロジック（Scan Filter Logic）５０２及び印刷フィルタロジック（Print Filter Logic）５０３に設定する（Ｓ２０４）。
【０２２５】
これによって、本実施形態に係る情報処理装置２００では、ユーザから設定要求された動作条件を、動作させるアプリケーションAPが有する機能を実現するコンポーネントに設定できる。
【０２２６】
図１９は、本発明の第１の実施形態に係るコピー機能を実現するときの処理手順（その３：リクエスト実行）の一例を示す図である。
【０２２７】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、アプリケーションAPの実行指示によるユーザからの実行要求を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（実行要求）をローカルUI部３０２へ通知する（Ｓ３０１）。
【０２２８】
ローカルUI部３０２は、受け取ったUIイベントを、実行要求管理手段６３によって、メモリ上に保持されている画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、実行手段５１によって実行された、コピー機能が動作するプロセスB３２bを特定し、プロセス間通信によって、特定したプロセスB３２bにUIイベントを送信する（Ｓ３０２）。
【０２２９】
プロセスB３２bでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのローカルUI部）が、送信されたUIイベント（実行要求）を、実行するUI制御コンポーネントであるコピー機能のコピーアクティビティUI４０１に渡す（Ｓ３０３）。
【０２３０】
コピーアクティビティUI４０１は、受け取ったUIイベント（実行要求）を、コントロール部３０３の代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのコントローラ部）に、受け付けたUIイベント（実行要求）を登録する（Ｓ３０４）。
【０２３１】
プロセスB３２bで動作するコントロール部３０３の代理コンポーネント７１は、コピーアプリケーション機能を実現するために動作する読み取りフィルタロジック５０２及び印刷フィルタロジック５０３を、画像パイプ３０７を介して接続する（Ｓ３０５）。このとき、コントロール部３０３の代理コンポーネント７１は、受け取ったUIイベント（実行要求）に対して実行要求識別情報を発行する。コントロール部３０３の代理コンポーネント７１は、Ｓ３０５の処理を行った後、プロセス間通信によりUIイベント（実行要求）を、プロセスA３２aに送信する（Ｓ３０６）。
【０２３２】
プロセスA３２aでは、コントロール部３０３が、UIイベント（実行要求）（図１９の以下の説明では、「実行要求（リクエスト）」という。）のキューイングを行う。コントロール部３０３は、登録された実行要求（リクエスト）をスケジューリングし、実行可能となった実行要求（リクエスト）の実行要求識別情報から特定された、発行元のアプリケーションAPが動作するプロセスに対して、そのプロセス上で動作する代理コンポーネント７１に実行開始の指示を送信する（Ｓ４０１）。本実施形態では、コピー機能を例に説明を行っているため、コピー機能の実行要求（リクエスト）が実行可能であったとすると、特定されたプロセスB３２bに実行要求（リクエスト）を送信し、コピーアプリケーションに実行開始を指示する。
【０２３３】
プロセスB３２bでは、コントロール部３０３が、受け取った実行要求（リクエスト）を、コピーアクティビティロジック５０１に渡す（Ｓ４０２）。コピーアクティビティロジック５０１は、更に、コピーアプリケーション機能を実現するために動作する読み取りフィルタロジック５０２及び印刷フィルタロジック５０３に、実行要求（リクエスト）を渡す（Ｓ４０３）。
【０２３４】
読み取りフィルタロジック５０２は、実行要求（リクエスト）を受けて、Ｓ３０５の処理において各フィルタを接続した画像パイプ３０７に、読み取った画像を記憶するメモリ領域の確保を指示する（Ｓ５０１）。画像パイプ３０７は、メモリ確保の指示に従って、メモリ制御部３１１に所定のメモリ領域の確保をさせる（Ｓ５０２）。
【０２３５】
次に、読み取りフィルタロジック５０２は、実行要求（リクエスト）を受けて、スキャナ制御部３０９に画像の読み取りを指示する（Ｓ５０３）。スキャナ制御部３０９は、読み取り指示に従って画像を読み取り（Ｓ５０４）、読み取った画像データを、確保しておいた所定のメモリ領域に書き込む（Ｓ５０５）。読み取りフィルタロジック５０２は、書き込まれた画像データの格納先情報（アドレス情報）の通知を画像パイプ３０７に指示する（Ｓ５０６）。
【０２３６】
また、印刷フィルタロジック５０３は、実行要求（リクエスト）を受けて、画像パイプ３０７に、書き込まれた画像データが格納された格納先情報を要求し、Ｓ５０５の処理によってメモリ上に画像データが書き込まれていれば、画像パイプ３０７から機能先情報を取得する（Ｓ６０１）。
【０２３７】
次に、印刷フィルタロジック５０３は、取得した格納先情報に基づいて、プロッタ制御部３１０に画像データの印刷（プロット）を指示する（Ｓ６０２）。プロッタ制御部３１０は、格納先情報に基づいて、メモリ制御部３１１を介して画像データを読み出し（Ｓ６０３）、読み出した画像データを用紙に印刷する（Ｓ６０４）。
【０２３８】
その後、印刷フィルタロジック５０３は、格納先情報に基づいて、画像パイプ３０７に、Ｓ５０１の処理によって確保したメモリ領域の開放を指示する（Ｓ６０５）。
【０２３９】
その結果、画像パイプ３０７は、メモリ制御部３１１に確保したメモリ領域の解放を指示する（Ｓ６０６）。
【０２４０】
これによって、本実施形態に係る情報処理装置２００では、ユーザの実行要求に従って、アプリケーションAPの実行を行うことができる。
【０２４１】
＜アプリケーション実行の基本処理手順について（ベンダ拡張機能の場合）＞
次に、本実施形態に係る情報処理装置２００におけるアプリケーション実行の具体的な処理手順について、拡張アプリケーション８２のベンダ拡張機能を例に図２０〜２２を用いて説明する。図２０〜２２に説明するサードベンダ製アプリケーション８２は、サードベンダが独自の開発した入力フィルタ１０３aと、情報処理装置２００が標準的に搭載している出力フィルタ１０３cとを画像パイプ３０７で接続することで、１つの機能を実現する拡張機能の一例を示すものである。
【０２４２】
図２０は、本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その１：アクティビティ選択）の一例を示す図である。
【０２４３】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、動作させるアプリケーションAPの選択指示（ベンダ機能を選択）によるユーザからの動作要求を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（動作要求）をローカルUI部３０２へ通知する（Ｓ７０１）。
【０２４４】
ローカルUI部３０２は、動作要求送信手段６１によって、メモリ上に保持されたアプリケーション識別情報とプロセス識別情報とを関連付ける情報４１に基づいて、実行手段５１によって実行された、ベンダ機能が動作するプロセスC３２cを特定し、プロセス間通信によって、特定したプロセスC３２cにUIイベント（動作要求）を送信する（Ｓ７０２）。
【０２４５】
プロセスC（第３のプロセス）３２cでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのローカルUI部）を介して、受信したUIイベント（動作要求）を、動作させるベンダ機能のベンダアクティビティUI（Vendor Activity UI）４０５に渡す（Ｓ７０３）。
【０２４６】
ベンダアクティビティUI４０５は、自らのUI要素を生成し、更に、ベンダアプリケーションを実現するためのベンダ（入力）フィルタUI（Vendor Filter UI）４０６（以下、「ベンダフィルタUI４０６」という。）及び印刷フィルタUI４０３に受け取ったUIイベント（動作要求）を渡す（Ｓ７０４）。
【０２４７】
UIイベント（動作要求）を受け取ったベンダフィルタUI４０６及び印刷フィルタUI４０３は、それぞれが自らのUI要素を生成する。その後、生成された各UI要素は、ローカルUI部３０２の代理コンポーネント７１に渡され、代理コンポーネント７１が、各UI要素に対して画面要素識別情報を採番し、画面要素識別情報とプロセス識別情報とを関連付けて、メモリ上の関連付け情報４２に登録する。登録された各UI要素は、操作デバイス制御部３１２に渡され、操作デバイス制御部３１２によって表示される。
【０２４８】
図２１は、本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その２：設定変更）の一例を示す図である。
【０２４９】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、アプリケーションAPの動作（条件）設定によるユーザからの動作設定要求を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（動作設定要求）をローカルUI部３０２へ通知する（Ｓ８０１）。
【０２５０】
ローカルUI部３０２は、動作設定要求送信手段６２によって、メモリ上に保持された画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、実行手段５１によって実行された、ベンダ機能が動作するプロセスC３２cを特定し、プロセス間通信によって、特定したプロセスC３２cにUIイベント（動作設定要求）を送信する（Ｓ８０２）。
【０２５１】
プロセスC（第３のプロセス）３２cでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのローカルUI部）を介して受信した、UIイベント（動作設定要求）に含まれる画面要素識別情報を基に、各UI要素を生成したコンポーネント、すなわち、ベンダアクティビティUI４０５、ベンダアプリケーションを実現するためのベンダフィルタUI４０６、又は印刷フィルタUI４０３を特定し、動作設定を転送する（Ｓ８０３）。
【０２５２】
ベンダアクティビティUI４０５、ベンダフィルタUI４０６及び印刷フィルタUI４０３は、それぞれの動作条件を、ベンダアクティビティロジック（Vendor Activity Logic）５０５、ベンダ入力フィルタロジック（Vendor Filter Logic）５０６（以下、「ベンダフィルタロジック５０６」という。）及び印刷フィルタロジック５０３に設定する（Ｓ８０４）。
【０２５３】
図２２は、本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その３：リクエスト実行）の一例を示す図である。
【０２５４】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、アプリケーションAPの実行指示によるユーザからの実行要求（リクエスト）を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（実行要求）をローカルUI部３０２へ通知する（Ｓ９０１）。
【０２５５】
ローカルUI部３０２は、受け取ったUIイベント（実行要求）を、実行要求管理手段６３によって、メモリ上に保持されている画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、実行手段５１によって実行された、ベンダ機能が動作するプロセスC３２cを特定し、プロセス間通信によって、特定したプロセスC３２cにUIイベント（実行要求）を送信する（Ｓ９０２）。
【０２５６】
プロセスC３２cでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのローカルUI部）が、送信されたUIイベント（実行要求）を、実行するUI制御コンポーネントであるベンダ機能のベンダアクティビティUI４０５に渡す（Ｓ９０３）。
【０２５７】
ベンダアクティビティUI４０５は、受け取ったUIイベント（実行要求）を、コントロール部３０３の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのコントローラ部）に、受け付けたUIイベント（実行要求）を登録する（Ｓ９０４）。
【０２５８】
プロセスC３２cで動作するコントロール部３０３の代理コンポーネント７１は、ベンダアプリケーション機能を実現するために動作するベンダフィルタロジック５０６及び印刷フィルタロジック５０３を、画像パイプ３０７を介して接続する（Ｓ９０５）。このとき、コントロール部３０３の代理コンポーネント７１は、受け取ったUIイベント（実行要求）に対して実行要求識別情報を発行する。コントロール部３０３の代理コンポーネント７１は、Ｓ９０５の処理を行った後、プロセス間通信によりUIイベント（実行要求）を、プロセスA３２aに送信する（Ｓ９０６）。
【０２５９】
プロセスA３２aでは、コントロール部３０３が、UIイベント（実行要求）（図２２の以下の説明では、「実行要求（リクエスト）」という。）のキューイングを行う。コントロール部３０３は、登録された実行要求（リクエスト）をスケジューリングし、実行可能となった実行要求（リクエスト）の実行要求識別情報から特定された、発行元のアプリケーションAPが動作するプロセスに対して、そのプロセス上で動作する代理コンポーネント７１に実行開始の指示を送信する（Ｓ１００１）。本実施形態では、ベンダ機能を例に説明を行っているため、ベンダ機能の実行要求（リクエスト）が実行可能であったとすると、特定されたプロセスC３２cに実行要求（リクエスト）を送信し、ベンダアプリケーションに実行開始を指示する。
【０２６０】
プロセスC３２cでは、コントロール部３０３が、受け取った実行要求（リクエスト）を、ベンダアクティビティロジック５０５に渡す（Ｓ１００２）。ベンダアクティビティロジック５０５は、更に、ベンダアプリケーション機能を実現するために動作するベンダフィルタロジック５０６及び印刷フィルタロジック５０３に、実行要求（リクエスト）を渡す（Ｓ１００３）。
【０２６１】
ベンダフィルタロジック５０６は、実行要求（リクエスト）を受けて、Ｓ９０５の処理において各フィルタを接続した画像パイプ３０７に、読み取った画像を記憶するメモリ領域の確保を指示する（Ｓ１１０１）。画像パイプ３０７は、メモリ確保の指示に従って、メモリ制御部３１１の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのメモリ制御部）を介して、プロセスB３２bで動作するメモリ制御部３１１に所定のメモリ領域の確保をさせる（Ｓ１１０２及びＳ１１０３）。
【０２６２】
次に、ベンダフィルタロジック５０６は、実行要求（リクエスト）を受けて、例えば、情報処理装置２００が有するネットワークI/F１４を介した画像データの入力や、外部記憶装置I/F１５を介してメモリカードなど記憶された画像データの入力など、所定の方法によって画像データを入力する（Ｓ１１０４）。ベンダフィルタロジック５０６は、入力した画像データを、確保しておいた所定のメモリ領域に、メモリ制御部３１１の代理コンポーネント７１を介して書き込む（Ｓ１１０５）。ベンダフィルタロジック５０６は、書き込んだ画像データの格納先情報の通知を画像パイプ３０７に指示する（Ｓ１１０６）。
【０２６３】
また、印刷フィルタロジック５０３は、実行要求（リクエスト）を受けて、画像パイプ３０７に、書き込まれた画像データが格納された格納先情報を要求し、Ｓ１１０５の処理によってメモリ上に画像データが書き込まれていれば、画像パイプ３０７から機能先情報を取得する（Ｓ１２０１）。
【０２６４】
次に、印刷フィルタロジック５０３は、取得した格納先情報に基づいて、プロッタ制御部３１０の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのプロッタ制御部）を介して、プロセスB３２bで動作するプロッタ制御部３１０に画像データの印刷を指示する（Ｓ１２０２及びＳ１２０３）。プロッタ制御部３１０は、格納先情報に基づいて、メモリ制御部３１１を介して画像データを読み出し（Ｓ１２０４）、読み出した画像データを用紙に印刷する（Ｓ１２０５）。
【０２６５】
その後、印刷フィルタロジック５０３は、格納先情報に基づいて、画像パイプ３０７に、Ｓ１１０１の処理によって確保したメモリ領域の開放を指示する（Ｓ１２０６）。
【０２６６】
その結果、画像パイプ３０７は、メモリ解放の指示に従って、メモリ制御部３１１の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのメモリ制御部）を介して、プロセスB３２bで動作するメモリ制御部３１１に、確保していた所定のメモリ領域を解放させる（Ｓ１２０７及びＳ１２０８）。
【０２６７】
＜フィルタ集約型のコンポーネント配置について＞
プロセスで動作するコンポーネントの適切な分散配置について図９を用いて説明を行った。その中で、フィルタ集約型よりアクティビティ集約型を採用する方が適切であるとの結果を示した。
【０２６８】
図１７〜２２では、その点を踏まえて、アクティビティ集約型のコンポーネント配置におけるアプリケーション実行の処理手順について説明を行った。
【０２６９】
ここからは、フィルタ集約型を採用した場合のコンポーネント配置、及びアプリケーション実行の処理手順について、図２３〜２６を用いて説明する。
【０２７０】
図２３は、本発明の第１の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（フィルタ集約型の場合）を示す図である。
【０２７１】
フィルタ集約型を採用した場合と、アクティビティ集約型を採用した場合との違いは、フィルタ集約型の特徴である、フィルタ単位でプロセスを分割する点である。
【０２７２】
そのため、アクティビティ集約型のコンポーネント配置を示す図１２と図２３とを比較すると、例えば、サードベンダ製アプリケーション８２が、サードベンダが独自の開発した入力フィルタ１０３aと、情報処理装置２００が標準的に搭載している出力フィルタ１０３cとを画像パイプ３０７で接続することで、１つの機能を実現する拡張機能の場合、図１２に示すアクティビティ集約型では、情報処理装置２００が標準的に搭載している出力フィルタ１０３cである印刷フィルタに関するコンポーネントが、プロセスB３２b及びプロセスC３２cの両方に配置されているが、図２３に示すフィルタ集約型では、印刷フィルタに関するコンポーネントがプロセスC３２cに配置されておらず、サードベンダが独自の開発した入力フィルタ１０３aに関するコンポーネントのみ配置されている。
【０２７３】
このように、フィルタ集約型のコンポーネント配置では、基本アプリケーション８１と拡張アプリケーション８２とで共通して利用するフィルタを、拡張アプリケーション８２が動作するプロセスに配置しない。すなわち、全てのプロセスにおいて、重複するフィルタコンポーネントは存在しない。
【０２７４】
＜フィルタ集約型のコンポーネント配置におけるアプリケーション実行の基本処理手順について（ベンダ拡張機能の場合）＞
図２３を用いて説明したフィルタ集約型のコンポーネント配置におけるアプリケーション実行の処理手順について説明する。
【０２７５】
図２４は、本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その４：アクティビティ選択）の一例を示す図である。
【０２７６】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、動作させるアプリケーションAPの選択指示（ベンダ機能を選択）によるユーザからの動作要求を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（動作要求）をローカルUI部３０２へ通知する（Ｓ７０１）。
【０２７７】
ローカルUI部３０２は、動作要求送信手段６１によって、メモリ上に保持されたアプリケーション識別情報とプロセス識別情報とを関連付ける情報４１に基づいて、実行手段５１によって実行された、ベンダ機能が動作するプロセスC３２cを特定し、プロセス間通信によって、特定したプロセスC３２cにUIイベント（動作要求）を送信する（Ｓ７０２）。
【０２７８】
プロセスC３２cでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのローカルUI部）を介して、受信したUIイベント（動作要求）を、動作させるベンダ機能のベンダアクティビティUI４０５に渡す（Ｓ７０３）。
【０２７９】
ベンダアクティビティUI４０５は、自らのUI要素を生成し、更に、ベンダアプリケーションを実現するためのベンダフィルタUI４０６に受け取ったUIイベント（動作要求）を渡す（Ｓ７０４）。UIイベント（動作要求）を受け取ったベンダフィルタUI４０６は、自らのUI要素を生成する。
【０２８０】
また、ベンダアクティビティUI４０５は、プロセス間通信によって、受け取ったUIイベント（動作要求）を、プロセスC３２cで動作するローカルUI部３０２の代理コンポーネント７１から、プロセスB３２bで動作するローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのローカルUI部）へ転送する（Ｓ７０５及びＳ７０６）。
【０２８１】
プロセスB３２bでは、ローカルUI部３０２の代理コンポーネント７１を介してUIイベント（動作要求）を受け取ると、印刷フィルタUI４０３が自らのUI要素を生成する（Ｓ７０７）。
【０２８２】
その後、生成された各UI要素は、ローカルUI部３０２の代理コンポーネント７１に渡され、代理コンポーネント７１が、各UI要素に対して画面要素識別情報を採番し、画面要素識別情報とプロセス識別情報とを関連付けて、メモリ上の関連付け情報４２に登録する。登録された各UI要素は、操作デバイス制御部３１２に渡され、操作デバイス制御部３１２によって表示される。
【０２８３】
図２５は、本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その５：設定変更）の一例を示す図である。
【０２８４】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、アプリケーションAPの動作設定によるユーザからの動作設定要求を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（動作設定要求）をローカルUI部３０２へ通知する（Ｓ８０１）。
【０２８５】
ローカルUI部３０２は、動作設定要求送信手段６２によって、メモリ上に保持された画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、実行手段５１によって実行された、ベンダ機能が動作するプロセスC３２c、又はプリンタ機能が動作するプロセスB３２bを特定し、UIイベント（動作設定要求）を送信する。このとき、プリンタ機能が動作するプロセスB３２bを特定した場合には、プロセス間通信によって、特定したプロセスB３２bにUIイベント（動作設定要求）を送信する（Ｓ８０２）。
【０２８６】
プロセスC３２cでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのローカルUI部）を介して受信した、UIイベント（動作設定要求）に含まれる画面要素識別情報を基に、各UI要素を生成したコンポーネント、すなわち、ベンダアクティビティUI４０５、又はベンダアプリケーションを実現するためのベンダフィルタUI４０６を特定し、UIイベントである動作設定を転送する（Ｓ８０３）。
【０２８７】
ベンダアクティビティUI４０５、ベンダフィルタUI４０６は、それぞれの動作条件を、ベンダアクティビティロジック５０５及びベンダフィルタロジック５０６に設定する（Ｓ８０４）。
【０２８８】
また、プロセスB３２bでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのローカルUI部）を介して、受信したUIイベント（動作設定要求）を、印刷機能の印刷フィルタUI４０３に渡す（Ｓ８０３）。
【０２８９】
印刷フィルタUI４０３は、動作条件を印刷フィルタロジック５０３に設定する（Ｓ８０４）。
【０２９０】
図２６は、本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その６：リクエスト実行）の一例を示す図である。
【０２９１】
本実施形態に係る情報処理装置２００は、実行手段５１によって実行された、アプリケーション管理ソフトウェアが動作するプロセスA３２aにおいて、アプリケーションAPの実行指示によるユーザからの実行要求（リクエスト）を受け付けた場合、操作デバイス制御部３１２から受け付けたUIイベント（実行要求）をローカルUI部３０２へ通知する（Ｓ９０１）。
【０２９２】
ローカルUI部３０２は、受け取ったUIイベント（実行要求）を、実行要求管理手段６３によって、メモリ上に保持されている画面要素識別情報とプロセス識別情報とを関連付ける情報４２に基づいて、実行手段５１によって実行された、ベンダ機能が動作するプロセスC３２cを特定し、プロセス間通信によって、特定したプロセスC３２cにUIイベント（実行要求）を送信する（Ｓ９０２）。
【０２９３】
プロセスC３２cでは、ローカルUI部３０２の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのローカルUI部）が、送信されたUIイベント（実行要求）を、実行するUI制御コンポーネントであるベンダ機能のベンダアクティビティUI４０５に渡す（Ｓ９０３）。
【０２９４】
ベンダアクティビティUI４０５は、受け取ったUIイベント（実行要求）を、コントロール部３０３の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのコントローラ部）に、受け付けたUIイベント（実行要求）を登録する（Ｓ９０４）。
【０２９５】
プロセスC３２cで動作するコントロール部３０３の代理コンポーネント７１は、プロセスB３２bで動作する代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのコントローラ部）とプロセス間通信により連携してベンダアプリケーション機能を実現するために動作するベンダフィルタロジック５０６及び印刷フィルタロジック５０３を、画像パイプ３０７を介して接続する（Ｓ９０５〜Ｓ９０７）。このとき、コントロール部３０３の代理コンポーネント７１は、受け取った実行要求（リクエスト）に対して実行要求識別情報を発行する。また、コントロール部３０３の代理コンポーネント７１は、Ｓ９０５〜Ｓ９０７の処理が行われた後に、プロセス間通信により実行要求（リクエスト）を、プロセスA３２aに送信する（Ｓ９０８）。
【０２９６】
プロセスA３２aでは、コントロール部３０３が、実行要求（リクエスト）（図２６の以下の説明では、「実行要求（リクエスト）」という。）のキューイングを行う。コントロール部３０３は、登録された実行要求（リクエスト）をスケジューリングし、実行可能となった実行要求（リクエスト）の実行要求識別情報から特定された、発行元のアプリケーションAPが動作するプロセスに対して、そのプロセス上で動作する代理コンポーネント７１に実行開始の指示を送信する（Ｓ１００１）。本実施形態では、ベンダ機能を例に説明を行っているため、ベンダ機能の実行要求（リクエスト）が実行可能であったとすると、特定されたプロセスC３２cに実行要求（リクエスト）を送信し、ベンダアプリケーションに実行開始を指示する。
【０２９７】
プロセスC３２cでは、コントロール部３０３が、受け取った実行要求（リクエスト）を、ベンダアクティビティロジック５０５に渡す（Ｓ１００２）。ベンダアクティビティロジック５０５は、更に、ベンダアプリケーション機能を実現するために動作するベンダフィルタロジック５０６に実行要求（リクエスト）を渡す（Ｓ１００３）。
【０２９８】
また、ベンダアクティビティロジック５０５は、プロセス間通信によって、受け取った実行要求（リクエスト）を、プロセスC３２cで動作するコントロール部３０３の代理コンポーネント７１から、プロセスB３２bで動作するコントロール部３０３の代理コンポーネント７１（図中の破線枠に示すプロセスB３２bのコントロール部）へ転送する（Ｓ１００４及びＳ１００５）。
【０２９９】
プロセスB３２bでは、コントロール部３０３の代理コンポーネント７１を介して、印刷フィルタロジック５０３に実行要求（リクエスト）を渡す（Ｓ１００６）。
【０３００】
次に、ベンダフィルタロジック５０６は、実行要求（リクエスト）を受けて、Ｓ９０５〜Ｓ９０７の処理において各フィルタを接続した画像パイプ３０７に、プロセスC３２cで動作する画像パイプ３０７の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cの画像パイプ）を介して、読み取った画像を記憶するメモリ領域の確保を指示する（Ｓ１１０１）。画像パイプ３０７は、画像パイプ３０７の代理コンポーネント７１を介して受け取ったメモリ確保の指示に従って、メモリ制御部３１１の代理コンポーネント７１（図中の破線枠に示すプロセスC３２cのメモリ制御部）を介して、プロセスB３２bで動作するメモリ制御部３１１に所定のメモリ領域の確保をさせる（Ｓ１１０２及びＳ１１０３）。
【０３０１】
次に、ベンダフィルタロジック５０６は、実行要求（リクエスト）に従って、例えば、情報処理装置２００が有するネットワークI/F１４を介した画像データの入力や、外部記憶装置I/F１５を介してメモリカードなど記憶された画像データの入力など、所定の方法によって画像データを入力する（Ｓ１１０４）。ベンダフィルタロジック５０６は、入力した画像データを、確保しておいた所定のメモリ領域に、メモリ制御部３１１の代理コンポーネント７１を介して書き込む（Ｓ１１０５）。ベンダフィルタロジック５０６は、書き込んだ画像データの格納先情報の通知を、画像パイプ３０７の代理コンポーネント７１を介して画像パイプ３０７に指示する（Ｓ１１０６及びＳ１１０７）。
【０３０２】
また、印刷フィルタロジック５０３は、Ｓ１００６の処理による実行要求（リクエスト）に従って、画像パイプ３０７に、書き込まれた画像データが格納された格納先情報を要求し、Ｓ１１０５の処理によってメモリ上に画像データが書き込まれていれば、画像パイプ３０７から機能先情報を取得する（Ｓ１２０１）。
【０３０３】
次に、印刷フィルタロジック５０３は、取得した格納先情報に基づいて、プロッタ制御部３１０に画像データの印刷を指示する（Ｓ１２０２）。プロッタ制御部３１０は、格納先情報に基づいて、メモリ制御部３１１を介して画像データを読み出し（Ｓ１２０３）、読み出した画像データを用紙に印刷する（Ｓ１２０４）。
【０３０４】
その後、印刷フィルタロジック５０３は、格納先情報に基づいて、画像パイプ３０７に、Ｓ１１０２及びＳ１１０３の処理によって確保したメモリ領域の開放を指示する（Ｓ１２０５）。
【０３０５】
その結果、画像パイプ３０７は、メモリ制御部３１１に確保したメモリ領域の解放を指示する（Ｓ１２０６）。
【０３０６】
＜まとめ＞
以上のように、本発明の第１の実施形態によれば、本実施形態に係る情報処理装置２００は、システムの基本機能を実現する基本アプリケーション８１と、追加される拡張機能を実現する拡張アプリケーション８２とを、異なるプロセスで動作させ、更に、プロセス間通信などのマルチプロセス化の影響を、フレームワークFWに相当する限定されたコンポーネントで行う（マルチプロセス化の影響を隠蔽する）ことができる。
【０３０７】
よって、本実施形態に係る情報処理装置２００は、マルチプロセス化を意識することなくアプリケーションAPのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供することができる。
【０３０８】
［第２の実施形態］
本実施形態は、システムの基本機能を実現する基本アプリケーションと、追加される拡張機能を実現する拡張アプリケーションとを、異なるプロセスで動作させるマルチプロセス化において、アプリケーションの起動と終了などの管理を行うアプリケーション管理ソフトウェア、及び当該情報処理装置が有する基本機能を実現する基本アプリケーションソフトウェアを第１のプロセスで実行し、当該情報処理装置に追加される拡張機能を実現する拡張アプリケーションソフトウェアを第２のプロセスで実行するプロセス構成にすることにより、マルチプロセス化を意識することなくアプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供するものである。
【０３０９】
第１の実施形態と本実施形態と異なる点は、第１の実施形態では、アプリケーション管理ソフトウェアを第１のプロセスで実行し、基本アプリケーションソフトウェアを第２のプロセスで実行し、拡張アプリケーションソフトウェアを第３のプロセスで実行するという「３つのプロセス」で構成したのに対して、本実施形態では、アプリケーション管理ソフトウェアと基本アプリケーションソフトウェアとを第１のプロセスで実行し、拡張アプリケーションソフトウェアを第２のプロセスで実行するという「２つのプロセス」で構成する点である。
【０３１０】
よって、以降に行う本実施形態の説明では、第１の実施形態と同じ事項について、同一の図面及び図中の参照符号をもってその説明を省略し、第１の実施形態と異なる点について、図２７〜３１を用いて説明する。
【０３１１】
＜マルチプロセス化について＞
本実施形態においても、図７〜９を用いて説明した「パイプ＆フィルタ」のソフトウェア構成におけるマルチプロセス化については、「マルチプロセス化を意識することなくアプリケーションAPのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供する」ために、第１の実施形態と同様の基本方針（方針１）〜（方針３）に従ってマルチプロセス化を行う。
【０３１２】
＜＜プロセス構成＞＞
図２７は、本発明の第２の実施形態に係るプロセス構成の一例を示す図である。
【０３１３】
図中に示すように、本実施形態に係る情報処理装置２００は、第１の実施形態で示した（方針１）に従ってマルチプロセス化を実現するため、OS３１から起動されるプロセス構成を、アプリケーション管理及び自社製アプリケーション用に共通するJVMを動作させるプロセスA３２aと、サードベンダ製アプリケーション用JVMを動作させるプロセスB３２bとする。
【０３１４】
プロセスA３２aでは、アプリケーションAPの起動や終了などの管理を行う「アプリケーション管理ソフトウェア」を実行するとともに、情報処理装置２００が有する基本機能を実現する「基本アプリケーションソフトウェア８１」を実行する。すなわち、本実施形態では、自社開発した基盤ソフトであるシステムと基本機能を実現する基本アプリケーション８１とを同一のメモリ空間で実行する。プロセスB３２bでは、情報処理装置２００に追加される拡張機能を実現する「拡張アプリケーションソフトウェア８２」を実行する。
【０３１５】
これによって、本実施形態に係る情報処理装置２００は、拡張した機能（インストールした拡張アプリケーション８２）の不具合がシステムの基本機能（基本アプリケーション８１）に影響を及ぼす（例えば、システムがクラッシュ（異常終了）する。）ことがなく、また、拡張した機能（インストールした拡張アプリケーション８２）が多くのメモリを使用した場合でも、アプリケーション管理ソフトウェアに影響を与えることなく、ユーザに対して安定した機能を提供することができる。
【０３１６】
＜＜各レイヤのプロセス配置＞＞
図２８は、本発明の第２の実施形態に係る各レイヤをプロセスに配置する一例を示す図である。
【０３１７】
図２７を用いて説明したように、適切な粒度で分割された２つのプロセスに対して、各プロセスで動作させるレイヤのコンポーネントを、図２８に示すように配置する。
【０３１８】
第１の実施形態と違う配置になるコンポーネントは、第１の実施形態において、基本アプリケーション８１が動作するプロセスに配置されていたコンポーネントである。その対象となるレイヤについて、本実施形態におけるコンポーネントの配置について説明する。
【０３１９】
ユーザインタフェース層１０１では、基本アプリケーション８１のUI、また、アプリケーションロジック層１０３では、基本アプリケーション８１のコンポーネントを、アプリケーション管理ソフトウェア及び基本アプリケーション８１が動作するプロセスA３２aに配置する。
【０３２０】
このように、本実施形態に係る情報処理装置２００は、各レイヤの特徴を考慮して、レイヤのコンポーネントを最適なプロセスに配置する。また、第１の実施形態に示した（方針２）に従って、「情報処理装置２００が有する基本機能のうち、ユーザからの使用頻度の高いコピー機能などのアプリケーションAPが有する機能を実現するために動作する入力フィルタ１０３a、変換フィルタ１０３b、出力フィルタ１０３cなどの各コンポーネントを、同じプロセスで動作させること」とする。
【０３２１】
これによって、本実施形態に係る情報処理装置２００は、システムが有する機能のうち、比較的使用頻度の高い基本機能を安定してユーザに提供することができる。また、第１の実施形態に係る情報処理装置２００では、アプリケーション管理ソフトウェアと基本アプリケーション８１とが動作するプロセスが異なっていたため、プロセス間通信により互いのプロセス間のデータのやり取りを行っていたが、本実施形態に係る情報処理装置２００では、同一プロセスで動作するため、プロセス間通信によるシステムやアーキテクチャへの影響がない。
【０３２２】
＜情報処理装置における主な機能構成について＞
ここからは、図２７及び図２８を用いて説明したプロセス構成及び各レイヤのプロセス配置において、本実施形態に係る情報処理装置２００が有する基本機能及び拡張機能をどうのように動作させるのか、すなわち「マルチプロセス環境においてアプリケーションAPをどのような仕組みで実行させるのか」について、図２９を用いて説明する。
【０３２３】
図２９は、本発明の第２の実施形態に係る情報処理装置２００の主な機能構成の一例を示す図である。
【０３２４】
第１の実施形態における機能構成との違いは、２つのプロセスを実行する実行手段５１を有している点と、アプリケーション管理ソフトウェアと、基本アプリケーション８１との間で、データのやり取りを行う代理コンポーネント７１を有していない点である。以下にその点について説明する。
【０３２５】
本実施形態に係る情報処理装置２００は、図２７に示した２つのプロセスを実行する実行手段５１を有している。
【０３２６】
実行手段５１は、図２９に示すように、以下の２つのプロセスを実行する。実行手段５１は、例えばOS３１である。
【０３２７】
［プロセスＡ］
プロセスA３２aは、アプリケーションの起動や終了などの管理を行うアプリケーション管理ソフトウェア、及び予め当該情報処理装置２００が有する、入力フィルタ１０３a、変換フィルタ１０３b、及び／又は出力フィルタ１０３cとして機能するコンポーネント、すなわち情報処理装置２００が有する標準的な機能を実現するコンポーネントを動作させるプロセスである。また、プロセスA３２aは、情報処理装置２００の起動後、常駐する。
【０３２８】
［プロセスB］
プロセスB３２bは、機能拡張のときに当該情報処理装置２００に追加される、入力フィルタ（入力手段）１０３a、変換フィルタ１０３b、及び／又は出力フィルタ１０３cとして機能するコンポーネントを動作させるプロセスである。
【０３２９】
また、プロセスB３２bは、ユーザからの動作要求を受けたときなど、必要に応じて実行手段５１により実行される。
【０３３０】
このように、本実施形態に係る情報処理装置２００は、システム（自社開発した基盤ソフト）及び基本機能を実現する基本アプリケーション８１と、拡張機能を実現する拡張アプリケーション８２とにおいて、それぞれが動作するメモリ空間を分離し、互いに影響を及ぼさないマルチプロセス化を実現している。
【０３３１】
実行手段５１によって実行された２つのプロセスでは、第１の実施形態に説明した（方針３）に従って、図２８に示すようなプロセス間通信が最小限となるコンポーネント構成としたが、アプリケーション管理ソフトウェアと拡張アプリケーション８２との間では、動作要求、動作設定、及び実行要求などのプロセス間通信を行わなければならない。
【０３３２】
そこで、本実施形態に係る情報処理装置２００では、アプリケーション管理ソフトウェアが動作するプロセスA３２aと、アプリケーション管理ソフトウェアが動作するプロセスA３２aと異なるプロセスB３２bで動作する拡張アプリケーション８２との間でプロセス間通信を行うことによって、拡張アプリケーション８２に対して、アプリケーション管理ソフトウェアとのデータのやり取りと同じ振る舞いをする代理コンポーネント７１を有している。
【０３３３】
また、基本アプリケーション８１は、アプリケーション管理ソフトウェアと同一のプロセスA３２aで動作するため、アプリケーション管理ソフトウェアと基本アプリケーション８１との間では、動作要求、動作設定、及び実行要求などのプロセス間通信を行う必要がないため、代理コンポーネント７１を有していない。
【０３３４】
これ以外の点では、第１の実施形態の機能構成と同じであるため、本実施形態における動作要求送信手段６１、動作設定要求送信手段６２、及び実行要求管理手段６３の各手段の技術的特徴及び各手段によるアプリケーションAPの実行手順などについての説明は省略する。
【０３３５】
＜各レイヤに属するコンポーネントのプロセス配置について＞
次に、本実施形態に係る情報処理装置２００のプロセス構成において、アクティビティ集約型とフィルタ集約型のそれぞれのコンポーネント配置について、図３０及び図３１を用いて説明する。
【０３３６】
＜＜アクティビティ集約型＞＞
図３０は、本発明の第２の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（アクティビティ集約型の場合）を示す図である。
【０３３７】
第１の実施形態におけるコンポーネント配置との違いは、先の機能構成でも説明したように、アプリケーション管理ソフトウェアと基本アプリケーション８１とが同一のプロセスA３２aで動作するため、図１２に示す第１の実施形態のような、基本アプリケーション８１がアプリケーション管理ソフトウェアと異なるプロセスで動作するときに配置されていた、ローカルUI部３０２、コントロール部３０３、及びデータ管理部３０８それぞれの代理コンポーネント７１が配置されていない。
【０３３８】
これ以外の点では、第１の実施形態の機能構成と同じであるため、本実施形態におけるコンポーネントの配置についての説明は省略する。
【０３３９】
＜＜フィルタ集約型＞＞
図３１は、本発明の第２の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（フィルタ集約型の場合）を示す図である。
【０３４０】
第１の実施形態におけるコンポーネント配置との違いは、先のアクティビティ集約型でも説明したように、アプリケーション管理ソフトウェアと基本アプリケーション８１とが同一のプロセスA３２aで動作するため、図２３に示す第１の実施形態のような、基本アプリケーション８１がアプリケーション管理ソフトウェアと異なるプロセスで動作するときに配置されていた、ローカルUI部３０２、コントロール部３０３、及びデータ管理部３０８それぞれの代理コンポーネント７１が配置されていない。
【０３４１】
これ以外の点では、第１の実施形態の機能構成と同じであるため、本実施形態におけるコンポーネントの配置についての説明は省略する。
【０３４２】
＜アプリケーション実行の基本処理手順について＞
第１の実施形態では、アクティビティ集約型のコンポーネント配置におけるアプリケーション実行の基本処理手順を、図１７〜２２を用いて説明し、フィルタ集約型のコンポーネント配置におけるアプリケーション実行の基本処理手順を、図２４〜２６を用いて説明した。
【０３４３】
アプリケーション実行の基本処理手順における、第１の実施形態と本実施形態との違いは、アプリケーション管理ソフトウェアと基本アプリケーション８１との間のイベント・データなどのやり取りを、代理コンポーネントである代理コンポーネント７１を介さず行う点である。そのため、本実施形態では、アプリケーション管理ソフトウェアのローカルUI部３０２及びコントローラ部３０３と、基本アプリケーション８１のアクティビティUI及びアクティビティロジックやフィルタUI及びフィルタロジックとが、直接データのやり取りを行う。
【０３４４】
これ以外の点では、第１の実施形態のアプリケーション実行の基本処理手順と同じであるため、本実施形態におけるアプリケーション実行の基本処理手順についての説明は省略する。
【０３４５】
＜まとめ＞
以上のように、本発明の第２の実施形態によれば、本実施形態に係る情報処理装置２００は、システムの基本機能を実現する基本アプリケーション８１と、追加される拡張機能を実現する拡張アプリケーション８２とを、異なるプロセスで動作させ、更に、プロセス間通信などのマルチプロセス化の影響を、フレームワークFWに相当する限定されたコンポーネントで行う（マルチプロセス化の影響を隠蔽する）ことができる。
【０３４６】
よって、本実施形態に係る情報処理装置２００は、第１の実施形態と同じ効果を奏することができる。
【０３４７】
［第３の実施形態］
本実施形態は、システムの基本機能を実現する基本アプリケーションと、追加される拡張機能を実現する拡張アプリケーションとを、異なるプロセスで動作させるマルチプロセス化において、拡張機能が動作するプロセスが異常終了した場合に、その後も基本機能の動作を可能とするために、システムから異常終了したプロセスを切り離すことにより、マルチプロセス化を意識することなく、アプリケーションのカスタマイズ又は拡張を簡便に行え、拡張した機能の不具合がシステムの基本機能に影響を及ぼすことのない高い堅牢性を有するシステムを提供するものである。
【０３４８】
第１及び第２の実施形態と本実施形態と異なる点は、拡張機能が動作するプロセスの異常終了を検知し、その旨をアプリケーション管理ソフトウェアが有する各コンポーネントへ通知する点（プロセス異常終了検知・通知機能を有する点）である。
【０３４９】
よって、以降に行う本実施形態の説明では、第１及び第２の実施形態と同じ事項について、同一の図面及び参照符号をもってその説明を省略し、第１及び第２の実施形態と異なる点について、図３２〜３８を用いて説明する。
【０３５０】
＜情報処理装置における主な機能構成について＞
では、本実施形態に係る情報処理装置２００が、「どのようにして拡張機能が動作するプロセスの異常終了を検知し、その旨をアプリケーション管理ソフトウェアへ通知するのか」について、図３２を用いて説明する。なお、以下の説明では、第１の実施形態において説明を行った「アプリケーション管理、基本機能、及び拡張機能が、それぞれ異なるプロセスで動作する構成」を、プロセス異常終了検知・通知機能が動作するマルチプロセス環境の一例として挙げる。
【０３５１】
図３２は、本発明の第３の実施形態に係る情報処理装置２００の主な機能構成の一例を示す図である。
【０３５２】
第１の実施形態における機能構成との違いは、アプリケーション管理ソフトウェアが動作するプロセス以外のプロセスの異常終了を検知する検知手段９１と、検知結果をアプリケーション管理ソフトウェアが有する各コンポーネントへ通知する通知手段９２とを、更に有する点である。
【０３５３】
マルチプロセス化における全てのプロセスは、あるプロセスをコピーして生成される。例えば本実施形態のようなUNIX環境では、新しいプロセスを生成するシステムコールであるforkを用いて行う。forkを用いて生成されるプロセスは、forkをコールする親プロセスの子プロセスであり、親プロセスのファイルハンドル、変数、環境変数など、親プロセスと全く同じ状態が引き継がれる。
【０３５４】
例えば、図３２には、アプリケーション管理、基本機能、及び拡張機能のそれぞれが動作するプロセスA３２a、プロセスB３２b、及びプロセスC３２cが、子プロセスとして親プロセスとして生成された場合の例が示されている。
【０３５５】
また、forkを用いて生成される子プロセスは、プロセスが異常終了した場合に、親プロセスへ、その旨を通知するシグナル（SIGCHLD）を送信する。これによって、親プロセスは、自身が生成した子プロセスの生存（正常動作しているか否か）を確認することができる。
【０３５６】
そこで、本実施形態では、親プロセスが、プロセスの異常終了を検知する検知手段９１と、アプリケーション管理ソフトウェアが動作するプロセスA３２a（子プロセス）に異常終了した旨を通知する通知手段９２aとを有し、親プロセスと子プロセスとのプロセス間通信により、プロセス異常終了検知・通知機能を実現している。
【０３５７】
さらに、本実施形態では、子プロセスであるプロセスA３２aが、親プロセスからの通知を受けて、アプリケーション管理ソフトウェアが有する全てのコンポーネントに、異常終了した旨を通知する通知手段９２bを有し、各コンポーネントが、正常に動作していないアプリケーションAPが、他のアプリケーションAPの動作に影響しないように、異常終了したプロセスで動作するアプリケーションAPに関する各種管理情報の整合をとる（異常終了したプロセスで動作するアプリケーションAPの関連データを削除する）。
【０３５８】
＜プロセス異常終了時の検知・通知の基本処理手順について＞
これまでに説明した本実施形態に係る情報処理装置２００におけるプロセス異常終了時の検知・通知の具体的な処理手順について、拡張アプリケーションソフトウェアが動作するプロセスＣ３２cが異常終了した場合を例に図３３を用いて説明する。
【０３５９】
図３３は、本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能を実現するときの処理手順（その１）の一例を示すシーケンス図である。
【０３６０】
本実施形態に係る情報処理装置２００は、親プロセスで動作する検知手段９１によって上記シグナル（SIGCHLD）を受け取り、他の子プロセスであるプロセスＣ３２cの異常終了を検知し（Ｓ１３０１）、その検知結果を、同プロセスで動作する通知手段９２aに送信する（Ｓ１３０２）。
【０３６１】
通知手段９２aは、受信した検知結果を基に、アプリケーション管理ソフトウェアが動作するプロセスA３２a（子プロセス）に、異常終了した旨を、ソケットやメッセージキューなどのプロセス間通信により通知する（Ｓ１３０３）。
【０３６２】
通知を受けたアプリケーション管理ソフトウェアは、内部の通知手段９２bにより、異常終了した旨を、自身が有する全てのコンポーネント（コンポーネント数：Ｎ）に対して通知する（Ｓ１３０４１〜Ｓ１３０４ｎ）。
【０３６３】
例えば、アプリケーション管理ソフトウェアが有するローカルUI部３０２が、通知手段９２bから異常終了した旨の通知を受け取ると、異常終了したプロセスＣ３２cのプロセス識別情報（例えば、プロセスID。）を基に、アクティビティとアクティビティを実行するプロセスとが対応付けられたデータ４１を参照し、該当する関連データを削除する（Ｓ１３０５）。
【０３６４】
続いて、ローカルUI部３０２は、UIとUIを生成するプロセスとが対応付けられたデータ４２を参照し、該当する関連データを削除する（Ｓ１３０６）。
【０３６５】
また、アプリケーション管理ソフトウェアが有するコントローラ部３０３が、通知手段９２bから異常終了した旨の通知を受け取ると、異常終了したプロセスＣ３２cのプロセス識別情報（例えば、プロセスID。）を基に、リクエストとリクエストを生成するプロセスとが対応付けられたデータ４３を参照し、該当する関連データを削除する（Ｓ１３０７）。
【０３６６】
図３４は、本発明の第３の実施形態に係るプロセス異常終了に対応して整合された各種データの一例を示す図である。
【０３６７】
ここで、上記Ｓ１３０５〜Ｓ１３０７において行われる関連データの削除について、図３４を用いて説明する。なお、以下の説明では、図３３と同様に、拡張アプリケーションソフトウェアが動作するプロセスＣ３２cが異常終了した場合を例に説明する。
【０３６８】
上記Ｓ１３０５では、ローカルUI部３０２が、異常終了したプロセスＣ３２cのプロセスID"プロセスC"に基づいて、図３４の（a）に示す、アクティビティとアクティビティを実行するプロセスとが対応付けられたデータ４１を参照し、図中の破線枠に示す情報項目「アクティビティ名」の該当関連データを削除する。
【０３６９】
更に、上記Ｓ１３０６では、プロセスID"プロセスC"に基づいて、図３４の（b）に示す、UIとUIを生成するプロセスとが対応付けられたデータ４２を参照し、図中の破線枠に示す情報項目「UI制御コンポーネントID」及び「画面要素ID」の該当関連データを削除する。
【０３７０】
このとき、ローカルUI部３０２は、上記各データ４１及び４２から該当関連データを削除するとともに、データ４２の情報項目である画面要素IDを基に、アプリケーションAPの選択画面であるメニューを構成する該当グラフィック部品（例えば、アイコン。）を削除、又は該当グラフィック部品の表示属性を半輝度（グレーダウン）に設定変更する。
【０３７１】
また、上記Ｓ１３０７では、コントロール部３０３が、異常終了したプロセスＣ３２cのプロセスID"プロセスC"に基づいて、図３４の（c）に示す、リクエストとリクエストを生成するプロセスとが対応付けられたデータ４３を参照し、図中の破線枠に示す情報項目「リクエストID」の該当関連データを削除する。
【０３７２】
このとき、コントロール部３０３は、削除したリクエストに関して、画面表示、ステータスレポート印刷、管理者宛メール送信、ジョブ要求者宛メール送信などのさまざまな通知方法によってその旨を知らせる。また、コントロール部３０３では、削除したリクエストに関する情報をハードディスクなどの補助記憶部１３に格納し、永続化した後に、次回の正常起動時に、永続化情報を基に再実行する構成にしても良い。
【０３７３】
このようにして、本実施形態に係る情報処理装置２００では、マルチプロセス化において、拡張機能が動作するプロセスが異常終了した場合に、その後も基本機能の動作を可能とするために、システムから異常終了したプロセスを切り離すことができる。
【０３７４】
＜変形例＞
上記に説明を行ったプロセス異常終了検知・通知機能では、親プロセスで検知・通知機能を実現する各手段９１及び９２aが動作する構成であった。このような構成の場合、シグナルによるプロセス間通信によって、異常終了を即座に検知することができる点がメリットとして挙げられる。その一方で、マルチプロセス環境における機能実装が複雑となると言うデメリットが挙げられる。
【０３７５】
そこで、以降に、上記機能構成より簡単な構成で機能実装を可能とする例について、図３５を用いて説明する。
【０３７６】
図３５は、本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能の変形例を示す図である。
【０３７７】
図３５に示すように、本変形例では、アプリケーション管理ソフトウェアが動作するプロセスA３２aが検知手段９１及び通知手段９２を有し、アプリケーション管理ソフトウェアが管理する各種アプリケーションAPが動作するプロセスB３２b及びプロセスC３２cそれぞれが、各プロセスの状態情報を送信する送信手段９３を有する構成となっている。
【０３７８】
また、このような構成の場合、２つの検知・通知方法が考えられる。
【０３７９】
１つ目は、プロセスA３２aで動作する検知手段９１が、他のプロセスに対してプロセスの状態情報の取得を定期的に要求し、各プロセスで動作する送信手段９３が応答することで、他のプロセスの生存確認を行う方法、また２つ目は、他のプロセスで動作する送信手段９３が、プロセスA３２aに対してプロセスの状態情報（ハートビート）を定期的に送信し、プロセスA３２aで動作する検知手段９１が受信することで、他のプロセスの生存確認を行う方法である。
【０３８０】
このように、本変形例では、子プロセス間のプロセス間通信により、プロセス異常終了検知・通知機能を実現している。
【０３８１】
＜プロセス異常終了時の検知・通知の基本処理手順について＞
では、本変形例に係る情報処理装置２００におけるプロセス異常終了時の検知・通知の具体的な処理手順について、拡張アプリケーションソフトウェアが動作するプロセスＣ３２cが異常終了した場合を例に図３６及び図３７を用いて説明する。
【０３８２】
図３６には、プロセスA３２aが他のプロセスの状態情報を取得要求する検知・通知機能の処理手順の一例、また、図３７には、他のプロセスが状態情報（ハートビート）をプロセスA３２aに送信する検知・通知機能の処理手順の一例が示されている。
【０３８３】
＜＜プロセスAが他のプロセスの状態情報を取得要求する検知・通知機能の場合＞＞
図３６は、本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能を実現するときの処理手順（その２）の一例を示すシーケンス図である。
【０３８４】
本変形例に係る情報処理装置２００は、プロセスA３２aで動作する検知手段９１によって、定期的に他のプロセスの生存確認を行う。より具体的には、検知手段９１は、プロセスB３２bに対して、プロセスの状態情報の取得を要求し、プロセスB３２bで動作する送信手段９３bが、要求に応じて状態情報を送信（応答）する（Ｓ１４０１b）。続いて、検知手段９１は、プロセスC３２cに対して、プロセスの状態情報の取得を要求し、プロセスC３２cで動作する送信手段９３cが、要求に応じて状態情報を送信（応答）する（Ｓ１４０１c）。
【０３８５】
上記状態情報取得要求の中で、検知手段９１は、他のプロセスからの応答結果に基づいて、プロセスの異常終了を検知する（Ｓ１４０２）。例えば、プロセスC３２cが異常終了している場合には、状態情報取得要求に対して応答ができないことから、検知手段９１は、情報取得要求に対して応答のなかったプロセスを異常終了したものと判断し検知する。また子プロセス間のプロセス間通信エラーを基に検知しても良い。
【０３８６】
以降のＳ１４０３〜Ｓ１４０６は、図３３のＳ１３０２〜Ｓ１３０７の処理手順と同様であり、検知手段９１からの検知結果を受けて、通知手段９２が、アプリケーション管理ソフトウェアが有する全てのコンポーネントに、その旨を通知する。
【０３８７】
＜＜他のプロセスが状態情報（ハートビート）をプロセスAに送信する検知・通知機能の場合＞＞
図３７は、本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能を実現するときの処理手順（その３）の一例を示すシーケンス図である。
【０３８８】
本変形例に係る情報処理装置２００は、プロセスB３２bで動作する送信手段９３b及びプロセスC３２cで動作する送信手段９３cによって、定期的にプロセスの状態情報（ハートビート）がプロセスA３２aに送信される。より具体的には、送信手段９３は、一定間隔で自身が動作するプロセス（プロセスB３２b及びプロセスC３２c）の状態情報（ハートビート）を取得し（Ｓ１５０１b及びＳ１５０１c）、プロセスA３２aに送信する（Ｓ１５０２b及びＳ１５０２c）。その結果、これらの状態情報（ハートビート）は、プロセスA３２aで動作する検知手段９１により受信される。
【０３８９】
上記状態情報送信の中で、検知手段９１は、他のプロセスからの受信結果に基づいて、プロセスの異常終了を検知する（Ｓ１５０３）。例えば、プロセスC３２cが異常終了している場合には、一定間隔で状態情報（ハートビート）が送信できないことから、検知手段９１は、一定時間経過してもプロセスの状態情報（ハートビート）を受信できなかったプロセスを異常終了したものと判断し検知する。
【０３９０】
以降のＳ１５０４〜Ｓ１５０７は、図３３のＳ１３０２〜Ｓ１３０７の処理手順と同様であり、検知手段９１からの検知結果を受けて、通知手段９２が、アプリケーション管理ソフトウェアが有する全てのコンポーネントに、その旨を通知する。
【０３９１】
＜プロセス異常終了時の操作画面＞
また、上記変形例を含む本実施形態では、ローカルUI部３０２が、通知手段９２から異常終了を検知した旨の通知を受け取ると、例えば図３８に示すような画面Ｗが、本実施形態に係る情報処理装置２００が有する出力装置I/F１７を介して接続される表示装置に表示される。
【０３９２】
図３８は、本発明の第３の実施形態に係るアプリケーション管理UIの表示画面Ｗの一例を示す図である。なお、図３８でも、これまでの説明と同様にプロセスC３２cが異常終了した場合の例が示されている。
【０３９３】
図３８に示す表示画面Ｗは、アプリケーション管理UIにより表示される。アプリケーション管理UIは、ローカルUI部３０２と同様、プロセスA３２aのユーザインタフェース層１０１に配置される。プロセス異常終了を受け付けたローカルUI部３０２は、アプリケーション管理UIに画面生成要求を行い、アプリケーション管理UIが要求に応じてUI要素を生成し、生成したUI要素をローカルUI部３０２へ返す。このように、第１の実施形態において説明を行ったアプリケーションAPのUI表示と同様の手順により表示される。
【０３９４】
図３８の（a）には、情報処理装置２００にインストールされた各種アプリケーションAPの一覧表示画面Ｗが示されている。
【０３９５】
各種アプリケーションAPの一覧表示には、アプリケーションの状態（有効：○／無効：−）、アプリケーションAPの名称、バージョン、更新日時、動作するプロセスなどの各種情報項目が含まれる。
【０３９６】
また、この一覧表示領域には、アプリケーションの有効化／無効化を選択設定するボタン、アプリケーションの更新（再インストール）を指示するボタン、及びアプリケーションの削除（アンインストール）を指示するボタンなどの複数種のアクションボタンが用意されており、ユーザは、これらアクションボタンを選択することにより、上記設定、更新、及び削除の動作を実行させることができる。
【０３９７】
例えば、ユーザが、アプリケーション名「Print」のアクションボタン［有効化］を選択すると、「Print」の状態が、無効から有効へ変更される。
【０３９８】
更に、同画面Ｗでは、各種アプリケーションAPが動作するプロセスの有効化／無効化を選択設定する操作領域が用意されており、ユーザは、プロセス単位で有効／無効を設定することができる。
【０３９９】
例えば、ユーザが、プロセス名「プロセスB」の有効ボタンを選択すると、「プロセスB」の状態が、無効から有効へと変更される。
【０４００】
また、各種アプリケーションAPの一覧表示の中で、表示される情報項目の「状態」には、プロセスの異常終了の直前に実行されたリクエストに対応するアプリケーションAPが分かるように表示される。
【０４０１】
図中では、プロセスC３２cが異常終了していることから、該当する複数のアプリケーションAPの状態［×］が表示されている。図中の［×］は、異常終了したプロセスで動作していたアプリケーションAPを示している。また、図中の［×××］は、異常終了の直前に実行していたアプリケーションAPを示している。
【０４０２】
異常終了の直前に実行されたアプリケーションAPへのリクエストが、異常終了の原因である可能性が高い。そのため、異常終了したプロセスにおいて、直前に実行されたアプリケーションAPとそれ以外のアプリケーションAPとを異なる態様で表示することにより、原因の特定に役立てることができ、特定したアプリケーションAPを、アクションボタンを選択することで、無効化又は削除（アンインストール）することができる。
【０４０３】
以上のように、上記表示画面Ｗを介して、異常終了したプロセスへの対応を簡便に行うことができ、マルチプロセス環境を安定した状態に復帰することができる。
【０４０４】
図３８の（b）には、検知したプロセス異常終了の通知と無効化を促す表示画面Ｗが示されている。このような、簡易な表示画面Ｗで、異常終了したプロセスを無効にするようにしても良い。
【０４０５】
また、上記表示画面Ｗを介して、異常終了したプロセスが無効にされたり、異常終了の原因となったアプリケーションAPがアンインストールされたりした場合には、マルチプロセス環境を自動的にリブート（再起動）するようにしても良い。
【０４０６】
＜まとめ＞
以上のように、本発明の第３の実施形態によれば、本実施形態に係る情報処理装置２００は、アプリケーション管理ソフトウェアで管理される各種アプリケーションAPが動作するプロセスの異常終了を検知し、その検知結果に基づき、アプリケーション管理ソフトウェアが、自身が有する全てのコンポーネントにその旨を通知し、各コンポーネントにより、正常に動作していないアプリケーションAPが、他のアプリケーションAPの動作に影響しないように、異常終了したプロセスで動作するアプリケーションAPに関する各種管理情報の整合をとり、アプリケーション管理を行う。
【０４０７】
よって、本実施形態に係る情報処理装置２００では、第１及び第２の実施形態と同じを奏することができるとともに、マルチプロセス化において、拡張機能が動作するプロセスが異常終了した場合に、その後も基本機能の動作を可能とするために、システムから異常終了したプロセスを切り離すことができる。
【０４０８】
なお、上記第３の実施形態では、アプリケーション管理、基本機能、及び拡張機能が、それぞれ異なる３つのプロセスで動作する構成を、プロセス異常終了検知・通知機能が動作するマルチプロセス環境の一例として挙げたが、第２の実施形態において説明を行った２つのプロセスで動作する構成においても本機能が適用可能であることは言うまでもない。
【０４０９】
これまでに説明を行ってきた上記各実施形態に係る情報処理装置２００が有する機能は、動作環境（プラットフォーム）にあったプログラミング言語で、図１７〜２２、図２４〜２６において説明した各処理手順をコード化したアプリケーション実行プログラムを、コンピュータで実行することにより実現する。よって、上記各実施形態に係るアプリケーション実行プログラムは、コンピュータが読み取り可能な記憶媒体に格納することができる。
【０４１０】
また、第１の実施形態に係る画像処理装置１００は、図１及び図６に示したように、原稿を画像データとして読み取るスキャナ部２２と、画像データを紙に印刷する印刷部２１と、第１及び第２の実施形態において説明を行った情報処理装置２００とから構成されていることから、上記各実施形態において説明を行った情報処理装置２００と同様の効果を奏することができる。
【０４１１】
また、上記各実施形態において、実行手段５１により実行されるプロセスについて説明を行ってきたが、本発明は、起動されるプロセスの数に限定されるものではない。すなわち、アプリケーション管理用プロセスA３２aと、１つ以上のアプリケーション用プロセスとが実行される構成であれば良い。
【０４１２】
最後に、上記各実施形態に挙げた形状に、その他の要素との組み合わせなど、ここで示した要件に、本発明が限定されるものではない。これらの点に関しては、本発明の主旨をそこなわない範囲で変更することが可能であり、その応用形態に応じて適切に定めることができる。
【図面の簡単な説明】
【０４１３】
【図１】本発明の第１の実施形態に係る画像処理装置のハードウェア構成の一例を示す図である。
【図２】本発明の第１の実施形態に係る画像処理装置のソフトウェア構成の一例を示す図である。
【図３】本発明の第１の実施形態に係るパイプ＆フィルタの概念及びフィルタの構成要素の一例を示す図である。
【図４】本発明の第１の実施形態に係る画像処理装置の基本処理手順（その１）の一例を示すフローチャートである。
【図５】本発明の第１の実施形態に係る画像処理装置の基本処理手順（その２）の一例を示すフローチャートである。
【図６】本発明の第１の実施形態に係る情報処理装置のハードウェア構成の一例を示す図である。
【図７】本発明の第１の実施形態に係るプロセス構成の一例を示す図である。
【図８】本発明の第１の実施形態に係る各レイヤをプロセスに配置する一例を示す図である。
【図９】本発明の第１の実施形態に係る各アクティビティ及びフィルタをプロセスに配置する一例を示す図である。
【図１０】本発明の第１の実施形態に係る情報処理装置の主な機能構成の一例を示す図である。
【図１１】本発明の第１の実施形態に係る代理コンポーネントの仕組みの一例を示す図である。
【図１２】本発明の第１の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（アクティビティ集約型の場合）を示す図である。
【図１３】本発明の第１の実施形態に係る動作するプロセスの判別方法（アクティビティ選択方法）の一例を示す図である。
【図１４】本発明の第１の実施形態に係るアクティビティとアクティビティを実行するプロセスとが対応付けられたデータの一例を示す図である。
【図１５】本発明の第１の実施形態に係るUIとUIを生成するプロセスとが対応付けられたデータの一例を示す図である。
【図１６】本発明の第１の実施形態に係るリクエストとリクエストを生成するプロセスとが対応付けられたデータの一例を示す図である。
【図１７】本発明の第１の実施形態に係るコピー機能を実現するときの処理手順（その１：アクティビティ選択）の一例を示す図である。
【図１８】本発明の第１の実施形態に係るコピー機能を実現するときの処理手順（その２：設定変更）の一例を示す図である。
【図１９】本発明の第１の実施形態に係るコピー機能を実現するときの処理手順（その３：リクエスト実行）の一例を示す図である。
【図２０】本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その１：アクティビティ選択）の一例を示す図である。
【図２１】本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その２：設定変更）の一例を示す図である。
【図２２】本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その３：リクエスト実行）の一例を示す図である。
【図２３】本発明の第１の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（フィルタ集約型の場合）を示す図である。
【図２４】本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その４：アクティビティ選択）の一例を示す図である。
【図２５】本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その５：設定変更）の一例を示す図である。
【図２６】本発明の第１の実施形態に係るサードベンダ製アプリケーション機能を実現するときの処理手順（その６：リクエスト実行）の一例を示す図である。
【図２７】本発明の第２の実施形態に係るプロセス構成の一例を示す図である。
【図２８】本発明の第２の実施形態に係る各レイヤをプロセスに配置する一例を示す図である。
【図２９】本発明の第２の実施形態に係る情報処理装置の主な機能構成の一例を示す図である。
【図３０】本発明の第２の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（アクティビティ集約型の場合）を示す図である。
【図３１】本発明の第２の実施形態に係る各レイヤに属するコンポーネントをプロセスに配置する一例（フィルタ集約型の場合）を示す図である。
【図３２】本発明の第３の実施形態に係る情報処理装置の主な機能構成の一例を示す図である。
【図３３】本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能を実現するときの処理手順（その１）の一例を示すシーケンス図である。
【図３４】本発明の第３の実施形態に係るプロセス異常終了に対応して整合された各種データの一例を示す図である。
【図３５】本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能の変形例を示す図である。
【図３６】本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能を実現するときの処理手順（その２）の一例を示すシーケンス図である。
【図３７】本発明の第３の実施形態に係るプロセス異常終了時の検知・通知機能を実現するときの処理手順（その３）の一例を示すシーケンス図である。
【図３８】本発明の第３の実施形態に係るアプリケーション管理UIの表示画面の一例を示す図である。
【符号の説明】
【０４１４】
１１      制御部（CPU）
１２      主記憶部（ROM,RAM）
１３      補助記憶部（HD）
１４      ネットワークI/F
１５      外部記憶装置I/F
１６      外部装置I/F
１７      出力装置I/F
１８      入力装置I/F
１９      表示部（パネル表示）
２０      入力部（操作部）
２１      印刷部（プロッタ部）
２２      スキャナ部（原稿読み取り部）
３１      OS（基本ソフトウェア）
３２ａ    プロセスA（第１のプロセス）
３２ｂ    プロセスB（第２のプロセス）
３２ｃ    プロセスC（第３のプロセス）
４１      アプリケーション識別情報とプロセス識別情報とを関連付ける情報
４２      画面要素識別情報とプロセス識別情報とを関連付ける情報
４３      実行要求識別情報とプロセス識別情報とを関連付ける情報
５１      実行手段
６１      動作要求送信手段
６２      動作設定送信手段
６３      実行要求管理手段
７１      代理コンポーネント（ソフトウェア部品）
８１      基本アプリケーション（自社製アプリケーション）
８２      拡張アプリケーション（サードベンダ製アプリケーション）
９１      検知手段
９２      通知手段
９３      送信手段
１００    画像処理装置
１０１    ユーザインタフェース層
１０２    コントロール層
１０３    アプリケーションロジック層
１０３ａ  入力手段（入力フィルタ）
１０３ｂ  加工手段（変換フィルタ）
１０３ｃ  出力手段（出力フィルタ）
１０４    デバイスサービス層
１０５    デバイス制御層
１０６    アスペクト
２００    情報処理装置
３０１    通信サーバ部
３０２    ローカルＵＩ部
３０３    コントロール部
３０４    読取フィルタ
３０５    文書加工フィルタ
３０６    印刷フィルタ
３０７    画像パイプ
３０８    データ管理部
３０９    スキャナ制御部
３１０    プロッタ制御部
３１１    メモリ制御部
３１２    操作デバイス制御部
４０１    コピーアクティビティＵＩ
４０２    読み取りフィルタＵＩ
４０３    印刷フィルタＵＩ
４０５    ベンダアクティビティＵＩ
４０６    ベンダ（入力）フィルタＵＩ
５０１    コピーアクティビティロジック
５０２    読み取りフィルタロジック
５０３    印刷フィルタロジック
５０５    ベンダアクティビティロジック
５０６    ベンダ（入力）フィルタロジック
Ａ        アクティビティ（１：アクティビティ１，  ２：アクティビティ）
ＡＰ      アプリケーション（１：アプリケーション１，  ２：アプリケーション２）
Ｆ        フィルタ（a：フィルタA，  b：フィルタB，  c：フィルタC）
ＦＷ      フレームワーク
Ｐ        パイプ
Ｗ        表示画面
【図１】
2009134695.tif 000003
【図２】
2009134695.tif 000004
【図３】
2009134695.tif 000005
【図４】
2009134695.tif 000006
【図５】
2009134695.tif 000007
【図６】
2009134695.tif 000008
【図７】
2009134695.tif 000009
【図８】
2009134695.tif 000010
【図９】
2009134695.tif 000011
【図１０】
2009134695.tif 000012
【図１１】
2009134695.tif 000013
【図１２】
2009134695.tif 000014
【図１３】
2009134695.tif 000015
【図１４】
2009134695.tif 000016
【図１５】
2009134695.tif 000017
【図１６】
2009134695.tif 000018
【図１７】
2009134695.tif 000019
【図１８】
2009134695.tif 000020
【図１９】
2009134695.tif 000021
【図２０】
2009134695.tif 000022
【図２１】
2009134695.tif 000023
【図２２】
2009134695.tif 000024
【図２３】
2009134695.tif 000025
【図２４】
2009134695.tif 000026
【図２５】
2009134695.tif 000027
【図２６】
2009134695.tif 000028
【図２７】
2009134695.tif 000029
【図２８】
2009134695.tif 000030
【図２９】
2009134695.tif 000031
【図３０】
2009134695.tif 000032
【図３１】
2009134695.tif 000033
【図３２】
2009134695.tif 000034
【図３３】
2009134695.tif 000035
【図３４】
2009134695.tif 000036
【図３５】
2009134695.tif 000037
【図３６】
2009134695.tif 000038
【図３７】
2009134695.tif 000039
【図３８】
2009134695.tif 000040