(57)【特許請求の範囲】
【請求項１】
オンラインストレージシステム（１０２）と関連付けられるデータへのアクセスを管理するためのコンピュータで実行可能な方法であって、
電子デバイス（２０２）と前記オンラインストレージシステムとの間の前記データの同期化を可能にする工程であって、前記電子デバイスと前記オンラインストレージシステムとの間で前記データへの変更が自動的に同期化され、アプリケーションプログラミングインタフェース（ＡＰＩ）（２０４）が前記データの同期化状態を提供し、前記同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含む、工程と、
前記データにアクセスするための処理を開始する工程（３０２）と、
前記データについての前記同期化状態を提供するために前記ＡＰＩを用いる工程（３０４）と、
前記データの既存のバージョンが前記電子デバイス上で利用可能であるかどうかを前記同期化状態から判定する工程（４０２）と、
前記データの新たなバージョンが前記オンラインストレージシステム上で利用可能であるかどうかを前記同期化状態から判定する工程（４１０）と、
前記データの前記新たなバージョンがアクセス用に構成されている間に、前記データの前記既存のバージョンにアクセスする工程（４０４）と、
前記データの前記新たなバージョンへのアクセスがレディ状態になったことを検知すると、前記データの前記既存のバージョンへの前記アクセスを前記データの前記新たなバージョンへの前記アクセスに切り替える工程（４１２）と
を含むことを特徴とする方法。
【請求項２】
前記電子デバイス上で前記データへアクセスする要求が受信されると、前記コンピュータで実行可能な方法は、さらに、
前記データが前記アップロード状態に現在あるかどうかを前記同期化状態から判定する工程であって、前記アップロード状態は、前記電子デバイス上の前記データのローカルバージョンが前記データの最新バージョンであることと、同期化の動作が前記データの前記ローカルバージョンを前記オンラインストレージシステムに現在同期化を行っていることとを示す、工程と、
前記同期化の動作中及びその後の同期化の動作中に、前記電子デバイス上の前記データの前記ローカルバージョンにアクセスする工程と
を含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記電子デバイス上で前記データへアクセスする要求が受信されると、前記コンピュータで実行可能な方法は、さらに、
前記データが前記ダウンロード状態に現在あるかどうかを前記同期化状態から判定する工程であって、前記ダウンロード状態は、同期化の動作が前記電子デバイスに前記データの新たなバージョンを現在ダウンロードしていることを示す、工程と、
前記データの既存のバージョンが前記電子デバイス上で現在利用可能でないかどうかを前記同期化状態から判定する工程と、
前記同期化の動作中に、前記オンラインストレージシステムを介して前記データにアクセスするために前記ＡＰＩを用いる工程と、
前記同期化の動作の完了を検知すると、前記電子デバイスを介して前記データにアクセスするために前記ＡＰＩを用いる工程と
を含み、
前記ＡＰＩは、前記同期化の動作中に、前記電子デバイスのローカルストレージと前記オンラインストレージシステムとの両方を介して、前記データに透過的にアクセスすることを容易にすることを特徴とする請求項１に記載の方法。
【請求項４】
前記電子デバイス上で前記データへアクセスする要求が受信されると、前記コンピュータで実行可能な方法は、さらに、
前記データが前記ダウンロード状態に現在あるかどうかを前記同期化状態から判定する工程であって、前記ダウンロード状態は、同期化の動作が前記電子デバイスに前記データの新たなバージョンを現在ダウンロードしていることを示す、工程と、
前記データの既存のバージョンが前記電子デバイス上で現在利用可能でないかどうかを前記同期化状態から判定する工程と、
前記オンラインストレージシステムを介して前記データが現在利用可能でないことを判定するために前記ＡＰＩを用いる工程と、
前記要求に対してエラー状態を示す工程と
を含むことを特徴とする請求項１に記載の方法。
【請求項５】
前記方法が前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化中に前記データへアクセスする場合、前記データへのアクセスは、
前記同期化状態が前記キャッシュ状態を含む場合は、前記電子デバイス上のキャッシュからのデータにアクセスし（４０４）、
前記同期化状態が前記キャッシュ状態を含まない場合は、前記オンラインストレージシステムからのデータにアクセスし（４０６）、
前記データのより新しいバージョンが利用可能であれば、前記より新しいバージョンへアクセスし（４１２）、
前記データが利用可能でなければ、前記エラー状態を示す（４１４）ことを特徴とする請求項１乃至４の何れか１項に記載の方法。
【請求項６】
前記同期化状態は、前記オンラインストレージシステム上の前記データと、前記電子デバイス上のキャッシュの前記データのコピーとの間の同期化を特定することを特徴とする請求項１乃至５の何れか１項に記載の方法。
【請求項７】
オンラインストレージシステムと関連付けられるデータへのアクセスを管理するシステムであって、
請求項１乃至６の何れか１項に記載の方法を実行するように構成された手段を備えることを特徴とするシステム。
【請求項８】
少なくとも１つのコンピュータによって実行されると、請求項１乃至６の何れか１項に記載の方法を前記コンピュータに実行させる命令を含むコンピュータプログラム。
【請求項９】
請求項８に記載のコンピュータプログラムを格納したコンピュータで読取可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の実施形態は、オンラインストレージシステムに関連する。より詳細には、本開示の実施形態は、オンラインストレージシステムでのデータ同期化に関するアプリケーションプログラミングインタフェース（ＡＰＩ）に関連する。
【背景技術】
【０００２】
ネットワーク接続可能な複数のデバイスでのデータは、一般に、ファイルホスティングサービス、クラウドストレージサービス、及びリモートバックアップサービスの少なくとも１つなどのオンラインストレージシステム上で、同期化、格納、共有、及びバックアップの少なくとも１つが行われる。例えば、画像、音声、動画、文書、実行可能なもの及び他のファイルの少なくとも１つなどのデータが、パーソナルコンピュータ、ラップトップコンピュータ、携帯メディアプレーヤ、タブレットコンピュータ、及びモバイルフォンの少なくとも１つなどのネットワーク接続可能な電子デバイスに格納されうる。電子デバイスのユーザは、クラウドストレージサービスに格納されるかバックアップされるかの少なくとも一方が行われるファイルのコピーを許容するクラウドストレージサービスでのユーザアカウントを有してもよい。クラウドストレージサービスは、さらに、当該ユーザと、上記ファイルへのアクセスが認証された他のユーザとの少なくとも一方の他の電子デバイスにコピーを送信してもよく、従って、クラウドストレージサービスと複数の電子デバイスとの間で当該ファイルを同期化する。
【０００３】
残念ながら、電子デバイスとオンラインストレージシステムとの間のデータ同期化は、通常は、オンラインストレージシステムと電子デバイスの同期化状態に関する、制限されたインタラクション及び情報の少なくとも１つに関連付けられる。例えば、電子デバイスは、オンラインストレージシステムでファイルを作成、削除、修正、及びコピーの少なくとも１つを行うために、プリインストールされたクライアントアプリケーションを使用し得る。或いは、電子デバイス上のサードパーティのアプリケーションは、オンラインストレージシステムで、読み込み、書き込み、コピー、及び他のファイルベースの操作の少なくとも１つを実行するために、アプリケーションプログラミングインタフェース（ＡＰＩ）を使用し得る。両方のケースにおいて、電子デバイスは、そのようなファイルベースの操作に関連付けられた状態に関する情報を欠くことになるかもしれない。例えば、クライアントアプリケーション及びサードパーティアプリケーションの少なくとも１つは、失敗したファイル転送に関連するエラーを識別したり、オンラインストレージシステム上のファイルのより新しいバージョンを検出したりすることの少なくとも一方を行うことができない。結果として、電子デバイスのユーザは、オンラインストレージシステムからのデータの最新及び正確な少なくとも一方のバージョンに同期化することの低下した機能性や問題を経験するであろう。
【０００４】
本発明は上述の問題に鑑みて成されたものであり、複数の電子デバイスからの同期化に関連する同期化状態へのアクセスを可能とすることによって、複数の電子デバイスとオンラインストレージシステムとの間のデータ同期化を容易に実現するものである。
【発明の概要】
【０００５】
本発明の開示は、オンラインストレージシステムと関連付けられるデータへのアクセスを管理するシステムを提供することにある。動作中において、システムは、電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて、電子デバイスとオンラインストレージシステムとの間でデータの同期化を可能にする。次に、システムは、ＡＰＩを使用して、アプリケーションへデータの同期化状態を提供する。同期化状態には、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つが含まれる。
【０００６】
いくつかの実施形態において、システムはまた、ＡＰＩを使用し、データを含むファイルシステムのファイルシステム同期化状態をアプリケーションへ提供する。ファイルシステム同期化状態には、メタデータ同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも１つが含まれる。
【０００７】
いくつかの実施形態において、システムはまた、ＡＰＩを通じて電子デバイスでのファイルシステムにおけるメタデータの同期化を可能にする。
【０００８】
いくつかの実施形態において、電子デバイスでのファイルシステムにおけるメタデータの同期化は、開放操作、作成操作、削除操作、及び移動操作の少なくとも１つを用いて可能にされる。
【０００９】
いくつかの実施形態において、変更状態はパス、ディレクトリ、及びファイルの少なくとも１つと関連付けられる。
【００１０】
いくつかの実施形態において、システムが電子デバイスとオンラインストレージシステムとの間のデータの同期化中にデータへアクセスする場合には、当該データへのアクセスは、以下のように行われる。
（ｉ）同期化状態がキャッシュ状態を含む場合、電子デバイスのキャッシュからのデータにアクセスする。
（ｉｉ）同期化状態がキャッシュ状態を含まない場合、オンラインストレージシステムからのデータにアクセスする。
（ｉｉｉ）データの新たなバージョンが利用可能であれば、当該新たなバージョンへアクセスする。
（ｉｖ）データが利用可能であなければ、エラー状態を示す。
【００１１】
いくつかの実施形態において、同期化状態は、オンラインストレージシステム上のデータと電子デバイス上のキャッシュのデータのコピーとの間の同期化を特定する。
【図面の簡単な説明】
【００１２】
【図１】本実施形態に係るシステムの概略を示す図。
【図２】本実施形態に係るオンラインストレージシステムに係るデータへのアクセスを管理するシステムを示す図。
【図３】本実施形態に係るオンラインストレージシステムに関連付けられるデータへのアクセスを管理する処理を示すフローチャート。
【図４】本実施形態に係る電子デバイスとオンラインストレージシステムとの間のデータの同期化中にデータへアクセスする処理を示すフローチャート。
【図５】本実施形態に係るコンピュータシステムを示す図。  上記図面を通じて、同様の参照符号は同一の図面要素を示す。
【発明を実施するための形態】
【００１３】
以下では、当業者が本実施形態を使用することができるように説明が記載され、特有のアプリケーションやその要件について説明がされる。本実施形態の種々の変更が、当業者には容易に理解されるであろうし、ここで定義される一般的な原理は、本開示の精神や範囲から逸脱することなく、他の実施形態やアプリケーションに適用されてもよい。したがって、本発明は、開示の実施形態に限定することを意図しておらず、ここで開示される原理や特徴に合致する最大の範囲に認められる。
【００１４】
本明細書で説明されるデータ構造やコードは一般にコンピュータで読取可能な記憶媒体に格納され、当該記憶媒体はコンピュータシステムによって使用されるコード及びデータの少なくとも１つを格納することができる任意のデバイスや媒体であってもよい。コンピュータで読取可能な記憶媒体は、限定はしないが、既知の若しくは後に開発されるコード及びデータの少なくとも一方を格納することができる、ディスクドライブ、磁気テープ、ＣＤ（コンパクトディスク）、ＤＶＤ（デジタル多用途ディスク又はデジタルビデオディスク）、又は他のメディアなどの、揮発性メモリ、不揮発性メモリ、磁気デバイス及び光学記憶デバイスを含む。
【００１５】
本明細書で説明される方法及び処理は、コード及びデータの少なくとも一方で具現化されることができ、上述したように、それらはコンピュータで読取可能な記憶媒体に格納される。コンピュータシステムがコンピュータで読取可能な記憶媒体に格納されるコード及びデータの少なくとも一方を読み出して実行する場合に、コンピュータシステムは、データ構造やコードとして具現化され、かつ、コンピュータで読取可能な記憶媒体に格納される、方法及び処理を実行する。
【００１６】
さらに、ここで説明される方法及び処理は、ハードウェアモジュール又は装置に含まれうる。それらのモジュールや装置は、限定はしないが、特定用途向け集積回路（ＡＳＩＣ）チップ、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、特定のソフトウェアモジュール又は特定の時間でのコードを実行する専用又は共有のプロセッサ、及び、既知の又は後に開発される他のプログラマブル論理デバイスを含んでもよい。ハードウェアモジュール又は装置が起動されると、当該ハードウェアモジュール又は装置は、それらの中に含まれる方法や処理を実行する。
【００１７】
本開示の実施形態は、オンラインストレージシステムに関連付けられるデータへのアクセスを管理する方法及びシステムを提供する。図１に示すように、オンラインストレージシステム１０２は、パーソナルコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、モバイルフォン、携帯情報端末、携帯メディアプレーヤ、デジタルメディア受信機、及び他のネットワークにアクセス可能な電子デバイスなどの一連の電子デバイス１０４−１１０からアクセスされうる。電子デバイス１０４−１１０とオンラインストレージシステム１０２との間の通信は、ローカルエリアネットワーク（ＬＡＮ）、広域エリアネットワーク（ＷＡＮ）、パーソナル・エリア・ネットワーク（ＰＡＮ）、仮想プライベートネットワーク、インターネット、セルラーネットワーク、ＷｉＦｉネットワーク、Ｂｌｕｅｔｏｏｔｈ（登録商標：ＢｌｕｅｔｏｏｔｈはＢｌｕｅｔｏｏｔｈ  ＳＩＧ，Ｉｎｃの登録商標である）ネットワーク、ユニバーサル・シリアル・バス（ＵＳＢ）ネットワーク、及びイーサネット（登録商標）ネットワークの少なくとも１つなどの１以上のネットワークによって可能である。
【００１８】
オンラインストレージシステム１０２の使用中に、電子デバイス１０４−１１０のユーザは、データの格納、バックアップ、検索、共有、及び同期化の少なくとも１つに関連するタスクを実行することができる。例えば、各ユーザは、オンラインストレージシステム１０２でのユーザのユーザアカウントで、画像、音声、動画、文書、実行物、及び他のファイルの少なくとも１つを格納する電子デバイス（例えば、電子デバイス１０４−１１０）を使用することができる。ファイル及びユーザアカウントの少なくとも一方へアクセスするために、ユーザは、電子デバイスからオンラインストレージシステム１０２へのユーザアカウントに対する認証クレデンシャル（認証情報）を提供してもよい。ユーザはまた、他の電子デバイスからオンラインストレージシステム１０２への同じ認証クレデンシャルを提供すること、他のユーザのユーザアカウントからファイルへのアクセスを認証すること、及び、オンラインストレージシステム１０２上の公開されたアクセス可能なディレクトリへファイルを格納することの少なくとも１つによって、他の電子デバイスからファイルへのアクセスを可能にすることができる。
【００１９】
オンラインストレージシステム１０２での、そのような格納、バックアップ、共有、同期化、及びデータへのアクセスを可能にするために、オンラインストレージシステム１０２は、１つ以上の記憶機構を用いてデータを格納してもよい。例えば、オンラインストレージシステム１０２は、１つ以上のサーバ、クラウドストレージ、ネットワーク接続ストレージ（ＮＡＳ）、ストレージエリアネットワーク（ＳＡＮ）、安価な複数のディスクを接続した冗長アレイ（ＲＡＩＤ）システム、及び、データを記憶する他のネットワークにアクセス可能なストレージの少なくとも１つを使用してもよい。オンラインストレージシステム１０２は、多様なファイルシステムのアーキテクチャ及び階層の少なくとも１つを用いて、追加的にデータを格納し、電子デバイス１０４−１１０からのデータの格納に関わる場所及び機構の少なくとも１つを見えなくするようにしてもよい。
【００２０】
１つ以上の実施形態において、オンラインストレージシステム１０２は、電子デバイス１０４−１１０とオンラインストレージシステム１０２との間の自動的なデータ同期化をサポートするクライアントアプリケーションに関連付けられてもよい。例えば、クライアントアプリケーションは、各電子デバイスでインストールされ、電子デバイスとオンラインストレージシステム１０２との間で、指定したディレクトリに関連する変更（例えば、ディレクトリ内でのファイルやサブディレクトリの少なくとも一方の新規、削除、変更、コピー及び移動の少なくとも１つ）を自動的に同期化するようにしてもよい。そのような同期化を実行するために、クライアントアプリケーションは、電子デバイス上の指定したディレクトリに対応するローカルディレクトリを監視し、オンラインストレージシステム１０２上の指定したディレクトリに対応するリモートディレクトリと、ローカルディレクトリへの変更を同期化するようにしてもよい。一方、クライアントアプリケーションは、リモートディレクトリへの変更を特定し、ローカルディレクトリへ変更を伝えてもよい。クライアントアプリケーションは電子デバイスのユーザによって直接的に使用されるため、当該クライアントアプリケーションは、ユーザから同期化の詳細を隠すか、省略するかの少なくとも一方を行うようにしてもよい。
【００２１】
図２に示すように、電子デバイス２０２とオンラインストレージシステム１０２との間の対話は、オンラインストレージシステム１０２で直接的には認められていないサードパーティのアプリケーションなどの、電子デバイス２０２上のアプリケーション２１０でのアプリケーションプログラミングインタフェース（ＡＰＩ）２０４によって、さらに容易にしてもよい。例えば、ＡＰＩ２０４は、読み出し、書き込み、コピー、移動、削除、及び、オンラインストレージシステム１０２上のデータ２１６に対するその他のアクセスの少なくとも１つに関する操作に関連する一連のメソッド及びファンクション呼出しの少なくとも１つを提供してもよい。同様に、アプリケーション２１０は、アプリケーション２１０におけるアプリケーションデータをバックアップしたり、オンラインストレージシステム１０２及び他の電子デバイスの少なくとも１つと、アプリケーション２１０に関連するユーザデータ（例えば、画像、音声、ビデオ、テキスト、文書など）を同期化したりするなどのタスクを実行するためにメソッド及びファンクション呼出しの少なくとも１つを呼び出してもよい。
【００２２】
より詳細には、ＡＰＩ２０４に関連付けられる同期化装置２０６は、オンラインストレージシステム１０２上のデータ２１６と、電子デバイス２０２のローカルキャッシュ２１２のデータを同期化することができる。上述したように、そのような同期化は、データ２１６−２１８の各セットの変更を検出し、他のデータセットへ変更を伝達することによって達成されうる。例えば、同期化装置２０６は、オンラインストレージシステム１０２からのデータ２１６の変更を受信し、データ２１８へ適用するために、ロングポーリング技術を使用してもよい。同期化装置２０６はまた、アプリケーション２１０がデータ２１８への変更を検出し、データ２１６との同期化のためにオンラインストレージシステム１０２へ当該変更を更新することを許容してもよい。
【００２３】
１つ以上の実施形態において、データ２１６−２１８の同期化は、読取操作、書込操作、更新操作、及びクローズ操作などの、ＡＰＩ２０４を通じてアプリケーション２１０で利用可能なファイルレベルの操作に基づく。当該操作は、アプリケーション２１０によって行われる操作に関連付けて読み出された直後に完了したように見える。同時に、ＡＰＩ２０４は、オンラインストレージシステム１０２へ当該操作を伝達し、オンラインストレージシステム１０２と、電子デバイス２０２及びオンラインストレージシステム１０２の間のネットワーク接続との少なくとも一方の利用可能性に基づき、オンラインストレージシステム１０２からデータ２１６−２１８に関連付けられた更新を取得するかの少なくとも一方を行うようにしてもよい。
【００２４】
さらに、同期化装置２０６は、データ２１６を含むファイルシステム２１４におけるメタデータ２２０を、キャッシュ２２２の対応する一連のメタデータ２２２と同期化してもよい。メタデータ２２０−２２２は、ディレクトリ階層と、データ２１６−２１８に関連付けられたパスとを表すことができる。例えば、メタデータ２２０−２２２は、電子デバイス２０２及びアプリケーション２１０の少なくとも一方へアクセス可能なファイルシステム２１４のディレクトリの内容（例えば、ファイル、サブディレクトリ等）を記述することができる。データ２１６−２１８と同様に、メタデータ２２０−２２２は、各一連のメタデータへの変更を検出し、他の一連のメタデータへの変更を伝達することによって同期化されうる。
【００２５】
さらに、メタデータ２２０−２２２の同期化は、オープン操作、作成操作、削除操作及び移動操作の少なくとも１つなどのＡＰＩ２０４を通じてアプリケーション２１０で利用可能なファイルシステムレベルの操作に基づいてもよい。そのような操作がアプリケーションによって使用される前に、同期化装置２０６は、オンラインストレージシステム１０２からのメタデータ２２０のコピーとしてメタデータ２２２を取得することと、電子デバイス２０２上のキャッシュ２１２及びローカルストレージの少なくとも１つからのメタデータ２２２のコピーとしてメタデータ２２０を取得することとの少なくとも１つを行うことによってメタデータ２２０−２２２の第１の同期化を行ってもよい。第１の同期化が完了した後に、同期化装置２０６は、電子デバイス２０２からのファイルシステム２１４及びデータ２１６の少なくとも一方へのアクセスを可能とすることができ、変更を含む一連のメタデータからの変更を取得し、他の一連のメタデータへ当該変更を適用することによって、メタデータ２２０−２２２への変更を同期化することができる。
【００２６】
アプリケーション２１０によってデータ２１６−２１８及びメタデータ２２０−２２２の強固な同期化を容易にするために、ＡＰＩ２０４に関連する通信装置２０８は、電子デバイス２０２とオンラインストレージシステム１０２との間のデータ２１６−２１８の同期化状態と、メタデータ２２０−２２２のファイルシステム同期化状態２２６との少なくとも一方を、アプリケーション２１０に対して提供してもよい。同期化状態２２４は、データ２１６−２１８の同期化に関連付けられる操作に関連する多くの異なる状態を特定してもよい。例えば、同期化状態２２４は、電子デバイス２０２とオンラインストレージシステム１０２との間で同期化されるべき各ファイル及びデータ２１６−２１８の他のユニットの少なくとも１つに対する、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及び、エラー状態の少なくとも１つを含んでもよい。
【００２７】
同様に、ファイルシステム同期化状態２２６は、メタデータ２２０−２２２の同期化に関連付けられる操作に関連する種々の状態を含んでもよい。例えば、ファイルシステム同期化状態２２６は、電子デバイス２０２及びオンラインストレージシステム１０２の間の同期化されるべきメタデータ２２０−２２２に対する、メタデータ同期化状態、オンライン状態、実行状態、レディ状態、及び、変更状態の少なくとも１つを含んでもよい。
【００２８】
より詳細には、データ２１６−２１８の同期化に関連付けられる上述した操作及び状態の少なくとも一方は、ファイルの状態に対するインタフェースと、ファイルに対するインタフェースとを用いて実現されうる。ファイルの状態に対するインタフェースは、以下の例示的な実装を含んでもよい。
ｙｐｅｄｅｆ  ｅｎｕｍ  ｛
ＤＢＦｉｌｅＳｔａｔｅＤｏｗｎｌｏａｄｉｎｇ，
ＤＢＦｉｌｅＳｔａｔｅＩｄｌｅ，
ＤＢＦｉｌｅＳｔａｔｅＵｐｌｏａｄｉｎｇ，
｝  ＤＢＦｉｌｅＳｔａｔｅ；
／＊＊ファイル状態オブジェクトは、アップロード状態及びダウンロード状態や、アップロードやダウンロードの転送中の状態である場合には、キャッシュされているかどうかの情報を含む、ファイルの現在の同期化状態についての情報を公開する。＊／
＠ｉｎｔｅｒｆａｃｅ  ＤＢＦｉｌｅＳｔａｔｕｓ  ：  ＮＳＯｂｊｅｃｔ
／＊＊  ＠ｎａｍｅ  基本情報  ＊／
／＊＊  ファイルの内容がローカルにキャッシュされているかどうか、ネットワークリクエストを作成することなく読取可能か否か  ＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＢＯＯＬ  ｃａｃｈｅｄ；
／＊＊  ＠ｎａｍｅ  転送情報＊／
／＊＊  ファイルが、現在、アップロード状態、ダウンロード状態、又は、それ以外（アイドル）の状態であるかどうか  ＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＤＢＦｉｌｅＳｔａｔｅ  ｓｔａｔｅ；
／＊＊  ファイルが転送状態であれば、転送の進捗は、０から１の間となる＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ｆｌｏａｔ  ｐｒｏｇｒｅｓｓ；
／＊＊  ファイルを転送する必要があるが何らかの理由（インターネット接続がないなど）で転送できない場合、その後に当該プロパティが転送を妨害した最新のエラーに設定される。  ＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＮＳＥｒｒｏｒ  ＊ｅｒｒｏｒ；
＠ｅｎｄ
インタフェース内で、”ＤＢＦｉｌｅＳｔａｔｅ”タイプは、現在ダウンロード中として（例えば、ダウンロード状態）同期化状態２２４を示す”ＤＢＦｉｌｅＳｔａｔｅＤｏｗｎｌｏａｄｉｎｇ”値と、現在アイドル中として（例えば、アイドル状態）同期化状態２２４を示す”ＤＢＦｉｌｅＳｔａｔｅＩｄｌｅ”値と、現在アップロード中として（例えば、アップロード状態）同期化状態２２４を示す”ＤＢＦｉｌｅＳｔａｔｅＵｐｌｏａｄｉｎｇ”値との３つの値の１つを含んでもよい。インタフェースはまた、”ｃａｃｈｅｄ”と称するブール値を用いる同期化状態２２４のキャッシュ状態（例えば、ファイルのキャッシュ）と、”ｐｒｏｇｒｅｓｓ”と称する浮動小数点を用いる”ＤＢＦｉｌｅＳｔａｔｅ”と関連付けられるダウンロード及びアップロードの少なくとも１つの転送の進捗と、”ｅｒｒｏｒ”によって表されるエラーコードを用いるダウンロード及びアップロードの少なくとも１つに関連付けられるエラー状態とを含むか或いは除外してもよい。
【００２９】
同様に、ファイルに対するインタフェースは以下の例示の実装を含むことができる。
ｔｙｐｅｄｅｆ  ｖｏｉｄ  （＾ＤＢＦｉｌｅＯｂｓｅｒｖｅｒ）（）；
／＊＊  ファイルオブジェクトは特定のバージョンで特定のファイルを示す。ファイル内容の読み取り、書き込み、ファイルに関する情報の取得などの基本的なファイル操作を有する。また現在の同期化状態や新たなバージョンを利用可能かどうかを通知することができ、新たなバージョンに更新することができる。  ＊／
＠ｉｎｔｅｒｆａｃｅ  ＤＢＦｉｌｅ  ：  ＮＳＯｂｊｅｃｔ
／＊＊  ＠ｎａｍｅ  基本操作＊／
／＊＊ファイルに対する読取専用のファイルハンドルを返す。ファイルがキャッシュされていなければ、その後、当該メソッドはファイルがダウンロードされるまでブロックする。
＠ｒｅｔｕｒｎ  ファイルを読み取ることができればファイルハンドルを返し、又は、エラーが発生した場合は”ｎｉｌ”を返す。＊／
−  （ＮＳＦｉｌｅＨａｎｄｌｅ  ＊）ｒｅａｄＨａｎｄｌｅ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊読取ハンドルにおけるラッパー：ファイル内容全体をＮＳＤａｔａオブジェクトに読み込む。＊＊／
＠ｒｅｔｕｒｎ  ファイルを読み取ることができればファイルの内容を返し、エラーが発生した場合は”ｎｉｌ”を返す。＊／
−  （ＮＳＤａｔａ  ＊）ｒｅａｄＤａｔａ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊読取ハンドルにおけるラッパー：ファイル内容全体をＵＴＦ８符合化文字列として読み込む。
＠ｒｅｔｕｒｎ  ファイルを読み取ることができればＵＴＦ８で復号化されたファイルの内容を返し、エラーが発生した場合は”ｎｉｌ”を返す。＊／
−  （ＮＳＳｔｒｉｎｇ  ＊）ｒｅａｄＳｔｒｉｎｇ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ”ｌｏｃａｌＰａｔｈ”のファイルの内容で、当該ファイルの内容を更新する。ファイルがキャッシュされなければその後エラーが発生する。
＠ｐａｒａｍ  ｓｈｏｕｌｄＳｔｅａｌ  ”ｌｏｃａｌＰａｔｈ”においてファイルがコピーされるべきか、又は、その現在の位置から同期化ＳＤＫによる管理に移動されうるか。”ｌｏｃａｌＰａｔｈ”のファイルで実行する場合、その後、スチールがより効果的であるがスチール後のファイルへの書き込み動作は定義されない。
＠ｒｅｔｕｒｎ  ファイルが正常に書き込まれればＹＥＳを返し、エラーが発生した場合はＮＯを返す。＊／
−  （ＢＯＯＬ）ｗｒｉｔｅＣｏｎｔｅｎｔｓＯｆＦｉｌｅ：（ＮＳＳｔｒｉｎｇ  ＊）ｌｏｃａｌＰａｔｈ  
ｓｈｏｕｌｄＳｔｅａｌ：（ＢＯＯＬ）ｓｈｏｕｌｄＳｔｅａｌ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ファイルの内容を”ｄａｔａ”のｂｙｔｅｓ  ｓｔｏｒｅへ更新し、ファイルがキャッシュされなければその後エラーが生成される。
＠ｒｅｔｕｒｎ  ファイルが正常に書き込まれればＹＥＳを返し、エラーが発生した場合はＮＯを返す。＊／
−  （ＢＯＯＬ）ｗｒｉｔｅＤａｔａ：（ＮＳＤａｔａ  ＊）ｄａｔａ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊ＵＴＦ８で符号化された”ｓｔｒｉｎｇ”としてファイルの内容を更新する。ファイルがキャッシュされなければ、その後、エラーが生成される。
＠ｒｅｔｕｒｎ  ファイルが正常に書き込まれればＹＥＳを返し、エラーが発生した場合はＮＯを返す。＊／
−  （ＢＯＯＬ）ｗｒｉｔｅＳｔｒｉｎｇ：（ＮＳＳｔｒｉｎｇ  ＊）ｓｔｒｉｎｇ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ファイルの利用可能な新しいバージョンがあり、キャッシュされていれば（ｎｅｗｅｒＳｔａｔｕｓにキャッシュされたプロパティによって判定される）、その後、当該メソッドは新しいバージョンを参照するファイルオブジェクトを更新し、読み取り、書き込みが可能となる。
＠ｒｅｔｕｒｎ  ファイルが正常に書き込まれればＹＥＳを返し、エラーが発生した場合はＮＯを返す。＊／
−  （ＢＯＯＬ）ｕｐｄａｔｅ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ファイルを閉じて、ファイルが再び開かれることが発生すること及び許容することから任意の他の操作を防止する。これはオブジェクトの割り当てが解除された際に自動的に行われる。＊／
−  （ｖｏｉｄ）ｃｌｏｓｅ；
／＊＊  ＠ｎａｍｅ  現在の状態を取得する。＊／
／＊＊  ファイルが現在開かれているかどうか＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ，  ｇｅｔｔｅｒ＝ｉｓＯｐｅｎ）  ＢＯＯＬ  ｏｐｅｎ；
／＊＊  ファイルにおける現在の同期化状態＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＤＢＦｉｌｅＳｔａｔｕｓ  ＊ｓｔａｔｕｓ；
／＊＊  当該ファイルの新たなバージョンにおける現在の同期化状態。ファイルが新たなバージョンであれば、その後当該プロパティは”ｎｉｌ”となる。＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＤＢＦｉｌｅＳｔａｔｕｓ  ＊ｎｅｗｅｒＳｔａｔｕｓ；
＠ｅｎｄ
インタフェース内で、一連のメソッド呼び出し”ｒｅａｄＨａｎｄｌｅ”、”ｒｅａｄＤａｔａ”、及び”ｒｅａｄＳｔｒｉｎｇ”は、ファイルから、データ（例えば、データ２１６−２１８）を読み出すために使用されうる。同様に、一連のメソッド呼び出し”ｗｒｉｔｅＣｏｎｔｅｎｔｓＯｆＦｉｌｅ”、”ｗｒｉｔｅＤａｔａ”、及び”ｗｒｉｔｅＳｔｒｉｎｇ”は、キャッシュ２１２のファイル、キャッシュの一連のバイト、文字列、及びキャッシュ２１２の新たなバージョンのコピーからオンラインストレージ１０２上のファイルへ書き込むために使用されうる。”ｃｌｏｓｅ”メソッドの呼び出しは、ファイルを閉じ、ファイルが再び開かれるまでファイルからのその後の読出し、及びファイルへの書き込みの少なくとも１つを防止するために行われる。インタフェースは、ファイルが開いているか否かを特定するために”ｏｐｅｎ”値を使用し、上述したファイルの”ＤＢＦｉｌｅＳｔａｔｕｓ”を示すために”ｓｔａｔｕｓ”を使用し、ファイルの新たなバージョンの”ＤＢＦｉｌｅＳｔａｔｕｓ”を示すために”ｎｅｗｅｒＳｔａｔｕｓ”をさらに使用してもよい。言い換えると、インタフェースは、電子デバイス２０２とオンラインストレージ１０２との間のファイルの種々のバージョンの同期化及び管理の少なくとも１つを容易にすることができる。
【００３０】
さらに、上述したメタデータ２２０−２２２の同期化に関連付けられた操作及び状態の少なくとも１つは、ファイルシステム（例えば、ファイルシステム２１４）におけるインタフェースを用いて実行されうる。ファイルシステムにおけるインタフェースは、以下の例示の実装を含む。
／＊＊ファイルシステムの同期化の現在の状態を示す一連の種々のフィールド＊／
ｅｎｕｍ  ＤＢＳｙｎｃＳｔａｔｕｓ  ｛
ＤＢＳｙｎｃＳｔａｔｕｓＤｏｗｎｌｏａｄｉｎｇ  ＝  （１  ＜＜  ０），
ＤＢＳｙｎｃＳｔａｔｕｓＵｐｌｏａｄｉｎｇ  ＝  （１  ＜＜  １），
ＤＢＳｙｎｃＳｔａｔｕｓＳｙｎｃｉｎｇ  ＝  （１  ＜＜  ２），
ＤＢＳｙｎｃＳｔａｔｕｓＯｎｌｉｎｅ  ＝  （１  ＜＜  ３），
｝；
ｔｙｐｅｄｅｆ  ＮＳＵＩｎｔｅｇｅｒ  ＤＢＳｙｎｃＳｔａｔｕｓ；
ｔｙｐｅｄｅｆ  ｖｏｉｄ  （＾ＤＢＰａｔｈＯｂｓｅｒｖｅｒ）（）；
／＊＊ファイルシステムのオブジェクトは、ファイル及びフォルダビューを提供する。最も基本的な操作は、フォルダをリストアップすることと、ファイルを開く（オープン）することであるが、ファイルやフォルダの移動、削除、及び作成も行うことができる。＊／
＠ｉｎｔｅｒｆａｃｅ  ＤＢＦｉｌｅｓｙｓｔｅｍ  ：  ＮＳＯｂｊｅｃｔ
／＊＊  ＠ｎａｍｅ  ファイルシステムオブジェクトの作成＊／
／＊＊［ａｃｃｏｕｎｔ  ｍａｎａｇｅｒ］（ＤＢＡｃｃｏｕｎｔＭａｎａｇｅｒ）からリンク付けされた［ａｃｃｏｕｎｔ］（ＤＢＡｃｃｏｕｎｔ）で新たなファイルシステムオブジェクトを作成＊／
−  （ｉｄ）ｉｎｉｔＷｉｔｈＡｃｃｏｕｎｔ：（ＤＢＡｃｃｏｕｎｔ  ＊）ａｃｃｏｕｎｔ；
／＊＊アプリのファイルシステムを格納する都合のよい場所＊／
＋  （ｖｏｉｄ）ｓｅｔＳｈａｒｅｄＦｉｌｅｓｙｓｔｅｍ：（ＤＢＦｉｌｅｓｙｓｔｅｍ  ＊）ｆｉｌｅｓｙｓｔｅｍ；
／＊＊アプリのファイルシステムを取得する都合のよい場所＊／
＋  （ＤＢＦｉｌｅｓｙｓｔｅｍ  ＊）ｓｈａｒｅｄＦｉｌｅｓｙｓｔｅｍ；
／＊＊  ＠ｎａｍｅ  ファイル情報の取得＊／
／＊＊”ｐａｔｈ”においてフォルダに含まれるファイルを表すＤＢＦｉｌｅＩｎｆｏのリストを返す。ｃｏｍｐｌｅｔｅｄＦｉｒｓｔＳｙｎｃが失敗の場合、その後、当該呼び出しは第１の同期化が完了するか又はエラーが発生するまでブロックする。
＠ｒｅｔｕｒｎ  成功した場合はＤＢＦｉｌｅＩｎｆｏオブジェクトの配列を返し、エラーが発生した場合は”ｎｉｌ”を返す。＊／
−  （ＮＳＡｒｒａｙ  ＊）ｌｉｓｔＦｏｌｄｅｒ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊”ｐａｔｈ”においてファイル又はフォルダに対する［ｆｉｌｅ  ｉｎｆｏ］（ＤＢＦｉｌｅＩｎｆｏ）を返す。＊／
−  （ＤＢＦｉｌｅＩｎｆｏ  ＊）ｆｉｌｅＩｎｆｏＦｏｒＰａｔｈ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ＠ｎａｍｅ  操作  ＊／
／＊＊既存のファイルを開き、”ｐａｔｈ”でのファイルを表す［ｆｉｌｅ］（ＤＢＦｉｌｅ）オブジェクトを返す。ファイルがキャッシュされると最新のキャッシュバージョンでファイルが開かれ、キャッシュされなければ最新のサーババージョンでファイルが開かれる。キャッシュされているかどうかを判定するために返されたファイルオブジェクトの”ｓｔａｔｕｓ”プロパティを確認する。同時に所定のｐａｔｈ内で１つのみのファイルが開かれる。
＠ｒｅｔｕｒｎ  ファイルが正常に開かれた場合は［ｆｉｌｅ］（ＤＢＦｉｌｅ）オブジェクトを返し、エラーが発生した場合は”ｎｉｌ”を返す。＊／
−  （ＤＢＦｉｌｅ  ＊）ｏｐｅｎＦｉｌｅ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊”ｐａｔｈ”で新たなファイルを作成し、当該ｐａｔｈでファイルオブジェクトを返す。
＠ｒｅｔｕｒｎ  ファイルが正常に開かれた場合は新たに作成された［ｆｉｌｅ］（ＤＢＦｉｌｅ）オブジェクトを返し、エラーが発生した場合は”ｎｉｌ”を返す。＊／
−  （ＤＢＦｉｌｅ  ＊）ｃｒｅａｔｅＦｉｌｅ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ”ｐａｔｈ”で新たなフォルダの作成
＠ｒｅｔｕｒｎ  フォルダが正常に作成された場合はＹＥＳを返し、エラーが発生した場合はＮＯを返す。＊／
−  （ＢＯＯＬ）ｃｒｅａｔｅＦｏｌｄｅｒ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ”ｐａｔｈ”でファイル又はフォルダを削除する。
＠ｒｅｔｕｒｎ  ファイル又はフォルダが正常に作成された場合はＹＥＳを返し、エラーが発生した場合はＮＯを返す。  ＊／
−  （ＢＯＯＬ）ｄｅｌｅｔｅＰａｔｈ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ”ｆｒｏｍＰａｔｈ”から”ｔｏＰａｔｈ”へファイル又はフォルダを移動
＠ｒｅｔｕｒｎ  ファイル又はフォルダが正常に移動した場合はＹＥＳを返し、エラーが発生した場合はＮＯを返す。＊／
−  （ＢＯＯＬ）ｍｏｖｅＰａｔｈ：（ＤＢＰａｔｈ  ＊）ｆｒｏｍＰａｔｈ  ｔｏＰａｔｈ：（ＤＢＰａｔｈ  ＊）ｔｏＰａｔｈ  ｅｒｒｏｒ：（ＮＳＥｒｒｏｒ  ＊＊）ｅｒｒｏｒ；
／＊＊  ＠ｎａｍｅ  現在の状態を取得＊／
／＊＊  当該ファイルシステムが［ａｃｃｏｕｎｔ］（ＤＢＡｃｃｏｕｎｔ）オブジェクトで作成される。＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＤＢＡｃｃｏｕｎｔ  ＊ａｃｃｏｕｎｔ；
／＊＊  ユーザのアカウントがまずリンク付けされると、当該アカウントが使用される前にファイルシステムがサーバと同期化される必要がある。当該プロパティは、同期化が完了し、ファイルシステムが使用可能な状態であるかどうかを示す。＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＢＯＯＬ  ｃｏｍｐｌｅｔｅｄＦｉｒｓｔＳｙｎｃ；
／＊＊ファイルシステムが現在実行中であるかどうか。ファイルシステムに関連付けられるアカウントが切断された状態になるとファイルシステムは実行を停止する。＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ，  ｇｅｔｔｅｒ＝ｉｓＲｕｎｎｉｎｇ）  ＢＯＯＬ  ｒｕｎｎｉｎｇ；
／＊＊  論理和の値とともに、ファイルシステムの現在の全てのアクティブ状態を表すビットマスクを返す。より詳細にはＤＢＳｙｎｃＳｔａｔｕｓ加算を参照。＊／
＠ｐｒｏｐｅｒｔｙ  （ｎｏｎａｔｏｍｉｃ，  ｒｅａｄｏｎｌｙ）  ＤＢＳｙｎｃＳｔａｔｕｓ  ｓｔａｔｕｓ；
／＊＊  ＠ｎａｍｅ  変更の監視  ＊／
／＊＊”ｐａｔｈ”でのファイル又はフォルダの変更の時刻を通知すべきオブザーバに追加する。＊／
−  （ＢＯＯＬ）ａｄｄＯｂｓｅｒｖｅｒ：（ｉｄ）ｏｂｓｅｒｖｅｒ  ｆｏｒＰａｔｈ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｂｌｏｃｋ：（ＤＢＰａｔｈＯｂｓｅｒｖｅｒ）ｂｌｏｃｋ；
／＊＊”ｐａｔｈ”でのフォルダの変更、又は、”ｐａｔｈ”に直接含まれるファイル若しくはフォルダの変更、の時刻を通知すべきオブザーバに追加する。＊／
−  （ＢＯＯＬ）ａｄｄＯｂｓｅｒｖｅｒ：（ｉｄ）ｏｂｓｅｒｖｅｒ  ｆｏｒＰａｔｈＡｎｄＣｈｉｌｄｒｅｎ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｂｌｏｃｋ：（ＤＢＰａｔｈＯｂｓｅｒｖｅｒ）ｂｌｏｃｋ；
／＊＊”ｐａｔｈ”でのフォルダの変更、又は、”ｐａｔｈ”下のいずれかに含まれるファイル若しくはフォルダの変更、の時刻を通知すべきオブザーバに追加する。＊／
−  （ＢＯＯＬ）ａｄｄＯｂｓｅｒｖｅｒ：（ｉｄ）ｏｂｓｅｒｖｅｒ  ｆｏｒＰａｔｈＡｎｄＤｅｓｃｅｎｄａｎｔｓ：（ＤＢＰａｔｈ  ＊）ｐａｔｈ  ｂｌｏｃｋ：（ＤＢＰａｔｈＯｂｓｅｒｖｅｒ）ｂｌｏｃｋ；
／＊＊更新の受信から”ｏｂｓｅｒｖｅｒ”に関連付けられる全てのブロックの登録を抹消する。＊／
−  （ｖｏｉｄ）ｒｅｍｏｖｅＯｂｓｅｒｖｅｒ：（ｉｄ）ｏｂｓｅｒｖｅｒ；
＠ｅｎｄ
インタフェース内で、”ＤＢＳｙｎｃＳｔａｔｕｓ”タイプは、ファイルシステムがオンラインストレージシステム１０２から電子デバイス２０２へ現在ダウンロードされているかどうか（例えば、ダウンロード状態）を示す”ＤＢＳｙｎｃＳｔａｔｕｓＤｏｗｎｌｏａｄｉｎｇ”ビットと、ファイルシステムが電子デバイス２０２からオンラインストレージシステム１０２へ現在アップロードされているかどうか（例えば、アップロード状態）を示す”ＤＢＳｙｎｃＳｔａｔｕｓＵｐｌｏａｄｉｎｇ”ビットとを使用してもよい。”ＤＢＳｙｎｃＳｔａｔｕｓ”はまた、ファイルシステムにおけるメタデータ２２０−２２２の同期化が発生しているかどうか（例えば、メタデータ同期化状態）を特定する”ＤＢＳｙｎｃＳｔａｔｕｓＳｙｎｃｉｎｇ”ビットと、ファイルシステム及び電子デバイス２０２の少なくとも１つが現在オンラインであるかどうか（例えば、オンライン状態）を特定する”ＤＢＳｙｎｃＳｔａｔｕｓＯｎｌｉｎｅ”ビットとを含んでもよい。結果として、”ＤＢＳｙｎｃＳｔａｔｕｓ”は、ファイルシステムの同期化状態２２６の一部を提供するために使用されうる。
【００３１】
インタフェースはまた、メタデータ２２０−２２２を同期化する操作へのメソッド呼び出しを含んでもよい。そのようなメソッド呼び出しは、既存ファイルを開くオープン操作への”ｏｐｅｎＦｉｌｅ”メソッド呼び出しと、新たなファイルを作成する作成操作への”ｃｒｅａｔｅＦｉｌｅ”メソッド呼び出しと、新たなディレクトリを作成する作成操作への”ｃｒｅａｔｅＰａｔｈ”メソッド呼び出しと、を含んでもよい。メソッド呼び出しはさらに、特定パスでのファイル及びディレクトリの少なくとも１つを削除する削除操作への”ｄｅｌｅｔｅＰａｔｈ”メソッド呼び出しと、特定パスへファイル又はディレクトリを移動する移動操作への”ｍｏｖｅＰａｔｈ”メソッド呼び出しと、を含んでもよい。移動操作は、明確なメソッド呼び出しに関連付けられ、ＡＰＩ２０４は位置及び長期にわたる固有ファイルの移動を追跡することができる。一方、オンラインストレージシステム１０２にアクセスするクライアントアプリケーションは、１つの場所からファイル又はディレクトリを削除し、他の場所にファイル又はディレクトリを作成することによって移動操作を実行するため、そのような追跡を実行する能力が無い。
【００３２】
インタフェースは、上述したメタデータ２２０−２２２（例えば、レディ状態）の第１の同期化の完了を示す”ｃｏｍｐｌｅｔｅｄＦｉｒｓｔＳｙｎｃ”プロパティと、ファイルシステムが実行中であるかどうか（例えば、実行状態）を示す”ｒｕｎｎｉｎｇ”プロパティとを含む一連のプロパティを用いてファイルシステムの同期化状態２２６の他の部分を特定することができる。インタフェースはまた、”ＤＢＳｙｎｃＳｔａｔｕｓ”と関連付けられる状態を提供する”ｓｔａｔｕｓ”プロパティを含む。
【００３３】
最後に、インタフェースは、ファイルシステムのパス、ディレクトリ、及びファイルの少なくとも１つと関連付けられる１つ以上の変更状態を提供してもよい。特に、インタフェースは、ファイルシステムの特定のパスへの変更の通知を可能にする”ｆｏｒＰａｔｈ”変更状態を含んでもよい。インタフェースはまた、パスと、パス配下に直接位置するファイル及びディレクトリの少なくとも一方とへの変更の通知を可能とする”ｆｏｒＰａｔｈＡｎｄＣｈｉｌｄｒｅｎ”変更状態と、パスと、パス配下のいずれかに位置するファイル及びディレクトリの少なくとも一方とへの変更の通知を可能とする”ｆｏｒＰａｔｈＡｎｄＤｅｓｃｅｎｄａｎｔｓ”変更状態とを含んでもよい。
【００３４】
アプリケーション２１０及び同期化装置２０６は、同期化状態２２４と、データ２１６−２１８を同期化するファイルシステムの同期化状態２２６とによって提供される情報を使用することができる。例えば、同期化状態２２４がキャッシュ状態を含む場合、同期化装置２０６はキャッシュ２１２からのデータ２１８にアクセスすることができる。同期化状態がキャッシュ状態２２４を含まない場合は、同期化装置２０６は、オンラインストレージシステム１０２からのデータにアクセスしてもよい。データ２１６−２１８の新たなバージョンが利用可能であれば、同期化装置２０６は、キャッシュ２１２及びオンラインストレージシステム１０２の少なくとも一方からの新たなバージョンにアクセスすることができる。最後に、データ２１６−２１８が利用可能でなければ、同期化装置２０６は、エラー状態を示してもよい。
【００３５】
言い換えれば、アプリケーション２１０は、電子デバイス２０４上のローカルストレージ（例えば、キャッシュ２１２）及びオンラインストレージシステム１０２の両方へアクセスするために単一のＡＰＩ２０４を使用してもよい。さらに、同期化状態２２４及びファイルシステム同期化状態２２６は、アプリケーション２１０がデータ２１６−２１８及びメタデータ２２０−２２２への変更を管理することを許容する、データ２１６−２１８及びメタデータ２２０−２２２と、データ２１６−２１８の新たなバージョンと、同期化に関連するエラーとの少なくとも１つの同期化に関連する情報を公開してもよい。言い換えれば、ＡＰＩ２０４は、アプリケーション２１０及びオンラインストレージシステム１０２の間でデータ２１６−２１８及びメタデータ２２０−２２２の少なくとも１つを同期化する際の効率、容易性及び有効性を改善することができる。
【００３６】
当業者は、図２のシステムが種々の方法で実現されることを理解するであろう。上述したように、オンラインストレージシステム１０２は、データ２１６及びメタデータ２２０の少なくとも一方を格納する多くのストレージメカニズム及びファイルシステムアーキテクチャの少なくとも１つを利用することができる。同様に、同期化装置２０６及び通信装置２０８は、種々のコンポーネント及びデバイスの少なくとも１つによって提供されうる。例えば、同期化装置２０６及び通信装置２０８の少なくとも一方は、電子デバイス２０２と、オンラインストレージシステム１０２と、電子デバイス２０２及びオンラインストレージシステム１０２の間の中間装置として作動するデバイス（サーバ）との少なくとも１つのライブラリを用いて実現されうる。さらに、アプリケーション２１０及びＡＰＩ２０４の間のインタラクションは、多様なプログラミング言語、データ種別及び構造、動作、状態、及び呼び出しの少なくとも１つを通じて可能となる。
【００３７】
図３は、上述した実施形態に従ってオンラインストレージシステムに関連付けられるデータへのアクセスを管理する処理の一例を示すフローチャートである。従って、図３に示されるステップの特定の構成は、本発明の技術範囲を限定するように解釈されるべきではない。
【００３８】
まず、電子デバイス及びオンラインストレージシステムの間のデータの同期化が電子デバイス上のアプリケーションでのＡＰＩを通じて可能となる（動作３０２）。当該ＡＰＩは、アプリケーションがそのようなデータ同期化に関連する動作を実行するために呼び出す一連のメソッド及びファンクションの少なくとも１つの呼び出しを含む。
【００３９】
ＡＰＩはまた、データの同期化状態をアプリケーションへ提供するために使用される（動作３０４）。同期化状態は、オンラインストレージシステム上のデータと、電子デバイス上のキャッシュのデータのコピーとの間の同期化を記述してもよい。例えば、同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含んでもよい。同期化状態は、図４を用いて後述するように、データの同期化中のデータへアクセスするために使用されてもよい。
【００４０】
次に、電子デバイスとのデータを含むファイルシステムにおけるメタデータの同期化がＡＰＩを通じて可能となる（動作３０６）。メタデータの同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも１つを用いて可能なりうる。
【００４１】
最後に、アプリケーションへファイルシステムの同期化状態を提供するためにＡＰＩが使用される（動作３０８）。ファイルシステムの同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも１つを含んでもよい。さらに、変更状態は、ファイルシステムのパス、ディレクトリ、及びファイルの少なくとも１つに関連付けられてもよい。同期化状態及びファイルシステムの同期化状態の少なくとも一方は、アプリケーションによってオンラインストレージシステムの使用をそれぞれ改善する、アプリケーションにおけるデータ及びメタデータの両方の強固な同期化を可能にすることができる。
【００４２】
図４は、上述した実施形態に従って、電子デバイスとオンラインストレージシステムとの間のデータの同期化中におけるデータへのアクセスの処理を示すフローチャートである。１つ以上の実施形態において、１つ以上のステップが省略されたり、繰り返されたり、異なる順で実行されたりすることができる。従って、図４に示される特定の構成は、本発明の技術範囲を限定するように解釈されるべきではない。
【００４３】
まず、データへのアクセスがデータの同期化状態におけるキャッシュ状態を含むか否かに基づいてもよい（動作４０２）。キャッシュ状態は、電子デバイスのローカルキャッシュ上のデータの存在を示してもよい。したがって、同期化状態にキャッシュ状態を含む場合は、キャッシュからのデータのアクセスに帰結し（動作４０４）、一方で、同期化状態にキャッシュ状態がない場合はオンラインストレージからのデータへのアクセスを必要とする（動作４０６）。
【００４４】
オンラインストレージシステムからのデータへのアクセスは、さらにデータの利用可能性に基づいてもよい（動作４０８）。例えば、オンラインストレージシステムが利用可能でない場合や、電子デバイスがオンラインストレージシステムとの接続を欠いている場合には、当該データは利用可能でない。当該データが利用可能でなければ、エラー状態の扱いと、データへのその後のアクセスとを容易にするためにエラー状態が示される（動作４１４）。データが利用可能であればエラー状態は示されない。
【００４５】
キャッシュ及びオンラインストレージシステムの少なくとも一方からのデータのより新しいバージョンが利用可能であってもよい（動作４１０）。より新しいバージョンが利用可能でなければ（例えば、存在しなかったり、アクセス不可能である場合など）、既存のバージョンのデータにアクセスすることになる。
【００４６】
より新しいバージョンが利用可能であれば、当該新たなバージョンにアクセスされる（動作４１２）。例えば、キャッシュ及びオンラインストレージシステムの少なくとも一方からの既存バージョンのデータは、動作４０４−４０６を用いてアクセスされるように継続する一方で、新たなバージョンがアクセスできるように構成される（例えば、ダウンロードされる）。新たなバージョンがアクセスするのにレディ状態となると、既存バージョンは新たなバージョンで置き換えられる。
【００４７】
図５は、上述した実施形態に従ったコンピュータシステム５００を示す。コンピュータシステム５００は、プロセッサ５０２、メモリ５０４、ストレージ５０６、及び電子コンピューティングデバイスに見られる他のコンポーネントの少なくとも１つを含む装置に対応する。プロセッサ５０２は、コンピュータシステム５００の他のプロセッサとのパラレル処理及びマルチスレッド動作の少なくとも一方をサポートしてもよい。コンピュータシステム５００はまた、キーボード５０８、マウス５１０及びディスプレイ５１２などの入力／出力（Ｉ／Ｏ）装置を含んでもよい。
【００４８】
コンピュータシステム５００は、本実施形態の種々のコンポーネントを実行する機能を含んでもよい。特に、コンピュータシステム５００は、コンピュータシステム５００上のハードウェアリソース及びソフトウェアリソースの使用とともに、ユーザに特化したタスクを実行する１つ以上のアプリケーションの使用を調整するオペレーティングシステム（不図示）を含んでもよい。ユーザに対するタスクを実行するために、アプリケーションは、オペレーティングシステムからのコンピュータシステム５００上のハードウェアリソースの使用を欠くとするとともに、オペレーティングシステムによって提供されるハードウェア及びソフトウェアフレームワークの少なくとも１つを通じてユーザと対話することができる。
【００４９】
１つ以上の実施形態において、コンピュータシステム５００は、オンラインストレージシステムに関連付けられるデータへのアクセスを管理するためにシステムを提供する。当該システムは、電子デバイス上のアプリケーションでのＡＰＩを通じて電子デバイスとオンラインストレージシステムとの間のデータの同期化を可能にする同期化装置を含むことができる。当該システムはまた、アプリケーションへのデータの同期化状態を提供するためにＡＰＩを使用する通信装置を含むことができる。同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含むことができる。
【００５０】
同期化装置はまた、ＡＰＩを通じて電子デバイスとデータを含むファイルシステムにおけるメタデータの同期化を可能にすることができ、通信装置は、アプリケーションに対して、ファイルシステムの同期化状態を提供するためにＡＰＩを使用することができる。ファイルシステムの同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも１つを含む。
【００５１】
さらに、コンピュータシステム５００の１つ以上のコンポーネントは、遠隔に位置し、ネットワークを介して他のコンポーネントへ接続されうる。本実施形態の一部分（例えば、通信装置、同期化装置など）はまた、本実施形態を実現する分散システムの異なるノードに位置してもよい。例えば、本実施形態は、クラウドコンピューティングシステムに関連して、一連の遠隔の電子デバイスとストレージメカニズムとの間のデータを同期化するためのＡＰＩを提供するクラウドコンピューティングシステムを用いて実現されてもよい。
【００５２】
以下では他の実施形態のリストを記載する。
１．オンラインストレージシステムと関連付けられるデータへのアクセスを管理するためのコンピュータで実行可能な方法であって、
電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする工程と、
前記アプリケーションに対して、前記データの同期化状態を提供するために前記ＡＰＩを用いる工程と、を含み、
前記同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含むことを特徴とする方法。
２．前記アプリケーションに対して、前記データを含むファイルシステムのファイルシステム同期化状態を提供するために前記ＡＰＩを用いる工程をさらに含み、
前記ファイルシステム同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも１つを含むことを特徴とする上記１．に記載の方法。
３．前記ＡＰＩを通じて、前記電子デバイスで前記ファイルシステムにおけるメタデータの同期化を可能にする工程をさらに含むことを特徴とする上記２．に記載の方法。
４．前記電子デバイスで前記ファイルシステムにおけるメタデータの前記同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも１つを用いて可能となることを特徴とする上記３．に記載の方法。
５．前記変更状態は、パス、ディレクトリ、及びファイルの少なくとも１つに関連付けられることを特徴とする上記２．に記載の方法。
６．前記方法が前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化中に前記データへアクセスする場合、前記データへのアクセスは、
前記同期化状態が前記キャッシュ状態を含む場合は、前記電子デバイス上のキャッシュからのデータにアクセスし、
前記同期化状態が前記キャッシュ状態を含まない場合は、前記オンラインストレージシステムからのデータにアクセスし、
前記データのより新しいバージョンが利用可能であれば、前記より新しいバージョンへアクセスし、
前記データが利用可能でなければ、前記エラー状態を示すことを特徴とする上記１．に記載の方法。
７．前記同期化状態は、前記オンラインストレージシステム上の前記データと、前記電子デバイス上のキャッシュの前記データとの間の同期化を特定することを特徴とする上記１．に記載の方法。
８．オンラインストレージシステムと関連付けられるデータへのアクセスを管理するシステムであって、
電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする同期化装置と、
前記アプリケーションに対して、前記データの同期化状態を提供するために前記ＡＰＩを用いる通信装置と、を備え、
前記同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含むことを特徴とするシステム。
９．前記通信装置は、さらに、前記アプリケーションに対して、前記データを含むファイルシステムのファイルシステム同期化状態を提供するために前記ＡＰＩを用い、
前記ファイルシステム同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも１つを含むことを特徴とする上記８．に記載のシステム。
１０．前記同期化装置は、さらに、前記ＡＰＩを通じて、前記電子デバイスで前記ファイルシステムにおけるメタデータの同期化を可能にすることを特徴とする上記９．に記載のシステム。
１１．前記電子デバイスで前記ファイルシステムにおけるメタデータの前記同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも１つを用いて可能となることを特徴とする上記１０．に記載のシステム。
１２．前記変更状態は、パス、ディレクトリ、及びファイルの少なくとも１つに関連付けられることを特徴とする上記９．に記載のシステム。
１３．前記同期化装置が前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化中に前記データへアクセスする場合、前記データへのアクセスは、
前記同期化状態が前記キャッシュ状態を含む場合は、前記電子デバイス上のキャッシュからのデータにアクセスし、
前記同期化状態が前記キャッシュ状態を含まない場合は、前記オンラインストレージシステムからのデータにアクセスし、
前記データのより新しいバージョンが利用可能であれば、前記より新しいバージョンへアクセスし、
前記データが利用可能でなければ、前記エラー状態を示すことを特徴とする上記８．に記載のシステム。
１４．前記同期化状態は、前記オンラインストレージシステム上の前記データと、前記電子デバイス上のキャッシュの前記データとの間の同期化を特定することを特徴とする上記８．に記載のシステム。
１５．オンラインストレージシステムと関連付けられるデータへのアクセスを管理するための方法をコンピュータに実行させる命令を格納するコンピュータで読取可能な記憶媒体であって、前記方法は、
電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする工程と、
前記アプリケーションに対して、前記データの同期化状態を提供するために前記ＡＰＩを用いる工程と、を含み、
前記同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含むことを特徴とする記憶媒体。
１６．前記アプリケーションに対して、前記データを含むファイルシステムのファイルシステム同期化状態を提供するために前記ＡＰＩを用いる工程をさらに含み、
前記ファイルシステム同期化状態は、メタデータの同期化状態、オンライン状態、実行状態、レディ状態、及び変更状態の少なくとも１つを含むことを特徴とする上記１５．に記載の記憶媒体。
１７．前記ＡＰＩを通じて、前記電子デバイスで前記ファイルシステムにおけるメタデータの同期化を可能にする工程をさらに含むことを特徴とする上記１６．に記載の記憶媒体。
１８．前記電子デバイスで前記ファイルシステムにおけるメタデータの前記同期化は、オープン操作、作成操作、削除操作、及び移動操作の少なくとも１つを用いて可能となることを特徴とする上記１７．に記載の記憶媒体。
１９．前記変更状態は、パス、ディレクトリ、及びファイルの少なくとも１つに関連付けられることを特徴とする上記１６．に記載の記憶媒体。
２０．前記方法が前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化中に前記データへアクセスする場合、前記データへのアクセスは、
前記同期化状態が前記キャッシュ状態を含む場合は、前記電子デバイス上のキャッシュからのデータにアクセスし、
前記同期化状態が前記キャッシュ状態を含まない場合は、前記オンラインストレージシステムからのデータにアクセスし、
前記データのより新しいバージョンが利用可能であれば、前記より新しいバージョンへアクセスし、
前記データが利用可能でなければ、前記エラー状態を示すことを特徴とする上記１５．に記載の記憶媒体。
【００５３】
上記実施形態は例示として説明しているだけであって、他の実施形態及び変形が可能であることが当業者には理解されるであろう。例えば、一実施形態において、本発明は、オンラインストレージシステムと関連付けられるデータへのアクセスを管理するための装置として実現することができる。
【００５４】
当該装置は、電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にする手段と、前記アプリケーションに対して、前記データの同期化状態を提供するために前記ＡＰＩを用いる手段と、を備え、前記同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含んでもよい。
【００５５】
一実施形態において、本発明は、オンラインストレージシステムでデータを同期化するための電子デバイスとして実現されうる。
【００５６】
電子デバイスは、同期化装置、通信装置及びキャッシュを含んでもよい。
【００５７】
同期化装置は、電子デバイス上のアプリケーションでのアプリケーションプログラミングインタフェース（ＡＰＩ）を通じて前記電子デバイスと前記オンラインストレージシステムとの間の前記データの同期化を可能にするように構成される。通信装置は、前記オンラインストレージシステムとの間の前記データの同期化を可能にするように構成され、前記同期化状態は、ダウンロード状態、アップロード状態、アイドル状態、転送の進捗、キャッシュ状態、及びエラー状態の少なくとも１つを含む。キャッシュは、オンラインストレージシステム上のデータのコピーをキャッシュするように構成される。
【００５８】
説明を容易にするために、いくつかのインスタンスにおいて、本技術は、ハードウェア、ソフトウェア、又はハードウェア及びソフトウェアの組合せで実現される個々の機能ブロックを含むように提示されうる。
【００５９】
種々の実施形態の上述した説明は、例示や説明のためのみに提示されたものである。これらは本発明を開示した形式に包括する、又は、限定する意図はない。従って、多くの変形やバリエーションが当業者にとっては明らかであろう。さらに、上記開示は本発明を限定する意図はない。
【図１】
0006309969.tif 000002
【図２】
0006309969.tif 000003
【図３】
0006309969.tif 000004
【図４】
0006309969.tif 000005
【図５】
0006309969.tif 000006