(57)【特許請求の範囲】
【請求項１】
以前のバージョンのディレクトリ構造を生成するためのコンピュータ実装方法であって、
クライアントデバイスにおいて、以前のバージョンのディレクトリ構造に対する要求を受信することであって、前記以前のバージョンのディレクトリ構造は、以前の日付に関連付けられる、ことと、
前記以前の日付における前記以前のバージョンのディレクトリ構造に含まれるコンテンツアイテムについてコンテンツ管理システムに問い合わせることと、
前記コンテンツ管理システムから、前記以前の日付における前記以前のバージョンのディレクトリ構造に含まれるコンテンツアイテムの１つ以上の指示を受信することと、
前記クライアントデバイスにおいて、前記コンテンツアイテムの前記１つ以上の指示に基づいて、前記以前の日付における前記以前のバージョンのディレクトリ構造に含まれる前記コンテンツアイテムを表すプレースホルダーを生成することであって、前記プレースホルダーは、現在の日付に関連付けられる、現在のバージョンのディレクトリ構造とは別のものであること、を含み、
前記１つ以上の指示は、前記コンテンツアイテムに関連する情報である、方法。
【請求項２】
請求項１に記載の方法であって、更に、
前記クライアントデバイスにおいて、前記プレースホルダーのうちの対応するプレースホルダーを有するコンテンツアイテムにアクセスするための更なる要求を受信することと、
前記コンテンツアイテムに関連付けられた前記対応するプレースホルダーを使用して、前記以前の日付に存在していた前記コンテンツアイテムについて前記コンテンツ管理システムに問い合わせることと、
前記コンテンツ管理システムから、前記以前の日付に存在していた前記コンテンツアイテムを受信すること、を含む方法。
【請求項３】
請求項２に記載の方法であって、前記コンテンツアイテムにアクセスするための前記更なる要求は、前記プレースホルダーの少なくとも１つ、または、前記以前のバージョンのディレクトリ構造におけるプレースホルダーに関連付けられた親コンテンツアイテムにナビゲートすることを含む、方法。
【請求項４】
請求項２から３のいずれか１項に記載の方法であって、前記コンテンツアイテムにアクセスするための前記更なる要求は、前記以前の日付に存在していた前記コンテンツアイテムを、前記現在の日付を有する別のディレクトリ構造にコピーすることを含む、方法。
【請求項５】
請求項１から４のいずれか１項に記載の方法であって、更に、
前記クライアントデバイスにおいて、前記以前のバージョンのディレクトリ構造に含まれる親コンテンツアイテム内に格納されるコンテンツアイテムへアクセスするための更なる要求を受信することであって、前記以前のバージョンのディレクト構造は、前記コンテンツアイテムに関連付けられたそれぞれのプレースホルダーを含まない、ことと、
前記コンテンツアイテムに関連付けられた前記それぞれのプレースホルダーについて前記コンテンツ管理システムに問い合わせることと、
前記コンテンツ管理システムから、前記それぞれのプレースホルダーを受信することと、
前記クライアントデバイスにおいて、前記親コンテンツアイテムに関連付けられた以前のバージョンのサブディレクトリ構造に含まれるコンテンツアイテムを表すそれぞれのプレースホルダーを生成することであって、前記サブディレクトリ構造における前記それぞれのプレースホルダーは、前記コンテンツアイテムに関連付けられた前記それぞれのプレースホルダーを含み、前記以前のバージョンのサブディレクトリ構造は前記以前の日付に関連付けられること、を含む、方法。
【請求項６】
請求項１から５のいずれか１項に記載の方法であって、前記プレースホルダーは、前記コンテンツ管理システムにおけるストレージにおいて前記コンテンツアイテムを見つけるためのメタデータを含む、方法。
【請求項７】
請求項１から６のいずれか１項に記載の方法であって、更に、前記クライアントデバイスにより要求されたコンテンツアイテムについて、前記コンテンツ管理システムに問い合わせることを含み、前記コンテンツアイテムについての前記問い合わせは、更に、
前記プレースホルダーから、前記コンテンツアイテムに関連付けられたコンテンツ識別子を決定することと、
前記クライアントデバイスから、前記コンテンツ識別子を使用して、コンテンツ管理システムに関連付けられているコンテンツストレージに問い合わせることを含む、方法。
【請求項８】
少なくとも１つのプロセッサによって実行されると、前記少なくとも１つのプロセッサに請求項１から７のいずれか１項に記載の方法を実行させる命令を格納する非一時的コンピュータ可読媒体。
【請求項９】
クライアントデバイスであって、
少なくとも１つのプロセッサと、
命令を格納するメモリとを有し、前記メモリは、前記少なくとも１つのプロセッサにより実行された場合に、前記少なくとも１つのプロセッサに、
以前のバージョンのディレクトリ構造に対する要求を受信させ、ここで、前記以前のバージョンのディレクトリ構造は、以前の日付に関連付けられ、
前記以前の日付における前記以前のバージョンのディレクトリ構造に含まれるコンテンツアイテムについてコンテンツ管理システムに問い合わせさせ、
前記コンテンツ管理システムから、前記以前の日付における前記以前のバージョンのディレクトリ構造に含まれるコンテンツアイテムの１つ以上の指示を受信させ、
前記コンテンツアイテムの前記１つ以上の指示に基づいて、前記以前の日付における前記以前のバージョンのディレクトリ構造に含まれる前記コンテンツアイテムを表すプレースホルダーを生成させ、ここで、前記プレースホルダーは、現在の日付に関連付けられる、現在のバージョンのディレクトリ構造とは別のものである、
ための命令を含み、
前記１つ以上の指示は、前記コンテンツアイテムに関連する情報である、クライアントデバイス。 
【請求項１０】
請求項９に記載のクライアントデバイスであって、前記メモリは、前記少なくとも１つのプロセッサにより実行された場合に、前記少なくとも１つのプロセッサに、
前記プレースホルダーのうちの対応するプレースホルダーを有するコンテンツアイテムにアクセスするための更なる要求を受信させ、
前記コンテンツアイテムに関連付けられた前記対応するプレースホルダコンテンツアイテムを使用して、前記コンテンツアイテムについて前記コンテンツ管理システムに問い合わせさせ、
前記コンテンツ管理システムから前記コンテンツアイテムを受信させ、
前記以前のバージョンのディレクトリ構造において、前記対応するプレースホルダーの代わりに前記コンテンツアイテムを格納させる、ための追加の命令を有する、クライアントデバイス。
【請求項１１】
請求項１０に記載のクライアントデバイスであって、前記コンテンツアイテムにアクセスするための前記更なる要求は、前記プレースホルダーの少なくとも１つ、または、前記以前のバージョンのディレクトリ構造におけるプレースホルダーに関連付けられた親コンテンツアイテムにナビゲートすることを含む、クライアントデバイス。
【請求項１２】
請求項１０に記載のクライアントデバイスであって、前記コンテンツアイテムにアクセスするための前記更なる要求は、前記以前の日付に存在していた前記コンテンツアイテムを、前記現在の日付を有する別のディレクトリ構造にコピーすることを含む、クライアントデバイス。
【請求項１３】
請求項９から１２のいずれか１項に記載のクライアントデバイスであって、更に、実行された場合に前記少なくとも１つのプロセッサに、
前記以前のバージョンのディレクトリ構造に含まれる親コンテンツアイテム内に格納されるコンテンツアイテムへアクセスするための更なる要求を受信させ、ここで、前記以前のバージョンのディレクト構造は、前記コンテンツアイテムに関連付けられたそれぞれのプレースホルダーを含まず、
前記コンテンツアイテムに関連付けられた前記それぞれのプレースホルダーについて前記コンテンツ管理システムに問い合わせさせ、
前記コンテンツ管理システムから、前記それぞれのプレースホルダーを受信させ、
前記親コンテンツアイテムに関連付けられた前のバージョンのサブディレクトリ構造に含まれるコンテンツアイテムを表すそれぞれのプレースホルダーを生成させ、ここで、前記サブディレクトリ構造における前記それぞれのプレースホルダーは、前記コンテンツアイテムに関連付けられた前記それぞれのプレースホルダーを含み、前記以前のバージョンのサブディレクトリ構造は前記以前の日付に関連付けられる、ための命令を含む、クライアントデバイス。
【請求項１４】
請求項９から１３のいずれか１項に記載のクライアントデバイスであって、前記プレースホルダーは、前記コンテンツアイテムを見つけるためのメタデータを含む、クライアントデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
［関連出願へのクロスリファレンス］
本出願は、２０１６年１２月３０日に出願された、米国特許出願第１５／３９５，２３８号、「プレースホルダーを介したコンテンツ管理システムのアクセス履歴情報」の優先権を主張し、その全体があらゆる目的のために参照により本明細書に組み入れられる。
【０００２】
本技術は、コンテンツ管理システムに格納されているコンテンツアイテムに関し、より詳細には、コンテンツ管理システムに一度に格納されていた履歴コンテンツアイテムを検索することに関する。
【背景技術】
【０００３】
コンテンツ管理システムに関連付けられているオンラインストレージアカウントに格納されているコンテンツアイテムは、ネットワークを介して、１つ以上のクライアントデバイスによってアクセスすることができる。コンテンツ管理システムは、コンテンツアイテムに対する変更、アクセスなどに関するデータを記録するためのサーバファイルジャーナルを含むことができる。特定の状況では、コンテンツアイテムに不要な変更が含まれているか、削除されている可能性がある。例えば、ユーザーがコンテンツアイテムを（意図的にまたは意図せずに）削除した可能性がある。他の例では、ユーザーは（意図的にまたは意図せずに）望ましくない編集を保存している可能性がある。いくつかの例では、ユーザーは、コンテンツアイテムへの共有アクセス権を持つ別のユーザーにとって望ましくない変更（例えば編集または削除）を行った可能性がある。いくつかの例では、ユーザーは、法的、業務上、または個人的な理由で履歴データにアクセスするだけでよい。これらの状況では、ユーザーは、偶然の削除または編集の前の時点にコンテンツアイテムを復元することによって、偶然の削除または編集を回復し、かつ／または過去のデータにアクセスしたいと思うであろう。
【０００４】
現在のシステムは、ユーザーが自分のオンラインストレージアカウント（および関連するコンテンツアイテム）を特定の時点にロールバックすることを可能にする。しかしながら、ロールバックは特定の時点以降のコンテンツアイテムへのいかなる変更も保存せず、履歴コンテンツアイテムにアクセスするための「オールオアナッシング」アプローチである（例えば、ユーザーはオンラインストレージアカウント／ディレクトリ構造全体をロールバックしなければならない）。特定の時点へのアクセスを可能にしながら、現在のオンラインストレージアカウントへの継続的なアクセスを可能にするシステムが望まれる。
【図面の簡単な説明】
【０００５】
本技術の上記およびその他の利点および特徴は、添付の図面に示す特定の実施の形態を参照することにより明らかになるであろう。これらの図面は本技術のいくつかの例を示すにすぎず、本技術の範囲をこれらの例に限定しないことを当業者は理解するであろう。更に、当業者は、添付の図面を使用することにより、さらなる具体性および詳細を伴って説明および説明された本技術の原理を理解するであろう。
【図１】図１はコンテンツ管理システムとクライアントデバイスの例を示す。
【図２】図２は、現時点でコンテンツ管理システムに格納されているコンテンツアイテムの例示的なクライアントインターフェースを示す。
【図３Ａ】図３Ａは、前回にコンテンツ管理システムに格納されたコンテンツアイテムの例示的なクライアントインターフェースを示す。
【図３Ｂ】図３Ｂは、前回にコンテンツ管理システムに格納されたコンテンツアイテムの例示的なクライアントインターフェースを示す。
【図４】図４は、コンテンツ管理システムに格納されたコンテンツアイテムの以前のディレクトリ構造を生成するための例示的な方法のフロー図を示す。
【図５】図５は、コンテンツ管理システムに格納されているコンテンツアイテムの以前のディレクトリ構造からコンテンツアイテムを検索するための例示的な方法のフロー図を示す。
【図６】図６は、本技術の特定の態様を実施するためのシステムの一例を示す。
【発明を実施するための形態】
【０００６】
本技術のさまざまな例について、以下に詳しく論じる。特定の実装について論じているが、これは説明のみを目的として行われていることを理解されたい。当業者は、本技術の趣旨および範囲から逸脱することなく他のコンポーネントや構成が用いられうることを認識するであろう。
【０００７】
開示された技術は、コンテンツアイテムの現在のバージョンへのアクセスを保持しながら、前の時点でコンテンツ管理システムで記憶されたコンテンツアイテムにアクセスする（例えば、見る、コピーする、保存するなど）ための当技術分野における必要性に対処する。ユーザーは、コンテンツ管理システムに関連する彼らのオンラインストレージアカウントに大量のコンテンツアイテムを格納することができる。いくつかの状況では、ユーザーは、コンテンツ管理システムに格納されているコンテンツアイテムを修正（例えば、削除または変更）することができ、後で以前のバージョンのコンテンツアイテムに戻ることを望む。クライアントアプリケーションを使用することによって、ユーザーは、修正されたコンテンツアイテムの所望のバージョンに関連付けられているとユーザーが考える日付（例えば、タイムスタンプ）を入力することができる。次いで、クライアントアプリケーションは、ユーザーがナビゲートすることができるプレースホルダーコンテンツアイテムを有するユーザーの以前のバージョンのアカウント（例えば、ネームスペース（名前空間）／ディレクトリ構造）を生成し、入力した日付の時点のコンテンツアイテムのバージョンを反映する以前のバージョンのコンテンツアイテムを（オンデマンド）検索することができる。以前のバージョンのユーザーアカウントには、完全なネームスペース（ディレクトリ構造など）を含めることも、ネームスペースのサブセットを含めることもできる。いくつかの例では、以前のバージョンのユーザーアカウントは共有ネームスペースにすることができる。共有ネームスペースは、２人目のユーザーにアクセス権を付与した１人目のユーザーのアカウントの１つ以上のコンテンツアイテムにすることができる。例えば、ユーザーＢは、ユーザーＢのユーザーアカウントの１つ以上のコンテンツアイテムをユーザーＡと共有できる。ユーザーＡは、ユーザーＡにアクセス権が付与された以前のバージョンのユーザーＢのユーザーアカウントを生成できる。
【０００８】
プレースホルダーコンテンツアイテムを使用して、以前のバージョンのユーザーのオンラインアカウント（および関連するコンテンツアイテム）を生成することには、いくつかの利点がある。プレースホルダーのコンテンツアイテムは完全なコンテンツアイテムよりもサイズが小さく、ユーザーは自分のローカルコンピュータの余分なスペースを利用することなく以前のバージョンのアカウントにアクセスすることができる。ユーザーは、以前のバージョンのユーザーアカウントに同時にアクセスできる。ユーザーのアカウントの１つまたは複数の以前のバージョンにアクセスするときに、不要な帯域幅の使用もない。例えば、プレースホルダーアイテムが最初に生成され、アクセス時、以前のバージョンのユーザーアカウントは生成されない間に、完全なコンテンツアイテムがダウンロードされる。
【０００９】
いくつかの実施形態において、開示された技術は、とりわけ、コンテンツアイテム同期機能およびコラボレーション機能を有するコンテンツ管理システムの文脈において展開される。システム構成１００の一例を図１に示す。これは、クライアントデバイス１５０と作用するコンテンツ管理システム１１０を含む。
【００１０】
アカウント
【００１１】
コンテンツ管理システム１１０は、アカウントに関連してコンテンツアイテムを格納することができ、ならびにコンテンツアイテムを検索、修正、閲覧、および／または共有することなどの様々なコンテンツアイテム管理タスクを実行することができる。更に、コンテンツ管理システム１１０は、通信ネットワーク１３０（例えば、インターネット、３Ｇ、ＬＴＥなどを含む電話データネットワーク、広域ネットワーク、ローカルエリアネットワーク、仮想ネットワーク、無線ネットワーク等）を介して、アカウントが複数のクライアントデバイスからコンテンツアイテムにアクセスすることを可能にする。
【００１２】
コンテンツ管理システム１１０は複数のアカウントをサポートする。エンティティ（ユーザー、ユーザーのグループ、会社など）は、コンテンツ管理システムを用いてアカウントを作成することができ、アカウントの詳細はアカウントデータベース１４０に格納することができる。アカウントデータベース１４０は、登録エンティティについてのプロファイル情報を格納してもよい。場合によっては、登録済みエンティティのプロファイル情報に、ユーザー名や電子メールアドレス、あるいはその両方が含まれることがある。アカウントデータベース１４０は、アカウントタイプ（例えば、無料または有料アカウントの様々な段階（tiers））、割り当てられた記憶スペース、使用された記憶スペース、登録コンテンツ管理クライアントアプリケーション１５２を有するクライアントデバイス１５０、セキュリティ設定、個人設定といった、アカウント管理情報を含むことができる。
【００１３】
アカウントデータベース１４０は、エンティティに関連付けられたアカウントのグループを格納することができる。グループは、グループポリシーやアクセス制御リスト、あるいはその両方に基づいて権限を持つことができ、グループのメンバーは権限を継承することができる。例えば、マーケティンググループは１つのコンテンツアイテムセットにアクセスでき、エンジニアリンググループは別のコンテンツアイテムセットにアクセスできる。グループの管理者は、グループの変更、ユーザーアカウントの変更などができる。
【００１４】
コンテンツアイテムの格納
【００１５】
コンテンツ管理システム１１０の特徴は、コンテンツストレージ（記憶装置）１４２に記憶することができるコンテンツアイテムの格納である。コンテンツアイテムは、文書、コラボレーションコンテンツアイテム、テキストファイル、オーディオファイル、画像ファイル、ビデオファイル、ウェブページ、実行可能ファイル、バイナリファイル等といった任意のデジタルデータとすることができる。コンテンツアイテムはまた、フォルダ、zipファイル、プレイリスト、アルバム等といった、さまざまな動作を含むコンテンツアイテムをグループ化するためのコレクションまたは他のメカニズムを含むこともできる。コレクションは、フォルダ、または関連する属性によって関連付けられているかグループ化されている複数のコンテンツアイテムを参照できる。いくつかの実施形態では、コンテンツストレージ１４２は、特定の機能を処理するために他の種類のストレージまたはデータベースと組み合わせることができる。コンテンツストレージ１４２はコンテンツアイテムを記憶することができ、コンテンツアイテムに関するメタデータはメタデータデータベース１４６に記憶することができる。同様に、コンテンツアイテム１４２がコンテンツストレージ１４２のどこに格納されているかに関するデータを、コンテンツディレクトリ１４４に格納することができる。更に、変更、アクセスなどに関するデータをサーバファイルジャーナル１４８に格納することができる。コンテンツストレージ１４２、コンテンツディレクトリ１４４、サーバファイルジャーナル１４８、およびメタデータデータベース１４６などの様々なストレージ／データベースのそれぞれは、１つより多いそのようなストレージまたはデータベースから構成することができ、多くのデバイスおよび場所に渡って分散することができる。他の構成もまた可能である。例えば、コンテンツストレージ１４２、コンテンツディレクトリ１４４、サーバファイルジャーナル１４８、および／またはメタデータデータベース１４６からのデータは、１つまたは複数のコンテンツストレージまたはデータベースに結合されてもよく、更に追加のコンテンツストレージまたはデータベースに分割されてもよい。したがって、コンテンツ管理システム１１０は、図１に示すよりも多いまたは少ないストレージおよび／またはデータベースを含み得る。
【００１６】
いくつかの実施形態では、コンテンツストレージ１４２は、コンテンツアイテムの格納場所の選択、ストレージからのコンテンツアイテムの取得等を含むがこれらに限定されない、コンテンツアイテムの格納を管理するためのソフトウェアまたは他のプロセッサ実行可能命令を含む少なくとも１つのコンテンツ管理サービス１２０と関連付けられる。いくつかの実施形態では、コンテンツ管理サービス１２０は、コンテンツストレージ１４２に格納するために、コンテンツアイテムをより小さなデータブロックに分割することができる。コンテンツアイテムを構成する各データブロックの位置は、コンテンツディレクトリ１４４に記録することができる。コンテンツディレクトリ１４４は、コンテンツストレージ１４２に記憶されている各コンテンツアイテムに対するコンテンツエントリを含むことができる。コンテンツエントリは、コンテンツアイテムを識別する一意のＩＤに関連付けることができる。
【００１７】
いくつかの実施形態では、コンテンツディレクトリ１４４内のコンテンツアイテムを識別する一意のＩＤは、決定論的ハッシュ関数から導出することができる。決定論的ハッシュ関数は一般に、同じコンテンツアイテムのすべてのコピーに対して同じ識別子を出力するが、異なるコンテンツアイテムに対しては異なる識別子を出力するので、コンテンツアイテムに対する一意のＩＤを導出するこの方法は、コンテンツアイテムの重複をそのまま認識できる。この方法論を使用して、コンテンツ管理サービス１２０は各コンテンツアイテムに対して一意のＩＤを出力することができる。
【００１８】
コンテンツ管理サービス１２０はまた、コンテンツアイテムに対するコンテンツパスを指定または記録することができる。コンテンツパスはコンテンツアイテムの名前および／またはコンテンツアイテムに関連するフォルダ階層とを含んでもよい。例えば、コンテンツパスは、コンテンツアイテムがクライアントデバイス上のローカルファイルシステムに格納されているフォルダまたはフォルダのパスを含むことができる。コンテンツ管理サービス１２０は、コンテンツパスを使用して、ツリー状のディレクトリ構造などの適切なフォルダ階層でコンテンツアイテムを提示することができる。コンテンツアイテムはブロックでコンテンツストレージ１４２に格納され、ディレクトリ構造のようなツリーの下には記憶されないかもしれないが、そのようなディレクトリ構造はユーザーにとって快適なナビゲーション構造である。コンテンツ管理サービス１２０は、コンテンツアイテムのコンテンツパスを定義または記録することができ、ディレクトリ構造の「ルート」ノードは各アカウントのネームスペースとすることができる。ネームスペース内には、アカウントおよび／またはコンテンツ管理サービス１２０のユーザーによって定義されたディレクトリ構造があり得る。コンテンツディレクトリ１４４は、コンテンツエントリの一部として各コンテンツアイテムのコンテンツパスを格納することができる。
【００１９】
いくつかの実施形態では、ネームスペースは、あたかもそれらがルートノード内に格納されているかのようにディレクトリ構造内に現れる追加のネームスペースを含むことができる。これは、アカウントが共有コレクションにアクセスできるときに発生する可能性がある。共有コレクションは、コンテンツ管理システム１１０内でそれら自身のネームスペースを割り当てることができる。共有コレクションは、実際には共有コレクションのルートノードであるが、ディレクトリ構造内のユーザーアカウントのネームスペースの下位にあり、ユーザーアカウントのフォルダー内のフォルダーとして表示されることがある。上述のように、ディレクトリ構造は、ユーザーにとって快適なナビゲーション構造となり得るが、必ずしもコンテンツストレージ１４２内のコンテンツアイテムの格納位置と相関するわけではない。
【００２０】
アカウントがコンテンツアイテムを閲覧するディレクトリ構造は必ずしもコンテンツ管理システム１１０の格納場所と相関するわけではないが、ディレクトリ構造は一般に、クライアントデバイス１５０によって使用されるファイルシステムに応じてクライアントデバイス１５０の格納場所と相関することができる。
【００２１】
上述のように、コンテンツディレクトリ１４４内のコンテンツエントリは、コンテンツアイテムを構成するデータの各ブロックの位置も含むことができる。より具体的には、コンテンツエントリは、コンテンツアイテムを構成するデータブロックのコンテンツストレージ１４２内の位置を識別するコンテンツポインタを含むことができる。
【００２２】
コンテンツパスおよびコンテンツポインタに加えて、コンテンツディレクトリ１４４内のコンテンツエントリはまた、コンテンツアイテムへのアクセス権を有するユーザーアカウントを識別するユーザーアカウント識別子、および／またはコンテンツアイテムへのアクセス権を有するグループを識別するグループ識別子を含み得る。いくつかの実施形態では、複数のユーザーアカウント識別子が単一のコンテンツエントリに関連付けられてもよく、これは、そのコンテンツアイテムが複数のユーザーアカウントによる共有アクセスを有することを示す。いくつかの実施形態では、単一のコンテンツエントリに関連付けられているユーザーアカウント識別子は、関連付けられているコンテンツアイテムに対して異なる許可を指定することができる。いくつかの実施形態では、コンテンツディレクトリ１４４は、ユーザーアカウントに関連するコンテンツアイテムの階層構造を記述することができ、その階層構造はユーザーアカウントに特有のものである。
【００２３】
コンテンツ管理サービス１２０は、コンテンツアイテムまたはコンテンツアイテムのバージョンを構成する重複コンテンツアイテムまたは重複ブロックを識別することによって必要とされる記憶スペースの量を減らすことができる。複数のコピーを記憶する代わりに、コンテンツストレージ１４２は、コンテンツアイテムの単一のコピーまたはコンテンツアイテムのブロックを記憶することができ、コンテンツディレクトリ１４４は複製を単一のコピーにリンクするためのポインタまたは他の機構を含むことができる。
【００２４】
コンテンツ管理サービス１２０は、コンテンツアイテム、コンテンツアイテムタイプ、フォルダ、ファイルパス、タイムスタンプ、サイズ、属性、および／またはコンテンツアイテムとさまざまなアカウント、コレクション、またはグループとの関係を記述するメタデータを、コンテンツアイテムの一意のＩＤとの関連付けて、メタデータデータベース１４６に格納することもできる。
【００２５】
コンテンツ管理サービス１２０はまた、変更、アクセスなどに関するデータのログをサーバファイルジャーナル１４８に格納することもできる。サーバファイルジャーナル１４８は、タイムスタンプまたはバージョン番号、および他の任意の関連データと共に、コンテンツアイテムの一意のＩＤおよび変更またはアクセス動作の説明を含むことができる。サーバファイルジャーナル１４８はまた、変更またはコンテンツアイテムアクセスによって影響を受けるブロックへのポインタを含むことができる。コンテンツ管理サービスは、コンテンツアイテムへの変更、異なるバージョンのコンテンツアイテム（異なるバージョンツリーを含む）、およびサーバーファイルジャーナル１４８から取得できる変更履歴を追跡するコンテンツアイテムバージョン管理サービスを使用することによって、操作を元に戻す機能を提供できる。変更履歴は、元のコンテンツアイテムのバージョンにいつ適用したか、変更されたコンテンツアイテムのバージョンをいつ生成したかについての１セットの変更を含み得る。
【００２６】
コンテンツアイテムの同期
【００２７】
コンテンツ管理システム１１０の他の特徴は、少なくとも１つのクライアントデバイス１５０とのコンテンツアイテムの同期である。クライアントデバイスは、さまざまな形式を取り、さまざまな機能を持つことができる。例えば、クライアントデバイス１７０は、デバイス上で実行されている複数のアプリケーションによってアクセス可能なローカルファイルシステムを有するコンピューティングデバイスである。クライアントデバイス１７２は、コンテンツアイテムが特定のアプリケーションまたは特定のアプリケーションによって与えられた許可によってのみアクセス可能であり得るコンピューティングデバイスであり、コンテンツアイテムはアプリケーション固有のスペースおよび／またはリモートネットワークに格納され得る。クライアントデバイス１７４は、ウェブブラウザを介してコンテンツ管理システム１１０にアクセスし、ウェブインターフェースを介してコンテンツアイテムにアクセスする任意のクライアントデバイスである。例示的なクライアントデバイス１７０、１７２、および１７４は、ラップトップ、モバイルデバイス、またはウェブブラウザなどのフォーム（形状）ファクタで描かれているが、これらの説明は、クライアントデバイスをこれらのフォームファクタに限定しないことを理解されたい。例えば、クライアントデバイス１７２などのモバイルデバイスは、デバイス上で実行されている複数のアプリケーションによってアクセス可能なローカルファイルシステムを有することができ、またはクライアントデバイス１７２はウェブブラウザを介してコンテンツ管理システム１１０にアクセスすることができる。そのため、クライアントデバイス１５０の機能を検討する際に、フォームファクタが限定的であると考えるべきではない。クライアントデバイス１５０に関して本開示に記載されている１つまたは複数の機能は、デバイスの特定の機能に応じてすべてのクライアントデバイスで利用可能である場合もあれば、そうでない場合もある。ファイルアクセスモデルはそのような機能の１つである。
【００２８】
多くの実施形態では、クライアントデバイスはコンテンツ管理システム１１０のアカウントに関連付けられているが、いくつかの実施形態では、クライアントデバイスは共有リンクを使用してコンテンツにアクセスすることができ、アカウントを必要としない。
【００２９】
上述のように、いくつかのクライアントデバイスはウェブブラウザを使用してコンテンツ管理システム１１０にアクセスすることができる。しかしながら、クライアントデバイスはまた、クライアントデバイス１５０に格納され実行されているクライアントアプリケーション１５２を使用してコンテンツ管理システム１１０にアクセスすることができる。クライアントアプリケーション１５２は、コンテンツアイテム同期サービス１５６を含み得る。
【００３０】
コンテンツアイテム同期サービス１５６は、クライアントデバイス１５０とコンテンツ管理システム１１０との間でコンテンツアイテムに対する変更を同期させるためにコンテンツ管理サービス１２０と通信することができる。
【００３１】
クライアントデバイス１５０は、コンテンツ同期サービス１５６を介してコンテンツをコンテンツ管理システム１１０と同期させることができる。同期はプラットフォーム不可知的であってもよい。すなわち、コンテンツは、様々なタイプ、機能、オペレーティングシステムなどの複数のクライアントデバイスに渡って同期することができる。コンテンツ同期サービス１５６は、任意の変更（新規、削除、修正、コピー、または移動）を、クライアントデバイス１５０のファイルシステムの指定の場所におけるコンテンツアイテムに同期させることができる。
【００３２】
コンテンツアイテムは、クライアントデバイス１５０からコンテンツ管理システム１１０へ、およびその逆に同期させることができる。クライアントデバイス１５０がコンテンツアイテムのコンテンツ管理システム１１０との同期を開始する実施形態では、ユーザーはクライアントデバイス１５０のファイルシステムから直接コンテンツアイテムを操作することができ、ファイルシステム拡張１５４（ローカルファイルシステムと、あるいは、オペレーティングシステムカーネルでさえも、統合することができる）は、クライアントデバイス１５０のファイルシステムの指定された場所にあるコンテンツアイテムに関する読み取り、書き込み、コピー、移動、削除のコマンドを解釈することができる。
【００３３】
ファイルシステム拡張機能１５４が書き込み、移動、コピー、または削除コマンドを検出すると、それはコンテンツアイテム同期サービス１５６に通知することができ、それは変更をコンテンツ管理システムサービス１２０に同期させることができる。いくつかの実施形態では、コンテンツアイテム同期サービス１５６は、コンテンツアイテムをブロックに分割すること、コンテンツアイテムをハッシュして一意の識別子を生成すること等、上述した機能を含むコンテンツ管理システムサービス１２０のいくつかの機能を実行できる。コンテンツ同期サービス１５６は、クライアントストレージインデックス１６０内のコンテンツにインデックスを付け、その結果をストレージインデックス１６０に保存することができる。インデックス付けは、各コンテンツアイテムに対して一意の識別子を作成することを含むことができる。いくつかの実施形態では、コンテンツ同期サービス１５６は、コンテンツアイテムのデータ（例えば、ファイル名および／または他のメタデータを除いて）をハッシュ関数にかけることによってこの一意の識別子を作成する。上述のように、コンテンツ管理システムは、コンテンツ管理システム１１０上のコンテンツに識別子を提供するために同様のプロセスを使用することができる。コンテンツ同期サービス１５６は、ストレージインデックス１６０を使用して、クライアントストレージ内のコンテンツの少なくとも一部とコンテンツ管理システム１１０上のユーザーアカウントに関連するコンテンツとの同期を容易にすることができる。例えば、コンテンツ同期サービス１５６は、ストレージインデックス１６０をコンテンツ管理システム１１０と比較し、クライアントストレージ上のコンテンツとコンテンツ管理システム１１０上のユーザーアカウントに関連するコンテンツとの間の差異を検出することができる。次いで、コンテンツ同期サービス１５６は、必要に応じてクライアントストレージ上のコンテンツをアップロード、ダウンロード、修正、および／または削除することによって差異を調整しようと試みることができる。コンテンツ管理サービス１２０は、コンテンツアイテムのための変更されたブロックまたは新しいブロックを格納し、サーバファイルジャーナル１４８、メタデータデータベース１４６、コンテンツディレクトリ１４４、コンテンツストレージ１４２、アカウントデータベース１４０などを適宜更新することができる。
【００３４】
コンテンツ管理システム１１０からクライアントデバイス１５０にコンテンツを同期させるとき、サーバファイルジャーナル１４８に記録されたコンテンツアイテムの修正、追加、削除、および／または移動は、通知サービス１２２を使用してクライアントデバイス１５０への通知の配信をトリガし得る。クライアントデバイス１５０がサーバファイルジャーナル１４８への変更の通知を受信すると、クライアントデバイス１５０はストレージインデックス１６０をチェックして、最後の同期以降に変更のタイムスタンプが発生したかどうか、または特定の変更が同期されたかどうかを判断できる。クライアントデバイス１５０がコンテンツ管理システム１１０と同期していないと判断すると、コンテンツアイテム同期サービス１５６は変更を含むコンテンツアイテムブロックを要求することができ、クライアントデバイス１５０は変更されたコンテンツアイテムのローカルコピーを更新することができる。いくつかの実施形態では、通知サービス１２２は、通知のためのより多くのコンテキストを得るため、通知を別の通知とバッチ処理できるかどうかを判断するため、または通知を補足するため等のために、サーバファイルジャーナル１４８といったコンテンツ管理システム１１０の他のサービスまたはデータベースに問い合わせることができる。
【００３５】
クライアントデバイス１５０は、利用可能なネットワーク接続を有さない場合がある。このシナリオでは、コンテンツアイテム同期サービス１５６は、コンテンツアイテムの変更に対してリンクされたコレクションを監視し、ネットワーク接続が可能になった際のコンテンツ管理システム１１０への後の同期のために、これらの変更をキューに入れることができる。同様に、ユーザーは、コンテンツ管理システム１１０との同期を手動で開始、停止、一時停止、または再開することができる。
【００３６】
コンテンツアイテム同期サービス１５６は、コンテンツ管理システム１１０上の特定のユーザーアカウントに関連するすべてのコンテンツを同期させることができる。あるいは、コンテンツアイテム同期サービス１５６は、コンテンツ管理システム１１０上の特定のユーザーアカウントに関連する全コンテンツのコンテンツの一部を選択的に同期させることができる。コンテンツの一部のみを選択的に同期させることは、そうでなければすべてのコンテンツを同期させることによって消費されるであろう処理、メモリ、ストレージ、およびネットワークリソースを減らすことによってクライアントデバイス１５０上のスペースを節約し、クライアントデバイス１５０およびコンテンツ管理システム１１０の性能を改善し得る。
【００３７】
いくつかの実施形態では、コンテンツアイテム同期サービス１５６は、特定のユーザーアカウントに関連付けられたコンテンツの一部を選択的に格納し、コンテンツの残りの部分についてプレースホルダーコンテンツアイテムをクライアントストレージに格納する。例えば、コンテンツアイテム同期サービス１５６は、それぞれの完全なコンテンツアイテムの同じファイル名、パス、拡張子、メタデータを有するが、完全なコンテンツアイテムのデータを欠いているプレースホルダーコンテンツアイテムを格納することができる。プレースホルダーコンテンツアイテムのサイズは数キロバイト以下にすることができるが、それぞれの完成したコンテンツアイテムはかなり大きくなる可能性がある。クライアントデバイス１５０がコンテンツアイテムへのアクセスを試みた後、コンテンツアイテム同期サービス１５６は、コンテンツ管理システム１１０からコンテンツアイテムのデータを検索し、アクセスしているクライアントデバイス１５０に完全なコンテンツアイテムを提供することができる。このアプローチは、コンテンツ管理システム１１０上のユーザーのコンテンツへのフルアクセスを依然として提供しながら、スペースおよび帯域幅を大幅に節約することができる。
【００３８】
コラボレーション機能
【００３９】
コンテンツ管理システム１１０の他の特徴は、ユーザー間のコラボレーションを容易にすることである。コラボレーション機能には、コンテンツアイテムの共有、コンテンツアイテムへのコメント、コンテンツアイテムへの共同作業、インスタントメッセージング、コンテンツアイテムに関するプレゼンスおよび視聴状態情報の提供などが含まれる。
【００４０】
共有
【００４１】
コンテンツ管理システム１１０は、共有サービス１２８を介してコンテンツの共有を管理することができる。コンテンツ管理システム１１０のアカウントは、コンテンツへのリンクを提供することによって互いにコンテンツを共有することができる。次いで、共有サービス１２８は、コンテンツ管理システム１１０とネットワーク通信している任意のコンピューティングデバイスから共有コンテンツアイテムへのアクセスを提供することができる。しかしながら、いくつかの実施形態では、リンクは、コンテンツ管理システム１１０によって実施されるアクセス制限と関連付けることができる。共有サービス１２８はまた、各ユーザーアカウントがコンテンツアイテムへのアクセスを有するように、アカウントが（コンテンツアイテムに関連付けられた元のユーザーアカウントに加えて）少なくとも１つの追加のユーザーアカウントと共有コンテンツを共有することを可能にすることによって、コンテンツ管理システム１１０内のコンテンツの間接共有を容易にする。追加のユーザーアカウントは、コンテンツを受け入れることによってコンテンツにアクセスすることができ、そのコンテンツは、ウェブインターフェースサービス１２４またはクライアントデバイス１５０上の追加のユーザーのアカウントに関連するディレクトリ構造を介してアクセス可能になる。当該共有は、プラットフォームが不可知の態様でなされてもよい。つまり、コンテンツは種々の種別、性能、オペレーティングシステムなどの複数のクライアントデバイス１５０に渡って共有されてもよい。当該コンテンツはまた、ユーザーアカウントの種々の種別に渡って共有されてもよい。
【００４２】
コンテンツ管理システム１１０内でコンテンツアイテムを共有するために、共有サービス１２８は、そのコンテンツアイテムに関連するアクセス制御リストデータベース１４５内のコンテンツエントリにユーザーアカウント識別子を追加することができ、したがって追加されたユーザーアカウントにコンテンツアイテムへのアクセスを許可する。共有サービス１２８はまた、コンテンツエントリからユーザーアカウント識別子を削除して、ユーザーアカウントのコンテンツアイテムへのアクセスを制限することができる。共有サービス１２８は、コンテンツアイテム識別子、コンテンツアイテムへのアクセスを与えられたユーザーアカウント識別子、およびアクセスレベルをアクセス制御リストデータベース１４５に記録することができる。
【００４３】
コンテンツ管理システム１１０の外部でコンテンツアイテムを共有するために、共有サービス１２８は、ユニフォームリソースロケータ（ＵＲＬ）のようなカスタムネットワークアドレスを生成することができ、これは任意のウェブブラウザがコンテンツ管理システム１１０のコンテンツアイテムまたはコレクションに認証なしにアクセスすることを可能にする。これを達成するために、共有サービス１２８は生成されるＵＲＬにコンテンツ特定データを含んでもよい。コンテンツ特定データは、後に、要求されたコンテンツアイテムを適切に特定して返すために使用されてもよい。例えば、共有サービス１２８は、生成されたＵＲＬにアカウント識別子およびコンテンツパスまたはコンテンツアイテム識別コードを含めることができる。ＵＲＬを選択すると、ＵＲＬに含まれるコンテンツ識別データをコンテンツ管理システム１１０に送信することができる。次いで、コンテンツ管理システム１１０は、受信したコンテンツ識別データを使用して適切なコンテンツアイテムを識別し、そのコンテンツアイテムを返すことができる。
【００４４】
ＵＲＬを生成することに加えて、共有サービス１２８はまた、アクセス制御リストデータベース１４５にそのＵＲＬ、またはそのＵＲＬが存在することを記録することができる。いくつかの実施形態では、コンテンツアイテムに関連付けられたコンテンツエントリは、そのコンテンツアイテムへのＵＲＬが生成されたか否かを示すＵＲＬフラグを含んでもよい。例えば、ＵＲＬフラグは、コンテンツアイテムへのＵＲＬがまだ生成されていないことを示すために最初に０または偽（false）に設定されるブール値であってもよい。共有サービス１２８は、コンテンツアイテムへのＵＲＬを生成した後はフラグの値を１または真（true）に変更することができる。
【００４５】
いくつかの実施形態では、共有サービス１２８は、１セットの許可をコンテンツアイテムのＵＲＬに関連付けることができる。例えば、ユーザーがＵＲＬを介してコンテンツアイテムにアクセスしようと試みると、共有サービス１２８は、コンテンツアイテムに対して限定された１セットの許可を提供することができる。制限付き許可の例には、ユーザーがコンテンツアイテムをダウンロードすること、コンテンツアイテムを保存すること、コンテンツアイテムをコピーすること、コンテンツアイテムを修正することなどができないという制限が含まれる。いくつかの実施形態では、制限付きの許可は、コンテンツアイテムが特定のドメイン内から、例えば企業ネットワークドメイン内から、または特定のドメインに関連するアカウント、例えば企業アカウント（例えば＠acme.com）に関連するアカウントによってのみアクセスされることを許可する制限を含む。
【００４６】
いくつかの実施形態では、共有サービス１２８は、生成されたＵＲＬを非アクティブ化するか、そうでなければコンテンツアイテムを共有解除することもできる。例えば、各コンテンツエントリは、コンテンツがまだ共有されているかどうかを示すアクティブ共有フラグを含むこともでき、アクティブ共有フラグが１または真に設定されている場合にのみ共有サービス１２８は要求コンテンツアイテムを返すことができる。したがって、以前に共有されたコンテンツアイテムへのアクセスは、アクティブ共有フラグの値を変更することによって制限することができる。これにより、ユーザーは、コンテンツアイテムを移動したり、生成されたＵＲＬを削除したりする必要なしに、共有コンテンツアイテムへのアクセスを制限することができる。したがって、ユーザーは、新しい共有メカニズム、例えば新しいＵＲＬを生成する必要なしに、コンテンツアイテムへのアクセスを容易に復元することができる。
【００４７】
いくつかの実施形態では、コンテンツ管理システム１１０は、コンテンツアイテムをアップロードするための、ＵＲＬなどの場所を指定することができる。例えば、第１のユーザーアカウントは、共有サービス１２８からアップロード場所を要求し、そのアップロード場所を第２のユーザーアカウント（または場合によっては他のユーザー）に提供することができる。第２のユーザーアカウントまたは他のユーザーは、アップロード場所を使用してコンテンツアイテムを第１のユーザーアカウントにアップロードすることができる。
【００４８】
共有コンテンツアイテムとのインタラクションの監視
【００４９】
いくつかの実施形態では、コンテンツ管理システム１１０は、共有コンテンツアイテムとのユーザーインタラクション（対話／相互作用）についての情報を提供することができる。いくつかの実施形態では、コンテンツ管理システム１１０は、ユーザーが現在共有コンテンツアイテムを見ていることを報告することができる。例えば、クライアントコラボレーションサービス１５８は、いずれか１つのクライアントデバイスが共有コンテンツアイテムにアクセスするときに、共有コンテンツアイテムにアクセスする他のクライアントデバイスに通知を送信するように通知サービス１２２を要求することができる。通知サービス１２２は、次いで、１つのクライアントデバイスによる共有コンテンツアイテムへのアクセスに関してすべてのクライアントデバイスに通知することができる。いくつかの実施形態では、インタラクションデータはまた、１つのクライアントデバイスを所有および／または操作しているユーザーの存在の代理として機能することができる。
【００５０】
いくつかの実施形態では、コンテンツ管理システム１１０は、共有コンテンツアイテムとのユーザーインタラクションの履歴を報告することができる。コラボレーションサービス１２６は、メタデータデータベース１４６およびサーバファイルジャーナル１４８などのデータソースに問い合わせて、ユーザーアカウントがコンテンツアイテムを保存したこと、ユーザーアカウントがまだコンテンツアイテムにアクセスしていないこと等を判断し、通知サービス１２２を使用してこの情報を他のユーザーアカウントに広め、どのユーザーアカウントが共有コンテンツアイテムと作用した（またはしなかった）かを判断する。
【００５１】
いくつかの実施形態において、コラボレーションサービス１２６は、コンテンツアイテムがコメント機能を本来サポートしていない場合でも、コンテンツに関連するコメントを容易にすることができる。そのようなコメントは、メタデータデータベース１４６に格納されてもよい。
【００５２】
いくつかの実施形態では、コラボレーションサービス１２６は、ユーザーへの通知を発信および送信することができる。例えば、第１のユーザーは、コメント内の第２のユーザーに言及することができ、コラボレーションサービス１２６は、彼がコメント内で言及されたという通知を第２のユーザーに送信することができる。コンテンツアイテムの削除、コンテンツアイテムの共有など、他のさまざまなコンテンツアイテムイベントが通知をトリガできる。
【００５３】
一般に、コラボレーションサービス１２６は、ユーザーがインスタントメッセージ、音声通話、電子メールなどを送受信することができるメッセージングプラットフォームを提供することができる。
【００５４】
コラボレーションコンテンツアイテム
【００５５】
コラボレーションサービス１２６はまた、ユーザーがコラボレーションコンテンツアイテムに同時に変更を加えること、コラボレーションコンテンツアイテムに関するコメントを提供すること、コラボレーションコンテンツアイテムに関連するタスクを管理することなどができるインタラクティブコンテンツアイテムコラボレーションプラットフォームを提供することもできる。これらのコラボレーションコンテンツアイテムは、ユーザーアカウントがコンテンツアイテムエディタを使用して作成および編集できるファイルにすることができ、コラボレーションを有効にするための要素を含めることができる。これらのコラボレーション要素は、コラボレーション識別子、１つまたは複数の作者および／または編集者識別子、コラボレーションテキスト、コラボレーション属性、インタラクション情報、コメント、共有ユーザー等を含むことができる。コラボレーション要素は、コラボレーションコンテンツアイテムのサーチおよび検索を可能にするためにデータベースエンティティに格納することができる。複数のユーザーアカウントが、コラボレーションコンテンツアイテムに同時にアクセスしたり、それらを表示したり、編集したりすることができる。いくつかの実施形態では、これは、２人のユーザーがコラボレーションコンテンツアイテムの同じコピーに同時に取り組むことを可能にするウェブインターフェースを介して管理することができる。
【００５６】
コラボレーションコンパニオンインターフェイス
【００５７】
いくつかの実施形態では、クライアントコラボレーションサービス１５８は、クライアントデバイス１５０上に提示されているコンテンツアイテムに関連する情報を表示する目的で、ネイティブアプリケーションコンパニオンインターフェースを提供することができる。いくつかの実施形態では、特定のコンテンツアイテムは、クライアントデバイス１５０上に格納され実行されるネイティブアプリケーションによってアクセスされ、コンテンツアイテムはクライアントアプリケーション１５０によって管理されるようにクライアントデバイス１５０のファイルシステムの指定位置にある。すなわち、ネイティブアプリケーションは、上記のアドレス指定されたコラボレーションデータを表示するためのいかなるネイティブの方法も提供し得ない。そのような実施形態では、クライアントコラボレーションサービス１５８は、ユーザーがコンテンツアイテムを開いたことを検出することができ、コラボレーションデータなどのコンテンツアイテムに関する追加の情報を含むオーバーレイを提供することができる。例えば、追加の情報は、コンテンツアイテムに対するコメント、コンテンツアイテムのステータス、他のユーザーによるコンテンツアイテムとのインタラクション等を含むことができる。そのようなオーバーレイは、別のユーザーが現在コンテンツアイテムを編集中であるために変更が失われる可能性があることをユーザーに警告することができる。
【００５８】
いくつかの実施形態では、上で論じたサービスまたはストレージ／データベースのうちの１つまたは複数に、パブリックまたはプライベートのアプリケーションプログラミングインターフェースを使用してアクセスすることができる。
【００５９】
所定のソフトウエアアプリケーションは、ユーザーアカウントの代わりに、ＡＰＩを介してコンテンツストレージ１４２にアクセスすることができる。例えば、クライアントデバイス１５０上で実行されているアプリケーションなどのソフトウェアパッケージは、ユーザーアカウントが認証証明書を提供するときに、コンテンツ管理システム１１０に直接ＡＰＩコールを行い、読み取り、書き込み、作成、削除、共有、またはその他のコンテンツ操作を行うことができる。
【００６０】
ユーザーは、ウェブインターフェースサービス１２４によって生成され提供されるウェブインターフェースを使用して、コンテンツを視たり操作したりするためにユーザーアカウントを利用することができる。例えば、ユーザーは、ウェブブラウザ内で、コンテンツ管理システム１０６によって提供されるユーザーアカウントに関連するウェブアドレスへと辿り着くことができる。新しいバージョンのコンテンツアイテムをアップロードするなど、ウェブインターフェースサービス１２４を介して行われたコンテンツストレージ１４２内のコンテンツに対する変更または更新は、そのユーザーアカウントに関連付けられた他のクライアントデバイスに伝播させることができる。例えば、それぞれが独自のクライアントソフトウェアを有する複数のクライアントデバイスを単一のアカウントに関連付けることができ、アカウント内のコンテンツアイテムを複数のクライアントデバイスのそれぞれの間で同期させることができる。
【００６１】
クライアントデバイス１５０は、ユーザーアカウントに代わってコンテンツ管理システム１１０に接続することができる。ユーザーアカウントのユーザーは、例えばクライアントデバイス１５０がデスクトップまたはラップトップコンピュータ、電話、テレビ、インターネットオブシングス（モノのインターネット）デバイス等であるときに、クライアントデバイス１５０と直接的にインタラクションすることができる。代替的に又は追加的に、例えばクライアントデバイス１５０がサーバである場合、クライアントデバイス１５０は、ユーザーがクライアントデバイス１５０に物理的にアクセスすることなくユーザーアカウントの代わりに行動することができる。
【００６２】
クライアントデバイス１５０のいくつかの機能は、クライアントデバイス１５０にインストールされたアプリケーションによって可能にされる。いくつかの実施形態では、アプリケーションはコンテンツ管理システム用のコンポーネントを含むことができる。例えば、コンテンツ管理システム固有のコンポーネントは、クライアントアプリケーション１５２（例えばスタンドアロンアプリケーション）、１つまたは複数のアプリケーションプラグイン、および／またはブラウザ拡張機能とすることができる。しかしながら、ユーザーはまた、クライアントデバイス１５０上に存在し、コンテンツ管理システム１１０と通信することが可能である、ウェブブラウザ、ワードプロセッサ、スプレッドシートプログラム、プレゼンテーションプログラム、ソースコード管理ツール等のようなサードパーティアプリケーションを介してコンテンツ管理システム１１０とインタラクションすることができる。様々な実装形態では、クライアントアプリケーション１５２は、ユーザーがコンテンツ管理システム１１０とインタラクションするためのユーザーインターフェース（ＵＩ）を提示することができる。例えば、ユーザーは、ファイルシステムと統合されたファイルシステム拡張機能１５４を介して、またはウェブブラウザアプリケーションを使用して表示されたウェブページを介してコンテンツ管理システム１１０とインタラクションすることができる。
【００６３】
いくつかの実施形態では、クライアントアプリケーション１５２は、コンテンツ管理システム１１０の複数のアカウントについてコンテンツを管理し同期させることができる。そのような実施形態では、クライアントアプリケーション１５２は、複数のアカウントにログインしたままであり、複数のアカウントに通常のサービスを提供することができる。いくつかの実施形態では、各アカウントはファイルシステム内のフォルダとして出現することができ、そのフォルダ内のすべてのコンテンツアイテムはコンテンツ管理システム１１０と同期することができる。いくつかの実施形態では、クライアントアプリケーション１５２は、プライマリアカウントまたはデフォルトアカウントとなるように複数のアカウントのうちの１つを選択するためのセレクタを含むことができる。
【００６４】
本開示は特定の構成要素を有するコンテンツ管理システム１１０を提示するが、システム１００のアーキテクチャ構成は単に１つの可能な構成であり、より多いまたはより少ない構成要素を有する他の構成も可能であることを当業者は理解するであろう。更に、サービスは、他のサービスに関連付けられていると説明されている機能を含めて、より多いまたは少ない機能を有することができる。更に、特定の実施形態に関して本開示に記載されている特徴は、別の実施形態に関して説明されている特徴と組み合わせることができる。
【００６５】
システム１００には特定の構成要素が提示されているが、システム１００のアーキテクチャ構成は単に１つの可能な構成であり、それより多いまたは少ない構成要素を有する他の構成も可能であることを当業者は理解するであろう。
【００６６】
図２は、進行中の（current）時刻（例えば現在（present）時刻）においてコンテンツ管理システム（例えば図１のコンテンツ管理システム１１０）に記憶されているコンテンツアイテムの例示的なクライアントアプリケーションインターフェース２００を示す。クライアントアプリケーションインターフェース２００は、コンテンツ管理システム１１０とインタラクションするためにクライアントデバイス１５０にインストールされたクライアントアプリケーション２０２の一部とすることができる。クライアントアプリケーション２０２は、クライアントデバイス１５０のファイルシステムに統合することができ、またはスタンドアロンアプリケーションとして実装することができる。図２の例では、コンテンツ管理システムに関連するユーザーアカウントのユーザー２０８（例えば、User A（ユーザーＡ））は、（ナビゲーションペイン（pane）２０６に示すように）ユーザーのデスクトップコンピュータであるクライアントデバイス１７０上のクライアントアプリケーション２０２を操作する。クライアントアプリケーション２０２は、ユーザーアカウント２１２（例えば、User AのCMSアカウント）に格納されているコンテンツアイテムをリストする詳細ペイン２０４を含むことができる。例えば、詳細ペイン２０４は、（ユーザーのデスクトップ１７０に）ローカルに格納され、コンテンツ管理システム（例えば、コンテンツ管理システム１１０）と同期されているコンテンツアイテムをリストすることができる。詳細ペインは、少なくともコンテンツアイテムの名前（Name）（例えば、Roo ２２０、Milo ２２２、Research ２２４、Resume.doc ２２６、imogen.jpg ２２８、JohnWick.mp4 ２３０）、コンテンツアイテムが修正された日付（Data Modified）、およびコンテンツアイテムの種類（Type）（フォルダ、文書、画像、ビデオなど）を含むことができる。
【００６７】
更に図２を参照する。図２に示すように、クライアントアプリケーション２０２は時間内に最新のものであり得る。例えば、クライアントアプリケーション２０２は、ユーザーアカウント（例えば、User AのCMS）からのコンテンツアイテムの最新の修正、追加、および削除を含むことができる。クライアントアプリケーション２０２は、「戻る（go back）」ペイン２５０を含むことができる。「戻る」ペインは、ユーザーが現在の時間および／または日付より前の日付（例えば、タイムスタンプ）を入力して、コンテンツ管理システムのユーザーのアカウントに格納されている、以前のバージョンのコンテンツアイテムを表示することを可能にする（図４に示すように）。日付は、ユーザーによる手動入力、カレンダからの選択、ユーザーに提供される特定の日付の選択、コンテンツアイテムが生成された重要な日付の生成されたリストからの選択を含むがこれらに限定されない様々な方法で入力できる。ここで、コンテンツアイテム（例えば、ファイル、ディレクトリ等）は重要な更新等を経たものである。日付には、年、日、月の任意の組み合わせ、月と年等のような様々な形式があるが、これらに限定されない。
【００６８】
図３Ａおよび図３Ｂは、前回（例えば、2016年11月5日）にコンテンツ管理システム（例えば、図１のコンテンツ管理システム１１０）に格納されているコンテンツアイテムのクライアントアプリケーションインターフェース３００および３５０の例を示す。図３Ａを参照すると、ユーザーが「戻る」ペイン２５０に日付を入力した後（例えば、November 5, 2015（2015年11月5日））、以前のバージョンのユーザーＡのユーザーアカウント（例えば、ネームスペース、ディレクトリ構造など）を生成することができる（例えば、図４と図５に関して説明したようなプレースホルダーコンテンツアイテムを使用することによって）。例えば、ナビゲーションペイン２０６に示すように、ユーザーアカウント３４０（例えば、CMS-11-5-15）を作成することができる。詳細ペイン２０４は、入力された時間（例えば、2016年11月5日）に以前のバージョンのコンテンツアイテムをリストすることができる。例えば、ユーザーによって入力された「戻る」日付（例えば、2015年11月5日）の前の最も最近修正されたバージョン。例えば、フォルダ３２０（例えば、Roo）は、最後に（2015年11月5日の前の）2015年10月2日に修正された。ユーザーアカウント２１２（例えばUser AのCMS）において、フォルダ３２０（例えばRoo）は最も最近（図２に示すように）、2017年10月4日に修正された。
【００６９】
更に図３Ａを参照すると、ビデオファイル３３２（例えば、Matrix.mp4）は、2015年11月5日より前にユーザーのアカウントに格納されていたが、その後、現時点のユーザーアカウントの前に削除された（図２に示すように）。コンテンツアイテムは図３Ａにリストされていないが、図２の現在の時間のユーザーアカウントにリストされているため、フォルダ２２４（例えば、Research）、ドキュメント２２６（例：Resume.doc）、画像２２８（imogen.jpg）、およびビデオ２３０（例えば、JohnWick.mp4）はすべて、2015年11月5日以降のユーザーのアカウントに格納されている。図３Ｂを参照すると、フォルダ３３２（例えば、Milo）は、下層のコンテンツアイテム（例えば、フォルダ３３４およびテキストファイル３３６）を示すために拡張することができる。下層のコンテンツアイテムは、コンテンツアイテムの以前のバージョンのディレクトリ構造の作成時に生成されたプレースホルダーコンテンツアイテム、またはフォルダ３３２（例えば、Milo）がアクセスされたときに生成されたプレースホルダーコンテンツアイテムとすることができる。下層のコンテンツは、オンデマンドでコンテンツ管理システム１１０から（例えば、完全に）ダウンロードすることができる。
【００７０】
図４に示す方法は、方法を実行するための様々な方法があることから、例として提供される。更に、例示的な方法は特定の順序のブロックを用いて示されているが、当業者であれば、図４および図４に示されるブロックは、本開示の技術的利点を達成する任意の順序で実行することができ、図示されているよりも少ないまたは多いブロックを含むことができることを理解するであろう。
【００７１】
図４に示す各ブロックは、例示の方法で実行される１つまたは複数のプロセス、方法、またはサブルーチンを表す。図４に示すブロックは、図１に示すシステム１００、および、図２、３Ａ、および３Ｂに示すクライアントアプリケーション２００といったシステムで実施することができる。図４に示すフローチャートは、少なくとも、図１に示すシステム１００、および、図２、３Ａ、および３Ｂに示すクライアントアプリケーション２００の要素に関連して説明され、それらを参照する。
【００７２】
図４は、コンテンツ管理システムに格納されたコンテンツアイテムの以前のディレクトリ構造を生成するための例示的な方法４００のフロー図を示す。方法４００はブロック４１０から開始する。ブロック４１０では、クライアントアプリケーションは、以前のバージョンのユーザーアカウントのディレクトリ構造に対する要求を受け取ることができる。例えば、ユーザー２０８（例えば、User A）は、戻るペイン２５０に日付（例えば、November 5, 2015（2015年11月5日））を入力して送信することができる。要求は、ユーザー２０８の識別情報（例えば、ユーザー識別子、ネームスペース識別子など）と共に日付を含むことができる。いくつかの例では、要求はコンテンツアイテムのための特定のディレクトリ（例えば、図３Ｂに示される最上位ディレクトリのサブディレクトリ）を含むことができる。
【００７３】
ブロック４２０において、クライアントアプリケーションは、提供された日付における以前のバージョンのユーザーアカウントのコンテンツアイテムについて問い合わせることができる。例えば、クライアントアプリケーション２０２は、日付および要求からの識別情報に基づいて、ユーザーアカウントの１つまたは複数のコンテンツアイテムについて、１つまたは複数の要求をコンテンツ管理システム１１０のサーバファイルジャーナル１４８に送信することができる。要求を受信すると、サーバファイルジャーナルは、日付を満たす１つまたは複数のコンテンツアイテムおよび要求からの識別情報を決定することができる。
【００７４】
ブロック４３０において、クライアントアプリケーションは、提供された（およびユーザーアカウント３４０として示された）日の前の、（ユーザー２０８の）ユーザーアカウント２１２のコンテンツアイテムの指示（インジケーション／指標）を受信する（受け取る）ことができる。例えば、クライアントアプリケーション２０２は、フォルダ３２０（例えば、Roo）、フォルダ３２２（例えば、Milo）、画像３２８（例えば、imogen.jpg）、およびビデオ３３２（例えば、Matrix.mp4）がユーザーアカウント３４０（User AのCMS、ユーザーのネームスペース等）の最上位ディレクトリに格納されたコンテンツアイテムであるという指示を受け取ることができる。いくつかの例では、指示は、コンテンツアイテムに関連する情報であり得るが、完全なコンテンツアイテムではない（例えば、ファイル名、パス、拡張子、メタデータ、一意の識別子など）。いくつかの例では、指示は最上位ディレクトリ（例えば、要求によって指示された特定のサブディレクトリ）より低くても（下でも）よい。
【００７５】
ブロック４４０において、クライアントアプリケーションは、以前のバージョンのディレクトリ構造の少なくとも一部を生成することができる。例えば、クライアントアプリケーション２０２の同期サービス１５６は、受信した指示に基づいてプレースホルダーコンテンツアイテムを生成することができる。いくつかの例では、同期サービス１５６は、１つのディレクトリレベル（例えば、図３Ａに示すように最上位レベル）のプレースホルダーコンテンツアイテムを生成することができる。いくつかの例では、そのディレクトリ（例えば、フォルダ３３４、テキストファイル３３６）のプレースホルダーコンテンツアイテムを生成するために、フォルダ（例えば、フォルダ３２２ Milo）がユーザーによってナビゲートされるときに方法４００を繰り返すことができる。ユーザーが、ファイルに関連付けられたプレースホルダーコンテンツアイテムによって表されるファイルにアクセスすることを望む場合、そのファイルは、コンテンツ管理システム１１０から（例えば、オンデマンドで）取り出すことができる。他の例では、同期サービス１５６は、ディレクトリ構造全体（例えば、コンテンツ管理システムにおけるユーザーＡのネームスペース）のためのプレースホルダーコンテンツアイテムを生成することができる。これらの他の例では、ユーザーは、クライアントアプリケーションがコンテンツ管理システムから受信した指示からより多くのプレースホルダーコンテンツコンテンツを生成することなくディレクトリ構造をナビゲートすることができる（コンテンツ管理システム１１０からユーザーが検索できる（例えばオンデマンド）ファイルにアクセスしようとしない限り）。
【００７６】
いくつかの例では、以前のバージョンのディレクトリ構造の少なくとも一部を生成することは、オペレーティングシステム（またはシステム）に依存しない。例えば、Windows、Linux（登録商標）、Unix、OSxなどを実行しているクライアントデバイスで、以前のバージョンのディレクトリ構造を生成できる。
【００７７】
図５に示す方法は、方法を実行するための様々な方法があることから、例として提供される。更に、例示的な方法は特定の順序のブロックを用いて示されているが、当業者であれば、図５のおよび図５に示されているブロックは、本開示の技術的利点を達成する任意の順序で実行することができ、図示されているよりも少ないまたは多いブロックを含むことができることを理解するであろう。
【００７８】
図５に示す各ブロックは、例示の方法で実行される１つまたは複数のプロセス、方法、またはサブルーチンを表す。図５に示すブロックは、図１に示すシステム１００、および、図２、３Ａ、および３Ｂに示すクライアントアプリケーション２００といったシステムで実施することができる。図５に示すフローチャートは、少なくとも、図１に示すシステム１００、および、図２、３Ａ、および３Ｂに示すクライアントアプリケーション２００の要素に関連して説明され、それらを参照する。
【００７９】
図５は、コンテンツ管理システムに格納されている、以前のディレクトリ構造のコンテンツアイテムからコンテンツアイテムを検索するための例示的な方法５００のフロー図を示す。方法５００はブロック５１０から開始する。ブロック５１０で、クライアントアプリケーションは、以前のバージョンのディレクトリ構造のコンテンツアイテム（例えば、図３Ａおよび図３Ｂに示すプレースホルダーコンテンツアイテムの以前のバージョンのディレクトリ構造）にアクセスするための要求を受信することができる。例えば、ユーザー２０８は、以前のバージョンのディレクトリ構造のプレースホルダーコンテンツアイテムへのアクセスを要求することができる。ユーザーの観点からは、ユーザーはコンテンツアイテム（ファイルなど）であって、ローカルで利用可能に見えるコンテンツアイテム（プレースホルダーコンテンツアイテムではなくフルコンテンツアイテムなど）にアクセスしようとしている。いくつかの例では、要求は、コンテンツアイテムを開くこと、および／またはコンテンツアイテムをコピーすることであり得る。いくつかの例では、要求はコンテンツアイテムの識別子（例えばハッシュ識別子）を含むことができる。
【００８０】
ブロック５２０で、クライアントアプリケーションは、プレースホルダーコンテンツアイテムに関連付けられている要求されたコンテンツアイテムについて、コンテンツ管理システムのコンテンツストレージに問い合わせることができる。例えば、クライアントアプリケーション２０２は、プレースホルダーコンテンツアイテムに関連付けられた識別子およびユーザー識別子を使用して、アクセスされたコンテンツアイテムについての１つまたは複数の要求をコンテンツ管理システム１１０のコンテンツストレージ１４２に送信することができる。ブロック５３０において、クライアントアプリケーションは、問い合わせられたコンテンツアイテムを受信することができる。
【００８１】
ブロック５４０で、クライアントアプリケーションは受信したコンテンツアイテムを以前のバージョンのディレクトリ構造に格納することができる。いくつかの例では、格納されたコンテンツアイテムは、読み取り専用のコンテンツアイテムとして格納され得る。コンテンツアイテムが完全に受信されると、ユーザー２０８は、コンテンツアイテムを閲覧し、コンテンツアイテムを別の場所にコピーアンドペースト（またはドラッグアンドドロップ）する、および／または、クライアントデバイスによってアクセス可能な（例えば、読み取り／書き込みをするための）別の場所（例えば、以前のバージョンのディレクトリ構造以外）にコンテンツアイテムを格納することができる。例えば、コンテンツアイテムは、以前のバージョンのユーザーアカウント３４０（例えば、以前のバージョンのディレクトリ構造）からユーザーアカウント２１２にコピーすることができる。いくつかの例では、クライアントアプリケーションは、コンテンツアイテムをプレースホルダーコンテンツアイテムと視覚的に区別することができる（例えば、チェックマークはコンテンツアイテムおよびクラウドを示すことができ、または記号はプレースホルダーコンテンツアイテムを示すことができる）。いくつかの例では、ユーザーはファイルまたはディレクトリを復元することができる。例えば、ユーザーは、以前のバージョンのディレクトリ構造（例えばフォルダ３２２）内のファイルまたはディレクトリ（例えばプレースホルダーコンテンツアイテム）を選択することができる。選択後、ユーザーは右クリックしてメニューを表示することができる。メニューは、ディレクトリまたはファイルをユーザーアカウント２１２（例えば、User AのCMS）に復元するためのオプションを含むことができる。いくつかの例では、復元はファイルまたはディレクトリの現在のバージョンを上書きすることができる。他の例では、復元は新しいファイルまたはディレクトリを新しい名前で書き込むことができる（例えば、Milo-11-05-2015）。他の例では、ユーザーは、フォルダまたはファイルを以前のバージョンのディレクトリ構造（例えば３４０）から現在のバージョンのディレクトリ構造（例えば２１２）にドラッグアンドドロップすることができる。いくつかの例では、完全なコンテンツアイテム（例えば、フォルダ、ファイルなど）がまだダウンロードされていないとき（すなわち、ドラッグアンドドロップ操作の前）、ドラッグアンドドロップ操作は、完全なコンテンツアイテムのダウンロードをトリガし、以前のバージョンのディレクトリ構造を使用して、ドロップされた場所（例えば、現在のバージョンのディレクトリ構造、ユーザーのデスクトップ上の別の場所等）に完全なコンテンツアイテムを格納する。
【００８２】
図６は、システムの構成要素が接続６０５を使用して互いに通信しているコンピューティングシステム６００の一例を示す。接続６０５は、バスを介した物理的接続、またはチップセットアーキテクチャなどにおけるプロセッサ６１０への直接接続とすることができる。接続６０５は、仮想接続、ネットワーク接続、または論理接続とすることもできる。
【００８３】
いくつかの実施形態では、コンピューティングシステム６００は、本開示で説明されている機能をデータセンター、複数のデータセンター、ピアネットワーク等の中に分散させることができる分散システムである。接続６０５は、バスを介した物理的接続、またはチップセットアーキテクチャーなどにおけるプロセッサ６１０への直接接続とすることができる。いくつかの実施形態では、構成要素は物理的デバイスまたは仮想デバイスとすることができる。
【００８４】
例示的なシステム６００は、少なくとも１つの処理装置（ＣＰＵまたはプロセッサ）６１０と、読み取り専用メモリ（ＲＯＭ）およびランダムアクセスメモリ（ＲＡＭ）などのシステムメモリ６１５を含む様々なシステム構成要素をプロセッサ６１０に結合する接続６０５とを含む。コンピューティングシステム６００は、プロセッサ６１０に直接接続されているか、近接しているか、あるいはその一部として統合されている高速メモリのキャッシュを含んでもよい。
【００８５】
プロセッサ６１０は、プロセッサ６１０を制御するように構成された任意の汎用プロセッサと、ストレージデバイス６３０に格納されたサービス６３２、６３４、および６３６などのハードウェアサービスまたはソフトウェアサービスと、実際のプロセッサ設計にソフトウェア命令が組み込まれる特殊用途プロセッサとを含むことができる。プロセッサ６１０は本質的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュ等を含んでいる、完全に自己完結型のコンピュータシステムであってもよい。複数のコアプロセッサは対称又は非対称であってもよい。
【００８６】
ユーザーとのインタラクションを可能にするために、コンピューティングシステム６００は、音声用のマイクロフォン、ジェスチャまたはグラフィック入力用のタッチスクリーン、キーボード、マウス、動作入力、音声などの任意の数の入力機構を表すことができる入力デバイス６４５を含む。コンピューティングシステム６００は、当業者に知られているいくつかの出力機構のうちの１つまたは複数とすることができる出力デバイス６３５も含むことができる。場合によっては、多様なシステムによって、ユーザーが、コンピューティングシステム６００と通信するための複数のタイプの入力を行うことが可能になる。コンピューティングシステム６００は、一般にユーザー入力およびシステム出力を管理および管理することができる通信インターフェース６４０を含み得る。特定のハードウェア構成上で動作することについての制限はなく、従って、本明細書での基本的な特徴は、改良型のハードウェア構成やファームウェア構成が開発されれば、それらと容易に置き換わりうる。
【００８７】
ストレージデバイス６３０は、不揮発性メモリデバイスとすることができ、ハードディスク、または磁気カセット、フラッシュメモリカード、固体メモリ装置、デジタル汎用ディスク、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）、読み取り専用メモリ（ＲＯＭ）、および/またはこれらのデバイスの組み合わせ等のコンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体とすることができる。
【００８８】
ストレージデバイス６３０は、ソフトウェアサービス、サーバ、サービスなどを含むことができ、そのようなソフトウェアを定義するコードがプロセッサ６１０によって実行されるとき、それはシステムに機能を実行させる。いくつかの実施形態では、特定の機能を実行するハードウェアサービスは、機能を実行するために、プロセッサ６１０、接続６０５、出力デバイス６３５などの必要なハードウェア構成要素に関連してコンピュータ可読媒体に格納されたソフトウェア構成要素を含み得る。
【００８９】
説明の明確化のため、ある例では、本技術はデバイスやデバイスコンポーネントやソフトウエアで実施される方法のステップまたはルーチンやハードウエアとソフトウエアとの組み合わせを含む機能ブロックを含む個々の機能ブロックを含むものとして提示されてもよい。
【００９０】
本明細書で説明されるステップ、動作、機能、またはプロセスのいずれも、単独でまたは他のデバイスと組み合わせて、ハードウェアおよびソフトウェアサービスまたはサービスの組み合わせによって実行または実装され得る。いくつかの実施形態では、サービスは、クライアントデバイスのメモリおよび／またはコンテンツ管理システムの１つ以上のサーバに常駐し、プロセッサがそのサービスに関連するソフトウェアを実行するときに１つ以上の機能を実行するソフトウェアであり得る。いくつかの実施形態では、サービスはプログラム、または特定の機能を実行するプログラムの集まりである。いくつかの実施形態では、サービスはサーバと見なすことができる。メモリは、非一時的コンピュータ可読媒体とすることができる。
【００９１】
いくつかの実施形態では、コンピュータ可読格納デバイス、媒体およびメモリは、ビットストリームを含むケーブルや無線信号などを含んでもよい。しかしながら、言及される場合、非一時的コンピュータ可読格納媒体は、エネルギやキャリア信号や電磁波や信号そのものなどの媒体を明示的に除外する。
【００９２】
上述の例に係る方法は、コンピュータ可読媒体に格納されるかそうでなければその媒体から利用可能なコンピュータ実行可能な命令（インストラクション）を使用して実装されてもよい。そのような命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに所定の機能もしくは機能のグループを実行させるかそうでなければ実行するよう設定する命令およびデータを含んでもよい。使用されるコンピュータリソースの一部はネットワークを介してアクセス可能であってもよい。コンピュータ実行可能な命令は、例えば、バイナリや、アセンブリ言語などの中間フォーマットの命令や、ファームウエアや、ソースコードであってもよい。説明された例による方法の間に使用され得る命令、使用される情報、および／または情報を格納するために使用され得るコンピュータ可読媒体の例は、磁気または光ディスク、固体メモリデバイス、フラッシュメモリ、不揮発性メモリを備えるＵＳＢデバイス、ネットワークストレージデバイス等を含む。
【００９３】
本開示に係る方法を実装するデバイスはハードウエア、ファームウエアおよび／またはソフトウエアを含んでもよく、種々のフォームファクタのうちの任意のものをとりうる。そのようなフォームファクタの典型的な例は、サーバ、ラップトップ、スマートフォン、小さいフォームファクタのパーソナルコンピュータや、パーソナルデジタルアシスタントなどを含む。本明細書で説明される機能は周辺機器やアドインカードにおいて実現されてもよい。さらなる例として、そのような機能は回路基板上で異なる複数のチップの間でまたは単一デバイスで実行される異なる複数の処理の間で実現されてもよい。
【００９４】
命令、そのような命令を運ぶための媒体、そのような命令を実行するための計算リソース、およびそのような計算リソースをサポートするための他の構成は、本開示で説明される機能を提供するための手段である。
【００９５】
本明細書で使用されるように、閾値を上回ることは、比較下のアイテムが特定の他の値を上回る、比較下のアイテムが最大値を有する特定の特定数のアイテムの中にある、または比較下のアイテムが特定の上位パーセンテージの量内の値にあることを意味する。本明細書で使用されるように、閾値を下回ることは、比較下のアイテムが特定の他の値を下回る、比較下のアイテムが最小値を有する特定の特定数のアイテムの中にある、または比較下のアイテムが特定の下位パーセンテージの量内の値にあることを意味する。本明細書で使用されるように、閾値内にあることは、比較下のアイテムが２つの特定の他の値の間にある、比較下のアイテムが中間の特定の数のアイテムの中にある、または比較下のアイテムが中間の特定のパーセンテージの範囲内にあることを意味する。他に定義されていない場合、高いまたは重要でないなどの相対的な用語は、値を割り当て、その値が確立されたしきい値とどのように比較されるかを決定するものとして理解できる。例えば、「高速接続を選択する」という語句は、閾値を超える接続速度に対応して割り当てられた値を有する接続を選択することを意味すると理解することができる。
【００９６】
本明細書で使用されているように、単語「または」は、１セットのアイテムの可能な順列を指す。例えば、句「Ａ、Ｂ、またはＣ」は、Ａ、Ｂ、Ｃの少なくとも１つ、または、Ａ；Ｂ；Ｃ、ＡとＢ、ＡとＣ、ＢとＣ、Ａ、Ｂ、およびＣ；または、ＡとＡ；Ｂ、ＢおよびＣ；Ａ、Ａ、Ｂ、ＣおよびＣ；といった複数の任意のアイテムといったそれらの任意の組み合わせのうちの少なくとも１つを指す。更に、ある要素および別の要素の「少なくとも１つ」を列挙しているクレーム表現は、その要素のセットの可能な限りの置換を意味する。例えば、「ＡとＢの少なくとも一方」または「ＡとＢの少なくとも一方」と記載しているクレーム表現は、Ａ、Ｂ、またはＡとＢの両方を意味する。
【００９７】
添付の請求項の範囲内の態様を説明するために様々な例および他の情報が使用されたが、そのような例における特定の特徴や構成に基づくいかなる請求項の限定も暗示されてはならない。当業者であれば、これらの例を使用して多種多様な実装を導くことができるであろう。さらに、いくつかの主題が構造的特徴および／または方法ステップの例に特有の言語で記述されたかもしれないが、添付の請求項で規定される主題はこれらの記述された特徴や行為に限定される必要はないことは理解されるべきである。例えば、そのような機能は異なるように分散されてもよいし、本明細書で特定されたもの以外のコンポーネントで実行されてもよい。むしろ、記述された特徴およびステップは、添付の請求項の範囲内のシステムおよび方法のコンポーネントの例として開示される。
【図１】
0006955554.tif 000002
【図２】
0006955554.tif 000003
【図３Ａ】
0006955554.tif 000004
【図３Ｂ】
0006955554.tif 000005
【図４】
0006955554.tif 000006
【図５】
0006955554.tif 000007
【図６】
0006955554.tif 000008