(57)【要約】  本明細書に記載される主題の態様はファイルシステムプレースホルダに関する。態様ではプレースホルダは、リモートファイルシステムオブジェクトを表すためにクライアントにより使用されてよい。プレースホルダはメタデータを含んでよく、また表されるリモートファイルシステムオブジェクトのコンテンツを何も含まない、いくつか含む、またはすべて含んでよい。ローカルファイルシステムメタデータと共に、プレースホルダはファイルシステム名前空間がナビゲートされることを可能にし、またクライアントがリモートファイルシステムに関してオフラインであるときでも、他の操作がファイルシステムオブジェクト上で行われることも可能にしてよい。リモートファイルシステムと接続が再確立された後、プレースホルダは変更を同期する際に使用されてよい。
2016520919.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも部分的にコンピュータにより実装される方法であって、
クライアントのローカルファイルシステムのファイルシステムオブジェクトの指示を受信することと、
前記ファイルシステムオブジェクトが、前記ローカルファイルシステムに記憶されるプレースホルダであって、前記ファイルシステムオブジェクトのコンテンツがリモートストレージシステムに存在することを少なくとも示すプレースホルダにより表されることを検出することと、
前記クライアントが前記リモートストレージシステムに関してオフラインであるかを判定することであって、前記クライアントが前記リモートストレージシステムと現在通信することができなければ、前記クライアントは前記リモートストレージシステムに関してオフラインであることと、
前記クライアントがオフラインであれば、
前記クライアントがオフラインの間、前記ローカルファイルシステムのファイルシステムデータ構造を、前記ファイルシステムオブジェクトに行われる操作を示すように更新することと、
前記クライアントが前記リモートストレージシステムに関してもはやオフラインでないと判定することと、
前記クライアントがオフラインであった間に前記ファイルシステムオブジェクトに生じた変更であって、前記操作の結果として生じる変更を発見することと、
前記変更を前記リモートストレージシステムに同期させることと、を含む行動を行うことと、を含む方法。
【請求項２】
前記ローカルファイルシステムのファイルシステムデータ構造を、前記ファイルシステムオブジェクトに行われる操作を示すように更新することが、前記プレースホルダのメタデータであって、前記ファイルシステムオブジェクトの内的メタデータに対応する前記プレースホルダのメタデータを更新することを含み、前記変更を前記リモートストレージシステムに同期させることが、前記リモートストレージシステムに存在する前記ファイルシステムオブジェクトの対応する内的メタデータを更新するために、前記メタデータを前記リモートストレージシステムに提供することを含む、請求項１に記載の方法。
【請求項３】
前記クライアントで、前記ローカルファイルシステムのファイルシステム名前空間内のファイルシステムオブジェクトのメタデータを要求するナビゲーションアプリケーションと対話することと、
前記ローカルファイルシステム上では、前記リモートストレージシステムで利用可能である不足コンテンツである前記ファイルシステム名前空間内のファイルシステムオブジェクトを伴うナビゲーション要求にメタデータを提供するために、前記ローカルファイルシステムに記憶されるプレースホルダを使用することとをさらに含む、請求項１に記載の方法。
【請求項４】
コンテンツが完全には前記ローカルファイルシステムに記憶されていない前記ローカルファイルシステムの名前空間のファイルシステムオブジェクトに対してプレースホルダを作成することと、
前記ローカルファイルシステムの前記名前空間が前記名前空間により示される各ファイルシステムオブジェクトに対してローカルに記憶されるメタデータを有するように、前記リモートストレージシステムから、前記プレースホルダのためのメタデータをダウンロードして記憶することと、
前記リモートストレージシステムから、前記プレースホルダの１つまたは複数の各々に対してサムネイルデータであって、サムネイル画像に対応するデータが取得できるサービスを示すサムネイルデータを取得し、各サムネイルデータを対応するプレースホルダに記憶することとをさらに含む、請求項１に記載の方法。
【請求項５】
前記ローカルファイルシステムのファイルシステムデータ構造を、前記ファイルシステムオブジェクトに行われる操作を示すように更新することが、前記操作が名前変更、移動、削除、復元、作成、またはコピー操作であれば、前記ローカルファイルシステムの名前空間を更新することを含み、前記変更を前記リモートストレージシステムに同期させることが、前記ローカルファイルシステムの前記更新された名前空間に応じて前記リモートストレージシステムの前記名前空間を更新することを含む、請求項１に記載の方法。
【請求項６】
コンピューティング環境において、
ストアであって、ローカルファイルシステムのローカルファイルシステムオブジェクトに対するファイルシステムメタデータを維持し、かつリモートストレージシステムのリモートファイルシステムオブジェクトに対するプレースホルダであって、前記リモートファイルシステムオブジェクトのコンテンツが前記ストアに存在することを必要とすることなく、前記リモートファイルシステムオブジェクトのメタデータを含むプレースホルダを維持するコンピュータ記憶要素を有するストアと、
少なくとも前記リモートファイルシステムオブジェクトの前記コンテンツが前記ストアに完全に存在しなければ、名前空間内の各リモートファイルシステムオブジェクトに対してプレースホルダが存在することを保証するために、前記プレースホルダを作成、設定、および維持するように構築されるプレースホルダマネージャと、
前記ファイルシステムメタデータと前記プレースホルダを介して、前記ローカルファイルシステムオブジェクトと前記リモートファイルシステムオブジェクトを含む名前空間を作成するように、かつ前記リモートストレージシステムへの接続が存在するかに関係なく、インタフェースを介して、前記ローカルファイルシステムオブジェクトと前記リモートファイルシステムオブジェクトのメタデータを提供するよう構築されるファイルマネージャと、を備えるシステム。
【請求項７】
前記ファイルマネージャが、前記リモートストレージシステムへの接続がない場合に、プレースホルダにより表されるファイルシステムオブジェクトに行われる操作を示すために、前記ローカルファイルシステムのファイルシステムデータ構造を更新するようにさらに構築され、前記ファイルシステムオブジェクトの前記コンテンツが前記ストア内に完全には常駐しない、請求項６に記載のシステム。
【請求項８】
前記ファイルシステムデータ構造を更新するようにさらに構築される前記ファイルマネージャが、前記操作が名前変更、移動、削除、復元、作成、またはコピー操作であれば、前記リモートストレージシステムへの接続がない間の前記操作を反映するように前記名前空間を更新するように構築されるファイルマネージャを備える、請求項７に記載のシステム。
【請求項９】
クライアントファイルシステムを有するクライアントとの接続を失うことであって、前記クライアントファイルシステムが、すべてのコンテンツが前記クライアントファイルシステムに位置されるファイルシステムオブジェクト、およびすべてよりも少ないコンテンツが前記クライアントファイルシステムに位置されるファイルシステムオブジェクトを有し、前記クライアントが、すべてよりも少ないコンテンツが前記クライアントファイルシステムに位置される前記ファイルシステムオブジェクトを表す少なくともプレースホルダを有し、前記クライアントが、前記クライアントが前記リモートストレージシステムに関してオフラインである期間中、第１の操作の集合が、前記プレースホルダにより表される前記ファイルシステムオブジェクトで進行することを可能にし、前記クライアントが、前記中、第２の操作の集合が前記ファイルシステムオブジェクトで進行することを許可しないことと、
前記クライアントとの接続を回復することと、
同期中に、
クライアントのファイルシステムに記憶されるプレースホルダにより表されるファイルシステムオブジェクトに生じた変更を受信することであって、前記変更が前記クライアントとの接続を前記失った後かつ前記クライアントとの接続を前記回復する前に生じ、前記変更が接続損失の期間中に少なくとも部分的に前記プレースホルダを介して前記クライアントファイルシステムに反映されることと、
前記変更を反映するために前記リモートストレージシステムを更新することと、を含む行動を行うことと、を含む行動を実行されると行うコンピュータ実行可能命令を有するコンピュータ記憶媒体。
【請求項１０】
前記変更が前記クライアントファイルシステムの名前空間に影響を与え、前記変更が前記接続損失の期間中に前記プレースホルダを介して前記クライアントファイルシステムに反映される、請求項９に記載のコンピュータ記憶媒体。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  今日、一家でまたは一人でさえ、デスクトップコンピュータや、ラップトップコンピュータ、スマートフォン、インターネット対応テレビ、セットトップボックス、ゲームデバイス、読書用タブレットなどの複数のコンピューティングデバイスを有することは珍しくない。加えてユーザは、クラウドまたは他の場所に記憶される、写真や、音声、文書などを含む何千ものファイルを有することがある。ユーザは、ユーザが利用可能なコンピューティングデバイスの１つまたは複数からファイルにアクセスしたいことがある。
【０００２】
[0002]  デバイスによっては非常に限られる記憶領域を有することがあるので、ユーザのコンテンツのすべてをユーザのデバイスの各々にダウンロードすることができないことがある。さらには、コンピューティングデバイスが大量の記憶領域を有するときでも、コンテンツをコンピューティングデバイスにダウンロードすることはかなりの帯域幅を消費し、費用がかかり、かつ長時間かかることがある。
【０００３】
[0003]  本明細書で特許請求される主題は、いくらか不便を解決する、または上記記載されるものなどの環境でのみ動作する実施形態に限定されない。むしろこの背景技術は、本明細書に記載されるいくつかの実施形態が実践されてよい一例証的技術分野を例示するために提供されるにすぎない。
【発明の概要】
【０００４】
[0004]  簡潔には、本明細書に記載される主題の態様はファイルシステムプレースホルダに関する。態様ではプレースホルダは、リモートファイルシステムオブジェクトを表すためにクライアントにより使用されてよい。プレースホルダはメタデータを含んでよく、また表されるリモートファイルシステムオブジェクトのコンテンツを何も含まない、いくつか含む、またはすべて含んでよい。ローカルファイルシステムメタデータと共に、プレースホルダはファイルシステム名前空間がナビゲートされることを可能にし、またクライアントがリモートファイルシステムに関してオフラインであるときでも、他の操作がファイルシステムオブジェクト上で行われることも可能にしてよい。リモートファイルシステムと接続が再確立された後、プレースホルダは変更を同期する際に使用されてよい。
【０００５】
[0005]  この発明の概要は、以下発明を実施するための形態にさらに記載される主題のいくつかの態様を簡潔に特定するために提供される。この発明の概要は、特許請求される主題の重要なまたは不可欠な特徴を特定するものとは意図されず、また特許請求される主題の範囲を限定するために使用されるものとも意図されない。
【０００６】
[0006]  語句「本明細書に記載される主題」は、文脈に別段の明らかな指示がない限り、発明を実施するための形態に記載される主題を指す。用語「態様」は「少なくとも１つの態様」と読まれるべきである。発明を実施するための形態に記載される主題の態様を特定することは、特許請求される主題の重要なまたは不可欠な特徴を特定するものとは意図されない。
【０００７】
[0007]  本明細書に記載される主題の上記記載される態様および他の態様は例として例示され、また同一の参照番号が同様の要素を示す添付図面に限定されない。
【図面の簡単な説明】
【０００８】
【図１】[0008]本明細書に記載される主題の態様が組み込まれてよい例証的な汎用コンピューティング環境を表すブロック図である。
【図２】[0009]本明細書に記載される主題の態様に従ってプレースホルダを使用するように構成されるシステムの例証的なコンポーネントを概略で表すブロック図である。
【図３】本明細書に記載される主題の態様に従ってプレースホルダを使用するように構成されるシステムの例証的なコンポーネントを概略で表すブロック図である。
【図４】[0010]本明細書に記載される主題の態様に従ってクライアント観点から生じてよい例証的な行動を概略で表すフロー図である。
【図５】[0011]本明細書に記載される主題の態様に従ってクラウドストレージシステム観点から生じてよい例証的な行動を概略で表すフロー図である。
【発明を実施するための形態】
【０００９】
定義
[0012]  本明細書で使用される場合、用語「を含む」およびその変形は「を含むが、それに限定されない」を意味するオープンエンドの用語と読まれるべきである。用語「または」は、文脈に別段の明らかな指示がない限り、「および／または」と読まれるべきである。用語「に基づいて」は「に少なくとも部分的に基づいて」と読まれるべきである。用語「一実施形態」や「実施形態」は「少なくとも１つの実施形態」と読まれるべきである。用語「別の実施形態」は「少なくとも１つの他の実施形態」と読まれるべきである。
【００１０】
[0013]  本明細書で使用される場合、用語「ある」や「その」は指示される事項または行動の１つまたは複数を含む。特に特許請求の範囲において、事項への言及は一般に、少なくとも１つのそのような事項が存在することを意味し、行動への言及は、行動の少なくとも１つの例が実行されることを意味する。
【００１１】
[0014]  ときに本明細書では、用語「第１の」、「第２の」、「第３の」などが使用されることがある。追加の文脈がなければ、特許請求の範囲におけるこれらの用語の使用は順序を含意するものとは意図されず、むしろ識別目的のために使用される。たとえば、語句「第１のバージョン」および「第２のバージョン」は必ずしも、第１のバージョンがまさに第１バージョンである、すなわち第２のバージョンより先に作成されたことを、または第１のバージョンが第２のバージョンより先に要求されるもしくは操作されることさえも意味しない。むしろ、これらの語句は異なるバージョンを識別するために使用される。
【００１２】
[0015]  見出しは便宜上のものにすぎず、所与の話題に関する情報が、その話題を示す見出しを持つ節外に見出されることがある。
【００１３】
[0016]  他の定義が、明示的にも黙示的にも、以下に含まれることがある。
【００１４】
例証的な動作環境
[0017]  図１は、本明細書に記載される主題の態様が実装されてよい適切なコンピューティングシステム環境１００の例を例示する。コンピューティングシステム環境１００は適切なコンピューティング環境の一例にすぎず、本明細書に記載される主題の態様の使用または機能性の範囲について何らかの限定を示唆するものとは意図されない。コンピューティング環境１００は、例証的な動作環境１００に例示されるコンポーネントの任意の１つまたは組み合わせに関する何らかの依存または要件を有すると解釈されるべきでもない。
【００１５】
[0018]  本明細書に記載される主題の態様は、多数の他の汎用または専用コンピューティングシステム環境または構成で動作する。本明細書に記載される主題の態様に使用するのに適してよい周知のコンピューティングシステム、環境、または構成の例には、パーソナルコンピュータ、サーバコンピュータ−、ベアメタル上か仮想マシンとしてかを問わず、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロコントローラベースシステム、セットトップボックス、プログラム可能および非プログラム可能民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、携帯情報端末（PDA）、ゲームデバイス、プリンタ、セットトップやメディアセンタもしくは他の製品を含む電気製品、自動車組み込みまたは取り付けコンピューティングデバイス、他のモバイルデバイス、セルラ電話や無線電話、有線電話を含む電話デバイス、以上のシステムもしくはデバイスのいずれかを含む分散コンピューティング環境などがある。
【００１６】
[0019]  本明細書に記載される主題の態様は、コンピュータにより実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で記載されることがある。一般にプログラムモジュールは、ルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み、これらが特定のタスクを行うかまたは特定の抽象データ型を実装する。本明細書に記載される主題の態様は、通信ネットワークを通してリンクされるリモート処理デバイスによりタスクが行われる分散コンピューティング環境で実践されてもよい。分散コンピューティング環境では、プログラムモジュールは、メモリ記憶デバイスを含むローカルとリモートの両コンピュータ記憶媒体に位置されてよい。
【００１７】
[0020]  あるいは、または加えて、本明細書に記載される機能性は少なくとも部分的に１つまたは複数のハードウェア論理コンポーネントにより行われてよい。たとえば、かつ限定することなく、例示的な種類の使用され得るハードウェア論理コンポーネントには、フィールドプログラマブルゲートアレイ（FPGA）、特定プログラム向け集積回路（ASIC）、特定プログラム向け規格品（ASSP）、システムオンチップシステム（SOC）、複合プログラマブル論理デバイス（CPLD）などがある。
【００１８】
[0021]  図１を参照すると、本明細書に記載される主題の態様を実装するための例証的なシステムはコンピュータ１１０の形態の汎用コンピューティングデバイスを含む。コンピュータは命令を実行することが可能である任意の電子デバイスを含んでよい。コンピュータ１１０のコンポーネントは、処理ユニット１２０、システムメモリ１３０、およびシステムメモリを含む様々なシステムコンポーネントを処理ユニット１２０に結合する１つまたは複数のシステムバス（システムバス１２１により表される）を含んでよい。システムバス１２１は、メモリバスまたはメモリコントローラ、周辺バス、および多種多様なバス構成のいずれかを使用するローカルバスを含むいくつかの種類のバス構造のいずれかであってよい。例として、かつ限定ではなく、そのようなアーキテクチャには、業界標準アーキテクチャ（ISA）バス、マイクロチャネルアーキテクチャ（MCA）バス、拡張ＩＳＡ（EISA）バス、ビデオエレクトロニクス規格協会（VESA）ローカルバス、メザニンバスとしても知られるペリフェラルコンポーネントインターコネクト（PCI）バス、拡張ペリフェラルコンポーネントインターコネクト（PCI-X）バス、アドバンストグラフィックスポート（AGP）、およびＰＣＩエクスプレス（PCIe）がある。
【００１９】
[0022]  処理ユニット１２０はハードウェアセキュリティデバイス１２２に接続されてよい。セキュリティデバイス１２２は、コンピュータ１１０の様々な側面を安全にするために使用されてよい暗号鍵を記憶してよくかつ生成することができる。一実施形態では、セキュリティデバイスを１２２は、トラステッドプラットフォームモジュール（TPM）チップ、ＴＰＭセキュリティデバイスなどを含んでよい。
【００２０】
[0023]  コンピュータ１１０は典型的に多種多様なコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ１１０によりアクセスされ得る、かつ揮発性と不揮発性の両媒体および取外し可能と非取外し可能の両媒体を含む任意の利用可能な媒体であり得る。例として、かつ限定ではなく、コンピュータ可読媒体はコンピュータ記憶媒体と通信媒体を含んでよい。
【００２１】
[0024]  コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータなどの情報の記憶のために任意の方法または技術で実装される揮発性と不揮発性、取外し可能と非取外し可能の両媒体を含む。コンピュータ記憶媒体は、ＲＡＭやＲＯＭ、ＥＥＰＲＯＭ、ソリッドステートストレージ、フラッシュメモリもしくは他のメモリ技術、ＣＤ−ＲＯＭやデジタル多用途ディスク（DVD）もしくは他の光ディスクストレージ、磁気カセットや磁気テープ、磁気ディスクストレージもしくは他の磁気記憶デバイス、または所望の情報を記憶するために使用され得る、かつコンピュータ１１０によりアクセスされ得る任意の他の媒体を含む。コンピュータ記憶媒体は通信媒体を含まない。
【００２２】
[0025]  通信媒体は典型的に、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波などの変調データ信号または他の移送機構で具現化し、また任意の情報配信媒体を含む。用語「変調データ信号」は、その特性の１つまたは複数がその信号内の情報を符号化するような様式で設定または変更される信号を意味する。例として、かつ限定ではなく、通信媒体は、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響、RF、赤外線および他の無線媒体などの無線媒体を含む。以上のいずれかの組み合わせもコンピュータ可読媒体の範囲内に含まれるべきである。
【００２３】
[0026]  システムメモリ１３０は、リードオンリメモリ（ROM）１３１とランダムアクセスメモリ（RAM）１３２などの揮発性および／または不揮発性メモリの形態のコンピュータ記憶媒体を含む。起動中などにコンピュータ１１０内の要素間で情報を転送するのに役立つ基本ルーチンを含む基本入／出力システム１３３（BIOS）が典型的にＲＯＭ１３１に記憶される。ＲＡＭ１３２は典型的に、直ちにアクセス可能でありかつ／または処理ユニット１２０により現在操作されているデータおよび／またはプログラムモジュールを含む。例として、かつ限定ではなく、図１は、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７を例示する。
【００２４】
[0027]  コンピュータ１１０は他の取外し可能／非取外し可能、揮発性／不揮発性コンピュータ記憶媒体も含んでよい。単に例として、図１は、非取外し可能な不揮発性磁気媒体から読み取るもしくはそこへ書き込むハードディスクドライブ１４１、取外し可能な不揮発性磁気ディスク１５２から読み取るもしくはそこへ書き込む磁気ディスクドライブ１５１、およびＣＤ  ＲＯＭ、ＤＶＤ、もしくは他の光媒体などの取外し可能な不揮発性光ディスク１５６から読み取るもしくはそこへ書き込む光ディスクドライブ１５５を例示する。例証的な動作環境で使用され得る他の取外し可能／非取外し可能な揮発性／不揮発性コンピュータ記憶媒体は、磁気テープカセット、フラッシュメモリカードや他のソリッドステート記憶デバイス、デジタル多用途ディスク、他の光ディスク、デジタルビデオテープ、ソリッドステートＲＡＭ、ソリッドステートＲＯＭなどを含む。ハードディスクドライブ１４１はインタフェース１４０を通してシステムバス１２１に接続されてよく、磁気ディスクドライブ１５１および光ディスクドライブ１５５はインタフェース１５０などの取外し可能な不揮発性メモリ用インタフェースによりシステムバス１２１に接続されてよい。
【００２５】
[0028]  上記論じられ、図１に例示されるドライブとそれらの関連コンピュータ記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、および他のデータの記憶をコンピュータ１１０に提供する。図１では、たとえば、ハードディスクドライブ１４１は、オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７を記憶するものとして例示される。これらのコンポーネントは、オペレーティングシステム１３４、アプリケーションプログラム１３５、他のプログラムモジュール１３６、およびプログラムデータ１３７と同じかまたは異なるかのいずれかであり得ることに留意されたい。オペレーティングシステム１４４、アプリケーションプログラム１４５、他のプログラムモジュール１４６、およびプログラムデータ１４７は、最低でもそれらが異なる複製であることを例示するために、本明細書では異なる番号が与えられる。
【００２６】
[0029]  ユーザは、キーボード１６２や、通例マウス、トラックボール、またはタッチパッドと呼ばれるポインティングデバイス１６１などの入力デバイスを通してコンピュータ１１０にコマンドや情報を入力してよい。他の入力デバイス（図示せず）は、マイクロホン（たとえば、音声または他の音を入力するため）、ジョイスティック、ゲームパッド、サテライトディッシュ、スキャナ、タッチ感応スクリーン、ライティングタブレット、カメラ（たとえば、ジェスチャまたは他の視覚入力を入力するため）などを含んでよい。これらおよび他の入力デバイスはしばしば、システムバスに結合されるユーザ入力インタフェース１６０を通して処理ユニット１２０に接続されるが、パラレルポート、ゲームポートまたはユニバーサルシリアルバス（USB）などの他のインタフェースやバス構造により接続されてよい。
【００２７】
[0030]  上記特定される入力デバイスの１つまたは複数の使用を通じて、ナチュラルユーザインタフェース（NUI）が確立されてよい。ＮＵＩは、音声認識、タッチおよびスタイラス認識、画面上と画面隣接の両方のジェスチャ認識、空中ジェスチャ、頭部および目追跡、音声および会話、視覚、触覚、ジェスチャ、機械知性などに依存してよい。ユーザと対話するために採用されてよいいくつかの例証的なＮＵＩ技術には、タッチ感応ディスプレイ、音声および会話認識、意図および目標理解、深度カメラ（ステレオカメラシステム、赤外線カメラシステム、ＲＧＢカメラシステム、およびその組み合わせなど）を使用する動きジェスチャ検出、加速度計／ジャイロスコープを使用する動きジェスチャ検出、顔認識、３Ｄディスプレイ、頭部、目および視線追跡、没入型拡張現実および仮想現実システム、ならびに電界感知電極（EEGおよび関連方法）を用いて脳活動を感知するための技術がある。
【００２８】
[0031]  モニタ１９１または他の種類の表示デバイスもビデオインタフェース１９０などのインタフェースを介してシステムバス１２１に接続される。モニタに加えて、コンピュータは、出力周辺インタフェース１９５を通して接続されてよい、スピーカ１９７やプリンタ１９６などの他の周辺出力デバイスも含んでよい。
【００２９】
[0032]  コンピュータ１１０は、リモートコンピュータ１８０などの１つまたは複数のリモートコンピュータへの論理接続を使用するネットワーク環境で動作してよい。リモートコンピュータ１８０はパーソナルコンピュータ、サーバ、ルータ、ネットワークＰＣ、ピアデバイスまたは他の共通ネットワークノードであってよく、また典型的に、コンピュータ１１０に関して上記記載される要素の多くまたはすべてを含むが、図１にはメモリ記憶デバイス１８１のみが例示されている。図１に描写される論理接続はローカルエリアネットワーク（LAN）１７１とワイドエリアネットワーク（WAN）１７３を含むが、電話ネットワーク、近距離ネットワーク、および他のネットワークを含んでもよい。そのようなネットワークキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットでは一般的である。
【００３０】
[0033]  ＬＡＮネットワーキング環境で使用されるとき、コンピュータ１１０はネットワークインタフェースまたはアダプタ１７０を通してＬＡＮ１７１に接続される。ＷＡＮネットワーキング環境で使用されるとき、コンピュータ１１０は、インターネットなどのＷＡＮ１７３を介して通信を確立するためのモデム１７２または他の手段を含んでよい。モデム１７２は内蔵であっても外付けであってもよいため、ユーザ入力インタフェース１６０または他の適切な機構を介してシステムバス１２１に接続されてよい。ネットワーク環境では、コンピュータ１１０に関して描写されるプログラムモジュール、またはその部分はリモートメモリ記憶デバイスに記憶されてよい。例として、かつ限定ではなく、図１は、リモートアプリケーションプログラム１８５をメモリデバイス１８１に常駐するものとして例示する。図示されるネットワーク接続は例証であり、コンピュータ間の通信リンクを確立する他の手段が用いられてよいことが認識されるであろう。
【００３１】
プレースホルダ
[0034]  本明細書に記載される主題の態様に従って、プレースホルダが使用されてよい。プレースホルダはファイルシステムオブジェクトを表すデータ構造を含んでよい。ファイルシステムオブジェクトはファイルまたはディレクトリであってよい。ディレクトリはゼロ以上のファイルを含んでよく、また旧来のファイルディレクトリまたは何らかの他のファイルのコレクションもしくはコンテナであってよい。簡略化のため、本明細書では用語ファイルがしばしば使用されるが、本明細書の教示は、本明細書に記載される主題の態様の趣旨または範囲から逸脱することなく、ディレクトリに適用されてもよいことが理解されるべきである。
【００３２】
[0035]  プレースホルダはマシンのローカル記憶デバイスに記憶されてよい。一実装形態では、プレースホルダは、プレースホルダと関連付けられるコンテンツがマシンのファイルシステム（以下ときに、ローカルファイルシステムまたはクライアントファイルシステムと呼ばれる）以外の場所で利用可能であることを示してよい。たとえばプレースホルダは、プレースホルダと関連付けられるコンテンツが、図３に例示されるクラウドストレージシステムの１つに記憶されることを示してよい。
【００３３】
[0036]  別の実装形態では、プレースホルダは、コンテンツが、マシン上に常駐するアプリケーションを通してアクセス可能であることを示してよい。このアプリケーションは、コンテンツをメモリ、ローカルファイルシステムまたはリモートファイルシステム、に記憶してよく、コンテンツを生成してよく、以上の組み合わせを行ってよい、などである。たとえファイルシステムがコンテンツを直接得ることができるとしても、ファイルシステムはファイルのコンテンツにアクセスするために、依然アプリケーションに依存してよい。
【００３４】
[0037]  一実装形態では、関連付けられるコンテンツが比較的小さい（たとえば、所定の、設定可能な、または計算される閾値未満）プレースホルダに関しては、プレースホルダと関連付けられる全コンテンツのコピーもプレースホルダに記憶されてよい。データを「プレースホルダに」記憶することは、データをプレースホルダのデータ構造に記憶することおよび／またはデータをプレースホルダにより示されるローカル記憶場所に記憶することを含むものとされる。
【００３５】
[0038]  実装に応じて、プレースホルダはファイルに関する様々なレベルの詳細を含んでよい。最低でも、プレースホルダはリモートストレージシステム内のファイルを特定するデータを含む。たとえばプレースホルダは、クラウドストレージシステムにファイルを特定する情報（たとえば、識別子）と共にコンテンツが見出されてよい特定のクラウドストレージシステムを示してよい。
【００３６】
[0039]  プレースホルダは、ファイルの外的メタデータおよび／または内的メタデータを含んでよい。外的メタデータは、ファイルのコンテンツの外部に格納される任意のメタデータである。たとえば外的メタデータは、名前、サイズ、変更日、作成日、最終アクセス日、ファイルの属性、バージョン、ファイルシステムにより維持される他のメタデータなどを含んでよい。
【００３７】
[0040]  内的メタデータは、ファイルのコンテンツの内部に格納される任意のメタデータである。たとえば音声ファイルに関しては、内的メタデータは、アーティスト名、アルバム名、年、曲のタイトル、格付け、タグ、コメント、ジャンル、長さ、ビットレートなどを含んでよい。カメラ写真などの画像に関しては、内的メタデータは、たとえば、作者、撮影日、取得プログラム名、寸法、解像度、ビット深度、圧縮、カメラメーカ、カメラモデル、絞り値、露出時間、他の情報などを含んでよい。
【００３８】
[0041]  上記記載される内的および外的メタデータの例は、内的よび外的メタデータの種類をすべて包括または網羅するものとは意図されない。実際本明細書の教示に基づいて、当業者は、本明細書に記載される主題の態様の趣旨または範囲から逸脱することなく、本明細書の教示に従って使用されてよい他の外的および内的メタデータを容易に認識するであろう。
【００３９】
[0042]  一実装形態では、プレースホルダは、ファイルの名前、ファイルのサイズ、ファイルが変更された日付、およびファイルが作成された日付などの、ファイルの外的メタデータを含んでよい。別の実装形態では、以上に加えて、プレースホルダはファイルの属性も含んでよい。
【００４０】
[0043]  別の実装形態では、プレースホルダはファイルの内的メタデータの一部またはすべてを含んでよい。
【００４１】
[0044]  一実装形態では、プレースホルダはファイルの検索可能テキストの一部またはすべてを含んでよい。たとえば、ワードプロセッシング文書はテキストや書式を含むコンテンツを有してよい。プレースホルダは、ワードプロセッシング文書のテキストの最初のＮ文字、単語、段落、ページなどを書式なしで含んでよく、ここでＮは所定、設定可能、またはその場で求められる。
【００４２】
[0045]  一実装形態では、プレースホルダは検索可能テキストの言語の指示を含んでよい。たとえばプレースホルダは、検索可能テキストが英語で書かれていることを示すデータを含んでよい。別の例として、プレースホルダは、テキストの一部が英語で書かれていることを示すデータ（たとえば、タグまたは他のデータ）と、テキストの別の部分がスペイン語で書かれていることを示すデータ（たとえば、別のタグまたは他のデータ）を含んでよい。
【００４３】
[0046]  別の例として、提示プログラムは、提示のために使用される他のデータと比較して比較的少ないテキストを有してよい。この例では、プレースホルダは、提示のために使用される他のデータを省略しつつ、提示のテキストをすべて含んでよい。
【００４４】
[0047]  一実装形態では、プレースホルダは画像のサムネイルを含んでよい。画像はプレースホルダと関連付けられるファイルのコンテンツに含まれてよく、一方サムネイルは画像から生成されまたはファイルのコンテンツに含まれてもよい。一実施形態では、プレースホルダに含まれるサムネイルは、事前に定められる、設定可能な、またはその場で求められてよい比較的小さいサイズのものであってよい。
【００４５】
[0048]  一実装形態では、プレースホルダは、プレースホルダと関連付けられるコンテンツのより大きいサムネイルを得る方法を特定するデータを含んでよい。たとえばプレースホルダは、ファイルのより大きいサムネイルが要求されてよいサービスのアドレスを含んでよい。サービスは、提供されるべきサムネイルのサイズを示す入力を受け入れることができてよい。
【００４６】
[0049]  同様に一実装形態では、プレースホルダは、プレースホルダと関連付けられるファイルのコンテンツのより低忠実度のサンプル（またはそのようなサンプルを得る方法を特定するデータ）を含んでよい。たとえばプレースホルダは、音楽、ビデオ、または他の種類のファイルのより低忠実度のサンプル（またはサービスへのリンク）を含んでよい。
【００４７】
[0050]  一実装形態では、プレースホルダは、関連付けられるコンテンツのどの部分がローカルファイルシステム上に位置されるかを示すデータ構造（たとえば、ビットマップ、連結リスト、または他のデータ構造）を含んでよい。プログラムがコンテンツにアクセスしようと努めるときに、このデータ構造が参照されてよい。データ構造が、要求されるコンテンツがローカルに利用可能であることを示せば、要求されるコンテンツはローカルストレージから得られてよい。そうでなければ、プログラムに要求されるコンテンツを提供する前にコンテンツをリモートストレージから得るために、他の行動が取られてよい。
【００４８】
[0051]  一実装形態では、プレースホルダは、オフライン時にファイルのコンテンツが利用可能にされるべきかを示すフラグを有してよい。先に示されるように、クライアントは、プレースホルダと関連付けられるコンテンツが見出されるリモートストレージへの接続を定期的に失うことがある。フラグが設定されていれば、リモートストレージが利用不可能であるときでもコンテンツが利用可能であるように、クライアントがオンラインであるときに、プレースホルダに関するコンテンツはローカルストレージにダウンロードされてそこに維持されてよい。
【００４９】
[0052]  様々な実施形態は、上に示されるデータのいずれか１つまたは複数を含むプレースホルダを有してよい。
【００５０】
[0053]  プレースホルダは、ファイルのコンテンツがリモートに常駐するときでも、ファイルがローカルファイルシステムに常駐するような錯覚を与えるために使用されてよい。リモートファイルシステムに到達できないときでも、この錯覚は維持されてよい。これは、ローカルファイルシステムの名前空間にプレースホルダを挿入することにより行われてよい。ファイルシステムは、プレースホルダを認識するように、また必要に応じてプレースホルダにより表されるファイルに関する情報を表示するように変更されてよい。たとえば、ユーザがローカルファイルシステムの名前空間をナビゲートするとき、ファイルシステムはプレースホルダに関する名前と関連メタデータを表示してよい。
【００５１】
[0054]  プレースホルダは、消費記憶空間量を大幅に低減するために使用されてよい。たとえば、大きいビデオのコンテンツをローカルに記憶する代わりに、ビデオが利用可能であることを示すためにプレースホルダが使用されてよい。プレースホルダはビデオの実際の容量よりもはるかに小さい空間量を使用できるので、比較的小さいローカル記憶デバイスでさえ、かなりの量のコンテンツを含むファイルの膨大なコレクションに関するプレースホルダを含むことができる。
【００５２】
[0055]  リモートストレージシステムが利用不可能であるときに、プレースホルダが使用されてよい。たとえば、ネットワーク接続が失われたりまたは利用可能でないとき、マシンは、ファイルシステムの名前空間をナビゲートして他の操作を行うために、ローカルに記憶されるプレースホルダを使用してよい。
【００５３】
[0056]  プレースホルダは、クライアントマシンがシャットダウンされたときでも永続される。それゆえ、クライアントマシンが再起動されると、プレースホルダは依然利用可能である。この永続性挙動は、クライアントのローカルストレージにプレースホルダを記憶することにより実装されてよい。
【００５４】
[0057]  図２〜３は、本明細書に記載される主題の態様に従ってプレースホルダを使用するように構成されるシステムの例証的なコンポーネントを概略で表すブロック図である。図２〜３に例示されるコンポーネントは例証であり、必要とされるまたは含まれることがあるコンポーネントを包括するものとはされない。さらにはコンポーネント数は、本明細書に記載される主題の態様の趣旨または範囲から逸脱することなく他の実施形態では異なってよい。いくつかの実施形態では、図２〜３に関連して記載されるコンポーネントは、本明細書に記載される主題の態様の趣旨または範囲から逸脱することなく、他のコンポーネント（図示または図示せず）に含まれてまたはサブコンポーネントに配置されてよい。いくつかの実施形態では、図２〜３に関連して記載されるコンポーネントおよび／または機能は、複数のデバイスにわたり分散されてよい。
【００５５】
[0058]  本明細書で使用される場合、用語コンポーネントは、デバイスのすべてまたは一部などのハードウェア、１つまたは複数のソフトウェアモジュールまたはその部分のコレクション、１つまたは複数のソフトウェアモジュールまたはその部分および１つまたは複数のデバイスまたはその一部の何らかの組み合わせ、などを含むものと読まれるべきである。
【００５６】
[0059]  たとえば、図２〜３に例示されるコンポーネントは、１つまたは複数のコンピューティングデバイスを用いて実装されてよい。そのような装置はたとえば、パーソナルコンピュータ、サーバコンピュータ、ハンドヘルドまたはラップトップデバイス、マルチプロセッサシステム、マイクロコントローラベースシステム、セットトップボックス、プログラム可能民生用電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータ、セルラ電話、携帯情報端末（PDA）、ゲームデバイス、プリンタ、セットトップやメディアセンタもしくは他の製品を含む電気製品、自動車組み込みまたは取り付けコンピューティングデバイス、他のモバイルデバイス、以上のシステムもしくはデバイスのいずれかを含む分散コンピューティング環境などを含んでよい。
【００５７】
[0060]  図２〜３のコンポーネントの１つまたは複数を実装するように構成されてよい例証的なデバイスは図１のコンピュータ１１０を備える。
【００５８】
[0061]  コンポーネントはコードを含むか、またはそれにより表されてもよい。コードは、コンピュータが取るべき行動を示す命令を含む。コードは、データ、リソース、変数、定義、関係、関連など、コンピュータが取るべき行動以外の情報も含んでよい。
【００５９】
[0062]  コードはコンピュータにより実行されてよい。コンピュータにより実行されると、コードはプロセスと呼ばれてよい。本明細書で使用される場合、用語「プロセス」およびその変形は、タスクを行う１つまたは複数の旧来のプロセス、スレッド、コンポーネント、ライブラリ、オブジェクトなどを含んでよい。プロセスは、ハードウェア、ソフトウェア、またはハードウェアとソフトウェアの組み合わせで実装されてよい。実施形態では、プロセスは、呼び方はどうであれ、行動を行うことができる、またはその際に用いられる任意の機構である。プロセスは複数のデバイスまたは単一のデバイス上で分散されてよい。コードはユーザモード、カーネルモード、何らかの他のモード、以上の組み合わせなどで実行してよい。
【００６０】
[0063]  図２を参照すると、システム２００は、クライアント２０５、リモートストレージシステム２１０、ローカルストレージ２１５、プレースホルダ２２０を含んでよく、また他のコンポーネント（図示せず）を含んでよい。クライアント２０５はローカルストレージ２１５への直接アクセスを有して、またクラウドネットワークの使用を通じて、リモートストレージシステム２１０に接続されてよい。
【００６１】
[0064]  用語「クライアント」と「サーバ」は本明細書でときに使用されるが、クライアントは、典型的にサーバと関連付けられる、ハードウェアおよび／またはソフトウェアを有するマシン上に実装されてよいこと、および同様にサーバは、典型的にデスクトップ、パーソナル、またはモバイルコンピュータと関連付けられる、ハードウェアおよび／またはソフトウェアを有するマシン上に実装されてよいことが理解されるべきである。さらには、クライアントはときにはサーバとして行動してよく、その逆も同じである。時々、より頻繁にクライアントまたはサーバとして行動する２つ以上の実体が同時にピア、サーバ、またはクライアントであることがある。実施形態では、クライアントとサーバは同じ物理マシン上に実装されてよい。
【００６２】
[0065]  さらには、本明細書で使用される場合、用語「サーバ」と「クライアント」の各々は、１つまたは複数の物理的または仮想的実体、１つまたは複数の物理的または仮想的実体上で実行する１つまたは複数のプロセスなどを指してよい。それゆえサーバは、１つまたは複数のプロセスが実行する実際の物理ノード、１つまたは複数のプロセスが実行する仮想ノード、１つまたは複数のノードで実行するサービス、一緒にサービスを提供する一群のノードなどを含んでよい。サービスは、１つまたは複数の物理的または仮想的実体で実行する１つまたは複数のプロセスを含んでよい。さらには、単一のプロセスは１つまたは複数のサーバを実装してよい。
【００６３】
[0066]  ローカルストレージ２１５は、データを記憶することが可能な任意の記憶媒体を含んでよい。たとえばローカルストレージ２１５は、揮発性メモリ（たとえば、キャッシュ）と不揮発性メモリ（たとえば、永続ストレージ）を含んでよい。用語データは、１つまたは複数のコンピュータ記憶要素により表されてよい何らかを含むものと広く読まれるべきである。論理的に、データは揮発性または不揮発性メモリで一連の１と０として表されてよい。非バイナリ記憶媒体を有するコンピュータでは、データは記憶媒体の能力に従って表されてよい。データは、数字、文字などの単純データ型、階層、結合、または他の関連するデータ型、複数の他のデータ構造または単純データ型を含むデータ構造などを含む、異なる種類のデータ構造に編成されてよい。データのいくつかの例には、情報、プログラムコード、プログラム状態、プログラムデータ、その他のデータなどがある。
【００６４】
[0067]  ローカルストレージ２１５は外付けであっても、内蔵であっても、または内蔵であるいくつかのコンポーネントとクライアント２０５の外部であるいくつかのコンポーネントを含んでもよい。一実装形態では、ローカルストレージ２１５は、クライアント２０５をホストするマシンに収容される任意のストレージを含んでよい。別の実装形態では、ローカルストレージ２１５は、クライアント２０５をホストするマシンに直接接続されるストレージを含んでよい。たとえばローカルストレージ２１５は、ＵＳＢリンク、ＩＥＥＥ１３９４リンク、光リンク、別の有線リンクなどを介してマシンに接続されてよい。
【００６５】
[0068]  リモートストレージシステム２１０は、データを記憶してそこへのアクセスを提供するように配置される１つまたは複数のコンピュータを含んでよい。本明細書で使用される場合、アクセスは、データの読み取り、データの書き込み、データの削除、データの更新、以上の２つ以上を含む組み合わせなどを含んでよい。リモートストレージシステム２１０は、クラウドなどのネットワークを介してクライアント２０５に接続されてよい。クラウドはインターネットのメタファーとしてしばしば使用される用語である。それは、計算、ソフトウェア、データアクセス、ストレージ、および他のリソースは、それらのリソースを配信するコンピューティングインフラストラクチャに関する位置または他の詳細をユーザが知ることを必要とせずに、インターネットに接続される実体により提供されてよいという考えによるものである。
【００６６】
[0069]  一例では、リモートストレージシステム２１０は、コンピューティングデバイスが単一の物理的な場所に位置されるデータセンタを備えてよい。別の例では、リモートストレージシステム２１０は、異なる場所でクラウドに取り付けられるコンピューティングデバイスとストレージを含んでよい。一例では、リモートストレージシステム２１０は、１つまたは複数の記憶デバイスへのアクセスを提供する単一のサーバまたは他のコンピューティングデバイスを備えてよい。一例では、リモートストレージシステム２１０は、クライアント２０５のローカルエリアネットワーク（LAN）上ではないコンピューティングデバイスを備えてよい。別の例では、リモートストレージシステム２１０は、クライアント２０５に収容されないまたは直接接続されない任意のストレージを備えてよい。別の例では、リモートストレージシステム２１０は、ストレージにアクセス可能なネットワークにクライアントが接続されていないときクライアント２０５に利用可能でないストレージを含んでよい。
【００６７】
[0070]  ときに用語クラウドストレージシステムが本明細書で使用される。これは、本明細書の教示が適用されてよいリモートストレージシステムに関して限定するものではなく、本明細書に記載される主題の態様の趣旨または範囲から逸脱することなく使用されてよいリモートストレージシステムの例を提供するものと意図される。用語クラウドストレージシステムが本明細書で使用されるときはいつでも、他の実施形態では、他の種類のリモートストレージシステムが、本明細書に記載される主題の態様の趣旨または範囲から逸脱することなく使用されてよいことが理解されるべきである。
【００６８】
[0071]  ローカルストレージ２１５はクライアント２０５にほぼ継続的に利用可能であってよいか、またはユーザに利用可能な手段により（たとえば、コネクタにプラグを差し込むことにより）容易に利用可能にされ得るが、リモートストレージシステム２１０は時々クライアント２０５に利用不可能になることがある。たとえば、クライアント２０５がラップトップでホストされていれば、ラップトップはインターネットアクセスを有しない場所に移動されることがある。別の例として、ネットワーク障害がリモートストレージシステム２１０へのクライアント２０５の接続を遮断することがある。別の例として、リモートストレージシステム２１０が動作不能になることがあり、またはメンテナンスまたは他の目的のためにシャットダウンされるか切断されることがある。プレースホルダなしでは、リモートストレージシステム２１０との接続が失われると、クライアント２０５は名前空間をナビゲートしたり、またはファイルコンテンツ全体がローカルストレージ２１５で利用可能でない場合、ファイルの操作を行うことができないことがある。
【００６９】
[0072]  プレースホルダ２２０は、ローカルストレージ２１５に記憶されるプレースホルダ内に記憶されてよい様々な例証的なデータフィールドを例示する。図２にはプレースホルダが１つだけ示されるが、よりしばしば、ローカルストレージ２１５には複数のプレースホルダが記憶されるであろう。たとえば所与の名前空間に関して、リモートファイルシステムオブジェクトのコンテンツがローカルストレージ２１５に完全に存在しなければ、各リモートファイルシステムオブジェクトに対して１つのプレースホルダがあってよい。別の例として、所与の名前空間に関して、リモートファイルシステムオブジェクトのコンテンツ全体がローカルストレージ２１５に存在するときでも、リモートファイルシステムオブジェクトに対してプレースホルダがあることある。この第２のプレースホルダの集合は、先に述べられたような所与の閾値よりも小さいサイズのコンテンツを有するファイルに対してもローカルストレージ２１５に記憶されてよい。
【００７０】
[0073]  名前空間は、ファイルシステムの各ファイルに対して、ファイルに関する階層情報と共に識別子（たとえば、名前または他の識別子）を含んでよい。たとえば名前空間は、Ｄ：＼ＤＩＲ１＼ＦＩＬＥ１．ＴＸＴ．に対応する名前空間エントリを含んでよい。この名前空間エントリはファイル（たとえば、FILE1.TXT）の名前を示し、ファイルがディレクトリ（たとえば、DIR1）に存在することを示す。名前空間は他のメタデータも含んでよい。名前空間はファイルシステム情報との１対１または何らかの他のマッピングを有してよく、また仮想フォルダ階層を表してよい。
【００７１】
[0074]  図３を参照すると、システム３００は、クライアント３０５、クラウド３１０、クラウドストレージシステム３１５〜３１７、ローカルストア３２０、操作ログ３２１、および他のコンポーネント（図示せず）を含んでよい。クライアント３０５は、ファイルマネージャ３２５、同期マネージャ３２６、プレースホルダマネージャ３２７、および他のコンポーネント（図示せず）を含んでよい。
【００７２】
[0075]  図３のコンポーネントは、１つまたは複数の先に記載されたようなコンピューティングデバイスのハードウェアおよび／またはソフトウェアを用いて実装されてよい。ローカルストア３２０と操作ログ３２１を実装する記憶デバイスは、図２のローカルストレージ２１５と同様の方法で実装されてよく、また外付けであっても、内蔵であっても、または内蔵であるいくつかのコンポーネントとクライアント３０５の外部であるいくつかのコンポーネントを含んでもよい。
【００７３】
[0076]  ローカルストア３２０は、クライアントのローカルファイルシステムのローカルファイルシステムオブジェクトに対するファイルシステムメタデータを維持し、かつクラウドストレージシステムのリモートファイルシステムオブジェクトに対するプレースホルダを維持するコンピュータ記憶要素を有してよい。先に述べられたように、プレースホルダは、リモートファイルシステムオブジェクトのコンテンツがローカルストア３２０に存在することを必要とすることなく、リモートファイルシステムオブジェクトのメタデータを含んでよい。
【００７４】
[0077]  操作ログ３２１は、ローカルファイルシステムで生じる変更に関するデータを維持するコンピュータ記憶要素を有してよい。操作ログ３２１からのデータは、これらの変更をクラウドストレージシステムに同期させるために使用されてよい。一実装形態では、操作ログ３２１は省略されてよく、ローカルファイルシステムへの変更は、ローカルファイルシステムの変更前状態と変更後状態を比較することにより発見されてよい。
【００７５】
[0078]  ファイルマネージャ３２５は、ファイルシステムメタデータとプレースホルダを介して、ローカルファイルシステムオブジェクトとリモートファイルシステムオブジェクトを含む名前空間を作成するように構築されてよい。ファイルマネージャ３２５は、クラウドストレージシステムへの接続が存在するかに関係なく、インタフェースを介して、ローカルファイルシステムオブジェクトとリモートファイルシステムオブジェクトのメタデータを提供するようにさらに構築されてよい。
【００７６】
[0079]  クラウドストレージシステムへの接続がない場合、ファイルマネージャ３２５は、それでもなお操作がローカルに常駐するファイルとプレースホルダにより表されるファイルの両方で進行することを可能にしてよい。たとえば、ファイルマネージャは、ファイルシステムオブジェクトのコンテンツがローカルストアに完全に常駐しなくても、プレースホルダにより表されるファイルシステムオブジェクトに行われる操作を示すように、ローカルファイルシステムのファイルシステムデータ構造を更新してよい。別の例として、ファイルマネージャ３２５は、名前変更、移動、削除、復元、作成、コピー操作などの操作を反映するように名前空間を更新してよい。
【００７７】
[0080]  同期マネージャ３２６は、クラウドストレージシステムへの接続がない状態でファイルシステムオブジェクトに生じた変更（たとえば、コンテンツ変更、内的、外的含むメタデータ変更、および名前空間変更、他の変更など）を発見するように、またクラウドストレージシステムとの接続が再確立されると、変更をクラウドストレージシステムに同期させるように構築されてよい。
【００７８】
[0081]  異なる実装形態では、同期マネージャ３２６は変更を発見するための様々な方法を使用してよい。たとえば一実装形態では、同期マネージャ３２６は操作ログ３２１を検査することにより変更を発見してよい。別の例として別の実装形態では、同期マネージャ３２６は、変更以前のファイルシステムとファイルシステムオブジェクトの状態を変更後のファイルシステムとファイルシステムオブジェクトの状態と比較することにより、変更を発見してよい。
【００７９】
[0082]  プレースホルダマネージャ３２７は、少なくともリモートファイルシステムオブジェクトのコンテンツがローカルストア３２０に完全に存在しなければ、名前空間内の各リモートファイルシステムオブジェクトに対してプレースホルダが存在することを保証するために、プレースホルダを作成、設定、および維持するように構築されてよい。先に述べられたように、リモートファイルシステムオブジェクトのコンテンツがローカルストア３２０に完全に存在しなければ、プレースホルダはローカルファイルシステムにも維持されてよい。
【００８０】
[0083]  クラウドストレージシステム３１５〜３１７は、１つまたは複数の記憶デバイスと、加えてそれらの記憶デバイスへのアクセスを提供する１つまたは複数のコンピューティングデバイスを含んでよい。一実施形態では、クラウドストレージシステムは、コンピューティングデバイスが単一の物理的な場所に位置されるデータセンタを備えてよい。別の実施形態では、クラウドストレージシステムは、異なる場所でクラウドに取り付けられるコンピューティングデバイスとストレージを含んでよい。一実施形態では、クラウドストレージシステムは、１つまたは複数の記憶デバイスへのアクセスを提供する単一のサーバを備えてよい。一実施形態では、クラウドストレージシステムは、クライアントのローカルエリアネットワーク（LAN）上ではないコンピューティングデバイスを備えてよい。別の実施形態では、クラウドストレージシステムは、クライアントに収容されないまたは直接接続されない任意のストレージを備えてよい。
【００８１】
[0084]  図２には３つのクラウドストレージシステムが示されるが、他の実装形態では、任意の数のクラウドストレージシステムが存在してよい。
【００８２】
[0085]  図４〜５は、本明細書に記載される主題の態様に従って生じてよい例証的な行動を概略で表すフロー図である。説明の簡略化のため、図４〜５に関連して記載される方法は一連の行為として描かれ、記載される。本明細書に記載される主題の態様は、例示される行為によりおよび／または行為の順序により限定されないことが理解かつ認識されるべきである。一実施形態では、以下に記載されるように、行為は順序に従い生じる。他の実施形態では、しかしながら、行為は並列に、別の順序で、および／または本明細書に提示かつ記載されない他の行為と共に生じてよい。さらには、例示されるすべての行為が、本明細書に記載される主題の態様に従う方法を実装するために必要とされるわけではなくてよい。加えて当業者は、方法が代替的に、一連の、状態図を介する相互関連状態としてまたは事象として表され得ることを理解かつ認識するであろう。
【００８３】
[0086]  図４は、本明細書に記載される主題の態様に従ってクライアント観点から生じてよい例証的な行動を概略で表すフロー図である。ブロック４０５で、行動が開始する。
【００８４】
[0087]  ブロック４０７で、クライアントがクラウドストレージシステム関してオフラインであるかについての判定が行われる。クライアントがクラウドストレージシステムと現在通信することができなければ、クライアントはクラウドストレージシステムに関してオフラインである。
【００８５】
[0088]  ブロック４１０で、クライアントのローカルファイルシステムのファイルの指示が受信される。たとえば図３を参照して、ファイルマネージャ３２５は、ナビゲーションアプリケーション（図示せず）からのファイルの指示を受信してよい。
【００８６】
[0089]  ブロック４１５で、ファイルがプレースホルダにより表されていると検出される。プレースホルダはローカルファイルシステムに記憶される。プレースホルダは、ファイルシステムオブジェクトのコンテンツはクラウドストレージシステム内に存在する（たとえそのコンテンツがローカルファイルシステムにも存在しても）ことを少なくとも示す。たとえば、図３を参照して、ファイルマネージャ３２５は、ファイルがローカルストア３２０に記憶されるプレースホルダにより表されることを検出する。
【００８７】
[0090]  ローカルファイルシステムのファイルに対して維持されるメタデータと同様に、プレースホルダが中に挿入されてよく、そうでなければローカルファイルシステムの名前空間により参照される。一実装形態では、プレースホルダを参照する名前空間レコードは、名前空間レコードのフラグにより決定されてよい。別の実装形態では、プレースホルダを参照する名前空間レコードは、名前空間レコードに含まれる、または参照されるメタデータを検査することにより決定されてよい。
【００８８】
[0091]  ブロック４２０で、ファイルシステムデータ構造が、ファイルに関して要求される操作に応じて更新されてよい。たとえば、操作が名前変更、移動、削除、復元、作成、またはコピー操作などであれば、ローカルファイルシステムの名前空間は、操作を反映するように更新されてよい。たとえば移動操作では、ローカルファイルシステムの名前空間は、ファイルが現在の名前空間内の新しい場所に常駐することを示すように更新されてよい。別の例として削除操作では、ローカルファイルシステムの名前空間は、削除されたファイルのレコードがローカルファイルシステムの削除コンテナ（たとえば、ファイルシステム「ゴミ箱」）に記憶されて、ファイルが削除されたことを示すように更新されてよい。別の例として復元操作では、ローカルファイルシステムの名前空間は、ファイルが削除コンテナから復元されたことを示すように更新されてよい。
【００８９】
[0092]  別の例では、操作はファイルの内的または外的メタデータを更新することであってよい。この例では、プレースホルダは、変更されたメタデータで更新されてよい。ファイルの内的または外的メタデータが変更されたとき、ローカルファイルシステムの名前空間は同じままであってよい。
【００９０】
[0093]  さらに別の例として、操作はファイルのコンテンツを更新することであってよい。この例では、プレースホルダが、コンテンツはローカルに利用可能であることを示すならば、コンテンツは更新されてよい。
【００９１】
[0094]  別の例では、ファイルシステムデータ構造を更新する必要はなくてよい。たとえば操作がファイルの名前を読み出すことであれば、名前はプレースホルダから読み出されて読み出し操作の要求者に提供されてよい。この種類の操作は、ブロック４２０の行動はこの例では省略されてよいので、ファイルシステムデータ構造を変更することを必要としない。
【００９２】
[0095]  ブロック４２５で、クライアントが依然オフラインであるかについての判定が行われる。たとえば、図３を参照して、クライアントがプレースホルダの内容を含むクラウドストレージシステムと依然通信することができなければ、クライアントはクラウドストレージシステムに関してオフラインであると考えられる。
【００９３】
[0096]  ブロック４３０で、クライアントがクラウドストレージシステムに関して依然オフラインであれば、行動はブロック４１０に続き、クライアントは別のファイルの指示を受信してよく、そうでなければ行動は４３５に続く。
【００９４】
[0097]  ブロック４３５で、クライアントがオフラインであった間にローカルストレージシステムに加えられた変更が発見される。先に示されるように、この発見は操作ログを読み取り、変更以前の時間からのファイルシステム状態を変更後の時間でのファイルシステム状態と比較するなどの形態を取ってよい。
【００９５】
[0098]  ブロック４４０で、変更がクラウドストレージシステムに同期される。たとえば、図３を参照して、同期マネージャ３２６は変更をクラウドストレージシステム３１５〜３１７の１つまたは複数に同期させてよい。たとえば、オフライン変更がファイルの内的メタデータを伴うとき、同期化は、クラウドストレージシステムに存在するファイルシステムオブジェクトの対応する内的メタデータを更新するために、プレースホルダからクラウドストレージシステムにメタデータを提供することを含んでよい。
【００９６】
[0099]  別の例では、オフライン変更が削除コンテナからファイルを復元することを伴うとき、同期化は、クラウドストレージシステムの削除コンテナからファイルシステムオブジェクトを復元するクラウドストレージシステムへの命令と共に、クラウドストレージシステムにファイルシステムオブジェクトを特定する識別子を、クラウドストレージシステムに提供することを含んでよい。
【００９７】
[00100]  ブロック４４５で、他の行動があれば行われてよい。たとえば、クライアントがナビゲーションアプリケーションと対話するとき、クライアントはローカルファイルシステムの名前空間内のファイルシステムオブジェクトに対するメタデータ要求を受信してよい。クラウドストレージシステムで利用可能である不足コンテンツであるファイル（たとえば、プレースホルダにより表されるファイル）を伴う要求に応答するため、またプレースホルダで利用可能なそれらのコンテンツ全体を有するファイルを伴う要求に応答するため、クライアントは、ナビゲーションアプリケーションに提供するために、プレースホルダからメタデータを得てよい。
【００９８】
[00101]  別の例として、定期的にまたは他の指定時間に、プレースホルダは、コンテンツが完全にはローカルファイルシステムに記憶されていないローカルファイルシステムの名前空間のファイルに対して作成されてよい。接続が利用可能であるとき、ローカルファイルシステムの名前空間が名前空間により示される各ファイルシステムオブジェクトのローカルに記憶されるメタデータを有するように、プレースホルダのメタデータおよび他のデータがクラウドストレージシステムからダウンロードされてよい。
【００９９】
[00102]  別の例として、クライアントは、クライアントがオフラインのとき操作（たとえば、開く、編集、など）が許可されないことを検出してよく、またクライアントがオフラインであれば、操作を許可しなくてよい。ファイルシステムオブジェクトのコンテンツがローカルファイルシステムに記憶されていることをプレースホルダが示せば、オフライン時は操作を許可しないことの例外が生じてよい。
【０１００】
[00103]  図５は、本明細書に記載される主題の態様に従ってクラウドストレージシステム観点から生じてよい例証的な行動を概略で表すフロー図である。ブロック５０５で、行動が開始する。
【０１０１】
[00104]  ブロック５１０で、クラウドストレージシステムとクライアントとの間で接続が失われる。たとえば、図３を参照して、クライアント３０５はクラウドストレージシステム３１５への接続が失う（たとえば、通信することができない）ことがある。クライアントは、クライアントにローカルに（たとえば、ローカルストア３２０に）記憶されるクライアントファイルシステムを有してよい。クライアントファイルシステムは、すべてのコンテンツがクライアントファイルシステムに位置されるファイルおよび、すべてよりも少ないコンテンツがクライアントファイルシステムに位置されるファイルを有してよい。クライアントは、すべてよりも少ないコンテンツがクライアントファイルシステムに位置されるファイルを表す少なくともプレースホルダを有する。クライアントは、第１の操作の集合（たとえば、名前変更、移動、表示、削除、復元、作成、メタデータ表示、メタデータ更新、などの１つまたは複数）が、クライアントがクラウドストレージシステムに関してオフラインである期間中、プレースホルダにより表されるファイルで進行することを可能にしてよい。クライアントは、第２の操作の集合（たとえば、名前変更または名前空間を越えての移動、コピー、開く、編集、などの１つまたは複数）が、クライアントがオフラインである期間中に、ファイルで進行することを許可しなくてよい。
【０１０２】
[00105]  ブロック５１５で、クライアントとクラウドストレージシステムとの間で接続が回復される。たとえば、図３を参照して、クラウドストレージシステム３１５はクライアント３０５への接続を回復させてよい（たとえば、通信することができる）。
【０１０３】
[00106]  ブロック５２０で、同期化が開始してよい。たとえば、図３を参照して、クライアント３０５とクラウドストレージシステム３１５は、クライアントがオフライン中に生じた更新の同期を開始してよい。
【０１０４】
[00107]  ブロック５２５で、クライアントのファイルシステムに記憶されるプレースホルダにより表されるファイルに生じた変更が受信される。変更は、クライアントとの接続を失った後かつクライアントとの接続を回復する前に生じた可能性がある。変更は、接続損失の期間中に少なくとも部分的にプレースホルダを介してクライアントファイルシステムに反映されてよい。たとえば、図３を参照して、クラウドストレージシステム３１５は、クライアント３０５の同期マネージャ３２６から変更を受信する。
【０１０５】
[00108]  ブロック５３０で、クラウドストレージシステムは変更を反映するように適切に更新される。たとえば、図３を参照して、クラウドストレージシステム３１５は、ファイルシステムメタデータおよび／または１つまたは複数のファイルと関連付けられるメタデータを更新してよい。いくつかの場合、クラウドストレージシステム上の変更は、クライアントから受信された変更が破棄されることをもたらすことがある。たとえば、クライアント上で削除されたファイルが、未接続の期間中にクラウドストレージシステム上でも既に削除されていることがある。
【０１０６】
[00109]  ブロック５３５で、他の行動があれば行われてよい。
【０１０７】
[00110]  上記詳細な記述から分かるように、態様はファイルシステムプレースホルダに関して記載される。本明細書に記載される主題の態様は、様々な修正および代替構造が可能であるが、特定の例示した実施形態は図面に示されており、上記詳細に記載された。しかしながら、特許請求される主題の態様を開示された特定の形態に限定する意図はなく、逆に本発明は、本明細書に記載される主題の様々な態様の趣旨と範囲に入るすべての修正、代替構造、および均等物を包含するものであることが理解されるべきである。
【図１】
2016520919.tif 000003
【図２】
2016520919.tif 000004
【図３】
2016520919.tif 000005
【図４】
2016520919.tif 000006
【図５】
2016520919.tif 000007
【国際調査報告】
2016520919.tif 000008
2016520919.tif 000009
2016520919.tif 000010