(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0006】
本開示のさまざまな実施の形態について、以下に詳しく論じる特定の実装について論じているが、これは説明のみを目的として行われていることを理解されたい。当業者は、本開示の趣旨および範囲から逸脱することなく他のコンポーネントや構成が用いられうることを認識するであろう。
【0007】
図1A−1Cは、非管理コンテンツアイテムを共有するための例示的なグラフィカルユーザインタフェース(GUI)100、120および150を示す。例えば、コンテンツライブラリはオンラインコンテンツ管理システムによって管理されている任意の数の個別のコンテンツアイテムからなってもよい。コンテンツライブラリに関連付けられているコンテンツアイテムは、クライアントコンピュータシステムにおいて、オンラインコンテンツ管理システムによって管理されていないコンテンツアイテムを含むファイルディレクトリ構造と共存してもよい。したがって、非管理コンテンツアイテムは、加入者のコンテンツライブラリの外部にあり、したがって、オンラインコンテンツ管理システムによって管理されないコンテンツアイテムである。オンラインコンテンツ管理システムはデバイスに亘って加入者のコンテンツライブラリを管理(例えば、保持、同期等)する。コンテンツアイテム(例えば、管理されているか管理されていない)は、文書、テキストファイル、音声ファイル、ビデオファイルなどの任意のタイプのファイルであってもよい。さらに、コンテンツアイテムは、フォルダかまたはコンテンツアイテムを一緒にグループ化する他の機構であってもよい。
【0008】
ある実施では、計算デバイス(例えば、モバイルデバイス、ハンドヘルドデバイス、ラップトップコンピュータ、タブレットコンピュータ、クライアントデバイスなど)は、オンラインコンテンツ管理システムの加入者が受領者ユーザ(例えば、オンラインコンテンツ管理システムの他の加入者や非加入者)と非管理コンテンツアイテムを共有することができるよう、グラフィカルユーザインタフェース100、120および150を表示するよう構成されてもよい。
【0009】
図1Aは、受領者ユーザと共有すべき外部のコンテンツアイテムを選択するための例示的グラフィカルユーザインタフェース100を示す。例えば、GUI100は、クライアントデバイスのファイルシステムフォルダを表すグラフィカル要素102(例えば、ウインドウ)を含んでもよい。例えば、クライアントデバイスは、加入者のコンテンツライブラリのコピーを保持するよう構成され、かつ、コンテンツライブラリ内のコンテンツアイテムをオンラインコンテンツ管理システムと同期させるよう構成された計算デバイスであってもよい。クライアントデバイスは、オンラインコンテンツ管理システムにアクセス可能かつ加入者のオンラインコンテンツライブラリにアクセス可能な計算デバイスであってもよい。
【0010】
ある実施では、グラフィカル要素102により表示されるファイルシステムフォルダは、オンラインコンテンツ管理システムによって管理されるコンテンツライブラリの外部のフォルダであってもよい。ファイルシステムフォルダ内のコンテンツアイテムもまたコンテンツライブラリの外部であってもよく、したがって管理されていなくてもよい。クライアントデバイスのユーザ(例えば、加入者)は、グラフィカル要素102により提示された非管理コンテンツアイテム104を選択し、グラフィカル要素106を表示させてもよい。グラフィカル要素106はポップアップウインドウやプルダウンメニューであってもよく、または、選択された非管理コンテンツアイテムに対して行われるべき機能を提示して選択するための他のグラフィカル要素であってもよい。例えば、グラフィカル要素106は、選択された非管理コンテンツアイテムをユーザのコンテンツアイテムに加えるかそこに移動させるための選択可能アイテムを含んでもよい。
【0011】
ある実施では、グラフィカル要素106は、選択された非管理コンテンツアイテム104を受領者と共有するための選択可能アイテム108を含んでもよい。例えば、ユーザは、選択された非管理コンテンツアイテム104に対するリンク(例えば、URL、ファイルパス、呼び出し可能参照など)を生成するために、アイテム108を選択してもよい。例えば、非管理コンテンツアイテム104が選択されると、クライアントデバイスは非管理コンテンツアイテム104をオンラインコンテンツ管理システムにアップロードしてもよい。オンラインコンテンツ管理システムはクライアントデバイスに、オンラインコンテンツ管理システムによって保持される非管理コンテンツアイテム104のオンラインコピーへのリンクを返してもよい。オンラインコンテンツ管理システムは非管理コンテンツアイテム104をユーザのコンテンツライブラリの外部に保持しつつ、リンクの受領者がオンラインで非管理コンテンツアイテム104にアクセスすることを可能としてもよい。
【0012】
図1Bは、共有リンクのためのアクセス可用性パラメータを指定するための例示的なグラフィカルユーザインタフェース120を示す。例えば、
図1Aを参照して上述されたようにユーザが非管理コンテンツアイテムへのリンクを共有することを選択することに応じて、GUI120が表示されてもよい。GUI120は、生成されたリンク124(例えば、URL)を示すグラフィカル要素122(例えば、ウインドウやポップアップなど)と、そのリンクに誰がアクセス可能かをユーザが指定することを可能とするグラフィカル要素126(例えば、プルダウンメニュー)と、そのリンクの有効期限をユーザが指定することを可能とするグラフィカル要素128(例えば、プルダウンメニュー)と、を含んでもよい。例えば、ユーザによって選択される場合、グラフィカル要素126はオプション(例えば、だれでも、特定のグループ、特定の受領者)の選択可能なリストを提示してもよい。ユーザは、このリストから選択することで、生成されたリンクに誰がアクセス可能かを指定できる。アクセス権が与えられていない受領者ユーザがリンクを用いて非管理コンテンツアイテムへのアクセスを試みた場合、その受領者は、そのユーザはリンクにアクセスする権利を有さないことを示す通知を受けるであろう。ユーザによって選択される場合、グラフィカル要素128はオプション(例えば、一日、三十日、二ヶ月、一年など)の選択可能なリストを提示してもよい。ユーザは、このリストから選択することで、生成されたリンクの有効期限を指定できる。有効期限が到来すると、オンラインコンテンツ管理システムはリンクを非アクティブ化させる。有効期限後にリンクを用いることを試みる受領者は、リンクがもはやアクティブでないことを示す通知をオンラインコンテンツ管理システムから受けるであろう。ある実施では、ユーザはリンクをキャンセルするための明示的な入力を提供してもよい。例えば、生成されたリンクのリストを示すユーザインタフェースが表示されてもよい。ユーザは、リンクの隣のグラフィカル要素(例えば、ボタン)を選択することで、リンクをキャンセルすることができる。キャンセルされたリンクを用いることを試みる受領者は、リンクがもはやアクティブでないことを示す通知をオンラインコンテンツ管理システムから受けるであろう。
【0013】
図1Cは、非管理コンテンツアイテムへのリンクを共有するための例示的なグラフィカルユーザインタフェース150を示す。例えば、グラフィカルユーザインタフェース150はクライアントデバイス上で構成される電子メッセージアプリケーションのユーザインタフェースであってもよい。GUI150は、電子メッセージ(例えば、テキストメッセージ、インスタントメッセージ、電子メールメッセージなど)の内容を示すグラフィカル要素152(例えば、ウインドウ)を含んでもよい。ユーザがGUI100および/またはGUI120を用いて非管理コンテンツアイテムへのリンクを生成した後、ユーザは、そのリンクを表すテキスト154(例えば、URL、ファイルパスなど)を電子メッセージに貼り付けてもよい。ユーザは次にそのリンクを含む電子メッセージを受領者に送ってもよい。電子メッセージを受け取ると、受領者はテキスト154を選択することでリンクを呼び出し、そのリンクによって表される(例えば、参照される)非管理コンテンツアイテムを見ることができる。例えば、リンクが選択されると、ウェブブラウザウインドウが開き、リンクされている非管理コンテンツアイテムがそのウェブブラウザウインドウに表示されてもよい。リンクされている非管理コンテンツアイテムが見れない状態にある場合、ウェブブラウザウインドウは後述のようにエラーメッセージを表示してもよい。
【0014】
図2は、オンラインコンテンツ管理システムを用いて非管理コンテンツアイテムを共有するための例示的システム200を示すブロック図である。システム200はクライアントデバイス202とオンラインコンテンツ管理システム220とを含んでもよい。例えば、オンラインコンテンツ管理システム220は、コンテンツ管理システム220の大規模データ処理およびストレージ要求を取り扱うために、複数のサーバ、データベースおよび他の計算デバイスを含んでもよい。本明細書で説明されるオンラインコンテンツ管理システム220のコンポーネントは、オンラインコンテンツ管理システムを構成する複数のサーバやデータベースや他のデバイスのうちのひとつ以上において構成されてもよい。
【0015】
ある実施では、クライアントデバイス202は、クライアントデバイス202上でローカルコンテンツライブラリ210を管理するコンテンツクライアント204を含んでもよい。コンテンツライブラリ210はオンラインコンテンツ管理システム220によって管理され、かつ、他のクライアントデバイスと同期される種々のコンテンツアイテムを含んでもよい。ある実施では、コンテンツクライアント204は、コンテンツ管理システム220のコンテンツマネジャ222と通信し、コンテンツライブラリ210をコンテンツ管理システム220のコンテンツライブラリ226と同期させてもよい。
【0016】
ある実施では、コンテンツライブラリ210はコンテンツ管理システム220によって、コンテンツメタストア224内のコンテンツメタデータおよびコンテンツデータストア230内のコンテンツデータブロックとして保持されてもよい。例えば、コンテンツマネジャ222はコンテンツライブラリ210を表すメタデータをコンテンツメタストア224(例えば、データベース、データストア、データベーステーブルなど)に格納してもよい。ある実施では、コンテンツメタストア224は、コンテンツ管理システム220によって管理されるコンテンツライブラリのそれぞれについてのコンテンツライブラリメタデータ226を含んでもよい。
【0017】
ある実施では、異なるコンテンツライブラリについてのメタデータは名前空間を用いて区別されてもよい。例えば、第1ユーザのコンテンツライブラリは第1名前空間に関連付けられてもよい。第2ユーザのコンテンツライブラリは第2名前空間に関連付けられてもよい。クライアントデバイス(例えば、クライアントデバイス202)がそのコンテンツライブラリ(例えば、コンテンツライブラリ210)をコンテンツ管理システム220に同期させる場合、クライアントデバイスはクライアントのコンテンツライブラリに関連付けられた名前空間に関連付けられたコンテンツを受けるであろう。したがって、ユーザのコンテンツライブラリの名前空間に関連付けられたコンテンツアイテムのみがユーザのコンテンツライブラリに表示されるであろう。
【0018】
ある実施では、コンテンツライブラリ226に保持されるメタデータは、コンテンツライブラリ210の内容(例えば、コンテンツアイテムの位置、コンテンツアイテムのサイズ、コンテンツアイテムの識別子など)を記述してもよい。例えば、コンテンツライブラリ226に保持されるメタデータは、コンテンツライブラリ210のディレクトリ構造(例えば、ディレクトリの階層)を模してもよい。コンテンツライブラリ226に保持されるメタデータは、コンテンツライブラリ210に関連付けられたコンテンツ(例えば、種々のタイプのファイル)に対応する、コンテンツストア230に保持されるデータブロックを参照(例えば、ポインタやメモリアドレスを用いて)してもよい。したがって、コンテンツマネジャ222はコンテンツライブラリ226に保持されるメタデータを用いることで、コンテンツライブラリ210に保持されるコンテンツアイテムに対するコンテンツデータを取得することができる。
【0019】
ある実施では、コンテンツデータストア230(例えば、データベースやファイルシステムなど)は、コンテンツマネジャ222によって管理されるコンテンツアイテムに対応するデータブロックを保持してもよい。例えば、コンテンツクライアント204がコンテンツライブラリ210をコンテンツ管理システム220と同期させる場合、コンテンツライブラリ210内の各コンテンツアイテムのためのコンテンツデータ(例えば、ファイル、データブロックなど)はコンテンツストア230に保持され、かつそこから取得されてもよい。ある実施では、コンテンツストア230に保持されるコンテンツデータブロックはハッシュ値によりインデクス化される。例えば、クライアントデバイスまたはサーバデバイスが対応するデータブロックの内容をハッシュ化することによって、ハッシュ値を生成してもよい。特定のデータブロックのインデクスは、その特定のデータブロック内のデータに基づいて生成されたハッシュ値である。
【0020】
ある実施では、コンテンツマネジャ222はコンテンツメタストア224に保持されるコンテンツアイテムメタデータを用いて、コンテンツデータストア230において保持されるコンテンツアイテム(例えば、データ)を探してもよい。例えば、クライアントデバイス202のユーザは、コンテンツライブラリ210内で管理されているコンテンツアイテムへのリンクを共有してもよい。受領者はリンクを用いてコンテンツマネジャ222に、リンクされているコンテンツアイテム(例えば、リンクはリンクされているコンテンツアイテムへの参照である)へのアクセス要求を送信してもよい。コンテンツマネジャ222は管理されているコンテンツアイテムを特定する要求を受領者から受信してもよい。コンテンツアイテムは、リンクやURLやコンテンツパスや他の識別子によって特定されてもよい。コンテンツマネジャ222はコンテンツアイテム識別子をコンテンツライブラリ226に保持される複数のコンテンツ識別子(例えば、リンク、URL、コンテンツパス等)と比較し、コンテンツライブラリ226内のマッチするコンテンツアイテムメタデータエントリを特定してもよい。コンテンツマネジャ222はマッチするコンテンツアイテムメタデータ内のポインタを用いて、コンテンツデータストア230に保持されるコンテンツアイテムデータブロックを探しだし、コンテンツアイテムデータを要求元のクライアントデバイスに返してもよい。
【0021】
図3は、非管理コンテンツアイテムへのリンクを共有するための例示的なクライアントプロセス300を示す。ある実施では、オンラインコンテンツ管理システム220のユーザ(例えば、加入者)は非管理コンテンツアイテムへのリンクを共有してもよい。例えば、ユーザは、コンテンツライブラリ210の外部に保持されるコンテンツアイテムへのリンクを共有してもよい。ユーザは、例えばコンテンツクライアント204およびコンテンツ管理システム202を用いて、クライアントデバイス202のファイルシステム206に保持される非管理コンテンツアイテムへのリンクを共有してもよい。
【0022】
ステップ302において、クライアントデバイスは非管理コンテンツアイテムを共有するためのユーザ入力を受け付けてもよい。ある実施では、ユーザはクライアントデバイス202のファイルシステム206に保持される非管理コンテンツアイテム(例えば、ファイル、画像、ビデオ、音声等)を選択し、受領者と共有してもよい。例えば、ユーザは、
図1Aのグラフィカルユーザインタフェース100を用いて、非管理コンテンツアイテムを選択し、共有リンクオプションを呼び出してもよい。
【0023】
ステップ304において、クライアントデバイスは選択された非管理コンテンツアイテムのコピーをキャッシュに保存してもよい。例えば、非管理コンテンツアイテムの選択を受け付け、共有リンクオプションが呼び出されると、コンテンツクライアント204は選択されたコンテンツアイテムをクライアントデバイス202上のキャッシュ208(例えば、メモリ)にコピーしてもよい。ある実施では、コンテンツクライアント204はクライアントデバイス202が選択されたコンテンツアイテムをコピーするのに十分な量のメモリが利用可能か否かを判定してもよい。選択されたコンテンツアイテムをコピーするのに十分な量のメモリが利用可能でない場合、コンテンツクライアントは、操作を完了するのに十分な量のメモリが利用可能でないことを示す通知をユーザに提供してもよい。コンテンツアイテムをコピーするのに十分な量のメモリが利用可能である場合、コンテンツクライアント204はコンテンツアイテムをキャッシュ208にコピーしてもよい。非管理ファイルのコピーをキャッシュ208に保存することで、コンテンツクライアント204は、ユーザがそのコンテンツアイテムへのリンクを生成することを選択した時点でのそのコンテンツアイテムの状態を表す選択されたコンテンツアイテムのスナップショットを生成することができる。その後、ファイルシステム206においてコンテンツアイテムが変更された場合、キャッシュ208に保持されるコンテンツアイテムのスナップショットコピーは変更されないであろう。
【0024】
ステップ306において、クライアントデバイスは選択されたコンテンツアイテムを記述する情報をコンテンツサーバに送信してもよい。例えば、コンテンツクライアント204は選択された非管理コンテンツアイテムの説明を生成してもよい。その説明は、とりわけ、ファイルシステム206内での非管理コンテンツアイテムのディレクトリ位置(例えば、コンテンツパス)を含む。
【0025】
ステップ308では、クライアントデバイスは非管理コンテンツアイテムへのリンクをサーバから受け付けてもよい。例えば、コンテンツクライアント204は非管理コンテンツアイテムの説明をコンテンツ管理システム220のコンテンツマネジャ222に送信してもよい。コンテンツマネジャ222は外部のコンテンツメタストア228にメタデータエントリを生成してもよい。メタデータエントリは非管理コンテンツアイテムの説明からのデータを含む。例えば、コンテンツマネジャ222は外部のコンテンツメタストア228にエントリを生成してもよい。このエントリは、非管理コンテンツアイテムのディレクトリ位置を含み、該ディレクトリ位置のプレフィックスは隠された名前空間識別子(例えば「hidden_ns」)およびスナップショット識別子(例えば「snapshot1」)を有する。外部コンテンツアイテムのメタデータは、外部のコンテンツメタストア228において、例えば「hidden_ns:/snapshot/<snapshot id>/<content path>」と表現されてもよい。したがって、選択された非管理コンテンツアイテムがクライアントデバイス202において「/user/pics/smiley.jpg」にある場合、非管理コンテンツアイテムに対応する、外部のコンテンツメタストア228のエントリは例えば「hidden_ns:/snapshot/snapshot1/user/pics/smiley.jpg」となる。非管理コンテンツアイテムに対するエントリが外部のコンテンツメタストア228に生成されると、コンテンツマネジャ222は、外部のコンテンツメタストア228上で非管理コンテンツアイテムのエントリを参照するリンク(例えば、URL、コンテンツパスなど)を生成してもよい。コンテンツマネジャ222は次にそのリンクをコンテンツクライアント204に返してもよい。例えば、隠された名前空間(例えば、ユーザのコンテンツライブラリの名前空間でないもの)を用いることにより、コンテンツライブラリが同期されクライアントデバイス202に表示されるときに、非管理コンテンツアイテムはユーザのコンテンツライブラリには現れないであろう。これにより、ユーザのコンテンツライブラリの外部にあるという非管理コンテンツアイテムの外観を保つことができる。
【0026】
ステップ310において、クライアントデバイスは受け付けたリンクをクライアントデバイスのキャッシュに格納してもよい。例えば、コンテンツクライアント204は非管理コンテンツリンクをキャッシュ208に格納してもよい。キャッシュ208にリンクが格納されると、
図1BのGUI150を参照して上述された通り、ユーザはそのリンクを電子メッセージに挿入することができる。
【0027】
ステップ312において、クライアントデバイスは、非管理コンテンツアイテムをコンテンツ管理システム220にアップロードすべきであると決定してもよい。例えば、コンテンツクライアント204は非管理コンテンツアイテムの内容に基づいてハッシュ値を生成してもよい。ある実施では、非管理コンテンツアイテムのデータはひとつ以上のデータブロックとして保持されてもよい。コンテンツクライアント204は各データブロックのハッシュ値を生成してもよい。コンテンツクライアント204はコンテンツマネジャ222にハッシュ値を送信してもよい。コンテンツマネジャ222はそのハッシュ値を、コンテンツストア230に保持されるデータブロックに対応するハッシュ値インデクスと比較してもよい。送信されたハッシュ値がハッシュ値インデクスとマッチする場合、非管理コンテンツアイテムのデータブロックをコンテンツ管理システム220にアップロードする必要はない。そのデータブロックはコンテンツストア230に既に存在するからである。送信されたハッシュ値がコンテンツストア230のハッシュ値インデクスとマッチしない場合、送信されたハッシュ値に対応するデータブロックをコンテンツ管理システム220にアップロードし、コンテンツストア230に格納すべきである。コンテンツマネジャ222は、コンテンツストア230に存在しないハッシュ値のリストを生成し、そのハッシュ値のリストをコンテンツクライアント204に送信し、コンテンツストア230にどのデータブロックがないかを示してもよい。
【0028】
ステップ314において、クライアントデバイスは、非管理コンテンツアイテムをコンテンツ管理システム220にアップロードしてもよい。例えば、コンテンツクライアントは、ステップ316でコンテンツマネジャ222から受信したハッシュ値のそれぞれに関連付けられたコンテンツデータを、コンテンツマネジャ222に送信してもよい。ある実施では、リンクの生成に応じて開始されるコンテンツアイテムのアップロードは、他のコンテンツのアップロードや同期動作よりも高い優先度が与えられるであろう。例えば、コンテンツクライアント204は、他の(例えば、リンクされていない)コンテンツライブラリのアイテムをアップロードまたは同期させる前に、リンクに関連付けられたコンテンツアイテムのデータブロックをアップロードするであろう。非管理コンテンツアイテムに関連付けられた全てのデータがコンテンツ管理システム220にアップロードされると、コンテンツクライアント222はコンテンツマネジャ222に最終化メッセージを送信してもよい。例えば、最終化メッセージは、非管理コンテンツアイテムの全てのコンテンツデータがコンテンツ管理システム220にアップロードされたことをコンテンツマネジャ222に通知するよう構成されてもよい。
【0029】
ある実施では、コンテンツクライアント204は、コンテンツクライアント204が非管理コンテンツアイテムをコンテンツ管理システム220にアップロードしている間に、そのリンクされた非管理コンテンツアイテムが変化したことを判定してもよい。例えば、コンテンツクライアント204が非管理コンテンツアイテムをコンテンツ管理システム220にアップロードしている間に、クライアントデバイス202のユーザはその非管理コンテンツアイテムの内容を変更してもよい。非管理コンテンツアイテムがコンテンツ管理システム220にアップロードされた後、コンテンツクライアント204はファイルシステム206に保持される非管理コンテンツアイテムのアップロード後ハッシュ値を生成し、そのアップロード後ハッシュ値をステップ306で生成されたハッシュ値と比較してもよい。それらのハッシュ値が異なる場合、ファイルシステム206に保持されるコンテンツアイテムは変更されたものである。コンテンツアイテムが変更されたとコンテンツクライアント204が判定する場合、コンテンツクライアント204は最終化メッセージにおいて、コンテンツアイテムが変更されたことを示してもよい。ある実施では、コンテンツクライアント204は、生成されたリンクに関連付けられているコンテンツアイテムがアップロードプロセス中に変更されたことを示す通知をユーザに提示してもよい。
【0030】
ステップ316において、クライアントデバイスは電子文書にリンクを挿入するためのユーザ入力を受け付けてもよい。例えば、
図1BのGUI150を参照して上述された通り、ユーザはそのリンクを電子メッセージに挿入することができる。
【0031】
図4は、非管理コンテンツアイテムへのリンクを共有するための例示的なサーバプロセス400を示す。例えば、サーバ(例えば、コンテンツ管理システム220)は管理されているコンテンツアイテムのメタデータとは別に、非管理コンテンツアイテムのメタデータを保持してもよい。その結果、コンテンツライブラリがクライアントデバイス202に表示されるときに、ユーザのコンテンツライブラリの外部にあるコンテンツアイテムはユーザのコンテンツライブラリに表示されない。
【0032】
ステップ402において、サーバは非管理コンテンツアイテムについての情報を受け付けてもよい。例えば、コンテンツマネジャ222は、ユーザのコンテンツライブラリ(例えば、コンテンツライブラリ210)の一部ではないコンテンツアイテムへのリンクを生成するための要求を、コンテンツクライアント204から受け付けてもよい。要求は、非管理コンテンツアイテムについての情報(例えば、メタデータ)を含んでもよい。情報は、非管理コンテンツアイテムの位置および識別子に対応するディレクトリパスおよびファイル名を含んでもよい。
【0033】
ステップ404において、サーバは、外部のコンテンツメタストア228において、非管理コンテンツアイテムの隠されたスナップショットエントリを生成してもよい。例えば、(例えば管理されているコンテンツアイテムのために使用される)コンテンツライブラリメタストア226にメタデータエントリを生成する代わりに、コンテンツマネジャ222は外部のコンテンツメタストア228に、非管理コンテンツアイテムのためのメタデータエントリを生成してもよい。メタデータエントリはディレクトリパスおよびコンテンツアイテムの識別子を含んでもよい。メタデータエントリはコンテンツデータストア230に保持される非管理コンテンツアイテムのデータのデータブロックへのポインタを含んでもよい。例えば、メタデータエントリは、エントリの名前空間(例えば、hidden_ns)と、エントリのスナップショット識別子(例えば、shapshot_id)と、クライアントデバイスのディレクトリ構造において非管理コンテンツアイテムがクライアントデバイス202上で配置される位置に対応するパスと、を特定するストリング(例えば、「hidden_ns:/snapshot/<snapshot_id>/<path>」)を保持してもよい。
【0034】
ステップ406において、サーバはクライアントデバイスにスナップショットリンクを送信してもよい。例えば、コンテンツマネジャ222は、ステップ404で生成された非管理コンテンツアイテムのメタデータエントリへのリンク(例えば、URL、アドレスなど)を生成し、そのリンクをクライアントデバイス202のコンテンツクライアント204に送信してもよい。
【0035】
ステップ408において、サーバは非管理コンテンツアイテムの内容を特定する情報を受け付けてもよい。例えば、コンテンツクライアント204はコンテンツアイテムのコンテンツデータに基づいてハッシュ値を生成してもよい。コンテンツクライアント204は非管理コンテンツアイテムのデータについて単一のハッシュ値を生成してもよい。コンテンツクライアント204は非管理コンテンツアイテムに関連付けられたデータの各ブロックについてハッシュ値を生成してもよい。ハッシュ値が生成されると、コンテンツクライアント204はコンテンツマネジャ222にハッシュ値を送信してもよい。
【0036】
ステップ410において、サーバは、非管理コンテンツアイテムが現在サーバに保持されていないことを決定してもよい。例えば、コンテンツマネジャ222は受け付けたハッシュ値を、コンテンツストア230に保持されるコンテンツデータに対応するハッシュ値インデクスと比較してもよい。受け付けたハッシュ値がコンテンツストア230に既に存在する場合、コンテンツマネジャ222はハッシュ値の空のリストをコンテンツクライアント204に返してもよい。受け付けたハッシュ値のいずれかがコンテンツストア230に既に存在するものでない場合、コンテンツマネジャ222はコンテンツストア230に既に存在するものではないコンテンツデータのハッシュ値のリストを返してもよい。
【0037】
ステップ412において、サーバは欠落しているコンテンツアイテムデータの識別子のリストをクライアントに送信してもよい。例えば、受け付けたハッシュ値のいずれかがコンテンツストア230に見出されない場合、コンテンツマネジャ222はコンテンツストア230に存在しないハッシュ値のリストをコンテンツクライアント204に返してもよい。
【0038】
ステップ414において、サーバは非管理コンテンツアイテムのコンテンツデータを受け付けてもよい。例えば、コンテンツクライアント204はステップ412で送信されたハッシュ値に対応する非管理コンテンツアイテムのデータをコンテンツマネジャ222に送信してもよい。
【0039】
ステップ416において、サーバは非管理コンテンツアイテムのコンテンツデータを格納してもよい。例えば、コンテンツマネジャ222は、受け付けられ、ハッシュ値によりインデクス化されたコンテンツデータをコンテンツストア230に格納し、ステップ404で生成された隠されたスナップショットメタデータエントリを、そのメタデータエントリに関連付けられている格納されたコンテンツデータへのポインタを追加することで、更新してもよい。非管理コンテンツアイテムに関連付けられたコンテンツデータがコンテンツストア230に追加される場合、ポインタは追加されたコンテンツデータを指し示すであろう。コンテンツデータがコンテンツストア230に既に存在する場合、ポインタはコンテンツデータストア230に既に存在するコンテンツデータを指し示すであろう。
【0040】
ステップ418において、サーバはスナップショットを最終化してもよい。例えば、全てのコンテンツデータがコンテンツストア230に格納され、かつ、非管理コンテンツアイテムのメタデータエントリが外部のコンテンツメタストア228において更新されると、サーバはスナップショットを最終化し、非管理コンテンツアイテムへのリンクの受領者がそのスナップショットデータにアクセスすることを可能としてもよい。サーバは、例えばコンテンツクライアント204から最終化メッセージを受け付けることに応じて、スナップショットを最終化してもよい。
【0041】
図5は、サーバに保持される非管理コンテンツアイテムにアクセスするための要求を処理するための例示的なサーバプロセス500を示す。例えば、プロセス500は、非管理コンテンツアイテムへのリンクの受領者によって、その受領者がそのリンクを用いて非管理コンテンツアイテムにアクセスするときに、開始されてもよい。
【0042】
ステップ502において、サーバはクライアントデバイスから非管理コンテンツアイテムに対する要求を受け付けてもよい。例えば、受領者はリンクを含む電子メッセージ(例えば、インスタントメッセージ、テキストメッセージ、電子メール等)を受信してもよい。受領者は、そのリンクが選択可能アイテム(例えば、ハイパーリンク)である場合にはそのリンクを選択し、コンテンツ管理システム220に、そのリンクに関連付けられている非管理コンテンツアイテムを要求してもよい。受領者は、リンクをコピーしてウェブブラウザにそのリンク(例えば、URL)を貼り付けることで、ウェブブラウザに、コンテンツ管理システム220に対してそのリンクに関連付けられている非管理コンテンツアイテムを要求することを行わせてもよい。
【0043】
ステップ504において、サーバはリンクに関連付けられているスナップショットが最終化されているか否かを判定してもよい。例えば、コンテンツマネジャ222は、リンクされている非管理コンテンツアイテムについてコンテンツクライアント204から最終化メッセージをコンテンツマネジャが受け付けたか否かを判定してもよい。ある実施では、非管理コンテンツアイテムに関連付けられているメタデータは最終化されたものであるとマークされてもよい(例えば、メタデータエントリにおける真/偽フラグによって)。例えば、スナップショットが最終化された場合、最終化フラグは真に設定されてもよい。スナップショットが最終化されていない場合、最終化フラグは偽に設定されてもよい。
【0044】
ステップ506において、サーバはリンクに関連付けられているスナップショットが最終化されていない場合、クライアントデバイスにエラーを送信してもよい。例えば、受領者がリンクに関連付けられている非管理コンテンツアイテムにアクセスするためにウェブブラウザを用いている場合、コンテンツ管理システム220はスナップショットがまだ見られる状態にないことを示すウェブページをウェブブラウザに送信してもよい。ウェブページは、受領者が後で再度トライすべきであることを示してもよい。受領者がクライアントアプリケーション(例えば、コンテンツクライアント204)を用いている場合、コンテンツ管理システム220(例えば、コンテンツマネジャ222)は、スナップショットが最終化されていないことを示すエラーコードをコンテンツクライアントに返してもよい。
【0045】
ステップ508において、サーバはリンクに関連付けられているスナップショットが最終化されている場合、クライアントデバイスに非管理コンテンツアイテムを送信してもよい。例えば、コンテンツ管理システム220(例えば、コンテンツマネジャ222)は、クライアントデバイスに、非管理コンテンツアイテム(例えば、コンテンツストア230に保持されるデータ)を送信してもよい。
【0046】
図6Aおよび
図6Bは、例示的なシステムの実施の形態を示す。以下に説明されるシステムは、
図1−5を参照して上述された動作を行うよう構成されてもよい。本技術を実施する場合に、より好適な実施の形態は当業者には明らかであろう。他のシステムの実施の形態が可能であることは、当業者には容易に理解されるであろう。
【0047】
図6Aは、通常のシステムバス計算システムアーキテクチャ600を示す。システムのコンポーネントはバス605を使用して互いに電気的に通信可能となっている。例示的なシステム600は、処理ユニット(CPUすなわちプロセッサ)610と、読み取り専用メモリ(ROM)620やランダムアクセスメモリ(RAM)625などのシステムメモリ615を含む各種のシステムコンポーネントをプロセッサ610に接続するシステムバス605と、を含む。システム600は、プロセッサ610に直接接続されているか、近接しているか、あるいはその一部として統合されている高速メモリのキャッシュを含んでもよい。システム600は、データをメモリ615および/またはストレージデバイス630からキャッシュ612へコピーして、プロセッサ610が高速でアクセスできるようにしてもよい。このようにして、キャッシュは、データを待っている間のプロセッサ610の遅延を回避するパフォーマンスブーストを提供してもよい。これらおよびその他のモジュールは、各種の動作を行うようにプロセッサ610を制御するか、または制御するように構成されてもよい。その他のシステムメモリ615が同様に使用可能であってもよい。メモリ615は、異なる性能特性を持つ複数の異なるタイプのメモリを含んでもよい。プロセッサ610は、いかなる汎用プロセッサを含んでもよいし、プロセッサ610を制御するように構成されたハードウエアモジュールまたはソフトウエアモジュール、例えばストレージデバイス630の中に格納されたモジュール1 632、モジュール2 634、モジュール3 636を含んでもよいし、実際のプロセッサ設計の中にソフトウエアインストラクションが組み込まれている専用プロセッサを含んでもよい。プロセッサ610は本質的に、複数のコアまたはプロセッサ、バス、メモリコントローラ、キャッシュ等を含んでいる、完全に自己完結型のコンピュータシステムであってもよい。マルチコアプロセッサは対称的または非対称的であってもよい。
【0048】
ユーザと計算デバイス600との対話を可能にするため、入力デバイス645は、音声用マイクロフォン、ジェスチャまたはグラフィカル入力用のタッチセンシティブスクリーン、キーボード、マウス、動作入力、音声等、いくつもの入力メカニズムを表してもよい。出力デバイス635は、当業者には公知の複数の出力メカニズムのうちの1つ以上であってもよい。場合によっては、マルチモーダルシステムによって、ユーザが、計算デバイス600と通信するための複数のタイプの入力を行うことが可能になる。通常、通信インタフェース640が、ユーザ入力とシステム出力とを管理してもよい。特定のハードウェア構成上で動作することについての制限はなく、従って、本明細書での基本的な特徴は、改良型のハードウェア構成やファームウェア構成が開発されれば、それらと容易に置き換わりうる。
【0049】
ストレージデバイス630は不揮発性メモリである。ストレージデバイス430はハードディスクや、コンピュータによってアクセス可能でありかつデータを保持可能な他のタイプのコンピュータ可読媒体、例えば、磁気カセット、フラッシュメモリカード、ソリッドステートメモリデバイス、デジタルバーサタイルディスク、カートリッジ、ランダムアクセスメモリ(RAMs)625、読み取り専用メモリ(ROM)620、それらのハイブリッド、等であってもよい。
【0050】
ストレージデバイス630は、プロセッサ610を制御するためのソフトウエアモジュール632、634、636を含んでいてもよい。その他のハードウエアモジュールやソフトウエアモジュールも考えられる。ストレージデバイス630は、システムバス605に接続されていてもよい。一態様では、或る機能を行うハードウエアモジュールは、プロセッサ610、バス605、ディスプレイ635等のような、その機能を実行するのに必要なハードウエアコンポーネントと関連してコンピュータ可読媒体の中に格納されたソフトウエアコンポーネントを含んでもよい。
【0051】
図6Bは、説明された方法を実行したりグラフィカルユーザインタフェース(GUI)を生成して表示したりする際に使用可能なチップセットアーキテクチャを有するコンピュータシステム650を示す。コンピュータシステム650は、開示された技術を実施するのに使用可能なコンピュータハードウエア、ソフトウエアおよびファームウエアの一例である。システム650はプロセッサ655を含んでもよい。プロセッサ655は、ソフトウエア、ファームウエアおよび特定された計算を行うよう構成されたハードウエアを実行可能な、任意の数の物理的および/または論理的に別個のリソースを表す。プロセッサ655は、プロセッサ655への入力およびプロセッサ655からの出力を制御可能なチップセット660と通信してもよい。本例では、チップセット660はディスプレイなどの出力665へ情報を出力し、ストレージデバイス670に対して情報の読み書きを行ってもよい。ストレージデバイス670は例えば磁気媒体やソリッドステート媒体を含んでもよい。チップセット660はまた、RAM675からデータを読み出し、RAM675へデータを書き込んでもよい。チップセット660とのインタフェースのために、種々のユーザインタフェースコンポーネント685とのインタフェースとなるブリッジ680が提供されてもよい。そのようなユーザインタフェースコンポーネント685は、キーボードやマイクロフォンやタッチ検出および処理回路やマウスなどのポインティングデバイスなどを含んでもよい。一般に、システム650への入力は種々のソースのうちの任意のものから来てもよく、または機械により生成されおよび/または人により生成されてもよい。
【0052】
チップセット660は、異なる複数の物理的インタフェースを有しうるひとつ以上の通信インタフェース690と連結されてもよい。そのような通信インタフェースは、有線および無線ローカルエリアネットワークとのインタフェースと、ブロードバンド無線ネットワークとのインタフェースと、パーソナルエリアネットワークとのインタフェースと、を含んでもよい。本明細書で開示されるGUIを生成し表示し使用する方法のいくつかの応用は、物理的なインタフェースを介して順序付けられたデータセットを受けること、または順序付けられたデータセットがプロセッサ655がストレージ670または675に保持されるデータを解析することで機械そのものにより生成されることを含んでもよい。さらに、機械はユーザインタフェースコンポーネント685を介してユーザから入力を受け、プロセッサ655を使用してこれらの入力を解釈することで、ブラウズ機能などの適切な機能を実行してもよい。
【0053】
ある実施では、システム600および650はひとつ以上のプロセッサ610を有してもよく、または処理能力を高めるためにネットワーク化された計算デバイスのグループまたはクラスタの一部であってもよいことは理解されるであろう。
【0054】
説明の明確化のため、ある例では、本技術はデバイスやデバイスコンポーネントやソフトウエアで実施される方法のステップまたはルーチンやハードウエアとソフトウエアとの組み合わせを含む機能ブロックを含む個々の機能ブロックを含むものとして提示されてもよい。
【0055】
ある実施の形態では、コンピュータ可読保持デバイス、媒体およびメモリは、ビットストリームを含むケーブルや無線信号などを含んでもよい。しかしながら、言及される場合、非一時的コンピュータ可読保持媒体は、エネルギやキャリア信号や電磁波や信号そのものなどの媒体を明示的に除外する。
【0056】
上述の例に係る方法は、コンピュータ可読媒体に保持されるかそうでなければその媒体から利用可能なコンピュータ実行可能インストラクションを使用して実装されてもよい。そのようなインストラクションは、例えば、汎用コンピュータ、専用コンピュータ、または専用処理デバイスに所定の機能もしくは機能のグループを実行させるかそうでなければ実行するよう設定するインストラクションおよびデータを含んでもよい。使用されるコンピュータリソースの一部はネットワークを介してアクセス可能であってもよい。コンピュータ実行可能インストラクションは、例えば、バイナリや、アセンブリ言語などの中間フォーマットインストラクションや、ファームウエアや、ソースコードであってもよい。インストラクション、使用される情報、および/または説明された例に係る方法中に生成される情報を保持するのに使用されうるコンピュータ可読媒体の例は、磁気または光学ディスク、フラッシュメモリ、不揮発性メモリを備えるUSBデバイス、ネットワークストレージデバイスなどを含む。
【0057】
本開示に係る方法を実装するデバイスはハードウエア、ファームウエアおよび/またはソフトウエアを含んでもよく、種々の形状ファクタのうちの任意のものをとりうる。そのような形状ファクタの典型的な例は、ラップトップや、スマートフォンや、小さい形状ファクタのパーソナルコンピュータや、パーソナルデジタルアシスタントなどを含む。本明細書で説明される機能は周辺機器やアドインカードにおいて実現されてもよい。さらなる例として、そのような機能は回路基板上で異なる複数のチップの間でまたは単一デバイスで実行される異なる複数の処理の間で実現されてもよい。
【0058】
インストラクション、そのようなインストラクションを運ぶための媒体、そのようなインストラクションを実行するための計算リソース、およびそのような計算リソースをサポートするための他の構成は、本開示で説明される機能を提供するための手段である。
【0059】
添付の請求項の範囲内の態様を説明するために様々な例および他の情報が使用されたが、そのような例における特定の特徴や構成に基づくいかなる請求項の限定も暗示されてはならない。当業者であれば、これらの例を使用して多種多様な実装を導くことができるであろう。さらに、いくつかの主題が構造的特徴および/または方法ステップの例に特有の言語で記述されたかもしれないが、添付の請求項で規定される主題はこれらの記述された特徴や行為に限定される必要はないことは理解されるべきである。例えば、そのような機能は異なるように分散されてもよいし、本明細書で特定されたもの以外のコンポーネントで実行されてもよい。むしろ、記述された特徴およびステップは、添付の請求項の範囲内のシステムおよび方法のコンポーネントの例として開示される。