(57)【特許請求の範囲】
【請求項１】
ソフトウェア部品で構成されたコンポーネントのうち、ユーザ同士で共有する共有コンポーネントを格納する共有コンポーネント格納手段と、
前記共有コンポーネント格納手段から前記共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントローダ手段と、
ソフトウェア部品で構成されたコンポーネントのうち、任意のユーザに使用される個別コンポーネントを当該ユーザごとに格納する個別コンポーネント格納手段と、
前記個別コンポーネント格納手段から前記個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントローダ手段と、
前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報を格納する構成情報格納手段と、
外部端末からネットワークを介して前記ユーザ識別子を受信する要求受信手段と、
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が示す前記共有コンポーネントまたは前記個別コンポーネントを、前記共有コンポーネントローダ手段または前記個別コンポーネントローダ手段から取得するコンポーネント取得手段と、
前記コンポーネント取得手段により取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手段と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手段と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手段と、
前記個別コンポーネントを、前記個別コンポーネントローダ手段に読み込ませて実行可能な状態で前記ユーザごとに前記個別コンポーネントローダ手段に保持させるローダ管理手段と、
を備え、
前記ユーザ識別子とともに、当該ユーザ識別子に対応づけられていない他の個別コンポーネントの割り当てを要求することを示す情報を前記要求受信手段が受信したとき、
前記ローダ管理手段は、
前記他の個別コンポーネントを前記個別コンポーネントローダ手段に読み込ませ、
前記構成情報格納手段は、
前記ユーザ識別子に対応づけられた前記構成情報に、前記他の個別コンポーネントを示す情報を追加する
ことを特徴とするサービス提供装置。
【請求項２】
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が前記構成情報格納手段に格納されているか否かを判定する有無判定手段
を更に備えることを特徴とする請求項１に記載のサービス提供装置。
【請求項３】
前記有無判定手段が、前記ユーザ識別子に対応づけられた前記構成情報が前記構成情報格納手段に格納されていないと判定したとき、
前記コンポーネント取得手段は、前記共有コンポーネントを前記共有コンポーネントローダ手段から取得し、
前記プログラムコード生成手段は、前記コンポーネント取得手段により取得された前記共有コンポーネントを示す情報を前記参照先に代入することにより前記プログラムコードを生成する
ことを特徴とする請求項２に記載のサービス提供装置。
【請求項４】
ソフトウェア部品で構成されたコンポーネントのうち、ユーザ同士で共有する共有コンポーネントを格納する共有コンポーネント格納手段と、
前記共有コンポーネント格納手段から前記共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントローダ手段と、
ソフトウェア部品で構成されたコンポーネントのうち、任意のユーザに使用される個別コンポーネントを当該ユーザごとに格納する個別コンポーネント格納手段と、
前記個別コンポーネント格納手段から前記個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントローダ手段と、
所定割合以上のユーザにより共通して使用される同一の前記個別コンポーネントを実行可能な状態に保持する一部共有コンポーネントローダ手段と、
前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報を格納する構成情報格納手段と、
外部端末からネットワークを介して前記ユーザ識別子を受信する要求受信手段と、
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が示す前記共有コンポーネントまたは前記個別コンポーネントを、前記共有コンポーネントローダ手段、前記個別コンポーネントローダ手段または前記一部共有コンポーネントローダ手段から取得するコンポーネント取得手段と、
前記コンポーネント取得手段により取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手段と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手段と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手段と
を備えるサービス提供装置。
【請求項５】
前記個別コンポーネントを、前記個別コンポーネントローダ手段に読み込ませて実行可能な状態で前記ユーザごとに前記個別コンポーネントローダ手段に保持させるローダ管理手段と、
前記同一の個別コンポーネントを格納する一部共有コンポーネント格納手段と、
を更に備え、
前記ローダ管理手段が、
前記同一の個別コンポーネントを前記個別コンポーネント格納手段から前記一部共有コンポーネント格納手段に移動させる
ことを特徴とする請求項４に記載のサービス提供装置。
【請求項６】
外部端末と、
前記外部端末とネットワークを介して接続された、請求項１から５のいずれか１項に記載のサービス提供装置と、
を備えるサービス提供システム。
【請求項７】
ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロードステップと、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態でユーザ毎に保持する個別コンポーネントロードステップと、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信ステップと、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信ステップにおいて受信した前記ユーザ識別子と、に基づいて、前記共有コンポーネントロードステップで実行可能な状態に保持された前記共有コンポーネントまたは前記個別コンポーネントロードステップで実行可能な状態に保持された前記個別コンポーネントを取得するコンポーネント取得ステップと、
前記コンポーネント取得ステップで取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成ステップと、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行ステップと、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答ステップと、
前記ユーザ識別子とともに、当該ユーザ識別子に対応づけられていない他の個別コンポーネントの割り当てを要求することを示す情報を受信するステップと、
前記他の個別コンポーネントを読み込んで実行可能な状態に保持するステップと、
前記ユーザ識別子に対応づけられた前記構成情報に、前記他の個別コンポーネントを示す情報を追加するステップと、
を含むことを特徴とするサービス提供方法。
【請求項８】
ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロード手順と、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態でユーザ毎に保持する個別コンポーネントロード手順と、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信手順と、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信手順において受信した前記ユーザ識別子と、に基づいて、前記共有コンポーネントロード手順で実行可能な状態に保持された前記共有コンポーネントまたは前記個別コンポーネントロード手順で実行可能な状態に保持された前記個別コンポーネントを取得するコンポーネント取得手順と、
前記コンポーネント取得手順で取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手順と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手順と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手順と、
前記ユーザ識別子とともに、当該ユーザ識別子に対応づけられていない他の個別コンポーネントの割り当てを要求することを示す情報を受信する手順と、
前記他の個別コンポーネントを読み込んで実行可能な状態に保持する手順と、
前記ユーザ識別子に対応づけられた前記構成情報に、前記他の個別コンポーネントを示す情報を追加する手順と、
をコンピュータに実行させるサービス提供プログラム。
【請求項９】
ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロードステップと、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態で保持する個別コンポーネントロードステップと、
所定割合以上のユーザにより共通して使用される同一の前記個別コンポーネントを実行可能な状態に保持するステップと、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信ステップと、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信ステップにおいて受信した前記ユーザ識別子と、に基づいて、前記保持された前記共有コンポーネントまたは前記個別コンポーネントを取得するコンポーネント取得ステップと、
前記コンポーネント取得ステップで取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成ステップと、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行ステップと、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答ステップと、
を含むことを特徴とするサービス提供方法。
【請求項１０】
ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロード手順と、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態でユーザ毎に保持する個別コンポーネントロード手順と、
所定割合以上のユーザにより共通して使用される同一の前記個別コンポーネントを実行可能な状態に保持する手順と、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信手順と、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信手順において受信した前記ユーザ識別子と、に基づいて、前記実行可能な状態に保持された前記共有コンポーネントまたは前記個別コンポーネントを取得するコンポーネント取得手順と、
前記コンポーネント取得手順で取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手順と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手順と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手順と、
をコンピュータに実行させるサービス提供プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、サービス提供装置、サービス提供方法およびサービス提供プログラムに関する。
【背景技術】
【０００２】
近年、複数の利用者に対して同一のプラットフォーム上で様々なサービスを提供するＳａａＳ（Software as a Service）／ＡＳＰ（Application Service Provider）型のサービスが注目を集めている。こうした形態のサービスの代表的なものとして、例えば、Salesforce.comなどが存在する。【０００３】
こうしたＳａａＳ／ＡＳＰ型のサービスは、予め準備されたサービスを、契約した利用者が利用することが前提になっているので、デフォルトサービスの機能だけでは十分ではなく、利用者ごとにカスタマイズすること（これをカスタマイズ要件という。）がある。【０００４】
こうした利用者ごとのカスタマイズ要件に対して既存のＡＳＰ事業者は、利用者ごとに個別に用意したサーバハードウェア上や仮想ＯＳ（Operating System）上に、その利用者専用のカスタマイズされたサービス提供装置を構築してきた。例えば、ＶＭＷａｒｅ（http://www.vmware.com/jp/)、Ｘｅｎ(http://www.xen.org/)などの仮想化技術により、利用者専用のカスタマイズされたサービス提供装置を構築するソリューションが提供されていた。この場合、サービスの下位レイヤであるミドルウェア、ＯＳ、サーバハードウェアなどは、利用者ごとに多重配備されていた。【０００５】
これ以外に、利用者ごとにカスタマイズサービスを提供する方法として、Ｊａｖａ（登録商標）技術などを用いたアプリケーションサーバを使用して、利用者ごとに別々のカスタマイズサービスをアプリケーションサーバ上に配備するという方法がある。この方法に関し、簡略化した構成図を図１３に示す。【０００６】
図１３に示したサービス提供装置１は、要求受信応答部５と、デフォルトサービス用ローダ１０と、利用者ごとのサービス用ローダ１１〜１Ｎとを備えている。【０００７】
デフォルトサービス用ローダ１０には、不特定の利用者に対してサービス提供するためのデフォルトサービスクラス群２０が配備されている。一方、利用者ごとのサービス用ローダ１１〜１Ｎには、利用者ごとのカスタマイズ要件を反映したカスタマイズサービスクラス群２１〜２Ｎが配備されている。このとき、各サービス用ローダ１１〜１Ｎ内に、どのようにクラスが配備されるかについて、図１４を用いて説明する。【０００８】
図１４において、デフォルトサービス用ローダ１０にロードされているデフォルトサービスクラス群２０は、デフォルトサービスコンポジット２０００を有している。このデフォルトサービスコンポジット２０００は、コンポーネント２００１、２００２、２００３及び２００４を有している。【０００９】
サービス用ローダ１１にロードされているカスタマイズサービスクラス群２１は、デフォルトサービスコンポジット２０００と同様のクラスを配備しているが、コンポーネント２００２の代わりに、カスタマイズされたコンポーネント２０１１が配備されている。このコンポーネント２０１１を配備することにより、カスタマイズ要件を満たしている。【００１０】
同様にサービス用ローダ１２にロードされているカスタマイズサービスクラス群２２は、コンポーネント２００４の代わりに、カスタマイズされたコンポーネント２０２１が配備されている。このコンポーネント２０２１を配備することにより、カスタマイズ要件を満たしている。【００１１】
図１４から分かるように、この方法では、共有することができるコンポーネント２００１、２００３が、多重にサービス用ローダに配備されている。【００１２】
このように、利用者ごとに同じサービスを配備する方法に対して、１つのサービスのみを配備して、サービス内でカスタマイズ要件を実現するロジックを組み込む方法も考えられる。しかしながら、この場合、カスタマイズ要件が発生する都度、追加されたカスタマイズ要件へ分岐させるようにサービスロジックを修正し、再コンパイルやサービスの再配備などを行う必要がある。また、このときは、サービス全体を一時的に停止する必要がある。【００１３】
こうしたサービスの変更に伴うサービス全体の停止を解決するものとして、高度にモジュール化されたソフトウェアの一部分を変更し、ソフトウェア全体を停止することなく再配備するというシステムの一例が、特許文献1に開示されている。【００１４】
また、特許文献１と同様なシステムであって、再コンパイル、再起動を行わずにプラグインモジュールを追加することができるシステムの一例が、特許文献２に開示されている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００３−３３７７０２号公報
【特許文献２】特開２００４−５３４３０４号公報
【発明の概要】
【００１６】
しかしながら、図１３と図１４で記載されているように、上記特許文献１および２に記載されたものは、以下の点で改善の余地を有していた。
【００１７】
それは、利用者ごとのカスタマイズ要件に対する対応と、電子計算機におけるリソースの効率的な活用との両立を図ることが困難である、ということであった。
【００１８】
なぜなら、１つのサービスを複数の利用者で使用している場合、それぞれの利用者のカスタマイズ要件をサービスに盛り込むことは困難だからである。確かに、リクエスト元の利用者に応じて挙動を変えるようにサービスをプログラミングすることは可能ではある。しかしながら、その場合、新たな利用者とそのカスタマイズ要件が追加される都度、サービスコードの変更、再配備などを行わなければならない。
【００１９】
このため、利用者ごとのカスタマイズ要件に対応するには、同一のサービスを利用者毎に複数配備し、それぞれのサービスに対してカスタマイズ要件を反映させる方法がもっとも容易な実現方法となる。また、利用者ごとに同一のサービスを複数配備する方法は、利用者ごとに別々のハードウェアを用意したり、同一のハードウェア上で別々の仮想ＯＳを用意するなどの様々な実現方法が考えられる。
【００２０】
しかしながら、これらの方法は、共通に利用できるはずのサービスコンポーネント、ミドルウェア、ＯＳ、ハードウェアなどを複数配備することになるので、電子計算機のリソースに無駄が生じていた。
【００２１】
従って、利用者ごとのカスタマイズ要件に対する対応と、電子使用計算機におけるリソースの効率的な活用とを両立することが困難である、という問題があった。
【００２２】
本発明は上記事情に鑑みてなされたものであり、その目的とするところは、利用者ごとのカスタマイズ要件に対する対応と、電子計算機におけるリソースの効率的な活用との両立を図ることができるサービス提供装置、サービス提供システム、サービス提供方法およびサービス提供プログラムを提供することにある。
【００２３】
本発明によれば、ソフトウェア部品で構成されたコンポーネントのうち、ユーザ同士で共有する共有コンポーネントを格納する共有コンポーネント格納手段と、
前記共有コンポーネント格納手段から前記共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントローダ手段と、
ソフトウェア部品で構成されたコンポーネントのうち、任意のユーザに使用される個別コンポーネントを当該ユーザごとに格納する個別コンポーネント格納手段と、
前記個別コンポーネント格納手段から前記個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントローダ手段と、
前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報を格納する構成情報格納手段と、
外部端末からネットワークを介して前記ユーザ識別子を受信する要求受信手段と、
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が示す前記共有コンポーネントまたは前記個別コンポーネントを、前記共有コンポーネントローダ手段または前記個別コンポーネントローダ手段から取得するコンポーネント取得手段と、
前記コンポーネント取得手段により取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手段と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手段と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手段と、
を備えることを特徴とするサービス提供装置が提供される。
【００２４】
本発明によれば、外部端末と、前記外部端末とネットワークを介して接続されたサービス提供装置とを備えたサービス提供システムであって、
前記サービス提供装置は、
ソフトウェア部品で構成されたコンポーネントのうち、ユーザ同士で共有する共有コンポーネントを格納する共有コンポーネント格納手段と、
前記共有コンポーネント格納手段から前記共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントローダ手段と、
ソフトウェア部品で構成されたコンポーネントのうち、任意のユーザに使用される個別コンポーネントを当該ユーザごとに格納する個別コンポーネント格納手段と、
前記個別コンポーネント格納手段から前記個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントローダ手段と、
前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報を格納する構成情報格納手段と、
前記外部端末から前記ネットワークを介して前記ユーザ識別子を受信する要求受信手段と、
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が示す前記共有コンポーネントまたは前記個別コンポーネントを、前記共有コンポーネントローダ手段または前記個別コンポーネントローダ手段から取得するコンポーネント取得手段と、
前記コンポーネント取得手段により取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手段と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手段と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手段と、
を備えることを特徴とするサービス提供システムが提供される。
【００２５】
本発明によれば、ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロードステップと、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントロードステップと、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信ステップと、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信ステップにおいて受信した前記ユーザ識別子と、に基づいて、前記共有コンポーネントロードステップで実行可能な状態に保持された前記共有コンポーネントまたは前記個別コンポーネントロードステップで実行可能な状態に保持された前記個別コンポーネントを取得するコンポーネント取得ステップと、
前記コンポーネント取得ステップで取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成ステップと、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行ステップと、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答ステップと、
を含むことを特徴とするサービス提供方法が提供される。
【００２６】
本発明によれば、
ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロード手順と、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントロード手順と、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信手順と、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信手順において受信した前記ユーザ識別子と、に基づいて、前記共有コンポーネントロード手順で実行可能な状態に保持された前記共有コンポーネントまたは前記個別コンポーネントロード手順で実行可能な状態に保持された前記個別コンポーネントを取得するコンポーネント取得手順と、
前記コンポーネント取得手順で取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手順と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手順と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手順と、
をコンピュータに実行させるサービス提供プログラムが提供される。
【００２７】
なお、以上の構成要素の任意の組合せ、本発明の表現を方法、装置、システム、記録媒体、コンピュータプログラムなどの間で変換したものもまた、本発明の態様として有効である。
【００２８】
本発明によれば、利用者ごとのカスタマイズ要件に対する対応と、電子計算機におけるリソースの効率的な活用との両立を図ることができるサービス提供装置、サービス提供システム、サービス提供方法およびサービス提供プログラムを提供することができる。
【図面の簡単な説明】
【００２９】
上述した目的、およびその他の目的、特徴および利点は、以下に述べる好適な実施の形態、およびそれに付随する以下の図面によってさらに明らかになる。【００３０】
【図１】本実施の形態に係るサービス提供システムの概略の構成を示した概略構成図である。
【図２】本実施の形態に係るサービス提供装置の配備モデルの一例を示した図である。
【図３】本実施の形態に係るサービス提供装置の全体動作を示したフローチャートである。
【図４】本実施の形態に係るサービス提供装置のデフォルトのサービスコンポジットの生成手順について示したフローチャートである。
【図５】本実施の形態に係るサービス提供装置の利用者に応じたサービスコンポジットの生成手順について示したフローチャートである。
【図６】本実施の形態に係るサービス提供装置における要求データの一例を示した図である。
【図７】本実施の形態に係るサービス提供装置におけるデフォルトサービスのサービス構成情報の一例を示した図である。
【図８】本実施の形態に係るサービス提供装置におけるカスタマイズサービスのサービス構成情報の一例を示した図である。
【図９】本実施の形態に係るサービス提供装置におけるサービスコンポジットの構成の一例を示した図である。
【図１０】本実施の形態に係るサービス提供装置におけるコンポジット実装例であるプログラムコードの一例を示した図である。
【図１１】本実施の形態に係るサービス提供装置のカスタマイズコンポーネントの配備について示したフローチャートである。
【図１２】本実施の形態に係るサービス提供装置のカスタマイズコンポーネントの解除について示したフローチャートである。
【図１３】サービス提供装置の概略の構成を示した概略構成図である。
【図１４】サービス提供装置の配備モデルの一例を示した図である。
【発明を実施するための形態】
【００３１】
以下、本発明の実施の形態について、図面を用いて説明する。尚、すべての図面において、同様な構成要素には同様の符号を付し、適宜説明を省略する。
【００３２】
図１は、本実施の形態に係るサービス提供システムの概略の構成を示した概略構成図である。図１に示すサービス提供システムは、サービス提供装置１００と、ネットワーク１８０と、外部端末１９０とを備えている。
【００３３】
図１に示すサービス提供装置１００は、要求受信応答部１０１と、コンポーネント注入部１０２と、構成情報格納部１０４と、コンポーネントローダ群１５０とを備えている。また、コンポーネントローダ群１５０は、デフォルトコンポーネントローダ１１０と、コンポーネントローダ１１１、１１２・・・１１Ｎと、デフォルトサービスクラス群１２０と、カスタマイズクラス群１２１、１２２・・・１２Ｎとを備えている。
【００３４】
デフォルトサービスクラス群（共有コンポーネント格納手段）１２０は、ソフトウェア部品で構成されたコンポーネントのうち、ユーザ同士で共有するコンポーネントを格納している。
【００３５】
デフォルトコンポーネントローダ（共有コンポーネントローダ手段）１１０は、デフォルトサービスクラス群１２０からデフォルトコンポーネント（共有コンポーネント）を読み込んで実行可能な状態に保持している。
【００３６】
カスタマイズクラス群（個別コンポーネント格納手段）１２１〜１２Ｎは、ソフトウェア部品で構成されたコンポーネントのうち、任意のユーザごとに使用されるカスタマイズコンポーネント（個別コンポーネント）をユーザごとに格納している。ここで、個別コンポーネントを使用する任意のユーザは、一人または複数人である。一の個別コンポーネントのユーザと、他の個別コンポーネントのユーザとは、互いに重複してもよい。個別コンポーネントごとのユーザの人数は特に限定されず、デフォルトコンポーネントを共有しているユーザのうちの一部でも全部でもよい。
【００３７】
コンポーネントローダ（個別コンポーネントローダ手段）１１１〜１１Ｎは、カスタマイズクラス群１２１〜１２Ｎからカスタマイズコンポーネントを読み込んで実行可能な状態に保持している。
【００３８】
また、構成情報格納部１０４は、ユーザごとに割り当てられたユーザ識別子に対応づけられた、デフォルトコンポーネントまたはカスタマイズコンポーネントのうち少なくとも一方を示す情報が示された構成情報を格納している。また、この構成情報には、デフォルトコンポーネントまたはカスタマイズコンポーネントの参照点（参照先）も記載されている。
【００３９】
ここで、デフォルトコンポーネントまたはカスタマイズコンポーネントのうち少なくとも一方を示す情報とは、コンポーネントの名称や格納されている格納場所などを指している。また、参照点とは、デフォルトコンポーネントまたはカスタマイズコンポーネントを実行可能なプログラムに注入する注入先を示している。なお、本実施の形態において、注入とは、構成情報に記載された参照点にコンポーネントを代入するこという。すなわち、注入と代入は同義であって、該当するコンポーネントを参照点に概念的に入れる処理を示すものである。
【００４０】
要求受信応答部（要求受信手段）１０１は、外部端末１９０からネットワーク１８０を介して、ユーザ識別子を受信する。
【００４１】
コンポーネント注入部（コンポーネント取得手段）１０２は、要求受信応答部１０１が受信したユーザ識別子に対応づけられた構成情報が示すデフォルトコンポーネントまたはカスタマイズコンポーネントを、デフォルトコンポーネントローダ１１０またはコンポーネントローダ１１１〜１１Ｎから取得する。
【００４２】
また、コンポーネント注入部１０２は、プログラムコード実行部１３０と、プログラムコード生成部１６０とを備えており、プログラムコード実行部１３０によるプログラムコードを実行する機能と、プログラムコード生成部１６０によるプログラムコードを生成する機能とを備えている。
【００４３】
プログラムコード生成部１６０は、取得されたデフォルトコンポーネントまたはカスタマイズコンポーネントを示す情報を構成情報に示された参照先に代入することにより、実行形式のプログラムコードを生成する。
【００４４】
プログラムコード実行部１３０は、生成されたプログラムコードを実行し、その実行結果を作成する。
【００４５】
このように、コンポーネント注入部１０２は、デフォルトコンポーネントまたはカスタマイズコンポーネントを取得する機能と、プログラムを生成する機能と、プログラムを実行する機能とを有している。
【００４６】
要求受信応答部（応答手段）１０１は、コンポーネント注入部１０２による実行結果を外部端末１９０に返信することにより通信サービスを提供する。
【００４７】
なお、デフォルトコンポーネントローダ１１０は、利用者に依存しないデフォルトサービス（言い換えると、利用者が共有するサービスである。）を実行するのに必要なデフォルトサービスクラス群１２０をロードしている。
【００４８】
また、コンポーネントローダ１１１〜１１Ｎは、カスタマイズ要件を希望する利用者と、１対１の関係になっており、デフォルトサービスクラス群との差分にあたるカスタマイズ要件を実装したカスタマイズクラス群１２１〜１２Ｎを、それぞれロードしている。
【００４９】
ここで、本実施の形態において、実装とは、実装された具体的なコンポーネントなどのプログラムを指すこととし、実行できる状態のプログラムコードや実行形式を指すこととする。また、デフォルトコンポーネントまたはカスタマイズコンポーネントをデフォルトコンポーネントローダ１１０またはコンポーネントローダ１１１〜１１Ｎから取得するとは、例えば、ロード先であるアドレスを取得することが該当する。また、本実施の形態では、ロード先であるアドレスを取得することに限定されるものではなく、例えば、該当するコンポーネントを実行プログラムとしてコピーにより取得する形態であってもいい。
【００５０】
また、コンポーネントローダ１１１〜１１Ｎは、カスタマイズ要件を適用すべき利用者の数だけ用意されるようになっており、図示された数に限定されるものではなく、任意に設けることができる。
【００５１】
また、構成情報格納部１０４は、複数の利用者によって利用される１以上のサービスについて、利用者ごとに対応づけられたサービスの構成を示す構成情報をユーザごとに格納している。
【００５２】
これにより、本実施の形態において、コンポーネント注入部１０２は、要求元の利用者に応じて適切なサービスコンポジット（これを、コンポジットオブジェクトともいう。）を構成して実行する。なお、サービスコンポジットとは、コンポーネントから構成される利用者に提供可能なサービスを指し、また、コンポジットオブジェクトは、そのサービスを提供するためのデータとプログラムを意味している。
【００５３】
このように、図１に示したサービス提供装置１００は、上述の構成要素を備えることにより、本実施の形態を実現することができる。
【００５４】
また、サービス提供装置１００は、ローダ管理部１０３を更に備えることができる。この場合、ローダ管理部１０３は、カスタマイズコンポーネントを、コンポーネントローダ１１１〜１１Ｎに読み込ませて実行可能な状態でユーザごとにコンポーネントローダ１１１〜１１Ｎを保持している。
【００５５】
この場合、ローダ管理部１０３は、コンポジット、コンポーネントクラスを格納するローダ全体を管理することができる。
【００５６】
また、コンポーネント注入部１０２は、有無判定部１４０を備えるようにしてもよい。
【００５７】
有無判定部１４０は、要求受信応答部１０１が受信したユーザ識別子に対応づけられた構成情報が構成情報格納部１０４に格納されているか否かを判定する。
【００５８】
有無判定部１４０がユーザ識別子に対応づけられた構成情報が構成情報格納部１０４に格納されていないと判定した場合、コンポーネント注入部１０２は、デフォルトコンポーネントをデフォルトコンポーネントローダ１１０から取得する。そして、コンポーネント注入部１０２は、取得したデフォルトコンポーネントを示す情報を参照点に代入することによりデフォルトサービスを実現するプログラムコードを生成する。
【００５９】
このように、要求受信応答部１０１が構成情報格納部１０４に登録されていないユーザ識別子を受信した場合であっても、コンポーネント注入部１０２は、有無判定部１４０を更に備えることにより、そのユーザにデフォルトサービスを提供することができる。
【００６０】
図２は、本実施の形態に係るサービス提供装置１００において、コンポーネントを配備したモデル（配備モデル）の例を示した図である。
【００６１】
図２に示すデフォルトコンポーネントローダ１１０は、利用者に依存しないデフォルトサービスを実現するためのデフォルトサービスクラス群１２０（図１）がロードされている。デフォルトサービスクラス群１２０は、コンポジットサービスロジックが記述されたサービスコンポジット２１００を有している。このサービスコンポジット２１００は、抽象化されたコンポーネントへの参照点を示すコンポーネントＩ／Ｆ（Interface）２１０１〜２１０４を有している。
【００６２】
また、デフォルトサービスクラス群１２０は、これらのコンポーネントＩ／Ｆ２１０１〜２１０４に対応するデフォルトの実装されるコンポーネント２００１〜２００４を有している。
【００６３】
コンポーネントローダ１１１は、例えば、Ａサービス向けのカスタマイズ要件が実装されたカスタマイズクラス群１２１がロードされている。カスタマイズクラス群１２１は、デフォルト動作ではないＡサービス向けにカスタマイズされたコンポーネント２０１１を有している。このカスタマイズされたコンポーネント２０１１は、サービスコンポジット２１００の参照点であるコンポーネントＩ／Ｆ２１０２に対応している。
【００６４】
同様に、コンポーネントローダ１１２は、カスタマイズクラス群１２２がロードされている。カスタマイズクラス群１２２は、Ｂサービス向けにカスタマイズされたコンポーネント２０２１を有している。このカスタマイズされたコンポーネント２０２１は、参照点であるコンポーネントＩ／Ｆ２１０４に対応している。
【００６５】
本実施の形態では、このような構成により、カスタマイズの対象となっていないコンポーネントを他のサービスと共有することによって、図１４で示した同一のコンポーネントが多重にロードされるようなリソースに無駄が生じることがない。
【００６６】
但し、上述した配備モデルは一例であり、本実施の形態においてコンポーネントローダの数は利用者に応じて増減し得るものであり、その内部にロードされるコンポジット、コンポーネント共に、多様な数や多様な構成を持つものである。
【００６７】
すなわち、本実施の形態では、デフォルトサービスに関連するコンポーネントおよびコンポジットがデフォルトコンポーネントローダにロードされ、カスタマイズが必要な差分となるコンポーネントが利用者ごとのコンポーネントローダにロードされる。
【００６８】
しかしながら、複数存在し得るサービスを構成するコンポーネントやサービスコンポジットは、どのローダでいくつロードされるかについて、場合や条件によって異なるため、これらに限定されるものではない。
【００６９】
例えば、所定割合以上のユーザにより共通して使用される同一のカスタマイズコンポーネント１７２を、実行可能な状態に保持する一部共有コンポーネントローダ１７０を更に備えるようにしてもよい（図２参照）。なお、ここで同一のカスタマイズコンポーネントとは、同等または同種の機能を発揮することができるコンポーネントを意味する。したがって、同一のカスタマイズコンポーネントは、そのサービスを提供することを阻害しない範囲で、同等または同種のサービスを提供することができる。
【００７０】
この場合、本実施の形態では、同一の個別コンポーネントを格納する一部共有コンポーネント格納クラス群１７１を更に備え、ローダ管理部１０３が、同一のカスタマイズコンポーネント１７２をカスタマイズコンポーネント格納クラス群から一部共有コンポーネント格納クラス群１７１に移動させ、かつ一部共有コンポーネントローダ１７０を生成することができる。
【００７１】
なお、本実施の形態におけるコンポーネントとは、任意の機能を実現するためのソフトウェア部品を指している。例えば、オブジェクト指向プログラミング技術、コンポーネント指向プログラミング技術、ＳＯＡ（Service Oriented Architecture）技術等に基づいて構築されたソフトウェア部品である。また、本実施の形態では、こうしたコンポーネントの組み合わせで実現されるより粒度の大きい機能単位をコンポジットと呼ぶこととする。更に、コンポジットは、それ自体が更に粒度の大きいコンポジットを構成するコンポーネントと捉えることができる。
【００７２】
また、本実施の形態において、クラスとは、プログラムの振る舞いをコンパイルし、実行できる形態に変換したファイルのことをいう。したがって、コンポーネントクラスと表現するときは、コンポーネントがコンパイルされた実行可能なコンポーネントを意味している。また、実行されるプログラムは、実行するデータと実行する処理とから構成されるものとする。また、オブジェクトは、プログラムと設定データの組み合わせによって構成されている。そして、実行可能なプログラムを読み出して、完全に実行できる状態または実行中を含めて、インスタンスという。すなわち、インスタンス化されたものが、実行形式のプログラムとなる。
【００７３】
そして、本実施の形態における利用者とは、サービス提供装置１００で提供されているサービスを利用する主体全般をさすものとする。具体的には、人間、人間が使用している端末装置、プログラム、さらに人間のインタラクションとは直接関係なく動作している装置およびプログラムのことを指すものとする。
【００７４】
次に、サービス提供装置１００を構成する各部の概略動作について説明する。
【００７５】
要求受信応答部１０１は、外部端末１９０を操作する利用者から、ネットワーク１８０を介して、要求データを受信する。要求受信応答部１０１は、要求データから要求元を判別するための情報（ユーザ識別子）、利用サービスを識別する情報及び利用サービスに対するパラメータを取り出す。そして、要求受信応答部１０１は、取り出した情報等をコンポーネント注入部１０２へ渡す。
【００７６】
コンポーネント注入部１０２は、要求受信応答部１０１から取得した情報等を基に、構成情報格納部１０４へ問い合わせる。そして、コンポーネント注入部１０２は、呼び出し元のサービスコンポジットと注入すべきコンポーネントの組を構成情報格納部１０４から取得する。コンポーネント注入部１０２は、必要なサービスコンポジットや注入すべきコンポーネントクラスがどのコンポーネントローダに存在するかという情報をローダ管理部１０３から取得する。そして、コンポーネント注入部１０２は、構成情報格納部１０４から取得したサービスコンポジットと注入すべきコンポーネントの抽象的な参照点にコンポーネントクラスを注入し、サービスコンポジットを実体化する。
【００７７】
更に、コンポーネント注入部１０２は、実体化されたサービスコンポジットを実行する。そして、要求受信応答部１０１は、実体化されてサービスコンポジットが実行された戻り値を、ネットワーク１８０を介して、外部端末１９０を有する利用者へ返す。
【００７８】
なお、上述の注入とは、本実施の形態において、コンポーネント実装を参照点に代入する処理のことをいう。
【００７９】
次に、本実施の形態に係るサービス提供装置１００の全体動作について、図面を用いて説明する。図３は、本実施の形態に係るサービス提供装置１００の全体動作を示したフローチャートである。
【００８０】
図３に示すフローチャートにおいて、まず要求受信応答部１０１は、利用者からの要求データを受信する（ステップＳ１００１）。要求受信応答部１０１は、利用者の情報（ユーザ識別子などの利用者情報）、利用サービスの特定に必要な情報、パラメータ等を要求データから抽出する（ステップＳ１００２）。
【００８１】
コンポーネント注入部１０２は、抽出された利用者情報、サービスの特定に必要な情報、パラメータ等の組を、要求受信応答部１０１から受け取る。そして、コンポーネント注入部１０２は、利用者情報に該当するサービスの構成情報を構成情報格納部１０４に問い合わせる（ステップＳ１００３）。
【００８２】
ここで、コンポーネント注入部１０２は、利用者情報に対するカスタマイズ要件が存在するか否か判定する（ステップＳ１００４）。構成情報格納部１０４にカスタマイズ要件が存在する場合には（ステップＳ１００４のＹ）、コンポーネント注入部１０２は、構成情報格納部１０４から利用者に応じた構成情報を取得する。そして、コンポーネント注入部１０２は、その構成情報を基に、サービスコンポジットを生成し、そのコンポジットオブジェクト取得する（ステップＳ１００７）。
【００８３】
一方、ステップＳ１００４の判定の結果、構成情報格納部１０４にカスタマイズ要件が存在しない場合には（ステップＳ１００４のＮ）、コンポーネント注入部１０２は、構成情報格納部１０４からデフォルトサービスの構成情報を取得する。そして、コンポーネント注入部１０２は、そのデフォルトサービスの構成情報からサービスコンポジットを生成し、そのコンポジットオブジェクトを取得する（ステップＳ１００５）。
【００８４】
ステップＳ１００５又はＳ１００７において取得したコンポジットオブジェクトを実行することにより、コンポーネント注入部１０２は、サービス処理を行う（ステップＳ１００６）。要求受信応答部１０１は、サービス処理の結果を、ネットワーク１８０を介して、要求データに対する返信として利用者に返却する（ステップＳ１００８）。
【００８５】
次に、上記手順において、コンポーネント注入部１０２がステップＳ１００５及びステップＳ１００７によりサービスコンポジットを生成する生成手順について、図４および図５のフローチャートを参照して、動作を詳細に説明する。図４は、ステップＳ１００５におけるデフォルトのサービスコンポジットの生成手順について示したフローチャートである。
【００８６】
まず、デフォルトのサービスコンポジット生成手順では、構成情報格納部１０４から受け取った構成情報によって指定されたサービスコンポジット２１００（図２）をデフォルトコンポーネントローダ１１０から取得する（ステップＳ１５０１）。
【００８７】
コンポーネント注入部１０２は、デフォルトコンポーネントローダ１１０から、該当するサービスコンポジット２１００（これを該当コンポジットともいう。）が取得できたか否か判定する（ステップＳ１５０２）。
【００８８】
コンポーネント注入部１０２は、該当コンポジットを取得できなかった場合には（ステップＳ１５０２のＮ）、該当するサービスを実行することできないことを示すエラーを出力して例外処理を行い、終了する（ステップＳ５０００）。なお、この例外処理は、例えば、ロールバックが実行されて現在処理中のトランザクションが中断され、トランザクション処理を開始する以前の状態に戻すことを意味している。
【００８９】
一方、該当コンポジットを取得することができた場合には（ステップＳ１５０２のＹ）、コンポーネント注入部１０２は、取得したサービスコンポジットを実行可能なインスタンス化する（ステップＳ１５０３）。
【００９０】
ここで、実行可能なインスタンス化とは、上述と同様に、実行形式のプログラムを読み出して、完全に実行できる状態にすることをいう。
【００９１】
そして、コンポーネント注入部１０２は、構成情報によって指定されている注入すべきコンポーネントクラスをデフォルトコンポーネントローダ１１０から取得する（ステップＳ１５０４）。そして、コンポーネント注入部１０２は、この該当するコンポーネントクラス（これを該当コンポーネントという。）が取得できたか否か判定する（ステップＳ１５０５）。
【００９２】
コンポーネント注入部１０２は、該当コンポーネントを取得できなかった場合（ステップＳ１５０５のＮ）、ステップＳ５０００と同様に、エラーを出力して例外処理を行い、終了する（ステップＳ５００１）。
【００９３】
一方、該当コンポーネントを取得することができた場合には（ステップＳ１５０５のＹ）、コンポーネント注入部１０２は、ステップＳ１５０３においてインスタンス化したサービスコンポジットの参照点に、取得したコンポーネントクラスを注入する（ステップＳ１５０６）。
【００９４】
コンポーネントクラスの注入後、コンポーネント注入部１０２は、全ての参照点にコンポーネントクラスを注入したかを判定する（ステップＳ１５０７）。そして、コンポーネント注入部１０２は、まだ注入されていないコンポーネントクラスがある場合には（ステップＳ１５０７のＮ）、次のコンポーネントクラスの注入を行うため、ステップＳ１５０４に戻る。
【００９５】
一方、全ての参照点にコンポーネントクラスの注入が完了した場合には（ステップＳ１５０７のＹ）、コンポーネント注入部１０２は、サービスコンポジットを生成する処理を終了し、サービス提供手順のステップＳ１００６に戻る。
【００９６】
次に、ステップＳ１００７におけるサービスコンポジットの生成手順について、図５のフローチャートを参照して、動作を詳細に説明する。図５は、ステップＳ１００７における利用者に応じたサービスコンポジットの生成手順について示したフローチャートである。
【００９７】
まず、この利用者に応じたサービスコンポジット生成手順では、構成情報格納部１０４から受け取った構成情報によって指定されたサービスコンポジットを、コンポーネント注入部１０２は、該当する利用者のコンポーネントローダから取得する（ステップＳ１７０１）。
【００９８】
コンポーネント注入部１０２は、該当する利用者のコンポーネントローダから、該当するサービスコンポジットが取得できたか否か判定する（ステップＳ１７０２）。
【００９９】
コンポーネント注入部１０２は、該当コンポジットを取得できなかった場合には（ステップＳ１７０２のＮ）、デフォルトコンポーネントローダ１１０から同一のサービスコンポジットを取得する（ステップＳ１７０３）。
【０１００】
コンポーネント注入部１０２は、デフォルトコンポーネントローダ１１０からサービスコンポジットが取得できたか否か判定する（ステップＳ１７０４）。コンポーネント注入部１０２は、該当コンポジットを取得できなかった場合には（ステップＳ１７０４のＮ）、ステップＳ５０００と同様に、該当するサービスを実行することできないことを示すエラーを出力して例外処理を行い、終了する（ステップＳ５００２）。
【０１０１】
ステップＳ１７０２又はステップＳ１７０４のいずれかにおいてサービスコンポジットが取得できたと判定された場合には（ステップＳ１７０２のＹ又はステップＳ１７０４のＹ）、コンポーネント注入部１０２は、そのサービスコンポジットを実行可能にインスタンス化する（ステップＳ１７０５）。
【０１０２】
コンポーネント注入部１０２は、構成情報で指定されている注入すべきコンポーネントクラスを、該当する利用者のコンポーネントローダから取得する（ステップＳ１７０６）。また、コンポーネント注入部１０２は、このコンポーネントクラスが、該当する利用者のコンポーネントローダから取得することができたか否か判定する（ステップＳ１７０７）。
【０１０３】
コンポーネント注入部１０２は、該当するコンポーネントクラスを取得できなかった場合には（ステップＳ１７０７のＮ）、同じコンポーネントクラスを、デフォルトコンポーネントローダ１１０から取得する（ステップＳ１７０８）。また、コンポーネント注入部１０２は、デフォルトコンポーネントローダ１１０から、このコンポーネントクラスが取得できたか否か判定する（ステップＳ１７０９）。
【０１０４】
再び、該当するコンポーネントクラスを取得することができなかった場合は（ステップＳ１７０９のＮ）、コンポーネント注入部１０２は、ステップＳ５０００と同様に、該当するサービスを実行することができないことを示すエラーを出力して例外処理を行い、終了する（ステップＳ５００３）。
【０１０５】
一方、ステップＳ１７０７又はステップＳ１７０９において、コンポーネントクラスを取得することができた場合には（ステップＳ１７０７のＹ又はステップＳ１７０９のＹ）、コンポーネント注入部１０２は、ステップＳ１７０５においてインスタンス化したサービスコンポジットの参照点に、取得したコンポーネントクラスを注入する（ステップＳ１７１０）。
【０１０６】
コンポーネントを注入後、全ての参照点にコンポーネントクラスを注入したか判定し（ステップＳ１７１１）、まだ注入されていないコンポーネントクラスがある場合には（ステップＳ１７１１のＮ）、次のコンポーネントクラスの注入を行うため、ステップＳ１７０６に戻る。
【０１０７】
一方、全ての参照点にコンポーネントクラスの注入が完了した場合には（ステップＳ１７１１のＹ）、コンポーネント注入部１０２は、サービスコンポジットを生成する処理を終了し、サービス提供手順のステップＳ１００６に戻る。
【０１０８】
以上説明したように本実施の形態によれば、サービス提供装置１００は、サービスの要求を受信すると、利用者に応じたサービスコンポジットを生成してサービス処理を実行することにより、ユーザに応じたカスタマイズ要件への対応が可能となる。また、カスタマイズに必要なコンポーネントのみを利用者ごとに管理するとともに、それ以外のサービス提供に必要なコンポーネントについては共有することが可能となるため、電子計算機におけるリソースの効率的な活用との両立を図ることができる。
【０１０９】
また、本実施の形態では、利用者ごとに異なるコンポーネントローダを生成して構成するようになっているが、本実施の形態はこれに限定されるものではない。例えば、複数の利用者のカスタマイズされた機能ごとにグルーピングすることにより、共有するコンポーネントローダごとにグルーピングを行う構成を採用することができる。
【０１１０】
具体的には、契約の単位や組織などにより利用者が多く、所定の割合以上の利用者が共通して利用するカスタマイズコンポーネントをグルーピングすることができる場合に有効である。この場合、グルーピングするカスタマイズコンポーネントのコンポーネントローダ（一部共有コンポーネントローダ）を共有することができるので、コンポーネントローダの管理が容易になる。
【０１１１】
次に、更に具体的な具体例を用いて、本実施の形態に係る動作について、図面を参照しながら説明する。なお、以下に説明する内容は、一具体例であって本実施の形態に係る動作やデータ書式などはこれに限定されるものではない。
【０１１２】
なお、以下に示す具体例では、Ｊａｖａ言語およびその処理系(http://www.java.sun.com)を仮定して、実装されるコンポジット実装、コンポーネント実装および処理プラットフォームに適用する。
【０１１３】
まず、利用者からの要求データの例を図６に示す。この図６では、要求データ３００１は、ＸＭＬ(Extensible Markup Language,http://www.w3.org/TR/xml)の形式で記述されている。また、要求データ３００１は、ＨＴＴＰ(HyperText Transfer Protocol, RFC2616)などのプロトコルを用いて、ネットワーク１８０を介して、外部端末１９０を操作する利用者から送信される。
【０１１４】
サービス提供装置１００は、要求データ３００１を取得して、この要求データ３００１に基づいて、コンポジットサービスが実行され、サービスの処理の結果が、要求データ３００１の返信として利用者へ返信する。
【０１１５】
まず、要求受信応答部１０１は、要求データ３００１を、ネットワーク１８０を介して受け付ける。要求受信応答部１０１は、要求データ３００１から、発信元の利用者情報３００２、処理を要求するサービス情報及びパラメータ３００３を抽出する。そして、要求受信応答部１０１は、抽出された利用者情報３００２、サービス情報及び利用者情報３００２をコンポーネント注入部１０２に渡す。
【０１１６】
図６に示す要求データ３００１では、利用者情報３００２は、"ａ１２３４"であることを示している。サービス情報は、"ＭｙＡｎａｌｙｚｅ．ｉｎｖｏｋｅ"であることを示している。パラメータ３００３は、"ｐａｒａｍ１"に値"ｘｘｘ"を設定し、"ｐａｒａｍ２"に値"ｙｙｙ"を設定することを示している。
【０１１７】
コンポーネント注入部１０２は、これらの情報を基に構成情報格納部１０４に問い合わせを行い、該当するサービス構成情報を取得する。
【０１１８】
図７は、サービス構成情報の一例を示した図である。図７に示したサービス構成情報３１０１は、デフォルトサービスに該当する構成情報を示した図である。すなわち、利用者情報３００２の"ａ１２３４"に該当する構成情報が構成情報格納部１０４に登録されていない場合、構成情報格納部１０４は、サービス構成情報に該当するデフォルトサービスの構成情報を返信する。
【０１１９】
このデフォルトサービスのサービス構成情報３１０１には、サービス情報"ＭｙＡｎａｌｙｚｅ．ｉｎｖｏｋｅ"に対応するデフォルトサービスのコンポジット実装３１１１が指定されている。具体的には、コンポジット実装３１１１は、"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＡｎａｌｙｚｅＤａｔａ"が指定されている。更に、このサービス構成情報３１０１は、コンポジット実装３１１１に注入すべきコンポーネント実装３１１２及び３１１３が指定されている。
【０１２０】
これに対し、利用者情報３００２の"ａ１２３４"に該当する構成情報が構成情報格納部１０４に登録されている場合、構成情報格納部１０４は、該当するカスタマイズされたサービスの構成情報（カスタマイズサービス構成情報３２０１：図８）を返信する。なお、本実施の形態では、図８に示すサービスの構成情報をカスタマイズサービス構成情報という。
【０１２１】
図８のカスタマイズサービス構成情報３２０１では、利用者情報３００２が"ａ１２３４"と、サービス情報が"ＭｙＡｎａｌｙｚｅ．ｉｎｖｏｋｅ"と、パラメータ３００３から判断されたカスタマイズサービスのコンポジット実装３２１１とが指定されている。そして、コンポジット実装３２１１に、"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＡｎａｌｙｚｅＤａｔａ"が指定されている。更に、このコンポジット実装３２１１に注入すべきコンポーネント実装３２１２及び３２１３が指定されている。
【０１２２】
この図８に示すカスタマイズサービス構成情報３２０１を用いて、以降の動作について説明する。
【０１２３】
コンポーネント注入部１０２は、図８に示すカスタマイズサービス構成情報３２０１を基に、利用者の要求するサービス処理のためのサービスコンポジットを生成する。このときのコンポーネントローダの構成、読み込まれているコンポジット、コンポーネントの関係を図９に示す。
【０１２４】
図９に示すデフォルトコンポーネントローダ１１１０は、デフォルトサービスコンポジット５１００と、コンポーネント５００１及びコンポーネント５００２を読み込んでいる。また、利用者"ａ１２３４"向けのコンポーネントローダ１１１１は、コンポーネント５５０１を読み込んでいる。
【０１２５】
この状態において、コンポーネント注入部１０２は、コンポジット実装３２１１（図８）（即ち、サービスコンポジットである。）をコンポーネントローダ１１１１から取り出そうとする。しかしながら、コンポジット実装３２１１は、コンポーネントローダ１１１１に存在しない。そのため、コンポーネント注入部１０２は、デフォルトコンポーネントローダ１１１０からコンポジット実装３２１１を取り出し、成功する。
【０１２６】
そして、コンポーネント注入部１０２は、このコンポジット実装３２１１のインスタンスを生成する。具体的には、注入すべき参照点とコンポーネントを、コンポーネントローダ１１１１から取り出そうとする。コンポーネント注入部１０２は、まず１つ目の参照点"ｇｒａｐｈ"に対するコンポーネント実装"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＤｒａｗＢａｒ"をコンポーネントローダ１１１１から取り出そうとして成功する。そして、コンポーネント注入部１０２は、このコンポーネント実装を、コンポジット実装のインスタンスの参照点"ｇｒａｐｈ"に注入（代入）する。
【０１２７】
次に、コンポーネント注入部１０２は、２つ目の参照点"ｃａｌｃ"に対するコンポーネント実装"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＳｕｍＤａｔａ"をコンポーネントローダ１１１１から取得しようとする。しかし、こちらは存在しない。そのため、コンポーネント注入部１０２は、デフォルトコンポーネントローダ１１１０からコンポーネント実装"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＳｕｍＤａｔａ"を取得しようとして、成功する。コンポーネント注入部１０２は、同様に"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＳｕｍＤａｔａ"のインスタンスを生成し、"ｃａｌｃ"に注入する。
【０１２８】
図１０は、コンポジット実装４００１の実装例であるプログラムコードの一例を示したものである。Ｊａｖａ（登録商標）で実装されたコンポジット実装４００１は、他のコンポーネントへの参照先として、"ｇｒａｐｈ"と"ｃａｌｃ"を持っている。"ｇｒａｐｈ"と"ｃａｌｃ"は、それぞれＩＤｒａｗＧｒａｐｈ、ＩＣａｌｃＤａｔａというインタフェースを実装したオブジェクトへの参照点である。
【０１２９】
コンポジット実装４００１では、明示的にこれらの参照点に実装するコンポーネントクラスを代入しない。すなわち、コンポーネント注入部１０２は、取得したコンポーネントを直接代入する訳ではない。コンポーネント注入部１０２は、カスタマイズサービス構成情報３２０１を元に"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＤｒａｗＢａｒ"のインスタンスを生成し、"ｇｒａｐｈ"に代入する。また、コンポーネント注入部１０２は、同様に、"ｃｏｍ．ｍｅｃ．ｊｐ．ｓｐｒｌ．ＳｕｍＤａｔａ"のインスタンスを生成し、"ｃａｌｃ"に代入する。
【０１３０】
これにより、コンポーネント注入部１０２は、全ての参照点に対してコンポーネントクラスの注入が完了する。そして、コンポーネント注入部１０２は、要求データから抽出された利用者情報とサービス情報とパラメータを基に、生成されたコンポジット実装の"ｉｎｖｏｋｅ"メソッドを呼び出す。コンポーネント注入部１０２は、パラメータを代入してサービス処理を行い、ネットワーク１８０を介して、実行結果を要求元に返す。
【０１３１】
このように、本実施の形態によれば、サービス提供装置１００は、要求データのサービスの要求を受信すると、利用者に応じたサービスコンポジットを生成してサービス処理を実行することにより、きめ細かいカスタマイズ要件へ対応することができる。
【０１３２】
なお、本実施の形態における各構成要素は、その機能を実現するように形成されていればよい。例えば、所定の機能を発揮する専用のハードウェア、所定の機能がコンピュータプログラムにより付与されたデータ処理装置、コンピュータプログラムによりデータ処理装置に実現された所定の機能、これらの任意の組み合わせ等として実現することができる。
サービス提供装置１００に内包される構成の全部または一部は、ハードウェアで実現されてもよい。あるいは、コンピュータに処理を実行させるプログラム（またはプログラムコード）で実現されてもよい。コンピュータは、不揮発性メモリなどの記録媒体からそのプログラムを読み出し実行する。本実施形態において、プロセッサおよび記憶媒体はコンポーネント注入部１０２であってもよい。
【０１３３】
また、本実施の形態における各構成要素は、必ずしも個々に独立した存在である必要はない。例えば、複数の構成要素が一個の部材として形成されていること、一つの構成要素が複数の部材で形成されていること、ある構成要素が他の構成要素の一部であること、ある構成要素の一部と他の構成要素の一部が重複していること、などでもよい。
【０１３４】
また、本実施の形態における各処理は、複数の処理を順番にステップ番号より記載して説明したが、その記載の番号は、複数の処理を実行する順番を限定するものではない。
【０１３５】
以上、図面を参照して本発明の実施形態について述べたが、これらは本発明の例示であり、上記以外の様々な構成を採用することもできる。
【０１３６】
（変形例）
例えば、上述した実施の形態は、利用者ごとにカスタマイズコンポーネントによるサービスを提供するプログラムコードの作成に関する形態であった。本実施の形態では、更に、既存のユーザに対してカスタマイズコンポーネントの割り当てを追加して要求したり、あるいは既存のユーザのカスタマイズコンポーネントの割り当てを削除したりすることができる。なお、本実施の形態では、このカスタマイズコンポーネントの割り当てを追加して要求することを配備といい、一方、カスタマイズコンポーネントの割り当てを削除することを配備解除という。
【０１３７】
具体的には、要求受信応答部１０１は、ユーザ識別子を受信するとともに、そのユーザ識別子に対応づけられていない他のカスタマイズコンポーネントの割り当てを要求することを示す情報を受信したときに以下の処理を行う。まず、ローダ管理部１０３は、他のカスタマイズコンポーネントをユーザ識別子に対応する利用者のコンポーネントローダ１１１〜１１Ｎに読み込ませる。そして、構成情報格納部１０４は、ユーザ識別子に対応づけられた構成情報に、他のカスタマイズコンポーネントを示す情報を追加する。
【０１３８】
これにより、コンポーネント注入部１０２は、既存の利用者であって、その利用者からまだ登録されていない他のカスタマイズコンポーネントの利用の要求を受け付けるとともに、他のカスタマイズコンポーネントの情報を構成情報に追加することができる。
【０１３９】
このような、サービス提供装置１００にカスタマイズコンポーネントの配備、配備解除の手順について説明する。図１１は、カスタマイズコンポーネントを配備する処理を示したフローチャートである。
【０１４０】
図１１に示すフローチャートでは、まず、要求受信応答部１０１は、カスタマイズ要件が適用された該当する利用者向けサービス（これを該当利用者向けサービスという。）を停止する（ステップＳ２００１）。但し、このとき、他の利用者向けサービスや不特定利用者向けのデフォルトサービスは停止しない。
【０１４１】
有無判定部１４０は、既存の該当利用者向けコンポーネントローダを持たない新規のカスタマイズ要件適用利用者か否か判定する（ステップＳ２００２）。有無判定部１４０が既存の該当利用者向けコンポーネントローダを持たない新規の利用者と判定した場合には（ステップＳ２００２のＹ）、ローダ管理部１０３は、該当利用者向けコンポーネントローダを生成する（ステップＳ２００３）。
【０１４２】
一方、新規の利用者ではないと判定した場合には（ステップＳ２００２のＮ）、ローダ管理部１０３は、新たに適用するカスタマイズ要件を実装したコンポーネントクラスを、該当利用者向けコンポーネントローダへ読み出す（ステップＳ２００４）。
【０１４３】
なお、新規の利用者であると判定した場合であって、カスタマイズ要件を適用する要求がある場合には、そのカスタマイズ要件を新規の利用者の該当利用者向けコンポーネントローダに読み出すこともできる。
【０１４４】
そして、コンポーネント注入部１０２は、コンポジットに対する該当利用者のカスタマイズ要件を記述した構成情報を、構成情報格納部１０４に追加する（ステップＳ２００５）。その後、該当利用者向けサービスを再開し（ステップＳ２００６）、カスタマイズコンポーネントの配備処理を終了する。
【０１４５】
次に、カスタマイズコンポーネントの配備解除の手順について説明する。図１２は、カスタマイズコンポーネントを配備解除する処理を示したフローチャートである。
【０１４６】
図１２に示すフローチャートでは、図１１で説明したカスタマイズコンポーネントを配備する場合と同様に、まず要求受信応答部１０１は、該当利用者向けサービスを停止する（ステップＳ２１０１）。コンポーネント注入部１０２は、構成情報格納部１０４に格納されている構成情報から、配備解除するカスタマイズ要件を削除する（ステップＳ２１０２）。そして、ローダ管理部１０３は、該当利用者向けコンポーネントローダを廃棄する（ステップＳ２１０３）。
【０１４７】
該当利用者向けコンポーネントローダを廃棄した後、コンポーネント注入部１０２は、該当利用者に他のカスタマイズ要件が残っているか否か判定する（ステップＳ２１０４）。コンポーネント注入部１０２は、該当利用者のカスタマイズ要件が残っていない場合には（ステップＳ２１０４のＮ）、ステップＳ２１０７へ進む。
【０１４８】
一方、該当利用者のカスタマイズ要件が残っている場合には（ステップＳ２１０４のＹ）、ローダ管理部１０３は、ステップＳ２１０３において廃棄した該当利用者向けコンポーネントローダを再度生成する（ステップＳ２１０５）。そして、コンポーネント注入部１０２は、ステップＳ２１０４において残っていた配備解除対象外のカスタマイズコンポーネントを、生成されたコンポーネントローダに読み込む（ステップＳ２１０６）。そして、要求受信応答部１０１は、該当利用者向けサービスを再開し（ステップＳ２１０７）、カスタマイズコンポーネントの配備解除の処理を終了する。
【０１４９】
以上説明したように本実施の形態によれば、利用者ごとに管理しているコンポーネントローダ単位で、カスタマイズ要件の配備、配備解除を行うことができる。また、サービス提供装置１００は、カスタマイズコンポーネントを配備、配備解除時であっても、他の利用者のコンポーネントローダやデフォルトコンポーネントローダを矛盾なく参照することができる。
【０１５０】
これにより、他の利用者のサービスを継続したまま、特定利用者のカスタマイズコンポーネントの配備、配備解除を行うことができる。従って、利用者ごとのカスタマイズ要件に対応した、サービスの継続性およびメンテナンスの容易性を両立させることができる。
【０１５１】
この出願は、２００９年１月９日に出願された日本出願特願２００９−００３３０８を基礎とする優先権を主張し、その開示の総てをここに取り込む。また、上記の実施形態の一部又は全部は、以下の付記のようにも特定され得る。但し、上記の実施形態が以下の記載に限定されるものではない。
（付記１）
ソフトウェア部品で構成されたコンポーネントのうち、ユーザ同士で共有する共有コンポーネントを格納する共有コンポーネント格納手段と、
前記共有コンポーネント格納手段から前記共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントローダ手段と、
ソフトウェア部品で構成されたコンポーネントのうち、任意のユーザに使用される個別コンポーネントを当該ユーザごとに格納する個別コンポーネント格納手段と、
前記個別コンポーネント格納手段から前記個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントローダ手段と、
前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報を格納する構成情報格納手段と、
外部端末からネットワークを介して前記ユーザ識別子を受信する要求受信手段と、
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が示す前記共有コンポーネントまたは前記個別コンポーネントを、前記共有コンポーネントローダ手段または前記個別コンポーネントローダ手段から取得するコンポーネント取得手段と、
前記コンポーネント取得手段により取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手段と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手段と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手段と、
を備えることを特徴とするサービス提供装置。
（付記２）
前記個別コンポーネントを、前記個別コンポーネントローダ手段に読み込ませて実行可能な状態で前記ユーザごとに前記個別コンポーネントローダ手段に保持させるローダ管理手段
を更に備えることを特徴とする付記１に記載のサービス提供装置。
（付記３）
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が前記構成情報格納手段に格納されているか否かを判定する有無判定手段
を更に備えることを特徴とする付記１又は２に記載のサービス提供装置。
（付記４）
前記有無判定手段が、前記ユーザ識別子に対応づけられた前記構成情報が前記構成情報格納手段に格納されていないと判定したとき、
前記コンポーネント取得手段は、前記共有コンポーネントを前記共有コンポーネントローダ手段から取得し、
前記プログラムコード生成手段は、前記コンポーネント取得手段により取得された前記共有コンポーネントを示す情報を前記参照先に代入することにより前記プログラムコードを生成する
ことを特徴とする付記３に記載のサービス提供装置。
（付記５）
前記ユーザ識別子とともに、当該ユーザ識別子に対応づけられていない他の個別コンポーネントの割り当てを要求することを示す情報を前記要求受信手段が受信したとき、
前記ローダ管理手段は、
前記他の個別コンポーネントを前記個別コンポーネントローダ手段に読み込ませ、
前記構成情報格納手段は、
前記ユーザ識別子に対応づけられた前記構成情報に、前記他の個別コンポーネントを示す情報を追加する
ことを特徴とする付記２に記載のサービス提供装置。
（付記６）
所定割合以上のユーザにより共通して使用される同一の前記個別コンポーネントを実行可能な状態に保持する一部共有コンポーネントローダ手段
を更に備えることを特徴とする付記１乃至５の何れか１つに記載のサービス提供装置。
（付記７）
前記同一の個別コンポーネントを格納する一部共有コンポーネント格納手段を更に備え、
前記ローダ管理手段が、
前記同一の個別コンポーネントを前記個別コンポーネント格納手段から前記一部共有コンポーネント格納手段に移動させ、かつ前記一部共有コンポーネントローダ手段を生成する
ことを特徴とする付記６に記載のサービス提供装置。
（付記８）
外部端末と、前記外部端末とネットワークを介して接続されたサービス提供装置とを備えたサービス提供システムであって、
前記サービス提供装置は、
ソフトウェア部品で構成されたコンポーネントのうち、ユーザ同士で共有する共有コンポーネントを格納する共有コンポーネント格納手段と、
前記共有コンポーネント格納手段から前記共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントローダ手段と、
ソフトウェア部品で構成されたコンポーネントのうち、任意のユーザに使用される個別コンポーネントを当該ユーザごとに格納する個別コンポーネント格納手段と、
前記個別コンポーネント格納手段から前記個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントローダ手段と、
前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報を格納する構成情報格納手段と、
前記外部端末から前記ネットワークを介して前記ユーザ識別子を受信する要求受信手段と、
前記要求受信手段が受信した前記ユーザ識別子に対応づけられた前記構成情報が示す前記共有コンポーネントまたは前記個別コンポーネントを、前記共有コンポーネントローダ手段または前記個別コンポーネントローダ手段から取得するコンポーネント取得手段と、
前記コンポーネント取得手段により取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手段と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手段と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手段と、
を備えることを特徴とするサービス提供システム。
（付記９）
ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロードステップと、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントロードステップと、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信ステップと、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信ステップにおいて受信した前記ユーザ識別子と、に基づいて、前記共有コンポーネントロードステップで実行可能な状態に保持された前記共有コンポーネントまたは前記個別コンポーネントロードステップで実行可能な状態に保持された前記個別コンポーネントを取得するコンポーネント取得ステップと、
前記コンポーネント取得ステップで取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成ステップと、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行ステップと、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答ステップと、
を含むことを特徴とするサービス提供方法。
（付記１０）
ソフトウェア部品で構成された共有コンポーネントを読み込んで実行可能な状態に保持する共有コンポーネントロード手順と、
ソフトウェア部品で構成された個別コンポーネントを読み込んで実行可能な状態に保持する個別コンポーネントロード手順と、
外部端末からネットワークを介して、ユーザに割り当てられたユーザ識別子を受信する要求受信手順と、
（ｉ）前記ユーザごとに割り当てられたユーザ識別子に対応づけられた、前記共有コンポーネントまたは前記個別コンポーネントのうち少なくとも一方を示す情報とともに、当該共有コンポーネントまたは当該個別コンポーネントの参照先が示された構成情報と、（ｉｉ）前記要求受信手順において受信した前記ユーザ識別子と、に基づいて、前記共有コンポーネントロード手順で実行可能な状態に保持された前記共有コンポーネントまたは前記個別コンポーネントロード手順で実行可能な状態に保持された前記個別コンポーネントを取得するコンポーネント取得手順と、
前記コンポーネント取得手順で取得された前記共有コンポーネントまたは前記個別コンポーネントを示す情報を前記構成情報に示された前記参照先に代入することにより、実行形式のプログラムコードを生成するプログラムコード生成手順と、
生成された前記プログラムコードを実行し、その実行結果を作成するプログラム実行手順と、
前記実行結果を前記外部端末に返信することにより通信サービスを提供する応答手順と、
をコンピュータに実行させるサービス提供プログラム。
【図１】
0005408141.tif 000002
【図２】
0005408141.tif 000003
【図３】
0005408141.tif 000004
【図４】
0005408141.tif 000005
【図５】
0005408141.tif 000006
【図６】
0005408141.tif 000007
【図７】
0005408141.tif 000008
【図８】
0005408141.tif 000009
【図９】
0005408141.tif 000010
【図１０】
0005408141.tif 000011
【図１１】
0005408141.tif 000012
【図１２】
0005408141.tif 000013
【図１３】
0005408141.tif 000014
【図１４】
0005408141.tif 000015