(57)【要約】  コンテンツ管理システムは、コンテンツ管理システムと複数のデバイスとの間で同期されている共有コンテンツアイテム用のユーザ通知キューを生成、変更する。ユーザ通知キューは共有コンテンツアイテムとの相互作用を含み、該相互作用をユーザに提示することで、他の共有ユーザによる共有コンテンツアイテムとの最近の相互作用を示すことができる。コンテンツ管理システムは、ユーザがコンテンツアイテムにアクセスしたとき、そのユーザのデバイスに、そのユーザに対応するユーザ通知キューを送信する。クライアントデバイスは、デバイス上のプロセスに関連付けられたウインドウにコンテンツアイテムを表示する。クライアントアプリケーションは、ユーザにユーザ通知キューの内容を提示する相互作用インジケータを表示する。【選択図】図６Ｄ
2019509538.tif 000002
【特許請求の範囲】
【請求項１】
複数のユーザのうちの第１ユーザによるコンテンツアイテムとの相互作用を示す相互作用イベントの通知を受信することであって、前記コンテンツアイテムがコンテンツ管理システムと複数のデバイスとの間で同期されており、各デバイスが前記コンテンツアイテムの共有先の前記複数のユーザのうちのひとつに関連付けられている、受信することと、
前記相互作用のタイプおよび前記相互作用の優先度を決定することと、
前記複数のユーザのうち、前記第１ユーザを除く各ユーザについて、
前記他のユーザおよび前記コンテンツアイテムに関連付けられた通知キューが前記第１ユーザによるより高い優先度の相互作用を含むか否かを判定し、
前記通知キューが前記第１ユーザによるより高い優先度の相互作用を含まないとの判定に応じて、前記通知キューに前記相互作用を追加し、
前記通知キューから、前記第１ユーザによるより低い優先度の相互作用を取り除くことと、を含み、
前記相互作用の前記タイプおよび前記相互作用の前記優先度を決定することは、前記コンテンツアイテムにおいて共同作業が生じていないとの判定に応じて行われる方法。
【請求項２】
第２ユーザに関連付けられた前記通知キューを前記第２ユーザに関連付けられたデバイスに送信することをさらに含む請求項１に記載の方法。
【請求項３】
前記第２ユーザが前記コンテンツアイテムにおいて共同作業していないとの判定に応じて、前記第２ユーザに前記通知キューが送信される請求項２に記載の方法。
【請求項４】
前記相互作用イベントは前記第１ユーザが前記コンテンツアイテムを視たことを示す請求項１に記載の方法。
【請求項５】
前記相互作用イベントは前記第１ユーザが前記コンテンツアイテムを編集したことを示す請求項１に記載の方法。
【請求項６】
前記相互作用イベントは前記第１ユーザが前記コンテンツアイテムについてコメントしたことを示す請求項１に記載の方法。
【請求項７】
インストラクションを実行するように構成されるプロセッサと、
インストラクションを含む非一時的不揮発性保持媒体と、を備え
前記インストラクションは、前記プロセッサによって実行されると、前記プロセッサに、
第１ユーザによるコンテンツアイテムアクセスの通知を受信することであって、前記コンテンツアイテムがコンテンツ管理システムと複数のデバイスとの間で同期されており、各デバイスが前記コンテンツアイテムの共有先の複数のユーザのうちのひとつに関連付けられている、受信することと、
前記第１ユーザが前記コンテンツアイテムにおいて共同作業しているか否かを判定することと、
前記第１ユーザが前記コンテンツアイテムにおいて共同作業していないとの判定に応じて、前記コンテンツ管理システムに保持されている通知キューを前記第１ユーザに関連付けられたデバイスに送信することと、
前記第１ユーザが前記コンテンツアイテムにおいて共同作業しているとの判定に応じて、前記通知キューをクリアすることと、を行わせ、
前記通知キューは、前記複数のユーザのうちのユーザによる前記コンテンツアイテムとの複数の相互作用を含むシステム。
【請求項８】
前記複数の相互作用のうちのひとつは前記コンテンツアイテムの閲覧である請求項７に記載のシステム。
【請求項９】
前記複数の相互作用のうちのひとつは前記コンテンツアイテムの編集である請求項７に記載のシステム。
【請求項１０】
前記複数の相互作用のうちのひとつは前記コンテンツアイテムへのコメントである請求項７に記載のシステム。
【請求項１１】
前記インストラクションはさらに、前記プロセッサに、
前記第１ユーザが前記通知キューを視たという通知を受信することと、
前記通知キューをクリアすることと、を行わせる請求項７に記載のシステム。
【請求項１２】
コンピュータプログラムコードを含むコンピュータ可読保持媒体を備えるコンピュータプログラム製品であって、前記コンピュータプログラムコードは、プロセッサに、
複数のユーザのうちの第１ユーザによるコンテンツアイテムとの相互作用を示す相互作用イベントの通知を受信することであって、前記コンテンツアイテムがコンテンツ管理システムと複数のデバイスとの間で同期されており、各デバイスが前記コンテンツアイテムの共有先の前記複数のユーザのうちのひとつに関連付けられている、受信することと、
前記相互作用のタイプおよび前記相互作用の優先度を決定することと、
前記複数のユーザのうち、前記第１ユーザを除く各ユーザについて、
前記他のユーザおよび前記コンテンツアイテムに関連付けられた通知キューが前記第１ユーザによるより高い優先度の相互作用を含むか否かを判定し、
前記通知キューが前記第１ユーザによるより高い優先度の相互作用を含まないとの判定に応じて、前記通知キューに前記相互作用を追加し、
前記通知キューから、前記第１ユーザによるより低い優先度の相互作用を取り除くことと、を行わせるよう構成され、
前記相互作用の前記タイプおよび相互作用の前記優先度を決定することは、前記コンテンツアイテムにおいて共同作業が生じていないとの判定に応じて行われるコンピュータプログラム製品。
【請求項１３】
前記コードはさらに、前記プロセッサに、
第２ユーザに関連付けられた前記通知キューを前記第２ユーザに関連付けられたデバイスに送信することを行わせるよう構成される請求項１２に記載のコンピュータプログラム製品。
【請求項１４】
前記第２ユーザが前記コンテンツアイテムにおいて共同作業していないとの判定に応じて、前記第２ユーザに前記通知キューが送信される請求項１３に記載のコンピュータプログラム製品。
【請求項１５】
前記相互作用イベントは前記第１ユーザが前記コンテンツアイテムを視たことを示す請求項１２に記載のコンピュータプログラム製品。
【請求項１６】
前記相互作用イベントは前記第１ユーザが前記コンテンツアイテムを編集したことを示す請求項１２に記載のコンピュータプログラム製品。
【請求項１７】
前記相互作用イベントは前記第１ユーザが前記コンテンツアイテムについてコメントしたことを示す請求項１２に記載のコンピュータプログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は一般にデバイス間で情報を共有することに関し、特にネイティブソフトウエアアプリケーションと共有コンテンツの間の相互作用に関する。
【背景技術】
【０００２】
コンテンツ管理システムは、デバイスに、コンテンツ管理システム及び他のデバイスとの間でコンテンツアイテムを同期することを可能にする。デバイスはコンテンツアイテムのローカルコピーを格納する。コンテンツアイテムがデバイスにおいて追加され、削除され、及び編集される場合、これらの修正は、格納及び他のデバイスとの同期のためにコンテンツ管理システムに送信される。コンテンツアイテムと相互作用するため、ユーザは典型的にはデバイス上のネイティブアプリケーションを実行して、コンテンツアイテムを閲覧し修正する。複数のユーザがコンテンツアイテムと相互作用する場合、多くの場合、それらは電子メールなどの他のアプリケーションを用いてそのコンテンツアイテムについてやりとりする。この種のやりとりはコンテンツアイテムとの相互作用の不完全な描写を提供し、かつ、コンテンツアイテムとの相互作用の記録、追跡をユーザが行うことに依存する。ユーザは、コンテンツアイテムについてやりとりし、そのコンテンツアイテムとの相互作用を視るための便利な方法を欠いており、これは、複数のユーザがひとつのコンテンツアイテムと相互作用する状況に不便さと複雑さを加えるものである。
【発明の概要】
【０００３】
説明される実施の形態は、コンテンツ管理システムを介してコンテンツアイテムを共有するデバイスユーザが、自身のクライアントデバイス上のネイティブアプリケーション内でコンテンツアイテムを視ることおよび変更することを可能とする。様々な実施の形態では、ユーザ通知キューが生成され、変更され、かつクライアントデバイスへ送信される。また、ユーザのデバイスにおいて該ユーザに、ひとつ以上の他のデバイス上での共有コンテンツアイテムとの相互作用を示すグラフィカルおよびテキストの情報が提供される。
【０００４】
様々な実施形態に従うデバイスは、コンテンツ管理システムによってデバイス間で維持及び同期される、共有コンテンツアイテムのローカルコピーを保持する。デバイスは、ワードプロセッサ、メディアビューア、メディアエディタ等のような、コンテンツアイテムにアクセスするために用いられるネイティブアプリケーションを含む。ネイティブアプリケーションは、ウインドウ等のユーザインタフェース要素に、コンテンツアイテムを表示する。デバイスはまた、ネイティブアプリケーションに加えて、コンテンツアイテムとの相互作用を監視し、これらの相互作用についての情報を、直接的に又はコンテンツ管理システムを介してコンテンツアイテムを共有する他のデバイスへ通信するクライアントアプリケーションを含む。
【０００５】
相互作用情報は、ユーザによるクライアントアプリケーションとの相互作用とユーザによるネイティブアプリケーションとの相互作用とを含む。相互作用情報は、メッセージやメモや共同作業要求やプレゼンスイベントなどの相互作用イベントから決定されてもよい。プレゼンスイベントは、ネイティブアプリケーションにおいて生じるプログラム的イベントである。プレゼンスイベントは、コンテンツアイテムを開くこと、コンテンツアイテムを編集すること、コンテンツアイテムを保存すること、コンテンツアイテムの名称変更を行うこと、コンテンツアイテムを移動すること、コンテンツアイテムを削除することを含む。プレゼンスイベントはまた、ユーザインタフェース要素がフォーカスを得たり失ったりするような、ネイティブアプリケーションのユーザインタフェース要素と相互作用することを含む。フォーカスされたユーザインタフェース要素は、デバイスにおけるユーザ操作を受け取るユーザインタフェース要素である。例えば、ユーザインタフェース要素がフォーカスを有する場合、ユーザがユーザインタフェース要素を介してコンテンツアイテムを「閲覧している」ことを示す、プレゼンス情報が生成されてよい。ある実施形態では、プレゼンスイベントは、コンテンツアイテムと相互作用するネイティブアプリケーションとは別のクライアントアプリケーションによって収集される。すなわち、この実施形態では、プレゼンツ情報は、コンテンツアイテム又はプレゼンス情報にアクセスするネイティブアプリケーションに統合されていない、他のアプリケーション又はプロセスによって収集される。
【０００６】
クライアントアプリケーションによって受信されうる追加的なタイプの相互作用情報は、メモと、メッセージと、通知要求と、コンテンツアイテムに関連する共同作業要求と、を含む。メッセージは、他のデバイスへのチャットメッセージ、コンテンツアイテムと相互作用（例えば編集）するユーザの意図を示すメッセージを含んでよい。相互作用情報はまた、バージョン管理上のノートのようなメタデータの修正、又は、バージョン管理情報又は以前のコンテンツアイテムのバージョンを閲覧するための要求のような、コンテンツアイテムに関するコンテンツ管理システムに格納される更なる情報に対する要求を含む。相互作用情報を複数のデバイスによって交換することで、複数のユーザに、他のユーザのコンテンツアイテムとの相互作用に関する情報を提供することができる。
【０００７】
クライアントアプリケーションはデバイス上のイベントを監視して、いつユーザがコンテンツアイテムと相互作用するためにネイティブアプリケーションを使用しているかを判定する。イベントを監視する１つの方法では、クライアントアプリケーションは、ユーザインタフェース要素に関連するイベントを受信するために、ユーザインタフェース要素またはオペレーティングシステムを制御するプロセスに登録する。クライアントアプリケーションはそのような全てのイベント、或いは、コンテンツアイテムを開くことに関連付けられた所定のユーザインタフェース要素のみを監視してよい。プレゼンスイベントが発生した場合、クライアントアプリケーションは、ネイティブアプリケーションから又はオペレーティングシステムからプレゼンスイベントを受信する。クライアントアプリケーションは、イベントと関連付けられたユーザインタフェース要素を識別し、イベントに関連付けられたプレゼンス情報を判定する。クライアントアプリケーションは、同期されたコンテンツアイテムが相互作用されているか相互作用された旨をコンテンツ管理システムに通知し、当該コンテンツ管理システムにプレゼンス情報を送信する。プレゼンス情報（又は他の相互作用情報）は直接他のデバイスに送信されてもよい。
【０００８】
コンテンツ管理システムは相互作用情報を受信し、コンテンツアイテム用のユーザ通知キューを生成し、変更し、共有ユーザのデバイスに送信する。ユーザ通知キューは共有コンテンツアイテムとのひとつ以上の相互作用のグループであり、該相互作用をユーザに提示することで、共有ユーザによる共有コンテンツアイテムとの最近の相互作用を示すことができる。ある実施の形態では、コンテンツアイテムに関連付けられた各共有ユーザは、そのコンテンツアイテムに対応するユーザ通知キューを有する。ユーザ通知キューに加えられる相互作用のタイプは、コンテンツアイテムの閲覧、コンテンツアイテムの編集、コンテンツアイテムの共同作業、コンテンツアイテムへのコメント、およびコンテンツアイテムのメッセージを含んでもよい。ある実施の形態では、相互作用は関連相互作用優先度を有する。相互作用の優先度は、ある相互作用のタイプの、他の相互作用のタイプに対する相対的な優先度を指定する。通知キューモジュールは、候補相互作用およびユーザ通知キュー内の相互作用についての相互作用タイプおよび相互作用優先度を決定する。種々の実施の形態では、通知キューモジュールは、より高い優先度の相互作用を選択してユーザ通知キューに追加し、より低い優先度の相互作用を選択してユーザ通知キューから取り除く。
【０００９】
ユーザがデバイスのネイティブアプリケーション内でコンテンツアイテムを視るとき、コンテンツ管理システムは通知を受信し、そのデバイスに適切なユーザ通知キューを送信する。クライアントアプリケーションはそのコンテンツアイテムについての相互作用情報を表示する。ある実施の形態では、クライアントアプリケーションは、デバイスのユーザインタフェースに、ひとつ以上の相互作用インジケータを提供する。相互作用インジケータは、ユーザに対して、相互作用情報を表示する。これにより、ユーザは、コンテンツアイテムに関する他のユーザの行動を、実質的にリアルタイムでまたは準リアルタイムで、視ることができる。加えて、ネイティブアプリケーションのユーザインタフェースの側にコンテンツ管理システムと通信するためのインタフェースを提示することで、ユーザは、コンテンツアイテムを表示したままで、チャット情報を交換し、そのコンテンツアイテムについてのデータを取得することができ、便利である。
【００１０】
クライアントアプリケーションまたはコンテンツ管理システムは、ユーザに相互作用情報についての通知が提供されたか否か、またはユーザがユーザインタフェースに表示された相互作用情報を視たか否か、を判定してもよく、この情報をコンテンツ管理システムおよびユーザに関連付けられた他のデバイスに送信してもよく、この場合、ユーザにより視られた相互作用情報を複数のデバイスに亘って追跡することができる。この情報を用いることで、クライアントアプリケーションは通知を複製することを避けることができる。その結果、いくつかのデバイス上で同じ相互作用についての通知がユーザになされることはない。
【００１１】
ある実施の形態では、相互作用インジケータは、通知キューの内容を含むまだ視られていない相互作用情報を示すバッジ要素を含む。ユーザはその相互作用インジケータを選択することで、より多くの相互作用情報を視ることができる。クライアントアプリケーションはさらに、ユーザが相互作用情報を視て入力するための相互作用要素を表示してもよい。相互作用情報は、メタデータおよびイベント時刻やユーザ情報などの他の情報と共に、通知チャネルスタイルで表示されてもよい。相互作用要素はさらに、テキスト入力要素や他のチャットインタフェースを含むチャット機能を含んでもよい。ネイティブアプリケーションがチャット機能を提供しない場合であっても、これにより、ユーザはコンテンツアイテムについて直接チャットすることができるようになる。
【図面の簡単な説明】
【００１２】
【図１】相互作用情報の通信とユーザ共同作業とを含む、コンテンツアイテムを同期する環境の実施の形態を示す。
【００１３】
【図２】ある実施の形態に係る、デバイスの様々なモジュールと構成要素を示す。
【００１４】
【図３Ａ】図３Ａ及び３Ｂは、デバイスのデスクトップ表示におけるユーザインタフェース要素のフォーカス変化を示す。
【図３Ｂ】図３Ａ及び３Ｂは、デバイスのデスクトップ表示におけるユーザインタフェース要素のフォーカス変化を示す。
【００１５】
【図４】ある実施の形態に係る、コンテンツ管理システムのコンポーネントを示す。
【００１６】
【図５】ある実施の形態に係る、コンテンツアイテムに関連付けられたプレゼンス情報を判定する例示的処理を示す。
【００１７】
【図６Ａ】図６Ａ−６Ｄは、相互作用情報を表示する例示的ユーザインタフェースを示す。
【図６Ｂ】図６Ａ−６Ｄは、相互作用情報を表示する例示的ユーザインタフェースを示す。
【図６Ｃ】図６Ａ−６Ｄは、相互作用情報を表示する例示的ユーザインタフェースを示す。
【図６Ｄ】図６Ａ−６Ｄは、相互作用情報を表示する例示的ユーザインタフェースを示す。
【００１８】
【図７】ある実施の形態に係る、共有ユーザ用の通知キューを更新するための例示的処理を示す。
【００１９】
【図８】ある実施の形態に係る、コンテンツアイテムにアクセスするデバイスに通知キューを送信するための例示的処理を示す。
【００２０】
図は説明の目的のみのために本発明の様々な実施形態を図示するものである。当業者は、以下に示される構成及び方法の他の代替的な実施形態が以下に説明される発明の原理から離れることなく用いられ得ることを以降の記載から容易に理解する。
【発明を実施するための形態】
【００２１】
図１は、相互作用情報の通信を含む、コンテンツアイテムを同期する環境の実施形態を示す。図１は、デバイス１００Ａ、１００Ｂ、１００Ｃ（広くデバイス１００として参照される）、コンテンツ管理システム１１０、及びネットワーク１２０を含む。３つのデバイスは図示の目的のみのために示されるものであり、実際には任意の数のデバイスが環境に存在してよい。同様に、全体を通して説明及び図示される他のモジュール又は構成要素は、実施のニーズに対して適切であり一般性を失わないものとして１つ又は複数のインスタンスを含んでよい。
【００２２】
デバイス１００は、ローカルにコンテンツアイテムを格納して閲覧するため、及びコンテンツ管理システム１１０とコンテンツアイテムを同期するための任意の適切なコンピューティングデバイスであってよい。デバイスの例は、デスクトップ及びラップトップコンピュータ、携帯型モバイルデバイス、タブレットコンピュータ、及び他のコンピューティングデバイスを含む。様々な実施形態におけるデバイス１００の動作は、更に以下で説明される。
【００２３】
各デバイス１００は、ネットワーク１２０を介してコンテンツ管理システム１１０と通信する。ネットワーク１２０は、任意の適切なネットワークであり、ローカルネットワーク、業務用ネットワーク、グローバルネットワーク、及び任意のこれらの組み合わせを含んでよい。典型的な構成では、デバイス１００は、有線又は無線の通信ネットワークを介してローカルのネットワークサービスプロバイダと通信し、インターネットを通じてコンテンツ管理システム１１０と通信する。ある構成では、デバイス１００Ａ、１００Ｂ、１００Ｃは、図１において破線で示されるように、ネットワーク１２０を介すること無く、互いに直接通信する。例えば、デバイス１００は、Bluetooth通信を介した無線、又は、ユニバーサル・シリアル・ネットワーク（ＵＳＢ）を介した有線のような、有線又は無線接続を介して通信してもよい。
【００２４】
コンテンツ管理システム１１０は、デバイス１００のユーザに対し、コンテンツ共有及び同期サービスを提供する。これらのサービスは、ユーザが他のデバイス１００のユーザとコンテンツを共有できるようにする。コンテンツ共有に加えて、コンテンツ管理システム１１０は、変更に応じて共有コンテンツを更新し、複数のデバイス１００に渡ってコンテンツアイテムに対する同期された変更を可能にする。ユーザは、ユーザが所有し、ユーザのアカウントに関連付けられている複数のデバイス１００に渡ってコンテンツを同期してもよく、ユーザは、他のユーザのアカウントに関連付けられているデバイスと同期されるコンテンツを共有してもよい。コンテンツ管理システム１１０に格納されるコンテンツは、以下で合わせて「コンテンツアイテム」として参照される、デジタルデータ、書類、メディア（例えば画像、写真、ビデオ、音声、ストリーミングコンテンツ）、データファイル及びデータベース、ソースコード及びオブジェクトコード、記録、及び、任意の他のデータ又はファイルの種別などの、データの任意の種別を含み得る。コンテンツ管理システム１１０によって格納されるコンテンツアイテムはまた、フォルダ、テーブル、コレクション、アルバム、プレイリスト、又は他のデータベース構成物（例えば、オブジェクト指向のもの、キー／バリュー等）など、他のコンテンツアイテムを組織するために用いられてよい。実際には、様々なデバイス１００は、ユーザ連携、パーミッション、コンテンツ共有パーミッション等に基づいて、コンテンツアイテムの異なるグループを同期させてもよい。様々な実施形態におけるコンテンツ管理システム１１０の動作は、更に以下で図４を参照して説明される。
【００２５】
図２は、ある実施形態に従う、デバイス１００の様々なモジュールと構成要素を示す。デバイス１００は、情報をユーザに提供するディスプレイ２２０を含み、あるクライアントデバイス１００はタッチスクリーンを含む。デバイス１００はまた、ネットワーク１２０を介してコンテンツ管理システム１１０と通信するためのネットワークインタフェース２２５を含む。デバイス１００はまた、キーボード、マウス、タッチパッド、または他のデバイスなどの様々なユーザ入力デバイスからのユーザ入力を受け取る、ユーザ入力モジュール２６０を含む。重要でない、例えば、１つ以上のコンピュータプロセッサ、ローカルの固定メモリ（ＲＡＭ及びＲＯＭ）、及び、オプションとしての着脱可能メモリ（例えば、ＳＤカード）、電源、及び音声-ビデオ入力といった、クライアントデバイス１００の他の従来的な構成要素は示されていない。
【００２６】
ソフトウェアモジュールは、オペレーティングシステム２４５及び１つ以上のネイティブアプリケーション２５５を含む。ネイティブアプリケーション２５５は、クライアントデバイスに応じて異なり、ワードプロセッサ、スプレッドシート、データベース管理システム、コードエディタ、画像及びビデオエディタ、電子ブックリーダ、音声及びビデオプレーヤーなどの、コンテンツ管理システム１１０に格納されたコンテンツアイテムを生成し、閲覧し、消費し、及び修正するための様々なアプリケーションを含んでよい。各デバイス上のオペレーティングシステム２４５は、ローカルのファイル管理システムを提供し、コンテンツ管理システムクライアントアプリケーション２００及びネイティブアプリケーション２５５などの、様々なソフトウェアモジュールを実行する。コンテンツディレクトリ２４０は、名前、写真、電話番号、会社、電子メールアドレス、物理アドレス、ウェブサイトＵＲＬなどの、ユーザの連絡先についての情報を格納する。ネイティブアプリケーション２５５、オペレーティングシステム２４５及びコンテンツ管理システムクライアントアプリケーション２００の更なる動作は、以下で説明される。
【００２７】
ある実施形態では、デバイス１００は、カメラ２３０及びロケーションモジュール２３５などの、追加的な構成要素を含む。カメラ２３０は、オンラインコンテンツ管理システム１１０にアップロードする画像又はビデオを撮影するために用いられてよい。ロケーションモジュール２３５は、例えば、全地球測位衛星（ＧＰＳ）信号、携帯電話基地局の三角測量、又は他の方法を用いてデバイスの位置を決定する。ロケーションモジュール２３５は、位置データを取得し、カメラ２３０によって撮影された画像のようなコンテンツアイテムについてのメタデータに位置データを追加するために、クライアントアプリケーション２００によって使用されてよい。
【００２８】
クライアントデバイス１００は様々な方法でコンテンツ管理システム１１０にアクセスする。クライアントアプリケーション２００は、コンテンツ管理システム１１０のサービスへのアクセスを提供する専用のアプリケーション又はモジュールであってもよく、ユーザインタフェースを通した共有ファイルへのユーザアクセスと他のアプリケーションによるプログラムでのアクセスの両方を提供する。クライアントデバイス１００はまた、ウェブブラウザ２５０を通じてコンテンツ管理システム１１０にアクセスしてもよい。代替として、クライアントアプリケーション２００は、コンテンツ管理システム１１０へのアクセスと、オペレーティングシステム２４５によって提供されるローカルファイル管理システムとを統合してもよい。コンテンツ管理システム１１０へのアクセスがローカルファイル管理システムに統合された場合、コンテンツ管理システム１１０において保守されるファイル組織化スキームは、オペレーティングシステム２４５とクライアントアプリケーション２００との共同により、ローカルファイル構成物として表される。クライアントアプリケーション２００は、スタンドアローンのアプリケーション、アプリケーションプラグイン、又はブラウザ拡張などの様々な形式をとってよい。クライアントアプリケーション２００は、ユーザインタフェースモジュール２０２、相互作用管理モジュール２０４、コンテンツアクセスモジュール２０６、ローカルコンテンツデータストア２０８、監視プレゼンスデータストア２１０及び共同作業モジュール２０７を含む。
【００２９】
他のデバイスタスクを扱うことに加えて、オペレーティングシステム２４５は、デバイス１００上で実行しているアプリケーションからの情報をディスプレイ２２０を介してユーザに表示する。このとき、情報は１つ以上のユーザインタフェース要素を含み得る。このようなユーザインタフェース要素は、特定のデバイス及び構成に応じて変化してよい。ユーザインタフェース要素は、モバイルデバイス上のユーザインタフェース要素及び、デスクトップインタフェース上のウィンドウを含み得る。ウインドウのようなユーザインタフェース要素を用いるオペレーティングシステムの例は、レッドモンドのMicrosoft CorporationによるMicrosoft Windows 8、カリフォルニアのクパチーノのApple Inc.によるOS Xである。更に、オペレーティングシステム２４５は、同時に動作している複数のネイティブアプリケーション２５５の制御を管理する。ユーザインタフェース要素は、１つのレイヤが他のレイヤに重なるようにレイヤー化されてもよい。いくつかのオペレーティングシステムと構成では、１つのユーザインタフェース要素のみが所定の期間に表示される。典型的には１つのユーザインタフェース要素がアクティブなユーザインタフェース要素であり、これはオペレーティングシステム２４５がキーボードエントリ、カーソル移動、タッチセンサ、タッチジェスチャ等のようなユーザ入力を送るユーザインタフェース要素であることを意味する。当業者によって理解されるように、特定の期間にアクティブな、ウィンドウ又は他のユーザインタフェース要素は、しばしばフォーカスを有する。ユーザは、あるユーザインタフェース要素から他の要素へフォーカスを移動させるために他のユーザインタフェース要素を選択してもよく、ある例では、オペレーティングシステム２４５はフォーカスをユーザ入力なしに変更してもよい。
【００３０】
典型的には、ユーザインタフェース要素、例えばネイティブアプリケーション２５５と関連付けられたウィンドウ、はオペレーティングシステム２４５によって管理され、オペレーティングシステムは、実行しているネイティブアプリケーション２５５のプロセス識別子とユーザインタフェース要素のユーザインタフェース要素識別子との間の関連を管理する。例えば、特定のアプリケーションはプロセスid「２５８７」に関連付けられ、このプロセスidは、ユーザインタフェース要素識別子４、８及び１０を用いて複数のユーザインタフェース要素を管理し得る。各ユーザインタフェース要素識別子は、別々に、そのネイティブアプリケーション２５５によって開かれた特定のコンテンツアイテムと関連付けられてよく、複数のユーザインタフェース要素識別子とプロセス識別子とは同一のコンテンツアイテムに関連付けられてもよい。
【００３１】
オペレーティングシステム２４５はまた、様々なイベントを扱い、認識する。このようなイベントは、コンテンツアイテムを閉じたり開くためのネイティブアプリケーション２５５からの要求、ウィンドウ又は他のユーザインタフェース要素を閉じるためのネイティブアプリケーション２５５からの要求、及びユーザインタフェース要素のフォーカスを変更する要求、その他の多くのものを含む。以下で説明されるように、これらのイベントは、コンテンツアイテムに関連するプレゼンスの変更を識別するために、相互作用管理モジュール２０４によって用いられてよい。
【００３２】
クライアントアプリケーション２００は、ユーザがデバイス上のコンテンツアイテムを開く、閉じる或いは変更するときのように、コンテンツアイテムに関して生じる相互作用を識別する。これらの相互作用は、コンテンツアイテムとの相互作用を記述する相互作用情報を生成するために、クライアントアプリケーション２００によって識別される。相互作用情報は、クライアントアプリケーション２００との相互作用とネイティブアプリケーション２５５との相互作用とを含む。ネイティブアプリケーション２５５内で行われる動作から決定される相互作用情報は、プレゼンス情報と呼ばれる。相互作用情報とプレゼンス情報とを判定するクライアントアプリケーション２００などのアプリケーションは、プレセンスアプリケーションと呼ばれる。（プレゼンス情報に加えた）相互作用情報の更なる種別は、コンテンツアイテムに関連する、ノート、メッセージ及び通知要求を含み、これらはクライアントアプリケーション２００によって受信され得る。メッセージは、他のデバイスへのチャットメッセージ、コンテンツアイテムと相互作用（例えば編集）するユーザの意図を示すメッセージ、及び、共同作業セッションを開始するユーザの意図を示すメッセージを含んでよい。通知要求は、他のユーザの相互作用情報が変化した際に通知される要求を含んでよい。相互作用情報はまた、バージョン管理上のノートやイベントタイムスタンプのようなメタデータの修正、又は、バージョン管理情報又は以前のコンテンツアイテムのバージョンを閲覧するための要求のような、コンテンツアイテムに関するコンテンツ管理システム１１０に格納される更なる情報に対する要求を含む。更なる相互作用情報の例は以下に説明される。クライアントアプリケーション２００は、ユーザから、チャット情報または意図情報を受信してもよい。様々な実施形態では、デバイス１００は、コンテンツアイテムにおけるユーザのプレゼンス（すなわちユーザがコンテンツアイテムを開く又はネイティブアプリケーション２５５を用いてコンテンツアイテムを編集すること）を、後に更に説明するオペレーティングシステム２４５との相互作用を通じて、識別する。相互作用情報は、コンテンツアイテムに関して同期される他のデバイス１００へ送信される。
【００３３】
デバイス１００は、コンテンツ管理システム１１０からコンテンツアイテムを受信し、ユーザがデバイス１００上に格納された様々なネイティブアプリケーション２５５を用いてコンテンツアイテムを閲覧し、修正し、及び相互作用することを可能にする。例えば、デバイス１００は、画像コンテンツアイテムを操作する写真編集アプリケーション、テキストコンテンツアイテムの編集を可能にするワードプロセッシングアプリケーション、又は、コンテンツアイテムの描画の修正を可能にするコンピュータ支援設計（ＣＡＤ）アプリケーションを含んでよい。更に後述するように、相互作用情報は、ユーザの相互作用アプリケーションを介してデバイス１００によって判定され、相互作用情報は他のデバイス１００に送信される。更に、デバイス１００が他のデバイス１００に関連する相互作用情報を受信した場合、デバイス１００はその相互作用情報を表示する。
【００３４】
ある実施形態では、コンテンツアイテムに関連する相互作用情報を検出するアプリケーションは、コンテンツアイテムを閲覧し又は操作するアプリケーションとは別のものである。例えば、相互作用情報を検出するクライアントアプリケーションは、画像コンテンツアイテムを操作し又は表示する写真編集アプリケーションとは別のものである。様々な実施形態では、相互作用情報を検出するアプリケーションはまた、コンテンツアイテムをコンテンツ管理システム１１０と同期する責務を有する。相互作用情報を検出するアプリケーションはプレセンスが検出されるアプリケーションとは別のものであるため、プレゼンスは、多数のアプリケーションとコンテンツアイテムとに対して一度に監視され、また、コンテンツアイテムビューアの種別のそれぞれに対するプレゼンスの監視を統合すること無く監視されてよい。すなわち、例えば、写真編集アプリケーション、ワードプロセッシングアプリケーション、及びプレイリスト編集アプリケーションのそれぞれに対して、追加的な特別なプレゼンス監視又はアプリケーションの修正を必要としない。
【００３５】
図３Ａ及び３Ｂは、デバイス１００のディスプレイ２２０上に表示される、デスクトップ３００におけるユーザインタフェース要素のフォーカス変化を示している。図３Ａでは、ウィンドウ３１０Ａ、３１０Ｂ及び３１０Ｃはデスクトップ３００上に表示されてユーザから見えるようになる。この実施形態では、デスクトップ３００は、ディスプレイ２２０上のユーザインタフェース要素を取り囲む、オペレーティングシステム２４５によって管理される汎用のコンテナ又はフレームである。図３Ａ及び３Ｂでは、ユーザインタフェース要素は、デスクトップコンピューティング環境におけるウィンドウ３１０である。モバイルデバイス又は領域の制限される他のディスプレイのような他の構成では、１つのユーザインタフェース要素のみが一度に表示されてよい。図３Ａに示すように、ウィンドウ３１０Ａは、フロントウィンドウとして示されるアクティブウィンドウであり、部分的にウィンドウ３１０Ｂ及び３１０Ｃを覆っている。図３Ｂでは、フォーカスがウィンドウ３１０Ｂに変更され、今はフロントウィンドウであってアクティブウィンドウとなっている。フォーカスは、ウィンドウ３１０Ｂとのユーザ相互作用によって、又は、そのウィンドウをアクティブウィンドウにすることを要求するプロセスによって、変更されてよい。あるオペレーティングシステム及び構成では、ユーザインタフェース要素は、フロントのユーザインタフェース要素になること無く、フォーカスを有してよい（すなわち、ユーザ入力を受け取っている）。
【００３６】
再び図２を参照すると、コンテンツアイテムを開くために、ネイティブアプリケーション２５５はオペレーティングシステム２４５からコンテンツアイテムを要求し、コンテンツアイテムに対し、コンテンツアイテムへのハンドルをオペレーティングシステム２４５から受け取る。ある場合には、アプリケーション２４５はハンドルを維持せずに、ネイティブアプリケーション２５５がコンテンツアイテムからのデータを使用する場合、又は、ユーザがコンテンツアイテムに対する編集を入力する場合であっても、コンテンツアイテムをメモリにロードし、続いてコンテンツアイテムのハンドルを閉じてもよい。従って、開いたコンテンツアイテムのハンドルは、アプリケーションが特定のコンテンツアイテムと相互作用しているかを判定するためには信頼性の高いものではない。このように、ある実施形態では、ネイティブアプリケーション２５５によって示される更なる振る舞いが、アプリケーションがコンテンツアイテムを編集しているかを判定するために用いられる。
【００３７】
ネイティブアプリケーション２５５はまた、ユーザがコンテンツアイテムを修正した場合及びユーザがコンテンツアイテムを保存する前に、様々な振る舞いを実行する。これらの振る舞いはアプリケーション及びオペレーティングシステム２４５に応じて変化する。例えば、いくつかのネイティブアプリケーション２５５は、例えば、主要な一時的なコンテンツアイテムのファイル名にチルダ又は他の認識可能なマークとを有する、開いているコンテンツアイテムと異なるファイル名を有する一時的なコンテンツアイテムを生成する。他の例では、ネイティブアプリケーション２５５は、ユーザから直接視認可能である又は視認可能でない、コンテンツアイテムに関連付けれたユーザインタフェース要素のタイトルを変更する。更なる例では、ネイティブアプリケーション２５５は、コンテンツアイテムが修正されたことを示すフラグを設定する。ネイティブアプリケーション２５５はまた、他のアプリケーション又はオペレーティングシステム２４５からの要求に応じて、コンテンツアイテムの修正に関する情報を提供してもよい。例えば、上述したようなOS XオペレーティングシステムにおけるアクセシビリティＡＰＩはユーザインタフェース要素と関連付けられたコンテンツアイテムに関する情報を提供する。開いたコンテンツアイテムのハンドルは、コンテンツアイテムがネイティブアプリケーション２５５によって編集されているかを判定するための信頼性の高いものではないため、これらの振る舞いは、コンテンツアイテムを編集している又は修正していることに関するプレゼンスを判定するために、更に後に説明されるように、プレゼンス管理モジュールによって使用される。
【００３８】
ネイティブアプリケーション２５５は典型的に、他とは独立にデバイス１００内で実行され、アプリケーションと、他のアプリケーション又はデバイス１００上で実行するプロセスとの間の通信を可能にし得る。ネイティブアプリケーション２５５は典型的に、アプリケーションが実行しているプロセスから情報を要求することを可能にする、アプリケーションプログラミングインタフェース（ＡＰＩ）を用いてプロセスに情報を提供する。例えば、ネイティブアプリケーション２５５は、アプリケーションによって制御されるユーザインタフェース要素に対する要求を可能にする、又は、ユーザインタフェース要素のタイトルを示すため又はネイティブアプリケーション２５５によって開かれたコンテンツアイテムに関連付けられたファイルシステム内のパスを要求するための、ＡＰＩを公開してよい。同様に、オペレーティングシステム２４５は、特定のユーザインタフェース要素を制御するプロセスについての情報を要求するような、要求処理のための類似のＡＰＩを提供してもよい。
【００３９】
クライアントアプリケーション２００は、コンテンツ管理システム１１０へのアクセスを制御する。クライアントアプリケーション２００は、以下で様々に示されるように、クライアントアプリケーション２００によってアクセスされるコンテンツへのインタフェースを生成する、ユーザインタフェースモジュール２０２を含み、この機能を実行する１つの手段である。生成されたインタフェースはディスプレイ２２０によってユーザへ提供される。クライアントアプリケーション２００は、コンテンツ管理システム１１０のコンテンツストレージからアクセスされたコンテンツを、ローカルのコンテンツデータストア２０８に格納してもよい。ここではクライアントアプリケーション２００内のものとして示されるが、ローカルコンテンツデータストア２０８は、不揮発性ストレージ内にクライアントデバイス１００のための他のデータと共に格納されてもよい。ローカルのコンテンツデータストア２０８がこのように格納される場合、コンテンツは、クライアントアプリケーション２００がコンテンツ管理システム１１０と通信中でないときに、ユーザ及びネイティブアプリケーション２５５のような他のアプリケーション又はモジュールに利用可能である。コンテンツアクセスモジュール２０６は、ローカルのコンテンツデータストア２０８への更新を管理し、クライアントデバイス１００によって修正されたコンテンツをコンテンツ管理システム１１０上に維持されるコンテンツと同期するために、同期ロジックを用いてコンテンツ管理システム１１０と通信する。そのような同期の一例は２０１３年９月２７日出願の米国特許第９，０５３，１６５号において提供されており、参照によってその全体がここに取り込まれる。クライアントアプリケーション２００は、スタンドアローンのアプリケーション、アプリケーションプラグイン、又はブラウザ拡張などの様々な形式をとってよい。
【００４０】
コンテンツ管理システム１１０は、コンテンツアイテムが削除されたことを示す情報、又はデバイス１００がコンテンツアイテムの期限切れのバージョンを閲覧又は編集しているであろうことを示す情報などの、コンテンツアイテムを同期するための追加的なデータを提供してもよい。
【００４１】
相互作用管理モジュール２０４は、ユーザの同期されたコンテンツアイテムに関連する相互作用情報を取得し管理する。上述したように、相互作用管理モジュール２０４は典型的に、プレゼンス情報のために相互作用管理モジュール２０４によって監視されているネイティブアプリケーション２５５とは別のモジュールであり、別のプロセスとして動作する。相互作用管理モジュール２０４は、デバイス１００で生じる、同期されたコンテンツアイテムについての相互作用イベントを検出する。相互作用管理モジュール２０４は、プレゼンスイベントを監視することによって、またはコメントやメッセージなどの受信したユーザ入力を監視することによって、相互作用イベントを検出してもよい。相互作用イベントは、ユーザがコンテンツアイテムと相互作用したことを示す。相互作用は、コンテンツアイテムを視ることと、コンテンツアイテムを編集することと、コメントアイテムにコメントすることと、コンテンツアイテムに関するメッセージを送信することと、コンテンツアイテムにおいて共同作業することと、を含む。相互作用管理モジュール２０４は、相互作用イベントおよび他の相互作用情報についての通知をコンテンツ管理システム１１０に送信する。相互作用管理モジュール２０４はまた、ユーザに表示するために、コンテンツ管理システム１１０から、他のユーザのコンテンツアイテムとの相互作用に関する相互作用情報（ユーザ通知キューを含む）を受信する。ある実施の形態では、相互作用管理モジュール２０４は、同期されたコンテンツアイテムに関連付けられたユーザインタフェース要素に相互作用インジケータを付けることによって、ユーザ通知キューからの相互作用情報を表示する。種々の実施の形態では、相互作用インジケータおよび関連ユーザインタフェース要素は、プレゼンス情報などのリアルタイム相互作用情報と、過去の活動に関する相互作用情報と、を表示する。これにより、ユーザは、コンテンツアイテムとそれに関連する相互作用情報を同時に視ることができ、その結果、コンテンツアイテムとそのコンテンツアイテムに関連付けられたユーザとそのコンテンツアイテムに対してなされた変更とのより全体的な像が提供される。
【００４２】
ある実施の形態では、相互作用管理モジュール２０４は、受信した通知キューの内容と他の相互作用情報とを、時系列で表示するようにして提供する。この場合、ユーザはコンテンツアイテムとの相互作用のシーケンスを視ることができる。表示される相互作用情報は、タイムスタンプやユーザ識別子やユーザの写真や他のデータなどのメタデータを含んでもよい。他の実施の形態では、相互作用モジュールは、相互作用情報を、受信されるにつれて通知チャネルスタイルで表示する。新たな相互作用情報片がユーザインタフェースを介して他のデバイス１００からまたはコンテンツ管理システム１１０から受信された場合、それはチャネルに追加され、ユーザは相互作用インジケータや他のユーザインタフェース要素や他の方法により通知される。通知を含む相互作用情報を表示することは、図６Ａ−６Ｄを参照して以下により詳細に説明される。
【００４３】
ある実施の形態では、相互作用管理モジュール２０４は、相互作用情報についての通知がユーザに提供されたとき、またはユーザインタフェースに表示される相互作用情報をユーザが視たときを検出する。相互作用管理モジュール２０４は、この情報を、コンテンツ管理システム１１０および／またはユーザおよびコンテンツ管理システム１１０に関連付けられた他のデバイス１００に送信してもよい。この場合、ユーザにより視られた相互作用情報を複数のデバイス１００に亘って追跡することができる。この情報を用いることで、相互作用管理モジュール２０４またはコンテンツ管理システム１１０は、ユーザに相互作用情報についての通知が提供されたか否か、またはユーザが相互作用情報を視たか否か、を判定し、通知の複製を避けることができる。その結果、いくつかのデバイス上で同じ相互作用についての通知がユーザになされることはない。
【００４４】
後に更に説明するように、相互作用情報の多くの種別を判定するため、相互作用管理モジュール２０４は、ユーザインタフェース要素を通して相互作用情報を受信する。同期コンテンツアイテムと関連するプレゼンス情報を判定するため、相互作用管理モジュール２０４は、ネイティブアプリケーション２５５に関連付けられたユーザインタフェース要素を監視する。相互作用管理モジュール２０４は、全てのユーザインタフェース要素を監視すること、或いは、代替的にユーザインタフェース要素がコンテンツアイテムと関連付けられた後に特定のユーザインタフェース要素についてのみ監視することができる。監視プレゼンスデータストア２１０は、同期されたコンテンツアイテムに関連する動作を判定するために特定のユーザインタフェース要素が監視されていることを示す、相互作用管理モジュール２０４によって維持される情報を含む。
【００４５】
ここではクライアントアプリケーション２００の一部として示すが、様々な実施形態では、コンテンツアクセスモジュール２０６及び相互作用管理モジュール２０４は、それぞれの機能を実行するための別々のモジュールに分けられている。同様に、様々なモジュール及びデータストアは便宜のために本開示を通して別々に説明され、様々な実施形態において、所望に統合され又は更に別々の構成要素に分けられる。
【００４６】
図４は、ある実施の形態に係る、図１のコンテンツ管理システム１１０のコンポーネントを示す。コンテンツ管理システム１１０を用いる際、種々のコンテンツ管理サービスをより容易にするために、ユーザはコンテンツ管理システム１１０にアカウントを生成してもよい。ある実施の形態では、ユーザのアカウント情報はユーザアカウントデータベース４１８に維持される。ユーザアカウントデータベース４１８は、登録ユーザについてのプロファイル情報を保持してもよい。ある場合には、ユーザプロファイルの個人情報はユーザ名および／または電子メールアドレスのみである。しかしながら、コンテンツ管理システム１１０はまた、パスワード復活情報や属性情報や支払い情報や実装者が興味を持つ他の詳細などの追加的なユーザ情報を受け入れるよう構成されてもよい。各ユーザは、ユーザＩＤやユーザ名などの識別子に関連付けられる。
【００４７】
ユーザアカウントデータベース４１８は、有料／無料の別などのアカウントタイプや、ファイル編集履歴などのユーザ毎の利用情報や、許されている最大ストレージスペースや、利用されているストレージスペースや、コンテンツストレージ位置や、セキュリティ設定や、個人構成設定や、コンテンツ共有データなどのアカウント管理情報を含んでもよい。アカウント管理モジュール４０４は、ユーザアカウントデータベース４１８におけるユーザアカウントの詳細を更新および／または取得するよう構成されてもよい。アカウント管理モジュール４０４は、コンテンツ管理システム１１０の他の任意の数のモジュールと相互に作用するよう構成されてもよい。
【００４８】
ひとつのアカウントは複数のデバイス１００に関連付けられてもよく、コンテンツアイテムはアカウントに関連して格納されてもよい。保持されるコンテンツはまた、異なる振る舞いを伴うかまたは他のコンテンツアイテムグループ化方法による種々のタイプのフォルダを含んでもよい。例えば、アカウントは、任意のユーザからアクセス可能なパブリックフォルダを含んでもよい。パブリックフォルダにはウェブアクセス可能なアドレスが割り当てられてもよい。ウェブアクセス可能なアドレスへのリンクを使用してパブリックフォルダのコンテンツにアクセスしてもよい。他の例では、アカウントは、写真に適する特定の属性やアクションを提供する写真コンテンツアイテム用の写真フォルダや、音声ファイルコンテンツアイテムを再生する能力を提供し他の音声関連アクションを実行する音声フォルダや、他の特殊用途フォルダを含んでもよい。アカウントは、複数のユーザアカウントとリンクされそれらのアカウントから利用可能な共有フォルダまたはグループフォルダを含んでもよい。ある共有フォルダについての複数のユーザに対する複数の権限は異なっていてもよい。ある実施の形態では、アカウントは複数のユーザに関連付けられてもよい名前空間であり、それらのユーザのそれぞれは名前空間と相互作用するための権限に関連付けられてもよい。
【００４９】
ある実施の形態では、コンテンツはコンテンツストレージ４２０に保持される。コンテンツストレージ４２０は、ストレージデバイスや、複数のストレージデバイスや、サーバであってもよい。あるいはまた、コンテンツストレージ４２０は、ひとつ以上の通信ネットワークを介してアクセス可能なクラウドストレージプロバイダまたはネットワークストレージであってもよい。ある構成では、コンテンツ管理システム１１０は、デバイス上に現れる配置構成と同じ配置構成でコンテンツアイテムを保持する。しかしながら、コンテンツ管理システム１１０は自身の順序や構成や階層でコンテンツアイテムを保持してもよい。
【００５０】
コンテンツストレージ４２０は、コンテンツアイテムおよびコンテンツアイテムタイプおよびコンテンツアイテムと種々のアカウントやフォルダやグループとの関係を説明するメタデータを保持してもよい。コンテンツアイテムのメタデータは、コンテンツアイテムの一部として保持されてもよいし、別個に保持されてもよい。ある構成では、コンテンツストレージ４２０に保持される各コンテンツアイテムには、システム全体で一意の識別子が割り当てられてもよい。
【００５１】
コンテンツストレージ４２０は、重複したコンテンツアイテムやコンテンツアイテムの重複セグメントを特定することによって、要求されるストレージスペースの量を低減することができる。ある実施の形態では、例えば、コンテンツアイテムの所有権メタデータ（例えば、所有権リスト）内にユーザの識別子を含めることによって、異なる複数のユーザの間でコンテンツアイテムを共有してもよいし、一方で、コンテンツアイテムのただひとつのコピーのみを保持しつつ、ポインタや他のメカニズムを用いることでそのただひとつのコピーと複製物とをリンクしてもよい。同様に、コンテンツストレージ４２０は、コンテンツアイテムへの変更と、コンテンツアイテムの異なるバージョン（分岐バージョンツリーなど）と、変更履歴と、を追跡するバージョン制御メカニズムを用いてコンテンツアイテムを保持する。変更履歴は、元のコンテンツアイテムのバージョンに適用された場合に、変更されたコンテンツアイテムのバージョンを生成する変更の組を含む。
【００５２】
ある実施の形態では、コンテンツ管理システム１１０は、同期モジュール４１２を用いることで、ひとつ以上のデバイスからの複数のコンテンツアイテムを自動的に同期する。同期はプラットフォーム不可知的である。すなわち、コンテンツアイテムは、種々のタイプや能力やオペレーティングシステムなどを有する複数のデバイス１００に亘って同期されてもよい。例えば、クライアントアプリケーション２００は、コンテンツ管理システム１１０の同期モジュール４１２を介して、デバイス１００のファイルシステム内のコンテンツと、システム１１０上の関連ユーザアカウント内のコンテンツアイテムと、を同期させる。クライアントアプリケーション２００は、指定されたフォルダおよびそのサブフォルダ内のコンテンツアイテムへの任意の変更を、同期モジュール４１２と同期させる。そのような変更は、新たな、削除された、変更された、コピーされた、または移動されたファイルやフォルダを含む。同期モジュール４１２はまた、クライアントアプリケーション２００に、デバイス１００に関連付けられたコンテンツへの任意の変更を提供する。これは、デバイス１００におけるローカルコンテンツと、コンテンツ管理システム１１０におけるコンテンツアイテムと、を同期させる。
【００５３】
競合管理モジュール４１４は、異なる複数のデバイス１００に置かれたコンテンツアイテムの複数のバージョンの間に矛盾が存在するか否かを判定する。例えば、コンテンツアイテムが第１デバイスおよび第２デバイスにおいて変更された場合、コンテンツアイテムの異なるバージョンが各デバイスに存在しうる。同期モジュール４１２は、例えばコンテンツアイテム変更の変更時刻を特定することによって、そのようなバージョン競合を判定する。競合管理モジュール４１４は、複数のバージョンをマージすることや後に提出されたバージョンをデバイスに通知することなどの任意の適切な手段によって、バージョン間の競合を解決する。
【００５４】
ユーザは、ユーザインタフェースモジュール４０２によって生成されるウェブインタフェースを介して、コンテンツを視たり操作したりしてもよい。例えば、ユーザは、ウェブブラウザ２５０内で、コンテンツ管理システム１１０によって提供されるウェブアドレスへと辿り着いてもよい。ファイルの新たなバージョンのアップロードのように、ウェブインタフェースを通じてなされたコンテンツストレージ４２０のコンテンツへの変更や更新は、ユーザのアカウントに関連する他のデバイス１００へと再同期されてもよい。複数のデバイス１００は単一のアカウントと関連付けられていてもよく、そのアカウントのファイルは複数のデバイス１００のそれぞれの間で同期されてもよい。
【００５５】
コンテンツ管理システム１１０は、アプリケーションプログラミングインタフェース（ＡＰＩ）を介して他のコンテンツおよび／またはサービスプロバイダとのおよび種々のデバイス１００とのインタフェースとしての通信インタフェース４００を含んでもよい。ＡＰＩはこの機能を実行するためのひとつの手段である。所定のソフトウエアアプリケーションは、ユーザの代わりに、ＡＰＩを介してコンテンツストレージ４２０にアクセスする。例えば、スマートフォンやタブレット計算デバイス上のアプリケーションなどのソフトウエアパッケージはプログラム上、ユーザが資格証明を提供する場合、コンテンツ管理システム１１０を直接呼び出し、コンテンツを読み取り、書き込み、生成し、消去し、共有し、またはそうでなければ操作してもよい。同様に、ＡＰＩは、ウェブサイトを通じてユーザがコンテンツストレージ４２０の全てまたは一部にアクセスすることを可能としてもよい。
【００５６】
コンテンツ管理システム１１０はまた、認証モジュール４０６を含んでもよい。認証モジュール４０６は、ユーザ資格情報やセキュリティトークンやＡＰＩコールや特定デバイスなどを検証することにより、要求されているコンテンツアイテムへのアクセスが認証されるか否かを判定する。これはこの機能を実行するためのひとつの手段である。認証モジュール４０６は、ユーザアカウント用の一回限り使用できる認証トークンを生成してもよい。認証モジュール４０６は、各認証トークンに、有効期間または使用期限を割り当てる。認証トークンを要求元のデバイスに送信することに加えて、認証モジュール４０６は、認証トークンデータベース４２２に、生成された認証トークンを格納してもよい。認証トークンの検証要求を受けると、認証モジュール４０６は、認証トークンデータベース４２２をチェックし、ユーザに割り当てられたマッチする認証トークンを探す。認証モジュール４０６がマッチする認証トークンを特定すると、認証モジュール４０６は、そのマッチする認証トークンがまだ正当であるか否かを判定する。例えば、認証モジュール４０６は、認証トークンが期限切れになっていないことまたは使用済みや無効というマークが付されていないことを確かめる。認証トークンを検証した後、認証モジュール４０６は、使い捨てトークンなどのマッチする認証トークンを無効化してもよい。例えば、認証モジュール４０６は、マッチする認証トークンに使用済みまたは無効というマークを付してもよいし、認証トークンデータベース４２２からマッチする認証トークンを削除してもよい。
【００５７】
コンテンツ管理システム１１０は、公にまたは私的にコンテンツを共有するための共有モジュール４１０を含む。公にコンテンツを共有することは、コンテンツアイテムを、コンテンツ管理システム１１０とネットワーク通信可能な任意の計算デバイスからアクセス可能とすることを含んでもよい。私的にコンテンツを共有することは、コンテンツストレージ４２０のコンテンツアイテムを２以上のユーザアカウントとリンクさせ、それにより各ユーザアカウントがそのコンテンツアイテムへのアクセスを有することを含んでもよい。コンテンツは、種々のタイプのユーザアカウントに亘って共有されてもよい。
【００５８】
ある実施の形態では、コンテンツ管理システム１１０は、コンテンツディレクトリを維持するためのコンテンツ管理モジュール４０８を含む。コンテンツディレクトリは、コンテンツストレージ４２０における各コンテンツアイテムの位置を特定し、クライアントアプリケーションがストレージ４２０内のコンテンツアイテムへのアクセスを要求することを可能とする。これは、この機能を行うひとつの手段である。コンテンツディレクトリのコンテンツエントリは、コンテンツストレージ４２０におけるコンテンツアイテムの位置を特定するコンテンツポインタを含んでもよい。例えば、コンテンツエントリは、メモリにおけるコンテンツアイテムのストレージアドレスを指定するコンテンツポインタを含んでもよい。ある実施形態では、コンテンツエントリは、そのそれぞれがコンテンツアイテムの一部を含む複数の場所を指し示す複数のコンテンツポインタを含む。
【００５９】
コンテンツパスおよびコンテンツポインタに加えて、ある構成のコンテンツエントリはまた、コンテンツアイテムへのアクセスを有するユーザアカウントを特定するユーザアカウント識別子を含む。ある実施の形態では、複数のユーザアカウント識別子が単一のコンテンツエントリに関連付けられてもよく、これは、そのコンテンツアイテムが複数のユーザアカウントによる共有アクセスを有することを示す。
【００６０】
私的にコンテンツアイテムを共有するために、共有モジュール４１０は、ユーザアカウント識別子をコンテンツアイテムに関連付けられたコンテンツエントリに追加し、それにより追加されたユーザアカウントにコンテンツアイテムへのアクセスを与える。共有モジュール４１０は、ユーザアカウントのコンテンツアイテムへのアクセスを制限するために、コンテンツエントリからユーザアカウント識別子を除くよう構成されてもよい。
【００６１】
公にコンテンツを共有するために、共有モジュール４１０はＵＲＬなどのカスタムネットワークアドレスを生成する。このカスタムネットワークアドレスにより、任意のウェブブラウザが、コンテンツ管理システム１１０のコンテンツに認証なしでアクセスすることが可能となる。共有モジュール４１０は生成されるＵＲＬにコンテンツ特定データを含める。コンテンツ特定データは、後に、要求されたコンテンツアイテムを適切に特定して返すために、コンテンツ管理システム１１０によって使用されてもよい。例えば、共有モジュール４１０は、生成されるＵＲＬにユーザアカウント識別子とコンテンツパスとを含めるよう構成されてもよい。ＵＲＬに含まれるコンテンツ特定データは、コンテンツアイテムにアクセスするために、デバイスによって、コンテンツ管理システム１１０に送信されてもよい。ＵＲＬを生成することに加えて、共有モジュール４１０はコンテンツアイテムへのＵＲＬが生成されたことを記録するよう構成されてもよい。ある実施の形態では、コンテンツアイテムに関連付けられたコンテンツエントリは、そのコンテンツアイテムへのＵＲＬが生成されたか否かを示すＵＲＬフラグを含んでもよい。
【００６２】
相互作用同期モジュール４１６は、デバイスからプレゼンス情報を受信し、それをプレゼンスレコードの一部として相互作用データストア４２４に格納し、コンテンツアイテムに関するユーザプレゼンスを判定する。各ユーザは、コンテンツアイテムに関する、そのユーザに関連付けられたプレセンスレコードを説明するユーザプレゼンスに関連付けられてもよい。それは、特定のユーザデバイスやプロセスやユーザインタフェース要素への参照を伴わないものであってもよい。プレゼンス情報は特定のユーザインタフェース要素やプロセスに関するプレゼンスを説明してもよいが、ユーザに関連付けられたこのプレゼンスはユーザプレゼンスと称される。ユーザプレゼンスの例は、共同作業中、編集中、閲覧中、開く、および不在を含む。この例では、「共同作業中」ユーザプレゼンスは、コンテンツアイテムが二つ以上のデバイス上で閲覧および変更のために提示されているユーザインタフェース要素に関連付けられていることを示し、「編集中」ユーザプレゼンスは、コンテンツアイテムがそのコンテンツアイテムを変更したユーザインタフェース要素に関連付けられていることを示し、「閲覧中」ユーザプレゼンスは、コンテンツアイテムがデバイス１００上のアクティブなユーザインタフェース要素に関連付けられていることを示し、「開く」ユーザプレゼンスは、ユーザインタフェース要素がコンテンツアイテムに関連付けられており、かつ、そのコンテンツアイテムを開いたがまだそのコンテンツアイテムを閉じていないことを示す。種々の実施の形態は、より多くのまたはより少ないユーザプレゼンスを用いてもよい。例えば、ある実施の形態は「編集中」と「閲覧中」と「不在」とのみを含み、この場合、コンテンツアイテムを開いたがまだアクティブなユーザインタフェース要素ではないユーザインタフェース要素は、システムの構成により、閲覧中または不在として扱われてもよい。プレゼンス情報を取得して追跡することはまた、米国特許出願第14/635,192号にさらに説明されており、該出願は参照により本明細書に援用される。
【００６３】
相互作用同期モジュール４１６はデバイス１００に亘る相互作用情報の同期を管理する。デバイス１００は、相互作用同期モジュール４１６に相互作用情報を提供する。相互作用同期モジュール４１６は、相互作用データストア４２４に相互作用情報を格納する。相互作用同期モジュール４１６は、ユーザに表示するために、同期済みデバイス１００に、同期済みコンテンツアイテムについての相互作用情報を送信する。相互作用同期モジュール４１６はさらに、ユーザに新たなまたは未閲覧の相互作用情報を知らせるためのインストラクションを送信してもよい。ある実施の形態では、デバイス１００は、ユーザが相互作用情報を視たか否か、およびいつ視たかを示す閲覧情報を相互作用同期モジュール４１６に送信する。閲覧情報は相互作用データストア４２４に格納される。他の実施の形態では、閲覧情報は、ユーザが相互作用情報と相互作用したか否かおよびいつしたかを示す。相互作用同期モジュール４１６は、この情報を用いることで、同じユーザに関連付けられた複数のデバイス１００で通知を複製することを避けることができる。例えば、あるユーザが第１デバイス１００上で新たな相互作用情報について知らされ、その相互作用情報を視た場合、このイベントは格納され、その結果、第２デバイス上でそのユーザに同じ相互作用情報について通知することはないであろう。
【００６４】
ある実施の形態では、コンテンツ管理システム１１０は共同作業モジュール４２６を含む。共同作業モジュール４２６は、デバイス１００間の共同作業を促進するよう構成される。例えば、共同作業モジュール４２６は、あるデバイスのアドレスを他のデバイスと共有することでデバイスハンドシェイクを開始し、共同作業が生じるようにしてもよい。さらに、共同作業モジュール４２６は、デバイス１００の共同作業モジュール２０７やクライアントアプリケーション２００の任意の他のモジュールによって行われるタスクのいずれかを行うよう構成されてもよい。
【００６５】
通知キューモジュール４２８は共有コンテンツアイテム用のユーザ通知キュー４３０を生成し管理する。ユーザ通知キュー４３０はコンテンツ管理システム１１０において保持され、デバイス１００に送信される。ユーザ通知キュー４３０は共有コンテンツアイテムとのひとつ以上の相互作用のグループであり、該相互作用をユーザに提示することで、共有ユーザによる共有コンテンツアイテムとの最近の相互作用を示すことができる。ある実施の形態では、コンテンツアイテムに関連付けられた各共有ユーザは、そのコンテンツアイテムに対応するユーザ通知キュー４３０を有する。特定のコンテンツアイテムについての、異なるユーザのユーザ通知キューは異なりうる。
【００６６】
ある実施の形態では、通知キューモジュール４２８は、相互作用イベントの通知を受け、ユーザ通知キュー４３０に追加する候補となる相互作用を決定する。通知キューモジュール４２８は、共有コンテンツアイテムに対応するユーザ通知キュー４３０を変更する。ユーザ通知キュー４３０を変更することは、候補相互作用を通知キューに追加することと、通知キューに既に存在する相互作用を取り除くことと、を含んでもよい。共有コンテンツアイテムに対応する相互作用イベントがコンテンツ管理システム１１０によって受け付けられた場合、通知キューモジュール４２０は、共有ユーザのユーザ通知キュー４３０に相互作用を追加するか否かおよび／または共有ユーザのユーザ通知キュー４３０から相互作用を取り除くか否かを決定する。ユーザ通知キュー４３０に加えられる相互作用のタイプは、コンテンツアイテムの閲覧、コンテンツアイテムの編集、コンテンツアイテムの共同作業、コンテンツアイテムへのコメント、およびコンテンツアイテムのメッセージを含んでもよい。
【００６７】
ある実施の形態では、相互作用は関連相互作用優先度を有する。相互作用の優先度は、ある相互作用のタイプの、他の相互作用のタイプに対する相対的な優先度を指定する。例えば、コンテンツアイテムの編集は、コンテンツアイテムの閲覧よりも高い優先度を有してもよい。相互作用優先度は、コンテンツ管理システム１１０の実施者またはコンテンツ管理システム１１０のユーザによって指定されてもよい。通知キューモジュール４２８は、候補相互作用およびユーザ通知キュー４３０内の相互作用についての相互作用タイプおよび相互作用優先度を決定する。種々の実施の形態では、通知キューモジュール４２８は、より高い優先度の相互作用を選択してユーザ通知キュー４３０に追加し、より低い優先度の相互作用を選択してユーザ通知キュー４３０から取り除く。例えば、通知キューモジュール４２８は、ユーザＡによる候補相互作用の優先度と、通知キュー４３０に既に存在するユーザＡによる相互作用の優先度と、を比較してもよい。候補相互作用の優先度がユーザ通知キュー４３０内の相互作用の優先度よりも低い場合、その候補相互作用はキューに追加されない。候補相互作用の優先度がユーザ通知キュー４３０内の相互作用の優先度よりも高い場合、その候補相互作用はキューに追加され、キュー内に既にある相互作用はキューから取り除かれてもよい。これにより、コンテンツアイテムとの他のユーザの高優先度相互作用をユーザに提示することができ、その結果、ユーザを混乱させたりユーザインタフェース要素のスペースを無駄にする可能性のある比較的重要でない情報を提供することなく、ユーザにとって重要な情報を提供することができる。
【００６８】
通知キューモジュール４２８は、デバイス１００に、ユーザ通知キュー４３０を送信してもよい。ある実施の形態では、通知キューモジュール４２８は、ユーザがコンテンツアイテムにアクセスしたという通知を受けることに応じて、ユーザ通知キュー４３０を送信してもよい。アクセスの通知は、デバイス１００から直接来るか、または相互作用同期モジュール４１６から来てもよい。アクセスの通知は、閲覧や編集のためにコンテンツアイテムを開くことなどのコンテンツアイテムのアクセスに整合するプレゼンスイベントを検出することに応じて、生成されてもよい。ある実施の形態では、通知キューモジュール４２８は、関連ユーザが通知キューを閲覧したという通知を受けることに応じて、ユーザ通知キュー４３０をクリアしてもよい。このようにすることで、ユーザに、そのユーザが既に視た通知を提供することはない。
【００６９】
コンテンツ管理システム１１０は、単一のコンピュータやクラウドベースのコンピュータ実装を含むネットワークコンピュータを用いて実装されてもよい。本開示の目的のために、コンピュータは、ひとつ以上のプロセッサと、メモリと、ストレージデバイスと、ネットワーキングリソースと、を有するデバイスである。コンピュータは、好適には、ひとつ以上の高性能ＣＰＵと、１Ｇ以上のメインメモリと、５００Ｇｂから２Ｔｂのコンピュータ可読永続ストレージと、を含み、ＬＩＮＵＸやその亜種などのオペレーティングシステムを実行するサーバクラスコンピュータである。本明細書で説明されるコンテンツ管理システム１１０の動作は、ハードウエアを通じて、または、コンピュータストレージにインストールされ本明細書に記載される機能を実行するためにそのようなサーバのプロセッサによって実行されるコンピュータプログラムを通じて、制御可能である。これらのシステムは、本明細書で説明される動作のために必要な他のハードウエア要素を含み、それは、ネットワークインタフェースやプロトコル、データ入力用の入力デバイス、およびデータの表示、印刷または他の提示のための出力デバイスを含むが、これらは本明細書では説明されていない。同様に、システムの特徴を不明瞭にしないために、ファイヤウォールや負荷分散器やフェイルオーバサーバやネットワーク管理ツールなどの従来の要素は示されていない。最後に、コンテンツ管理システム１１０の機能および動作は、コンピュータシステムへの実装を必要とするほど十分に複雑であり、人の心のなかで単なる精神的なステップにより実行されうるものではない。
【００７０】
ある構成では、コンテンツ管理システム１１０を参照して後述されるコンポーネントは、コンテンツ管理システム１１０による管理なしにコンテンツアイテムを共有し同期するデバイス１００に組み入れられる。これらのデバイス１００は、上述のネットワーク１２０や直接接続を介して、コンテンツを同期し、相互作用情報を共有してもよい。この構成では、デバイス１００は、同期モジュール４１２と、競合管理モジュール４１４と、相互作用同期モジュール４１６と、コンテンツ管理システム１１０によって提供されるような後述の機能を組み入れるための他のモジュールやデータストアと、の機能を組み入れてもよい。したがって、この構成のデバイス１００はピアツーピア構成で動作し、コンテンツ管理システム１１０やネットワーク１２０なしでそうしてもよい。
【００７１】
図５は、ある実施に従う、コンテンツアイテムに関連付けられたプレゼンス情報を判定する例示的処理を示す。この処理は典型的には相互作用管理モジュール２０４によって実行される。ユーザインタフェース要素がコンテンツアイテムに関連付けられた後にのみ監視される場合において、相互作用管理モジュール２０４は、ユーザインタフェース要素を監視するかを判定するために、コンテンツアイテムがアプリケーション又はユーザインタフェース要素によって開かれていることを示すイベントを用いる。これは、コンテンツアイテムをユーザインタフェース要素に関連付けるかもしれないイベントの一例であり、監視イベントと呼ばれる。他の実施形態では、監視するユーザインタフェース要素の選択は、他の方法で決定され、又は、全てのユーザインタフェース要素が監視される。この場合、相互作用管理モジュール２０４は監視イベントを使用しなくてもよい。他の実施形態では、監視イベントはコンテンツアイテムを保存する処理を含む。
【００７２】
オペレーティングシステム２４５によって利用可能にされた場合、相互作用管理モジュール２０４は、特定のアプリケーションのための監視イベントを受信するために、オペレーティングシステム２４５に登録してもよい。これらの実施形態では、オペレーティングシステム２４５は、オペレーティングシステム２４５がコンテンツアイテムを開く又は保存する要求を受信した場合に、相互作用管理モジュール２０４に通知する。この実施形態では、相互作用管理モジュール２０４は、ウィンドウ又は他のユーザインタフェース要素がコンテンツアイテムと相互作用することを示す監視イベントを受信し（５００）、このコンテンツアイテムは、同期されたコンテンツアイテムであってよい（すなわち、プロセスは特定のユーザインタフェース要素においてコンテンツアイテムと相互作用する）。監視イベントは監視イベントをトリガしたユーザインタフェース要素を少なくとも示す。他の実施形態では、相互作用管理モジュール２０４は、時々（例えば５分インターバルで）ユーザインタフェース要素に関連付けられたイベントを監視し、ユーザインタフェース要素が任意の開かれているコンテンツアイテムと関連付けられているかを問い合わせる。オペレーティングシステム２４５とネイティブアプリケーション２５５の構成に従って、この問い合せは、オペレーティングシステム２４５又はネイティブアプリケーション２５５に向けられてよい。ユーザインタフェース要素が新たに開かれたコンテンツアイテムを含む場合、その新たに開かれたコンテンツアイテムは、新たに開かれたコンテンツアイテムがコンテンツ管理システム１１０と同期されたコンテンツアイテムであるかを判定するために監視イベントとして扱われ、そして、そのプレゼンス情報は新たに開かれたコンテンツアイテムに対して判定されなければならない。
【００７３】
監視イベントが受信された場合、相互作用管理モジュール２０４は、どのプロセスが、監視イベントに関連付けられたユーザインタフェース要素に対する責務を負うかを５１０において判定する。相互作用管理モジュール２０４は典型的に、オペレーティングシステム２４５からユーザインタフェース要素に関連付けられたプロセスＩＤを要求することによってプロセスを判定する。いくつかの実施形態では、相互作用管理モジュール２０４は、ユーザインタフェース要素自身からプロセスの識別子を要求することによって、プロセスを識別する。
【００７４】
プロセスとユーザインタフェース要素とが互いに正しく関連付けられていること、及び、ユーザインタフェース要素が依然としてアクティブであることを確認するために、相互作用管理モジュール２０４は、プロセスから現在アクティブなユーザインタフェース要素の識別を要求してもよい。相互作用管理モジュール２０４は、プロセスから受信した現在アクティブなユーザインタフェース要素が、監視イベントと関連付けられたユーザインタフェース要素と一致することを確認する。
【００７５】
プロセスの識別子を用いて、相互作用管理モジュール２０４は、コンテンツアイテムに対する関連付けられたディレクトリパスを取得するために、プロセスから任意の開いているコンテンツアイテムを５２０において要求する。相互作用管理モジュール２０４は、監視イベントに関連付けられたユーザインタフェース要素に、開かれているコンテンツアイテムのパスに対する要求を結びつける。相互作用管理モジュール２０４は、プロセス又はオペレーティングシステムへの利用可能なインタフェースを用いて、プロセス又はオペレーティングシステムから開いているアイテムを要求する。ある例として、OS Xオペレーティングシステムでは、既知であるように、コンテンツアイテムとユーザインタフェース要素に対するコンテンツアイテムパスとに関連付けられた情報にアクセスするためにアクセシビリティＡＰＩが用いられる。プロセスによって提供されるコンテンツアイテムパスを用いて、相互作用管理モジュール２０４は、開かれたコンテンツアイテムパスが任意の同期されたコンテンツアイテムに対応するかを判定する。そうであれば、相互作用管理モジュール２０４は、プロセスによってアクセスされるコンテンツアイテムがコンテンツ管理システム１１０に同期されたコンテンツアイテムであると判定し、当該プロセスとユーザインタフェース要素とをコンテンツアイテムに関連付ける。他の実施形態では、プロセスによってアクセスされるコンテンツアイテムが同期されたコンテンツアイテムであるかどうかを判定するために他の方法が用いられてもよい。
【００７６】
コンテンツアイテムが、コンテンツ管理システム１１０に５３０において同期される場合、相互作用管理モジュール２０４は、イベントに対するユーザインタフェース要素を５４０において監視するために、コンテンツアイテム、プロセス及びユーザインタフェース要素に関連する情報を格納する。監視イベントに関連付けられたコンテンツアイテムが同期されていない場合、プロセスは終了してもよいし、ユーザに同期インタフェースを表示することによって続いてもよい。監視情報は、監視プレゼンスデータストア２１０に格納される。監視し、その後ユーザインタフェース要素に関連するプレゼンスイベントを受信するために、相互作用管理モジュール２０４は、ユーザインタフェース要素に関連付けれたイベントを受信するために登録する。相互作用管理モジュール２０４による登録処理は、デバイス１００の構成に従って変わる。典型的には相互作用管理モジュール２０４は、オペレーティングシステム２４５から、又は、利用可能なプロセス又はユーザインタフェース要素からのプレゼンスイベントを受信するための要求を登録する。監視イベントは、ユーザインタフェース要素又はプロセスが同期したコンテンツアイテムと関連付けられるかを判定する一方、プレゼンスイベントは、コンテンツアイテムに関連付けられたユーザインタフェース要素又はプロセスに関連する、ユーザのプレゼンスの状態の変化を示し得るイベントである。例示のプレゼンスイベントは、相互作用管理モジュール２０４によって認識されるプレゼンスの種別に基づく、ユーザインタフェース要素のフォーカスの変化、ユーザインタフェース要素を閉じること、コンテンツアイテムを閉じること、コンテンツアイテムを開くこと等を含む。様々な実施形態では、相互作用管理モジュール２０４によって使用されるプレゼンスイベントは、オペレーティングシステム２４５及びネイティブアプリケーション２５５が相互作用管理モジュール２０４による受信のために利用可能にしているイベントに基づく。
【００７７】
プレゼンスイベントは、プレゼンスイベントが関連するコンテンツアイテムと関連付けられたプレゼンス情報を判定するために用いられる。例えば、コンテンツアイテムに関連付けられるユーザインタフェース要素がフォーカスを有することを示すプレゼンスイベントは、ユーザがコンテンツアイテムを閲覧していることを示し、従って、当該コンテンツアイテムに対するプレゼンス情報は、その状態を示す。同様に、コンテンツアイテムに関連付けられていないユーザインタフェース要素がフォーカスを得たことを示すプレゼンスイベントは、以前にフォーカスされたユーザインタフェース要素に関連付けられたコンテンツアイテムがフォーカスを失ったことを示し、従って、ユーザがもはや当該コンテンツアイテムを閲覧していないことを示す。従って、プレゼンス情報はプレゼンスイベントそのものの基礎となるセマンティック解釈のレベルを提供する。
【００７８】
相互作用管理モジュール２０４が登録したプレゼンス情報を受信することに加えて、プレゼンス情報はまた、監視されるユーザインタフェース要素に対してプレゼンス情報が変化していないことを確認するために、相互作用管理モジュール２０４によって開始されてよい。これらのプレゼンスイベントは、閾値の時間が特定のユーザインタフェース要素又はプロセスに対する最後のプレゼンスイベントから経過した場合、又は特定のインターバル、例えば５分を経過した場合に開始されてもよい。
【００７９】
プレゼンスイベントに対する登録に加えて、相互作用管理モジュール２０４は他の方法によって相互作用イベントを受信してもよい。ある実施形態では、ユーザは、ユーザインタフェース要素を通じて相互作用情報を明示的に示してもよい。ユーザインタフェース要素は、例えば、特定の意図を表すメニューアイテム又はアイコンを選択することによって、例えばユーザがコンテンツアイテムの更新を意図することを示して、コンテンツアイテムを編集している又は閲覧している他のユーザにその意図を示すことができるように構成され得る。ユーザインタフェース要素は、もはやコンテンツアイテムを閲覧しない或いは現在又は将来にコンテンツアイテムがユーザに提示されないことを明示するような、ユーザの他の意図をユーザが示すことができるようにも構成され得る。他のユーザは、コンテンツアイテムを自由に編集できることを知るために、そのような「提示しない」意図を用いてもよい。ユーザ入力の相互作用イベントはまた、例えばデバイス上でコンテンツアイテムを現在閲覧している他のユーザへメッセージを送信する、コンテンツアイテムに関連付けられた他のユーザに広めるためのメッセージ又はチャット機能を含んでよい。
【００８０】
プレゼンス情報が５５０において受信された場合、相互作用管理モジュール２０４は、任意のプレゼンス情報が監視ユーザインタフェース要素に関連する最後のプレゼンスイベントから変更されたかを判定する（５６０）。ユーザが開始させる相互作用情報に対して、相互作用情報は、例えば、ユーザがコンテンツアイテム又はユーザのチャットメッセージを修正する意図することを示す、ユーザインタフェース要素のユーザの選択のような、ユーザによって提供される情報であってもよい。プレゼンスイベントに対し、相互作用管理モジュール２０４は、監視されるユーザインタフェース要素の状態を判定するために、監視プロセスに問い合わせる。特に、相互作用管理モジュール２０４は、監視されるユーザインタフェース要素がアクティブなユーザインタフェース要素であるかを判定するために、プロセスに問い合わせる。監視されるユーザインタフェース要素がアクティブなユーザインタフェース要素である場合、コンテンツアイテムはユーザによって閲覧されている。
【００８１】
いくつかの実施形態では、コンテンツアイテムに関するユーザプレゼンスを検出することに加えて、相互作用管理モジュール２０４はまた、コンテンツアイテムがユーザによって修正されている又は修正されたかを判定する。この更なる側面は、例えば、ユーザがコンテンツアイテムに関して閲覧者よりむしろ編集者としてプレゼンスを有することを示す表示を用いて、プレゼンス情報がより細かくレポートされるようにすることができる。上述したように、コンテンツアイテムが修正されている際にアプリケーションによって実行される特定のアクションは変化するため、相互作用管理モジュール２０４によってこれらのアクションのうちの１つを検出することは、プロセスがコンテンツアイテムを編集したことを示す。例えば、コンテンツアイテムが編集されている際にプロセスによって予期されるアクションの種別に従って、相互作用管理モジュール２０４は、コンテンツアイテムに修正されたことのフラグが立っていることをプロセスが示しているか、ユーザインタフェース要素のタイトル情報が変化したか、一時ファイルが保存され又はキャッシュされたか、又は、任意の他のデータが修正されたことを示唆するか、を判定するために、プロセスに問い合わせてよい。相互作用管理モジュール２０４はまた、例えば、コンテンツアイテムに類似したファイル名を有するコンテンツアイテムであるが、チルダ又は他の特殊なファイル名のバリエーションを有する、一時的なコンテンツアイテムの形式と一致するコンテンツアイテムが保存されたかを判定するために、オペレーティングシステムに問い合わせてもよい。このような修正は、コンテンツアイテムに関連付けられたプレゼンス情報が、ユーザがコンテンツアイテムを編集していることを反映しなければならないことを表す。
【００８２】
プレゼンス情報の５６０における判定の後には、ユーザインタフェース要素に対する任意の新たなプレゼンス情報が監視プレゼンスデータストアとして格納されてよい。ある実施形態におけるこのプレゼンス情報は、１のプロセスによって複数のユーザインタフェース要素が同一のコンテンツアイテムと関連付けられ、そして、個別に管理されるプレゼンス情報を有してもよいように、ユーザインタフェース要素ごとの原則で格納される。ある実施形態では、プレゼンス情報は現在のプレゼンス状態に応じて変化してもよい。例えば、コンテンツアイテムに対するプレゼンス情報が、コンテンツアイテムが編集されていることを反映する場合、ある実施形態では、ユーザが他のユーザインタフェース要素にフォーカスを変更したときに、ユーザインタフェース要素内のコンテンツアイテムのプレゼンスは変更されない。代わりに、編集された状態は、プレゼンスイベントがユーザインタフェース要素が閉じていることを示すまで、ユーザインタフェース要素に関して維持される。他の実施形態では、編集はコンテンツアイテムに変更を導入する可能性があるため、ある実施形態では、編集されたドキュメントに対するプレゼンス情報は、コンテンツアイテムへの変更がコミットされた又は修正が破棄されたといういずれかの通知をインタラクション管理モジュール２０４が受信するまで、変更されない。
【００８３】
閲覧されていることを示すプレゼンス情報を有するコンテンツアイテムは、ユーザインタフェース要素がフォーカスを失ったとき、又はフォーカスを失う閾値期間内にその状態変化を有してもよい。これは、コンテンツアイテムに関連付けられたユーザインタフェース要素がまだ開いている場合であってもよい。ある実施形態では、「閲覧された」プレゼンス情報は、コンテンツアイテムがアクティブなユーザインタフェース要素に関連付けられているかどうかを示す。ある実施形態では、「閲覧された」プレゼンス情報は、ユーザインタフェース要素が時間の閾値より長い間アクティブでなくなる（またはフォーカスを失ったとき）まで保持される。ある実施形態では、コンテンツアイテムがアプリケーションによって開かれている間には、コンテンツアイテムは「閲覧された」とみなされる。
【００８４】
相互作用情報に変化がある場合、相互作用管理モジュール２０４は、プレゼンス情報をコンテンツ管理システム１１０に送信する（５７０）。ある実施形態では、送信されたプレゼンス情報は、コンテンツアイテムの識別子、プロセスＩＤ、ユーザインタフェース要素ＩＤ、及びプレゼンス状態を含む。プレゼンス情報はさらに、バージョンに関するメモやプレゼンスイベントタイムスタンプなどのメタデータを含んでもよい。
【００８５】
ある実施の形態では、コンテンツ管理システム１１０は、例えばコンテンツ管理システム１１０のデータストアにおいて、同期済みコンテンツアイテムの受信した相互作用情報を維持する。コンテンツ管理システム１１０は、ユーザに表示するために、コンテンツアイテムに関して同期した他のデバイス１００に、受信した相互作用情報を提供してもよい。
【００８６】
図６Ａ−６Ｄは、相互作用情報を表示する例示的ユーザインタフェースを示す。これはユーザ通知キューコンテンツを含む。これらのユーザインタフェースは、例えば、ユーザインタフェースモジュール２０２によって生成され、これを行うための１つの手段である。図６Ａでは、ユーザインタフェースの例示的ウインドウ６０５は、ここでは「コンテンツアイテム６」である同期済みコンテンツアイテムを表示する。例示的なユーザインタフェースは、コンテンツ管理システム１１０から受信した相互作用情報を表示する。相互作用情報を表示するために、相互作用管理モジュール２０４は、コンテンツアイテムに関連付けられたウインドウの縁または境界に沿って相互作用インジケータ６００を提供する。
【００８７】
相互作用インジケータ６００は、コンテンツアイテムに関連付けられたウインドウと共に表示され、ある実施の形態では、相互作用管理モジュール２０４は、ウインドウの位置を追跡し、そのウインドウに隣接してまたはその近くに（例えば、ウインドウの縁または境界のそばに）相互作用インジケータ６００を表示する。相互作用インジケータ６００は、ディスプレイ２２０の任意の都合のよい領域に配置されてよい。ある実施形態では、相互作用インジケータは、相互作用インジケータと特定のコンテンツアイテムとの間の関係をユーザに視覚的に示すように、コンテンツアイテムの関連するユーザインタフェース要素の近傍に表示される。更に、ウインドウの境界又は縁に沿った相互作用インジケータの表示は、ユーザが相互作用インジケータ６００に気付く可能性を増加させる。ある実施形態では、相互作用インジケータ６００は、コンテンツアイテムを含むウインドウの垂直エッジ上又はそのそば（例えば、図６Ａに示すような右端）に表示される。代替的に、相互作用インジケータ６００は、タスクバー又はトレイアイコンのようなディスプレイの別の領域に表示されてもよく、或いは、コンテンツアイテムのユーザインタフェース要素と相互作用しない別個のユーザインタフェース要素であってもよい。本明細書では単一の相互作用インジケータ６００として示されているが、任意の数の相互作用インジケータ６００をコンテンツアイテムに関連して表示してもよい。
【００８８】
図６Ｂでは、相互作用インジケータ６００はバッジ要素６１０を含む。バッジ要素６１０は、相互作用情報についてのより多くの情報を提供するために複数の他の視覚的要素を含んでもよい。例えば、バッジ要素６１０は、図６Ｂに示されるように、まだ視られていない相互作用イベントの数を表す数を有してもよい。他の実施の形態では、バッジ要素６１０は、ユーザにまだ視られていない相互作用イベントを示すためのアイコンなどの視覚的要素であってもよい。
【００８９】
図６Ｃを見ると、ユーザが相互作用インジケータ６００を選択したすなわちその上にカーソルを合わせた場合、ユーザにさらなる情報またはインタフェースを提供するための補足相互作用インジケータ６２０が現れてもよい。図６Ｃに示される例では、補足相互作用インジケータ６２０は、例えばアンドリューがコンテンツアイテム６を編集したという、コンテンツアイテムとの最近の相互作用を記述する。補足相互作用インジケータ６２０はまた、ユーザによるアクションなしで現れてもよく、例えばプレゼンスが変わったときに新たなユーザがドキュメントを編集しているか閲覧していることを示すために現れてもよい。
【００９０】
図６Ｄは、相互作用要素６３０を伴う例示的ユーザインタフェースを示し、ユーザはその相互作用要素６３０を通じて相互作用情報を閲覧し、それを入力する。このインタフェースは、更なるユーザインタフェース要素に加えて、相互作用インジケータ６００を含む。相互作用要素６３０は図６Ａ−６Ｃの例の代わりに提示されてもよく、またはコンテンツアイテムに関する追加的データを提供する補足要素として提示されてもよい。
【００９１】
相互作用要素６３０は、コンテンツアイテム情報セクション６４６を含み、そのセクション６４６は、コンテンツアイテムの名称と、保存アクションなどの最新の相互作用イベントの時刻と、を表示する。図６Ｄの例では、コンテンツアイテム情報セクション６４６は、コンテンツアイテム６が直近で３分前に保存されたことを示す。インタフェースはまた、共有要素６４２を含み、この共有要素６４２により、ユーザは、同期を介してまたは既に知られている他の方法を介して、他のユーザとコンテンツアイテムを共有することができる。
【００９２】
図６Ｄの例示的インタフェースは、相互作用閲覧セクション６３４を含む。該セクション６３４は、相互作用情報および関連情報をユーザに表示する。関連情報は、相互作用が発生した時刻および相互作用に関連付けられたユーザ情報を含んでもよい。図６Ｄの例では、相互作用閲覧セクション６３４はメッセージ６３４Ａ−Ｂとプレゼンス情報６５０Ａ−Ｂとを含む。表示されている相互作用情報の各アイテムについて、相互作用閲覧セクション６３４は相互作用時刻６４４Ａ−Ｄを含む。ある実施の形態では、図６Ｄに示されるように、相互作用時刻６４４Ａ−Ｄは相互作用が生じた時刻として表される。他の実施の形態では、相互作用時刻は相対的な時刻として表現される。例えば、相互作用が生じてからどれくらいの時間が経過したかである。
【００９３】
相互作用閲覧セクション６３４はメッセージについてのユーザイメージ６３６Ａ−Ｂとユーザに関連付けられた他の相互作用情報とを含む。ユーザイメージ６３６Ａ−Ｂはコンテンツ管理システム１１０から受け付けられてもよい。相互作用閲覧セクション６３４はユーザ識別子６４８Ａ−Ｂを含み、これはユーザＩＤ、名前、または他の識別子であってもよい。相互作用閲覧セクション６３４は、相互作用情報についての他のアイコンやグラフィックを含んでもよい。例えば、アイコン６３８Ａ−Ｂは表示されているプレゼンス情報に対応してもよい。アイコン６３８Ａは閲覧を表す目であり、アイコン６３８Ｂは編集や新たなバージョンの保存を表す鉛筆である。
【００９４】
ある実施の形態では、ユーザは、追加的な情報を視るために、相互作用閲覧セクション６３４内の種々の要素と相互作用（例えば、クリック、カーソルを合わせる等）してもよい。例えば、名前要素６４８Ａ−Ｂやユーザイメージ６３６Ａ−Ｂを選択するまたはその上にカーソルを合わせることにより、ユーザは、そのユーザに関する追加的なユーザ情報を閲覧することができる。
【００９５】
このインタフェースはまた、ユーザがコンテンツアイテムに関連付けられた他のユーザと通信するためのチャットインタフェースを提供する。チャットインタフェースは、ユーザが他のユーザにメッセージを入力したり受信したりすることを可能にする。テキスト入力要素６３２はユーザが他のユーザへのメッセージを入力することができるようにし、相互作用閲覧要素６３４はユーザがメッセージを視ることを可能とする。チャットインタフェースは、ユーザがアイテムの編集を終了しそうな場合のような、ユーザがそのコンテンツアイテムに関する情報を具体的に議論することができるようにし得る。これらのメッセージは、相互作用情報として相互作用管理モジュール２０４によって受信され、コンテンツアイテムに同期される他のクライアントに送信される。ネイティブアプリケーションがチャット機能を提供しない場合であっても、これにより、ユーザはコンテンツアイテムについて直接チャットすることができるようになる。
【００９６】
図７は、ある実施の形態に係る、共有ユーザ用の通知キューを更新するための例示的処理を示す。コンテンツ管理システム１１０は、共有コンテンツアイテムについての相互作用イベントの通知を受ける（７０２）。相互作用イベントは共有ユーザによる共有コンテンツアイテムとの新たな相互作用を示し、我々は本明細書において説明のためにこの共有ユーザを「ユーザＡ」を称す。
【００９７】
ある実施の形態では、コンテンツ管理システム１１０は、複数のユーザがコンテンツアイテムにおいて共同作業をしているか否かを判定する（７０４）。すなわち、複数のユーザが現在閲覧または編集のためにドキュメントを開いているか否かを判定する。ユーザがコンテンツアイテムにおいて共同作業している場合、処理は終了し、ユーザの通知キューに通知は追加されない。ユーザがコンテンツアイテムにおいて現在共同作業していない場合、コンテンツ管理システム１１０は各共有ユーザについてのコンテンツアイテム用の通知キューを更新することに進む。
【００９８】
コンテンツ管理システム１１０は新たな相互作用の相互作用タイプおよび優先度を決定する（７０６）。コンテンツ管理システム１１０は、新たな相互作用の相互作用タイプおよび優先度を用いることで、コンテンツアイテム用の各ユーザの通知キューに相互作用を追加するか否かを決定する。各共有ユーザについて、コンテンツ管理システム１１０は、新たな相互作用の優先度よりも高い優先度を伴う、共有ユーザＡによる相互作用を通知キューが既に含んでいるか否かを判定する（７１０）。共有ユーザＡによるより高い優先度を伴う相互作用を通知キューが既に含んでいる場合、通知キューは更新されず、処理はステップ７０８から次のユーザへと進む。共有ユーザＡによるより高い優先度を伴う相互作用を通知キューが含んでいない場合、コンテンツ管理システム１１０は新たな相互作用を通知キューに追加する（７１２）。ある実施の形態では、コンテンツ管理システム１１０は共有ユーザＡによるより低い優先度を伴う相互作用を通知キューから取り除く（７１４）。
【００９９】
図８は、ある実施の形態に係る、コンテンツアイテムにアクセスするデバイスに通知キューを送信するための例示的処理を示す。コンテンツ管理システム１１０は、コンテンツアイテムが共有ユーザＢによってアクセスされたという通知を受ける（８０２）。コンテンツ管理システム１１０は、共有ユーザＢがコンテンツアイテムにおいて共同作業しているか否かを判定す（８０４）。共有ユーザＢがコンテンツアイテムにおいて共同作業している場合、コンテンツ管理システム１１０は、キューを配信することなく、コンテンツアイテム用の共有ユーザBの通知キューをクリアする（８０６）。あるいはまた、共有ユーザＢがコンテンツアイテムにおいて共同作業していない場合、コンテンツ管理システム１１０は、コンテンツアイテム用の共有ユーザＢの通知キューを共有ユーザＢのデバイス１００に送信する。
【０１００】
本発明の実施形態に係る前述の説明は、説明の目的で提示されており、本発明を網羅する又はここで開示される同一の形態に限定することを意図していない。当業者であれば、上記開示に照らして種々の変更及び変形が可能であることを理解することができる。
【０１０１】
当該記載のある部分は、情報におけるアルゴリズムと記号表現の操作に関する本発明の実施形態を説明するものである。これらのアルゴリズムに関する記載と表現は、データ処理の分野の当業者が他の当業者に効果的に本質を伝えるために通常用いられる。機能的、コンピュータ的、又は論理的に記載される一方で、これらの操作はコンピュータプログラム、同等の電気的な回路、又はマイクロコードなどによって実装されるべきであることが理解される。更に、一般性を失うこと無く、モジュールとして、これらの操作の変形に言及することが都合がよい場合もあることも証明されている。説明した動作及びそれらに関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせで具体化されてもよい。
【０１０２】
ここで説明されるステップ、動作、又はプロセスのいずれかは、単独で、又は他のデバイスと組み合わせて、１以上のハードウェア又はソフトウェアモジュールで実行又は実装されてもよい。ある実施形態において、ソフトウェアモジュールは、記述されたステップ、動作、又はプロセスの何れか又は全てを実行するコンピュータプロセッサによって実行されうるコンピュータプログラムコードを含むコンピュータ可読媒体を備えるコンピュータプログラム製品で実装されてもよい。
【０１０３】
本発明の実施形態はまた、ここでの動作を実行する装置に関連する。当該装置は、必要な目的のために特別に構成することができ、及び／又は、コンピュータに格納されたコンピュータプログラムによって選択的に起動又は再構成された汎用コンピューティングデバイスを含むことができる。このようなコンピュータプログラムは、非一時的な、有形のコンピュータ可読記憶媒体、又はコンピュータシステムバスに結合することができる電子命令を格納するのに適した任意の種別の媒体に格納することができる。 さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含むことができ、或いは、コンピューティング性能を高めるために複数のプロセッサ設計を採用するアーキテクチャであってもよい。
【０１０４】
本発明の実施形態はまた、ここで説明されるコンピューティングプロセス（処理）によって生成される製品に関連してもよい。そのような製品は、非一時的な、有形のコンピュータ可読記憶媒体に情報が格納される計算プロセスから生じる情報を含むことができ、ここで記載されるコンピュータプログラム製品又は他のデータの組み合わせの任意の実施形態を含むことができる。
【０１０５】
最後に、明細書において使用された言葉は主に可読性及び説明の目的のために選択されたものであり、本発明の主題の輪郭を描いたり制限を加えたりするために選択されたものではない。従って、本発明の範囲は、この詳細な説明によって限定されるのではなく、ここでの記載に基づく本出願で公表される任意の請求項によって限定されることが意図される。従って、本発明の実施形態の開示は説明のためを意図したものであって、以下の請求項において明らかにされる本発明の範囲を限定するものではない。
【図１】
2019509538.tif 000003
【図２】
2019509538.tif 000004
【図３Ａ】
2019509538.tif 000005
【図３Ｂ】
2019509538.tif 000006
【図４】
2019509538.tif 000007
【図５】
2019509538.tif 000008
【図６Ａ】
2019509538.tif 000009
【図６Ｂ】
2019509538.tif 000010
【図６Ｃ】
2019509538.tif 000011
【図６Ｄ】
2019509538.tif 000012
【図７】
2019509538.tif 000013
【図８】
2019509538.tif 000014
【国際調査報告】
2019509538.tif 000015
2019509538.tif 000016