(57)【要約】【課題】プログラムの修正等が動的に可能な情報処理装置等であって、低コストに高速処理を実現でき、プログラムの起動に制約を生じさせない情報処理装置、機能提供方法及びプログラムを提供すること。【解決手段】サービス提供部３８のサービスを利用して機能提供部３７が機能を提供する情報処理装置１０において、機能提供部３７の起動時に該機能提供部３７が利用するサービス提供部３８の第１のサービス識別情報と、サービス提供部の起動時にサービス提供部３８の第２のサービス識別情報とを記憶する管理部４３を有し、管理部４３は、第１のサービス識別情報に一致する第２のサービス識別情報のサービス提供部３８に、機能提供部３７を識別するための利用者情報を通知する、ことを特徴とする。【選択図】図２
2008310769.tif 000002
【特許請求の範囲】
【請求項１】
サービス提供部のサービスを利用して機能提供部が機能を提供する情報処理装置において、
前記機能提供部の起動時に該機能提供部が利用する前記サービス提供部の第１のサービス識別情報と、前記サービス提供部の起動時に前記サービス提供部の第２のサービス識別情報とを記憶する管理部を有し、
前記管理部は、前記第１のサービス識別情報に一致する前記第２のサービス識別情報の前記サービス提供部に、前記機能提供部を識別する利用者情報を通知する、
ことを特徴とする情報処理装置。
【請求項２】
前記サービス提供部は、通知された前記利用者情報の前記機能提供部に、当該サービス提供部を識別する被利用者情報を通知する、
ことを特徴とする情報処理装置。
【請求項３】
前記機能提供部と前記サービス提供部の起動に共通の処理を実行し、前記管理部と通信する第１起動処理部と、
複数の前記機能提供部の起動に共通の処理を実行し、前記第１起動処理部と通信する第２起動処理部と、
複数の前記サービス提供部の起動に共通の処理を実行し、前記第１起動処理部と通信する第３起動処理部と、を有し、
前記第２起動処理部と第３起動処理部が直接通信する、
ことを特徴とする請求項１又は２記載の情報処理装置。
【請求項４】
前記第３起動処理部は、前記管理部から通知される前記機能提供部の前記利用者情報を前記サービス提供部に通知し、
前記サービス提供部から通知された当該サービス提供部の前記被利用者情報を、直接、前記第２起動処理部に通知し、
前記第２起動処理部は、前記被利用者情報を前記機能提供部に通知する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項５】
前記機能提供部は、前記管理部を介さずに、前記被利用者情報を前記サービス提供部から取得する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項６】
前記管理部は、前記第１のサービス識別情報に一致する前記サービス提供部の前記第２のサービス識別情報が記憶されるまで、
前記機能提供部の前記利用者情報を前記サービス提供部へ通知することを保留する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項７】
前記機能提供部を停止する場合、
前記管理部は、当該機能提供部が利用する前記サービス提供部を、当該機能提供部よりも先に停止させる、
ことを特徴とする請求項１記載の情報処理装置。
【請求項８】
前記管理部は、前記サービス提供部のみを、
当該サービス提供部を利用している前記機能提供部が起動しているか否かに関わらず、停止させる、
ことを特徴とする請求項１記載の情報処理装置。
【請求項９】
複数の前記機能提供部が同一の前記サービス提供部を利用する場合、
前記管理部は、複数の前記機能提供部が利用する同一の前記サービス提供部に、複数の前記機能提供部の前記利用者情報をそれぞれ通知する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項１０】
一つの前記機能提供部が複数の前記サービス提供部を利用する場合、
前記管理部は、前記機能提供部が利用する複数の前記サービス提供部に、当該機能提供部の前記利用者情報をそれぞれ通知する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項１１】
複数の前記機能提供部と、複数の前記サービス提供部が起動した場合、
前記管理部は、複数の前記機能提供部から記憶された前記第１のサービス識別情報毎に、
前記第１のサービス識別情報に一致する前記第２のサービス識別情報の前記サービス提供部に、当該機能提供部の前記利用者情報を通知する、
ことを特徴とする請求項１記載の情報処理装置。
【請求項１２】
前記サービス提供部を利用せずに機能を提供する独立実行部を有し、
前記独立実行部は、前記第１起動処理部と直接通信し、
前記独立実行部の起動時、前記第１起動処理部は、当該独立実行部の識別情報を前記管理部に登録する、
ことを特徴とする請求項３記載の情報処理装置。
【請求項１３】
サービス提供部のサービスを利用して機能提供部が機能を提供する情報処理装置の機能提供方法において、
管理部が、
前記機能提供部の起動時に該機能提供部が利用する前記サービス提供部の第１のサービス識別情報を記憶するステップと、
前記サービス提供部の起動時に前記サービス提供部の第２のサービス識別情報を記憶するステップと、
前記第１のサービス識別情報に一致する前記第２のサービス識別情報の前記サービス提供部に、前記機能提供部を識別する利用者情報を通知するステップと、を有する
ことを特徴とする情報処理装置の機能提供方法。
【請求項１４】
コンピュータに、サービスを提供するサービス提供部と、前記サービスを利用して機能を提供する機能提供部と、を実現させるプログラムであって、
前記機能提供部の起動時に該機能提供部が利用する前記サービス提供部の第１のサービス識別情報を記憶するステップと、
前記サービス提供部の起動時に前記サービス提供部の第２のサービス識別情報を記憶するステップと、
前記第１のサービス識別情報に一致する前記第２のサービス識別情報の前記サービス提供部に、前記機能提供部を識別する利用者情報を通知するステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラムを実行する情報処理装置等に関し、特に、複数のプログラムが連携して機能を提供する情報処理装置、機能提供方法及びプログラムに関する。
【背景技術】
【０００２】
インストールした後のソフトウェアの機能部品（以下、単にプログラムという）を修正、追加、更新することで、ソフトウェアを実行する様々な機器の機能を容易に変更することを可能とする技術、例えばＯＳＧｉ（Open Service Gateway initiative）フレームワークが知られている（例えば、非特許文献１参照）。このような技術では、互いにどのようなプログラムが起動状態かをプログラムが知る必要があるため、複数のプログラムを連携させるプログラム管理部が用意されている（例えば、特許文献１参照）。
【０００３】
図１１は、機器上で実行されるソフトウェアの従来のブロック図を示す。プログラム管理部１００は、起動したプログラムが提供するサービスの内容を管理する。図１１では機能提供プログラム１０３と拡張機能提供プログラム１０４が機能部品としてのプログラム（を実行して実現される機能）に相当し、プログラム管理部１００はこれらのプログラムの起動の有無や、機能を要求しているプログラム、要求されているプログラムなどを管理する。
【０００４】
サービスの利用要求が発生した場合、プログラム管理部１００はサービスの要求元プログラムに対しサービスの提供元プログラムを通知する事でプログラム間の連携動作を可能とする。
【０００５】
各プログラムはプログラム管理部に、起動することを通知したり、起動の許可を得たりする、所定のルールに従い起動処理する起動処理部１０１Ａ、１０１Ｂを有する。起動処理部１０１Ａ、１０１Ｂは各プログラムの機能などに応じた固有の起動処理を行うが、さらに固有でない起動処理を取り出し、共通化した起動処理部１０１Ｃをプログラム管理部１００と接続するように設けている。
【０００６】
これにより、プログラム管理部１００の汎用的な管理処理を可能とし、各プログラムが保持する起動処理部１０１Ａ、１０１Ｂが、あらかじめ定められた共通ルールに従い起動することができる。なお、機能提供部１０２Ａは機能提供プログラム１０３本来の機能を提供する部分であり、拡張機能提供部１０２Ｂは拡張機能提供プログラム１０４本来の機能を提供する部分である。
【０００７】
図１２は、従来の起動処理のシーケンス図を示す。ここでは機能提供プログラム１０３が先に起動する場合を説明するが先に拡張機能提供部１０２Ｂが先に起動してもよい。例えば、機器の電源オンにより各プログラムは起動する。
【０００８】
まず、電源オンにより起動処理部１０１Ａは、自らが起動したこと登録するため、起動処理部１０１Ｃを介してプログラム管理部１００に要求する（Ｓ１０１，Ｓ１０２）。この要求を受けてプログラム管理部１００は起動処理部１０１Ａが起動したことを登録する（Ｓ１０３）。登録するとプログラム管理部１００は、起動処理部１０１Ｃを介して起動処理部１０１Ａに機能提供部１０２Ａの起動を許可する（Ｓ１０４、Ｓ１０５）。起動処理部１０１Ａは機能提供部１０２Ａを起動する（Ｓ１０６）。
【０００９】
機能提供部１０２Ａが起動すると、起動処理部１０１Ａは起動処理部１０１Ｃを介してサービス登録をプログラム管理部１００に要求する（Ｓ１０７，Ｓ１０８）。このサービス登録は、機能提供プログラム１０３が提供するサービス名である。
【００１０】
ついで、拡張機能提供プログラム１０４の起動処理が始まり、起動処理部１０１Ｂは自らが起動したこと登録するため、起動処理部１０１Ｃを介してプログラム管理部１００に登録を要求する（Ｓ１０９，Ｓ１１０）。この要求を受けてプログラム管理部１００は起動処理部１０１Ｂが起動したことを登録する（Ｓ１１１）。登録するとプログラム管理部１００は、起動処理部１０１Ｃを介して起動処理部１０１Ｂに拡張機能提供部１０２Ｂの起動を許可する（Ｓ１１２、Ｓ１１３）。起動処理部１０１Ｂは拡張機能提供部１０２Ｂを起動する（Ｓ１１４）。
【００１１】
拡張機能提供部１０２Ｂが起動すると、起動処理部１０１Ｂは起動処理部１０１Ｃを介してサービス登録をプログラム管理部１００に要求する（Ｓ１１５，Ｓ１１６）。このサービス登録は、拡張機能提供プログラム１０４が提供するサービス名である。
【００１２】
そして、外部から機能提供部１０２Ａに機能の利用が要求されると（Ｓ１１９）、機能提供部１０２Ａは要求のあった機能をプログラム管理部１００に問い合わせ（Ｓ１２０）、プログラム管理部１００は該機能を提供する拡張機能提供部１０２Ｂに機能の提供先を通知する（Ｓ１２１）。
【００１３】
すなわち、各プログラム（機能提供プログラム、拡張機能提供プログラム）が保有する起動処理部１０１Ａ、１０１Ｂが、起動時にプログラム管理部１００に対してサービス登録を行なう事で、自身がどのようなサービス（機能）を提供するプログラムなのかを宣言しておく。これにより、機能提供部１０２Ａはプログラム管理部１００を経由して拡張機能提供部１０２Ｂを検出し機能の提供を要求することができる。
【特許文献１】特開２００５−１９６６３０２号公報
【非特許文献１】インターネットhttp://www.osgi-ufj.org/
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかしながら、図１１に示したように従来の起動処理では、機能提供部１０２Ａはサービスを利用する度にプログラム管理部１００に問い合わせを行なう必要があるため、その通信により全体の処理効率が低下するという問題がある。
【００１５】
また、プログラムの登録状況が把握できないため、必ず利用されるプログラム（拡張機能提供部１０２Ｂ）から先に起動しておく必要が生じ、全ての拡張機能提供部１０２Ｂが起動完了するまで機能提供部１０２Ａが起動できないことになってしまう。特に、高速な起動が求められる組み込み機器では、起動の順番に制約が発生する事は大きな問題であり、標準規格によっては起動時間の制約を受けることもあるため、規格の承認を受けられないという問題も発生する。
【００１６】
また、機能をユーザ（企業又は個人）毎にカスタマイズ可能として利用者の利便性を向上するには、プログラムを動的に追加・削除できることが好ましいが、拡張機能提供部１０２Ｂの追加・削除は可能であったとしても、それを機能提供部１０２Ａが瞬時に把握するにはプログラム管理部１００との頻繁な通信が必要となってしまう。すなわち、瞬時に把握するためには、機能提供部１０２Ａが定期的にプログラム管理部１００に対して問い合わせを行なう必要があるが、通信頻度が増える事にともないシステムパフォーマンスが低下し、結果として、機器の実行速度が低下する事になるため、低コストで高速処理が求められる組み込み機器では実用的でなくなってしまう。
【００１７】
本発明は、上記課題に鑑み、プログラムの修正等が動的に可能な情報処理装置等であって、低コストに高速処理を実現でき、プログラムの起動に制約を生じさせない情報処理装置、機能提供方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記課題に鑑み、本発明は、サービス提供部（例えば、拡張機能提供プログラム３８）のサービスを利用して機能提供部（例えば、機能提供部プログラム３７）が機能を提供する情報処理装置１０において、機能提供部の起動時に該機能提供部が利用するサービス提供部の第１のサービス識別情報（例えば、要求サービス情報）と、サービス提供部の起動時にサービス提供部の第２のサービス識別情報（例えば、サービス情報）とを記憶する管理部（例えば、プログラム管理部４３）を有し、管理部は、第１のサービス識別情報に一致する第２のサービス識別情報のサービス提供部に、機能提供部を識別するための利用者情報を通知する、ことを特徴とする。
【００１９】
本発明によれば、起動時にサービス提供部が機能提供部の利用者情報を取得できるので、以降は管理部を介さずに機能提供部とサービス提供部とが直接通信することができる。  また、本発明の一形態において、サービス提供部は、通知された利用者情報の機能提供部に、当該サービス提供部を識別するための被利用者情報を通知する、ことを特徴とする。
【００２０】
本発明によれば、機能提供部はサービス提供部の起動を把握できるので、起動の順番に制約が生じることがない。
【００２１】
また、本発明の一形態において、機能提供部とサービス提供部の起動に共通の処理を実行し、管理部と通信する第１起動処理部（例えば、起動処理部４４）と、複数の機能提供部の起動に共通の処理を実行し、第１処理部と通信する第２起動処理部（例えば、起動処理部４５）と、複数のサービス提供部の起動に共通の処理を実行し、第１起動処理部と通信する第３起動処理部（例えば、起動処理部４６）と、を有し、第２起動処理部と第３起動処理部が直接通信する、ことを特徴とする。
【００２２】
本発明によれば、複数の機能提供部、複数のサービス提供部から共通に利用できる共通メカニズムを用意することで、プログラムの開発効率を向上するとともに、メモリ容量の消費を少なくすることができる。また、機能提供部とサービス提供部が、管理部と直接通信しないため、機能提供部とサービス提供部から管理部を隠蔽することができ、機能提供部とサービス提供部の開発効率を向上できる（管理部を利用するための実装を行なわなくてすむ。）。
【００２３】
また、本発明の一形態において、第３起動処理部は、管理部から通知される機能提供部の利用者情報をサービス提供部に通知し、サービス提供部から通知された当該サービス提供部の被利用者情報を、直接、第２起動処理部に通知し、第２起動処理部は、被利用者情報を機能提供部に通知する、ことを特徴とする。
【００２４】
本発明によれば、機能提供部とサービス提供部が、第３起動処理部と第２起動処理部を介して、間接的に通信することができる。
【００２５】
また、本発明の一形態において、機能提供部は、管理部を介さずに、被利用者情報をサービス提供部から取得する、ことを特徴とする。
【００２６】
本発明によれば、管理部を介する事なく機能提供部とサービス提供部を連携させることで処理速度を向上できる。
【００２７】
また、本発明の一形態において、管理部は、第１のサービス識別情報に一致するサービス提供部の第２のサービス識別情報が記憶されるまで、機能提供部の利用者情報をサービス提供部へ通知することを保留する、ことを特徴とする。
【００２８】
本発明によれば、機能提供部とサービス提供部の実行タイミング（起動タイミング）に関わらず、互いを結びつける事ができる。このため、システムに最適なプログラミングタイミングを設計しやすくすることができる（多くの場合は、機能提供部は機器利用者からの操作を可能とするためのユーザインターフェースを備えている。機器利用者が直接目に触れるプログラムを優先的に起動することで、機器の立ち上がり時間を早くし、利用者がストレスを感じる事なく、機器を利用することができる。）。また、プログラムを拡張する場合、新しい仕様に対応したプログラムを機器に追加した場合でも、機器を再起動する必要がなくなるため、利便性が向上する。
【００２９】
また、本発明の一形態において、機能提供部を停止する場合、管理部は、当該機能提供部が利用するサービス提供部を、当該機能提供部よりも先に停止させる、ことを特徴とする。
【００３０】
本発明によれば、機能提供部を停止する際に、それが利用しているサービス提供部を一緒に停止する事ができるため、システムリソース（メモリ、CPUパワー）を節約することができる。また、サービス提供部が自動的（連鎖的に）に停止するため、停止処理を記述する必要がなくプログラムの開発工数を減らすことができる。
【００３１】
また、本発明の一形態において、管理部は、サービス提供部のみを、当該サービス提供部を利用している機能提供部が起動しているか否かに関わらず、停止させる、ことを特徴とする。
【００３２】
本発明によれば、状況に応じてサービス提供部のみを動的に停止させることができるので、利用者にとって利便性が向上する。
【００３３】
また、本発明の一形態において、複数の機能提供部が同一のサービス提供部を利用する場合、管理部は、複数の機能提供部が利用する同一のサービス提供部に、複数の機能提供部の利用者情報をそれぞれ通知する、ことを特徴とする。
【００３４】
本発明によれば、一つのサービス提供部を複数用途に使う事ができるので、再利用性が高くなりプログラム開発コストを下げる事ができる
また、本発明の一形態において、一つの機能提供部が複数のサービス提供部を利用する場合、管理部は、機能提供部が利用する複数のサービス提供部に、当該機能提供部の利用者情報をそれぞれ通知する、ことを特徴とする。
【００３５】
本発明によれば、一つの機能提供部が多様な拡張機能を利用することができるので、柔軟なカスタマイズが可能となる。
【００３６】
また、本発明の一形態において、複数の機能提供部と、複数のサービス提供部が起動した場合、管理部は、複数の機能提供部から記憶された第１のサービス識別情報毎に、第１のサービス識別情報に一致する第２のサービス識別情報のサービス提供部に、当該機能提供部の利用者情報を通知する、ことを特徴とする。
【００３７】
本発明によれば、機能提供部とサービス提供部の組み合わせを多数提供できるので、機器の拡張性を格段に向上させることができ、利用者にとっても嗜好にあった機能を機器に選択して取り込む事ができるので、利便性が向上する。
【００３８】
また、本発明の一形態において、サービス提供部を利用せずに機能を提供する独立実行部を有し、独立実行部は、第１起動処理部と直接通信し、独立実行部の起動時、第１起動処理部は、当該独立実行部の識別情報を管理部に登録する、ことを特徴とする。
【００３９】
本発明によれば、サービス提供部を利用しない独立実行部については、最小限の手続でプログラムを動作させる事ができ、実行速度の向上が期待できる。
【発明の効果】
【００４０】
プログラムの修正等が動的に可能な情報処理装置等であって、低コストに高速処理を実現でき、プログラムの起動に制約を生じさせない情報処理装置、機能提供方法及びプログラムを提供することができる。
【発明を実施するための最良の形態】
【００４１】
以下、本発明を実施するための最良の形態にてついて、図面を参照しながら説明する。
【実施例１】
【００４２】
本実施形態のＭＦＰ（Multi Function Printer）１０は、プログラム管理部４３が、機能提供プログラム３７の利用者情報を拡張機能提供部４８に登録し、被利用者情報を機能提供部４２に登録することで、機能提供部４２がサービスを利用する時にプログラム管理部４３に問い合わせる必要をなくすことができ、また、起動の順番に生じた制約をなくすことができる。
【００４３】
まず、ＭＦＰ１０のハードウェア構成について図１に基づき説明する。ＭＦＰ１０は、スキャナ、プリンタ、ファクシミリ、電子メール送受信等、それぞれ固有のデバイスを備えた機器であるが、プログラム３０を実行する情報処理部は計算機としての情報処理装置と同様である。
【００４４】
ＭＦＰ１０は、それぞれバスで相互に接続されているＲＡＭ２１、ＲＯＭ２２、ドライブ装置２３、入力装置２４、ＮＩＣ（Network Interface Card）２５、表示制御装置２６、記憶装置２７及びＣＰＵ２８を有するように構成される。
【００４５】
ＲＡＭ２１はＯＳ（Operating Software）や各種のプログラム３０、データを一時保管する作業メモリになり、ＲＯＭ２２はＢＩＯＳなどＯＳを起動するためのプログラムや設定ファイルを記憶している。ドライブ装置２３は、記憶媒体２９が着脱可能に構成されており、記憶媒体２９にプログラム３０やデータを書き込む際に使用され、また、記憶媒体２９に記録されたプログラム３０やデータを読み込む際に使用される。
【００４６】
入力装置２４はキーボードやマウスなどのポインティングデバイス、タッチパネルなど、ユーザからの様々な操作指示を入力するためのデバイスである。ＮＩＣ２５は、インターネットやＬＡＮなどのネットワークに接続するためのインターフェイスである。表示制御装置２６は、プログラム３０が指示する操作画面、動作状況、エラーメッセージなどを液晶などの表示部、タッチパネル等に表示する。
【００４７】
記憶装置２７は、ＨＤＤ（ハードディスクドライブ）やフラッシュメモリなど不揮発性メモリであり、ＯＳ、プログラム３０、ドライバ等のファイルが記憶されている。
【００４８】
ＣＰＵ２８は、ＯＳやプログラム３０などを記憶装置２７からロードして実行することで種々の機能を提供すると共に、情報処理装置１０が行う処理を統括的に制御する。
【００４９】
プログラム３０は、予め記憶装置２７にインストールされた状態で情報処理装置１０と共に出荷されてもよいし、ネットワークからダウンロードされて記憶装置２７にインストールされてもよい。また、本実施形態では、各プログラム３０を動的に修正、追加、更新することができ、後から追加したプログラム３０を相互に利用できるようになっている。
【００５０】
図２は、ＭＦＰ１０のブロック図を示す。各部はいずれもＣＰＵ２８がプログラム３０を実行することで実現される。本実施形態では、プログラム３０の一部を機能に応じて、機能提供プログラム３７、拡張機能提供プログラム３８及びその他の独立プログラム３９とに区別する。
【００５１】
機能提供プログラム３７は、ＭＦＰ１０では例えばコピー、スキャン、ファクシミリ、電子メール送受信、など上位（ユーザ側）の機能を実現するプログラム３０をいい、拡張機能提供プログラム３８は、機能提供プログラム３７が上位の機能を提供するために必要な拡張機能（以下、サービスという）を提供する、例えば画像フォーマットの変換や通信プロトコルの変換を実行するプログラム３０である。なお、機能提供プログラム３７及び拡張機能提供プログラム３８はいずれも複数用意されていることが多い。
【００５２】
機能提供プログラム３７は起動処理プログラム３１Ａを備え、ＣＰＵ２８が機能提供プログラム３７を実行することで、機能提供部４２及び起動処理部（機能提供）４１（以下、単に起動処理部４１という）が実現される。拡張機能提供プログラム３８は起動処理プログラム３１Ｂを備え、ＣＰＵ２８が拡張機能提供プログラム３８を実行することで、拡張機能提供部４８及び起動処理部（拡張機能提供）４７（以下、単に起動処理部４７という）が実現される。
【００５３】
また、ＣＰＵ２８がプログラム管理プログラム３３を実行することでプログラム管理部４３が、起動処理プログラム３４を実行することで起動処理部（共通）４４（以下、単に起動処理部４４という）が、それぞれ実現される。プログラム管理部４３、起動処理部４１、４４、４７、機能提供部４２、及び、拡張機能提供部４８は従来と変更なく利用できる。
【００５４】
そして、本実施形態では、さらに２つの起動処理部（機能提供：共通）４５（以下、単に起動処理部４５という）及び起動処理部（拡張機能提供：共通）４６（以下、単に起動処理部４６という）を有する点に特徴がある。起動処理部４５は、ＣＰＵ２８が起動処理プログラム３５を実行することで実現され、起動処理部４６はＣＰＵ２８が起動処理プログラム３６を実行することで実現される。
【００５５】
起動処理部４５は、起動処理部４４の処理うち複数の機能提供部４２が共通に利用するメカニズムであり、起動処理部４６は、起動処理部４４の処理うち複数の拡張機能提供部４８が共通に利用するメカニズムである。
【００５６】
起動処理部４５及び４６は、
（ａ）プログラム管理部４３と通信を行うメカニズム
（ｂ）機能提供部４２と拡張機能提供部４８とを接続するメカニズム
をそれぞれ有する。
【００５７】
起動処理部４４、４５、４６及びプログラム管理部４３は、複数の機能提供部４２と拡張機能提供部４８に共通に利用される共通メカニズム４９である。起動処理部４５と起動処理部４６が互いに接続されかつプログラム管理部４３との通信を受け持つので、プログラム管理部４３を介さずに、機能提供部４２と拡張機能提供部４８との間で通信することができるようになる。したがって、通信コストを下げることができると共に、処理の高速化が可能となる。
【００５８】
なお、起動処理部４５、４６は起動処理部４４の一部の機能に新たな機能を付加したものであるので、このようなプログラム開発は承継と呼ばれるプログラミング手法を用いることで比較的容易に可能となる。
【００５９】
〔基本シーケンス：機能提供部４２を先に登録〕
以上の構成を用いて、ＭＦＰ１０の起動処理について図３のシーケンス図に基づき説明する。例えば、電源がオンになると、起動処理部４１が起動して起動処理部４５に機能提供プログラム３７の識別情報などを登録する（Ｓ１１）。ついで、起動処理部４５は起動処理部４４に機能提供プログラム３７の識別情報などを登録する（Ｓ１２）。ついで、起動処理部４４は、プログラム管理部４３に機能提供プログラム３７の識別情報などを登録する（Ｓ１３）。そして、プログラム管理部４３は機能提供プログラム３７の識別情報などを登録する（Ｓ１４）。これにより、プログラム管理部４３は機能提供プログラム３７が起動したこと（これらから起動すること）を認識できる。
【００６０】
プログラム管理部４３は、起動処理部４４及び起動処理部４５を介して、起動処理部４１に機能提供部４２の起動を許可する（Ｓ１５、Ｓ１６、Ｓ１７）。これ受けて起動処理部４１は機能提供部４２を起動させる（Ｓ１８）。
【００６１】
ついで、起動処理部４１は機能提供部４２が要求する要求サービス情報、すなわち機能提供部４２が機能を提供するために必要なサービスの情報を、予めプログラム管理部４３に登録しておく。要求サービス情報は、例えば、拡張機能提供プログラム３８が提供するサービスのサービス名（サービス識別情報）である。
【００６２】
このため、起動処理部４１は、起動処理部４５、起動処理部４４及びプログラム管理部４３に次々と要求サービス情報を登録する（Ｓ１９、Ｓ２０、Ｓ２１）。プログラム管理部４３は、ＲＡＭ２１に要求サービス情報を記憶させる。
【００６３】
また、起動処理部４７が起動して起動処理部４６に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２５）。ついで、起動処理部４６は起動処理部４４に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２６）。ついで、起動処理部４４は、プログラム管理部４３に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２７）。そして、プログラム管理部４３は拡張機能提供プログラム３８の識別情報などを登録する（Ｓ２８）。これにより、プログラム管理部４３は拡張機能提供プログラム３８が起動したこと（これらから起動すること）を認識できる。
【００６４】
プログラム管理部４３は、起動処理部４４及び起動処理部４６を介して、起動処理部４７に拡張機能提供部４８の起動を許可する（Ｓ２９、Ｓ３０、Ｓ３１）。これ受けて起動処理部４７は拡張機能提供部４８を起動させる（Ｓ３２）。
【００６５】
続いて、起動処理部４７は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４６に登録する（Ｓ３３）。サービス情報は、例えば、拡張機能提供プログラム３８が提供するサービスのサービス名（サービス識別情報）である。
【００６６】
同様に、起動処理部４６は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４４に登録する（Ｓ３４）。また、起動処理部４４は、拡張機能提供プログラム３８が提供するサービスのサービス情報をプログラム管理部４３に登録する（Ｓ３５）。プログラム管理部４３は、ＲＡＭ２１にサービス情報を記憶させる。
【００６７】
これまでの処理で、プログラム管理部４３は、要求サービス情報とサービス情報を取得したので、両者を照合することで機能提供部４２が要求していた拡張機能提供部４８が起動したことを機能提供部４２に通知できる。この処理のため、プログラム管理部４３は、機能提供部４２の識別情報と共に拡張機能提供部４８の利用者が起動していることを示す利用者情報を、起動処理部４６に登録する（Ｓ３６）。そして、起動処理部４６は起動処理部４７に利用者情報を登録する（Ｓ３７）。
【００６８】
ついで、起動処理部４７は、拡張機能提供部４８の識別情報と共に機能提供部４２の被利用者（＝拡張機能提供部４８）が起動していることを含む被利用者情報を、起動処理部４６に登録する（Ｓ３８）。また、起動処理部４６は、直接、起動処理部４５に被利用者情報を登録する（Ｓ３９）。起動処理部４５は起動処理部４１に（Ｓ４０）、起動処理部４１は機能提供部４２に（Ｓ４１）、それぞれ被利用者情報を登録する。
【００６９】
以上の処理により、機能提供部４２と拡張機能提供部４８は互いに起動していることを認識し、識別情報等を有することになるので、機能提供部４２は拡張機能提供部４８に対し、直接（共通メカニズム４９を介することなく）、実行指示を出すことができる（Ｓ４２）。
【００７０】
なお、実行指示を出すトリガを図では機能利用とした。ＭＦＰ１０の場合の機能利用は、例えば、入力装置２４によるユーザの操作、タイマ割り込み、ドア開などのハードウェア割り込みなどである。
【００７１】
〔基本シーケンス：機能提供部４２を後に登録〕
機能提供部４２を拡張機能提供部４８の後から登録してもよい。図４は、ＭＦＰ１０の起動処理のシーケンス図を示す。図４では、拡張機能提供部４８を先に起動するが、拡張機能提供部４８の登録の手順は図３と同様である。
【００７２】
まず、起動処理部４７が起動して起動処理部４６に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ５１）。ついで、起動処理部４６は起動処理部４４に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ５２）。ついで、起動処理部４４は、プログラム管理部４３に拡張機能提供プログラム３８の識別情報などを登録する（Ｓ５３）。そして、プログラム管理部４３は拡張機能提供プログラム３８の識別情報などを登録する（Ｓ５４）。これにより、プログラム管理部４３は拡張機能提供プログラム３８が起動したこと（これらから起動すること）を認識できる。
【００７３】
プログラム管理部４３は、起動処理部４４及び起動処理部４６を介して、起動処理部４７に拡張機能提供部４８の起動を許可する（Ｓ５５、Ｓ５６、Ｓ５７）。これ受けて起動処理部４７は拡張機能提供部４８を起動させる（Ｓ５８）。
【００７４】
続いて、起動処理部４７は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４６に登録する（Ｓ５９）。同様に、起動処理部４６は、拡張機能提供プログラム３８が提供するサービスのサービス情報を起動処理部４４に登録する（Ｓ６０）。また、起動処理部４４は、拡張機能提供プログラム３８が提供するサービスのサービス情報をプログラム管理部４３に登録する（Ｓ６１）。プログラム管理部４３は、ＲＡＭ２１にサービス情報を記憶させる。
【００７５】
拡張機能提供部４８がプログラム管理部４３に登録された時点では、機能提供部４２（利用者）が起動していないため、プログラム管理部４３は利用者情報及び被利用者情報の登録を保留する。
【００７６】
ついで、起動処理部４１が起動して起動処理部４５に機能提供プログラム３７の識別情報などを登録する（Ｓ６５）。ついで、起動処理部４５は起動処理部４４に機能提供プログラム３７の識別情報などを登録する（Ｓ６６）。ついで、起動処理部４４は、プログラム管理部４３に機能提供プログラム３７の識別情報などを登録する（Ｓ６７）。そして、プログラム管理部４３は機能提供プログラム３７の識別情報などを登録する（Ｓ６８）。これにより、プログラム管理部４３は機能提供プログラム３７が起動したこと（これらから起動すること）を認識できる。
【００７７】
プログラム管理部４３は、起動処理部４４及び起動処理部４５を介して、起動処理部４１に機能提供部４２の起動を許可する（Ｓ６９、Ｓ７０、Ｓ７１）。これ受けて起動処理部４１は機能提供部４２を起動させる（Ｓ７２）。
【００７８】
ついで、起動処理部４１は要求サービス情報をプログラム管理部４３に登録する。このため、起動処理部４１は、起動処理部４５、起動処理部４４及びプログラム管理部４３に次々と要求サービス情報を登録する（Ｓ７３、Ｓ７４、Ｓ７５）。プログラム管理部４３は、ＲＡＭ２１に要求サービス情報を記憶させる。
【００７９】
プログラム管理部４３には、既に拡張機能提供プログラム３８のサービス情報が登録されているので、機能提供部４２の要求サービス情報が登録されると（利用者が現れると）、機能提供部４２が要求する拡張機能提供部４８が起動していることを機能提供部４２に通知できる。
【００８０】
この処理のため、プログラム管理部４３は、機能提供部４２の利用者情報を、起動処理部４６に登録する（Ｓ７６）。そして、起動処理部４６は起動処理部４７に利用者情報を登録する（Ｓ７７）。
【００８１】
ついで、起動処理部４７は、拡張機能提供部４８の被利用者情報を、起動処理部４６に登録する（Ｓ７８）。また、起動処理部４６は、直接、起動処理部４５に被利用者情報を登録する（Ｓ７９）。起動処理部４５は起動処理部４１に（Ｓ８０）、起動処理部４１は機能提供部４２に（Ｓ８１）、被利用者情報を登録する。
【００８２】
以上の処理により、機能提供部４２と拡張機能提供部４８は互いに起動していることを認識し、識別情報等を有することになるので、機能提供部４２は拡張機能提供部４８に対し直接、共通メカニズム４９を介することなく実行指示を出すことができる（Ｓ８２）。
【００８３】
図３、４のシーケンス図に示すように、本実施形態のＭＦＰ１０はプログラム３０の起動順番に制約を生じさせない。
【００８４】
〔停止シーケンス〕
機能提供部４２及び拡張機能提供部４８の停止処理について図５のシーケンス図に基づき説明する。機能提供プログラム３７を停止することは、機能提供プログラム３７が利用していた拡張機能提供プログラム３８も停止してよいことを意味するため（拡張機能提供プログラム３８を利用している機能提供プログラム３７が１つの場合）、拡張機能提供プログラム３８も連鎖的に停止する。図５では、先に拡張機能提供部４８を停止する。
【００８５】
機能提供部４２についてユーザによる停止の操作又は所定時間の不使用が検知されると、プログラム管理部４３は、機能提供部４２が利用していた拡張機能提供部４８の停止を起動処理部４４及び起動処理部４６を介して起動処理部４７に要求する（Ｓ８５、Ｓ８６、Ｓ８７）。これにより、起動処理部４４及び起動処理部４６は拡張機能提供部４８の停止が登録される。
【００８６】
ついで、起動処理部４７は、利用者情報に基づき、拡張機能提供プログラム３８を利用している機能提供部４２にサービスの停止を通知する。このため、起動処理部４７は起動処理部４６にサービスの停止を通知する（Ｓ８９）。これにより、起動処理部４６は起動処理部４５に直接、サービスの停止を登録することができる（Ｓ９０）。起動処理部４５は、起動処理部４１にサービスの停止を登録する（Ｓ９１）。これにより、起動処理部４１に登録されていた被利用者情報は削除される。起動処理部４１は、機能提供部４２にサービスの停止を登録する（Ｓ９２）。これにより、機能提供部４２に登録されていた被利用者情報は削除される。
【００８７】
ステップＳ８７に戻り、起動処理部４７はプログラム管理部４３の停止要求に従い拡張機能提供部４８を停止する（Ｓ８８）。拡張機能提供部４８が停止すると、起動処理部４７は停止完了を起動処理部４６に（Ｓ９３）、起動処理部４６は停止完了をプログラム管理部４３に（Ｓ９４）、それぞれ登録する。
【００８８】
拡張機能提供部４８が停止すると、プログラム管理部４３は機能提供部４２を停止する。まず、プログラム管理部４３は起動処理部４４に停止要求を（Ｓ９５）、起動処理部４４は起動処理部４５に停止要求を（Ｓ９６）、起動処理部４４は起動処理部４１に停止要求を（Ｓ９７）、起動処理部４１は機能提供部４２に停止要求を（Ｓ９８）、それぞれ送信する。停止要求を送信すると各プログラム３０は順次停止する。なお、共通メカニズム４９を利用する他の機能提供部４２が起動している場合は共通メカニズム４９を停止しない。
【００８９】
機能提供部４２を停止する場合に、それが利用している拡張機能提供部４８を一緒に停止する事ができるため、システムリソース（メモリ、CPUパワー）の消費を低減できる。  また、拡張機能提供部４８を自動的に停止させることができるため、プログラム３０の開発工数を減らすことができる。
【００９０】
なお、図５では、機能提供部４２を停止する処理について説明したが、拡張機能提供部４８のみを停止してもよい。例えば、ユーザが拡張機能提供部４８を停止する操作を入力した場合や拡張機能提供部４８が所定時間以上利用されない場合など、動的に拡張機能提供部４８のみを停止することでシステムリソースを節約できる。この場合のシーケンス図はステップＳ９５以降を処理しない点で図５と異なるが、ステップＳ９４までは同じである。
【００９１】
以上説明したように本実施例によれば、機能提供部４２と拡張機能提供部４８の起動時に、利用者情報と被利用者情報とを交換するので、機能提供部４２がサービスを利用する時にプログラム管理部４３に問い合わせる必要がない。また、機能提供部４２が起動した時に利用者情報と被利用者情報を交換すればよいので、起動の順番の制約をなくすことができる。起動処理部４５は複数の機能提供部４２に共通で、起動処理部４６は複数の拡張機能提供部４８に共通であるのでメモリを効率的に利用できる。また、起動処理部４５，４６は複数の機能提供部４２と複数の拡張機能提供部４８に共通なので、プログラム３０の開発効率を向上させることができる。
【実施例２】
【００９２】
機能提供プログラム３７，拡張機能提供プログラム３８はいずれも複数存在しうるものであるが、共通メカニズム４９はこれらのプログラム３０が共通に利用できる。
【００９３】
図６は、２つの機能提供プログラム３７Ａ、３７Ｂと、２つの拡張機能提供プログラム３８Ａ、３８Ｂが共通メカニズム４９を利用する場合のＭＦＰ１０のブロック図を示す。なお、図６において図２と同一部分には同一の符号を付しその説明は省略する。
【００９４】
起動処理部４５は、起動処理部４１Ａと４１Ｂの共通機能を取り出したものであり、起動処理部４６は起動処理部４７Ａと４７Ｂの共通機能を取り出したものである。したがって、起動処理部４５は起動処理部４１Ａと４１Ｂそれぞれの要求サービス情報をプログラム管理部４３に登録しておくことができ、起動処理部４６は拡張機能提供部４８Ａと４８Ｂそれぞれのサービス情報をプログラム管理部４３に登録しておくことができる。
【００９５】
また、プログラム管理部４３は、サービス情報と要求サービス情報を照合して、利用者が現れた場合には利用者情報を起動処理部４６に登録し、起動処理部４６は被利用者情報を機能提供部４２Ａ又は４２Ｂに登録するので、共通メカニズム４９は拡張機能提供部４８Ａ又は４８Ｂを選択的に機能提供部４２Ａ又は４２Ｂと接続させることができる。
【００９６】
すなわち、機能提供プログラム３７Ａ及び３７Ｂと拡張機能提供プログラム３８Ａ及び３８Ｂを組み合わせることができＭＦＰ１０の拡張性を格段に向上させることができる。また、ユーザにとっても所望の機能（拡張機能提供プログラム３８）を選択して利用できるので利便性が向上する。
【００９７】
また、単体の拡張機能提供プログラム３８に対し複数の機能提供プログラム３７Ａ、３７Ｂが起動してもよい。図７は、２つの機能提供プログラム３７Ａ、３７Ｂと、１つの拡張機能提供プログラム３８が共通メカニズム４９を利用する場合のＭＦＰ１０のブロック図を示す。
【００９８】
拡張機能提供プログラム３８は、機能提供プログラム３７Ａ又は３７Ｂと１対１に対応するものではなく、複数の機能提供プログラム３７Ａ、３７Ｂに共通にサービスを提供することができる。この場合、拡張機能提供プログラム３８を複数の用途に用いることができるので、再利用性が高くなりプログラムの開発コストを下げることができる。
【００９９】
また、単体の機能提供プログラム３７が複数の拡張機能提供プログラム３８Ａ、３８Ｂを利用してもよい。図８は、１つの機能提供プログラム３７と、２つの拡張機能提供プログラム３８Ａ、３８Ｂが共通メカニズム４９を利用する場合のＭＦＰ１０のブロック図を示す。１つの機能提供プログラム３７が、多様な拡張機能を利用することができるので、ＭＦＰ１０の柔軟なカスタマイズが可能となる。
【０１００】
図９は、２つの機能提供部４２Ａ、４２Ｂと２つの拡張機能提供部４８Ａ，４８Ｂを起動するＭＦＰ１０の起動処理を示すシーケンス図を示す。ＭＦＰ１０のブロック図は図６である。
【０１０１】
ステップＳ１００は機能提供部４２Ａの要求サービス情報をプログラム管理部４３に登録する処理であって、図３ではステップＳ１１〜Ｓ２１が相当する。また、ステップＳ１１０は機能提供部４２Ｂの要求サービス情報をプログラム管理部４３に登録する処理であって、図３ではステップＳ１１〜Ｓ２１が相当する。
【０１０２】
ステップＳ１２０は拡張機能提供部４８Ａのサービス情報をプログラム管理部４３に登録する処理であって、図３ではＳ２５〜Ｓ３５が相当する。
【０１０３】
拡張機能提供部４８Ａのサービス情報が登録されると、プログラム管理部４３が機能提供部４２Ａと４２Ｂの要求サービス情報と照合し、拡張機能提供部４８Ａのサービスを要求している一方の機能提供部（ここでは機能提供部４２Ａ）の利用者情報を起動処理部４７Ａに登録する（Ｓ１３０）。図３ではステップＳ３６、Ｓ３７が相当する。
【０１０４】
ついで、起動処理部４７Ａは、拡張機能提供部４８Ａの被用者情報を機能提供部４２Ａに登録する（Ｓ１４０）。図３ではステップＳ３８〜Ｓ４１に相当する。
【０１０５】
ステップＳ１５０は拡張機能提供部４８Ｂのサービス情報をプログラム管理部４３に登録する処理であって、図３ではＳ２５〜Ｓ３５が相当する。
【０１０６】
拡張機能提供部４８Ｂのサービス情報が登録されると、プログラム管理部４３が機能提供部４２Ａと４２Ｂの要求サービス情報と照合し、拡張機能提供部４８Ｂのサービスを要求している一方の機能提供部（ここでは機能提供部４２Ｂ）の利用者情報を起動処理部４７Ｂに登録する（Ｓ１６０）。図３ではステップＳ３６、Ｓ３７が相当する。
【０１０７】
ついで、起動処理部４７Ｂは、拡張機能提供部４８Ｂの被用者情報を機能提供部４２Ｂに登録する（Ｓ１７０）。図３ではステップＳ３８〜Ｓ４１に相当する。
【０１０８】
したがって、機能提供部４２Ａと４２Ｂはそれぞれ拡張機能提供部４８Ａ、４８Ｂの利用者情報を取得したので、機能利用があった場合、拡張機能提供部４８Ａ又は４８Ｂにそれぞれ直接実行指示することができる（Ｓ１８０、Ｓ１９０）。
【０１０９】
以上説明したように、本実施例のＭＦＰ１０は、複数の機能提供部４２と拡張機能提供部４８が実行される環境下でも実施例１と同様の効果を奏することができ、さらにＭＦＰ１０の拡張性を格段に向上させることができる。また、プログラム３０の再利用性が高くなるためプログラム開発コストを下げることができる。
【実施例３】
【０１１０】
実施例１及び２では、機能提供プログラム３７と拡張機能提供プログラム３８について説明したが、ＭＦＰ１０ではプログラム管理部４３が管理する他のプログラム（独立プログラム３９）が他にも存在する。
【０１１１】
図１０は、独立プログラム３９が存在する場合のＭＦＰ１０のブロック図を示す。なお、図２と同一部分には同一の符号を付しその説明は省略する。ＣＰＵ２８が独立プログラム３９を実行することで、起動処理部（環境）５２及び環境提供部５３が実現される。
【０１１２】
独立プログラム３９は、機能提供プログラム３７及び拡張機能提供プログラム３８と連携することなく、単体で機能を提供するプログラム３０である。例えば、ＡＳＩＣ（Application Specific Integrated Circuit）を起動するプログラム、デバイスドライバなどが相当する。したがって、独立プログラム３９は、機能提供プログラム３７の利用情報や拡張機能提供プログラム３８の被利用情報を記憶しておく必要はなく、起動処理部４５、４６と通信する必要もない。このため、独立プログラム３９の起動処理部５２は従来と同様に共通の起動処理部４４と通信して起動処理するだけでよい。すなわち、より上位層の起動処理部４４を介して起動することで、最小限の手続きで独立プログラム３９を起動することができ、実行速度を向上させることができる。
【０１１３】
以上説明したように、本実施形態のＭＦＰ１０は、複数のプログラム３０が連携して機能を提供する上で、プログラム間の連携を容易にし、処理速度を向上することができ、プログラム開発コストを低減することができる。
【０１１４】
なお、本実施形態ではプログラム３０の起動処理をＭＦＰ１０を対象に説明したが、情報処理装置を備える組み込み機器の全てに好適に適用可能である。また、パーソナルコンピュータなどの情報処理装置に適用してもよい。この場合、機能提供部４２は例えばワープロソフトウェア、ブラウザソフトウェアが相当し、拡張機能提供部４８は例えばスペルチェッカ、翻訳プログラム、その他アドインソフトが相当する。
【図面の簡単な説明】
【０１１５】
【図１】ＭＦＰのハードウェア構成図の一例を示す。
【図２】ＭＦＰのブロック図の一例を示す。
【図３】起動処理のシーケンス図の一例である。
【図４】起動処理のシーケンス図の一例である。
【図５】停止処理のシーケンス図の一例である。
【図６】２つの機能提供プログラムと、２つの拡張機能提供プログラムが共通メカニズムを利用するＭＦＰのブロック図の一例である。
【図７】２つの機能提供プログラムと、１つの拡張機能提供プログラムが共通メカニズムを利用するＭＦＰのブロック図の一例である。
【図８】１つの機能提供プログラムと、２つの拡張機能提供プログラムが共通メカニズムを利用するＭＦＰのブロック図の一例である。
【図９】２つの機能提供部と２つの拡張機能提供部を起動する起動処理のシーケンス図の一例である。
【図１０】独立プログラムが存在する場合のＭＦＰのブロック図を示す
【図１１】機器上で実行されるソフトウェアの従来のブロック図である。
【図１２】従来の起動処理のシーケンス図である。
【符号の説明】
【０１１６】
１０      ＭＦＰ
２７      記憶装置
２８      ＣＰＵ
２９      記憶媒体
３０      プログラム
３１Ａ、３１Ｂ、３４、３５、３６      起動処理プログラム
３３      プログラム管理プログラム
３７      機能提供プログラム
３８      拡張機能提供プログラム
３９      独立プログラム
４１      起動処理部（機能提供）
４２      機能提供部
４３      プログラム管理部
４４      起動処理部（共通）
４５      起動処理部（機能提供：共通）
４６      起動処理部（拡張機能提供：共通）
４７      起動処理部（拡張機能提供）
４８      拡張機能提供部
４９      共通メカニズム
５２      起動処理部（環境）
５３      環境提供部
【図１】
2008310769.tif 000003
【図２】
2008310769.tif 000004
【図３】
2008310769.tif 000005
【図４】
2008310769.tif 000006
【図５】
2008310769.tif 000007
【図６】
2008310769.tif 000008
【図７】
2008310769.tif 000009
【図８】
2008310769.tif 000010
【図９】
2008310769.tif 000011
【図１０】
2008310769.tif 000012
【図１１】
2008310769.tif 000013
【図１２】
2008310769.tif 000014