図1は、相互作用情報の通信を含む、コンテンツアイテムを同期する環境の実施形態を示す。図1は、デバイス100A、100B、100C(広くデバイス100として参照される)、コンテンツ管理システム110、及びネットワーク120を含む。3つのデバイスは図示の目的のみのために示されるものであり、実際には任意の数のデバイスが環境に存在してよい。同様に、全体を通して説明及び図示される他のモジュール又は構成要素は、実施のニーズに対して適切であり一般性を失わないものとして1つ又は複数のインスタンスを含んでよい。
デバイス100は、ローカルにコンテンツアイテムを格納して閲覧するため、及びコンテンツ管理システム110とコンテンツアイテムを同期するための任意の適切なコンピューティングデバイスであってよい。デバイスの例は、デスクトップ及びラップトップコンピュータ、携帯型モバイルデバイス、タブレットコンピュータ、及び他のコンピューティングデバイスを含む。様々な実施形態におけるデバイス100の動作は、更に以下で説明される。
各デバイス100は、ネットワーク120を介してコンテンツ管理システム110と通信する。ネットワーク120は、任意の適切なネットワークであり、ローカルネットワーク、業務用ネットワーク、グローバルネットワーク、及び任意のこれらの組み合わせを含んでよい。典型的な構成では、デバイス100は、有線又は無線の通信ネットワークを介してローカルのネットワークサービスプロバイダと通信し、インターネットを通じてコンテンツ管理システム110と通信する。ある構成では、デバイス100A、100B、100Cは、図1において破線で示されるように、ネットワーク120を介すること無く、互いに直接通信する。例えば、デバイス100は、Bluetooth通信を介した無線、又は、ユニバーサル・シリアル・ネットワーク(USB)を介した有線のような、有線又は無線接続を介して通信してもよい。
コンテンツ管理システム110は、デバイス100のユーザに対し、コンテンツ共有及び同期サービスを提供する。これらのサービスは、ユーザが他のデバイス100のユーザとコンテンツを共有できるようにする。コンテンツ共有に加えて、コンテンツ管理システム110は、変更に応じて共有コンテンツを更新し、複数のデバイス100に渡ってコンテンツアイテムに対する同期された変更を可能にする。ユーザは、ユーザが所有し、ユーザのアカウントに関連付けられている複数のデバイス100に渡ってコンテンツを同期してもよく、ユーザは、他のユーザのアカウントに関連付けられているデバイスと同期されるコンテンツを共有してもよい。コンテンツ管理システム110に格納されるコンテンツは、以下で合わせて「コンテンツアイテム」として参照される、デジタルデータ、書類、メディア(例えば画像、写真、ビデオ、音声、ストリーミングコンテンツ)、データファイル及びデータベース、ソースコード及びオブジェクトコード、記録、及び、任意の他のデータ又はファイルの種別などの、データの任意の種別を含み得る。コンテンツ管理システム110によって格納されるコンテンツアイテムはまた、フォルダ、テーブル、コレクション、アルバム、プレイリスト、又は他のデータベース構成物(例えば、オブジェクト指向のもの、キー/バリュー等)など、他のコンテンツアイテムを組織するために用いられてよい。実際には、様々なデバイス100は、ユーザ連携、パーミッション、コンテンツ共有パーミッション等に基づいて、コンテンツアイテムの異なるグループを同期させてもよい。様々な実施形態におけるコンテンツ管理システム110の動作は、更に以下で図4を参照して説明される。
図2は、ある実施形態に従う、デバイス100の様々なモジュールと構成要素を示す。デバイス100は、情報をユーザに提供するディスプレイ220を含み、あるクライアントデバイス100はタッチスクリーンを含む。デバイス100はまた、ネットワーク120を介してコンテンツ管理システム110と通信するためのネットワークインタフェース225を含む。デバイス100はまた、キーボード、マウス、タッチパッド、または他のデバイスなどの様々なユーザ入力デバイスからのユーザ入力を受け取る、ユーザ入力モジュール260を含む。重要でない、例えば、1つ以上のコンピュータプロセッサ、ローカルの固定メモリ(RAM及びROM)、及び、オプションとしての着脱可能メモリ(例えば、SDカード)、電源、及び音声-ビデオ入力といった、クライアントデバイス100の他の従来的な構成要素は示されていない。
ソフトウェアモジュールは、オペレーティングシステム245及び1つ以上のネイティブアプリケーション255を含む。ネイティブアプリケーション255は、クライアントデバイスに応じて異なり、ワードプロセッサ、スプレッドシート、データベース管理システム、コードエディタ、画像及びビデオエディタ、電子ブックリーダ、音声及びビデオプレーヤーなどの、コンテンツ管理システム110に格納されたコンテンツアイテムを生成し、閲覧し、消費し、及び修正するための様々なアプリケーションを含んでよい。各デバイス上のオペレーティングシステム245は、ローカルのファイル管理システムを提供し、コンテンツ管理システムクライアントアプリケーション200及びネイティブアプリケーション255などの、様々なソフトウェアモジュールを実行する。コンテンツディレクトリ240は、名前、写真、電話番号、会社、電子メールアドレス、物理アドレス、ウェブサイトURLなどの、ユーザの連絡先についての情報を格納する。ネイティブアプリケーション255、オペレーティングシステム245及びコンテンツ管理システムクライアントアプリケーション200の更なる動作は、以下で説明される。
ある実施形態では、デバイス100は、カメラ230及びロケーションモジュール235などの、追加的な構成要素を含む。カメラ230は、オンラインコンテンツ管理システム110にアップロードする画像又はビデオを撮影するために用いられてよい。ロケーションモジュール235は、例えば、全地球測位衛星(GPS)信号、携帯電話基地局の三角測量、又は他の方法を用いてデバイスの位置を決定する。ロケーションモジュール235は、位置データを取得し、カメラ230によって撮影された画像のようなコンテンツアイテムについてのメタデータに位置データを追加するために、クライアントアプリケーション200によって使用されてよい。
クライアントデバイス100は様々な方法でコンテンツ管理システム110にアクセスする。クライアントアプリケーション200は、コンテンツ管理システム110のサービスへのアクセスを提供する専用のアプリケーション又はモジュールであってもよく、ユーザインタフェースを通した共有ファイルへのユーザアクセスと他のアプリケーションによるプログラムでのアクセスの両方を提供する。クライアントデバイス100はまた、ウェブブラウザ250を通じてコンテンツ管理システム110にアクセスしてもよい。代替として、クライアントアプリケーション200は、コンテンツ管理システム110へのアクセスと、オペレーティングシステム245によって提供されるローカルファイル管理システムとを統合してもよい。コンテンツ管理システム110へのアクセスがローカルファイル管理システムに統合された場合、コンテンツ管理システム110において保守されるファイル組織化スキームは、オペレーティングシステム245とクライアントアプリケーション200との共同により、ローカルファイル構成物として表される。クライアントアプリケーション200は、スタンドアローンのアプリケーション、アプリケーションプラグイン、又はブラウザ拡張などの様々な形式をとってよい。クライアントアプリケーション200は、ユーザインタフェースモジュール202、相互作用管理モジュール204、コンテンツアクセスモジュール206、ローカルコンテンツデータストア208、監視プレゼンスデータストア210及び共同作業モジュール207を含む。
他のデバイスタスクを扱うことに加えて、オペレーティングシステム245は、デバイス100上で実行しているアプリケーションからの情報をディスプレイ220を介してユーザに表示する。このとき、情報は1つ以上のユーザインタフェース要素を含み得る。このようなユーザインタフェース要素は、特定のデバイス及び構成に応じて変化してよい。ユーザインタフェース要素は、モバイルデバイス上のユーザインタフェース要素及び、デスクトップインタフェース上のウィンドウを含み得る。ウインドウのようなユーザインタフェース要素を用いるオペレーティングシステムの例は、レッドモンドのMicrosoft CorporationによるMicrosoft Windows 8、カリフォルニアのクパチーノのApple Inc.によるOS Xである。更に、オペレーティングシステム245は、同時に動作している複数のネイティブアプリケーション255の制御を管理する。ユーザインタフェース要素は、1つのレイヤが他のレイヤに重なるようにレイヤー化されてもよい。いくつかのオペレーティングシステムと構成では、1つのユーザインタフェース要素のみが所定の期間に表示される。典型的には1つのユーザインタフェース要素がアクティブなユーザインタフェース要素であり、これはオペレーティングシステム245がキーボードエントリ、カーソル移動、タッチセンサ、タッチジェスチャ等のようなユーザ入力を送るユーザインタフェース要素であることを意味する。当業者によって理解されるように、特定の期間にアクティブな、ウィンドウ又は他のユーザインタフェース要素は、しばしばフォーカスを有する。ユーザは、あるユーザインタフェース要素から他の要素へフォーカスを移動させるために他のユーザインタフェース要素を選択してもよく、ある例では、オペレーティングシステム245はフォーカスをユーザ入力なしに変更してもよい。
典型的には、ユーザインタフェース要素、例えばネイティブアプリケーション255と関連付けられたウィンドウ、はオペレーティングシステム245によって管理され、オペレーティングシステムは、実行しているネイティブアプリケーション255のプロセス識別子とユーザインタフェース要素のユーザインタフェース要素識別子との間の関連を管理する。例えば、特定のアプリケーションはプロセスid「2587」に関連付けられ、このプロセスidは、ユーザインタフェース要素識別子4、8及び10を用いて複数のユーザインタフェース要素を管理し得る。各ユーザインタフェース要素識別子は、別々に、そのネイティブアプリケーション255によって開かれた特定のコンテンツアイテムと関連付けられてよく、複数のユーザインタフェース要素識別子とプロセス識別子とは同一のコンテンツアイテムに関連付けられてもよい。
オペレーティングシステム245はまた、様々なイベントを扱い、認識する。このようなイベントは、コンテンツアイテムを閉じたり開くためのネイティブアプリケーション255からの要求、ウィンドウ又は他のユーザインタフェース要素を閉じるためのネイティブアプリケーション255からの要求、及びユーザインタフェース要素のフォーカスを変更する要求、その他の多くのものを含む。以下で説明されるように、これらのイベントは、コンテンツアイテムに関連するプレゼンスの変更を識別するために、相互作用管理モジュール204によって用いられてよい。
クライアントアプリケーション200は、ユーザがデバイス上のコンテンツアイテムを開く、閉じる或いは変更するときのように、コンテンツアイテムに関して生じる相互作用を識別する。これらの相互作用は、コンテンツアイテムとの相互作用を記述する相互作用情報を生成するために、クライアントアプリケーション200によって識別される。相互作用情報は、クライアントアプリケーション200との相互作用とネイティブアプリケーション255との相互作用とを含む。ネイティブアプリケーション255内で行われる動作から決定される相互作用情報は、プレゼンス情報と呼ばれる。相互作用情報とプレゼンス情報とを判定するクライアントアプリケーション200などのアプリケーションは、プレセンスアプリケーションと呼ばれる。(プレゼンス情報に加えた)相互作用情報の更なる種別は、コンテンツアイテムに関連する、ノート、メッセージ及び通知要求を含み、これらはクライアントアプリケーション200によって受信され得る。メッセージは、他のデバイスへのチャットメッセージ、コンテンツアイテムと相互作用(例えば編集)するユーザの意図を示すメッセージ、及び、共同作業セッションを開始するユーザの意図を示すメッセージを含んでよい。通知要求は、他のユーザの相互作用情報が変化した際に通知される要求を含んでよい。相互作用情報はまた、バージョン管理上のノートやイベントタイムスタンプのようなメタデータの修正、又は、バージョン管理情報又は以前のコンテンツアイテムのバージョンを閲覧するための要求のような、コンテンツアイテムに関するコンテンツ管理システム110に格納される更なる情報に対する要求を含む。更なる相互作用情報の例は以下に説明される。クライアントアプリケーション200は、ユーザから、チャット情報または意図情報を受信してもよい。様々な実施形態では、デバイス100は、コンテンツアイテムにおけるユーザのプレゼンス(すなわちユーザがコンテンツアイテムを開く又はネイティブアプリケーション255を用いてコンテンツアイテムを編集すること)を、後に更に説明するオペレーティングシステム245との相互作用を通じて、識別する。相互作用情報は、コンテンツアイテムに関して同期される他のデバイス100へ送信される。
デバイス100は、コンテンツ管理システム110からコンテンツアイテムを受信し、ユーザがデバイス100上に格納された様々なネイティブアプリケーション255を用いてコンテンツアイテムを閲覧し、修正し、及び相互作用することを可能にする。例えば、デバイス100は、画像コンテンツアイテムを操作する写真編集アプリケーション、テキストコンテンツアイテムの編集を可能にするワードプロセッシングアプリケーション、又は、コンテンツアイテムの描画の修正を可能にするコンピュータ支援設計(CAD)アプリケーションを含んでよい。更に後述するように、相互作用情報は、ユーザの相互作用アプリケーションを介してデバイス100によって判定され、相互作用情報は他のデバイス100に送信される。更に、デバイス100が他のデバイス100に関連する相互作用情報を受信した場合、デバイス100はその相互作用情報を表示する。
ある実施形態では、コンテンツアイテムに関連する相互作用情報を検出するアプリケーションは、コンテンツアイテムを閲覧し又は操作するアプリケーションとは別のものである。例えば、相互作用情報を検出するクライアントアプリケーションは、画像コンテンツアイテムを操作し又は表示する写真編集アプリケーションとは別のものである。様々な実施形態では、相互作用情報を検出するアプリケーションはまた、コンテンツアイテムをコンテンツ管理システム110と同期する責務を有する。相互作用情報を検出するアプリケーションはプレセンスが検出されるアプリケーションとは別のものであるため、プレゼンスは、多数のアプリケーションとコンテンツアイテムとに対して一度に監視され、また、コンテンツアイテムビューアの種別のそれぞれに対するプレゼンスの監視を統合すること無く監視されてよい。すなわち、例えば、写真編集アプリケーション、ワードプロセッシングアプリケーション、及びプレイリスト編集アプリケーションのそれぞれに対して、追加的な特別なプレゼンス監視又はアプリケーションの修正を必要としない。
図3A及び3Bは、デバイス100のディスプレイ220上に表示される、デスクトップ300におけるユーザインタフェース要素のフォーカス変化を示している。図3Aでは、ウィンドウ310A、310B及び310Cはデスクトップ300上に表示されてユーザから見えるようになる。この実施形態では、デスクトップ300は、ディスプレイ220上のユーザインタフェース要素を取り囲む、オペレーティングシステム245によって管理される汎用のコンテナ又はフレームである。図3A及び3Bでは、ユーザインタフェース要素は、デスクトップコンピューティング環境におけるウィンドウ310である。モバイルデバイス又は領域の制限される他のディスプレイのような他の構成では、1つのユーザインタフェース要素のみが一度に表示されてよい。図3Aに示すように、ウィンドウ310Aは、フロントウィンドウとして示されるアクティブウィンドウであり、部分的にウィンドウ310B及び310Cを覆っている。図3Bでは、フォーカスがウィンドウ310Bに変更され、今はフロントウィンドウであってアクティブウィンドウとなっている。フォーカスは、ウィンドウ310Bとのユーザ相互作用によって、又は、そのウィンドウをアクティブウィンドウにすることを要求するプロセスによって、変更されてよい。あるオペレーティングシステム及び構成では、ユーザインタフェース要素は、フロントのユーザインタフェース要素になること無く、フォーカスを有してよい(すなわち、ユーザ入力を受け取っている)。
再び図2を参照すると、コンテンツアイテムを開くために、ネイティブアプリケーション255はオペレーティングシステム245からコンテンツアイテムを要求し、コンテンツアイテムに対し、コンテンツアイテムへのハンドルをオペレーティングシステム245から受け取る。ある場合には、アプリケーション245はハンドルを維持せずに、ネイティブアプリケーション255がコンテンツアイテムからのデータを使用する場合、又は、ユーザがコンテンツアイテムに対する編集を入力する場合であっても、コンテンツアイテムをメモリにロードし、続いてコンテンツアイテムのハンドルを閉じてもよい。従って、開いたコンテンツアイテムのハンドルは、アプリケーションが特定のコンテンツアイテムと相互作用しているかを判定するためには信頼性の高いものではない。このように、ある実施形態では、ネイティブアプリケーション255によって示される更なる振る舞いが、アプリケーションがコンテンツアイテムを編集しているかを判定するために用いられる。
ネイティブアプリケーション255はまた、ユーザがコンテンツアイテムを修正した場合及びユーザがコンテンツアイテムを保存する前に、様々な振る舞いを実行する。これらの振る舞いはアプリケーション及びオペレーティングシステム245に応じて変化する。例えば、いくつかのネイティブアプリケーション255は、例えば、主要な一時的なコンテンツアイテムのファイル名にチルダ又は他の認識可能なマークとを有する、開いているコンテンツアイテムと異なるファイル名を有する一時的なコンテンツアイテムを生成する。他の例では、ネイティブアプリケーション255は、ユーザから直接視認可能である又は視認可能でない、コンテンツアイテムに関連付けれたユーザインタフェース要素のタイトルを変更する。更なる例では、ネイティブアプリケーション255は、コンテンツアイテムが修正されたことを示すフラグを設定する。ネイティブアプリケーション255はまた、他のアプリケーション又はオペレーティングシステム245からの要求に応じて、コンテンツアイテムの修正に関する情報を提供してもよい。例えば、上述したようなOS XオペレーティングシステムにおけるアクセシビリティAPIはユーザインタフェース要素と関連付けられたコンテンツアイテムに関する情報を提供する。開いたコンテンツアイテムのハンドルは、コンテンツアイテムがネイティブアプリケーション255によって編集されているかを判定するための信頼性の高いものではないため、これらの振る舞いは、コンテンツアイテムを編集している又は修正していることに関するプレゼンスを判定するために、更に後に説明されるように、プレゼンス管理モジュールによって使用される。
ネイティブアプリケーション255は典型的に、他とは独立にデバイス100内で実行され、アプリケーションと、他のアプリケーション又はデバイス100上で実行するプロセスとの間の通信を可能にし得る。ネイティブアプリケーション255は典型的に、アプリケーションが実行しているプロセスから情報を要求することを可能にする、アプリケーションプログラミングインタフェース(API)を用いてプロセスに情報を提供する。例えば、ネイティブアプリケーション255は、アプリケーションによって制御されるユーザインタフェース要素に対する要求を可能にする、又は、ユーザインタフェース要素のタイトルを示すため又はネイティブアプリケーション255によって開かれたコンテンツアイテムに関連付けられたファイルシステム内のパスを要求するための、APIを公開してよい。同様に、オペレーティングシステム245は、特定のユーザインタフェース要素を制御するプロセスについての情報を要求するような、要求処理のための類似のAPIを提供してもよい。
クライアントアプリケーション200は、コンテンツ管理システム110へのアクセスを制御する。クライアントアプリケーション200は、以下で様々に示されるように、クライアントアプリケーション200によってアクセスされるコンテンツへのインタフェースを生成する、ユーザインタフェースモジュール202を含み、この機能を実行する1つの手段である。生成されたインタフェースはディスプレイ220によってユーザへ提供される。クライアントアプリケーション200は、コンテンツ管理システム110のコンテンツストレージからアクセスされたコンテンツを、ローカルのコンテンツデータストア208に格納してもよい。ここではクライアントアプリケーション200内のものとして示されるが、ローカルコンテンツデータストア208は、不揮発性ストレージ内にクライアントデバイス100のための他のデータと共に格納されてもよい。ローカルのコンテンツデータストア208がこのように格納される場合、コンテンツは、クライアントアプリケーション200がコンテンツ管理システム110と通信中でないときに、ユーザ及びネイティブアプリケーション255のような他のアプリケーション又はモジュールに利用可能である。コンテンツアクセスモジュール206は、ローカルのコンテンツデータストア208への更新を管理し、クライアントデバイス100によって修正されたコンテンツをコンテンツ管理システム110上に維持されるコンテンツと同期するために、同期ロジックを用いてコンテンツ管理システム110と通信する。そのような同期の一例は2013年9月27日出願の米国特許第9,053,165号において提供されており、参照によってその全体がここに取り込まれる。クライアントアプリケーション200は、スタンドアローンのアプリケーション、アプリケーションプラグイン、又はブラウザ拡張などの様々な形式をとってよい。
コンテンツ管理システム110は、コンテンツアイテムが削除されたことを示す情報、又はデバイス100がコンテンツアイテムの期限切れのバージョンを閲覧又は編集しているであろうことを示す情報などの、コンテンツアイテムを同期するための追加的なデータを提供してもよい。
相互作用管理モジュール204は、ユーザの同期されたコンテンツアイテムに関連する相互作用情報を取得し管理する。上述したように、相互作用管理モジュール204は典型的に、プレゼンス情報のために相互作用管理モジュール204によって監視されているネイティブアプリケーション255とは別のモジュールであり、別のプロセスとして動作する。相互作用管理モジュール204は、デバイス100で生じる、同期されたコンテンツアイテムについての相互作用イベントを検出する。相互作用管理モジュール204は、プレゼンスイベントを監視することによって、またはコメントやメッセージなどの受信したユーザ入力を監視することによって、相互作用イベントを検出してもよい。相互作用イベントは、ユーザがコンテンツアイテムと相互作用したことを示す。相互作用は、コンテンツアイテムを視ることと、コンテンツアイテムを編集することと、コメントアイテムにコメントすることと、コンテンツアイテムに関するメッセージを送信することと、コンテンツアイテムにおいて共同作業することと、を含む。相互作用管理モジュール204は、相互作用イベントおよび他の相互作用情報についての通知をコンテンツ管理システム110に送信する。相互作用管理モジュール204はまた、ユーザに表示するために、コンテンツ管理システム110から、他のユーザのコンテンツアイテムとの相互作用に関する相互作用情報(ユーザ通知キューを含む)を受信する。ある実施の形態では、相互作用管理モジュール204は、同期されたコンテンツアイテムに関連付けられたユーザインタフェース要素に相互作用インジケータを付けることによって、ユーザ通知キューからの相互作用情報を表示する。種々の実施の形態では、相互作用インジケータおよび関連ユーザインタフェース要素は、プレゼンス情報などのリアルタイム相互作用情報と、過去の活動に関する相互作用情報と、を表示する。これにより、ユーザは、コンテンツアイテムとそれに関連する相互作用情報を同時に視ることができ、その結果、コンテンツアイテムとそのコンテンツアイテムに関連付けられたユーザとそのコンテンツアイテムに対してなされた変更とのより全体的な像が提供される。
ある実施の形態では、相互作用管理モジュール204は、受信した通知キューの内容と他の相互作用情報とを、時系列で表示するようにして提供する。この場合、ユーザはコンテンツアイテムとの相互作用のシーケンスを視ることができる。表示される相互作用情報は、タイムスタンプやユーザ識別子やユーザの写真や他のデータなどのメタデータを含んでもよい。他の実施の形態では、相互作用モジュールは、相互作用情報を、受信されるにつれて通知チャネルスタイルで表示する。新たな相互作用情報片がユーザインタフェースを介して他のデバイス100からまたはコンテンツ管理システム110から受信された場合、それはチャネルに追加され、ユーザは相互作用インジケータや他のユーザインタフェース要素や他の方法により通知される。通知を含む相互作用情報を表示することは、図6A−6Dを参照して以下により詳細に説明される。
ある実施の形態では、相互作用管理モジュール204は、相互作用情報についての通知がユーザに提供されたとき、またはユーザインタフェースに表示される相互作用情報をユーザが視たときを検出する。相互作用管理モジュール204は、この情報を、コンテンツ管理システム110および/またはユーザおよびコンテンツ管理システム110に関連付けられた他のデバイス100に送信してもよい。この場合、ユーザにより視られた相互作用情報を複数のデバイス100に亘って追跡することができる。この情報を用いることで、相互作用管理モジュール204またはコンテンツ管理システム110は、ユーザに相互作用情報についての通知が提供されたか否か、またはユーザが相互作用情報を視たか否か、を判定し、通知の複製を避けることができる。その結果、いくつかのデバイス上で同じ相互作用についての通知がユーザになされることはない。
後に更に説明するように、相互作用情報の多くの種別を判定するため、相互作用管理モジュール204は、ユーザインタフェース要素を通して相互作用情報を受信する。同期コンテンツアイテムと関連するプレゼンス情報を判定するため、相互作用管理モジュール204は、ネイティブアプリケーション255に関連付けられたユーザインタフェース要素を監視する。相互作用管理モジュール204は、全てのユーザインタフェース要素を監視すること、或いは、代替的にユーザインタフェース要素がコンテンツアイテムと関連付けられた後に特定のユーザインタフェース要素についてのみ監視することができる。監視プレゼンスデータストア210は、同期されたコンテンツアイテムに関連する動作を判定するために特定のユーザインタフェース要素が監視されていることを示す、相互作用管理モジュール204によって維持される情報を含む。
ここではクライアントアプリケーション200の一部として示すが、様々な実施形態では、コンテンツアクセスモジュール206及び相互作用管理モジュール204は、それぞれの機能を実行するための別々のモジュールに分けられている。同様に、様々なモジュール及びデータストアは便宜のために本開示を通して別々に説明され、様々な実施形態において、所望に統合され又は更に別々の構成要素に分けられる。
図4は、ある実施の形態に係る、図1のコンテンツ管理システム110のコンポーネントを示す。コンテンツ管理システム110を用いる際、種々のコンテンツ管理サービスをより容易にするために、ユーザはコンテンツ管理システム110にアカウントを生成してもよい。ある実施の形態では、ユーザのアカウント情報はユーザアカウントデータベース418に維持される。ユーザアカウントデータベース418は、登録ユーザについてのプロファイル情報を保持してもよい。ある場合には、ユーザプロファイルの個人情報はユーザ名および/または電子メールアドレスのみである。しかしながら、コンテンツ管理システム110はまた、パスワード復活情報や属性情報や支払い情報や実装者が興味を持つ他の詳細などの追加的なユーザ情報を受け入れるよう構成されてもよい。各ユーザは、ユーザIDやユーザ名などの識別子に関連付けられる。
ユーザアカウントデータベース418は、有料/無料の別などのアカウントタイプや、ファイル編集履歴などのユーザ毎の利用情報や、許されている最大ストレージスペースや、利用されているストレージスペースや、コンテンツストレージ位置や、セキュリティ設定や、個人構成設定や、コンテンツ共有データなどのアカウント管理情報を含んでもよい。アカウント管理モジュール404は、ユーザアカウントデータベース418におけるユーザアカウントの詳細を更新および/または取得するよう構成されてもよい。アカウント管理モジュール404は、コンテンツ管理システム110の他の任意の数のモジュールと相互に作用するよう構成されてもよい。
ひとつのアカウントは複数のデバイス100に関連付けられてもよく、コンテンツアイテムはアカウントに関連して格納されてもよい。保持されるコンテンツはまた、異なる振る舞いを伴うかまたは他のコンテンツアイテムグループ化方法による種々のタイプのフォルダを含んでもよい。例えば、アカウントは、任意のユーザからアクセス可能なパブリックフォルダを含んでもよい。パブリックフォルダにはウェブアクセス可能なアドレスが割り当てられてもよい。ウェブアクセス可能なアドレスへのリンクを使用してパブリックフォルダのコンテンツにアクセスしてもよい。他の例では、アカウントは、写真に適する特定の属性やアクションを提供する写真コンテンツアイテム用の写真フォルダや、音声ファイルコンテンツアイテムを再生する能力を提供し他の音声関連アクションを実行する音声フォルダや、他の特殊用途フォルダを含んでもよい。アカウントは、複数のユーザアカウントとリンクされそれらのアカウントから利用可能な共有フォルダまたはグループフォルダを含んでもよい。ある共有フォルダについての複数のユーザに対する複数の権限は異なっていてもよい。ある実施の形態では、アカウントは複数のユーザに関連付けられてもよい名前空間であり、それらのユーザのそれぞれは名前空間と相互作用するための権限に関連付けられてもよい。
ある実施の形態では、コンテンツはコンテンツストレージ420に保持される。コンテンツストレージ420は、ストレージデバイスや、複数のストレージデバイスや、サーバであってもよい。あるいはまた、コンテンツストレージ420は、ひとつ以上の通信ネットワークを介してアクセス可能なクラウドストレージプロバイダまたはネットワークストレージであってもよい。ある構成では、コンテンツ管理システム110は、デバイス上に現れる配置構成と同じ配置構成でコンテンツアイテムを保持する。しかしながら、コンテンツ管理システム110は自身の順序や構成や階層でコンテンツアイテムを保持してもよい。
コンテンツストレージ420は、コンテンツアイテムおよびコンテンツアイテムタイプおよびコンテンツアイテムと種々のアカウントやフォルダやグループとの関係を説明するメタデータを保持してもよい。コンテンツアイテムのメタデータは、コンテンツアイテムの一部として保持されてもよいし、別個に保持されてもよい。ある構成では、コンテンツストレージ420に保持される各コンテンツアイテムには、システム全体で一意の識別子が割り当てられてもよい。
コンテンツストレージ420は、重複したコンテンツアイテムやコンテンツアイテムの重複セグメントを特定することによって、要求されるストレージスペースの量を低減することができる。ある実施の形態では、例えば、コンテンツアイテムの所有権メタデータ(例えば、所有権リスト)内にユーザの識別子を含めることによって、異なる複数のユーザの間でコンテンツアイテムを共有してもよいし、一方で、コンテンツアイテムのただひとつのコピーのみを保持しつつ、ポインタや他のメカニズムを用いることでそのただひとつのコピーと複製物とをリンクしてもよい。同様に、コンテンツストレージ420は、コンテンツアイテムへの変更と、コンテンツアイテムの異なるバージョン(分岐バージョンツリーなど)と、変更履歴と、を追跡するバージョン制御メカニズムを用いてコンテンツアイテムを保持する。変更履歴は、元のコンテンツアイテムのバージョンに適用された場合に、変更されたコンテンツアイテムのバージョンを生成する変更の組を含む。
ある実施の形態では、コンテンツ管理システム110は、同期モジュール412を用いることで、ひとつ以上のデバイスからの複数のコンテンツアイテムを自動的に同期する。同期はプラットフォーム不可知的である。すなわち、コンテンツアイテムは、種々のタイプや能力やオペレーティングシステムなどを有する複数のデバイス100に亘って同期されてもよい。例えば、クライアントアプリケーション200は、コンテンツ管理システム110の同期モジュール412を介して、デバイス100のファイルシステム内のコンテンツと、システム110上の関連ユーザアカウント内のコンテンツアイテムと、を同期させる。クライアントアプリケーション200は、指定されたフォルダおよびそのサブフォルダ内のコンテンツアイテムへの任意の変更を、同期モジュール412と同期させる。そのような変更は、新たな、削除された、変更された、コピーされた、または移動されたファイルやフォルダを含む。同期モジュール412はまた、クライアントアプリケーション200に、デバイス100に関連付けられたコンテンツへの任意の変更を提供する。これは、デバイス100におけるローカルコンテンツと、コンテンツ管理システム110におけるコンテンツアイテムと、を同期させる。
競合管理モジュール414は、異なる複数のデバイス100に置かれたコンテンツアイテムの複数のバージョンの間に矛盾が存在するか否かを判定する。例えば、コンテンツアイテムが第1デバイスおよび第2デバイスにおいて変更された場合、コンテンツアイテムの異なるバージョンが各デバイスに存在しうる。同期モジュール412は、例えばコンテンツアイテム変更の変更時刻を特定することによって、そのようなバージョン競合を判定する。競合管理モジュール414は、複数のバージョンをマージすることや後に提出されたバージョンをデバイスに通知することなどの任意の適切な手段によって、バージョン間の競合を解決する。
ユーザは、ユーザインタフェースモジュール402によって生成されるウェブインタフェースを介して、コンテンツを視たり操作したりしてもよい。例えば、ユーザは、ウェブブラウザ250内で、コンテンツ管理システム110によって提供されるウェブアドレスへと辿り着いてもよい。ファイルの新たなバージョンのアップロードのように、ウェブインタフェースを通じてなされたコンテンツストレージ420のコンテンツへの変更や更新は、ユーザのアカウントに関連する他のデバイス100へと再同期されてもよい。複数のデバイス100は単一のアカウントと関連付けられていてもよく、そのアカウントのファイルは複数のデバイス100のそれぞれの間で同期されてもよい。
コンテンツ管理システム110は、アプリケーションプログラミングインタフェース(API)を介して他のコンテンツおよび/またはサービスプロバイダとのおよび種々のデバイス100とのインタフェースとしての通信インタフェース400を含んでもよい。APIはこの機能を実行するためのひとつの手段である。所定のソフトウエアアプリケーションは、ユーザの代わりに、APIを介してコンテンツストレージ420にアクセスする。例えば、スマートフォンやタブレット計算デバイス上のアプリケーションなどのソフトウエアパッケージはプログラム上、ユーザが資格証明を提供する場合、コンテンツ管理システム110を直接呼び出し、コンテンツを読み取り、書き込み、生成し、消去し、共有し、またはそうでなければ操作してもよい。同様に、APIは、ウェブサイトを通じてユーザがコンテンツストレージ420の全てまたは一部にアクセスすることを可能としてもよい。
コンテンツ管理システム110はまた、認証モジュール406を含んでもよい。認証モジュール406は、ユーザ資格情報やセキュリティトークンやAPIコールや特定デバイスなどを検証することにより、要求されているコンテンツアイテムへのアクセスが認証されるか否かを判定する。これはこの機能を実行するためのひとつの手段である。認証モジュール406は、ユーザアカウント用の一回限り使用できる認証トークンを生成してもよい。認証モジュール406は、各認証トークンに、有効期間または使用期限を割り当てる。認証トークンを要求元のデバイスに送信することに加えて、認証モジュール406は、認証トークンデータベース422に、生成された認証トークンを格納してもよい。認証トークンの検証要求を受けると、認証モジュール406は、認証トークンデータベース422をチェックし、ユーザに割り当てられたマッチする認証トークンを探す。認証モジュール406がマッチする認証トークンを特定すると、認証モジュール406は、そのマッチする認証トークンがまだ正当であるか否かを判定する。例えば、認証モジュール406は、認証トークンが期限切れになっていないことまたは使用済みや無効というマークが付されていないことを確かめる。認証トークンを検証した後、認証モジュール406は、使い捨てトークンなどのマッチする認証トークンを無効化してもよい。例えば、認証モジュール406は、マッチする認証トークンに使用済みまたは無効というマークを付してもよいし、認証トークンデータベース422からマッチする認証トークンを削除してもよい。
コンテンツ管理システム110は、公にまたは私的にコンテンツを共有するための共有モジュール410を含む。公にコンテンツを共有することは、コンテンツアイテムを、コンテンツ管理システム110とネットワーク通信可能な任意の計算デバイスからアクセス可能とすることを含んでもよい。私的にコンテンツを共有することは、コンテンツストレージ420のコンテンツアイテムを2以上のユーザアカウントとリンクさせ、それにより各ユーザアカウントがそのコンテンツアイテムへのアクセスを有することを含んでもよい。コンテンツは、種々のタイプのユーザアカウントに亘って共有されてもよい。
ある実施の形態では、コンテンツ管理システム110は、コンテンツディレクトリを維持するためのコンテンツ管理モジュール408を含む。コンテンツディレクトリは、コンテンツストレージ420における各コンテンツアイテムの位置を特定し、クライアントアプリケーションがストレージ420内のコンテンツアイテムへのアクセスを要求することを可能とする。これは、この機能を行うひとつの手段である。コンテンツディレクトリのコンテンツエントリは、コンテンツストレージ420におけるコンテンツアイテムの位置を特定するコンテンツポインタを含んでもよい。例えば、コンテンツエントリは、メモリにおけるコンテンツアイテムのストレージアドレスを指定するコンテンツポインタを含んでもよい。ある実施形態では、コンテンツエントリは、そのそれぞれがコンテンツアイテムの一部を含む複数の場所を指し示す複数のコンテンツポインタを含む。
コンテンツパスおよびコンテンツポインタに加えて、ある構成のコンテンツエントリはまた、コンテンツアイテムへのアクセスを有するユーザアカウントを特定するユーザアカウント識別子を含む。ある実施の形態では、複数のユーザアカウント識別子が単一のコンテンツエントリに関連付けられてもよく、これは、そのコンテンツアイテムが複数のユーザアカウントによる共有アクセスを有することを示す。
私的にコンテンツアイテムを共有するために、共有モジュール410は、ユーザアカウント識別子をコンテンツアイテムに関連付けられたコンテンツエントリに追加し、それにより追加されたユーザアカウントにコンテンツアイテムへのアクセスを与える。共有モジュール410は、ユーザアカウントのコンテンツアイテムへのアクセスを制限するために、コンテンツエントリからユーザアカウント識別子を除くよう構成されてもよい。
公にコンテンツを共有するために、共有モジュール410はURLなどのカスタムネットワークアドレスを生成する。このカスタムネットワークアドレスにより、任意のウェブブラウザが、コンテンツ管理システム110のコンテンツに認証なしでアクセスすることが可能となる。共有モジュール410は生成されるURLにコンテンツ特定データを含める。コンテンツ特定データは、後に、要求されたコンテンツアイテムを適切に特定して返すために、コンテンツ管理システム110によって使用されてもよい。例えば、共有モジュール410は、生成されるURLにユーザアカウント識別子とコンテンツパスとを含めるよう構成されてもよい。URLに含まれるコンテンツ特定データは、コンテンツアイテムにアクセスするために、デバイスによって、コンテンツ管理システム110に送信されてもよい。URLを生成することに加えて、共有モジュール410はコンテンツアイテムへのURLが生成されたことを記録するよう構成されてもよい。ある実施の形態では、コンテンツアイテムに関連付けられたコンテンツエントリは、そのコンテンツアイテムへのURLが生成されたか否かを示すURLフラグを含んでもよい。
相互作用同期モジュール416は、デバイスからプレゼンス情報を受信し、それをプレゼンスレコードの一部として相互作用データストア424に格納し、コンテンツアイテムに関するユーザプレゼンスを判定する。各ユーザは、コンテンツアイテムに関する、そのユーザに関連付けられたプレセンスレコードを説明するユーザプレゼンスに関連付けられてもよい。それは、特定のユーザデバイスやプロセスやユーザインタフェース要素への参照を伴わないものであってもよい。プレゼンス情報は特定のユーザインタフェース要素やプロセスに関するプレゼンスを説明してもよいが、ユーザに関連付けられたこのプレゼンスはユーザプレゼンスと称される。ユーザプレゼンスの例は、共同作業中、編集中、閲覧中、開く、および不在を含む。この例では、「共同作業中」ユーザプレゼンスは、コンテンツアイテムが二つ以上のデバイス上で閲覧および変更のために提示されているユーザインタフェース要素に関連付けられていることを示し、「編集中」ユーザプレゼンスは、コンテンツアイテムがそのコンテンツアイテムを変更したユーザインタフェース要素に関連付けられていることを示し、「閲覧中」ユーザプレゼンスは、コンテンツアイテムがデバイス100上のアクティブなユーザインタフェース要素に関連付けられていることを示し、「開く」ユーザプレゼンスは、ユーザインタフェース要素がコンテンツアイテムに関連付けられており、かつ、そのコンテンツアイテムを開いたがまだそのコンテンツアイテムを閉じていないことを示す。種々の実施の形態は、より多くのまたはより少ないユーザプレゼンスを用いてもよい。例えば、ある実施の形態は「編集中」と「閲覧中」と「不在」とのみを含み、この場合、コンテンツアイテムを開いたがまだアクティブなユーザインタフェース要素ではないユーザインタフェース要素は、システムの構成により、閲覧中または不在として扱われてもよい。プレゼンス情報を取得して追跡することはまた、米国特許出願第14/635,192号にさらに説明されており、該出願は参照により本明細書に援用される。
相互作用同期モジュール416はデバイス100に亘る相互作用情報の同期を管理する。デバイス100は、相互作用同期モジュール416に相互作用情報を提供する。相互作用同期モジュール416は、相互作用データストア424に相互作用情報を格納する。相互作用同期モジュール416は、ユーザに表示するために、同期済みデバイス100に、同期済みコンテンツアイテムについての相互作用情報を送信する。相互作用同期モジュール416はさらに、ユーザに新たなまたは未閲覧の相互作用情報を知らせるためのインストラクションを送信してもよい。ある実施の形態では、デバイス100は、ユーザが相互作用情報を視たか否か、およびいつ視たかを示す閲覧情報を相互作用同期モジュール416に送信する。閲覧情報は相互作用データストア424に格納される。他の実施の形態では、閲覧情報は、ユーザが相互作用情報と相互作用したか否かおよびいつしたかを示す。相互作用同期モジュール416は、この情報を用いることで、同じユーザに関連付けられた複数のデバイス100で通知を複製することを避けることができる。例えば、あるユーザが第1デバイス100上で新たな相互作用情報について知らされ、その相互作用情報を視た場合、このイベントは格納され、その結果、第2デバイス上でそのユーザに同じ相互作用情報について通知することはないであろう。
ある実施の形態では、コンテンツ管理システム110は共同作業モジュール426を含む。共同作業モジュール426は、デバイス100間の共同作業を促進するよう構成される。例えば、共同作業モジュール426は、あるデバイスのアドレスを他のデバイスと共有することでデバイスハンドシェイクを開始し、共同作業が生じるようにしてもよい。さらに、共同作業モジュール426は、デバイス100の共同作業モジュール207やクライアントアプリケーション200の任意の他のモジュールによって行われるタスクのいずれかを行うよう構成されてもよい。
通知キューモジュール428は共有コンテンツアイテム用のユーザ通知キュー430を生成し管理する。ユーザ通知キュー430はコンテンツ管理システム110において保持され、デバイス100に送信される。ユーザ通知キュー430は共有コンテンツアイテムとのひとつ以上の相互作用のグループであり、該相互作用をユーザに提示することで、共有ユーザによる共有コンテンツアイテムとの最近の相互作用を示すことができる。ある実施の形態では、コンテンツアイテムに関連付けられた各共有ユーザは、そのコンテンツアイテムに対応するユーザ通知キュー430を有する。特定のコンテンツアイテムについての、異なるユーザのユーザ通知キューは異なりうる。
ある実施の形態では、通知キューモジュール428は、相互作用イベントの通知を受け、ユーザ通知キュー430に追加する候補となる相互作用を決定する。通知キューモジュール428は、共有コンテンツアイテムに対応するユーザ通知キュー430を変更する。ユーザ通知キュー430を変更することは、候補相互作用を通知キューに追加することと、通知キューに既に存在する相互作用を取り除くことと、を含んでもよい。共有コンテンツアイテムに対応する相互作用イベントがコンテンツ管理システム110によって受け付けられた場合、通知キューモジュール420は、共有ユーザのユーザ通知キュー430に相互作用を追加するか否かおよび/または共有ユーザのユーザ通知キュー430から相互作用を取り除くか否かを決定する。ユーザ通知キュー430に加えられる相互作用のタイプは、コンテンツアイテムの閲覧、コンテンツアイテムの編集、コンテンツアイテムの共同作業、コンテンツアイテムへのコメント、およびコンテンツアイテムのメッセージを含んでもよい。
ある実施の形態では、相互作用は関連相互作用優先度を有する。相互作用の優先度は、ある相互作用のタイプの、他の相互作用のタイプに対する相対的な優先度を指定する。例えば、コンテンツアイテムの編集は、コンテンツアイテムの閲覧よりも高い優先度を有してもよい。相互作用優先度は、コンテンツ管理システム110の実施者またはコンテンツ管理システム110のユーザによって指定されてもよい。通知キューモジュール428は、候補相互作用およびユーザ通知キュー430内の相互作用についての相互作用タイプおよび相互作用優先度を決定する。種々の実施の形態では、通知キューモジュール428は、より高い優先度の相互作用を選択してユーザ通知キュー430に追加し、より低い優先度の相互作用を選択してユーザ通知キュー430から取り除く。例えば、通知キューモジュール428は、ユーザAによる候補相互作用の優先度と、通知キュー430に既に存在するユーザAによる相互作用の優先度と、を比較してもよい。候補相互作用の優先度がユーザ通知キュー430内の相互作用の優先度よりも低い場合、その候補相互作用はキューに追加されない。候補相互作用の優先度がユーザ通知キュー430内の相互作用の優先度よりも高い場合、その候補相互作用はキューに追加され、キュー内に既にある相互作用はキューから取り除かれてもよい。これにより、コンテンツアイテムとの他のユーザの高優先度相互作用をユーザに提示することができ、その結果、ユーザを混乱させたりユーザインタフェース要素のスペースを無駄にする可能性のある比較的重要でない情報を提供することなく、ユーザにとって重要な情報を提供することができる。
通知キューモジュール428は、デバイス100に、ユーザ通知キュー430を送信してもよい。ある実施の形態では、通知キューモジュール428は、ユーザがコンテンツアイテムにアクセスしたという通知を受けることに応じて、ユーザ通知キュー430を送信してもよい。アクセスの通知は、デバイス100から直接来るか、または相互作用同期モジュール416から来てもよい。アクセスの通知は、閲覧や編集のためにコンテンツアイテムを開くことなどのコンテンツアイテムのアクセスに整合するプレゼンスイベントを検出することに応じて、生成されてもよい。ある実施の形態では、通知キューモジュール428は、関連ユーザが通知キューを閲覧したという通知を受けることに応じて、ユーザ通知キュー430をクリアしてもよい。このようにすることで、ユーザに、そのユーザが既に視た通知を提供することはない。
コンテンツ管理システム110は、単一のコンピュータやクラウドベースのコンピュータ実装を含むネットワークコンピュータを用いて実装されてもよい。本開示の目的のために、コンピュータは、ひとつ以上のプロセッサと、メモリと、ストレージデバイスと、ネットワーキングリソースと、を有するデバイスである。コンピュータは、好適には、ひとつ以上の高性能CPUと、1G以上のメインメモリと、500Gbから2Tbのコンピュータ可読永続ストレージと、を含み、LINUXやその亜種などのオペレーティングシステムを実行するサーバクラスコンピュータである。本明細書で説明されるコンテンツ管理システム110の動作は、ハードウエアを通じて、または、コンピュータストレージにインストールされ本明細書に記載される機能を実行するためにそのようなサーバのプロセッサによって実行されるコンピュータプログラムを通じて、制御可能である。これらのシステムは、本明細書で説明される動作のために必要な他のハードウエア要素を含み、それは、ネットワークインタフェースやプロトコル、データ入力用の入力デバイス、およびデータの表示、印刷または他の提示のための出力デバイスを含むが、これらは本明細書では説明されていない。同様に、システムの特徴を不明瞭にしないために、ファイヤウォールや負荷分散器やフェイルオーバサーバやネットワーク管理ツールなどの従来の要素は示されていない。最後に、コンテンツ管理システム110の機能および動作は、コンピュータシステムへの実装を必要とするほど十分に複雑であり、人の心のなかで単なる精神的なステップにより実行されうるものではない。
ある構成では、コンテンツ管理システム110を参照して後述されるコンポーネントは、コンテンツ管理システム110による管理なしにコンテンツアイテムを共有し同期するデバイス100に組み入れられる。これらのデバイス100は、上述のネットワーク120や直接接続を介して、コンテンツを同期し、相互作用情報を共有してもよい。この構成では、デバイス100は、同期モジュール412と、競合管理モジュール414と、相互作用同期モジュール416と、コンテンツ管理システム110によって提供されるような後述の機能を組み入れるための他のモジュールやデータストアと、の機能を組み入れてもよい。したがって、この構成のデバイス100はピアツーピア構成で動作し、コンテンツ管理システム110やネットワーク120なしでそうしてもよい。
図5は、ある実施に従う、コンテンツアイテムに関連付けられたプレゼンス情報を判定する例示的処理を示す。この処理は典型的には相互作用管理モジュール204によって実行される。ユーザインタフェース要素がコンテンツアイテムに関連付けられた後にのみ監視される場合において、相互作用管理モジュール204は、ユーザインタフェース要素を監視するかを判定するために、コンテンツアイテムがアプリケーション又はユーザインタフェース要素によって開かれていることを示すイベントを用いる。これは、コンテンツアイテムをユーザインタフェース要素に関連付けるかもしれないイベントの一例であり、監視イベントと呼ばれる。他の実施形態では、監視するユーザインタフェース要素の選択は、他の方法で決定され、又は、全てのユーザインタフェース要素が監視される。この場合、相互作用管理モジュール204は監視イベントを使用しなくてもよい。他の実施形態では、監視イベントはコンテンツアイテムを保存する処理を含む。
オペレーティングシステム245によって利用可能にされた場合、相互作用管理モジュール204は、特定のアプリケーションのための監視イベントを受信するために、オペレーティングシステム245に登録してもよい。これらの実施形態では、オペレーティングシステム245は、オペレーティングシステム245がコンテンツアイテムを開く又は保存する要求を受信した場合に、相互作用管理モジュール204に通知する。この実施形態では、相互作用管理モジュール204は、ウィンドウ又は他のユーザインタフェース要素がコンテンツアイテムと相互作用することを示す監視イベントを受信し(500)、このコンテンツアイテムは、同期されたコンテンツアイテムであってよい(すなわち、プロセスは特定のユーザインタフェース要素においてコンテンツアイテムと相互作用する)。監視イベントは監視イベントをトリガしたユーザインタフェース要素を少なくとも示す。他の実施形態では、相互作用管理モジュール204は、時々(例えば5分インターバルで)ユーザインタフェース要素に関連付けられたイベントを監視し、ユーザインタフェース要素が任意の開かれているコンテンツアイテムと関連付けられているかを問い合わせる。オペレーティングシステム245とネイティブアプリケーション255の構成に従って、この問い合せは、オペレーティングシステム245又はネイティブアプリケーション255に向けられてよい。ユーザインタフェース要素が新たに開かれたコンテンツアイテムを含む場合、その新たに開かれたコンテンツアイテムは、新たに開かれたコンテンツアイテムがコンテンツ管理システム110と同期されたコンテンツアイテムであるかを判定するために監視イベントとして扱われ、そして、そのプレゼンス情報は新たに開かれたコンテンツアイテムに対して判定されなければならない。
監視イベントが受信された場合、相互作用管理モジュール204は、どのプロセスが、監視イベントに関連付けられたユーザインタフェース要素に対する責務を負うかを510において判定する。相互作用管理モジュール204は典型的に、オペレーティングシステム245からユーザインタフェース要素に関連付けられたプロセスIDを要求することによってプロセスを判定する。いくつかの実施形態では、相互作用管理モジュール204は、ユーザインタフェース要素自身からプロセスの識別子を要求することによって、プロセスを識別する。
プロセスとユーザインタフェース要素とが互いに正しく関連付けられていること、及び、ユーザインタフェース要素が依然としてアクティブであることを確認するために、相互作用管理モジュール204は、プロセスから現在アクティブなユーザインタフェース要素の識別を要求してもよい。相互作用管理モジュール204は、プロセスから受信した現在アクティブなユーザインタフェース要素が、監視イベントと関連付けられたユーザインタフェース要素と一致することを確認する。
プロセスの識別子を用いて、相互作用管理モジュール204は、コンテンツアイテムに対する関連付けられたディレクトリパスを取得するために、プロセスから任意の開いているコンテンツアイテムを520において要求する。相互作用管理モジュール204は、監視イベントに関連付けられたユーザインタフェース要素に、開かれているコンテンツアイテムのパスに対する要求を結びつける。相互作用管理モジュール204は、プロセス又はオペレーティングシステムへの利用可能なインタフェースを用いて、プロセス又はオペレーティングシステムから開いているアイテムを要求する。ある例として、OS Xオペレーティングシステムでは、既知であるように、コンテンツアイテムとユーザインタフェース要素に対するコンテンツアイテムパスとに関連付けられた情報にアクセスするためにアクセシビリティAPIが用いられる。プロセスによって提供されるコンテンツアイテムパスを用いて、相互作用管理モジュール204は、開かれたコンテンツアイテムパスが任意の同期されたコンテンツアイテムに対応するかを判定する。そうであれば、相互作用管理モジュール204は、プロセスによってアクセスされるコンテンツアイテムがコンテンツ管理システム110に同期されたコンテンツアイテムであると判定し、当該プロセスとユーザインタフェース要素とをコンテンツアイテムに関連付ける。他の実施形態では、プロセスによってアクセスされるコンテンツアイテムが同期されたコンテンツアイテムであるかどうかを判定するために他の方法が用いられてもよい。
コンテンツアイテムが、コンテンツ管理システム110に530において同期される場合、相互作用管理モジュール204は、イベントに対するユーザインタフェース要素を540において監視するために、コンテンツアイテム、プロセス及びユーザインタフェース要素に関連する情報を格納する。監視イベントに関連付けられたコンテンツアイテムが同期されていない場合、プロセスは終了してもよいし、ユーザに同期インタフェースを表示することによって続いてもよい。監視情報は、監視プレゼンスデータストア210に格納される。監視し、その後ユーザインタフェース要素に関連するプレゼンスイベントを受信するために、相互作用管理モジュール204は、ユーザインタフェース要素に関連付けれたイベントを受信するために登録する。相互作用管理モジュール204による登録処理は、デバイス100の構成に従って変わる。典型的には相互作用管理モジュール204は、オペレーティングシステム245から、又は、利用可能なプロセス又はユーザインタフェース要素からのプレゼンスイベントを受信するための要求を登録する。監視イベントは、ユーザインタフェース要素又はプロセスが同期したコンテンツアイテムと関連付けられるかを判定する一方、プレゼンスイベントは、コンテンツアイテムに関連付けられたユーザインタフェース要素又はプロセスに関連する、ユーザのプレゼンスの状態の変化を示し得るイベントである。例示のプレゼンスイベントは、相互作用管理モジュール204によって認識されるプレゼンスの種別に基づく、ユーザインタフェース要素のフォーカスの変化、ユーザインタフェース要素を閉じること、コンテンツアイテムを閉じること、コンテンツアイテムを開くこと等を含む。様々な実施形態では、相互作用管理モジュール204によって使用されるプレゼンスイベントは、オペレーティングシステム245及びネイティブアプリケーション255が相互作用管理モジュール204による受信のために利用可能にしているイベントに基づく。
プレゼンスイベントは、プレゼンスイベントが関連するコンテンツアイテムと関連付けられたプレゼンス情報を判定するために用いられる。例えば、コンテンツアイテムに関連付けられるユーザインタフェース要素がフォーカスを有することを示すプレゼンスイベントは、ユーザがコンテンツアイテムを閲覧していることを示し、従って、当該コンテンツアイテムに対するプレゼンス情報は、その状態を示す。同様に、コンテンツアイテムに関連付けられていないユーザインタフェース要素がフォーカスを得たことを示すプレゼンスイベントは、以前にフォーカスされたユーザインタフェース要素に関連付けられたコンテンツアイテムがフォーカスを失ったことを示し、従って、ユーザがもはや当該コンテンツアイテムを閲覧していないことを示す。従って、プレゼンス情報はプレゼンスイベントそのものの基礎となるセマンティック解釈のレベルを提供する。
相互作用管理モジュール204が登録したプレゼンス情報を受信することに加えて、プレゼンス情報はまた、監視されるユーザインタフェース要素に対してプレゼンス情報が変化していないことを確認するために、相互作用管理モジュール204によって開始されてよい。これらのプレゼンスイベントは、閾値の時間が特定のユーザインタフェース要素又はプロセスに対する最後のプレゼンスイベントから経過した場合、又は特定のインターバル、例えば5分を経過した場合に開始されてもよい。
プレゼンスイベントに対する登録に加えて、相互作用管理モジュール204は他の方法によって相互作用イベントを受信してもよい。ある実施形態では、ユーザは、ユーザインタフェース要素を通じて相互作用情報を明示的に示してもよい。ユーザインタフェース要素は、例えば、特定の意図を表すメニューアイテム又はアイコンを選択することによって、例えばユーザがコンテンツアイテムの更新を意図することを示して、コンテンツアイテムを編集している又は閲覧している他のユーザにその意図を示すことができるように構成され得る。ユーザインタフェース要素は、もはやコンテンツアイテムを閲覧しない或いは現在又は将来にコンテンツアイテムがユーザに提示されないことを明示するような、ユーザの他の意図をユーザが示すことができるようにも構成され得る。他のユーザは、コンテンツアイテムを自由に編集できることを知るために、そのような「提示しない」意図を用いてもよい。ユーザ入力の相互作用イベントはまた、例えばデバイス上でコンテンツアイテムを現在閲覧している他のユーザへメッセージを送信する、コンテンツアイテムに関連付けられた他のユーザに広めるためのメッセージ又はチャット機能を含んでよい。
プレゼンス情報が550において受信された場合、相互作用管理モジュール204は、任意のプレゼンス情報が監視ユーザインタフェース要素に関連する最後のプレゼンスイベントから変更されたかを判定する(560)。ユーザが開始させる相互作用情報に対して、相互作用情報は、例えば、ユーザがコンテンツアイテム又はユーザのチャットメッセージを修正する意図することを示す、ユーザインタフェース要素のユーザの選択のような、ユーザによって提供される情報であってもよい。プレゼンスイベントに対し、相互作用管理モジュール204は、監視されるユーザインタフェース要素の状態を判定するために、監視プロセスに問い合わせる。特に、相互作用管理モジュール204は、監視されるユーザインタフェース要素がアクティブなユーザインタフェース要素であるかを判定するために、プロセスに問い合わせる。監視されるユーザインタフェース要素がアクティブなユーザインタフェース要素である場合、コンテンツアイテムはユーザによって閲覧されている。
いくつかの実施形態では、コンテンツアイテムに関するユーザプレゼンスを検出することに加えて、相互作用管理モジュール204はまた、コンテンツアイテムがユーザによって修正されている又は修正されたかを判定する。この更なる側面は、例えば、ユーザがコンテンツアイテムに関して閲覧者よりむしろ編集者としてプレゼンスを有することを示す表示を用いて、プレゼンス情報がより細かくレポートされるようにすることができる。上述したように、コンテンツアイテムが修正されている際にアプリケーションによって実行される特定のアクションは変化するため、相互作用管理モジュール204によってこれらのアクションのうちの1つを検出することは、プロセスがコンテンツアイテムを編集したことを示す。例えば、コンテンツアイテムが編集されている際にプロセスによって予期されるアクションの種別に従って、相互作用管理モジュール204は、コンテンツアイテムに修正されたことのフラグが立っていることをプロセスが示しているか、ユーザインタフェース要素のタイトル情報が変化したか、一時ファイルが保存され又はキャッシュされたか、又は、任意の他のデータが修正されたことを示唆するか、を判定するために、プロセスに問い合わせてよい。相互作用管理モジュール204はまた、例えば、コンテンツアイテムに類似したファイル名を有するコンテンツアイテムであるが、チルダ又は他の特殊なファイル名のバリエーションを有する、一時的なコンテンツアイテムの形式と一致するコンテンツアイテムが保存されたかを判定するために、オペレーティングシステムに問い合わせてもよい。このような修正は、コンテンツアイテムに関連付けられたプレゼンス情報が、ユーザがコンテンツアイテムを編集していることを反映しなければならないことを表す。
プレゼンス情報の560における判定の後には、ユーザインタフェース要素に対する任意の新たなプレゼンス情報が監視プレゼンスデータストアとして格納されてよい。ある実施形態におけるこのプレゼンス情報は、1のプロセスによって複数のユーザインタフェース要素が同一のコンテンツアイテムと関連付けられ、そして、個別に管理されるプレゼンス情報を有してもよいように、ユーザインタフェース要素ごとの原則で格納される。ある実施形態では、プレゼンス情報は現在のプレゼンス状態に応じて変化してもよい。例えば、コンテンツアイテムに対するプレゼンス情報が、コンテンツアイテムが編集されていることを反映する場合、ある実施形態では、ユーザが他のユーザインタフェース要素にフォーカスを変更したときに、ユーザインタフェース要素内のコンテンツアイテムのプレゼンスは変更されない。代わりに、編集された状態は、プレゼンスイベントがユーザインタフェース要素が閉じていることを示すまで、ユーザインタフェース要素に関して維持される。他の実施形態では、編集はコンテンツアイテムに変更を導入する可能性があるため、ある実施形態では、編集されたドキュメントに対するプレゼンス情報は、コンテンツアイテムへの変更がコミットされた又は修正が破棄されたといういずれかの通知をインタラクション管理モジュール204が受信するまで、変更されない。
閲覧されていることを示すプレゼンス情報を有するコンテンツアイテムは、ユーザインタフェース要素がフォーカスを失ったとき、又はフォーカスを失う閾値期間内にその状態変化を有してもよい。これは、コンテンツアイテムに関連付けられたユーザインタフェース要素がまだ開いている場合であってもよい。ある実施形態では、「閲覧された」プレゼンス情報は、コンテンツアイテムがアクティブなユーザインタフェース要素に関連付けられているかどうかを示す。ある実施形態では、「閲覧された」プレゼンス情報は、ユーザインタフェース要素が時間の閾値より長い間アクティブでなくなる(またはフォーカスを失ったとき)まで保持される。ある実施形態では、コンテンツアイテムがアプリケーションによって開かれている間には、コンテンツアイテムは「閲覧された」とみなされる。
相互作用情報に変化がある場合、相互作用管理モジュール204は、プレゼンス情報をコンテンツ管理システム110に送信する(570)。ある実施形態では、送信されたプレゼンス情報は、コンテンツアイテムの識別子、プロセスID、ユーザインタフェース要素ID、及びプレゼンス状態を含む。プレゼンス情報はさらに、バージョンに関するメモやプレゼンスイベントタイムスタンプなどのメタデータを含んでもよい。
ある実施の形態では、コンテンツ管理システム110は、例えばコンテンツ管理システム110のデータストアにおいて、同期済みコンテンツアイテムの受信した相互作用情報を維持する。コンテンツ管理システム110は、ユーザに表示するために、コンテンツアイテムに関して同期した他のデバイス100に、受信した相互作用情報を提供してもよい。
図6A−6Dは、相互作用情報を表示する例示的ユーザインタフェースを示す。これはユーザ通知キューコンテンツを含む。これらのユーザインタフェースは、例えば、ユーザインタフェースモジュール202によって生成され、これを行うための1つの手段である。図6Aでは、ユーザインタフェースの例示的ウインドウ605は、ここでは「コンテンツアイテム6」である同期済みコンテンツアイテムを表示する。例示的なユーザインタフェースは、コンテンツ管理システム110から受信した相互作用情報を表示する。相互作用情報を表示するために、相互作用管理モジュール204は、コンテンツアイテムに関連付けられたウインドウの縁または境界に沿って相互作用インジケータ600を提供する。
相互作用インジケータ600は、コンテンツアイテムに関連付けられたウインドウと共に表示され、ある実施の形態では、相互作用管理モジュール204は、ウインドウの位置を追跡し、そのウインドウに隣接してまたはその近くに(例えば、ウインドウの縁または境界のそばに)相互作用インジケータ600を表示する。相互作用インジケータ600は、ディスプレイ220の任意の都合のよい領域に配置されてよい。ある実施形態では、相互作用インジケータは、相互作用インジケータと特定のコンテンツアイテムとの間の関係をユーザに視覚的に示すように、コンテンツアイテムの関連するユーザインタフェース要素の近傍に表示される。更に、ウインドウの境界又は縁に沿った相互作用インジケータの表示は、ユーザが相互作用インジケータ600に気付く可能性を増加させる。ある実施形態では、相互作用インジケータ600は、コンテンツアイテムを含むウインドウの垂直エッジ上又はそのそば(例えば、図6Aに示すような右端)に表示される。代替的に、相互作用インジケータ600は、タスクバー又はトレイアイコンのようなディスプレイの別の領域に表示されてもよく、或いは、コンテンツアイテムのユーザインタフェース要素と相互作用しない別個のユーザインタフェース要素であってもよい。本明細書では単一の相互作用インジケータ600として示されているが、任意の数の相互作用インジケータ600をコンテンツアイテムに関連して表示してもよい。
図6Bでは、相互作用インジケータ600はバッジ要素610を含む。バッジ要素610は、相互作用情報についてのより多くの情報を提供するために複数の他の視覚的要素を含んでもよい。例えば、バッジ要素610は、図6Bに示されるように、まだ視られていない相互作用イベントの数を表す数を有してもよい。他の実施の形態では、バッジ要素610は、ユーザにまだ視られていない相互作用イベントを示すためのアイコンなどの視覚的要素であってもよい。
図6Cを見ると、ユーザが相互作用インジケータ600を選択したすなわちその上にカーソルを合わせた場合、ユーザにさらなる情報またはインタフェースを提供するための補足相互作用インジケータ620が現れてもよい。図6Cに示される例では、補足相互作用インジケータ620は、例えばアンドリューがコンテンツアイテム6を編集したという、コンテンツアイテムとの最近の相互作用を記述する。補足相互作用インジケータ620はまた、ユーザによるアクションなしで現れてもよく、例えばプレゼンスが変わったときに新たなユーザがドキュメントを編集しているか閲覧していることを示すために現れてもよい。
図6Dは、相互作用要素630を伴う例示的ユーザインタフェースを示し、ユーザはその相互作用要素630を通じて相互作用情報を閲覧し、それを入力する。このインタフェースは、更なるユーザインタフェース要素に加えて、相互作用インジケータ600を含む。相互作用要素630は図6A−6Cの例の代わりに提示されてもよく、またはコンテンツアイテムに関する追加的データを提供する補足要素として提示されてもよい。
相互作用要素630は、コンテンツアイテム情報セクション646を含み、そのセクション646は、コンテンツアイテムの名称と、保存アクションなどの最新の相互作用イベントの時刻と、を表示する。図6Dの例では、コンテンツアイテム情報セクション646は、コンテンツアイテム6が直近で3分前に保存されたことを示す。インタフェースはまた、共有要素642を含み、この共有要素642により、ユーザは、同期を介してまたは既に知られている他の方法を介して、他のユーザとコンテンツアイテムを共有することができる。
図6Dの例示的インタフェースは、相互作用閲覧セクション634を含む。該セクション634は、相互作用情報および関連情報をユーザに表示する。関連情報は、相互作用が発生した時刻および相互作用に関連付けられたユーザ情報を含んでもよい。図6Dの例では、相互作用閲覧セクション634はメッセージ634A−Bとプレゼンス情報650A−Bとを含む。表示されている相互作用情報の各アイテムについて、相互作用閲覧セクション634は相互作用時刻644A−Dを含む。ある実施の形態では、図6Dに示されるように、相互作用時刻644A−Dは相互作用が生じた時刻として表される。他の実施の形態では、相互作用時刻は相対的な時刻として表現される。例えば、相互作用が生じてからどれくらいの時間が経過したかである。
相互作用閲覧セクション634はメッセージについてのユーザイメージ636A−Bとユーザに関連付けられた他の相互作用情報とを含む。ユーザイメージ636A−Bはコンテンツ管理システム110から受け付けられてもよい。相互作用閲覧セクション634はユーザ識別子648A−Bを含み、これはユーザID、名前、または他の識別子であってもよい。相互作用閲覧セクション634は、相互作用情報についての他のアイコンやグラフィックを含んでもよい。例えば、アイコン638A−Bは表示されているプレゼンス情報に対応してもよい。アイコン638Aは閲覧を表す目であり、アイコン638Bは編集や新たなバージョンの保存を表す鉛筆である。
ある実施の形態では、ユーザは、追加的な情報を視るために、相互作用閲覧セクション634内の種々の要素と相互作用(例えば、クリック、カーソルを合わせる等)してもよい。例えば、名前要素648A−Bやユーザイメージ636A−Bを選択するまたはその上にカーソルを合わせることにより、ユーザは、そのユーザに関する追加的なユーザ情報を閲覧することができる。
このインタフェースはまた、ユーザがコンテンツアイテムに関連付けられた他のユーザと通信するためのチャットインタフェースを提供する。チャットインタフェースは、ユーザが他のユーザにメッセージを入力したり受信したりすることを可能にする。テキスト入力要素632はユーザが他のユーザへのメッセージを入力することができるようにし、相互作用閲覧要素634はユーザがメッセージを視ることを可能とする。チャットインタフェースは、ユーザがアイテムの編集を終了しそうな場合のような、ユーザがそのコンテンツアイテムに関する情報を具体的に議論することができるようにし得る。これらのメッセージは、相互作用情報として相互作用管理モジュール204によって受信され、コンテンツアイテムに同期される他のクライアントに送信される。ネイティブアプリケーションがチャット機能を提供しない場合であっても、これにより、ユーザはコンテンツアイテムについて直接チャットすることができるようになる。
図7は、ある実施の形態に係る、共有ユーザ用の通知キューを更新するための例示的処理を示す。コンテンツ管理システム110は、共有コンテンツアイテムについての相互作用イベントの通知を受ける(702)。相互作用イベントは共有ユーザによる共有コンテンツアイテムとの新たな相互作用を示し、我々は本明細書において説明のためにこの共有ユーザを「ユーザA」を称す。
ある実施の形態では、コンテンツ管理システム110は、複数のユーザがコンテンツアイテムにおいて共同作業をしているか否かを判定する(704)。すなわち、複数のユーザが現在閲覧または編集のためにドキュメントを開いているか否かを判定する。ユーザがコンテンツアイテムにおいて共同作業している場合、処理は終了し、ユーザの通知キューに通知は追加されない。ユーザがコンテンツアイテムにおいて現在共同作業していない場合、コンテンツ管理システム110は各共有ユーザについてのコンテンツアイテム用の通知キューを更新することに進む。
コンテンツ管理システム110は新たな相互作用の相互作用タイプおよび優先度を決定する(706)。コンテンツ管理システム110は、新たな相互作用の相互作用タイプおよび優先度を用いることで、コンテンツアイテム用の各ユーザの通知キューに相互作用を追加するか否かを決定する。各共有ユーザについて、コンテンツ管理システム110は、新たな相互作用の優先度よりも高い優先度を伴う、共有ユーザAによる相互作用を通知キューが既に含んでいるか否かを判定する(710)。共有ユーザAによるより高い優先度を伴う相互作用を通知キューが既に含んでいる場合、通知キューは更新されず、処理はステップ708から次のユーザへと進む。共有ユーザAによるより高い優先度を伴う相互作用を通知キューが含んでいない場合、コンテンツ管理システム110は新たな相互作用を通知キューに追加する(712)。ある実施の形態では、コンテンツ管理システム110は共有ユーザAによるより低い優先度を伴う相互作用を通知キューから取り除く(714)。
図8は、ある実施の形態に係る、コンテンツアイテムにアクセスするデバイスに通知キューを送信するための例示的処理を示す。コンテンツ管理システム110は、コンテンツアイテムが共有ユーザBによってアクセスされたという通知を受ける(802)。コンテンツ管理システム110は、共有ユーザBがコンテンツアイテムにおいて共同作業しているか否かを判定す(804)。共有ユーザBがコンテンツアイテムにおいて共同作業している場合、コンテンツ管理システム110は、キューを配信することなく、コンテンツアイテム用の共有ユーザBの通知キューをクリアする(806)。あるいはまた、共有ユーザBがコンテンツアイテムにおいて共同作業していない場合、コンテンツ管理システム110は、コンテンツアイテム用の共有ユーザBの通知キューを共有ユーザBのデバイス100に送信する。
本発明の実施形態に係る前述の説明は、説明の目的で提示されており、本発明を網羅する又はここで開示される同一の形態に限定することを意図していない。当業者であれば、上記開示に照らして種々の変更及び変形が可能であることを理解することができる。
当該記載のある部分は、情報におけるアルゴリズムと記号表現の操作に関する本発明の実施形態を説明するものである。これらのアルゴリズムに関する記載と表現は、データ処理の分野の当業者が他の当業者に効果的に本質を伝えるために通常用いられる。機能的、コンピュータ的、又は論理的に記載される一方で、これらの操作はコンピュータプログラム、同等の電気的な回路、又はマイクロコードなどによって実装されるべきであることが理解される。更に、一般性を失うこと無く、モジュールとして、これらの操作の変形に言及することが都合がよい場合もあることも証明されている。説明した動作及びそれらに関連するモジュールは、ソフトウェア、ファームウェア、ハードウェア、又はそれらの任意の組み合わせで具体化されてもよい。
ここで説明されるステップ、動作、又はプロセスのいずれかは、単独で、又は他のデバイスと組み合わせて、1以上のハードウェア又はソフトウェアモジュールで実行又は実装されてもよい。ある実施形態において、ソフトウェアモジュールは、記述されたステップ、動作、又はプロセスの何れか又は全てを実行するコンピュータプロセッサによって実行されうるコンピュータプログラムコードを含むコンピュータ可読媒体を備えるコンピュータプログラム製品で実装されてもよい。
本発明の実施形態はまた、ここでの動作を実行する装置に関連する。当該装置は、必要な目的のために特別に構成することができ、及び/又は、コンピュータに格納されたコンピュータプログラムによって選択的に起動又は再構成された汎用コンピューティングデバイスを含むことができる。このようなコンピュータプログラムは、非一時的な、有形のコンピュータ可読記憶媒体、又はコンピュータシステムバスに結合することができる電子命令を格納するのに適した任意の種別の媒体に格納することができる。 さらに、本明細書で言及される任意のコンピューティングシステムは、単一のプロセッサを含むことができ、或いは、コンピューティング性能を高めるために複数のプロセッサ設計を採用するアーキテクチャであってもよい。
本発明の実施形態はまた、ここで説明されるコンピューティングプロセス(処理)によって生成される製品に関連してもよい。そのような製品は、非一時的な、有形のコンピュータ可読記憶媒体に情報が格納される計算プロセスから生じる情報を含むことができ、ここで記載されるコンピュータプログラム製品又は他のデータの組み合わせの任意の実施形態を含むことができる。
最後に、明細書において使用された言葉は主に可読性及び説明の目的のために選択されたものであり、本発明の主題の輪郭を描いたり制限を加えたりするために選択されたものではない。従って、本発明の範囲は、この詳細な説明によって限定されるのではなく、ここでの記載に基づく本出願で公表される任意の請求項によって限定されることが意図される。従って、本発明の実施形態の開示は説明のためを意図したものであって、以下の請求項において明らかにされる本発明の範囲を限定するものではない。