本開示の様々な実施形態が、以下で詳細に論じられる。特定の実装が論じられるが、このことは、例示目的のためにのみ行われることを理解されたい。本開示の趣旨及び範囲から逸脱することなく、他の構成要素及び構成を使用することができる点が、関連技術の当業者には認識されるであろう。本開示は、クラウドベースのコンピューティング環境内でデータを共有及び記憶する改善された方法に関する、当該技術分野での必要性に対処するものである。
1.クラウドコンピューティング環境の概要
クラウドコンピューティングは、様々なリソースが、エンティティによって提供及び/又は制御され、インターネットを介して、そのエンティティによって認可ユーザに利用可能となる、インターネットベースのコンピューティングである。例示的なクラウドコンピューティングシステム構成100が図1に示され、このシステム構成内では、様々な電子装置が、コンテンツ及び他のデータを交換する目的のために、ネットワークを介して通信することができる。このシステムは、電子装置の相互通信を促進する、多種多様なネットワーク構成上での使用のために、構成することができる。例えば、図1のシステム100の構成要素のそれぞれは、ネットワーク内で、局所的又は分散的な方式で実装することができる。
システム100は、クラウドコンピューティングリソース120を含むように構成することができる。このクラウドリソースは、クラウドサーバ122、クラウドデータベース124、クラウドベースのストレージ126、クラウドネットワーク128、クラウドアプリケーション、クラウドプラットフォーム、及び/又は任意の他のクラウドベースのリソースなどの、様々なハードウェアリソース並びに/あるいはソフトウェアリソースを含み得る。一部の場合には、これらのクラウドリソースは分散される。例えば、クラウドベースのストレージ126は、複数の記憶装置を含み得る。一部の場合には、クラウドリソースは、複数のクラウドコンピューティングシステム及び/又は個別のネットワーク対応コンピューティング装置にわたって分散させることができる。例えば、クラウドコンピューティングリソース120は、サーバ1041、1042、...、104n(全体として「104」)、データベース106、及び/又は任意の他のネットワーク対応コンピューティング装置と通信して、クラウドリソースを提供することができる。
更には、一部の場合には、クラウドリソースを冗長化することができる。例えば、クラウドコンピューティングリソース120が、データバックアップサービスを提供するように構成される場合には、ストレージリソースが、オフライン、ビジー、又は他の方式で、リクエストを処理するために利用不可である場合であっても、依然としてデータがユーザに利用可能となるように、そのデータの複数のコピーを記憶することができる。別の実施例では、クラウドコンピューティングリソース120が、アプリケーションを提供するように構成される場合には、それらのアプリケーションを、異なるクラウドサーバのいずれからも供給することができるように、それらのアプリケーションは、異なるクラウドサーバから利用可能とすることができる。最も近いサーバ、又は最も低い電流負荷を有するサーバが、所定のリクエストを処理するために選択されるように、アルゴリズムを適用することができる。
システム100内で、ユーザは、直接通信及び/又は間接通信によってネットワークに接続される、ユーザ端末1021、1022、...、102n(全体として「102」)を通じて、クラウドコンピューティングリソース120と相互作用する。クラウドコンピューティングリソース120は、サーバ;デスクトップコンピュータ;モバイルコンピュータ;ハンドヘルド通信装置、例えば、モバイルフォン、スマートフォン、タブレット;セットトップボックス;ネットワーク対応ハードドライブ;及び/又は任意の他のネットワーク対応コンピューティング装置などの、多種多様な電子装置からの接続をサポートすることができる。更には、クラウドコンピューティングリソース120は、同時に複数の電子装置からの接続を受け入れて、それらの電子装置と相互作用することができる。複数の電子装置との相互作用は、優先順位を決めるか、又は同時に実施することができる。
クラウドコンピューティングリソース120は、公的配置モデル、私的配置モデル、地域配置モデル、混成配置モデル、及び/又は任意の他のクラウド配置モデルなどの、様々な配置モデルを通じて、クラウドリソースを提供することができる。一部の場合には、クラウドコンピューティングリソース120は、複数の配置モデルをサポートすることができる。例えば、クラウドコンピューティングリソース120は、公的配置モデルを通じて1つのリソースのセットを提供し、私的配置モデルを通じて別のリソースのセットを提供することができる。
一部の構成では、ユーザ端末102は、インターネット接続が利用可能な任意の場所から、クラウドコンピューティングリソース120にアクセスすることができる。しかしながら、他の場合には、クラウドコンピューティングリソース120は、特定のリソースへのアクセスを制限して、特定の場所からのみリソースにアクセスすることができるように構成することができる。例えば、クラウドコンピューティングリソース120が、私的配置モデルを使用してリソースを提供するように構成される場合には、クラウドコンピューティングリソース120は、ファイアウォール越しにユーザ端末102がリソースにアクセスすることを要求することなどによって、リソースへのアクセスを制限することができる。
クラウドコンピューティングリソース120は、Software as a Service(SaaS)、Platforms as a service(PaaS)、Infrastructure as a Service(IaaS)、及び/又は任意の他のクラウドサービスモデルなどの、様々なサービスモデルを通じて、ユーザ端末102にクラウドリソースを提供することができる。一部の場合には、クラウドコンピューティングリソース120は、ユーザ端末102に複数のサービスモデルを提供することができる。例えば、クラウドコンピューティングリソース120は、ユーザ端末102に、SaaS及びIaaSの双方を提供することができる。一部の場合には、クラウドコンピューティングリソース120は、異なるユーザ端末102に、異なるサービスモデルを提供することができる。例えば、クラウドコンピューティングリソース120は、ユーザ端末1021にSaaSを提供し、ユーザ端末1022にPaaSを提供することができる。
一部の場合には、クラウドコンピューティングリソース120は、アカウントデータベースを保守することができる。このアカウントデータベースは、登録ユーザに関するプロファイル情報を記憶することができる。プロファイル情報は、ユーザが使用を許可されるソフトウェア、最大記憶スペースなどの、リソースアクセス権を含み得る。プロファイル情報はまた、消費されたコンピューティングリソース、データの記憶場所、セキュリティ設定、個人的な構成設定などの、利用情報も含み得る。一部の場合には、アカウントデータベースは、サーバ104又はデータベース106などの、クラウドコンピューティングリソース120に対して遠隔のデータベース又はサーバ上に存在し得る。
クラウドコンピューティングリソース120は、ユーザとの対話を必要とする、様々な機能性を提供することができる。したがって、クラウドコンピューティングリソース120との通信、及び/又はクラウドリソースに関連付けられたタスクの実行のために、ユーザインタフェース(UI)を提供することができる。このUIには、クラウドコンピューティングリソース120と通信するエンドユーザ端末102を介して、アクセスすることができる。このUIは、クラウドコンピューティングリソース120並びに/あるいはユーザ端末102の記憶能力及び処理能力に応じて、ファットクライアントモード、シンクライアントモード、又は混成クライアントモードを含めた様々なクライアントモードで動作するように、構成することができる。それゆえ、UIは、一部の実施形態では、ユーザ端末で動作するスタンドアロンアプリケーションとして実行することができる。他の実施形態では、ウェブブラウザベースのポータルを使用して、UIを提供することができる。クラウドコンピューティングリソース120にアクセスするための任意の他の構成もまた、様々な実施形態で使用することができる。
2.クラウドコンピューティングリソースシステム
例示的なクラウドコンピューティング環境を開示してきたが、ここで本開示は、図1のクラウドコンピューティングリソース120などの、例示的なクラウドコンピューティングリソース(CCR)システム200を示す、図2を参照する。CCRシステム200は、多種多様なクライアント装置のタイプからのデータを記憶し、共有し、アクセスする、ユーザの能力を強化するための、多くの特徴的機能を含み得る。これらの特徴的機能としては、強化されたクラウドベースのストレージ、クラウドベースのリソース、並びにグループデータ項目の共有及び協働を挙げることができる。例えば、CCRシステム200は、パーソナルネットワーク対応外部ハードドライブなどの、外部ネットワーク記憶装置の使用を通じて拡張される、クラウドベースのストレージを提供することができる。別の実施例では、CCRシステム200は、使用頻度の低いテンプレートファイルなどの、アプリケーションリソースファイル用の、クラウドベースのストレージを提供することができる。更に別の実施例では、CCRシステム200は、集合に加入しているユーザのグループの間での、データ共有を容易にすることができる。これらの特徴的機能、並びにそれらの特徴的機能を提供するために使用可能なアーキテクチャ及びリソースが、以下でより詳細に論じられる。
2.1 アーキテクチャ
図2に示すように、CCRシステム200のアーキテクチャは、多くの構成要素を含み得る。これらの構成要素としては、システムの動作に関連するデータを記憶するための1つ以上のデータベース、例えば、アカウントデータベース240、集合データベース242、及びアプリケーションリソースデータベース246;1つ以上の記憶装置、例えば、クラウドベースのストレージ244;並びに、データベース、記憶装置と相互作用し、かつ/又はシステムによって提供される特徴的機能を制御するための、1つ以上のモジュール及び/又はエンジン、例えば、通信インタフェース210、アカウント管理モジュール212、ユーザインタフェースモジュール214、データ項目共有エンジン220、及びクラウドストレージエンジン230を挙げることができる。図2の構成要素のそれぞれが、以下でより詳細に論じられるが、しかしながら、当業者には、図2に示すアーキテクチャ構成が、単に1つの可能な構成に過ぎず、より多くの構成要素又はより少ない構成要素を有する他の構成もまた可能であることを理解されたい。
CCRシステム200は、多種多様なクライアント装置と通信することが可能な、ネットワークベースのシステムである。この通信を促進するために、CCRシステム200は、通信インタフェース210を含み得る。通信インタフェース210は、クライアント装置から、リクエスト、データなどの通信を受信して、処理のために、CCRシステム200内の適切なモジュール及び/又はエンジンに、その通信を転送するように構成することができる。通信インタフェース210はまた、クライアント装置に通信を送信するように構成することもできる。更には、通信インタフェース210は、他のクラウドコンピューティングシステムを含めた、任意のコンピューティング装置と通信するように構成することができる。
CCRシステム200によって提供される特徴的機能の一部は、クラウドベースのストレージ内に記憶されている特定のファイルに対するリクエスト、データファイルの集合に加入するように新たなユーザを招待すること、及び/又は新たなファイルを集合に追加することなどの、ユーザとの対話を必要とし得る。したがって、そのようなタスクを実行するためのユーザインタフェースモジュール214と通信するために、ユーザインタフェース(UI)を提供することができる。ユーザインタフェースモジュール214に関するUIには、CCRシステム200と通信するクライアント装置202を介してアクセスすることができる。このUI及びユーザインタフェースモジュール214は、CCRシステム200並びに/あるいはクライアント装置202の記憶能力及び処理能力に応じて、ファットクライアントモード、シンクライアントモード、又は混成クライアントモードを含めた様々なクライアントモードで動作することができる。それゆえ、ユーザインタフェースモジュールに関するUIは、一部の実施形態では、クライアント装置で動作するスタンドアロンアプリケーションとして実装することができる。他の実施形態では、ウェブブラウザベースのポータルを使用して、ユーザインタフェースモジュール214に関するUIを提供することができる。CCRシステム200にリモート又はローカルでアクセスするための、任意の他の構成もまた、様々な実施形態で使用することができる。更には、このUIは、グラフィカルユーザインタフェース、音声ユーザインタフェース、及び/又は任意の他のタイプのUIなどの、ユーザとの対話を容易にする任意のタイプのUIとすることができる。
一部の場合には、CCRシステム200は、クラウドベースのストレージなどの特徴的機能を、ユーザごとに提供することができ、又は、特徴的機能は、ユーザ認証を必要とする場合がある。これらの特徴的機能を可能にするために、CCRシステム200は、アカウントデータベース240及びアカウント管理モジュール212を含み得る。アカウントデータベース内に記憶される情報は、その特徴的機能に応じて異なり得る。例えば、アカウントデータベース240が、強化されたクラウドベースのストレージに関連する情報を記憶するために使用される場合には、そのアカウント情報は、ユーザ情報、認可された最大記憶スペース、使用される記憶スペース、認可されたクライアント装置の識別子、認可された外部ネットワーク記憶装置の識別子、ファイルの記憶場所などを含み得る。あるいは、アカウントデータベース240が、データファイルの集合に関連する情報を記憶するために使用される場合には、そのアカウント情報は、ユーザ情報、加入される集合、認可されたクライアント装置の識別子などを含み得る。一部の構成では、CCRシステム200全体にわたって単一のアカウントデータベースを使用して、これらの特徴的機能の全てに関するアカウント情報を記憶することができる。しかしながら、CCRシステム200は、クラウドベースのストレージに関するアカウントデータベース、及びデータファイルの集合に関する異なるアカウントデータベースなどの、異なる特徴的機能に関する異なるアカウントデータベースを保守するように構成することができる。
アカウント管理モジュール212は、ユーザアカウントデータベース240内のユーザアカウントの詳細を、更新及び/又は取得するように構成することができる。例えば、ファイルを記憶するためのリクエストを受信すると、アカウント管理モジュール212は、ユーザのアカウントの詳細を取得することができ、次いでCCRシステム200は、このアカウントの詳細を使用して、そのユーザが外部ネットワーク記憶装置を記憶場所として認可しているか否かを判定することができる。別の実施例では、集合に加入するための招待をユーザが承諾することに応じて、アカウント管理モジュール212は、その集合を含むようにユーザのアカウントの詳細を更新することができる。アカウント管理モジュール212は、CCRシステム200内の任意数の他のモジュール及び/又はエンジンと相互作用するように、構成することができる。
以下でより詳細に論じられる、CCRシステム200の特徴的機能のうちの1つは、CCRシステム200を使用して、ユーザのグループの間でのデータ項目の共有及び協働を促進することができる点である。この共有及び協働は、集合の作成を通じて達成することができる。ユーザのグループは、集合に加入することができる。集合が形成された後、1人以上の加入ユーザは、その集合にデータ項目を割り当てることができ、割り当てられた各データ項目のコピーを、各加入ユーザに配信することができる。集合に関連する情報は、集合データベース242内に記憶することができる。記憶される情報としては、集合の識別子、加入ユーザの識別子、割り当てられたデータ項目、修正の記録を保守する1つ以上のログファイルなどを挙げることができる。
CCRシステム200は、集合に関連付けられる共有及び協働のアクティビティを管理するための、データ項目共有エンジン220を含み得る。例えば、データ項目共有エンジン220は、集合に割り当てられたデータ項目に対する修正を受信して、集合データベース242内の集合情報を更新し、その集合に加入している他のユーザに、その修正を配信することができる。集合に関連付けられる共有及び協働のアクティビティを管理するタスクを達成するために、データ項目共有エンジン220は、集合管理モジュール222及びバージョン制御モジュール224などの、1つ以上のモジュールを含み得る。データ項目共有エンジン220はまた、CCRシステム200内の任意数の他のモジュール及び/又はエンジンと相互作用するように、構成することもできる。
以下でより詳細に論じられる、CCRシステム200の別の特徴的機能は、CCRシステム200が、強化されたクラウドベースのストレージを提供することができる点である。強化されたクラウドベースのストレージを促進するために、CCRシステム200は、クラウドストレージエンジン230を含み得る。例えば、クラウドストレージエンジン230は、データ項目を記憶するためのリクエストを受信することができる。この記憶リクエストに応じて、クラウドストレージエンジン230は、そのリクエストに関連付けられたユーザアカウントの詳細を取得し、クラウドベースのストレージ244内、及び/又は認可された外部ネットワーク記憶装置に、そのデータ項目を記憶して、その記憶場所に関するアカウントの詳細を更新することができる。同様に、クラウドストレージエンジン230は、データ項目を読み出すためのリクエストを受信することができる。この読み出しリクエストに応じて、クラウドストレージエンジン230は、そのリクエストに関連付けられたユーザアカウントの詳細を取得して、記憶場所を特定し、その記憶場所からデータ項目を取得することができる。更には、クラウドストレージエンジン230を使用して、テンプレートファイルなどの、アプリケーションリソースファイルの記憶及び読み出しを管理することができる。クラウドストレージエンジン230は、データ管理モジュール232などの1つ以上のモジュール、及びアプリケーションリソースデータベース246などの1つ以上のデータベースを含むことにより、クラウドベースのアプリケーションリソース機能性を提供することができる。クラウドストレージエンジン230はまた、CCRシステム200内の任意数の他のモジュール及び/又はエンジンと相互作用するように、構成することもできる。
2.2 特徴的機能
前述のように、CCRシステム200は、多種多様なクライアント装置のタイプからのデータを記憶し、共有し、アクセスする、ユーザの能力を強化するための、多くの特徴的機能を含み得る。これらの特徴的機能としては、強化されたクラウドベースのストレージ、クラウドベースのリソース、及びグループデータ共有を挙げることができる。
2.2.1 強化されたクラウドベースのストレージ
CCRシステム200は、クラウドベースのストレージを提供するように構成することができる。一部の構成では、クラウドストレージエンジン230が、クラウドベースのストレージの特徴的機能を管理することができる。クラウドストレージエンジンは、クライアント装置からの記憶リクエスト及び読み出しリクエストを受信することができる。一部の場合には、これらの記憶リクエスト及び読み出しリクエストは、通信インタフェース210及び/又はユーザインタフェースモジュール214を介して、クラウドストレージエンジン230に転送される。
ユーザは、クラウドベースのストレージ244などのクラウドベースのストレージ内に、クライアント装置からのデータ項目を記憶する目的のために、CCRシステム200でアカウントを確立することができる。クラウドストレージエンジン230は、アカウント管理モジュール212などから、アカウントの詳細を取得することができる。一部の場合には、クラウドストレージエンジン230は、ユーザアカウントに対して最大記憶容量を割り当てることができる。例えば、クラウドストレージエンジン230は、全てのユーザに対して、均一の記憶容量、例えば4GBを割り当てることができる。別の実施例では、クラウドストレージエンジン230は、既定の判定基準に基づいて、異なるユーザに対して異なる記憶容量、例えば、ユーザの所属に基づく容量、加入費に基づく容量などを割り当てることができる。この最大記憶容量は、アカウント管理モジュール212に情報を転送することなどによって、ユーザのアカウントの詳細内に記録することができる。しかしながら、一部の場合には、クラウドストレージエンジン230は、無制限の記憶容量を許可することができる。
記憶容量に加えて、クラウドストレージエンジン230はまた、ユーザの現在のストレージ利用の記録を保守するように、構成することもできる。例えば、ユーザが、500MBの合計サイズを有する、5つのファイルを記憶させている場合には、クラウドストレージエンジン230は、その情報をユーザのアカウントの詳細内に記録させることによって、そのような情報を保守することができる。一部の場合には、利用情報は、ユーザに最大記憶容量が割り当てられているか否かに関わりなく、保守することができる。
クラウドストレージエンジン230はまた、単一のユーザアカウントに対して、ユーザが複数のクライアント装置を認可することができるように構成することもできるため、ユーザは、クラウドベースのストレージ内に記憶されたデータ項目に、複数のクライアント装置からアクセスすることが可能となる。例えば、ユーザは、家庭用デスクトップコンピュータ及びポータブルコンピュータを認可することができる。次いで、ユーザは、そのデスクトップコンピュータから、クラウドベースのストレージにデータ項目を記憶させ、その後、ポータブルコンピュータを使用して、その項目を読み出すことができる。認可されたクライアント装置は、クライアント装置に関する一意的識別子を記録することなどによって、ユーザのアカウントの詳細内に記録することができる。更には、一部の場合には、クライアント装置は、複数のユーザアカウントに関連付けることができる。
上述のクラウドベースのストレージの詳細は、やや伝統的なクラウドベースのストレージの特徴的機能である。しかしながら、クラウドストレージエンジン230は、ユーザアカウントに対して認可された外部ネットワーク記憶装置の統合を通じて、強化されたクラウドベースのストレージを提供することができる。本明細書で使用されるような外部ネットワーク記憶装置は、ユーザが所有し、かつ/又はユーザのローカルネットワークを介してCCRシステム200に接続される、外部ハードドライブ、例えば、パーソナルネットワーク記憶装置2021などの、任意のネットワーク対応記憶装置とすることができる。すなわち、いずれのクラウドコンピューティングシステムからも独立している、ネットワーク対応記憶装置である。例えば、外部ネットワーク記憶装置は、ユーザが自分の家庭内で自身のローカルネットワークに接続している、外部ハードドライブとすることができる。あるいは、外部ネットワーク記憶装置は、組織のローカルネットワークに接続された、ネットワーク対応記憶装置とすることができる。すなわち、外部ネットワーク記憶装置は、CCRシステム200又は何らかの他のクラウドコンピューティングシステムの一部であるのではなく、ローカルネットワーク上に存在する、任意のネットワーク対応記憶装置とすることができる。
ユーザは、CCRシステム200内の自身のユーザアカウントに対して、1つ以上の外部ネットワーク記憶装置を認可することができる。一部の場合には、複数のユーザアカウントに対して、1つの外部ネットワーク記憶装置を認可することができる。例えば、1つの世帯が、ユーザアカウントをそれぞれが有する3人の人物、及び単一の外部ネットワーク記憶装置を含む場合がある。この世帯内の各ユーザは、自身のアカウントに対して、その外部ネットワーク記憶装置を認可することができる。
外部ネットワーク記憶装置が、特定のユーザアカウントで認可されると、クラウドストレージエンジン230は、その外部ネットワーク記憶装置を使用して、クラウドベースのストレージを拡張することができる。すなわち、クラウドベースのストレージ244内にデータ項目を記憶する代わりに、クラウドストレージエンジン230は、そのデータ項目を、認可された外部ネットワーク記憶装置に記憶させることができる。しかしながら、ユーザが、データ項目を記憶するようにリクエストし、かつユーザが、自身のアカウントに対して外部ネットワーク記憶装置を認可していない場合には、クラウドストレージエンジン230は、伝統的なクラウドベースのストレージに戻ることができる。
複数の外部ネットワーク記憶装置が、特定のユーザアカウントで認可される場合、クラウドストレージエンジン230は、それらの外部ネットワーク記憶装置のうちの1つを、データ項目の記憶場所として選択することができる。この選択は、無作為、利用可能なスペースの量、クラウドストレージエンジン230からの距離、データ項目のタイプ、ユーザ設定、外部ネットワーク記憶装置の信頼性などの、様々な判定基準に基づき得る。
クラウドストレージエンジン230は、クラウドベースのストレージ内に記憶されるデータ項目を管理することが可能な、データ管理モジュール232を含むように構成することができる。例えば、データ管理モジュール232は、強化されたファイルシステムとして動作することができる。データ管理モジュール232は、データ項目をクラウドベースのストレージ244内に記憶するべきか、又は認可された外部ネットワーク記憶装置に記憶するべきかを判定するように、構成することができる。認可された外部ネットワーク記憶装置にデータ項目を記憶するという決定は、既定の判定基準を満たすことに基づき得る。使用される判定基準は、システムの構成によって異なり得る。一部の場合には、データ管理モジュール232は、クラウドベースのストレージ内に、ユーザにとって十分なスペースが割り当てられなかったと判定される場合に、認可された外部ネットワーク記憶装置にデータ項目を記憶することを選択することができる。例えば、クラウドストレージエンジン230は、ユーザアカウントに対して承認された最大容量よりも小さいスペースを割り当てるように、構成することができる。データ管理モジュール232が、割り当てられたスペースが不十分であると判定し、かつユーザが、そのユーザの承認された最大記憶容量を超過していない場合、より多くのスペースをクラウドベースのストレージ244内に割り当てる代わりに、データ管理モジュール232は、認可された外部ネットワーク記憶装置に、データ項目を記憶させることができる。一部の場合には、データ管理モジュール232は、ユーザが、そのユーザの承認された最大記憶容量を超過していると判定される場合に、認可された外部ネットワーク記憶装置にデータ項目を記憶することを選択することができる。例えば、ユーザの記憶リクエストを拒否するか、又は、ユーザに、クラウドベースのストレージ244内の自身の記憶容量を増大させることを要求する代わりに、データ管理モジュール232は、認可された外部ネットワーク記憶装置に、データ項目を記憶させることができる。あるいは、一部の場合には、データ管理モジュール232は、外部ネットワーク記憶装置に記憶することがより効率的であり得ると、データ管理モジュール232が判定する場合に、認可された外部ネットワーク記憶装置にデータ項目を記憶することを選択するように、構成することができる。例えば、外部ネットワーク記憶装置が、クラウドベースのストレージ244よりも近い場合には、その外部ネットワーク記憶装置にデータ項目を記憶することにより、レイテンシを低減し、性能を向上させることができる。更には、一部の場合には、データ管理モジュール232は、ユーザ設定に基づいて、認可された外部ネットワーク記憶装置にデータ項目を記憶することを選択するように、構成することができる。例えば、ユーザは、特定のデータ項目、又は特定のタイプのデータ項目が、外部ネットワーク記憶装置に記憶されるべきであることを、指定することができる。
データ管理モジュール232はまた、クラウドベースのストレージ244内に、データ項目の複数のコピーを保守するように、構成することもできる。この冗長性を実行することにより、リクエストされたデータ項目が利用不可となる可能性を低減することができる。例えば、データ管理モジュール232は、データ項目が外部ネットワーク記憶装置に記憶されるたびに、クラウドベースのストレージ244内にデータ項目のコピーを記憶するように、構成することができる。一部の場合には、この冗長性オプションは、ユーザ設定に基づき得る。例えば、ユーザは、外部ネットワーク記憶装置に記憶するように、ユーザがクラウドストレージエンジン230に指示したデータ項目が、クラウドベースのストレージ244内にも記憶されるべきではなく、更なる認可された外部ネットワーク記憶装置に記憶することが可能であることを、指定することができる。
一部の場合には、データ管理モジュール232は、データ項目を分割して、それらのデータ部片を、外部ネットワーク記憶装置を含めた、1つ以上のクラウドベースの記憶場所内に記憶するように、構成することができる。例えば、データ項目を2つの部片に分割して、一方の部片をクラウドベースのストレージ244内に記憶し、他方を外部ネットワーク記憶装置に記憶することができる。更には、一部の構成では、データ管理モジュール232は、データ項目を複数の部片に分割して、それらの部片を冗長的に記憶させることができる、
図3は、強化されたクラウドベースのストレージを使用してデータ項目を記憶するためのリクエストが、CCRシステム200で受信される、例示的なシナリオ300を示す。シナリオ300では、ユーザ302は、クライアント装置304、306、及びクライアント装置308の組み合わせを有する。ユーザは、クラウドベースのストレージにデータ項目を送信し、かつクラウドベースのストレージからデータ項目を読み出す目的のために、そのユーザのアカウントに認可されたクライアント装置304及びクライアント装置306を有する。更には、ユーザは、そのユーザのデータ項目に関する認可された記憶場所として、認可された外部ネットワーク記憶装置308を有する。ユーザが、クライアント装置304から記憶リクエストを行うと、クラウドストレージエンジン230が、そのリクエスト及びデータ項目を受信する。そのデータ項目が外部ネットワーク記憶装置308上に記憶されるべきであると判定すると、クラウドストレージエンジン230は、外部ネットワーク記憶装置308にデータ項目を送信することができ、この記憶場所の選択を反映するように、ユーザのアカウントの詳細を更新することができる。クラウドストレージエンジン230は、データ項目が外部ネットワーク記憶装置308上に記憶されるべきであるという判定を、ユーザに対して透過的な方式で行うことができる。すなわち、クラウドストレージエンジン230は、外部ネットワーク記憶装置308上にデータ項目を記憶することを、ユーザからの入力なしで選択することができる。
図4は、ユーザ302が、クラウドベースのストレージ内に以前に記憶されたデータ項目を読み出すことをリクエストする、例示的なシナリオ400を示す。シナリオ400では、ユーザは、データ項目を読み出すためのリクエストを行う。データ項目を読み出すためのリクエストは、データ項目を記憶するために使用されたものと同じクライアント装置から、及び/又は異なる装置から行うことができる。シナリオ400では、読み出しリクエストは、データ項目を記憶するために使用されたものとは異なる装置である、クライアント装置306から行われる。このリクエストの受信に応じて、クラウドストレージエンジン230は、ユーザアカウント情報を取得して、データ項目の場所を判定する。データ項目が外部ネットワーク記憶装置に記憶されていたと判定すると、クラウドストレージエンジン230は、外部ネットワーク記憶装置308からデータ項目を取得して、そのデータ項目をクライアント装置306に送信することができる。記憶場所の情報は、CCRシステム200によって保守されているため、クラウドストレージエンジン230は、ユーザからの追加入力なしで、外部ネットワーク記憶装置に記憶されたデータ項目を取得することができる。それゆえ、データ項目が外部ネットワーク記憶装置に記憶されているという事実は、ユーザに対して透過的となり得る。
2.2.2 クラウドベースのリソース
CCRシステム200はまた、クライアント装置にクラウドベースのアプリケーションリソースを提供し、かつ/又は、他の記憶場所からのアプリケーションリソースの読み出しを容易にするように、構成することもできる。多くの場合、クライアント装置で実行されるアプリケーションは、主要なアプリケーション実行可能ファイルの外部に存在するアセット又はリソースの使用を必要とする、機能性を含み得る。アプリケーションリソースとしては、アプリケーションの機能性の何らかの態様を提供するために、そのアプリケーションによって要求される任意のリソース、例えば、テンプレートファイル、ライブラリファイル、データファイル、別のアプリケーション、デーモンなどを挙げることができる。例えば、ワードプロセッシングプログラムは、コアとなる機能性を提供する、主要なアプリケーション実行可能ファイルを含み得る。ユーザが再利用することができる特別に設計された文書フォーマット設定などの、特殊化された機能性を提供するために、ワードプロセッシングプログラムは、テンプレートを含み得る。ユーザが、既定の文書フォーマットを使用することを選択すると、対応するテンプレートが、外部リソースファイルからロードされる。この実施例では、各テンプレートが、アプリケーションリソースである。別の実施例では、音楽アプリケーションは、種々の楽器の集合を含み得る。各楽器を、アプリケーションリソースとすることができる。楽器に関する機能性は、アプリケーションリソースファイル内に含めることができ、このファイルは、その特定のアプリケーションをユーザが選択すると、その音楽アプリケーションによってロードされる。更に別の実施例では、アプリケーションは、カーネルを含むオペレーティングシステムとすることができ、このカーネルは、最も基本的な機能性を提供し、他のアプリケーションが装置のハードウェアと相互作用することを可能にする。より高レベルの機能性を提供するために、オペレーティングシステムは、他のアプリケーション及びデーモンの形態の、他のリソースを含み得るものであり、それらのリソースうちの多くは、必要に応じて随時実行される。より高レベルのアプリケーション及びデーモンのそれぞれが、オペレーティングシステムに関するアプリケーションリソースである。カーネルの観点からは、より高レベルの機能性が、アプリケーションリソースファイルを通じて提供される。
図5は、アプリケーションリソースファイルを有するアプリケーションの、例示的なシナリオ500を示す。シナリオ500では、アプリケーション502は、3つのアプリケーションリソースファイル504、506、及びアプリケーションリソースファイル508を含む。アプリケーション502が実行される際、これらのアプリケーションリソースファイルがロードされる。シナリオ500では、リソースファイル504及びリソースファイル506はロードされているが、リソースファイル508はロードされていない。
アプリケーションに含まれているアプリケーションリソースファイルのフルセットは、広範なアプリケーション利用範囲を網羅するように設計することができ、大多数のユーザが利用することができるのは、それらのアプリケーションリソースのサブセットのみである。例えば、ワードプロセッシングアプリケーションは、多くの場合、個人的用途及びビジネス用途を含めた、一定の範囲のユースケースを対象とする、過剰なテンプレートを含む。個人的用途のためにワードプロセッシングアプリケーションをインストールしたユーザは、個人的ユースケース用に設計されたテンプレートよりも、ビジネス関連のテンプレートを使用する可能性が低い。更には、一部の場合には、ユーザは、テンプレートを1つも使用しない場合があり、又は個人的に作成したテンプレートのみを使用する場合もある。一切使用されないテンプレートが、ユーザによって実際に使用されるデータを記憶するために使用することが可能な、ユーザの装置のスペースを占有する。それゆえ、アプリケーションの記憶フットプリントを減少させるために、アプリケーションは、最小限のアプリケーションリソースファイルのセットのみを有して、又は更には、アプリケーションリソースファイルを全く有さずに、クライアント装置にインストールすることができる。
アプリケーションと共にインストールされる、アプリケーションリソースファイルのセットは、構成によって異なるものにすることができ、アプリケーション開発者によって決定することができ、かつ/又はユーザによって決定することができる。例えば、アプリケーション開発者は、アプリケーションの利用履歴情報を保守することができる。この利用履歴情報に基づいて、開発者は、アプリケーションリソースファイルの特定のサブセットが最も頻繁に使用されることを判定して、それらのリソースファイルのみを、アプリケーションに含めることができる。別の実施例では、アプリケーションのインストールは、特定のユースケース又は特定のタイプのアセット(例えば、家庭又はビジネス)に分類されるリソースファイルなどの、インストールするべきアプリケーションリソースファイルのサブセットを、ユーザが指定することを可能にするように、構成することができる。更に別の実施例では、クライアント装置は、リソースファイルのサイズ、又はインストールされる全てのアプリケーションリソースファイルに関する最大合計サイズなどの、既定の判定基準に基づいて、アプリケーションのサブセットのみを自動的にインストールするように、構成することができる。
アプリケーションリソースファイルの代わりに、アプリケーションは、アプリケーションリソースファイルプレースホルダを含み得る。アプリケーションリソースファイルプレースホルダは、実際のアプリケーションリソースファイルがインストールされているという外観を提供することができるが、実際にはそうではなく、実際のリソースファイルと同一に見えるように偽装されている、空のファイルである。すなわち、アプリケーションリソースファイルプレースホルダは、同じ名前、タイプなどを有し得る。アプリケーションリソースファイルプレースホルダは、更に、実際のリソースファイルのサイズと一致するファイルサイズを表示することができ、このことは、そのプレースホルダファイルの偶発的な削除を防ぐための安全対策となり得る。プレースホルダが実際のリソースファイルと異なり得る点は、プレースホルダがデータを含まず、そのファイルがプレースホルダであることを示すために、特殊ビットを設定することができる点である。
アプリケーションリソースファイルの読み出しを容易にするために、クライアント装置にインストールされたオペレーティングシステムは、特殊なリソースファイル取り出しプロセス又はデーモンを含み得る。アプリケーションリソースファイルが、アプリケーションによってリクエストされると、リソースファイル取り出しプロセスは、そのリクエストを受信して、次いで、インストールされているリソースファイルが実際のリソースファイルであるか、又はプレースホルダであるかを、特殊ビットを通じて検出することができる。このプロセスが、プレースホルダファイルを検出する場合には、障害がトリガされ、クラウドから実際のリソースファイルが取得される。実際のリソースファイルが取得されると、リソースファイルプレースホルダの代わりに、そのファイルをインストールすることができる。リクエストしているアプリケーションにリソースファイルを提供することには、別個のプロセスが関与しているため、実際のリソースファイルがインストールされているか、又はプレースホルダがインストールされているかは、アプリケーションに対して透過的となり得る。このレベルの透過性はまた、特殊なアプリケーションの準備を必要としないことも意味する。すなわち、アプリケーション自体は、リソースファイルを取り出すための特殊機能性を含む必要がなく、かつ/又は、アプリケーション開発者は、プログラムの諸部分を特定してリソースファイルプレースホルダで置き換える必要がない。このプレースホルダファイルのインストールは、リソースファイルがインストールされた後を含めて、任意の時点で実施することができる。
図6は、アプリケーションリソースファイル及びアプリケーションリソースファイルプレースホルダを有するアプリケーションの、例示的なシナリオ600を示す。シナリオ600では、図5からのアプリケーション502は、3つのアプリケーションリソースファイルによって提供される機能性を依然として含むが、この場合のアプリケーション502は、それらのアプリケーションリソースファイルのうちの2つ、リソースファイル504及びリソースファイル508のみを有してインストールされている。アプリケーションリソースファイル506の代わりに、このアプリケーションは、アプリケーションリソースファイルプレースホルダ510を含む。アプリケーション502が実行される際、アプリケーションリソースファイルがロードされる。アプリケーションリソースファイルプレースホルダ510に遭遇すると、クライアント装置は、実際のアプリケーションリソースファイルを取得する。
図7は、リソースファイル及びリソースファイルプレースホルダを有する、クライアント装置704上にインストールされたオペレーティングシステム702の、別の例示的なシナリオ700を示す。オペレーティングシステム702は、カーネル及びリソースファイル読み出しデーモンを含む最小限の機能性を有して、クライアント装置704上にインストールすることができる。最小限の追加機能性のセットもまた、クライアント装置704上にインストールすることができる。例えば、ウェブブラウザ及びメディアプレーヤなどの、一般的に使用されるアプリケーションをインストールすることができるが、カレンダーアプリケーション、電子メールクライアント、アドレス帳アプリケーションなどの、それほど一般的に使用されないアプリケーションは、リソースファイルプレースホルダとしてインストールすることができる。
クライアント装置でのアプリケーションの実行中に、障害がトリガされる場合には、クライアント装置は、CCRシステム200と通信して、アプリケーションリソースファイルを取得することができる。CCRシステム200は、クラウドストレージエンジン230が、クラウドベースのアプリケーションリソースの特徴的機能を管理することができるように、構成することができる。一部の場合には、通信インタフェース214がリクエストを受信して、処理のために、そのリクエストをクラウドストレージエンジン230に転送することができる。
一部の場合には、CCRシステム200は、アプリケーションリソースファイルのセットを保守するように構成することができる。例えば、CCRシステム200は、クラウドベースのストレージ244内に、アプリケーションリソースファイルのセットを記憶することができる。アプリケーションリソースファイルの範囲は、CCRシステム200及び/又はアプリケーションの構成によって異なり得る。例えば、アプリケーションに関してCCRシステム200によって保守されるアプリケーションリソースファイルのセットは、そのアプリケーションによって使用されるリソースの集合全体を含み得る。あるいは、CCRシステム200によって保守されるアプリケーションリソースファイルのセットは、最初のアプリケーションのインストールで含まれなかった、アプリケーションリソースファイルのみを含み得る。すなわち、CCRシステム200から利用可能なアプリケーションリソースファイルは、最小限のアプリケーションリソースファイルのセット内のアプリケーションリソースファイルを含み得ない。
クラウドストレージエンジン230は、クラウドベースのストレージ内に記憶されるアプリケーションリソースファイルを管理することが可能な、データ管理モジュール232を含むように構成することができる。一部の場合には、アプリケーションリソースファイルに対するリクエストを受信すると、データ管理モジュール232は、クラウドベースのストレージ244から、そのアプリケーションリソースファイルを読み出して、リクエストしているクライアント装置に、そのアプリケーションリソースファイルを送信することができる。あるいは、アプリケーションリソースファイルに対するリクエストを受信すると、データ管理モジュール232は、別のクラウドコンピューティングシステム及び/又は別のクライアント装置など、CCRシステム200の外側の記憶場所から、そのアプリケーションリソースファイルを読み出すように、構成することができる。一部の場合には、CCRシステム200は、リソースファイルの記憶場所などの、CCRシステム200には既知のアプリケーションリソースに関する情報を含む、アプリケーションリソースデータベース246を含み得る。この場合には、アプリケーションリソースファイルに対するリクエストを受信すると、データ管理モジュール232は、アプリケーションリソースファイルデータベース246にアクセスして、任意のアプリケーションリソースファイルの詳細を取得することができる。そのアプリケーションリソースファイルの詳細が、記憶場所を指定する場合には、データ管理モジュール232は、その指定された記憶場所から、アプリケーションリソースファイルを取得することができる。
一部の場合には、クラウドストレージエンジン230は、一部又は全てのアプリケーションリソースファイルへのアクセスを制限するように構成することができる。例えば、特定のアプリケーションリソースファイルは、登録ユーザにのみ利用可能とすることができる。アクセスを登録ユーザに限定することによって、クラウドストレージエンジン230を使用して、そのアプリケーションの認可コピーを有さないユーザによる、アプリケーションリソースファイルへのアクセスを防止することができる。別の実施例では、アプリケーションリソースは、特定の加入レベル、例えば、家庭向けエディション、プロフェッショナル向けエディションなどのユーザにのみ、利用可能とすることができる。アプリケーションリソースファイルへの制限されたアクセスを可能にするために、クラウドストレージエンジン230は、アカウント管理モジュール212などから、ユーザアカウントの詳細を取得して、リクエストしているユーザが、リクエストされたアプリケーションリソースを受信する資格があるか否かを判定することができる。
一部の構成では、インストールされたアプリケーションリソースは、クライアント装置で、アプリケーションリソースファイルプレースホルダと自動的に置き換えることができる。一部の場合には、この置き換えは、アプリケーションに対して透過的な方式で実行することができる。アプリケーションリソースファイルが除去される条件は、クライアント装置及び/又はアプリケーションの構成によって異なり得る。一部の場合には、アプリケーションリソースファイルは、更なるスペースの必要性、特定のアプリケーションに関連付けられたアプリケーションリソースファイルに関する最大スペース割り当てに到達すること、及び/又は、そのアプリケーションリソースファイルがもはや必要ではないことを示す利用パターンに基づいて、選択することができる。アプリケーションリソースファイルを除去するべき場合を判定する、他の方法もまた可能である。更には、除去するために選択される特定のアプリケーションリソースファイルは、クライアント装置及び/又はアプリケーションの構成によって異なり得る。一部の場合には、選択される特定のアプリケーションリソースファイルは、無作為選択、サイズ、利用履歴、ユーザ設定、及び/又はアプリケーション開発者設定に基づき得る。除去するための特定のアプリケーションリソースファイルを選択する、他の方法もまた可能である。更には、アプリケーションリソースファイルは、任意の時点で置き換えることができる。すなわち、アプリケーションリソースファイルは、そのアプリケーションが実行中であるか否かに関わりなく、置き換えることができる。
図8は、アプリケーションリソースファイル812、814、及びアプリケーションリソースファイル816を利用するアプリケーション810が、クライアント装置802で実行されている、例示的なシナリオ800を示す。アプリケーション810は、アプリケーションリソースファイル812及びアプリケーションリソースファイル816と共に、クライアント装置802にインストールされている。アプリケーションリソースファイル814の代わりに、アプリケーションリソースファイルプレースホルダ818が、クライアント装置802にインストールされている。実行中に、アプリケーション810は、アプリケーションリソースファイル814を要求し、このことが障害をトリガする。この障害に応じて、クライアント装置802は、CCRシステム200と通信して、アプリケーションリソースファイル814をリクエストする。クラウドストレージエンジン230は、データ管理モジュール232を介して、クラウドベースのストレージ又は何らかの他の記憶場所から、アプリケーションリソースファイル814を読み出し、クライアント装置802にアプリケーションリソースファイル814を送信する。次いで、アプリケーションリソースファイル814は、クライアント装置802にインストールされる。
2.2.3 データ集合の管理
CCRシステム200はまた、ユーザのグループの間での、データ項目の共有及び協働を促進するように、構成することもできる。このデータ項目の共有及び協働の特徴的機能は、ユーザのグループと1つ以上のデータ項目とを結びつけることが可能な、集合の概念を中心に展開する。図9は、集合の概念の例示的な図を提供する。第1に、集合900は、ユーザのグループを含み、各ユーザは、その集合に加入しており、クライアント装置902、904、及び906などの1つ以上の認可されたクライアント装置を介して、その集合とデータ項目を共有することができる。集合900はまた、データ項目910、912、及びデータ項目914などの、集合900に割り当てられている1つ以上のデータ項目も含む。この集合の概念は、中央のデータ項目のプールにアクセスしている装置のグループとして示されるが、このことは単に、集合の異なる態様間の関係性を示す目的のために過ぎない。実装の際には、認可された各クライアント装置は、その集合に割り当てられた各データ項目の、ローカルコピーを保守することができる。更には、ユーザは、複数の集合に加入することができる。
一部の構成では、データ項目共有エンジン220は、集合の形成、集合の保守、及び/又は集合の終了などの、共有及び協働の特徴的機能の様々な態様を管理することができる。データ項目共有エンジン220は、アカウント管理モジュール212及び/又は集合データベース242と相互作用することができる。集合データベース242は、集合の識別子、加入ユーザの識別子、割り当てられたデータ項目、データ項目の修正の記録を保守する1つ以上のログファイルなどの、集合に関連する情報を記憶することができる。更には、一部の構成では、データ項目共有エンジン220は、通信インタフェース210及び/又はユーザインタフェースモジュール214を通じて、クライアント装置と通信することができる。
一部の構成では、クライアント装置は、データ項目の共有及び協働の特徴的機能に関するクライアント側の機能性を提供する、クライアント側集合アプリケーションを実行することができる。ユーザが、このクライアント側集合アプリケーションと相互作用することができる特徴的機能及び方式は、クライアント装置、集合アプリケーション、CCRシステム200、及び/又はネットワーク接続の構成によって異なり得る。
データ項目の共有及び協働の一態様は、集合の形成である。集合が形成される方式は、クライアント装置、CCRシステム200、及び/又はネットワーク接続の構成によって異なり得る。しかしながら、集合の形成は、認可及び認証の、2つの態様を含み得る。認可の態様は、1人以上のユーザを集合に加入するように招待することに関連し得るものであり、その一方、認証の態様は、その集合に加入する認可をユーザが実際に受けていることを検証することに関連し得る。
集合の形成の方法では、ユーザは、1人以上のユーザを集合に加入するように招待することによって、集合の形成を開始することができる。一部の場合には、クライアント装置は、ユーザが、デスクトップ上で右クリックすることにより、利用可能なメニュー項目のうちの1つが「集合を形成する」又はその変形形態であるメニューを起動することができるように、構成することができる。あるいは、クライアント装置は、ユーザが、アイコンをクリックするか、又はメニューオプションを選択することができるように、構成することができる。クライアント装置はまた、1つ以上の集合を作成するためのユーザインタフェースを含むアプリケーションを有して構成することもできる。この集合アプリケーションは、ユーザが、ユーザ名及びパスワードを供給することなどによって認証することを必要とし得る。
ユーザは、ユーザ名、電子メールアドレス、及び/又は任意の他の一意的ユーザ識別子などの、各ユーザに関するユーザ識別子を指定することによって、1人以上のユーザを招待することができる。この招待は、集合の形成の認可ステップとしての役割を果たし得る。集合の形成を完了するために、招待されたユーザが認証することにより、そのユーザを集合に加入させることができる。
この集合の形成のシナリオでは、ユーザは、加入プロセスが完了した後、その集合にファイルを追加することができる。例えば、集合の形成を開始したユーザは、1人以上のユーザを加入するように招待した後に、また一部の場合には、招待されたユーザの全てが、その招待を承諾する前に、その集合にファイルを追加することができる。しかしながら、招待されたユーザは、そのユーザが加入プロセスを完了するまで、その集合にファイルを追加することも、又は集合の一部であるファイルを受信することもできないが、これは、そのユーザが未だ集合の一部ではないためである。
あるいは、ユーザは、共有するべき1つ以上のデータ項目を選択することによって、集合の形成を開始することができる。一部の場合には、クライアント装置は、ユーザが、データ項目又はデータ項目のグループを右クリックすることにより、利用可能なオプションのうちの1つが共有であるメニューを起動することができるように、構成することができる。クライアント装置はまた、共有するべき1つ以上のデータ項目を選択するためのユーザインタフェースを含む、クライアント側アプリケーションを実行するように構成することもできる。あるいは、共有の特徴的機能を、アプリケーションに組み込むことができる。例えば、ワードプロセッシングアプリケーションは、共有に関するメニュー項目を含み得る。更には、一部の構成では、ユーザは、1つ以上のデータ項目を含むフォルダを選択して、そのフォルダ内の各データ項目を共有することができる。
データ項目を共有することを選択した後、ユーザは、そのデータ項目を共有するための1人以上のユーザを指定することができる。この1人以上のユーザを選択する行為が、招待プロセスをトリガすることができる。ユーザは、ユーザ名、電子メールアドレス、及び/又は任意の他の一意的ユーザ識別子などの、各ユーザに関するユーザ識別子を指定することによって、1人以上のユーザを招待することができる。この招待は、集合の形成の認可ステップとしての役割を果たし得る。集合の形成を完了するために、招待されたユーザが認証することにより、そのユーザを集合に加入させることができる。集合の形成が、共有するべき特定のファイルを選択することによって開始された場合であっても、招待されたユーザは、そのユーザが加入プロセスを完了するまで、データ項目を受信することができない。
一部の場合には、CCRシステム200は、集合形成の際の仲介としての機能を果たし得る。例えば、クライアント装置は、データ項目共有エンジン220に、集合形成情報を送信することができる。この集合形成情報を受信すると、データ項目共有エンジン220は、招待ユーザに招待を送信し、認証プロセスを処理することができる。例えば、図10は、CCRシステム200によって促進される、例示的な集合形成のやり取り1000を示す。この形成プロセスは、ユーザ1で開始され、ユーザ1は、集合に加入するようにユーザ2を招待する。この招待情報は、CCRシステム200に送信される。次いで、CCRシステム200は、その招待をユーザ2に送信することができる。ある時点で、ユーザ2は、その招待に対応するが、このことは、ユーザ2がCCRシステム200で認証することを必要とする。認証プロセスが完了すると、CCRシステム200は、ユーザ2が加入プロセスを完了して、この時点で集合に加入しているという通知を、任意選択的にユーザ1に送信することができる。一部の場合には、ユーザ1からの招待リクエストは、データ項目を含み得る。この場合には、認証プロセスが完了すると、CCRシステム200は、そのデータ項目をユーザ2に送信することができる。
集合形成プロセスはまた、クライアント装置がローカルエリアネットワーク(LAN)上でアクティブである場合に、ピアツーピア構成内で実行することもできる。例えば、集合形成プロセスは、Apple Inc.(Cupertino,CA)によって公開されているBonjourアプリケーションなどの装置発見ソフトウェアを使用して、LAN上の他のクライアント装置を発見することができる。次いで、集合に加入するための招待を、1つのクライアント装置から別のクライアント装置に、直接送信することができる。純粋なピアツーピア構成内では、認証プロセスは、クライアント装置で実行することができる。あるいは、集合形成プロセスは、ピアツーピアとCCRシステム200による促進との組み合わせとすることができる。
ユーザが通知を受信する方式は、クライアント装置、CCRシステム200、及び/又はネットワーク接続の構成によって異なり得る。ユーザは、電子メール、インスタントメッセージ、SMS、クライアント側アプリケーション内の通知、クライアント装置のポップアップウィンドウなどを介して、招待を受信することができる。例えば、ユーザが、ユーザ識別子を指定する招待情報をCCRシステム200に送信する場合には、CCRシステム200は、ユーザアカウント情報のデータベースを保守することができる。ユーザアカウント情報内の項目は、電子メールアドレス又は電話番号などの、ユーザに連絡を取る方法を含み得る。次いで、CCRシステム200は、その情報を使用して、招待ユーザに招待を送信することができる。別の実施例では、ユーザが、別のクライアント装置に、LAN上で直接招待を送信する場合には、招待ユーザは、その招待ユーザのクライアント装置のポップアップウィンドウを介して、招待を受信することができる。
一部の場合には、集合を通じて共有することが可能なデータ項目のタイプを、限定することができる。例えば、集合を使用して、ワードプロセッシング文書を共有することができるが、動画などの特定のファイルタイプのメディア項目は、共有することができない。この限定は、システム全体にわたるもの、及び/又は集合ごとのものとすることができる。例えば、データ項目共有エンジン220は、あらゆる集合を通じたあらゆるデータ項目のタイプの共有を許可するように構成することができるが、AACファイルタイプを使用するデータ項目の共有を阻止するポリシーで、特定の集合を形成することができる。別の実施例では、データ項目共有エンジン220は、MP3ファイルタイプを使用するデータ項目の共有を阻止するように構成することができ、次いで、AACファイルタイプを使用するデータ項目の共有を更に阻止するポリシーで、特定の集合を形成することができる。それゆえ、結果的に得られる集合は、MP3又はAACのファイルタイプを使用するデータ項目の共有を阻止するポリシーを、有することになる。
一部の構成では、集合は、1人以上の管理者を含み得る。例えば、集合を形成したユーザを、自動的に管理者に指名することができる。管理者は、加入ポリシー、データ項目追加/削除ポリシー、データ項目修正ポリシーなどの、その集合に関連付けられるポリシーを指定することができる。例えば、管理者は、管理者のみが、新たなユーザを集合に加入するように招待することができるというポリシーを、確立することができる。別の実施例では、管理者は、管理者のみが集合にデータ項目を追加し、かつ/又は集合からデータ項目を削除することができるというポリシーを、確立することができる。更に別の実施例では、管理者は、各データ項目に対する修正権をいずれのユーザが有するかについてのポリシーを、確立することができる。更なる実施例では、管理者は、集合に割り当てることが可能なデータ項目のタイプを指定するポリシーを、確立することができる。更なるポリシーもまた可能である。
データ項目はまた、集合形成プロセスとは別個に、集合に割り当てることもできる。一部の場合には、クライアント装置は、ユーザが、データ項目又はデータ項目のグループを右クリックすることにより、利用可能なオプションのうちの1つが共有であるメニューを起動することができるように、構成することができる。クライアント装置はまた、共有するべき1つ以上のデータ項目を選択するためのユーザインタフェースを含む、クライアント側アプリケーションを実行するように構成することもできる。あるいは、共有の特徴的機能を、アプリケーションに組み込むことができる。例えば、ワードプロセッシングアプリケーションは、共有に関するメニュー項目を含み得る。更には、一部の構成では、ユーザは、フォルダを選択して、そのフォルダ内の各データ項目を共有することができる。共有することを選択した後、ユーザは、そのユーザが加入する1つ以上の集合を指定することができる。
一部の場合には、CCRシステム200は、データ項目を共有する際の仲介としての機能を果たし得る。例えば、ユーザが、共有するべきデータ項目を選択して、そのデータ項目を集合に割り当てると、クライアント装置は、割り当てられた集合に関する情報と共に、そのデータ項目をデータ項目共有エンジン220に送信することができる。データ項目共有エンジン220内部の集合管理モジュール222は、新たに割り当てられたデータ項目を反映するように、集合データベース242を更新することができる。更には、一部の場合には、集合管理モジュール222は、その集合に加入している他のユーザを特定して、その加入ユーザに関連付けられた全ての認可された装置に、データ項目のコピーを配信することができる。あるいは、集合管理モジュール222は、集合に加入しているクライアント装置から、新たなデータ項目に対するリクエストを受信することができる。すなわち、データ項目共有エンジン220は、プッシュ構成及び/又はプル構成で構成することができ、新たなデータ項目を受信すると、データ項目共有エンジン220は、そのデータ項目を加入クライアント装置にプッシュすることができ、かつ/又は、データ項目共有エンジン220は、新たに割り当てられたデータ項目に対する、クライアント装置からのリクエストを受信することができる。このデータ項目共有プロセスはまた、クライアント装置が、LAN上でアクティブである場合、又は、ピアツーピアとCCRシステム200による促進との組み合わせを使用する混成構成内でアクティブである場合に、ピアツーピア構成内で実行することもできる。
図11は、データ項目1110が集合に割り当てられ、データ項目1110の配信がCCRシステム200によって促進される、例示的なシナリオ1100を示す。データ項目1110が、クライアント装置1102上で集合に割り当てられる。データ項目1110が割り当てられると、クライアント装置1102は、データ項目共有エンジン220に、データ項目1110のコピーを送信する。集合管理モジュール222が、集合データベース242を更新する。更には、集合管理モジュールは、2つの更なる加入クライアント装置1104及び加入クライアント装置1106を特定して、クライアント装置1104及びクライアント装置1106のそれぞれに、データ項目のコピーである、データ項目1112及びデータ項目1114を配信する。データ項目のコピーを受信すると、各クライアント装置を操作しているユーザは、そのユーザが選択している記憶場所内で、ローカルにデータ項目を記憶することができる。すなわち、ユーザは、特殊なフォルダ内にデータ項目を記憶する必要はなく、その代わりに、ユーザにとって有意味な場所に、データ項目を記憶することができる。
一部の場合には、集合に加入しているユーザのサブセットのみが、データ項目を集合に追加することを認可される場合がある。そのような制限は、多くの技術を通じて施行することができる。一部の場合には、そのような制限を施行するために、データ項目を割り当てないようにクライアント装置を構成することができる。あるいは、無認可のユーザから割り当てられるデータ項目を受け入れないように、データ項目共有エンジン220を構成することができる。データ項目割り当て制限のポリシーを施行する、更なる方法もまた可能である。更には、一部の場合には、集合の管理者は、データ項目が正式に集合に割り当てられる前に、各データ項目、又は指定されたユーザによって割り当てられる各データ項目を、承認することができる。
集合を使用してデータ項目を共有することに加えて、集合に加入しているユーザはまた、その集合に割り当てられたデータ項目に対して協働することもできる。すなわち、ユーザが、集合に割り当てられているデータ項目のローカルコピーに修正を加えると、その集合に加入している他のあらゆるユーザに、その修正を自動的に配信することができる。一部の場合には、クライアント装置は、リアルタイムで修正を送信することができる。例えば、修正は、修正が加えられる際に、送信することができる。しかしながら、クライアント装置はまた、周期的間隔で修正の集合を送信するように、かつ/又は、ユーザからの指示に際して修正の集合を送信するように、構成することもできる。例えば、修正の集合は、5分ごとに、又はデータ項目が保存されるときに、送信することができる。別の実施例では、修正の集合は、ユーザが、「修正を送信する」などのオプションを選択する場合に、送信することができる。更には、クライアント装置は、そのクライアント装置がオフラインである間に修正を収集して、次いで、クライアント装置がネットワークに接続された後に、収集された全ての修正を送信するように、構成することができる。
クライアント装置及び/又はデータ項目共有エンジン220内の、バージョン制御機能は、この協働の特徴的機能を支援することができる。例えば、クライアント装置は、集合に割り当てられたデータ項目をユーザが修正するたびに、クライアント装置が、そのデータ項目全体をデータ項目共有エンジン220に送信して、そこでバージョン制御モジュール224が、集合データベース242内に記憶されている現在のバージョン内にその変更を統合するように、構成することができる。集合に加入している他のクライアント装置に変更を配信するために、データ項目共有エンジンは、加入クライアント装置のデータ項目の現在のコピーをリクエストして、その修正を統合し、更新されたデータ項目をクライアント装置に返すことができる。そのような技術は、著しいオーバーヘッドをもたらすものであり、他の加入装置のユーザを妨害する可能性を秘めている。それゆえ、代替案は、クライアント側バージョン制御アプリケーションを含むようにクライアント装置を構成すること、及び、バージョン制御モジュール224などのバージョン制御機能を有するデータ項目共有エンジン220である。ユーザが、データ項目を修正すると、クライアント装置は、バージョン制御ソフトウェアを使用して変更を特定し、その修正のみをデータ項目共有エンジン220に送信することができる。バージョン制御モジュール224は、受信した修正を記録して、それらの修正を他の加入クライアント装置に配信することができる。他のクライアント装置で受信されると、バージョン制御ソフトウェアは、いずれかの局所的変更で、受信した修正を統合することができる。この修正の配信及び/又はバージョン制御機能はまた、クライアント装置が、LAN上でアクティブである場合、又は、ピアツーピアとCCRシステム200による促進との組み合わせを使用する混成構成内でアクティブである場合に、ピアツーピア構成内で実行することもできる。
各データ項目の修正を、そのデータ項目内に統合することにより、クライアント装置は、集合に割り当てられたデータ項目の単一のコピーを記憶することができる。一部の場合には、データ項目の修正は、データ項目の未修正部分又は以前に修正された部分から、識別可能にすることができる。例えば、クライアント装置は、ワードプロセッシング文書などの、テキスト文書であるデータ項目を表示することができ、データ項目の修正は、赤線引きを使用して識別される。強調表示、赤線引き、フォントの変更、メモ又はコメントの添付などの、新たな修正と以前から存在するデータ項目のコンテンツとの間に区別をつけるための様々な技術が可能である。更には、一部の場合には、ユーザ名又は他の識別子を、修正に添付することができ、かつ/又は、修正の横に沿って表示することができる。
一部の場合には、複数のユーザが、同時にデータ項目を修正することができる。この場合には、データ項目共有エンジン220及び/又はバージョン制御ソフトウェアは、クライアント装置が、集合内の各データ項目の単一のコピーのみを保守するように、競合解消戦略を含み得る。すなわち、競合が発生する場合、その競合は、クライアント装置での、データ項目の更なるコピーの作成を引き起こさない。クライアント装置は、そのデータ項目の単一のコピーを保守することができ、競合する修正の双方が、そのデータ項目のローカルコピー内に存在する。例えば、競合する修正の双方を、データ項目のローカルコピー内に統合することができ、ユーザは、修正の全て又は一部を選択することなどによって、その競合を手作業で解消することができる。一部の場合には、競合を解消することができるユーザは、集合の管理者とすることができる。あるいは、投票に基づくプロセスを使用することができる。例えば、集合に加入している各ユーザは、競合する修正のうちの1つを選択することができ、最多投票数を有する修正を、使用される修正とすることができる。あるいは、管理者が、選択を行う際に投票を使用することができる。一部の場合には、解消のポリシーは、データ項目又は集合に割り当てることができる。例えば、このポリシーは、より高いランク付けのユーザに関連付けられた競合が自動的に選択されることを、指定することができる。競合が解消されると、データ項目共有エンジン220は、その解消を配信することができる。
様々な技術を使用して、データ項目内に競合する修正を提示することができる。例えば、競合する修正は、互いに隣り合わせて提示することができるが、フォント又は色などを通じて、異なる方式で強調表示することができる。別の実施例では、競合する修正は、順次に提示することができる。一部の場合には、順次に提示される修正は、それらの修正に関連付けられるユーザに割り当てられた、ランクなどに基づいて、ランク付けすることができる。更に別の実施例では、競合する修正は、元のコンテンツの隣の余白内に提示することができる。更なる実施例では、競合する修正は、コンテンツの上方のポップアップボックス又はウィンドウ内に提示することができる。
一部の場合には、ユーザのサブセットのみが、集合に割り当てられたデータ項目を修正することができる。そのような制限は、多くの技術を通じて施行することができる。一部の場合には、そのような制限を施行するために、データ項目は、読み取り専用アクセスで、クライアント装置に記憶させることができる。あるいは、データ項目を修正することを認可されていないユーザによって行われる、いずれの修正も送信しないように、クライアント装置を構成することができる。データ項目共有エンジン220もまた、受信したいずれの無認可の修正も、記録又は配信しないように、構成することができる。更なる構成では、クライアント装置は、無認可のユーザによって行われた修正を受信することを、拒否することができる。集合に割り当てられたデータ項目に対する修正の制限を施行する、更なる方法もまた可能である。
データ項目の共有はまた、新たなユーザを任意の時点で集合に加入するように招待することができるように、構成することもできる。一部の場合には、集合の管理者のみが、新たなユーザを集合に加入するように招待することができる。あるいは、管理者は、集合に加入している非管理ユーザによって提起された招待を再検討して、承認又は否認することができる。新たなユーザが集合に加入すると、その新たなユーザは、集合に現在割り当てられている全てのデータ項目を、修正と共に受信することができる。
一部の構成では、以前に集合に割り当てられたデータ項目を、その集合から除去することができる。集合からデータ項目を除去する結果は、構成によって異なり得る。例えば、一部の場合には、集合に加入している全てのユーザは、そのデータ項目のローカルコピーを維持することができるが、もはや修正が伝播されることはなく、新たに加入するユーザは、除去されたデータ項目を受信することはない。あるいは、全てのローカルコピーを除去することができるが、一部の構成では、そのデータ項目を割り当てたユーザは、そのデータ項目を維持することができる。更には、一部の場合には、データ項目共有エンジン220は、そのデータ項目の記録を保守することができる。一部の場合には、集合の管理者、及び/又はデータ項目を割り当てたユーザのみが、集合からデータ項目を除去することができる。
データ項目と同様に、一部の構成では、ユーザは、集合から加入を解除することができる。集合から加入を解除する結果は、構成によって異なり得る。例えば、一部の場合には、そのユーザによって割り当てられなかった、集合に割り当てられているデータ項目の全てのローカルコピーを、そのユーザのクライアント装置から除去することができる。あるいは、そのユーザは、ローカルコピーを維持することができるが、もはや集合に修正が伝播されることはない。更には、一部の場合には、管理者は、集合からユーザを除去することができ、かつ/又は、その集合に関連付けられた、ユーザの許可を変更することができる。例えば、ユーザが、望ましくないコンテンツを割り当てることによって、集合を誤用しているか、又は、集合が、作業環境内でプロジェクトに関連付けられながら、ユーザがもはやそのプロジェクトに取り組んでいない場合である。
更には、一部の構成では、集合を削除することができる。例えば、集合がプロジェクトに関連付けられ、そのプロジェクトが中止されるか又は完了する場合には、その集合は、もはや必要とされない場合がある。集合を削除する結果は、構成によって異なり得る。一部の構成では、その集合に割り当てられたデータ項目の全てのローカルコピーを、削除することができる。一部の場合には、データ項目を割り当てた管理者、及び/又はユーザは、データ項目を保守することができる。あるいは、全てのユーザが、その集合に関連付けられたデータ項目のローカルコピーを保守することができる。更には、一部の場合には、データ項目共有エンジン220は、その集合の記録を保守することができる。
前述のように、集合に割り当てられたデータ項目のローカルコピーは、クライアント装置の任意の場所に記憶することができる。それゆえ、一部の構成では、共有データ項目は、クライアント装置のその共有データ項目を、非共有データ項目から区別する、識別的特徴を有し得る。例えば、共有データ項目は、強調表示することができ、異なる色で表示することができ、異なるレベルの不透明度で表示することなどができる。更には、この識別的特徴は、そのデータ項目が割り当てられる集合と協調させることができる。例えば、集合1に割り当てられるデータ項目は、赤色で表示することができ、集合2に割り当てられるデータ項目は、青色で表示することができる。一部の場合には、ファイル記述子の詳細により、そのデータ項目が共有であるか否か、及び/又は、そのデータ項目が割り当てられる集合を、指定することができる。
2.2.4 プライバシー及びセキュリティ
上述のように、一部の構成では、クラウドコンピューティングリソースシステムを使用して、ユーザデータを記憶することができる。本開示は、一部の実例では、この収集データが、個人データ及び/又は機密データを含む可能性があることを想到する。本開示では、そのようなデータの収集、分析、開示、転送、記憶、又は他の使用に関与するエンティティは、個人情報データを私的かつ安全なままに維持するための、産業上又は政治上の必要条件を満たすか若しくは上回ると一般的に見なされる、プライバシーのポリシー及び慣行を実施し、かつ一貫して使用するべきであることを、更に想到する。例えば、ユーザからの個人データは、そのエンティティの合法的かつ正当な使用のために収集されるべきであり、それらの合法的使用を除いて、共有又は販売されるべきではない。更には、そのような収集は、ユーザに告知して同意を得た後にのみ実施するべきである。更には、そのようなエンティティは、そのような個人データへのアクセスを保護して安全化し、その個人データへのアクセスを有する他者が、それらのプライバシー並びにセキュリティのポリシー及び手順を遵守することを保証するための、あらゆる必要な措置を講じるべきである。更には、そのようなエンティティは、広く受け入れられているプライバシーのポリシー及び慣行に対する自身の遵守を証明するために、第三者による評価を自らが受けることができる。
前述のことがらにもかかわらず、本開示はまた、ユーザが、個人データの使用又は個人データへのアクセスを選択的に阻止する実施形態も想到する。すなわち、本開示は、そのような個人データへのアクセスを防止又は阻止するために、ハードウェア要素及び/又はソフトウェア要素を提供することができると想到する。例えば、本技術は、ユーザが、クラウドベースのストレージ内に記憶されるデータを選択することが可能となるように、構成することができる。別の実施例では、本技術はまた、ユーザが、他のユーザと共有することが可能な、クラウドベースのストレージ内に記憶されるデータを指定することが可能となるように、構成することもできる。
それゆえ、本開示は、1つ以上の様々な開示された実施形態を実施するための個人データの使用を、広範に網羅するものであるが、本開示は、それらの様々な実施形態がまた、そのような個人データにアクセスすることを必要とせずに実施することも可能である点も、また想到する。すなわち、本技術の様々な実施形態は、そのような個人データの全て又は一部分の欠如により、実施不可能となるものではない。例えば、非個人的なデータを、クラウドベースのストレージ内に記憶することができる。
3.使用法
CCRシステム200は、強化されたクラウドベースのストレージ、クラウドベースのリソース、並びにデータ項目の共有及び協働を含めた、様々なクラウドベースの特徴的機能を促進する。図12は、強化されたクラウドベースのストレージを使用してデータ項目を記憶するための、例示的方法1200を示す流れ図である。明瞭性のために、この方法は、図2に示すような、例示的なクラウドコンピューティングリソースシステムの観点から論じられる。特定のステップが図12で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このデータ項目の記憶方法は、クラウドコンピューティングリソースシステムが、データ項目を記憶するための、クライアント装置からのリクエストを受信するときに開始することができる(1202)。この記憶リクエストの受信に応じて、クラウドコンピューティングリソースシステムは、ユーザアカウントの詳細を取得することができる(1204)。
このユーザアカウントの詳細、及びデータ項目に関する情報を使用して、クラウドコンピューティングリソースシステムは、クラウドベースのストレージ内に、そのデータ項目を記憶することができるか否かを判定することができる(1206)。クラウドコンピューティングリソースシステムは、既定の判定基準に基づいて、この判定を行うことができる。例えば、一部の場合には、クラウドコンピューティングリソースシステムは、ユーザアカウントの詳細で指定される、承認された最大容量よりも小さいスペースを割り当てるように、構成することができる。あるいは、クラウドコンピューティングリソースシステムは、ユーザが、ユーザアカウントの詳細で指定される、そのユーザの承認された最大記憶容量を超過していることを、判定することができる。それゆえ、クラウドコンピューティングシステムは、スペースの割り当て及び/又は認可に基づいて、この判定を行うことができる。一部の場合には、クラウドコンピューティングリソースシステムは、クラウドベースのストレージ内にデータ項目を記憶することが、外部ネットワーク記憶装置に記憶するよりも効率的ではないことを、判定することができる。例えば、外部ネットワーク記憶装置と比較して、クラウドベースのストレージ内にデータ項目を記憶することにより、レイテンシが増大し、性能が低下する場合がある。更には、クラウドコンピューティングリソースシステムは、ユーザ設定に基づいて、この判定を行うことができる。例えば、ユーザは、特定のデータ項目、又は特定のタイプのデータ項目が、外部ネットワーク記憶装置に記憶されるべきであることを、指定することができる。更なる既定の判定基準もまた可能である。
クラウドコンピューティングリソースシステムが、クラウドベースのストレージ内にデータ項目を記憶することができないと判定する場合、クラウドコンピューティングリソースシステムは、アカウントの詳細をチェックして、認可された外部ネットワーク記憶装置が存在するか否かを判定することができる(1208)。少なくとも1つの外部ネットワーク記憶装置が、ユーザアカウントの詳細で認可されている場合には、クラウドコンピューティングリソースシステムは、その認可された外部ネットワーク記憶装置に、データ項目を記憶させることができる(1214)。一部の場合には、ユーザアカウントの詳細は、2つ以上の認可された外部ネットワーク記憶装置を指定することができる。この場合には、クラウドコンピューティングリソースシステムは、それらの利用可能な外部ネットワーク記憶装置から、1つの外部ネットワーク記憶装置を選択することができる。一部の場合には、この選択は、無作為、利用可能なスペースの量、クラウドコンピューティングリソースシステムからの距離、データ項目のタイプ、ユーザ設定、外部ネットワーク記憶装置の信頼性などの、既定の選択判定基準に基づき得る。更には、クラウドコンピューティング記憶装置は、その記憶場所を反映するように、ユーザアカウントの詳細を更新することができる(1216)。
ユーザアカウントの詳細が、認可された外部ネットワーク記憶装置を指定しない場合には、クラウドコンピューティングシステムは、クラウドコンピューティング装置が、なぜクラウドベースのストレージ内にデータ項目を記憶することができなかったのかを検証するように、構成することができる(1210)。この検証の結果に基づいて、クラウドコンピューティングリソースシステムは、修復作業を行うことができる(1212)。例えば、クラウドコンピューティングリソースシステムが、ユーザアカウントの詳細で認可されているよりも小さいスペースを割り当てたために、クラウドベースのストレージ内にデータ項目が記憶されなかったと、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、より多くのスペースを割り当て、その後に、クラウドコンピューティングリソースを使用してデータ項目を記憶することができる。別の実施例では、ユーザが、ユーザアカウントの詳細で認可されているスペースの量を超過したために、クラウドベースのストレージ内にデータ項目が記憶されなかったと、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、ユーザに通知することができる。更に別の実施例では、外部ネットワーク記憶装置にデータ項目を記憶することが、より効率的であると判定されたために、クラウドベースのストレージ内にデータ項目が記憶されなかったと、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、クラウドベースのストレージ内にデータ項目を記憶することができる。更なる実施例では、ユーザが、外部ネットワーク記憶装置にデータ項目を記憶するようにリクエストしたと、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、認可された外部ネットワーク記憶装置の欠如をユーザに通知することができ、かつ/又は、クラウドベースのストレージ内にデータ項目を記憶するための許可をリクエストすることができる。更なる修復作業もまた可能である。ステップ1212又はステップ1216の完了後、クラウドコンピューティングリソースシステムは、以前の処理を再開することができ、このことは、方法1200を繰り返すことを含み得る。
図13は、強化されたクラウドベースのストレージを使用してデータ項目を読み出すための、例示的方法1300を示す流れ図である。明瞭性のために、この方法は、図2に示すような、例示的なクラウドコンピューティングリソースシステムの観点から論じられる。特定のステップが図13で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このデータ項目の読み出し方法は、クラウドコンピューティングリソースシステムが、データ項目を読み出すための、クライアント装置からのリクエストを受信するときに開始することができる(1302)。この読み出しリクエストの受信に応じて、クラウドコンピューティングリソースシステムは、ユーザアカウントの詳細を取得することができる(1304)。
このユーザアカウントの詳細、及びデータ項目に関する情報を使用して、クラウドコンピューティングリソースシステムは、そのデータ項目が、クラウドベースのストレージ内に記憶されているか否かを特定することができる(1306)。クラウドコンピューティングリソースシステムが、そのデータ項目がクラウドベースのストレージ内に記憶されていないと判定する場合、クラウドコンピューティングリソースシステムは、そのデータ項目が、外部ネットワーク記憶装置に記憶されているか否かを特定することができる(1308)。クラウドコンピューティングリソースシステムが、リクエストされたデータ項目の記憶場所を特定することが不可能な場合には、クラウドコンピューティングリソースシステムは、リクエストしているクライアント装置に、失敗メッセージを送信することができる(1310)。一部の場合には、そのデータ項目が、クラウドベースのストレージ内に全く記憶されていなかった場合に、失敗が発生し得る。あるいは、そのデータ項目が、外部ネットワーク記憶装置に記憶されていたが、その装置がもはやクラウドコンピューティングリソースシステムによってアクセス可能ではない場合、例えば、ユーザが、その外部ネットワーク記憶装置をネットワークから接続解除した場合に、失敗が発生し得る。更なる失敗のシナリオもまたあり得る。
クラウドコンピューティングリソースシステムが、リクエストされたデータ項目の記憶場所を特定することが可能な場合には、クラウドコンピューティングリソースシステムは、その記憶場所からデータ項目を読み出して(1312)、リクエストしているクライアント装置に、そのデータ項目を送信することができる(1314)。ステップ1310又はステップ1314の完了後、クラウドコンピューティングリソースシステムは、以前の処理を再開することができ、このことは、方法1300を繰り返すことを含み得る。
図14は、アプリケーションリソースファイルプレースホルダを有するアプリケーションをインストールするための、例示的方法1400を示す流れ図である。明瞭性のために、この方法は、図2に示すような、ファイルの読み出しのために構成されたオペレーティングシステムを含み、クラウドコンピューティングリソースシステムに接続される、例示的なクライアント装置の観点から論じられる。特定のステップが図14で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このアプリケーションのインストール方法は、クライアント装置で動作しているオペレーティングシステムが、主要なアプリケーション実行可能ファイル及び1つ以上のアプリケーションリソースファイルを含むアプリケーションをインストールするための、リクエストを受信するときに開始することができる(1402)。このリクエストに応じて、オペレーティングシステムは、それらの1つ以上のアプリケーションリソースファイルをインストールするべきか否かを判定する(1404)。一部の場合には、アプリケーションリソースファイルをインストールするべきか否かの判定は、アプリケーションリソースファイルのサイズ、そのアプリケーションに関してインストールされるアプリケーションリソースファイルの最大合計サイズ、対象のアプリケーション用途、又はアプリケーション利用履歴などの、既定の判定基準に基づき得る。オペレーティングシステムが、アプリケーションリソースファイルをインストールするべきであると判定する場合には、オペレーティングシステムは、そのアプリケーションリソースファイルをインストールする(1408)。しかしながら、オペレーティングシステムが、アプリケーションリソースファイルをインストールするべきではないと判定する場合には、オペレーティングシステムは、アプリケーションリソースファイルプレースホルダをインストールする(1406)。一部の場合には、アプリケーションリソースファイルプレースホルダは、実際のアプリケーションリソースファイルの外観を有し得るが、実際には空のファイルである。
アプリケーションリソースファイル又はアプリケーションリソースファイルプレースホルダのいずれかをインストールした後、オペレーティングシステムは、インストールするためのアプリケーションリソースファイルが更に存在するか否かを判定する(1410)。存在する場合には、オペレーティングシステムは、このプロセスを繰り返す。ステップ1410の完了後、クライアント装置のオペレーティングシステムは、以前の処理を再開することができ、このことは、方法1400を繰り返すことを含み得る。
図15は、アプリケーションリソースファイルを取得するための、例示的方法1500を示す流れ図である。明瞭性のために、この方法は、図2に示すような、ファイルの読み出しのために構成されたオペレーティングシステムを含み、クラウドコンピューティングリソースシステムに接続される、例示的なクライアント装置の観点から論じられる。特定のステップが図15で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このアプリケーションリソースファイルの読み出し方法は、クライアント装置で動作しているオペレーティングシステムが、同じくクライアント装置で動作しているアプリケーションから、アプリケーションリソースファイルに対するリクエストを受信するときに開始することができる(1502)。このリクエストに応じて、オペレーティングシステムは、クライアント装置に記憶されているアプリケーションリソースファイルが、実際のアプリケーションリソースファイルであるか、又は、そうではなくアプリケーションリソースファイルプレースホルダであるかを判定する(1504)。一部の場合には、アプリケーションリソースファイルプレースホルダは、実際のアプリケーションリソースファイルの外観を有し得るが、実際には空のファイルである。一部の構成では、オペレーティングシステムは、ファイル上に特殊ビットが設定されている場合に、そのアプリケーションリソースファイルがプレースホルダであると判定することができる。実際のアプリケーションリソースファイルをプレースホルダと区別するための、他の技術もまた可能である。
リクエストされたアプリケーションリソースファイルが、アプリケーションリソースファイルプレースホルダに相当すると、オペレーティングシステムが判定する場合には、オペレーティングシステムは、障害をトリガすることができる。このトリガされた障害により、クライアント装置は、クラウドコンピューティングリソースシステムからアプリケーションリソースファイルをリクエストすることができる(1506)。アプリケーションリソースファイルを受信すると、オペレーティングシステムは、その受信したアプリケーションリソースファイルで、プレースホルダを置き換えることができる(1508)。最終的に、オペレーティングシステムは、リクエストしているアプリケーションに、そのアプリケーションリソースファイルを送信することができる(1510)。ステップ1510の完了後、クライアント装置のオペレーティングシステムは、以前の処理を再開することができ、このことは、方法1500を繰り返すことを含み得る。
図16は、データ項目の共有及び協働のための、例示的方法1600を示す流れ図である。明瞭性のために、この方法は、図2に示すような、例示的なクラウドコンピューティングリソースシステムの観点から論じられる。しかしながら、この方法はまた、部分的又は全面的に、クライアント装置で実行することもできる。特定のステップが図16で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このデータ項目の共有及び協働の方法は、クラウドコンピューティングリソースシステムが、データ項目のグループ又は集合を形成するための、クライアント装置からのリクエストを受信するときに開始することができる(1602)。この集合を形成するためのリクエストは、ユーザ識別子のセットを含み得る。更には、一部の場合には、このリクエストは、その集合に割り当てるための、1つ以上のデータ項目を含み得る。集合形成リクエストと共に受信される、ユーザ識別子のセットに加えて、クラウドコンピューティングリソースシステムは、集合に加入するようにユーザを招待するためのリクエストを、別個に受信することができる。
集合を形成するためのリクエスト、又は集合に加入するようにユーザを招待するための別個のリクエストの受信に応じて、クラウドコンピューティングリソースシステムは、そのリクエスト内に含まれるユーザ識別子に関連付けられた各ユーザに、集合に加入するための招待を送信することができる(1604)。その後のある時点で、クラウドコンピューティングリソースシステムは、招待ユーザから、加入の招待に対する応答を受信することができる。この応答に基づいて、クラウドコンピューティングリソースシステムは、そのユーザを集合に加入させることができる(1606)。一部の場合には、クラウドコンピューティングリソースシステムは、加入プロセスを完了する前に、このシステムでユーザが認証することを必要とし得る。ユーザの加入後、CCRシステムは、その集合にデータ項目が割り当てられているか否かをチェックすることができる(1608)。割り当てられている場合には、クラウドコンピューティングリソースシステムは、割り当てられている各データ項目のコピーを、加入ユーザに関連付けられたクライアント装置に送信することができる(1614)。一部の場合には、ユーザは、そのユーザのアカウントで認可された、複数のクライアント装置を有し得る。この場合には、クラウドコンピューティングリソースシステムは、認可された各クライアント装置に、コピーを送信することができる。
一部の場合には、集合を形成するためのリクエストは、1つ以上のデータ項目を含み得る。あるいは、クラウドコンピューティングリソースシステムは、集合にデータ項目を割り当てるための、別個のリクエストを受信することができる。データ項目の受信に応じて、クラウドコンピューティングリソースシステムは、そのデータ項目を集合に割り当てることができる(1610)。データ項目を割り当てた後、クラウドコンピューティングリソースシステムは、そのデータ項目を集合に割り当てたユーザ以外に、その集合に加入しているユーザが存在するか否かを、判定することができる(1612)。存在する場合には、クラウドコンピューティングリソースシステムは、その加入ユーザに関連付けられたクライアント装置に、データ項目のコピーを送信することができる(1614)。一部の場合には、ユーザは、そのユーザのアカウントで認可された、複数のクライアント装置を有し得る。この場合には、クラウドコンピューティングリソースシステムは、認可された各クライアント装置に、コピーを送信することができる。一部の場合には、クラウドコンピューティングリソースシステムは、同時に、集合にユーザを加入させ(1606)、集合にデータ項目を割り当てる(1610)ことができる。
その後のある時点で、クラウドコンピューティングリソースシステムは、集合に割り当てられたデータ項目に対する修正を受信することができる(1616)。一部の場合には、この修正は、修正のシーケンスとすることができる。更には、クラウドコンピューティングリソースシステムは、複数のユーザから、データ項目に対する修正を受信することができる。この修正の受信に応じて、クラウドコンピューティングリソースシステムは、集合に加入している各ユーザに、その修正を配信することができる(1618)。ステップ1618の完了後、クラウドコンピューティングリソースシステムは、以前の処理を再開することができ、このことは、方法1600を繰り返すことを含み得る。
図17は、ユーザを集合に加入させるための、例示的方法1700を示す流れ図である。明瞭性のために、この方法は、図2に示すような、例示的なクラウドコンピューティングリソースシステムの観点から論じられる。しかしながら、この方法はまた、部分的又は全面的に、クライアント装置で実行することもできる。特定のステップが図17で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このユーザ加入方法は、クラウドコンピューティングリソースシステムが、集合に加入するようにユーザを招待するためのリクエストを受信するときに、開始することができる(1702)。このリクエストは、ユーザ識別子を含み得る。一部の場合には、クラウドコンピューティングリソースシステムは、この集合に加入するようにユーザを招待するためのリクエストを、集合を形成するためのリクエストの一部として受信することができる。あるいは、クラウドコンピューティングリソースシステムは、ユーザを招待するための別個のリクエストを受信することができる。一部の場合には、クラウドコンピューティングリソースシステムは、集合の管理者から、及び/又は集合に加入するようにユーザを招待するための権限を有する別のユーザから、ユーザを招待するためのリクエストを受信することができる。
集合に加入するようにユーザを招待するためのリクエストの受信に応じて、クラウドコンピューティングリソースシステムは、ユーザ識別子に関連付けられたユーザに、集合に加入するための招待を送信することができる(1704)。クラウドコンピューティングリソースシステムは、多種多様な技術を使用して、この招待を送信するように構成することができる。例えば、クラウドコンピューティングリソースシステムは、電子メール、インスタントメッセージ、SMS、クライアント側アプリケーション内の通知、クライアント装置のポップアップウィンドウなどを介して、この招待を送信することができる。
その後のある時点で、クラウドコンピューティングリソースシステムは、招待ユーザから応答を受信することができる(1706)。クラウドコンピューティングリソースシステムが、その応答が肯定応答であると判定する場合には(1708)、クラウドコンピューティングリソースシステムは、応じているユーザを認証することができる(1710)。クラウドコンピューティングリソースシステムは、任意の認証プロセスを使用することができる。例えば、クラウドコンピューティングリソースシステムは、加入の招待が送信されたユーザアカウントにログインすることをユーザに要求することによって、そのユーザを認証することができる。ユーザを認証するための、代替的技術もまた可能である。
一部の構成では、ユーザは、加入の招待に対して、否定応答で応じることができる。すなわち、ユーザは、単に招待を無視するのではなく、そのユーザが集合に加入することを望んでいないという明示的な応答を送信することができる。一部の場合には、クラウドコンピューティングリソースシステムは、明示的な否定応答を無視することができる。あるいは、クラウドコンピューティングリソースシステムは、招待をリクエストしたユーザに通知することなどの措置を講じることができ、かつ/又は、集合に関連付けられた任意の記録を更新することができる。
クラウドコンピューティングリソースシステムは、ユーザ認証が成功したか否かを判定し(1712)、その判定に従って応じることができる。認証が成功した場合には、クラウドコンピューティングリソースシステムは、その集合へのユーザの加入を完了することができる(1714)。ユーザの加入を完了することは、そのユーザの識別子を集合の記録に追加することを含み得る。一部の場合には、加入が完了すると、クラウドコンピューティングリソースシステムは、招待をリクエストしたユーザ、及び/又は集合の管理者に、通知を送信することができる。認証が失敗した場合には、クラウドコンピューティングリソースシステムは、その集合へのユーザの加入を否認することができる(1716)。一部の構成では、認証に失敗すると、ユーザは、認証プロセスを完了するように、再び試みることができる。更には、一部の場合には、クラウドコンピューティングリソースシステムは、認証の試みの失敗の数に上限を設けることができる。更には、一部の場合には、加入の試みの失敗に際して、クラウドコンピューティングリソースシステムは、招待をリクエストしたユーザ、及び/又は集合の管理者に、通知を送信することができる。ステップ1714若しくはステップ1716の完了後、又はステップ1708での否定応答に際して、クラウドコンピューティングリソースシステムは、以前の処理を再開することができ、このことは、方法1700を繰り返すことを含み得る。
図18は、集合にデータ項目を割り当てるための、例示的方法1800を示す流れ図である。明瞭性のために、この方法は、図2に示すような、例示的なクラウドコンピューティングリソースシステムの観点から論じられる。しかしながら、この方法はまた、部分的又は全面的に、クライアント装置で実行することもできる。特定のステップが図18で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このデータ項目の割り当て方法は、クラウドコンピューティングリソースシステムが、集合にデータ項目を割り当てるためのリクエストを受信するときに、開始することができる(1802)。一部の場合には、クラウドコンピューティングリソースシステムは、この集合にデータ項目を割り当てるためのリクエストを、集合を形成するためのリクエストの一部として受信することができる。あるいは、クラウドコンピューティングリソースシステムは、集合にデータ項目を割り当てるための別個のリクエストを受信することができる。
集合にデータ項目を割り当てるためのリクエストの受信に応じて、クラウドコンピューティングリソースシステムは、リクエストしているユーザが、集合にデータ項目を割り当てることを認可されているか否かを、チェックすることができる(1804)。一部の場合には、集合は、その集合に加入しているユーザのサブセットのみが、集合にデータ項目を割り当てることを認可されるような、ポリシーを有し得る。例えば、集合は、管理者のみが集合にデータ項目を割り当てることができるというポリシーを有し得る。
そのユーザが、集合にデータ項目を割り当てることを許可されていると、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、そのデータ項目が、その集合に割り当てられることを許可されているタイプのものであるか否かを、チェックすることができる(1806)。一部の場合には、集合は、一部のデータ項目のタイプが集合に割り当てられることを禁止するポリシーを有し得る。例えば、集合は、その集合にはワードプロセッシング文書のみを割り当てることができるというポリシーを有し得る。
そのデータ項目が、その集合に割り当てられることを許可されているタイプのものであると、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、そのデータ項目を集合に割り当てることができる(1808)。データ項目を集合に割り当てることは、そのデータ項目を集合の記録に追加することを含み得る。一部の場合には、データ項目を割り当てると、クラウドコンピューティングリソースシステムは、その割り当てをリクエストしたユーザ、及び/又は集合の管理者に、通知を送信することができる。
集合にデータ項目を割り当てると、クラウドコンピューティングリソースシステムは、その集合に加入している各ユーザに関連付けられたクライアント装置に、そのデータ項目のコピーを配信することができる(1810)。一部の場合には、ユーザは、ユーザアカウントで認可された、複数のクライアント装置を有し得る。この場合には、クラウドコンピューティングリソースシステムは、認可された各クライアント装置に、コピーを送信することができる。一部の構成では、クラウドコンピューティングリソースシステムは、データ項目を送信する代わりに、かつ/又は送信することに加えて、新たなデータ項目が集合に割り当てられたという通知を、その集合に加入している各ユーザに配信することができる。クラウドコンピューティングリソースシステムは、多種多様な技術を使用して、この通知を送信するように構成することができる。例えば、クラウドコンピューティングリソースシステムは、電子メール、インスタントメッセージ、SMS、クライアント側アプリケーション内の通知、クライアント装置のポップアップウィンドウなどを介して、この通知を送信することができる。
そのユーザが、集合にデータ項目を割り当てることを認可されていないこと、及び/又は、そのデータ項目のタイプが、その集合内で許可されていないことを、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、そのデータ項目を集合から遮断することができる(1812)。一部の構成では、割り当ての失敗に際して、クラウドコンピューティングリソースシステムは、その割り当てをリクエストしているユーザ、及び/又は集合の管理者に、通知を送信することができる。一部の場合には、この通知は、なぜ割り当てが失敗したのかを示すことができる。ステップ1810又はステップ1812の完了後、クラウドコンピューティングリソースシステムは、以前の処理を再開することができ、このことは、方法1800を繰り返すことを含み得る。
図19は、集合に割り当てられたデータ項目を修正するための、例示的方法1900を示す流れ図である。明瞭性のために、この方法は、図2に示すような、例示的なクラウドコンピューティングリソースシステムの観点から論じられる。しかしながら、この方法はまた、部分的又は全面的に、クライアント装置で実行することもできる。特定のステップが図19で示されるが、他の実施形態では、方法は、示されるものよりも多くのステップ、又は少ないステップを有し得る。このデータ項目の修正方法は、クラウドコンピューティングリソースシステムが、集合に割り当てられたデータ項目に対する修正を受信するときに、開始することができる(1902)。一部の場合には、この修正は、データ項目全体とすることができる。あるいは、この修正は、2つのバージョン間の相違を示す、データ項目の一部片とすることができる。更には、一部の場合には、この修正は、修正のシーケンスとすることができる。
データ項目に対する修正の受信に応じて、クラウドコンピューティングリソースシステムは、修正を送信したユーザが、そのデータ項目を修正することを認可されているか否かを、チェックすることができる(1904)。一部の場合には、集合は、その集合に加入しているユーザのサブセットのみが、データ項目を修正することを認可されるような、ポリシーを有し得る。あるいは、ポリシーは、データ項目レベルで送信することができる。すなわち、各データ項目は、いずれのユーザが修正を加えることを許可されているかを示す、関連する許可のセットを有し得る。
そのユーザが、データ項目を修正することを許可されていると、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、そのデータ項目を更新することができる(1906)。一部の場合には、クラウドコンピューティングリソースシステムは、データ項目のコピーを保守することができる。修正が受信されると、クラウドコンピューティングリソースシステムは、データ項目のコピー内に、その修正を統合することができる。更には、クラウドコンピューティングリソースシステムは、修正の記録を保守することができる。修正を受信すると、クラウドコンピューティングリソースシステムは、その集合に加入している各ユーザに関連付けられたクライアント装置に、その修正を配信することができる(1908)。
そのユーザが、データ項目を修正することを許可されていないと、クラウドコンピューティングリソースシステムが判定する場合には、クラウドコンピューティングリソースシステムは、その修正を遮断することができる(1910)。一部の構成では、修正が失敗すると、クラウドコンピューティングリソースシステムは、修正を共有することを試みているユーザ、及び/又は集合の管理者に、通知を送信することができる。一部の場合には、この通知は、なぜ修正が失敗したのかを示すことができる。ステップ1908又はステップ1910の完了後、クラウドコンピューティングリソースシステムは、以前の処理を再開することができ、このことは、方法1900を繰り返すことを含み得る。
4.例示的システム
図20を参照すると、例示的システム2000としては、処理ユニット(CPU又はプロセッサ)2020及びシステムバス2010を含む、汎用コンピューティング装置2000が挙げられ、このシステムバス2010は、読み出し専用メモリ(ROM)2040及びランダムアクセスメモリ(RAM)2050などの、システムメモリ2030を含む様々なシステム構成要素を、プロセッサ2020に結合する。システム2000は、プロセッサ2020に直接接続されるか、近接して接続されるか、又はプロセッサ2020の一部として統合される、キャッシュ2022を含み得る。システム2000は、プロセッサ2020による迅速なアクセスのために、メモリ2030及び/又は記憶装置2060から、このキャッシュにデータをコピーする。この方式で、キャッシュは、データを待機している間にプロセッサ2020が遅延することを回避する、性能の向上を提供する。これらのモジュール及び他のモジュールは、様々な動作を実行するようにプロセッサ2020を制御することができ、又は制御するように構成することができる。他のシステムメモリ2030も同様に、使用するために利用可能とすることができる。メモリ2030は、異なる性能特性を備える、複数の異なるタイプのメモリを含み得る。本開示は、2つ以上のプロセッサ2020を有するコンピューティング装置2000上で、又は一体にネットワーク接続されたコンピューティング装置のグループ若しくはクラスタ上で動作することにより、より高い処理能力を提供することができる点を、理解することができる。プロセッサ2020は、任意の汎用プロセッサ、及び、記憶装置2060内に記憶されプロセッサ2020を制御するように構成されたモジュール1(2062)、モジュール2(2064)、及びモジュール3(2066)などの、ハードウェアモジュール若しくはソフトウェアモジュール、並びに、ソフトウェア命令が実際のプロセッサ設計に組み込まれた専用プロセッサを含み得る。プロセッサ2020は、本質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、自己完結型コンピューティングシステムとすることができる。マルチコアプロセッサは、対称型又は非対称型とすることができる。
システムバス2010は、様々なバスアーキテクチャのうちのいずれかを使用する、メモリバス若しくはメモリコントローラ、周辺バス、及びローカルバスを含む、幾つかのタイプのバス構造のうちのいずれかとすることができる。ROM2040内などに記憶された基本入出力システム(BIOS)は、起動中などに、コンピューティング装置2000内部の要素間で情報を転送するために役立つ、基本ルーチンを提供することができる。コンピューティング装置2000は、ハードディスクドライブ、磁気ディスクドライブ、光ディスクドライブ、テープドライブなどの、記憶装置2060を更に含む。記憶装置2060は、プロセッサ2020を制御するための、ソフトウェアモジュール2062、2064、2066を含み得る。他のハードウェア又はソフトウェアモジュールも想到される。記憶装置2060は、ドライブインタフェースによって、システムバス2010に接続される。このドライブ及び関連するコンピュータ可読記憶媒体は、コンピューティング装置2000に関する、コンピュータ可読命令、データ構造、プログラムモジュール、及び他のデータの、不揮発性の記憶を提供する。一態様では、特定の機能を実行するハードウェアモジュールは、その機能を実行するために、プロセッサ2020、バス2010、ディスプレイ2070などの必要なハードウェア構成要素に関連する、永続的コンピュータ可読媒体内に記憶されたソフトウェア構成要素を含む。これらの基本構成要素は、当業者には既知であり、装置2000が小さいハンドヘルド型コンピューティング装置であるか、デスクトップコンピュータであるか、又はコンピュータサーバーであるかなどの、装置のタイプに応じて、適切な変形態様が想到される。
本明細書で説明される例示的実施形態は、ハードディスク2060を採用するが、当業者には、磁気カセット、フラッシュメモリカード、デジタル多用途ディスク、カートリッジ、ランダムアクセスメモリ(RAM)2050、読み出し専用メモリ(ROM)2040、ビットストリームを含む有線又は無線信号などの、コンピュータによってアクセス可能なデータを記憶することができる、他のタイプのコンピュータ可読媒体もまた、この例示的な動作環境で使用することができる点を理解されたい。永続的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、及び信号それ自体などの媒体を、明示的に除外する。
コンピューティング装置2000とのユーザの対話を可能にするために、入力装置2090は、会話用のマイクロフォン、ジェスチャ又は図形入力用のタッチ感知スクリーン、キーボード、マウス、モーション入力、会話などの、任意数の入力機構を表すものである。出力装置2070もまた、当業者には既知の多くの出力機構のうちの、1つ以上とすることができる。一部の実例では、多モードシステムにより、ユーザは、コンピューティング装置2000と通信するために、複数のタイプの入力を提供することが可能となる。通信インタフェース2080は、ユーザ入力及びシステム出力を、全般的に統制及び管理する。いずれかの特定のハードウェア構成上で動作することに対する制限は存在せず、それゆえ、本明細書での基本的機構は、改善されたハードウェア又はファームウェアの構成が開発されるにつれ、それらの構成に容易に置き換えることができる。
説明の明瞭性のために、例示的システムの実施形態は、「プロセッサ」又はプロセッサ2020として標識される機能ブロックを含めた、個別の機能ブロックを含むように提示される。これらのブロックが表す機能は、共有又は専用のハードウェアの使用を通じて提供することができ、それらのハードウェアとしては、ソフトウェアを実行することが可能なハードウェア、及び、汎用プロセッサ上で実行されるソフトウェアと同等品として動作する目的のために構築された、プロセッサ2020などのハードウェアが挙げられるが、これらに限定されない。例えば、図20に提示される1つ以上のプロセッサの機能は、単一の共有プロセッサ又は複数のプロセッサによって提供することができる。(用語「プロセッサ」の使用は、ソフトウェアを実行することが可能なハードウェアのみを指すものとして解釈されるべきではない。)例示的実施形態は、マイクロプロセッサ及び/又はデジタル信号プロセッサ(DSP)ハードウェア、以下で論じられる動作を実行するソフトウェアを記憶するための読み出し専用メモリ(ROM)2040、並びに結果を記憶するためのランダムアクセスメモリ(RAM)2050を含み得る。超大規模集積回路(VLSI)ハードウェアの実施形態に加えて、汎用DSP回路と組み合わせたカスタムVLSI回路機構もまた、提供することができる。
様々な実施形態の論理演算は、(1)汎用コンピュータ内部のプログラム可能回路上で実行される、コンピュータによって実行されるステップ、動作、又は手順のシーケンス、(2)特定用途プログラム可能回路上で実行される、コンピュータによって実行されるステップ、動作、又は手順のシーケンス、並びに/あるいは(3)プログラム可能回路内部の、相互接続された機械モジュール又はプログラムエンジンとして実行される。図20に示すシステム2000は、列挙された方法の全て又は一部を実践することができ、列挙されたシステムの一部とすることができ、かつ/又は列挙された永続的コンピュータ可読記憶媒体内の命令に従って動作することができる。そのような論理演算は、プロセッサ2020を制御するように構成されたモジュールとして実行されることにより、そのモジュールのプログラミングに従って、特定の機能を実行することができる。例えば、図20は、プロセッサ2020を制御するように構成された3つのモジュールである、Mod1(2062)、Mod2(2064)、及びMod3(2066)を示す。これらのモジュールを、記憶装置2060上に記憶させ、実行時にRAM2050若しくはメモリ2030にロードすることができ、又は、当該技術分野において既知であるように、他のコンピュータ可読メモリの場所内に記憶させることができる。
本開示の範囲内の実施形態はまた、コンピュータ実行可能命令又はデータ構造を伝達若しくは記憶するための、有形かつ/又は永続的コンピュータ可読記憶媒体も含み得る。そのような永続的コンピュータ可読記憶媒体は、上述のような任意の専用プロセッサの機能設計を含む、汎用コンピュータ又は専用コンピュータによってアクセスすることが可能な、利用可能な任意の媒体とすることができる。例として、また限定するものではないが、そのような永続的コンピュータ可読媒体としては、RAM、ROM、EEPROM、CD−ROM又は他の光ディスク記憶装置、磁気ディスク記憶装置又は他の磁気記憶装置、あるいは、コンピュータ実行可能命令、データ構造、又はプロセッサチップ設計の形態で所望のプログラムコード手段を伝達若しくは記憶するために使用することが可能な、任意の他の媒体を挙げることができる。情報が、ネットワーク又は別の通信接続(有線、無線、又はこれらの組み合わせのいずれか)を介して、コンピュータに転送又は提供される場合、コンピュータが、その接続をコンピュータ可読媒体として見なすことは適切である。それゆえ、いずれのそのような接続も、コンピュータ可読媒体と呼ばれることが適切である。上記の組み合わせもまた、コンピュータ可読媒体の範囲内に包含されるべきである。
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、又は専用処理装置に、特定の機能若しくは機能群を実行させる、命令及びデータを含む。コンピュータ実行可能命令はまた、スタンドアロン環境又はネットワーク環境内でコンピュータによって実行される、プログラムモジュールも含む。一般的に、プログラムモジュールは、特定のタスクを実行するか、又は特定の抽象データタイプを実行する、専用プロセッサなどの設計に固有のルーチン、プログラム、コンポーネント、データ構造、オブジェクト、及び関数を含む。コンピュータ実行可能命令、関連するデータ構造、及びプログラムモジュールは、本明細書で開示される方法のステップを実行するための、プログラムコード手段の実施例を表すものである。そのような実行可能命令又は関連するデータ構造の特定のシーケンスは、そのようなステップで説明される機能を実施するための、対応する動作の実施例を表すものである。
本開示の他の実施形態は、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセッサベースの民生用電子機器又はプログラム可能民生用電子機器、ネットワークPC、ミニコンピュータ、メインフレームコンピュータなどを含む、多くのタイプのコンピュータシステム構成を有するネットワークコンピューティング環境内で実施することができる点が、当業者には理解されるであろう。実施形態はまた、通信ネットワークを通じて(有線リンク、無線リンクによって、又はこれらの組み合わせによって)リンクされたローカル及びリモートの処理装置によってタスクが実行される、分散コンピューティング環境内で実践することもできる。分散コンピューティング環境内では、プログラムモジュールは、ローカル及びリモート双方のメモリ記憶装置内に配置することができる。
上述の様々な実施形態は、例示としてのみ提供されるものであり、本開示の範囲を限定するものとして解釈されるべきではない。本明細書で図示され説明される例示的な実施形態及び適用に従うことなく、かつ本開示の趣旨及び範囲から逸脱することなく、本明細書で説明された原理に対して実施することが可能な、様々な修正及び変更が、当業者には容易に認識されるであろう。