(57)【要約】【課題】  新たなソフトウェアアーキテクチャを有する情報処理装置において、従来の情報処理装置におけるソフトウェアを再利用することで、新たなソフトウェア開発を行う手間を省き、従来装置の有する優れた処理速度を承継することができる情報処理装置を提供することを目的とする。【解決手段】  動的に追加・削除することができるプログラムに、従来使用しているＮａｔｉｖｅ言語により記述されている処理部分を埋め込み、起動時（インストール時）に該処理部分を装置内部に複製し、該複製した場所に関する情報を保持することで、従来使用していた該処理部分を再利用することができる。これにより、該処理部分の再開発の手間が省け、情報処理装置における処理速度を高い水準で維持することができる。【選択図】図２
2009294773.tif 000002
【特許請求の範囲】
【請求項１】
当該情報処理装置による情報処理を実現する機能提供部と、前記機能提供部による前記情報処理に必要な事前処理を実現する拡張機能提供部と、前記機能提供部を起動させる第１の起動処理部と、前記拡張機能提供部を起動させる第２の起動処理部と、前記第１の起動処理部により起動された前記機能提供部に関する起動情報を前記第１の起動処理部から取得し、前記第２の起動処理部により起動された前記拡張機能提供部に関する起動情報を前記第２の起動処理部から取得する第３の起動処理部と、起動された前記機能提供部及び前記拡張機能提供部に関する起動情報を、前記第３の起動処理部から取得するプログラム管理部と、前記機能提供部の複製を格納する格納部と、を有する情報処理装置であって、
前記第１の起動処理部は、
前記格納部に前記機能提供部を複製し、該機能提供部の複製を起動させる複製起動手段と、
前記複製起動手段により格納された前記機能提供部の複製が存在する場所を、前記第２の起動処理部及び前記第３の起動処理部を介して、前記拡張機能部に通知する複製場所通知手段を有し、
前記拡張機能提供部は、
前記複製場所通知手段により通知された前記場所に存在する前記機能提供部の複製に対して、前記事前処理の結果を提供する処理結果提供手段と、を有することを特徴とする情報処理装置。
【請求項２】
前記機能拡張部及び前記拡張機能提供部を記述している第１のプログラミング言語と、前記第１の起動処理部、前記第２の起動処理部、前記第３の起動処理部及び前記プログラム管理部を記述している第２のプログラミング言語とは、異なるプログラミング言語であることを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第１のプログラミング言語はＣ言語であり、前記第２のプログラミング言語はＪａｖａ（登録商標）言語であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
前記複製場所通知手段は、さらに、前記第３の起動処理部を介して、前記プログラム管理部に前記機能提供部の複製が存在する場所を通知することを特徴とする請求項１乃至３の何れか一に記載の情報処理装置。
【請求項５】
前記プログラム管理部は、機能提供部と該機能提供部の複製が存在する場所とを関連付けて記録する複製場所記録手段を有することを特徴とする請求項１乃至４の何れか一に記載の情報処理装置。
【請求項６】
前記機能提供部は、画像処理に係るジョブを構成する処理毎に設けられたフィルタであることを特徴とする請求項１乃至５の何れか一に記載の情報処理装置。
【請求項７】
前記機能提供部は、前記第１の起動処理部及び第３の起動処理部を介して、前記プログラム管理部と情報の授受を行い、前記拡張機能提供部は、前記第２の起動処理部及び第３の起動提供部を介して、前記プログラム管理部と情報の授受を行うことを特徴とする請求項１乃至６に記載の情報処理装置。
【請求項８】
情報処理装置による情報処理を実現する機能提供部と、前記機能提供部による前記情報処理に必要な事前処理を実現する拡張機能提供部と、前記機能提供部を起動させる第１の起動処理部と、前記拡張機能提供部を起動させる第２の起動処理部と、前記第１の起動処理部により起動された前記機能提供部に関する起動情報を前記第１の起動処理部から取得し、前記第２の起動処理部により起動された前記拡張機能提供部に関する起動情報を前記第２の起動処理部から取得する第３の起動処理部と、起動された前記機能提供部及び前記拡張機能提供部に関する起動情報を、前記第３の起動処理部から取得するプログラム管理部と、前記機能提供部の複製を格納する格納部と、を有する前記情報処理装置の情報処理方法であって、
前記第１の起動処理部は、
前記格納部に前記機能提供部を複製し、該機能提供部の複製を起動させる複製起動手順と、
前記複製起動手順により格納された前記機能提供部の複製が存在する場所を、前記第２の起動処理部及び前記第３の起動処理部を介して、前記拡張機能部に通知する複製場所通知手順を有し、
前記拡張機能提供部は、
前記複製場所通知手順により通知された前記場所に存在する前記機能提供部の複製に対して、前記事前処理の結果を提供する処理結果提供手順と、を有することを特徴とする情報処理方法。
【請求項９】
前記機能拡張部及び前記拡張機能提供部を記述している第１のプログラミング言語と、前記第１の起動処理部、前記第２の起動処理部、前記第３の起動処理部及び前記プログラム管理部を記述している第２のプログラミング言語とは、異なるプログラミング言語であることを特徴とする請求項８に記載の情報処理方法。
【請求項１０】
前記第１のプログラミング言語はＣ言語であり、前記第２のプログラミング言語はＪａｖａ（登録商標）言語であることを特徴とする請求項９に記載の情報処理方法。
【請求項１１】
前記複製場所通知手順は、さらに、前記第３の起動処理部を介して、前記プログラム管理部に前記機能提供部の複製が存在する場所を通知することを特徴とする請求項８乃至１０の何れか一に記載の情報処理方法。
【請求項１２】
前記プログラム管理部は、機能提供部と該機能提供部の複製が存在する場所とを関連付けて記録する複製場所記録手順を有することを特徴とする請求項８乃至１１の何れか一に記載の情報処理方法。
【請求項１３】
前記機能提供部は、画像処理に係るジョブを構成する処理毎に設けられたフィルタであることを特徴とする請求項８乃至１２の何れか一に記載の情報処理方法。
【請求項１４】
情報処理装置による情報処理を実現する機能提供部と、前記機能提供部による前記情報処理に必要な事前処理を実現する拡張機能提供部と、前記機能提供部を起動させる第１の起動処理部と、前記拡張機能提供部を起動させる第２の起動処理部と、前記第１の起動処理部により起動された前記機能提供部に関する起動情報を前記第１の起動処理部から取得し、前記第２の起動処理部により起動された前記拡張機能提供部に関する起動情報を前記第２の起動処理部から取得する第３の起動処理部と、起動された前記機能提供部及び前記拡張機能提供部に関する起動情報を、前記第３の起動処理部から取得するプログラム管理部と、前記機能提供部の複製を格納する格納部と、を有する前記情報処理装置の情報処理プログラムであって、
コンピュータに、
前記第１の起動処理部は、
前記格納部に前記機能提供部を複製し、該機能提供部の複製を起動させる複製起動手順と、
前記複製起動手順により格納された前記機能提供部の複製が存在する場所を、前記第２の起動処理部及び前記第３の起動処理部を介して、前記拡張機能部に通知する複製場所通知手順を実行させ、さらに、
前記拡張機能提供部は、
前記複製場所通知手順により通知された前記場所に存在する前記機能提供部の複製に対して、前記事前処理の結果を提供する処理結果提供手順と、を実行させるための情報処理プログラム。
【請求項１５】
前記機能拡張部及び前記拡張機能提供部を記述している第１のプログラミング言語と、前記第１の起動処理部、前記第２の起動処理部、前記第３の起動処理部及び前記プログラム管理部を記述している第２のプログラミング言語とは、異なるプログラミング言語であることを特徴とする請求項１４に記載の情報処理プログラム。
【請求項１６】
前記第１のプログラミング言語はＣ言語であり、前記第２のプログラミング言語はＪａｖａ（登録商標）言語であることを特徴とする請求項１５に記載の情報処理プログラム。
【請求項１７】
前記複製場所通知手順は、さらに、前記第３の起動処理部を介して、前記プログラム管理部に前記機能提供部の複製が存在する場所を通知することを特徴とする請求項１４乃至１６の何れか一に記載の情報処理プログラム。
【請求項１８】
前記プログラム管理部は、前記機能提供部と該機能提供部の複製が存在する場所とを関連付けて記録する複製場所記録手順を有することを特徴とする請求項１４乃至１７の何れか一に記載の情報処理プログラム。
【請求項１９】
前記機能提供部は、画像処理に係るジョブを構成する処理毎に設けられたフィルタであることを特徴とする請求項１４乃至１８の何れか一に記載の情報処理プログラム。
【請求項２０】
請求項１４乃至１９の何れか一に記載の情報処理プログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理方法、情報処理プログラム及び記録媒体に関し、特に、プリンタ機能を有する情報処理装置、該情報処理装置に適用される情報処理方法、該情報処理方法をコンピュータに実行させるための情報処理プログラム、該情報処理プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
インストールした後のソフトウェアの機能部品（以下、単にプログラムという）を修正、追加、更新することで、ソフトウェアを実行する様々な機器の機能を容易に変更することを可能とする技術、例えばＯＳＧｉ（Open Service Gateway initiative）フレームワークが知られている（例えば、非特許文献１参照）。このような技術では、互いにどのようなプログラムが起動状態かをプログラムが知る必要があるため、複数のプログラムを連携させるプログラム管理部が用意され、該プログラム管理部は、機能部品としてのプログラムの起動の有無や、機能を要求しているプログラム、要求されているプログラムなどを管理する（例えば、特許文献１参照）。
【０００３】
ところで、画像処理装置の印刷処理において、クライアントＰＣから送信されるＰＤＬ（Page Description Language）ファイルは、該クライアントＰＣ毎にフォーマットが異なるため、受信したＰＤＬファイルを該画像処理装置で処理可能なフォーマットに変更することが必要となる。
【０００４】
他方、従来の画像処理装置において、フォーマット毎の処理部分を装置内部で保持していたが、新たなソフトウェアアーキテクチャを採用し、Ｊａｖａ（登録商標）言語で一般的な追加・削除のメカニズムを使用することで、該処理部分を動的に追加・削除することができるようになった。
【特許文献１】特開２００５−１９６６３０号公報
【非特許文献１】インターネットhttp://www.osgi-ufj.org/
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、Ｃ言語等のＮａｔｉｖｅ言語で実装されている従来の画像処理装置における上記処理部分を、新たなソフトウェアアーキテクチャの中でＪａｖａ（登録商標）言語を使用して実装するとなると、該処理部分を新たに実装し直す必要が生じるというという問題点がある。
【０００６】
さらに、Ｃ言語で記載された上記処理部分を、Ｊａｖａ（登録商標）言語で記述したものに置き換えると、処理速度が低下する可能性があるという問題点もある。
【０００７】
そこで、本発明では、新たなソフトウェアアーキテクチャを有する情報処理装置において、従来の情報処理装置におけるソフトウェアを再利用することで、新たなソフトウェア開発を行う手間を省き、従来装置の有する優れた処理速度を承継することができる情報処理装置、該情報処理装置の情報処理方法、該情報処理方法をコンピュータに実行させるための情報処理プログラム、該情報処理プログラムを記録した記録媒体を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る情報処理装置は、当該装置による情報処理を実現する機能提供部と、機能提供部による情報処理に必要な事前処理を実現する拡張機能提供部と、機能提供部を起動させる第１の起動処理部と、拡張機能提供部を起動させる第２の起動処理部と、第１の起動処理部により起動された機能提供部に関する起動情報を第１の起動処理部から取得し、第２の起動処理部により起動された拡張機能提供部に関する起動情報を第２の起動処理部から取得する第３の起動処理部と、起動された機能提供部及び拡張機能提供部に関する起動情報を、第３の起動処理部から取得するプログラム管理部と、機能提供部の複製を格納する格納部と、を有する情報処理装置であって、第１の起動処理部は、格納部に機能提供部を複製し、該機能提供部の複製を起動させる複製起動手段と、複製起動手段により格納された機能提供部の複製が存在する場所を、第２の起動処理部及び第３の起動処理部を介して、拡張機能部に通知する複製場所通知手段を有し、拡張機能提供部は、複製場所通知手段により通知された場所に存在する機能提供部の複製に対して、事前処理の結果を提供する処理結果提供手段と、を有することを特徴とする。
【０００９】
本発明に係る情報処理装置の一形態において、機能拡張部及び拡張機能提供部を記述している第１のプログラミング言語と、第１の起動処理部、第２の起動処理部、第３の起動処理部及びプログラム管理部を記述している第２のプログラミング言語とは、異なるプログラミング言語であることを特徴とする。
【００１０】
本発明に係る情報処理装置の一形態において、第１のプログラミング言語はＣ言語であり、第２のプログラミング言語はＪａｖａ（登録商標）言語であることを特徴とする。
【００１１】
本発明に係る情報処理装置の一形態において、複製場所通知手段は、さらに、第３の起動処理部を介してプログラム管理部に、機能提供部の複製が存在する場所を通知することを特徴とする。
【００１２】
本発明に係る情報処理装置の一形態において、プログラム管理部は、機能提供部と該機能提供部の複製が存在する場所とを関連付けて記録する複製場所記録手段を有することを特徴とする。
【００１３】
本発明に係る情報処理装置の一形態において、機能提供部は、情報処理に係るジョブを構成する処理毎に設けられたフィルタであることを特徴とする。
【００１４】
本発明に係る情報処理装置の一形態において、機能提供部は、第１の起動処理部及び第３の起動処理部を介して、プログラム管理部と情報の授受を行い、拡張機能提供部は、第２の起動処理部及び第３の起動提供部を介して、プログラム管理部と情報の授受を行うことを特徴とする。
【００１５】
したがって、新たなソフトウェアアーキテクチャを有する情報処理装置において、従来の情報処理装置におけるソフトウェアを再利用することで、新たなソフトウェア開発を行う手間を省き、従来装置の有する優れた処理速度を承継することができる情報処理装置を提供することができる。
【発明の効果】
【００１６】
本発明では、新たなソフトウェアアーキテクチャを有する情報処理装置において、従来の情報処理装置におけるソフトウェアを再利用することで、新たなソフトウェア開発を行う手間を省き、従来装置の有する優れた処理速度を承継することができる情報処理装置、該情報処理装置の情報処理方法、該情報処理方法をコンピュータに実行させるための情報処理プログラム、該情報処理プログラムを記録した記録媒体を提供することができる。
【発明を実施するための最良の形態】
【００１７】
図面を参照しながら、本発明を実施するための最良の形態について説明する。
（複合機のハードウェア構成）
はじめに、図１を用いて、本実施の形態に係る情報処理装置である複合機１０のハードウェア構成について説明する。
【００１８】
本実施の形態に係る複合機１０は、プログラム管理部４３が、機能提供プログラム３７の利用者情報を拡張機能提供部４８に登録し、被利用者情報を機能提供部４２に登録することで、機能提供部４２がサービス（ここでは、拡張機能提供部４８が提供する機能）を利用する時にプログラム管理部４３に問い合わせる必要をなくすことができる。
【００１９】
複合機１０は、スキャナ、プリンタ、ファクシミリ、電子メール送受信等、それぞれ固有のデバイスを備えた機器であるが、プログラム３０を実行する情報処理部は計算機としての情報処理装置と同様である。
【００２０】
複合機１０は、それぞれバスで相互に接続されているＲＡＭ２１、ＲＯＭ２２、ドライブ装置２３、入力装置２４、ＮＩＣ（Network Interface Card）２５、表示制御装置２６、記憶装置２７及びＣＰＵ２８を有するように構成される。
【００２１】
ＲＡＭ２１は、ＯＳ（Operating System）、各種プログラム３０及びデータを一時保管する作業メモリになり、ＲＯＭ２２は、ＢＩＯＳ（Basic Input/Output System）などＯＳを起動するためのプログラムや設定ファイルを記憶している。ドライブ装置２３は、記憶媒体２９が着脱可能に構成されており、記憶媒体２９にプログラム３０やデータを書き込む際に使用され、また、記録媒体２９に記録されたプログラム３０やデータを読み込む際に使用される。
【００２２】
入力装置２４は、キーボードやマウス等のポインティングデバイス、タッチパネル等ユーザからの様々な操作指示を入力するためのデバイスである。ＮＩＣ２５は、インターネットやＬＡＮ等のネットワークに接続するためのインターフェイスである。表示制御装置２６は、プログラム３０が指示する操作画面、動作状況、エラーメッセージなどを液晶などの表示部、タッチパネル等に表示する。
【００２３】
記憶装置２７は、ＨＤＤ（ハードディスクドライブ）やフラッシュメモリなど不揮発性メモリであり、ＯＳ、プログラム３０、ドライバ等のファイルが記憶されている。
【００２４】
ＣＰＵ２８は、ＯＳやプログラム３０などを記憶装置２７からロードして実行することで種々の機能を提供すると共に、複合機１０が行う処理を統括的に制御する。
【００２５】
プログラム３０は、予め記憶装置２７にインストールされた状態で複合機１０と共に出荷されてもよいし、ネットワークからダウンロードされて記憶装置２７にインストールされてもよい。また、本実施の形態では、各プログラム３０を動的に修正、追加、更新することができ、後から追加したプログラム３０を相互に利用できるようになっている。
【００２６】
（複合機の動作原理）
図２に、複合機１０の機能ブロック図を示す。各部はいずれもＣＰＵ２８がプログラム３０を実行することで実現される。本実施の形態では、プログラム３０の一部を機能に応じて、機能提供プログラム３７、拡張機能提供プログラム３８に区別する。
【００２７】
機能提供プログラム３７は、複合機１０では、例えば、コピー、スキャン、ファクシミリ、電子メール送受信など上位（ユーザ側）の機能を実現するプログラム３０である。拡張機能提供プログラム３８は、機能提供プログラム３７が上位の機能を提供するために必要な拡張機能（以下、サービスという）を提供し、例えば、画像フォーマットの変換や通信プロトコルの変換を実行するプログラム３０である。なお、機能提供プログラム３７及び拡張機能提供プログラム３８はいずれも複数用意されていることが多い。
【００２８】
機能提供プログラム３７は起動処理プログラム３１Ａを備え、ＣＰＵ２８が機能提供プログラム３７を実行することで、機能提供部４２及び起動処理部（機能提供）４１（以下、単に起動処理部４１という）が実現される。拡張機能提供プログラム３８は起動処理プログラム３１Ｂを備え、ＣＰＵ２８が拡張機能提供プログラム３８を実行することで、拡張機能提供部４８及び起動処理部（拡張機能提供）４７（以下、単に起動処理部４７という）が実現される。
【００２９】
また、ＣＰＵ２８がプログラム管理プログラム３３を実行することでプログラム管理部４３が、起動処理プログラム３４を実行することで起動処理部（共通）４４（以下、単に起動処理部４４という）が、それぞれ実現される。
【００３０】
プログラム管理部４３は、起動したプログラムが提供するサービスの内容を管理し、例えば、機能提供プログラム３７及び拡張機能提供プログラム３８の起動の有無や、各プログラムの機能を要求しているプログラム、要求されているプログラムなどを管理する。
【００３１】
起動処理部４１、４７は各プログラムの機能などに応じた固有の起動処理を行うが、さらに固有でない起動処理を取り出し、共通化した起動処理部４４をプログラム管理部１００と接続するように設けている。
【００３２】
これにより、プログラム管理部４３の汎用的な管理処理を可能とし、各プログラムが保持する起動処理部４１、４７が、あらかじめ定められた共通ルールに従い起動することができる。なお、機能提供部４２は機能提供プログラム３７本来の機能を提供する部分であり、拡張機能提供部４８は拡張機能提供プログラム３８本来の機能を提供する部分である。
【００３３】
そして、本実施の形態では、さらに２つの起動処理部（機能提供：共通）４５（以下、単に起動処理部４５という）及び起動処理部（拡張機能提供：共通）４６（以下、単に起動処理部４６という）を有する。起動処理部４５は、ＣＰＵ２８が起動処理プログラム３５を実行することで実現され、起動処理部４６はＣＰＵ２８が起動処理プログラム３６を実行することで実現される。
【００３４】
起動処理部４５は、起動処理部４４の処理うち複数の機能提供部４２が共通に利用するメカニズムであり、起動処理部４６は、起動処理部４４の処理うち複数の拡張機能提供部４８が共通に利用するメカニズムである。
【００３５】
起動処理部４５及び４６は、
（ａ）プログラム管理部４３と通信を行うメカニズム
（ｂ）機能提供部４２（の複製）と拡張機能提供部４８とを接続するメカニズム
をそれぞれ有する。
【００３６】
起動処理部４４、４５、４６及びプログラム管理部４３は、複数の機能提供部４２（の複製）と拡張機能提供部４８に共通に利用される共通メカニズム４９である。起動処理部４５と起動処理部４６とが接続され、かつ、プログラム管理部４３との通信を受け持つので、プログラム管理部４３を介さずに、機能提供部４２（の複製）と拡張機能提供部４８との間で通信することができるようになる。したがって、通信コストを下げることができると共に、処理の高速化が可能となる。
格納部５０は、後ほど詳述する機能提供部４２の複製を保存し、起動させる場所であり、図２中では共通メカニズム４９内に記載しているが、共通メカニズム４９外にあっても良い。
【００３７】
また、起動処理部４１は、機能提供部４２の複製を格納部５０に生成し、当該生成した機能提供部４２の複製を起動させる。また、起動処理部４１は、機能提供部４２の複製と起動を行うと共に、当該機能提供部４２の複製が存在する場所（該複製の存在する場所へのパス情報）を、起動処理部４５、４６、４７を介して、拡張機能提供部４８に通知する。
さらに、該パス情報は、起動処理部４５、４４を介して、プログラム管理部４３に通知される形態としても良い。こうすることで、機能提供部４２が複数存在する場合であっても、プログラム管理部４３は、各機能提供部４２と各機能提供部４２の複製が存在する場所とを関連付けて保持することができ、複数の機能提供部４２を追加することが可能となる。
【００３８】
一方で、機能提供部４２と拡張機能提供部４８とを記述している第１のプログラミング言語と、起動処理部４１、４４、４５、４６、４７及びプログラム管理部４３を記述している第２のプログラミング言語とは、異なる言語であることが本発明の特徴の一つである。例えば、第１のプログラミング言語はＮａｔｉｖｅ言語（Ｃ言語）であり、第２のプログラミング言語はＪａｖａ（登録商標）言語であっても良い。これにより、Ｊａｖａ（登録商標）言語を用いて構築される新しいソフトウェアアーキテクチャの中でも、従来装置による処理部分（Ｃ言語で記述されている）を再利用し、かつ、従来装置による処理部分の優れた処理速度の継承を可能とする。また、複合機１０は、プログラムの起動処理とプログラム管理処理の部分をＪａｖａ（登録商標）言語で構築することによって、動的に処理を追加（拡張）、削除することができるという優れた特徴を有する。
【００３９】
そして、拡張機能提供部４８は、格納部５０において起動された機能提供部４２の複製に、自身の処理結果（サービス）を提供することで、複合機１０における情報処理（画像処理）が実行される。このように、機能提供部４２の複製と拡張機能提供部４８とは同じ言語で記述されたプログラムなので、該処理の間に違う言語で記述されたプログラムを介在させた場合に比べ、パフォーマンスの向上を期待することができる。
【００４０】
（複合機のソフトウェアアーキテクチャ）
図３は、本発明の実施の形態における複合機のソフトウェア構成例を示す図である。図３で示すように、複合機１０におけるソフトウェアは、ユーザインタフェース層１００、コントロール層２００、アプリケーションロジック層３００、デバイスサービス層４００及びデバイス制御層５００より構成される。なお、図中における各層の上下関係は、層間の呼び出し関係に基づいている。すなわち、基本的に図中において上にある層が下の層を呼び出す。
【００４１】
ユーザインタフェース層１００は、機能（例えば、コピー、印刷、スキャン、ＦＡＸ送信）の実行要求を受け付けるための機能が実装されている部分であり、例えば、通信サーバ部１１０及びローカルＵＩ（User Interface）部１２０が含まれる。通信サーバ部１１０は、例えば、非図示のクライアントＰＣ（Personal Computer）からネットワーク経由で要求を受け付ける。ローカルＵＩ部１２０は、例えば、非図示のオペレーションパネルを介して入力される要求を受け付ける。ユーザインタフェース層１００において受け付けられた要求は、コントロール層２００に伝えられる。
【００４２】
コントロール層２００は、要求された機能を実現するための処理を制御するための機能が実装されている部分である。具体的には、要求された機能に応じて、アプリケーションロジック層３００における各フィルタを接続し、接続されたフィルタに基づいて機能の実行を制御する。
【００４３】
アプリケーションロジック層３００は、それぞれが複合機１０において提供される機能の一部を実現する部品群が実装されている部分である。すなわち、アプリケーションロジック層３００における部品を組み合わせることにより一つの機能が実現される。本実施の形態では、各部品を「フィルタ」と呼ぶ。これは、複合機１０のソフトウェアアーキテクチャが「パイプ＆フィルタ」と呼ばれる考え方に基づくことによる。
【００４４】
図４は、パイプ＆フィルタの概念を示すための図である。図４においては、「Ｆ」はフィルタを示し、「Ｐ」はパイプを示す。図中に示されるように、各フィルタはパイプによって接続される。フィルタは、入力されたデータに対して変換を施し、その結果を出力する。パイプは、フィルタから出力されたデータを次のフィルタに伝達する。
【００４５】
すなわち、本実施の形態における複合機１０では、各機能をドキュメント（データ）に対する「変換」の連続として捉える。複合機の各機能は、ドキュメントの入力、加工、及び出力によって構成されるものとして一般化することができる。そこで、「入力」、「加工」、及び「出力」を「変換」として捉え、一つの「変換」を実現するソフトウェア部品がフィルタとして構成される。入力を実現するフィルタを特に「入力フィルタ」という。また、加工を実現するフィルタを特に「加工フィルタ」という。更に、出力を実現するフィルタを特に「出力フィルタ」という。なお。各フィルタは独立しており、フィルタ間における依存関係（呼び出し関係）は基本的には存在しない。したがって、フィルタ単位で追加（インストール）又は削除（アンインストール）が可能とされている。
【００４６】
図３において、アプリケーションロジック層３００には、入力フィルタ３１０として、読取フィルタ３１１、メール受信フィルタ３１２、ＦＡＸ受信フィルタ３１３、ＰＣ文書受信フィルタ３１４が含まれている。
読取フィルタ３１１は、スキャナによる画像データの読み取りを制御し、読み取られた画像データを出力する。メール受信フィルタ３１２は、電子メールを受信し、当該電子メールに含まれているデータを出力する。ＦＡＸ受信フィルタ３１３は、ＦＡＸ受信を制御し、受信されたデータを出力する。ＰＣ文書受信フィルタ３１４は、非図示のクライアントＰＣから印刷データを受信し、受信された印刷データを出力する。
【００４７】
図３において、アプリケーションロジック層３００には、加工フィルタ３２０として、文書加工フィルタ３２１、文書変換フィルタ３２２が含まれている。
文書加工フィルタ３２１は、入力されたデータに所定の画像変換処理（集約、拡大、又は縮小等）を施し、出力する。文書変換フィルタ３２２は、レンダリング処理を実行する。すなわち、入力されたＰｏｓｔＳｃｒｉｐｔデータをビットマップデータに変換して出力する。
【００４８】
図３において、アプリケーションロジック層３００には、出力フィルタとして、印刷フィルタ３３１、メール送信フィルタ３３２、ＦＡＸ送信フィルタ３３３、ＰＣ文書送信フィルタ３３４が含まれている。
印刷フィルタ３３１は、入力されたデータをプロッタに出力（印刷）させる。メール送信フィルタ３３２は、入力されたデータを電子メールに添付して送信する。ＦＡＸ送信フィルタ３３３は、入力されたデータをＦＡＸ送信する。ＰＣ文書送信フィルタ３３４は、入力されたデータをクライアントＰＣに送信する。
【００４９】
デバイスサービス層４００は、アプリケーションロジック層３００における各フィルタから共通に利用される下位機能が実装されている部分であり、例えば、画像パイプ４１０及びデータ管理部４２０が含まれる。画像パイプ４１０は、上述したパイプの機能を実現する。すなわち、或るフィルタからの出力データを次のフィルタに伝達する。データ管理部４２０は、各種のデータベースを表現する。例えば、ユーザ情報が登録されたデータベースや、文書又は画像データ等が蓄積されるデータベース等が相当する。
【００５０】
デバイス制御層５００は、デバイス（ハードウェア）を制御するドライバと呼ばれるプログラムモジュール群が実装されている部分であり、例えば、スキャナ制御部５１０、プロッタ制御部５２０、メモリ制御部５３０、電話回線制御部５４０、及びネットワーク制御部５５０が含まれる。各制御部は、当該制御部の名前に付けられているデバイスを制御する。
【００５１】
フィルタについて更に詳しく説明する。図５は、フィルタの構成要素を説明するための図である。図５に示されるように、各フィルタは、フィルタ設定用ＵＩ、フィルタロジック、フィルタ固有下位サービス及び永続記憶領域情報により構成される。
フィルタ設定用ＵＩは、フィルタの実行条件を設定させるための画面をオペレーションパネルに表示させるプログラムである。例えば、入力フィルタの一つである読取フィルタ３１１であれば、解像度、濃度、画像種別を設定する画面が相当する。なお、オペレーションパネルの表示がＨＴＭＬ（HyperText Markup Language）データや、スクリプトに基づいて行われ得ることに鑑みれば、フィルタ設定用ＵＩはＨＴＭＬデータやスクリプトであっても良い。
【００５２】
フィルタロジックは、フィルタの機能を実現するためのロジックが実装されたプログラムである。例えば、読取フィルタ３１１であれば、スキャナによる原稿読み取り制御のためのロジックが相当する。
フィルタ固有下位サービスは、フィルタロジックを実現するために必要な下位機能（ライブラリ）である。例えば、読取フィルタであれば、スキャナを制御するための機能が相当する。
永続記憶領域情報は、フィルタに対する設定情報（例えば、実行条件のデフォルト値）等、不揮発性メモリに保存する必要があるデータのスキーマ定義が相当する。当該スキーマ定義は、フィルタのインストール時にデータ管理部４２０に登録される。
【００５３】
そして、本実施の形態に係る機能提供部４２は、アプリケーションロジック層３００の各フィルタとする形態であっても良く、その場合には、各フィルタの追加、削除を容易に行うことができる。例えば、機能提供部４２は、読取フィルタ３１１であり、印刷フィルタ３３１とするものである。
【００５４】
（第１の処理例）
以上の構成を用いて、複合機１０の起動時の処理例について図６のシーケンス図に基づき説明する。例えば、電源がオンになると、起動処理部４１が起動して起動処理部４５に機能提供プログラム３７の識別情報などを登録する（Ｓ１１）。ついで、起動処理部４５は起動処理部４４に機能提供プログラム３７の識別情報等を登録する（Ｓ１２）。ついで、起動処理部４４は、プログラム管理部４３に機能提供プログラム３７の識別情報などを登録する（Ｓ１３）。そして、プログラム管理部４３は機能提供プログラム３７の識別情報などを登録する（Ｓ１４）。これにより、プログラム管理部４３は機能提供プログラム３７が起動したこと（これらから起動すること）を認識できる。
【００５５】
プログラム管理部４３は、起動処理部４４及び起動処理部４５を介して、起動処理部４１に機能提供部４２の起動を許可する（Ｓ１５、Ｓ１６、Ｓ１７）。これを受けて起動処理部４１は機能提供部４２の複製を格納部５０に生成すると共に、該複製した機能提供部４２を起動させる（Ｓ１８）。
【００５６】
ついで、起動処理部４１は機能提供部４２（の複製）が要求する要求サービス情報、すなわち機能提供部４２（の複製）が機能を提供するために必要なサービスの情報を、予めプログラム管理部４３に登録しておく。要求サービス情報は、例えば、拡張機能提供プログラム３８が提供するサービスのサービス名（サービス識別情報）である。また、機能提供部４２の複製と拡張機能提供部４８とが協働して処理を行うことができるように、起動処理部４１は、起動処理部４５、４６、４７を介して、機能提供部４２の複製が存在する場所へのパス情報を拡張機能提供部４８に通知する。
【００５７】
したがって、起動処理部４１は、起動処理部４５、起動処理部４４及びプログラム管理部４３に次々と要求サービス情報を登録する（Ｓ１９、Ｓ２０、Ｓ２１）。プログラム管理部４３は、ＲＡＭ２１に要求サービス情報を記憶させる。また、起動処理部４１は、起動処理部４５にパス情報を通知し（Ｓ１９）、起動処理部４５は、取得した該パス情報を起動処理部４６に通知し、起動処理部４６は該パス情報を保持する。
【００５８】
また、起動処理部４７が起動して起動処理部４６に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２５）。ついで、起動処理部４６は起動処理部４４に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２６）。ついで、起動処理部４４は、プログラム管理部４３に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２７）。そして、プログラム管理部４３は拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２８）。これにより、プログラム管理部４３は拡張機能提供プログラム３８が起動したこと（これらから起動すること）を認識できる。
【００５９】
プログラム管理部４３は、起動処理部４４及び起動処理部４６を介して、起動処理部４７に拡張機能提供部４８の起動を許可する（Ｓ２９、Ｓ３０、Ｓ３１）。また、起動処理部４６は、起動処理部４５から取得した上記パス情報を起動処理部４７に通知する（Ｓ３１）。これ受けて起動処理部４７は拡張機能提供部４８を起動させる共に、当該パス情報を拡張機能提供部４８に通知する（Ｓ３２）。これによって、拡張機能提供部４８は、機能提供部４２の複製にアクセスすることができるようになる。
【００６０】
続いて、起動処理部４７は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４６に登録する（Ｓ３３）。サービス情報は、例えば、拡張機能提供プログラム３８が提供するサービスのサービス名（サービス識別情報）である。
【００６１】
同様に、起動処理部４６は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４４に登録する（Ｓ３４）。また、起動処理部４４は、拡張機能提供プログラム３８が提供するサービスのサービス情報をプログラム管理部４３に登録する（Ｓ３５）。プログラム管理部４３は、ＲＡＭ２１にサービス情報を記憶させる。
【００６２】
これまでの処理で、プログラム管理部４３は、要求サービス情報とサービス情報を取得したので、両者を照合することで機能提供部４２の複製が要求していた拡張機能提供部４８が起動したことを機能提供部４２の複製に通知できる。この処理のため、プログラム管理部４３は、機能提供部４２（の複製）の識別情報と共に、拡張機能提供部４８の利用者が起動していることを示す利用者情報を、起動処理部４６に登録する（Ｓ３６）。そして、起動処理部４６は起動処理部４７に利用者情報を登録する（Ｓ３７）。
【００６３】
ついで、起動処理部４７は、拡張機能提供部４８の識別情報と共に、機能提供部４２の複製の被利用者（＝拡張機能提供部４８）が起動していることを含む被利用者情報を、起動処理部４６に登録する（Ｓ３８）。また、起動処理部４６は、直接、起動処理部４５に被利用者情報を登録する（Ｓ３９）。起動処理部４５は起動処理部４１に（Ｓ４０）、起動処理部４１は機能提供部４２の複製に（Ｓ４１）、それぞれ被利用者情報を登録する。
【００６４】
以上の処理により、機能提供部４２の複製及び拡張機能提供部４８は互いに起動していることを認識し、識別情報等を有することになるので、機能提供部４２の複製は拡張機能提供部４８に対し、直接（共通メカニズム４９を介することなく）、実行指示を出すことができる（Ｓ４２）。また、上記パス情報を有する拡張機能提供部４８は、自身の処理結果を機能提供部４２に提供することができる。
【００６５】
なお、実行指示を出すトリガを図６で示す処理例では機能利用とした。複合機１０の場合の機能利用は、例えば、入力装置２４によるユーザの操作、タイマ割り込み、ドア開などのハードウェア割り込みなどである。
【００６６】
（第２の処理例）
複合機１０の起動時の処理例について図７のシーケンス図に基づき説明する。第１の処理例においては、機能提供部４２の複製が存在する場所を示すパス情報は、プログラム管理部４３に通知しないとする形態であったが、第２の処理例では、該パス情報をプログラム管理部４３に通知し、プログラム管理部４３は、機能提供部４２と該機能提供部４２の複製に関するパス情報を対応付けて管理する形態とする。
【００６７】
例えば、電源がオンになると、起動処理部４１が起動して起動処理部４５に機能提供プログラム３７の識別情報などを登録する（Ｓ５１）。ついで、起動処理部４５は起動処理部４４に機能提供プログラム３７の識別情報等を登録する（Ｓ５２）。ついで、起動処理部４４は、プログラム管理部４３に機能提供プログラム３７の識別情報などを登録する（Ｓ５３）。そして、プログラム管理部４３は機能提供プログラム３７の識別情報などを登録する（Ｓ５４）。これにより、プログラム管理部４３は機能提供プログラム３７が起動したこと（これらから起動すること）を認識できる。
【００６８】
プログラム管理部４３は、起動処理部４４及び起動処理部４５を介して、起動処理部４１に機能提供部４２の起動を許可する（Ｓ５５、Ｓ５６、Ｓ５７）。これ受けて起動処理部４１は機能提供部４２の複製を格納部５０に生成すると共に、該複製した機能提供部４２を起動させる（Ｓ５８）。
【００６９】
ついで、起動処理部４１は機能提供部４２（の複製）が要求する要求サービス情報、すなわち機能提供部４２が機能を提供するために必要なサービスの情報を、予めプログラム管理部４３に登録しておく。要求サービス情報は、例えば、拡張機能提供プログラム３８が提供するサービスのサービス名（サービス識別情報）である。また、機能提供部４２の複製と拡張機能提供部４８とが協働して処理を行うことができるように、起動処理部４１は、機能提供部４２の複製が存在する場所へのパス情報を、予めプログラム管理部４３に該パス情報を登録しておき、該登録されたパス情報を拡張機能提供部４８に通知する。こうすることで、プログラム管理手段４３は、機能提供部４２と該機能提供部４２の複製が存在する場所のパス情報とを関連付けて管理することができ、これにより複数の機能提供部４２を追加することができるようになる。
【００７０】
このため、起動処理部４１は、起動処理部４５、起動処理部４４及びプログラム管理部４３に次々と要求サービス情報と上記パス情報とを登録する（Ｓ５９、Ｓ６０、Ｓ６１）。プログラム管理部４３は、ＲＡＭ２１に要求サービス情報と上記パス情報とを記憶させる。
【００７１】
また、起動処理部４７が起動して起動処理部４６に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ６５）。ついで、起動処理部４６は起動処理部４４に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ６６）。ついで、起動処理部４４は、プログラム管理部４３に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ６７）。そして、プログラム管理部４３は拡張機能提供プログラム３８の識別情報などを登録する（Ｓ６８）。これにより、プログラム管理部４３は拡張機能提供プログラム３８が起動したこと（これらから起動すること）を認識できる。
【００７２】
プログラム管理部４３は、起動処理部４４及び起動処理部４６を介して、起動処理部４７に拡張機能提供部４８の起動を許可し、また、プログラム管理部４３の有するパス情報（各機能提供部４２と該各機能提供部４２の複製が存在する場所のパス情報とを関連付けて保持するテーブル情報）を通知する（Ｓ６９、Ｓ７０、Ｓ７１）。これを受けて起動処理部４７は拡張機能提供部４８を起動させる共に、上記パス情報を拡張機能提供部４８に通知する（Ｓ７２）。これによって、拡張機能提供部４８は、機能提供部４２の複製にアクセスすることができるようになる。また、プログラム管理部４３がパス情報の一覧を保持し、該パス情報の一覧を拡張機能提供部４８に提供することで、複数の機能提供部４２を複合機１０に追加することができる。
【００７３】
続いて、起動処理部４７は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４６に登録する（Ｓ７３）。サービス情報は、例えば、拡張機能提供プログラム３８が提供するサービスのサービス名（サービス識別情報）である。
【００７４】
同様に、起動処理部４６は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４４に登録する（Ｓ７４）。また、起動処理部４４は、拡張機能提供プログラム３８が提供するサービスのサービス情報をプログラム管理部４３に登録する（Ｓ７５）。プログラム管理部４３は、ＲＡＭ２１にサービス情報を記憶させる。
【００７５】
これまでの処理で、プログラム管理部４３は、要求サービス情報とサービス情報を取得したので、両者を照合することで機能提供部４２の複製が要求していた拡張機能提供部４８が起動したことを機能提供部４２の複製に通知できる。この処理のため、プログラム管理部４３は、機能提供部４２（の複製）の識別情報と共に拡張機能提供部４８の利用者が起動していることを示す利用者情報を、起動処理部４６に登録する（Ｓ７６）。そして、起動処理部４６は起動処理部４７に利用者情報を登録する（Ｓ７７）。
【００７６】
ついで、起動処理部４７は、拡張機能提供部４８の識別情報と共に機能提供部４２の複製の被利用者（＝拡張機能提供部４８）が起動していることを含む被利用者情報を、起動処理部４６に登録する（Ｓ７８）。また、起動処理部４６は、直接、起動処理部４５に被利用者情報を登録する（Ｓ７９）。起動処理部４５は起動処理部４１に（Ｓ８０）、起動処理部４１は機能提供部４２の複製に（Ｓ８１）、それぞれ被利用者情報を登録する。
【００７７】
以上の処理により、機能提供部４２の複製と拡張機能提供部４８は互いに起動していることを認識し、識別情報等を有することになるので、機能提供部４２の複製は拡張機能提供部４８に対し、直接（共通メカニズム４９を介することなく）、実行指示を出すことができる（Ｓ８２）。また、上記パス情報を有する拡張機能提供部４８は、自身の処理結果を機能提供部４２に提供することができる。
【００７８】
なお、実行指示を出すトリガを図７で示す処理例では機能利用とした。複合機１０の場合の機能利用は、例えば、入力装置２４によるユーザの操作、タイマ割り込み、ドア開などのハードウェア割り込みなどである。
【００７９】
（総括）
本発明では、新たなソフトウェアアーキテクチャを有する情報処理装置において、従来の情報処理装置におけるソフトウェアを再利用することで、新たなソフトウェア開発を行う手間を省き、従来装置の有する優れた処理速度を承継することができる情報処理装置、該情報処理装置の情報処理方法、該情報処理方法をコンピュータに実行させるための情報処理プログラム、該情報処理プログラムを記録した記録媒体を提供することができる。
以上、本発明の実施の形態について詳述したが、本発明は係る特定の実施の形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲において、種々の変形・変更が可能である。
【図面の簡単な説明】
【００８０】
【図１】本実施の形態に係る複合機のハードウェア構成の一例を示す図である。
【図２】本実施の形態に係る複合機の機能ブロック図の一例を示す図である。
【図３】本実施の形態に係る複合機のソフトウェア構成例を説明するための図である。
【図４】本実施の形態に係るパイプ＆フィルタの概念を説明するための図である。
【図５】本実施の形態に係るフィルタの構成要素を説明するための図である。
【図６】本実施の形態に係る複合機による起動処理の一例を示すシーケンス図である。
【図７】本実施の形態に係る複合機による起動処理の一例を示すシーケンス図である。
【符号の説明】
【００８１】
３７  機能提供プログラム
３８  拡張機能提供プログラム
４１  起動処理部（機能提供）
４２  機能提供部
４３  プログラム管理部
４４  起動処理部（共通）
４５  起動処理部（機能提供：共通）
４６  起動処理部（拡張機能：共通）
４７  起動処理部（拡張機能提供）
４８  拡張機能提供部
４９  共通メカニズム
５０  格納部
【図１】
2009294773.tif 000003
【図２】
2009294773.tif 000004
【図３】
2009294773.tif 000005
【図４】
2009294773.tif 000006
【図５】
2009294773.tif 000007
【図６】
2009294773.tif 000008
【図７】
2009294773.tif 000009