(57)【要約】【課題】メンテナンス及び機能追加が容易なアプリケーションソフト及び情報処理装置を提供することを目的とする。【解決手段】機能の追加が可能なアプリケーションソフトであって、機能を提供する一つ以上のツール部３３と、ツール部３３に機能を提供するサブシステム部３２と、ツール部３３及びサブシステム部３２間の機能の提供を仲介するプラットフォーム部３１として機能させ、ツール部３３が自分の持つ機能をサブシステム部３２に登録し、サブシステム部３２がツール部３３からの問い合わせに基づき、その問い合わせに該当する機能を問い合わせ元のツール部３３に提供するようにコンピュータを機能させることにより上記課題を解決する。【選択図】図３
2008140052.tif 000002
【特許請求の範囲】
【請求項１】
機能の追加が可能なアプリケーションソフトであって、
コンピュータを、
機能を提供する一つ以上のツール部と、
前記ツール部に機能を提供するサブシステム部と、
前記ツール部及びサブシステム部間の機能の提供を仲介するプラットフォーム部として機能させ、
前記ツール部が自分の持つ機能を前記サブシステム部に登録し、前記サブシステム部が前記ツール部からの問い合わせに基づき、その問い合わせに該当する機能を前記問い合わせ元の前記ツール部に提供するように機能させるアプリケーションソフト。
【請求項２】
前記サブシステム部が前記ツール部により登録された機能をコンテンツのタイプ毎に管理し、前記ツール部からの前記コンテンツのタイプを指定した問い合わせに基づき、その問い合わせ及び前記コンテンツのタイプに該当する機能を前記問い合わせ元の前記ツール部に提供するように機能させる請求項１記載のアプリケーションソフト。
【請求項３】
前記サブシステム部が前記問い合わせ元の前記ツール部に前記問い合わせに該当する機能のオブジェクトを提供するように機能させる請求項１又は２記載のアプリケーションソフト。
【請求項４】
前記ツール部が前記機能を追加する為のモジュールにより追加されることを特徴とする請求項１乃至３何れか一項記載のアプリケーションソフト。
【請求項５】
前記アプリケーションソフトは、起動プログラムにより起動され、アプリケーション動作環境を提供するフレームワーク上で動作することを特徴とする請求項１乃至４何れか一項記載のアプリケーションソフト。
【請求項６】
機能の追加が可能なアプリケーションソフトにより制御される情報処理装置であって、
機能を提供する一つ以上のツール部と、
前記ツール部に機能を提供するサブシステム部と、
前記ツール部及びサブシステム部間の機能の提供を仲介するプラットフォーム部とを有し、
前記ツール部が自分の持つ機能を前記サブシステム部に登録し、前記サブシステム部が前記ツール部からの問い合わせに基づき、その問い合わせに該当する機能を前記問い合わせ元の前記ツール部に提供する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションソフト及び情報処理装置に係り、特に機能の追加が可能なアプリケーションソフト及び情報処理装置に関する。
【背景技術】
【０００２】
例えばコンピュータによって扱われる電子文書は、ある特定の目的のために設計されたソフトウェアであるアプリケーションソフトにより作成，保存，表示等される。このような電子文書を扱う場合、使用者は、その電子文書を扱えるアプリケーションソフトをインストールしておかなければならない。
【０００３】
したがって、電子文書を作成する作成者と、電子文書を閲覧する閲覧者とが異なっている場合、閲覧者は電子文書を扱えるアプリケーションソフトをインストールしておかなければならなかった。
【０００４】
このような不都合に対し、例えば特許文献１には、電子文書と、その電子文書を扱えるプログラムとをカプセル化したカプセル化文書構造を採用することが提案されている。したがって、電子文書を、その電子文書を扱えるアプリケーションソフトと一体化させることにより、上記の不都合を解消できる。
【０００５】
さらに、近年、アプリケーションソフトは、プラグイン（plug-in）やＤＬＬ（Dynamic Link Library）と呼ばれるプログラムにより機能の追加が可能である。アプリケーションソフトは追加された機能により、もとから搭載されている機能だけでは実現できない様々な機能を実現できる。
【特許文献１】特開２００４−２１３１８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
従来のアプリケーションソフトでは、もとから搭載されている機能と追加された機能との連携や、追加された機能同士の連携による、より高度な機能の実現が求められるようになった。
【０００７】
しかしながら、従来のアプリケーションソフトでは、もとから搭載されている機能と追加された機能との連携や、追加された機能同士の連携による、より高度な機能を実現しようとすると、アプリケーションソフト，機能を追加するプログラム間の結合度が高まることになり、ソースコードの作り直しやビルドの作り直しが必要であった。
【０００８】
即ち、従来のアプリケーションソフトでは、もとから搭載されている機能と追加された機能との連携や、追加された機能同士の連携による、より高度な機能を実現しようとすると、メンテナンス及び機能追加が困難になるという問題があった。
【０００９】
本発明は、上記の点に鑑みなされたもので、メンテナンス及び機能追加が容易なアプリケーションソフト及び情報処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記課題を解決するため、本発明は、機能の追加が可能なアプリケーションソフトであって、コンピュータを、機能を提供する一つ以上のツール部と、前記ツール部に機能を提供するサブシステム部と、前記ツール部及びサブシステム部間の機能の提供を仲介するプラットフォーム部として機能させ、前記ツール部が自分の持つ機能を前記サブシステム部に登録し、前記サブシステム部が前記ツール部からの問い合わせに基づき、その問い合わせに該当する機能を前記問い合わせ元の前記ツール部に提供するように機能させることを特徴とする。
【００１１】
また、本発明は、機能の追加が可能なアプリケーションソフトにより制御される情報処理装置であって、機能を提供する一つ以上のツール部と、前記ツール部に機能を提供するサブシステム部と、前記ツール部及びサブシステム部間の機能の提供を仲介するプラットフォーム部とを有し、前記ツール部が自分の持つ機能を前記サブシステム部に登録し、前記サブシステム部が前記ツール部からの問い合わせに基づき、その問い合わせに該当する機能を前記問い合わせ元の前記ツール部に提供することを特徴とする。
【００１２】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【００１３】
本発明によれば、メンテナンス及び機能追加が容易なアプリケーションソフト及び情報処理装置を提供可能である。
【発明を実施するための最良の形態】
【００１４】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明していく。
【００１５】
図１は、情報処理装置の一例であるコンピュータのハードウェア構成図である。図１のコンピュータ１は、情報処理を行うＣＰＵ２と、情報を格納するＲＯＭ３及びＲＡＭ４等の１次記憶装置５と、処理結果等を保存するＨＤＤ（ハードディスクドライブ）６等の２次記憶装置７と、情報を外部に保管、配布、入手するためのＣＤ−ＲＯＭ８等のリムーバブルメディアと、外部の他のコンピュータと通信するためのネットワーク９と、処理経過や結果等を使用者に表示するディスプレイ１０と、使用者がコンピュータ１に命令や情報等を入力するためのキーボード１１やマウス１２等とで構成されており、これらの各構成要素間で送受信されるデータをバスコントローラ１３が調停して動作している。
【００１６】
コンピュータ１では、使用者が電源を投入すると、ＣＰＵ２がＲＯＭ３内のローダというプログラムを起動させ、ＨＤＤ６よりオペレーティングシステム（ＯＳ）をＲＡＭ４に読込んで、起動させる。ＯＳは、使用者の操作に応じてアプリケーションソフトを起動したり、情報を読込んだり、保存を行ったりする。ＯＳのうち代表的なものとしては、Ｗｉｎｄｏｗｓ（登録商標）、ＵＮＩＸ（登録商標）等が知られている。
【００１７】
コンピュータ１はアプリケーションソフトを後述のシェルから起動させる。このようなアプリケーションソフトはＣＤ−ＲＯＭ８に限らず、ＦＤ、ハードディスク、磁気テープ等のような磁気的な記憶媒体、又はＣＤ，ＣＤ−Ｒ，ＣＤ−ＲＷ，ＤＶＤ−ＲＯＭ，ＤＶＤ−ＲＡＭ等のような光学的な記憶媒体等、各種の記憶媒体に格納することができる。アプリケーションソフトは、ＬＡＮやインターネット等の各種のネットワーク９を介して伝送可能である。
【００１８】
図２は、コンピュータ上でアプリケーションソフトが動作する様子を表した一例のソフトウェア構成図である。図２のソフトウェア構成図は、アプリケーションソフト２１，シェル２２，フレームワーク（.NET Framework(JAVA)）２３を有する構成である。
【００１９】
フレームワーク２３はアプリケーションソフト２１の土台として機能するソフトウェアである。図２はフレームワーク２３の一例としてネットワークベースのアプルケーション動作環境を提供する基板ソフトウェア（.NET Framework(JAVA)）を表している。シェル２２はＯＳ内にあり、アプリケーションソフト２１を起動させる。
【００２０】
アプリケーションソフト２１は、コンテンツ２４，アプリケーション定義情報２５，アプリケーションデータ２６，１つ以上のアプリケーションツール２７，アプリケーションプラットフォーム２８を有する構成である。アプリケーションプラットフォーム２８はアプリケーションソフト２１が動作する基盤である。アプリケーションプラットフォーム２８はアプリケーションツール２７に対して、後述のような機能を提供する。
【００２１】
アプリケーションツール２７は追加された機能を提供するコンポーネントである。アプリケーションツール２７はプラグイン（plug-in）やＤＬＬ（Dynamic Link Library）と呼ばれるプログラムにより実現される。アプリケーションツール２７は、自分の持つ機能を後述のように他のアプリケーションツール２７に提供可能である。
【００２２】
コンテンツ２４，アプリケーション定義情報２５，アプリケーションデータ２６は、アプリケーションツール２７及びアプリケーションプラットフォーム２８が利用する情報である。なお、アプリケーションツール２７及びアプリケーションプラットフォーム２８は図３に示すクラス図で表すことができる。
【００２３】
図３はアプリケーションツール及びアプリケーションプラットフォームの構成を示すクラス図である。
【００２４】
図３のクラス図は、アプリケーションプラットフォームクラス（以下、プラットフォームクラスという）３１と、アプリケーションサブシステムクラス（以下、サブシステムクラスという）３２と、アプリケーションツールクラス（以下、ツールクラスという）３３と、アプリケーションＩプラットフォームクラス（以下、Ｉプラットフォームクラスという）３４と、アプリケーションＩサブシステムクラス（以下、Ｉサブシステムクラスという）３５と、アプリケーションＩツールクラス（以下、Ｉツールクラスという）３６とを有する構成である。
【００２５】
プラットフォームクラス３１はＩプラットフォームクラス３４を実現している。サブシステムクラス３２はＩサブシステムクラス３５を実現している。また、ツールクラス３３はＩツールクラス３６を実現している。
【００２６】
プラットフォームクラス３１は、サブシステムクラス３２と、ツールクラス３３とを複数持つことができる。また、サブシステムクラス３２は後述のアプリケーションプロバイダサブシステムの具象クラスである。
【００２７】
プラットフォームクラス３１は、サブシステムクラス３２と、ツールクラス３３との仲介（橋渡し）役となり、サブシステムクラス３２が用意している機能をツールクラス３３に提供する。
【００２８】
また、ツールクラス３３の間で、やり取りが発生する場合は、必ずプラットフォームクラス３１を仲介して実施される。したがって、アプリケーションソフト２１はツールクラス３３同士の結合度を押さえることができ、メンテナンス及び機能追加が容易となる。
【００２９】
図４はサブシステムクラスの構成を示すクラス図である。図４のクラス図は、サブシステムクラス３２と、アプリケーションオーダサブシステムクラス（以下、オーダサブシステムクラスという）４１と、アプリケーションユーザインターフェースサブシステムクラス（以下、ユーザインターフェースサブシステムクラスという）４２と、アプリケーションプリントサブシステムクラス（以下、プリントサブシステムクラスという）４３と、アプリケーションプロバイダサブシステムクラス（以下、プロバイダサブシステムクラスという）４４とを有する構成である。
【００３０】
サブシステムクラス３２とは、図２に示したアプリケーションツール２７に対して、アプリケーションプラットフォーム２８が提供する機能を、ある単位でまとめたクラス群のことである。オーダサブシステムクラス４１と、ユーザインターフェースサブシステムクラス４２と、プリントサブシステムクラス４３と、プロバイダサブシステムクラス４４とはサブシステムクラス３２のサブクラスである。
【００３１】
図５はプロバイダサブシステムクラスの構成を示すクラス図である。図５のクラス図はサブシステムクラス３２と、プロバイダサブシステムクラス４４と、アプリケーションプロバイダマネージャクラス（以下、プロバイダマネージャクラスという）５１と、アプリケーションプロバイダクラス（以下、プロバイダクラスという）５２と、アプリケーショントランスミッタクラス（以下、トランスミッタクラスという）５３と、アプリケーションコンテンツクラス（以下、コンテンツクラスという）５４と、アプリケーションコンテンツコントローラクラス（以下、コンテンツコントローラクラスという）５５とを有する構成である。
【００３２】
プロバイダサブシステムクラス４４は、サブシステムクラス３２を継承する。プロバイダサブシステムクラス４４は、ツールクラス３３が持つ機能をプロバイダという形で登録させるものである。また、プロバイダマネージャクラス５１は、プロバイダクラス５２を管理する。プロバイダクラス５２は、トランスミッタクラス５３と、コンテンツクラス５４と、コンテンツコントローラクラス５５とをサブクラスとして持つ。なお、トランスミッタクラス５３は、通信系のプロバイダである。コンテンツクラス５４及びコンテンツコントローラクラス５５は、画像系のプロバイダである。
【００３３】
ここで、プロバイダサブシステムの機能の概要について図６及び図７を参照しつつ説明する。図６はプロバイダサブシステムへの機能の登録を表した模式図である。図７はプロバイダサブシステムからの機能の取得を表した模式図である。以下、前述した各クラスのインスタンス化したオブジェクトに基づいて説明を続ける。
【００３４】
図６では、各ツール６１が持っている機能（プロバイダ）６２を、プロバイダサブシステム６３に登録する様子を表している。なお、各ツール６１は、Ｉプラットフォームを通して（ルール実行）登録を行う。つまり、プロバイダサブシステム６３には、１つ以上のツール６１からプロバイダ６２が登録される。
【００３５】
図７では、プロバイダサブシステム６３に登録されたプロバイダ６２を、プロバイダサブシステム６３から取得する様子を表している。例えば、あるツール６１が他のツール６１の登録したプロバイダ６２を利用したい場合、Ｉプラットフォームを通して（ルール実行）問い合わせを行う。プロバイダサブシステム６３は該当するプロバイダ６２を後述するように検索し、該当するプロバイダ６２を問い合わせ元のツール６１に提供する。問い合わせ元のツール６１は取得したプロバイダ６２を取得することで、他のツール６１が持つ機能を利用できるようになる。
【００３６】
このように、あるツール６１は他のツール６１が持つ機能（プロバイダ）６２を利用する場合に、必ずプロバイダサブシステム６３を仲介するため、ツール６１同士の結合度を抑えながらツール６１による機能提供を容易に実現できると共に、ツール６１同士の連携をスムーズに行うことができる。
【００３７】
図８はプロバイダサブシステムへの機能の登録を表したシーケンス図である。ステップＳ１１に進み、ツール８１はルールナンバ及びパラメータを指定してＩプラットフォーム８２へルール実行要求を行う。なお、ツール８１は保有している機能（プロバイダ）を第２引数に渡す。
【００３８】
ステップＳ１２に進み、Ｉプラットフォーム８２はアクションナンバ及びパラメータを指定して、プロバイダサブシステム８３にルール実行登録を行う。プロバイダサブシステム８３はステップＳ１３に進み、プロバイダマネージャ８４にプロバイダを登録する。
【００３９】
図９はプロバイダサブシステムからの機能の取得を表したシーケンス図である。ツール８１はステップＳ２１に進み、Ｉプラットフォーム８２へルールナンバ及びパラメータを指定したルール実行要求を行う。なお、ツール８１は扱いたいコンテンツのタイプをａ  ｔｉｒｉｎｇで渡す。
【００４０】
ステップＳ２２に進み、Ｉプラットフォーム８２はアクションナンバ及びパラメータを指定して、プロバイダサブシステム８３にルール実行登録を行う。プロバイダサブシステム８３はステップＳ２３に進み、コンテンツのタイプを指定してプロバイダマネージャ８４にプロバイダの取得を要求する。プロバイダマネージャ８４はコンテンツのタイプとプロバイダとの対応関係を例えばテーブルなどによって管理している。
【００４１】
ステップＳ２４に進み、プロバイダマネージャ８４は扱えるコンテンツのタイプが一致するプロバイダ８５の検索を行う。ステップＳ２５に進み、プロバイダマネージャ８４は扱えるコンテンツのタイプに対応したプロバイダ８５を、プロバイダサブシステム８３に返す。なお、扱えるコンテンツのタイプに対応したプロバイダ８５が存在しなかった場合はプロバイダサブシステム８３にｎｕｌｌを返す。
【００４２】
ステップＳ２６に進み、プロバイダサブシステム８３はＩプラットフォーム８２へ扱えるコンテンツのタイプに対応したプロバイダ８５を返す。また、Ｉプラットフォーム８２はステップＳ２７に進み、扱えるコンテンツのタイプに対応したプロバイダ８５をツール８１に返す。したがって、ツール８１は扱いたいコンテンツのタイプに対応したプロバイダ８５を取得できる。
【００４３】
図１０は機能の提供を表したシーケンス図である。機能を提供されるツール８１はステップＳ３１に進み、画像表示機能を提供するイメージプロバイダ８６にコンテンツ作成を要求する。ステップＳ３２に進み、イメージプロバイダ８６はイメージコンテンツ８７を作成する。イメージコンテンツ８７はコンテンツクラス５４を継承したオブジェクトである。
【００４４】
また、イメージプロバイダ８６はステップＳ３３に進み、作成したイメージコンテンツ８７をツール８１に通知する。ステップＳ３４に進み、ツール８１は表示したい画像ファイルのＵＲＩ（Uniform Resource Identifier）を指定して、イメージコンテンツ８７に画像表示を要求する。ステップＳ３５に進み、イメージコンテンツ８７はビットマップ８８というオブジェクトを作成し、そのビットマップ８８に、指定されたＵＲＩの画像ファイルを表示させる。
【００４５】
図１１はコンピュータ上でアプリケーションソフトが動作する様子を表した一例のファイル構造図である。図２のシェル２２に相当するＥＸＥファイル１１０はアプリケーションプラットフォーム２８に相当するＤＬＬファイル１１１を参照する。ＤＬＬファイル１１１にはアプリケーションツール２７に相当する１つ以上のＤＬＬファイル１１２が存在する。
【００４６】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。
【図面の簡単な説明】
【００４７】
【図１】情報処理装置の一例であるコンピュータのハードウェア構成図である。
【図２】コンピュータ上でアプリケーションソフトが動作する様子を表した一例のソフトウェア構成図である。
【図３】アプリケーションツール及びアプリケーションプラットフォームの構成を示すクラス図である。
【図４】サブシステムクラスの構成を示すクラス図である。
【図５】プロバイダサブシステムクラスの構成を示すクラス図である。
【図６】プロバイダサブシステムへの機能の登録を表した模式図である。
【図７】プロバイダサブシステムからの機能の取得を表した模式図である。
【図８】プロバイダサブシステムへの機能の登録を表したシーケンス図である。
【図９】プロバイダサブシステムからの機能の取得を表したシーケンス図である。
【図１０】機能の提供を表したシーケンス図である。
【図１１】コンピュータ上でアプリケーションソフトが動作する様子を表した一例のファイル構造図である。
【符号の説明】
【００４８】
１    コンピュータ
２    ＣＰＵ
３    ＲＯＭ
４    ＲＡＭ
５    １次記憶装置
６    ＨＤＤ（ハードディスクドライブ）
７    ２次記憶装置
８    ＣＤ−ＲＯＭ
９    ネットワーク
１０    ディスプレイ
１１    キーボード
１２    マウス
２１    アプリケーションソフト
２２    シェル
２３    フレームワーク（.NET Framework(JAVA)）
２４    コンテンツ
２５    アプリケーション定義情報
２６    アプリケーションデータ
２７    １つ以上のアプリケーションツール
２８    アプリケーションプラットフォーム
３１    アプリケーションプラットフォームクラス
３２    アプリケーションサブシステムクラス
３３    アプリケーションツールクラス
３４    アプリケーションＩプラットフォームクラス
３５    アプリケーションＩサブシステムクラス
３６    アプリケーションＩツールクラス
４４    アプリケーションプロバイダサブシステムクラス
５１    アプリケーションプロバイダマネージャクラス
５２    アプリケーションプロバイダクラス
５３    アプリケーショントランスミッタクラス
５４    アプリケーションコンテンツクラス
５５    アプリケーションコンテンツコントローラクラス
【図１】
2008140052.tif 000003
【図２】
2008140052.tif 000004
【図３】
2008140052.tif 000005
【図４】
2008140052.tif 000006
【図５】
2008140052.tif 000007
【図６】
2008140052.tif 000008
【図７】
2008140052.tif 000009
【図８】
2008140052.tif 000010
【図９】
2008140052.tif 000011
【図１０】
2008140052.tif 000012
【図１１】
2008140052.tif 000013