(57)【特許請求の範囲】
【請求項１】
複数の修正バージョンのファイルから、好適な修正バージョンを判定するための、同期ファイルシステムにおけるコンピュータで実現される方法であって、
前記ファイルシステムで記憶されるユーザに生成されたファイルを第２のクライアントと共有するための指示を第１のクライアントから受信するステップであって、前記第１のクライアントと前記第２のクライアントは、前記ファイルシステムから遠隔に配置されている、受信するステップと、
前記ファイルシステムと前記第２のクライアントとの間で、前記ユーザに生成されたファイルを同期させるステップと、
前記ユーザに生成されたファイルの第１の修正バージョンの通知を前記第１のクライアントから受信するステップと、
前記ユーザに生成されたファイルの第２の修正バージョンの通知を前記第２のクライアントから受信するステップと、
変更管理ルールに従って、前記ユーザに生成されたファイルの前記第１の修正バージョンと前記第２の修正バージョンとから、前記ユーザに生成されたファイルの好適なバージョンを判定するステップであって、前記変更管理ルールは、前記ユーザに生成されたファイルのどの修正バージョンが前記好適なバージョンであるかを、前記第１の修正バージョンの属性と前記第２の修正バージョンの属性とに基づいて特定するものであり、前記属性は、編集の量及び時刻を含むグループから選択され、他の修正バージョンは、非好適なものである、判定するステップと、
前記ユーザに生成されたファイルの更新バージョンを生成するために、前記ユーザに生成されたファイルの前記好適なバージョンと、前記ユーザに生成されたファイルの前記非好適なバージョンと、前記好適なバージョンの指示とを、その２つのバージョンにおける編集結果をマージするための編集マージツールへ供給するステップとを備え、
前記変更管理ルールは、前記第１の修正バージョンでの第１の編集の量と、前記第２の修正バージョンでの第２の編集の量とに基づいて、前記ユーザに生成されたファイルのどの修正バージョンが前記好適なバージョンであるかを特定することを特徴とする方法。
【請求項２】
前記変更管理ルールは、最大追加量を有する、前記ユーザに生成されたファイルの前記修正バージョンが前記好適バージョンであることを特定する
ことを特徴とする請求項１に記載の方法。
【請求項３】
コンピュータサーバであって、
コンピュータプロセッサと、
前記コンピュータプロセッサによって実行可能なコンピュータプログラムを記憶するコンピュータ可読記憶媒体とを備え、
前記コンピュータプログラムは、
ファイルシステムで記憶されるユーザに生成されたファイルを第２のクライアントと共有するための指示を第１のクライアントから受信するステップであって、前記第１のクライアントと前記第２のクライアントは、前記ファイルシステムから遠隔に配置されている、受信するステップと、
前記ファイルシステムと前記第２のクライアントとの間で、前記ユーザに生成されたファイルを同期させるステップと、
前記ユーザに生成されたファイルの第１の修正バージョンの通知を前記第１のクライアントから受信するステップと、
前記ユーザに生成されたファイルの第２の修正バージョンの通知を前記第２のクライアントから受信するステップと、
変更管理ルールに従って、前記ユーザに生成されたファイルの前記第１の修正バージョンと前記第２の修正バージョンとから、前記ユーザに生成されたファイルの好適なバージョンを判定するステップであって、前記変更管理ルールは、前記ユーザに生成されたファイルのどの修正バージョンが前記好適なバージョンであるかを、前記第１の修正バージョンの属性と前記第２の修正バージョンの属性とに基づいて特定するものであり、前記属性は、編集の量及び時刻を含むグループから選択され、他の修正バージョンは、非好適なものである、判定するステップと、
前記ユーザに生成されたファイルの更新バージョンを生成するために、前記ユーザに生成されたファイルの前記好適なバージョンと、前記ユーザに生成されたファイルの前記非好適なバージョンと、前記好適なバージョンの指示とを、その２つのバージョンにおける編集結果をマージするための編集マージツールへ供給するステップと
を含む動作を実行し、
前記変更管理ルールは、前記第１の修正バージョンでの第１の編集の量と、前記第２の修正バージョンでの第２の編集の量とに基づいて、前記ユーザに生成されたファイルのどの修正バージョンが前記好適なバージョンであるかを特定することを特徴とするコンピュータサーバ。
【請求項４】
前記変更管理ルールは、最大追加量を有する、前記ユーザに生成されたファイルの前記修正バージョンが前記好適バージョンであることを特定する
ことを特徴とする請求項３に記載のサーバ。
【請求項５】
自身に組み込まれているコンピュータ実行可能プログラム命令を有するコンピュータ可読記憶媒体であって、
同期ファイルシステムで実行される場合に、前記コンピュータ実行可能プログラム命令は、
前記ファイルシステムで記憶されるユーザに生成されたファイルを第２のクライアントと共有するための指示を第１のクライアントから受信するステップであって、前記第１のクライアントと前記第２のクライアントは、前記ファイルシステムから遠隔に配置されている、受信するステップと、
前記ファイルシステムと前記第２のクライアントとの間で、前記ユーザに生成されたファイルを同期させるステップと、
前記ユーザに生成されたファイルの第１の修正バージョンの通知を前記第１のクライアントから受信するステップと、
前記ユーザに生成されたファイルの第２の修正バージョンの通知を前記第２のクライアントから受信するステップと、
変更管理ルールに従って、前記ユーザに生成されたファイルの前記第１の修正バージョンと前記第２の修正バージョンとから、前記ユーザに生成されたファイルの好適なバージョンを判定するステップであって、前記変更管理ルールは、前記ユーザに生成されたファイルのどの修正バージョンが好適なバージョンであるかを、前記第１の修正バージョンの属性と前記第２の修正バージョンの属性とに基づいて特定するものであり、前記属性は、編集の量及び時刻を含むグループから選択され、他の修正バージョンは、非好適なものである、判定するステップと、
前記ユーザに生成されたファイルの更新バージョンを生成するために、前記ユーザに生成されたファイルの前記好適なバージョンと、前記ユーザに生成されたファイルの前記非好適なバージョンと、前記好適なバージョンの指示とを、その２つのバージョンにおける編集結果をマージするための編集マージツールへ供給するステップと
を含む動作を実行し、
前記変更管理ルールは、前記第１の修正バージョンでの第１の編集の量と、前記第２の修正バージョンでの第２の編集の量とに基づいて、前記ユーザに生成されたファイルのどの修正バージョンが前記好適なバージョンであるかを特定することを特徴とするコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の実施形態は、一般的には、ネットワークを介してデータを共有することに関するものである。特に、開示の実施形態は、同期することが試行される複数の修正バージョンのファイルから好適な修正バージョンのファイルを判定することに向けられるものである。
【背景技術】
【０００２】
今では、複数の異なる場所から複数のコンピュータを定期的に使用することは個人にとって一般的である。典型的なユーザは、オフィスに第１のコンピュータを有し、家に第２のコンピュータを有している場合がある。このコンピュータは、例えば、ポータブルコンピュータだけでなく、スマートフォンのようなウェブを使用可能な移動デバイスがある。ユーザのコンテンツへ容易にアクセスするために、これらの複数のコンピュータに渡ってファイルを共有することはユーザに好ましいことである。加えて、他のユーザとファイルを共有して、複数のユーザがそのファイルへの変更を行うことを要望することはユーザにとって一般的である。
【０００３】
複数のコンピュータと複数のユーザとの間でファイルを共有する１つの方法は、例えば、１つのコンピュータから別のコンピュータへ文書のコピーを電子メールで送信することによって、１つのコンピュータから別のコンピュータへファイルを送信することである。選択的には、様々なサービスが、ユーザに、「クラウド内」で、つまり、インターネットあるいは他の通信ネットワークを介してユーザにアクセス可能なサーバ上で、ユーザの文書を記憶する機会を提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
時々、ユーザは、自身がアクセスする文書を編集する場合がある。２つのコンピュータから、時間が重複する期間に、あるいは１つ以上のコンピュータがオフラインである場合の時間に、異なる方法でファイルが編集されると、バージョンが競合するファイルが作成される場合がある。
【課題を解決するための手段】
【０００５】
本発明の実施形態は、複数の修正バージョンのファイルを再同期することを試行する場合には、その複数の修正バージョンのファイルから、好適な修正バージョンのファイルを判定する。サーバは、複数のファイルを記憶し、変更管理ルールに実装されるユーザプリファレンスに従って、クライアントデバイスに渡ってその複数のファイルの同期を管理する。第１のバージョンのファイルは、少なくとも第１のクライアントと第２のクライアントに渡って同期することが指定されている。第１のクライアントは、第１のバージョンのファイルへアクセスして、第１の修正バージョンのファイルを作成し、第２のクライアントは第２のバージョンのファイルへアクセスして、第２の修正バージョンのファイルを作成する。第１のクライアントと第２のクライアントがそれぞれの修正バージョンのファイルを再同期することを試行する場合、サーバは、変更管理ルールに従って利用可能な修正バージョンのファイルから好適なバージョンを判定する。次に、好適なバージョンはサーバによって記憶され、次に、複数のクライアントデバイスに渡る同期のために供給される。任意の他のバージョンのファイルは、サーバによって記憶されても良く、あるいは後のユーザのレビュー用にフラグが付けられても良く、あるいは破棄されても良い。
【０００６】
他の実施形態は、上述の技術に従って、複数の修正バージョンのファイルを再同期することを試行する場合、複数の修正バージョンのファイルから、好適な修正バージョンのファイルを判定するためのシステム及び非一時的コンピュータ可読記憶媒体を含んでいる。
【０００７】
本明細書で記載される特徴及び効果は、包括的なものではなく、特に、様々な更なる特徴及び効果は、図面、明細書及び請求項の観点で、当業者には明らかであろう。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態に従って、ファイルの共有と同期を実行することができるコンピュータ環境のブロック図である。
【図２】本発明の実施形態に従って、クライアントあるいはサーバが複数の修正バージョンのファイルを同期することを試行する場合に、その複数の修正バージョンのファイルから好適な修正バージョンのファイルを判定する方法を示す図である。
【０００９】
これらの図は、説明の目的のためだけに、本発明の様々な実施形態を示している。当業者は、以下の記載から、本明細書で示される構成及び方法の他の代替の実施形態が、本明細書で記載される本発明の原理から逸脱することなく採用できることを容易に認識するであろう。
【発明を実施するための形態】
【００１０】
システム概要
本発明の実施形態は、複数の修正バージョンのファイルを再同期させることを試行する場合に、その複数の修正バージョンのファイルから好適な修正バージョンのファイルを判定する。時々、共有ファイルは、２以上のクライアントによって重複する時間に編集される場合がある。この編集とは、例えば、単一のユーザが２つの異なるクライアント上で２つの異なるバージョンを作成することによるもの、あるいは同一のファイルへアクセスする２つの異なるユーザが２つの異なるバージョンを作成することによるものがある。サーバを介して複数のクライアントに渡って複数の編集バージョンのファイルを連続して再同期することの試行を行う場合には、その複数の編集バージョンから好適な編集バージョンのファイルを判定するために、変更管理ルールが適用される。
【００１１】
図１は、本発明の実施形態に従って、ファイルの共有と同期を実行することができるコンピュータ環境を示している。このコンピュータ環境は、ネットワーク１０１を介して接続される、複数のクライアント１１０Ａ、１１０Ｂ（１１０として集約）と、サーバ１２０とを含んでいる。
【００１２】
クライアント１１０は、手動アップロードプロセスを通じて、あるいはローカルファイルシステムとの同期によって、サーバ１２０へファイルを追加する。同期を使用する実施形態では、各クライアント１１０は、同期アプリケーション１０２を実行して、それを通じて、サーバ１２０と同期させるためのクライアントのファイルが指定される。図１に示される例では、ファイル１１１とファイル１１２がサーバ１２０と同期させるために指定されるのに対して、ファイル１１３は指定されない。そして、同期アプリケーション１０２は、指定されたファイル１１１とファイル１１２だけをサーバ１２０へ提供する。同期されたファイルは、典型的には、ユーザがファイルを共有することを決定しているクライアント１１０へのみ提供される。この例では、クライアント１１０Ａのファイル１１１が、クライアント１１０Ｂと同期させるために指定される。そして、指定されたファイル１１１は、サーバ１２０がクライアント１１０Ｂへファイルを提供する「プッシュ」によって、あるいはクライアント１１０Ｂがサーバ１２０からファイル１１１をリクエストする「プル」によって、クライアント１１０Ｂへ提供される。同期アプリケーション１０２とサーバ１２０は、以下で説明する変更管理ルールに従って、同期されたファイルの変更が関係するすべてのクライアント１１０に渡って伝播されることも補償する。ここで、同期されたユーザのファイルのコピーが、ファイルが共有されるサーバ１２０と複数のクライアント１１０の両方で保持することができる、あるいは、複数のクライアント１１０が、ローカルコピーを保持することなく、サーバ１２０に記憶されるファイルを操作するためのファイルブラウザ型インタフェースを提供することができることに注意されたい。
【００１３】
図１は、簡単のため、２つのクライアント１１０Ａとクライアント１１０Ｂだけを示している。クライアントデバイスの例には、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータデバイス、及び、パーソナルデジタルアシスタント、あるいはスマートフォン（例えば、アイフォーン、あるいはブラックベリー、あるいは、シンビアン、あるいはアンドロイド搭載スマートフォン）のような携帯コンピュータデバイスが含まれる。クライアント１１０Ａとクライアント１１０Ｂは、一般に、単一のユーザ（ユーザのデスクトップコンピュータと同一のユーザのスマートフォン）によって所有されても良いし、あるいはクライアント１１０Ａとクライアント１１０Ｂは異なるユーザによって所有されても良い。実現される場合、サーバ１２０は、複数のクライアントと通信することができる。実際には、単一のユーザは複数のクライアントを所有することができ、複数のクライアントとの間で、文書を共有し同期することをそのユーザが要望する、及び／あるいは、他のユーザによって所有されるクライアントと文書を共有し同期することをそのユーザが要望する。各クライアントは、任意のファイルフォーマットで、１つあるいは複数のファイルをサーバ１２０上で記憶することができる。ユーザに対して再現する場合には、ファイルはフォルダ内に配置することができ、このフォルダ自身は、ユーザによって決定される他のフォルダに配置することができる。但し、各ユーザのファイル階層をミラーリングすることを必要とすることなく、著しく異なる場合があるが、記憶効率を最大にするための基本的な記憶アーキテクチャが実現される場合がある。いくつかの実装では、フォルダは、２人以上のユーザとの間で共有することができる。共有フォルダは１人のユーザによって生成し制御されるが、そのユーザは、フォルダを共有する複数のユーザのそれぞれにその共有フォルダ内のファイルへのアクセスを提供する。フォルダを共有する複数のユーザの任意のユーザは、その共有フォルダ内のファイルを変更して、その共有フォルダ内で修正バージョンのファイルを作成することができる。修正バージョンのファイルは、フォルダを共有する複数のユーザに属する複数のクライアントに渡って同期される。
【００１４】
サーバ１２０は、変更管理ルールで実施されるユーザプリファレンスに従って、複数のクライアントデバイスに渡って、複数のファイルを記憶し、そして、それらのファイルの同期を管理する。サーバ１２０とその構成要素群は、ファイルを提供し記憶することを実行するための任意の適切なハードウェアを使用して実現することができ、図と説明を明確にするために、図１では、単一のサーバだけを示し、また、一例としての関連するファイル記憶部とモジュール群を示している。加えて、本記載には密接には関係がないが、当業者に知られる、サーバの動作に対して要求される多くの構成要素である、例えば、ネットワークカード、ＣＰＵ、メモリ、及びその類は明確化のために省略する。図１に示されるように、サーバ１２０は、インタフェースモジュール１２１、データ記憶部１２２、共有モジュール１２３、及び変更管理モジュール１２４を含んでいる。
【００１５】
インタフェースモジュール１２１は、サーバ１２０と複数のクライアント１１０との間でのファイル記憶、アクセス及び同期を容易にするための、複数のクライアント１１０とのインタフェースを提供し、また、この機能を実現するための１つの手段である。インタフェースモジュール１２１は、クライアント１１０からファイルを受信し、そのファイルを共有するためのユーザのプリファレンスに一致するクライアント１１０へそのファイルを送信する。インタフェースモジュール１２１は、また、以下で詳細に説明する、変更管理ルールに関するユーザの命令に関する、クライアント１１０との通信も管理する。インタフェースモジュール１２１は、サーバ１２０に記憶されるファイルを操作することをユーザに許可する、クライアント側ファイルブラウザ型インタフェースに対する、サーバ１２０上の同等のものとして動作することができる。いくつかの実施形態では、クライアント１１０上で実行するソフトウェアは、クライアントのローカルファイルシステムとネットワークに記憶されるファイルとを統合して、そのローカルファイルシステム上のファイルを操作するために使用されるユーザインタフェース（ＵＩ）と同一のユーザインタフェースを通じて、例えば、ファイルエクスプローラを介して、ネットワークに記憶されるファイルをユーザが操作することを可能にする。クライアント側のファイルブラウザインタフェースの代替として、サーバ１２０のインタフェースモジュール１２１は、サーバ１２０に記憶されるファイルを操作するためのウェブインタフェースをユーザに提供することができる。
【００１６】
データ記憶部１２２は、クライアント１１０によって提供されるファイルを記憶する。図１に示される例では、クライアント１１０Ａはファイル１１１とファイル１１２とをデータ記憶部１２２に記憶している。そして、サーバ１２０のデータ記憶部１２２は、クライアント１１０上のローカル記憶部にも存在しているファイル１１１とファイル１２２のコピーを保持する。
【００１７】
サーバ１２０の共有モジュール１２３は、共有されるファイルに関するユーザのプリファレンスと、ファイルを共有する複数のユーザを管理する。様々な実施形態では、ユーザは、共有されかつ同期されるファイルのセットとして、単一のファイル、フォルダ内の複数のファイル、複数のフォルダ、あるいは、複数のフォルダに渡る複数のファイルの組み合わせを選択することができる。ファイル共有は、そのファイルセットを明確に識別する固有のリンクを生成することによって達成することができ、これについては、発明の名称が「リンク生成を介するファイル共有」である、２０１１年８月２５日に出願されている米国特許番号第１３／２１７９４４号に記載されており、これは参照することによってその全体が本明細書に組み込まれる。
【００１８】
サーバ１２０の変更管理モジュール１２４は、複数の修正バージョンのファイルの内、どの修正バージョンが好適な修正バージョンであるかをユーザプリファレンスに従って判定するためのルールを受信し、記憶し、そして適用する、また、これは、この機能を実現するための１つの手段である。好適な修正バージョンを判定するためのユーザプリファレンスは、様々なカテゴリで確立され、また、インタフェースモジュール１２１を介して、クライアント１１０からサーバ１２０の変更管理モジュール１２４へ通信される。確立することができるルールのカテゴリの例は、以下のようになる。１つ以上のタイプのルールを各カテゴリ内で確立することができ、そして、異なるカテゴリ内のルールの組み合わせも可能であることに注意されたい。
【００１９】
ソースルール  このカテゴリ内のルールは、ソースのバージョンに基づいて、どの修正バージョンのファイルが好適であるかを判定する。ソースカテゴリ内の例示のルールは、移動デバイス対デスクトップデバイスのような、異なるタイプのクライアントデバイス（即ち、異なるソース）によって修正されるバージョン間の優先度を特定する。例えば、ソースルールは、移動デバイスで作成されるバージョンよりも、デスクトップデバイスで作成されるバージョンを優先することを特定することができる。ソースカテゴリ内の別の例示のルールは、バージョン作成中のオンライン対オフラインであるクライアントデバイスによって修正されるバージョン間の優先度を特定する。例えば、このルールは、バージョン作成中がオフラインであるクライアントデバイスで作成されるバージョンよりも、バージョン作成中がオンラインであるクライアントデバイスで作成されるバージョンを優先することを特定することができる。
【００２０】
ユーザルール  このカテゴリ内のルールは、ファイルを修正したユーザに基づいて、どの修正バージョンのファイルが好適であるかを判定する。ユーザカテゴリ内の例示のルールは、ファイルの本来の著者対他の編集者によって修正されるバージョン間の優先度を特定する。例えば、このようなルールは、任意の他のユーザによって修正されるバージョンよりもファイルの本来の著者によって修正されるバージョンを優先することを特定することができる。ユーザカテゴリ内の別の例示のルールは、特定のクラス（例えば、管理者、監査人、品質保証専門家、特定の部門のメンバー）のユーザによって修正されるバージョンと、別のクラス（例えば、従業員、顧客、別の部門のメンバー）のユーザによって修正されるバージョンとの間の優先度を特定する。例えば、このルールは、管理者が率いる部門の他のメンバーによって修正されるバージョンよりも管理者によって修正されるバージョンを優先することを特定することができる。
【００２１】
時間ルール  このカテゴリのルールは、ファイルのバージョンに関与するアクションが発生する各時点に基づいて、どの修正バージョンのファイルが好適であるかを判定する。時間カテゴリ内の例示のルールは、修正バージョンのファイルについて開始された修正の各時間に基づいて優先度を特定する。例えば、このルールは、より遅くに修正を開始したバージョンよりも、修正を開始した時点の内、最も早い時点を有するバージョンを優先することを特定することができる。時間カテゴリ内の別の例示のルールは、サーバ１２０が新規のバージョンの存在を通知した各バージョンに対する時間に基づいて、バージョンに対する優先度を特定する。例えば、このルールは、同期プロセスをより後に開始したバージョンよりも、より早くに同期プロセスを開始したバージョンを優先することを特定する。
【００２２】
量ルール  このカテゴリ内のルールは、各修正バージョンにおける編集の量に基づいて、どの修正バージョンファイルが好適であるかを判定する。量カテゴリ内の例示のルールは、より少ない編集を伴うバージョンよりも最も多い編集を伴うバージョンを優先することを特定することができる。量カテゴリ内の別の例示のルールは、各修正バージョンにおいて、追加数あるいは削除数のような編集のタイプの数に基づいて、優先度を特定する。例えば、このルールは、他のバージョンよりも、最も多い追加（あるいは最も少ない削除）を伴うバージョンを優先することを特定することができる。
【００２３】
ローカリティルール  このカテゴリのルールは、各修正バージョンに関連付けられている地理的コード情報に基づいて、どの修正バージョンのファイルが好適であるかを判定する。ローカリティルール内の例示のルールは、他のロケーションからの修正バージョンのファイルよりも、所定のロケーションからの修正バージョンのファイルを優先することを特定する。ローカリティカテゴリ内の別の例示のルールは、特定のロケーションからより遠くに離れているロケーションに関連付けられている修正バージョンのファイルよりも、その特定のロケーションに最も近いロケーションに関連付けられている修正バージョンのファイルを優先することを特定する。
【００２４】
また、変更管理モジュール１２４に保持されるルールは、好適なバージョンであると判定されるファイルのバージョンと競合する修正バージョンのファイルの取り扱いに関するユーザのプリファレンスを記録することもできる。いくつかの例では、好適なバージョン以外の任意のバージョンのファイルは（非好適なバージョンとしての自身の表示を伴ってあるいは伴わずに）、サーバによって保存することができる、あるいは、後のユーザレビュー用にフラグを付けることができる、あるいは破棄することができる。いくつかの場合、サーバ１２０は、好適なバージョンのファイルと別の（非好適な）バージョンのファイルとを、従来のファイル比較ツールに供給して、それら違いを識別して、ユーザへ表示することができる。このようなファイル比較ツールの例は、例えば、発明の名称が「局所同期ファイルのファイル比較」であるフッチ等による米国特許第７，２２８，３１９号に示されており、また、これは、マイクロソフトワード、ワークシェアコンペアのような製品に提供されている。また、これには、他の文書比較及び赤線引き（レッドライニング）ソフトウェアパッケージがあり、これは、好適なバージョンのファイルがそのツールへの入力として提供され、好適なバージョンがファイルの別の入力バージョンと比較され、そして、好適なバージョンと他のバージョンとの間の違いがツールによって出力され、そして、ユーザに表示することができる。ファイル比較ツールの出力は、オプションとして、ユーザによる更なる参照用にサーバに記憶することができる。
【００２５】
選択的には、サーバ１２０は、好適なバージョンのファイルと別の（非好適な）バージョンのファイルとを従来の編集マージツールに供給して、それらの２つのバージョンを互いにマージすることができ、これは、２つのバージョンと、好適なバージョンがどれであるかの指示が入力として与えられる。このカテゴリの例示のツールは、発明の名称が「複数の文書の比較及びマージ」である、チャンピオン等による米国特許第７，９４９，９３８号に含まれている。
【００２６】
どの修正バージョンが好適なバージョンであるかを判定するためのルールと、好適なバージョンと競合する修正バージョンを取り扱うためのルールは、すべてのユーザとファイルに渡るデフォルトとして確立することができる、あるいは、様々なレベルの粒度でのユーザプリファレンスセットの結果として確立することができる。例えば、ユーザは、すべてのファイルに適用可能ないくつかのルールと、特定のファイルのタイプあるいはタイプ群のファイル（例えば、テキストファイル、画像ファイル、特定のソフトウェアプログラムに関連付けられているファイル等）だけに適用可能な他のルールと、１つ以上の特定のファイルだけに適用可能な更に別のルールとを設定することができる。こうして、ルール群の組み合わせを、任意の所与のファイルに適用可能とすることができる。加えて、これらのルールをユーザのプリファレンスの変更に応じて変更することができる。こうして、様々な実装では、サーバ１２０の変更管理モジュール１２４は、ユーザに、変更管理ルールを確立する際に最大の柔軟性を持たせて、ファイルの複数の修正バージョンの内、どのバージョンが好適なバージョンであるかを管理し、そして、任意の他のバージョンの取り扱いを管理するために、広く多様な状況に適用することを可能にする。
【００２７】
図１に戻り、ネットワーク１０１は、クライアント１１０とサーバ１２０との間の通信経路を表している。一実施形態では、ネットワーク１０１は、標準インターネット通信の技術及びプロトコルの少なくとも一方を使用する。ここで、ネットワーク１０１は、イーサネット、ＩＥＥＥ８０２．１１、ＩＥＥＥ８０６．１６、ＷｉＭＡＸ、３ＧＰＰ  ＬＥＴ、サービス統合デジタルネットワーク（ＩＳＤＮ）、非同期転送モード（ＡＴＭ）等を使用するリンクを含むことができる。同様に、ネットワーク１０１上で使用されるネットワークプロトコルは、転送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、シンプルメール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）等を含むことができる。ネットワーク１０１を介して交換されるデータ及びファイル１１１−１１２は、任意のファイルフォーマットを使用して表現することができ、これには、限定するものではないが、広く多様なテキスト文書フォーマット、オーディオファイルフォーマット及び画像ファイルフォーマットを含んでいる。加えて、すべてのあるいはいくつかのリンクは、伝統的な暗号化技術を使用して暗号化することができ、これには、例えば、セキュアソケットレイヤ（ＳＳＬ）、セキュアＨＴＴＰ（ＨＴＴＰＳ）及び仮想プライベートネットワーク（ＶＰＮ）の少なくとも１つを含んでいる。別の実施形態では、エンティティは、特別のデータ通信技術及び専用のデータ通信技術の少なくとも一方を使用することができ、また、これに代えて、あるいはこれに加えて、上述のものを使用することができる。
【００２８】
図２は、本発明の実施形態に従って、クライアント１１０あるいはサーバ１２０が複数の修正バージョンのファイルを同期させることを試行する場合での、その複数の修正バージョンのファイルから、好適な修正バージョンのファイルを判定する方法を示す図である。図２に示される状況では、ステップ２００で、サーバ１２０は、クライアント１１０Ａ、１１０Ｂがアクセスするファイルを記憶している。この状況の開始でサーバ１２０に記憶されるファイルは、バージョン１として示される。この記憶されているファイルは、第１のクライアント１１０Ａと第２のクライアント１１０Ｂに渡って同期されるように指定されているファイルである。
【００２９】
ステップ２０１Ａで、第１のクライアント１１０Ａは、サーバ１２０からのファイルをリクエストする。ステップ２０２Ａで、第１のクライアント１１０Ａは、ファイルを受信する。同様に、ステップ２０１Ｂで、第２のクライアント１１０Ｂは、サーバ１２０からのファイルをリクエストする。ステップ２０２Ｂで、第２のクライアント１１０Ｂは、ファイルを受信する。他の実装では、サーバ１２０は、リクエストを受信することなく、直近のバージョンのファイルをクライアント１１０Ａ、１１０Ｂへ送信することができる。クライアント１１０Ａ、１１０Ｂのそれぞれは、自身が受信したバージョンを、自身のそれぞれの記憶システムに局所的に記憶することで、サーバ１２０に記憶されるバージョン１に対応するファイルのローカルコピーを有することになる。
【００３０】
ステップ２０３Ａで、第１のクライアント１１０Ａは、自身のローカルコピーのファイルを修正することで、ここでは、バージョン１．Ａとして示されるバージョンを作成する。ステップ２０３Ｂで、第２のクライアント１１０Ｂも、自身のローカルコピーのファイルを修正するが、様々な方法でそのバージョンを修正して、バージョン１．Ｂとして示されるバージョンを作成する。この時点で、クライアント１１０Ａ、１１０Ｂは、ファイルの修正バージョン１を有しているが、それらは、様々な方法でバージョン１のファイルを変更している。そのため、ファイルのコピーは、サーバ１２０とクライアント１１０Ａ、１１０Ｂに渡ってこれ以上同期されない。例えば、バージョン１．Ａは、追加の内容を含む場合があり、これに対して、バージョン１．Ｂは、一定の削除された内容を有している場合がある。
【００３１】
ステップ２０４Ａで、第１のクライアント１１０Ａは、修正ファイル（バージョン１．Ａ）をサーバ１２０へアップロードすることによってサーバ１２０とでファイルを同期することを試行する。試行された同期に応答して、サーバ１２０は、新バージョン１．Ａがバージョン１のファイルの後のものであることを認識し、ステップ２０５で、サーバ１２０は、その修正ファイル（バージョン１．Ａ）をデータ記憶部１２２に記憶する。サーバ１２０は、ファイル名、ファイルメタデータ（例えば、固有ファイル識別子、最終同期時刻、ファイルアクセス履歴、ユーザ識別子、クライアント識別子等）、あるいは試行された同期の一部としてクライアント１１０Ａからサーバ１２０へ搬送される当業者に周知の他の情報に基づいて、新バージョン１．Ａが、ファイルのバージョン１に関連していることを認識することができる。いくつかの実装では、サーバ１２０は、ユーザがファイルにおいて実現されている変更をロールバックすることを要望する場合には、バージョン１のファイルを記憶することを継続する。
【００３２】
いくつかの後の時点で、ステップ２０４Ｂで、第２のクライアント１１０Ｂは、修正ファイル（バージョン１．Ｂ）をサーバ１２０へアップロードすることによってサーバとでファイルを同期することを試行する。試行された同期に応答して、サーバ１２０は、新バージョン１．Ｂがバージョン１のファイルの後のものであることを認識し、ステップ２０６で、サーバ１２０は、その修正ファイル（バージョン１．Ｂ）をデータ記憶部１２２に記憶する。再度、サーバ１２０は、バージョン１．Ａがバージョン１に関連していることを認識する方法と同一の方法で、新バージョン１．Ｂがバージョン１に関連していることを認識することができる。いくつかの実装では、サーバ１２０は、内部のバージョン１を保持することを継続する。しかしながら、バージョン１．Ａと１．Ｂの両方が修正バージョン１（例えば、それぞれのファイルメタデータから判定される）によって作成されているので、バージョン１．Ａと１．Ｂは、バージョン１の複数の修正バージョンのファイルを競合するものと見なされる。
【００３３】
ステップ２０７で、サーバは、変更管理ルールに実装されるユーザプリファレンスに従って、利用可能な複数の修正バージョンのファイルから好適なバージョンを自動的に判定する。この判定は、例えば、ユーザ、ファイルタイプ及び個別ファイルの少なくとも一方に適用可能な変更管理ルールのセットを適用することによって、サーバ１２０の変更管理ルールによって行われる。どのバージョンのファイルを好適なバージョンとして取り扱うこと、そして、どのバージョジョンのファイルを非好適なバージョンとして取り扱うことをユーザに特定することを要求する、従来の赤線引きあるいは文書比較ソフトウェアとは異なり、本発明の態様に従えば、サーバ１２０は、複数のバージョンの試行された同期に応じて、好適なバージョンを選択するために、変更管理ルールのセットを自動的に適用することができる。変更管理ルールのセットは様々なレベルの粒度でユーザが構成設定可能であるので、どのバージョンを好適なバージョンとして取り扱うべきかを、バージョンを作成する毎に特定することを必要とすることなく、ユーザの利便性が高まる。
【００３４】
オプションとして、ステップ２０７で、好適なバージョンが一旦判定されると、好適なバージョン以外の任意のバージョンがサーバ１２０によって保存される（非好適なバージョンとして自身のステータスの指示を伴うあるいは伴うことなく）、あるいは、後のユーザレビュー用にフラグを付けることができる、あるいは破棄することができる。上述のように、いくつかの場合、サーバ１２０は、好適なバージョンのファイルと別の修正バージョンのファイルを、一般的なファイル比較ルールへ供給することで、複数のバージョンのファイルとの間の違いを識別し、それをユーザへ表示し、及び／あるいは、２つのバージョンをマージすることができる。好適なバージョンに関し、サーバ１２０は、好適なバージョンとして好適な更新バージョン（バージョン１．Ａあるいはバージョン１．Ｂ）にマークして、ファイルを（バージョン１からバージョン２へ）リネームして、そして、好適なバージョンのファイルをクライアント１１０Ａと１１０Ｂに加えて、ファイルを共有している任意の他のクライアントへ配信することができる。従って、ファイルは、そのファイルを共有するサーバ１２とクライアント１１０との間で同期される。
【００３５】
追加の構成設定の検討
本明細書における開示は、一定の実施形態に関して特に詳細に説明している。当業者は、他の実施形態を実施できることを認識するであろう。第１に、構成要素と変数の特定の名前付け、用語の大文字表記、属性、データ構造、あるいは任意の他のプログラミングあるいは構造の態様は、必須あるいは重要でなく、また、本発明あるいはその特徴を実現するメカニズムを、異なる名前、フォーマットあるいはプロトコルを有することができる。また、本明細書で記載される様々なシステム構成要素間の機能の特定の部分は、単なる例示であり、また、必須ではない。むしろ、単一のシステム構成要素によって実行される機能を複数の構成要素によって実行することができ、また、複数の構成要素によって実行される機能を単一の構成要素によって実行することができる。
【００３６】
上述の記載のいくつかの部分は、サーバに基づく同期アーキテクチャに関してファイルを同期するためのシステム及び方法を記載している。他の実施形態では、この同期アーキテクチャは、サーバではなくクライアントに常駐する複数の修正バージョンから好適な修正バージョンを判定するためのロジックを有するクライアントに基づいていても良い。
【００３７】
また、上述の記載のいくつかの部分は、サーバ上で修正バージョンのファイルを記憶するサーバを記載している。サーバ上でファイル全体あるいは修正バージョンのファイルを記憶することは、本発明のいくつかの実施形態では必要でないことに注意されたい。例えば、ファイルをデータブロックに分けて、様々な場所にそのデータブロックを記憶し、ファイルに再構築するためにそれらのデータブロックへアクセスすることができるロケーション（場所）のリストを記憶することによって、ファイルを記憶することができる。修正ファイルに対しては、変更されていないデータブロックを再度記憶するのではなく、変更されたデータブロックと、修正ファイルを再構築することができるロケーションの新規のリストだけを記憶することができる。本発明の実施形態とともに使用することができるデータ記憶と同期の方法の他の例は、参照することによってその全体が本明細書に組み込まれる、２０１０年８月１３日に出願された、発明の名称が「ネットワークフォルダ同期」である米国特許出願番号１２／８５６，５８１で提供される。本発明の更に別の実施形態では、サーバに対するファイルのバージョンは、好適な修正バージョンのファイルを判定するためにサーバによって記憶される必要はない。いくつかの場合では、複数のバージョンのファイルのメタデータに含まれる情報を特定する変更管理ルールに実装されるユーザプリファレンスは、複数の修正バージョンから好適な修正バージョンを判定するために十分である。これらの環境では、同期ファイルシステムにおけるエンティティ（サーバ１２０あるいはクライアント１１０）は、修正バージョン自身の受信を要求することなく、このようなメタデータを含む修正バージョンの通知を受信した後に好適なバージョンを判定することができる。
【００３８】
上述の記載のいくつかの部分は、情報における操作のアルゴリズムと象徴的な表現に関する特徴を提示する。これらのアルゴリズムの記載と表現は、データ処理技術の当業者によって使用される手段であり、それらの作業の結果物は他の当業者に最も効果的に伝達される。これらの操作は、機能的あるいは論理的に記載される一方で、コンピュータプログラムによって実現されることが理解される。また、これらは、普遍性を損なうことなく、モジュールとしてあるいは機能名によってこれらの操作の構成を指し示すために、時には、利便性があることが証明されている。
【００３９】
特に言及しない限り、そうでなければ、上述の議論から明らかなように、記載全体を通して、「判定すること」あるいはその類のような用語を利用する説明は、コンピュータシステム、あるいは同様の電子コンピュータデバイス、送信デバイスあるいは表示デバイスの動作及びプロセスを指し示すことは明らかである。ここで、この電子コンピュータデバイスは、コンピュータシステムメモリ、あるいはレジスタ、あるいはそのような他の情報記憶装置内の物理（電子）量として表現されるデータを処理して変換する。
【００４０】
本明細書で開示される実施形態の一定の態様は、アルゴリズムの形式で本明細書で記載されるプロセスステップ及び命令を含んでいる。このプロセスステップと命令は、ソフトウェア、ファームウェアあるいはハードウェアで実装することができ、ソフトウェアで実装される場合、リアルタイムネットワークオペレーティングシステムによって使用される様々なプラットホーム上に常駐させて、動作させるためにダウンロードすることができることに注意すべきである。
【００４１】
本明細書で提示されるアルゴリズム及び動作は、本質的には、任意の特定のコンピュータあるいは他の装置に関連していない。様々な汎用システムは、本明細書の教示に従うプログラムとともに使用することもでき、あるいは、要求される方法のステップを実行するために、より特殊化された装置を構築することの利便性を証明することができる。これらのシステムの多様性に対して要求される構造は、等価の変更ともに、当業者には明らかであろう。加えて、本発明は、任意の特定のプログラミング言語を参照して記載されていない。様々なプログラミング言語を、本明細書で記載される本発明の教示を実現するために使用することができ、また、特定の言語への任意の参照は、本発明の使用可能性と最良の形態に対して提供されることは明らかである。
【００４２】
本明細書で開示される実施形態は、いくつかのトポロジーを介する、広く多様なコンピュータネットワークシステムに等しく適している。この分野の範囲内で、大規模ネットワークの構成設定及び管理は、記憶デバイスとコンピュータを含み、これらは、インターネットのようなネットワークを介して、異種コンピュータと記憶デバイスと通信接続されている。
【００４３】
そして、本明細書で使用される言語は、主に、可読性と教授目的のために選択されていて、本発明の主題を表現するあるいは制限するためには選択されていないことに注意すべきである。従って、本明細書の開示は、以下の特許請求の範囲で説明される、本発明の範囲の、限定するもではない、説明であることが意図されている。
【図１】
0006047655.tif 000002
【図２】
0006047655.tif 000003