(57)【要約】ユーザデバイスは処理モジュールおよびＵＩモジュールを有する。処理モジュールはＵＩモジュールとの恒久的接続を有し、コンテンツマネージメントシステムとのデータネットワークを介した断続的接続を有してもよい。ユーザ要求アクションはＵＩモジュール内で実行される。そのようなアクションのそれぞれについて、ネットワーク接続が許す場合にコンテンツマネージメントシステムに並列要求が送信される。ユーザ要求アクションの結果はＵＩモジュール内に、あたかもそれらがコンテンツマネージメントシステムで実施されたかのように提示される。したがって、ユーザは、まるで全てのユーザ要求アクションがその要求と実質的に同時に起こったかのようにコンテンツとやりとりできる。ネットワーク接続が許す場合、コンテンツマネージメントシステムからのアクションが実施されたという確認が処理モジュールで受け付けられ、ＵＩモジュールにおけるユーザ要求アクションの状態はコンテンツマネージメントシステムのそれと合わせられる。【選択図】図２
2016533609.tif 000002
【特許請求の範囲】
【請求項１】
クライアントデバイスにおいて、ローカル識別子をコンテンツアイテムに割り当てることと、
前記クライアントデバイスにおいて、前記コンテンツアイテムとのユーザ相互作用を検出することと、
前記コンテンツアイテムとの前記ユーザ相互作用の検出に応じて、前記ローカル識別子を前記ユーザ相互作用に関連付けることと、
コンテンツマネージメントシステムへのアップロードのために、前記ユーザ相互作用をキューに入れることと、
ユーザインターフェースにおいて、前記ユーザ相互作用の前記コンテンツマネージメントシステムへのアップロードが完了する前に、前記コンテンツアイテムとの前記ユーザ相互作用のローカル表現を提示することと、
前記コンテンツアイテムに対するシステムワイドの識別子の割り当てを、前記コンテンツマネージメントシステムから受け付けることと、
前記クライアントデバイスにおいて、前記システムワイドの識別子の受け付けに応じて、前記ローカル識別子を前記システムワイドの識別子で置き換えることと、を含む方法。
【請求項２】
置き換えることはさらに、前記システムワイドの識別子を前記ユーザデバイス上のローカルキャッシュに提供することを含む請求項１に記載の方法。
【請求項３】
前記ユーザデバイスにおいて、前記コンテンツアイテムの前記ローカル識別子を生成することをさらに含む請求項１に記載の方法。
【請求項４】
前記ユーザ相互作用は、前記コンテンツアイテムを共有仮想空間に追加すること、前記コンテンツアイテムを前記コンテンツマネージメントシステムの少なくともひとつの他のユーザと共有すること、または前記コンテンツアイテムを変更することのうちのひとつ以上を含む請求項１に記載の方法。
【請求項５】
前記コンテンツアイテムは、コンテンツアイテムのコレクション、メッセージ、データ構造、画像、ビデオ、またはリンクのうちのひとつ以上を含む請求項１に記載の方法。
【請求項６】
前記コンテンツアイテムをローカルキャッシュに登録することをさらに含み、前記ローカルキャッシュは前記コンテンツマネージメントシステムの状態を表すデータベースを含む請求項１に記載の方法。
【請求項７】
前記データベースは前記コンテンツマネージメントシステムの前記状態の変化を検出するスレッドを実行する請求項６に記載の方法。
【請求項８】
前記スレッドは、ユーザデバイスが前記コンテンツマネージメントシステムに接続されている限り、連続的に実行される請求項７に記載の方法。
【請求項９】
前記データベースは、前記ユーザの全ての写真、前記ユーザの全てのルーム、またはそれらのルームの全てのコンテンツのうちのひとつ以上を保持する請求項６に記載の方法。
【請求項１０】
前記コンテンツアイテムは、
前記コンテンツマネージメントシステムの対応するデータと同期されたグローバルデータと、
ローカルで生成されたが前記コンテンツマネージメントシステムの対応するデータとはまだ同期されていないローカルデータと、を含む請求項１に記載の方法。
【請求項１１】
前記コンテンツアイテムへの様々なアクセスレベルを有するひとつ以上のリスナにローカルキャッシュによりアクセスを提供することによって、前記ローカルキャッシュに前記コンテンツアイテムを登録することをさらに含む請求項１に記載の方法。
【請求項１２】
インストラクションを含む非一時的コンピュータ可読媒体であって、該インストラクションはユーザデバイスの少なくとも１つのプロセッサによって実行されたときに、前記ユーザデバイスに、
前記ユーザデバイス上でローカルで、ひとつ以上のユーザ要求アクションを実行することと、
前記ひとつ以上のユーザ要求アクションのそれぞれについて、コンテンツマネージメントシステムに並列要求を送信することと、
全てのユーザ要求アクションの結果を、前記ユーザデバイスのユーザインターフェース内で、あたかも前記ユーザ要求アクションが前記コンテンツマネージメントシステムで実施されたかのように提示することと、
前記ユーザデバイスと前記コンテンツマネージメントシステムとの間のネットワーク接続性が定められたしきい値を超えると、前記ユーザ要求アクションが実施されたことの確認を前記コンテンツマネージメントシステムから受け付けることと、
前記受け付けられた確認に基づいて、前記ユーザデバイスの前記ユーザ要求アクションの状態を前記コンテンツマネージメントシステムの前記ユーザ要求アクションの状態に合わせることと、をさせる非一時的コンピュータ可読媒体。
【請求項１３】
前記ユーザデバイスはローカルキャッシュを備え、前記ローカルキャッシュは前記コンテンツマネージメントシステムの状態を表すデータベースを含む請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１４】
前記ユーザデバイスのデータベースは前記ユーザデバイスで実行されるスレッドによって連続的に更新され、前記スレッドは前記コンテンツマネージメントシステムの前記状態の変化を探す請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１５】
前記並列要求は、少なくともひとつのコンテンツアイテムの追加、少なくともひとつのデータ構造の追加、少なくともひとつのコンテンツアイテムとの相互作用、または少なくともひとつのデータ構造との相互作用を検出することに応じて送信され、
前記インストラクションはさらに前記ユーザデバイスに、前記少なくともひとつのコンテンツアイテムまたは前記少なくともひとつのデータ構造のうちのひとつと関連付けられたローカル識別子を、前記並列要求と共に送信することをさせる、請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１６】
確認を受け付けることはさらに、ひとつ以上のプッシュ通知を受け付けることを含む請求項１２に記載の非一時的コンピュータ可読媒体。
【請求項１７】
クライアントデバイスにおいて、ローカル識別子をコンテンツアイテムに割り当てる手段と、
前記クライアントデバイスにおいて、前記コンテンツアイテムとのユーザ相互作用を検出する手段と、  
前記コンテンツアイテムとの前記ユーザ相互作用の検出に応じて、前記ローカル識別子を前記ユーザ相互作用に関連付ける手段と、  
コンテンツマネージメントシステムへのアップロードのために、前記ユーザ相互作用をキューに入れる手段と、  
ユーザインターフェースにおいて、前記ユーザ相互作用の前記コンテンツマネージメントシステムへのアップロードが完了する前に、前記コンテンツアイテムとの前記ユーザ相互作用のローカル表現を提示する手段と、  
前記コンテンツアイテムに対するシステムワイドの識別子の割り当てを、前記コンテンツマネージメントシステムから受け付ける手段と、  
前記クライアントデバイスにおいて、前記システムワイドの識別子の受け付けに応じて、前記ローカル識別子を前記システムワイドの識別子で置き換える手段と、を備えるシステム。
【請求項１８】
前記ユーザデバイスにおいて、前記コンテンツアイテムの前記ローカル識別子を生成する手段をさらに備える請求項１７に記載のシステム。
【請求項１９】
前記コンテンツアイテムをローカルキャッシュに登録する手段をさらに備え、前記ローカルキャッシュは前記コンテンツマネージメントシステムの状態を表すデータベースを含む請求項１７に記載のシステム。
【請求項２０】
前記コンテンツマネージメントシステムの状態の変化を検出するスレッドを実行する手段をさらに備える請求項１７に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
種々の実施の形態は主に、ユーザデバイス上で、クラウドベースのコンテンツマネージメントシステムへのアクセスを提供するシステムおよび方法に関する。
【背景技術】
【０００２】
写真アプリケーション、ビデオアプリケーション及び他のコンテンツ共有アプリケーションがますます一般的になる一方で、それらの種類のアプリケーションによって現在提供されるサービスや機能は固有の制限を有する。これらの制限を認識して、複数のオンラインのコンテンツマネージメントシステム（ＣＭＳｓ）は、クラウドストレージのための便利なポータルと、彼らのコンテンツとの対話機能とをユーザに提供する。このようなシステムでは、サポートするユーザデバイスで動作するアプリケーション内でする場合と同様に、ユーザは、例えば写真やビデオなどのコンテンツをアップロードし、様々な操作を行い得る。これらの操作のいくつかは、極めて複雑であり得、更に大量のコンテンツを伴い得る。このような操作は、例えば、ユーザアカウントへ写真又はビデオをアップロードすること、他のユーザから写真又はビデオの共有を受けて、自身のユーザアカウントにそれらをコピーすること、コンテンツマネージメントシステムの他のユーザとそれらを共有すること、そのようなコンテンツのアルバムやコレクションを生成し共有すること、コンテンツアイテムまたはコンテンツの任意のユーザ定義収集と相互に作用すること、および種々の態様で共有と相互に作用することを含み得る。
【０００３】
従来から、ユーザデバイスにローカルアプリケーションを実装するための種々のオプションがある。例えば、ローカルアプリケーションは、全てのコンテンツがユーザデバイスで保持され管理されるという点で完全にローカルな形で実装されてもよい。したがって、コンテンツを共有するために、ローカルアプリケーションは電子的通信に依存してコンテンツを他のユーザのデバイスと直接やりとりしてもよい。しかしながら、このタイプの実装では、ユーザが自身のアカウントに保持可能なコンテンツの量は自身のユーザデバイスの容量に制限される。さらには、交換または共有されたコンテンツアイテムの状態を関連する全てのユーザデバイスに亘って複製するためには、複雑なメッセージおよびデータマネージメント技術が要求される可能性がある。
【０００４】
あるいはまた、ローカルアプリケーションは、ユーザのコンテンツを管理し保持するサーバで実行されるアプリケーションとインターフェースしてもよい。この実装では、サーバはシステム上の任意のユーザアカウントと関連付けられたコンテンツを制御、保持、および／または管理してもよい。サーバは、ユーザ同士またはユーザと第三者との間の任意の変更、共有、メッセージなどを記録してもよい。このサーバ管理オプションは、コンテンツマネージメントシステムのユーザ間の共有および他の相互作用を管理するための最良の機会だけでなく、大量のユーザデータを保持するための最良の機会（データはユーザのローカルデバイスに保持される必要はないから）をも提供する。
【０００５】
サーバ駆動モデルのひとつの難点は、ユーザのコンテンツとのローカル相互作用が、ユーザデバイスとサーバとの間の接続性が十分に高い時に制限されることである。ユーザデバイスがコンテンツマネージメントシステムサーバにデータネットワークを介して弱々しく又は断続的に接続される（例えば、携帯電話ネットワークに接続されたスマートフォン）場合、生成されたコンテンツと、コンテンツマネージメントシステムサーバにユーザのデータを蓄積、承認、組織化、またはそうでなければ管理するように要求するユーザデバイス上でローカルになされたアクションとは、適切なネットワーク接続性が回復するまで処理され得ない。したがって、例えば、ユーザが自身のスマートフォンからローカルアプリケーションを使用して写真のコレクションのアップロードを試みる一方、その写真は実際は何時間もの間サーバにアップロードされないことが起こりうる。したがって、例えば共有やレビューや編集などのコンテンツマネージメント機能はすぐには利用可能にならない可能性がある。
【０００６】
（ｉ）コンテンツの生成、（ｉｉ）コンテンツアイテム又はメッセージの、ユーザアカウントや他のユーザのアクセス可能なデータ構造への追加、（ｉｉｉ）共有コンテンツをコンテンツマネージメントシステム上の個人的なアカウントにダウンロードすること、及び（ｉｖ）アプリケーションとの自身の相互作用に対する他の応答、をより容易にするために、コンテンツマネージメントシステムサーバとの接続性に依らずにローカルコンテンツマネージメントシステムアプリケーションのシームレスな応答をユーザが体験できるようにすることは非常に望ましい。同時に、サーバとの接続性が十分であることが保証されないのであれば、ユーザインターフェースとローカルアプリケーションとの間のユーザデバイスにおける接続性が恒久的である一方でローカルアプリケーションと遠隔サーバとの間の接続が多くの場合に断続的でありうるので、これは常に可能というわけではない。
【０００７】
ユーザデバイス上で、クラウドベースのコンテンツマネージメントシステムへのアクセスを提供するシステムおよび方法が、当該分野で必要とされている。
【発明の概要】
【０００８】
ユーザデバイス上で、クラウドベースのコンテンツマネージメントシステムへのアクセスを提供するシステムおよび方法が開示される。
【０００９】
種々の例示的な実施の形態では、コンテンツが既にコンテンツマネージメントシステムのサーバにアップロードされていたかのように、ユーザデバイス上でユーザによって自身のユーザアカウントにローカルに追加されたコンテンツが表示されてもよく、かつコンテンツとの全ての相互作用が容易になされてもよい。したがって、ユーザデバイス上で動作するサーバ実行コンテンツマネージメントシステムアプリケーションは、サーバの応答や確認を待つことなしに完全なローカルアプリケーションとして実行されているかのように見えてもよい。
【００１０】
さらに、共有仮想空間をサポートするコンテンツマネージメントシステムアプリケーションでは、ユーザが自身のユーザデバイスからなした共有仮想空間に対する変更を、変更の後に即座にローカルで表示し、これはサーバの状態をユーザデバイスの状態と一致させるためにサーバに情報を送信することを待たなくてもよい。従って、多数の共有仮想空間はローカルに生成されてもよく、そして、様々なコンテンツアイテムがあらゆる情報がコンテンツマネージメントシステムサーバに届く前に共有仮想空間に追加されてもよい。ユーザにとっては、それは完了したタスクのように見える。従って、そのような例示的な実施の形態では、ユーザによって共有仮想空間に追加された任意の画像は、あたかも（ｉ）コンテンツマネージメントシステム上に共有仮想空間が既に生成されており、（ｉｉ）少なくともひとつの画像が既に共有仮想空間にコピーされているかのように、表示され、そのような画像に追加されたまたは関連付けられた任意のメッセージやポストもまた同様に表示され、さらにはそれらとの全ての相互作用は同様に促進される。類似の機能は、既存の共有仮想空間にコンテンツを追加することを促進してもよい。
【００１１】
ある実施の形態では、ユーザデバイスはユーザインターフェースモジュールと処理モジュールとを備えてもよい。処理モジュールは全てのネットワーク通信を取り扱ってもよい。処理モジュールは、ユーザインターフェースモジュールと直接接続を介して通信可能に接続されてもよく、コンテンツマネージメントシステムと無線接続を介して通信可能に接続されてもよい。処理モジュールは、ユーザインターフェースモジュールにおいて生成されたコンテンツアイテムやコンテンツデータ構造を登録可能なリスナモジュールを備えてもよい。
【００１２】
ユーザインターフェースモジュールは、コンテンツアイテムのユーザアカウントへの追加および／またはコンテンツアイテムや他のデータとの相互作用に対するユーザ要求を受け付けてもよい。要求された追加や相互作用は、処理モジュールのローカルデータストアに、ローカル識別子によって参照される各コンテンツアイテムやデータ構造と共に格納されてもよい。ローカル識別子は、（ｉ）ユーザインターフェースモジュールおよび（ｉｉ）そのコンテンツアイテムやコンテンツデータ構造をリスナモジュールで登録したプロセッサモジュールに渡されてもよい。
【００１３】
ユーザがコンテンツを追加するためのまたはコンテンツやコンテンツデータ構造と相互作用するためのローカル要求を行う場合、あたかもその要求が既にコンテンツマネージメントシステム上で実行されたかのように、そのような要求の結果をユーザ要求を受け付けた実質的に直後にローカルで表現してもよい。並行して、処理モジュールはコンテンツマネージメントシステムサーバへのアップロードの要求をキューに入れてもよく、アップロードされるとすぐにサーバはその要求に関連付けられたコンテンツや相互作用にグローバル識別子を割り当ててもよい。
【００１４】
ユーザデバイスでグローバル識別子を受け付けると、処理モジュールはグローバル識別子をユーザインターフェースモジュールおよび／またはリスナモジュール内で登録された任意のコンテンツアイテムやコンテンツデータ構造に渡してもよい。以前に割り当てられたローカル識別子はグローバル識別子で置き換えられてもよい。このプロセスはユーザから見るとシームレスに生じてもよい。その結果、ユーザは、特定のコンテンツアイテムまたはデータ構造がローカル識別子またはグローバル識別子に関連付けられているか否かに気付かなくてもよい。
【００１５】
したがって、ある実施の形態では、ユーザデバイス上のコンテンツマネージメントシステムアプリケーションはユーザインターフェースモジュールと処理およびネットワーク通信モジュールとを備えてもよい。ユーザインターフェースモジュールは処理およびネットワーク通信モジュールと通信可能に接続されてもよく、処理およびネットワーク通信モジュールはコンテンツマネージメントシステムのサーバとデータネットワークを介して断続的に接続されてもよい。ユーザ要求アクションは、ユーザデバイスとサーバとの間のネットワーク接続の状態によらずに、ユーザインターフェースモジュール内で実質的に即座に実行されてもよい。並列要求は、ネットワーク接続が許すときに、処理およびネットワーク通信モジュールによってコンテンツマネージメントシステムへデータネットワークを介して送信されてもよい。
【００１６】
したがって、全てのユーザ要求アクションの結果は、あたかもそれらが既にコンテンツマネージメントシステムで実施されたかのようにユーザインターフェースモジュール内に提示されてもよい。これにより、ユーザは、あたかも全てのユーザ要求アクションがその要求と実質的に同時に起こったかのように（そのときユーザデバイスに知られている）全てのコンテンツと相互作用できる。
【００１７】
ネットワーク接続が許すとき、処理およびネットワーク通信モジュールは、ユーザ要求アクションが実施されたという確認をコンテンツマネージメントシステムから受け付けてもよい。受け付けられた確認に基づいて、ユーザインターフェースモジュールのユーザ要求アクションの状態をコンテンツマネージメントシステムのユーザ要求アクションの状態に合わせてもよい。
【図面の簡単な説明】
【００１８】
本発明の上述および他の側面並びに利点は、添付の図面も併用しつつ以下の詳細な説明を考慮することでより明らかとなるであろう。添付の図面では、全体を通して、同様の参照符号は同様の部材を示す。
【図１】本発明の様々な実施の形態に従う例示的なシステムを示す。
【図２】３つのデータネットワークを介して３つのユーザデバイスがコンテンツマネージメントシステムサーバに接続する、簡略化した例示的なネットワークの模式図である。
【図３】サーバ管理コンテンツマネージメントアプリケーションに係る、ユーザデバイスにおいて写真をアップロードしそれらを他のユーザと共有するための例示的な通常の処理を示すフローチャートを示す。
【図４】本発明の例示的な実施の形態に係る、ユーザデバイスおよびその２つのモジュールの模式図である。
【図５】本発明の種々の実施の形態に係る、ユーザデバイスにおいて写真をアップロードしそれらを他のユーザと共有するための処理を示すフローチャートである。
【図６】種々の実施の形態に係る、他の例示的なシステムを示す。
【発明を実施するための形態】
【００１９】
ユーザデバイス上で、クラウドベースのコンテンツマネージメントシステムへのアクセスを提供するシステムおよび方法が開示される。種々の例示的な実施の形態では、コンテンツが既にコンテンツマネージメントシステムのサーバにアップロードされていたかのように、ユーザデバイス上でユーザによって自身のユーザアカウントにローカルに追加されたコンテンツが表示されてもよく、かつコンテンツとの全ての相互作用が容易になされてもよい。
【００２０】
この機能は、既存のコンテンツマネージメントシステム又はサービスに組み込まれてもよく、または別々のアプリケーションとして提供されてもよく、または強化されたコンテンツマネージメントサービスを提供する別々のアプリケーションにおける多くの特徴のうちのひとつとして提供されてもよい。例示的なコンテンツマネージメントアプリケーションは例えばスマートフォンなどのユーザデバイスで実行されてもよく、コンテンツマネージメントシステムに登録されたユーザのアカウントにアクセスしてもよい。このようなアプリケーションは、例えば共有仮想空間機能などの複雑な多者相互作用をサポートしてもよい。ユーザデバイスでローカルに実行されるコンテンツマネージメントアプリケーションは最終的にはそのようなひとつ以上のサーバによりサポートされてもよいが、あたかもそのアプリケーションがユーザデバイスでローカルで実行されているかのように共有仮想空間機能が見えるようにコンテンツマネージメントアプリケーションを使用することで、拡張機能が利用可能となってもよい。これは、ユーザデバイスがサーバと弱く接続されているか断続的に接続されているか切断されているか否かによる。ユーザが、接続が制限されている場合でもそのユーザのデバイスが十分に対話的であるように感じることを可能とすることにより、ユーザに提供されるユーザ体験と機能の充実性とを大きく向上できる。
【００２１】
なお、以下、「デバイス（ｄｅｖｉｃｅ）」及び「コンテンツマネージメントシステム（ｃｏｎｔｅｎｔ  ｍａｎａｇｅｍｅｎｔ  ｓｙｓｔｅｍ）」との語は、この中で、広範なストレージプロバイダ及びデータマネージメントサービスプロバイダと、電子デバイスとユーザデバイスとを広く指すものとして用いられる。また、「コンテンツアイテム（ｃｏｎｔｅｎｔ  ｉｔｅｍ）」との語は、この中で、広範なデジタルデータ、ドキュメント、テキストコンテンツアイテム、音声コンテンツアイテム、ビデオコンテンツアイテム、コンテンツアイテムの一部、及び／又は他の種類のデータを広く指すものである。コンテンツアイテムはまた、ファイル、フォルダ、又は、コンテンツアイテムのコレクション、プレイリスト、アルバムのような異なる振る舞いで一緒にコンテンツアイテムをグループ化する他の機構を含み得る。ここで、「ユーザ（ｕｓｅｒ）」の語もまた、この中で広く用いられ、シングルユーザ、複数のユーザ、認証されたアカウント、代わりに自動的に動作する又は人間の命令により動作するアプリケーション又はプログラム、任意の他のユーザタイプ、又はこれらの任意の組み合わせに相当し得る。ここで、「ジェスチャ(ｇｅｓｔｕｒｅ)」及び「複数のジェスチャ(ｇｅｓｔｕｒｅｓ)」との語はまた、この中で広く用いられ、１以上の運動、動き、ホバリング、推論、サイン、又は１つ以上のセンサとの任意の他の物理的な相互作用、又は、発話によるコマンドや網膜の追跡に基づく目の動きの解釈などの、これらの任意の組み合わせに相当し得る。「連続するリアルタイム画像(ｃｏｎｔｉｎｕｏｕｓ  ｒｅａｌ-ｔｉｍｅ  ｉｍａｇｅ)」はまた、この中で広く用いられ、１つ以上の撮影コンポーネントを介して撮影されたライブ画像、撮影された連続画像、記録された画像、又は撮影コンポーネントを介して撮影され得る任意の他の種類の画像、又はこれらの任意の組み合わせに相当し得る。
【００２２】
本発明は、様々なコンポーネント及びコンポーネントの配置、様々な技術、方法、又はステップの手順と配置を具体化し得る。参照される図面は、実施の形態を説明することのみを目的としており、本発明を限定するものとして解釈されるものではない。それぞれが互いに独立して又は他の特徴との組み合わせにおいて用いることができる、様々な発明の特徴が以下に記載される。
【００２３】
図１は、様々な実施の形態に従う例示的なシステムを示す。システム１００は、ネットワーク１０６を跨いでコンテンツマネージメントシステム１０４と通信するユーザデバイス１０２ａと１０２ｂとを含む。２つのユーザデバイスのみがシステム１００内に示されているが、任意の数のユーザデバイスがコンテンツマネージメントシステム１０４及び／又はネットワーク１０６と作用し、上述の説明は単なる例示であることを、当業者は認識する。
【００２４】
ネットワーク１０６は、伝送制御プロトコル及びインターネットプロトコル（「ＴＣＰ／ＩＰ」）、ハイパーテキスト・トランスファー・プロトコル（「ＨＴＴＰ」）及び／又はワイヤレス・アプリケーション・プロトコル（「ＷＡＰ」）を含み、但しこれらに限定されない、任意の数のプロトコルを含み得る。例えば、ユーザデバイス１０２ａとユーザデバイス１０２ｂ（まとめると１０２）とは、ＴＣＰ／ＩＰを用いてコンテンツマネージメントシステム１０４と通信し、そして、上位レベルでは、コンテンツマネージメントシステム１０４におけるウェブサーバとＨＴＴＰを用いて通信するために、ブラウザを用い得る。
【００２５】
様々なユーザデバイス１０２は、デスクトップコンピュータ、モバイルコンピュータ、モバイル通信デバイス（例えば携帯電話機、スマートフォン、タブレット）、テレビ、セットトップボックス、及び／又は、任意の他のネットワーク利用可能デバイス、を含む、但しこれに限定されない、コンテンツマネージメントシステム１０４と通信する。様々なタイプのユーザデバイスは、スマートフォン、携帯電話機、タブレットコンピュータ、パーソナルデジタルアシスタント（ＰＤＡｓ）、ラップトップコンピュータ、デジタル音楽プレイヤ、及び／又は、タッチ感応式表示インターフェースを含むことができる、任意の他の種類のユーザデバイスを含む、但しこれに限定されない、ものであり得る。様々なタッチ感応式表示インターフェースは、液晶ディスプレイ（ＬＣＤ）、モノクロディスプレイ、カラーグラフィックスアダプタ（ＣＧＡ）ディスプレイ、エンハンストグラフィックスアダプタ（ＥＧＡ）ディスプレイ、可変グラフィックスアレイ（ＶＧＡ）ディスプレイ、任意の他のディスプレイ、を含む、又はこれらの任意の組み合わせを含む、但しこれに限定されない、ものであり得る。ある実施形態では、タッチ感応式ディスプレイインターフェースは、ジェスチャを受け付けて検出するために、１つ以上のプロセッサに接続されたマルチタッチパネルを含み得る。マルチタッチパネルは、例えば、１つ以上の行トレースを有し、及び／又はライントレースを駆動する、及び１つ以上の列トレースを有し、及び／又はラインを検知する、容量性の検知媒体であり得る。マルチタッチパネルは、この中でタッチ感応式ディスプレイインターフェースの１つの例として記載されるが、当業者は任意のタッチ感応式ディスプレイインターフェースが使用されることを認識する。更に、様々な種類のユーザデバイスは、ある実施形態では、１つ以上の撮影コンポーネントを含み得る。例えば、ユーザデバイス１０２は、前向きカメラ及び／又は後向きカメラを含み得る。
【００２６】
コンテンツマネージメントシステム１００は、ユーザが認証されたアカウントを使ってコンテンツを蓄積できるようにし、また、検索、修正、ブラウズ、同期及び／又は他のアカウントにコンテンツを共有するようなマネージメントタスクを実行する。ある実施形態では、ユーザデバイス１０２上の対応するユーザインターフェース（例えばスタンドアロンアプリケーション、クライアントアプリケーション等）は、ユーザがコンテンツマネージメントシステム１０４のモジュールによって提供される機能を実行することができるように、コンテンツマネージメントインターフェースモジュールを用いて実装され得る。システム１００の更なる詳細な記載は、図６を参照して以下に示される。
【００２７】
図２は、それぞれがネットワーク（例えば携帯電話ネットワーク）を跨いでコンテンツマネージメントシステムサーバに接続される、３つのユーザデバイス（例えばスマートフォン）の３のユーザの、簡略化された例示的なネットワークを模式的に示す。図２を参照すると、コンテンツマネージメントシステム（「ＣＭＳ」）サーバ２００およびユーザデバイス２０２ａ、２０２ｂ、２０２ｃが示される。ユーザデバイス２０２ａはネットワーク１  ２０６ａを介してＣＭＳサーバ２００と接続され、ユーザデバイス２０２ｂはネットワーク２  ２０６ｂを介してＣＭＳサーバ２００と接続され、ユーザデバイス２０２ｃはネットワーク３  ２０６ｃを介してＣＭＳサーバ２００と接続される。ユーザデバイス２０２ａ−ｃはＣＭＳサーバ２００と異なるネットワーク接続を介して接続され、かつ、物理的に異なる場所に位置する可能性があるので、ネットワーク接続を介した相互作用は異なるネットワーク遅延を伴う可能性があり、かつユーザデバイス２０２ａ−ｃのうちのひとつ以上は１日のうちの様々な時点でネットワーク接続の喪失を経験するかもしれない。
【００２８】
コンテンツマネージメントアプリケーションはユーザデバイス２０２ａ−ｃのそれぞれにおいてローカルで実装されるものの、ユーザ間の競合は発生しうる。例えば、３人のユーザのそれぞれが３人のユーザ全てで共有される仮想空間を生成することを要求する場合、ユーザデバイス２０２ａから発せられた要求が、ユーザデバイス２０２ｂからの要求のほうが先に発せられたにもかかわらず、ＣＭＳサーバ２００に先に届く場合が生じうる。したがって、サーバは、共有仮想空間を生成する最初の要求がユーザデバイス２０２ｂから発せられたにもかかわらず、ユーザデバイス２０２ａを共有仮想空間を始めたものとみなす場合がある。そのような競合条件により、ＣＭＳサーバ２００および／またはユーザデバイス２０２ａ−ｃにコンテンツアイテムや共有仮想空間の重複した複製物が生成されるなどの望まない結果が生じる可能性がある。
【００２９】
図２の模式的なネットワークは、ユーザデバイス２０２ａ−ｃでローカルに実行されるコンテンツマネージメントアプリケーションが完全な相互作用性を提供するべきものである場合に、そのアプリケーションが、ＣＭＳサーバ２００との接続を必要な帯域をサポートするのに十分な高いサービス品質で維持することをどのように必要とするかを示す。ネットワーク接続の問題により、関連コンテンツの少なくともいくつかがＣＭＳサーバ２００で受け付けられる前に、（ｉ）オブジェクトが生成されること（例えば、ユーザが写真のアップロードを試行する）や（ｉｉ）複数参加者、複数コンテンツアイテムのデータ構造やデータ構成が生成されること（例えばユーザが共有仮想空間を生成する）や（ｉｉｉ）ユーザがコンテンツアイテムやデータ構造と相互作用すること、などの多くのインスタンスが生じうる。このようなインスタンスには、本発明の例示的な実施の形態に従う様々なシステム及び方法が有効である。
【００３０】
コンテンツおよびそのコンテンツとの相互作用の複雑なローカル生成の例：「ルーム」
本発明のある側面を十分に説明するため、共有仮想空間機能についてのローカルな相互作用が参照される。そのような機能は、本願と共通の譲渡の下「共有仮想空間を提供するシステム及び方法」と題して出願された、米国仮特許出願第６１/９４５,８１４号に詳細に記載される。その出願の開示内容はここに参照により本願に組み入れられる。
【００３１】
ルームアプリケーションは複数参加者共有仮想空間を記述し、「ルームズ（ｒｏｏｍｓ）」または単数の「ルーム（ｒｏｏｍ）」として知られる場合がある。ルームは、コンテンツマネージメントシステムのユーザの集合によってアクセス可能な仮想空間として定義されてもよい。そこでは、ユーザはコンテンツアイテムや該アイテムに関するメッセージを相互に共有してもよい。コンテンツマネージメントシステムは、ユーザのルームおよび全てのコンテンツアイテム、メッセージ、並びにそれらに関連する相互作用を管理してもよい。ルームの複数参加者は、ルームの生成者と、最初のコンテンツを生成者と共有した全ての他の者と、および／または続いて招待された他の者と、を含んでもよい。これらの参加者はルームの「メンバ」と称される場合がある。
【００３２】
ある実施の形態では、ルームは、コンテンツマネージメントシステムのユーザがコンテンツアイテムやコンテンツアイテムについてのメッセージを他のユーザと共有したときにいつでも、自動的に生成されてもよい。一例では、ひとつ以上のコンテンツアイテムをユーザの連絡先のひとつ以上と共有するための共有要求が受け付けられてもよい。その共有要求の受け付けに応じて、ひとつ以上の共有コンテンツアイテムの複製やそれへのリンクを含むルームが自動的に生成されてもよい。ルームは、システムサーバの割り当てられたメモリ位置（例えば、図１のデータストア１１８）に関連付けられてもよい。ルームは、ユーザおよび他のメンバの両方からアクセスされてもよく、各メンバはさらなるコンテンツ（例えばコンテンツアイテムおよびメッセージ）をルームに追加してもよい。任意のコンテンツがルームに追加されたときはいつでも、全てのメンバ参加者に通知してもよい。ある実施の形態では、他の非メンバに通知してもよく、コンテンツマネージメントシステムのユーザとして登録されていない者に対してさえも通知してもよい。通知は、インバンド（すなわち、コンテンツマネージメントシステム内の通信を介して又はそのようなシステムによって提供されるアプリケーションを介して）、アウトバンド（例えば電子メールやＳＭＳやソーシャルメディアの通知やポストを介して）、又はこれらの通信経路の任意の組み合わせであってもよい。
【００３３】
ルームアプリケーションで使用されたように、ルームは「メンバ」を有すると言える。実施の形態によっては、メンバは、ルーム機能を提供するコンテンツマネージメントシステムの排他的な登録ユーザであってもよい。他の例示的な実施の形態では、コンテンツマネージメントシステムの未登録ユーザは全体的にまたは部分的にルームのメンバとして指定されてもよい。これらの実施の形態では、所与の者は、その者のコンテンツマネージメントシステムの登録ユーザとしての地位に依らずに、ルームのメンバであってもよい。
【００３４】
ある実施の形態では、ルームのメンバに、ルームの任意のコンテンツをコンテンツマネージメントシステム上の自身の個人アカウントに複製すること、および／または電子メールやＳＭＳを介して他の者にそのようなコンテンツの複製を自由に送るかソーシャルメディアアプリケーションにポストを自由に送ること、を許可してもよい。ルームはルームコンテンツを保持しルームコンテンツとの相互作用を促進するよう設計された恒久的または準恒久的なデータ構造であるため、ルームに招待された参加者のそれぞれはいつでもルームにアクセスでき、便利である。ある実施の形態では、ルームに追加されたコンテンツアイテムは別々の「ルーム（ｒｏｏｍｓ）」データベースにコピーされ、ロックされてもよい。すなわち、コンテンツアイテムの元の所有者が後に元のコンテンツアイテムを自身のユーザアカウントのなかで変更した場合であっても、そのような変更はルームの外のコンテンツアイテムには適用されなくてもよい。ルームに追加された任意のコンテンツは、例えば無期限であってもよい所定の期間、ルームにセーブされてもよい。
【００３５】
ある実施の形態では、ユーザによって共有仮想空間に対して要求されたローカル変更（例えば、コンテンツやポストの追加、新たな者の追加など）は、その変更が要求されるとすぐにローカルで表示されてもよい。変更をローカルで表示する前にその変更がサーバに送信されることを待つことは不要であってもよい。したがって、多くのルームがローカルで生成されてもよく、種々のコンテンツアイテムがルームに追加されてもよく、種々の者がルームにメンバとして追加されてもよく、これらは、この情報がコンテンツマネージメントシステムのサーバに届く前に生じてもよい。ユーザにとっては、それはあたかも相互作用が生じるとすぐに要求が完了したかのように見えてもよい。この機能は、本発明のシステムおよび方法によって可能となってもよい。したがって、「ルーム」機能は本発明の種々の態様を説明するための明らかな例としての役割を果たしてもよい。そのようなルームの複雑さは本発明の種々の実施の形態によって解決される課題を際立たせるからである。
【００３６】
上述の通り、種々の例示的な実施の形態では、ユーザコンテンツおよびそれとの相互作用は、最終的には、コンテンツマネージメントシステムのサーバによって管理されてもよい。しかしながら、ユーザは、データ通信ネットワークを介してサーバと通信するユーザデバイス上で実行されるコンテンツマネージメントアプリケーションによって提供されるユーザインターフェースを介して、コンテンツマネージメントシステムとやりとりしてもよい。そのような実施の形態では、（ｉ）コンテンツアイテムやコンテンツデータ構造（例えば、写真、ビデオ、「ルーム」など）の生成、（ｉｉ）コンテンツアイテムやメッセージのユーザアカウントまたは既存のルームへの追加、（ｉｉｉ）ルームからコンテンツマネージメントシステム内の個人的アカウントへのコンテンツのダウンロード、および（ｉｖ）ユーザ自身のアプリケーションとの相互作用に対する他の応答、に関して、ユーザデバイスのユーザがユーザインターフェースのシームレスな応答を体験できることは非常に望ましい。これらの目的は、ユーザインターフェースとコンテンツマネージメントアプリケーションとの間のユーザデバイス上の接続性は恒久的である一方、コンテンツマネージメントアプリケーションとリモートサーバとの間の接続はしばしば断続的であり得るため、容易に達成できるとは限らない。
【００３７】
ある実施の形態では、コンテンツは一意のインデックス番号又はコンテンツに割り当てられ又は関連付けられた識別子を参照して管理されてもよい。標準的なコンテンツマネージメントシステムでは、各ユーザには一意の識別子が割り当てられ、そのユーザの全てのコンテンツ及び相互作用は、コンテンツマネージメントシステムが適切にコンテンツアイテムを自身のアカウントに蓄積すると共に、サポートされた様々な相互作用を該アカウントで実装できるようにするために、一意の識別子を利用してもよい。
【００３８】
ユーザがあるコンテンツの共有を開始することによりルームを生成するか、コンテンツをルームに追加するか、によらずに、サーバにとっては動作は基本的に同じに見えてもよい。しかしながら、前者の場合、共有が行われたときにルームＩＤは存在せず、一方で後者の場合、ルームＩＤは既に存在する。ユーザが最初にルームを生成する場合、ルームＩＤに対する要求はコンテンツマネージメントアプリケーションからコンテンツマネージメントシステムのサーバに送信されてもよい。サーバからルームＩＤを受け取るまでコンテンツマネージメントアプリケーションが待たなければならない場合、ルームＩＤが受信されるまで該アプリケーションはルームを生成したりルーム内でコンテンツを示したりすることができない。この処理は、クライアントアプリケーションとサーバとの間の接続性が断続的である場合に待ち状態を引き起こす可能性がある。ユーザデバイスと遠隔サーバとの間の弱いまたは断続的なデータ接続が完全ローカル機能の見かけを損ねないようにするために、サーバがアクションに応答していない場合やサーバが要求を満たしていない場合やサーバが要求を処理していない場合であっても、ユーザによって要求されたアクションはユーザインターフェースに反映されてもよい。
【００３９】
例えば、簡単なケースを例にとると、ユーザデバイスがコンテンツマネージメントシステムのサーバと弱いまたは断続的な接続を有しているかまたはそのサーバと接続されていない状況でも、ユーザはルームを生成すると決めてもよい。ユーザはルームで共有する多くのコンテンツアイテムを選択し、ルームに追加する多くの者を選択してもよい。共有に際して、コンテンツマネージメントアプリケーションはユーザデバイス上にルームを生成してもよい。その時点で、コンテンツマネージメントアプリケーションはユーザインターフェースに新たなルームを知らせてもよく、サーバに新たなルームを知らせるよう少なくとも試みてもよい。サーバがそのときアクセス可能でなければ、サーバに新たなルームを知らせるメッセージは、適切なネットワーク接続が利用可能となったときにサーバに送られるべきものとしてキューに入れられてもよい。いずれにせよ、ユーザがルームにコメントを追加した場合、それは、そのメッセージがサーバにまだ送信されていないかサーバで処理されていない場合でも、ローカルユーザインターフェースのルームに表示されてもよい。すなわち、ユーザがルームにコメントしても実際かなりの時間そのコメントが見えないとそのユーザは当惑しうるので、「ギャップを埋める」ために何かがローカルでなされなければならない。したがって、接続が依然として貧弱または存在しない場合でも、本発明の例示的な実施の形態では、ユーザはそれにもかかわらずスムーズでほぼシームレスなローカル体験を経験できる。そのような実施の形態では、コンテンツマネージメントアプリケーションは、後にサーバに「ルームを生成してルームＩＤを割り当てよ」というメッセージを送信するまで待つ間に、ユーザデバイス上で活動をシミュレートしてもよい。
【００４０】
活動をシミュレートするために、コンテンツマネージメントアプリケーションはローカルＩＤおよび新たなポストテーブル（例えば、どのポストがルームにあり、どのルームがあるかなどを管理するテーブル）を生成してもよい。コンテンツマネージメントアプリケーションは、あたかも新たなルームがグローバルに存在し、コンテンツがルームに本当にポストされたかのように、ローカルでこれらの結果を生成してもよい。サーバが応答したときに各ユーザデバイス上でのシームレスな相互作用を維持するために、グローバルルームＩＤをローカルルームＩＤと関連付け、ローカルルームＩＤをグローバルルームＩＤで置き換えてもよい。アクションが２度実行されることを防ぐために、またはアクションが全く実行されないことを防ぐために、ローカルルームＩＤがキューに入れられたインストラクションに含まれる場合、インストラクションがキューに入っているがまだ実行されていない間に、またはインストラクションが実行された後に、ＩＤの交換が生じてもよい。インストラクションが実行されている間に交換が生じると、不確実性が生じうる。
【００４１】
例えば、ユーザはスマートフォンで写真を撮り、またそのユーザはそのスマートフォンでルームアプリケーションを実行していて新たなルームにおいてひとつ以上の他のユーザと写真を共有しようとするかもしれない。スマートフォンがコンテンツマネージメントシステムのサーバと接続されていない（例えば、ネットワークの問題のために）場合、写真およびルーム生成要求は、ローカルで実施される一方でサーバへのアップロードのためにキューに入れられたままとなってもよい。したがって、これらの写真および新たなルームにはローカルＩＤのみが関連付けられてもよい。ルームや各写真に対するグローバルＩＤを要求するタスクおよび写真をルームに追加するタスクは、ローカルで実行される一方でキューに入れられてもよい。これらのインストラクションのうちのいくつかが実行されている途中にサーバとの接続が回復した場合、タスクに抜けが無いように、かつタスクが２度実行されないように（すなわち、ローカルＩＤを参照して１回目の実行が行われ、かつグローバルＩＤを参照して２回目の実行が行われる）、ローカルＩＤとグローバルＩＤとの置き換えを管理する必要があるであろう。
【００４２】
従来の（サーバベースの）アプローチ
遅い、断続的な、存在しない、またはそうでなければ貧弱なネットワーク接続が大きな待ち状態をどのように導入するかを示すため、図３は、ユーザデバイスで実行される従来のコンテンツマネージメントシステムアプリケーションの例示的な処理の流れを示す。図３に示される例示的な従来のアプリケーションでは、ユーザによって生成されたコンテンツアイテムやデータ構造や動作を、コンテンツマネージメントシステムがその生成を認めてオブジェクトや構造や動作にグローバルＩＤを割り当てるまでの間管理する方法やシステムは存在しない。
【００４３】
図３を参照すると、処理の流れは開始で始まり、ステップ３１０に進む。そこではユーザＡが写真をアップロードし、その写真をユーザデバイスを介してユーザＢ、ユーザＣのそれぞれと共有する。説明のために、図３に示されるアプリケーションは、ルームアプリケーションで説明された新規な「ルーム」機能を組み入れるがまるで従来のサーバベースのシステムに実装されたかのように描かれるコンテンツマネージメントアプリケーションである。そのようなアプリケーションでは、ユーザは写真やビデオなどのコンテンツアイテムをひとつ以上の他のユーザとコンテンツマネージメントシステムのサーバで共有することによって共有仮想空間を生成可能である。コンテンツマネージメントシステムのサーバは、コンテンツアイテムの受領と、ルームの生成と、関与するユーザデバイスとの後の通信と、を管理する。最初の共有がなされると、コンテンツマネージメントシステムによって管理される共有仮想空間が存在してもよい。したがって、ステップ３１０では、以下の２つの論理オブジェクトが生成されてもよい。（１）ユーザＡのユーザデバイスからコンテンツマネージメントシステムにおけるその者のアカウントへアップロードされたコンテンツアイテム、および（２）ユーザＢおよびユーザＣと共有されることが指定されたコンテンツアイテムがサーバで受け付けられた後にコンテンツマネージメントシステムによって定義されてもよい共有仮想空間。したがって、グローバルＩＤを割り当てる必要がある２つのオブジェクトが存在する。加えて、コンテンツマネージメントシステムはコンテンツアイテムを共有仮想空間と関連付ける必要がある。この関連付けは、共有仮想空間と関連付けられた記録に反映されてもよい。
【００４４】
処理の流れはステップ３１０からステップ３２０へと進み、そこではユーザデバイスは３１０で説明されたユーザアクションを処理する。したがって、ユーザデバイスはコンテンツアイテムおよび共有仮想空間に対するグローバルＩＤを要求する。ここで、図３の説明的な処理ではグローバルＩＤのみが存在することは理解されるべきである。コンテンツアイテムがユーザＢおよびＣと共有されると、共有仮想空間がユーザＡによって生成されてもよい。それは「ＡＢＣルーム」と称される。ルームや共有仮想空間をそのルームのメンバにしたがって指定するのが簡単で便利だからである。上述の通り、これらのオブジェクトの両方に対するグローバルＩＤが必要とされるだけでなく、コンテンツアイテムとＡＢＣルームとをそれらのグローバルＩＤによって関連付けるためのインストラクションを送信する必要がある。
【００４５】
処理の流れは３２０からステップ３３０へ進む。本発明との違いがここに存在する。すなわち、ユーザデバイスは、それがそれらのオブジェクトを存在するものとして扱うことができる前に、および／またはそれがそれらのオブジェクトをユーザデバイス上のコンテンツマネージメントアプリケーション内で表示する前に、コンテンツマネージメントシステムのサーバからグローバルＩＤが送られてくるのを待たなければならない。ネットワーク遅延や接続に何ら問題がなければ、ユーザはステップ３３０による遅れやアーチファクトを感じることはない。しかしながら、何らかの理由でネットワークの遅延がある場合、またはネットワークの輻輳がある場合、または例えば、ユーザがスマートフォンを用いセルラネットワークを介してコンテンツマネージメントシステムにアクセスしておりそのユーザがシグナルがほぼ無いかぎりぎり在るか存在しないようなエリアを進んでいる場合、ユーザデバイスがネットワークから切断されている長い期間が存在しうる。そのような場合、ステップ３３０は非常に苛立たしいものとなりうる。写真がコンテンツマネージメントアプリケーションで表示されるまで、コンテンツアイテムを共有可能となるまで、ルームが存在するようになるまで、およびコンテンツアイテムがルームで表示されるまで、ユーザは数秒、数分、数時間またはそれ以上も待つことを要求されるかもしれない。
【００４６】
処理の流れはステップ３３０からステップ３４０へと進み、そこではユーザデバイスは（ｉ）コンテンツアイテムおよび（ｉｉ）ＡＢＣルームのそれぞれに対するグローバルＩＤを受け付ける。次に、処理の流れはステップ３５０へと進み、そこではユーザデバイスはここでグローバルＩＤを使用して、（ａ）写真をユーザのアカウントに格納し、（ｂ）ＡＢＣルームを生成し、かつ（ｃ）写真をルームのデータベースに格納することでその写真がＡＢＣルームに関連付けられて表示されるようにしてもよい。処理の流れはステップ３５０からステップ３６０へと進み、そこではユーザデバイスはユーザＡのアカウントにおいて写真を表示し、ユーザのコンテンツマネージメントシステムアプリケーション内でＡＢＣルームを表示し、かつＡＢＣルーム内で写真を表示する。処理の流れはそこから出て終わる。
【００４７】
上述のように、ユーザデバイスがコンテンツマネージメントシステムにぎりぎり接続されているか弱く接続されているか接続されていないときにいつでも、ユーザは図３に示される処理の流れの大きな欠点を感じてしまうことになろう。この状況を改善し、付随する待ち状態や競合状態や他の欠陥を防ぐために、種々の例示的な実施の形態において図４に示される例示的な処理の流れが実装されてもよい。
【００４８】
ユーザデバイスのユーザインターフェースモジュールおよび処理モジュールへの分割；各モジュールの機能
本発明の例示的な実施の形態では、ユーザデバイスは２つのモジュールに分割されてもよい。これは図４に模式的に示される。それを参照すると、ユーザデバイス４１０はユーザインターフェース（「ＵＩ」）モジュール４１５とプロセッサモジュール４２０とを有する。ＵＩモジュール４１５は、プロセッサモジュール４２０との恒久的な（配線による等）接続４３０を有する。プロセッサモジュール４２０はネットワーク通信を扱ってもよい。プロセッサモジュール４２０はコンテンツマネージメントシステム（「ＣＭＳ」）サーバ４６０とのデータネットワーク４４０を介した断続的接続４５０を有する。
【００４９】
プロセッサモジュール４２０は、例えばアンドロイド（登録商標）およびｉＯＳタイプのデバイスを含む、種々のコンピュータプラットフォームで使用可能なソフトウエア共有ライブラリを含んでもよい。上述の通り、プロセッサモジュール４２０はＣＭＳサーバ４６０との接続を維持し、したがってサーバとユーザデバイス４１０上で実行されるコンテンツマネージメントアプリケーションとの間で情報を交換する。プロセッサモジュール４２０はＵＩモジュール４１５に、ユーザのアカウントのビューを、グローバルデータおよびローカルデータの両方を考慮に入れた形で、提供する。したがって、例えば、ルームアプリケーションでは、プロセッサモジュール４２０はユーザのルームおよび各ルームのコンテンツに関するデータを提供してもよい。そのデータは、（ｉ）サーバと同期したデータと（ｉｉ）ローカルで生成されたがサーバとまだ同期していないデータとを組み合わせる。
【００５０】
本発明の例示的な実施の形態では、プロセッサモジュール４２０は「キャッシュ」と称されるデータベースを備えてもよい。キャッシュは基本的にサーバ状態のローカルキャッシュである。この「キャッシュ」データベースは、ユーザの写真の全て、ユーザのルームの全て、およびそれらのルームのコンテンツの全てを保持してもよい。そのデータベースは例えば「デルタ」スレッドによって最新の状態に維持されてもよい。デルタスレッドは、ユーザデバイスがＣＭＳサーバ４６０との十分な接続を有するときに実行され、サーバに例えば「私はＡ点までにおいてこの全データを有する」と知らせるような、連続的に実行されるプロセスであってもよい。ＣＭＳサーバ４６０は次いで、キャッシュは最新の状態であると応答するか、またはキャッシュに追加される必要がある新たな情報を提供してもよい。ユーザデバイス４１０が新たなデータを生成していない場合、デルタスレッドは実行され、ＣＭＳサーバ４６０から変更を受け付け、その変更をキャッシュに適用する。したがって、ユーザが実際コンテンツや相互作用を追加しないような場合、比較的シンプルである。ＵＩモジュール４１５は基本的に、プロセッサモジュール４２０に、例えば所与のルームやルームの集合のコンテンツを要求する。プロセッサモジュール４２０は次いでキャッシュを参照し、現在のデータを返す。このデルタスレッドが変更すると、プロセッサモジュール４２０は、ＵＩモジュールが特定のルームまたはルームの集合に対する興味を表明した場合、ＵＩモジュール４１５にこれらの変更をプッシュしてもよい。後により十分に説明される通り、ＵＩモジュール４１５はルームについてリスナを登録することにより、興味を表明してもよい。このようにすることで、個々全てのキャッシュに対する更新をプロセッサモジュール４２０からＵＩモジュール４１５にプッシュする必要がなくなり、したがって処理量を低減し電力消費を最小化できる。
【００５１】
ある特定の例では、ユーザはいくつかのルームのメンバであってもよい。しかしながら、その者が実際よく見たり相互作用したりするのはそれらのルームのうちの小さな部分集合のみであってもよい。それらのルームに対して興味が表明される。しかしながら、その者が６ヶ月間訪れたことのないルームについては、キャッシュの変更をプッシュする必要はなく、またそのようなルームのコンテンツに対する変更についてそのユーザにアラートを出す必要もない。
【００５２】
リスナ機能
本発明の例示的な実施の形態では、上述の通り、ＵＩモジュール４１５はコンテンツアイテムや他のユーザやルームに対する興味を、例えばそのコンテンツに対する「リスナ」を登録することによって表明してもよい。例えば、ルームリスナやポストリスナや「ルームメンバ」リスナまでもが存在してもよい。したがって、デルタスレッドが実行されると、それはサーバ状態の変更をピックアップし、登録リスナのいずれかがその変更に興味があるか否かを判定してもよい。もしある場合、例えば「ここに新たなルームがある、ここに更新されたルームがある、ここに新たなポストがある、ここにこのポストに入る写真がある」と述べつつ、これらのリスナにメソッドを呼び出してもよい。
【００５３】
それは、ユーザが実際何も変更していないようなシンプルな場合のことである。より複雑なケースは、ユーザがＵＩモジュール４１５を介してローカルコンテンツを生成しているような場合である。そのような場合、ローカルデータベースに既に格納されたがまだＣＭＳサーバ４６０に送信されていないデータや状態があってもよい。このデータは、持続的に保持可能なように、プロセッサモジュール４２０のユーザデバイス「キャッシュ」にも格納されてもよい。したがって、ユーザがポストを生成し、次いで例えばその者のスマートフォンがクラッシュした場合、アプリケーションはそのポストをセーブしてもよい。その結果、ユーザがそのフォンを再スタートしたとき、そのポストは、失われること無く、コンテンツマネージメントシステムサーバに送信可能となる。
【００５４】
本発明の例示的な実施の形態では、コンテンツマネージメントアプリケーションとのユーザの相互作用は種々の動作を生成してもよい。そのような動作は動作キューに送信されてもよい。例えば、ユーザがルームに対してとったアクションは動作キューにおいて表現されてもよい。これらのアクションは、例えば、新たなルームの生成、新たなポストの生成、ルームへのメンバの追加、ポストからの写真の保存、またはユーザがルームについての通知の受信を止めるようルームを「既読」とマークすること、を含んでもよい。これら全ての事象はルームまたはルームのリストのユーザビューに影響を与えうる。したがって、それら全ては、ユーザに適切なＵＩビューを描いてみせるために、既存の状態の上に適用されてもよい。したがって、ユーザが見たいものは、（ｉ）データベース内にあり、サーバとマッチされた既存の状態、プラス（ｉｉ）ＵＩが表すべきものを得るために、その状態の上となるようキューに入れられたローカル動作の全てのリプレイ、である。したがって、例えば、（サーバ観点で）２つのルームがあり、かつ（ユーザデバイス観点のみで）ユーザが２つの新たなルームを追加した場合、それらの２つの新たなルームがまだサーバに送信されていない場合であっても、ＵＩモジュール４１５は、ユーザがアプリケーションを使用するとき、４つ全てのルームをユーザに描いてみせてもよい。
【００５５】
例として、次にシンプルなケースが提供される。ユーザはキャッシュに既にひとつ以上のルームを有し、動作キューにおいていくつかの新たなルームを要求してもよい。例えば、前にキューに入った動作が依然として実行されているか、ユーザデバイスが適切な接続を有さないために、これらの新たなルームはＣＭＳサーバ４６０にまだ送信されていなくてもよい。ＵＩモジュール４１５は次いでリスナを登録してもよい。本発明の例示的な実施の形態では、ＵＩモジュール４１５は次いでサーバが既に知っているルームに関する情報をキャッシュからフェッチしてもよい。プロセッサモジュール４２０は次いで動作をそれらが生成された順序で実施し、２つの新たなルームを追加するようユーザのルームリストを更新してもよい。その２つの新たなルームはこの時点ではローカルにのみ知られている。動作が既存のルームを変更する場合、プロセッサモジュール４２０はキャッシュからフェッチされたルームのコピーを変更してもよい。これは例えばポストの数をインクリメントしたり、新たなメッセージを追加したり、新たなコンテンツアイテムを追加したりすることによる。動作が新たなルームに対応する場合、プロセッサモジュール４２０はキャッシュに既に保持されているルームのリストに追加してもよい。したがって、キャッシュデータをとり、それを動作キューデータと組み合わせた後、プロセッサモジュール４２０はリスナに送信可能な情報集合を有してもよい。例えば、プロセッサモジュール４２０はＵＩにおいてユーザに示される必要があるルームのビューを所有してもよい。
【００５６】
したがって、動作ビューはユーザデバイスにローカルであってもよいことは理解されるであろう。加えて、ある動作はそれらがサーバに送信される前に遅れる可能性があることを注意しておく。例えば、ユーザが１０個の写真を共有し、１０個全ての写真がまだカメラアップロードされていない（すなわち、ユーザのコンテンツマネージメントシステムに追加されていない）場合、写真を共有する動作は進める前に、１０個の写真がアップロードされてしまうまで待ってもよい。その共有動作が往生する間にデバイス上で他の動作が実行されてもよいが、そのルームに対する他の動作は実行されてはならない。したがって、その意味で、係属中のアップロードはそのルームにおける全てのことについてのブロッカとして作用してもよい。したがって、動作キューは単なる先入れ先出しよりも少し複雑であることは注意されるべきである。
【００５７】
本発明の例示的な実施の形態では、ユーザがコンテンツを追加した場合、またはユーザがＵＩモジュール４１５を介して何らかのアクション、例えばルームへのポストの追加、を起こした場合、プロセッサモジュール４２０は、それがその動作をローカルで処理するときにＣＭＳサーバ４６０に並列コマンドを送信してもよい。次に、ＣＭＳサーバ４６０は、サーバデータベースを更新し、コンテンツマネージメントアプリケーションが実行されている全てのユーザのデバイスをピンすることによって、そのコマンドを処理してもよい。その結果、そのようなデバイスのそれぞれはデルタスレッドを実行し、その状態をキャッシュデータベースに適用するのは上述の通りである。（例えば特定のユーザデバイスとのネットワーク接続の欠如のために）デルタスレッドが動作しない場合、それは例えば続けてリトライしてもよい。ユーザデバイスがコンテンツマネージメントアプリケーションを実行している限り、デルタスレッドはサーバとの通信を試行できる。さらに、接続が失われると、デルタスレッドは接続が回復するまで待つことができる。
【００５８】
図２に示される模式的ネットワークを再度参照すると、ユーザデバイス２０２ａ−ｃが既存のルームを変更するか、または同じ人々との同じルームの生成を試行している場合、それらのいくつかまたは全てが接続を失うことの結果として、および上述の通り全てのユーザアクションがローカルで処理されるために、ユーザデバイス２０２ａ−ｃのそれぞれは皆が共通して知っていることプラスその者のみが知っていることのみを認知する可能性がある。したがって、図２のユーザのうちの２または３のユーザはそれぞれ、同じルームを生成し、それに異なる一連の写真を入れるかもしれない。全てのユーザデバイスが接続状態に戻ると、サーバデータベースに書き込まれた順番で全てが収束し、したがって、コンテンツマネージメントシステムサーバが新たなルームを登録し、ユーザのデルタスレッドのそれぞれがコンテンツマネージメントシステムサーバと同期すると、ローカルビューは変更されてもよい。したがって、ローカルの活動は、他の活動（ローカルデバイスは、他の活動がローカルで実施されたときに他の活動について知らなかった）がローカルの活動を上書きする程度で変更されうる。
【００５９】
本発明の例示的な実施の形態では、この処理は以下の態様で動作してもよい。ルーム内の全てのポストは、全てのルームと共に、自身に関連付けられた「ソートキー」を有してもよい。サーバ上のソートキーは例えばそのアイテムがサーバデータベースに書き込まれた時刻を記録するタイムスタンプから生成されてもよい。ソートキーはストリングのようなものであり、例えば「ａａａ」や「ａａｂ」などのような、デバイスがどのようにソートするかを知っているものである。そのような例示的な実施の形態では、ユーザがローカルで生成するいかなるものも、サーバ上のいかなるものよりも大きくなることが保証されているソートキーを有するであろう。したがって、ユーザがローカルで生成する全てのものは、基本的にサーバ上のあらゆるものの最新の端部にソートされてもよい。しかしながら、それがサーバに書き込まれるにつれて、それはそれがサーバに行き着いたときに基づく新たなソートキーを受け付けてもよい。それにより、全ての者（すなわち、全てのメンバ）は最終的にルームの矛盾の無いビューを得ることができる。
【００６０】
したがって、ユーザがポストを追加すると、そのポストを追加するためのサーバに対するコマンドはそのポストの新たなサーバ表現を返す。それはユーザのローカルキャッシュに書き込まれるものであって、同時に動作は消去される。したがって、その場合、ルームのユーザローカルビューは、例えばその者が写真を撮ってそれをオフラインで見ていた場合、おそらくは変わりうる。
【００６１】
したがって、例えば、複数の参加者がルームに関与することに起因して、かつ上述の通りそれらの参加者のそれぞれがコンテンツマネージメントシステムサーバに断続的にアクセスすることに起因して、図２に示される通り、所与のルーム、例えば「ＡＭＮルーム」、のあるメンバはポストＡを見てポストＢを追加してもよく、したがってその者はその者のデバイス上のＡＭＮルームにポストＡおよびポストＢを見る。加えて、ＡＭＮルームの他のメンバはオフラインであり、ルームにポストＡを有し、次いでポストＣを追加してもよい。したがって、そのメンバはその者のデバイス上でポストＡを見て、その後同じルームでポストＣを見てもよい。両方のユーザは最終的には、例えばどちらのユーザが最初に接続を回復するかに依って、ＡＭＮルーム内のポストＡ、Ｂ、ＣまたはＡ、Ｃ、Ｂのいずれかに行き着くであろう。
【００６２】
本発明の例示的な実施の形態では、各ユーザデバイスが接続を再度得て動作をサーバに書き込むにつれて、矛盾の無い（グローバルな）ソートキーが得られ、したがって例えばＡＭＮルームの両方のメンバは同じものを見ることとなろう。最終的には、そのような衝突を解決するためにある規則が選択されなければならない。そのような規則は例えばコンテンツマネージメントシステムに最初にセーブされたものが勝つというようなものであってもよい。したがって、所与のユーザについて、そのユーザがオンラインに復帰したときにそのユーザのポストの上にポストが挿入される可能性がある。
【００６３】
２人のユーザがそれぞれ相手とルームを生成する場合や、例えば相手および同じ追加的参加者とルームを生成する場合であってその２人のユーザが両方ともオフラインである場合は、他の興味のあるケースである。ある実施の形態では、ルームアプリケーションで説明したように、ルームは、ルームのメンバである人々の一意の集合によってサーバ上で定義される。したがって、それらのポストの両方はコンテンツマネージメントシステムによって同じルームに表示されるであろう。なぜならば、アリスがボブとコンテンツを共有し、ボブがアリスとコンテンツを共有する場合、それはサーバ上のアリス−ボブルームであって、どちらのコマンドがサーバに最初に届いたかに依らないからである。それらの者が両方ともオフラインのときにそれを行ったとしても、それらの者が両方ともオンラインに復帰したときにはそれらの者はポストについて同じグローバルＩＤ、およびルームについて同じグローバルＩＤに行き着くであろう。なぜならば、サーバはそれらを単にマッチングするのであって、ルーム生成がそれらの者のそれぞれにおいてオフラインで生じたとしてもそれらは２つの別個のルームには行き着かないからである。唯一の難事は、最初にオンラインに復帰した者がどちらであっても、その者のポストがルームで最初にリストされることである。これは、ルームにおいてポストが時系列でリストされることを前提とする。
【００６４】
しかしながら、関連の例では、ユーザＡがユーザＢ、ＣおよびＤとルームを生成し、ユーザＢがユーザＡ、Ｃ、ＥおよびＦとルームを生成し、ユーザＡおよびＢの両方がそのときオフラインである場合、おのおのは最初、それらの者がルームに追加したポストが何であれそのようなポストを伴う生成されたルームを見る。したがって、ユーザＡは、自己のユーザデバイス上で、自己が最初にルームに追加した写真が何であれその写真と自己がその後追加したポストとを伴うＡＢＣＤルームを見る。同様に、ユーザＢは、自己のユーザデバイス上で、自己が最初にルームに追加した写真が何であれその写真と自己がその後追加したポストとを伴うＡＢＥＦルームを見る。しかしながら、それぞれがオンラインに復帰したとき、ＡＢＣＤルームおよびＡＢＣＥＦルームの両方が存在するであろう。前者はユーザＡからのコンテンツを伴い、後者はユーザＢからのコンテンツを伴う。ユーザＡ、Ｂのそれぞれはコンテンツを互いと共有することを意図していたのではあるが、２つのルームがマージされない場合、コンテンツは同じルームに存在できない。ルームアプリケーションで述べたように、ユーザの一意の集合のそれぞれは自身のルームであり、ルーム内にはポストがある。各ポストの中には例えば写真やメッセージなどのアイテムがある。
【００６５】
プロセッサモジュール４２０はリスナが実装しなければならないインターフェースを定義するが、実際の実装はＵＩモジュール４１５において行われることを注意しておく。したがって、ある例示的な実施の形態では、プロセッサモジュール４２０はいわば、ＵＩモジュール４１５に「あなたはこれらのメソッドを有するオブジェクトを生成する必要がある」と言うものであり、次いでＵＩモジュール４１５は各プラットフォームの各リスナについて実装を生成する。したがって、リスナが生成され、次いでＵＩモジュール４１５によって必要とされなくなるとリスナは死ぬ。追加的に、ある例示的な実施の形態では、ＵＩモジュール４１５は、ユーザが実際に所与のルームを見るまでは、そのルーム内のポストに対する興味を表明しなくてもよい。しかしながら、そのような例示的な実施の形態では、ルームのリストについて、ＵＩモジュール４１５はアプリケーションが実行されている期間中はずっとそれを維持してもよい。この場合、ユーザがそのパネルをスライドオープンしたときにすぐにルームのリストをユーザに示すことができる。ある実施の形態ではこれは単にルームのリストであってもよく、他の実施の形態ではそれはルームのリストおよびルームに追加された新たなポストに関する通知の両方であってもよい。
【００６６】
ＵＩモジュール４１５が何についてのリスナを登録するかを決定する基準は変わってもよく、いくつかのファクタに依存してもよいことは理解される。目標は、ユーザがＵＩモジュール４１５に表示させたいと思う蓋然性の高い任意のタイプのコンテンツについてのリスナを登録することである。それは例えば最近見られたルームおよびコンテンツであってもよく、この場合の「最近」は種々の尺度を使用して定義されてもよく、または参加の頻度や相互作用の頻度が高いルームおよびコンテンツであってもよい。
【００６７】
ローカルＩＤのグローバルＩＤでの置換
本発明の例示的な実施の形態では、全てのコンテンツには２つの識別子が割り当てられてもよい。例えば、ルームアプリケーションでは、ルームおよびポストの両方は２つのＩＤを有するか、２つまでのＩＤを有してもよい。同じことは、写真やビデオなどの標準的なアプリケーションにおける任意のタイプのコンテンツやコンテンツアイテムにも言える。したがって、サーバに書き込まれた任意のポストやサーバに書き込まれた任意のルームはグローバルＩＤを有してもよい。グローバルＩＤは例えばエッジストア（Ｅｄｇｅ-ｓｔｏｒｅｄ）１２８ビット数や他の数や十分に大きなストリングであってもよい。一般に、グローバルＩＤは、全てのコンテンツをコンテンツマネージメントシステム全体に亘って一意に特定するのに十分なほど大きい必要がある。しかしながら、上記説明から明らかなように、全てのオフライン動作をサポートするために、例えばローカルで生成されたがまだサーバに送信されていないポストおよびルームを参照するローカルＩＤもまた必要である。したがって、本発明の例示的な実施の形態では、ＵＩモジュール４１５が例えば写真やポストやルームなどのコンテンツアイテムを生成すると、ＵＩモジュール４１５はプロセッサモジュール４２０からローカルＩＤを受け付ける。ＵＩモジュール４１５は必要がある限りそのローカルＩＤを使用し続けてもよい。上述の通り、動作がサーバに行き着くと、プロセッサモジュール４２０はキュー内のローカルＩＤを参照する全ての動作を、新たに受け付けたグローバルＩＤで更新してもよい。
【００６８】
それにもかかわらず、ルックアップテーブルやトランスレーションテーブルなどは維持されてもよい。これは、例えば、ＵＩモジュール４１５がローカルＩＤ  Ｘを伴うルームを生成し、プロセッサモジュール４２０に種々のポストをルームＸに追加するよう言い続けている場合であって、プロセッサモジュール４２０の内部ではルームＸは既に新たなグローバルＩＤを伴うルームＹにアップグレードされている場合、プロセッサモジュール４２０は、ルームＸ（これはＵＩモジュール４１５が古いローカルＩＤを使用することでルームＸを知ることによる）へのポストを求めるＵＩモジュール４１５からのこれらの入来要求を、ルームＹへのものすなわちプロセッサモジュール４２０内でローカルで（かつコンテンツマネージメントシステムサーバでグローバルに）使用されているグローバルＩＤへのものであると翻訳できる必要があるためである。したがって、本発明の例示的な実施の形態では、ローカルＩＤとグローバルＩＤとを関連付けるトランスレーションテーブルは、ＵＩモジュール４１５から来てローカルＩＤを参照する動作が無くなるのに十分な期間、維持されてもよい。しかしながら、そのような期間の後はそれは破棄されてもよい。これは例えば、後述のようにユーザデバイス上のアプリケーションがリスタートされたときであってもよい。
【００６９】
ローカルＩＤの追加的な使用法：ポスト有効性；ローカルＩＤの持続性  
この時点までの説明において、十分なローカル機能や、新たにオフラインで生成されたコンテンツおよびそのようなコンテンツを整理するためのデータ構造（例えば、ルーム、アルバム、コレクション等）との基本的に即時の相互作用を促進するために、ユーザデバイス上で内部的にローカルＩＤを使用してもよい。しかしながら、ローカルＩＤは他の用途を有してもよい。したがって、本発明の例示的な実施の形態では、ローカルＩＤを使用することで、例えばルームやポストなどのコンテンツを生成するときにアイテムの有効性を保証してもよい。
【００７０】
潜在的な課題として、プロセッサモジュール４２０がコンテンツマネージメントシステムサーバに例えば新たなルーム、例えばルームＡＢＣ、を生成するよう告げることがある。しかしながら、サーバからプロセッサモジュール４２０への応答は、ルームが実際生成されたことを教えるものであるが、ユーザデバイスのクラッシュやネットワーク接続の喪失などのためにその応答が失われることがある。そのような場合、プロセッサモジュール４２０は、ＣＭＳサーバ４６０によって生成が成功したと告げられるまで、この動作をリトライし続けるであろう。サーバにとっては、そのような要求のリトライは複数の要求のように見える。しかしながら、例えばルームやポストなどのコンテンツを生成するためのこれらの動作のそれぞれが、ユーザデバイスのプロセッサモジュールによって割り当てられたグローバルに一意なローカルＩＤでタグ付けされている場合、サーバはこれら２回目や３回目の要求を無視し、それが既に生成した同じグローバルＩＤを単に返すことができる。それは同じローカルＩＤを伴う要求を探し、それを重複として破棄してもよい。そうすることで、ユーザデバイスが何かを生成する要求をサーバに２回以上送信した場合でも、重複は生成されないであろう。したがって、種々の例示的な実施の形態では、ローカルＩＤはＵＩ観点への翻訳からと、アイテムの有効性を保証するためと、の両方において有用である。
【００７１】
したがって、そのような例示的な実施の形態では、プロセッサモジュール４２０はローカルＩＤを含む要求をＣＭＳサーバ４６０に送信してもよい。そのような要求は、例えば、「ユーザＡによるユーザＭおよびＮとのルームの生成、ローカルＩＤ  ＡＦＦ２  Ｂ９９４  Ｄ２２３  １１７８  ユーザＡのデバイス  ＸＹＺ」というフォームを有してもよい。次いで、コンテンツマネージメントシステムサーバはこれらのローカルＩＤをトラックすることによって、例えば同じコンテンツアイテムやルームに対する後の重複要求を拒否したり単に無視したりしてもよい。
【００７２】
したがって、最初にルームが生成されたときに、それに割り当てられたローカルＩＤが存在する。ルームを生成するためのその最初の要求がコンテンツマネージメントシステムサーバに到着するとすぐに、ＰＭは動作キューを見てそのルームに関する全ての係属中の動作を、受け付けられたグローバルルームＩＤを使用するよう更新する。しかしながら、ある実施の形態では、ポストＩＤについて、個々全てのポストは、それが既存のルームに対して生成されたものであっても、ローカルポストＩＤを有することは注意されるべきである。ポストＩＤはその特定のポストの内部でのみ使用され、したがって置換されることはない。なぜならば、それらは動作がサーバで成功するとすぐに動作と共に消えるからである。
【００７３】
しかしながら、ローカルルームＩＤはルームが生成されるとすぐに破棄されてもよい。ある実施の形態では、ＵＩモジュール４１５はそれがリスタートするまでローカルＩＤを維持してもよい。しかしながら、ＵＩモジュール４１５において次回アプリケーションがリスタートすると、ユーザデバイスはそのローカルルームＩＤについて全く知らないであろう。したがって、（ＰＭがコンテンツマネージメントシステムサーバからグローバルＩＤを受け付けると、）ＵＩモジュール４１５とプロセッサモジュール４２０との不和に対処するためにトランスレーションテーブルが存在する。例示的な実施の形態では、ＵＩモジュール４１５がコンテンツやポストやルームをそのＩＤで参照可能とすることが望ましく、その場合プロセッサモジュール４２０は必要に応じてそれらを単に翻訳すればよくなる。上述の通り、アプリケーションがリスタートすると、トランスレーションテーブルを保存する必要はなくなるかもしれない。
【００７４】
ローカルＩＤの他の興味のある側面すなわちプッシュ通知に関する側面があることは注意されるべきである。プッシュ通知はｉＰｈｏｎｅ（登録商標）で一般に使用されているものであり、サーバはユーザにメッセージを送り、該メッセージは小さなポップアップメッセージや通知として現われる。それはユーザにアプリケーションを立ち上げさせることもある。これは例えば、ユーザがＣＮＮやザウェザーチャネル（登録商標）などから電子メールやアラートを受け、ポップアップや通知をタップして関連するウェブサイトに行くようなことである。本発明のコンテキストでは、そのようなプッシュ通知は基本的にＣＭＳサーバ４６０とＵＩモジュール４１５との間の接続として使用されてもよい。その接続はユーザデバイスのプロセッサモジュール４２０によって仲介されない。以下は例示的シナリオである。ユーザが自己のｉＰｈｏｎｅ（登録商標）で実行されるコンテンツマネージメントアプリケーションでルームを生成した場合、ＵＩモジュールはそのルームのローカルＩＤをメモリに格納する。サーバがそのルームのグローバルＩＤを生成した後、ｉＰｈｏｎｅ（登録商標）のプロセッサモジュールがまだコンテンツマネージメントシステムサーバからメッセージの返信を受けていない場合、かつ次の数分の間にだれかがそのルームに応答した場合、コンテンツマネージメントシステムサーバはその応答を見ると、元のユーザのｉＰｈｏｎｅ（登録商標）にプッシュ通知を送信してもよく、そのプッシュ通知はそのルームのグローバルＩＤまたはその抽象化物またはそのコンテンツへのリンクを有してもよい。これらの通知がどれくらい大きくなれるかについては非常に厳しい制限があるので、一般にローカルＩＤをも含めるのに十分な余地はない。    
【００７５】
したがって、コンテンツマネージメントシステムサーバは遠隔ＩＤを送信してもよい。なぜならば、それは、他のルームのメンバからのポストが既にサーバに到達している限り、皆にとって便利だからである。したがって、これは、遠隔ＩＤがプロセッサモジュールを通過すること無く急いでＵＩモジュールに戻ることができる方法である。
【００７６】
図５：ルームアプリケーション内の例示的な処理の流れ
図５を参照すると、本発明の例示的な実施の形態に係る例示的な処理の流れが示される。処理の流れは開始で始まり、ステップ５１０に進む。そこでは、ユーザＡは写真をアップロードし、ユーザデバイス上でそれをユーザＭおよびユーザＮと共有する。または例えばユーザＡは既存の写真をユーザＭおよびＮと共有する。この機能は図３の３１０と類似しており、複数のオブジェクトを生成する。複数のオブジェクトはコンテンツマネージメントシステムによって特定される必要があり、その結果それらのオブジェクトは実装または実行可能となる。例えば、ユーザＡが写真をアップロードするとき、その者は識別子が割り当てられなければならない新たなコンテンツアイテムを生成する。ユーザがさらにそれを２人の他のユーザ、例えばユーザＭおよびユーザＮ、と共有するとき、上述およびルームアプリケーションで説明した通りルームが生成される。ルームにはＩＤが割り当てられる必要があり、そして実装される。「実装」により、ルームがコンテンツマネージメントシステム上のユーザのアカウント内に現われることが分かる。あるいはまた、ユーザが既存の写真をユーザＭおよびＮと共有するのみである場合、写真は既にＩＤ、表面上はグローバルＩＤ、を有しており、新たなそれを生成する理由はないから、このユーザアクションで生成されるのはルームのみである。
【００７７】
しかしながら、この処理は実際は多くのステップを含む。ルームが生成されねばならず、それにＩＤ（すなわち、「ルームＩＤ」）が割り当てられる。加えて、例えばルームアプリケーションで説明した通り、（ｉ）最初にコンテンツアイテムをルームのメンバと共有することにより、または（ｉｉ）後にコンテンツアイテムを既存のルーム内で共有することにより、ルームに置かれた任意のコンテンツアイテムについて、そのコンテンツアイテムのコピーを生成し、別個のデータベースに格納しなければならない。同時に、共有元のアカウントに原本を格納しなければならない。それが変更されないようにするためである。これはルームのいくつかの例示的な実施の形態のプロトコルであり、ルームアプリケーションでより十分に説明される。写真やコンテンツアイテムの別個のコピーを生成することに加えて、それはレコード内でルームと関連付けられてもよい。該レコードは、ルーム内の全てのアイテムおよびメンバに関する情報と、それらのコンテンツアイテムに関するルーム内でのメンバによる相互作用と、を保持する。例えば、ある例示的な実施の形態では、ルームのメンバは、（ｉ）コンテンツアイテムに関するメッセージをポストし、（ｉｉ）自身のアカウントにコンテンツアイテムをコピーし、かつ（ｉｉｉ）望まれる場合に他のタスクを実行してもよい。それらのそれぞれについて、関与するオブジェクトの識別子と関与するルームの識別子とを参照するインストラクションがユーザデバイス上で発行されるであろう。
【００７８】
処理の流れはステップ５１０から分岐し、ステップ５２０および５２５に並行して進む。この分岐は、ネットワークへの接続が遮断されている又は断続的である場合であっても、ユーザデバイス上のシームレスな相互作用を容易にする、本発明の例示的な実施の形態に係る新規な機能を説明するものである。５２０を参照すると、ユーザデバイスのプロセッサモジュールは写真のグローバルＩＤを要求し、ステップ５１０での共有により生成された「ＡＭＮルーム」のグローバルＩＤを要求する。これは図３の３２０と十分に類似する。しかしながら、並行して、および遅延や待ち期間無く（すなわち同時に）、５２５において、プロセッサモジュールはローカルＩＤを写真およびＡＭＮルームに割り当てる。これにより、ルームと同様、写真は、コンテンツマネージメントシステムサーバによって正式に認識されてなかったとしても、ユーザデバイスにおいて「存在（ｅｘｉｓｔ）」することができる。さらに、この並列処理は５１０におけるユーザアクションが発生すると直ぐに始まってもよい。これにより、遅延を回避し、シームレスなローカル相互作用を生成し、それをユーザに感じさせることができる。
【００７９】
処理の流れはステップ５２０および５２５からステップ５３０へと進み、そこではプロセッサは５２５で生成された各ローカルＩＤをルックアップテーブルやトランスレーションテーブルなどに格納する。それらのテーブルは、接続が回復するとコンテンツマネージメントシステムサーバから受け付けることが想定されている対応するグローバルＩＤのそれぞれのためのスペースを有する。例えばトランスレーションテーブル、データベースレコード、又は、何らかの他の便利で論理的な関連であって、高速かつ容易にグローバルＩＤ‐いったんコンテンツマネージメントシステムのサーバから受信すると‐とステップ５２５において生成されたローカルＩＤとをマッチするための後続処理を可能にする論理的な関連、などの任意のデータ構造が、ルックアップテーブルの代わりに使用されてもよい。
【００８０】
処理の流れはステップ５３０から再び分岐し、一方の経路はグローバルＩＤを扱い、他方の経路はローカルＩＤを扱う。したがって、ステップ５４０において、ＵＩモジュールは写真およびＡＭＮルームのそれぞれについてリスナを登録する。この点で、ステップ５４０は図３のステップ３３０と類似する。しかしながら、並行して５４５では、プロセッサモジュールは（ｉ）写真をユーザのアカウントに追加し、（ｉｉ）ＡＭＮルームを生成し、かつ（ｉｉｉ）写真をＡＭＮルームに格納する。これらは全てローカルＩＤを使用する。ここで説明される写真のアカウントへの追加は、写真が生成されるとすぐに、それが操作される前にサーバがグローバルＩＤを返送するのを待つこと無く、ユーザのアカウント内で写真を表示することを暗示する。
【００８１】
同様に、ルームアプリケーションで示されたように、ＡＭＮルームがコンテンツマネージメントシステムサーバの観点からはまだ「存在」しないにもかかわらず、ＡＭＮルームはユーザのコンテンツマネージメントシステムアプリケーション内で表示されてもよい。ここで、留意すべき重要なことは、ユーザＡによって生成されたＡＭＮルームはユーザＡのユーザデバイス上で表示されることであり、これは同様なＡＭＮルームがユーザＭまたはユーザＮによって既に、例えば自身の写真をユーザＡおよびＮまたはユーザＡおよびＭと共有することによって生成されている場合であってもそうである。また事情次第では、コンテンツマネージメントシステムサーバの観点から他の「ＡＭＮルーム」が既に存在することである。言い換えると、並列ＡＭＮルームがユーザＡの、ユーザＭのおよびユーザＮのユーザデバイスのそれぞれにおいて現われうる。しかしながら、それらのうちのひとつのみがコンテンツマネージメントシステムサーバによって認識されているか認識され、最終的にはグローバルＩＤが割り当てられるであろう。
【００８２】
処理の流れはステップ５４０からステップ５５０へと進み、そこではユーザデバイスのプロセッサモジュールのデルタスレッドは写真およびＡＭＮルームのそれぞれについてグローバルＩＤを受け付け、ルックアップテーブルにおいてそれらを対応するローカルＩＤに関連付ける。例えば、ルックアップテーブルの各ローカルＩＤに対して、対応するグローバルＩＤが関連付けられる。これは、例えば、ユーザデバイスがグローバルＩＤを要求するときにローカルＩＤやそれへの参照を含めることで達成可能である。その結果、グローバルＩＤがサーバから返ってきたときには、それがどのローカルＩＤと対応するかが知られていることとなる。また、これにより、ユーザデバイスがステップ５２０の同じリクエストを繰り返し再送信し、かつサーバからの応答を受信しなかった場合に、複数のグローバルＩＤが誤って割り当てられることを防ぐことができる。これは、例えば、ネットワーク遅延が発生したりユーザデバイスのクラッシュが発生し、そのクラッシュの後にキャッシュ等からユーザデバイスによって要求が再送された場合に生じうる。あるいはまた、例えば、（ステップ５２０において）サーバに送信されたグローバルＩＤの要求は、サーバが重複した要求を除去できるように、動作又はインストラクション番号又は他の一意の識別子を含んでもよい。
【００８３】
同様に、図５の右側において、処理の流れはステップ５４５からステップ５５５へと進み、そこではユーザデバイスは、写真ＩＤやルームＩＤや他のものであれ適切なローカルＩＤを使用して、写真やルームを含む動作キュー内の全ての動作を参照する。これは、ユーザＡが、その者が望む限り、写真および新たに生成されたルームの両方を操作し、動かし、かつそれらと相互作用し続けることができることを意味する。写真が関与する全ての相互作用、例えば写真にメッセージを添えたり「いいね（ｌｉｋｅ）」インジケータをアクチベートしたりすることや、他の任意の相互作用、例えば写真をルームのメンバでない他の者と共有すること、は、ユーザデバイスによって、写真のローカルＩＤを使用して参照される。同様に、ユーザが今度は追加的な写真を、それらが既に自己のアカウントにアップロードされたか否かにかかわらず、ルームＡＭＮに追加すると決定した場合、それらの写真がまだローカルＩＤを有していない場合は、それらの写真の全てにローカルＩＤが与えられ、それらの写真は、ステップ５２５で割り当てられたルームのローカルルームＩＤを使用してルームＡＭＮと関連付けられるであろう。したがって、ユーザデバイスが接続されていない期間の長さに依存して、どれだけ多くのオブジェクトが生成され、それらのオブジェクトとの相互作用を要求するどれだけ多くのインストラクションがキューに入り、それら全ては唯一の利用可能なＩＤ、すなわちステップ５２５で割り当てられたローカルＩＤ、を使用してなされるかを、容易に想像することができる。
【００８４】
処理の流れはステップ５５０および５５５からステップ５６０で再度統合され、そこではプロセッサモジュールは今やステップ５５０でグローバルＩＤを受け取っているので、キュー内の動作の各ローカルＩＤを対応するグローバルＩＤで置き換え、これらのアイテムのそれぞれがＵＩにおいて登録リスナを有している限り、グローバルＩＤをＵＩにプッシュする。しかしながら、上述の通り、プロセッサモジュールにて登録リスナのないグローバルＩＤが受け付けられた場合、（それが特定するアイテムはユーザに表示されることを想定されていないので）そのグローバルＩＤをＵＩモジュールにプッシュする必要はなく、したがって、種々の例示的な実施の形態では、それはＵＩにプッシュされないであろう。したがって、ユーザＡのアカウントに現われるコンテンツアイテムや、ルームにコピーされルームと関連付けられたコンテンツアイテムや、上記の任意のものは全て、以前はユーザデバイスにおいてローカルＩＤのみで参照可能であった。そのようなコンテンツアイテムを参照するために使用されている全てのローカルＩＤは、今やそのローカルＩＤが新たに取得されたグローバルＩＤで置き換えられるよう処理され、その結果、ユーザデバイスのローカル状態はサーバの状態と同期されうる。
【００８５】
処理の流れはステップ５６０からステップ５７０へと進む。ここでは、処理は、ユーザがさらなる写真を自己のアカウントに追加したか、または他の共有を要求したか（すなわち、追加されたコンテンツアイテムや追加されたルームやルームへのコンテンツの追加やキューへのインストラクションの追加があるか）を尋ねてもよい。ＹＥＳの場合、処理の流れはステップ５１０に戻り、そこでは、写真の場合、写真がまだユーザのアカウントの一部でないならその写真がアップロードされ、共有の場合、他のユーザとの共有は銘記され、それらの共有の結果として生成される必要があるルームが生成される。５７０においてノーである場合、処理の流れは終了する。
【００８６】
なお、図５の処理の流れは、単なる説明であって、コンテンツマネージメントシステムでＩＤ番号が割り当てられ得る、任意のコンテンツアイテム、データ構造、メッセージ又はそれとの相互作用に等価に適用されることを注意しておく。
【００８７】
図６は、様々な実施の形態に従う例示的なシステムを示す。ある実施の形態では、図６のシステム６００は、システム１００の要素をより細かいレベル（例えばモジュール、アプリケーション等）で表わすことを除き、図１のシステム１００と実質的に類似し得る。
【００８８】
ある実施の形態では、ユーザデバイス１０２は、ユーザデバイス１０２上のコンテンツアイテムシステム１０８ａ及び１０８ｂ（まとめると１０８）内にローカルに蓄積されたコンテンツアイテム１１０ａ及び１１０ｂ（まとめると１１０）、及び／又はコンテンツマネージメントシステム１０４（例えばデータストア１１８）上に離れて蓄積されている等のコンテンツアイテムを、生成し、アクセスし、修正し、及び管理するために使用され得る。例えば、ユーザデバイス１０２ａは、コンテンツマネージメントシステム１０４のデータストア１１８に離れて蓄積されているコンテンツアイテム１１０ｂにアクセスし得、ユーザデバイス１０２ａ上のコンテンツアイテムシステム１０８ａ内にコンテンツアイテム１１０ｂをローカルに蓄積する場合もしない場合もある。引き続きこの例では、ユーザデバイス１０２ａは、コンテンツアイテム１１０ｂを、一時的に、ユーザデバイス１０２ａ上のキャッシュ内にローカルに蓄積し、コンテンツアイテム１１０ｂの版（ｒｅｖｉｓｉｏｎｓ）を生成し、コンテンツアイテム１１０ｂの版は通信されてコンテンツマネージメントシステム１０４のデータストア１１８に蓄積され得る。オプションとして、コンテンツアイテム１１０ａのローカルコピーはユーザデバイス１０２ａに蓄積され得る。ある実施の形態では、データストア１１８は、コンテンツアイテムの１つ以上のコレクション１３２を含み得る。例えば、コレクション１３２は、類似する属性（例えばメタデータ）を有する、及び／又は類似のコンテンツを含む１つ以上のコンテンツアイテムを含み得る。
【００８９】
ある実施形態では、ユーザデバイス１０２は、デジタル画像及び／又はビデオを撮影し記録するためのカメラ１３８（例えば１３８ａ及び１３８ｂ）を含み得る。ユーザデバイス１０２は、画像などのコンテンツアイテムをカメラ１３８を使用して取得、記録および／または格納してもよい。例えば、カメラ１３８は画像を撮影及び記録し、画像をメタデータと共に蓄積し得る。メタデータは、以下の生成時のタイムスタンプ、ユーザの位置情報、方向、回転、タイトル及び／又は任意の他の属性又は撮影された画像に関連するデータを含みうるが、これらに限らない。メタデータの値は、属性１１２として、名前と値の組、タグ値の組、及び／又は任意の他のこれらの方法または組み合わせを蓄積して、メタデータとコンテンツアイテムとを関連付けてメタデータのタイプを容易に特定する。ある実施形態では、属性１１２は、これに限らないが、Ｅｘｃｈａｎｇｅａｂｌｅ  Ｉｍａｇｅ  Ｆｉｌｅ  Ｆｏｒｍａｔ（「Ｅｘｉｆ」）、ＪＰＥＧ  Ｆｉｌｅ  Ｉｎｔｅｒｃｈａｎｇｅ  Ｆｏｒｍａｔ  （Ｊｆｉｆ）、及び／又は他の標準を含む、特定の標準によって定義されたタグと値の組であり得る。
【００９０】
ある実施の形態では、ユーザデバイス１０２は、時刻標準化モジュール１４６を含み得、コンテンツマネージメントシステム１０４は、時刻標準化モジュール１４８を含み得る。時刻標準化モジュール１４６（例えば１４６ａと１４６ｂ）は、コンテンツアイテムと共に蓄積される日時を標準化するために用いられ得る。時刻標準化モジュール１４６、対応する時刻標準化モジュール１４８及び／又は任意のこれらの組み合わせは、蓄積されるコンテンツアイテムの日時を標準化するために用いられる。標準化された日時は、コンテンツアイテムを、ソート、グループ化、比較の実行、基本的な数式の実行、及び／又はクラスタ形成するために用いられる。
【００９１】
ある実施の形態では、ユーザデバイス１０２は、組織化モジュール１３６を含み得、コンテンツマネージメントシステム１０４は組織化モジュール１４０を含み得る。組織化モジュール１３６（例えば１３６ａと１３６ｂ）は、コンテンツアイテムをコンテンツアイテムのクラスタやコレクションに組織化するため、コンテンツアイテムを組織化して、ユーザインターフェースの表示のためのコンテンツアイテムのサンプリングを提供するため、及び／又は表示のための組織化されたコンテンツアイテムを検索するために使用され得る。組織化モジュール１３６は、任意のクラスタリングアルゴリズムを用い得る。組織化モジュール１３６は、ユーザデバイス１０２のユーザインターフェースの表示のためのコンテンツアイテムやコンテンツマネージメントシステム１０４のコンテンツアイテムを組織化するために、クラスタのための類似するコンテンツアイテムを特定するために用いられ得る。様々な類似性の規則に従う各コンテンツアイテム間の類似性の情報を具体化する１つ以上の数値的表現を生成するために、類似性の規則が定義され得る。組織化モジュール１３６は、コンテンツアイテムをクラスタ化するために、コンテンツアイテム間の類似性の参照として数値的表現を用い得る。
【００９２】
ある実施形態では、コンテンツアイテムはクラスタに組織化されて、検索要求に応じた類似のコンテンツの検索を援助し得る。例えば、組織化モジュール１３６ａは、２つの画像が類似することを特定し得、これらの画像を共に１つのクラスタにグループ化し得る。組織化モジュール１３６ａは、独立して、及び／又は対応する組織化モジュール（例えば１４０及び／又は１３６ｂ）と共同してクラスタを決定するために、コンテンツアイテムを処理し得る。ある実施の形態では、組織化モジュール１３６ａは、対応する組織化モジュール（例えば１４０及び／又は１３６ｂ）と特定したクラスタのみを表示のために提供し得る。この例を続けると、クラスタを決定するためのコンテンツアイテムの処理は、新たなコンテンツアイテム及び／又は新たな類似性の規則を受け取る際に実行され得る繰り返し処理であり得る。
【００９３】
ある実施の形態では、ユーザデバイス１０２ａは分類モジュール１５０ａを含んでもよく、ユーザデバイス１０２ｂは分類モジュール１５０ｂ（分類モジュールを１５０と総称する）を含んでもよく、それらの分類モジュールを独立して使用するか、コンテンツマネージメントシステム１０４に含まれる分類モジュール１５２と組み合わせて使用するか、および／またはそれらの任意の組み合わせを行うことで、コンテンツアイテムを分類し、コンテンツアイテムを修正し、および／または画像を分類してもよい。例えば、分類モジュール１５０及び／又は１５２は、画像が文章を含むかを判定し、含む場合に蓄積される文章の種類を判定するために用いられ得る。コンテンツアイテムの修正は、コンテンツアイテムの表示を改善（画像内の文章の表示を修正）するために、コンテンツアイテムを訂正し、更なる変換を実行し、及び／又はコンテンツアイテムをクロップし得る。
【００９４】
ある実施の形態では、ユーザデバイス１０２ａは、検索モジュール１４２ａを含み得、一方、ユーザデバイス１０２ｂは、合わせて検索モジュール１４２として参照され得る、検索モジュール１４２ｂを含み得る。コンテンツマネージメントシステム１０４は、対応する検索モジュール１４４を提供し得る。検索モジュール１４２及び１４４は、ユーザデバイス１０２及び／又はコンテンツマネージメントシステム１０４の両方に置かれたコンテンツアイテムの検索をサポート可能であり得る。１つ以上のコンテンツアイテムを要求する検索リクエストは、検索モジュール１４２及び／又は１４４によって受け取られ得る。ある実施形態では、検索は、マネージメントサービスの提供の際にコンテンツアイテムに割り当てられるメタデータ及び／又は属性を検索することによって処理され得る。例えば、コンテンツアイテムと共に蓄積されたクラスタマーカは日付によってコンテンツアイテムを発見するために用いられ得る。この特定のシナリオでは、クラスタマーカは、クラスタマーカと共に蓄積されたコンテンツアイテムの大まかな時刻、平均時間を示し得、このマーカは、特定のクラスタマーカを有するコンテンツのクラスタを検索し、検索結果を返すスピードを増加させるために用いられ得る。
【００９５】
コンテンツマネージメントシステム１０４によって管理されるコンテンツアイテム１１０は、それぞれのユーザデバイス１０２のコンテンツアイテムシステム１０８にローカルに蓄積され得、及び／又はコンテンツマネージメントシステム１０４のデータストア１１８に離れて蓄積（例えばデータストア１１８内のコンテンツアイテム１３４）され得る。コンテンツマネージメントシステム１０４は、管理するコンテンツアイテムの同期処理を提供し得る。属性１１２ａ及び１１２ｂ（合わせると１１２）または他のメタデータも、コンテンツアイテム１１０と共に蓄積され得る。例えば、特定の属性は、コンテンツマネージメントシステム１０４によって管理及び／又は同期処理されるユーザデバイス１０２にローカルに蓄積されたコンテンツアイテムを追跡するために、コンテンツアイテムと共に蓄積され得る。ある実施形態では、属性１１２は、拡張された属性、リソースフォーク、又は、コンテンツアイテムシステム１０８等のコンテンツアイテムシステムによって解釈されないコンテンツアイテムと共にメタデータを蓄積可能な任意の他の実装を用いて実装され得る。特に、属性１１２ａ及び１１２ｂは、コンテンツアイテムのためのコンテンツの識別子であり得る。例えば、コンテンツの識別子は、コンテンツアイテムを識別する、ユニーク又はほぼユニークな識別子（例えば番号や文字列）であり得る。コンテンツアイテムと共にコンテンツ識別子を蓄積することにより、コンテンツアイテムを追跡し得る。例えば、ユーザがコンテンツアイテムシステム１０８階層の中でコンテンツアイテムを他の場所に動かした場合および／またはユーザがコンテンツアイテムを変更した場合、コンテンツアイテムはユーザデバイス１０２のコンテンツアイテムシステム１０８の中で依然として特定可能である。コンテンツ識別子で特定されたコンテンツアイテムに対する任意の変更又は修正は、コンテンツマネージメントシステム１０４によって提供される同期及び／又はバージョン管理サービスのためにアップロード又は提供され得る。
【００９６】
スタンドアローンのコンテンツマネージメントアプリケーション１１４ａと１１４ｂ（合わせると１１４）、クライアントアプリケーション、及び／又はサードパーティアプリケーションは、ユーザデバイス１０２ａ及び１０２ｂ上でそれぞれ実行されて、ユーザがコンテンツマネージメントシステム１０４と相互作用するユーザインターフェースを提供する。コンテンツマネージメントアプリケーション１１４は、コンテンツマネージメントインターフェースモジュール１５４と共に提供される、ユーザデバイス１０２のための機能とアクセス可能なモジュールを外部に提供し得る。ウェブブラウザ１１６ａと１１６ｂ（合わせると１１６）は、コンテンツマネージメントインターフェースモジュール１５４と共に外部に提供され、コンテンツマネージメント１０４の機能を提供し得るクライアントアプリケーションのウェブページフロントエンドを表示するために用いられる。
【００９７】
コンテンツマネージメントシステム１０４は、ユーザが認証されたアカウントを使ってコンテンツを蓄積できるようにし、また、検索、修正、ブラウズ、同期及び／又は他のアカウントにコンテンツを共有するようなマネージメントタスクを実行する。コンテンツマネージメントシステム１０４の様々な実施形態は、コンテンツマネージメントインターフェースモジュール１５４、アカウントマネージメントモジュール１２０、同期モジュール１２２、コレクションモジュール１２４、共有モジュール１２６、ファイルシステム抽象化１２８、データストア１１８、及び組織化モジュール１４０を含む要素を有し得るが、これらに限らない。コンテンツマネージメントインターフェースモジュール１５４は、コンテンツマネージメントシステム１０４のサーバサイド又はバックエンドの機能／性能を外部に提供し得る。例えば、ユーザデバイス１０２の対応するユーザインターフェース（例えばスタンドアローンのアプリケーション、クライアントアプリケーション等）は、コンテンツマネージメントインターフェースモジュール１５４を用いて実行され、ユーザがコンテンツマネージメントシステム１０４によって提供される機能を実行できるようにし得る。
【００９８】
ユーザデバイス１０２に表示されるユーザインターフェースは、アカウントマネージメントモジュール１２０を用いて、ユーザがアカウントを生成し、及び／又はユーザがアカウントを使用することを認証するために用いられ得る。アカウントマネージメントモジュール１２０は、ユーザ及び／又はユーザデバイス１０２によるアカウントの使用を、ユーザ名／パスワード、デバイス識別子、及び／又は任意の他の認証方法を用いて認証する機能を提供し得る。アカウント情報１３０は、データストア１１８内でアカウントのために管理され得る。アカウント情報は、個人情報（例えば、電子メールアドレス又はユーザ名）、アカウント管理情報（例えば、「無料」や「有料」等のアカウントの種類）、使用情報（コンテンツアイテムの編集履歴）、許可された最大のストレージ空間、使用済みストレージ空間、コンテンツの蓄積場所、セキュリティ設定、個人の構成設定、コンテンツの共有データ等を含み得るが、これらに限らない。コンテンツマネージメントシステム１０４のストレージ空間の量は、予約され、分配され、確保され、蓄積され、及び／又は認証されたアカウントによりアクセスされ得る。アカウントは、データストア１１８内のそのアカウント用のコンテンツアイテム１３４及び／又はコンテンツアイテム１１０にアクセスするために、及び／又は、コンテンツアイテム１３４及び／又はコンテンツアイテム１１０を、他のアカウントから共有されたアカウントからアクセス可能にするために用いられ得る。ある実施の形態では、アカウントマネージメントモジュール１２０はコンテンツマネージメントシステム１０４の任意の数の他のモジュールと相互作用してもよい。
【００９９】
ある実施の形態では、コンテンツマネージメントシステム１０４のアカウントは、アカウントによって認証された１つ以上のユーザデバイス１０２から書類、テキストアイテム、音声アイテム、ビデオアイテム等のコンテンツを蓄積するために用いられ得る。コンテンツはまた、異なる振る舞いである、又はコンテンツアイテムを互いにグループ化する他のメカニズムを用いた、様々な種類のコレクションを含み得る。例えば、アカウントは、任意のユーザからアクセス可能にした公開コレクションを含み得る。ある実施形態では、公開コレクションはウェブでアクセス可能なアドレスに割り当てられ得る。このウェブでアクセス可能なアドレスへのリンクは、公開されたフォルダのコンテンツにアクセスするために用いられ得る。他の例では、アカウントは、写真及び／又はビデオを蓄積し得る写真コレクションを含み得、写真及び／又はビデオの目的に合わせた特定の属性及び行為を提供し得る。アカウントはまた、音声アイテムを再生し、他の音声に関連する行為を実行する機能を提供する、音声コレクションを含み得る。アカウントはさらに、特定の目的のコレクションを含み得る。アカウントはまた、複数のユーザアカウントとリンクし、これらのアカウントから利用可能な共有コレクション又はグループコレクションを含み得る。ある実施形態では、共有コレクションへのアクセスは、共有コレクションにアクセスすることが可能な異なるユーザに対して異なり得る。
【０１００】
コンテンツアイテム１１０及び／又はコンテンツアイテム１３４は、データストア１１８に蓄積され得る。ある実施形態では、データストア１１８は、ストレージデバイス、複数のストレージデバイス、又はサーバであり得る。或いは、データストア１１８は、１つ以上の通信ネットワークを介してアクセス可能なクラウドストレージプロバイダ又はネットワークストレージであり得る。コンテンツマネージメントシステム１０４は、コンテンツアイテムのシステム抽象化１２８（例えば、コンテンツアイテムのシステムデータベース抽象化レイヤ）を用いて、複雑さや詳細をユーザデバイス１０２から見えないようにして、コンテンツマネージメントシステム１０４によって蓄積されたコンテンツアイテムがどこにあるのかをユーザデバイス１０２が正確に知る必要がないようにし得る。実施形態は、ユーザデバイス１０２に現れるように、コンテンツアイテムを同一のコレクションに階層的に蓄積し得る。或いは、コンテンツマネージメントシステム１０４は、様々な順番、配置、及び／又は階層でコンテンツアイテムを蓄積し得る。コンテンツマネージメントシステム１４０は、コンテンツアイテムを、ネットワークアクセス可能ストレージ（ＳＡＮ）デバイス、ｒｅｄｕｎｄａｎｔ  ａｒｒａｙ  ｏｆ  ｉｎｅｘｐｅｎｓｉｖｅ  ｄｉｓｋｓ（ＲＡＩＤ）等に蓄積し得る。コンテンツマネージメントシステム１０４は、コンテンツアイテムを、ＦＡＴ、ＦＡＴ３２、ＮＴＦＳ、ＥＸＴ２、ＥＸＴ３、ＥＸＴ４、ＲｅｉｓｅｒＦＳ、  ＢＴＲＦＳ等の１つ以上のパーティションタイプを用いて蓄積し得る。
【０１０１】
データストア１１８はまた、コンテンツアイテム、コンテンツアイテムの種類、及び様々なアカウント、フォルダ、コレクション、又はグループとのコンテンツアイテムの関係を表すメタデータを蓄積し得る。このコンテンツアイテムのためのメタデータは、コンテンツアイテムの一部として、及び／又は別々に蓄積され得る。メタデータは、オブジェクト指向データベース、リレーショナルデータベース、コンテンツアイテムシステム、又は任意の他のデータのコレクションに蓄積され得る。ある実施形態では、データストア１１８に蓄積された各コンテンツアイテムは、システム全体にわたってユニークな識別子が割り当てられ得る。
【０１０２】
ある実施形態では、データストア１１８は、コンテンツアイテムの複製やコンテンツアイテムのチャンクを特定することにより、要求されるストレージ空間の量を低下させ得る。複数のコピーを蓄積する代わりに、データストア１１８は、コンテンツアイテム１３４の１つのコピーを蓄積し、１つのコピーと複製をつなぐためのポインタや他の機構を使用し得る。同様に、データストア１１８は、より効率的にコンテンツアイテム１３４を蓄積すると共に、コンテンツアイテムの変化、コンテンツアイテムの異なるバージョン（バージョンツリーの分岐を含む）、及び変更履歴を追跡するコンテンツアイテムバージョン管理を用いることによって、アンドゥ（Ｕｎｄｏ）操作の機能を提供し得る。変更履歴は、元のコンテンツアイテムのバージョンにいつ適用したか、変更されたコンテンツアイテムのバージョンをいつ生成したかの変更の組を含み得る。
【０１０３】
コンテンツマネージメントシステム１０４は、１つ以上のユーザデバイス１０２からのコンテンツの自動同期処理をサポートするように構成され得る。同期処理は、プラットフォーム非依存であり得る。すなわち、コンテンツは、種類、機能、オペレーティングシステム等の異なる、複数のユーザデバイス１０２にわたって同期処理され得る。例えば、ユーザデバイス１０２ａは、コンテンツマネージメントシステム１０４の同期モジュール１２２を介して、ユーザデバイス１０２のコンテンツアイテムシステム１０８内のコンテンツを、ユーザアカウントに関連付けられたコンテンツと同期するクライアントソフトウェアを含み得る。ある場合では、クライアントソフトウェアは、新規の、削除された、修正された、コピーされた又は移動されたコンテンツアイテムやフォルダ等のような、指定されたコレクション及びそのサブコレクション内のコンテンツに対する任意の変更と同期し得る。既存のコンテンツマネージメントシステムと結合するクライアントソフトウェアのある例では、ユーザはローカルフォルダのコンテンツを直接操作し得る一方で、バックグラウンドプロセスが変更のためにローカルコンテンツを監視し、コンテンツマネージメントシステム１０４に変更を同期する。ある実施形態では、バックグラウンドプロセスは、コンテンツマネージメントシステム１０４において更新されたコンテンツを特定し、ローカルコレクションに変更を同期する。クライアントソフトウェアは、同期処理の動作の通知を提供し得、コンテンツマネージメントシステムのアプリケーション内でコンテンツ状態の表示を直接提供し得る。ある実施形態では、ユーザデバイス１０２は利用可能なネットワーク接続を有し得ない。このシナリオでは、クライアントソフトウェアは、コンテンツアイテムの変更に対してリンクされたコレクションを監視し、ネットワーク接続が可能になった際のコンテンツマネージメントシステム１０４への後の同期のために、これらの変更をキューに入れ得る。同様に、ユーザは、コンテンツマネージメントシステム１０４との同期を手動で停止又は一時停止し得る。
【０１０４】
ユーザはまた、コンテンツマネージメントインターフェースモジュール１５４によって生成及び提供されたウェブインターフェースを介してコンテンツを視認し又は操作し得る。例えば、ユーザはコンテンツマネージメントシステム１０４によって提供されたウェブアドレスへウェブブラウザ内で移動し得る。コンテンツアイテムの新たなバージョンをアップロードするなどの、ウェブインターフェースを介してなされたデータストア１１８のコンテンツへの変更や更新は、ユーザアカウントに関連付けられた他のユーザデバイス１０２へ逆に伝達され得る。例えば、複数のユーザデバイス１０２のそれぞれはそのクライアントソフトウェアを用いて、１つのアカウントと関連付けられており、アカウント内のコンテンツアイテムはユーザデバイス１０２のそれぞれとの間で同期し得る。
【０１０５】
コンテンツマネージメントシステム１０４は、コンテンツ及び／又はコンテンツのコレクションの公開又は非公開による共有を管理するための共有モジュール１２６を含み得る。共有モジュール１２６は、独立して、又はユーザデバイス１０２ａにある対応する共有モジュール１５２ａ及びユーザデバイス１０２ｂにある対応する共有モジュール１５２ｂ（合わせると共有モジュール１５２）と連携して、共有を管理し得る。公開によるコンテンツの共有は、コンテンツアイテム及び／又はコレクションを、コンテンツマネージメントシステム１０４を用いたネットワーク通信において任意のデバイスからアクセス可能にすることを含み得る。非公開によるコンテンツの共有は、データストア１１８内のコンテンツアイテム及び／又はコレクションを、２つ以上のユーザアカウントと結びつけて、各ユーザアカウントがコンテンツへアクセス可能にすることを含み得る。この共有は、プラットフォーム非依存で実行され得る。すなわち、コンテンツは、種類、機能、オペレーティングシステム等の異なる、複数のユーザデバイス１０２にわたって共有され得る。例えば、１つ以上の共有リンクが、共有されたコンテンツアイテムにアクセスするためにユーザ又はユーザのコンタクトに提供され得る。コンテンツはまた、異なるユーザアカウントの種類にわたって共有され得る。特に、共有モジュール１２６がコレクションモジュール１２４と共に用いられることにより、仮想的なコレクションを他のユーザ又はユーザアカウントと共有することができ得る。仮想コレクションは、ユーザデバイス１０２のコンテンツアイテムシステム１０８内の様々な場所に蓄積され得る、及び／又はコンテンツマネージメントシステム１０４に離れて蓄積され得るコンテンツ識別子のコレクションであり得る。
【０１０６】
ある実施形態では、コンテンツマネージメントシステムを用いた、アカウントのための仮想コレクションは、コンテンツアイテムのための１つ以上の識別子のコレクションに対応し得る（例えば、ストレージのコンテンツアイテムを特定する）。仮想コレクションは、コレクションモジュール１２４を用いて、コンテンツマネージメントシステムによって蓄積され及び／又は管理された既存のコンテンツアイテムから選択され、データストレージにある既存のコンテンツアイテムと仮想コレクションを関連付ける（例えば、蓄積場所、コンテンツ識別子、又は蓄積されたコンテンツアイテムのアドレスを関連付ける）ことにより生成され得る。既存のコンテンツアイテムと仮想コレクションを関連付けることにより、コンテンツアイテムは、コンテンツアイテムをコレクション内に置くために、データストレージ内の他の場所にコンテンツアイテムを蓄積する（例えばコンテンツアイテムをディレクトリにコピー及びペーストする）必要がない仮想コレクションの一部として指定され得る。
【０１０７】
ある実施形態では、コンテンツマネージメントシステム１０４は、各エントリや行がデータストア１１８の各コンテンツアイテムの場所を特定する、コンテンツアイテムのためのコンテンツディレクトリ又はデータベーステーブル／エントリを管理するように構成され得る。ある実施形態では、ユニーク又はほぼユニークな識別子がデータストア１１８に蓄積される各コンテンツアイテムのために蓄積され得る。
【０１０８】
ある実施形態では、メタデータが各コンテンツアイテムのために蓄積され得る。例えば、メタデータは、コンテンツアイテムを特定するために用いられるコンテンツのパスを含み得る。コンテンツのパスは、コンテンツアイテムの名前と、コンテンツアイテムに関連付けられたコンテンツアイテムの階層（例えば、ユーザデバイス１０２内のローカルな蓄積に対するパス）とを含み得る。コンテンツマネージメントシステム１０４は、コンテンツのパスを使用して、従来的な階層的なビューを用いたユーザインターフェースに、適切なコンテンツアイテムの階層でコンテンツアイテムを表示し得る。データストア１１８内のコンテンツアイテムの場所を特定するコンテンツのポインタもまた、コンテンツ識別子と共に蓄積され得る。例えば、コンテンツのポインタは、メモリ内のコンテンツアイテムの正確な蓄積アドレスを含み得る。ある実施形態では、コンテンツのポインタは、そのそれぞれがコンテンツアイテムの一部を含む複数の場所を指し示し得る。
【０１０９】
コンテンツのパス及びコンテンツのポインタに加えて、コンテンツアイテムのエントリ／コンテンツアイテムデータベースのデータベーステーブルの行は、コンテンツアイテムへアクセス可能なユーザアカウントを特定するユーザアカウント識別子を含み得る。ある実施形態では、複数のユーザアカウント識別子は、コンテンツアイテムが複数のユーザアカウントにわたって共有されたことを特定する１つのコンテンツエントリと関連付けられ得る。
【０１１０】
非公開によりコンテンツアイテムを共有するため、共有モジュール１２６は、コンテンツアイテムと関連付けられたコンテンツエントリ又はデータベーステーブルの行にユーザアカウント識別子を追加するように構成され得、これにより、コンテンツアイテムへの追加されたユーザアカウントのアクセスを登録する。共有モジュール１２６はまた、コンテンツアイテムへのユーザアカウントのアクセスを制限するため、コンテンツエントリ又はデータベーステーブルの行からユーザアカウント識別子を削除するように構成され得る。共有モジュール１２６はまた、仮想コレクションのためのデータベーステーブルへのユーザアカウントの追加又は削除に用いられ得る。
【０１１１】
公開によりコンテンツを共有する場合、共有モジュール１２６は、任意のブラウザが何らかの認証を要することなく、コンテンツマネージメントシステム１０４へのアクセスを可能にする、ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ（「ＵＲＬ」）等のカスタムネットワークアドレスを生成するように構成され得る。これを実現するため、共有モジュール１２６は生成されたＵＲＬにコンテンツ識別データを含めるよう構成されてもよい。このコンテンツ識別データは、要求されたコンテンツアイテムを適切に特定して返信するために後に用いられてもよい。例えば、共有モジュール１２６は、生成されたＵＲＬにユーザアカウント識別子とコンテンツのパスを含むように構成され得る。ＵＲＬの選択のうえで、ＵＲＬに含まれるコンテンツ識別子のデータは、コンテンツ識別子のデータを受信して適切なコンテンツエントリを特定し、このコンテンツエントリに関連付けられたコンテンツアイテムを返信し得る、コンテンツマネージメントシステム１０４に送信され得る。
【０１１２】
公開により仮想コレクションを共有するため、共有モジュール１２６は、任意のブラウザが何らかの認証を要することなく、コンテンツマネージメントシステム１００へのアクセスを可能にする、ｕｎｉｆｏｒｍ  ｒｅｓｏｕｒｃｅ  ｌｏｃａｔｏｒ（「ＵＲＬ」）等のカスタムネットワークアドレスを生成するように構成され得る。これを実現するため、共有モジュール１２６は生成されたＵＲＬにコレクション識別データを含めるよう構成されてもよい。このコレクション識別データは、要求されたコンテンツアイテムを適切に特定して返信するために後に用いられてもよい。例えば、共有モジュール１２６は、生成されたＵＲＬにユーザアカウント識別子とコレクション識別子を含むように構成され得る。ＵＲＬの選択の際、ＵＲＬに含まれるコンテンツ識別データはコンテンツマネージメントシステム１０４に送信されてもよく、このコンテンツマネージメントシステム１０４は受信されたコンテンツ識別データを使用して適切なコンテンツエントリ又はデータベースの行を特定し、このコンテンツエントリ又はデータベースの行に関連付けられたコンテンツアイテムを返信してもよい。
【０１１３】
ＵＲＬの生成に加えて、共有モジュール１２６はまた、コンテンツアイテムへのＵＲＬが生成されたことを記録するように構成され得る。ある実施形態では、コンテンツアイテムに関連付けられたコンテンツエントリは、コンテンツアイテムへのＵＲＬが生成されたかを示すＵＲＬフラグを含み得る。例えば、ＵＲＬフラグは、最初に０又は「偽」が設定される二値であり得、コンテンツアイテムへのＵＲＬが生成されていないことを示し得る。共有モジュール１２６は、コンテンツアイテムへのＵＲＬが生成された後にフラグの値を１又は「真」に変更するように構成され得る。
【０１１４】
ある実施形態では、共有モジュール１２６はまた、生成されたＵＲＬを非活性化するように構成され得る。例えば、各コンテンツエントリもまた、生成されたＵＲＬからの要求に応じてコンテンツが返信されるべきかを示すＵＲＬ活性フラグを含み得る。例えば、共有モジュール１２６は、ＵＲＬ活性フラグが１又は「真」に設定されている場合に生成されたリンクによって要求されたコンテンツアイテムのみを返信するように構成され得る。ＵＲＬ活性フラグの値又は二値の変更は、ＵＲＬが生成されたコンテンツアイテム又はコレクションへのアクセスを容易に制限し得る。これにより、ユーザは、コンテンツアイテムを移動したり生成されたＵＲＬを削除したりする必要なく、共有コンテンツへのアクセスを制限することができる。同様に、共有モジュール１２６は、ＵＲＬ活性フラグの値を１又は「真」に再び変更することによりＵＲＬを再活性化し得る。従って、ユーザは、新たなＵＲＬを生成する必要ななくコンテンツアイテムへのアクセスを容易に回復させる。
【０１１５】
例示的なシステム
本発明の例示的な実施形態では、Ｃ、Ｃ＋＋、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ（登録商標）、Ｐｙｔｈｏｎ、Ｒｕｂｙ、ＣｏｆｆｅｅＳｃｒｉｐｔ、ａｓｓｅｍｂｌｙ  ｌａｎｇｕａｇｅ等の任意の適切なプログラミング言語を用いて特定の実施形態のルーチンを実装し得る。手続型又はオブジェクト指向等の異なるプログラミング技術が用いられ得る。ルーチンは、１つの処理デバイス又は複数のプロセッサ上で実行し得る。ステップ、操作、コンピュータ処理は特定の順番で表され得るが、この順番は異なる特定の実施形態において変更され得る。ある特定の実施形態では、本明細書において連続的に示された複数のステップは、同時に実行され得る。
【０１１６】
特定の実施形態は、命令実行システム、装置、システム又はデバイスと共に使用するためのコンピュータ可読ストレージデバイス又は非一時的なコンピュータ可読媒体に実装され得る。特定の実施形態は、ソフトウェア又はハードウェア又は両方の組み合わせの制御ロジックの形式で実装され得る。この制御ロジックは、１つ以上のプロセッサで実行されたときに、特定の実施形態に記載されたものを実行するために動作可能であり得る。
【０１１７】
特定の実施の形態は、プログラムされた汎用デジタルコンピュータを用いて、特定用途向け集積回路、プログラマブルロジックデバイス、ＦＰＧＡ（ｆｉｅｌｄ  ｐｒｏｇｒａｍｍａｂｌｅ  ｇａｔｅ  ａｒｒａｙｓ）、光、化学、バイオ、量子又はナノ加工のシステム、コンポーネント及び機構を用いて、実装され得る。一般に、特定の実施形態の機能は、この分野で知られるあらゆる手段により実現され得る。分散化、ネットワーク化されたシステム、コンポーネント、及び／又は回路が用いられ得る。データの通信又は伝送は有線、無線又は任意の他の手段によりなされ得る。
【０１１８】
用例／図に図示された要素の１つ以上は、より分割された又は統合された方法で、又は、削除され又はある場合に動作しないものとして、特定のアプリケーションに従って有用なものとして扱われて、実装され得る。ストレージデバイス等の機械可読媒体に蓄積され得るプログラムやコードを実装して、上述した任意の方法をコンピュータに実行させることは、思想及びスコープの範囲内であり得る。
【０１１９】
この中の記載及び以下の請求項のあらゆる箇所で用いられるように、「ａ」、「ａｎ」及び「ｔｈｅ」はコンテキストが明示的に述べない限り複数の参照を含む。また、この中の記載及び以下の請求項のあらゆる箇所で用いられるように、「ｉｎ」の意味はコンテキストが明示的に述べない限り「ｉｎ」及び「ｏｎ」を含む。
【０１２０】
種々の動作モードにおける十分な数の相互作用フィーチャを可能とするユーザインターフェースをユーザに提供する方法が説明されたが、そのようなものに対して本発明の範囲および思想から逸脱すること無く多くの変更をなすことができることは理解されるべきである。この分野における当業者から見てクレームされた主題から実質的でない変更、知られていないもの又は後に考案されたものは、請求項のスコープと均等であると想定される。従って、この分野の当業者に現在明らかな代用物又は後に知られたものは、定義された要素のスコープ内であると定義され得る。本発明の記載された実施形態は、限定では無く説明の目的のために示されたものである。
【図１】
2016533609.tif 000003
【図２】
2016533609.tif 000004
【図３】
2016533609.tif 000005
【図４】
2016533609.tif 000006
【図５】
2016533609.tif 000007
【図６】
2016533609.tif 000008
【手続補正書】
【提出日】平成28年3月31日(2016.3.31)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
クライアントデバイスにおいて、ローカル識別子をコンテンツアイテムに割り当てることと、
前記クライアントデバイスにおいて、前記コンテンツアイテムとのユーザ相互作用を検出することと、
前記コンテンツアイテムとの前記ユーザ相互作用の検出に応じて、前記ローカル識別子を前記ユーザ相互作用に関連付けることと、
コンテンツマネージメントシステムへのアップロードのために、前記ユーザ相互作用をキューに入れることと、
ユーザインターフェースにおいて、前記ユーザ相互作用の前記コンテンツマネージメントシステムへのアップロードが完了する前に、前記コンテンツアイテムとの前記ユーザ相互作用のローカル表現を提示することと、
前記コンテンツアイテムに対するシステムワイドの識別子の割り当てを、前記コンテンツマネージメントシステムから受け付けることと、
前記クライアントデバイスにおいて、前記システムワイドの識別子の受け付けに応じて、前記ローカル識別子を前記システムワイドの識別子で置き換えることと、を含む方法。
【請求項２】
置き換えることはさらに、前記システムワイドの識別子を前記ユーザデバイス上のローカルキャッシュに提供することを含む請求項１に記載の方法。
【請求項３】
前記ユーザデバイスにおいて、前記コンテンツアイテムの前記ローカル識別子を生成することをさらに含む請求項１または２に記載の方法。
【請求項４】
前記ユーザ相互作用は、前記コンテンツアイテムを共有仮想空間に追加すること、前記コンテンツアイテムを前記コンテンツマネージメントシステムの少なくともひとつの他のユーザと共有すること、または前記コンテンツアイテムを変更することのうちのひとつ以上を含む請求項１から３のいずれか１項に記載の方法。
【請求項５】
前記コンテンツアイテムは、コンテンツアイテムのコレクション、メッセージ、データ構造、画像、ビデオ、またはリンクのうちのひとつ以上を含む請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記コンテンツアイテムをローカルキャッシュに登録することをさらに含み、前記ローカルキャッシュは前記コンテンツマネージメントシステムの状態を表すデータベースを含む請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記データベースは前記コンテンツマネージメントシステムの前記状態の変化を検出するスレッドを実行する請求項６に記載の方法。
【請求項８】
前記スレッドは、ユーザデバイスが前記コンテンツマネージメントシステムに接続されている限り、連続的に実行される請求項７に記載の方法。
【請求項９】
前記データベースは、前記ユーザの全ての写真、前記ユーザの全てのルーム、またはそれらのルームの全てのコンテンツのうちのひとつ以上を保持する請求項６から８のいずれか１項に記載の方法。
【請求項１０】
前記コンテンツアイテムは、
前記コンテンツマネージメントシステムの対応するデータと同期されたグローバルデータと、
ローカルで生成されたが前記コンテンツマネージメントシステムの対応するデータとはまだ同期されていないローカルデータと、を含む請求項１から９のいずれか１項に記載の方法。
【請求項１１】
前記コンテンツアイテムへの様々なアクセスレベルを有するひとつ以上のリスナにローカルキャッシュによりアクセスを提供することによって、前記ローカルキャッシュに前記コンテンツアイテムを登録することをさらに含む請求項１から５のいずれか１項に記載の方法。
【請求項１２】
ユーザデバイス上でローカルで、ひとつ以上のユーザ要求アクションを実行する機能と、
前記ひとつ以上のユーザ要求アクションのそれぞれについて、コンテンツマネージメントシステムに並列要求を送信する機能と、
全てのユーザ要求アクションの結果を、前記ユーザデバイスのユーザインターフェース内で、あたかも前記ユーザ要求アクションが前記コンテンツマネージメントシステムで実施されたかのように提示する機能と、
前記ユーザデバイスと前記コンテンツマネージメントシステムとの間のネットワーク接続性が定められたしきい値を超えると、前記ユーザ要求アクションが実施されたことの確認を前記コンテンツマネージメントシステムから受け付ける機能と、
前記受け付けられた確認に基づいて、前記ユーザデバイスの前記ユーザ要求アクションの状態を前記コンテンツマネージメントシステムの前記ユーザ要求アクションの状態に合わせる機能と、を前記ユーザデバイスに実現させるためのコンピュータプログラム。
【請求項１３】
前記ユーザデバイスはローカルキャッシュを備え、前記ローカルキャッシュは前記コンテンツマネージメントシステムの状態を表すデータベースを含む請求項１２に記載のコンピュータプログラム。
【請求項１４】
前記ユーザデバイスのデータベースは前記ユーザデバイスで実行されるスレッドによって連続的に更新され、前記スレッドは前記コンテンツマネージメントシステムの前記状態の変化を探す請求項１２または１３に記載のコンピュータプログラム。
【請求項１５】
前記並列要求は、少なくともひとつのコンテンツアイテムの追加、少なくともひとつのデータ構造の追加、少なくともひとつのコンテンツアイテムとの相互作用、または少なくともひとつのデータ構造との相互作用を検出することに応じて送信され、
前記コンピュータプログラムはさらに前記ユーザデバイスに、前記少なくともひとつのコンテンツアイテムまたは前記少なくともひとつのデータ構造のうちのひとつと関連付けられたローカル識別子を、前記並列要求と共に送信する機能を実現させる、請求項１２から１４のいずれか１項に記載のコンピュータプログラム。
【請求項１６】
確認を受け付けることはさらに、ひとつ以上のプッシュ通知を受け付けることを含む請求項１２から１５のいずれか１項に記載のコンピュータプログラム。
【請求項１７】
クライアントデバイスにおいて、ローカル識別子をコンテンツアイテムに割り当てる手段と、
前記クライアントデバイスにおいて、前記コンテンツアイテムとのユーザ相互作用を検出する手段と、  
前記コンテンツアイテムとの前記ユーザ相互作用の検出に応じて、前記ローカル識別子を前記ユーザ相互作用に関連付ける手段と、  
コンテンツマネージメントシステムへのアップロードのために、前記ユーザ相互作用をキューに入れる手段と、  
ユーザインターフェースにおいて、前記ユーザ相互作用の前記コンテンツマネージメントシステムへのアップロードが完了する前に、前記コンテンツアイテムとの前記ユーザ相互作用のローカル表現を提示する手段と、  
前記コンテンツアイテムに対するシステムワイドの識別子の割り当てを、前記コンテンツマネージメントシステムから受け付ける手段と、  
前記クライアントデバイスにおいて、前記システムワイドの識別子の受け付けに応じて、前記ローカル識別子を前記システムワイドの識別子で置き換える手段と、を備えるシステム。
【請求項１８】
前記ユーザデバイスにおいて、前記コンテンツアイテムの前記ローカル識別子を生成する手段をさらに備える請求項１７に記載のシステム。
【請求項１９】
前記コンテンツアイテムをローカルキャッシュに登録する手段をさらに備え、前記ローカルキャッシュは前記コンテンツマネージメントシステムの状態を表すデータベースを含む請求項１７または１８に記載のシステム。
【請求項２０】
前記コンテンツマネージメントシステムの状態の変化を検出するスレッドを実行する手段をさらに備える請求項１７から１９のいずれか１項に記載のシステム。
【国際調査報告】
2016533609.tif 000009
2016533609.tif 000010
2016533609.tif 000011