(58)【調査した分野】(Int.Cl.,DB名)
前記記憶ボリュームブロック識別子は、前記コンピューティング環境内の他の記憶ボリュームに対して前記記憶ボリュームを一意的に特定する、請求項1に記載のシステム。
前記インストーラユーティリティは、前記コンピューティング環境における前記記憶ボリューム上の前記アプリケーションをインストールするように構成されている、請求項3に記載のシステム。
前記使用状況レポートは、前記コンピューティング環境で実行される前記アプリケーションの外部サービスからネットワークを介して受信される、請求項1に記載のシステム。
前記アプリケーション利用サービスは更に、前記アプリケーション利用サービスに代わって発行されたセキュリティ証明書に少なくとも部分的に基づいて前記アプリケーションを認証するロジックを含む、請求項1に記載のシステム。
前記アプリケーション識別子は、ソフトウェアベンダーに関連付けられ、前記アプリケーション利用サービスは更に、前記ソフトウェアベンダーに関連付けられているユーザインタフェースを生成するロジックを備え、前記ユーザインタフェースは、前記アプリケーション識別子に関連付けられた少なくとも1つの使用状況レポートを含む、請求項1に記載のシステム。
更に、ネットワークを介して少なくとも1つの他のコンピューティングデバイスが実行するアプリケーション利用サービスに前記使用状況レポートを送信することを含み、前記アプリケーション利用サービスは、データストア内に前記使用状況レポートを格納するように構成される、請求項9に記載の方法。
前記使用状況レポートの生成は、少なくとも1つの前記コンピューティングデバイスにアクセス可能なソフトウェアライブラリによって提供されるアプリケーションプログラミングインタフェース(API)を介して行われる、請求項9に記載の方法。
前記使用状況レポートの生成は、前記アプリケーションの外部にある少なくとも1つのコンピューティングデバイスによって実行されるプロセスで実施される、請求項9に記載の方法。
【発明を実施するための形態】
【0007】
本発明の多くの態様は、以下の図面を参照することでより良く理解することができる。図面中の構成要素は必ずしも縮尺通りになっておらず、代わりに本発明の原理を明示する際に強調されている。また、図面においては類似の参照番号が、幾つかの図を通して対応する部分を指している。
【0008】
ネットワークアクセス可能なコンピューティング環境での仮想マシンは、オンデマンドベースでコンピューティングリソースを望むユーザによって益々使用されている。例えば、ウェブサイトが仮想マシンまたはマシンインスタンスを使用してもよいし、これらはクライアントにコンテンツを生成して供給するサーバーのようなコンピューティング環境によって提供される。この意味で、マシンインスタンスは、処理能力、グラフィックス能力、メモリリソース等を変えて構成することができる仮想コンピューティング環境である。マシンインスタンスを利用することができるシナリオの別の例としては、ソーシャルネットワーキングサービスの機能を提供するために、ソーシャルネットワーキングサービスはコンピューティング環境からオンデマンドベースでマシンインスタンスを用いてもよい。いずれの場合にも、マシンインスタンスを生成することが可能であり、例えば、アクセス集中が発生したとき、必要に応じ随時コンピューティング環境によって提供される。
【0009】
別の例として、コンピューティング環境におけるマシンインスタンスは、ユーザが所望するタスクのために十分な大規模コンピューティングシステムを有していない可能性がある場合、大規模な計算または演算を実行するためにユーザによって使用され得る。更に別の例として、コンピューティング環境でのマシンインスタンスは、リレーショナルまたは非リレーショナルデータベースにアクセスすること可能なデータベースサーバーとして使用することができる。いずれのシナリオでも、ユーザが達成しようとしている特定のタスクに適した処理能力、メモリリソース、及び他のコンピューティングリソースを有するマシンインスタンスを要求することができる。コンピューティング環境でのマシンインスタンスの他の実施例または使用例は、理解されるべきである。
【0010】
コンピューティング環境でのマシンインスタンスに関連して、様々なサイズの記憶ボリュームが大容量記憶のために使用される。記憶ボリュームは、マシンインスタンスが生成されるとき、マシンインスタンスを伴うことが可能である。換言すれば、マシンインスタンスが生成されるときにローカル記憶ボリュームをマシンインスタンスの一部として作成することができる。このようなローカル記憶ボリュームは、これに関連するマシンインスタンスの終了後は残存しない。従って、データの永続性がユーザによって課されているマシンインスタンスの使用の要件でない場合には、ローカル記憶ボリュームが適切となり得る。ユーザは、例えば、コンピューティング環境の外側にあるデータストア内の、或いはコンピューティング環境が提供する永続記憶サービス内のマシンインスタンスによって生成されたデータをアーカイブするようにマシンインスタンスを構成することができる。
【0011】
他のシナリオでは、マシンインスタンスの終了後も存続する記憶ボリュームが所望されることがある。それ故に、幾つかの実施形態においてコンピューティング環境は、特定のマシンインスタンスの終了及び/または障害に耐える様々なサイズ、速度、データの耐久性、及び他の属性を備えたオンデマンドベースでの永続記憶ボリュームを提供することができる。従って、そのような記憶ボリュームは、マシンインスタンスに関連付けられてユーザによって要求され、マシンインスタンスにアクセス可能な永続的大容量記憶装置として使用することができる。このような記憶ボリュームは、コンピューティング環境にアーカイブされ、ユーザに代わって生成された後続のマシンインスタンスで再利用することができる。
【0012】
例えば、マシンインスタンスは記憶ボリュームに関連付けることができ、その後、アプリケーションや他のソフトウェアをインストールして、マシンインスタンスによって使用するために記憶ボリューム上に構成することができる。マシンインスタンスを迅速な様式またはオンデマンドベースで生成及び/または終了することが可能なコンピューティング環境では、ソフトウェアライセンスまたは課金の目的のためにアプリケーションの使用状況を追跡することは、コンピューティング環境でのサービスとしてソフトウェアを提供する独立系ソフトウェアベンダーにとっては課題となり得るものであり、ここではソフトウェアはマシンインスタンス上で実行されている。また、追跡アプリケーションの使用は、同様にコンピューティング環境によって提供される記憶ボリュームを用いるマシンインスタンス上で、このようなコンピューティング環境に使用されるソフトウェアを販売或いはライセンスすることができる他のタイプのソフトウェアベンダーにとっても課題となり得る。以下の説明では、システム及びその構成要素の一般的な記述は、同一の動作の説明に準拠してなされる。
【0013】
図1に関しては、様々な実施形態によるネットワーク環境100を示している。ネットワーク環境100は、コンピューティング環境101、コンピューティング環境103及びクライアント104を含み、これらはネットワーク107を介して互いにデータ通信している。ネットワーク107は、例えば、インターネット、イントラネット、エクストラネット、ワイドエリアネットワーク(WAN)、ローカルエリアネットワーク(LAN)、有線ネットワーク、無線ネットワーク、または他の適切なネットワーク等、または2つ以上のそのようなネットワークの任意の組み合わせを含む。
【0014】
コンピューティング環境101とコンピューティング環境103は、それぞれ、例えば、サーバーコンピュータまたはコンピューティング能力を提供する他のシステムからなっていてもよい。代替的に、コンピューティング環境101及び/またはコンピューティング環境103は、1つまたは複数のサーバーバンク或いはコンピュータバンクや他の設備に配置されていて使用することができる複数のコンピューティング装置を使用することが可能である。このようなコンピューティングデバイスは、単一の設備に配置してもよいし、または多数の異なる地理的位置に分散してもよい。例えば、コンピューティング環境101及び/またはコンピューティング環境103は、互いにクラウドコンピューティングリソース、グリッドコンピューティングリソース、及び/または任意の他の分散型コンピューティング装置を備えた複数のコンピューティングデバイスを含むことが可能である。場合によっては、コンピューティング環境101及び/またはコンピューティング環境103は、処理、ネットワーク、記憶装置、または他のコンピューティング関連リソースの割り当てられた能力が経時的に変化し得る弾性コンピューティングリソースに対応してもよい。
【0015】
図1に示したネットワーク環境100の非限定的な実施例において、コンピューティング環境103とは、ユーザが、マシンインスタンス、記憶ボリューム、ストレージサービス、及び/または他のコンピューティングリソース等のコンピューティングリソースを要求することができる環境を意味している。いずれのコンピューティング環境も、ロードバランシング、フェイルオーバー、及び/またはフォールトトレランス目的のために、地理的に不同性な複数のコンピューティングデバイスを意味し得る。例えば、いずれのコンピューティング環境も、様々な地域、各地域のデータセンター内の様々なサーバーラック、及び様々なネットワークをまたがって様々なデータセンターに配置されているコンピューティングデバイスのクラスタで構成してもよい。
【0016】
種々の実施形態によれば、様々なアプリケーション及び/または他の機能性は、コンピューティング環境101とコンピューティング環境103内で実行される。また、各種のデータは、コンピューティング環境101にアクセス可能なデータストア111と112に格納されている。同様に、ユーザに要求されるコンピューティングリソース及び/またはサービスの提供を促進するため、コンピューティング環境103にアクセス可能なデータストア112に各種のデータが格納されている。データストア111とデータストア112は、明らかなように複数のデータストアを代表するものであってもよい。データストア111とデータストア112に格納されたデータは、様々なアプリケーション及び/またはそれぞれのコンピューティング環境101、103によって実行或いは提供される以下に記載の機能エンティティの動作に関連している。
【0017】
例えば、コンピューティング環境103で実行されるコンポーネントは、1つ以上のマシンインスタンス114、及び/または記憶ボリューム115を含む。加えて、本明細書では詳細に論じない他のアプリケーション、サービス、プロセス、システム、エンジン、または機能性もコンピューティング環境103で実行してもよい。上述したように、コンピューティング環境103は、マシンインスタンス114、記憶ボリューム115及び他のコンピューティングリソースまたはサービスのようなコンピューティングリソースをオンデマンドまたは必要に応じて提供する環境を意味する。幾つかのシナリオでは、ユーザは、コンピューティングリソースを排他的にコンピューティング環境103に確保するか或いは脇に置くこともできる。
【0018】
マシンインスタンス114は、ユーザが様々なコンピューティングタスクを実行するために使用することができる仮想マシンまたはコンピューティングリソースの量子を意味する。マシンインスタンス114は、1つ以上のオペレーティングシステム、ユーザアプリケーション、サービス等を実行する1つまたは複数のコンピューティングデバイスを意味してもよい。言い換えれば、マシンインスタンス114は、実行アプリケーション117、サービス或いは他の機能性の実行を容易にするために、オペレーティングシステムの仮想化されたインスタンスからなるものである。各マシンインスタンス114は、仮想化レイヤーと通信することができ、コンピューティング環境103で実行されたマシンインスタンス114のそれぞれによってハードウェアレイヤーへのアクセスを制御する。このような仮想化レイヤーは、更に特権的ドメインを含んでいてもよい。特権的ドメインは、マシンインスタンス114、ハードウェアレイヤー、または他のコンポーネント間の相互作用を容易にするために、実行された他のマシンインスタンス114に対して別個の或いはより高いレベルのユーザ権限を持つマシンインスタンス114を含んでいてもよい。また、特権的ドメインは、システム管理者のようにユーザの許可されたサブセットへの特権的ドメインの動作を制限するアクセス制限からなっていてもよい。特権的ドメイン224は、マシンインスタンスの生成と管理を容易にすることが可能である。
【0019】
ハードウェアレイヤーは、上記で参照したように、マシンインスタンス114及びそれらに関連する実行機能性の操作を容易にする様々なハードウェアコンポーネントを備えている。ハードウェアレイヤーは、ネットワークインタフェースカード、ネットワークルーティングコンポーネント、プロセッサ、メモリ、記憶装置、または他の構成要素を含んでいてもよく、これらは共に、ユーザが要求した特定のマシンインスタンス114内に含めることを所望するところの要求されたコンピューティング機能を提供する。例えば、処理速度、入力/出力操作能力及び他の性能属性について一定レベルを必要とするマシンインスタンス114は、仮想化レイヤーへの単一ハードウェアデバイスとして、コンピューティングデバイスの下層コンピューティングリソースを提供するようなハードウェアレイヤーを介して、複合コンピューティングデバイスに実装することが可能である。
【0020】
上述したように、幾つのシナリオでは、マシンインスタンス114は、大容量記憶のためにローカル記憶ボリュームで構成することができる。例えば、マシンインスタンス114によって実行されるアプリケーション及び使用されるデータは、このようなローカル記憶ボリュームに保存することができる。その他のシナリオでは、記憶ボリューム115は、マシンインスタンス114とは別個のコンピューティング環境103によって要求され或いは確立され得る。言い換えれば、記憶ボリューム115は、マシンインスタンス114に関連付けられており、それと関連付けられている各マシンインスタンス114の終了より残存するように作成することが可能である。従って、各マシンインスタンス114の外側にある記憶ボリューム115を含む
図1に示されたシナリオは、本発明の実施形態が実行可能な構成の単なる一例であることを理解すべきである。
【0021】
従って、
図1に示された実施例では、マシンインスタンス114は、1つ以上のアプリケーション117を実行するように構成されている。アプリケーション117は、コンピューティング環境103におけるマシンインスタンス114内で使用するために独立したソフトウェアベンダーまたは他のエンティティによって販売或いはライセンスされたソフトウェアを意味する。換言すれば、アプリケーション117は、記憶ボリューム115にインストールされ、マシンインスタンス114内で使用されているソフトウェアを意味する。それ故、アプリケーション117の様々なコピーやインストールは、アプリケーション識別子119を持つことが可能となる。
【0022】
アプリケーション識別子119とは、アプリケーション117の他のコピーに対してアプリケーション117のコピーを一意的に識別する識別子を意味する。言い換えれば、アプリケーション識別子119は、ソフトウェアベンダーがアプリケーション117を一意的に識別するために使用することができる製品コードまたは識別子の他のタイプを意味する。バルクまたはマルチユーザライセンスのような幾つかのシナリオでは、アプリケーション117の複数のコピーが同一のアプリケーション識別子119によって構成することができることを理解すべきである。このようなシナリオでは、ソフトウェアベンダーは、使用がバルクのライセンスまたはマルチユーザライセンス契約の条項に準拠しているかどうかを決定するために、コンピューティング環境103内のアプリケーション117の使用状況を追跡することを望み得る。アプリケーション117は、コンピューティング環境103のマシンインスタンス114内で実行される任意のソフトウェア、ロジック、サービス、または他の機能性を含み得る。アプリケーション117の実施例は、Webアプリケーション、Webサービス、サーバーアプリケーション、または他の機能性を含んでもよい。
【0023】
記憶ボリューム115は、マシンインスタンス114にアクセス可能な大容量記憶リソースを意味する。幾つかの実施形態では、記憶ボリューム115は、ネットワークアクセス可能な記憶ボリュームを意味し、コンピューティング環境103でマシンインスタンス114と共に使用するためのファイルシステムまたはブロックレベルストレージボリュームを提供する。記憶ボリューム115は記憶ボリュームブロックデータ124からなり、これはマシンインスタンス114のオペレーティングシステムによって、または対応するマシンインスタンスによって実行されるアプリケーション117で使用するために、記憶ボリューム115内の記憶ブロックを意味する。例えば、マシンインスタンス114が作成され、アプリケーションストレージ、データストレージ、キャッシュファイルストレージ、オペレーティングシステムの使用、または考えられ得る他の用途のように、マシンインスタンス114の大容量記憶ニーズに合わせて記憶ボリューム115に関連付けることが可能である。
【0024】
また、記憶ボリューム115は1つまたは複数の記憶ボリュームのブロック識別子127によって構成され、これが記憶ボリューム115内の実際の記憶ブロックに書き込まれ、または関連付けられる識別子を表す。幾つかの実施形態では、コンピューティング環境103内の他の記憶ボリューム115に対して記憶ボリューム115を一意的に特定する記憶ボリューム識別子で構成することができる。他の実施形態では、記憶ボリュームのブロック識別子127は、コンピューティング環境115内の他の記憶ボリューム115において、他の記憶ブロックに対して記憶ボリュームブロックデータ124及び記憶ボリューム115内で1つ以上の記憶ブロックを一意的に識別することができる。また、記憶ボリューム115は、要求に応じて記憶ボリュームのブロック識別子127またはこのような記憶ボリューム識別子を対応するマシンインスタンス114へ提供するように構成される。幾つかの実施形態では、記憶ボリュームのブロック識別子127は、記憶ボリューム115内の1つまたは複数の記憶ブロックを一意的に識別するものであるか、または他の記憶ボリューム115に対して記憶ボリューム115を一意的に識別するものであるかに拘らず、それが関連付けられている記憶ボリューム115中の1つまたは複数の記憶ブロックに格納することができる。
【0025】
また、マシンインスタンス114は、使用アプリケーションプログラミングインタフェース(API)129を用いて構成することができ、これはソフトウェアライブラリを備えていて、アプリケーション117の使用は以下に更に詳細に説明するようにソフトウェアライブラリを介して報告することができる。使用状況API129は、与えられたアプリケーション117並びにマシンインスタンス114の代わりにアプリケーション117がインストールされた記憶ボリュームのブロック識別子127または記憶ボリューム識別子のためにアプリケーション識別子119を取得するように構成され、双方の識別子をアプリケーション117の使用状況を追跡するサービスに報告する。また、使用状況API129は、アプリケーション117並びに追跡の使用目的でアプリケーション117がインストールされて構成される環境に関連付けられた任意の他のメタデータを実行しているマシンインスタンス114に関連する識別子を取得するように構成することができる。使用状況API129を使用して得られたデータは、アプリケーション117の使用状況を追跡するために報告されることが可能になる。
【0026】
使用状況API129は、マシンインスタンス114によって実行されるアプリケーション117への1つまたは複数のAPI呼び出しを介してアクセス可能なソフトウェアライブラリとして、或いはマシンインスタンス114によって実行されるスタンドアロンプロセスとして実装することができる。幾つかの実施形態において使用状況API129は、アプリケーション117によるWebサービス呼び出しを介してアクセスされたネットワークアクセス可能なサービスとして実装したスタンドアロンサービスを意味する。上述したように、使用状況API129の動作とアプリケーション117の使用状況を追跡するサービスについては、以下で更に詳細に説明する。
【0027】
コンピューティング環境103のデータストア112は、データをアーカイブすることができる1つまたは複数の大容量記憶システムまたはデバイスを意味する。データストア112は、データ格納及びデータ耐久性のために様々な地理的区域及び種々のデータセンターに設置されている複数のコンピューティングデバイスを意味する。本開示の文脈では、データストア112に格納されているデータは、例えば、記憶ボリューム115に対応する記憶ボリュームアーカイブ134を含む。記憶ボリュームアーカイブ134の各々は、アーカイブブロックデータ136を含み、これは特定の記憶ボリューム115に対応する記憶ボリュームブロックデータ124を意味する。また、記憶ボリュームアーカイブ134の各々は、記憶ボリューム識別子127及び/または記憶ボリューム115に関連付けられた識別子に対応する1つまたは複数のアーカイブされた識別子138を含む。
【0028】
このようにして、記憶ボリューム115は対応するマシンインスタンス114の終了時にアーカイブすることができるが、記憶ボリュームのブロック識別子127並びに記憶ボリューム115に対応する記憶ボリュームブロックデータ124は新しい記憶ボリューム115に復元することができ、この新たな記憶ボリューム115は、もしユーザまたはマシンインスタンス114によって要求された場合、コンピューティング環境103によって作成されるものである。しかし乍ら、記憶ボリューム115のコンテンツが新しく生成された第2の記憶ボリューム115にコピーされた場合には、第2の記憶ボリュームは、異なる記憶ボリュームのブロック識別子127を有している必要がある。
【0029】
例えば、コンピューティング環境101で実行されるコンポーネントは、アプリケーション利用サービス141を含んでいる。加えて、本明細書では詳細に論じない他のアプリケーション、サービス、プロセス、システム、エンジン、または機能性もまたコンピューティング環境101で実行することができる。アプリケーションの使用サービス141は、コンピューティング環境103内におけるアプリケーション117の使用を追跡するために実行される。
【0030】
利用するAPI129は、少なくともアプリケーション識別子119並びにアプリケーション117がインストールされている記憶ボリューム115に関連付けられた記憶ボリュームのブロック識別子127を含んだ利用状況レポート147を生成する。使用状況レポート147は、アプリケーション117を実行するマシンインスタンス114に関連付けられた識別子、ソフトウェアベンダーに関連する識別子、マシンインスタンス114及び/または記憶ボリューム115が実行されるマシンまたはマシンのクラスタに関連付けられた地理情報など他の情報やメタデータを含んでいてもよい。使用状況API129は、アプリケーション117に関連付けられているインストーラユーティリティによってアプリケーション117がインストールされている場合に、使用状況レポート147を生成するために呼び出すことが可能である。
【0031】
また、使用状況レポート147は、アプリケーション117の起動時にアプリケーション117によって呼び出されたとき、使用状況API129を利用することで生成可能である。例えば、アプリケーション117の起動時に、アプリケーション117は、このアプリケーションが特定の記憶ボリューム115へインストールされているかについて(例えば、アプリケーション117によって記憶ボリューム115にセットされているか或いは書き込まれているフラッグを介して)以前に報告されているか否かを判断することができる。もし、そのインストールが以前に報告されていない場合、アプリケーション117は、API129が使用状況レポート147を生成し、使用状況サービス141に使用状況レポートを送信することを要求することができる。
【0032】
アプリケーションの使用サービス141は、使用状況API129を利用して生成された使用状況レポート147を取得する。アプリケーションの使用サービス141は使用状況レポート147からアプリケーション識別子119及び記憶ボリュームのブロック識別子127を抽出し、使用状況レポート147からデータをデータストア111に記憶する。また、アプリケーション利用サービス141は使用状況レポート147からアプリケーション117を実行するマシンインスタンス114に関連付けられている識別子のような他の情報を、或いはコンピューティング環境からマシンインスタンス114や記憶ボリューム115等に関する他のメタデータを抽出することができ、これらをデータストア111に格納することが可能である。
【0033】
データストア111に格納されているデータは、例えば、使用データ148を含んでおり、ここでは使用データ148に対応する各記録には、記憶ボリュームのブロック識別子149、アプリケーション識別子151、及び潜在的に他のデータが含まれている。上述のように、アプリケーション利用サービス141は、マシンインスタンス114におけるアプリケーション117のインストール及びコンピューティング環境103における記憶ボリューム115に対応した使用状況レポート147を受信することに応答して使用データ148を記憶することができる。
【0034】
クライアント104は、ネットワーク107に接続することができる複数のクライアントデバイスの典型である。クライアント104には、例えば、コンピュータシステムのようなプロセッサベースのシステムが含まれてもよい。このようなコンピュータシステムは、デスクトップコンピュータ、ラップトップコンピュータ、パーソナルデジタルアシスタント、携帯電話、スマートフォン、セットトップボックス、音楽プレーヤー、ウェブパッド、タブレットコンピュータシステム、ゲーム機、電子ブックリーダー、または同様な機能を備えたその他のデバイスの形態で実施することができる。
【0035】
クライアント104は、クライアントアプリケーション157及び/またはその他のアプリケーション等の様々なアプリケーションを実行するように構成されてもよい。クライアントアプリケーション157は、例えば、コンピューティング環境101及び/または他のサーバーによって提供されるネットワークコンテンツにアクセスするために、クライアント104内で実行されてもよい。クライアントアプリケーション157は、例えば、ブラウザ、モバイルアプリケーション等に対応させることができる。クライアントアプリケーション157は、コンピューティング環境103内で実行される特定のアプリケーション117に対応する使用データ148にユーザがアクセスすることを可能にする。クライアント104は、例えば、電子メールアプリケーション、ソーシャルネットワーキングアプリケーション、及び/または他のアプリケーション等のクライアントアプリケーション157の域を越えてアプリケーションを実行するように構成されることが可能である。
【0036】
次に、ネットワーク環境100の様々なコンポーネントの動作の一般的な説明を記す。始めに、コンピューティング環境103内の記憶ボリューム115に関連付けてマシンインスタンス114によって実行されるアプリケーション117は、上述したように使用状況API129を使用して生成された使用状況レポート147を介してその使用をアプリケーション使用サービス141に報告するように構成することができる。幾つかの実施形態では、アプリケーション117は、その使用を報告するために使用状況API129を介して搭載することができる。他の実施形態では、特定のアプリケーション117がインストール及び/または実行された場合、マシンインスタンス114によって実行される別のサービスを監視することができる。使用状況レポート147は、アプリケーション117がマシンインスタンス114及び記憶ボリューム115にインストールされるたびに(例えば、アプリケーション117に関連付けられているインストーラユーティリティにより)、アプリケーション117が実行されるたびに定期的に(例えば、毎週、毎月、変数N毎の実行)、或いは任意の他の頻度で生成することができる。従って、アプリケーション117は、API129がアプリケーション117のインストール及び/または使用に対応する使用状況レポート147を生成するよう要求することができる。このような要求は、アプリケーションに関連付けられたアプリケーション識別子119並びにアプリケーション117がインストールされている記憶ボリューム115に関連付けられた記憶ボリュームのブロック識別子127を含んでもよい。
【0037】
使用状況API129は、アプリケーションの使用サービス141に送信される使用状況レポート147にアプリケーション識別子119及び/または記憶ボリュームのブロック識別子127を組み込むことができる。アプリケーション117は、使用状況レポート147を生成するために、使用状況API129への自身の要求に他のデータを提供することができる。例えば、上述のようにコンピューティング環境103において、他のマシンインスタンス114に対するマシンインスタンス114を一意的に識別するマシンインスタンス114に関連付けられた識別子は、使用状況API129への要求に組み込むことができ、その後、使用状況レポート147に組み込むことができる。追加の実施例としては、アプリケーション識別子119とは別個のベンダーに関連する識別子も使用状況レポート147に組み込んでもよい。
【0038】
使用状況API129は、その後アプリケーションの使用サービス141へ使用状況レポート147を送信する。幾つかの実施態様では、使用状況API129は、アプリケーションのメーカーに提供されているセキュリティ証明書または他の認証資格を介して自身を認証することができる。次に、アプリケーションの使用サービス141は、使用状況レポート147から抽出されたデータを使用データ148としてデータ記憶装置111に格納することができる。また、アプリケーションの使用サービス141は、クライアント104によって実行されるクライアントアプリケーション157に送信されるユーザインタフェースを生成することができ、ここでユーザは特定のアプリケーション117に関連する使用データ、特定のアプリケーション識別子119、特定のソフトウェアベンダー、或いは使用状況データ148をソートすることが可能な任意の他のカテゴリを閲覧することが可能である。アプリケーションの使用サービス141は、クライアントアプリケーション157によってレンダリングされるユーザインタフェース以外の他の形態において、クライアントアプリケーション157によって閲覧するためにクライアント104に送信される報告データを生成することができる。
【0039】
図2〜3は、アプリケーションの使用サービス141によって生成されクライアント104にレンダリングされることができるユーザインタフェースを示している。図示されたユーザインタフェースは、コンピューティング環境103における特定のアプリケーション117の実行及び/またはインストールに関連した使用状況レポート147からのアプリケーションの使用サービス141によってデータストア111から得られた使用データ148を組み込む。
【0040】
図2は、アプリケーションの使用サービス141によって生成され、クライアントアプリケーション157によってクライアント104上でレンダリングされるユーザインタフェース201を示している。
図2は、アプリケーションの使用サービス141またはクライアント104上で実行されるブラウザクライアントアプリケーション157によってレンダリングするための使用データ149へのアクセスを有する任意の他のアプリケーションによって提供されるネットワークページの典型を示している。別の態様として、
図2は専用クライアントアプリケーション157によってレンダリングされるユーザインタフェースの典型を示すものである。図示の実施例では、ユーザインタフェース201は、アプリケーション203に関連付けられたコンピューティング環境103からの使用情報を含んでいる。図示された実施例におけるユーザインタフェース201は、クライアント104によって実行されるブラウザでアクセスされるユニフォームリソースロケータ(URL)205を用いてアクセスすることができる。アプリケーションの使用サービス141が、他の形式で使用状況データ148をクライアント104に提供できること、そしてアプリケーション117に関連付けられている使用状況データ148のブラウザでアクセス可能なレポートの図示された実施例が単なる一例に過ぎないことは理解されるべきである。
【0041】
従って、
図2のユーザインタフェース201に示されるように、アプリケーションの使用サービス141は、それぞれのアプリケーション識別子151、記憶ボリュームのブロック識別子149、並びに使用状況API129による使用状況レポート147に含まれているコンピューティング環境103のマシンインスタンス114内におけるアプリケーション117の特定のインストール及び/または実行に関連したその他の情報が含まれている特定のアプリケーション117のために使用データ148を取得することができる。加えて、インタフェース201は、ディテールズハイパーリンク214を介してユーザがアプリケーション117の特定のインストール及び/または実行に関する詳細情報を閲覧できるようにすることが可能であり、ディテールズハイパーリンクは、例えば、実行時間、インストール日、或いはアプリケーション117に関連した使用状況レポート147に含まれる使用に関する任意の他のメタデータ等のメタデータを提供してもよい。
【0042】
図3は、アプリケーションの使用サービス141によって生成され、クライアントアプリケーション157によってクライアント104上でレンダリングされるユーザインタフェース301の代替的な実施例を示している。
図3は、アプリケーションの使用サービス141、或いはクライアント104上で実行されるブラウザクライアントアプリケーション157によってレンダリングするため使用データ149へのアクセスを有する任意の他のアプリケーションの典型としてもよい。代替的には、
図3は、専用クライアントアプリケーション157によってレンダリングされるユーザインタフェースの典型としてもよい。
図3の実施例では、行302及び304に示されるように、使用データ148は、同一のアプリケーション識別子119を有するアプリケーション117の複数のインストール及び/または実行があったことを反映している。
【0043】
しかし乍ら、アプリケーション117のこれらのマルチインストール及び/または実行は、異なる記憶ボリュームのブロック識別子127と関連しており、そのことがライセンス契約に応じて、アプリケーション117の許可されたインストールや実行がコンピューティング環境103内で行われていることを示し得る。従って、アプリケーション117の不正使用及び/またはライセンス契約の範囲外でのアプリケーションの使用は、製品のインストールと関連付けられているアプリケーション識別子119に対して、アプリケーション117の使用状況並びにコンピューティング環境での記憶ボリューム115に関連付けられた識別子を追跡することによって検出することが可能となる。
【0044】
次に
図4〜5を参照するが、図示されたものは、様々な実施形態に従って、使用状況API129を介して使用及び/またはインストールを報告するアプリケーション117の一部の動作の実施例を提供するフローチャートである。
図4〜5のフローチャートは、本明細書に記載のようなアプリケーション117の一部の動作を実行するために使用することができる機能構成の多くの異なる種類の単なる一例を提供していることが理解される。代替的には、
図4〜5のフローチャートは、1つまたはそれ以上の実施形態に従い、コンピューティング環境103(
図1)に実行される方法のステップの一例を示すものとして認識することができる。
【0045】
図4のボックス401から始まり、アプリケーション117、またはアプリケーション117のインストーラユーティリティは、アプリケーション117を実行しているマシンインスタンス114に関連付けられた記憶ボリューム115にアプリケーション117のコピーをインストールする。インストーラユーティリティのワークフローの一部として、アプリケーション117は、そのインストールを、特定のマシンインスタンス114に関連して特定の記憶ボリューム115上に報告するように構成することができる。ボックス403では、アプリケーション117は、記憶ボリューム115に関連付けられた記憶ボリュームのブロック識別子127及び/またはアプリケーション117がインストールされた記憶ボリューム115内の1つまたは複数のブロックを取得する。ボックス405では、アプリケーション117は、記憶ボリューム115にインストールされているアプリケーション119のコピーに関連付けられたアプリケーション識別子119を取得する。ボックス407においては、アプリケーション117は、使用状況API129を介して、アプリケーションのインストールをアプリケーション利用サービス141へ報告するための使用状況レポート147を生成する。
【0046】
図5は、使用状況API129を介して、その使用及び/またはインストールを報告するアプリケーション117の別の実施例を示している。ボックス501では、記憶ボリューム115に格納されたアプリケーション117のコピーが、コンピューティング環境においてマシンインスタンス114で実行される。ボックス503では、アプリケーション117は、その使用及び/またはインストールが以前に報告されているかどうか、現在の使用状況やインストールが、アプリケーション117の構成されている報告スケジュールに従って報告することが要求されているか否かを判定する。
【0047】
そうでない場合には、使用状況をアプリケーションの使用サービス141に報告するアプリケーション117の一部は終了する。もしそうであれば、次にボックス505において、アプリケーション117は、記憶ボリューム115に関連する記憶ボリュームのブロック識別子127及び/またはアプリケーション117がインストールされている記憶ボリューム115内の1つまたは複数のブロックを取得する。ボックス507では、アプリケーション117は、記憶ボリューム115にインストールされているアプリケーション119のコピーに関連付けられたアプリケーション識別子119を取得する。ボックス509では、使用状況API129を介して、アプリケーション119は使用状況レポート147を生成し、これがアプリケーションのインストールをアプリケーション利用サービス141に報告する。その後、アプリケーション117の一部は終了する。
【0048】
次に
図6を参照するが、図示されたものは、様々な実施形態によるアプリケーションの使用サービス141の一部の動作の一実施例を示すフローチャートである。
図6のフローチャートは、本明細書に記載されるようにアプリケーション使用サービス141の一部の動作を実行するために使用することができる機能構成の多くの異なるタイプの中で単に一実施例を提供していることが理解される。代替例として、
図6のフローチャートは、1つまたは複数の実施形態に従ったコンピューティング環境101で実行される方法のステップの一例を示すものとして見ることができる。
【0049】
ボックス601から始まるが、アプリケーションの使用状況サービス141は、コンピューティング環境103からマシンインスタンス114内のアプリケーション117及び/または利用するAPI129を介して使用状況レポート147を受信する。ボックス603では、アプリケーションの使用状況サービス141が使用状況レポート147からアプリケーション識別子151を抽出する。ボックス605では、アプリケーションの使用状況サービス141が使用状況レポートから記憶ボリュームのブロック識別子149を抽出する。ボックス607では、アプリケーションの使用状況サービス141が、データストア111内の使用データ148として記憶ボリュームのブロック識別子149及びアプリケーション識別子151を格納する。
【0050】
本発明の実施形態は次の文節の観点から説明することができる。
1.コンピューティングデバイスで実行可能なプログラムを具体化する非一時的なコンピュータ可読媒体であって:
使用状況レポートの送信を容易にするために、ネットワークサービスコールを定義するアプリケーションプログラムインタフェースを提供するコードと、
コンピューティング環境でマシンインスタンスにおけるアプリケーションの実行またはインストールのうちの少なくとも1つに関連する使用状況レポートをアプリケーションプログラムインタフェースを介して取得したコードであって、マシンインスタンスは、コンピューティング環境内の記憶ボリュームに関連しており、ここでアプリケーションが記憶ボリュームにインストールされる、コードと、
使用状況レポートからアプリケーション識別子を抽出するコードであって、アプリケーション識別子は、アプリケーションの他のインストールに対してアプリケーションの1つのインストールに一意的に関連付けられる、コードと、
使用状況レポートから記憶ボリュームのブロック識別子を抽出するコードであって、記憶ボリュームのブロック識別子は、コンピューティング環境内の他の記憶ボリュームに対して記憶ボリュームに一意的に関連付けられ、記憶ボリュームのブロック識別子は、記憶ボリューム内の他の記憶ブロックに対して記憶ブロックの1つに更に一意的に関連付けられるコードと、
データストア内の記憶ブロックボリューム識別子に関連してアプリケーション識別子を格納するコードと、を備える非一時的なコンピュータ可読媒体。
2.プログラムは、更にアプリケーションに関連する複数の使用状況レポートをレンダリングするユーザインタフェースを生成するコードからなる、文節1に記載の非一時的なコンピュータ可読媒体。
3.文節1に記載の非一時的なコンピュータ可読媒体であって、プログラムは更に、
使用状況レポートからマシンインスタンス識別子を抽出するコードであって、マシンインスタンス識別子は、コンピューティング環境内の他のマシンインスタンスに対してマシンインスタンスに一意的に関連付けられるコード、及び
マシンインスタンス識別子を、データストア内のアプリケーション識別子と記憶ボリュームのブロックス識別子に関連付けるコードからなる、文節1に記載の非一時的なコンピュータ可読媒体。
4.システムであって、
少なくとも1つのコンピューティングデバイスと、
少なくとも1つのコンピューティングデバイスで実行可能なアプリケーションの使用状況サービスとからなり、アプリケーションの使用状況サービスは、
ネットワークを介して使用状況レポートを取得するロジックであって、使用状況レポートが、コンピューティング環境でマシンインスタンスにおけるアプリケーションのインストールの使用を示し、マシンインスタンスは、コンピューティング環境における記憶ボリュームに関連付けられる、ロジックと、
使用状況レポートからアプリケーション識別子を抽出するロジックと、
使用状況レポートから記憶ボリュームブロック識別子を抽出するロジックであって、記憶ボリューム識別子は記憶ボリュームと関連付けられる、ロジックと、
少なくとも1つのコンピューティングデバイスと通信するデータストア内の記憶ボリューム識別子に関連してアプリケーション識別子を格納するロジックと、からなるシステム。
5.記憶ボリュームのブロック識別子が、コンピューティング環境内の他の記憶ボリュームに対して記憶ボリュームを一意的に識別する、文節4に記載のシステム。
6.前記記憶ボリュームのブロック識別子が、記憶ボリューム内の少なくとも1つのブロックを一意的に識別する、文節4に記載のシステム。
7.記憶ボリュームのブロック識別子は、記憶ボリューム内のストレージの少なくとも1つのブロックに格納されている、文節4に記載のシステム。
8.使用状況レポートは、アプリケーションに関連付けられているマシンインスタンスによって実行されるインストーラユーティリティからネットワークを介して受信される、文節4に記載のシステム。
9.インストーラユーティリティは、コンピューティング環境で記憶ボリュームにアプリケーションをインストールするように構成されている、文節8に記載のシステム。
10.アプリケーションは、アプリケーションに関連付けられているインストーラユーティリティの他のコピーに対して前記インストーラユーティリティのコピーに一意的に関連付けられている、文節8に記載のシステム。
11.使用状況レポートがコンピューティング環境で実行されるアプリケーションの外部サービスからネットワークを介して受信される、文節4のシステム。
12.文節4に記載のシステムであって、前記アプリケーション利用サービスは更に、
使用状況レポートからマシンインスタンス識別子を抽出するロジックであって、マシンインスタンス識別子は、マシンのインスタンスに関連付けられている、ロジックと、
アプリケーション識別子と記憶ボリューム識別子に関連してマシンインスタンス識別子を格納するロジックと、からなるシステム。
13.アプリケーション利用サービスは、更にアプリケーション使用サービスに代わって発行されたセキュリティ証明書に少なくとも部分的に基づいてアプリケーションを認証するロジックからなる、文節4に記載のシステム。
14.アプリケーション識別子がソフトウェアベンダーに関連付けられており、アプリケーションの使用サービスは、更にソフトウェアベンダーに関連するユーザインタフェースを生成するロジックを備え、ユーザインタフェースは、アプリケーション識別子に関連付けられた少なくとも1つの使用状況レポートを含む、文節4に記載のシステム。
15.方法であって、
少なくとも1つのコンピューティングデバイスによってコンピューティング環境でマシンインスタンス内のアプリケーションを実行し、コンピューティング環境における記憶ボリュームを利用するようにアプリケーションを構成し、
少なくとも1つのコンピューティングデバイスによってアプリケーションの実行に関連付けられたアプリケーション識別子を識別し、
少なくとも1つのコンピューティングデバイスによって記憶ボリュームに関連付けられた記憶ボリューム識別子を識別し、そして
少なくとも1つのコンピューティングデバイスによってアプリケーション識別子と記憶ボリューム識別子を含む使用状況レポートを生成することからなる方法。
16.更に、ネットワークを介して少なくとも1つの他のコンピューティングデバイスによって実行されるアプリケーションの利用サービスに使用状況レポートを送信することからなり、アプリケーションの使用状況サービスは、使用状況レポートをデータストアに格納するように構成される、文節15に記載の方法。
17.更に、セキュリティ証明書を介してアプリケーションをアプリケーション利用サービスで認証することからなる、文節16に記載の方法。
18.使用状況レポートの生成が、少なくとも1つのコンピューティングデバイスにアクセス可能なソフトウェアライブラリによって提供されるアプリケーションプログラミングインタフェース(API)を介して行われる、文節15に記載の方法。
19.使用状況レポートの生成が、アプリケーションの外部にある少なくとも1つのコンピューティングデバイスによって実行されるプロセスで行われる、文節15に記載の方法。
20.使用状況レポートの生成が、アプリケーションに関連付けられているインストーラユーティリティによって行われる、文節15に記載の方法。
21.記憶ボリューム識別子が、コンピューティング環境内の他の記憶ボリュームに対して記憶ボリュームを一意的に識別する、文節15に記載の方法。
22.記憶ボリューム識別子が、一意的に記憶ボリューム内の少なくとも1つのブロックを識別する、文節15に記載の方法。
23.記憶ボリューム識別子が、記憶ボリューム内の少なくとも1つのブロックに格納される、文節15に記載の方法。
24.更に、
マシンインスタンスに関連付けられたマシンインスタンス識別子を識別することからなり、及び
使用状況レポート内のマシンのインスタンス識別子を含む、文節15に記載の方法。
【0051】
図7を参照するが、この図には本発明の実施形態によるコンピューティング環境101の概略ブロック図が示されている。コンピューティング環境101は、1つまたは複数のコンピューティングデバイス701を含んでいる。各コンピューティングデバイス701は、例えば、プロセッサ702とメモリ704を有する少なくとも1つのプロセッサ回路を含み、これらはローカルインタフェース707に接続されている。この目的を達成するため、各コンピューティングデバイス701は、例えば、少なくとも1つのサーバーコンピュータ或いは同様なデバイスを備えていてもよい。認識され得るように、ローカルインタフェース707は、例えば、添付のアドレス/制御バスまたは他のバス構造を伴うデータバスを備えていてもよい。
【0052】
メモリ704に格納されているものは、データとプロセッサ702によって実行可能な幾つかのコンポーネントとの両方である。具体的には、メモリ704に格納されプロセッサ702によって実行可能なものは、アプリケーションの使用状況サービス141、及び潜在的には他のアプリケーションである。同様に、メモリ704に格納されているものは、使用データ148及び他のデータを格納するデータストア111であってもよい。また、オペレーティングシステムは、メモリ704に格納されプロセッサ702によって実行可能であってもよい。
【0053】
明らかなように、メモリ704に格納されプロセッサ702によって実行が可能な他のアプリケーションが存在し得ることが理解される。本明細書で考察される任意のコンポーネントがソフトウェアの形で実装されている場合には、多数のプログラミング言語のいずれか1つが、例えば、C、C++、C#、オブジェクティブC、Java(登録商標)、JavaScript(登録商標)、Perl、PHP、Visual Basic(登録商標)、Python(登録商標)、Ruby、Flash(登録商標)、または他のプログラミング言語が用いられてもよい。
【0054】
多数のソフトウェアコンポーネントがメモリ704に格納され、プロセッサ702によって実行される。この点において、用語「実行可能な」とは、最終的にはプロセッサ702によって動作することができる形態であるプログラムファイルを意味する。実行可能なプログラムの例としては、例えば、メモリ704のランダムアクセス部分にロードすることができ、プロセッサ702によって実行することができる形式のマシンコードに変換することが可能なコンパイルされたプログラム、メモリ704のランダムアクセス部分にロードすることができ、プロセッサ702によって実行可能なオブジェクトコードのような適切なフォーマットで表すことができるソースコード、或いはプロセッサ702によって実行されるべきメモリ704のランダムアクセス部に指示を生成する別の実行可能プログラムによって翻訳されるソースコード等である。実行可能プログラムは、例えば、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカード、コンパクトディスク(CD)またはデジタル多用途ディスク(DVD)のような光ディスク、フロッピー(登録商標)ディスク、磁気テープ、または他のメモリコンポーネントを含むメモリ704の任意の部分またはコンポーネントに格納してもよい。
【0055】
メモリ704は、揮発性と不揮発性の両方を含み、データストレージコンポーネントとして定義される。揮発性コンポーネントは、電力の損失時にデータを保持しないものである。不揮発性コンポーネントは、電源が失われてもデータを保持するものである。従って、メモリ704は、例えば、ランダムアクセスメモリ(RAM)、リードオンリーメモリ(ROM)、ハードディスクドライブ、ソリッドステートドライブ、USBフラッシュドライブ、メモリカードリーダーを介してアクセスされるメモリカード、関連するフロッピーディスクドライブを介してアクセスされるフロッピーディスク、光ディスクドライブを介してアクセスされる光ディスク、適切なテープドライブを介してアクセスされる磁気テープ、及び/または他のメモリコンポーネント、或いはこれらのメモリコンポーネントの任意の2つまたはそれ以上の組み合わせで構成されてもよい。加えて、RAMは、例えば、スタティックランダムアクセスメモリ(SRAM)、ダイナミックランダムアクセスメモリ(DRAM)、または磁気ランダムアクセスメモリ(MRAM)及び他のそのようなデバイスからなっていてもよい。ROMは、例えば、プログラム可能な読み出し専用メモリ(PROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、または他の同様なメモリデバイスで構成してもよい。
【0056】
また、プロセッサ702とはマルチプロセッサ702及び/またはマルチプロセッサコアを意味し、メモリ704とはそれぞれ並列処理回路で動作するマルチメモリ704を意味し得る。このような場合には、ローカルインタフェース707は、マルチプロセッサ702のいずれか2つの間、任意のプロセッサ702と任意のメモリ704との間、或いはメモリ704のいずれか2つの間等の通信を容易にする適切なネットワークとすることができる。ローカルインタフェース707は、例えば、ロードバランシングを行うことを含んでおり、この通信を調整するように設計された追加のシステムを備えることが可能である。プロセッサ702は、電気的な或いは幾つかの他の利用可能な構造であってもよい。
【0057】
アプリケーション使用サービス141と、本明細書に記載の他の様々なシステムは、上述したように、汎用ハードウェアによって実行されるソフトウェアまたはコードで具現化してもよいが、代替案として、同じことを専用のハードウェアまたはソフトウェア/汎用ハードウェア及び専用ハードウェアの組み合わせで具現化してもよい。専用ハードウェアで具現化した場合、各々は、多くの技術のいずれか1つまたは組み合わせを使用する回路或いは状態マシンとして具現化することができる。これらの技術は、1つまたは複数のデータ信号を印加すると様々な論理機能を実行するための論理ゲートを有する離散論理回路、適切な論理ゲートを有する特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、或いはその他のコンポーネント等を含んでもよいが、これらに限定されるものではない。このような技術は当業者には一般的によく知られており、それ故、本明細書では詳細に説明しない。
【0058】
図4〜6のフローチャートは、使用状況API129を使用するアプリケーション117の一部並びに使用状況サービス141の実装の機能性と動作を示している。ソフトウェアで具現化した場合、各ブロックはモジュール、セグメント、または指定された論理機能(複数可)を実装するためのプログラム命令を含むコードの一部を意味してもよい。プログラム命令は、プログラム言語で人に可読に記述されたステートメントからなるソースコードの形で、或いはコンピュータシステムまたは他のシステムにおけるプロセッサ702のような適切な実行システムによって認識可能な数値命令を含むマシンコードの形で具現化してもよい。マシンコードは、ソースコード等から変換してもよい。ハードウェアで具現化した場合、各ブロックは指定された論理機能(複数可)を実装するための回路または相互接続された多数の回路を意味することになる。
【0059】
図4〜6のフローチャートは実行の特定順序を示しているが、実行順序は図示されているものと異なってもよいことが理解されよう。例えば、2つまたはそれ以上のブロックの実行順序は、図示の順序に対してスクランブルされてもよい。また、
図5に連続して示される2つまたはそれ以上のブロックは、同時に或いは部分的に同時に実行してよい。更に、幾つかの実施形態では、
図4〜6に示される1つまたはそれ以上のブロックをスキップまたは省略することができる。また、ユーティリティの増強、課金処理、パフォーマンス測定、またはトラブルシューティングの補助等を提供する目的で、カウンタ、状態変数、警告セマフォ、或いはメッセージを任意の数だけ本明細書に記載の論理フローに追加することも可能である。このような変形は、本発明の範囲内である。
【0060】
また、ソフトウェアまたはコードを含む本明細書に記載した任意のロジック或いはアプリケーションは、例えば、コンピュータシステムのプロセッサ702のような命令実行システム、もしくはその他のシステムによって、またはこれらのシステムに関連して使用するための非一時的なコンピュータ可読媒体に具現化することができる。この意味では、ロジックは、例えば、コンピュータ可読媒体から取り込んで命令実行システムによって実行することができる命令と宣言を含むステートメントを備えていてもよい。本発明の文脈において、「コンピュータ可読媒体」は、命令実行システムによって、または、このシステムに関連して使用するための本明細書に記載したロジックまたはアプリケーションを収容し、格納し、または保持することができる任意の媒体とすることが可能である。
【0061】
コンピュータ可読媒体は、例えば、磁気、光学、または半導体媒体等のような多くの物理的媒体のいずれかを含み得る。適切なコンピュータ可読媒体のより具体的な実施例には、磁気テープ、磁気フロッピーディスク、磁気ハードドライブ、メモリカード、ソリッドステートドライブ、USBフラッシュドライブ、または光ディスクが含まれることになろうが、これらに限定されない。同様にして、コンピュータ可読媒体は、例えば、スタティックランダムアクセスメモリ(SRAM)及びダイナミックランダムアクセスメモリ(DRAM)、または磁気ランダムアクセスメモリ(MRAM)を含むランダムアクセスメモリ(RAM)であってもよい。更に、コンピュータ可読媒体は、読み出し専用メモリ(ROM)、プログラマブルリードオンリーメモリ(PROM)、消去可能プログラマブル読み出し専用メモリ(EPROM)、電気的消去可能プログラマブル読み出し専用メモリ(EEPROM)、またはメモリデバイスの他のタイプであってもよい。
【0062】
本発明の上述した実施形態は、本発明の本旨を明確に理解するために記載した実装の可能な単なる実施例に過ぎないことを強調するべきである。本発明の精神及び本旨から実質的に逸脱することなく、多くの変形及び修正が上述した実施形態(単数または複数)に施すことができる。そのような変更及び変形の全ては、ここでは本発明の範囲内に含まれ、以下の特許請求の範囲によって保護されることを意図している。