(57)【特許請求の範囲】
【請求項１】
アプリケーションをカスタマイズするための情報処理方法において、
前記アプリケーションが使用する第１の部品の抽象型と前記第１の部品が使用する第２の部品の抽象型とをカスタマイズ機構に登録する登録工程と、
各部品の抽象型と実装型との関係を前記カスタマイズ機構に保持させる保持制御工程と、
部品設定部が、前記第１の部品が管理する複数の第２の部品の実装型の切り替えを前記カスタマイズ機構に通知する通知工程と、
前記第１の部品が使用する前記第２の部品の実装型の切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行する実行工程と、を備えることを特徴とする情報処理方法。
【請求項２】
前記カスタマイズ機構から切り替え後の前記第２の部品の実装型が前記第１の部品に通知されると、切り替え後の前記第２の部品のオブジェクトを用いた処理を実行することを特徴とする請求項１に記載の情報処理方法。
【請求項３】
前記第１の部品が管理する前記第２の部品の実装型の前記部品設定部による切り替えに応じて、切り替え後の前記第２の部品のオブジェクトを用いて、表示画面を描画することを特徴とする請求項１に記載の情報処理方法。
【請求項４】
前記登録工程では、前記第１の部品が使用する前記第２の部品に対応する識別子を前記カスタマイズ機構に登録し、
前記部品設定部は、登録された識別子に対応する前記第２の部品の実装型を前記カスタマイズ機構に通知し、
前記実行工程では、識別子に対応する前記第２の部品の実装型の前記部品設定部による切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行することを特徴とする請求項１に記載の情報処理方法。
【請求項５】
前記登録工程では、前記第１の部品が使用する前記第２の部品に対応する識別子を前記カスタマイズ機構に登録し、
前記部品設定部は、登録された識別子に対応する複数の前記第２の部品から選択された前記第２の部品の実装型を前記カスタマイズ機構に通知し、
前記実行工程では、識別子に対応する前記第２の部品の実装型の前記部品設定部による切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行することを特徴とする請求項１に記載の情報処理方法。
【請求項６】
前記登録工程では、前記第１の部品が使用する前記第２の部品に対応する識別子を前記カスタマイズ機構に登録し、
前記部品設定部は、登録された識別子に対応する複数の前記第２の部品の識別子を外部に送信し、複数の前記第２の部品の識別子から選択された前記第２の部品の識別子を外部から受信し、複数の前記第２の部品の識別子から選択された前記第２の部品の識別子を前記カスタマイズ機構に通知し、
前記実行工程では、選択された前記第２の部品の識別子の切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行することを特徴とする請求項１に記載の情報処理方法。
【請求項７】
前記登録工程では、前記第１の部品が使用する前記第２の部品の型を前記カスタマイズ機構に登録し、
前記部品設定部は、前記第１の部品が使用する前記第２の部品の型と同じ型を有する前記第２の部品のクラスを前記カスタマイズ機構に通知し、
前記カスタマイズ機構は、前記第１の部品に対応する前記第２の部品のクラスの前記部品設定部による切り替えに応じて、切り替え後の前記第２の部品のオブジェクトを作成し、
前記実行工程では、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行することを特徴とする請求項１に記載の情報処理方法。
【請求項８】
前記第１の部品はメイン部品であり、前記第２の部品はサブ部品であることを特徴とする請求項１乃至７の何れか１項に記載の情報処理方法。
【請求項９】
前記第１の部品及び前記第２の部品は、ＧＵＩを描画するためのＧＵＩ部品であることを特徴とする請求項１乃至７の何れか１項に記載の情報処理方法。
【請求項１０】
アプリケーションをカスタマイズするための情報処理装置において、
前記アプリケーションが使用する第１の部品の抽象型と前記第１の部品が使用する第２の部品の抽象型とをカスタマイズ機構に登録する登録手段と、
各部品の抽象型と実装型との関係を前記カスタマイズ機構に保持させる保持制御手段と、
前記第１の部品が管理する複数の第２の部品の実装型の切り替えを前記カスタマイズ機構に通知する部品設定手段と、
前記第１の部品が使用する前記第２の部品の切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行する実行手段と、を備えることを特徴とする情報処理装置。
【請求項１１】
前記登録手段は、前記第１の部品が使用する前記第２の部品に対応する識別子を前記カスタマイズ機構に登録し、
前記部品設定手段は、登録された識別子に対応する前記第２の部品の実装型を前記カスタマイズ機構に通知し、
前記実行手段は、識別子に対応する前記第２の部品の実装型の前記部品設定手段による切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行することを特徴とする請求項１０に記載の情報処理装置。
【請求項１２】
前記登録手段は、前記第１の部品が使用する前記第２の部品に対応する識別子を前記カスタマイズ機構に登録し、
前記部品設定手段は、登録された識別子に対応する複数の前記第２の部品から選択された前記第２の部品の実装型を前記カスタマイズ機構に通知し、
前記実行手段は、識別子に対応する複数の前記第２の部品の実装型の前記部品設定手段による切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の第２の部品の実装型を用いて作成したオブジェクトを実行することを特徴とする請求項１０に記載の情報処理装置。
【請求項１３】
アプリケーションをカスタマイズするための情報処理方法をコンピュータに実行させるためのプログラムにおいて、
前記アプリケーションが使用する第１の部品の抽象型と前記第１の部品が使用する第２の部品の抽象型とをカスタマイズ機構に登録する手順と、
前記各部品の抽象型と実装型との関係が前記カスタマイズ機構に保持させる手順と、
前記第１の部品が管理する複数の第２の部品の実装型の切り替えを前記カスタマイズ機構に通知する手順と、
前記第１の部品が使用する前記第２の部品の部品設定部による切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行する手順とをコンピュータに実行させるためのプログラム。
【請求項１４】
前記カスタマイズ機構から切り替え後の前記第２の部品の実装型が第１の部品に通知されると、切り替え後の前記第２の部品のオブジェクトを用いた処理を実行する手順を更にコンピュータに実行させるための請求項１３に記載のプログラム。
【請求項１５】
前記第１の部品が使用する前記第２の部品に対応する識別子を前記カスタマイズ機構に登録し、登録された識別子に対応する複数の前記第２の部品の実装型から選択された前記第２の部品の実装型を前記カスタマイズ機構に通知し、識別子に対応する前記第２の部品の実装型の前記部品設定部による切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行する手順をコンピュータに実行させるための請求項１３に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アプリケーションをカスタマイズするための技術に関するものである。
【背景技術】
【０００２】
従来、部品を使用して機能を実現するアプリケーションが存在する。またそのようなアプリケーションにおいて、使用している部品を切り替えることができるものも存在する（例えば、特許文献１、２参照）。
【０００３】
また、プラットフォームの機能を拡張するために、プラグイン機構を用いる技術も存在する（例えば、特許文献３参照）。
【０００４】
【特許文献１】特開平６−４４７７号公報
【特許文献２】特開平３−１６４９３４号公報
【特許文献３】国際公開第０４／０２８１８２号パンフレット
【発明の開示】
【発明が解決しようとする課題】
【０００５】
この特許文献１、２に開示される方法ではアプリケーション側がいつ部品を切り替えられたかは知らなくてよい。しかしながら、逆に言えば部品切り替えタイミングが分からないので、部品切り替えに応じて行う必要のある処理を行うことができなかった。例えば、切り替え前に使用していた古い部品を捨てて新しい部品を作成したり、新しい部品がＧＵＩを提供する部品であった場合、それを用いて画面を再描画したりすること等ができなかった。
【０００６】
呼び出しポインタを切り替えるだけのソフトウエア構造であれば、上記のような部品切り替えに応じた処理の必要性も少ないかもしれない。しかし、オブジェクト指向に沿ったソフトウエア構造であれば、アプリケーションと部品、部品と部品が相互作用を及ぼし合い、部品切り替えに応じて何らかの処理を行う必要性が生じてくる。
【０００７】
従来は、古い部品を使い続けることで不具合が生じる場合は、部品切り替え後にアプリケーションを再起動する等して、古い部品を一掃し、新しい部品を用いるということを行っていた。
【０００８】
すなわち、アプリケーションを動作させたまま部品を切り替えるという部品の動的な切り替えと、部品の切り替えに応じた処理の実行を両立させることは実現できていなかった。特許文献３に開示されるプラグイン機構を用いる技術についても同様である。
【０００９】
そこで、本発明の目的は、アプリケーションが部品の切り替えの詳細を把握しなくても、部品の切り替えに応じた処理も実行することを可能とすることにある。
【課題を解決するための手段】
【００１０】
本発明の情報処理方法は、アプリケーションをカスタマイズするための情報処理方法において、前記アプリケーションが使用する第１の部品の抽象型と前記第１の部品が使用する第２の部品の抽象型とをカスタマイズ機構に登録する登録工程と、各部品の抽象型と実装型との関係を前記カスタマイズ機構に保持させる保持制御工程と、部品設定部が、前記第１の部品が管理する複数の第２の部品の実装型の切り替えを前記カスタマイズ機構に通知する通知工程と、前記第１の部品が使用する前記第２の部品の実装型の切り替えに応じて、前記通知を受けたカスタマイズ機構が切り替え後の前記第２の部品の実装型を用いて作成したオブジェクトを用いた処理を実行する実行工程と、を備えることを特徴とする。
【発明の効果】
【００１１】
本発明によれば、アプリケーションが部品の切り替えの詳細を把握しなくても、部品の動的な切り替えを実現することができるとともに、部品の切り替えに応じた処理も実行することが可能となる。
【発明を実施するための最良の形態】
【００１２】
以下、本発明を適用した好適な実施形態を、添付図面を参照しながら詳細に説明する。
【００１３】
本実施形態の情報処理装置の構成について、図１のブロック図を参照して説明する。情報処理装置は、単一のコンピュータ装置で実現してもよいし、必要に応じた複数のコンピュータ装置に各機能を分散して実現するようにしてもよい。複数のコンピュータ装置で構成される場合は、互いに通信可能なようにLocal Area Network（ＬＡＮ）等で接続されている。
【００１４】
図１に示す情報処理装置１００において、１０１は部品切り替えを行うことによってアプリケーションソフトウェア（以下、アプリケーションと略す）をカスタマイズする機能を担うカスタマイズ機構である。１０２はアプリケーションを管理するアプリケーション管理フレームワークである。
【００１５】
１０３は部品切り替え時、又は、部品初期設定時に部品を設定する部品設定部である。１０７は後述する各種リスト及びテーブルを記憶する記憶部である。
【００１６】
１１０はアプリケーションである。アプリケーション１１０はアプリケーション管理フレームワーク１０２の管理単位である。アプリケーション管理フレームワーク１０２は、一乃至複数のアプリケーション１１０を情報処理装置１００内にインストールし、さらに開始、終了、及びアンインストールといったライフサイクル全般に渡る管理を行う。
【００１７】
１１５はソフトウエア部品であるところのメイン部品であり、アプリケーション１１０はこれを使用することができる。なお、メイン部品は、本発明の第１の部品の適用例となる構成である。
【００１８】
ソフトウエア部品とは、ひとかたまりのプログラムであって、何らかの機能を果たすものである。そのプログラムを使用する側のプログラムから見れば、ある機能を実現するプログラムが部品である。あるシステムを実装するとき、使い勝手のよい部品であるためには、インタフェースが明確に決められていることが必須条件であるから、部品は通常、一般的に言われるモジュール、サブルーチン、クラス等の形式をとる。
【００１９】
１１７はソフトウエア部品であるところのサブ部品であり、メイン部品１１５はこれを使用することができる。なお、サブ部品は、本発明の第２の部品の適用例となる構成である。
【００２０】
一乃至複数のメイン部品１１５、一乃至複数のサブ部品１１７、又は、それらの組み合わせは、いずれもアプリケーション管理フレームワーク１０２の管理単位である。アプリケーション管理フレームワーク１０２は、一乃至複数のメイン部品１１５、一乃至複数のサブ部品１１７、又は、それらの組み合わせを情報処理装置１００内にインストール及びアンインストールすることができる。部品であるから、アプリケーション管理フレームワーク１０２はこれらを開始又は終了することはしない。しかしインストールすれば、アプリケーション１１０からこれらを使用することができる。アプリケーション１１０はサブ部品１１７を直接使用することはしないが、メイン部品１１５を通じて間接的に使用しているということはできる。
【００２１】
本実施形態の情報処理装置１００のハードウェア構成は図２のブロック図のようになっている。
【００２２】
図２において、２０１は、装置全体を制御するところの中央処理装置（以下、ＣＰＵと称す）である。２０２は、各種動作プログラムを読み取り可能に格納したＲＯＭである。２０３は、プログラム動作中の一時的な値の保存に用いるＲＡＭである。２０４は、各種時間を計測するタイマである。２０５は、ユーザインタフェースを表示するためのディスプレイである。２０６は、キーボードやマウス等の入力手段である。２０７は、各種設定データファイルを保存しておくための不揮発性メモリのＦｌａｓｈＲＯＭである。２０８は、外部装置と接続するためのネットワークＩ／Ｆである。２０９は、各種動作プログラム及び設定データファイルを保存しておくためのハードディスク（以下、ＨＤと称す）である。
【００２３】
なお、部品設定部１０３は、ディスプレイ２０５と入力手段２０６とに対応する構成である。カスタマイズ機構１０１及びアプリケーション管理フレームワーク１０２は、必要に応じてＨＤ２０９からＲＡＭ２０３にロードされ、ＣＰＵ２０１がこれを実行することにより実現する機能構成である。記憶部１０７は、ＨＤ２０９又はＲＡＭ２０３の一部記憶領域に相当する構成である。アプリケーション１１０、メイン部品１１５、サブ部品１１７はＨＤ２０９又はＲＡＭ２０３に格納されるプログラム及びデータである。
【００２４】
次に、アプリケーション１１０における、使用メイン部品登録手順について図５のフローチャートを用いて説明する。この使用メイン部品登録手順は、アプリケーション１１０のインストール又は開始に伴って実行される。
【００２５】
まず、アプリケーション１１０は、カスタマイズ機構１０１のオブジェクトを取得する（Ｓ８０１）。これは、カスタマイズ機構１０１に対しオブジェクト取得を要求することによって達成される。
【００２６】
次に、アプリケーション１１０は、アプリケーション管理フレームワーク１０２から、アプリケーション１１０自身を他のアプリケーションから識別するためのアプリケーションＩＤを取得する（Ｓ８０２）。上述したようにアプリケーション１１０は、情報処理装置１００内に複数個インストールすることができる。アプリケーション管理フレームワーク１０２はその各々に対しアプリケーションＩＤを与え、識別する。このように自身のアプリケーション１１０に対して付与されたアプリケーションＩＤをアプリケーション１１０は随時取得できる。
【００２７】
図３は、情報処理装置１００内にインストールされたアプリケーション１１０のリストを示すアプリケーションリスト３００の一例を示す図である。アプリケーションリスト３００は、記憶部１０７に記憶されている。
【００２８】
アプリケーション１１０がインストールされるとき、アプリケーション１１０の名前がアプリケーションリストのアプリケーション名項目３１０に格納される。それに付与されたアプリケーションＩＤがアプリケーションＩＤ項目３２０に格納される。アプリケーション１１０からアプリケーションＩＤの要求があったとき、アプリケーション管理フレームワーク１０２はアプリケーションリスト３００を参照して、該当するアプリケーションＩＤを返す。
【００２９】
次に、アプリケーション１１０は、アプリケーションＩＤとともに、自身が使用するメイン部品名とメイン部品型とをカスタマイズ機構１０１に登録する（Ｓ８０３）。登録は、上記Ｓ８０１で得たカスタマイズ機構１０１のオブジェクトのメソッドを呼び出すことによって行う。本実施形態では、一つのソフトウェアブロック（例えばアプリケーション１１０）から別のソフトウェアブロック（例えばからカスタマイズ機構１０１）への要求又は通知をオブジェクトメソッドの呼び出しによって行っている。これはオブジェクト指向アーキテクチャに沿った方法であるが、関数呼び出し、パイプ通信、ソケット通信といった他の方法で行ってもよく、本発明はオブジェクト指向アーキテクチャに限定されるものではない。
【００３０】
上記の使用メイン部品登録手順で登録したメイン部品名とメイン部品型とは図４のメイン部品対応テーブル６００に格納される。メイン部品対応テーブル６００は、アプリケーション１１０毎に設けられ、記憶部１０７に記憶される。
【００３１】
ここで、メイン部品名とメイン部品型とは何かを示すために、Ｊａｖａ言語（Ｊａｖａは米国Ｓｕｎ Ｍｉｃｒｏｓｙｓｔｅｍｓ Ｉｎｃ．の米国及びその他の国における商標又は登録商標である。）を用いた例を示す。以下は、アプリケーション１１０におけるメイン部品オブジェクト生成のコード（以下、コード１と称する）である。
AbstractPanel panel = (AbstractPanel)customize.createComponent(appID, "panel1");
【００３２】
メイン部品名とは、アプリケーション１１０から見てメイン部品オブジェクトを識別するための名前であり、コード１においては、panel1が該当する。
【００３３】
メイン部品型とは、メイン部品１１５の型を表す情報であるが、部品の実装型でなくてもよい。そもそも、アプリケーション１１０と部品とを互いに依存しないように構築したシステムにおいては、アプリケーション１１０が部品の実装型を知らないのは当然である。従って、このメイン部品型は、Ｊａｖａ言語であればインタフェースや抽象クラスといった、抽象的な型でよい。コード１ではAbstractPanelがそれに当たる。この場合、メイン部品そのものは何かと言えば、型情報に着目すればメイン部品型を実装したＪａｖａクラスということになるし、実行時の実体という面に着目すれば、Ｊａｖａインスタンスということになる。
【００３４】
Ｓ８０３でメイン部品名及びメイン部品型が登録されるとき、メイン部品対応テーブル６００において、カスタマイズ機構１０１は与えられたメイン部品名をメイン部品名項目６１０に格納する。さらに、カスタマイズ機構１０１は与えられたメイン部品型をメイン部品型項目６２０に格納する。
【００３５】
次に、メイン部品１１５における部品登録手順について図６のフローチャートを用いて説明する。この部品登録手順は、メイン部品１１５のインストールに伴って実行される。
【００３６】
まず、メイン部品１１５はカスタマイズ機構１０１のオブジェクトを取得する（Ｓ９０１）。
【００３７】
次いで、メイン部品１１５は、自身のメイン部品クラス名とメイン部品型とをカスタマイズ機構１０１に登録する（Ｓ９０２）。メイン部品クラス名とは、メイン部品１１５の実装型を示す名前である。カスタマイズ機構１０１は、登録されたメイン部品クラス名とメイン部品型を、不図示のメイン部品リストのメイン部品クラス名項目とメイン部品型項目とに格納する。このメイン部品リストは、記憶部１０７に記憶されている。
【００３８】
次に、メイン部品１１５は、自身のメイン部品クラス名をパラメータとして、メイン部品１１５が使用するサブ部品名とサブ部品型とをカスタマイズ機構１０１に登録する（Ｓ９０３）。なお、上記のサブ部品名及びサブ部品型は、本発明の識別子の適用例となる構成である。
【００３９】
カスタマイズ機構１０１は、登録されたサブ部品名とサブ部品型とを、不図示のサブ部品対応テーブルのサブ部品名項目とサブ部品型項目とに格納する。サブ部品対応テーブルはメイン部品１１５毎に設けられ、記憶部１０７に記憶されている。
【００４０】
なお、サブ部品１１７に関する用語は、メイン部品１１５の用語に対応している。サブ部品名、サブ部品型、及び後述するサブ部品クラス名然りである。また、メイン部品１１５とサブ部品対応テーブルとの関係は、上述したアプリケーション１１０とメイン部品対応テーブル６００との関係と相似している。
【００４１】
以下に、メイン部品１１５におけるサブ部品１１７生成時のコード（以下、コード２と称する）の例を示す。
AbstractSubPanel subpanel = (AbstractSubPanel)customize.createSubComponent("SimplePanel", "subpanel1");
【００４２】
ここで、subpanel1がサブ部品名であり、AbstractSubPanelがサブ部品型である。SimplePanelはメイン部品１１５を識別するためのメイン部品クラス名である。
【００４３】
次に、メイン部品１１５は、メイン部品１１５自身のインストールパッケージ（アプリケーション管理フレームワーク１０２がインストールする単位である）内にサブ部品１１７を有するか否かを判断する（Ｓ９０４）。
【００４４】
サブ部品１１７を有すると判断された場合は、メイン部品１１５は、有しているサブ部品１１７のサブ部品クラス名及びサブ部品型をカスタマイズ機構１０１に登録する（Ｓ９０５）。
【００４５】
カスタマイズ機構１０１は、登録されたサブ部品クラス名とサブ部品型とを不図示のサブ部品リストのサブ部品クラス名項目とサブ部品型項目とに格納する。
【００４６】
次に、サブ部品１１７における部品登録手順について説明する。この部品登録手順は、サブ部品１１７がメイン部品１１５とは別のインストールパッケージにある場合を仮定したものである。この手順はサブ部品１１７のインストールに伴って実行される。なお、上述したように、サブ部品１１７がメイン部品１１５のインストールパッケージ内にある場合は、図６のＳ９０５で登録される。
【００４７】
まず、サブ部品１１７はカスタマイズ機構１０１のオブジェクトを取得する。次いで、サブ部品１１７は有しているサブ部品クラス名及びサブ部品型をカスタマイズ機構１０１に登録する。これらが、上述したサブ部品リストに格納されることに関しては、上述と同様である。
【００４８】
次に、部品設定部１０３におけるメイン部品設定手順について図７のフローチャートを用いて説明する。
【００４９】
部品設定部１０３は、ディスプレイ２０５上に表示されたユーザインタフェースを利用して各種設定を行うものである。例えば、ウェブブラウザを用いて設定を行うが、本発明はこれに限定されるものではない。具体的には、部品設定部１０３が遠隔にある外部コンピュータ（外部装置）に対して設定のためのウェブページ(画面情報)を送信し、ウェブページを外部コンピュータ上に表示させる。そして、外部コンピュータ上で選択されたメイン部品やサブ部品を示す情報を部品設定部１０３が受信し、選択されたメイン部品を切り替え後のメイン部品やサブ部品として設定する。
【００５０】
さて、メイン部品設定手順において、まずユーザは、メイン部品１１５を設定しようとするアプリケーション１１０を選択する（Ｓ１１０１）。このときユーザはディスプレイ２０５に表示されるアプリケーション一覧画面を用いて設定操作を行う。アプリケーション一覧画面上にはアプリケーションの一覧が表示される。カスタマイズ機構１０１は、アプリケーションによりカスタマイズ機構１０１に登録されたアプリケーションリスト３００からアプリケーション名を抽出して取得する。ここで取得されたアプリケーション名がアプリケーション一覧画面上に表示される。ユーザはこの表示されたアプリケーション一覧の中から一つのアプリケーション１１０を選択して設定ボタンを押す。
【００５１】
ユーザが選択したアプリケーション１１０に基づき、カスタマイズ機構１０１は次にメイン部品１１５を選択させるページを表示する。メイン部品選択ページ１９０１の表示例を図１３に示す。図１３において、１９０２は選択されたアプリケーション１１０が使用するメイン部品名の一覧であり、１９０３は各メイン部品名に対応して選択されているメイン部品クラス名である。
【００５２】
メイン部品名の一覧１９０２は、アプリケーションが登録した図４のメイン部品対応テーブル６００のメイン部品名６１０から取得される。そして、選択されているメイン部品クラス名１９０３は、同テーブルのメイン部品クラス名６３０から取得されるが、初めて設定するときはまだメイン部品クラス名６３０には何も登録されていない。従って、選択されているメイン部品クラス名１９０３の表示は、最初は空である。しかし、メイン部品のインストール時にメイン部品リストに登録された、メイン部品型がメイン部品型６２０と同じであるメイン部品クラスが、登録されるメイン部品クラスの選択候補となる。このメイン部品クラス名が、選択したアプリケーション１１０に登録されるメイン部品クラスの選択候補として、カスタマイズ機構１０１から送信されるウェブページの中に埋め込まれる。例えば、メイン部品名panel1に対応するメイン部品型は図４のメイン部品型６２０を参照すると、AbstractPanelである。また、不図示のメイン部品リストには、図６のＳ９０２での処理の結果、メイン部品型Abstractpanelに対応するメイン部品クラス名として、SimplePanelとFancyPanelとが格納されているものとする。このような場合、選択候補としては、SimplePanelとFancyPanelとがあり、ユーザはリストボックスの操作でこれらから一つを選択できる。
【００５３】
以上のようなユーザインタフェースを用いて、ユーザは各メイン部品名に対し、実際に使用するメイン部品クラス名を選択する（Ｓ１１０２）。
【００５４】
ユーザにより「構成」ボタン１９０４を押下されると、部品設定部１０３は、選択されたアプリケーション１１０のアプリケーションＩＤと、各メイン部品名に対応する、選択されたメイン部品クラス名とをカスタマイズ機構１０１に通知する（Ｓ１１０３）。
【００５５】
このときのカスタマイズ機構１０１でのメイン部品設定手順について説明する。カスタマイズ機構１０１では、部品設定部１０３からアプリケーションＩＤと各メイン部品名に対応するメイン部品クラス名とを受け取る。
【００５６】
そして、カスタマイズ機構１０１は、アプリケーションＩＤから対応するメイン部品対応テーブル６００を求め、各メイン部品名に対応するメイン部品クラス名６３０に、受け取ったメイン部品クラス名を格納する。
【００５７】
次に、カスタマイズ機構１０１における、メイン部品オブジェクト作成手順について図１１のフローチャートを用いて説明する。メイン部品オブジェクトの作成要求を行うのはアプリケーション１１０である。この作成要求の典型的な例は、上記コード１である。
【００５８】
まず、カスタマイズ機構１０１は、アプリケーションＩＤ及びメイン部品名をパラメータとしてメイン部品作成要求を受け付ける（Ｓ１６０１）。
【００５９】
次に、カスタマイズ機構１０１は、アプリケーションＩＤ及びメイン部品名から関連付けられているメイン部品クラス名を取得する（Ｓ１６０２）。これは、メイン部品対応テーブル６００を用いて為される。
【００６０】
カスタマイズ機構１０１は、求めたメイン部品クラス名が指すクラスのオブジェクトを作成する（Ｓ１６０３）。
【００６１】
そして、カスタマイズ機構１０１は、作成したオブジェクトをアプリケーション１１０に返す（Ｓ１６０４）。
【００６２】
次に、部品設定部１０３におけるサブ部品設定手順について図８のフローチャートを用いて説明する。
【００６３】
まず、ユーザは、サブ部品１１７を設定しようとするメイン部品１１５を選択する（Ｓ１２０１）。このときユーザが操作するディスプレイ２０５に表示されるメイン部品クラス名一覧画面は、カスタマイズ機構１０１が、メイン部品リストからメイン部品クラス名を抽出して取得することにより表示される。このメイン部品リストには、メイン部品のインストール時に、図６のＳ９０２の処理の結果、メイン部品クラス名とメイン部品型が格納されている。ユーザはメイン部品クラス名一覧画面に表示されるメイン部品クラス名の一覧から一つのメイン部品１１５を選択して設定ボタンを押す。
【００６４】
ユーザが選択したメイン部品１１５に基づき、カスタマイズ機構１０１は次にサブ部品１１７を選択させるページを表示する。サブ部品選択ページ２１０１の表示例を図１４に示す。図１４において、２１０２は選択されたメイン部品１１５が使用するサブ部品名の一覧であり、２１０３は各サブ部品名に対応して選択されているサブ部品クラス名である。
【００６５】
サブ部品名一覧２１０２は、メイン部品のインストール時に図６のＳ９０３で登録された、メイン部品のサブ部品対応テーブルのサブ部品名項目から取得される。そして、選択されているサブ部品クラス名２１０３は、同テーブルのサブ部品クラス名項目から取得されるが、初めて設定するときはまだサブ部品クラス名項目には何も登録されていないことがある。その場合、選択されているサブ部品クラス名２１０３の表示は、最初は空である。しかし、上述のインストール時にサブ部品リストに登録された、サブ部品型がサブ部品対応テーブルに登録されたサブ部品型項目と同じであるサブ部品クラスが、登録されるサブ部品クラスの選択候補となる。このサブ部品クラス名が、選択したメイン部品１１５に登録されるサブ部品クラスの選択候補として、カスタマイズ機構１０１から送信されるウェブページの中に埋め込まれる。サブ部品対応テーブルには、メイン部品が使用するサブ部品のサブ部品名とサブ部品型が登録されている。例えば、サブ部品名subpanel1に対応するサブ部品型は、サブ部品対応テーブルのサブ部品型項目を参照すると、AbstractSubPanelが登録されているものとする。また、サブ部品リストを参照すると、サブ部品型AbstractSubpanelに対応するサブ部品クラス名としてSimpleSubPanelとFancySubPanelとが存在するものとする。このような場合、選択候補としては、SimpleSubPanelとFancySubPanelとがあり、ユーザはリストボックスの操作でこれらから一つを選択できる。
【００６６】
以上のようなユーザインタフェースを用いて、ユーザは各サブ部品名に対し、実際に使用するサブ部品クラス名を選択する（Ｓ１２０２）。
【００６７】
ユーザにより「構成」ボタン２１０４が押下されると、部品設定部１０３は、選択されたメイン部品１１５を示すメイン部品クラス名と、各サブ部品名に対応する、選択されたサブ部品クラス名とをカスタマイズ機構１０１に通知する（Ｓ１２０３）。
【００６８】
このときのカスタマイズ機構１０１でのサブ部品設定手順を図９のフローチャートを用いて説明する。
【００６９】
カスタマイズ機構１０１は、部品設定部１０３からメイン部品クラス名と各サブ部品名に対応するサブ部品クラス名とを受け取る（Ｓ１４０１）。
【００７０】
そして、カスタマイズ機構１０１は、メイン部品クラス名から、メイン部品のインストール時に登録された、対応するサブ部品対応テーブルを求める。そして、そのサブ部品対応テーブルの各サブ部品名に対応するサブ部品クラス名項目に、受け取ったサブ部品クラス名を格納する（Ｓ１４０２）。
【００７１】
さらに、カスタマイズ機構１０１は、このメイン部品クラス名が示すメイン部品クラスに対し、設定又は更新したサブ部品名を通知する（Ｓ１４０３）。
【００７２】
このときのメイン部品１１５でのサブ部品設定手順について図１０のフローチャートを用いて説明する。
【００７３】
まず、メイン部品１１５において、カスタマイズ機構１０１からサブ部品名を受け取る（Ｓ１５０１）。
【００７４】
次に、メイン部品１１５は、そのサブ部品名に対応するオブジェクトの再作成をカスタマイズ機構１０１に要求する（Ｓ１５０２）。サブ部品１１７のオブジェクトを作成する具体的な手順は後述する。
【００７５】
サブ部品１１７が再作成された後、メイン部品１１５は、これに応じて必要な処理を行う（Ｓ１５０３）。具体的には、ここでサブ部品１１７ａからサブ部品１１７ｂに切り替わったとし、切り替え後はサブ部品１１７ａのオブジェクトは全て不要である場合、メイン部品１１５はサブ部品１１７ａのオブジェクトを捨てる処理を行う。又は、メイン部品１１５は、サブ部品１１７ａのオブジェクトを保持している変数の中身をサブ部品１１７ｂの部品で置き換えた後、サブ部品１１７ｂを用いた処理を行う。さらに、メイン部品１１５は、サブ部品１１７ａの提供するＧＵＩとサブ部品１１７ｂが提供するＧＵＩとが異なる場合、表示画面を新しいＧＵＩで描画するために、再描画処理を行う。
【００７６】
なお、本実施形態では、サブ部品の切り替え時においてのみ、部品切り替えに応じた処理を実行しているが、上述した処理をメイン部品の切り替え時にも適用してもよい。ここで、サブ部品１１７の切り替え時に行われる上記必要な処理について、サブ部品の具体的な例を挙げながら説明する。
【００７７】
第１の例は、上記SimpleSubPanelとFancySubPanelの例である。SimpleSubPanelはシンプルな外観を持つサブパネルであり、FancySubPanelはパネルの外観に装飾を備えるサブパネルであるとする。この場合、サブパネルが変更されれば、変更があったことをユーザに知らせるために画面再描画処理が必要となる。外観が異なるボタン部品等もこの例に入る。
【００７８】
第２の例は、システムにログインしているユーザによって変更されるパネル部品の例である。そのパネル部品にはユーザに関する情報が表示されるとする。システムへの同時ログイン数は１とする。あるユーザがログインしたとき、そのユーザ用のパネル部品に切り替えるが、パネル部品に表示するためのユーザ情報を取得する処理が必要な処理となる。つまり、部品のための初期化処理である。
【００７９】
第３の例は、上記初期化処理と類似しているが、旧部品から新部品へ情報を引き継ぐ処理を行う場合の例である。例えば、旧テキストフィールドから新テキストフィールドへ切り替えられる場合、旧テキストフィールドに入力されていたテキストデータを取得し、新テキストフィールドにそのデータを設定する処理が行われる。
【００８０】
第４の例は、旧ソフトウエア部品がそれまで使用していたリソースの使用を止める、いわばリソースのクローズを行う例である。例えば、旧ソフトウエア部品（ＧＵＩ部品に限らず、計算アルゴリズム部品のような場合もあり得る）がリポジトリやデータベース等のリソースを使用していた場合、新ソフトウエア部品への切り替え時に、それまで使用していたリソースをクローズまたはシャットダウンする例が考えられる。つまり、部品切り替えに伴う清算処理である。
【００８１】
次に、カスタマイズ機構１０１における、サブ部品オブジェクト作成手順について図１２のフローチャートを用いて説明する。サブ部品オブジェクトの作成要求を行うのはメイン部品１１５である。メイン部品１１５は、図１０のＳ１５０２で、サブ部品名に対応するオブジェクトの再作成をカスタマイズ機構１０１に要求する。この作成要求の典型的な例は、上記コード２である。
【００８２】
まず、カスタマイズ機構１０１は、メイン部品クラス名及びサブ部品名をパラメータとしてサブ部品作成要求を受け付ける（Ｓ１７０１）。
【００８３】
次に、カスタマイズ機構１０１は、メイン部品クラス名及びサブ部品名から関連付けられているサブ部品クラス名を取得する（Ｓ１７０２）。これは、メイン部品のインストール時に登録されたサブ部品対応テーブルを用いて為される。
【００８４】
カスタマイズ機構１０１は、求めたサブ部品クラス名が指すクラスのオブジェクトを作成する（Ｓ１７０３）。
【００８５】
そして、カスタマイズ機構１０１は、作成したオブジェクトをメイン部品１１５に返す（Ｓ１７０４）。
【００８６】
以上、図１０及び図１２の手順により、メイン部品１１５がサブ部品１１７を切り替え、旧サブ部品１１０７に代わって新サブ部品１１７を使った動作を行う。あるいは動作を行う準備ができる。一度このような状況になれば、アプリケーション１１０がメイン部品１１５を使用する場合に、新サブ部品１１７が用いられるようになることは自明である。以上の手順は、アプリケーション１１０を再起動することなく達成される。
【００８７】
上述した実施形態においては、アプリケーションがメイン部品を識別可能なメイン部品名とメイン部品の実装上の識別情報であるメイン部品クラス名とを対応付けて管理し、メイン部品の切り替えがあった場合にはメイン部品クラス名を更新している。そして、アプリケーションからメイン部品名を用いた指示に応じて、更新後のメイン部品クラス名に基づきメイン部品を生成し、メイン部品の切り替えに応じた処理を実行するように構成している。
【００８８】
従って、上述した実施形態によれば、アプリケーションが部品の切り替えの詳細を把握しなくても、部品の動的な切り替えを実現することができるとともに、部品の切り替えに応じた処理も実行することが可能となる。
【００８９】
上述した本発明の実施形態を構成する各手段及び各ステップは、コンピュータのＲＡＭやＲＯＭ等に記憶されたプログラムが動作することによって実現できる。このプログラム及び前記プログラムを記録したコンピュータ読み取り可能な記録媒体は本発明に含まれる。
【００９０】
また、本発明は、例えば、システム、装置、方法、プログラムもしくは記録媒体等としての実施形態も可能であり、具体的には、一つの機器からなる装置に適用してもよい。
【００９１】
なお、本発明は、上述した実施形態の機能を実現するソフトウェアのプログラムを、システム又は装置に直接、又は遠隔から供給する。そして、そのシステム又は装置のコンピュータが前記供給されたプログラムコードを読み出して実行することによっても達成される場合を含む。
【００９２】
従って、本発明の機能処理をコンピュータで実現するために、前記コンピュータにインストールされるプログラムコード自体も本発明を実現する。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であってもよい。
【００９３】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される。更に、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳ等が、実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００９４】
更に、その他の方法として、まず記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれる。そして、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵ等が実際の処理の一部又は全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００９５】
【図１】本発明の実施形態に係る情報処理装置の機能的な構成を示すブロック図である。
【図２】本発明の実施形態に係る情報処理装置のハードウェア構成を示すブロック図である。
【図３】アプリケーションリストの一例を示す図である。
【図４】メイン部品対応テーブルの一例を示す図である。
【図５】アプリケーションにおける使用メイン部品登録手順を示すフローチャートである。
【図６】メイン部品における部品登録手順を示すフローチャートである。
【図７】部品設定部におけるメイン部品設定手順を示すフローチャートである。
【図８】部品設定部におけるサブ部品設定手順を示すフローチャートである。
【図９】カスタマイズ機構におけるサブ部品設定手順を示すフローチャートである。
【図１０】メイン部品におけるサブ部品設定手順を示すフローチャートである。
【図１１】カスタマイズ機構におけるメイン部品オブジェクト作成手順を示すフローチャートである。
【図１２】カスタマイズ機構におけるサブ部品オブジェクト作成手順を示すフローチャートである。
【図１３】メイン部品選択ページの表示例を示す図である。
【図１４】サブ部品選択ページの表示例を示す図である。
【符号の説明】
【００９６】
１００  情報処理装置
１０１  カスタマイズ機構
１０２  アプリケーション管理フレームワーク
１０３  部品設定部
１０７  記憶部
１１０  アプリケーション
１１５  メイン部品
１１７  サブ部品
【図１】
0005213573.tif 000002
【図２】
0005213573.tif 000003
【図３】
0005213573.tif 000004
【図４】
0005213573.tif 000005
【図５】
0005213573.tif 000006
【図６】
0005213573.tif 000007
【図７】
0005213573.tif 000008
【図８】
0005213573.tif 000009
【図９】
0005213573.tif 000010
【図１０】
0005213573.tif 000011
【図１１】
0005213573.tif 000012
【図１２】
0005213573.tif 000013
【図１３】
0005213573.tif 000014
【図１４】
0005213573.tif 000015