(57)【特許請求の範囲】
【請求項１】
クライアント装置が、サーバーと関連付けられたネットワークに再接続されたことを検出する工程と、
前記検出された再接続に基づいて、前記クライアント装置に記憶された第１組のデータが、前記サーバーに記憶された第２組のデータに対応することを判定する工程であって、前記第１組のデータ及び前記第２組のデータが、ユーザアカウントと関連付けられる、工程と
前記第１組のデータと前記第２組のデータとの間の不一致を判定する工程であって、前記不一致が、前記クライアント装置が前記ネットワークから切断されている間に前記第１組のデータが修正されたことを示す、工程と、
前記第１組のデータ及び前記第２組のデータの一方が、前記第１組のデータ及び前記第２組のデータの残る一方の組のスーパーセットであることを判定する工程であって、前記第１組のデータ及び前記第２組のデータの前記残る一方の組が、データの前記スーパーセットのサブセットを含む、工程と、
前記第１組のデータ及び前記第２組のデータの一方が前記スーパーセットであると、前記クライアント装置及び前記サーバーの両方に前記スーパーセットを記憶し、前記第１組のデータ及び前記第２組のデータの一方が前記スーパーセットではないと、前記サーバーに前記第１組のデータを記憶することによって前記不一致を解決する工程と、を含む方法。
【請求項２】
前記不一致が、ユーザ修正フラグが前記第１組のデータ又は前記第２組のデータの少なくとも一方にセットされたときに存在する、請求項１に記載の方法。
【請求項３】
前記スーパーセットが、前記第１組のデータ及び前記第２組のデータの一方として定義され、前記残る一方の組に追加コンテンツを加えたものと同じコンテンツとを有する、請求項１に記載の方法。
【請求項４】
前記スーパーセットが、更に、前記スーパーセット内に散在させ得る追加コンテンツに関係なく、前記残る一方の組のコンテンツとコンテンツの同じ相対順序を有するものとして定義される、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記第１組のデータ及び前記第２組のデータが、命名され、前記スーパーセットが、更に、前記残る一方の組と同じ名前を有するものとして定義される、請求項１〜３のいずれか一項に記載の方法。
【請求項６】
前記第１組のデータ及び前記第２組のデータが、ファイルパスを有し、前記スーパーセットが、更に、前記残る一方の組と同じ名前を有するものとして定義される、請求項１〜３のいずれか一項に記載の方法。
【請求項７】
システムであって、
プロセッサと、
クラウドロッカーと、
前記プロセッサによって実行されたとき、前記プロセッサの操作を実行させる命令が記憶されたコンピュータ可読記憶媒体であって、前記操作が、
クライアント装置からリクエストを受信して、前記クライアント装置に記憶された第１組のデータを前記クラウドロッカーに記憶された第２組のデータに一致させる工程であって、前記第１組のデータが、前記第２組のデータに対応し、前記リクエストが、前記クラウドロッカーと関連付けられたネットワークに前記クライアント装置が再接続された後で受信される、工程と、
前記第１組のデータと前記第２組のデータとの間の不一致を判定する工程であって、前記不一致が、前記クライアント装置が前記クラウドロッカーと関連付けられた前記ネットワークから切断されている間に前記第１組のデータが修正されたことを示す、工程と、
前記第１組のデータ及び前記第２組のデータの一方が、前記第１組のデータ及び前記第２組のデータの残る一方のスーパーセットであることを判定する工程であって、前記第１組のデータ及び前記第２組のデータの前記残る一方が、前記スーパーセットのサブセットを含む、工程と、
前記第１組のデータ及び前記第２組のデータの一方が前記スーパーセットであると、前記クライアント装置及び前記クラウドロッカーの両方に前記スーパーセットを記憶し、前記第１組のデータ及び前記第２組のデータの一方が前記スーパーセットではないと、前記クラウドロッカーに前記第１組のデータを記憶することによって前記不一致を解決する工程と、を含む、コンピュータ可読記憶媒体と、を備える、システム。
【請求項８】
前記スーパーセットが、前記残る一方の組に追加コンテンツを加えたものと同じコンテンツを含む前記第１組のデータ及び前記第２組のデータの一方として定義される、請求項７に記載のシステム。
【請求項９】
前記スーパーセットが、更に、前記スーパーセット内に散在させ得る追加コンテンツに関係なく前記残る一方の組のコンテンツと同じ相対順序のコンテンツを有するものとして定義される、請求項７〜８のいずれか一項に記載のシステム。
【請求項１０】
コンピューティング装置によって実行されるとき、前記コンピューティング装置に操作を実行させる命令を記憶する永続的コンピュータ可読記録媒体であって、前記操作が、
クライアント装置がサーバーと関連付けられたネットワークに再接続されたことを検出する工程と、
前記検出された再接続に基づいて、前記クライアント装置に記憶された第１組のデータが、前記サーバーに記憶された第２組のデータに対応することを判定する工程であって、前記第１組のデータ及び前記第２組のデータが、ユーザアカウントと関連付けられる、工程と、
前記第１組のデータと前記第２組のデータとの間の不一致を判定する工程であって、前記不一致が、前記クライアント装置が前記ネットワークから切断されている間に前記第１組のデータが修正されたことを示す、工程と、
前記第１組のデータ及び前記第２組のデータの一方が、前記第１組のデータ及び前記第２組のデータの残る一方の組のスーパーセットであることを判定する工程であって、前記第１組のデータ及び前記第２組のデータの前記残る一方の組が、データの前記スーパーセットのサブセットを含む、工程と、
前記第１組のデータ及び前記第２組のデータの一方が前記スーパーセットであると、前記クライアント装置及び前記サーバーの両方に前記スーパーセットを記憶し、前記第１組のデータ及び前記第２組のデータの一方が前記スーパーセットではないと、前記サーバーに前記第１組のデータを記憶することによって前記不一致を解決する工程と、を含む、永続的コンピュータ可読記録媒体。
【請求項１１】
前記不一致が、ユーザ修正フラグが前記第１組のデータ又は前記第２組のデータの少なくとも一方にセットされたときに存在する、請求項１０に記載の永続的コンピュータ可読記録媒体。
【請求項１２】
前記スーパーセットが、前記残る一方の組に追加コンテンツを加えたものと同じコンテンツを含む前記第１組のデータ及び前記第２組のデータのうちの一方として定義される、請求項１０に記載の永続的コンピュータ可読記録媒体。
【請求項１３】
前記スーパーセットが、前記スーパーセット内に散在させ得る追加コンテンツに関係なく、前記残る一方の組のコンテンツとコンテンツの同じ相対順序を有するものとして定義される、請求項１０〜１２に記載の永続的コンピュータ可読記録媒体。
【請求項１４】
前記第１組のデータ及び前記第２組のデータが命名され、前記スーパーセットが、前記残る一方の組と同じ名前を有するものとして、更に定義される、請求項１０〜１２のいずれか一項に記載の永続的コンピュータ可読記録媒体。
【請求項１５】
前記第１組のデータ及び前記第２組のデータが、ファイルパスを有し、前記スーパーセットが、前記残る一方の組と同じファイルパスを有するものとして、更に定義される、請求項１０〜１２のいずれか一項に記載の永続的コンピュータ可読記録媒体。
【請求項１６】
前記第１組のデータ及び前記第２組のデータが、プレイリストである、請求項１に記載の方法。
【請求項１７】
前記第１組のデータが前記第２組のデータに対応することを判定する工程が、各組のデータと関連付けられたそれぞれの識別子に基づいており、前記それぞれの識別子が同じ値である、請求項１に記載の方法。
【請求項１８】
前記第１組のデータが前記第２組のデータに対応することを判定する工程が、各組のデータと関連付けられたそれぞれの名前に基づいており、前記それぞれの名前が同じである、請求項１に記載の方法。
【請求項１９】
前記第１組のデータ及び前記第２組のデータを一致させるリクエストを受信する工程を更に含み、前記第１組のデータ及び前記第２組のデータがそれぞれ、クライアント及びサーバーに記憶されたプレイリストである、請求項１に記載の方法。
【請求項２０】
前記不一致が、前記クライアント装置が前記ネットワークから切断されている間で前記ネットワークに再接続する前に、前記第１組のデータが修正されたことを示す、請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本出願は、２０１１年１０月３日に出願された「ＭＥＲＧＩＮＧ  ＰＬＡＹＬＩＳＴＳ  ＦＲＯＭ  ＭＵＬＴＩＰＬＥ  ＳＯＵＲＣＥＳ」と題する米国特許仮出願番号第６１／５４２，３７５号の利益を主張する、２０１２年２月３日に出願された「ＭＥＲＧＩＮＧ  ＰＬＡＹＬＩＳＴＳ  ＦＲＯＭ  ＭＵＬＴＩＰＬＥ  ＳＯＵＲＣＥＳ」と題する米国特許出願第１３／３６６，２４８号の利益を請求し、これらの出願は両方とも、参照により全体が本明細書に組み込まれる。
【０００２】
本開示は、ファイルの複数バージョンをマージすることに関し、より具体的にはクライアント装置上のプレイリストをサーバー上のプレイリストとマージすべきかどうかをヒューリスティックに判定することに関する。
【背景技術】
【０００３】
クライアント装置上の冗長ストレージを伴うクラウドストレージに向かう最近の傾向は、一連の技術的問題を引き起こしている。そのような問題の１つは、特にモバイル装置に関して広がっているもので、クラウドへの接続を失うことが多いということである。接続が回復されたときに不一致が起こる可能性がある。
【０００４】
分散コンピューティング環境におけるバージョンの不一致を処理する解決策は存在するが、分散コンピューティング環境には、異なる問題の集合があって、様々な解決策を必要とする。例えば、分散コンピューティング環境では、ほとんどの場合、複数バージョンのドキュメントは、同一のドキュメントに対して同時に作業する２人の異なる人に由来する。分散コンピューティング環境におけるバージョンの不一致を処理するシステムは、多くの場合、２人の異なる人が同一ドキュメントに寄与したことを利用してバージョンをマージするルールを導くことができる。
【０００５】
しかしながら、クラウドロッカー環境では、単一のユーザがバージョンの不一致の最も一般的な起源であることが多い。例えば、ユーザが、自分の音楽カタログとプレイリスト全体をクラウドロッカーに記憶し、自分の音楽カタログとプレイリストのサブセットを自分のモバイル装置に維持する場合、ユーザが、プレイリストの一方を修正して、バージョンの不一致を引き起こす可能性がある。バージョンの不一致問題に対する分散コンピューティングの解決策は、その解決策の基となる仮定が当てはまらないので、不一致を解決するのには十分ではない。したがって、そのようなバージョンの不一致を処理する必要がある。
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本開示の追加的な特徴及び利点は、以下の説明で示され、部分的には記述から明らかになるか、又は本明細書に開示された原理を実施することにより習得できる。開示の特徴及び利点は、添付の特許請求の範囲に詳細に示された機器及び組み合わせによって実現し取得することができる。開示の上記及びその他の特徴は、以下の記述及び添付の特許請求の範囲からより完全に明らかになるか、又は本明細書に示された原理を実施することによって学ぶことができる。
【課題を解決するための手段】
【０００７】
クライアント装置及びクラウドロッカーが切断状態のときにクライアント装置上及びクラウドロッカー内に記憶されたプレイリストバージョンに行われた修正によって生じるプレイリストのバージョンの不一致を解決するシステム、方法、装置及び永続的コンピュータ可読記憶媒体が開示される。本技術は、そのようなバージョンの不一致を解決する方法を判定するためのヒューリスティックを含む。
【０００８】
いくつかの実施形態では、プレイリストは、クライアント装置及びクラウドロッカー内のサーバー上に記憶される。クライアント装置及びクラウドロッカーは両方とも、同じユーザアカウントに関連付けられる。クライアントが切断状態になり、それによりクライアント装置で行われた変更をクラウドロッカー内に実質的に同時に複製できなかったとき、クライアント装置は、クライアント装置上でユーザが行った全ての変更を監視するように構成される。
【０００９】
クライアント及びクラウドロッカーが再接続された際、クラウドロッカーに関連付けられたサーバーは、ユーザが行った変更から生じるバージョンの不一致を一致させようとする。一実施形態では、クライアント上のプレイリスト又はサーバー上のプレイリストの一方が他方のスーパーセットであることをサーバーが判定したとき、そのスーパーセットが選択され、クライアント及びクラウドロッカーの両方に保存され、同時にサブセットバージョンが削除される。クライアントバージョン及びクラウドロッカーバージョンが、互いのスーパーセットとサブセットの関係を有していない実施形態では、クライアントバージョンは、クラウドロッカーに新バージョンとして保存される。
【００１０】
開示の上記その他の利点及び特徴を取得できる手法を説明するために、以上要約された原理のより具体的な説明が、添付図面に示された特定の実施形態に関して行われる。これらの図面は、開示の例示的な実施形態だけを示し、したがって開示の範囲の限定と見なされるべきでなく、本明細書における原理が、添付図面の使用によってより具体的かつ詳細に示され説明される。
【図面の簡単な説明】
【００１１】
【図１】例示的なシステム実施形態を示す図である。
【図２】例示的なコンピューティング環境実施形態を示す図である。
【図３ａ】クラウドロッカーシステムに接続されたクライアント装置を示す図である。
【図３ｂ】クラウドロッカーシステムから切断された後の図３ａのクライアント装置を示す図である。
【図３ｃ】切断状態で生じる例示的なバージョンの不一致を示す図である。
【図３ｄ】切断状態で生じる例示的なバージョンの不一致を示す図である。
【図４】切断状態でのバージョンの不一致を監視する例示的な方法実施形態を示す図である。
【図５】バージョンの不一致を解決する例示的な方法実施形態を示す図である。
【図６】部分的に複数のクライアントによって引き起こされる例示的なバージョンの不一致を示す図であり、及び
【図７】バージョンの不一致を解決する例示的な方法実施形態を示す図である。
【発明を実施するための形態】
【００１２】
開示の種々の実施形態を以下に詳細に説明する。特定の実施態様を検討するが、これは説明のためにのみ行われることを理解されたい。当業者は、本開示の趣旨及び範囲から逸脱することなく他のコンポーネント及び構成を使用できることを理解するであろう。
【００１３】
本開示は、クラウドロッカー環境を運用する不規則に接続される装置によって少なくとも部分的に引き起こされるバージョンの不一致を解決するための当該技術分野における必要性に対処する。
【００１４】
いくつかの実施形態では、本技術は、１つ以上のコンピューティング装置を使用して実施することができる。本技術の理解を容易にするために、汎用コンピューティング環境を図１に示す。
【００１５】
図１を参照すると、例示的なシステム１００には、汎用コンピューティング装置１００が挙げられ、汎用コンピューティング装置１００は、処理ユニット（ＣＰＵ又はプロセッサ）１２０、読み出し専用メモリ（ＲＯＭ）１４０、並びにランダムアクセスメモリ（ＲＡＭ）１５０などのシステムメモリ１３０を含む様々なシステムコンポーネントをプロセッサ１２０に結合するシステムバス１１０とを含む。システム１００は、直接接続されるか、近接するか、又はプロセッサ１２０の一部として統合された高速メモリのキャッシュを含むことができる。システム１００は、プロセッサ１２０による迅速なアクセスのために、データをメモリ１３０及び／又は記憶装置１６０から当該キャッシュに複製する。このようにして、キャッシュは、データを待機する間にプロセッサ１２０の遅延が生じるのを回避する、性能強化を提供する。上記とその他のモジュールは、様々なアクションを行なうためにプロセッサ１２０を制御できるか又は制御するように構成されてよい。他のシステムメモリ１３０も同様に使用できることがある。メモリ１３０は、様々な性能特性を備えた複数の異なるタイプのメモリを含むことができる。本開示が、１つ以上のプロセッサ１２０を有するコンピューティング装置１００上、又は一緒にネットワーク接続されたグループ又はクラスタのコンピューティング装置上で作動して、より高い処理性能を提供し得ることが理解される。プロセッサ１２０は、任意の汎用プロセッサ、記憶装置１６０に記憶されプロセッサ１２０を制御するように構成されたモジュール１（１６２）、モジュール２（１６４）、モジュール３（１６６）などのハードウェアモジュール又はソフトウェアモジュール、並びにソフトウェア命令が実際のプロセッサ設計に組み込まれる専用プロセッサを含むことができる。プロセッサ１２０は、本質的に、複数のコア又はプロセッサ、バス、メモリコントローラ、キャッシュなどを含む、完全自立型コンピューティングシステムでよい。マルチコアプロセッサは、対称でもよく非対称でもよい。
【００１６】
システムバス１１０は、メモリバス又はメモリコントローラ、周辺バス、及び様々なバスアーキテクチャのいずれかを使用するローカルバスを含むいくつかのタイプのいずれかのバス構造でよい。いくつかの実施形態では、チップセット又はチップアーキテクチャ上のシステムを使用することができる。ＲＯＭ  １４０などに記憶された基本入出力（ＢＩＯＳ）は、起動中などにコンピューティング装置１００内の要素間で情報を伝えるのを支援する基本ルーチンを提供することがある。コンピューティング装置１００は、更に、ハードディスクドライブ、磁気ディスクドライブ、光ディスクドライブ、テープドライブ、ソリッドステートドライブなどの記憶装置１６０を含む。記憶装置１６０は、プロセッサ１２０を制御するソフトウェアモジュール１６２、１６４、１６６を含むことができる。他のハードウェア又はソフトウェアモジュールが検討される。記憶装置１６０は、ドライブインタフェースによってシステムバス１１０に接続される。ドライブ及び関連するコンピュータ可読記憶媒体は、コンピュータ可読命令、データ構造、プログラムモジュール、及び他のデータの不揮発性記憶装置をコンピューティング装置１００に提供する。一態様では、特定の機能を実行するハードウェアモジュールは、その機能を実行するために、プロセッサ１２０、バス１１０、ディスプレイ１７０などの必要なハードウェアコンポーネントに関連した永続的コンピュータ可読媒体に記憶されたソフトウエアコンポーネントを含む。基本コンポーネントは、当業者に知られており、装置１００が、小さなハンドヘルドのコンピューティング装置か、デスクトップコンピュータか、又はコンピュータサーバーかなどの装置のタイプにより、適切な変動が考慮される。
【００１７】
本明細書で述べる例示的な実施形態は、ハードディスク１６０を使用するが、当業者は、磁気カセット、フラッシュメモリカード、ＤＶＤ、カートリッジ、ランダムアクセスメモリ（ＲＡＭ）１５０、読み出し専用メモリ（ＲＯＭ）１４０、ビットストリームを含む有線又は無線信号など、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ可読媒体が、例示的な動作環境で使用されてもよいことを理解されるだろう。永続的コンピュータ可読記憶媒体は、エネルギー、キャリア信号、電磁波、信号などの媒体を明示的に除外する。
【００１８】
コンピューティング装置１００とのユーザ対話を可能にするために、入力装置１９０は、会話用のマイクロフォン、ジェスチャ又は図形入力用のタッチセンシティブスクリーン、キーボード、マウス、動き入力、スピーチなどの任意の数の入力機構を表す。また、出力装置１７０はまた、当業者が知っている多くの出力機構の１つ以上であってもよい。いくつかの例では、マルチモーダルシステムは、ユーザに、コンピューティング装置１００との通信の複数の入力のタイプを提供できるようにする。通信インタフェース１８０は、一般に、ユーザ入力及びシステム出力を支配し管理する。任意の特定のハードウェア構成で動作することに制限はなく、したがって、本明細書の基本的特徴は、改善されたハードウェア又はファームウェア構成が開発されるのに応じて容易に置換され得る。
【００１９】
説明を分かりやすくするために、例示されるシステム実施形態は、「プロセッサ」又はプロセッサ１２０と表記された機能ブロックを含む個々の機能ブロックを含むように提示される。これらのブロックが表わす機能は、ソフトウェア及びハードウェアの機能を実行可能なハードウェアであって、プロセッサ１２０などの、汎用プロセッサ上で実行するソフトウェアと同等品として動作するように、目的向けに構築されたハードウェアを含むがこれらに限定されない共用又は専用ハードウェアを使用することにより提供されてもよい。例えば、図１に示された１つ以上のプロセッサの機能は、単一の共用プロセッサ又は複数のプロセッサによって提供されてもよい。（用語「プロセッサ」の使用は、ソフトウェアを実行できるハードウェアだけを指すように解釈されるべきでない。）例示的な実施形態は、マイクロプロセッサ及び／又はデジタルシグナルプロセッサ（ＤＳＰ）ハードウェア、後述する動作を実行するソフトウェアを記憶するための読み出し専用メモリ（ＲＯＭ）１４０、及び結果を記憶するランダムアクセスメモリ（ＲＡＭ）１５０を含み得る。超大規模集積回路（ＶＬＳＩ）ハードウェア実施形態、並びに汎用ＤＳＰ回路との組み合わせのカスタムＶＬＳＩ回路が提供されてもよい。
【００２０】
様々な実施形態の論理演算は、（１）汎用コンピュータ内のプログラマブル回路上で実行される、コンピュータに実装された一連の処理工程、操作又は手順；（２）特定用途プログラマブル回路上で実行される、コンピュータに実装された一連の処理工程、操作又は手順；及び／又は（３）プログラマブル回路内の相互接続されたマシンモジュール又はプログラムエンジンとして実装される。図１に示されたシステム１００は、列挙された方法のすべて又は一部を実施できるか、列挙されたシステムの一部であり得るか、及び／又は列挙された永続的コンピュータ可読記憶媒体内の命令に従って動作することができる。このような論理演算は、プロセッサ１２０を制御してモジュールのプログラミングによって特定の機能を実行するように構成されたモジュールとして実装されてもよい。例えば、図１は、プロセッサ１２０を制御するように構成されたモジュールである３つのモジュール１／１６２、モジュール２／１６４、及びモジュール３／１６６を示す。これらのモジュールは、記憶装置１６０に記憶されて、ＲＡＭ  １５０又はメモリ１３０に実行時にロードされてもよく、又は当該技術分野で知られるように、他のコンピュータ可読メモリの場所に記憶されてもよい。
【００２１】
コンピューティングシステムのいくつかのコンポーネントが開示されて、本開示は、本技術の例示的なコンピューティング環境を示す図２に移る。図２は、クライアント装置２１０、２１５がクラウドロッカー２０５と電子通信するクラウドロッカー環境を示す。
【００２２】
いくつかの実施形態では、クラウドロッカー２０５は、Ａｐｐｌｅ  Ｉｎｃ．のＩＴＵＮＥＳ（登録商標）などのオンラインストアと関連付けられる。クライアント２１０、２１５はそれぞれ、オンラインストアへのユーザアカウントと関連付けられ得る。いくつかの実施形態では、両方のクライアント２１０及び２１５は、オンラインストアへの同じユーザアカウントと関連付けられる。
【００２３】
クラウドロッカー２０５は、コンテンツの起源にかかわらず、ユーザアカウントと関連付けられたメディアライブラリの全コンテンツを記憶するように構成される。つまり、特定のユーザアカウント用にクラウドロッカー２０５に記憶されたメディアは、クラウドロッカー２０５と関連付けられたオンラインストアから購入する必要はない。
【００２４】
多くの例では、クライアント２１０、２１５は、ユーザのアカウントと関連付けされたメディアライブラリからのメディアアイテムのサブセットだけを維持する。クライアント２１０及び２１５は、両方が同じユーザアカウントと関連付けられたときでも同じメディアアイテムがその上に記憶されなくてもよい。いくつかの実施形態では、ユーザは、クライアント２１０、２１５にローカルに記憶されるメディアアイテムを選択することができ、いくつかの実施形態では、クラウドロッカーアルゴリズムは、クラウドロッカー２０５とクライアント２１０、２１５との間のメディアアイテムの転送を管理し、更に、どのメディアアイテムをクライアント上にローカルに記憶すべきかどうかを判定することができる。ローカルストレージは、多くの場合、クラウドロッカーに対して冗長だが、メディアアイテムに対するより高速アクセスを容易にし、クライアント２１０、２１５がクラウドロッカーから切断したときでもメディアアイテムへのアクセスを可能にする。
【００２５】
クライアント２１０、２１５は、クラウドロッカーにアクセスして、クラウドロッカー２０５によって記憶されたコンテンツをダウンロード又はアップロード、更には修正するように構成される。
【００２６】
当業者によって理解されるように、図２に示された動作環境は、切断されやすい。これは、特に、クライアントがモバイル電話装置、ラップトップ又はタブレットコンピュータであるとき当てはまるが、任意のクライアントも、潜在的に切断期間を経験する可能性がある。切断状態の間にクライアント装置がコンテンツアイテムを修正するとき、特定のコンテンツのバージョンの不一致が起こり得る。図３ａ〜図３ｄは、メディアアイテムのプレイリストに対して起こり得るいくつかの例示的なバージョンの不一致を示す。
【００２７】
図３ａは、接続状態のクライアント２１０及びクラウドロッカー２０５を示す。クラウドロッカー２０５は、クライアント装置２１０のミュージックライブラリと関連付けられたプレイリストを有するように示される。クライアント装置はまた、クラウドロッカー２０５に接続されるので、アクセス可能な同一のプレイリストを有する。プレイリストは、プレイリストＩＤ、タイトル、ミュージックライブラリ内のパス、及びプレイリストを構成するメディアトラックのリストによって特徴付けられる。
【００２８】
プレイリストＩＤは、ユーザアカウント内でユニークであり、以下の説明で明らかになるように、プレイリストＩＤを使用して、クラウドロッカー２０５に記憶されたプレイリストが、クライアント２１０上でローカルに記憶されたプレイリストと同じかどうか、又は同じであったかどうかを判定することができる。プレイリストパスも、ユーザアカウント内でユニークである。
【００２９】
図３ｂは、切断状態のクラウドロッカー２０５及びクライアント装置２１０を示す。クラウドロッカー２０５は、図３ａに示されたものと変更のない状態でプレイリストＩＤ  １にアクセスし続けるが、クライアント装置２１０は、プレイリスト内のトラックのサブセットだけにアクセスする。即ち、プレイリストは、トラックＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ及びＩを含むが、クライアント装置２１０上のプレイリストは、トラックＡ、Ｃ、Ｄ及びＥ、Ｈ及びＩだけを含む。クライアント装置２１０は、クラウドロッカー２０５から切断されるので、ローカルに記憶されたメディアアイテムだけにアクセスする。
【００３０】
図３ｂに示されたこの動作状態では、クライアント装置２１０上のプレイリストは、サーバー２０５上に記憶された同じプレイリストが利用可能なトラックのサブセットだけを含む。クラウドロッカー２０５からクライアント装置２１０を切断すると、図３ａに示されたクライアント装置２１０のプレイリストのコンテンツが、図３ｂに示されたクライアント装置２１０上のコンテンツのサブセットに変化することが必要になる。クライアント装置２１０は、プレイリストの不完全なバージョンを維持するのではなく、プレイリストを、その切断状態でクライアント装置が利用可能なファイルだけを含むように圧縮する。
【００３１】
プレイリストを圧縮することは、クライアント装置２１０がクラウドから切断されたときにとる実際的な工程だが、これにより、プレイリストのクラウドバージョン及びクライアントバージョンの２つの異なるバージョンが作成される。これらのバージョンにより、クライアントがクラウドから切断されている間にユーザがプレイリストに何か変更を行ったかどうかを判定する必要性と、２つの異なるバージョンを一致させるメカニズムの必要性が生じる。
【００３２】
図４は、クライアント装置がクラウドから切断されたときに実行できる、クライアント装置２１０によって実行される方法を示す。クライアントがクラウドから切断する（４０２）とき、クライアント装置は、プレイリストを、クライアントがローカルに利用できるファイルだけを含むように圧縮する（４０４）。いくつかのプレイリストには、クライアントがローカルに利用できるファイルがないため何も曲がない可能性がある（曲はすべてクラウドに記憶されている）。これらのプレイリストは、削除され得る（４０６）。
【００３３】
クライアント装置２１０が、クラウドロッカー２０５から切断されている間、ユーザは、プレイリストに修正を行うことができるが、そのような修正は、クライアント装置２１０が切断状態なのでクラウドに反映されない。この問題の１つの解決策は、ユーザが行った全ての編集を追跡することである（４０８）。ユーザが行った編集は、ログファイルに記憶できる。クライアント装置に記憶されていないファイルを除去するプレイリストの圧縮（４０４）と、空のプレイリストの削除（４０６）は、ユーザ操作ではなく、クライアント装置２１０によって自動的に行なわれることに注意されたい。
【００３４】
ユーザが、プレイリストを編集する場合（４１０）、クライアント装置は、プレイリスト（４１２）と関連して「ユーザ修正」フラグをセットすることができる。
【００３５】
図４に関して述べた方法を使用して、切断期間中にプレイリストが修正されたかどうかを追跡し、またプレイリストの不一致バージョンが実際に存在するか、又はプレイリストの圧縮バージョンだけによる明白な不一致かどうかを判定することができる。図５は、バージョンの不一致が存在するかどうかを判定し、存在する場合、バージョンの不一致をどのように一致させるかを示す。
【００３６】
クライアント２１０が、再接続するとき（５０２）、クラウドロッカー２０５は、クライアントからプレイリスト情報を要求する（５０４）。プレイリスト情報は、クラウドプレイリストＩＤ、プレイリストタイトル、プレイリストパス、プレイリスト内のトラックのリスト、ユーザの「ユーザ修正」フラグ情報、及びユーザが行った変更のログファイルの１つ以上を含む。
【００３７】
クラウドロッカーサーバーが、クライアントからプレイリスト情報を受信し、プレイリストがクラウドＩＤを有するかどうかを判定する（５０６）。プレイリスト情報は、クラウドプレイリストＩＤを含む場合、そのクラウドプレイリストＩＤは、元はクラウドロッカーサーバーによって割り当てられたので、クラウドロッカーにも記憶されたプレイリストに対応するはずである。クラウドプレイリストＩＤがない場合、プレイリストは、新しいプレイリストであるか、又はクラウドロッカーと同期していないが同じユーザアカウントと関連付けられたクライアントからのプレイリストである可能性が高い。クラウドプレイリストＩＤがない実施形態は、図６と関連してより詳細に説明される。
【００３８】
クラウドプレイリストＩＤが、プレイリスト情報と一緒に含まれることが判定されたとき（５０６）、クラウドサーバーは、「ユーザ修正フラグ」がセットされたかどうかを判定する（５０８）。「ユーザ修正フラグ」がセットされていない場合、これは、クライアント装置プレイリスト及びクラウドロッカープレイリストの差が、切断状態によるものであることを示し、（ユーザアカウントの）ユーザが、単なる切断状態の結果として生じた変化が永続的であることを意図しないことを想定し、クラウドサーバーが、クラウドバージョンを維持し（５１０）、クライアント装置にあるコピーをクラウドバージョンと置き換える。
【００３９】
しかしながら、「ユーザ修正」フラグがセットされた場合（５０８）、ユーザは、プレイリストを変更することを意図しており、それらの変更をクラウド内に反映させたい可能性が高く、プレイリストのどのバージョンを維持すべきかを選択するためにプレイリストのクラウドバージョン及びクライアントバージョンの解析が必要である。両方のプレイリストバージョンが比較され、クラウドサーバーは、一方のプレイリストが他方のプレイリストのサブセットかどうかを判定しようとする（５１２）。
【００４０】
一方のプレイリストが、他方のプレイリストのサブセットの場合、ユーザはスーパーセットを維持したいものと仮定することができ、したがって、スーパーセットが、クラウドロッカーバージョンとして維持され（５１４）、サブセットが廃棄される。この実施形態は、図３ｃに示され、クライアント装置２１０がクラウドロッカー２０５から切断されることが示される。図３ｃは、図３ｂに示された例に続き、クラウドロッカーは、ＩＤ：１を有するプレイリストを有し、これは、メディアアイテムＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉを有するが、切断状態なので、クライアント装置２１０にはメディアアイテムＡ、Ｃ、Ｄ、Ｅ、Ｈ、Ｉだけが記憶されている。図３ｃは、ユーザが、メディアアイテムＡを削除することによってクライアント装置上のプレイリストＩＤ：１を更に修正した点だけが、図３ｂと異なる。クライアント装置２１０上のプレイリストが、クラウドロッカー２０５内のプレイリストのサブセットなので、クラウドロッカーバージョンが保持され、クライアントバージョンは、クラウドロッカーバージョンで置き換えられる。
【００４１】
同じ論理を使用して、ユーザが、プレイリストに追加のメディアアイテムを加えた場合には、スーパーセットのプレイリストが維持されなければならない（５１４）と仮定することができる。図３ｄは、クライアント装置２１０がクラウドロッカー２０５から切断される、このシナリオを示す。図３ｄは、図３ｂに示された例に続き、クラウドロッカーがＩＤ：１を有するプレイリストを有し、このプレイリストは、メディアアイテムＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ、Ｉを有するが、切断状態のために、クライアント装置２１０には、メディアアイテムＡ、Ｃ、Ｄ、Ｅ、Ｈだけが記憶されている。図３ｄは、ユーザが、メディアアイテムＸ及びＹを追加することによってクライアント装置上のプレイリストＩＤ：１を更に修正した点だけが図３ｂと異なる。クラウドロッカーＢ、Ｆ及びＧのアイテムにアクセスできるように修復されたとき、クライアント装置プレイリストは、２つのプレイリストバージョンのスーパーセットなので、クライアント２１０上のプレイリストは保持され（５１４）、クラウドロッカー２０５のバージョンと置き換わる。
【００４２】
しかしながら、どのプレイリストも他のプレイリストのサブセットではない場合（５１２）、プレイリストは、新しいプレイリストであると見なされ（５１６）、新しいクラウドＩＤが割り当てられる。比較された２つのプレイリスト（５１２）が、一致するプレイリストクラウドＩＤを有し、以前にプレイリストが同じであったことを示す場合であっても、どちらのプレイリストも他のプレイリストのサブセットではないという事実は、プレイリストへの相当な修正を示し、ユーザが、新しいプレイリストを作成しようとしていると仮定される。
【００４３】
新しいクラウドＩＤが割り当てられたとき、プレイリストもリネームされるか再配置されてもよい。いくつかの実施形態では、プレイリストタイトルは、数が増分され、例えば「Ｒｏｃｋ」プレイリストは、新バージョンのタイトルとして「Ｒｏｃｋ  １」になることができる。あるいは、プレイリストは、プレイリストタイトルの後ろに付けられた作成装置の名前を有してもよく、例えば「Ｒｏｃｋ」プレイリストは、新バージョンのタイトルとして「Ｒｏｃｋ−ＭａｃＢｏｏｋ  Ｐｒｏ」になることができる。また、プレイリストは、ユーザのＭａｃＢｏｏｋ  Ｐｒｏ上に作成されたプレイリストのディレクトリや、クラウド内に作成されたプレイリストのディレクトリなどの新しいディレクトリに入れられてもよい。
【００４４】
いくつかの実施形態では、サブセットは、プレイリストパス、又はタイトルを含む、任意のデータが変更されている場合は、プレイリスト内のメディアアイテムがそのサーバー／クライアントの相手側のサブセットであることを表わしている場合であっても、そのプレイリストはサブセットだと見なすことができなくなるという点で真のサブセットである。
【００４５】
いくつかの実施形態では、サーバープレイリスト及びクライアントプレイリストの両方が同じアイテムを含む場合であっても、サブセットは、プレイリスト内のアイテムの順序が変化したプレイリストを含む。サブセットは、また、アイテムの順序の変化も含む真のサブセットでよい。
【００４６】
いくつかの実施形態では、同じアイテムのサブセットを有するが配置が異なるプレイリストはサブセットと見なされなくなるというように、あるプレイリストが他方のプレイリストのサブセットであることの判定が、順序に影響されることがあり得る。
【００４７】
いくつかの実施形態では、タイトル、パス又は他の識別情報がサブセットとスーパーセットの関係を有しない場合でも、プレイリストは、プレイリスト内のメディアアイテムがサブセットとスーパーセットの関係を有する場合に、そのサーバー／クライアントの相手側のサブセットだと見なされる。
【００４８】
いくつかの実施形態では、ユーザは、プレイリストのコンテンツを修正せずに、タイトル、パス、又は他のプレイリストの識別情報を修正することができる。そのような実施形態では、サーバーは、セットされた「ユーザ修正」フラグによって、プレイリストが修正されたことを判定できるが、更に、クライアント上のプレイリストのコンテンツが、クラウドロッカー上のプレイリストと異ならないことを判定する。この判定をした上で、ユーザ修正を両方のプレイリストに適用することができる。
【００４９】
いくつかの実施形態では、クライアント及びクラウドロッカーのプレイリストが同じクラウド識別子を有することが分かり、一方が「ユーザ修正」フラグによって示されるようなユーザ修正がなされていたとき、ユーザが始めた編集のログの解析に基づいて未修正のプレイリストにユーザ修正を実施できる。例えば、ユーザが、判定された数よりも少ない編集を行っていた場合、サーバーは、プレイリストの一方のバージョンを他方のバージョンと置き換えるのではなく、そのような編集をプレイリストの両方のバージョンに適用することができる。ユーザが現在のプレイリストを少しの数だけ編集するつもりだったが、より大量の編集が行われていた場合は、ユーザが、全く新しいプレイリストを作成するつもりであったと想定することができる。
【００５０】
いくつかの実施形態では、クライアント及びクラウドロッカーのプレイリストが同じクラウド識別子を有することがわかり、一方が、「ユーザ修正」フラグによって示されるようにユーザ修正されていたとき、そのユーザ修正は、ユーザが始めた編集のログの解析に基づいて未修正のプレイリストに適用できる。編集の種類は、前のプレイリストのバージョンに編集を適用すべきか、又は新しいプレイリストを作成すべきかどうかを判定する要因になり得る。例えば、タイトル又はパスの編集は、新しいプレイリストを作成するユーザの意図を示すことがあり、一方で、プレイリストコンテンツへの小さな修正は、既存のプレイリストを修正する意図を示すことがある。
【００５１】
図６は、２つ以上のクライアント装置６１０、６１５（両方とも２１０と実質的に同等）が、両方とも同じユーザアカウントと関連付けられた例示的な実施形態を示す。図示されるように、クライアント装置６１０が、既にクラウドロッカー６０５（実質的に２０５と同等）と同期されており、クライアント６１０及びクラウドロッカー６０５が両方とも、プレイリストＩＤ：１、タイトル「Ｒｏｃｋ」、同じパス「Ｐｌａｙｌｉｓｔｓ／Ｆａｖｏｒｉｔｅｓ／Ｒｏｃｋ」、トラックＡ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆ、Ｇ、Ｈ及びＩを有する同じプレイリストを有している。
【００５２】
クライアント装置６１５は、クライアント装置６１５上のプレイリストであるという事実によって示されるように、そのプレイリストをクラウドロッカー６０５と同期していない。そのような実施形態では、クラウドロッカー６０５は、クライアント装置６１５上のプレイリストが、クラウドロッカー６０５上の既存のプレイリストと一致するかどうかの判定を試みることができる。図７は、この判定を行って、非同期のプレイリストを処理する例示的な方法を示す。
【００５３】
クラウドロッカー６０５は、まず、クライアント装置６１５上のプレイリストが、クラウドロッカー６０５内のプレイリストと完全に一致するかどうかを判定する。図６のクライアント装置６１５に関して、これは、クラウドプレイリストＩＤを割り当てられていないが、クラウドロッカー６０５上のクラウドプレイリストＩＤ：１と同じタイトル、プレイリストパス及びトラックを有するプレイリストである。したがって、（７０２）で、クラウドロッカーサーバーは、プレイリストが、クラウドプレイリストＩＤを除き完全に一致すると判定できて、クラウドプレイリストを維持し（７０４）、クライアント装置６１５上のプレイリストを置き換えるか又は更新して、クラウドロッカー６０５上のプレイリストと一致させる。
【００５４】
プレイリストが完全には一致しない場合、クラウドサーバーは、一方のプレイリストが他方のプレイリストのスーパーセットかどうかを判定しようとする（７０６）。一方のプレイリストがスーパーセットである場合、スーパーセットは維持され、サブセットは廃棄される（７０８）。プレイリストがどちらも他方のスーパーセットではない場合、新しいプレイリストが作成され（７１０）、クラウドロッカー６０５に記憶される。
【００５５】
ほとんどの例では、クライアント装置で変更が行われると予想されるが、１つのクライアント装置が接続されていない間にサーバーで変更が起こる可能性がある。そのような変更は、本明細書で述べたヒューリスティックス及びルールに基づいてすべてのクライアント装置の全体にわたって再現できる。
【００５６】
いくつかの実施形態では、変更のタイミングも、複数のクライアント装置及びクラウドロッカー上のプレイリストを一致させる要因になり得る。例えば、いくつかの実施形態では、ユーザが、１つのクライアント装置上のプレイリストを修正し、修正をクラウドロッカーと一致させる場合がある。しかしながら、サーバー上でプレイリストからメディアアイテムを除去する変更が行われ、それによりクラウドロッカー内のプレイリストが、切断されたクライアント装置のサブセットになると想定すると、本明細書で述べたルールを無視することができ、サーバーバージョンは、修正日に基づいて他のクライアント装置上の対応するバージョンを置き換えることができる。
【００５７】
本開示の範囲内の実施形態は、また、記憶されたコンピュータ実行可能命令若しくはデータ構造を保持又は有する有形の及び／若しくは永続的なコンピュータ可読記憶媒体を含んでもよい。そのような永続的なコンピュータ可読記憶媒体は、前述のような任意の専用プロセッサの機能設計を含む、汎用又は専用コンピュータがアクセスできる任意の利用可能な媒体であってよい。一例として、また限定するものではなく、そのような永続的コンピュータ可読媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、ＣＤ−ＲＯＭ、又は他の光ディスク記憶装置、磁気ディスク記憶装置若しくは他の磁気記憶装置、又はコンピュータ実行可能命令、データ構造、又はプロセッサチップ設計の形で所望のプログラムコード手段を保持又は記憶するために使用することができる、その他任意の媒体が挙げられる。情報が、ネットワーク又は通信接続（有線、無線、又はこれらの組み合わせ）を介してコンピュータに転送又は提供されるとき、コンピュータは、その接続をコンピュータ可読媒体と見なすことは適切である。したがって、任意のそのような接続は、コンピュータ可読媒体と呼ばれることが適切である。上記媒体の組み合わせも、コンピュータ可読媒体の範囲に含まれるべきである。
【００５８】
コンピュータ実行可能命令は、例えば、汎用コンピュータ、専用コンピュータ、又は専用処理装置に特定の機能若しくは機能群を実行させる命令及びデータを含む。コンピュータ実行可能命令は、また、コンピュータによってスタンドアロン又はネットワーク環境で実行されるプログラムモジュールを含む。一般に、プログラムモジュールは、特定のタスクを実行するか特定の抽象データ型を実装する、専用プロセッサなどの設計に固有のルーチン、プログラム、コンポーネント、データ構造、オブジェクト、及び関数を含む。コンピュータ実行可能命令、関連データ構造、及びプログラムモジュールは、本明細書に開示された方法の工程を実行するためのプログラムコード手段の例を表わす。そのような実行可能命令の特定のシーケンス又は関連したデータ構造は、これらの工程で述べられた機能を実装するための対応する操作の例を表わす。
【００５９】
当業者は、本開示のその他の実施形態が、パーソナルコンピュータ、ハンドヘルド装置、マルチプロセッサシステム、マイクロプロセサベースの又はプログラム可能な民生電子機器、ネットワークＰＣ、ミニコンピュータ、メインフレームコンピュータなどを含む、多くのタイプのコンピュータシステム構成を含むネットワークコンピューティング環境で実施されてもよいことを理解するであろう。実施形態は、また、通信ネットワークを介して（有線接続、無線接続、又はこれらの組み合わせによって）結合されたローカル及びリモート処理装置によってタスクが実行される分散コンピューティング環境で実施されてもよい。分散コンピューティング環境では、プログラムモジュールは、ローカルとリモートの両方の記憶装置に配置されてもよい。
【００６０】
以上述べた様々な実施形態は、説明のためにのみ提供され、開示の範囲を限定するように解釈されるべきでない。当業者は、本明細書に示され説明された例示的な実施形態及び用途に従うことなく、開示の趣旨及び範囲から逸脱することなく、本明細書で述べた原理に従って行われ得る様々な修正及び変更を容易に理解するであろう。
【図１】
0005775973.tif 000002
【図２】
0005775973.tif 000003
【図３ａ】
0005775973.tif 000004
【図３ｂ】
0005775973.tif 000005
【図３ｃ】
0005775973.tif 000006
【図３ｄ】
0005775973.tif 000007
【図４】
0005775973.tif 000008
【図５】
0005775973.tif 000009
【図６】
0005775973.tif 000010
【図７】
0005775973.tif 000011