本技術のさまざまな例について、以下に詳しく論じる。特定の実装について論じているが、これは説明のみを目的として行われていることを理解されたい。当業者は、本技術の趣旨および範囲から逸脱することなく他のコンポーネントや構成が用いられうることを認識するであろう。
開示された技術は、コンテンツアイテムの現在のバージョンへのアクセスを保持しながら、前の時点でコンテンツ管理システムで記憶されたコンテンツアイテムにアクセスする(例えば、見る、コピーする、保存するなど)ための当技術分野における必要性に対処する。ユーザーは、コンテンツ管理システムに関連する彼らのオンラインストレージアカウントに大量のコンテンツアイテムを格納することができる。いくつかの状況では、ユーザーは、コンテンツ管理システムに格納されているコンテンツアイテムを修正(例えば、削除または変更)することができ、後で以前のバージョンのコンテンツアイテムに戻ることを望む。クライアントアプリケーションを使用することによって、ユーザーは、修正されたコンテンツアイテムの所望のバージョンに関連付けられているとユーザーが考える日付(例えば、タイムスタンプ)を入力することができる。次いで、クライアントアプリケーションは、ユーザーがナビゲートすることができるプレースホルダーコンテンツアイテムを有するユーザーの以前のバージョンのアカウント(例えば、ネームスペース(名前空間)/ディレクトリ構造)を生成し、入力した日付の時点のコンテンツアイテムのバージョンを反映する以前のバージョンのコンテンツアイテムを(オンデマンド)検索することができる。以前のバージョンのユーザーアカウントには、完全なネームスペース(ディレクトリ構造など)を含めることも、ネームスペースのサブセットを含めることもできる。いくつかの例では、以前のバージョンのユーザーアカウントは共有ネームスペースにすることができる。共有ネームスペースは、2人目のユーザーにアクセス権を付与した1人目のユーザーのアカウントの1つ以上のコンテンツアイテムにすることができる。例えば、ユーザーBは、ユーザーBのユーザーアカウントの1つ以上のコンテンツアイテムをユーザーAと共有できる。ユーザーAは、ユーザーAにアクセス権が付与された以前のバージョンのユーザーBのユーザーアカウントを生成できる。
プレースホルダーコンテンツアイテムを使用して、以前のバージョンのユーザーのオンラインアカウント(および関連するコンテンツアイテム)を生成することには、いくつかの利点がある。プレースホルダーのコンテンツアイテムは完全なコンテンツアイテムよりもサイズが小さく、ユーザーは自分のローカルコンピュータの余分なスペースを利用することなく以前のバージョンのアカウントにアクセスすることができる。ユーザーは、以前のバージョンのユーザーアカウントに同時にアクセスできる。ユーザーのアカウントの1つまたは複数の以前のバージョンにアクセスするときに、不要な帯域幅の使用もない。例えば、プレースホルダーアイテムが最初に生成され、アクセス時、以前のバージョンのユーザーアカウントは生成されない間に、完全なコンテンツアイテムがダウンロードされる。
いくつかの実施形態において、開示された技術は、とりわけ、コンテンツアイテム同期機能およびコラボレーション機能を有するコンテンツ管理システムの文脈において展開される。システム構成100の一例を図1に示す。これは、クライアントデバイス150と作用するコンテンツ管理システム110を含む。
アカウント
コンテンツ管理システム110は、アカウントに関連してコンテンツアイテムを格納することができ、ならびにコンテンツアイテムを検索、修正、閲覧、および/または共有することなどの様々なコンテンツアイテム管理タスクを実行することができる。更に、コンテンツ管理システム110は、通信ネットワーク130(例えば、インターネット、3G、LTEなどを含む電話データネットワーク、広域ネットワーク、ローカルエリアネットワーク、仮想ネットワーク、無線ネットワーク等)を介して、アカウントが複数のクライアントデバイスからコンテンツアイテムにアクセスすることを可能にする。
コンテンツ管理システム110は複数のアカウントをサポートする。エンティティ(ユーザー、ユーザーのグループ、会社など)は、コンテンツ管理システムを用いてアカウントを作成することができ、アカウントの詳細はアカウントデータベース140に格納することができる。アカウントデータベース140は、登録エンティティについてのプロファイル情報を格納してもよい。場合によっては、登録済みエンティティのプロファイル情報に、ユーザー名や電子メールアドレス、あるいはその両方が含まれることがある。アカウントデータベース140は、アカウントタイプ(例えば、無料または有料アカウントの様々な段階(tiers))、割り当てられた記憶スペース、使用された記憶スペース、登録コンテンツ管理クライアントアプリケーション152を有するクライアントデバイス150、セキュリティ設定、個人設定といった、アカウント管理情報を含むことができる。
アカウントデータベース140は、エンティティに関連付けられたアカウントのグループを格納することができる。グループは、グループポリシーやアクセス制御リスト、あるいはその両方に基づいて権限を持つことができ、グループのメンバーは権限を継承することができる。例えば、マーケティンググループは1つのコンテンツアイテムセットにアクセスでき、エンジニアリンググループは別のコンテンツアイテムセットにアクセスできる。グループの管理者は、グループの変更、ユーザーアカウントの変更などができる。
コンテンツアイテムの格納
コンテンツ管理システム110の特徴は、コンテンツストレージ(記憶装置)142に記憶することができるコンテンツアイテムの格納である。コンテンツアイテムは、文書、コラボレーションコンテンツアイテム、テキストファイル、オーディオファイル、画像ファイル、ビデオファイル、ウェブページ、実行可能ファイル、バイナリファイル等といった任意のデジタルデータとすることができる。コンテンツアイテムはまた、フォルダ、zipファイル、プレイリスト、アルバム等といった、さまざまな動作を含むコンテンツアイテムをグループ化するためのコレクションまたは他のメカニズムを含むこともできる。コレクションは、フォルダ、または関連する属性によって関連付けられているかグループ化されている複数のコンテンツアイテムを参照できる。いくつかの実施形態では、コンテンツストレージ142は、特定の機能を処理するために他の種類のストレージまたはデータベースと組み合わせることができる。コンテンツストレージ142はコンテンツアイテムを記憶することができ、コンテンツアイテムに関するメタデータはメタデータデータベース146に記憶することができる。同様に、コンテンツアイテム142がコンテンツストレージ142のどこに格納されているかに関するデータを、コンテンツディレクトリ144に格納することができる。更に、変更、アクセスなどに関するデータをサーバファイルジャーナル148に格納することができる。コンテンツストレージ142、コンテンツディレクトリ144、サーバファイルジャーナル148、およびメタデータデータベース146などの様々なストレージ/データベースのそれぞれは、1つより多いそのようなストレージまたはデータベースから構成することができ、多くのデバイスおよび場所に渡って分散することができる。他の構成もまた可能である。例えば、コンテンツストレージ142、コンテンツディレクトリ144、サーバファイルジャーナル148、および/またはメタデータデータベース146からのデータは、1つまたは複数のコンテンツストレージまたはデータベースに結合されてもよく、更に追加のコンテンツストレージまたはデータベースに分割されてもよい。したがって、コンテンツ管理システム110は、図1に示すよりも多いまたは少ないストレージおよび/またはデータベースを含み得る。
いくつかの実施形態では、コンテンツストレージ142は、コンテンツアイテムの格納場所の選択、ストレージからのコンテンツアイテムの取得等を含むがこれらに限定されない、コンテンツアイテムの格納を管理するためのソフトウェアまたは他のプロセッサ実行可能命令を含む少なくとも1つのコンテンツ管理サービス120と関連付けられる。いくつかの実施形態では、コンテンツ管理サービス120は、コンテンツストレージ142に格納するために、コンテンツアイテムをより小さなデータブロックに分割することができる。コンテンツアイテムを構成する各データブロックの位置は、コンテンツディレクトリ144に記録することができる。コンテンツディレクトリ144は、コンテンツストレージ142に記憶されている各コンテンツアイテムに対するコンテンツエントリを含むことができる。コンテンツエントリは、コンテンツアイテムを識別する一意のIDに関連付けることができる。
いくつかの実施形態では、コンテンツディレクトリ144内のコンテンツアイテムを識別する一意のIDは、決定論的ハッシュ関数から導出することができる。決定論的ハッシュ関数は一般に、同じコンテンツアイテムのすべてのコピーに対して同じ識別子を出力するが、異なるコンテンツアイテムに対しては異なる識別子を出力するので、コンテンツアイテムに対する一意のIDを導出するこの方法は、コンテンツアイテムの重複をそのまま認識できる。この方法論を使用して、コンテンツ管理サービス120は各コンテンツアイテムに対して一意のIDを出力することができる。
コンテンツ管理サービス120はまた、コンテンツアイテムに対するコンテンツパスを指定または記録することができる。コンテンツパスはコンテンツアイテムの名前および/またはコンテンツアイテムに関連するフォルダ階層とを含んでもよい。例えば、コンテンツパスは、コンテンツアイテムがクライアントデバイス上のローカルファイルシステムに格納されているフォルダまたはフォルダのパスを含むことができる。コンテンツ管理サービス120は、コンテンツパスを使用して、ツリー状のディレクトリ構造などの適切なフォルダ階層でコンテンツアイテムを提示することができる。コンテンツアイテムはブロックでコンテンツストレージ142に格納され、ディレクトリ構造のようなツリーの下には記憶されないかもしれないが、そのようなディレクトリ構造はユーザーにとって快適なナビゲーション構造である。コンテンツ管理サービス120は、コンテンツアイテムのコンテンツパスを定義または記録することができ、ディレクトリ構造の「ルート」ノードは各アカウントのネームスペースとすることができる。ネームスペース内には、アカウントおよび/またはコンテンツ管理サービス120のユーザーによって定義されたディレクトリ構造があり得る。コンテンツディレクトリ144は、コンテンツエントリの一部として各コンテンツアイテムのコンテンツパスを格納することができる。
いくつかの実施形態では、ネームスペースは、あたかもそれらがルートノード内に格納されているかのようにディレクトリ構造内に現れる追加のネームスペースを含むことができる。これは、アカウントが共有コレクションにアクセスできるときに発生する可能性がある。共有コレクションは、コンテンツ管理システム110内でそれら自身のネームスペースを割り当てることができる。共有コレクションは、実際には共有コレクションのルートノードであるが、ディレクトリ構造内のユーザーアカウントのネームスペースの下位にあり、ユーザーアカウントのフォルダー内のフォルダーとして表示されることがある。上述のように、ディレクトリ構造は、ユーザーにとって快適なナビゲーション構造となり得るが、必ずしもコンテンツストレージ142内のコンテンツアイテムの格納位置と相関するわけではない。
アカウントがコンテンツアイテムを閲覧するディレクトリ構造は必ずしもコンテンツ管理システム110の格納場所と相関するわけではないが、ディレクトリ構造は一般に、クライアントデバイス150によって使用されるファイルシステムに応じてクライアントデバイス150の格納場所と相関することができる。
上述のように、コンテンツディレクトリ144内のコンテンツエントリは、コンテンツアイテムを構成するデータの各ブロックの位置も含むことができる。より具体的には、コンテンツエントリは、コンテンツアイテムを構成するデータブロックのコンテンツストレージ142内の位置を識別するコンテンツポインタを含むことができる。
コンテンツパスおよびコンテンツポインタに加えて、コンテンツディレクトリ144内のコンテンツエントリはまた、コンテンツアイテムへのアクセス権を有するユーザーアカウントを識別するユーザーアカウント識別子、および/またはコンテンツアイテムへのアクセス権を有するグループを識別するグループ識別子を含み得る。いくつかの実施形態では、複数のユーザーアカウント識別子が単一のコンテンツエントリに関連付けられてもよく、これは、そのコンテンツアイテムが複数のユーザーアカウントによる共有アクセスを有することを示す。いくつかの実施形態では、単一のコンテンツエントリに関連付けられているユーザーアカウント識別子は、関連付けられているコンテンツアイテムに対して異なる許可を指定することができる。いくつかの実施形態では、コンテンツディレクトリ144は、ユーザーアカウントに関連するコンテンツアイテムの階層構造を記述することができ、その階層構造はユーザーアカウントに特有のものである。
コンテンツ管理サービス120は、コンテンツアイテムまたはコンテンツアイテムのバージョンを構成する重複コンテンツアイテムまたは重複ブロックを識別することによって必要とされる記憶スペースの量を減らすことができる。複数のコピーを記憶する代わりに、コンテンツストレージ142は、コンテンツアイテムの単一のコピーまたはコンテンツアイテムのブロックを記憶することができ、コンテンツディレクトリ144は複製を単一のコピーにリンクするためのポインタまたは他の機構を含むことができる。
コンテンツ管理サービス120は、コンテンツアイテム、コンテンツアイテムタイプ、フォルダ、ファイルパス、タイムスタンプ、サイズ、属性、および/またはコンテンツアイテムとさまざまなアカウント、コレクション、またはグループとの関係を記述するメタデータを、コンテンツアイテムの一意のIDとの関連付けて、メタデータデータベース146に格納することもできる。
コンテンツ管理サービス120はまた、変更、アクセスなどに関するデータのログをサーバファイルジャーナル148に格納することもできる。サーバファイルジャーナル148は、タイムスタンプまたはバージョン番号、および他の任意の関連データと共に、コンテンツアイテムの一意のIDおよび変更またはアクセス動作の説明を含むことができる。サーバファイルジャーナル148はまた、変更またはコンテンツアイテムアクセスによって影響を受けるブロックへのポインタを含むことができる。コンテンツ管理サービスは、コンテンツアイテムへの変更、異なるバージョンのコンテンツアイテム(異なるバージョンツリーを含む)、およびサーバーファイルジャーナル148から取得できる変更履歴を追跡するコンテンツアイテムバージョン管理サービスを使用することによって、操作を元に戻す機能を提供できる。変更履歴は、元のコンテンツアイテムのバージョンにいつ適用したか、変更されたコンテンツアイテムのバージョンをいつ生成したかについての1セットの変更を含み得る。
コンテンツアイテムの同期
コンテンツ管理システム110の他の特徴は、少なくとも1つのクライアントデバイス150とのコンテンツアイテムの同期である。クライアントデバイスは、さまざまな形式を取り、さまざまな機能を持つことができる。例えば、クライアントデバイス170は、デバイス上で実行されている複数のアプリケーションによってアクセス可能なローカルファイルシステムを有するコンピューティングデバイスである。クライアントデバイス172は、コンテンツアイテムが特定のアプリケーションまたは特定のアプリケーションによって与えられた許可によってのみアクセス可能であり得るコンピューティングデバイスであり、コンテンツアイテムはアプリケーション固有のスペースおよび/またはリモートネットワークに格納され得る。クライアントデバイス174は、ウェブブラウザを介してコンテンツ管理システム110にアクセスし、ウェブインターフェースを介してコンテンツアイテムにアクセスする任意のクライアントデバイスである。例示的なクライアントデバイス170、172、および174は、ラップトップ、モバイルデバイス、またはウェブブラウザなどのフォーム(形状)ファクタで描かれているが、これらの説明は、クライアントデバイスをこれらのフォームファクタに限定しないことを理解されたい。例えば、クライアントデバイス172などのモバイルデバイスは、デバイス上で実行されている複数のアプリケーションによってアクセス可能なローカルファイルシステムを有することができ、またはクライアントデバイス172はウェブブラウザを介してコンテンツ管理システム110にアクセスすることができる。そのため、クライアントデバイス150の機能を検討する際に、フォームファクタが限定的であると考えるべきではない。クライアントデバイス150に関して本開示に記載されている1つまたは複数の機能は、デバイスの特定の機能に応じてすべてのクライアントデバイスで利用可能である場合もあれば、そうでない場合もある。ファイルアクセスモデルはそのような機能の1つである。
多くの実施形態では、クライアントデバイスはコンテンツ管理システム110のアカウントに関連付けられているが、いくつかの実施形態では、クライアントデバイスは共有リンクを使用してコンテンツにアクセスすることができ、アカウントを必要としない。
上述のように、いくつかのクライアントデバイスはウェブブラウザを使用してコンテンツ管理システム110にアクセスすることができる。しかしながら、クライアントデバイスはまた、クライアントデバイス150に格納され実行されているクライアントアプリケーション152を使用してコンテンツ管理システム110にアクセスすることができる。クライアントアプリケーション152は、コンテンツアイテム同期サービス156を含み得る。
コンテンツアイテム同期サービス156は、クライアントデバイス150とコンテンツ管理システム110との間でコンテンツアイテムに対する変更を同期させるためにコンテンツ管理サービス120と通信することができる。
クライアントデバイス150は、コンテンツ同期サービス156を介してコンテンツをコンテンツ管理システム110と同期させることができる。同期はプラットフォーム不可知的であってもよい。すなわち、コンテンツは、様々なタイプ、機能、オペレーティングシステムなどの複数のクライアントデバイスに渡って同期することができる。コンテンツ同期サービス156は、任意の変更(新規、削除、修正、コピー、または移動)を、クライアントデバイス150のファイルシステムの指定の場所におけるコンテンツアイテムに同期させることができる。
コンテンツアイテムは、クライアントデバイス150からコンテンツ管理システム110へ、およびその逆に同期させることができる。クライアントデバイス150がコンテンツアイテムのコンテンツ管理システム110との同期を開始する実施形態では、ユーザーはクライアントデバイス150のファイルシステムから直接コンテンツアイテムを操作することができ、ファイルシステム拡張154(ローカルファイルシステムと、あるいは、オペレーティングシステムカーネルでさえも、統合することができる)は、クライアントデバイス150のファイルシステムの指定された場所にあるコンテンツアイテムに関する読み取り、書き込み、コピー、移動、削除のコマンドを解釈することができる。
ファイルシステム拡張機能154が書き込み、移動、コピー、または削除コマンドを検出すると、それはコンテンツアイテム同期サービス156に通知することができ、それは変更をコンテンツ管理システムサービス120に同期させることができる。いくつかの実施形態では、コンテンツアイテム同期サービス156は、コンテンツアイテムをブロックに分割すること、コンテンツアイテムをハッシュして一意の識別子を生成すること等、上述した機能を含むコンテンツ管理システムサービス120のいくつかの機能を実行できる。コンテンツ同期サービス156は、クライアントストレージインデックス160内のコンテンツにインデックスを付け、その結果をストレージインデックス160に保存することができる。インデックス付けは、各コンテンツアイテムに対して一意の識別子を作成することを含むことができる。いくつかの実施形態では、コンテンツ同期サービス156は、コンテンツアイテムのデータ(例えば、ファイル名および/または他のメタデータを除いて)をハッシュ関数にかけることによってこの一意の識別子を作成する。上述のように、コンテンツ管理システムは、コンテンツ管理システム110上のコンテンツに識別子を提供するために同様のプロセスを使用することができる。コンテンツ同期サービス156は、ストレージインデックス160を使用して、クライアントストレージ内のコンテンツの少なくとも一部とコンテンツ管理システム110上のユーザーアカウントに関連するコンテンツとの同期を容易にすることができる。例えば、コンテンツ同期サービス156は、ストレージインデックス160をコンテンツ管理システム110と比較し、クライアントストレージ上のコンテンツとコンテンツ管理システム110上のユーザーアカウントに関連するコンテンツとの間の差異を検出することができる。次いで、コンテンツ同期サービス156は、必要に応じてクライアントストレージ上のコンテンツをアップロード、ダウンロード、修正、および/または削除することによって差異を調整しようと試みることができる。コンテンツ管理サービス120は、コンテンツアイテムのための変更されたブロックまたは新しいブロックを格納し、サーバファイルジャーナル148、メタデータデータベース146、コンテンツディレクトリ144、コンテンツストレージ142、アカウントデータベース140などを適宜更新することができる。
コンテンツ管理システム110からクライアントデバイス150にコンテンツを同期させるとき、サーバファイルジャーナル148に記録されたコンテンツアイテムの修正、追加、削除、および/または移動は、通知サービス122を使用してクライアントデバイス150への通知の配信をトリガし得る。クライアントデバイス150がサーバファイルジャーナル148への変更の通知を受信すると、クライアントデバイス150はストレージインデックス160をチェックして、最後の同期以降に変更のタイムスタンプが発生したかどうか、または特定の変更が同期されたかどうかを判断できる。クライアントデバイス150がコンテンツ管理システム110と同期していないと判断すると、コンテンツアイテム同期サービス156は変更を含むコンテンツアイテムブロックを要求することができ、クライアントデバイス150は変更されたコンテンツアイテムのローカルコピーを更新することができる。いくつかの実施形態では、通知サービス122は、通知のためのより多くのコンテキストを得るため、通知を別の通知とバッチ処理できるかどうかを判断するため、または通知を補足するため等のために、サーバファイルジャーナル148といったコンテンツ管理システム110の他のサービスまたはデータベースに問い合わせることができる。
クライアントデバイス150は、利用可能なネットワーク接続を有さない場合がある。このシナリオでは、コンテンツアイテム同期サービス156は、コンテンツアイテムの変更に対してリンクされたコレクションを監視し、ネットワーク接続が可能になった際のコンテンツ管理システム110への後の同期のために、これらの変更をキューに入れることができる。同様に、ユーザーは、コンテンツ管理システム110との同期を手動で開始、停止、一時停止、または再開することができる。
コンテンツアイテム同期サービス156は、コンテンツ管理システム110上の特定のユーザーアカウントに関連するすべてのコンテンツを同期させることができる。あるいは、コンテンツアイテム同期サービス156は、コンテンツ管理システム110上の特定のユーザーアカウントに関連する全コンテンツのコンテンツの一部を選択的に同期させることができる。コンテンツの一部のみを選択的に同期させることは、そうでなければすべてのコンテンツを同期させることによって消費されるであろう処理、メモリ、ストレージ、およびネットワークリソースを減らすことによってクライアントデバイス150上のスペースを節約し、クライアントデバイス150およびコンテンツ管理システム110の性能を改善し得る。
いくつかの実施形態では、コンテンツアイテム同期サービス156は、特定のユーザーアカウントに関連付けられたコンテンツの一部を選択的に格納し、コンテンツの残りの部分についてプレースホルダーコンテンツアイテムをクライアントストレージに格納する。例えば、コンテンツアイテム同期サービス156は、それぞれの完全なコンテンツアイテムの同じファイル名、パス、拡張子、メタデータを有するが、完全なコンテンツアイテムのデータを欠いているプレースホルダーコンテンツアイテムを格納することができる。プレースホルダーコンテンツアイテムのサイズは数キロバイト以下にすることができるが、それぞれの完成したコンテンツアイテムはかなり大きくなる可能性がある。クライアントデバイス150がコンテンツアイテムへのアクセスを試みた後、コンテンツアイテム同期サービス156は、コンテンツ管理システム110からコンテンツアイテムのデータを検索し、アクセスしているクライアントデバイス150に完全なコンテンツアイテムを提供することができる。このアプローチは、コンテンツ管理システム110上のユーザーのコンテンツへのフルアクセスを依然として提供しながら、スペースおよび帯域幅を大幅に節約することができる。
コラボレーション機能
コンテンツ管理システム110の他の特徴は、ユーザー間のコラボレーションを容易にすることである。コラボレーション機能には、コンテンツアイテムの共有、コンテンツアイテムへのコメント、コンテンツアイテムへの共同作業、インスタントメッセージング、コンテンツアイテムに関するプレゼンスおよび視聴状態情報の提供などが含まれる。
共有
コンテンツ管理システム110は、共有サービス128を介してコンテンツの共有を管理することができる。コンテンツ管理システム110のアカウントは、コンテンツへのリンクを提供することによって互いにコンテンツを共有することができる。次いで、共有サービス128は、コンテンツ管理システム110とネットワーク通信している任意のコンピューティングデバイスから共有コンテンツアイテムへのアクセスを提供することができる。しかしながら、いくつかの実施形態では、リンクは、コンテンツ管理システム110によって実施されるアクセス制限と関連付けることができる。共有サービス128はまた、各ユーザーアカウントがコンテンツアイテムへのアクセスを有するように、アカウントが(コンテンツアイテムに関連付けられた元のユーザーアカウントに加えて)少なくとも1つの追加のユーザーアカウントと共有コンテンツを共有することを可能にすることによって、コンテンツ管理システム110内のコンテンツの間接共有を容易にする。追加のユーザーアカウントは、コンテンツを受け入れることによってコンテンツにアクセスすることができ、そのコンテンツは、ウェブインターフェースサービス124またはクライアントデバイス150上の追加のユーザーのアカウントに関連するディレクトリ構造を介してアクセス可能になる。当該共有は、プラットフォームが不可知の態様でなされてもよい。つまり、コンテンツは種々の種別、性能、オペレーティングシステムなどの複数のクライアントデバイス150に渡って共有されてもよい。当該コンテンツはまた、ユーザーアカウントの種々の種別に渡って共有されてもよい。
コンテンツ管理システム110内でコンテンツアイテムを共有するために、共有サービス128は、そのコンテンツアイテムに関連するアクセス制御リストデータベース145内のコンテンツエントリにユーザーアカウント識別子を追加することができ、したがって追加されたユーザーアカウントにコンテンツアイテムへのアクセスを許可する。共有サービス128はまた、コンテンツエントリからユーザーアカウント識別子を削除して、ユーザーアカウントのコンテンツアイテムへのアクセスを制限することができる。共有サービス128は、コンテンツアイテム識別子、コンテンツアイテムへのアクセスを与えられたユーザーアカウント識別子、およびアクセスレベルをアクセス制御リストデータベース145に記録することができる。
コンテンツ管理システム110の外部でコンテンツアイテムを共有するために、共有サービス128は、ユニフォームリソースロケータ(URL)のようなカスタムネットワークアドレスを生成することができ、これは任意のウェブブラウザがコンテンツ管理システム110のコンテンツアイテムまたはコレクションに認証なしにアクセスすることを可能にする。これを達成するために、共有サービス128は生成されるURLにコンテンツ特定データを含んでもよい。コンテンツ特定データは、後に、要求されたコンテンツアイテムを適切に特定して返すために使用されてもよい。例えば、共有サービス128は、生成されたURLにアカウント識別子およびコンテンツパスまたはコンテンツアイテム識別コードを含めることができる。URLを選択すると、URLに含まれるコンテンツ識別データをコンテンツ管理システム110に送信することができる。次いで、コンテンツ管理システム110は、受信したコンテンツ識別データを使用して適切なコンテンツアイテムを識別し、そのコンテンツアイテムを返すことができる。
URLを生成することに加えて、共有サービス128はまた、アクセス制御リストデータベース145にそのURL、またはそのURLが存在することを記録することができる。いくつかの実施形態では、コンテンツアイテムに関連付けられたコンテンツエントリは、そのコンテンツアイテムへのURLが生成されたか否かを示すURLフラグを含んでもよい。例えば、URLフラグは、コンテンツアイテムへのURLがまだ生成されていないことを示すために最初に0または偽(false)に設定されるブール値であってもよい。共有サービス128は、コンテンツアイテムへのURLを生成した後はフラグの値を1または真(true)に変更することができる。
いくつかの実施形態では、共有サービス128は、1セットの許可をコンテンツアイテムのURLに関連付けることができる。例えば、ユーザーがURLを介してコンテンツアイテムにアクセスしようと試みると、共有サービス128は、コンテンツアイテムに対して限定された1セットの許可を提供することができる。制限付き許可の例には、ユーザーがコンテンツアイテムをダウンロードすること、コンテンツアイテムを保存すること、コンテンツアイテムをコピーすること、コンテンツアイテムを修正することなどができないという制限が含まれる。いくつかの実施形態では、制限付きの許可は、コンテンツアイテムが特定のドメイン内から、例えば企業ネットワークドメイン内から、または特定のドメインに関連するアカウント、例えば企業アカウント(例えば@acme.com)に関連するアカウントによってのみアクセスされることを許可する制限を含む。
いくつかの実施形態では、共有サービス128は、生成されたURLを非アクティブ化するか、そうでなければコンテンツアイテムを共有解除することもできる。例えば、各コンテンツエントリは、コンテンツがまだ共有されているかどうかを示すアクティブ共有フラグを含むこともでき、アクティブ共有フラグが1または真に設定されている場合にのみ共有サービス128は要求コンテンツアイテムを返すことができる。したがって、以前に共有されたコンテンツアイテムへのアクセスは、アクティブ共有フラグの値を変更することによって制限することができる。これにより、ユーザーは、コンテンツアイテムを移動したり、生成されたURLを削除したりする必要なしに、共有コンテンツアイテムへのアクセスを制限することができる。したがって、ユーザーは、新しい共有メカニズム、例えば新しいURLを生成する必要なしに、コンテンツアイテムへのアクセスを容易に復元することができる。
いくつかの実施形態では、コンテンツ管理システム110は、コンテンツアイテムをアップロードするための、URLなどの場所を指定することができる。例えば、第1のユーザーアカウントは、共有サービス128からアップロード場所を要求し、そのアップロード場所を第2のユーザーアカウント(または場合によっては他のユーザー)に提供することができる。第2のユーザーアカウントまたは他のユーザーは、アップロード場所を使用してコンテンツアイテムを第1のユーザーアカウントにアップロードすることができる。
共有コンテンツアイテムとのインタラクションの監視
いくつかの実施形態では、コンテンツ管理システム110は、共有コンテンツアイテムとのユーザーインタラクション(対話/相互作用)についての情報を提供することができる。いくつかの実施形態では、コンテンツ管理システム110は、ユーザーが現在共有コンテンツアイテムを見ていることを報告することができる。例えば、クライアントコラボレーションサービス158は、いずれか1つのクライアントデバイスが共有コンテンツアイテムにアクセスするときに、共有コンテンツアイテムにアクセスする他のクライアントデバイスに通知を送信するように通知サービス122を要求することができる。通知サービス122は、次いで、1つのクライアントデバイスによる共有コンテンツアイテムへのアクセスに関してすべてのクライアントデバイスに通知することができる。いくつかの実施形態では、インタラクションデータはまた、1つのクライアントデバイスを所有および/または操作しているユーザーの存在の代理として機能することができる。
いくつかの実施形態では、コンテンツ管理システム110は、共有コンテンツアイテムとのユーザーインタラクションの履歴を報告することができる。コラボレーションサービス126は、メタデータデータベース146およびサーバファイルジャーナル148などのデータソースに問い合わせて、ユーザーアカウントがコンテンツアイテムを保存したこと、ユーザーアカウントがまだコンテンツアイテムにアクセスしていないこと等を判断し、通知サービス122を使用してこの情報を他のユーザーアカウントに広め、どのユーザーアカウントが共有コンテンツアイテムと作用した(またはしなかった)かを判断する。
いくつかの実施形態において、コラボレーションサービス126は、コンテンツアイテムがコメント機能を本来サポートしていない場合でも、コンテンツに関連するコメントを容易にすることができる。そのようなコメントは、メタデータデータベース146に格納されてもよい。
いくつかの実施形態では、コラボレーションサービス126は、ユーザーへの通知を発信および送信することができる。例えば、第1のユーザーは、コメント内の第2のユーザーに言及することができ、コラボレーションサービス126は、彼がコメント内で言及されたという通知を第2のユーザーに送信することができる。コンテンツアイテムの削除、コンテンツアイテムの共有など、他のさまざまなコンテンツアイテムイベントが通知をトリガできる。
一般に、コラボレーションサービス126は、ユーザーがインスタントメッセージ、音声通話、電子メールなどを送受信することができるメッセージングプラットフォームを提供することができる。
コラボレーションコンテンツアイテム
コラボレーションサービス126はまた、ユーザーがコラボレーションコンテンツアイテムに同時に変更を加えること、コラボレーションコンテンツアイテムに関するコメントを提供すること、コラボレーションコンテンツアイテムに関連するタスクを管理することなどができるインタラクティブコンテンツアイテムコラボレーションプラットフォームを提供することもできる。これらのコラボレーションコンテンツアイテムは、ユーザーアカウントがコンテンツアイテムエディタを使用して作成および編集できるファイルにすることができ、コラボレーションを有効にするための要素を含めることができる。これらのコラボレーション要素は、コラボレーション識別子、1つまたは複数の作者および/または編集者識別子、コラボレーションテキスト、コラボレーション属性、インタラクション情報、コメント、共有ユーザー等を含むことができる。コラボレーション要素は、コラボレーションコンテンツアイテムのサーチおよび検索を可能にするためにデータベースエンティティに格納することができる。複数のユーザーアカウントが、コラボレーションコンテンツアイテムに同時にアクセスしたり、それらを表示したり、編集したりすることができる。いくつかの実施形態では、これは、2人のユーザーがコラボレーションコンテンツアイテムの同じコピーに同時に取り組むことを可能にするウェブインターフェースを介して管理することができる。
コラボレーションコンパニオンインターフェイス
いくつかの実施形態では、クライアントコラボレーションサービス158は、クライアントデバイス150上に提示されているコンテンツアイテムに関連する情報を表示する目的で、ネイティブアプリケーションコンパニオンインターフェースを提供することができる。いくつかの実施形態では、特定のコンテンツアイテムは、クライアントデバイス150上に格納され実行されるネイティブアプリケーションによってアクセスされ、コンテンツアイテムはクライアントアプリケーション150によって管理されるようにクライアントデバイス150のファイルシステムの指定位置にある。すなわち、ネイティブアプリケーションは、上記のアドレス指定されたコラボレーションデータを表示するためのいかなるネイティブの方法も提供し得ない。そのような実施形態では、クライアントコラボレーションサービス158は、ユーザーがコンテンツアイテムを開いたことを検出することができ、コラボレーションデータなどのコンテンツアイテムに関する追加の情報を含むオーバーレイを提供することができる。例えば、追加の情報は、コンテンツアイテムに対するコメント、コンテンツアイテムのステータス、他のユーザーによるコンテンツアイテムとのインタラクション等を含むことができる。そのようなオーバーレイは、別のユーザーが現在コンテンツアイテムを編集中であるために変更が失われる可能性があることをユーザーに警告することができる。
いくつかの実施形態では、上で論じたサービスまたはストレージ/データベースのうちの1つまたは複数に、パブリックまたはプライベートのアプリケーションプログラミングインターフェースを使用してアクセスすることができる。
所定のソフトウエアアプリケーションは、ユーザーアカウントの代わりに、APIを介してコンテンツストレージ142にアクセスすることができる。例えば、クライアントデバイス150上で実行されているアプリケーションなどのソフトウェアパッケージは、ユーザーアカウントが認証証明書を提供するときに、コンテンツ管理システム110に直接APIコールを行い、読み取り、書き込み、作成、削除、共有、またはその他のコンテンツ操作を行うことができる。
ユーザーは、ウェブインターフェースサービス124によって生成され提供されるウェブインターフェースを使用して、コンテンツを視たり操作したりするためにユーザーアカウントを利用することができる。例えば、ユーザーは、ウェブブラウザ内で、コンテンツ管理システム106によって提供されるユーザーアカウントに関連するウェブアドレスへと辿り着くことができる。新しいバージョンのコンテンツアイテムをアップロードするなど、ウェブインターフェースサービス124を介して行われたコンテンツストレージ142内のコンテンツに対する変更または更新は、そのユーザーアカウントに関連付けられた他のクライアントデバイスに伝播させることができる。例えば、それぞれが独自のクライアントソフトウェアを有する複数のクライアントデバイスを単一のアカウントに関連付けることができ、アカウント内のコンテンツアイテムを複数のクライアントデバイスのそれぞれの間で同期させることができる。
クライアントデバイス150は、ユーザーアカウントに代わってコンテンツ管理システム110に接続することができる。ユーザーアカウントのユーザーは、例えばクライアントデバイス150がデスクトップまたはラップトップコンピュータ、電話、テレビ、インターネットオブシングス(モノのインターネット)デバイス等であるときに、クライアントデバイス150と直接的にインタラクションすることができる。代替的に又は追加的に、例えばクライアントデバイス150がサーバである場合、クライアントデバイス150は、ユーザーがクライアントデバイス150に物理的にアクセスすることなくユーザーアカウントの代わりに行動することができる。
クライアントデバイス150のいくつかの機能は、クライアントデバイス150にインストールされたアプリケーションによって可能にされる。いくつかの実施形態では、アプリケーションはコンテンツ管理システム用のコンポーネントを含むことができる。例えば、コンテンツ管理システム固有のコンポーネントは、クライアントアプリケーション152(例えばスタンドアロンアプリケーション)、1つまたは複数のアプリケーションプラグイン、および/またはブラウザ拡張機能とすることができる。しかしながら、ユーザーはまた、クライアントデバイス150上に存在し、コンテンツ管理システム110と通信することが可能である、ウェブブラウザ、ワードプロセッサ、スプレッドシートプログラム、プレゼンテーションプログラム、ソースコード管理ツール等のようなサードパーティアプリケーションを介してコンテンツ管理システム110とインタラクションすることができる。様々な実装形態では、クライアントアプリケーション152は、ユーザーがコンテンツ管理システム110とインタラクションするためのユーザーインターフェース(UI)を提示することができる。例えば、ユーザーは、ファイルシステムと統合されたファイルシステム拡張機能154を介して、またはウェブブラウザアプリケーションを使用して表示されたウェブページを介してコンテンツ管理システム110とインタラクションすることができる。
いくつかの実施形態では、クライアントアプリケーション152は、コンテンツ管理システム110の複数のアカウントについてコンテンツを管理し同期させることができる。そのような実施形態では、クライアントアプリケーション152は、複数のアカウントにログインしたままであり、複数のアカウントに通常のサービスを提供することができる。いくつかの実施形態では、各アカウントはファイルシステム内のフォルダとして出現することができ、そのフォルダ内のすべてのコンテンツアイテムはコンテンツ管理システム110と同期することができる。いくつかの実施形態では、クライアントアプリケーション152は、プライマリアカウントまたはデフォルトアカウントとなるように複数のアカウントのうちの1つを選択するためのセレクタを含むことができる。
本開示は特定の構成要素を有するコンテンツ管理システム110を提示するが、システム100のアーキテクチャ構成は単に1つの可能な構成であり、より多いまたはより少ない構成要素を有する他の構成も可能であることを当業者は理解するであろう。更に、サービスは、他のサービスに関連付けられていると説明されている機能を含めて、より多いまたは少ない機能を有することができる。更に、特定の実施形態に関して本開示に記載されている特徴は、別の実施形態に関して説明されている特徴と組み合わせることができる。
システム100には特定の構成要素が提示されているが、システム100のアーキテクチャ構成は単に1つの可能な構成であり、それより多いまたは少ない構成要素を有する他の構成も可能であることを当業者は理解するであろう。
図2は、進行中の(current)時刻(例えば現在(present)時刻)においてコンテンツ管理システム(例えば図1のコンテンツ管理システム110)に記憶されているコンテンツアイテムの例示的なクライアントアプリケーションインターフェース200を示す。クライアントアプリケーションインターフェース200は、コンテンツ管理システム110とインタラクションするためにクライアントデバイス150にインストールされたクライアントアプリケーション202の一部とすることができる。クライアントアプリケーション202は、クライアントデバイス150のファイルシステムに統合することができ、またはスタンドアロンアプリケーションとして実装することができる。図2の例では、コンテンツ管理システムに関連するユーザーアカウントのユーザー208(例えば、User A(ユーザーA))は、(ナビゲーションペイン(pane)206に示すように)ユーザーのデスクトップコンピュータであるクライアントデバイス170上のクライアントアプリケーション202を操作する。クライアントアプリケーション202は、ユーザーアカウント212(例えば、User AのCMSアカウント)に格納されているコンテンツアイテムをリストする詳細ペイン204を含むことができる。例えば、詳細ペイン204は、(ユーザーのデスクトップ170に)ローカルに格納され、コンテンツ管理システム(例えば、コンテンツ管理システム110)と同期されているコンテンツアイテムをリストすることができる。詳細ペインは、少なくともコンテンツアイテムの名前(Name)(例えば、Roo 220、Milo 222、Research 224、Resume.doc 226、imogen.jpg 228、JohnWick.mp4 230)、コンテンツアイテムが修正された日付(Data Modified)、およびコンテンツアイテムの種類(Type)(フォルダ、文書、画像、ビデオなど)を含むことができる。
更に図2を参照する。図2に示すように、クライアントアプリケーション202は時間内に最新のものであり得る。例えば、クライアントアプリケーション202は、ユーザーアカウント(例えば、User AのCMS)からのコンテンツアイテムの最新の修正、追加、および削除を含むことができる。クライアントアプリケーション202は、「戻る(go back)」ペイン250を含むことができる。「戻る」ペインは、ユーザーが現在の時間および/または日付より前の日付(例えば、タイムスタンプ)を入力して、コンテンツ管理システムのユーザーのアカウントに格納されている、以前のバージョンのコンテンツアイテムを表示することを可能にする(図4に示すように)。日付は、ユーザーによる手動入力、カレンダからの選択、ユーザーに提供される特定の日付の選択、コンテンツアイテムが生成された重要な日付の生成されたリストからの選択を含むがこれらに限定されない様々な方法で入力できる。ここで、コンテンツアイテム(例えば、ファイル、ディレクトリ等)は重要な更新等を経たものである。日付には、年、日、月の任意の組み合わせ、月と年等のような様々な形式があるが、これらに限定されない。
図3Aおよび図3Bは、前回(例えば、2016年11月5日)にコンテンツ管理システム(例えば、図1のコンテンツ管理システム110)に格納されているコンテンツアイテムのクライアントアプリケーションインターフェース300および350の例を示す。図3Aを参照すると、ユーザーが「戻る」ペイン250に日付を入力した後(例えば、November 5, 2015(2015年11月5日))、以前のバージョンのユーザーAのユーザーアカウント(例えば、ネームスペース、ディレクトリ構造など)を生成することができる(例えば、図4と図5に関して説明したようなプレースホルダーコンテンツアイテムを使用することによって)。例えば、ナビゲーションペイン206に示すように、ユーザーアカウント340(例えば、CMS-11-5-15)を作成することができる。詳細ペイン204は、入力された時間(例えば、2016年11月5日)に以前のバージョンのコンテンツアイテムをリストすることができる。例えば、ユーザーによって入力された「戻る」日付(例えば、2015年11月5日)の前の最も最近修正されたバージョン。例えば、フォルダ320(例えば、Roo)は、最後に(2015年11月5日の前の)2015年10月2日に修正された。ユーザーアカウント212(例えばUser AのCMS)において、フォルダ320(例えばRoo)は最も最近(図2に示すように)、2017年10月4日に修正された。
更に図3Aを参照すると、ビデオファイル332(例えば、Matrix.mp4)は、2015年11月5日より前にユーザーのアカウントに格納されていたが、その後、現時点のユーザーアカウントの前に削除された(図2に示すように)。コンテンツアイテムは図3Aにリストされていないが、図2の現在の時間のユーザーアカウントにリストされているため、フォルダ224(例えば、Research)、ドキュメント226(例:Resume.doc)、画像228(imogen.jpg)、およびビデオ230(例えば、JohnWick.mp4)はすべて、2015年11月5日以降のユーザーのアカウントに格納されている。図3Bを参照すると、フォルダ332(例えば、Milo)は、下層のコンテンツアイテム(例えば、フォルダ334およびテキストファイル336)を示すために拡張することができる。下層のコンテンツアイテムは、コンテンツアイテムの以前のバージョンのディレクトリ構造の作成時に生成されたプレースホルダーコンテンツアイテム、またはフォルダ332(例えば、Milo)がアクセスされたときに生成されたプレースホルダーコンテンツアイテムとすることができる。下層のコンテンツは、オンデマンドでコンテンツ管理システム110から(例えば、完全に)ダウンロードすることができる。
図4に示す方法は、方法を実行するための様々な方法があることから、例として提供される。更に、例示的な方法は特定の順序のブロックを用いて示されているが、当業者であれば、図4および図4に示されるブロックは、本開示の技術的利点を達成する任意の順序で実行することができ、図示されているよりも少ないまたは多いブロックを含むことができることを理解するであろう。
図4に示す各ブロックは、例示の方法で実行される1つまたは複数のプロセス、方法、またはサブルーチンを表す。図4に示すブロックは、図1に示すシステム100、および、図2、3A、および3Bに示すクライアントアプリケーション200といったシステムで実施することができる。図4に示すフローチャートは、少なくとも、図1に示すシステム100、および、図2、3A、および3Bに示すクライアントアプリケーション200の要素に関連して説明され、それらを参照する。
図4は、コンテンツ管理システムに格納されたコンテンツアイテムの以前のディレクトリ構造を生成するための例示的な方法400のフロー図を示す。方法400はブロック410から開始する。ブロック410では、クライアントアプリケーションは、以前のバージョンのユーザーアカウントのディレクトリ構造に対する要求を受け取ることができる。例えば、ユーザー208(例えば、User A)は、戻るペイン250に日付(例えば、November 5, 2015(2015年11月5日))を入力して送信することができる。要求は、ユーザー208の識別情報(例えば、ユーザー識別子、ネームスペース識別子など)と共に日付を含むことができる。いくつかの例では、要求はコンテンツアイテムのための特定のディレクトリ(例えば、図3Bに示される最上位ディレクトリのサブディレクトリ)を含むことができる。
ブロック420において、クライアントアプリケーションは、提供された日付における以前のバージョンのユーザーアカウントのコンテンツアイテムについて問い合わせることができる。例えば、クライアントアプリケーション202は、日付および要求からの識別情報に基づいて、ユーザーアカウントの1つまたは複数のコンテンツアイテムについて、1つまたは複数の要求をコンテンツ管理システム110のサーバファイルジャーナル148に送信することができる。要求を受信すると、サーバファイルジャーナルは、日付を満たす1つまたは複数のコンテンツアイテムおよび要求からの識別情報を決定することができる。
ブロック430において、クライアントアプリケーションは、提供された(およびユーザーアカウント340として示された)日の前の、(ユーザー208の)ユーザーアカウント212のコンテンツアイテムの指示(インジケーション/指標)を受信する(受け取る)ことができる。例えば、クライアントアプリケーション202は、フォルダ320(例えば、Roo)、フォルダ322(例えば、Milo)、画像328(例えば、imogen.jpg)、およびビデオ332(例えば、Matrix.mp4)がユーザーアカウント340(User AのCMS、ユーザーのネームスペース等)の最上位ディレクトリに格納されたコンテンツアイテムであるという指示を受け取ることができる。いくつかの例では、指示は、コンテンツアイテムに関連する情報であり得るが、完全なコンテンツアイテムではない(例えば、ファイル名、パス、拡張子、メタデータ、一意の識別子など)。いくつかの例では、指示は最上位ディレクトリ(例えば、要求によって指示された特定のサブディレクトリ)より低くても(下でも)よい。
ブロック440において、クライアントアプリケーションは、以前のバージョンのディレクトリ構造の少なくとも一部を生成することができる。例えば、クライアントアプリケーション202の同期サービス156は、受信した指示に基づいてプレースホルダーコンテンツアイテムを生成することができる。いくつかの例では、同期サービス156は、1つのディレクトリレベル(例えば、図3Aに示すように最上位レベル)のプレースホルダーコンテンツアイテムを生成することができる。いくつかの例では、そのディレクトリ(例えば、フォルダ334、テキストファイル336)のプレースホルダーコンテンツアイテムを生成するために、フォルダ(例えば、フォルダ322 Milo)がユーザーによってナビゲートされるときに方法400を繰り返すことができる。ユーザーが、ファイルに関連付けられたプレースホルダーコンテンツアイテムによって表されるファイルにアクセスすることを望む場合、そのファイルは、コンテンツ管理システム110から(例えば、オンデマンドで)取り出すことができる。他の例では、同期サービス156は、ディレクトリ構造全体(例えば、コンテンツ管理システムにおけるユーザーAのネームスペース)のためのプレースホルダーコンテンツアイテムを生成することができる。これらの他の例では、ユーザーは、クライアントアプリケーションがコンテンツ管理システムから受信した指示からより多くのプレースホルダーコンテンツコンテンツを生成することなくディレクトリ構造をナビゲートすることができる(コンテンツ管理システム110からユーザーが検索できる(例えばオンデマンド)ファイルにアクセスしようとしない限り)。
いくつかの例では、以前のバージョンのディレクトリ構造の少なくとも一部を生成することは、オペレーティングシステム(またはシステム)に依存しない。例えば、Windows、Linux(登録商標)、Unix、OSxなどを実行しているクライアントデバイスで、以前のバージョンのディレクトリ構造を生成できる。
図5に示す方法は、方法を実行するための様々な方法があることから、例として提供される。更に、例示的な方法は特定の順序のブロックを用いて示されているが、当業者であれば、図5のおよび図5に示されているブロックは、本開示の技術的利点を達成する任意の順序で実行することができ、図示されているよりも少ないまたは多いブロックを含むことができることを理解するであろう。
図5に示す各ブロックは、例示の方法で実行される1つまたは複数のプロセス、方法、またはサブルーチンを表す。図5に示すブロックは、図1に示すシステム100、および、図2、3A、および3Bに示すクライアントアプリケーション200といったシステムで実施することができる。図5に示すフローチャートは、少なくとも、図1に示すシステム100、および、図2、3A、および3Bに示すクライアントアプリケーション200の要素に関連して説明され、それらを参照する。
図5は、コンテンツ管理システムに格納されている、以前のディレクトリ構造のコンテンツアイテムからコンテンツアイテムを検索するための例示的な方法500のフロー図を示す。方法500はブロック510から開始する。ブロック510で、クライアントアプリケーションは、以前のバージョンのディレクトリ構造のコンテンツアイテム(例えば、図3Aおよび図3Bに示すプレースホルダーコンテンツアイテムの以前のバージョンのディレクトリ構造)にアクセスするための要求を受信することができる。例えば、ユーザー208は、以前のバージョンのディレクトリ構造のプレースホルダーコンテンツアイテムへのアクセスを要求することができる。ユーザーの観点からは、ユーザーはコンテンツアイテム(ファイルなど)であって、ローカルで利用可能に見えるコンテンツアイテム(プレースホルダーコンテンツアイテムではなくフルコンテンツアイテムなど)にアクセスしようとしている。いくつかの例では、要求は、コンテンツアイテムを開くこと、および/またはコンテンツアイテムをコピーすることであり得る。いくつかの例では、要求はコンテンツアイテムの識別子(例えばハッシュ識別子)を含むことができる。
ブロック520で、クライアントアプリケーションは、プレースホルダーコンテンツアイテムに関連付けられている要求されたコンテンツアイテムについて、コンテンツ管理システムのコンテンツストレージに問い合わせることができる。例えば、クライアントアプリケーション202は、プレースホルダーコンテンツアイテムに関連付けられた識別子およびユーザー識別子を使用して、アクセスされたコンテンツアイテムについての1つまたは複数の要求をコンテンツ管理システム110のコンテンツストレージ142に送信することができる。ブロック530において、クライアントアプリケーションは、問い合わせられたコンテンツアイテムを受信することができる。
ブロック540で、クライアントアプリケーションは受信したコンテンツアイテムを以前のバージョンのディレクトリ構造に格納することができる。いくつかの例では、格納されたコンテンツアイテムは、読み取り専用のコンテンツアイテムとして格納され得る。コンテンツアイテムが完全に受信されると、ユーザー208は、コンテンツアイテムを閲覧し、コンテンツアイテムを別の場所にコピーアンドペースト(またはドラッグアンドドロップ)する、および/または、クライアントデバイスによってアクセス可能な(例えば、読み取り/書き込みをするための)別の場所(例えば、以前のバージョンのディレクトリ構造以外)にコンテンツアイテムを格納することができる。例えば、コンテンツアイテムは、以前のバージョンのユーザーアカウント340(例えば、以前のバージョンのディレクトリ構造)からユーザーアカウント212にコピーすることができる。いくつかの例では、クライアントアプリケーションは、コンテンツアイテムをプレースホルダーコンテンツアイテムと視覚的に区別することができる(例えば、チェックマークはコンテンツアイテムおよびクラウドを示すことができ、または記号はプレースホルダーコンテンツアイテムを示すことができる)。いくつかの例では、ユーザーはファイルまたはディレクトリを復元することができる。例えば、ユーザーは、以前のバージョンのディレクトリ構造(例えばフォルダ322)内のファイルまたはディレクトリ(例えばプレースホルダーコンテンツアイテム)を選択することができる。選択後、ユーザーは右クリックしてメニューを表示することができる。メニューは、ディレクトリまたはファイルをユーザーアカウント212(例えば、User AのCMS)に復元するためのオプションを含むことができる。いくつかの例では、復元はファイルまたはディレクトリの現在のバージョンを上書きすることができる。他の例では、復元は新しいファイルまたはディレクトリを新しい名前で書き込むことができる(例えば、Milo-11-05-2015)。他の例では、ユーザーは、フォルダまたはファイルを以前のバージョンのディレクトリ構造(例えば340)から現在のバージョンのディレクトリ構造(例えば212)にドラッグアンドドロップすることができる。いくつかの例では、完全なコンテンツアイテム(例えば、フォルダ、ファイルなど)がまだダウンロードされていないとき(すなわち、ドラッグアンドドロップ操作の前)、ドラッグアンドドロップ操作は、完全なコンテンツアイテムのダウンロードをトリガし、以前のバージョンのディレクトリ構造を使用して、ドロップされた場所(例えば、現在のバージョンのディレクトリ構造、ユーザーのデスクトップ上の別の場所等)に完全なコンテンツアイテムを格納する。
図6は、システムの構成要素が接続605を使用して互いに通信しているコンピューティングシステム600の一例を示す。接続605は、バスを介した物理的接続、またはチップセットアーキテクチャなどにおけるプロセッサ610への直接接続とすることができる。接続605は、仮想接続、ネットワーク接続、または論理接続とすることもできる。
いくつかの実施形態では、コンピューティングシステム600は、本開示で説明されている機能をデータセンター、複数のデータセンター、ピアネットワーク等の中に分散させることができる分散システムである。接続605は、バスを介した物理的接続、またはチップセットアーキテクチャーなどにおけるプロセッサ610への直接接続とすることができる。いくつかの実施形態では、構成要素は物理的デバイスまたは仮想デバイスとすることができる。
例示的なシステム600は、少なくとも1つの処理装置(CPUまたはプロセッサ)610と、読み取り専用メモリ(ROM)およびランダムアクセスメモリ(RAM)などのシステムメモリ615を含む様々なシステム構成要素をプロセッサ610に結合する接続605とを含む。コンピューティングシステム600は、プロセッサ610に直接接続されているか、近接しているか、あるいはその一部として統合されている高速メモリのキャッシュを含んでもよい。
プロセッサ610は、プロセッサ610を制御するように構成された任意の汎用プロセッサと、ストレージデバイス630に格納されたサービス632、634、および636などのハードウェアサービスまたはソフトウェアサービスと、実際のプロセッサ設計にソフトウェア命令が組み込まれる特殊用途プロセッサとを含むことができる。プロセッサ610は本質的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュ等を含んでいる、完全に自己完結型のコンピュータシステムであってもよい。複数のコアプロセッサは対称又は非対称であってもよい。
ユーザーとのインタラクションを可能にするために、コンピューティングシステム600は、音声用のマイクロフォン、ジェスチャまたはグラフィック入力用のタッチスクリーン、キーボード、マウス、動作入力、音声などの任意の数の入力機構を表すことができる入力デバイス645を含む。コンピューティングシステム600は、当業者に知られているいくつかの出力機構のうちの1つまたは複数とすることができる出力デバイス635も含むことができる。場合によっては、多様なシステムによって、ユーザーが、コンピューティングシステム600と通信するための複数のタイプの入力を行うことが可能になる。コンピューティングシステム600は、一般にユーザー入力およびシステム出力を管理および管理することができる通信インターフェース640を含み得る。特定のハードウェア構成上で動作することについての制限はなく、従って、本明細書での基本的な特徴は、改良型のハードウェア構成やファームウェア構成が開発されれば、それらと容易に置き換わりうる。
ストレージデバイス630は、不揮発性メモリデバイスとすることができ、ハードディスク、または磁気カセット、フラッシュメモリカード、固体メモリ装置、デジタル汎用ディスク、カートリッジ、ランダムアクセスメモリ(RAM)、読み取り専用メモリ(ROM)、および/またはこれらのデバイスの組み合わせ等のコンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体とすることができる。
ストレージデバイス630は、ソフトウェアサービス、サーバ、サービスなどを含むことができ、そのようなソフトウェアを定義するコードがプロセッサ610によって実行されるとき、それはシステムに機能を実行させる。いくつかの実施形態では、特定の機能を実行するハードウェアサービスは、機能を実行するために、プロセッサ610、接続605、出力デバイス635などの必要なハードウェア構成要素に関連してコンピュータ可読媒体に格納されたソフトウェア構成要素を含み得る。
説明の明確化のため、ある例では、本技術はデバイスやデバイスコンポーネントやソフトウエアで実施される方法のステップまたはルーチンやハードウエアとソフトウエアとの組み合わせを含む機能ブロックを含む個々の機能ブロックを含むものとして提示されてもよい。
本明細書で説明されるステップ、動作、機能、またはプロセスのいずれも、単独でまたは他のデバイスと組み合わせて、ハードウェアおよびソフトウェアサービスまたはサービスの組み合わせによって実行または実装され得る。いくつかの実施形態では、サービスは、クライアントデバイスのメモリおよび/またはコンテンツ管理システムの1つ以上のサーバに常駐し、プロセッサがそのサービスに関連するソフトウェアを実行するときに1つ以上の機能を実行するソフトウェアであり得る。いくつかの実施形態では、サービスはプログラム、または特定の機能を実行するプログラムの集まりである。いくつかの実施形態では、サービスはサーバと見なすことができる。メモリは、非一時的コンピュータ可読媒体とすることができる。
いくつかの実施形態では、コンピュータ可読格納デバイス、媒体およびメモリは、ビットストリームを含むケーブルや無線信号などを含んでもよい。しかしながら、言及される場合、非一時的コンピュータ可読格納媒体は、エネルギやキャリア信号や電磁波や信号そのものなどの媒体を明示的に除外する。
上述の例に係る方法は、コンピュータ可読媒体に格納されるかそうでなければその媒体から利用可能なコンピュータ実行可能な命令(インストラクション)を使用して実装されてもよい。そのような命令は、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに所定の機能もしくは機能のグループを実行させるかそうでなければ実行するよう設定する命令およびデータを含んでもよい。使用されるコンピュータリソースの一部はネットワークを介してアクセス可能であってもよい。コンピュータ実行可能な命令は、例えば、バイナリや、アセンブリ言語などの中間フォーマットの命令や、ファームウエアや、ソースコードであってもよい。説明された例による方法の間に使用され得る命令、使用される情報、および/または情報を格納するために使用され得るコンピュータ可読媒体の例は、磁気または光ディスク、固体メモリデバイス、フラッシュメモリ、不揮発性メモリを備えるUSBデバイス、ネットワークストレージデバイス等を含む。
本開示に係る方法を実装するデバイスはハードウエア、ファームウエアおよび/またはソフトウエアを含んでもよく、種々のフォームファクタのうちの任意のものをとりうる。そのようなフォームファクタの典型的な例は、サーバ、ラップトップ、スマートフォン、小さいフォームファクタのパーソナルコンピュータや、パーソナルデジタルアシスタントなどを含む。本明細書で説明される機能は周辺機器やアドインカードにおいて実現されてもよい。さらなる例として、そのような機能は回路基板上で異なる複数のチップの間でまたは単一デバイスで実行される異なる複数の処理の間で実現されてもよい。
命令、そのような命令を運ぶための媒体、そのような命令を実行するための計算リソース、およびそのような計算リソースをサポートするための他の構成は、本開示で説明される機能を提供するための手段である。
本明細書で使用されるように、閾値を上回ることは、比較下のアイテムが特定の他の値を上回る、比較下のアイテムが最大値を有する特定の特定数のアイテムの中にある、または比較下のアイテムが特定の上位パーセンテージの量内の値にあることを意味する。本明細書で使用されるように、閾値を下回ることは、比較下のアイテムが特定の他の値を下回る、比較下のアイテムが最小値を有する特定の特定数のアイテムの中にある、または比較下のアイテムが特定の下位パーセンテージの量内の値にあることを意味する。本明細書で使用されるように、閾値内にあることは、比較下のアイテムが2つの特定の他の値の間にある、比較下のアイテムが中間の特定の数のアイテムの中にある、または比較下のアイテムが中間の特定のパーセンテージの範囲内にあることを意味する。他に定義されていない場合、高いまたは重要でないなどの相対的な用語は、値を割り当て、その値が確立されたしきい値とどのように比較されるかを決定するものとして理解できる。例えば、「高速接続を選択する」という語句は、閾値を超える接続速度に対応して割り当てられた値を有する接続を選択することを意味すると理解することができる。
本明細書で使用されているように、単語「または」は、1セットのアイテムの可能な順列を指す。例えば、句「A、B、またはC」は、A、B、Cの少なくとも1つ、または、A;B;C、AとB、AとC、BとC、A、B、およびC;または、AとA;B、BおよびC;A、A、B、CおよびC;といった複数の任意のアイテムといったそれらの任意の組み合わせのうちの少なくとも1つを指す。更に、ある要素および別の要素の「少なくとも1つ」を列挙しているクレーム表現は、その要素のセットの可能な限りの置換を意味する。例えば、「AとBの少なくとも一方」または「AとBの少なくとも一方」と記載しているクレーム表現は、A、B、またはAとBの両方を意味する。
添付の請求項の範囲内の態様を説明するために様々な例および他の情報が使用されたが、そのような例における特定の特徴や構成に基づくいかなる請求項の限定も暗示されてはならない。当業者であれば、これらの例を使用して多種多様な実装を導くことができるであろう。さらに、いくつかの主題が構造的特徴および/または方法ステップの例に特有の言語で記述されたかもしれないが、添付の請求項で規定される主題はこれらの記述された特徴や行為に限定される必要はないことは理解されるべきである。例えば、そのような機能は異なるように分散されてもよいし、本明細書で特定されたもの以外のコンポーネントで実行されてもよい。むしろ、記述された特徴およびステップは、添付の請求項の範囲内のシステムおよび方法のコンポーネントの例として開示される。