(58)【調査した分野】(Int.Cl.,DB名)
請求項1に記載の方法であって、前記プレゼンスアプリケーションは、前記コンテンツアイテムが前記ネイティブアプリケーションの前記第1のユーザインタフェースウィンドウに表示されたとの判定に応じて、前記コンテンツアイテムに関連付けられた前記プレゼンス情報にアクセスするように構成される、方法。
請求項1に記載の方法であって、前記プレゼンスユーザインタフェースウィンドウは前記第1のユーザインタフェースウィンドウに組み込まれておらず、前記第1のユーザインタフェースウィンドウと前記プレゼンスユーザインタフェースウィンドウとは異なるオペレーティングシステムプロセス識別子に関連付けられる、方法。
請求項1に記載の方法であって、前記プレゼンスユーザインタフェースウィンドウは、前記コンテンツアイテムが表示されるウィンドウを表示する他の装置の数を識別するインジケータを含む、方法。
請求項1に記載の方法であって、前記プレゼンスユーザインタフェースウィンドウは、前記コンテンツアイテムを現在修正している他の装置の数を識別するインジケータを含む、方法。
請求項1に記載の方法であって、前記プレゼンスユーザインタフェースウィンドウは、異なるユーザによる前記コンテンツアイテムに対するインタラクションを識別するインジケータを含む、方法。
請求項1に記載の方法であって、前記プレゼンスユーザインタフェースウィンドウは、前記第1のユーザによる他のユーザへのメッセージを送信するように構成されるユーザインタフェース要素を含む、方法。
請求項1に記載の方法であって、前記プレゼンスアプリケーションは、前記第1のユーザインタフェースウィンドウにおける前記コンテンツアイテムの前記表示に応じて、前記第1のユーザインタフェースウィンドウに関連付けられたオペレーティングシステムプロセス識別子について前記第1の装置のオペレーティングシステムにクエリを出す、方法。
請求項1に記載の方法であって、前記ネイティブアプリケーションは前記プレゼンスユーザインタフェースウィンドウ内にコンテンツを表示せず、前記プレゼンスアプリケーションは前記第1のユーザインタフェースウィンドウ内にコンテンツを表示しない、方法。
請求項13に記載のコンテンツ管理システムであって、前記プレゼンスアプリケーションは、前記コンテンツアイテムが前記ネイティブアプリケーションの前記第1のユーザインタフェースウィンドウに表示されたとの判定に応じて、前記コンテンツアイテムに関連付けられた前記プレゼンス情報にアクセスするように構成される、コンテンツ管理システム。
請求項13に記載のコンテンツ管理システムであって、前記プレゼンスユーザインタフェースウィンドウは前記第1のユーザインタフェースウィンドウに組み込まれておらず、前記第1のユーザインタフェースウィンドウと前記プレゼンスユーザインタフェースウィンドウとは異なるオペレーティングシステムプロセス識別子に関連付けられる、コンテンツ管理システム。
請求項13に記載のコンテンツ管理システムであって、前記プレゼンスユーザインタフェースウィンドウは、前記コンテンツアイテムが表示されるウィンドウを表示する他の装置の数を識別するインジケータ、前記コンテンツアイテムを現在修正している他の装置の数を識別するインジケータ、異なるユーザによる前記コンテンツアイテムに対するインタラクションを識別するインジケータ、および前記第1のユーザによる他のユーザへのメッセージを送信するように構成されるユーザインタフェース要素、のうちの1つ以上を含む、コンテンツ管理システム。
請求項17に記載のコンピュータプログラムであって、前記プレゼンスアプリケーションは、前記コンテンツアイテムが前記ネイティブアプリケーションの前記第1のユーザインタフェースウィンドウに表示されたとの判定に応じて、前記コンテンツアイテムに関連付けられた前記プレゼンス情報にアクセスするように構成される、コンピュータプログラム。
請求項17に記載のコンピュータプログラムであって、前記プレゼンスユーザインタフェースウィンドウは前記第1のユーザインタフェースウィンドウに組み込まれておらず、前記第1のユーザインタフェースウィンドウと前記プレゼンスユーザインタフェースウィンドウとは異なるオペレーティングシステムプロセス識別子に関連付けられる、コンピュータプログラム。
請求項17に記載のコンピュータプログラムであって、前記プレゼンスユーザインタフェースウィンドウは、前記コンテンツアイテムが表示されるウィンドウを表示する他の装置の数を識別するインジケータ、前記コンテンツアイテムを現在修正している他の装置の数を識別するインジケータ、異なるユーザによる前記コンテンツアイテムに対するインタラクションを識別するインジケータ、および前記第1のユーザによる他のユーザへのメッセージを送信するように構成されるユーザインタフェース要素、のうちの1つ以上を含む、コンピュータプログラム。
【発明を実施するための形態】
【0018】
詳細な説明
図1は、インタラクション情報の通信を含むコンテンツアイテムの同期のための環境の一実施形態を示す図である。
図1は、装置100A、100B、100C(広くは装置100として参照する)、コンテンツ管理システム110、及び、ネットワーク120を含んでいる。3つの装置は例示目的のために示しているにすぎない。実際には、本環境においては任意の数の装置が存在してもよい。同様に、全体にわたり記載ないし説明されている他のモジュール又はコンポーネントは、実装者の必要に応じて適宜かつ一般性を失うことなく、1つまたは複数のインスタンスを含んでもよい。
【0019】
装置100は、コンテンツアイテムをローカルに記憶、閲覧するとともに、コンテンツアイテムをコンテンツ管理システム110と同期させる任意の適切なコンピュータ装置であってもよい。装置の例には、デスクトップないしラップトップのコンピュータ、ハンドヘルドのモバイル装置、タブレットコンピュータ、及び、他のコンピュータ装置が含まれる。以下、様々な実施形態における装置100の動作をさらに説明する。
【0020】
各装置100は、ネットワーク120を介してコンテンツ管理システム110と通信する。ネットワーク120は任意の適切なネットワークであり、ローカルネットワーク、企業ネットワーク、グローバルネットワーク、及び、これらの任意の組み合わせを含んでもよい。典型的な構成において、装置100は、有線または無線の通信ネットワークを介してローカルネットワークのサービスプロバイダと通信し、インターネットを介してコンテンツ管理システム110と通信する。
図1に点線で示すように、ある構成では、装置100A、100B、及び100Cは、ネットワーク120を経由せずに互いに直接通信する。例えば、装置100は、Bluetooth接続を介した無線、あるいは、ユニバーサル・シリアス・バス(USB)を介した有線接続等の、有線又は無線の接続を介して通信してもよい。
【0021】
コンテンツ管理システム110は、装置100のユーザに対して、コンテンツの共有及び同期のサービスを提供する。これらのサービスは、ユーザが、他の装置100のユーザとコンテンツを共有することを可能にする。コンテンツ共有に加えて、コンテンツ管理システム110は、変更に応じて共有コンテンツを更新し、複数の装置100の間でコンテンツアイテムへの同期された変更を可能にする。ユーザは、そのユーザが所有しユーザのアカウントと関連付けられた複数の装置100にわたってコンテンツを同期してもよく、ユーザは他のユーザのアカウントと関連付けられた装置と同期されたコンテンツを共有してもよい。コンテンツ管理システム110に記憶されたコンテンツは、デジタルデータ、文書、メディア(例えば、画像、写真、動画、音声、ストリーミングコンテンツ)、データファイル及びデータベース、ソースコード及びオブジェクトコード、レコーディング、及び、他の任意の種類のデータまたはファイル等の、任意の種類のデータを含むことができ、ここではこれらをまとめて「コンテンツアイテム」と称する。コンテンツ管理システム110に記憶されたコンテンツアイテムはまた、フォルダ、テーブル、コレクション、アルバム、プレイリスト等の他のコンテンツアイテムを編成するために、あるいは、他のデータベース構造において(例えば、オブジェクト指向、キー/バリュー等)用いてもよい。実際には、ユーザアソシエーション、パーミッション、コンテンツ共有パーミッションその他に基づいて、様々な装置100が異なるグループのコンテンツアイテムを同期させてもよい。以下、様々な実施形態におけるコンテンツ管理システム110の動作をさらに説明する。
【0022】
図2は、一実施形態に係る装置100の様々なモジュール及びコンポーネントを示す図である。装置100は、ユーザに情報を提供するディスプレイ220を有し、あるクライアント装置100においては、タッチスクリーンを有する。装置100はまた、ネットワーク120を介してコンテンツ管理システム110と通信するためのネットワークインタフェース225を有する。例えば、1つ以上のコンピュータプロセッサ、ローカル固定メモリ(RAM及びROM)、並びに、任意に着脱可能なメモリ(例えば、SDカード)、電源、及び、音声・ビデオ出力のような、マテリアルではないクライアント装置100の他の従来のコンポーネントは図示していない。
【0023】
ソフトウェアモジュールには、オペレーティングシステム245及び1つ以上のネイティブアプリケーション255が含まれる。ネイティブアプリケーション255はクライアント装置に基づき変化し、コンテンツ管理システム110上に記憶されたコンテンツを作成、閲覧、消費、及び、修正するための様々なアプリケーションを含んでもよい。例えば、ワードプロセッサ、スプレッドシート、データベース管理システム、コードエディタ、画像・動画エディタ、電子ブックリーダ、音声・動画プレイヤー、その他等はこれにあたる。各装置上のオペレーティングシステム245は、ローカルファイル管理システムを提供し、コンテンツ管理システムのクライアントアプリケーション200やネイティブアプリケーション255等の様々なソフトウェアモジュールを実行する。コンタクトディレクトリ240は、例えば、名前、ピクチャ、電話番号、会社、電子メールアドレス、実在住所、ウェブサイトURL等の、ユーザのコンタクトについての情報を記憶する。ネイティブアプリケーション255、オペレーティングシステム245、及び、コンテンツ管理システムのクライアントアプリケーション200のさらなる動作は、以下に説明する。
【0024】
ある実施形態において、装置100は、カメラ230、ロケーションモジュール235等の付加的なコンポーネントを有する。カメラ230は、オンラインのコンテンツ管理システム110へアップロードする画像又は動画を撮影するために用いてもよい。ロケーションモジュール235は、例えば、グローバル・ポジショニング・サテライト信号、セルラ基地局三角測量法、あるいは、他の方法を用いて、装置100の位置(ロケーション)を判定する。ロケーションモジュール235は、ロケーションデータを取得し、そのロケーションデータを、例えばカメラ230が撮影した画像等のコンテンツアイテムについてのメタデータに追加するために、クライアントアプリケーション200が使用してもよい。
【0025】
クライアント装置100は、様々な手法によりコンテンツ管理システム110にアクセスする。クライアントアプリケーション200は、ユーザインタフェースを介した共有ファイルへのユーザアクセスと他のアプリケーションのためのプログラム的なアクセスの両方を提供する、コンテンツ管理システム110のサービスへのアクセスを提供する専用のアプリケーション又はモジュールとすることができる。クライアント装置100はまた、ウェブブラウザ250を介してコンテンツ管理システム110にアクセスしてもよい。これに代えて、クライアントアプリケーション200は、オペレーティングシステム245が提供するローカルファイル管理システムにコンテンツ管理システム110へのアクセスを統合してもよい。コンテンツ管理システム110へのアクセスがローカルファイル管理システムに統合された場合、コンテンツ管理システム110において維持されたファイル編成方式は、クライアントアプリケーション200と連携してオペレーティングシステム245によりローカルファイル構造として示される。クライアントアプリケーション200は、スタンドアロン・アプリケーション、アプリケーション・プラグイン、あるいは、ブラウザ拡張等の、様々な形態をとってもよい。クライアントアプリケーション200は、ユーザインタフェースモジュール202、インタラクション管理モジュール204、コンテンツアクセスモジュール206、ローカルコンテンツデータストア208、及び、監視プレゼンスデータストア210を有する。
【0026】
他の装置のタスクのハンドリング(取り扱い)に加えて、オペレーティングシステム245は、装置100上で実行しているアプリケーションからの情報を、1つ以上のユーザインタフェース要素を有してもよいディスプレイ220を介してユーザへ表示する。そのようなユーザインタフェース要素は、特定の装置及び構成に基づいて変化してもよい。ユーザインタフェース要素には、デスクトップインタフェース上のウィンドウやモバイル装置上のインタフェース要素が含まれる。ウィンドウ等のユーザインタフェース要素を採用しているオペレーティングシステムの例は、ワシントン州レドモンドのマイクロソフト社のMicrosoft Windows8や、カリフォルニア州クパチーノのアップル社のOS Xである。さらに、オペレーティングシステム245は、同時に実行してもよい複数のネイティブアプリケーション255の制御を管理する。ユーザインタフェース要素は、ある層が他の層に重なり合うように階層化されてもよい。いくつかのオペレーティングシステム及び構成においては、単一のユーザインタフェース要素のみが所与の時間に表示される。1つのユーザインタフェース要素は典型的にはアクティブなユーザインタフェース要素であり、これは、例えば、キーボード入力、カーソル移動、タッチセンサ、タッチジェスチャその他のようなユーザ入力を、オペレーティングシステム245が伝えるユーザインタフェース要素であることを意味する。当業者が理解するように、特定の時間にアクティブなウィンドウまたは他のユーザインタフェース要素はフォーカスを有するといわれることが多い。ユーザは他のユーザインタフェース要素を選択してあるユーザインタフェース要素から他のものへフォーカスを変更してもよく、いくつかの場合には、オペレーティングシステム245がユーザ入力なしにフォーカスを変更してもよい。
【0027】
典型的には、例えば、ネイティブアプリケーション255と関連付けられたウィンドウのようなユーザインタフェース要素はオペレーティングシステム245により管理され、オペレーティングシステム245は、実行中のネイティブアプリケーション255のプロセス識別子とユーザインタフェース要素のユーザインタフェース要素識別子との間の関連付け(アソシエーション)を維持する。例えば、特定のアプリケーションはプロセスID「2587」と関連付けられてよく、このプロセスIDは、ユーザインタフェース要素識別子4、8、10を有する複数のユーザインタフェース要素を管理してもよい。各ユーザインタフェース要素識別子はそのネイティブアプリケーション255により開かれた特定のコンテンツアイテムと別個に関連付けられてもよく、複数のユーザインタフェース要素識別子とプロセス識別子は同一のコンテンツアイテムと関連付けられてもよい。
【0028】
オペレーティングシステム245はまた、様々なイベントをハンドルし、認識する。そのようなイベントには、コンテンツアイテムを閉じる又は開くためのネイティブアプリケーション255からの要求、ウィンドウ又は他のユーザインタフェース要素を閉じるためのネイティブアプリケーション255からの要求、及び、ユーザインタフェース要素のフォーカスを多数の他のものの間で変更するための要求が含まれる。以下に記載するように、これらのイベントは、インタラクション管理モジュール204が、コンテンツアイテムに関連するプレゼンスにおける変化を認識するために用いられてもよい。
【0029】
クライアントアプリケーション200は、例えば、ユーザが装置上でコンテンツアイテムを開き、閉じ、又は、編集した場合のように、コンテンツアイテムに関して生じたインタラクションを識別する。これらのインタラクションは、コンテンツアイテムとのインタラクションを記述するインタラクション情報を生成するために、クライアントアプリケーション200により識別される。インタラクション情報は、クライアントアプリケーション200とのインタラクションと、ネイティブアプリケーション255とのインタラクションを含む。ネイティブアプリケーション255のアクションから判定されたインタラクション情報はプレゼンス情報と呼ぶ。インタラクション情報とプレゼンス情報を判定する、クライアントアプリケーション200等のアプリケーションは、プレゼンスアプリケーションと呼ぶ。さらなる種類の(プレゼンス情報に加えて)インタラクション情報には、クライアントアプリケーション200によって受信されてもよい、コンテンツアイテムに関するノート、メッセージ、及び、通知要求が含まれる。メッセージには、他の装置へのチャットメッセージや、コンテンツアイテムとの(例えば、編集のような)インタラクションを行うというユーザの意図を示すメッセージが含まれてもよい。通知要求には、他のユーザのインタラクション情報が変更された場合に通知される要求が含まれてもよい。インタラクション情報には、また、バージョニングノート等のメタデータ修正、又は、バージョニング情報ないし以前のコンテンツアイテムのバージョンの閲覧要求等の、コンテンツ管理システム110に記憶されたコンテンツアイテムについてのさらなる情報に対する要求をも含まれる。インタラクション情報のさらなる例を以下に説明する。
【0030】
このインタラクション情報は、コンテンツアイテムに関して同期された他の装置100へ伝送される。目的の指標は、例えば、第1のユーザがコンテンツアイテムを編集したい他の装置上のコンテンツアイテムの第2のユーザに警告してもよい。ユーザがネイティブアプリケーション255を使用してコンテンツアイテムとインタラクションをお粉いている場合にクライアントアプリケーション200は識別し、また、ユーザからチャット又は目的情報を受信する。以下にさらに説明するように、様々な実施形態において、装置100は、コンテンツアイテムにおけるユーザのプレゼンス(すなわち、ユーザがコンテンツアイテムを開いているか、あるいは、コンテンツアイテムを編集していること)をオペレーティングシステム245とのインタラクションを介して識別する。
【0031】
装置100はコンテンツ管理システム110からコンテンツアイテムを受信し、ユーザが、装置100に記憶された様々なネイティブアプリケーション255を用いてそのコンテンツアイテムの閲覧、修正、及び、インタラクションを行うことを可能にする。例えば、装置100は、画像コンテンツアイテムを操作するフォト編集アプリケーション、又は、テキストコンテンツアイテムの修正を可能にするワードプロセッサアプリケーションを有してもよい。以下にさらに説明するように、インタラクション情報はユーザインタラクションアプリケーションを用いて装置100により判定され、インタラクション情報は他の装置100へ送信される。さらに、装置100が他の装置100に関するインタラクション情報を受信した場合、装置100はそのインタラクション情報を表示する。
【0032】
一実施形態において、コンテンツアイテムに関するインタラクション情報を検出するアプリケーションは、コンテンツアイテムを閲覧又は操作するアプリケーションと区別される。例えば、インタラクション情報を検出するクライアントアプリケーションは、画像コンテンツアイテムを操作又は表示するフォト編集アプリケーションと区別される。様々な実施形態において、インタラクション情報を検出するアプリケーションはまた、コンテンツ管理システム110とコンテンツアイテムを同期させることも担う。プレゼンス情報を検出するアプリケーションはプレゼンスが検出されたアプリケーションから区別されてよいため、プレゼンスは、多くのアプリケーションやコンテンツアイテムに対して、同時かつプレゼンスの監視を各種のコンテンツアイテムビューワに統合することを要さずに、監視されてもよいすなわち、特別なプレゼンス監視のアドオンやアプリケーションの修正は、例えば、フォト編集アプリケーション、ワードプロセッサアプリケーション、及び、プレイリスト編集アプリケーションの各々に対して全く必要ない。
【0033】
図3A、
図3Bは、装置100のディスプレイ220上に表示されたデスクトップ300におけるユーザインタフェース要素のフォーカスの変化の例を示す図である。
図3Aにおいて、ウィンドウ310A、310B、310Cがデスクトップ300上に表示され、ユーザにより閲覧可能である。この実施形態において、デスクトップ300はオペレーティングシステム245により維持される汎用のコンテナ又はフレームであり、ディスプレイ220上でユーザインタフェース要素を取り囲む。
図3A、
図3Bにおいて、ユーザインタフェース要素はデスクトップコンピュータ環境におけるウィンドウ310である。例えばモバイル装置や他の領域が限られたディスプレイのような他の構成においては、単一のユーザインタフェース要素のみが一度に表示されうるだろう。
図3Aに示すように、ウィンドウ310Aはフロントウィンドウとして示されたアクティブウィンドウであり、ウィンドウ310B、310Cを部分的に覆い隠している。
図3Bでは、フォーカスがウィンドウ310Bへ変化し、ここではこれがフロントウィンドウでアクティブウィンドウである。フォーカスは、ウィンドウ310Bとのユーザインタラクションか、あるいは、そのウィンドウがアクティブウィンドウになることを要求するプロセスに起因して変化してもよい。あるオペレーティングシステム及び構成においては、ユーザインタフェース要素はフロントのユーザインタフェース要素とならずにフォーカスを有する(すなわち、ユーザ入力を受信する)。
【0034】
再度
図2を参照すると、コンテンツアイテムを開くために、ネイティブアプリケーション255はオペレーティングシステム245からのコンテンツアイテムを要求し、コンテンツアイテムに対するオペレーティングシステム245からのコンテンツアイテムのハンドルを受信する。いくつかの場合、ネイティブアプリケーション255がコンテンツアイテムからのデータの使用を継続し、あるいは、ユーザがコンテンツアイテムへの編集を入力していたとしても、アプリケーション245はハンドルを維持せず、コンテンツアイテムデータをメモリにロードし、続いてコンテンツアイテムハンドルを閉じてもよい。したがって、オープンコンテンツアイテムハンドルは、アプリケーションが特定のコンテンツアイテムとインタラクションを行っているか否かを判定するための信頼できる手法でないことが多い。そのようなものとして、ある実施形態では、ネイティブアプリケーション255により示されるさらなる挙動は、アプリケーションがコンテンツアイテムを編集しているか否かを判定するために用いられる。
【0035】
ネイティブアプリケーション255はまた、ユーザがコンテンツアイテムを修正した場合に、ユーザがそのコンテンツアイテムを保存する前に様々な挙動を行う。これらの挙動はアプリケーションやオペレーティングシステム245に基づいて変化する。例えば、いくつかのネイティブアプリケーション255は、例えばティルデ又は他の見分けのつくマークを有するコンテンツアイテムの一時的なファイル名を導いて、オープン(開かれた)コンテンツアイテムと異なるファイル名で一時的なコンテンツアイテムを作成する。他の例では、ネイティブアプリケーション255は、コンテンツアイテムと関連付けられたユーザインタフェース要素のタイトルを変更し、それはユーザから直接閲覧できてもよいしできなくてもよい。さらに他の例では、ネイティブアプリケーション255は、コンテンツアイテムが修正されたことを示すフラグを設定する。ネイティブアプリケーション255はまた、他のアプリケーション又はオペレーティングシステムからの要求に応じて、コンテンツアイテムの修正に関する情報を提供してもよい。例えば、前述のOS XオペレーティングシステムにおけるアクセシビリティAPIは、ユーザインタフェース要素と関連付けられたコンテンツアイテムに関する情報を提供する。オープンコンテンツアイテムのハンドルは、コンテンツアイテムがネイティブアプリケーション255によって編集されているか否かを確実に判定するものではないかもしれないため、以下にさらに説明するように、これらの挙動は、
インタラクション管理モジュール204がコンテンツアイテムの編集又は修正に関するプレゼンスを判定するために用いられる。
【0036】
ネイティブアプリケーション255は典型的には互いに独立に装置上100上で実行されてもよく、装置100上で実行しているアプリケーションと他のアプリケーションまたはプロセスとの通信を可能にしてもよい。ネイティブアプリケーション255は典型的には、アプリケーションが実行中のプロセスからの情報を要求することを可能にする、アプリケーションプログラミングインタフェース(API)を用いてプロセスへ情報を提供する。例えば、ネイティブアプリケーション255は、アプリケーションにより制御されたユーザインタフェース要素に対する要求を可能にし、ユーザインタフェース要素のタイトルを示し、又は、ネイティブアプリケーション255により開かれたコンテンツアイテムと関連付けられたファイルシステムにおけるパスを要求するための、APIを提示する。同様に、オペレーティングシステム245は、特定のユーザインタフェース要素を制御するプロセスについての情報を要求するなどの、要求プロセスに対して同様のAPIを提供してもよい。
【0037】
クライアントアプリケーション200はコンテンツ管理システム110へのアクセスを管理する。クライアントアプリケーション200は、ここで様々に説明するように、クライアントアプリケーション200によりアクセスされたコンテンツへのインタフェースを生成し、この機能を実行する1つの手段である、ユーザインタフェースモジュール202を有する。生成されたインタフェースはディスプレイ220によりユーザに提供される。クライアントアプリケーション200は、コンテンツ管理システム110のコンテンツストレージからアクセスされたコンテンツをローカルコンテンツデータストア208に記憶してもよい。ここではクライアントアプリケーション200内について示しているが、ローカルコンテンツデータストア208は、不揮発性ストレージにおいてクライアント装置100に対する他のデータとともに記憶されてもよい。ローカルコンテンツデータストア208がこのように記憶された場合、クライアントアプリケーション200がコンテンツ管理システム110と通信していなくても、コンテンツは、ユーザや、ネイティブアプリケーション255等の他のアプリケーション又はモジュールに利用可能である。コンテンツアクセスモジュール206はローカルコンテンツデータストア208への更新を管理し、コンテンツ管理システム110と通信するための同期ロジックを使用して、クライアント装置100により修正されたコンテンツをコンテンツ管理システム110上で維持されたコンテンツと同期させる。そのような同期の一例が、2013年9月27日に出願された米国特許出願第14/040,584号に提供されており、その内容は全体として参照によりここに組み込まれる。クライアントアプリケーション200は、スタンドアロン・アプリケーション、アプリケーション・プラグイン、あるいは、ブラウザ拡張等の、様々な形態をとってもよい。
【0038】
コンテンツ管理システム110は、例えば、コンテンツアイテムが削除されたこと、あるいは、装置100がコンテンツアイテムの旧式のバージョンを閲覧又は編集してもよいことを指定する情報等の、コンテンツアイテムを同期するための付加的なデータを提供してもよい。
【0039】
インタラクション管理モジュール204は、ユーザの同期されたコンテンツアイテムに関するインタラクション情報を取得して管理する。前述のように、インタラクション管理モジュール204は、典型的には、プレゼンス情報のためにインタラクション管理モジュール204により監視されるネイティブアプリケーション255から区別されたモジュールであり、別個のプロセスとして実行する。インタラクション管理モジュール204は、装置100と同期されているコンテンツアイテムについて判定されたインタラクション情報を、コンテンツ管理システム110へ送信する。インタラクション管理モジュール204はまた、他のユーザに関するインタラクション情報を、ユーザへの表示のために、コンテンツ管理システム110から受信する。以下にさらに説明するように、一実施形態において、インタラクション管理モジュール204は、同期されたコンテンツアイテムと関連付けられたユーザインタフェース要素にプレゼンスインジケータを添付して、他のユーザに関するプレゼンス情報を表示する。さらなるインタラクション情報もまたプレゼンスインジケータとともに表示される。
【0040】
以下にさらに説明するように、多くの種類のインタラクション情報を判定するために、インタラクション管理モジュール204は、ユーザインタフェース要素を介してインタラクション情報を受信する。同期されたコンテンツアイテムに関するプレゼンス情報を判定するために、インタラクション管理モジュール204は、ネイティブアプリケーション255と関連付けられたユーザインタフェース要素を監視する。インタラクション管理モジュール204は、全てのユーザインタフェース要素を監視することができ、またそれに代えて、ユーザインタフェース要素がコンテンツアイテムと関連付けられた後にあるユーザインタフェース要素のみを監視することもできる。監視プレゼンスデータストア210は、同期されたコンテンツアイテムに関するアクションを判定するために特定のユーザインタフェース要素が監視されることを示す、インタラクション管理モジュール204により維持された情報を有する。
【0041】
ここではクライアントアプリケーション200の一部として示しているが、様々な実装では、コンテンツアクセスモジュール206とインタラクション管理モジュール204とはそれぞれの機能を実行する区別されたモジュールに分離される。同様に、本明細書を通して様々なモジュールとデータストアを便宜上分けて記載しているが、様々な実装においては望む態様で、これらは組み合わせてもよいし、あるいは、さらに別個のコンポーネントに分離してもよい。
【0042】
図4は、一実施形態に係るコンテンツアイテムと関連付けられたプレゼンス情報を判定するプロセスの一例を示す図である。このプロセスは典型的にはインタラクション管理モジュール204により実行される。ユーザインタフェース要素がコンテンツアイテムと関連付けられた後にのみ監視された場合、インタラクション管理モジュール204は、ユーザインタフェース要素を監視するか否かを判定するために、コンテンツアイテムがアプリケーション又はユーザインタフェース要素により開かれていることを示すイベントを使用する。これは、ユーザインタフェース要素の監視を開始するためにコンテンツアイテムをユーザインタフェース要素と関連付けてもよいイベントの一例であり、監視イベントと呼ぶ。他の実施形態において、監視のユーザインタフェース要素の選択は他の手法で判定され、あるいは、全てのユーザインタフェース要素が監視され、そこではインタラクション管理モジュール204は監視イベントを使用しなくてもよい。
【0043】
オペレーティングシステム245により有効化された場合、インタラクション管理モジュール204は、一定のアプリケーションに対する監視イベントを受信するためにオペレーティングシステム245に登録してもよい。これらの実施形態において、オペレーティングシステム245がコンテンツアイテムを開く要求を受信した場合に、オペレーティングシステム245はインタラクション管理モジュール204に通知する。本実施形態において、インタラクション管理モジュール204は、ウィンドウ又は他のユーザインタフェース要素が、コンテンツアイテムとインタラクションを行っていることを示す監視イベントを受信する(400)。ここで、コンテンツアイテムは同期されたコンテンツアイテム(すなわち、プロセスは特定のユーザインタフェース要素においてコンテンツアイテムとのインタラクションを行っている)であってもよい。監視イベントは、監視イベントをトリガしたユーザインタフェース要素を少なくとも指定する。他の実施形態では、インタラクション管理モジュール204は、ユーザインタフェース要素と関連付けられたイベントを時々(例えば、5分間隔で)監視し、ユーザインタフェース要素が何らかの開かれたコンテンツアイテムと関連付けられているか否かを問い合わせる。オペレーティングシステム245及びネイティブアプリケーション255の構成によれば、この問合せはオペレーティングシステム245又はネイティブアプリケーション255に向けられてもよい。ユーザインタフェース要素が新たに開かれたコンテンツアイテムと関連付けられた場合、この新たに開かれたコンテンツアイテムは、その新たに開かれたコンテンツアイテムがコンテンツ管理システム110と同期されたコンテンツアイテムであるか否かを判定するための監視イベントとして扱われ、そのプレゼンス情報は新たに開かれたコンテンツアイテムに対して判定される。
【0044】
監視イベントが受信された場合、インタラクション管理モジュール204は、どのプロセスが、監視イベントと関連付けられたユーザインタフェース要素を担っているかを判定する(410)。インタラクション管理モジュール204は、典型的には、オペレーティングシステム245からのユーザインタフェース要素と関連付けられたプロセスIDを要求することによりプロセスを判定する。いくつかの実施形態において、インタラクション管理モジュール204は、ユーザインタフェース要素その自体からのプロセスの識別を要求することによりプロセスを識別する。
【0045】
プロセスとユーザインタフェース要素が互いに正しく関連付けられていることと、ユーザインタフェース要素がまだアクティブであることを確認するために、インタラクション管理モジュール204はまた、現在アクティブなユーザインタフェース要素のアイデンティティをもプロセスから要求する。インタラクション管理モジュール204は、プロセスから受信した現在アクティブなユーザインタフェース要素が監視イベントと関連付けられたユーザインタフェース要素に適合することを確認する。
【0046】
プロセス識別子を用いて、インタラクション管理モジュール204は、コンテンツアイテムに対する関連付けられたディレクトリパスを取得するために、プロセスからの任意の開かれたコンテンツアイテムを要求する(420)。インタラクション管理モジュール204は、開かれたコンテンツアイテムのパスに対する要求とともに、監視イベントと関連付けられたユーザインタフェース要素を指定してもよい。インタラクション管理モジュール204は、プロセス又はオペレーティングシステムへの利用可能なインタフェースを用いて、プロセス又はオペレーティングシステムからのオープン(開く)アイテムを要求する。一例として、当該分野では公知のように、OS Xオペレーティングシステムでは、コンテンツアイテムとユーザインタフェース要素に対するコンテンツアイテムパスに関する情報へアクセスするためにアクセシビリティAPIが用いられてもよい。プロセスにより提供されたコンテンツアイテムパスを使用して、インタラクション管理モジュール204は、開かれたコンテンツアイテムパスが任意の同期されたコンテンツアイテムに対応するか否かを判定する。そのようならば、インタラクション管理モジュール204は、プロセスによりアクセスされたコンテンツアイテムはコンテンツ管理システム110と同期されたコンテンツアイテムであると判定し、そのプロセスとユーザインタフェース要素をコンテンツアイテムと関連付ける。他の実施形態では、プロセスによりアクセスされたコンテンツアイテムが同期されたコンテンツアイテムであるか否かを判定するために他の方法を用いてもよい。
【0047】
コンテンツアイテムがコンテンツ管理システム110と同期されている場合(430)、インタラクション管理モジュール204は、コンテンツアイテム、プロセス、及び、ユーザインタフェース要素に関する情報を記憶して、イベントに対するユーザインタフェース要素を監視する(440)。監視イベントと関連付けられたコンテンツアイテムが同期されていない場合、プロセスは終了し、コンテンツアイテムは監視されない。この監視情報は、監視プレゼンスデータストア210に記憶される。ユーザインタフェース要素に関するプレゼンスイベントを監視し、続いて受信するために、インタラクション管理モジュール204は、ユーザインタフェース要素と関連付けられたイベントを受信するために登録する。インタラクション管理モジュール204による登録プロセスは、装置100の構成に従い変化する。典型的には、インタラクション管理モジュール204は、オペレーティングシステム245から、又は、適用可能なプロセスあるいはユーザインタフェース要素からのプレゼンスイベントを受信するための要求を登録する。ユーザインタフェース要素とプロセスとのいずれが同期されたコンテンツアイテムとのインタラクションを行っているかを監視イベントが判定した一方で、プレゼンスイベントは、コンテンツアイテムと関連付けられたユーザインタフェース要素又はプロセスに関するユーザのプレゼンスの状態における変化を示してもよいイベントである。プレゼンスイベントの例には、インタラクション管理モジュール204により認識されたプレゼンスの種類に基づいて、ユーザインタフェース要素のフォーカスの変化、ユーザインタフェース要素を閉じること、コンテンツアイテムを閉じること、コンテンツアイテムを開くこと等が含まれる。様々な構成において、インタラクション管理モジュール204により用いられるプレゼンスイベントは、オペレーティングシステム245及びネイティブアプリケーション255が、インタラクション管理モジュール204による受信に対して利用可能にするイベントに依存する。
【0048】
プレゼンスイベントは、そのプレゼンスイベントが関係するコンテンツアイテムと関連付けられたプレゼンス情報を判定するために用いられる。例えば、コンテンツアイテムと関連付けられたユーザインタフェース要素がフォーカスを有することを示すプレゼンスイベントは、ユーザがそのコンテンツアイテムを閲覧していることを示すだろう。したがって、そのコンテンツアイテムに対するプレゼンス情報は状態を示す。同様に、コンテンツアイテムに関係のないユーザインタフェース要素がフォーカスを得たことを示すプレゼンスイベントは、以前フォーカスされたユーザインタフェース要素と関連付けられたコンテンツアイテムはフォーカスを失ったことを示し、よって、ユーザはもはやそのコンテンツアイテムを閲覧していないことを示している。したがって、プレゼンス情報は、基礎をなすプレゼンスイベントそれ自体のあのレベルの意味解釈を提供する。
【0049】
インタラクション管理モジュール204が登録されたというプレゼンスイベントを受信するのに加えて、プレゼンスイベントはまた、プレゼンス情報が監視されたユーザインタフェース要素に対して変更されていないことを確認するために、インタラクション管理モジュール204により開始されてもよい。これらのプレゼンスイベントは、特定のユーザインタフェース要素又はプロセスに対する最後のプレゼンスイベントから閾値量の時間が経過した場合に、あるいは、例えば5分ごとのような特定の時間間隔に、開始してもよい。
【0050】
イベントに対する登録に加えて、インタラクション管理モジュール204は他の手法でインタラクションイベントを受信してもよい。一実施形態において、ユーザはユーザインタフェース要素を介してインタラクション情報を明示的に示してもよい。ユーザインタフェース要素は、ユーザが、例えば、そのユーザがコンテンツアイテムを改訂する意図を有していることを示したり、あるいは、そのコンテンツアイテムを編集又は閲覧している他のユーザに対して、例えば、特定の意図を示すメニューアイテム又はアイコンの選択により、その意図を示すことができるように構成することが可能である。ユーザインタフェース要素はまた、ユーザが、例えば、コンテンツアイテムをもう閲覧しないというユーザの意図などのユーザの他の意図を示したり、あるいは、ユーザはコンテンツアイテムにプレゼントでない(関与しない)又はこれからプレゼントでないことを明示的に示すことができるように構成することも可能である。他のユーザは、そのような「プレゼントでない」という意図を用いてそのコンテンツアイテムは編集が自由であることを知ってもよい。例えば、他の装置上でコンテンツアイテムを現在閲覧している他のユーザへメッセージを伝送するために、ユーザ入力のインタラクションイベントは、コンテンツアイテムと関連付けられた他のユーザへ広められるべきメッセージ又はチャットの特徴を含んでもよい。
【0051】
プレゼンスイベントが受信されると(450)、インタラクション管理モジュール204は、監視されたユーザインタフェース要素に関する最後のプレゼンスイベント以降、何らかのプレゼンス情報が変更されたか否かを判定する。ユーザ開始のインタラクション情報に対して、インタラクション情報は、例えば、ユーザがコンテンツアイテム又はユーザのチャットメッセージを修正する意図を有していることを示すユーザインタフェース要素のユーザの選択のような、ユーザにより提供された情報であってもよい。プレゼンスイベントに対して、インタラクション管理モジュール204は、監視されたユーザインタフェース要素の状態を判定するために監視プロセスを問い合わせる。特に、インタラクション管理モジュール204は、監視されたユーザインタフェース要素がアクティブなユーザインタフェース要素であるか否かを藩邸すくためにプロセスに問い合わせる。監視されたユーザインタフェース要素がアクティブなユーザインタフェース要素である場合、コンテンツアイテムはユーザにより閲覧されている。
【0052】
いくつかの実施形態において、コンテンツアイテムに関するユーザプレゼンスを削除することに加えて、インタラクション管理モジュール204はまた、コンテンツアイテムがユーザにより修正されているか又は修正されたか否かの判定も行う。このさらなる側面は、例えば、ユーザは閲覧者ではなく編集者としてコンテンツアイテムに関するプレゼンスを有しているというインジケーションにより、より高い粒度でプレゼンス情報を報告することを可能にする。前述のように、コンテンツアイテムが修正されている場合にアプリケーションにより実行される特定のアクションは変化してもよいため、インタラクション管理モジュール204によりこれらのアクションの1つを検出したことは、プロセスがコンテンツアイテムを編集したことを示すものである。例えば、コンテンツアイテムが編集された場合にプロセスにより予期されたアクションの種類に従い、インタラクション管理モジュール204は、プロセスはコンテンツアイテムが修正済とフラグされていることを示しているか、ユーザインタフェース要素のタイトル情報が変更されているか、一時ファイルが保存又はキャッシュされているか、あるいは、他の何らかのデータがコンテンツアイテムが修正されたことを示しているかを判定するために、プロセスに問い合わせてもよい。インタラクション管理モジュール204はまた、例えば、コンテンツアイテムに類似のファイル名を有するが、ファイル名のティルダ又は他の特定の変形を有するコンテンツアイテムのような、一時コンテンツアイテムフォーマットに適合するコンテンツアイテムが保存されているか否かを判定するためにオペレーティングシステムに問い合わせてもよい。そのような修正は、コンテンツアイテムと関連付けられたプレゼンス情報は、ユーザがコンテンツアイテムを編集中であることを反映しなければならないことを示す。
【0053】
プレゼンス情報を判定(460)した後、ユーザインタフェース要素に対するあらゆる新たなプレゼンス情報は、監視プレゼンスデータストア210として記憶される。一実施形態において、このプレゼンス情報は、1つのプロセスによる複数のユーザインタフェース要素が同一のコンテンツアイテムと関連付けられ、プレゼンス情報が個別に管理されてもよいように、ユーザインタフェース要素ごとに記憶される。一実施形態において、プレゼンス情報は現在のプレゼンス状態に基づいて変化してもよい。例えば、コンテンツアイテムに対するプレゼンス情報がコンテンツアイテムが編集中であることを反映した場合、一実施形態において、ユーザインタフェース要素におけるコンテンツアイテムに対するプレゼンスは、ユーザが他のユーザインタフェース要素へフォーカスを変更した場合に変更されない。代わりに、ユーザインタフェース要素は閉じられたことをプレゼンスイベントがユーザインタフェースに知らせるまで、編集状態はそのユーザインタフェース要素に関して維持される。他の実施形態では、編集はコンテンツアイテムへの修正を導びく可能性を有しているため、一実施形態において、コンテンツアイテムに対する修正はコミットされたか、又は、修正は破棄されたという通知をインタラクション管理モジュール204が受け取るまで、編集済文書に対するプレゼンス情報は変更されない。
【0054】
閲覧されていることを示すプレゼンス情報を有するコンテンツアイテムは、ユーザインタフェース要素がフォーカスを失ったり、あるいは、閾値時間フォーカスを失ったような場合に、その状態を変化させてもよい。これは、コンテンツアイテムと関連付けられたユーザインタフェース要素がまだ開かれている場合にも、同様にしてよい。一実施形態において、「閲覧されている」のプレゼンス情報は、コンテンツアイテムがアクティブなユーザインタフェース要素と関連付けられているか否かを示す。一実施形態において、「閲覧されている」のプレゼンス情報は、ユーザインタフェース要素が閾値時間よりも長くアクティブでなくなる(あるいは、フォーカスを失う)まで保持される。一実施形態において、コンテンツアイテムは、コンテンツアイテムがアプリケーションにより開かれている間、「閲覧されている」と考えられる。
【0055】
インタラクション情報に変化があった場合、インタラクション管理モジュール204は、インタラクション情報をコンテンツ管理システム110へ送信する
(470)。一実施形態において、送信されるプレゼンス情報には、コンテンツアイテムの識別子、プロセスID、ユーザインタフェース要素ID、及び、プレゼンス状態が含まれる。
【0056】
図5A−
図5Dは、インタラクション情報を表示するユーザインタフェースの例を示す図である。様々なユーザインタフェース要素は
図3A及び
図3Bに示したものと同様である。
図5Aにおいて、ユーザインタフェースの例はプレゼンス情報を表示している。プレゼンス情報を表示するために、インタラクション管理モジュール204は、コンテンツアイテムと関連付けられたウィンドウの境界又は縁に合わせてプレゼンスインジケータ500を提供する。この例では、インタラクション管理モジュール204は、ユーザのジェフがコンテンツアイテム2を編集中であり、4人のユーザがコンテンツアイテム2を閲覧中であることを示すプレゼンス情報を受信している。インタラクション管理モジュール204は、ジェフが文書を編集していることを示すプレゼンスインジケータ500Aと、ユーザがその文書を閲覧していることを示すプレゼンスインジケータ500Bを表示している。一実施形態において、プレゼンスインジケータ500は、プレゼンスインジケータと関連付けられたユーザのアイコンまたはピクチャを表示する。アイコンやピクチャは、インタラクション管理モジュール204がコンタクトディレクトリ240から取得してもよいし、あるいは、コンテンツ管理システム110から受信してもよい。プレゼンスインジケータが表示する個別のユーザは実施形態により変化してもよく、また、例えば、特定のプレゼンスを有する最初のユーザ(例えば、最初の閲覧者)や最も新しくコンテンツアイテムを開いたユーザを表示してもよい。
【0057】
プレゼンスインジケータ500はコンテンツアイテムと関連付けられたウィンドウに合わせて表示されてもよく、一実施形態において、インタラクション管理モジュール204は、ウィンドウの位置を追跡し、例えば、ウィンドウの縁または境界のような、ウィンドウに隣接して又は近傍にプレゼンスインジケータ500を表示する。ユーザがプレゼンスインジケータ500上に静止した場合、ユーザに対しさらなる情報やインタフェースを提供するための補助的なプレゼンスインジケータ510が現れてもよい。
図5Aに示す例では、補助的なプレゼンスインジケータ510は、プレゼンスインジケータ500Aを、具体的には、ジェフがコンテンツアイテム2の編集中のプレゼンスと関連付けられていることを説明している。補助的なプレゼンスインジケータ510はまた、プレゼンスが変化した場合に現れて、例えば、新たなユーザが文書を閲覧又は編集していることを示してもよい。
【0058】
プレゼンスインジケータ500及び補助的なプレゼンスインジケータ510は、ディスプレイ220の任意の都合のよい領域に位置づけられてもよい。一実施形態において、プレゼンスインジケータと一定のコンテンツアイテムとの間の関係をユーザに視覚的に示すために、プレゼンスインジケータは、コンテンツアイテムの関連付けられたユーザインタフェース要素に近接して表示される。さらに、ウィンドウの境界又は縁に合わせたプレゼンスインジケータの表示は、ユーザがプレゼンスインジケータに気づく見込みを増大させる。一実施形態において、プレゼンスインジケータ500は、コンテンツアイテムを含むウィンドウの垂直縁(例えば、
図5Aに示す右の縁)の上またはそれに並べて表示される。
【0059】
それに代えて、プレゼンスインジケータは、例えばタスクバーやトレイアイコン等の、ディスプレイの別の領域に示してもよく、あるいは、コンテンツアイテムのユーザインタフェース要素とインタラクションを行わない別個のユーザインタフェース要素としてもよい。ここではプレゼンスの種類(編集または閲覧)の各々に対して単一のプレゼンスインジケータ500を示しているが、任意の個数のプレゼンスインジケータ500をコンテンツアイテムに関連して示してもよい。例えば、円形インジケータはコンテンツアイテムを閲覧しているユーザのカウントを含んでもよく、他の円形インジケータはコンテンツアイテムを編集しているユーザのカウントを含んでもよい。あるいは、複数のプレゼンスインジケータ500が表示される場合、これらは最上位から最下位に順序付けてよく、この順序づけは、最も最近のものから最も長く使われていないものまで、最も優先度の高いものから最も優先度の低いものまで、あるいは、これらの組み合わせ(例えば、優先度による順序付けと、同一の優先度のプレゼンスインジケータについて、最近であることによる順序付け)とすることができる。図に示すように、プレゼンスインジケータはまた、他のユーザと関連付けられたアイコン又はピクチャを示してもよい。インジケータはまた、ユーザが他のユーザによる編集へ影響を及ぼすリスクを示すように色分けされてもよい。例えば、プレゼンスインジケータは、他のユーザが編集中の場合は赤色としてよく(あるいは、プレゼンスインジケータは赤色に変わってもよい)、あらゆる所望の修正をそのユーザの変化に調和させることをユーザに知らせてもよい。同様に、編集インジケータは、他のユーザがコンテンツアイテムを閲覧しているときは黄色、現在のユーザがコンテンツアイテムを閲覧している唯一のユーザであるときは緑色としてもよい。
【0060】
図5Bは、ユーザがインタラクション管理モジュール204へインタラクション情報を入力してもよいユーザインタフェースを示している。このインタフェースは、プレゼンスインジケータ500に加えてさらなるユーザインタフェース要素を有している。このインタフェースは、
図5Aの例の代わりに提示されてもよく、あるいは、コンテンツアイテムに関する付加的なデータを提供する補助的なプレゼンスインジケータとして提示されてもよい。
【0061】
このユーザインタフェースは、他のユーザに関するプレゼンスの変化が発生した場合に通知してほしいというユーザの希望を示すことをユーザに可能にする、通知要素520を提供する。通知要素520を選択する際に、ユーザは、例えば、特定のユーザのプレゼンスが変化した(例えば、ジェフはもう編集していない)場合に、全てのユーザが特定のプレゼンスを停止した(例えば、誰も編集していない)こと、あるいは、アクティブなプレゼンスを有するユーザはいないこと(例えば、他の誰もコンテンツアイテム2にアクセスしていないこと)が通知される、一定の通知オプションをさらに選択してもよい。ユーザの通知プリファレンスは、要求されたプレゼンスが変化した場合にコンテンツ管理システム110又は通知を要求する適用ユーザへ送信される。
【0062】
このインタフェースはまた、ユーザが、コンテンツアイテムにプレゼンスを有する他のユーザと通信するためのチャットインタフェース
530を提供する。チャットインタフェース
530は、ユーザが他のユーザに参加してメッセージを受信することを可能にする。プレゼンスの変化はまた、例えば、アマンダが今コンテンツアイテムを閲覧しているという、チャット
インタフェース530において示すこともできる。チャット
インタフェース530は、ユーザがアイテムの編集を終えることを予期している場合などに、そのコンテンツアイテムに関する情報についてユーザが具体的に議論することを可能にしてもよい。これらのチャットメッセージは、インタラクション管理モジュール204によりインタラクション情報として受信され、そのコンテンツアイテムと同期された他のクライアントへ送信される。これにより、ネイティブアプリケーションがチャットの機能性を提供していない場合であっても、コンテンツアイテムについてユーザは直接チャットをすることができる。
【0063】
ノートユーザインタフェース540は、ユーザが、コンテンツアイテムと関連付けられて記憶されたノートを取得し、参加することを可能にする。ノートインタフェース540が選択された場合、インタラクション管理モジュール204は、コンテンツアイテムに関するコンテンツ管理システム110からの任意のノート又は他の持続情報を要求し、他の同期された装置及びコンテンツ管理システム110へ送信される付加的なノートを入力するためのインタフェースと合わせて、任意のそのようなノートをユーザに表示する。チャットウィンドウと同様に、これにより、コンテンツアイテムや、ノートの機能性をもともと提供していないかもしれないユーザインタフェースを提供するアプリケーションに対して、付加的なノートを入力することが可能になる。ノート要素540はまた、コンテンツアイテム内に他のユーザがプレゼントしていない場合にも用いてもよく、コンテンツアイテムについての他のユーザに対するメッセージを残すために用いてもよい。
【0064】
コンテンツデータ要素550は、任意の関連するメタデータ、ユーザパーミッションその他のような、コンテンツアイテムについての付加的なデータをユーザが要求することを可能にする。これにより、ユーザは、コンテンツアイテムと関連付けられたユーザインタフェース要素に近いインタフェースから直接コンテンツ管理システムからのコンテンツアイテムの詳細を要求することができる。
【0065】
同様に、バージョン要素560は、バージョン情報に対する要求を示す。インタラクション管理モジュール204は、コンテンツアイテムに関するインタラクション情報として、バージョン情報に対する要求をコンテンツ管理システム110へ伝送する。これに応じて、コンテンツ管理システム110は、そのコンテンツアイテムの関連するバージョン情報を識別する。一実施形態において、以前のバージョンは、ユーザインタフェース要素に表示されたコンテンツアイテムのバージョンと対象比較される。他の実施形態において、以前のバージョンは、ユーザインタフェース要素においてインラインで比較される。
【0066】
図5Cは、他のコンテンツアイテムに関するプレゼンスにおける変化についてユーザが通知されているユーザインタフェースを示している。この事例では、ユーザは、ユーザのジェフがコンテンツアイテム2の編集を終えた場合に通知されることを、前もって通知要素520を用いて選択している。通知を要求した後、ユーザはコンテンツアイテム2に関するウィンドウ310Bを閉じるために進み、現在はコンテンツアイテム1を閲覧している。本実施形態において、プレゼンスインジケータ500Dは、ユーザがこのコンテンツアイテムに関するプレゼンスを有する唯一のユーザであることを示している。これは図示したように明確に示してもよいし(「他の誰もこのファイルを閲覧していない」)、あるいは、ユーザがプレゼンスインジケータ500Dとインタラクションを行った場合に提供してもよい。インタラクション管理モジュール204は、ジェフがコンテンツアイテム2の編集を終えたことの通知を受信する。通知570はユーザに表示される。この通知は、その通知が関係するコンテンツアイテムとは異なる他のアプリケーション又はコンテンツアイテムとユーザがインタラクションを行っているかもしれないとしても提供される。
【0067】
図5Dは、コンテンツアイテムが修正されたという通知をユーザが受信したユーザインタフェースを示している。この例では、ユーザが閲覧しているコンテンツアイテム2の新バージョンが他のユーザのジェフにより保存されている。インタラクション管理モジュール204は、コンテンツアイテム2が修正され、新バージョンが利用可能であることを示すメッセージをコンテンツ管理システム110から受信する。典型的には、ユーザの編集をコンテンツ管理システム110と同期させることをユーザが試みた場合、そのユーザの編集がコンテンツ管理システム110により維持されたバージョンに関して旧式であることからユーザの編集は失われるかもしれない。ユーザがコンテンツアイテムを編集していることを示すプレゼンス情報を使用して、ユーザは、ジェフからの任意の編集をユーザの編集に組み込むことを支援するための選択を提供されることができる。バージョン通知580は、新バージョンに応じるための選択と合わせて、ユーザに提示される。この例ではユーザは、新バージョンをロードすること、ユーザの編集を破棄すること、又は、ユーザの編集を新ファイルとして保存することを選択してもよい。以下にさらに説明するように、ユーザが利用可能な特定の選択は、コンテンツ管理システム110が有する装置のプレゼンス100の記録に基づいて、コンテンツ管理システム110により提供されてもよい。他の実施形態では、インタラクション管理モジュール204がユーザに表示するオプションを判定する。
【0068】
インタラクション管理モジュール204がウィンドウ310Bのネイティブアプリケーション255とは別個のアプリケーションである実施形態においては、プレゼンスインジケータ500は、インタラクション管理モジュール204により提供される。そこで、インタラクション管理モジュール204は、アプリケーションと関連付けられたプレゼンス情報を監視し、アプリケーションと関連付けられたコンテンツアイテムに対する他のユーザに関するプレゼンス情報を表示する。他のウィンドウが有効化された場合、同一のインタラクション管理モジュール204は、有効化されたウィンドウに関するプレゼンス情報を表示する。
【0069】
プレゼンスインジケータを表示するために、インタラクション管理モジュール204は、他の装置に対するプレゼンス情報を、典型的にはコンテンツ管理システム110から受信する。インタラクション管理モジュール204は、同期されたコンテンツアイテムがウィンドウ又はプロセスにより使用中であること、及び、ウィンドウがユーザに表示されていることを判定する。例えば前述のように、インタラクション管理モジュール204は、監視されているウィンドウ又はプロセスからプレゼンスイベントを受信してもよい。ウィンドウがフォーカスを有することをプレゼンスイベントが示す場合、インタラクション管理モジュール204はプレゼンスインジケータを表示に追加する。一実施形態におけるインタラクション管理モジュール204はまた、デスクトップにおけるウィンドウの移動を追跡し、プレゼンスインジケータを移動させて、そのウィンドウに関するプレゼンスインジケータの位置を維持する。
【0070】
一実施形態において、プレゼンスインジケータを表示に追加するために、インタラクション管理モジュール204は、フォーカスされているウィンドウとその境界の位置を判定し、ウィンドウの境界に隣接するプレゼンスインジケータを追加する。フォーカスされているウィンドウが変更されたことをインタラクション管理モジュール204が識別した場合、そのコンテンツアイテムに対するプレゼンスインジケータは、そのウィンドウが再度フォーカスされるまで除去されてもよい。
【0071】
図6は、一実施形態に係る
図1のコンテンツ管理システム110のコンポーネントを示している。1つの構成において、コンテンツ管理システム110を参照して以下に説明するコンポーネントは、コンテンツ管理システム110による管理がなしにコンテンツアイテムを共有及び同期する装置100に組み込まれる。これらの装置100は、ネットワーク120越しに、あるいは、前述のように直接接続を介して、コンテンツを同期化し、インタラクション情報を共有してもよい。この構成において、装置100は、同期モジュール612、衝突管理モジュール614、インタラクション同期モジュール616、及び他のモジュール、並びに、データストアの機能性を組み込んでもよく、これらはコンテンツ管理システム110により提供されるものとして以下に説明する機能性を組み込む。したがって、この構成の装置100は、ピア・ツー・ピアの構成において動作し、コンテンツ管理システム110あるいはネットワーク120がなくてもそのように動作してもよい。
【0072】
様々なコンテンツ管理サービスを促進するためにコンテンツ管理システム110を使用する場合、ユーザは、コンテンツ管理システム110のアカウントを作成することができる。アカウント情報はユーザアカウントデータベース618に維持することが可能であり、この機能を実行する1つの手段である。ユーザアカウントデータベース618は登録されたユーザのプロフィール情報を記憶することができる。いくつかの場合、ユーザプロファイルの個人情報を、ユーザ名及び電子メールアドレスの少なくともいずれかのみとすることができる。もっとも、コンテンツ管理システム110はまた、例えば、パスワード回復情報、デモグラフィックス情報、支払情報、及び他の詳細情報等の、付加的なユーザ情報を許容するように構成することもできる。各ユーザは、ユーザIDやユーザ名等の識別子と関連付けられる。
【0073】
ユーザアカウントデータベース618はまた、例えば無料又は支払済みのようなアカウントの種類、例えばファイル編集履歴のような各ユーザの使用情報、認可された最大ストレージ空間、使用済みストレージ空間、コンテンツストレージの場所、セキュリティ設定、個人コンフィギュレーション設定、コンテンツ共有データ等の、アカウント管理情報を含むこともできる。アカウント管理モジュール604は、ユーザアカウントデータベース618のユーザアカウントの詳細の更新及び取得の少なくともいずれかを行うように構成することができる。アカウント管理モジュール604は、コンテンツ管理システム110の任意の個数の他のモジュールとインタラクションを行うように構成することができる。
【0074】
アカウントは複数の装置100と関連付けることができ、コンテンツアイテムはアカウントと関連付けて記憶することができる。記憶されたコンテンツはまた、異なる挙動を有する様々な種類のフォルダや、他のコンテンツアイテムのグルーピング法を有することができる。例えば、アカウントは、任意のユーザがアクセス可能なパブリックフォルダを有することができる。パブリックフォルダはWebアクセス可能なアドレスを割り当てることができる。Webアクセス可能なアドレスへのリンクは、パブリックフォルダのコンテンツにアクセスするために使用することができる。他の例では、アカウントは、写真コンテンツアイテムを対象とし写真に適合した一定の属性及びアクションを提供する写真フォルダと、音声ファイルコンテンツアイテムを再生し他の音声関連アクションを実行する能力を提供する音声フォルダと、他の特定用途フォルダとを有することができる。アカウントはまた、複数のユーザアカウントにリンクされて利用可能な共有フォルダ又はグループフォルダを有することもできる。複数のユーザに対するパーミッションは共有フォルダに対して異なってもよい。一実施形態において、アカウントは数人のユーザと関連付けられてもよい名前空間であり、数人のユーザの各々は名前空間とのインタラクションを行うためのパーミッションと関連付けられてもよい。
【0075】
コンテンツは、この機能を実行する1つの手段であるコンテンツストレージ620に記憶されてもよい。コンテンツストレージ620は、1つのストレージ装置、複数のストレージ装置、又は、サーバとすることができる。あるいは、コンテンツストレージ620は、1つ以上の通信ネットワークを介してアクセス可能なクラウドストレージプロバイダ又はネットワークストレージとすることができる。1つの構成において、コンテンツ管理システム110は、コンテンツアイテムを、それが装置で見えるのと同じ編成構造で記憶する。もっとも、コンテンツ管理システム110は、コンテンツアイテムを独自の順序、配列、又は、階層で記憶することもできる。
【0076】
コンテンツストレージ620はまた、コンテンツアイテムを説明するメタデータ、コンテンツアイテムの種類、及び、様々なアカウント、フォルダ、あるいは、グループに対するコンテンツアイテムの関係を記憶することもできる。コンテンツアイテムのメタデータは、コンテンツアイテムの一部と記憶することもできるし、あるいは、別個に記憶することもできる。1つの構成において、コンテンツストレージ620に記憶された各コンテンツアイテムは、システム内の固有の識別子を割り当てることができる。
【0077】
コンテンツストレージ620は、重複するコンテンツアイテム又はコンテンツアイテムの重複するセグメントを識別することにより、必要なストレージ空間の量を低減させることができる。一実施形態において、例えば、コンテンツアイテムの所有者メタデータ(例えば、所有者リスト)内にユーザの識別子を含めることにより、コンテンツアイテムのコピーを1つだけ記憶し、1つのコピーの複製をリンクするポインタ又は他の機構を使用しつつ、異なるユーザ間でコンテンツアイテムを共有してもよい。同様に、コンテンツストレージ620は、コンテンツアイテムへの変更、コンテンツアイテムの異なるバージョン(分岐バージョン木等)、及び、変更履歴を追跡するバージョン制御機構を使用して、コンテンツアイテムを記憶する。変更履歴は、オリジナルのコンテンツアイテムのバージョンに適用された場合に変更済みのコンテンツアイテムのバージョンを作成する、変更の集合を含む。
【0078】
コンテンツ管理システム110は、同期モジュール612を使用して1つ以上の装置からのコンテンツアイテムを自動的に同期し、同期モジュール612はこの機能を実行する1つの手段である。同期はプラットフォームにとらわれない。すなわち、コンテンツアイテムは、様々な種類、性能、オペレーティングシステム等の複数の装置100をまたがって同期される。例えば、クライアントアプリケーション200は、コンテンツ管理システム110の同期モジュール612を介して、装置100のファイルシステムのコンテンツを、システム110の関連付けられたユーザアカウントのコンテンツアイテムと同期させる。クライアントアプリケーション200は、指定フォルダ及びそのサブフォルダ内のコンテンツアイテムに対するあらゆる変更を同期モジュール612と同期させる。そのような変更には、ファイル又はフォルダの新規作成、削除、修正、コピー、又は、移動が含まれる。同期モジュール612はまた、装置100と関連付けられたコンテンツへのあらゆる変更をクライアントアプリケーション200に提供する。これは装置100のローカルコンテンツをコンテンツ管理システム110のコンテンツアイテムと同期させるものである。
【0079】
衝突管理モジュール614は、異なる装置100に位置するコンテンツアイテムのバージョン間において何らかの不一致があるか否かを判定する。例えば、ある装置と第2の装置においてコンテンツアイテムが修正された場合、各装置にコンテンツアイテムの異なるバージョンが存在するかもしれない。同期モジュール612はそのようなバージョニングの衝突を、例えば、コンテンツアイテム修正の修正時刻を識別することによって判定する。衝突管理モジュール614は、例えば、バージョンをマージしたり、あるいは、後に提出されたバージョンを装置に通知するなどの任意の適切な手段により、バージョン間の衝突を解決する。
【0080】
ユーザはまた、ユーザインタフェースモジュール602により生成されたウェブインタフェースを介してコンテンツを閲覧又は操作することもできる。例えば、ユーザは、ウェブブラウザ250の中で、コンテンツ管理システム110により提供されたウェブアドレスへナビゲートすることができる。ファイルの新バージョンのアップロード等の、コンテンツストレージ620のコンテンツに対するウェブインタフェースを介してなされた変更又は更新は、ユーザのアカウントと関連付けられた他の装置100にも同期により反映される。複数の装置100は単一のアカウントと関連付けられてもよく、そのアカウント内のファイルは複数の装置100の各々の間で同期される。
【0081】
コンテンツ管理システム110は、アプリケーションプログラミングインタフェース(API)を介して、様々な装置100や、他のコンテンツ及び/又はサービスのプロバイダとの間のインタフェースとなる通信インタフェース600を有し、これはこの機能を実行する1つの手段である。あるソフトウェアアプリケーションは、APIを介してユーザに代わってコンテンツストレージ620にアクセスする。例えば、スマートフォン又はタブレット型コンピュータ装置のアプリのようなソフトウェアパッケージは、ユーザがコンテンツの読出し、書込み、作成、削除、共有、あるいは他の操作についてのクレデンシャルを提供した場合に、プログラムにより直接コンテンツ管理システム110の呼出しを行うことができる。同様に、APIは、ユーザがウェブサイトを介してコンテンツストレージ620の全部又は一部にアクセスすることを可能にする。
【0082】
コンテンツ管理システム110はまた、ユーザのクレデンシャル、セキュリティトークン、APIコール、専用装置等を検証して、要求されたコンテンツアイテムへのアクセスが認可されたものか否かを判定する認証モジュール606を有し、これはこの機能を実行する1つの手段である。認証モジュール
606は、ユーザアカウントに対してワンタイム使用の認証トークンを生成することができる。認証モジュール
606は、各認証トークンに対して有効期間又は有効期限を割り当てる。認証トークンを要求装置へ送信することに加えて、認証モジュール606は、生成した認証トークンを認証トークンデータベース622に記憶することができる。認証トークンの正当性検証の要求を受信すると、認証モジュール606は、ユーザに割り当てられた適合認証トークンを求めて認証トークンデータベース622をチェックする。認証モジュール606が適合認証トークンを識別するとすぐに、認証モジュール606は、適合認証トークンがまだ有効か否かを判定する。例えば、認証モジュール606は、認証トークンが失効していないか、あるいは、使用済み又は無効なものとしてマークされていないかを検証する。認証トークンの正当性検証の後、認証モジュール606は、使い捨てトークン等の適合認証トークンを無効化してもよい。例えば、認証モジュール606は、適合認証トークンを使用済み又は無効なものとしてマークしたり、あるいは、適合認証トークンを認証トークンデータベース622から削除することができる。
【0083】
コンテンツ管理システム110は、コンテンツを公開又は非公開で共有する共有モジュール610を有する。コンテンツを公開で共有することには、コンテンツ管理システム110とのネットワーク通信において任意のコンピュータ装置からコンテンツアイテムをアクセス可能にすることが含まれうる。コンテンツを非公開で共有することには、コンテンツストレージ620のコンテンツアイテムを2つ以上のユーザアカウントとリンクづけすることで、各ユーザアカウントがコンテンツアイテムへのアクセスを有するようにすることを含めることができる。コンテンツはまた、各種のユーザアカウントをまたがって共有することもできる。
【0084】
いくつかの実施形態において、コンテンツ管理システム110は、コンテンツストレージ620の各コンテンツアイテムの位置を識別し、クライアントアプリケーションがストレージ620内のコンテンツアイテムへのアクセスを要求することを可能にするコンテンツディレクトリを維持するコンテンツ
アイテム管理モジュール608を有し、これはこの機能を実行する1つの手段である。コンテンツディレクトリのコンテンツエントリはまた、コンテンツストレージ620のコンテンツアイテムの位置を識別するコンテンツポインタを有することができる。例えば、コンテンツエントリは、メモリ内のコンテンツアイテムのストレージアドレスを指定するコンテンツポインタを有することができる。いくつかの実施形態において、コンテンツエントリは、それぞれコンテンツアイテムの一部を含む、複数の位置を指す複数のコンテンツポインタを有する。
【0085】
コンテンツパス及びコンテンツポインタに加えて、いくつかの構成におけるコンテンツエントリはまた、コンテンツアイテムへのアクセスを有するユーザアカウントを識別するユーザアカウント識別子を有する。いくつかの実施形態において、複数のユーザアカウント識別子は、コンテンツアイテムが複数のユーザアカウントによる共有アクセスを有することを示す単一のコンテンツエントリと関連付けることができる。
【0086】
コンテンツアイテムを非公開で共有するために、共有モジュール610は、コンテンツアイテムと関連付けられたコンテンツエントリにユーザアカウント識別子を追加し、これにより追加されたユーザアカウントのコンテンツアイテムへのアクセスを許可する。共有モジュール610はまた、コンテンツアイテムへのユーザアカウントのアクセスを制限するために、コンテンツエントリからのユーザアカウント識別子を削除するように構成することもできる。
【0087】
コンテンツを公開で共有するために、共有モジュール610は、あらゆるウェブブラウザが認証なしにコンテンツ管理システム110のコンテンツにアクセスすることを可能にする、URL等のカスタムネットワークアドレスを生成する。共有モジュール610は、生成されたURLのコンテンツ識別データを有し、これは後に、コンテンツ管理システム110が要求されたコンテンツアイテムを正しく識別して返すために使用することができる。例えば、共有モジュール610は、生成されたURLにユーザアカウント識別子とコンテンツパスを有するように構成することができる。URLに含まれるコンテンツ識別データは、装置がコンテンツアイテムにアクセスするために、コンテンツ管理システム110へ伝送することができる。URLを生成することに加えて、共有モジュール610はまた、コンテンツアイテムへのURLが作成されたことを記録するように構成することもできる。いくつかの実施形態において、コンテンツアイテムと関連付けられたコンテンツエントリは、コンテンツアイテムへのURLが作成されたか否かを示すURLフラグを有することができる。
【0088】
コンテンツ管理システム110は、単一のコンピュータ、又は、クラウドベースのコンピュータ実装を含む、コンピュータのネットワークを用いて実装してもよい。本明細書の目的のために、コンピュータは、1つ以上のプロセッサ、メモリ、ストレージ装置、及び、ネットワークリソースを有する装置である。コンピュータは、好適には、1つ以上の高性能CPU、及び、1G以上のメインメモリ、並びに、500Gbから2Tbのコンピュータ可読持続ストレージを有し、LINUX又はその変形等のオペレーティングシステムを実行する、サーバクラスのコンピュータである。ここに記載のコンテンツ管理システム110の動作は、ここに記載の機能を実行するために、ハードウェア、又は、コンピュータストレージにインストールされ、そのようなサーバのプロセッサにより実行されるコンピュータプログラムを介して制御することができる。これらのシステムは、ネットワークインタフェース及びプロトコル、データ入力のための入力装置、データの表示、印刷、あるいは他の提示のための出力装置を含む、ここに記載の動作に必要な他のハードウェア要素を有するが、ここには記載していない。同様に、例えば、ファイアウォール、負荷分散装置、フェイルオーバーサーバ、ネットワーク管理ツールその他のような従来要素は、システムの特徴を不明瞭にしないためにここには示していない。最後に、コンテンツ管理システム110の機能及び動作は、コンピュータシステム上での実装を要するほど十分複雑であり、人間の精神における単なる知的ステップにより実行することができるものではない。
【0089】
インタラクション同期モジュール616は、装置100をまたがったインタラクション情報の同期を管理する。装置100は、インタラクション同期モジュール616へインタラクション情報を提供する。インタラクション同期モジュール616は、受信したインタラクション情報の種類に基づいて、インタラクション情報に応答する。インタラクション同期モジュール616がプレゼンス情報を使用してある種類のインタラクション情報に対する応答を判定した場合、受信したプレゼンス情報の取り扱いが、以下にさらに説明するインタラクション情報の追加的な種類の取り扱いとともに、まず記載される。
【0090】
インタラクション同期モジュール616は、装置からプレゼンス情報を受信し、プレゼンスデータストア624内のプレゼンスレコードの一部としてそれを記憶し、コンテンツアイテムに関してユーザプレゼンスを判定する。各ユーザは、コンテンツアイテムに関するそのユーザと関連付けられたプレゼンスレコードを記述するユーザプレゼンスと関連付けられてもよく、それは、何らの特定ユーザの装置、プロセス、又は、ユーザインタフェース要素に対する参照を伴わなくてもよい。プレゼンス情報が特定のユーザインタフェース要素又はプロセスに関するプレゼンスを記述してもよい一方で、ユーザと関連付けられたこのプレゼンスはユーザプレゼンスと呼ぶ。ユーザプレゼンスの例には、編集中、閲覧中、オープン、及び、プレゼンスなしが含まれる。この例では、「編集中」のユーザプレゼンスは、コンテンツアイテムがそのコンテンツアイテムを修正したユーザインタフェース要素と関連付けられていることを示し、「閲覧中」のユーザプレゼンスは、コンテンツアイテムが装置100上のアクティブなユーザインタフェース要素と関連付けられていることを示す一方で、「オープン」のユーザプレゼンスは、ユーザインタフェース要素がコンテンツアイテムと関連付けられ、コンテンツアイテムを開いたが、まだコンテンツアイテムを閉じていないことを示す。様々な実施形態は、より多く又はより少ないユーザプレゼンスを使用してもよい。例えば、一実施形態は、「編集中」、「閲覧中」、及び、「プレゼンスなし」のみを有してもよく、その場合、コンテンツアイテムを開いたがアクティブなユーザインタフェース要素ではないユーザインタフェース要素は、システムの構成に従い、閲覧中またはプレゼンスなしとして扱われてもよい。
【0091】
図7は、一実施形態に係るユーザプレゼンスの順序付けを示す図である。
図7に示す順序付けは、各ユーザプレゼンスと関連付けられたコンテンツアイテムとのインタラクションの優先度を記載している。この例では、ユーザがコンテンツアイテムを編集中の場合、ユーザは、コンテンツアイテムを閲覧中の場合よりも、より高い優先度のコンテンツアイテムとのインタラクションを有し、同様に、アクティブなユーザインタフェース要素においてコンテンツアイテムを閲覧中であることは、開いた(オープンな)コンテンツアイテムを有するユーザインタフェース要素よりも高い優先度のインタラクションである。
【0092】
ユーザは、数個の装置にまたがって、並びに、数個のプロセス及びユーザインタフェース要素にまたがってコンテンツアイテムを開いてもよいため、順序付けは、そのユーザのユーザインタラクションの最も高い優先度を判定するために用いられる。これにより、ユーザプレゼンスは、ユーザと関連付けられた様々な可能な装置及びユーザインタフェース要素と関連付けられたユーザプレゼンスの最も高い優先度を反映することができる。このユーザプレゼンスは
図5Aに示すように表示のために装置100へ送信され、最も高い優先度のユーザインタラクションを示す単一のユーザプレゼンスが示されることを可能にする。
【0093】
図8は、コンテンツアイテムに関するプレゼンステーブル800におけるプレゼンスレコードを示す図である。プレゼンステーブル800は、例えば、プレゼンスデータストア624に記憶されてもよい。インタラクション同期モジュール616により受信されたプレゼンス情報は、プレゼンスデータストア624における記憶のためにプレゼンスレコードへ変換される。プレゼンスレコードがプレゼンスデータストア624に記憶された場合、プレゼンスレコードは、例えば、コンテンツアイテムの識別子を鍵として使用して、キー値ストレージに記憶してもよい。プレゼンステーブル800は、プレゼンスデータストア624により記憶されてもよいし、あるいは、インタラクション同期モジュール616がプレゼンスデータストア624から取得した情報を概念的に表してもよい。
【0094】
この例では、プレゼンスレコードは、コンテンツアイテム、装置ID、ユーザID(便宜上ここでは名前として表す)、ユーザインタフェース要素ID、プロセスID、及び、プレゼンス情報を識別する。各固有の装置ID、ユーザインタフェース要素ID、及び、プロセスIDの組み合わせは、プレゼンス情報と関連付けられている。この例では、プレゼンステーブル800において「プレゼンスなし」の装置は表されていない。プレゼンステーブル800に示すように、個々のユーザ(ジム)及び装置(例えば、装置ID 36abe87)は、複数のプレゼンスレコードと関連付けられてもよい。この実施形態のプレゼンステーブルは、インタラクション管理モジュール204により提供される様々なユーザ及び装置により動作される個別のプロセス及びユーザインタフェース要素に関する情報を記述する。
【0095】
プレゼンス情報がインタラクション同期モジュール616により受信された場合、インタラクション同期モジュール616は、プレゼンスデータストア624にアクセスして、既存のプレゼンスレコードが受信したプレゼンス情報の装置ID、プロセスID、及びユーザインタフェース要素IDに適合するか否かを識別する。この情報に適合するレコードが存在しない場合、新たなプレゼンスレコードが生成される。新たなユーザプレゼンスレコードの「ユーザID」は受信した情報に含まれてもよいし、あるいは、インタラクション同期モジュール616が他のモジュール又はデータストアに問い合わせて装置IDと関連付けられたユーザを識別してもよい。新たなプレゼンスレコードはプレゼンスデータストア624に記憶される。適合プレゼンスレコードがプレゼンスデータストア624において識別された場合、既存のプレゼンスレコードは、受信した情報に基づいて更新される。(例えば、関連するウィンドウが閉じられたために)コンテンツアイテムはユーザインタフェース要素にもう関連付けられていないことを受信した情報が識別する場合、プレゼンスレコードはプレゼンスデータストア624から削除されてもよい。
【0096】
この例では、インタラクション同期モジュール616はまた、プレゼンステーブル800にプレゼンスレコードを記憶し、特定のプレゼンスイベントが発生した場合に通知されるユーザの要求を反映する。様々な実施形態において、ユーザの通知要求は任意の適切な手法により記憶してもよい。通知要求は、インタラクション同期モジュール616によってインタラクション情報入力として通知要素520を介して受信され、その通知要求を受信する装置によりインタラクション同期モジュール616へ送信される。通知要求は、例えば、要求している装置や通知を要求するユーザ等の、通知要求を記述する十分な情報とともに記憶してもよい。要求を提供した装置をユーザがもう使用していない場合、ユーザは、代わりの装置を識別し、通知するために使用されてもよい。
【0097】
インタラクション同期モジュール616は、ユーザプレゼンステーブル810を生成して、コンテンツアイテムに関する現在のユーザプレゼンスを維持してもよい。他の実施形態において、現在のユーザプレゼンスは、ユーザプレゼンステーブル810を使用せずに記憶される。ユーザプレゼンステーブル810は、ユーザのユーザ装置と関連付けられたプレゼンスレコードを反映する、ユーザのプレゼンスを示す。ユーザプレゼンスは、例えば、プレゼンスインジケータ500に表示するために、装置100により用いられる。このようにして、ユーザは、数個の装置、プロセス、及び、ユーザインタフェース要素を用いてコンテンツアイテムとのインタラクションを行ってもよいが、最も高い優先度のインタラクションを反映するプレゼンスのみが他の装置100へ配信される。
【0098】
ユーザプレゼンスを判定するために、ユーザと関連付けられた各プレゼンスレコードからのプレゼンス情報が識別される。次に、最も高い優先度の順序付けを判定するために、ユーザプレゼンスの順序付けに対してプレゼンス情報が適合させられる。一例としてユーザのジョンについて、ジョンは3つのユーザプレゼンスと関連付けられている。プレゼンスレコードは、ジョンは1つのユーザ装置(ユーザインタフェース要素IDが1の装置9d7523c)のフォーカスされたウィンドウでコンテンツアイテムを閲覧中であり、装置36abe87の2つのユーザインタフェース要素では、コンテンツアイテムが1つ目では編集中であり、2つ目では「オープン」であることを示している。
図7に示す順序付けを適用すると、「編集中」がジョンと関連付けられている最も高い順序のプレゼンスジョンのユーザプレゼンスは、ユーザプレゼンステーブル810において「編集中」と設定されている。
【0099】
プレゼンスレコードが修正された場合、ユーザプレゼンスはユーザプレゼンスにおけるあらゆる変更を反映するように更新される。例えば、ジョンの「閲覧中」のプレゼンスレコードが削除された場合、「編集中」のプレゼンスレコードが残存しているため、ジョンのユーザプレゼンスは変更されない。同様に、ジョンの「編集中」のプレゼンスレコードが「オープン」に変化した場合、ジョンと関連付けられたプレゼンスレコードの次に高い優先度のプレゼンスが反映されて、ジョンのプレゼンス状態は「閲覧中」に変化する。なお、「閲覧中」のプレゼンスレコードは、他の装置ID(9d7523c)と関連付けられていることに留意されたい。したがって、ジョンのプレゼンスは、数個の装置、プロセス、及び、ユーザインタフェース要素をまたがって正確に反映されている。
【0100】
図9は、一実施形態に係るプレゼンスレコードの修正とユーザプレゼンスの装置100の更新を行うプロセスを示す図である。一実施形態において、このプロセスは、インタラクション同期モジュール616によって行われてもよい。プレゼンス情報は、インタラクション同期モジュール616によって受信される(900)。インタラクション同期モジュール616は、前述のように、既存のプレゼンスレコードを修正し、あるいは、新たなプレゼンスレコードを追加して、プレゼンステーブル800のプレゼンスレコードを更新する(910)。次に、インタラクション同期モジュール616は、更新されたプレゼンスレコードと関連付けられたユーザのユーザプレゼンスを判定し、ユーザプレゼンスが更新されたプレゼンスレコードによって変更されたか否かを判定する(920)。例えば、ユーザプレゼンスにおける変化は、新たなユーザプレゼンスを判定し、その新たなユーザプレゼンスをユーザプレゼンステーブル810に記憶されたユーザプレゼンスと比較することにより判定してもよい。ユーザプレゼンスが変更されていない場合、一実施形態において、プロセスは終了する。ユーザプレゼンスが変化した場合、ユーザプレゼンステーブル810において、ユーザプレゼンスは更新される(930)。
【0101】
一実施形態において、インタラクション同期モジュール616は、装置のユーザインタフェース要素が閾値時間内にプレゼンス情報を提供したか否かを判定する。ユーザインタフェース要素がプレゼンス情報を提供しなかった場合、インタラクション同期モジュール616は、装置からプレゼンス情報を要求するか、又は、関連するユーザインタフェース要素はのプレゼンスは終了した(「プレゼンスなし」)と考えてもよい。したがって、インタラクション同期モジュール616は、最近のプレゼンス情報を提供した各ユーザインタフェース要素に関する心拍を「予期」してもよい。閾値時間内にプレゼンス情報が全く受信されなかった場合は、「プレゼンスなし」のプレゼンスがそのユーザインタフェース要素に対して生成されてもよい。
【0102】
次に、インタラクション同期モジュール616は、変更されたユーザプレゼンスに関して更新する装置を識別する
(940)。一実施形態において、コンテンツアイテムと同期されるあらゆる装置が更新される。他の実施形態において、プレゼンステーブル810は、コンテンツアイテムと関連付けられたプレゼンスを有する装置を判定するために参照される。さらに、インタラクション同期モジュール616は、ユーザプレゼンスにおける変化により何らかの通知がトリガされたか否かを判定する。記憶された通知がアクセスされ、通知に対する状態がコンテンツアイテムに関する変更されたプレゼンスと比較される。識別された装置を用いて、インタラクション同期モジュール616は、更新されたプレゼンス情報を識別された装置へ送信する(950)。1つの構成において、ユーザプレゼンスは、識別された装置へ提供される。他の構成において、付加的な情報もまた提供されてもよい。このようにして、ユーザプレゼンス情報は、例えば、プレゼンスインジケータにおいて、あるいは、通知要求に応じて、ユーザに実際に表示されてもよいユーザプレゼンスに作用する場合にのみプレゼンス情報を配信するように、コンテンツ管理システム110によって管理される。
【0103】
装置100によって提供される付加的なインタラクション情報もまた、インタラクション同期モジュール616によって処理される。そのようなインタラクション情報には、
図5Bを参照して説明したように、ユーザのプレゼンスが変化した婆に通知される要求、バージン又はメタデータの情報の要求、チャットメッセージ、その他が含まれる。前述のように、通知要求は記憶され、プレゼンス状態が変化した場合に通知する装置を判定するために使用されてもよい。バージョンまたはメタデータが要求されると、インタラクション同期モジュール616は、そのようなバージョン及びメタデータの情報をコンテンツストレージ620から取得する。コンテンツストレージ620に関して説明したように、インタラクション同期モジュール616はバージョン情報を提供してもよく、様々なコンテンツアイテムのバージョンに関して変更する。コンテンツアイテムに対するチャットメッセージが受信された場合、インタラクション同期モジュール616は、プレゼンスデータストア624に問い合わせて、コンテンツアイテムに対する記憶されたプレゼンスレコードと関連付けられた装置IDを識別し、これらの識別された装置へチャットメッセージを配信する。
【0104】
コンテンツアイテムへの変更が装置によってなされた場合、プレゼンスレコードは、コンテンツアイテムとインタラクションを行っている個別のユーザインタフェース要素を知的かつ円滑に更新するために用いられてもよい。コンテンツアイテムに対するそのような変化には、(例えば、他のフォルダまたはディレクトリへの)コンテンツアイテムの移動、コンテンツアイテムの削除、及び、コンテンツアイテムの新バージョンのコミットが含まれる。
【0105】
図10は、プレゼンス情報を使用してコンテンツアイテムに対する修正を同期させるプロセスのフローチャートを示す図である。様々な実施形態に従い、このプロセスは、インタラクション同期モジュール616又はクライアントアプリケーション200によって実行されてもよい。コンテンツアイテムに対する変更が受信された場合(1000)、影響を受けたコンテンツアイテムに対するプレゼンスレコードがアクセスされて(1010)、各ユーザインタフェース要素と関連付けられたプレゼンス情報が判定される(1020)。ユーザインタフェース要素のプレゼンスとコンテンツアイテムへの変更に依存して、アクションが実行するユーザインタフェース要素に対するクライアントアプリケーションへ送信され、ユーザインタフェース要素をコンテンツアイテムへの変更に調和させる。
【0106】
ユーザインタフェース要素が「オープン(開く)」プレゼンスと関連付けられていた場合(すなわち、ユーザインタフェース要素はコンテンツアイテムとのインタラクションを行ったが、ディスプレイにおいてアクティブなユーザインタフェース要素ではない)、ユーザインタフェース要素を制御するプロセスへ送信されたアクションは、典型的には、コンテンツアイテムの変化をシームレスに統合するようにプロセスに命令する(1030)。例えば、コンテンツアイテムの新バージョンがコミットされた場合、プロセスは、閉じて(クローズ)、自動的に新たな変更されたコンテンツアイテムを再度開くように命令される。コンテンツアイテムが移動された場合、プロセスは、そのコンテンツアイテムを閉じて、新たな位置でコンテンツアイテムを再度開くように命令されてもよい。コンテンツアイテムが削除された場合、プロセスはコンテンツアイテムを閉じるように命令されてもよい。プレゼンスレコードがユーザインタフェース要素は閲覧中であることを識別した場合(例えば、装置上で現在アクティブなユーザインタフェース要素)、ユーザは、「オープン」のプレゼンス情報について説明したアクションを実行する前に通知されてもよい(1040)。さらに、ユーザはコンテンツアイテムに対する一定の変化が通知され、さらなるアクションを実行することが促されてもよい。ユーザは、コンテンツアイテムが他のフォルダに移動されたかどうかを気にしないかもしれないが、ユーザは、コンテンツアイテムの削除又は修正を同期する前にコンテンツアイテムの現バージョンを保存するオプションを好むかもしれない。このような状況におけるアクションには、例えば、補助的なユーザインタフェースを介して、修正の同期を継続するか否か、現在のコンテンツアイテムを保存するか否か、あるいは、変更せずに現在のコンテンツアイテムの閲覧を継続するか否かの指示をユーザに求めることが含まれてもよい。
【0107】
ユーザインタフェース要素がコンテンツアイテムの編集中と関連付けられていることをプレゼンスレコードが示した場合(例えば、ユーザインタフェース要素がコンテンツアイテムの未保存の修正と関連付けられている場合)、アクションは、ユーザが行った全ての編集を含むコンテンツアイテムを保存するか、あるいは、コンテンツアイテムの未編集のバージョンを保存するためのオプションをユーザに提示してもよい(1050)。例えば、変更によりコンテンツアイテムが削除された場合、アクションには、修正されたコンテンツアイテムを保存するオプションの提示を含む。変更によりコンテンツアイテムが移動された場合、アクションは、編集済のコンテンツアイテムをコンテンツアイテムの新たな位置と同期することを支援してもよい。例えば、アクションは、コンテンツアイテムのあらゆる修正を保存するようにクライアントアプリケーション200に対して命令してもよい。
【0108】
変更によりコンテンツアイテムの新バージョンがコミットされてユーザインタフェース要素がコンテンツアイテムの修正と関連付けられた場合(例えば、編集中プレゼンス)、アクションは、新バージョンをユーザに通知し、(既存のコンテンツアイテムとのバージョニングの衝突を避けるために)他の文書へのユーザ変更の保存又はユーザ変更の破棄をユーザに促してもよい。アクションはまた、新たにコミットされたバーションを、ユーザインタフェース要素においてなされた修正とマージすることを試みてもよい。そのようなマージには、コンテンツアイテムへのコミットされた変更を識別し、コミットされた変更をユーザインタフェース要素のコンテンツアイテムに組み込むことを試みるようにユーザ装置に命令することが含まれてもよい。
【0109】
図11は、一実施形態に係るインタラクション情報のフォルダレベル表示を示す図である。
図11に示す実施形態において、装置100のユーザインタフェースモジュール202は、同期されたコンテンツアイテムをナビゲートするためのブラウザ1100をユーザに表示する。前述のように、同期されたコンテンツアイテムは、同期されたコンテンツアイテムは、個別のフォルダ又は共有フォルダと関連付けられてもよい。ブラウザ1100はコンテンツ管理システム110と同期されたコンテンツアイテムを表示し、同期されたコンテンツアイテムとそのようなコンテンツアイテムの編成をユーザがナビゲートすることを可能にする。
図11に示す例において、ブラウザ1100は、共有フォルダに対するコンテンツアイテムのコレクションを示している。このコレクションのビュー(例えば、フォルダ)はまた、ブラウザ1100により表示されるコンテンツアイテムの一定の「編成」とも呼ばれる。共有フォルダの編成は階層的であってもよく、例えば、コレクション内の数個の編成要素を含んでもよい。各編成要素は、編成内のコンテンツアイテムをさらに編成するコンテンツアイテムである。例えば、編成要素の1つの種類はフォルダであり、フォルダは、そのフォルダ内に1つ以上のフォルダを含んでもよい。例えば、コレクション、集合、プレイリスト、あるいはコンテンツアイテムを編成及び管理する他の任意の好適なグルーピングなどの、他の編成要素を用いてもよい。ユーザは、編成要素を選択し、編成構造をナビゲートすることにより、コンテンツアイテムの編成を階層的にナビゲートしてもよい。ブラウザ1100は、ブラウザ1100に示されたコンテンツアイテムに関するインタラクション情報を表示する。このようにして、ユーザは共有ないし同期フォルダをナビゲートして、ユーザはコンテンツアイテムとのインタラクションを閲覧してもよい。以下にさらに説明するように、これによりユーザは、共有フォルダ及びコンテンツアイテムとの現在及び最近のインタラクションを識別することができる。
【0110】
一実施形態において、インタラクション情報がクライアントにより受信された場合、クライアントは受信したインタラクション情報を共有フォルダ、任意の関連する編成、及び、編成要素と関連付ける。例えば、コンテンツアイテムは、特定の共有フォルダ内のフォルダAと関連付けられてもよい。インタラクション情報は、コンテンツアイテム、共有フォルダ、及び、フォルダAと関連付けられてもよい。
図11に示すように、ブラウザ1100は、編成要素を含む数個のコンテンツアイテムを表示してもよい。この例では、ブラウザ1100は、数個のフォルダ編成要素、並びに、「プロジェクトタスクリスト」及び「第1四半期レベニューレポート」のコンテンツアイテムを示している。
【0111】
共有コンテンツアイテムについてのインタラクション情報及び他の情報は、編成要素を含む各コンテンツアイテムに対して状態インジケータ(具体的には、状態インジケータ1110A〜1110F、一般に、状態インジケータ1110)を生成するために解析される。状態インジケータは、コンテンツアイテム又は編成要素に対するインタラクション情報又は同期状態を表示する視覚情報を提供する。この例では、状態インジケータ1110は、関連アイテム(コンテンツアイテム又は編成要素)が最新版であること、現在更新又は修正を受けていること、あるいは、プレゼンス情報と関連付けられていることを示してもよい。編成要素と関連付けられた状態インジケータは、編成要素に包含されるコンテンツアイテム及びさらなる編成要素を識別し、編成要素に包含されるアイテムの状態を表示することにより、判定されてもよい。
【0112】
この例では、状態インジケータ1110Aは、フォルダ「納税申告書」がコンテンツ管理システム110と現在同期されていることを示している。フォルダ「納税申告書」は、他のユーザに共有されていない編成要素である。
【0113】
状態インジケータ1110Bは、フォルダ「ミュージック」が修正を現在受信しており、この編成要素内のコンテンツアイテムの状態をコンテンツ管理システム110と同期中であることを示している。
【0114】
状態インジケータ1110Cは、フォルダ「共有家計費」がコンテンツ管理システム110と現在同期されていることを示している。このフォルダは、「共有フォルダ」の指定により示されているように、他のユーザにより共有され、同期されている。
【0115】
状態インジケータ1110Dは、「+8」により示されるように、フォルダ「四半期レベニューレポート」が、8人の他のユーザに関するプレゼンス情報と現在関連付けられていることを示している。この実施形態では、編成要素又はコンテンツアイテムに関するプレゼンス情報を有するユーザ数が、カウンタにより指定される。「四半期レベニューレポート」に関するプレゼンス情報は、編成アイテムにより編成されたコンテンツアイテム及び他の編成アイテムと関連付けられる。例えば、6人のユーザが、「四半期レベニューレポート」のコンテンツアイテムに関するプレゼンス情報と関連付けられてもよい一方で、2人のユーザが「四半期レベニューレポート」のさらなる編成要素と関連付けられてもよい。すなわち、2人のユーザがコンテンツアイテムとのインタラクションを行っていてもよい「四半期レベニューレポート」の中に、さらなるフォルダが存在してもよい。ユーザは「四半期レベニューレポート」を(ブラウザにより表示された編成としてではなく)1つの編成要素として閲覧しているため、ブラウザは、「四半期レベニューレポート」内のコンテンツアイテムと関連付けられた連結されたインタラクション情報の情報を表示する。ユーザは、編成要素それ自体をブラウズするために、さらには、他のユーザにより閲覧さもなくばインタラクション(例えば、編集)が行われているコンテンツアイテムを識別するために、編成要素を選択してもよい。
【0116】
同様に、状態インジケータ1110Eは、「+2」により示されるように、フォルダ「効率改善プロジェクト」が、2人の他のユーザに関するプレゼンス情報と現在関連付けられていることを示している。
【0117】
状態インジケータ1110Fは、コンテンツアイテム「プロジェクトタスクリスト」が、アイコンが表示されているユーザに対するプレゼンス情報と関連付けられていることを示している。そのような情報を表示する様々な方法において、ユーザのアイコンが表示されてもよいし、又は、状態インジケータが+1あるいは他の個別化されていないインジケータを示してもよい。このようにして、ブラウザ1100において、ユーザは、ブラウザのビューと関連付けられた様々なコンテンツアイテム及び編成要素に関するインタラクション情報を閲覧してもよく、これにより、ユーザは、どのアイテム又は編成要素が他のユーザによりインタラクションを行われているかを一見して把握することができる。
【0118】
状態インジケータ1110に加えて、ブラウザ1100はまた、様々な状態インジケータ1110と関連付けられたアクティブユーザリスト1120を表示してもよい。閲覧する個別のユーザを選択するために、ユーザは、フィルタアイコン1150とともに、アクティブユーザリスト1120とインタラクションを行ってもよい。例えば、ユーザは、アクティブユーザリスト1120のユーザ「ジョン」はアクティブであり、プレゼンス情報と関連付けられていることを理解する。ユーザは、「ジョン」を選択するためにフィルタ1150を選択してもよく、ユーザインタフェースモジュール202により管理されたブラウザは、表示されているインタラクション情報を「ジョン」のみに関係する情報にフィルタリングする。
【0119】
加えて(あるいは、さもなければ)、ユーザは、アクティブユーザリスト1120のユーザを選択して、ユーザがインタラクションを行っている一定のコンテンツアイテムを識別してもよい。具体的には、そのユーザと関連付けられているプレゼンス情報が識別され、結果生じるコンテンツアイテムが表示される。これにより、たとえ他のユーザが、編成階層においてサブ・サブ・サブフォルダ又は他の深い編成要素におけるコンテンツアイテムについてアクティブである場合であっても、そのユーザがアクティブなコンテンツアイテムをユーザが素早く識別することが可能となるようにしてもよい。したがって、閲覧中のユーザは、コンテンツアイテムの編成内のどこで他のユーザがアクティブであるかを素早く「発見」してもよい。
【0120】
ブラウザ1100はまた、ユーザに表示されているビュー、及び、現在表示されている編成と関連付けられている様々なコンテンツアイテム及び編成要素に関するアクティビティフィード1130をも表示する。アクティビティフィードは、
図5A〜
図5Dに関して議論したコンテンツアイテムのユーザのビューに関して説明したように、あらゆるインタラクション情報を表示してもよい。例えば、アクティビティフィード1130Aは、いつユーザのプレゼンスが変化したか(例えば、コンテンツアイテムを開いた又は閉じた)を表示する。アクティビティフィードアイテム1130Bは、ユーザがファイルの新バージョンを保存したことを示し、
図10に関して前述したように、応答を選択するようにユーザに促している。ブラウザ1100において、コンテンツアイテムへの修正は、その修正がローカルコンテンツデータストア208への同期に成功するまで、アクティビティフィード1130に表示されなくてもよい。
【0121】
アクティビティフィードアイテム1130Cにより示されているように、一定の編成アイテム(例えば、フォルダ「効率改善プロジェクト」)又は一定のコンテンツアイテム(例えば、コンテンツアイテム「Project Goals.txt」)に関するチャットメッセージがアクティビティフィード1130に表示されている。同様に、アクティビティフィードアイテム1130D、1130Eに示すように、編成アイテム内のコンテンツアイテムに関するユーザのプレゼンスアクティビティにおける変化もまた表示されてもよい。
【0122】
最後に、アクティビティフィード1130はまた、共有フォルダ、コンテンツアイテム、又は、編成アイテムに関するメタデータに対する様々な変化をユーザに通知してもよい。例えば、コンテンツアイテムへの修正、削除、若しくは、追加、あるいは、共有フォルダへの新ユーザの追加(1130F)などである。ユーザはまた、チャット要素1140において、チャットメッセージ、又は、他のインタラクション情報を入力してもよい。このメッセージはユーザの編成ビューと関連付けられており、この例では、「マイワークスペース」共有フォルダと関連付けられている。これにより、ユーザは、コンテンツアイテム若しくはフォルダ、あるいは、ブラウザ1100それ自身からの共有フォルダについて通信することができる。
【0123】
このようにして、ブラウザ1100は、コンテンツアイテムのネイティブアプリケーションの入力をユーザに強いることなく、様々なコンテンツアイテム及び編成要素に関する詳細なプレゼンス及びインタラクションの情報を表示し、ユーザがコンテンツアイテムについての変化及びデータを一見して閲覧することを可能にする。
【0124】
したがって、各ユーザインタフェース要素と関連付けられたプレゼンスは、コンテンツアイテムが修正された場合のユーザ体験を円滑にするために用いられる。そこで、ユーザがユーザインタフェース要素を閉じる前に、ユーザはコンテンツアイテム通知を通知されてもよく、これにより、ユーザがそれを閉じた直後の同期によってコンテンツアイテムが変化又は削除された場合にユーザが驚く可能性を低減する。
【0125】
前述の本発明の実施形態は例示の目的のために提示されたものであり、網羅的であることや、本発明を開示されたとおりの形態に限定することを目的とするものではない。関連分野の当業者は、上記開示を踏まえて多数の修正及び変形が可能であることを理解することができる。
【0126】
本明細書のいくつかの部分は、情報に対する動作のアルゴリズム及び記号表現の観点から本発明の実施形態を説明している。これらのアルゴリズム的な記述及び表現は、データ処理分野の当業者により、その業績を他の当業者に効率的に伝えるために一般に用いられている。これらの動作は、機能的、計算的、あるいは、論理的に記述される一方で、コンピュータプログラム、あるいは、同等の電子回路、マイクロコードその他によって実装されることが理解される。さらに、これらの動作の配置をモジュールとして参照することは、一般性を失わずに、便利な場合があることも証明されている。上述の動作及び関連付けられたモジュールは、ソフトウェア、ファームウェア、ハードウェア、又は、これらの任意の組み合わせにより実施してもよい。
【0127】
本明細書に記載の任意のステップ、動作、あるいは、プロセスは、1つ以上のハードウェアまたはソフトウェアのモジュールの、単独、又は、他の装置との組み合わせを用いて、実行ないし実装してもよい。一実施形態において、ソフトウェアモジュールは、コンピュータにより実行可能な、コンピュータプログラムコードを含むコンピュータ可読記憶媒体を備えたコンピュータプログラム製品を用いて実装される。
【0128】
本発明の実施形態はまた、上述の動作を実行する装置にも関連してもよい。この装置は、所要の目的に合わせて特別に構成してもよいし、コンピュータに記憶されたコンピュータプログラムによって選択的に起動ないし再構成される汎用コンピュータ装置を備えてもよいし、あるいは、これらの両方でもよい。このようなコンピュータプログラムは、コンピュータシステムバスに結合してもよい、一時的でない有形のコンピュータ可読記憶媒体、又は、電子命令を記憶するのに適した任意の種類のメディアに記憶してもよい。さらに、本明細書で参照された任意のコンピュータシステムは、単一のプロセッサを含んでもよいか、あるいは、計算性能の増大のために複数プロセッサのデザインを採用しているアーキテクチャであってもよい。
【0129】
本発明の実施形態はまた、前述のコンピュータプロセスによって製作された製品に関してもよい。このような製品は計算プロセスの結果として生じた情報を備えてもよく、その情報は一時的でない有形のコンピュータ可読記憶媒体に記憶され、本明細書に記載のコンピュータプログラム製品又は他のデータの組み合わせの任意の実施形態を含んでもよい。
【0130】
最後に、本明細書の使用言語は、主に可読性や教育上の目的のために選択されたものであり、発明対象を描写ないし制限するために選択されたものではない。したがって、発明の技術的範囲は、発明の詳細な説明ではなく、むしろ本明細書が基づく特許出願において発行されている任意の請求項によって定められることが意図されている。そのため、発明の実施形態の開示は実例であることが意図されており、以下の特許請求の範囲に記載の発明の技術的範囲を制限することを意図したものではない。