(57)【要約】      （修正有）【課題】共有され同期されたコンテンツアイテムを伴うネイティブアプリケーションのインタラクションについての情報を装置間で共有する方法を提供する。【解決手段】コンテンツ管理システムは、装置のクライアントアプリケーションから、コンテンツ管理システムに同期されたコンテンツアイテムに関するユーザのインタラクション情報を示すプレゼンス情報を受信する。インタラクション情報は、コンテンツアイテムとのインタラクションを行うネイティブアプリケーションのプレゼンス情報を記述するプレゼンス情報を含む。プレゼンス情報は、ネイティブアプリケーションがコンテンツアイテムを開いたか、閲覧しているか又は編集しているかを示す。さらに、コンテンツ管理システムは、プレゼンス情報を記述するプレゼンスレコードを記憶し、プレゼンスレコードを使用して、ユーザと関連付けられたプレゼンス状態を生成して伝送する。【選択図】図４
2020187759.tif 000002
【特許請求の範囲】
【請求項１】
コンテンツ管理システムが、装置のプレゼンスアプリケーションから、該装置に記憶され該コンテンツ管理システムと同期されたコンテンツアイテムと関連付けられたネイティブプロセスと関連付けられたユーザインタフェース要素とのユーザインタラクションを記述するプレゼンス情報を受信する工程と、
前記コンテンツアイテムを同期させる装置の集合であって、当該装置の集合の各装置は、該コンテンツアイテムのローカルコピーを維持し、該ローカルコピーを前記コンテンツ管理システムに記憶された前記コンテンツアイテムと同期させる、装置の集合を判定する工程と、
前記装置の集合に前記プレゼンス情報を通知する工程と
を有することを特徴とする方法。
【請求項２】
前記コンテンツアイテムを同期させる前記装置の集合における複数の装置に対して、各装置が該コンテンツアイテムを閲覧しているか否かを記述する記憶されたプレゼンス情報を維持する工程と、
前記受信したプレゼンス情報に基づいて、前記記憶されたプレゼンス情報を更新する工程と
をさらに有することを特徴とする請求項１に記載の方法。
【請求項３】
前記記憶されたプレゼンス情報は、各装置が前記コンテンツアイテムを編集しているか否かをさらに記述することを特徴とする請求項２に記載の方法。
【請求項４】
前記記憶されたプレゼンス情報は、前記プレゼンス情報と関連付けられたユーザインタフェース要素をさらに記述することを特徴とする請求項２又は３に記載の方法。
【請求項５】
前記コンテンツアイテムを同期させる前記判定される装置の集合は、装置が前記コンテンツアイテムを閲覧していることを記述する記憶されたプレゼンス情報と関連付けられた装置から判定されることを特徴とする請求項１から４のいずれか１項に記載の方法。
【請求項６】
前記受信したプレゼンス情報に基づいて、前記装置のプレゼンス状態が変化したか否かを判定する工程をさらに有することを特徴とする請求項１から５のいずれか１項に記載の方法。
【請求項７】
前記コンテンツアイテムに関する他のプレゼンス情報が、該コンテンツアイテムが編集されていることを示す場合、前記プレゼンス状態は変えられないことを特徴とする請求項６に記載の方法。
【請求項８】
前記受信されるプレゼンス情報にはチャットメッセージが含まれることを特徴とする請求項１から７のいずれか１項に記載の方法。
【請求項９】
コンテンツ管理システムと同期されたコンテンツアイテムとのユーザインタラクションを記述するプレゼンス情報を維持する工程と、
前記コンテンツ管理システムと同期された装置からコンテンツアイテムの修正を受信する工程と、
前記コンテンツアイテムを同期させる装置の集合の各々に対して、プレゼンス情報を判定する工程と、
前記コンテンツアイテムと同期された前記装置の集合へアクションを伝送する工程であって、当該各装置へ伝送されるアクションは、前記装置と関連付けられた前記プレゼンス情報に基く、工程と
をプロセッサに実行させるコンピュータプログラムコードを含むコンピュータ可読記憶媒体を有するコンピュータプログラム製品。
【請求項１０】
装置に対する前記プレゼンス情報は前記装置のユーザが前記コンテンツアイテムを閲覧していないことを示し、前記アクションは、前記装置に、前記コンテンツアイテムを前記コンテンツアイテムの修正に自動的に同期させることを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１１】
装置に対する前記プレゼンス情報は前記装置のウィンドウが前記コンテンツアイテムを開いていることを示し、前記アクションは、前記ウィンドウに、修正された前記コンテンツアイテムを開かせることを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１２】
装置に対する前記プレゼンス情報は前記装置のウィンドウが前記コンテンツアイテムを編集していることを示し、前記アクションは、前記装置に、修正されたコンテンツアイテムが利用可能であることをユーザに通知させる特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１３】
前記コンテンツアイテムとのユーザインタラクションを記述する前記プレゼンス情報は、アクティブなユーザインタフェースウィンドウが前記コンテンツアイテムを閲覧していることを示す情報を含むことを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１４】
前記コンテンツアイテムとのユーザインタラクションを記述する前記プレゼンス情報は、ユーザインタフェースウィンドウが前記コンテンツアイテムを編集していることを示す情報を含むことを特徴とする請求項９に記載のコンピュータプログラム製品。
【請求項１５】
命令を実行するプロセッサと、
命令を含む、一時的でない不揮発性の記憶媒体と
を備えたシステムであって、
前記記憶媒体が含む命令は、前記プロセッサにより実行された場合に、前記プロセッサに、
装置から、コンテンツ管理システムと同期されたコンテンツアイテムと関連付けられたユーザインタフェース要素とのユーザインタラクションを記述するプレゼンス情報を受信する工程と、
前記コンテンツアイテムを同期させる装置の集合であって、当該装置の集合の各装置は、該コンテンツアイテムのローカルコピーを維持し、該ローカルコピーを前記コンテンツ管理システムに記憶された前記コンテンツアイテムと同期させる、装置の集合を判定する工程と、
前記装置の集合に前記プレゼンス情報を通知する工程と
を実行させることを特徴とするシステム。
【請求項１６】
前記命令は、前記プロセッサに、
前記コンテンツアイテムと関連付けられた複数の装置に対して、前記装置の各々が該コンテンツアイテムを閲覧しているか否かを記述する記憶されたプレゼンス情報を維持する工程と、
前記受信したプレゼンス情報に基づいて、前記装置に対して記憶されたプレゼンス情報を更新する工程と
をさらに実行させることを特徴とする請求項１５に記載のシステム。
【請求項１７】
前記コンテンツアイテムを同期させる前記判定される装置の集合は、装置が前記コンテンツアイテムを閲覧していることを記述するプレゼンス情報と関連付けられた装置から判定されることを特徴とする請求項１６に記載のシステム。
【請求項１８】
前記記憶されたプレゼンス情報は、各装置が前記コンテンツアイテムを編集しているか否かをさらに記述することを特徴とする請求項１６又は１７に記載の方法。
【請求項１９】
前記命令は、前記受信したプレゼンス情報に基づいて、前記装置のプレゼンス状態が変化したか否かを判定する工程を前記プロセッサにさらに実行させることを特徴とする請求項１５から１８のいずれか１項に記載の方法。
【請求項２０】
前記受信されるプレゼンス情報にはチャットメッセージが含まれることを特徴とする請求項１９に記載の方法。
【請求項２１】
装置に記憶されコンテンツ管理システムと同期されたコンテンツアイテムと関連付けられたネイティブプロセスと関連付けられたユーザインタフェース要素とのユーザインタラクションを記述するプレゼンス情報を受信する手段と、
前記コンテンツアイテムを同期させる装置の集合であって、当該装置の集合の各装置は、該コンテンツアイテムのローカルコピーを維持し、該ローカルコピーを前記コンテンツ管理システムに記憶された前記コンテンツアイテムと同期させる、装置の集合を判定する手段と、
前記装置の集合に前記プレゼンス情報を通知する手段と
を備えることを特徴とするシステム。
【請求項２２】
前記コンテンツアイテムを同期させる前記装置の集合における複数の装置に対して、各装置が該コンテンツアイテムを閲覧しているか否かを記述する記憶されたプレゼンス情報を維持する手段と、
前記受信したプレゼンス情報に基づいて、前記記憶されたプレゼンス情報を更新する手段と
をさらに備えることを特徴とする請求項２１に記載のシステム。
【請求項２３】
前記記憶されたプレゼンス情報は、各装置が前記コンテンツアイテムを編集しているか否かをさらに記述することを特徴とする請求項２２に記載のシステム。
【請求項２４】
前記記憶されたプレゼンス情報は、前記プレゼンス情報と関連付けられたユーザインタフェース要素をさらに記述することを特徴とする請求項２２又は２３に記載のシステム。
【請求項２５】
前記コンテンツアイテムを同期させる前記判定される装置の集合は、装置が前記コンテンツアイテムを閲覧していることを記述する記憶されたプレゼンス情報と関連付けられた装置から判定されることを特徴とする請求項２１から２４のいずれか１項に記載のシステム。
【請求項２６】
前記受信したプレゼンス情報に基づいて、前記装置のプレゼンス状態が変化したか否かを判定する工程をさらに有することを特徴とする請求項２１から２５のいずれか１項に記載のシステム。
【請求項２７】
前記コンテンツアイテムに関する他のプレゼンス情報が、該コンテンツアイテムが編集されていることを示す場合、前記プレゼンス状態は変えられないことを特徴とする請求項２６に記載のシステム。
【請求項２８】
前記受信されるプレゼンス情報にはチャットメッセージが含まれることを特徴とする請求項２１から２７のいずれか１項に記載のシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
関連出願の相互参照
本出願は２０１４年４月８日に出願された米国特許出願第１４／２４８，１４９号を基礎とする優先権を主張するものであり、その内容は全体として参照によりここに組み込まれる。
【０００２】
背景
本開示は一般には装置間で情報を共有することに関し、特に、共有され同期されたコンテンツアイテムを伴うネイティブアプリケーションのインタラクションについての情報を装置間で共有することに関する。
【０００３】
コンテンツ管理システムは、装置がコンテンツアイテムをコンテンツ管理システムや他の装置と同期することを可能にする。装置は、コンテンツアイテムのローカルコピーを記憶する。装置上でコンテンツアイテムが追加、削除、及び、編集された場合、これらの修正は記憶と他の装置との同期のために、コンテンツ管理システムへ送信される。コンテンツアイテムとのインタラクションを行うために、ユーザは装置上でネイティブアプリケーションを実行してコンテンツアイテムを閲覧して修正するのが一般的である。コンテンツアイテムへの修正は、ネイティブアプリケーションの実行とは別個にコンテンツ管理システムと同期してもよい。したがって、複数の装置が特定のコンテンツアイテムを別個に閲覧し編集してもよい。複数のユーザがそれぞれ同一のコンテンツアイテムを修正した場合、編集の衝突からバージョニングの問題が生じうる。このような衝突が生じる原因の１つは、他のユーザがコンテンツアイテムを並列的に修正していることをユーザが気づかないためである。
【発明の概要】
【０００４】
概要
以下に説明する実施形態は、コンテンツ管理システムを介してコンテンツアイテムを共有する一群の装置のユーザが、そのそれぞれの装置においてこの共有されたアイテムとのお互いのインタラクションに気づくことを可能にする。様々な実施形態において、共有コンテンツアイテムが１つ以上の他の装置上で閲覧又は編集されていることを示すグラフィックおよびテキストの情報が、そのそれぞれの装置のユーザに提供される。さらに、様々な実施形態において、ユーザは、そのそれぞれの装置を介してそのコメントを通信し、共有コンテンツアイテムに関する通知の受信を登録することができる。
【０００５】
様々な実施形態に係る装置は、コンテンツ管理システムにより装置間で維持され同期された、共有コンテンツアイテムのローカルコピーを記憶する。装置は、ワードプロセッサ、メディアビューワ、メディアエディタ等のコンテンツアイテムにアクセスするために用いることが可能なネイティブアプリケーションを有する。ネイティブアプリケーションは、ウィンドウ等のユーザインタフェース要素内のコンテンツアイテムに関する情報を表示する。装置は、また、コンテンツアイテムとのインタラクションを監視し、このようなインタラクションについての情報を、直接またはコンテンツ管理システムを介してコンテンツアイテムを共有している他の装置と通信するクライアントアプリケーションを有する。クライアントアプリケーションは、コンテンツアイテムとのユーザインタラクションを記載するデータを含むインタラクション情報を生成する。インタラクション情報は、クライアントアプリケーションとのインタラクションと、ネイティブアプリケーションとのインタラクションを含む。インタラクション情報は、ネイティブアプリケーションにおいて生じたプログラムのイベントから判定してもよい。ネイティブアプリケーションのイベントから判定したインタラクション情報はプレゼンス情報と呼ぶ。ネイティブアプリケーションのインタラクションにおいて生じたイベントはプレゼンスイベントと呼び、コンテンツアイテムのオープン（開くこと）、コンテンツアイテムの編集、コンテンツアイテムの保存、コンテンツアイテムの名称変更、コンテンツアイテムの移動、及び、コンテンツアイテムの削除を含むことができる。プレゼンスイベントは、また、フォーカスを取得し又は失ったユーザインタフェース要素等の、ネイティブアプリケーションのユーザインタフェース要素とのインタラクションをも含む。フォーカスされたユーザインタフェース要素は、装置上でユーザ入力を受けたユーザインタフェース要素である。例えば、フォーカスを有するユーザインタフェース要素は、ユーザがユーザインタフェース要素を介してコンテンツアイテムを「閲覧中」であることのプレゼンス情報を判定するために用いられる。一実施形態において、プレゼンスイベントは、コンテンツアイテムとのインタラクションを行っているネイティブアプリケーションとは別個のクライアントアプリケーションにより収集される。すなわち、この実施形態では、コンテンツアイテムにアクセスしているネイティブアプリケーションに統合されていない他のアプリケーション又はプロセスによってプレゼンスイベントは収集される。
【０００６】
さらなる種類のインタラクション情報には、クライアントアプリケーションによって受信されてもよい、コンテンツアイテムに関するノート、メッセージ、及び、通知要求が含まれる。メッセージには、他の装置へのチャットメッセージや、コンテンツアイテムとの（例えば、編集のような）インタラクションを行うというユーザの意図を示すメッセージが含まれてもよい。インタラクション情報には、また、バージョニングノート等のメタデータ修正、又は、バージョニング情報ないし以前のコンテンツアイテムのバージョンの閲覧要求等の、コンテンツ管理システムに記憶されたコンテンツアイテムについてのさらなる情報に対する要求をも含まれる。インタラクション情報は装置により交換されて、コンテンツアイテムとの他者のインタラクションに関する情報をユーザに提供する。
【０００７】
クライアントアプリケーションは装置上のイベントを監視して、ユーザがいつ同期されたコンテンツアイテムとのインタラクションを行うためにネイティブアプリケーションを使用しているかを判定する。イベントを監視する１つの方法において、クライアントアプリケーションは、ユーザインタフェース要素又はオペレーティングシステムを制御するプロセスを登録して、ユーザインタフェース要素に関連するイベントを受信する。クライアントアプリケーションは、そのような全てのイベントを監視してもよいし、同期されたコンテンツアイテムを開くことと関連付けられたあるユーザインタフェース要素のみを監視するようにしてもよい。プレゼンスイベントが発生した場合、クライアントアプリケーションは、ネイティブアプリケーション又はオペレーティングシステムからプレゼンスイベントを受信する。クライアントアプリケーションはイベントと関連付けられたユーザインタフェース要素を識別し、そのイベントと関連付けられたプレゼンス情報を判定する。クライアントアプリケーションは、コンテンツアイテムに対するインタラクションが行われていること又は行われたことをコンテンツ管理システムに通知し、プレゼンス情報をコンテンツ管理システムへ送信する。プレゼンス情報（又は他のインタラクション情報）は直接他の装置へ送信してもよい。
【０００８】
コンテンツ管理システムはインタラクション情報を受信し、そのインタラクション情報に応答し、あるいは、インタラクション情報の種類に基づき他の装置へそのインタラクション情報を送信してもよい。メッセージに関するインタラクション情報は、コンテンツアイテムと同期された他の装置へ送信される。プレゼンス情報はプレゼンスレコードとして記憶され、プレゼンスレコードは、一実施形態において、コンテンツアイテム、装置、プロセス、ユーザインタフェース要素、及びプレゼンスの種類（例えば、コンテンツアイテムが開かれていること、閲覧されていること、あるいは、編集されていること）を示す。インタラクションの順序付けに係るインタラクションの優先度を示すユーザプレゼンスが判定されてもよい。順序付けの一例において、コンテンツアイテムの編集はコンテンツアイテムの閲覧よりも高い優先度を有し、コンテンツアイテムの閲覧はコンテンツアイテムを開くことよりも高い優先度を有する。ユーザプレゼンスはコンテンツアイテムに関するユーザのプレゼンスを記述し、いかなる特定の装置、プロセス、又はユーザインタフェース要素への参照を伴わないようにしてもよい。コンテンツ管理システムは、コンテンツアイテムに関して同期された全ての装置へ情報を送信してもよいし、あるいは、コンテンツアイテムに関するアクティブなプレゼンスレコードと関連付けられた装置へのみ情報を送信してもよい。一実施形態において、装置は、通知のトリガ（契機）となる特定のインタラクションを指定してもよい、コンテンツアイテムについてのインタラクション情報を受信するためにコンテンツ管理システムに登録する。インタラクションが発生した場合、インタラクショントリガ情報が通知と関連付けられた装置へ送信される。
【０００９】
一実施形態において、コンテンツ管理システムでコンテンツアイテムへの修正が受信された場合、装置は、クライアント装置と関連付けられたインタラクション情報に依存したアクションを実行するように命令される。例えば、プレゼンスレコードと関連付けられた装置はコンテンツアイテムが修正されたことを通知され、コンテンツ管理システムはその装置に、コンテンツアイテムの編集を破棄するか、あるいは、コンテンツアイテムの新バージョンを作成するかをユーザが選択するためのプロンプトを表示するように命令する。
【００１０】
ネイティブアプリケーションにより開かれたコンテンツアイテムに関する、他のクライアント装置に対するプレゼンス情報が受信された場合、クライアントアプリケーションは、ネイティブアプリケーションのユーザインタフェース要素の近傍のプレゼンスインジケータ内にプレゼンス情報を表示する。プレゼンスインジケータは、受信したプレゼンス情報と関連付けられたユーザの画像であってもよく、特定の種類のプレゼンス情報や、その種類のプレゼンスを表しているユーザ数を示してもよい。プレゼンスインジケータを表示するために、クライアント装置は、ネイティブアプリケーションのユーザインタフェース要素の境界を判定し、そのユーザインタフェース要素の境界か、あるいは、ユーザインタフェース要素を隠さない他の適した位置にプレゼンスインジケータを表示する。例えば、プレゼンスインジケータは、コンテンツアイテムを含むウィンドウの縁に並んで表示された、共有コンテンツアイテムを修正しているユーザのサムネイル画像であってもよい。プレゼンスインジケータはまた、ツールバー又はディスプレイの他の部分に表示してもよい。プレゼンス情報に加えて、他の種類のインタラクション情報を提示してもよい。例えば、チャットメッセージ、ユーザのプレゼンスについての要求された通知、バージョニング情報、及び、他のインタラクション情報を表示してもよい。コンテンツアイテムの新バージョンがコンテンツ管理システムと同期された場合、インタフェースはまた、コンテンツアイテムの更新をユーザに知らせ、例えば、コンテンツアイテムの以前のバージョンへの変更の保存または破棄を行うためのオプションをユーザに提供して、ユーザインタフェース要素のプレゼンス情報に基づくオプションを提供する情報を表示してもよい。
【００１１】
装置は、他のユーザのコンテンツアイテムとのインタラクションに関するプレゼンス情報を、コンテンツアイテムを表示するアプリケーションのユーザインタフェースとともに表示する。これにより、ユーザは、コンテンツアイテムに関する他のユーザのアクティビティを、本質的にリアルタイム又はほぼリアルタイムに閲覧することが可能となる。さらに一実施形態において、プレゼンス情報は、コンテンツアイテムを表示又は修正するネイティブアプリケーションに対する修正又はアドオンに頼ることなく収集される。さらに、コンテンツ管理システムと通信するためのインタフェースをアプリケーションのユーザインタフェースとともに提示することにより、ユーザは、コンテンツアイテムが表示されている間、チャット情報を便利に交換し、コンテンツアイテムについてのデータを取得することが可能になる。
【００１２】
様々な実施形態において、クライアントアプリケーションはさらに、フォルダ又は他のコンテンツアイテムを収集したもの（コレクション）を閲覧するためのコンテンツアイテムブラウザ（「ブラウザ」）においてプレゼンス情報を表示する。コンテンツアイテムのコレクションには、ネイティブアプリケーションとのインタラクションが行われてもよいコンテンツアイテムが含まれてもよく、また、コレクション内のコレクションを含んでもよい。したがって、コンテンツアイテムのコレクションは階層的に配置してもよい（例えば、フォルダ内のフォルダ）ように、各コレクションはそれ自体コンテンツアイテムのコレクションであってもよい。特定のコンテンツアイテムのインタラクション情報は、コンテンツアイテムを含むコンテンツアイテムの各コレクションと関連付けられる。
【００１３】
説明を明確にするために、ブラウザがコレクションを含むコレクションを表示する場合（すなわち、フォルダ内のフォルダ）、他のコレクションに含まれるコレクションは編成要素と呼ぶ。すなわち、ブラウザがコレクションを表示する場合、表示されたコレクションであるコンテンツアイテムは編成要素と呼ばれる。
【００１４】
ユーザがブラウザ内のコンテンツアイテムのコレクションを閲覧する場合、ブラウザは、コンテンツアイテムに関するインタラクション情報を反映する状態インジケータを表示する。ブラウザに表示された各編成要素は、その編成要素内の、さらなる編成要素等の、コンテンツアイテムのインタラクション情報を反映したインジケータをも表示する。例えばブラウザは、２つのコンテンツアイテムと１つの編成要素のコレクション（例えば、３つのコンテンツアイテムを含むフォルダ）を表示してもよい。２つのコンテンツアイテムの各々について状態インジケータが表示されてコンテンツアイテムに関するインタラクション情報が示され、状態インジケータが、そのコンテンツアイテム（例えば、フォルダ内の３つのコンテンツアイテム）とのインタラクションを示す編成要素とともに表示される。さらなる情報を得るために、ユーザは、コンテンツアイテム又は編成要素を選択し、あるいは、その上にカーソルを置いてもよい。あるいはユーザは、ブラウザを制御して、編成要素により記載されたコンテンツアイテムのコレクションを表示してもよい。ブラウザの表示を生成するために、クライアントアプリケーションは、インタラクション情報をフィルタリングして、ユーザに表示されるコンテンツアイテムの編成に関連するインタラクション情報を表示する。これによりユーザは、コンテンツアイテムブラウザ内で、コンテンツアイテムの編成と関連付けられたコンテンツアイテムに対するインタラクション情報を閲覧し、様々な編成要素及びコンテンツアイテムに関する他のユーザのインタラクションを一目で閲覧することが可能となる。
【００１５】
また、コレクションに関するインタラクション情報と他のメタデータは、アクティビティフィードにおいて閲覧しているユーザへ表示してもよい。インタラクション情報と他のメタデータは、クライアントと同期され表示コレクションを含む共有フォルダと関連付けられてもよい。アクティビティフィードは、ブラウザに現在表示されているコンテンツアイテムのコレクションと関連付けられたインタラクション情報及び他の情報を表示する。アクティビティフィードは、現在アクティブなユーザ（例えば、「閲覧中」等のアクティブなプレゼンス情報を有するユーザ）を、そのユーザにより実行されたアクションや、コンテンツアイテムのコレクションに関する通知と合わせて表示してもよい。これらのアクション及び通知は、プレゼンス情報における変更や、あるいは、前述のインタラクション情報のような、インタラクション情報に関する他の通知を含んでもよい。特に、これは、チャットメッセージ又は通知すべき要求等の、ネイティブアプリケーションとともに表示されるインタフェース要素を用いてユーザにより入力されたインタラクション情報を含んでもよい。インタラクション情報に加えて、アクティビティフィードはまた、コンテンツアイテム、コレクション、又は（適用可能ならば）共有フォルダへの変更を反映した情報を表示してもよい。例えば、共有フォルダに対する変更は共有フォルダに追加された新ユーザでもよく、あるいは、コンテンツアイテムへの変更は利用可能になるコンテンツアイテムの新バージョンでもよい。ユーザはまた、（例えば、ユーザがプレゼンス情報と関連付いている、編成要素を含むコンテンツアイテムを識別するために）特定のユーザのためにフィルタリングしたり、ユーザがコンテンツアイテムに最後にインタラクションを行ったのはいつであるのかを識別したり、あるいは、編成要素それ自体に関するインタラクション情報（例えば、チャットメッセージ）を追加したりするためにブラウザとインタラクションを行ってもよい。
【図面の簡単な説明】
【００１６】
図面の簡単な説明
【図１】図１は、インタラクション情報の通信を含むコンテンツアイテムの同期のための環境の一実施形態を示す図である。
【図２】図２は、一実施形態に係る装置の様々なモジュール及びコンポーネントを示す図である。
【図３Ａ】、
【図３Ｂ】図３Ａ、図３Ｂは、装置のデスクトップ表示上におけるユーザインタフェース要素のフォーカスの変化を示す図である。
【図４】図４は、一実施形態に係るコンテンツアイテムと関連付けられたプレゼンス情報を判定するプロセスの一例を示す図である。
【図５Ａ】、
【図５Ｂ】、
【図５Ｃ】、
【図５Ｄ】図５Ａ−図５Ｄは、インタラクション情報を表示するユーザインタフェースの例を示す図である。
【図６】図６は、一実施形態に係る、コンテンツ管理システムのコンポーネントを示す図である。
【図７】図７は、一実施形態に係るユーザプレゼンスの順序付けを示す図である。
【図８】図８は、一実施形態に係るコンテンツアイテムに関するプレゼンステーブルにおけるプレゼンスレコードを示す図である。
【図９】図９は、一実施形態に係るプレゼンスレコードの修正とユーザプレゼンスの装置の更新を行うプロセスを示す図である。
【図１０】図１０は、プレゼンス情報を使用してコンテンツアイテムに対する修正を同期させるプロセスのフローチャートを示す図である。
【図１１】図１１は、一実施形態に係るインタラクション情報のフォルダレベル表示を示す図である。
【００１７】
各図は本発明の様々な実施形態を例示の目的で示しているにすぎない。本明細書に記載の発明の原理から離れることなく本明細書に示す構造及び方法の代替的な実施形態を採用してもよいことを、当業者は以下の議論から容易に理解するだろう。
【発明を実施するための形態】
【００１８】
詳細な説明
図１は、インタラクション情報の通信を含むコンテンツアイテムの同期のための環境の一実施形態を示す図である。図１は、装置１００Ａ、１００Ｂ、１００Ｃ（広くは装置１００として参照する）、コンテンツ管理システム１１０、及び、ネットワーク１２０を含んでいる。３つの装置は例示目的のために示しているにすぎない。実際には、本環境においては任意の数の装置が存在してもよい。同様に、全体にわたり記載ないし説明されている他のモジュール又はコンポーネントは、実装者の必要に応じて適宜かつ一般性を失うことなく、１つまたは複数のインスタンスを含んでもよい。
【００１９】
装置１００は、コンテンツアイテムをローカルに記憶、閲覧するとともに、コンテンツアイテムをコンテンツ管理システム１１０と同期させる任意の適切なコンピュータ装置であってもよい。装置の例には、デスクトップないしラップトップのコンピュータ、ハンドヘルドのモバイル装置、タブレットコンピュータ、及び、他のコンピュータ装置が含まれる。以下、様々な実施形態における装置１００の動作をさらに説明する。
【００２０】
各装置１００は、ネットワーク１２０を介してコンテンツ管理システム１１０と通信する。ネットワーク１２０は任意の適切なネットワークであり、ローカルネットワーク、企業ネットワーク、グローバルネットワーク、及び、これらの任意の組み合わせを含んでもよい。典型的な構成において、装置１００は、有線または無線の通信ネットワークを介してローカルネットワークのサービスプロバイダと通信し、インターネットを介してコンテンツ管理システム１１０と通信する。図１に点線で示すように、ある構成では、装置１００Ａ、１００Ｂ、及び１００Ｃは、ネットワーク１２０を経由せずに互いに直接通信する。例えば、装置１００は、Ｂｌｕｅｔｏｏｔｈ接続を介した無線、あるいは、ユニバーサル・シリアス・バス（ＵＳＢ）を介した有線接続等の、有線又は無線の接続を介して通信してもよい。
【００２１】
コンテンツ管理システム１１０は、装置１００のユーザに対して、コンテンツの共有及び同期のサービスを提供する。これらのサービスは、ユーザが、他の装置１００のユーザとコンテンツを共有することを可能にする。コンテンツ共有に加えて、コンテンツ管理システム１１０は、変更に応じて共有コンテンツを更新し、複数の装置１００の間でコンテンツアイテムへの同期された変更を可能にする。ユーザは、そのユーザが所有しユーザのアカウントと関連付けられた複数の装置１００にわたってコンテンツを同期してもよく、ユーザは他のユーザのアカウントと関連付けられた装置と同期されたコンテンツを共有してもよい。コンテンツ管理システム１１０に記憶されたコンテンツは、デジタルデータ、文書、メディア（例えば、画像、写真、動画、音声、ストリーミングコンテンツ）、データファイル及びデータベース、ソースコード及びオブジェクトコード、レコーディング、及び、他の任意の種類のデータまたはファイル等の、任意の種類のデータを含むことができ、ここではこれらをまとめて「コンテンツアイテム」と称する。コンテンツ管理システム１１０に記憶されたコンテンツアイテムはまた、フォルダ、テーブル、コレクション、アルバム、プレイリスト等の他のコンテンツアイテムを編成するために、あるいは、他のデータベース構造において（例えば、オブジェクト指向、キー／バリュー等）用いてもよい。実際には、ユーザアソシエーション、パーミッション、コンテンツ共有パーミッションその他に基づいて、様々な装置１００が異なるグループのコンテンツアイテムを同期させてもよい。以下、様々な実施形態におけるコンテンツ管理システム１１０の動作をさらに説明する。
【００２２】
図２は、一実施形態に係る装置１００の様々なモジュール及びコンポーネントを示す図である。装置１００は、ユーザに情報を提供するディスプレイ２２０を有し、あるクライアント装置１００においては、タッチスクリーンを有する。装置１００はまた、ネットワーク１２０を介してコンテンツ管理システム１１０と通信するためのネットワークインタフェース２２５を有する。例えば、１つ以上のコンピュータプロセッサ、ローカル固定メモリ（ＲＡＭ及びＲＯＭ）、並びに、任意に着脱可能なメモリ（例えば、ＳＤカード）、電源、及び、音声・ビデオ出力のような、マテリアルではないクライアント装置１００の他の従来のコンポーネントは図示していない。
【００２３】
ソフトウェアモジュールには、オペレーティングシステム２４５及び１つ以上のネイティブアプリケーション２５５が含まれる。ネイティブアプリケーション２５５はクライアント装置に基づき変化し、コンテンツ管理システム１１０上に記憶されたコンテンツを作成、閲覧、消費、及び、修正するための様々なアプリケーションを含んでもよい。例えば、ワードプロセッサ、スプレッドシート、データベース管理システム、コードエディタ、画像・動画エディタ、電子ブックリーダ、音声・動画プレイヤー、その他等はこれにあたる。各装置上のオペレーティングシステム２４５は、ローカルファイル管理システムを提供し、コンテンツ管理システムのクライアントアプリケーション２００やネイティブアプリケーション２５５等の様々なソフトウェアモジュールを実行する。コンタクトディレクトリ２４０は、例えば、名前、ピクチャ、電話番号、会社、電子メールアドレス、実在住所、ウェブサイトＵＲＬ等の、ユーザのコンタクトについての情報を記憶する。ネイティブアプリケーション２５５、オペレーティングシステム２４５、及び、コンテンツ管理システムのクライアントアプリケーション２００のさらなる動作は、以下に説明する。
【００２４】
ある実施形態において、装置１００は、カメラ２３０、ロケーションモジュール２３５等の付加的なコンポーネントを有する。カメラ２３０は、オンラインのコンテンツ管理システム１１０へアップロードする画像又は動画を撮影するために用いてもよい。ロケーションモジュール２３５は、例えば、グローバル・ポジショニング・サテライト信号、セルラ基地局三角測量法、あるいは、他の方法を用いて、装置１００の位置（ロケーション）を判定する。ロケーションモジュール２３５は、ロケーションデータを取得し、そのロケーションデータを、例えばカメラ２３０が撮影した画像等のコンテンツアイテムについてのメタデータに追加するために、クライアントアプリケーション２００が使用してもよい。
【００２５】
クライアント装置１００は、様々な手法によりコンテンツ管理システム１１０にアクセスする。クライアントアプリケーション２００は、ユーザインタフェースを介した共有ファイルへのユーザアクセスと他のアプリケーションのためのプログラム的なアクセスの両方を提供する、コンテンツ管理システム１１０のサービスへのアクセスを提供する専用のアプリケーション又はモジュールとすることができる。クライアント装置１００はまた、ウェブブラウザ２５０を介してコンテンツ管理システム１１０にアクセスしてもよい。これに代えて、クライアントアプリケーション２００は、オペレーティングシステム２４５が提供するローカルファイル管理システムにコンテンツ管理システム１１０へのアクセスを統合してもよい。コンテンツ管理システム１１０へのアクセスがローカルファイル管理システムに統合された場合、コンテンツ管理システム１１０において維持されたファイル編成方式は、クライアントアプリケーション２００と連携してオペレーティングシステム２４５によりローカルファイル構造として示される。クライアントアプリケーション２００は、スタンドアロン・アプリケーション、アプリケーション・プラグイン、あるいは、ブラウザ拡張等の、様々な形態をとってもよい。クライアントアプリケーション２００は、ユーザインタフェースモジュール２０２、インタラクション管理モジュール２０４、コンテンツアクセスモジュール２０６、ローカルコンテンツデータストア２０８、及び、監視プレゼンスデータストア２１０を有する。
【００２６】
他の装置のタスクのハンドリング（取り扱い）に加えて、オペレーティングシステム２４５は、装置１００上で実行しているアプリケーションからの情報を、１つ以上のユーザインタフェース要素を有してもよいディスプレイ２２０を介してユーザへ表示する。そのようなユーザインタフェース要素は、特定の装置及び構成に基づいて変化してもよい。ユーザインタフェース要素には、デスクトップインタフェース上のウィンドウやモバイル装置上のインタフェース要素が含まれる。ウィンドウ等のユーザインタフェース要素を採用しているオペレーティングシステムの例は、ワシントン州レドモンドのマイクロソフト社のＭｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ８や、カリフォルニア州クパチーノのアップル社のＯＳ  Ｘである。さらに、オペレーティングシステム２４５は、同時に実行してもよい複数のネイティブアプリケーション２５５の制御を管理する。ユーザインタフェース要素は、ある層が他の層に重なり合うように階層化されてもよい。いくつかのオペレーティングシステム及び構成においては、単一のユーザインタフェース要素のみが所与の時間に表示される。１つのユーザインタフェース要素は典型的にはアクティブなユーザインタフェース要素であり、これは、例えば、キーボード入力、カーソル移動、タッチセンサ、タッチジェスチャその他のようなユーザ入力を、オペレーティングシステム２４５が伝えるユーザインタフェース要素であることを意味する。当業者が理解するように、特定の時間にアクティブなウィンドウまたは他のユーザインタフェース要素はフォーカスを有するといわれることが多い。ユーザは他のユーザインタフェース要素を選択してあるユーザインタフェース要素から他のものへフォーカスを変更してもよく、いくつかの場合には、オペレーティングシステム２４５がユーザ入力なしにフォーカスを変更してもよい。
【００２７】
典型的には、例えば、ネイティブアプリケーション２５５と関連付けられたウィンドウのようなユーザインタフェース要素はオペレーティングシステム２４５により管理され、オペレーティングシステム２４５は、実行中のネイティブアプリケーション２５５のプロセス識別子とユーザインタフェース要素のユーザインタフェース要素識別子との間の関連付け（アソシエーション）を維持する。例えば、特定のアプリケーションはプロセスＩＤ「２５８７」と関連付けられてよく、このプロセスＩＤは、ユーザインタフェース要素識別子４、８、１０を有する複数のユーザインタフェース要素を管理してもよい。各ユーザインタフェース要素識別子はそのネイティブアプリケーション２５５により開かれた特定のコンテンツアイテムと別個に関連付けられてもよく、複数のユーザインタフェース要素識別子とプロセス識別子は同一のコンテンツアイテムと関連付けられてもよい。
【００２８】
オペレーティングシステム２４５はまた、様々なイベントをハンドルし、認識する。そのようなイベントには、コンテンツアイテムを閉じる又は開くためのネイティブアプリケーション２５５からの要求、ウィンドウ又は他のユーザインタフェース要素を閉じるためのネイティブアプリケーション２５５からの要求、及び、ユーザインタフェース要素のフォーカスを多数の他のものの間で変更するための要求が含まれる。以下に記載するように、これらのイベントは、インタラクション管理モジュール２０４が、コンテンツアイテムに関連するプレゼンスにおける変化を認識するために用いられてもよい。
【００２９】
クライアントアプリケーション２００は、例えば、ユーザが装置上でコンテンツアイテムを開き、閉じ、又は、編集した場合のように、コンテンツアイテムに関して生じたインタラクションを識別する。これらのインタラクションは、コンテンツアイテムとのインタラクションを記述するインタラクション情報を生成するために、クライアントアプリケーション２００により識別される。インタラクション情報は、クライアントアプリケーション２００とのインタラクションと、ネイティブアプリケーション２５５とのインタラクションを含む。ネイティブアプリケーション２５５のアクションから判定されたインタラクション情報はプレゼンス情報と呼ぶ。インタラクション情報とプレゼンス情報を判定する、クライアントアプリケーション２００等のアプリケーションは、プレゼンスアプリケーションと呼ぶ。さらなる種類の（プレゼンス情報に加えて）インタラクション情報には、クライアントアプリケーション２００によって受信されてもよい、コンテンツアイテムに関するノート、メッセージ、及び、通知要求が含まれる。メッセージには、他の装置へのチャットメッセージや、コンテンツアイテムとの（例えば、編集のような）インタラクションを行うというユーザの意図を示すメッセージが含まれてもよい。通知要求には、他のユーザのインタラクション情報が変更された場合に通知される要求が含まれてもよい。インタラクション情報には、また、バージョニングノート等のメタデータ修正、又は、バージョニング情報ないし以前のコンテンツアイテムのバージョンの閲覧要求等の、コンテンツ管理システム１１０に記憶されたコンテンツアイテムについてのさらなる情報に対する要求をも含まれる。インタラクション情報のさらなる例を以下に説明する。
【００３０】
このインタラクション情報は、コンテンツアイテムに関して同期された他の装置１００へ伝送される。目的の指標は、例えば、第１のユーザがコンテンツアイテムを編集したい他の装置上のコンテンツアイテムの第２のユーザに警告してもよい。ユーザがネイティブアプリケーション２５５を使用してコンテンツアイテムとインタラクションをお粉いている場合にクライアントアプリケーション２００は識別し、また、ユーザからチャット又は目的情報を受信する。以下にさらに説明するように、様々な実施形態において、装置１００は、コンテンツアイテムにおけるユーザのプレゼンス（すなわち、ユーザがコンテンツアイテムを開いているか、あるいは、コンテンツアイテムを編集していること）をオペレーティングシステム２４５とのインタラクションを介して識別する。
【００３１】
装置１００はコンテンツ管理システム１１０からコンテンツアイテムを受信し、ユーザが、装置１００に記憶された様々なネイティブアプリケーション２５５を用いてそのコンテンツアイテムの閲覧、修正、及び、インタラクションを行うことを可能にする。例えば、装置１００は、画像コンテンツアイテムを操作するフォト編集アプリケーション、又は、テキストコンテンツアイテムの修正を可能にするワードプロセッサアプリケーションを有してもよい。以下にさらに説明するように、インタラクション情報はユーザインタラクションアプリケーションを用いて装置１００により判定され、インタラクション情報は他の装置１００へ送信される。さらに、装置１００が他の装置１００に関するインタラクション情報を受信した場合、装置１００はそのインタラクション情報を表示する。
【００３２】
一実施形態において、コンテンツアイテムに関するインタラクション情報を検出するアプリケーションは、コンテンツアイテムを閲覧又は操作するアプリケーションと区別される。例えば、インタラクション情報を検出するクライアントアプリケーションは、画像コンテンツアイテムを操作又は表示するフォト編集アプリケーションと区別される。様々な実施形態において、インタラクション情報を検出するアプリケーションはまた、コンテンツ管理システム１１０とコンテンツアイテムを同期させることも担う。プレゼンス情報を検出するアプリケーションはプレゼンスが検出されたアプリケーションから区別されてよいため、プレゼンスは、多くのアプリケーションやコンテンツアイテムに対して、同時かつプレゼンスの監視を各種のコンテンツアイテムビューワに統合することを要さずに、監視されてもよいすなわち、特別なプレゼンス監視のアドオンやアプリケーションの修正は、例えば、フォト編集アプリケーション、ワードプロセッサアプリケーション、及び、プレイリスト編集アプリケーションの各々に対して全く必要ない。
【００３３】
図３Ａ、図３Ｂは、装置１００のディスプレイ２２０上に表示されたデスクトップ３００におけるユーザインタフェース要素のフォーカスの変化の例を示す図である。図３Ａにおいて、ウィンドウ３１０Ａ、３１０Ｂ、３１０Ｃがデスクトップ３００上に表示され、ユーザにより閲覧可能である。この実施形態において、デスクトップ３００はオペレーティングシステム２４５により維持される汎用のコンテナ又はフレームであり、ディスプレイ２２０上でユーザインタフェース要素を取り囲む。図３Ａ、図３Ｂにおいて、ユーザインタフェース要素はデスクトップコンピュータ環境におけるウィンドウ３１０である。例えばモバイル装置や他の領域が限られたディスプレイのような他の構成においては、単一のユーザインタフェース要素のみが一度に表示されうるだろう。図３Ａに示すように、ウィンドウ３１０Ａはフロントウィンドウとして示されたアクティブウィンドウであり、ウィンドウ３１０Ｂ、３１０Ｃを部分的に覆い隠している。図３Ｂでは、フォーカスがウィンドウ３１０Ｂへ変化し、ここではこれがフロントウィンドウでアクティブウィンドウである。フォーカスは、ウィンドウ３１０Ｂとのユーザインタラクションか、あるいは、そのウィンドウがアクティブウィンドウになることを要求するプロセスに起因して変化してもよい。あるオペレーティングシステム及び構成においては、ユーザインタフェース要素はフロントのユーザインタフェース要素とならずにフォーカスを有する（すなわち、ユーザ入力を受信する）。
【００３４】
再度図２を参照すると、コンテンツアイテムを開くために、ネイティブアプリケーション２５５はオペレーティングシステム２４５からのコンテンツアイテムを要求し、コンテンツアイテムに対するオペレーティングシステム２４５からのコンテンツアイテムのハンドルを受信する。いくつかの場合、ネイティブアプリケーション２５５がコンテンツアイテムからのデータの使用を継続し、あるいは、ユーザがコンテンツアイテムへの編集を入力していたとしても、アプリケーション２４５はハンドルを維持せず、コンテンツアイテムデータをメモリにロードし、続いてコンテンツアイテムハンドルを閉じてもよい。したがって、オープンコンテンツアイテムハンドルは、アプリケーションが特定のコンテンツアイテムとインタラクションを行っているか否かを判定するための信頼できる手法でないことが多い。そのようなものとして、ある実施形態では、ネイティブアプリケーション２５５により示されるさらなる挙動は、アプリケーションがコンテンツアイテムを編集しているか否かを判定するために用いられる。
【００３５】
ネイティブアプリケーション２５５はまた、ユーザがコンテンツアイテムを修正した場合に、ユーザがそのコンテンツアイテムを保存する前に様々な挙動を行う。これらの挙動はアプリケーションやオペレーティングシステム２４５に基づいて変化する。例えば、いくつかのネイティブアプリケーション２５５は、例えばティルデ又は他の見分けのつくマークを有するコンテンツアイテムの一時的なファイル名を導いて、オープン（開かれた）コンテンツアイテムと異なるファイル名で一時的なコンテンツアイテムを作成する。他の例では、ネイティブアプリケーション２５５は、コンテンツアイテムと関連付けられたユーザインタフェース要素のタイトルを変更し、それはユーザから直接閲覧できてもよいしできなくてもよい。さらに他の例では、ネイティブアプリケーション２５５は、コンテンツアイテムが修正されたことを示すフラグを設定する。ネイティブアプリケーション２５５はまた、他のアプリケーション又はオペレーティングシステムからの要求に応じて、コンテンツアイテムの修正に関する情報を提供してもよい。例えば、前述のＯＳ  ＸオペレーティングシステムにおけるアクセシビリティＡＰＩは、ユーザインタフェース要素と関連付けられたコンテンツアイテムに関する情報を提供する。オープンコンテンツアイテムのハンドルは、コンテンツアイテムがネイティブアプリケーション２５５によって編集されているか否かを確実に判定するものではないかもしれないため、以下にさらに説明するように、これらの挙動は、プレゼンス管理モジュール２０４がコンテンツアイテムの編集又は修正に関するプレゼンスを判定するために用いられる。
【００３６】
ネイティブアプリケーション２５５は典型的には互いに独立に装置上１００上で実行されてもよく、装置１００上で実行しているアプリケーションと他のアプリケーションまたはプロセスとの通信を可能にしてもよい。ネイティブアプリケーション２５５は典型的には、アプリケーションが実行中のプロセスからの情報を要求することを可能にする、アプリケーションプログラミングインタフェース（ＡＰＩ）を用いてプロセスへ情報を提供する。例えば、ネイティブアプリケーション２５５は、アプリケーションにより制御されたユーザインタフェース要素に対する要求を可能にし、ユーザインタフェース要素のタイトルを示し、又は、ネイティブアプリケーション２５５により開かれたコンテンツアイテムと関連付けられたファイルシステムにおけるパスを要求するための、ＡＰＩを提示する。同様に、オペレーティングシステム２４５は、特定のユーザインタフェース要素を制御するプロセスについての情報を要求するなどの、要求プロセスに対して同様のＡＰＩを提供してもよい。
【００３７】
クライアントアプリケーション２００はコンテンツ管理システム１１０へのアクセスを管理する。クライアントアプリケーション２００は、ここで様々に説明するように、クライアントアプリケーション２００によりアクセスされたコンテンツへのインタフェースを生成し、この機能を実行する１つの手段である、ユーザインタフェースモジュール２０２を有する。生成されたインタフェースはディスプレイ２２０によりユーザに提供される。クライアントアプリケーション２００は、コンテンツ管理システム１１０のコンテンツストレージからアクセスされたコンテンツをローカルコンテンツデータストア２０８に記憶してもよい。ここではクライアントアプリケーション２００内について示しているが、ローカルコンテンツデータストア２０８は、不揮発性ストレージにおいてクライアント装置１００に対する他のデータとともに記憶されてもよい。ローカルコンテンツデータストア２０８がこのように記憶された場合、クライアントアプリケーション２００がコンテンツ管理システム１１０と通信していなくても、コンテンツは、ユーザや、ネイティブアプリケーション２５５等の他のアプリケーション又はモジュールに利用可能である。コンテンツアクセスモジュール２０６はローカルコンテンツデータストア２０８への更新を管理し、コンテンツ管理システム１１０と通信するための同期ロジックを使用して、クライアント装置１００により修正されたコンテンツをコンテンツ管理システム１１０上で維持されたコンテンツと同期させる。そのような同期の一例が、２０１３年９月２７日に出願された米国特許出願第１４／０４０，５８４号に提供されており、その内容は全体として参照によりここに組み込まれる。クライアントアプリケーション２００は、スタンドアロン・アプリケーション、アプリケーション・プラグイン、あるいは、ブラウザ拡張等の、様々な形態をとってもよい。
【００３８】
コンテンツ管理システム１１０は、例えば、コンテンツアイテムが削除されたこと、あるいは、装置１００がコンテンツアイテムの旧式のバージョンを閲覧又は編集してもよいことを指定する情報等の、コンテンツアイテムを同期するための付加的なデータを提供してもよい。
【００３９】
インタラクション管理モジュール２０４は、ユーザの同期されたコンテンツアイテムに関するインタラクション情報を取得して管理する。前述のように、インタラクション管理モジュール２０４は、典型的には、プレゼンス情報のためにインタラクション管理モジュール２０４により監視されるネイティブアプリケーション２５５から区別されたモジュールであり、別個のプロセスとして実行する。インタラクション管理モジュール２０４は、装置１００と同期されているコンテンツアイテムについて判定されたインタラクション情報を、コンテンツ管理システム１１０へ送信する。インタラクション管理モジュール２０４はまた、他のユーザに関するインタラクション情報を、ユーザへの表示のために、コンテンツ管理システム１１０から受信する。以下にさらに説明するように、一実施形態において、インタラクション管理モジュール２０４は、同期されたコンテンツアイテムと関連付けられたユーザインタフェース要素にプレゼンスインジケータを添付して、他のユーザに関するプレゼンス情報を表示する。さらなるインタラクション情報もまたプレゼンスインジケータとともに表示される。
【００４０】
以下にさらに説明するように、多くの種類のインタラクション情報を判定するために、インタラクション管理モジュール２０４は、ユーザインタフェース要素を介してインタラクション情報を受信する。同期されたコンテンツアイテムに関するプレゼンス情報を判定するために、インタラクション管理モジュール２０４は、ネイティブアプリケーション２５５と関連付けられたユーザインタフェース要素を監視する。インタラクション管理モジュール２０４は、全てのユーザインタフェース要素を監視することができ、またそれに代えて、ユーザインタフェース要素がコンテンツアイテムと関連付けられた後にあるユーザインタフェース要素のみを監視することもできる。監視プレゼンスデータストア２１０は、同期されたコンテンツアイテムに関するアクションを判定するために特定のユーザインタフェース要素が監視されることを示す、インタラクション管理モジュール２０４により維持された情報を有する。
【００４１】
ここではクライアントアプリケーション２００の一部として示しているが、様々な実装では、コンテンツアクセスモジュール２０６とインタラクション管理モジュール２０４とはそれぞれの機能を実行する区別されたモジュールに分離される。同様に、本明細書を通して様々なモジュールとデータストアを便宜上分けて記載しているが、様々な実装においては望む態様で、これらは組み合わせてもよいし、あるいは、さらに別個のコンポーネントに分離してもよい。
【００４２】
図４は、一実施形態に係るコンテンツアイテムと関連付けられたプレゼンス情報を判定するプロセスの一例を示す図である。このプロセスは典型的にはインタラクション管理モジュール２０４により実行される。ユーザインタフェース要素がコンテンツアイテムと関連付けられた後にのみ監視された場合、インタラクション管理モジュール２０４は、ユーザインタフェース要素を監視するか否かを判定するために、コンテンツアイテムがアプリケーション又はユーザインタフェース要素により開かれていることを示すイベントを使用する。これは、ユーザインタフェース要素の監視を開始するためにコンテンツアイテムをユーザインタフェース要素と関連付けてもよいイベントの一例であり、監視イベントと呼ぶ。他の実施形態において、監視のユーザインタフェース要素の選択は他の手法で判定され、あるいは、全てのユーザインタフェース要素が監視され、そこではインタラクション管理モジュール２０４は監視イベントを使用しなくてもよい。
【００４３】
オペレーティングシステム２４５により有効化された場合、インタラクション管理モジュール２０４は、一定のアプリケーションに対する監視イベントを受信するためにオペレーティングシステム２４５に登録してもよい。これらの実施形態において、オペレーティングシステム２４５がコンテンツアイテムを開く要求を受信した場合に、オペレーティングシステム２４５はインタラクション管理モジュール２０４に通知する。本実施形態において、インタラクション管理モジュール２０４は、ウィンドウ又は他のユーザインタフェース要素が、コンテンツアイテムとインタラクションを行っていることを示す監視イベントを受信する（４００）。ここで、コンテンツアイテムは同期されたコンテンツアイテム（すなわち、プロセスは特定のユーザインタフェース要素においてコンテンツアイテムとのインタラクションを行っている）であってもよい。監視イベントは、監視イベントをトリガしたユーザインタフェース要素を少なくとも指定する。他の実施形態では、インタラクション管理モジュール２０４は、ユーザインタフェース要素と関連付けられたイベントを時々（例えば、５分間隔で）監視し、ユーザインタフェース要素が何らかの開かれたコンテンツアイテムと関連付けられているか否かを問い合わせる。オペレーティングシステム２４５及びネイティブアプリケーション２５５の構成によれば、この問合せはオペレーティングシステム２４５又はネイティブアプリケーション２５５に向けられてもよい。ユーザインタフェース要素が新たに開かれたコンテンツアイテムと関連付けられた場合、この新たに開かれたコンテンツアイテムは、その新たに開かれたコンテンツアイテムがコンテンツ管理システム１１０と同期されたコンテンツアイテムであるか否かを判定するための監視イベントとして扱われ、そのプレゼンス情報は新たに開かれたコンテンツアイテムに対して判定される。
【００４４】
監視イベントが受信された場合、インタラクション管理モジュール２０４は、どのプロセスが、監視イベントと関連付けられたユーザインタフェース要素を担っているかを判定する（４１０）。インタラクション管理モジュール２０４は、典型的には、オペレーティングシステム２４５からのユーザインタフェース要素と関連付けられたプロセスＩＤを要求することによりプロセスを判定する。いくつかの実施形態において、インタラクション管理モジュール２０４は、ユーザインタフェース要素その自体からのプロセスの識別を要求することによりプロセスを識別する。
【００４５】
プロセスとユーザインタフェース要素が互いに正しく関連付けられていることと、ユーザインタフェース要素がまだアクティブであることを確認するために、インタラクション管理モジュール２０４はまた、現在アクティブなユーザインタフェース要素のアイデンティティをもプロセスから要求する。インタラクション管理モジュール２０４は、プロセスから受信した現在アクティブなユーザインタフェース要素が監視イベントと関連付けられたユーザインタフェース要素に適合することを確認する。
【００４６】
プロセス識別子を用いて、インタラクション管理モジュール２０４は、コンテンツアイテムに対する関連付けられたディレクトリパスを取得するために、プロセスからの任意の開かれたコンテンツアイテムを要求する（４２０）。インタラクション管理モジュール２０４は、開かれたコンテンツアイテムのパスに対する要求とともに、監視イベントと関連付けられたユーザインタフェース要素を指定してもよい。インタラクション管理モジュール２０４は、プロセス又はオペレーティングシステムへの利用可能なインタフェースを用いて、プロセス又はオペレーティングシステムからのオープン（開く）アイテムを要求する。一例として、当該分野では公知のように、ＯＳ  Ｘオペレーティングシステムでは、コンテンツアイテムとユーザインタフェース要素に対するコンテンツアイテムパスに関する情報へアクセスするためにアクセシビリティＡＰＩが用いられてもよい。プロセスにより提供されたコンテンツアイテムパスを使用して、インタラクション管理モジュール２０４は、開かれたコンテンツアイテムパスが任意の同期されたコンテンツアイテムに対応するか否かを判定する。そのようならば、インタラクション管理モジュール２０４は、プロセスによりアクセスされたコンテンツアイテムはコンテンツ管理システム１１０と同期されたコンテンツアイテムであると判定し、そのプロセスとユーザインタフェース要素をコンテンツアイテムと関連付ける。他の実施形態では、プロセスによりアクセスされたコンテンツアイテムが同期されたコンテンツアイテムであるか否かを判定するために他の方法を用いてもよい。
【００４７】
コンテンツアイテムがコンテンツ管理システム１１０と同期されている場合（４３０）、インタラクション管理モジュール２０４は、コンテンツアイテム、プロセス、及び、ユーザインタフェース要素に関する情報を記憶して、イベントに対するユーザインタフェース要素を監視する（４４０）。監視イベントと関連付けられたコンテンツアイテムが同期されていない場合、プロセスは終了し、コンテンツアイテムは監視されない。この監視情報は、監視プレゼンスデータストア２１０に記憶される。ユーザインタフェース要素に関するプレゼンスイベントを監視し、続いて受信するために、インタラクション管理モジュール２０４は、ユーザインタフェース要素と関連付けられたイベントを受信するために登録する。インタラクション管理モジュール２０４による登録プロセスは、装置１００の構成に従い変化する。典型的には、インタラクション管理モジュール２０４は、オペレーティングシステム２４５から、又は、適用可能なプロセスあるいはユーザインタフェース要素からのプレゼンスイベントを受信するための要求を登録する。ユーザインタフェース要素とプロセスとのいずれが同期されたコンテンツアイテムとのインタラクションを行っているかを監視イベントが判定した一方で、プレゼンスイベントは、コンテンツアイテムと関連付けられたユーザインタフェース要素又はプロセスに関するユーザのプレゼンスの状態における変化を示してもよいイベントである。プレゼンスイベントの例には、インタラクション管理モジュール２０４により認識されたプレゼンスの種類に基づいて、ユーザインタフェース要素のフォーカスの変化、ユーザインタフェース要素を閉じること、コンテンツアイテムを閉じること、コンテンツアイテムを開くこと等が含まれる。様々な構成において、インタラクション管理モジュール２０４により用いられるプレゼンスイベントは、オペレーティングシステム２４５及びネイティブアプリケーション２５５が、インタラクション管理モジュール２０４による受信に対して利用可能にするイベントに依存する。
【００４８】
プレゼンスイベントは、そのプレゼンスイベントが関係するコンテンツアイテムと関連付けられたプレゼンス情報を判定するために用いられる。例えば、コンテンツアイテムと関連付けられたユーザインタフェース要素がフォーカスを有することを示すプレゼンスイベントは、ユーザがそのコンテンツアイテムを閲覧していることを示すだろう。したがって、そのコンテンツアイテムに対するプレゼンス情報は状態を示す。同様に、コンテンツアイテムに関係のないユーザインタフェース要素がフォーカスを得たことを示すプレゼンスイベントは、以前フォーカスされたユーザインタフェース要素と関連付けられたコンテンツアイテムはフォーカスを失ったことを示し、よって、ユーザはもはやそのコンテンツアイテムを閲覧していないことを示している。したがって、プレゼンス情報は、基礎をなすプレゼンスイベントそれ自体のあのレベルの意味解釈を提供する。
【００４９】
インタラクション管理モジュール２０４が登録されたというプレゼンスイベントを受信するのに加えて、プレゼンスイベントはまた、プレゼンス情報が監視されたユーザインタフェース要素に対して変更されていないことを確認するために、インタラクション管理モジュール２０４により開始されてもよい。これらのプレゼンスイベントは、特定のユーザインタフェース要素又はプロセスに対する最後のプレゼンスイベントから閾値量の時間が経過した場合に、あるいは、例えば５分ごとのような特定の時間間隔に、開始してもよい。
【００５０】
イベントに対する登録に加えて、インタラクション管理モジュール２０４は他の手法でインタラクションイベントを受信してもよい。一実施形態において、ユーザはユーザインタフェース要素を介してインタラクション情報を明示的に示してもよい。ユーザインタフェース要素は、ユーザが、例えば、そのユーザがコンテンツアイテムを改訂する意図を有していることを示したり、あるいは、そのコンテンツアイテムを編集又は閲覧している他のユーザに対して、例えば、特定の意図を示すメニューアイテム又はアイコンの選択により、その意図を示すことができるように構成することが可能である。ユーザインタフェース要素はまた、ユーザが、例えば、コンテンツアイテムをもう閲覧しないというユーザの意図などのユーザの他の意図を示したり、あるいは、ユーザはコンテンツアイテムにプレゼントでない（関与しない）又はこれからプレゼントでないことを明示的に示すことができるように構成することも可能である。他のユーザは、そのような「プレゼントでない」という意図を用いてそのコンテンツアイテムは編集が自由であることを知ってもよい。例えば、他の装置上でコンテンツアイテムを現在閲覧している他のユーザへメッセージを伝送するために、ユーザ入力のインタラクションイベントは、コンテンツアイテムと関連付けられた他のユーザへ広められるべきメッセージ又はチャットの特徴を含んでもよい。
【００５１】
プレゼンスイベントが受信されると（４５０）、インタラクション管理モジュール２０４は、監視されたユーザインタフェース要素に関する最後のプレゼンスイベント以降、何らかのプレゼンス情報が変更されたか否かを判定する。ユーザ開始のインタラクション情報に対して、インタラクション情報は、例えば、ユーザがコンテンツアイテム又はユーザのチャットメッセージを修正する意図を有していることを示すユーザインタフェース要素のユーザの選択のような、ユーザにより提供された情報であってもよい。プレゼンスイベントに対して、インタラクション管理モジュール２０４は、監視されたユーザインタフェース要素の状態を判定するために監視プロセスを問い合わせる。特に、インタラクション管理モジュール２０４は、監視されたユーザインタフェース要素がアクティブなユーザインタフェース要素であるか否かを藩邸すくためにプロセスに問い合わせる。監視されたユーザインタフェース要素がアクティブなユーザインタフェース要素である場合、コンテンツアイテムはユーザにより閲覧されている。
【００５２】
いくつかの実施形態において、コンテンツアイテムに関するユーザプレゼンスを削除することに加えて、インタラクション管理モジュール２０４はまた、コンテンツアイテムがユーザにより修正されているか又は修正されたか否かの判定も行う。このさらなる側面は、例えば、ユーザは閲覧者ではなく編集者としてコンテンツアイテムに関するプレゼンスを有しているというインジケーションにより、より高い粒度でプレゼンス情報を報告することを可能にする。前述のように、コンテンツアイテムが修正されている場合にアプリケーションにより実行される特定のアクションは変化してもよいため、インタラクション管理モジュール２０４によりこれらのアクションの１つを検出したことは、プロセスがコンテンツアイテムを編集したことを示すものである。例えば、コンテンツアイテムが編集された場合にプロセスにより予期されたアクションの種類に従い、インタラクション管理モジュール２０４は、プロセスはコンテンツアイテムが修正済とフラグされていることを示しているか、ユーザインタフェース要素のタイトル情報が変更されているか、一時ファイルが保存又はキャッシュされているか、あるいは、他の何らかのデータがコンテンツアイテムが修正されたことを示しているかを判定するために、プロセスに問い合わせてもよい。インタラクション管理モジュール２０４はまた、例えば、コンテンツアイテムに類似のファイル名を有するが、ファイル名のティルダ又は他の特定の変形を有するコンテンツアイテムのような、一時コンテンツアイテムフォーマットに適合するコンテンツアイテムが保存されているか否かを判定するためにオペレーティングシステムに問い合わせてもよい。そのような修正は、コンテンツアイテムと関連付けられたプレゼンス情報は、ユーザがコンテンツアイテムを編集中であることを反映しなければならないことを示す。
【００５３】
プレゼンス情報を判定（４６０）した後、ユーザインタフェース要素に対するあらゆる新たなプレゼンス情報は、監視プレゼンスデータストア２１０として記憶される。一実施形態において、このプレゼンス情報は、１つのプロセスによる複数のユーザインタフェース要素が同一のコンテンツアイテムと関連付けられ、プレゼンス情報が個別に管理されてもよいように、ユーザインタフェース要素ごとに記憶される。一実施形態において、プレゼンス情報は現在のプレゼンス状態に基づいて変化してもよい。例えば、コンテンツアイテムに対するプレゼンス情報がコンテンツアイテムが編集中であることを反映した場合、一実施形態において、ユーザインタフェース要素におけるコンテンツアイテムに対するプレゼンスは、ユーザが他のユーザインタフェース要素へフォーカスを変更した場合に変更されない。代わりに、ユーザインタフェース要素は閉じられたことをプレゼンスイベントがユーザインタフェースに知らせるまで、編集状態はそのユーザインタフェース要素に関して維持される。他の実施形態では、編集はコンテンツアイテムへの修正を導びく可能性を有しているため、一実施形態において、コンテンツアイテムに対する修正はコミットされたか、又は、修正は破棄されたという通知をインタラクション管理モジュール２０４が受け取るまで、編集済文書に対するプレゼンス情報は変更されない。
【００５４】
閲覧されていることを示すプレゼンス情報を有するコンテンツアイテムは、ユーザインタフェース要素がフォーカスを失ったり、あるいは、閾値時間フォーカスを失ったような場合に、その状態を変化させてもよい。これは、コンテンツアイテムと関連付けられたユーザインタフェース要素がまだ開かれている場合にも、同様にしてよい。一実施形態において、「閲覧されている」のプレゼンス情報は、コンテンツアイテムがアクティブなユーザインタフェース要素と関連付けられているか否かを示す。一実施形態において、「閲覧されている」のプレゼンス情報は、ユーザインタフェース要素が閾値時間よりも長くアクティブでなくなる（あるいは、フォーカスを失う）まで保持される。一実施形態において、コンテンツアイテムは、コンテンツアイテムがアプリケーションにより開かれている間、「閲覧されている」と考えられる。
【００５５】
インタラクション情報に変化があった場合、インタラクション管理モジュール２０４は、インタラクション情報をコンテンツ管理システム１１０へ送信する。一実施形態において、送信されるプレゼンス情報には、コンテンツアイテムの識別子、プロセスＩＤ、ユーザインタフェース要素ＩＤ、及び、プレゼンス状態が含まれる。
【００５６】
図５Ａ−図５Ｄは、インタラクション情報を表示するユーザインタフェースの例を示す図である。様々なユーザインタフェース要素は図３Ａ及び図３Ｂに示したものと同様である。図５Ａにおいて、ユーザインタフェースの例はプレゼンス情報を表示している。プレゼンス情報を表示するために、インタラクション管理モジュール２０４は、コンテンツアイテムと関連付けられたウィンドウの境界又は縁に合わせてプレゼンスインジケータ５００を提供する。この例では、インタラクション管理モジュール２０４は、ユーザのジェフがコンテンツアイテム２を編集中であり、４人のユーザがコンテンツアイテム２を閲覧中であることを示すプレゼンス情報を受信している。インタラクション管理モジュール２０４は、ジェフが文書を編集していることを示すプレゼンスインジケータ５００Ａと、ユーザがその文書を閲覧していることを示すプレゼンスインジケータ５００Ｂを表示している。一実施形態において、プレゼンスインジケータ５００は、プレゼンスインジケータと関連付けられたユーザのアイコンまたはピクチャを表示する。アイコンやピクチャは、インタラクション管理モジュール２０４がコンタクトディレクトリ２４０から取得してもよいし、あるいは、コンテンツ管理システム１１０から受信してもよい。プレゼンスインジケータが表示する個別のユーザは実施形態により変化してもよく、また、例えば、特定のプレゼンスを有する最初のユーザ（例えば、最初の閲覧者）や最も新しくコンテンツアイテムを開いたユーザを表示してもよい。
【００５７】
プレゼンスインジケータ５００はコンテンツアイテムと関連付けられたウィンドウに合わせて表示されてもよく、一実施形態において、インタラクション管理モジュール２０４は、ウィンドウの位置を追跡し、例えば、ウィンドウの縁または境界のような、ウィンドウに隣接して又は近傍にプレゼンスインジケータ５００を表示する。ユーザがプレゼンスインジケータ５００上に静止した場合、ユーザに対しさらなる情報やインタフェースを提供するための補助的なプレゼンスインジケータ５１０が現れてもよい。図５Ａに示す例では、補助的なプレゼンスインジケータ５１０は、プレゼンスインジケータ５００Ａを、具体的には、ジェフがコンテンツアイテム２の編集中のプレゼンスと関連付けられていることを説明している。補助的なプレゼンスインジケータ５１０はまた、プレゼンスが変化した場合に現れて、例えば、新たなユーザが文書を閲覧又は編集していることを示してもよい。
【００５８】
プレゼンスインジケータ５００及び補助的なプレゼンスインジケータ５１０は、ディスプレイ２２０の任意の都合のよい領域に位置づけられてもよい。一実施形態において、プレゼンスインジケータと一定のコンテンツアイテムとの間の関係をユーザに視覚的に示すために、プレゼンスインジケータは、コンテンツアイテムの関連付けられたユーザインタフェース要素に近接して表示される。さらに、ウィンドウの境界又は縁に合わせたプレゼンスインジケータの表示は、ユーザがプレゼンスインジケータに気づく見込みを増大させる。一実施形態において、プレゼンスインジケータ５００は、コンテンツアイテムを含むウィンドウの垂直縁（例えば、図５Ａに示す右の縁）の上またはそれに並べて表示される。
【００５９】
それに代えて、プレゼンスインジケータは、例えばタスクバーやトレイアイコン等の、ディスプレイの別の領域に示してもよく、あるいは、コンテンツアイテムのユーザインタフェース要素とインタラクションを行わない別個のユーザインタフェース要素としてもよい。ここではプレゼンスの種類（編集または閲覧）の各々に対して単一のプレゼンスインジケータ５００を示しているが、任意の個数のプレゼンスインジケータ５００をコンテンツアイテムに関連して示してもよい。例えば、円形インジケータはコンテンツアイテムを閲覧しているユーザのカウントを含んでもよく、他の円形インジケータはコンテンツアイテムを編集しているユーザのカウントを含んでもよい。あるいは、複数のプレゼンスインジケータ５００が表示される場合、これらは最上位から最下位に順序付けてよく、この順序づけは、最も最近のものから最も長く使われていないものまで、最も優先度の高いものから最も優先度の低いものまで、あるいは、これらの組み合わせ（例えば、優先度による順序付けと、同一の優先度のプレゼンスインジケータについて、最近であることによる順序付け）とすることができる。図に示すように、プレゼンスインジケータはまた、他のユーザと関連付けられたアイコン又はピクチャを示してもよい。インジケータはまた、ユーザが他のユーザによる編集へ影響を及ぼすリスクを示すように色分けされてもよい。例えば、プレゼンスインジケータは、他のユーザが編集中の場合は赤色としてよく（あるいは、プレゼンスインジケータは赤色に変わってもよい）、あらゆる所望の修正をそのユーザの変化に調和させることをユーザに知らせてもよい。同様に、編集インジケータは、他のユーザがコンテンツアイテムを閲覧しているときは黄色、現在のユーザがコンテンツアイテムを閲覧している唯一のユーザであるときは緑色としてもよい。
【００６０】
図５Ｂは、ユーザがインタラクション管理モジュール２０４へインタラクション情報を入力してもよいユーザインタフェースを示している。このインタフェースは、プレゼンスインジケータ５００に加えてさらなるユーザインタフェース要素を有している。このインタフェースは、図５Ａの例の代わりに提示されてもよく、あるいは、コンテンツアイテムに関する付加的なデータを提供する補助的なプレゼンスインジケータとして提示されてもよい。
【００６１】
このユーザインタフェースは、他のユーザに関するプレゼンスの変化が発生した場合に通知してほしいというユーザの希望を示すことをユーザに可能にする、通知要素５２０を提供する。通知要素５２０を選択する際に、ユーザは、例えば、特定のユーザのプレゼンスが変化した（例えば、ジェフはもう編集していない）場合に、全てのユーザが特定のプレゼンスを停止した（例えば、誰も編集していない）こと、あるいは、アクティブなプレゼンスを有するユーザはいないこと（例えば、他の誰もコンテンツアイテム２にアクセスしていないこと）が通知される、一定の通知オプションをさらに選択してもよい。ユーザの通知プリファレンスは、要求されたプレゼンスが変化した場合にコンテンツ管理システム１１０又は通知を要求する適用ユーザへ送信される。
【００６２】
このインタフェースはまた、ユーザが、コンテンツアイテムにプレゼンスを有する他のユーザと通信するためのチャットインタフェースを提供する。チャットインタフェースは、ユーザが他のユーザに参加してメッセージを受信することを可能にする。プレゼンスの変化はまた、例えば、アマンダが今コンテンツアイテムを閲覧しているという、チャットウィンドウにおいて示すこともできる。チャットウィンドウは、ユーザがアイテムの編集を終えることを予期している場合などに、そのコンテンツアイテムに関する情報についてユーザが具体的に議論することを可能にしてもよい。これらのチャットメッセージは、インタラクション管理モジュール２０４によりインタラクション情報として受信され、そのコンテンツアイテムと同期された他のクライアントへ送信される。これにより、ネイティブアプリケーションがチャットの機能性を提供していない場合であっても、コンテンツアイテムについてユーザは直接チャットをすることができる。
【００６３】
ノートユーザインタフェース５４０は、ユーザが、コンテンツアイテムと関連付けられて記憶されたノートを取得し、参加することを可能にする。ノートインタフェース５４０が選択された場合、インタラクション管理モジュール２０４は、コンテンツアイテムに関するコンテンツ管理システム１１０からの任意のノート又は他の持続情報を要求し、他の同期された装置及びコンテンツ管理システム１１０へ送信される付加的なノートを入力するためのインタフェースと合わせて、任意のそのようなノートをユーザに表示する。チャットウィンドウと同様に、これにより、コンテンツアイテムや、ノートの機能性をもともと提供していないかもしれないユーザインタフェースを提供するアプリケーションに対して、付加的なノートを入力することが可能になる。ノート要素５４０はまた、コンテンツアイテム内に他のユーザがプレゼントしていない場合にも用いてもよく、コンテンツアイテムについての他のユーザに対するメッセージを残すために用いてもよい。
【００６４】
コンテンツデータ要素５５０は、任意の関連するメタデータ、ユーザパーミッションその他のような、コンテンツアイテムについての付加的なデータをユーザが要求することを可能にする。これにより、ユーザは、コンテンツアイテムと関連付けられたユーザインタフェース要素に近いインタフェースから直接コンテンツ管理システムからのコンテンツアイテムの詳細を要求することができる。
【００６５】
同様に、バージョン要素５６０は、バージョン情報に対する要求を示す。インタラクション管理モジュール２０４は、コンテンツアイテムに関するインタラクション情報として、バージョン情報に対する要求をコンテンツ管理システム１１０へ伝送する。これに応じて、コンテンツ管理システム１１０は、そのコンテンツアイテムの関連するバージョン情報を識別する。一実施形態において、以前のバージョンは、ユーザインタフェース要素に表示されたコンテンツアイテムのバージョンと対象比較される。他の実施形態において、以前のバージョンは、ユーザインタフェース要素においてインラインで比較される。
【００６６】
図５Ｃは、他のコンテンツアイテムに関するプレゼンスにおける変化についてユーザが通知されているユーザインタフェースを示している。この事例では、ユーザは、ユーザのジェフがコンテンツアイテム２の編集を終えた場合に通知されることを、前もって通知要素５２０を用いて選択している。通知を要求した後、ユーザはコンテンツアイテム２に関するウィンドウ３１０Ｂを閉じるために進み、現在はコンテンツアイテム１を閲覧している。本実施形態において、プレゼンスインジケータ５００Ｄは、ユーザがこのコンテンツアイテムに関するプレゼンスを有する唯一のユーザであることを示している。これは図示したように明確に示してもよいし（「他の誰もこのファイルを閲覧していない」）、あるいは、ユーザがプレゼンスインジケータ５００Ｄとインタラクションを行った場合に提供してもよい。インタラクション管理モジュール２０４は、ジェフがコンテンツアイテム２の編集を終えたことの通知を受信する。通知５７０はユーザに表示される。この通知は、その通知が関係するコンテンツアイテムとは異なる他のアプリケーション又はコンテンツアイテムとユーザがインタラクションを行っているかもしれないとしても提供される。
【００６７】
図５Ｄは、コンテンツアイテムが修正されたという通知をユーザが受信したユーザインタフェースを示している。この例では、ユーザが閲覧しているコンテンツアイテム２の新バージョンが他のユーザのジェフにより保存されている。インタラクション管理モジュール２０４は、コンテンツアイテム２が修正され、新バージョンが利用可能であることを示すメッセージをコンテンツ管理システム１１０から受信する。典型的には、ユーザの編集をコンテンツ管理システム１１０と同期させることをユーザが試みた場合、そのユーザの編集がコンテンツ管理システム１１０により維持されたバージョンに関して旧式であることからユーザの編集は失われるかもしれない。ユーザがコンテンツアイテムを編集していることを示すプレゼンス情報を使用して、ユーザは、ジェフからの任意の編集をユーザの編集に組み込むことを支援するための選択を提供されることができる。バージョン通知５８０は、新バージョンに応じるための選択と合わせて、ユーザに提示される。この例ではユーザは、新バージョンをロードすること、ユーザの編集を破棄すること、又は、ユーザの編集を新ファイルとして保存することを選択してもよい。以下にさらに説明するように、ユーザが利用可能な特定の選択は、コンテンツ管理システム１１０が有する装置のプレゼンス１００の記録に基づいて、コンテンツ管理システム１１０により提供されてもよい。他の実施形態では、インタラクション管理モジュール２０４がユーザに表示するオプションを判定する。
【００６８】
インタラクション管理モジュール２０４がウィンドウ３１０Ｂのネイティブアプリケーション２５５とは別個のアプリケーションである実施形態においては、プレゼンスインジケータ５００は、インタラクション管理モジュール２０４により提供される。そこで、インタラクション管理モジュール２０４は、アプリケーションと関連付けられたプレゼンス情報を監視し、アプリケーションと関連付けられたコンテンツアイテムに対する他のユーザに関するプレゼンス情報を表示する。他のウィンドウが有効化された場合、同一のインタラクション管理モジュール２０４は、有効化されたウィンドウに関するプレゼンス情報を表示する。
【００６９】
プレゼンスインジケータを表示するために、インタラクション管理モジュール２０４は、他の装置に対するプレゼンス情報を、典型的にはコンテンツ管理システム１１０から受信する。インタラクション管理モジュール２０４は、同期されたコンテンツアイテムがウィンドウ又はプロセスにより使用中であること、及び、ウィンドウがユーザに表示されていることを判定する。例えば前述のように、インタラクション管理モジュール２０４は、監視されているウィンドウ又はプロセスからプレゼンスイベントを受信してもよい。ウィンドウがフォーカスを有することをプレゼンスイベントが示す場合、インタラクション管理モジュール２０４はプレゼンスインジケータを表示に追加する。一実施形態におけるインタラクション管理モジュール２０４はまた、デスクトップにおけるウィンドウの移動を追跡し、プレゼンスインジケータを移動させて、そのウィンドウに関するプレゼンスインジケータの位置を維持する。
【００７０】
一実施形態において、プレゼンスインジケータを表示に追加するために、インタラクション管理モジュール２０４は、フォーカスされているウィンドウとその境界の位置を判定し、ウィンドウの境界に隣接するプレゼンスインジケータを追加する。フォーカスされているウィンドウが変更されたことをインタラクション管理モジュール２０４が識別した場合、そのコンテンツアイテムに対するプレゼンスインジケータは、そのウィンドウが再度フォーカスされるまで除去されてもよい。
【００７１】
図６は、一実施形態に係る図１のコンテンツ管理システム１１０のコンポーネントを示している。１つの構成において、コンテンツ管理システム１１０を参照して以下に説明するコンポーネントは、コンテンツ管理システム１１０による管理がなしにコンテンツアイテムを共有及び同期する装置１００に組み込まれる。これらの装置１００は、ネットワーク１２０越しに、あるいは、前述のように直接接続を介して、コンテンツを同期化し、インタラクション情報を共有してもよい。この構成において、装置１００は、同期モジュール６１２、衝突管理モジュール６１４、インタラクション同期モジュール６１６、及び他のモジュール、並びに、データストアの機能性を組み込んでもよく、これらはコンテンツ管理システム１１０により提供されるものとして以下に説明する機能性を組み込む。したがって、この構成の装置１００は、ピア・ツー・ピアの構成において動作し、コンテンツ管理システム１１０あるいはネットワーク１２０がなくてもそのように動作してもよい。
【００７２】
様々なコンテンツ管理サービスを促進するためにコンテンツ管理システム１１０を使用する場合、ユーザは、コンテンツ管理システム１１０のアカウントを作成することができる。アカウント情報はユーザアカウントデータベース６１８に維持することが可能であり、この機能を実行する１つの手段である。ユーザアカウントデータベース６１８は登録されたユーザのプロフィール情報を記憶することができる。いくつかの場合、ユーザプロファイルの個人情報を、ユーザ名及び電子メールアドレスの少なくともいずれかのみとすることができる。もっとも、コンテンツ管理システム１１０はまた、例えば、パスワード回復情報、デモグラフィックス情報、支払情報、及び他の詳細情報等の、付加的なユーザ情報を許容するように構成することもできる。各ユーザは、ユーザＩＤやユーザ名等の識別子と関連付けられる。
【００７３】
ユーザアカウントデータベース６１８はまた、例えば無料又は支払済みのようなアカウントの種類、例えばファイル編集履歴のような各ユーザの使用情報、認可された最大ストレージ空間、使用済みストレージ空間、コンテンツストレージの場所、セキュリティ設定、個人コンフィギュレーション設定、コンテンツ共有データ等の、アカウント管理情報を含むこともできる。アカウント管理モジュール６０４は、ユーザアカウントデータベース６１８のユーザアカウントの詳細の更新及び取得の少なくともいずれかを行うように構成することができる。アカウント管理モジュール６０４は、コンテンツ管理システム１１０の任意の個数の他のモジュールとインタラクションを行うように構成することができる。
【００７４】
アカウントは複数の装置１００と関連付けることができ、コンテンツアイテムはアカウントと関連付けて記憶することができる。記憶されたコンテンツはまた、異なる挙動を有する様々な種類のフォルダや、他のコンテンツアイテムのグルーピング法を有することができる。例えば、アカウントは、任意のユーザがアクセス可能なパブリックフォルダを有することができる。パブリックフォルダはＷｅｂアクセス可能なアドレスを割り当てることができる。Ｗｅｂアクセス可能なアドレスへのリンクは、パブリックフォルダのコンテンツにアクセスするために使用することができる。他の例では、アカウントは、写真コンテンツアイテムを対象とし写真に適合した一定の属性及びアクションを提供する写真フォルダと、音声ファイルコンテンツアイテムを再生し他の音声関連アクションを実行する能力を提供する音声フォルダと、他の特定用途フォルダとを有することができる。アカウントはまた、複数のユーザアカウントにリンクされて利用可能な共有フォルダ又はグループフォルダを有することもできる。複数のユーザに対するパーミッションは共有フォルダに対して異なってもよい。一実施形態において、アカウントは数人のユーザと関連付けられてもよい名前空間であり、数人のユーザの各々は名前空間とのインタラクションを行うためのパーミッションと関連付けられてもよい。
【００７５】
コンテンツは、この機能を実行する１つの手段であるコンテンツストレージ６２０に記憶されてもよい。コンテンツストレージ６２０は、１つのストレージ装置、複数のストレージ装置、又は、サーバとすることができる。あるいは、コンテンツストレージ６２０は、１つ以上の通信ネットワークを介してアクセス可能なクラウドストレージプロバイダ又はネットワークストレージとすることができる。１つの構成において、コンテンツ管理システム１１０は、コンテンツアイテムを、それが装置で見えるのと同じ編成構造で記憶する。もっとも、コンテンツ管理システム１１０は、コンテンツアイテムを独自の順序、配列、又は、階層で記憶することもできる。
【００７６】
コンテンツストレージ６２０はまた、コンテンツアイテムを説明するメタデータ、コンテンツアイテムの種類、及び、様々なアカウント、フォルダ、あるいは、グループに対するコンテンツアイテムの関係を記憶することもできる。コンテンツアイテムのメタデータは、コンテンツアイテムの一部と記憶することもできるし、あるいは、別個に記憶することもできる。１つの構成において、コンテンツストレージ６２０に記憶された各コンテンツアイテムは、システム内の固有の識別子を割り当てることができる。
【００７７】
コンテンツストレージ６２０は、重複するコンテンツアイテム又はコンテンツアイテムの重複するセグメントを識別することにより、必要なストレージ空間の量を低減させることができる。一実施形態において、例えば、コンテンツアイテムの所有者メタデータ（例えば、所有者リスト）内にユーザの識別子を含めることにより、コンテンツアイテムのコピーを１つだけ記憶し、１つのコピーの複製をリンクするポインタ又は他の機構を使用しつつ、異なるユーザ間でコンテンツアイテムを共有してもよい。同様に、コンテンツストレージ６２０は、コンテンツアイテムへの変更、コンテンツアイテムの異なるバージョン（分岐バージョン木等）、及び、変更履歴を追跡するバージョン制御機構を使用して、コンテンツアイテムを記憶する。変更履歴は、オリジナルのコンテンツアイテムのバージョンに適用された場合に変更済みのコンテンツアイテムのバージョンを作成する、変更の集合を含む。
【００７８】
コンテンツ管理システム１１０は、同期モジュール６１２を使用して１つ以上の装置からのコンテンツアイテムを自動的に同期し、同期モジュール６１２はこの機能を実行する１つの手段である。同期はプラットフォームにとらわれない。すなわち、コンテンツアイテムは、様々な種類、性能、オペレーティングシステム等の複数の装置１００をまたがって同期される。例えば、クライアントアプリケーション２００は、コンテンツ管理システム１１０の同期モジュール６１２を介して、装置１００のファイルシステムのコンテンツを、システム１１０の関連付けられたユーザアカウントのコンテンツアイテムと同期させる。クライアントアプリケーション２００は、指定フォルダ及びそのサブフォルダ内のコンテンツアイテムに対するあらゆる変更を同期モジュール６１２と同期させる。そのような変更には、ファイル又はフォルダの新規作成、削除、修正、コピー、又は、移動が含まれる。同期モジュール６１２はまた、装置１００と関連付けられたコンテンツへのあらゆる変更をクライアントアプリケーション２００に提供する。これは装置１００のローカルコンテンツをコンテンツ管理システム１１０のコンテンツアイテムと同期させるものである。
【００７９】
衝突管理モジュール６１４は、異なる装置１００に位置するコンテンツアイテムのバージョン間において何らかの不一致があるか否かを判定する。例えば、ある装置と第２の装置においてコンテンツアイテムが修正された場合、各装置にコンテンツアイテムの異なるバージョンが存在するかもしれない。同期モジュール６１２はそのようなバージョニングの衝突を、例えば、コンテンツアイテム修正の修正時刻を識別することによって判定する。衝突管理モジュール６１４は、例えば、バージョンをマージしたり、あるいは、後に提出されたバージョンを装置に通知するなどの任意の適切な手段により、バージョン間の衝突を解決する。
【００８０】
ユーザはまた、ユーザインタフェースモジュール６０２により生成されたウェブインタフェースを介してコンテンツを閲覧又は操作することもできる。例えば、ユーザは、ウェブブラウザ２５０の中で、コンテンツ管理システム１１０により提供されたウェブアドレスへナビゲートすることができる。ファイルの新バージョンのアップロード等の、コンテンツストレージ６２０のコンテンツに対するウェブインタフェースを介してなされた変更又は更新は、ユーザのアカウントと関連付けられた他の装置１００にも同期により反映される。複数の装置１００は単一のアカウントと関連付けられてもよく、そのアカウント内のファイルは複数の装置１００の各々の間で同期される。
【００８１】
コンテンツ管理システム１１０は、アプリケーションプログラミングインタフェース（ＡＰＩ）を介して、様々な装置１００や、他のコンテンツ及び／又はサービスのプロバイダとの間のインタフェースとなる通信インタフェース６００を有し、これはこの機能を実行する１つの手段である。あるソフトウェアアプリケーションは、ＡＰＩを介してユーザに代わってコンテンツストレージ６２０にアクセスする。例えば、スマートフォン又はタブレット型コンピュータ装置のアプリのようなソフトウェアパッケージは、ユーザがコンテンツの読出し、書込み、作成、削除、共有、あるいは他の操作についてのクレデンシャルを提供した場合に、プログラムにより直接コンテンツ管理システム１１０の呼出しを行うことができる。同様に、ＡＰＩは、ユーザがウェブサイトを介してコンテンツストレージ６２０の全部又は一部にアクセスすることを可能にする。
【００８２】
コンテンツ管理システム１１０はまた、ユーザのクレデンシャル、セキュリティトークン、ＡＰＩコール、専用装置等を検証して、要求されたコンテンツアイテムへのアクセスが認可されたものか否かを判定する認証モジュール６０６を有し、これはこの機能を実行する１つの手段である。認証モジュール４０６は、ユーザアカウントに対してワンタイム使用の認証トークンを生成することができる。認証モジュール４０６は、各認証トークンに対して有効期間又は有効期限を割り当てる。認証トークンを要求装置へ送信することに加えて、認証モジュール６０６は、生成した認証トークンを認証トークンデータベース６２２に記憶することができる。認証トークンの正当性検証の要求を受信すると、認証モジュール６０６は、ユーザに割り当てられた適合認証トークンを求めて認証トークンデータベース６２２をチェックする。認証モジュール６０６が適合認証トークンを識別するとすぐに、認証モジュール６０６は、適合認証トークンがまだ有効か否かを判定する。例えば、認証モジュール６０６は、認証トークンが失効していないか、あるいは、使用済み又は無効なものとしてマークされていないかを検証する。認証トークンの正当性検証の後、認証モジュール６０６は、使い捨てトークン等の適合認証トークンを無効化してもよい。例えば、認証モジュール６０６は、適合認証トークンを使用済み又は無効なものとしてマークしたり、あるいは、適合認証トークンを認証トークンデータベース６２２から削除することができる。
【００８３】
コンテンツ管理システム１１０は、コンテンツを公開又は非公開で共有する共有モジュール６１０を有する。コンテンツを公開で共有することには、コンテンツ管理システム１１０とのネットワーク通信において任意のコンピュータ装置からコンテンツアイテムをアクセス可能にすることが含まれうる。コンテンツを非公開で共有することには、コンテンツストレージ６２０のコンテンツアイテムを２つ以上のユーザアカウントとリンクづけすることで、各ユーザアカウントがコンテンツアイテムへのアクセスを有するようにすることを含めることができる。コンテンツはまた、各種のユーザアカウントをまたがって共有することもできる。
【００８４】
いくつかの実施形態において、コンテンツ管理システム１１０は、コンテンツストレージ６２０の各コンテンツアイテムの位置を識別し、クライアントアプリケーションがストレージ６２０内のコンテンツアイテムへのアクセスを要求することを可能にするコンテンツディレクトリを維持するコンテンツ管理モジュール６０８を有し、これはこの機能を実行する１つの手段である。コンテンツディレクトリのコンテンツエントリはまた、コンテンツストレージ６２０のコンテンツアイテムの位置を識別するコンテンツポインタを有することができる。例えば、コンテンツエントリは、メモリ内のコンテンツアイテムのストレージアドレスを指定するコンテンツポインタを有することができる。いくつかの実施形態において、コンテンツエントリは、それぞれコンテンツアイテムの一部を含む、複数の位置を指す複数のコンテンツポインタを有する。
【００８５】
コンテンツパス及びコンテンツポインタに加えて、いくつかの構成におけるコンテンツエントリはまた、コンテンツアイテムへのアクセスを有するユーザアカウントを識別するユーザアカウント識別子を有する。いくつかの実施形態において、複数のユーザアカウント識別子は、コンテンツアイテムが複数のユーザアカウントによる共有アクセスを有することを示す単一のコンテンツエントリと関連付けることができる。
【００８６】
コンテンツアイテムを非公開で共有するために、共有モジュール６１０は、コンテンツアイテムと関連付けられたコンテンツエントリにユーザアカウント識別子を追加し、これにより追加されたユーザアカウントのコンテンツアイテムへのアクセスを許可する。共有モジュール６１０はまた、コンテンツアイテムへのユーザアカウントのアクセスを制限するために、コンテンツエントリからのユーザアカウント識別子を削除するように構成することもできる。
【００８７】
コンテンツを公開で共有するために、共有モジュール６１０は、あらゆるウェブブラウザが認証なしにコンテンツ管理システム１１０のコンテンツにアクセスすることを可能にする、ＵＲＬ等のカスタムネットワークアドレスを生成する。共有モジュール６１０は、生成されたＵＲＬのコンテンツ識別データを有し、これは後に、コンテンツ管理システム１１０が要求されたコンテンツアイテムを正しく識別して返すために使用することができる。例えば、共有モジュール６１０は、生成されたＵＲＬにユーザアカウント識別子とコンテンツパスを有するように構成することができる。ＵＲＬに含まれるコンテンツ識別データは、装置がコンテンツアイテムにアクセスするために、コンテンツ管理システム１１０へ伝送することができる。ＵＲＬを生成することに加えて、共有モジュール６１０はまた、コンテンツアイテムへのＵＲＬが作成されたことを記録するように構成することもできる。いくつかの実施形態において、コンテンツアイテムと関連付けられたコンテンツエントリは、コンテンツアイテムへのＵＲＬが作成されたか否かを示すＵＲＬフラグを有することができる。
【００８８】
コンテンツ管理システム１１０は、単一のコンピュータ、又は、クラウドベースのコンピュータ実装を含む、コンピュータのネットワークを用いて実装してもよい。本明細書の目的のために、コンピュータは、１つ以上のプロセッサ、メモリ、ストレージ装置、及び、ネットワークリソースを有する装置である。コンピュータは、好適には、１つ以上の高性能ＣＰＵ、及び、１Ｇ以上のメインメモリ、並びに、５００Ｇｂから２Ｔｂのコンピュータ可読持続ストレージを有し、ＬＩＮＵＸ又はその変形等のオペレーティングシステムを実行する、サーバクラスのコンピュータである。ここに記載のコンテンツ管理システム１１０の動作は、ここに記載の機能を実行するために、ハードウェア、又は、コンピュータストレージにインストールされ、そのようなサーバのプロセッサにより実行されるコンピュータプログラムを介して制御することができる。これらのシステムは、ネットワークインタフェース及びプロトコル、データ入力のための入力装置、データの表示、印刷、あるいは他の提示のための出力装置を含む、ここに記載の動作に必要な他のハードウェア要素を有するが、ここには記載していない。同様に、例えば、ファイアウォール、負荷分散装置、フェイルオーバーサーバ、ネットワーク管理ツールその他のような従来要素は、システムの特徴を不明瞭にしないためにここには示していない。最後に、コンテンツ管理システム１１０の機能及び動作は、コンピュータシステム上での実装を要するほど十分複雑であり、人間の精神における単なる知的ステップにより実行することができるものではない。
【００８９】
インタラクション同期モジュール６１６は、装置１００をまたがったインタラクション情報の同期を管理する。装置１００は、インタラクション同期モジュール６１６へインタラクション情報を提供する。インタラクション同期モジュール６１６は、受信したインタラクション情報の種類に基づいて、インタラクション情報に応答する。インタラクション同期モジュール６１６がプレゼンス情報を使用してある種類のインタラクション情報に対する応答を判定した場合、受信したプレゼンス情報の取り扱いが、以下にさらに説明するインタラクション情報の追加的な種類の取り扱いとともに、まず記載される。
【００９０】
インタラクション同期モジュール６１６は、装置からプレゼンス情報を受信し、プレゼンスデータストア６２４内のプレゼンスレコードの一部としてそれを記憶し、コンテンツアイテムに関してユーザプレゼンスを判定する。各ユーザは、コンテンツアイテムに関するそのユーザと関連付けられたプレゼンスレコードを記述するユーザプレゼンスと関連付けられてもよく、それは、何らの特定ユーザの装置、プロセス、又は、ユーザインタフェース要素に対する参照を伴わなくてもよい。プレゼンス情報が特定のユーザインタフェース要素又はプロセスに関するプレゼンスを記述してもよい一方で、ユーザと関連付けられたこのプレゼンスはユーザプレゼンスと呼ぶ。ユーザプレゼンスの例には、編集中、閲覧中、オープン、及び、プレゼンスなしが含まれる。この例では、「編集中」のユーザプレゼンスは、コンテンツアイテムがそのコンテンツアイテムを修正したユーザインタフェース要素と関連付けられていることを示し、「閲覧中」のユーザプレゼンスは、コンテンツアイテムが装置１００上のアクティブなユーザインタフェース要素と関連付けられていることを示す一方で、「オープン」のユーザプレゼンスは、ユーザインタフェース要素がコンテンツアイテムと関連付けられ、コンテンツアイテムを開いたが、まだコンテンツアイテムを閉じていないことを示す。様々な実施形態は、より多く又はより少ないユーザプレゼンスを使用してもよい。例えば、一実施形態は、「編集中」、「閲覧中」、及び、「プレゼンスなし」のみを有してもよく、その場合、コンテンツアイテムを開いたがアクティブなユーザインタフェース要素ではないユーザインタフェース要素は、システムの構成に従い、閲覧中またはプレゼンスなしとして扱われてもよい。
【００９１】
図７は、一実施形態に係るユーザプレゼンスの順序付けを示す図である。図７に示す順序付けは、各ユーザプレゼンスと関連付けられたコンテンツアイテムとのインタラクションの優先度を記載している。この例では、ユーザがコンテンツアイテムを編集中の場合、ユーザは、コンテンツアイテムを閲覧中の場合よりも、より高い優先度のコンテンツアイテムとのインタラクションを有し、同様に、アクティブなユーザインタフェース要素においてコンテンツアイテムを閲覧中であることは、開いた（オープンな）コンテンツアイテムを有するユーザインタフェース要素よりも高い優先度のインタラクションである。
【００９２】
ユーザは、数個の装置にまたがって、並びに、数個のプロセス及びユーザインタフェース要素にまたがってコンテンツアイテムを開いてもよいため、順序付けは、そのユーザのユーザインタラクションの最も高い優先度を判定するために用いられる。これにより、ユーザプレゼンスは、ユーザと関連付けられた様々な可能な装置及びユーザインタフェース要素と関連付けられたユーザプレゼンスの最も高い優先度を反映することができる。このユーザプレゼンスは図５Ａに示すように表示のために装置１００へ送信され、最も高い優先度のユーザインタラクションを示す単一のユーザプレゼンスが示されることを可能にする。
【００９３】
図８は、コンテンツアイテムに関するプレゼンステーブル８００におけるプレゼンスレコードを示す図である。プレゼンステーブル８００は、例えば、プレゼンスデータストア６２４に記憶されてもよい。インタラクション同期モジュール６１６により受信されたプレゼンス情報は、プレゼンスデータストア６２４における記憶のためにプレゼンスレコードへ変換される。プレゼンスレコードがプレゼンスデータストア６２４に記憶された場合、プレゼンスレコードは、例えば、コンテンツアイテムの識別子を鍵として使用して、キー値ストレージに記憶してもよい。プレゼンステーブル８００は、プレゼンスデータストア６２４により記憶されてもよいし、あるいは、インタラクション同期モジュール６１６がプレゼンスデータストア６２４から取得した情報を概念的に表してもよい。
【００９４】
この例では、プレゼンスレコードは、コンテンツアイテム、装置ＩＤ、ユーザＩＤ（便宜上ここでは名前として表す）、ユーザインタフェース要素ＩＤ、プロセスＩＤ、及び、プレゼンス情報を識別する。各固有の装置ＩＤ、ユーザインタフェース要素ＩＤ、及び、プロセスＩＤの組み合わせは、プレゼンス情報と関連付けられている。この例では、プレゼンステーブル８００において「プレゼンスなし」の装置は表されていない。プレゼンステーブル８００に示すように、個々のユーザ（ジム）及び装置（例えば、装置ＩＤ  ３６ａｂｅ８７）は、複数のプレゼンスレコードと関連付けられてもよい。この実施形態のプレゼンステーブルは、インタラクション管理モジュール２０４により提供される様々なユーザ及び装置により動作される個別のプロセス及びユーザインタフェース要素に関する情報を記述する。
【００９５】
プレゼンス情報がインタラクション同期モジュール６１６により受信された場合、インタラクション同期モジュール６１６は、プレゼンスデータストア６２４にアクセスして、既存のプレゼンスレコードが受信したプレゼンス情報の装置ＩＤ、プロセスＩＤ、及びユーザインタフェース要素ＩＤに適合するか否かを識別する。この情報に適合するレコードが存在しない場合、新たなプレゼンスレコードが生成される。新たなユーザプレゼンスレコードの「ユーザＩＤ」は受信した情報に含まれてもよいし、あるいは、インタラクション同期モジュール６１６が他のモジュール又はデータストアに問い合わせて装置ＩＤと関連付けられたユーザを識別してもよい。新たなプレゼンスレコードはプレゼンスデータストア６２４に記憶される。適合プレゼンスレコードがプレゼンスデータストア６２４において識別された場合、既存のプレゼンスレコードは、受信した情報に基づいて更新される。（例えば、関連するウィンドウが閉じられたために）コンテンツアイテムはユーザインタフェース要素にもう関連付けられていないことを受信した情報が識別する場合、プレゼンスレコードはプレゼンスデータストア６２４から削除されてもよい。
【００９６】
この例では、インタラクション同期モジュール６１６はまた、プレゼンステーブル８００にプレゼンスレコードを記憶し、特定のプレゼンスイベントが発生した場合に通知されるユーザの要求を反映する。様々な実施形態において、ユーザの通知要求は任意の適切な手法により記憶してもよい。通知要求は、インタラクション同期モジュール６１６によってインタラクション情報入力として通知要素５２０を介して受信され、その通知要求を受信する装置によりインタラクション同期モジュール６１６へ送信される。通知要求は、例えば、要求している装置や通知を要求するユーザ等の、通知要求を記述する十分な情報とともに記憶してもよい。要求を提供した装置をユーザがもう使用していない場合、ユーザは、代わりの装置を識別し、通知するために使用されてもよい。
【００９７】
インタラクション同期モジュール６１６は、ユーザプレゼンステーブル８１０を生成して、コンテンツアイテムに関する現在のユーザプレゼンスを維持してもよい。他の実施形態において、現在のユーザプレゼンスは、ユーザプレゼンステーブル８１０を使用せずに記憶される。ユーザプレゼンステーブル８１０は、ユーザのユーザ装置と関連付けられたプレゼンスレコードを反映する、ユーザのプレゼンスを示す。ユーザプレゼンスは、例えば、プレゼンスインジケータ５００に表示するために、装置１００により用いられる。このようにして、ユーザは、数個の装置、プロセス、及び、ユーザインタフェース要素を用いてコンテンツアイテムとのインタラクションを行ってもよいが、最も高い優先度のインタラクションを反映するプレゼンスのみが他の装置１００へ配信される。
【００９８】
ユーザプレゼンスを判定するために、ユーザと関連付けられた各プレゼンスレコードからのプレゼンス情報が識別される。次に、最も高い優先度の順序付けを判定するために、ユーザプレゼンスの順序付けに対してプレゼンス情報が適合させられる。一例としてユーザのジョンについて、ジョンは３つのユーザプレゼンスと関連付けられている。プレゼンスレコードは、ジョンは１つのユーザ装置（ユーザインタフェース要素ＩＤが１の装置９ｄ７５２３ｃ）のフォーカスされたウィンドウでコンテンツアイテムを閲覧中であり、装置３６ａｂｅ８７の２つのユーザインタフェース要素では、コンテンツアイテムが１つ目では編集中であり、２つ目では「オープン」であることを示している。図７に示す順序付けを適用すると、「編集中」がジョンと関連付けられている最も高い順序のプレゼンスジョンのユーザプレゼンスは、ユーザプレゼンステーブル８１０において「編集中」と設定されている。
【００９９】
プレゼンスレコードが修正された場合、ユーザプレゼンスはユーザプレゼンスにおけるあらゆる変更を反映するように更新される。例えば、ジョンの「閲覧中」のプレゼンスレコードが削除された場合、「編集中」のプレゼンスレコードが残存しているため、ジョンのユーザプレゼンスは変更されない。同様に、ジョンの「編集中」のプレゼンスレコードが「オープン」に変化した場合、ジョンと関連付けられたプレゼンスレコードの次に高い優先度のプレゼンスが反映されて、ジョンのプレゼンス状態は「閲覧中」に変化する。なお、「閲覧中」のプレゼンスレコードは、他の装置ＩＤ（９ｄ７５２３ｃ）と関連付けられていることに留意されたい。したがって、ジョンのプレゼンスは、数個の装置、プロセス、及び、ユーザインタフェース要素をまたがって正確に反映されている。
【０１００】
図９は、一実施形態に係るプレゼンスレコードの修正とユーザプレゼンスの装置１００の更新を行うプロセスを示す図である。一実施形態において、このプロセスは、インタラクション同期モジュール６１６によって行われてもよい。プレゼンス情報は、インタラクション同期モジュール６１６によって受信される（９００）。インタラクション同期モジュール６１６は、前述のように、既存のプレゼンスレコードを修正し、あるいは、新たなプレゼンスレコードを追加して、プレゼンステーブル８００のプレゼンスレコードを更新する（９１０）。次に、インタラクション同期モジュール６１６は、更新されたプレゼンスレコードと関連付けられたユーザのユーザプレゼンスを判定し、ユーザプレゼンスが更新されたプレゼンスレコードによって変更されたか否かを判定する（９２０）。例えば、ユーザプレゼンスにおける変化は、新たなユーザプレゼンスを判定し、その新たなユーザプレゼンスをユーザプレゼンステーブル８１０に記憶されたユーザプレゼンスと比較することにより判定してもよい。ユーザプレゼンスが変更されていない場合、一実施形態において、プロセスは終了する。ユーザプレゼンスが変化した場合、ユーザプレゼンステーブル８１０において、ユーザプレゼンスは更新される（９３０）。
【０１０１】
一実施形態において、インタラクション同期モジュール６１６は、装置のユーザインタフェース要素が閾値時間内にプレゼンス情報を提供したか否かを判定する。ユーザインタフェース要素がプレゼンス情報を提供しなかった場合、インタラクション同期モジュール６１６は、装置からプレゼンス情報を要求するか、又は、関連するユーザインタフェース要素はのプレゼンスは終了した（「プレゼンスなし」）と考えてもよい。したがって、インタラクション同期モジュール６１６は、最近のプレゼンス情報を提供した各ユーザインタフェース要素に関する心拍を「予期」してもよい。閾値時間内にプレゼンス情報が全く受信されなかった場合は、「プレゼンスなし」のプレゼンスがそのユーザインタフェース要素に対して生成されてもよい。
【０１０２】
次に、インタラクション同期モジュール６１６は、変更されたユーザプレゼンスに関して更新する装置を識別する。一実施形態において、コンテンツアイテムと同期されるあらゆる装置が更新される。他の実施形態において、プレゼンステーブル８１０は、コンテンツアイテムと関連付けられたプレゼンスを有する装置を判定するために参照される。さらに、インタラクション同期モジュール６１６は、ユーザプレゼンスにおける変化により何らかの通知がトリガされたか否かを判定する。記憶された通知がアクセスされ、通知に対する状態がコンテンツアイテムに関する変更されたプレゼンスと比較される。識別された装置を用いて、インタラクション同期モジュール６１６は、更新されたプレゼンス情報を識別された装置へ送信する（９５０）。１つの構成において、ユーザプレゼンスは、識別された装置へ提供される。他の構成において、付加的な情報もまた提供されてもよい。このようにして、ユーザプレゼンス情報は、例えば、プレゼンスインジケータにおいて、あるいは、通知要求に応じて、ユーザに実際に表示されてもよいユーザプレゼンスに作用する場合にのみプレゼンス情報を配信するように、コンテンツ管理システム１１０によって管理される。
【０１０３】
装置１００によって提供される付加的なインタラクション情報もまた、インタラクション同期モジュール６１６によって処理される。そのようなインタラクション情報には、図５Ｂを参照して説明したように、ユーザのプレゼンスが変化した婆に通知される要求、バージン又はメタデータの情報の要求、チャットメッセージ、その他が含まれる。前述のように、通知要求は記憶され、プレゼンス状態が変化した場合に通知する装置を判定するために使用されてもよい。バージョンまたはメタデータが要求されると、インタラクション同期モジュール６１６は、そのようなバージョン及びメタデータの情報をコンテンツストレージ６２０から取得する。コンテンツストレージ６２０に関して説明したように、インタラクション同期モジュール６１６はバージョン情報を提供してもよく、様々なコンテンツアイテムのバージョンに関して変更する。コンテンツアイテムに対するチャットメッセージが受信された場合、インタラクション同期モジュール６１６は、プレゼンスデータストア６２４に問い合わせて、コンテンツアイテムに対する記憶されたプレゼンスレコードと関連付けられた装置ＩＤを識別し、これらの識別された装置へチャットメッセージを配信する。
【０１０４】
コンテンツアイテムへの変更が装置によってなされた場合、プレゼンスレコードは、コンテンツアイテムとインタラクションを行っている個別のユーザインタフェース要素を知的かつ円滑に更新するために用いられてもよい。コンテンツアイテムに対するそのような変化には、（例えば、他のフォルダまたはディレクトリへの）コンテンツアイテムの移動、コンテンツアイテムの削除、及び、コンテンツアイテムの新バージョンのコミットが含まれる。
【０１０５】
図１０は、プレゼンス情報を使用してコンテンツアイテムに対する修正を同期させるプロセスのフローチャートを示す図である。様々な実施形態に従い、このプロセスは、インタラクション同期モジュール６１６又はクライアントアプリケーション２００によって実行されてもよい。コンテンツアイテムに対する変更が受信された場合（１０００）、影響を受けたコンテンツアイテムに対するプレゼンスレコードがアクセスされて（１０１０）、各ユーザインタフェース要素と関連付けられたプレゼンス情報が判定される（１０２０）。ユーザインタフェース要素のプレゼンスとコンテンツアイテムへの変更に依存して、アクションが実行するユーザインタフェース要素に対するクライアントアプリケーションへ送信され、ユーザインタフェース要素をコンテンツアイテムへの変更に調和させる。
【０１０６】
ユーザインタフェース要素が「オープン（開く）」プレゼンスと関連付けられていた場合（すなわち、ユーザインタフェース要素はコンテンツアイテムとのインタラクションを行ったが、ディスプレイにおいてアクティブなユーザインタフェース要素ではない）、ユーザインタフェース要素を制御するプロセスへ送信されたアクションは、典型的には、コンテンツアイテムの変化をシームレスに統合するようにプロセスに命令する（１０３０）。例えば、コンテンツアイテムの新バージョンがコミットされた場合、プロセスは、閉じて（クローズ）、自動的に新たな変更されたコンテンツアイテムを再度開くように命令される。コンテンツアイテムが移動された場合、プロセスは、そのコンテンツアイテムを閉じて、新たな位置でコンテンツアイテムを再度開くように命令されてもよい。コンテンツアイテムが削除された場合、プロセスはコンテンツアイテムを閉じるように命令されてもよい。プレゼンスレコードがユーザインタフェース要素は閲覧中であることを識別した場合（例えば、装置上で現在アクティブなユーザインタフェース要素）、ユーザは、「オープン」のプレゼンス情報について説明したアクションを実行する前に通知されてもよい（１０４０）。さらに、ユーザはコンテンツアイテムに対する一定の変化が通知され、さらなるアクションを実行することが促されてもよい。ユーザは、コンテンツアイテムが他のフォルダに移動されたかどうかを気にしないかもしれないが、ユーザは、コンテンツアイテムの削除又は修正を同期する前にコンテンツアイテムの現バージョンを保存するオプションを好むかもしれない。このような状況におけるアクションには、例えば、補助的なユーザインタフェースを介して、修正の同期を継続するか否か、現在のコンテンツアイテムを保存するか否か、あるいは、変更せずに現在のコンテンツアイテムの閲覧を継続するか否かの指示をユーザに求めることが含まれてもよい。
【０１０７】
ユーザインタフェース要素がコンテンツアイテムの編集中と関連付けられていることをプレゼンスレコードが示した場合（例えば、ユーザインタフェース要素がコンテンツアイテムの未保存の修正と関連付けられている場合）、アクションは、ユーザが行った全ての編集を含むコンテンツアイテムを保存するか、あるいは、コンテンツアイテムの未編集のバージョンを保存するためのオプションをユーザに提示してもよい（１０５０）。例えば、変更によりコンテンツアイテムが削除された場合、アクションには、修正されたコンテンツアイテムを保存するオプションの提示を含む。変更によりコンテンツアイテムが移動された場合、アクションは、編集済のコンテンツアイテムをコンテンツアイテムの新たな位置と同期することを支援してもよい。例えば、アクションは、コンテンツアイテムのあらゆる修正を保存するようにクライアントアプリケーション２００に対して命令してもよい。
【０１０８】
変更によりコンテンツアイテムの新バージョンがコミットされてユーザインタフェース要素がコンテンツアイテムの修正と関連付けられた場合（例えば、編集中プレゼンス）、アクションは、新バージョンをユーザに通知し、（既存のコンテンツアイテムとのバージョニングの衝突を避けるために）他の文書へのユーザ変更の保存又はユーザ変更の破棄をユーザに促してもよい。アクションはまた、新たにコミットされたバーションを、ユーザインタフェース要素においてなされた修正とマージすることを試みてもよい。そのようなマージには、コンテンツアイテムへのコミットされた変更を識別し、コミットされた変更をユーザインタフェース要素のコンテンツアイテムに組み込むことを試みるようにユーザ装置に命令することが含まれてもよい。
【０１０９】
図１１は、一実施形態に係るインタラクション情報のフォルダレベル表示を示す図である。図１１に示す実施形態において、装置１００のユーザインタフェースモジュール２０２は、同期されたコンテンツアイテムをナビゲートするためのブラウザ１１００をユーザに表示する。前述のように、同期されたコンテンツアイテムは、同期されたコンテンツアイテムは、個別のフォルダ又は共有フォルダと関連付けられてもよい。ブラウザ１１００はコンテンツ管理システム１１０と同期されたコンテンツアイテムを表示し、同期されたコンテンツアイテムとそのようなコンテンツアイテムの編成をユーザがナビゲートすることを可能にする。図１１に示す例において、ブラウザ１１００は、共有フォルダに対するコンテンツアイテムのコレクションを示している。このコレクションのビュー（例えば、フォルダ）はまた、ブラウザ１１００により表示されるコンテンツアイテムの一定の「編成」とも呼ばれる。共有フォルダの編成は階層的であってもよく、例えば、コレクション内の数個の編成要素を含んでもよい。各編成要素は、編成内のコンテンツアイテムをさらに編成するコンテンツアイテムである。例えば、編成要素の１つの種類はフォルダであり、フォルダは、そのフォルダ内に１つ以上のフォルダを含んでもよい。例えば、コレクション、集合、プレイリスト、あるいはコンテンツアイテムを編成及び管理する他の任意の好適なグルーピングなどの、他の編成要素を用いてもよい。ユーザは、編成要素を選択し、編成構造をナビゲートすることにより、コンテンツアイテムの編成を階層的にナビゲートしてもよい。ブラウザ１１００は、ブラウザ１１００に示されたコンテンツアイテムに関するインタラクション情報を表示する。このようにして、ユーザは共有ないし同期フォルダをナビゲートして、ユーザはコンテンツアイテムとのインタラクションを閲覧してもよい。以下にさらに説明するように、これによりユーザは、共有フォルダ及びコンテンツアイテムとの現在及び最近のインタラクションを識別することができる。
【０１１０】
一実施形態において、インタラクション情報がクライアントにより受信された場合、クライアントは受信したインタラクション情報を共有フォルダ、任意の関連する編成、及び、編成要素と関連付ける。例えば、コンテンツアイテムは、特定の共有フォルダ内のフォルダＡと関連付けられてもよい。インタラクション情報は、コンテンツアイテム、共有フォルダ、及び、フォルダＡと関連付けられてもよい。図１１に示すように、ブラウザ１１００は、編成要素を含む数個のコンテンツアイテムを表示してもよい。この例では、ブラウザ１１００は、数個のフォルダ編成要素、並びに、「プロジェクトタスクリスト」及び「第１四半期レベニューレポート」のコンテンツアイテムを示している。
【０１１１】
共有コンテンツアイテムについてのインタラクション情報及び他の情報は、編成要素を含む各コンテンツアイテムに対して状態インジケータ（具体的には、状態インジケータ１１１０Ａ〜１１１０Ｆ、一般に、状態インジケータ１１１０）を生成するために解析される。状態インジケータは、コンテンツアイテム又は編成要素に対するインタラクション情報又は同期状態を表示する視覚情報を提供する。この例では、状態インジケータ１１１０は、関連アイテム（コンテンツアイテム又は編成要素）が最新版であること、現在更新又は修正を受けていること、あるいは、プレゼンス情報と関連付けられていることを示してもよい。編成要素と関連付けられた状態インジケータは、編成要素に包含されるコンテンツアイテム及びさらなる編成要素を識別し、編成要素に包含されるアイテムの状態を表示することにより、判定されてもよい。
【０１１２】
この例では、状態インジケータ１１１０Ａは、フォルダ「納税申告書」がコンテンツ管理システム１１０と現在同期されていることを示している。フォルダ「納税申告書」は、他のユーザに共有されていない編成要素である。
【０１１３】
状態インジケータ１１１０Ｂは、フォルダ「ミュージック」が修正を現在受信しており、この編成要素内のコンテンツアイテムの状態をコンテンツ管理システム１１０と同期中であることを示している。
【０１１４】
状態インジケータ１１１０Ｃは、フォルダ「共有家計費」がコンテンツ管理システム１１０と現在同期されていることを示している。このフォルダは、「共有フォルダ」の指定により示されているように、他のユーザにより共有され、同期されている。
【０１１５】
状態インジケータ１１１０Ｄは、「＋８」により示されるように、フォルダ「四半期レベニューレポート」が、８人の他のユーザに関するプレゼンス情報と現在関連付けられていることを示している。この実施形態では、編成要素又はコンテンツアイテムに関するプレゼンス情報を有するユーザ数が、カウンタにより指定される。「四半期レベニューレポート」に関するプレゼンス情報は、編成アイテムにより編成されたコンテンツアイテム及び他の編成アイテムと関連付けられる。例えば、６人のユーザが、「四半期レベニューレポート」のコンテンツアイテムに関するプレゼンス情報と関連付けられてもよい一方で、２人のユーザが「四半期レベニューレポート」のさらなる編成要素と関連付けられてもよい。すなわち、２人のユーザがコンテンツアイテムとのインタラクションを行っていてもよい「四半期レベニューレポート」の中に、さらなるフォルダが存在してもよい。ユーザは「四半期レベニューレポート」を（ブラウザにより表示された編成としてではなく）１つの編成要素として閲覧しているため、ブラウザは、「四半期レベニューレポート」内のコンテンツアイテムと関連付けられた連結されたインタラクション情報の情報を表示する。ユーザは、編成要素それ自体をブラウズするために、さらには、他のユーザにより閲覧さもなくばインタラクション（例えば、編集）が行われているコンテンツアイテムを識別するために、編成要素を選択してもよい。
【０１１６】
同様に、状態インジケータ１１１０Ｅは、「＋２」により示されるように、フォルダ「効率改善プロジェクト」が、２人の他のユーザに関するプレゼンス情報と現在関連付けられていることを示している。
【０１１７】
状態インジケータ１１１０Ｆは、コンテンツアイテム「プロジェクトタスクリスト」が、アイコンが表示されているユーザに対するプレゼンス情報と関連付けられていることを示している。そのような情報を表示する様々な方法において、ユーザのアイコンが表示されてもよいし、又は、状態インジケータが＋１あるいは他の個別化されていないインジケータを示してもよい。このようにして、ブラウザ１１００において、ユーザは、ブラウザのビューと関連付けられた様々なコンテンツアイテム及び編成要素に関するインタラクション情報を閲覧してもよく、これにより、ユーザは、どのアイテム又は編成要素が他のユーザによりインタラクションを行われているかを一見して把握することができる。
【０１１８】
状態インジケータ１１１０に加えて、ブラウザ１１００はまた、様々な状態インジケータ１１１０と関連付けられたアクティブユーザリスト１１２０を表示してもよい。閲覧する個別のユーザを選択するために、ユーザは、フィルタアイコン１１５０とともに、アクティブユーザリスト１１２０とインタラクションを行ってもよい。例えば、ユーザは、アクティブユーザリスト１１２０のユーザ「ジョン」はアクティブであり、プレゼンス情報と関連付けられていることを理解する。ユーザは、「ジョン」を選択するためにフィルタ１１５０を選択してもよく、ユーザインタフェースモジュール２０２により管理されたブラウザは、表示されているインタラクション情報を「ジョン」のみに関係する情報にフィルタリングする。
【０１１９】
加えて（あるいは、さもなければ）、ユーザは、アクティブユーザリスト１１２０のユーザを選択して、ユーザがインタラクションを行っている一定のコンテンツアイテムを識別してもよい。具体的には、そのユーザと関連付けられているプレゼンス情報が識別され、結果生じるコンテンツアイテムが表示される。これにより、たとえ他のユーザが、編成階層においてサブ・サブ・サブフォルダ又は他の深い編成要素におけるコンテンツアイテムについてアクティブである場合であっても、そのユーザがアクティブなコンテンツアイテムをユーザが素早く識別することが可能となるようにしてもよい。したがって、閲覧中のユーザは、コンテンツアイテムの編成内のどこで他のユーザがアクティブであるかを素早く「発見」してもよい。
【０１２０】
ブラウザ１１００はまた、ユーザに表示されているビュー、及び、現在表示されている編成と関連付けられている様々なコンテンツアイテム及び編成要素に関するアクティビティフィード１１３０をも表示する。アクティビティフィードは、図５Ａ〜図５Ｄに関して議論したコンテンツアイテムのユーザのビューに関して説明したように、あらゆるインタラクション情報を表示してもよい。例えば、アクティビティフィード１１３０Ａは、いつユーザのプレゼンスが変化したか（例えば、コンテンツアイテムを開いた又は閉じた）を表示する。アクティビティフィードアイテム１１３０Ｂは、ユーザがファイルの新バージョンを保存したことを示し、図１０に関して前述したように、応答を選択するようにユーザに促している。ブラウザ１１００において、コンテンツアイテムへの修正は、その修正がローカルコンテンツデータストア２０８への同期に成功するまで、アクティビティフィード１１３０に表示されなくてもよい。
【０１２１】
アクティビティフィードアイテム１１３０Cにより示されているように、一定の編成アイテム（例えば、フォルダ「効率改善プロジェクト」）又は一定のコンテンツアイテム（例えば、コンテンツアイテム「Project Goals.txt」）に関するチャットメッセージがアクティビティフィード１１３０に表示されている。同様に、アクティビティフィードアイテム１１３０Ｄ、１１３０Ｅに示すように、編成アイテム内のコンテンツアイテムに関するユーザのプレゼンスアクティビティにおける変化もまた表示されてもよい。
【０１２２】
最後に、アクティビティフィード１１３０はまた、共有フォルダ、コンテンツアイテム、又は、編成アイテムに関するメタデータに対する様々な変化をユーザに通知してもよい。例えば、コンテンツアイテムへの修正、削除、若しくは、追加、あるいは、共有フォルダへの新ユーザの追加（１１３０Ｆ）などである。ユーザはまた、チャット要素１１４０において、チャットメッセージ、又は、他のインタラクション情報を入力してもよい。このメッセージはユーザの編成ビューと関連付けられており、この例では、「マイワークスペース」共有フォルダと関連付けられている。これにより、ユーザは、コンテンツアイテム若しくはフォルダ、あるいは、ブラウザ１１００それ自身からの共有フォルダについて通信することができる。
【０１２３】
このようにして、ブラウザ１１００は、コンテンツアイテムのネイティブアプリケーションの入力をユーザに強いることなく、様々なコンテンツアイテム及び編成要素に関する詳細なプレゼンス及びインタラクションの情報を表示し、ユーザがコンテンツアイテムについての変化及びデータを一見して閲覧することを可能にする。
【０１２４】
したがって、各ユーザインタフェース要素と関連付けられたプレゼンスは、コンテンツアイテムが修正された場合のユーザ体験を円滑にするために用いられる。そこで、ユーザがユーザインタフェース要素を閉じる前に、ユーザはコンテンツアイテム通知を通知されてもよく、これにより、ユーザがそれを閉じた直後の同期によってコンテンツアイテムが変化又は削除された場合にユーザが驚く可能性を低減する。
【０１２５】
前述の本発明の実施形態は例示の目的のために提示されたものであり、網羅的であることや、本発明を開示されたとおりの形態に限定することを目的とするものではない。関連分野の当業者は、上記開示を踏まえて多数の修正及び変形が可能であることを理解することができる。
【０１２６】
本明細書のいくつかの部分は、情報に対する動作のアルゴリズム及び記号表現の観点から本発明の実施形態を説明している。これらのアルゴリズム的な記述及び表現は、データ処理分野の当業者により、その業績を他の当業者に効率的に伝えるために一般に用いられている。これらの動作は、機能的、計算的、あるいは、論理的に記述される一方で、コンピュータプログラム、あるいは、同等の電子回路、マイクロコードその他によって実装されることが理解される。さらに、これらの動作の配置をモジュールとして参照することは、一般性を失わずに、便利な場合があることも証明されている。上述の動作及び関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、又は、これらの任意の組み合わせにより実施してもよい。
【０１２７】
本明細書に記載の任意のステップ、動作、あるいは、プロセスは、１つ以上のハードウェアまたはソフトウェアのモジュールの、単独、又は、他の装置との組み合わせを用いて、実行ないし実装してもよい。一実施形態において、ソフトウェアモジュールは、コンピュータにより実行可能な、コンピュータプログラムコードを含むコンピュータ可読記憶媒体を備えたコンピュータプログラム製品を用いて実装される。
【０１２８】
本発明の実施形態はまた、上述の動作を実行する装置にも関連してもよい。この装置は、所要の目的に合わせて特別に構成してもよいし、コンピュータに記憶されたコンピュータプログラムによって選択的に起動ないし再構成される汎用コンピュータ装置を備えてもよいし、あるいは、これらの両方でもよい。このようなコンピュータプログラムは、コンピュータシステムバスに結合してもよい、一時的でない有形のコンピュータ可読記憶媒体、又は、電子命令を記憶するのに適した任意の種類のメディアに記憶してもよい。さらに、本明細書で参照された任意のコンピュータシステムは、単一のプロセッサを含んでもよいか、あるいは、計算性能の増大のために複数プロセッサのデザインを採用しているアーキテクチャであってもよい。
【０１２９】
本発明の実施形態はまた、前述のコンピュータプロセスによって製作された製品に関してもよい。このような製品は計算プロセスの結果として生じた情報を備えてもよく、その情報は一時的でない有形のコンピュータ可読記憶媒体に記憶され、本明細書に記載のコンピュータプログラム製品又は他のデータの組み合わせの任意の実施形態を含んでもよい。
【０１３０】
最後に、本明細書の使用言語は、主に可読性や教育上の目的のために選択されたものであり、発明対象を描写ないし制限するために選択されたものではない。したがって、発明の技術的範囲は、発明の詳細な説明ではなく、むしろ本明細書が基づく特許出願において発行されている任意の請求項によって定められることが意図されている。そのため、発明の実施形態の開示は実例であることが意図されており、以下の特許請求の範囲に記載の発明の技術的範囲を制限することを意図したものではない。
【図１】
2020187759.tif 000003
【図２】
2020187759.tif 000004
【図３Ａ】
2020187759.tif 000005
【図３Ｂ】
2020187759.tif 000006
【図４】
2020187759.tif 000007
【図５Ａ】
2020187759.tif 000008
【図５Ｂ】
2020187759.tif 000009
【図５Ｃ】
2020187759.tif 000010
【図５Ｄ】
2020187759.tif 000011
【図６】
2020187759.tif 000012
【図７】
2020187759.tif 000013
【図８】
2020187759.tif 000014
【図９】
2020187759.tif 000015
【図１０】
2020187759.tif 000016
【図１１】
2020187759.tif 000017
【手続補正書】
【提出日】令和2年7月29日(2020.7.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
方法であって、
コンテンツ管理システムが、ユーザのユーザアカウントと関連付けられた装置上のプレゼンスアプリケーションから、前記プレゼンスアプリケーションとは異なり且つ前記プレゼンスアプリケーションによって監視されるネイティブアプリケーションと関連付けられたユーザインタフェース要素とのユーザインタラクションを示すプレゼンス情報を受信することであって、前記ネイティブアプリケーションと関連付けられた前記ユーザインタフェース要素は、前記装置に記憶され且つ前記コンテンツ管理システムと同期されたコンテンツアイテムにアクセスする、受信することと、
前記コンテンツ管理システムが、前記受信したプレゼンス情報に基づいて、前記コンテンツアイテムに対応するプレゼンスレコードの集合を更新することであって、各プレゼンスレコードは、監視されるユーザインタフェース要素の、プレゼンス状態と識別子とを識別する、更新することと、
前記コンテンツ管理システムが、前記コンテンツアイテムに対応する前記更新されたプレゼンスレコードの集合に基づいて、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定することと、
前記コンテンツ管理システムが、前記コンテンツアイテムの同期されたローカルコピーを維持する別の装置上の第２のプレゼンスアプリケーションに、前記ユーザが前記コンテンツアイテムとインタラクションしたことの通知を送信することと、を含む方法。
【請求項２】
請求項１に記載の方法であって、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定することは、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを開いたことを判定することを含む、方法。 
【請求項３】
請求項１に記載の方法であって、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定することは、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを編集したことを判定することを含む、方法。 
【請求項４】
請求項１に記載の方法であって、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定することは、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを閉じたことを判定することを含む、方法。
【請求項５】
請求項１に記載の方法であって、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定することは、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを保存したことを判定することを含む、方法。
【請求項６】
請求項１に記載の方法であって、前記ユーザインタフェース要素は、前記ネイティブアプリケーションのウィンドウである、方法。
【請求項７】
請求項６に記載の方法であって、前記ウィンドウは少なくとも前記コンテンツアイテムの部分の表示を含む、方法。
【請求項８】
システムであって
命令を実行するように構成される少なくとも１つのプロセッサと、
命令を含む記録媒体であって、前記命令は、前記少なくとも１つのプロセッサによって実行されると前記少なくとも１つのプロセッサに、
コンテンツ管理システムが、ユーザのユーザアカウントと関連付けられた装置上のプレゼンスアプリケーションから、前記プレゼンスアプリケーションとは異なり且つ前記プレゼンスアプリケーションによって監視されるネイティブアプリケーションと関連付けられたユーザインタフェース要素とのユーザインタラクションを示すプレゼンス情報を受信することであって、前記ネイティブアプリケーションと関連付けられた前記ユーザインタフェース要素は、前記装置に記憶され且つ前記コンテンツ管理システムと同期されたコンテンツアイテムにアクセスする、受信することと、
前記コンテンツ管理システムが、前記受信したプレゼンス情報に基づいて、前記コンテンツアイテムに対応するプレゼンスレコードの集合を更新することであって、各プレゼンスレコードは、監視されるユーザインタフェース要素の、プレゼンス状態と識別子とを識別する、更新することと、
前記コンテンツ管理システムが、前記コンテンツアイテムに対応する前記更新されたプレゼンスレコードの集合に基づいて、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定することと、
前記コンテンツ管理システムが、前記コンテンツアイテムの同期されたローカルコピーを維持する別の装置上の第２のプレゼンスアプリケーションに、前記ユーザが前記コンテンツアイテムとインタラクションしたことの通知を送信することと、のステップを実行させるシステム。
【請求項９】
請求項８に記載のシステムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを開いたことを判定する追加のステップを実行させる、システム。 
【請求項１０】
請求項８に記載のシステムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを編集したことを判定する追加のステップを実行させる、システム。 
【請求項１１】
請求項８に記載のシステムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを閉じたことを判定する追加のステップを実行させる、システム。
【請求項１２】
請求項８に記載のシステムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを保存したことを判定する追加のステップを実行させる、システム。
【請求項１３】
請求項８に記載のシステムであって、前記ユーザインタフェース要素は、前記ネイティブアプリケーションのウィンドウである、システム。
【請求項１４】
請求項１３に記載のシステムであって、前記ウィンドウは少なくとも前記コンテンツアイテムの部分の表示を含む、システム。
【請求項１５】
実行可能な命令を含むコンピュータプログラムであって、前記命令は、少なくとも１つのプロセッサによって実行されると前記少なくとも１つのプロセッサに、
コンテンツ管理システムが、ユーザのユーザアカウントと関連付けられた装置上のプレゼンスアプリケーションから、前記プレゼンスアプリケーションとは異なり且つ前記プレゼンスアプリケーションによって監視されるネイティブアプリケーションと関連付けられたユーザインタフェース要素とのユーザインタラクションを示すプレゼンス情報を受信することであって、前記ネイティブアプリケーションと関連付けられた前記ユーザインタフェース要素は、前記装置に記憶され且つ前記コンテンツ管理システムと同期されたコンテンツアイテムにアクセスする、受信することと、
前記コンテンツ管理システムが、前記受信したプレゼンス情報に基づいて、前記コンテンツアイテムに対応するプレゼンスレコードの集合を更新することであって、各プレゼンスレコードは、監視されるユーザインタフェース要素の、プレゼンス状態と識別子とを識別する、更新することと、
前記コンテンツ管理システムが、前記コンテンツアイテムに対応する前記更新されたプレゼンスレコードの集合に基づいて、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定することと、
前記コンテンツ管理システムが、前記コンテンツアイテムの同期されたローカルコピーを維持する別の装置上の第２のプレゼンスアプリケーションに、前記ユーザが前記コンテンツアイテムとインタラクションしたことの通知を送信することと、のステップを実行させるコンピュータプログラム。
【請求項１６】
請求項１５に記載のコンピュータプログラムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを開いたことを判定する追加のステップを実行させる、コンピュータプログラム。 
【請求項１７】
請求項１５に記載のコンピュータプログラムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを編集したことを判定する追加のステップを実行させる、コンピュータプログラム。 
【請求項１８】
請求項１５に記載のコンピュータプログラムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを閉じたことを判定する追加のステップを実行させる、コンピュータプログラム。
【請求項１９】
請求項１５に記載のコンピュータプログラムであって、前記少なくとも１つのプロセッサに、更に、前記ユーザが前記コンテンツアイテムとインタラクションしたことを判定する場合に、前記更新されたプレゼンスレコードの集合から、前記ユーザが前記コンテンツアイテムを保存したことを判定する追加のステップを実行させる、コンピュータプログラム。
【請求項２０】
請求項１５に記載のコンピュータプログラムであって、前記ユーザインタフェース要素は、少なくとも前記コンテンツアイテムの部分の表示を含む、前記ネイティブアプリケーションのウィンドウである、コンピュータプログラム。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３５
【補正方法】変更
【補正の内容】
【００３５】
ネイティブアプリケーション２５５はまた、ユーザがコンテンツアイテムを修正した場合に、ユーザがそのコンテンツアイテムを保存する前に様々な挙動を行う。これらの挙動はアプリケーションやオペレーティングシステム２４５に基づいて変化する。例えば、いくつかのネイティブアプリケーション２５５は、例えばティルデ又は他の見分けのつくマークを有するコンテンツアイテムの一時的なファイル名を導いて、オープン（開かれた）コンテンツアイテムと異なるファイル名で一時的なコンテンツアイテムを作成する。他の例では、ネイティブアプリケーション２５５は、コンテンツアイテムと関連付けられたユーザインタフェース要素のタイトルを変更し、それはユーザから直接閲覧できてもよいしできなくてもよい。さらに他の例では、ネイティブアプリケーション２５５は、コンテンツアイテムが修正されたことを示すフラグを設定する。ネイティブアプリケーション２５５はまた、他のアプリケーション又はオペレーティングシステムからの要求に応じて、コンテンツアイテムの修正に関する情報を提供してもよい。例えば、前述のＯＳ  ＸオペレーティングシステムにおけるアクセシビリティＡＰＩは、ユーザインタフェース要素と関連付けられたコンテンツアイテムに関する情報を提供する。オープンコンテンツアイテムのハンドルは、コンテンツアイテムがネイティブアプリケーション２５５によって編集されているか否かを確実に判定するものではないかもしれないため、以下にさらに説明するように、これらの挙動は、インタラクション管理モジュール２０４がコンテンツアイテムの編集又は修正に関するプレゼンスを判定するために用いられる。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】００５５
【補正方法】変更
【補正の内容】
【００５５】
インタラクション情報に変化があった場合、インタラクション管理モジュール２０４は、インタラクション情報をコンテンツ管理システム１１０へ送信する（４７０）。一実施形態において、送信されるプレゼンス情報には、コンテンツアイテムの識別子、プロセスＩＤ、ユーザインタフェース要素ＩＤ、及び、プレゼンス状態が含まれる。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】００６２
【補正方法】変更
【補正の内容】
【００６２】
このインタフェースはまた、ユーザが、コンテンツアイテムにプレゼンスを有する他のユーザと通信するためのチャットインタフェース５３０を提供する。チャットインタフェース５３０は、ユーザが他のユーザに参加してメッセージを受信することを可能にする。プレゼンスの変化はまた、例えば、アマンダが今コンテンツアイテムを閲覧しているという、チャットインタフェース５３０において示すこともできる。チャットインタフェース５３０は、ユーザがアイテムの編集を終えることを予期している場合などに、そのコンテンツアイテムに関する情報についてユーザが具体的に議論することを可能にしてもよい。これらのチャットメッセージは、インタラクション管理モジュール２０４によりインタラクション情報として受信され、そのコンテンツアイテムと同期された他のクライアントへ送信される。これにより、ネイティブアプリケーションがチャットの機能性を提供していない場合であっても、コンテンツアイテムについてユーザは直接チャットをすることができる。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】００８２
【補正方法】変更
【補正の内容】
【００８２】
コンテンツ管理システム１１０はまた、ユーザのクレデンシャル、セキュリティトークン、ＡＰＩコール、専用装置等を検証して、要求されたコンテンツアイテムへのアクセスが認可されたものか否かを判定する認証モジュール６０６を有し、これはこの機能を実行する１つの手段である。認証モジュール６０６は、ユーザアカウントに対してワンタイム使用の認証トークンを生成することができる。認証モジュール６０６は、各認証トークンに対して有効期間又は有効期限を割り当てる。認証トークンを要求装置へ送信することに加えて、認証モジュール６０６は、生成した認証トークンを認証トークンデータベース６２２に記憶することができる。認証トークンの正当性検証の要求を受信すると、認証モジュール６０６は、ユーザに割り当てられた適合認証トークンを求めて認証トークンデータベース６２２をチェックする。認証モジュール６０６が適合認証トークンを識別するとすぐに、認証モジュール６０６は、適合認証トークンがまだ有効か否かを判定する。例えば、認証モジュール６０６は、認証トークンが失効していないか、あるいは、使用済み又は無効なものとしてマークされていないかを検証する。認証トークンの正当性検証の後、認証モジュール６０６は、使い捨てトークン等の適合認証トークンを無効化してもよい。例えば、認証モジュール６０６は、適合認証トークンを使用済み又は無効なものとしてマークしたり、あるいは、適合認証トークンを認証トークンデータベース６２２から削除することができる。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００８４
【補正方法】変更
【補正の内容】
【００８４】
いくつかの実施形態において、コンテンツ管理システム１１０は、コンテンツストレージ６２０の各コンテンツアイテムの位置を識別し、クライアントアプリケーションがストレージ６２０内のコンテンツアイテムへのアクセスを要求することを可能にするコンテンツディレクトリを維持するコンテンツアイテム管理モジュール６０８を有し、これはこの機能を実行する１つの手段である。コンテンツディレクトリのコンテンツエントリはまた、コンテンツストレージ６２０のコンテンツアイテムの位置を識別するコンテンツポインタを有することができる。例えば、コンテンツエントリは、メモリ内のコンテンツアイテムのストレージアドレスを指定するコンテンツポインタを有することができる。いくつかの実施形態において、コンテンツエントリは、それぞれコンテンツアイテムの一部を含む、複数の位置を指す複数のコンテンツポインタを有する。
【手続補正７】
【補正対象書類名】明細書
【補正対象項目名】０１０２
【補正方法】変更
【補正の内容】
【０１０２】
次に、インタラクション同期モジュール６１６は、変更されたユーザプレゼンスに関して更新する装置を識別する（９４０）。一実施形態において、コンテンツアイテムと同期されるあらゆる装置が更新される。他の実施形態において、プレゼンステーブル８１０は、コンテンツアイテムと関連付けられたプレゼンスを有する装置を判定するために参照される。さらに、インタラクション同期モジュール６１６は、ユーザプレゼンスにおける変化により何らかの通知がトリガされたか否かを判定する。記憶された通知がアクセスされ、通知に対する状態がコンテンツアイテムに関する変更されたプレゼンスと比較される。識別された装置を用いて、インタラクション同期モジュール６１６は、更新されたプレゼンス情報を識別された装置へ送信する（９５０）。１つの構成において、ユーザプレゼンスは、識別された装置へ提供される。他の構成において、付加的な情報もまた提供されてもよい。このようにして、ユーザプレゼンス情報は、例えば、プレゼンスインジケータにおいて、あるいは、通知要求に応じて、ユーザに実際に表示されてもよいユーザプレゼンスに作用する場合にのみプレゼンス情報を配信するように、コンテンツ管理システム１１０によって管理される。
【外国語明細書】
2020187759000001.pdf