"ウェブアプリケーションをホスティング環境に配備する方法であって、前記ウェブアプリケーションは複数のアプリケーションフレームワークの1つを使って開発され、複数のランタイム環境の1つ内で実行するように構成され、前記方法は、前記ランタイム環境と互換性のあるパッケージの形態の前記ウェブアプリケーションを受信するステップと、前記ホスティング環境によってアクセス可能な有効なサービスの選択を決定し、前記ウェブアプリケーションにバインドするステップと、前記有効なサービス毎にサービス提供データを前記パッケージに挿入することにより、前記有効なサービスを前記ウェブアプリケーションにバインドするステップと、有効なアプリケーションコンテナ内で前記ランタイム環境を開始するステップと、前記ランタイム環境内で前記ウェブアプリケーションを立ち上げるステップと、を有することを特徴とする方法。前記ウェブアプリケーションの開始成功の後、前記ホスティング環境内のルーターに前記アプリケーションコンテナに関連するネットワークアドレス情報を通知することにより、前記ルーターが前記ウェブアプリケーションの要求を前記アプリケーションコンテナにルーティングすることを可能にするステップを更に有することを特徴とする請求項1記載の方法。前記アプリケーションコンテナにおいて前記開始立ち上げステップを行うために実行される開始スクリプトを生成するステップを更に有することを特徴とする請求項1記載の方法。前記開始スクリプト及びパッケージをウェブアプリケーション配備パッケージにパッケージするステップを更に有することを特徴とする請求項3記載の方法。前記アプリケーションコンテナは配備エージェントプロセスを有し、前記配備エージェントプロセスは、ウェブアプリケーション配備パッケージを解凍し、前記パッケージを前記ランタイム環境にロードし、前記開始スクリプトを実行することを特徴とする請求項4記載の方法。前記受信、決定、挿入のステップが、前記ホスティング環境内でクラウドコントローラプロセスによって実行される請求項5記載の方法。前記ウェブアプリケーションを立ち上げる要求を受信するステップと、前記ウェブアプリケーションを配備するために有効なアプリケーションコンテナの要求をブロードキャストするステップと、を更に有することを特徴とする請求項1記載の方法。コンピュータープロセッサーで実行される時に、ホスティング環境内にウェブアプリケーションを配備するための前記コンピュータープロセッサーへの命令を含むコンピューターで読み取り可能な記憶媒体であって、前記ウェブアプリケーションは複数のアプリケーションフレームワークの1つを使って開発され、複数のランタイム環境の1つ内で実行するように構成され、そのために、前記ランタイム環境と互換性のあるパッケージの形態の前記ウェブアプリケーションを受信するステップと、前記ホスティング環境によってアクセス可能な有効なサービスの選択を決定し、前記ウェブアプリケーションにバインドするステップと、前記有効なサービス毎にサービス提供データを前記パッケージに挿入することにより、前記有効なサービスを前記ウェブアプリケーションにバインドするステップと、有効なアプリケーションコンテナ内で前記ランタイム環境を開始するステップと、前記ランタイム環境内で前記ウェブアプリケーションを立ち上げるステップと、を行うことを特徴とするコンピューターで読み取り可能な記憶媒体。前記ウェブアプリケーションの立ち上げ成功の後、前記ホスティング環境内のルーターに前記アプリケーションコンテナに関連するネットワークアドレス情報を通知することにより、前記ルーターが前記ウェブアプリケーションの要求を前記アプリケーションコンテナにルーティングすることを可能にするように更に構成されていることを特徴とする請求項8記載のコンピューターで読み取り可能な記憶媒体。前記アプリケーションコンテナ内で前記開始立ち上げステップを行うために実行される開始スクリプトを生成するステップを更に行うよう構成されていることを特徴とする請求項8記載のコンピューターで読み取り可能な記憶媒体。前記開始スクリプト及びパッケージをウェブアプリケーション配備パッケージにパッケージするステップを更に行うよう構成されていることを特徴とする請求項10記載のコンピューターで読み取り可能な記憶媒体。前記アプリケーションコンテナが配備エージェントプロセスを有し、前記配備エージェントプロセスは、ウェブアプリケーション配備パッケージを解凍し、前記パッケージを前記ランタイム環境にロードし、前記開始スクリプトを実行することを特徴とする請求項11記載のコンピューターで読み取り可能な記憶媒体。前記受信、決定、及び挿入のステップが、前記ホスティング環境内でクラウドコントローラプロセスによって実行されることを特徴とする請求項12記載のコンピューターで読み取り可能な記憶媒体。前記ウェブアプリケーションを立ち上げる要求を受信するステップと、前記ウェブアプリケーションを配備するために有効なアプリケーションコンテナの要求をブロードキャストするステップと、を更に行うよう構成されていることを特徴とする請求項8記載のコンピューターで読み取り可能な記憶媒体。ウェブアプリケーションを配備するためのクラウドコンピューティングプラットフォームであって、前記ウェブアプリケーションが複数のアプリケーションフレームワークの1つを使って開発され、複数のランタイム環境の1つ内で実行するように構成され、前記クラウドコンピューティングは、仮想マシンの実行をサポートする少なくとも1つのサーバーを有するハードウェアインフラストラクチャープラットフォームと、前記少なくとも1つのサーバーに実装されるクラウドコンピューティング環境と、を有し、前記クラウドコンピューティング環境は、前記ウェブアプリケーションにアクセスする要求を受信ルーティングするように構成されたルーターコンポーネントと、前記ランタイム環境と互換性のあるパッケージの形態の前記ウェブアプリケーションを受信するステップと、前記ホスティング環境によってアクセス可能な有効なサービスの選択を決定し、前記ウェブアプリケーションにバインドするステップと、前記有効なサービス毎にサービス提供データを前記パッケージに挿入することにより、前記有効なサービスを前記ウェブアプリケーションにバインドするステップと、を行うように構成されたクラウドコントローラコンポーネントと、有効なアプリケーションコンテナ内で前記ランタイム環境を開始するステップと、前記ランタイム環境内で前記ウェブアプリケーションを立ち上げるステップと、を行うように構成されたアプリケーションコンテナコンポーネントと、を有することを特徴とするクラウドコンピューティングプラットフォーム。前記クラウドコンピューティング環境は、更に、アドレシングアンドディスカバリーコンポーネントを有し、前記アドレシングアンドディスカバリーコンポーネントは、前記クラウドコンピューティング環境のコンポーネントから送信されたメッセージを前記クラウドコンピューティング環境のその他のコンポーネントにブロードキャストするように構成されていることを特徴とする請求項15記載のクラウドコンピューティングプラットフォーム。前記ハードウェアインフラストラクチャープラットフォームは、編成部を更に有し、前記編成部は、前記アドレシングアンドディスカバリーコンポーネントからブロードキャストされたメッセージを受信し、ブロードキャストされたメッセージを受信すると、追加的なコンテナ仮想マシンを要求する前記アドレシングアンドディスカバリーコンポーネントを介して前記クラウドコンピューティング環境のための追加的なコンテナ仮想マシンをインスタンス化するように構成されていることを特徴とする請求項16記載のクラウドコンピューティングプラットフォーム。前記クラウドコントローラコンポーネントは、前記アプリケーションコンテナにおける前記開始立ち上げステップを行うために実行される開始スクリプトを生成し、前記開始スクリプト及びパッケージをウェブアプリケーション配備パッケージにパッケージすることを更に行うように構成されていることを特徴とする請求項15記載のクラウドコンピューティングプラットフォーム。前記アプリケーションコンテナコンポーネントは、配備エージェントプロセスを有し、前記配備エージェントプロセスは、ウェブアプリケーション配備パッケージを解凍し、前記パッケージを前記ランタイム環境にロードし、前記開始スクリプトを実行し、前記ウェブアプリケーションの立ち上げ成功の後、前記ホスティング環境内のルーターに前記アプリケーションコンテナに関連するネットワークアドレス情報を通知することにより、前記ルーターが前記ウェブアプリケーションの要求を前記アプリケーションコンテナにルーティングすることを可能にすることを特徴とする請求項18記載のクラウドコンピューティングプラットフォーム。前記クラウドコンピューティング環境は、更にヘルスマネージャープロセスを有し、前記ヘルスマネージャープロセスは、前記クラウドコンピューティング環境内のその他のコンポーネントの状態をモニターすることを特徴とする請求項15記載のクラウドコンピューティングプラットフォーム。0013図1Aは、サービスプロバイダーのためのクラウドコンピューティングアーキテクチャーの一実施形態を示す。企業100は、サービスプロバイダー102によって配備されるウェブアプリケーションを開発することを望む。例えば、サービスプロバイダー102は、例えば、RESTRepresentationalStateTransferAPIsApplicationProgrammingInterfaces、アプリケーションプログラミングインタフェース、又は、カスタムデータベース104又はCRMCustomerRelatedManagement、顧客関係管理サービス106又はサービスプロバイダー102によって提供されるその他のサービス等のその他のクライアントサーバー通信プロトコル等でアクセス可能な、企業100が開発されたウェブアプリケーションを通じてアクセスを望むいくつかのサービスを有してもよい。一方、サービスプロバイダー102は、クラウドコンピューティングプラットフォームプロバイダー108によって提供されるリソースを使って、企業がウェブアプリケーションを配備できるクラウドコンピューティング環境を提供する。0014クラウドコンピューティングプラットフォームプロバイダー108は、クラウドコンピューティング環境112が実行され得るインフラストラクチャープラットフォーム110をサービスプロバイダー102に提供する。特に、図1Aの実施形態では、インフラストラクチャープラットフォーム110は、サーバー1161~116nや例えばSAN118等の1つ又は複数のストレージアレイネットワークSAN等のハードウェアリソース114を有し、それらはサーバー1161~116nにわたって複数の仮想マシンの実行をサポートする仮想化環境120を提供するように構成されている。以下に更に説明するように、それらの仮想マシンは、クラウドコンピューティング環境112を構成する様々なサービスや機能を提供する。0015図1Aの仮想化環境120は、更に、例えば、一実施形態の仮想マシンで動作するプロセスとして実装される編成部122を有する。編成部122は、インフラストラクチャーリソースの消費レベル及びクラウドコンピューティング環境112の要求を、例えば、下記に詳説されるアドレシングアンドディスカバリー層132を通じてルーティングされる通信をモニタリングすることによりモニターし、追加的なインフラストラクチャーリソースをクラウドコンピューティング環境に、必要に応じて又は要望に応じて、提供する。例えば、もし、クラウドコンピューティング環境112が新しく実装されたウェブアプリケーションをホストするために更に仮想マシンを必要とする場合や、ピーク時の需要を満たすために現在実行中のウェブアプリケーションを調整する場合には、編成部122は、それらの必要性を満たすために、サーバー1161~116nの仮想マシンのインスタンス化を開始管理することができる。図1Aに類似の実施形態の実装の例では、仮想化環境120は、サーバー1161~116n上のカリフォルニア州パロアルトのVMware,Inc.のVMwareESX商標ベースのハイパーバイザーを実行することにより実装されてもよいもちろん、Xen登録商標やMicrosoftHyper-V仮想化技術を含むその他の仮想化技術が、本技術と調和して使用され得ると理解されるべきである。0016図1Aの実施形態では、クラウドコンピューティング環境112は、配備されたウェブアプリケーションをホストするためにインスタンス化される複数の仮想マシンコンテナVM1261~126mと称すを有するアプリケーション実行スペース124をサポートする。例えば、サービスプロバイダー102のクラウドコンピューティングプラットフォーム上のウェブアプリケーション125の企業による配備は、クラウドコンピューティングプラットフォームプロバイダー108におけるアプリケーション実行スペース124のコンテナVM1261内のウェブアプリケーション125のホスティングとなる。0017ウェブアプリケーション125は、クラウドコンピューティング環境112によって提供される例えば、1つ又は複数の仮想マシンで実行されるベースサービス128の1群及びサービスプロバイダー102によって直接提供され得るような第三者のサービス例えば、カスタムデータベース104、CRMサービス106等にアクセスできる。例えば、リレーショナルデータベースのサービス例えば、MySQL等、モニタリングサービス、バックグラウンドタスクスケジューラ、ロギングサービス、メッセージングサービス、メモリオブジェクトキャッシングサービス等が、一実施形態においてベースサービス128を構成してもよい。サービス提供者130は、これらの有効なサービス例えば、ベースサービス128及びカスタムデータベース104やCRMサービス106のような第三者提供サービスとクラウドコンピューティング環境112のその他のコンポーネント例えば、クラウドコントローラ134、ヘルスマネージャー138、ルーター136、コンテナVMs1261~126m等との間の例えば、1つ又は複数の仮想マシンで実行される通信仲介者として機能し、ウェブアプリケーション配備プロセスの間にウェブアプリケーションにそれらの有効なサービスを提供バインドするタスクを助ける。図2Aは、一実施形態のクラウドコンピューティング環境112のサービス提供者130のためのコンポーネントアーキテクチャーを示す。図2Aの実施形態では、サービス提供者130は、クラウドコンピューティング環境112で有効なそれぞれのサービスに対応するシム又は同様のスタブコンポーネントを保持する例えば、ベースサービス128a及び128b並びにCRMサービス106にそれぞれ対応するシム200a、200b、及び200xを参照。それぞれのシムコンポーネント自身は、サービスの種類の説明、マルチテナント対シングルテナント等のサービスの特徴シングルテナント等に対して例えば、マルチテナント、サービスのログイン認証情報例えば、ルートユーザ名、パスワード等、サービスのネットワークアドレス及びポート番号等の、対応するサービスのサービス提供データを保持する。それぞれのシムコンポーネントは、そのようなサービスによってサポートされているAPI又は類似の通信プロトコルを利用して、対応するサービスと通信するように構成されている。例えば、配備の時に、ウェブアプリケーション125をベースサービス128aにバインドするために、サービス提供者130は、シム200aをベースサービス128aにログインさせるようにし、ウェブアプリケーション125のためだけの新しい認証情報例えば、新しいユーザーネーム及びパスワードを生成し、これにより、実行時にそれらの認証情報を使って、ウェブアプリケーション125はベースサービス128aに直接ログイン及びアクセスができる。サービス提供者130は、更に、アドレシングアンドディスカバリー層通信クライアント205を有し、アドレシングアンドディスカバリー層通信クライアント205は、サービス提供者130がアドレシングアンドディスカバリー層132を通じてクラウドコンピューティング環境112のその他のコンポーネントと通信することを可能にする。0018図2Aに示されるサービス提供者130は、クラウドコンピューティング環境112の有効なサービスとその他のコンポーネントとの間の通信仲介者の一実施形態にすぎず、別の実施形態は本教示と調和するように実装され得ると解されなければならない。例えば、図2Bは、独立して動作するシムコンポーネントの抽象化レイヤとしてのサービス提供者130の別の実施形態を示す。それぞれのシムコンポーネント例えば、210a~210b~210xは、例えば独立したプロセスとして動作し、それぞれ独自のアドレシングアンドディスカバリー層通信クライアント例えば、それぞれ215a、215b、210xを有し、アドレシングアンドディスカバリー層132と相互作用する。図2Bに類似の実施形態では、シムコンポーネントは、アドレッシングアンドディスカバリー層132と効果的に通信できる限り、別の場所に実装されてもよい。例えば、CRMサービス106に対応するシム210xは、サービスプロバイダー102のサーバーで動作するプロセスとして実装されてもよく、他方、ベースサービス128a及び128bにそれぞれ対応するシムコンポーネント210a及び210bがクラウドコンピューティングプラットフォームプロバイダー108で割り当てられている仮想マシンで動作するプロセスとして実装され得る。0019図1Aに戻り、アドレシングアンドディスカバリー層132は、共通インターフェースを提供し、この共通インターフェースを通じて、アプリケーション実行スペース124内で、サービス提供者130、クラウドコントローラ134、ヘルスマネージャー138、ルーター136、及びコンテナVM1261~126m等のクラウドコンピューティング環境112のコンポーネントが通信し、通知を受信できる。例えば、サービス提供者130は、クラウドコンピューティング環境112内のウェブアプリケーションの配備においてそのようなサービスのサービス提供データを伝搬したりサービスの可否をブロードキャストしたりするために、アドレシングアンドディスカバリー層132を通じて通信してもよい。同様に、コンテナVM1261は、ウェブアプリケーション125の配備の成功を示すためや配備成功したウェブアプリケーション125のルーティング情報例えば、ホスト名及びネットワークアドレス情報、バインドされたポート番号等を提供するために、アドレシングアンドディスカバリー層132を通じて通知をブロードキャストしてもよい。一実施形態では、アドレシングアンドディスカバリー層132は、例えば、1つ又は複数の仮想マシンで実行されるメッセージブローカリングサービスとして実装され、メッセージブローカリングサービスは、クラウドコンピューティング環境112のコンポーネントがメッセージを交換し、通知及びその他の情報をブロードキャストすることができる共通のプロトコル及びメッセージフォーマットを定義する。このような実施形態においては、クラウドコンピューティング環境112のコンポーネントは、メッセージブローカリングサービスとコネクションを作り例えば、メッセージブローカリングサービスを購読するとも呼ぶことがある、例えば、公知の認証技術例えば、パスワードを通じてコネクションを作り、メッセージブローカリングサービスへ接続されると、クラウドコンピューティング環境112のコンポーネントは、それらも、メッセージブローカリングシステムを購読したその他のコンポーネントとの間で、メッセージ、通知、及びその他の類似の情報を提供、受信、及び要求することができる。実施形態で使用され得るメッセージブローカリングサービスの一例は、RabbitMQ商標であり、RabbitMQ商標は、AMPQAdvancedMessageQueuingProtocolオープンプロトコル規格に基づいている。しかしながら、アドレシングアンドディスカバリー層132のために、そのようなメッセージブローカリングサービス以外の別のインターフェースや通信スキームが実装され得ると解されるべきである。0020クラウドコントローラ134例えば、1つ又は複数の仮想マシンで動作されるは、配備のためにクラウドコンピューティング環境112に提出されるウェブアプリケーションのための配備プロセスを編成する。クラウドコントローラ134は、クラウドコンピューティング環境112に提出されるウェブアプリケーションを受信し、詳細に後述されるように、クラウドコンピューティング環境112のその他のコンポーネントと相互作用し、提出されたウェブアプリケーションによって要求される有効なサービスをバインドし、配備のための有効なコンテナVM例えば、コンテナVM1261~126mに送信するためにウェブアプリケーションをパッケージ化する。図1Aに示される実施形態では、クラウドコントローラ134によって受信されるウェブアプリケーション125等のウェブアプリケーションは、開発者のラップトップ又は端末にインストールされる統合開発環境IDE142を使って、企業100のアプリケーション開発者140によって開発されてもよい。IDE142は、サービスプロバイダー102によって提供されるインストールされたプラグインを含み、プラグインは、ウェブアプリケーション125の開発及びクラウドコンピューティング環境112への提出を容易にする。ウェブアプリケーション上に企業規模のルール例えば、許可されたアクセス可能なサービス、コンピューティングリソースの消費の制限等を課す能力を企業100に提供するために、サービスプロバイダー102は、企業100にポリシーエンジン144を提供して動作させてもよい。例えば、ポリシーエンジン144は、企業100でプロクシーサーバーとして動作する。図1Aの実施形態で示されるように、詳細に後述されるように、ポリシーエンジン144は、クラウドコントローラ134と、アプリケーション開発者140や管理者146等のクラウドコントローラ134を通じてクラウドコンピューティング環境112と通信するエンティティとの間の通信路に配設される。例えば、ポリシーエンジン144は、開発者140によって配備のために提出されるウェブアプリケーションを傍受し、ウェブアプリケーションをクラウドコンピューティング環境112に配備のためにリリースする前に、そのような提出されたウェブアプリケーションの要求された要件を検査する。企業100の管理者146は、ポリシーエンジン144のためのポリシーを設定できるだけでなく、ポリシーエンジンユーザーインターフェース148を通じてクラウドコンピューティング環境112に現在配備されているウェブアプリケーションの分析を見ることができ、ポリシーエンジンユーザーインターフェース148はポリシーエンジン144と通信可能であり、ウェブブラウザ又はその他のクライアントアプリケーションを通じてアクセスされることができる。一実施形態では、ポリシーエンジン144は、更に、企業100内で局所的にクラウドコントローラ134と同じか類似の機能を提供することができる。尚、ポリシーエンジン144は、サービスプロバイダー102が企業100に提供し得るオプション機能であって、別の実施形態や実装ではポリシーエンジン144を使わないか又は含まなくてもよい、と解するべきである。例えば、図1Aに示されるように、アプリケーション開発者140及び管理者146は、ポリシーエンジン144を使わずに、クラウドコントローラ134に直接通信してもよい。更に、別の実施形態においては、ポリシーエンジン144は、クラウドコントローラ134への通信路上の場所に配設されてもよく、例えば、図1Aに示されるように、企業100よりはむしろサービスプロバイダー102やクラウドコンピューティングプラットフォームプロバイダー108内に配設されてもよい、と解されるべきである。また、異なる組織のための異なるポリシーを実施する複数のポリシーエンジン144が、例えば企業100及びサービスプロバイダー102内等、クラウドコントローラ134への通信路上に配設されてもよい、と解されるべきである。クラウドコンピューティング環境134は、更に、例えば、1つ又は複数の仮想マシンで動作されるヘルスマネージャー138を有し、ヘルスマネージャー138はクラウドコンピューティング環境112のその他のコンポーネントによってアドレシングアンドディスカバリー層132にブロードキャストされるメッセージをモニタリングすることによってクラウドコンピューティング環境112の健康状態を追跡維持する。例えば、ヘルスマネージャー138は、配備されたウェブアプリケーションのインスタンスのエラーを検出し、ウェブアプリケーションを再起動するためにクラウドコントローラ134に要求を自動的にブロードキャストしてもよい。同様に、更に、ヘルスマネージャー138は、それ自身が、クラウドコンピューティング環境112のエラーの発生した有効なサービス又はその他のコンポーネント例えば、クラウドコントローラ134、サービス提供者130、ルーター136等の再起動を開始するように構成されていてもよい。0021クラウドコントローラ134が、コンテナVM1261でのウェブアプリケーション125の配備の編成に成功すると、企業のカスタマー150は、コンピューターラップトップ又はその他のコンピューター端末に存在する、例えば、ウェブブラウザ又はその他の適切なクライアントアプリケーションを通じて、ウェブアプリケーション125にアクセスすることができる。例えば、1つ又は複数の仮想マシンで動作されるルーター136は、ウェブブラウザのアクセス要求例えば、ユニフォームリソースロケーター即ちURLを受信し、要求をウェブアプリケーション125をホストするコンテナVM1261にルーティングする。より一般的に、ルーター136は、URLと配備されたウェブアプリケーションとの間の内部ルーティングテーブルにマッピングを保持し、要求されたウェブアプリケーションをホストする適切なコンテナVMにカスタマーからのURL要求を正しくルーティングするまた、ウェブアプリケーションのインスタンスのロードバランシングの維持等も行う。詳細に後述されるように、コンテナVMがウェブアプリケーションの配備に成功し、従って、アドレシングアンドディスカバリー層132を通じてウェブアプリケーションのためのルーティング情報例えば、ホスト名、ネットワークアドレス情報、ポート番号等をブロードキャストする時、アドレッシングアンドディスカバリー層132を通じてルーター136によってそれらのマッピングが受信される。0022図1Aの実施形態は例示に過ぎず、別のクラウドコンピューティングアーキテクチャーが本明細書中の本教示と調和するように実装され得ると解さするべきである。例えば、図1Aではクラウドコンピューティングプラットフォームプロバイダー108によってホスティングされるインフラストラクチャープラットフォーム110上でクラウドコンピューティング環境112を実装するが、クラウドコンピューティング環境112はあらゆる種類のハードウェアインフラストラクチャー上で、クラウドコンピューティングプラットフォームプロバイダー108以外のエンティティによって実装されてもよいと解されるべきである。図1Bは、インフラストラクチャープラットフォーム110がサービスプロバイダー102そのものによって提供されるクラウドコンピューティングアーキテクチャーの別の実施形態を示す。更に、インフラストラクチャープラットフォーム110が、クラウドコンピューティング環境112のコンポーネントが1つ又は複数の仮想マシンで動作するプロセス又はデーモンとして実装される仮想化環境120を有する図1Aとは異なり、図1Bのクラウドコンピューティング環境112のコンポーネントは、サーバー1161~116n等のハードウェアリソース114上で直接プロセス又はデーモンとして、非仮想化インフラストラクチャープラットフォーム110で実行される。実施形態は、コンピューティング環境112とインフラストラクチャー110との間の通信が、アドレシングアンドディスカバリー層132に接続することによりハードウェアリソースの消費をモニタリングするインフラストラクチャープラットフォーム110の編成部122を通じてしか発生しない、クラウドコンピューティング環境112及びインフラストラクチャープラットフォーム110を緩く結合するように構成し得ると解するべきである。そのような緩く結合した実施形態においては、クラウドコンピューティング環境112は、ラップトップやパーソナルコンピューター上を含むあらゆるインフラストラクチャープラットフォームに実装され得ると解するべきである例えば、この場合、クラウドコンピューティング環境112のそれぞれのコンポーネントは、ラップトップ又はパーソナルコンピューター上の別個のプロセス又はデーモンとして動作する。0023図3は、クラウドコントローラ134により配備されるウェブアプリケーションの準備のフロー図を示す。ステップ300では、IDE142のプラグインは、開発者140によって開発されたウェブアプリケーションを分析し、ウェブアプリケーションの名前及びウェブアプリケーションを開発するために使用されるアプリケーションフレームワーク例えば、Spring、RubyOnRails等等の、セットアップ特性を決定する。例えば、一実施形態では、IDE142のプラグインは、ウェブアプリケーションを構成する様々なファイル及び、おそらく、それらのファイルの内容の組織的構造を分析しそのようなアプリケーションフレームワークに特有の性質を特定することにより、ウェブアプリケーションを開発するのに使われたそれらのアプリケーションフレームワークを特定する例えば、Spring、RubyOnRails等。ステップ302では、IDEプラグインは、セットアップ特性をクラウドコントローラ134に送信し、クラウドコントローラ134は、ステップ304においてこのようなセットアップ特性を受信する。ステップ306において、IDEプラグイン134は、更に、ウェブアプリケーション又はその一部をクラウドコントローラ134に提出し、一方、クラウドコントローラ134は、ステップ308で、提出されたウェブアプリケーションを受信する。一実施形態では、提出されたウェブアプリケーションは、Javaウェブアプリケーションアーカイブ即ちWARファイルの形式を取り、Javaウェブアプリケーションアーカイブは、Javaウェブアプリケーションを構成する、動的な例えば、JavaServerPages等ウェブページ、静的なウェブページ、Javaサーブレット、Javaクラス、及びその他のプロパティ、構成及びリソースファイルを含む。しかしながら、ウェブアプリケーションは、ウェブアプリケーションが配備されるランタイム環境例えば、ApacheTomcatアプリケーションサーバー等と互換性のあるその他のあらゆる種類のパッケージとして、IDEプラグインによって提出され得る、と解するべきである。例えば、別の実施形態では、提出されたウェブアプリケーションは、テープアーカイブファイル、即ちtarファイルとしてまとめられた、WARファイルに類似の、tarballとも呼ばれる複数のファイルを有する。更に、ウェブアプリケーションそのものを提出するよりも、例えば、ユニフォームリソースロケーターURL、Gitリポジトリ又は類似のその他のウェブアプリケーションへの参照を提供することにより、ウェブアプリケーションをダウンロード又はウェブアプリケーションにアクセスする参照を提供することにより、別の実施形態ではステップ306でウェブアプリケーションを提出し得る、と解されるべきである。そのような実施形態では、従って、ステップ308のウェブアプリケーション受信のステップは、ウェブアプリケーションを取得するために提供された参照を使用することになる。次に、ステップ310では、IDEプラグインはクラウドコントローラ134に要求を送信し、クラウドコンピューティング環境112で有効なサービスを確認する。例えば、もしウェブアプリケーションがデータベースへのアクセスが必要ならば、IDEプラグインは、クラウドコンピューティング環境112で有効なデータベースサービスのリスト例えば、MySQL、Oracle等を具体的に要求してもよい。そのような要求を受信すると、ステップ312で、クラウドコントローラ134は、有効なサービスに関するサービス提供データのリクエスト自体をアドレシングアンドディスカバリー層132に伝搬する。ステップ314でこの要求をサービス提供者130が受信すると、サービス提供者130のシムコンポーネント例えば、図2A及び図2Bを参照は、ステップ316で、アドレシングアンドディスカバリー層132を通じて対応するサービスのためにサービス提供データを提供する。0024そのようなサービス提供データを受信すると、次にステップ318において、クラウドコントローラ134は、ステップ310で要求されたように、有効なサービスの識別をIDE142に送信することができる。有効なサービスの識別を受信すると、次にステップ320において、IDEプラグインは、望まれる有効なサービスの選択を決定及び送信し、提出されたウェブアプリケーションにバインドする。ある実施形態においては、そのような選択のプロセスは、IDEに設定された事前設定選好に従って自動化されてもよく、又はその他の実施形態においては、そのような選択のプロセスは開発者140によって手動選択されることを含んでもよい、と解されるべきである。サービスの選択を受信すると、ステップ322において、クラウドコントローラ134は、ステージングプロセスを開始し、提出されたウェブアプリケーションのWARファイル又はその他のパッケージの内容をステージングさもなければ変更し、選択されたサービスをウェブアプリケーションにバインドする。一実施形態では、このステージングプロセスは、WARファイルを解凍するかそれを構成するディレクトリ構造及びファイルを抽出し、従って新しいファイルを挿入及び/又は既存のファイルの変更を行い選択されたサービスをバインドし、WARファイルを再度圧縮する例えば、さもなければ、以前のWARファイルを置き換える新しいWARファイルを作成することを含む。例えば、ステップ324では、クラウドコントローラ134と選択されたサービスのためのサービス提供者130のシムコンポーネントとは、アドレシングアンドディスカバリー層132を通じてメッセージを交換してもよく、サービスログイン認証情報例えば、ユーザーネーム/パスワードの組み合わせ、ホスト名、ネットワークアドレス、及びポートナンバー等の追加的なサービス提供データを確立するか、さもなければ取得し、提出されたウェブアプリケーションが、配備に当たりサービスと通信することを可能にするのに必要になるかもしれない必須のソフトウェアドライバ/ライブラリ及びサービスへアクセスする。次に、クラウドコントローラ134は、ステージングプロセスの一部として、WARファイルの内容にそのようなサービス提供データを組み込むことができる。一実施形態では、提出されたウェブアプリケーションを開発するのに使われたアプリケーションフレームワークを特定するセットアップ情報即ち、ステップ300でクラウドコントローラ134によって受信されたものは、クラウドコントローラ134がWARファイルの内容にサービス提供データを正しく挿入することを可能にし、アプリケーションフレームワークによって課されたWARファイルのデータ組織構造に基づき選択されたサービスをバインドする例えば、サービスのためのホスト名、ネットワークアドレス、ポート番号、ログイン認証情報等を反映する、追加の環境変数、設定ファイル内のエントリ、追加のシステムパラメータ等を挿入する。例えば、もし、アプリケーションフレームワークがSpringFrameworkスプリングフレームワークならば、クラウドコントローラ134は、SpringFrameworkスプリングフレームワークで開発されたウェブアプリケーションがWARファイル内でそのデータを管理する様態に従って、サービス提供データをWARファイルの内容に挿入する。WARファイルの内容が変更されて選択されたサービスが提出されたウェブアプリケーションにバインドされると、ステップ326において、クラウドコントローラ134がコンテナVMによって実行可能な開始スクリプトファイルを生成し、ランタイム環境を開始し、ランタイム環境で提出されたウェブアプリケーションを立ち上げる。例えば、もし、WARファイルがApacheTomcatアプリケーションサーバーのようなランタイム環境に配備されることを意図されているならば、開始スクリプトファイルは、ApacheTomcatを開始し、次に、ウェブアプリケーション125を含むサーブレット又は複数のサーブレットを開始するコマンドを含んでもよい例えば、ネット開始コマンド等によって。0025ステップ328において、クラウドコントローラ134は、次に、有効なコンテナVMによって解凍可能なウェブアプリケーション配備パッケージを作る。一実施形態では、そのようなウェブアプリケーション配備パッケージは、tarファイルtarballとも呼ばれるであり、tarファイルは、開始スクリプトファイル、コンテナVMにインストールされ開始されるランタイム環境のインスタンス例えば、ApacheTomcat等、及びウェブアプリケーション125のためのWARファイル例えば、ランタイム環境のインスタンスのディレクトリ構造内の適切なディレクトリに埋め込まれたものを含む。別の実施形態は、更に、企業100のIDEプラグインとクラウドコントローラ134との間の通信及び使用されるネットワーク帯域幅を合理化する最適化を含んでもよい。例えば、一実施形態では、ステップ302において、セットアップ特性の送信の一環として、IDEプラグインは、WARファイル内のそれぞれのファイルのファイルサイズとハッシュ値例えば、SHA-1値等の指紋リストを含んでもよい。一方、クラウドコントローラ134は、ハッシュ値/ファイルサイズのペアの指紋エントリの独自のテーブルを保持し、それぞれのエントリが、保存されているファイルに対応する。IDEプラグインからリストを受信すると、クラウドコントローラ134は、テーブルを参照してWARファイル内のファイルのうちどれかを既に有するかどうか判定する。このようにして、クラウドコントローラ134は、クラウドコントローラ134がテーブル内にエントリを有さない、関連付けられたハッシュ値及びファイルサイズがあるファイルだけを特に要求することができる。このような最適化は、IDEプラグインからクラウドコントローラ134に送信されるデータ量を大きく減少させることができる。例えば、もし、既にアップロードされたウェブアプリケーションの1つのライブラリファイルの数行のコードだけが変更された場合、上記指紋式プロセスは、IDEプラグインがWARファイル全体ではなくライブラリファイル自体だけを送信することを可能にする。同様に、更に、異なるウェブアプリケーションは共通のアプリケーションフレームワークファイルを共有することが多いので、上記指紋式プロセスは、異なるウェブアプリケーションのアップロード回数を大きく減らすことができる。IDE又はIDEプラグインが図3に示されるものの、別の実施形態はその他のIDE以外の環境を使ってIDEプラグインによって実行される図3のフローを開始し得ると解するべきである。例えば、開発者140は、例えば、HTTPリクエスト等のネットワーク要求を開始させることができる、コマンドラインインターフェイスCLI、他のアプリケーション、又はその他の同様のプロセス若しくはツールを通じて、クラウドコントローラ134と相互作用し、クラウドコントローラ134と通信してもよい。更に、実施形態は、IDEプラグイン又は、CLI又は他の同様のツールとクラウドコントローラ134との間の通信を傍受するポリシーエンジン144を有してもよく、例えば、事前に定義されたポリシーに基づいてステップ320でサービスを選択する等して設定されたポリシーを順守するために通信を変更する、及び/又はIDEプラグインの代わりにステップを実行する、と解するべきである。プラグインIDE又は、CLI又はその他のアプリケーション若しくはツールで提供されるような本明細書中に記載される機能性は、別の実施形態においては、代わりにクラウドコントローラ134内等のクラウドコンピューティング環境112の内部で提供され得ると解されるべきである。例えば、別の一実施形態においては、ステップ300でのセットアップ特性の一部としてのアプリケーションフレームワークの決定は、ウェブアプリケーションの受信時に、クラウドコントローラ134によってなされてもよい。0026図4は、クラウドコンピューティングアーキテクチャー内で、ウェブアプリケーションをホストするための、コンテナ仮想マシンを示す。そのようなコンテナ仮想マシンは、例えば図1Aで上述したように仮想化プラットフォーム120によって、クラウドコンピューティングアーキテクチャーに提供される。コンテナVM1261は、x86アーキテクチャプラットフォーム等のサーバーグレイドハードウェアプラットフォーム402を有するサーバー1161~116nの1つ例えば、図4に示されるサーバー1161によって、ホスティングされる。このようなハードウェアプラットフォームは、ハードドライブ等のローカル記憶ユニット404、ネットワークアダプタNIC406、システムメモリ408、プロセッサ410、及び、他のI/O装置を含んでもよい。I/O装置の例として、図4に示されないマウスやキーボードが挙げられるが、これに限定されるものではない。0027以下ではハイパーバイザー412とも呼ばれる仮想化ソフトウェア層は、ハードウェアプラットフォーム402の上にインストールされる。ウェブアプリケーションをホスティングするために、その中で複数のコンテナVMが同時にインスタンス化され実行される、仮想マシン実行スペース414を、ハイパーバイザー412はサポートする。示されるように、仮想実行スペース414は、コンテナVM1261~126xをサポートする。コンテナVM1261~126xのそれぞれについて、ハイパーバイザー412は、仮想ハードドライブ4181、仮想NIC4201、仮想CPU4221、及びVM1261のためのRAM4241等のエミュレートされたハードウェアを含む、対応する仮想ハードウェアプラットフォーム即ち、仮想ハードウェアプラットフォーム4161~416xを管理する。例えば、仮想ハードウェアプラットフォーム4161は、標準的なx86ハードウェアアーキテクチャと同等に機能してもよく、MicrosoftWindows登録商標、Linux登録商標、Solaris登録商標x86、NetWare、FreeBSD等のあらゆるx86がサポートされたオペレーティングシステムがゲストオペレーティングシステム426としてインストールされコンテナVM1261のためにウェブアプリケーション125を実行してもよい。しかしながら、別の実施形態においては、コンテナVM1261~126xのそれぞれが、1つのウェブアプリケーションではなく複数のウェブアプリケーションの実行をサポートしてもよい、と解されるべきである。ハイパーバイザー412は、ゲストオペレーティングシステム426から仮想プラットフォーム4161へのI/O要求を、ハードウェアプラットフォーム402への対応する要求に変形する任務を負う。図4の実施形態では、コンテナVM12611のゲストオペレーティングシステム426が配備エージェント428の実行をサポートし、配備エージェント428は、プロセス又はデーモンであり、例えば、アドレシングアンドディスカバリー層132を通じてクラウドコントローラ134と通信し、ウェブアプリケーション配備パッケージを受信解凍し、ルーター136と通信し、コンテナVM1261.への配備が成功したウェブアプリケーションのためのネットワークルーティング情報を提供する。ある実施形態では、コンテナVMのインスタンス化によって、配備エージェント428が自動的に立ち上げられる。ゲストオペレーティングシステム426は、更に、その中でウェブアプリケーション125が動作するランタイム環境430のインストール及び実行をサポートする。例えば、一実施形態では、ランタイム環境430は、Javaベースのウェブアプリケーションの配備をサポートするJava仮想マシン及び様々なAPIライブラリを含む例えば、ApacheTomcat等のJavaアプリケーションサーバーであってもよい。図3に照らして説明されるように、そのようなランタイム環境430は、クラウドコントローラ134によって作られるウェブアプリケーション配備パッケージの一部として、コンテナVMによって受信されてもよい。0028図4の仮想化コンポーネントを記述するために使用された様々な用語、レイヤー及び分類は、それらの機能性又は本発明の思想若しくは範囲から逸脱することなく、異なって認識されてもよいと解されるべきである。例えば、仮想ハードウェアプラットフォーム4161~416xは、仮想マシンモニターVMM4341~434xの一部として考えられてもよく、仮想マシンモニターVMM4341~434xは、ハイパーバイザー412とそれぞれのコンテナVMとの間の調整動作に必要な仮想システムサポートを実装する。代わりに、仮想ハードウェアプラットフォーム4161~416xは、VMMs~4341~434xと独立していると考えられてもよい。VMMs~4341~434xは、ハイパーバイザー412とは独立していると考えられてもよい。使用可能な、ハイパーバイザー412の一例は、VMware,Inc.から発売されているVMwareESX商標製品のコンポーネントとして含まれている。更に、他の仮想化されたコンピューターシステムのアーキテクチャは、ホスティングされる仮想マシンシステム等、本教示と一致するように使用されてもよく、仮想マシンシステムではハイパーバイザーがホストオペレーティングシステム上で動作するよう設計される、と解されるべきである。更に、図1Aに照らして既に説明したように、図4に示されるようなコンテナVMを提供する仮想化プラットフォーム120がハードウェアリソース114によってサポートされてもよく、ハードウェアリソース114が、ネットワーキングで繋がっている1つ又は複数のデータセンターの物理的なコンピューター及びデータ記憶システムを何台でも含んでおり、それぞれの物理的なコンピューターが、1つ又は複数のコンテナVM1261~126mをホスティングし、更には、おそらく、ルーター136、クラウドコントローラ134、ヘルスマネージャー138、様々なベースサービス128、サービス提供者130、アドレシングアンドディスカバリー層132等の、クラウドコンピューティング環境112のその他のコンポーネントの機能を実行する1つ又は複数のプロセスを動作させるその他のVMをホストすると、解されるべきである。コンテナVMに関して図4に照らして説明されるように、そのようなその他のコンポーネントをサポートするそれぞれのVMは、ゲストオペレーティングシステム及び上記プロセスのいずれのものを含むことができる1つ又は複数のゲストアプリケーションを有してもよい、仮想コンピューターシステムである。0029図5は、コンテナ仮想マシン内にウェブアプリケーションを配備するためのフロー図を示す。図5で説明されるステップは、例えば、図3で説明されるステップに従ってクラウドコントローラ134が配備のためにウェブアプリケーション125を受信及び準備した後に、行われる。ステップ500では、クラウドコントローラ134は、ウェブアプリケーション125を立ち上げるために企業100から例えば、開発者140から要求を受信する。ステップ502では、クラウドコントローラ134は、有効なコンテナVMの要求をアドレシングアンドディスカバリー層132経由でブロードキャストする。一実施形態では、そのようなブロードキャスト要求は、ゲストオペレーティングシステムの種類例えば、Windows、Linux、MacOS等、コンピューティングリソース要件例えば、メモリ要件等等の、コンテナVMで要求される具体的な特性を要求するために、クラウドコントローラ134によって味付けされてもよい。ステップ504では、コンテナVM1261の配備エージェント428がアドレシングアンドディスカバリー層132経由で応答し、コンテナVM1261の有効性を示し、ウェブアプリケーション125をホストする。ステップ506では、クラウドコントローラ134は、アドレシングアンドディスカバリー層132経由で配備エージェント428にリンク例えば、URLを提供し、さもなければ、コンテナVM1261との通信を確立し、ウェブアプリケーション125のためにウェブアプリケーション配備パッケージをダウンロードする例えば、図3のステップ328で作られるように。そして、ステップ508では、配備エージェント428は、ウェブアプリケーション配備パッケージを取得するか、さもなければ受信する。ステップ510では、配備エージェント428は、ウェブアプリケーション配備パッケージを解凍し、ウェブアプリケーション125と関連付けられたWARファイル又はその他のパッケージの、ランタイム環境の適切なディレクトリへのロードを含め、ランタイム環境430例えば、ApacheTomcatアプリケーションサーバー等をインストールする。ステップ512では、配備エージェント428は、ウェブアプリケーション配備パッケージの開始スクリプトファイルを実行し、それによってランタイム環境例えば、ApacheTomcatを立ち上げ、ランタイム環境内でウェブアプリケーション125を開始するコンテナVM1261内に新しいプロセスを引き起こす。例えば、一実施形態では、ポート番号のウェブアプリケーション125へのバインディングが成功していることを確認することによりウェブアプリケーション125が立ち上げ成功されたことを配備エージェント428が認識すると、配備エージェント428は、ステップ514で、アドレシングアンドディスカバリー層132を通じて、ホスト名、コンテナVM1261のネットワークアドレス情報、配備されたウェブアプリケーション125のバインドされたポート番号をブロードキャストする。一方、ステップ516で、ルーター136はアドレシングアンドディスカバリー層132を通じて、ブロードキャストされたホスト名、ネットワークアドレス情報、及びバインドされたポート番号を取得し、ステップ518で内部のルーティングテーブルをアップデートし、それによりルーター136が、ウェブアプリケーション125に対して企業のカスタマー144から受信したURL要求をコンテナVM1261に正しくルーティングすることを可能にする。ステップ514から518を通じてのウェブアプリケーションの配備成功後にルーター136においてルーティング情報を動的にアップデートするプロセスは、例えば、ハードウェア障害中、ロードバランシング目的等の任意の数の理由のために、ウェブアプリケーションを異なるコンテナVM1261~126mに、より簡単に移行、移動、又は再配備する柔軟性を、クラウドコンピューティング環境112に与える、と解すべきである。例えば、一例のシナリオでは、ヘルスマネージャー138が、その中でウェブアプリケーション125が開発されたコンテナVM1261をホストするサーバー1161がハード障害を起こしたことが原因で、ウェブアプリケーション125が停止したと認識するかもしれない。そのような認識後、ヘルスマネージャー138は、異なるサーバーで動作する異なるコンテナVM内にウェブアプリケーション125を再配備するために、クラウドコントローラ134への要求を開始してもよい。ステップ514から518の結果、クラウドコントローラ134によってウェブアプリケーション125の再配備が成功すると、ルーター136は自動的に新しいルーティング情報でアップデートされ、ルーター136は、異なるサーバー上の異なるコンテナVM上に現在は配備されているウェブアプリケーション125へ、正しく要求をルーティングするそして、従って新しいネットワークルーティング情報と関連付けられる。上述の記載においては、ホスト名、ネットワークアドレス、及びポート番号を利用して、ウェブアプリケーションに対するネットワークアドレス情報を一般的に示したが、クラウドコンピューティング環境112によって実装される接続ネットワーク及び通信プロトコルの構造により、実施形態ではどのような種類のネットワーク情報もネットワークアドレス情報として使用され得る、と解されるべきである。更に、クラウドコントローラ134が将来にウェブアプリケーション125を停止するコマンドを受信した場合例えば、管理者146等の要求によってには、ステップ520では、配備エージェント428は、配備されたウェブアプリケーション125のプロセス識別子も識別し、停止スクリプトファイルを生成する。0030添付の請求項に記載される発明の広い思想と範囲から逸脱することなく、ここに記述される具体的な実施形態は様々な改造や変更がなされてもよいと解されるべきである。例えば、上述の記載ではウェブアプリケーション又はインターネットアプリケーションを使用した実施形態を説明したが、あらゆるネットワーク使用アプリケーションがここに開示される技術を利用することができ、従って、ここで使われるウェブアプリケーションは、ネットワークを基にした通信を採用する、あらゆる種類のクライアントサーバー式のアプリケーションを含むと解されなければならない。更に、上述の実施形態は、配備されたウェブアプリケーションをホストするコンテナVMの使用に注目したが、あらゆるアプリケーションコンテナがウェブアプリケーションをホストするのに使用でき、そのようなアプリケーションコンテナは、仮想マシンのそのようなVMとプロセス、従来の非仮想化されたオペレーティングシステムのカーネルレベルコンテナとプロセス、及びアプリケーションレベルのコードを実行することができる隔離された環境を提供する他のあらゆる実行環境を含むと解されなければならない。同様に、クラウドコンピューティング環境112の様々なコンポーネントは1つ又は複数の仮想マシンとして実装されていると一般的に記載された例えば、負荷分散とスケーラビリティのためが、例えば、従来の非仮想化されたコンピューティング環境のバックグラウンドプロセス、スレッド又はデーモンを含め、あらゆる種類のアプリケーションコンテナ上述したようにもそのようなコンポーネントとして実装されてもよいと解されなければならない。更に、ウェブアプリケーションをホストしその他のコンポーネントを実装する異なる種類のアプリケーションコンテナ組み合わせ例えば、クラウドコントローラ134、ルーター136、ヘルスマネージャー138、ベースサービス128、サービス提供者130、アドレシングアンドディスカバリー層132等が、特定のクラウドコンピューティング環境112実装を構成することができる。更に、クラウドコンピューティング環境112の様々なコンポーネントの複数のインスタンス例えば、クラウドコントローラ134、ルーター136、ヘルスモニター138、サービス提供者130等は、例えば、スケーラビリティの目的のために別の実施形態に実装され得ると解されなければならない。0031ここに記載される様々な実施形態は、様々なコンピューター実装動作を採用し、コンピューターシステムにデータを蓄積することを含んでいてもよい。例えば、それらの動作は、物理量の物理的操作を要求してもよく、通常は、必ずではないがそれらの量は、電気又は磁気信号の形態を取り、それら又はそれらを代表するものは、保存、転送、合併、比較、又は操作されることができる。更に、その様な操作は、生成、特定、決定、又は比較等の用語で呼ばれることが多い。発明の1つ又は複数の実施形態の一部を形成する、ここに記載されるあらゆる操作は、有用な機械操作であってもよい。更に、発明の1つ又は複数の実施形態は、それらの動作を行うデバイス又は装置も指す。装置は、具体的な要求される目的のために特別に構築されてもよく、又は、装置は、選択的に起動されるかコンピューターに記録されるコンピュータープログラムによって構成される汎用コンピューターであってもよい。特に、様々な汎用マシンが、本教示に従って書かれたコンピュータープログラムと共に使用されてもよく、又は様々な汎用マシンが、要求された動作を実行する、より特殊化した装置を構築するのにより便利であってもよい。0032ここに記載される様々な実施形態は、ハンドヘルド機器、マイクロプロセッサシステム、マイクロプロセッサベースの又はプログラム可能な民生用電子機器、ミニコンピュータ、メインフレームコンピュータ等を含む、その他のコンピューターシステム設定と共に実行されてもよい。0033本発明の1つ又は複数の実施形態は、1つ又は複数のコンピュータープログラムとして実装されてもよく、又は1つ又は複数のコンピューターで読み取り可能な媒体に埋め込まれる1つ又は複数のコンピュータープログラムモジュールとして実装されてもよい。コンピューターで読み取り可能な媒体という単語は、その後にコンピューターシステムに入力することができるデータを記憶することができる任意のデータ記憶装置を意味する。コンピューターで読み取り可能な媒体は、コンピュータープログラムをコンピューターで読み取り可能にするような既存又は将来開発される技術に基づいていてもよい。例えば、コンピューターで読み取り可能な媒体は、ハードドライブ、ネットワーク接続ストレージNAS、読み取り専用メモリ、ランダムアクセスメモリ例えば、フラッシュメモリデバイス、CDコンパクトディスクのCD-ROM、CD-R、CD-RW、DVDデジタル多用途ディスク、磁気テープ、及びその他の光学又は非光学データ記憶装置であってもよい。コンピューターで読み取り可能な媒体は、コンピューター読み取り可能なコードが格納され分散方式で実行されるように、ネットワーク結合されたコンピューターシステムを介して配布することもできる。0034本発明の1つ又は複数の実施形態を明確な理解のためにある程度詳細に記載したが、請求項の範囲内で変更や改造がなされ得ることは明らかである。従って、説明した実施形態は、例示であり限定的ではないと考えられなければならず、請求項の範囲は、ここに与えられる詳細に限定されてはならず、請求項の範囲は、請求項の範囲及び同等の範囲内で改造され得る。請求項、要素、及び/又はステップは、明示的に請求項に記載されている場合を除き、操作の特定の順番を意味するものではない。0035複数のインスタンスは、ここに記載されるコンポーネント、操作、又は構造のために、単一のインスタンスとして提供されてもよい。最後に、様々なコンポーネント、操作、及びデータストアの間の境界はやや恣意的であり、特定の操作は、具体的な例示的な構成の文脈で示されている。機能の他の割り当ては、想定されており、発明の範囲内に含まれる。一般的には、例示の構成で別のコンポーネントとして示される構造と機能は、組み合わせられた構造又はコンポーネントとして実装されてもよい。同様に、単一のコンポーネントとして示された構造と機能は、別のコンポーネントとして実装されてもよい。これら及び他の変形、改造、追加、改善は、添付の請求項の範囲内に入りうる。"