システム概要
図1は、コンテンツ管理システム100と、協働コンテンツ管理システム130と、クライアントデバイス120A、120B、120C(総称してまたは個々に「120」)と、を含むシステム環境を示す。コンテンツ管理システム100は、コンテンツアイテムをひとつ以上のクライアントデバイス120と共有する機能と、コンテンツ管理システム100とひとつ以上のクライアントデバイス120との間でコンテンツアイテムを同期する機能と、を提供する。
コンテンツ管理システム100によって保持されるコンテンツは、ドキュメント(文書)や協働コンテンツアイテムやテキストファイルや音声ファイルやイメージファイルやビデオファイルやウェブページや実行可能ファイルやバイナリファイルや他のコンテンツアイテムを参照するプレースホルダファイルなどの任意のタイプのコンテンツアイテムを含みうる。ある実装では、コンテンツアイテムは他のコンテンツアイテムの一部であってもよく、例えば、あるドキュメントに含まれるイメージがそうである。コンテンツアイテムはまた、フォルダや名前空間やプレイリストやアルバムなどの、他のコンテンツアイテムを一緒にグループ化する集合体を含んでもよい。コンテンツ管理システム100によって保持されるコンテンツは、フォルダやテーブルなどのある構成で、または他のデータベース構造(例えば、オブジェクト指向、キー/値など)で、整理されてもよい。
ある実施の形態では、コンテンツ管理システム100によって保持されるコンテンツは、ワードプロセッサやビデオおよびイメージエディタやデータベース管理システムやスプレッドシートアプリケーションやコードエディタなどの第三者アプリケーションを用いることにより生成されたコンテンツアイテムを含み、そのようなコンテンツアイテムはコンテンツ管理システム100とは独立している。
ある実施の形態では、コンテンツ管理システム100によって保持されるコンテンツは、協働コンテンツ管理システム130によって提供される協働コンテンツアイテムエディタを用いて生成された、協働コンテンツアイテムなどのコンテンツアイテムを含む。種々の実装では、協働コンテンツアイテムは、コンテンツ管理システム100と共に、またはコンテンツ管理システム100の外で、協働コンテンツアイテム管理システム130によって保持されてもよい。協働コンテンツアイテムエディタは、ユーザが同時に協働コンテンツアイテムを生成および編集し、同時に協働コンテンツアイテムにコメントし、同時に協働コンテンツアイテム内のタスクを管理することができるプラットフォームでありうる。
ユーザは、コンテンツ管理システム100にアカウントを生成し、クライアントデバイス120からコンテンツ管理システム100にそのようなコンテンツを送信することによってコンテンツ管理システム100にコンテンツを格納してもよい。ユーザにより提供されユーザアカウントに関連付けられたコンテンツは種々の特権を有しうる。例えば、特権は、コンテンツアイテムのタイトルを見る許可、コンテンツアイテムの他のメタデータ(例えば、位置データ、アクセス履歴、バージョン履歴、生成/変更日付け、コメント、ファイル階層など)を見る許可、コンテンツアイテムの内容を読み出す許可、コンテンツアイテムのメタデータを変更する許可、コンテンツアイテムの内容を変更する許可、コンテンツアイテムにコメントする許可、コンテンツアイテムに対する他人のコメントを読み出す許可、他のユーザに対してコンテンツアイテム許可を与えたり除いたりする許可、を含みうる。
クライアントデバイス120は、ネットワーク110を通じて、コンテンツ管理システム100および協働コンテンツ管理システム130と通信する。ネットワークはデータ伝送に適した任意の通信ネットワークであってもよい。ある実施の形態では、ネットワーク110はインターネットであり、標準の通信技術および/またはプロトコルを用いる。したがって、ネットワーク110は、イーサネット、802.11、マイクロ波アクセスのための世界的互換性(WiMAX)、3G、4G、デジタル加入者ライン(DSL)、非対称移送モード(ATM)、インフィニティバンド、PCIエキスプレスアドバンスドスイッチングなどの技術を用いるリンクを含んでもよい。同様に、ネットワーク110で用いられるネットワーク用プロトコルは、マルチプロトコルラベルスイッチング(MPLS)、トランスミッションコントロールプロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキストトランスポートプロトコル(HTTP)、シンプルメールトランスファープロトコル(SMTP)、ファイルトランスファープロトコル(FTP)などを含んでもよい。ネットワーク110を介して交換されるデータは、ハイパーテキストマークアップ言語(HTML)、拡張マークアップ言語(XML)、ジャバスクリプトオブジェクトノーテーション(JSON)などを含む技術および/またはフォーマットを用いて表されてもよい。加えて、リンクのうちの全てまたはいくつかは、セキュアソケットレイヤ(SSL)、トランスポートレイヤセキュリティ(TLS)、仮想専用ネットワーク(VPN)、インターネットプロトコルセキュリティ(IPsec)などの従来の暗号化技術を用いて暗号化されてもよい。他の実施の形態では、エンティティは上述のものに代えてまたは加えて、慣用のおよび/または専用のデータ通信技術を用いる。
ある実施の形態では、コンテンツ管理システム100および協働コンテンツ管理システム130は単一のシステムに統合される。そのシステムは、システム100および130について本明細書で説明される機能を提供するよう構成されたひとつ以上のサーバを含んでもよい。
クライアントデバイス
図2は、ある実施の形態に係る、クライアントデバイス120のコンポーネントのブロック図を示す。クライアントデバイス120は、総じて、コンテンツ管理システム100およびクライアントデバイス120のユーザと通信するためのデバイスおよびモジュールを含む。クライアントデバイス120は、情報をユーザに提供するディスプレイ210を含み、あるクライアントデバイス120はタッチスクリーンを含む。クライアントデバイス120はまた、ネットワーク110を介してコンテンツ管理システム100と通信するためのネットワークインタフェース220を含む。重要でない、例えば、1つ以上のコンピュータプロセッサ、ローカルの固定メモリ(RAM及びROM)、及び、オプションとしての着脱可能メモリ(例えば、SDカード)、電源、及び音声−ビデオ入力といった、クライアントデバイス120の他の構成要素は示されていない。
ある実施形態では、クライアントデバイス120は、カメラ230及びロケーションモジュール240などの、追加的な構成要素を含む。ロケーションモジュール240は、例えば、全地球測位衛星(GPS)信号、携帯電話基地局の三角測量、又は他の方法を用いてクライアントデバイス120の位置を決定する。ロケーションモジュール240は、位置データを取得し、コンテンツアイテムについてのメタデータに位置データを追加するために、クライアントアプリケーション200によって使用されてよい。
クライアントデバイス120は、クライアントデバイスを動作させ、コンテンツ管理システム100にアクセスするための様々なタイプのコンポーネントおよびモジュールを維持する。ソフトウエアモジュールは、オペレーティングシステム250及びオプションでコンテンツアイテムエディタ270を含む。協働コンテンツアイテムエディタ270は、テキストドキュメントやコードファイルや混合メディアファイル(例えば、テキストおよびグラフィック)やプレゼンテーションなどの協働コンテンツアイテムを生成、閲覧および変更するよう構成される。各デバイス上のオペレーティングシステム250は、ローカルのファイル管理システムを提供し、コンテンツ管理システムクライアントアプリケーション200及びコンテンツアイテムエディタ270などの、様々なソフトウェアモジュールを実行する。アドレス帳290は、名前、電話番号、会社、電子メールアドレス、物理アドレス、ウェブサイトURLなどの、ユーザの連絡先についての情報を格納する。
クライアントデバイス120は、様々な方法で、コンテンツ管理システム100および協働コンテンツ管理システム130にアクセス可能である。クライアントデバイス120は、コンテンツ管理システムクライアントアプリケーション200などのネイティブアプリケーションまたはソフトウエアモジュールを通じてこれらのシステムにアクセスしてもよい。クライアントデバイス120はまた、ウェブブラウザ260を通じてコンテンツ管理システム100にアクセスしてもよい。代替として、クライアントアプリケーション200は、コンテンツ管理システム100へのアクセスと、オペレーティングシステム250によって提供されるローカルファイル管理システムとを統合してもよい。コンテンツ管理システム100へのアクセスがローカルファイル管理システムに統合された場合、コンテンツ管理システム100において保守されるファイル組織化スキームは、オペレーティングシステム250とクライアントアプリケーション200との共同により、ローカルファイル構成物として表される。
クライアントアプリケーション200は、コンテンツ管理システム100および協働コンテンツ管理システム130へのアクセスを管理する。クライアントアプリケーション200は、クライアントアプリケーション200によってアクセスされるコンテンツへのインタフェースを生成する、ユーザインタフェースモジュール202を含み、この機能を実行する1つの手段である。生成されたインタフェースはディスプレイ210によってユーザへ提供される。クライアントアプリケーション200は、コンテンツ管理システム100のコンテンツストレージからアクセスされたコンテンツを、ローカルコンテンツ204に格納してもよい。ここではクライアントアプリケーション200内のものとして示されるが、ローカルコンテンツ204は、不揮発性ストレージ内にクライアントデバイス120のための他のデータと共に格納されてもよい。ローカルコンテンツ204がこのように格納される場合、コンテンツは、クライアントアプリケーション200がコンテンツ管理システム100と通信中でないときに、ユーザ及びコンテンツアイテムエディタ270のような他のアプリケーション又はモジュールに利用可能である。コンテンツアクセスモジュール206は、ローカルコンテンツ204への更新を管理し、クライアントデバイス120によって修正されたコンテンツをコンテンツ管理システム100上に維持されるコンテンツと同期するために、コンテンツ管理システム100と通信するものであり、この機能を実行するひとつの手段である。クライアントアプリケーション200は、スタンドアローンのアプリケーション、アプリケーションプラグイン、又はブラウザ拡張などの様々な形式をとってよい。
コンテンツ管理システム
図3は、ある実施の形態に係る、コンテンツ管理システム100のブロック図を示す。種々のコンテンツ管理サービスをより容易にするために、ユーザはコンテンツ管理システム100にアカウントを生成してもよい。アカウント情報はユーザアカウントデータベース316に維持されてもよく、この機能を実行するためのひとつの手段である。ユーザアカウントデータベース316は、登録ユーザについてのプロファイル情報を保持してもよい。ある場合には、ユーザプロファイルの個人情報はユーザ名および/または電子メールアドレスのみである。しかしながら、コンテンツ管理システム100はまた、パスワード復活情報や属性情報や支払い情報や他の詳細などの追加的なユーザ情報を受け入れるよう構成されてもよい。各ユーザは、ユーザIDおよびユーザ名に関連付けられる。簡便化を目的として、本明細書において、ユーザに「関連付け」られているコンテンツアイテムや他のデータなどの情報への参照は、コンテンツアイテムと、ユーザのユーザ識別子の上記形態のいずれかと、の間の関連を意味するものとして理解される。同様に、コンテンツアイテムおよびユーザに対するデータ処理動作は、コンテンツアイテムIDおよびユーザIDなどの対応する識別子に対して行われる動作として理解される。例えば、ユーザIDとコンテンツアイテムIDとをリンクさせる情報をテーブル、ファイル、または他のストレージフォーマットで保持することにより、ユーザをコンテンツアイテムに関連付けることができる。例えば、コンテンツアイテムIDにより整理されるデータベーステーブルは、そのコンテンツアイテムに関連付けられた各ユーザのユーザIDをリストする列を含んでもよい。他の例として、各ユーザIDについて、ファイルはそのユーザに関連付けられたコンテンツアイテムIDの集合をリストしてもよい。他の例として、単一のファイルは、個々のユーザとコンテンツアイテムとの関連を表す<ユーザID、コンテンツアイテムID>などのキー値ペアをリストしてもよい。同じタイプのメカニズムを用いることにより、ユーザと、コメントやスレッドやテキスト要素やフォーマット化属性などと、を関連付けてもよい。
ユーザアカウントデータベース316は、有料/無料の別などのアカウントタイプや、ファイル利用履歴などのユーザ毎の利用情報や、許されている最大ストレージスペースや、利用されているストレージスペースや、コンテンツストレージ位置や、セキュリティ設定や、個人構成設定や、コンテンツ共有データなどのアカウント管理情報を含んでもよい。アカウント管理モジュール304は、ユーザアカウントデータベース316におけるユーザアカウントの詳細を更新および/または取得するよう構成されてもよい。アカウント管理モジュール304は、コンテンツ管理システム100の他の任意の数のモジュールと相互に作用するよう構成されてもよい。
アカウントは、そのアカウントに関連付けられたひとつ以上のクライアントデバイスから、協働コンテンツアイテムや音声ファイルやビデオファイルなどのコンテンツアイテムを格納するために使用されてもよい。コンテンツアイテムは複数のユーザおよび/またはユーザアカウントと共有されてもよい。ある実装では、コンテンツアイテムを共有することは、共有モジュール310を用いて、コンテンツアイテムを二以上のユーザアカウントと関連付け、その関連付けられたユーザアカウントのうちのひとつで認証されたユーザがそのコンテンツアイテムへの指定されたアクセスレベルを有するようにユーザ権限を提供することを含んでもよい。すなわち、コンテンツアイテムは様々なタイプ、能力、オペレーティングシステム等の複数のクライアントデバイスの間で共有可能である。コンテンツアイテムはまた、様々なタイプのユーザアカウントの間で共有可能である。
上述の通り、個々のユーザには、共有されるコンテンツアイテムに対する異なるアクセス権限が割り当てられてもよい。ある場合、コンテンツアイテムに対するユーザの権限は、そのユーザについて明示的に設定されてもよい。ユーザの権限はまた、ユーザに関連付けられたタイプまたはカテゴリ(例えば、管理者ユーザまたはマネジャーの高度な権限)、ユーザのグループへの所属または機構の一部として特定されること(例えば、特定のチームの全てのメンバに対する指定された権限)、および/またはコンテンツアイテムへのユーザのアクセスのメカニズムまたはコンテキスト(例えば、ユーザがどこにいるか、ユーザがどのネットワーク上にいるか、ユーザがアクセスしているプログラムまたはAPIのタイプは何か、ユーザがコンテンツアイテムへのリンクをクリックしたか否か、等)、に基づいて設定されてもよい。加えて、デフォルトで、ユーザ、ユーザタイプ/グループ、または種々のアクセスメカニズムおよびコンテキストについて権限を設定してもよい。
ある実装では、共有コンテンツアイテムはユーザアカウントへの認証を必要とせずに、レシピエントユーザがアクセス可能であってもよい。これは、共有モジュール310が、コンテンツアイテムに関連付けられたリンクの活性化を通じてそのコンテンツアイテムへのアクセスを提供すること、または、グローバルにアクセス可能な共有フォルダを通じたアクセスを提供すること、を含みうる。
コンテンツはコンテンツストレージ318に保持されてもよく、これはこの機能を実行するための一つの手段である。コンテンツストレージ318は、ストレージデバイスや、複数のストレージデバイスや、サーバであってもよい。あるいはまた、コンテンツストレージ318は、ひとつ以上の通信ネットワークを介してアクセス可能なクラウドストレージプロバイダまたはネットワークストレージであってもよい。ある構成では、コンテンツ管理システム100は、クライアントデバイス上に現れる配置構成と同じ配置構成でコンテンツアイテムを保持する。しかしながら、コンテンツ管理システム100は自身の順序や構成や階層でコンテンツアイテムを保持してもよい。
コンテンツストレージ318は、コンテンツアイテムおよびコンテンツアイテムタイプおよびコンテンツアイテムと種々のアカウントやフォルダやグループとの関係を説明するメタデータを保持してもよい。コンテンツアイテムのメタデータは、コンテンツアイテムの一部として保持されてもよいし、別個に保持されてもよい。ある構成では、コンテンツストレージ318に保持される各コンテンツアイテムには、システム全体で一意の識別子(例えば、コンテンツアイテムID)が割り当てられてもよい。
コンテンツストレージ318は、重複したファイルやファイルの重複セグメントを特定することによって、要求されるストレージスペースの量を低減することができる。同一のコンテンツアイテムの複数の複製を保持する代わりに、コンテンツストレージ318は単一の複製を保持し、ポインタや他のメカニズムを使用して、重複しているものをその単一の複製にリンクさせてもよい。同様に、コンテンツストレージ318は、ファイルへの変更と、ファイルの異なるバージョン(分岐バージョンツリーなど)と、変更履歴と、を追跡するファイルバージョン制御メカニズムを用いてファイルを保持する。変更履歴は、元のファイルバージョンに適用された場合、変更後のファイルバージョンを生成する一組の変更を含んでもよい。
コンテンツ管理システム100は、この機能を実行するためのひとつの手段であるところの同期モジュール312を用いて、ひとつ以上のクライアントデバイスからのコンテンツを自動的に同期させる。同期はプラットフォーム不可知的である。すなわち、コンテンツは、種類、能力、オペレーティングシステム等の異なる、複数のクライアントデバイス120にわたって同期される。例えば、クライアントアプリケーション200は、コンテンツ管理システム100の同期モジュール312を介して、クライアントデバイス120のファイルシステム内のコンテンツを、システム100上で関連付けられているユーザアカウントのコンテンツと同期させる。クライアントアプリケーション200は、指定されたフォルダおよびそのサブフォルダ内のコンテンツへの任意の変更を、同期モジュール312と同期させる。そのような変更は、新たな、削除された、変更された、コピーされた、または移動されたファイルやフォルダを含む。同期モジュール312はまた、クライアントアプリケーション200に、クライアントデバイス120に関連付けられたコンテンツへの任意の変更を提供する。これは、クライアントデバイス120におけるローカルコンテンツと、コンテンツ管理システム100におけるコンテンツアイテムと、を同期させる。
競合管理モジュール314は、異なる複数のクライアントデバイス120に置かれたコンテンツアイテムの複数のバージョンの間に矛盾が存在するか否かを判定する。例えば、コンテンツアイテムがあるクライアントデバイスおよび第2クライアントデバイスにおいて変更された場合、コンテンツアイテムの異なるバージョンが各クライアントデバイスに存在しうる。同期モジュール312は、例えばコンテンツアイテム変更の変更時刻を特定することによって、そのようなバージョン競合を判定する。競合管理モジュール314は、複数のバージョンをマージすることや後に提出されたバージョンをクライアントデバイスに通知することなどの任意の適切な手段によって、バージョン間の競合を解決する。
ユーザは、ユーザインタフェースモジュール302によって生成されるウェブインタフェースを介して、コンテンツを視たり操作したりしてもよい。例えば、ユーザは、ウェブブラウザ260内で、コンテンツ管理システム100によって提供されるウェブアドレスへと辿り着いてもよい。ファイルの新たなバージョンのアップロードのように、ウェブインタフェースを通じてなされたコンテンツストレージ318のコンテンツへの変更や更新は、ユーザのアカウントに関連する他のクライアントデバイス120へと再同期されてもよい。複数のクライアントデバイス120は単一のアカウントと関連付けられていてもよく、そのアカウントのファイルは複数のクライアントデバイス120のそれぞれの間で同期されてもよい。
コンテンツ管理システム100は、アプリケーションプログラミングインタフェース(API)を介して他のコンテンツおよび/またはサービスプロバイダとのおよび種々のクライアントデバイス120とのインタフェースとしての通信インタフェース300を含んでもよい。APIはこの機能を実行するためのひとつの手段である。所定のソフトウエアアプリケーションは、ユーザの代わりに、APIを介してコンテンツストレージ318にアクセスする。例えば、スマートフォンやタブレット計算デバイス上のアプリケーションなどのソフトウエアパッケージはプログラム上、ユーザが資格証明を提供する場合、コンテンツ管理システム100を直接呼び出し、コンテンツを読み取り、書き込み、生成し、消去し、共有し、またはそうでなければ操作してもよい。同様に、APIは、ウェブサイトを通じてユーザがコンテンツストレージ318の全てまたは一部にアクセスすることを可能としてもよい。
コンテンツ管理システム100はまた、認証モジュール306を含んでもよい。認証モジュール306は、ユーザ資格情報やセキュリティトークンやAPIコールや特定クライアントデバイスなどを検証することにより、要求されているコンテンツアイテムへのアクセスが認証されるか否かを判定する。これはこの機能を実行するためのひとつの手段である。認証モジュール306は、ユーザアカウント用の一回限り使用できる認証トークンを生成してもよい。認証モジュール306は、各認証トークンに、有効期間または使用期限を割り当てる。認証トークンを要求元のクライアントデバイスに送信することに加えて、認証モジュール306は、認証トークンデータベース320に、生成された認証トークンを格納してもよい。認証トークンの検証要求を受けた後、認証モジュール306は、認証トークンデータベース320をチェックし、ユーザに割り当てられたマッチする認証トークンを探す。認証モジュール306がマッチする認証トークンを特定すると、認証モジュール306は、そのマッチする認証トークンがまだ正当であるか否かを判定する。例えば、認証モジュール306は、認証トークンが期限切れになっていないことまたは使用済みや無効というマークが付されていないことを確かめる。認証トークンを検証した後、認証モジュール306は、使い捨てトークンなどのマッチする認証トークンを無効化してもよい。例えば、認証モジュール306は、マッチする認証トークンに使用済みまたは無効というマークを付してもよいし、認証トークンデータベース320からマッチする認証トークンを削除してもよい。
ある実施の形態では、コンテンツ管理システム100は、コンテンツディレクトリを維持するためのコンテンツ管理モジュール308を含む。コンテンツディレクトリは、コンテンツストレージ318における各コンテンツアイテムの位置を特定し、クライアントアプリケーションがストレージ318内のコンテンツアイテムへのアクセスを要求することを可能とする。これは、この機能を行うひとつの手段である。コンテンツディレクトリのコンテンツエントリは、コンテンツストレージ318におけるコンテンツアイテムの位置を特定するコンテンツポインタを含んでもよい。例えば、コンテンツエントリは、メモリにおけるコンテンツアイテムのストレージアドレスを指定するコンテンツポインタを含んでもよい。ある実施形態では、コンテンツエントリは、そのそれぞれがコンテンツアイテムの一部を含む複数の場所を指し示す複数のコンテンツポインタを含む。
コンテンツパスおよびコンテンツポインタに加えて、ある構成のコンテンツエントリはまた、コンテンツアイテムへのアクセスを有するユーザアカウントを特定するユーザアカウント識別子を含む。ある実施の形態では、複数のユーザアカウント識別子が単一のコンテンツエントリに関連付けられてもよく、これは、そのコンテンツアイテムが複数のユーザアカウントによる共有アクセスを有することを示す。
協働コンテンツ管理システム
図4は、ある実施の形態に係る、協働コンテンツ管理システム130のブロック図を示す。協働コンテンツアイテムは、協働コンテンツアイテムエディタ404を用いてユーザが生成および編集できるファイルであってもよく、協働コンテンツアイテム要素を含みうる。協働コンテンツアイテム要素は、テキスト、イメージ、アニメーション、ビデオ、音声、他のマルチメディア、テーブル、リスト、外部コンテンツへの参照、プログラムコード、タスク、タグまたはラベル、コメント、または任意の他のタイプのコンテンツなどの任意のタイプのコンテンツを含んでもよい。協働コンテンツアイテム要素は、著者識別子、属性、相互作用情報、コメント、共有ユーザ等と関連付けられてもよい。協働コンテンツアイテム要素はデータベースのエントリとして保持されてもよく、これにより、協働コンテンツアイテムを探して取得することが可能となる。コンテンツアイテムの他のタイプと同様に、協働コンテンツアイテムは複数のユーザおよびクライアントデバイス120で共有され、同期されてもよく、これはコンテンツ管理システム100の共有モジュール310および同期モジュール312を用いて行われる。ユーザは、クライアントデバイス120を操作することにより、協働コンテンツアイテムを生成および編集し、クライアントデバイス120の他のユーザと協働コンテンツアイテムを共有する。あるクライアントデバイス120による協働コンテンツアイテムへの変更は、その協働コンテンツアイテムに関連付けられたユーザの他のクライアントデバイス120に伝搬する。
図1の実施の形態では、協働コンテンツ管理システム130はコンテンツ管理システム100とは別体として示されており、それと通信することで、そのサービスを取得することができる。他の実施の形態では、協働コンテンツ管理システム130は、コンテンツ管理システム100のコンポーネントのサブシステムであって、種々のタイプのコンテンツアイテムについて協働サービスおよび共有サービスを提供する。コンテンツ管理システム100からのユーザアカウントデータベース316および認証トークンデータベース320は、本明細書で説明される協働コンテンツ管理システム130にアクセスするために用いられる。
協働コンテンツ管理システム130は、協働コンテンツアイテムに対するアクセスおよび編集を管理するための、また、協働コンテンツアイテムに対してなされた所定の変更についての通知を管理するための、種々のサーバを含んでもよい。協働コンテンツ管理システム130は、プロキシサーバ402と、協働コンテンツアイテムエディタ404と、バックエンドサーバ406と、通知サーバ410と、を含んでもよい。プロキシサーバ402は、クライアントアプリケーション200からの要求を処理し、それらの要求を協働コンテンツアイテムエディタ404に渡す。
協働コンテンツアイテムエディタ404は、協働コンテンツアイテムを編集し生成するための、クライアントアプリケーション200のアプリケーション階層の要求を管理し、協働コンテンツアイテムに対するより低階層のタスクを処理すると共に必要に応じて協働コンテンツアイテムデータベース408とのインタフェースを行うためにバックエンドサーバ406と選択的に相互作用する。コンテンツアイテムデータベース408は、協働コンテンツアイテムと、コメントスレッドと、コメントと、を表す複数のデータベースオブジェクトを含む。通知サーバ410は、通知をトリガする動作であって協働コンテンツアイテムに対して行われる動作を検出し、通知データベース412に通知を生成し、クライアントデバイスに通知を送信する。
クライアントアプリケーション200は、協働コンテンツアイテムに関する要求をプロキシサーバ402に送信する。総じて、要求は、ユーザのユーザID(「UID」)と、協働コンテンツアイテムの協働コンテンツアイテムID(図5を参照してより詳しく後述される)と、協働コンテンツアイテムのテキストなどの適切であれば追加的なコンテキスト情報と、を示す。プロキシサーバ402が要求を受信すると、プロキシサーバ402はその要求を協働コンテンツアイテムエディタ404に渡す。プロキシサーバ402はまた、クライアントアプリケーション200に、特定された協働コンテンツアイテムサーバ404への参照を返す。その結果、クライアントアプリケーションは将来の要求について協働コンテンツアイテムエディタ404と直接通信できる。代替的な実施の形態では、クライアントアプリケーション200は最初、ユーザIDに割り当てられた特定の協働コンテンツアイテムエディタ404と直接通信する。したがって、協働コンテンツアイテムエディタ404によって行われる処理は、クライアントアプリケーション200からの入力を受信することに応じたものであってもよい。ある実施の形態では、ユーザは、クライアントアプリケーションを通じてではなく、ブラウザ上のウェブアプリケーションを通じて、協働コンテンツアイテムエディタ404と直接やりとりしてもよい。
協働コンテンツアイテムエディタ404が要求を受信すると、それはその要求が直接実行可能か、またはバックエンドサーバ406によって実行可能かを判定する。その要求が協働コンテンツアイテムを追加するか、編集するか、またはそうでなければ変更する場合、その要求は協働コンテンツアイテムエディタ404によって扱われる。その要求がデータベースまたはインデクス照会に向けられている場合、その要求はバックエンドサーバ406によって実行される。例えば、協働コンテンツアイテムを閲覧するという、または、サーチタームに応じた協働コンテンツアイテムのリストを取得するという、クライアントデバイス120からの要求は、協働コンテンツアイテムを変更せず、バックエンドサーバ406によって処理される。
コンテンツ管理システム100および協働コンテンツ管理システム130は、単一のコンピュータやクラウドベースのコンピュータ実装を含むネットワークコンピュータを用いて実装されてもよい。本明細書で説明されるコンテンツ管理システム100および協働コンテンツ管理システム130の動作は、ハードウエアを通じて、または、コンピュータストレージにインストールされ本明細書に記載される機能を実行するためにそのようなサーバのプロセッサによって実行されるコンピュータプログラムを通じて、制御可能である。これらのシステムは、本明細書で説明される動作のために必要な他のハードウエア要素を含み、それは、ネットワークインタフェースやプロトコル、データ入力用の入力デバイス、およびデータの表示、印刷または他の提示のための出力デバイスを含むが、これらは本明細書では説明されていない。同様に、システムの特徴を不明瞭にしないために、ファイヤウォールや負荷分散器や協働コンテンツアイテムサーバやフェィルオーバサーバやネットワーク管理ツールなどの従来の要素は示されていない。最後に、コンテンツ管理システム100および協働コンテンツ管理システム130の機能および動作は、コンピュータシステムへの実装を必要とするほど十分に複雑であり、人の心のなかで単なる精神的なステップにより実行されうるものではない。
データベース構造
図5を参照すると、協働コンテンツアイテムデータベース(CCIデータベース)408は、協働コンテンツアイテムと、コンテンツレベルおよびイメージコメントと、スレッドと、をデータベースエントリとして保持し、これらのエントリを探して取得するためのそれらへのプログラム的アクセスを提供し、これらの機能を実行するためのひとつの手段である。CCIデータベース408は、協働コンテンツアイテム、スレッド、およびコメントに対して個別のテーブルを用いることによって、またはオブジェクト、BLOBs、ファイル、または他の構造を用いることによって、リレーショナル形態で実装されてもよい。追加的に、CCIデータベース408は、コンテンツ管理システム100とは別個のフォルダ階層ストレージシステムを提供してもよい。この場合、フォルダはCCIデータベース408の追加的なデータ構造として保存されうる。
各協働コンテンツアイテム500は、複数の要素(同等的にフィールド、列、または属性)からなる。ある実施の形態では、要素は以下の通りである:
協働コンテンツアイテムID: 協働コンテンツアイテムにアクセスするために協働コンテンツ管理システム130によって割り当てられた一意の識別子
著者ID: 協働コンテンツアイテムを生成したユーザのユーザIDであり、ユーザのユーザ名を含みうるこれらの値はプライバシーの観点から暗号化されてもよい。
生成タイムスタンプ: 協働コンテンツアイテムが生成された日付および時刻を示す。
テキスト:協働コンテンツアイテムのテキストであって、ASCII文字列として表現されうる。
属性_プール: 協働コンテンツアイテムで用いられているフォーマット属性(例えば、太字、下線、イタリック、フォント、フォントサイズ、行間隔、段落、など)。属性プールは協働コンテンツアイテムで用いられる属性IDの集合であってもよい;属性IDのネイティブ集合および関連フォーマットは協働コンテンツ管理システム130によって提供される。以下のテーブルは属性プールの一部の例である。
属性_リスト: 属性リストにしたがいテキストなどの協働コンテンツアイテムの部分に適用されるフォーマット属性。属性リスト要素は(スパン=属性ID)ペアのリストであってもよく、属性IDは属性プールからの属性を示し、スパンは、テキストが描画されるときにその属性が適用される先の文字数を指定し、その文字数は前のスパンの終わりから始まり、その結果、協働コンテンツアイテムの全長が属性についてコード化される。例えば、テキスト「Text with bold(太字), italic(イタリック), and bold italic(太字かつイタリック) formatting.」は、{10=0, 4=1, 2=0, 6=2, 6=0, 11=1 2, 12=0}として属性コード化されうる。
協働コンテンツアイテム500におけるテキストのフォーマットを定義するフォーマッティングに加えて、協働コンテンツアイテムエディタ404はまた、協働コンテンツアイテムの他のタイプのメディアを示す属性をサポートしてもよい。協働貢献のイメージをサポートするために、イメージ属性IDが割り当てられてもよい。イメージ属性IDが検出される場合はいつでも、協働コンテンツアイテムエディタ404は、そのイメージ属性IDが適用される先のテキストを評価することによって、表示するイメージを決定してもよい。例えば、イメージのURLアドレスまたはイメージのイメージIDを、協働コンテンツアイテム500のテキスト要素に埋め込んでもよい。イメージIDは、単に、コンテンツ管理システム100でのイメージの位置を決定するための、イメージ用の特定コードであってもよい。このURLまたはイメージIDは、協働コンテンツアイテムエディタ404によって生成されてもよく、協働コンテンツアイテム500に追加するためにイメージを受信すると、協働コンテンツアイテム500のテキストに追加されてもよい。ユーザは、コピーアンドペースト、クリックアンドドラッグ、または協働コンテンツアイテムエディタ404によって開始されるファイルシステムナビゲーションメニューによって、協働コンテンツアイテム500にイメージを追加してもよい。
スレッドID_リスト:協働コンテンツアイテムに関連付けられた全てのスレッド510のリスト。スレッドID_リスト内のスレッドIDは、コンテンツレベルコメントのスレッドおよび/またはイメージコメントのスレッドを表してもよい。
著者_リスト:属性リストと同じコード化パターン、すなわち(スパン=ユーザID)ペア、を用いる、貢献されたまたは編集されたテキスト部分のシーケンスにしたがう、協働コンテンツアイテムテキストに貢献したユーザの順序付きリスト。例えば、著者_リスト{100=199, 50=54, 200=199}は、350文字のテキストにおいて、三つのテキスト部分のシーケンスがあり、ユーザID 199を伴うユーザが100文字の第1部分を著し、次いでユーザID 54が続き、この者は50文字の第2部分を著し、次いで再びユーザID 199が続き、この者は残りの200文字の第3部分を著すことを示す。
コンテンツの挿入及び削除の効率的な管理が可能となるので、属性および著者のスパンコード化は利点がある。例えば、テキストを挿入または削除する場合、挿入や削除に続く限られた数のスパンだけ(挿入されるテキストまたは削除されるテキストのスパンに含まれるかそれと重複するスパンを伴うもの)を変更すればよく、影響を受けないスパンを更新する必要は無い。その相対位置は変わらないからである。他の実施の形態では、著者リストは異なる態様で整理されてもよい;例えば、各著者のユーザIDがあり、それに、そのユーザによって編集されたテキスト部分のリストが続く。
各スレッド510は以下の要素を含む:
スレッドID:協働コンテンツ管理システム130によって割り当てられた一意の識別子。
協働コンテンツアイテムID:スレッドを含むファイルの協働コンテンツアイテムID。
スパン:スレッドが適用される先として特定された協働コンテンツアイテムのコンテンツの描画部分。描画部分はコンテンツのタイプに基づいて定義される。例えば、テキストにおけるスパンは、スパン内の最初の文字の位置と、スパンの長さ(文字数単位)と、によって定義されてもよく;スプレッドシートにおけるスパンは列数および行数によるセルの範囲によって定義されてもよい。例えば、スパン(50,25)は、協働コンテンツアイテム内の文字位置50で始まる、全長25文字分のテキスト部分を示す。協働コンテンツアイテム内のコンテンツが編集されると、協働コンテンツ管理システム130は各スレッドのスパン要素を更新する。例えば、スパン(50,25)の前のテキストの5文字部分が削除された場合、コンテンツ管理システムはスレッドのスパンを(45,25)に変更するであろう。また、ユーザがスパン内に含まれるテキストを削除することも可能である。スレッドのスパン内に含まれるテキストの全てが削除された場合、スパンはヌル値を有し、協働コンテンツ管理システム130によって除去される。
コメントID_リスト:スレッド510に含まれるコメント604のコメントIDのリスト要素。
著者ID_リスト:スレッドのコメントの著者のユーザID。
オーディエンス_リストオーディエンス_リスト要素は、協働コンテンツアイテムにアクセスする際にスレッドおよびそのコメントが表示される先の、および/または、スレッドにおける変更の通知が送信される先の、ユーザを示すリストである。種々の実装では、スレッドのオーディエンスは、以下のユーザIDのうちのひとつ以上を含んでもよい:i)スレッドを含む協働コンテンツアイテムの著者、ii)スレッドに含まれるコメントの著者、iii)スレッドのスパン内に含まれるテキストのいずれかの著者、iv)ユーザプリミティブを介してスレッドのスパンにおいて言及されているユーザのいずれか、v)(例えば、ユーザプリミティブを介して)コメントで言及されているユーザのいずれか、vi)協働コンテンツアイテムを開いたユーザのいずれか、vii)協働コンテンツアイテムを編集したユーザのいずれか、またはviii)例えば協働コンテンツアイテムをお気に入りまたはフォローする協働コンテンツアイテムとしてマークすることによって、協働コンテンツアイテムとの関連性を生成したユーザのいずれか。ユーザプリミティブはさらに後述される。ある実装では、スレッドのオーディエンスはそのスレッド専用に定義されるものではなく、代わりに、例えばコメントや協働コンテンツアイテムに関連付けられたユーザ識別子に基づいて必要に応じて動的に特定されてもよい。各スレッドのオーディエンスの包含は、どのユーザが特定のコメントについて通知されたかおよびそのコメントにアクセスしたかの制御を可能とする。
スレッドPos:スレッド510のスレッドPosは、リンクされたイメージスレッドが関連付けられている先の、イメージ内の特定の部分または位置を示す。リンクされたイメージスレッドは、イメージのURL(これはさらにイメージ属性IDで変更される)を含むスパンを有し、さらに、スレッドデータ構造のスレッドPos要素によってイメージ内の特定の部分または位置にリンクされる。コメントスレッドがイメージURLもイメージ属性IDで変更された他のリンクも含まないスパンを有する場合、スレッドPosはヌル値を有するであろう。スレッドPosがヌルでない場合、それは、コメントがイメージの位置にリンクされているかまたは領域/部分にリンクされているかによって、ひとつ以上のオフセット値の集合として構造化される。
オフセットは、イメージタグのイメージ上での相対位置を示し、(0,0)はイメージの原点コーナ(例えば、左上コーナ)であり、(1,1)はイメージの反対のコーナである。クライアントデバイスから、(x,y)ピクセル位置でイメージ部分の選択を受信した場合、相対位置は、入力値(x,y)を、対応する軸(X,Y)について現在表示されているイメージの解像度で除すことによって、ピクセル位置から算出される。例えば、協働コンテンツ管理システム130がイメージの原点コーナに対する(500,300)のピクセル位置を受信し、かつ、現在表示されているイメージ解像度が(1000,1000)である場合、選択されたイメージ位置の相対位置は以下の計算を行うことで決定されてもよい:(500/1000,300/1000)=(0.5,0.3).次いで、このアプローチは、イメージの選択された部分を定義する各選択された頂点または点に対して用いられる。これらの値は次いでスレッドPosに格納される。ある実装では、元々選択されたときの正確なピクセル位置もまたスレッドPos要素に保存される。イメージ内の選択された部分の相対位置を用いることで、イメージタグを、イメージサイズによらずに同じ位置に配置することができ、イメージサイズが変更された場合や表示用イメージ解像度が増減された場合でもそのようなタグを正しく配置することができる。
上記の通り、領域タグはイメージにタグ付けするために用いられてもよい。この場合、その領域の頂点または寸法の定義はスレッドPos要素に格納されてもよい。領域タグが矩形領域である場合、その領域のスレッドPosは、矩形の二つの対向するコーナの座標、矩形の一つのコーナの座標および矩形のサイズ、矩形のコーナに対応する一連の座標、または任意の他の適切な寸法の定義集合、として定義されてもよい。領域タグが多角形である場合、座標は多角形の頂点であってもよい。領域が非一様のユーザ定義領域である場合、座標はその領域を定義する接続された点の集合であってもよい。同様に、タグが円である場合、スレッドPosはその円の中心の座標および円の半径または直径であってもよい。
タグを表示する場合、協働コンテンツ管理システム130はタグを保存するときとは逆の動作を行う。例えば、協働コンテンツ管理システム130は、タグに対応するスレッドPos座標にイメージ解像度を乗じることによって、イメージのタグのピクセル位置を決定する。その結果はタグのピクセル位置である。協働コンテンツ管理システム130は次いで、イメージ内の算出されたピクセル位置に、タグに対応するグラフィックを表示してもよい。リンクされたコメントスレッドを伴うイメージが置換イメージによって置き換えられた場合、置換イメージにおけるそのタグの相対座標は、スレッドPos座標に、置換イメージの解像度を乗じ、その結果をタグのピクセル位置として用いることによって、決定される。上記の例を続けると、元のイメージがサイズ(2000,2000)の置換イメージによって置き換えられた場合、タグの更新されたピクセル位置は(0.5*2000,0.3*2000)=(1000,600)として計算され、タグは置換イメージ内のこのピクセル位置に表示される。
スレッドPosは、新たなタグがコメントスレッドに適用された場合、タグがコメントスレッドから除去された場合、またはタグがなんらか変更された場合に更新されてもよい。ある実施の形態では、ユーザは、第1の位置から第2の異なる位置へとタグをクリックアンドドラッグすることにより、タグを動かしてもよい。タグを離すと、協働コンテンツ管理システム130はクリックアンドドラッグ動作の解放点のピクセル位置を記録し、上述のように相対位置を算出する。
各コメント520は以下の要素を含む:
コメントID:協働コンテンツ管理システム130によって割り当てられた一意の識別子。
著者ID:コメントの著者のユーザID。
コンテンツ: テキスト、ピクチャまたは他のメディアを含んでもよい、コメントのコンテンツを保持する要素。
属性_リスト:協働コンテンツアイテムについて上述したものと同様な形態の、コメントのテキストについてのフォーマット属性を保持する属性リスト要素。
スレッドID:コメントの所属先のスレッドのスレッドID。
状態: アクティブまたは解決済みのいずれかとしてコメントの状態を示す値を保持する列挙型変数。
通知_リスト: 通知要素は、コメントの通知が送信された先のユーザを示すユーザIDのリストである。このリストは、コメントを含む通知メッセージが特定のユーザに送信されるたびに更新される。
アクノレッジメント_リスト:アクノレッジメント_リストはコメントに関する各ユーザの状態を示すユーザIDのリストである。例えば、アクノレッジメント_リストは、スレッドのオーディエンス_リスト内の各ユーザがコメントを見たか否か、コメントを読んだか否か、コメント内の指示にアクノレッジしたか否か、またはコメントに対して後で応答するつもりであるか否か、もしくは任意の他の列挙されるアクションまたは状態タイプの集合、を示してもよい。このリストは、協働コンテンツアイテムエディタ404が新たなコメントをまだ見ていなかったユーザにコメントを表示するときはいつでも更新される。ある実施の形態では、協働コンテンツアイテムエディタ404は、ディスプレイにおいてコメントの近くに、その特定のコメントを閲覧したユーザの視覚的表示を表示してもよい。加えて、協働コンテンツ管理システム130は、ユーザが始めてコメントを閲覧したとき、「拝読受領」を適用することを超える状態を示すためのUI要素を提供してもよい。
反応_リスト:反応は、コメントに対する、スレッドのオーディエンス内の各ユーザの反応を表す要素である。反応リストは、ユーザIDと対になる反応値のリストを含む。ある実施の形態では、各コメントに対する反応を提供するためのインタフェースが提供され、ユーザはプルダウンフィーチャまたは他のそのようなUIフィーチャを用いて反応を選択することができる。列挙される反応の集合は、元来提供されるもの(例えば「承認」、「否認」、「嬉しい」、「怒り」、「困惑」であり、これらは数値コード1、...、5に関連付けられる)である。反応インタフェースから反応が選択されると、選択された反応に対応する数値コードが反応リストに追加される。例えば、反応ペア(345,5)は、ユーザID345を伴うユーザがコメントに対する怒りの反応を有していたことを示す。ある実施の形態では、協働コンテンツアイテムエディタ404は、ディスプレイにおいてコメントの近くに、各反応の視覚的表示を表示してもよい。
CCIデータベース408はまた、インデクスの集合を含んでもよい。これらのインデクスは生来論理的であり、通底するデータベースデザインにより、様々な方法で実装可能である。ユーザインデクスは、ユーザIDによって全てのユーザのリストを含み、各ユーザIDについて、コンテンツアイテムIDのリストがある。各コンテンツアイテムIDは、そのユーザIDのユーザが関連付けられ、かつ、それへのアクセスを有する協働コンテンツアイテムを特定する。各コンテンツアイテムIDについて、協働コンテンツアイテムがユーザに対してアクティブか、非アクティブか、を示す状態インジケータがある。協働コンテンツアイテムは、ユーザが協働コンテンツアイテムを削除するまで、その協働コンテンツアイテムを共有するユーザに対してアクティブである。ある実施の形態では、ユーザが協働コンテンツアイテムを削除した場合、その協働コンテンツアイテムは協働コンテンツアイテムデータベース408に存在し続け、そのユーザに関連付けられたままであるが、状態インジケータは非アクティブに設定され、これにより将来ユーザが協働コンテンツアイテムの共有状態を再活性化することが可能となる。協働コンテンツアイテムは過去にそれが共有された先の任意の他のユーザに対してアクティブであり続けてもよく、または関連付けられたままであってもよい。あるいはまた、協働コンテンツアイテムは協働コンテンツアイテムデータベース408から削除されてもよく、この場合、共有ユーザはだれもそれへのアクセスを有することはない。ユーザインデクスは、所与のユーザに関連付けられた(共有された)協働コンテンツアイテムおよびそのユーザに関するそのような協働コンテンツアイテムの状態を特定するために用いられる。ある実施の形態では、ユーザIDインデクスはまた、ユーザが関連付けられる先の各協働コンテンツアイテムに対してユーザが有する特権を示す。インデクス内の各コンテンツアイテムIDと共に保持される値は、ユーザが編集権限、閲覧権限、および/または共有権限を有するか否かを示す。
協働コンテンツアイテムデータベース408は協働コンテンツアイテムインデクスを含んでもよい。協働コンテンツアイテムインデクスは、各協働コンテンツアイテムについて、その協働コンテンツアイテムへのアクセスを有するユーザのユーザIDのリストと、ユーザがアクティブか非アクティブかを示すものと、を示す。このインデクスはユーザインデクスの逆であってもよく、ユーザインデクスと共に保持されてもよい。協働コンテンツアイテムインデクスはまた、上述のユーザインデクスの逆の実装を用いることで、協働コンテンツアイテムに関連付けられた各ユーザの特権を示してもよい。
コメント管理ユーザインタフェース
図6Aを参照すると、その中にいくつかのコメント604がなされている、「Draft Speech」というタイトルの、協働コンテンツアイテム602のページを伴う例示的ユーザインタフェースが示される。この例では、協働コンテンツアイテム602はテキストラインなどのコンテンツからなっており、これは段落ブロック608などに構成されてもよく、また協働コンテンツアイテム602はイメージやビデオやスプレッドシートや実行可能または解釈可能コードなどの任意の他のメディア形態を含んでもよい。図6A−6Eに示されるユーザインタフェースは、協働コンテンツアイテムエディタ404によって、ユーザが協働コンテンツアイテムを編集することができるよう、生成される。ユーザは、ボタンやテキストやフィールドなどの提供されるユーザインタフェース要素のうちのいずれかを用いて、協働コンテンツアイテムエディタ404と相互作用してもよい。
ある実装では、協働コンテンツアイテムに入れられているコンテンツ内のプリミティブを認識することによって、協働コンテンツアイテムエディタ機能をトリガしてもよい。 プリミティブは、ひとつ以上の文字の指定された列であってもよく、協働コンテンツ管理システム130はこれを特定の機能にマッピングされたものとして認識する。この実装では、ユーザは協働コンテンツアイテム602の本体のなかにひとつ以上の文字の指定された列を入力するか、またはオプションで、コメント604のテキストのなかに入力し、この場合、それは協働コンテンツアイテムエディタ404によって検出されうる。プリミティブの例は、ユーザ識別プリミティブ(例えば「@username」)と、タスク生成プリミティブ(例えば、「[]taskTitle」)と、コンテンツアイテムセレクタおよび参照挿入プリミティブ(例えば、「+contentItemTitle」)と、箇条書きリストプリミティブ(例えば、「*」)と、を含む。ある実装では、プリミティブは、特定されたプリミティブに続くコンテンツによって示されうるパラメータで指定可能である。例えば、+contentItemTitleプリミティブは、「contentItemTitle」によって指定されるコンテンツをとり、それと既存のコンテンツアイテムとのマッチングを試行することによって動作してもよい。ある実装では、そのようなマッチングが見出された場合、プリミティブは、協働コンテンツアイテムにおいて、コンテンツアイテムへの参照(例えば、URL)と置き換えられてもよく、その参照は活性化されると、参照されている協働コンテンツアイテムを協働コンテンツアイテムエディタインタフェースにロードする。 ある実装では、プリミティブは他のプリミティブをパラメータとしてとってもよい。例えば、コンテンツ「[]@kingHenry」は、@kingHenryがユーザ名「kingHenry」を伴うユーザにリンクするよう解釈可能であり、新たなタスクを生成するために、このリンクはプリミティブ「[]」によって用いられ、そのタスクはkingHenryユーザに割り当てられる。
コンテンツレベルコメント
協働コンテンツアイテム602はゼロ以上のコンテンツレベルコメント604を有しうる。コンテンツレベルコメントは協働コンテンツアイテムの特定の部分に関連付けられてもよい。コンテンツアイテム内のコンテンツレベルコメント604の存在はコンテンツの下線(または色付き下線)部分610によって示されてもよく、あるいはまた、コンテンツレベルコメント604の存在を示すために、任意の他のフォーマッティングが用いられてもよい(例えば、コンテンツレベルコメントをコンテンツアイテムに繋ぐライン、上付き形態でのコメント番号、ハイライト化、「ホバーオーバ」ディスプレイインジケータなど)。コンテンツレベルコメントが関連付けられている先のコンテンツの部分610もスパンと称される。コンテンツレベルコメント604は重複するスパンに関連付けられてもよい;第1および第2コンテンツレベルコメント604a、604bはスパン「Now we are engaged in a great civil war, testing whether that nation, or any nation so conceived, and so dedicated, can long endure」に適用され、第3コメント604cはただスパン「This we may, in all propriety do」に関連付けられる。
コンテンツレベルコメント604は協働コンテンツアイテム500の本体の脇に配置されたコメントペイン612に設けられる。各コンテンツレベルコメント604は著者614(ユーザ名で示される)と生成日時とを有する。単一のスパンについてのユーザ間の交換を形成するコメントの集合はスレッド618である。スレッドはそのスレッドに関連付けられているスパンの近くに表示される。図6Aの例では、三つのスレッド618a、618bおよび618cがあり、スレッド618aは全部で四つのコメント(二つが図示され、示されるように「さらに二つのコメント」がある)を有し、他のスレッドはそれぞれひとつのコメントを有する。
ユーザは新たなコメントを生成してもよいし、既存のコメントに返信してもよい。コメントを生成するために、ユーザはコンテンツアイテム内のスパンを選択し、例えばボタン622、メニューまたは他の入力を介してコメント機能を活性化する。ユーザ名および生成時刻を示す新たなコメント604がコメントペイン612内に表示され、ユーザは次いでコメントのテキストをそのなかに入力してもよい。ユーザは、協働コンテンツアイテムのテキストのフォーマット化でなされたように、コメントのテキストにテキストフォーマット化を適用してもよい。ユーザはまた、スレッド618における既存のコメントなどのコメント604のうちのひとつの中の返事フィールド616にテキストを入力することによって、スレッドに含めるコメントを生成してもよい。
ユーザが最初に協働コンテンツアイテムを開いたとき、コメントペイン612は閉じられていてもよく、その結果その中のコメントは隠されている。ユーザは、関連コメントを有するとしてフォーマットされているかそうでなければ示されているテキストを選択する(例えば、ダブルクリックする)ことによって、コンテンツレベルコメントを示すようコメントペイン612を活性化してもよい。ある実装では、コメントペイン612は、協働コンテンツアイテムが開かれたときに視認可能であってもよい。ペイン612は、現在のユーザによって閲覧可能な、協働コンテンツアイテム内のコメントの現在の数のカウンタ624を含む。各コメントは、コメントがアクティブであるか解決されたかについて、状態を有してもよい。カウンタ624は、全てのコメント、アクティブコメントまたは解決されたコメントを示すようコメントをフィルタするために、ユーザがそこから選択可能なメニューとして機能してもよい。
協働コンテンツアイテムはまた、ユーザが協働コンテンツアイテムをコンテンツ管理システム100の他のユーザと共有することを可能とする共有アイコン626を含んでもよい。共有アイコン626がクリックされると、共有インタフェースがユーザに表示される。共有インタフェースは、協働コンテンツアイテムが共有される先のユーザのリストに、ユーザ名または電子メールアドレスを追加するためのフィールドを含んでもよい。共有インタフェースはまた、共有するユーザが、協働コンテンツアイテムを共有する要求を受信するユーザにメッセージを送信することを可能とするテキストフィールドを含んでもよい。
イメージコメントインタフェース
図6B−6Eは、イメージコメントを生成し表示するための種々のインタフェースを示す。
図6Bはイメージ628を示し、この場合はアブラハムリンカーンのものであり、協働コンテンツアイテムにおいてテキスト646を伴っている。イメージ628は第1タグ630および第2タグ638でタグ付けされており、それぞれ対応するリンクされたコメントスレッド633aおよび633bを有する。各コメント(および対応するタグ)はイメージ628における特定の部分または位置に関連付けられている。その位置はイメージ原点(例えば、イメージの左上の角)からのオフセットとして定義されてもよい。リンクされたコメントスレッド633aはコメント634および635を含む一方、リンクされたコメントスレッド633bは単一のコメント640を含む。リンクされたコメントスレッドはリンク識別子632および636を用いて特定され、それぞれがリンクされたコメントスレッド633aおよび633bに対応し、さらにそれぞれがタグ630および638内の識別子に対応する。
図6Bはまた、コンテンツレベルスレッド618dにおけるリンクされていないコメント642を示す。リンクされていないコメントはタグボタン644を含み、イメージ全体に関連付けられてもよい。
ある実施の形態では、ユーザが例えばイメージをクリックするかイメージにカーソルを合わせるかイメージ上で操作(例えば、サイズ変更やクロップなど)を実行することによって、イメージと相互作用しない限り、イメージタグ630および638はそのタグ付けされた位置に表示されなくてもよい。これらの実施の形態では、イメージ628に関して近い位置にイメージタグの数を表示してもよい。
加えて、ある実施の形態では、ユーザがイメージ628と相互作用するまで、リンクされたコメントスレッド633aおよび633bを完全に表示しなくてもよい。これらの実施の形態では、コメントペインにおけるイメージ628に近い位置に、リンクされたコメントスレッド633の数を表示してもよい。
図6Cは、ユーザが図6Bのタグボタン644と相互作用した結果を示す。タグボタン644が選択されると、協働コンテンツアイテムエディタ404は、スレッドおよびコメントをイメージの特定の部分にリンクさせることができるモードに入る。ある実施の形態では、このモードはライトボックスモードであり、この場合、コメントスレッド618dに関連付けられたイメージがコンテンツ646などの周囲のコンテンツ無しで表示されてもよい。ある実施の形態では、ライトボックスモードではイメージはより大きなサイズで表示される。代替的な実施の形態では、図6C−6Eを参照して説明されるものと同じ機能が、ライトボックスモードの外で、他のコンテンツが見える状態で、実行されてもよい。ある実施の形態では、ライトボックスモードではイメージ628は最大解像度で表示される。
ライトボックスモードに入ると、協働コンテンツアイテムエディタ404はイメージオプションバー648を表示し、該イメージオプションバー648はイメージナビゲーション650と、ズームインタフェース652と、フルスクリーンボタン654と、イメージ置換ボタン656と、新たなイメージコメントボタン658と、を含む。ライトボックスモードはまた、イメージスクロールボタン664を含んでもよい。
ライトボックスモードに入ると、イメージタグ630および638は図6Bでそれらがあった相対位置と同じ相対位置に表示される。タグボタン644と相互作用する際、ユーザは、この場合、例えばコメントをイメージにリンクさせる先のイメージ内の位置をクリックすることによって、イメージ628上でタグ用の位置を選択した。イメージにおけるクリックの位置(例えば、イメージ原点に対するマウスクリックの(x,y)位置)は、タグの位置およびイメージコメントのスレッドがリンクされる先の位置を決めるために用いられる。タグの位置を決め、スレッドをリンクさせる例示的な特定の実施の形態は以下に説明される。
この場合、第3タグの選択された位置は、第2タグの既存の位置に近かった。二つのタグが特定のズームレベルにおいて一緒に近くに配置される場合、タグクラスタ662アイコンが生成され、視覚的明瞭性が維持される。タグクラスタ662は、小さな領域内に配置される個々のタグを示す。タグクラスタの生成は、タグ間の距離がしきい値以下であることに基づいて決定される。例えば、タグクラスタは、二つのタグの位置の間に50より少ないピクセルがある場合に生成されてもよい。タグ間の距離は、タグの相対位置にイメージの表示解像度を乗じたものを用いることによって決定可能であり、イメージの表示解像度はズームレベルおよびスクリーン上のイメージサイズによって決定される。この場合、クラスタタグ662はタグ2および3を表す。タグクラスタ662は、それが表す個々のタグの平均(x,y)位置に配置されてもよく、配置のためにタグクラスタ662の中心を用いる。平均位置はクラスタ内のタグの位置の重心として算出可能である。あるいはまた、しきい値は相対的であってもよく、イメージのサイズに対するタグ間のピクセル距離の比に基づくものであってもよく、例えば5%というしきい値であってもよい。
イメージナビゲータ650は、協働コンテンツアイテム内のイメージの数を示す。ナビゲータ650は、ユーザがコンテンツアイテム内の全てのイメージを通して直接ナビゲートすることを可能とし、それらに関連付けられた任意のコメントを見ることを可能とする。これは、ユーザが、コンテンツアイテムを通しでスクロールするかページを繰る必要無しにそれらのコメントを見ることを可能とし、したがって、コンテンツアイテムに埋め込まれたイメージに対するコメントを見る際の効率が向上する。これは特に、イメージが多数のページや大量の他のタイプのコンテンツによって分けられている場合に利益がある。
ズームインタフェース652は、イメージのズームレベルを示し、ユーザがイメージのズームレベルを増減するか正確に指定することを可能とする。フルスクリーンボタン654は、ユーザからの相互作用を受けると、イメージをフルスクリーンサイズで表示する。イメージ置換ボタン656はユーザが現在のイメージを新たなイメージと置き換えることを可能とする。新たなコメントボタン658は、ユーザが現在表示されているイメージに関連付けられた新たなリンクされたコメントスレッド633を生成することを可能とする。
ある実施の形態では、イメージ置換ボタン656は、現在表示されているイメージを置き換えるために使用される第2イメージ(例えば、ファイルシステム、コンテンツ管理システム、または他のイメージソースからのもの)の選択を可能とするダイアログボックスまたは他のイメージ選択インタフェースを提供する。ユーザが置換第2イメージを選択すると、協働コンテンツアイテムエディタ404は、元のイメージに関連付けられたコメントをどうすべきか(例えば、アーカイブする、削除する、リンクを削除する、またはそのリンクされる位置に適用する)尋ねる追加的なインタフェースを表示する。 ある実装では、追加的なインタフェースを提供する代わりに、これらの動作のうちのひとつがデフォルトで実行されてもよい。
ユーザが表示されているイメージに関連付けられたリンクされているコメントスレッドをアーカイブするか削除することに同意する場合、イメージに関連付けられた全てのコメントはディスプレイから除去される。ある実施の形態では、置換イメージが元のイメージに戻された場合、コメントが再度表示されてもよい。ある実施の形態では、元のイメージが協働コンテンツアイテムの任意の位置に再度追加された場合、コメントは再度表示されてもよい。
ユーザがリンクされているコメントのリンクを解除することに同意する場合、各リンクされているコメントスレッドに対応するタグは除去され、コメントスレッドは代わりにイメージ全体に関連付けられたコメントとして指定される(コメントスレッドのスパンはヌルのスレッドPos要素を伴うイメージに対応する)。
ユーザがコメントをそのリンクされた位置に適用することに同意する場合、リンクされているコメントスレッドは対応するタグで表示され、対応するタグはそれらが元のイメージで有していた相対位置と同じ新たな置換イメージにおける相対位置を有する。これは、イメージにおいてタグの位置を定義する座標を用いること、および、それらを置換イメージにおける対応する座標にマッピングすること、によってなされる。このアプローチは、置換イメージによってコメントが解決されたか(例えば、イメージコンテンツの変更の要求)をユーザが判定することができるよう、コメントを保存するものである。
種々の実施の形態においてイメージ置換中にコメントを扱うための上記のオプションを提供することに加えて、協働コンテンツアイテムエディタ404は、イメージの繰り返しのそれぞれに関連付けられたイメージおよび任意のコメントの繰り返しを保存するためのバージョン履歴フィーチャを提供してもよい。この実施の形態では、協働コンテンツアイテムエディタ404は、イメージオプションバー648に、または、ユーザインタフェースのいずこかに、イメージのバージョン履歴を見るためのバージョン履歴ボタンを提供してもよい。ボタンを選択すると、協働コンテンツアイテムエディタ404は、実施の形態によって、ユーザインタフェースにイメージの前のバージョンを表示してもよい、および/または、ユーザがイメージの以前のバージョンを通しでスクロールすることを可能とするナビゲーションボタンを表示してもよい。イメージの各バージョンと関連付けられたアーカイブされたコメントは、任意の随伴するイメージタグと共に、協働コンテンツアイテムエディタ404によって表示される各以前のバージョンに関連して表示されてもよい。
協働コンテンツアイテムエディタ404は、イメージのサイズの変更に応じて、または、イメージを、同じイメージのクロップされたバージョンと置き換えることに応じて、選択的にコメントのリンクを解除してもよい。ある実施の形態では、協働コンテンツアイテムエディタ404は、イメージのサイズの変更を検出し、サイズの変更を、所定のリサイズしきい値と比較する。サイズの変更がリサイズしきい値を超えた場合、イメージに関連付けられたタグ付きコメントのリンクは解除され、イメージ全体に関連付けられた典型的なコンテンツレベルコメントとして表示される。例えば、ユーザがイメージのサイズを40%だけ減らしたことを協働コンテンツアイテムエディタ404が検出し、リサイズしきい値が35%である場合、協働コンテンツアイテムエディタ404はイメージの元のバージョンでタグ付けされていたコメントのリンクを解除してもよい。
あるいはまた、協働コンテンツアイテムエディタ404は、置換イメージが元のイメージのクロップされたバージョンであることを検出し、自動的に、イメージの範囲内にもはや存在しないコメントを削除するかそのリンクを解除してもよい。協働コンテンツアイテムエディタ404は、数値的イメージ解析を行うことによって、クロップで除去されたイメージの領域を相対座標で特定してもよい。協働コンテンツアイテムエディタ404は、次いで、タグ付きコメントの相対座標を特定された領域と比較することによって、イメージの特定された領域内のタグを有するコメントを削除するかそれへのリンクを解除してもよい。例えば、ユーザがイメージの左側25%を削除した場合、協働コンテンツアイテムエディタ404は除去された領域を([0,0.25],[0,1])として特定してもよい。イメージに関連付けられたコメントのうちのいずれかがその領域内のタグ有する場合、それは自動的に削除されるかリンクが解除され、イメージはそのタグ無しで表示される。
図6Dは、ズームインタフェース652を通じたイメージのズームレベルの増大の結果を示す。ズームレベルが増大されると、タグ2とタグ3との間の距離はクラスタ化しきい値を過ぎて増大した。これに応じて、タグクラスタ662は個々のタグ668および670に分かれ、その相対位置に配置される。各タグの位置は各タグ付けされたスレッドに関連付けられたスレッドPosに保持されているので、スレッドPos位置を用いることによって、タグがその位置の平均を用いて一緒にクラスタ化される前の、タグの元の相対位置を決定することができる。
いくつかのイメージタグがイメージのズームされた領域の外側になるようイメージのズームを増やすユーザからの命令を検出すると、協働コンテンツアイテムエディタ404は、イメージのズームされた領域の外側になってしまういくつかのタグを表示せず、または、そのようなタグに関連付けられたコメント上に、そのタグが現在表示されていないことを示してもよい。イメージのズームされる領域は、ズームインタフェース652を用いてユーザが示したズームレベルと、スクロール入力やカーソル移動などを通じてユーザによって提供されたイメージ内の位置と、に基づいて決定される。
図6Eは、リンクされるコメントがイメージの領域にリンク可能である実施の形態を示す。領域は囲み領域によって定義される。ある実施の形態では、第1コーナの所望の位置から反対側のコーナへ(例えば、左上コーナから右下コーナへ)クリックアンドドラッグすることによって、ユーザにより矩形囲み領域を生成することができる。タグ672は一例である。あるいはまた、多角形の頂点のシーケンスを定義するための一連の点の選択によって、囲み領域を生成してもよい。タグ674は一例である。これらのタグ672および674の両方がイネーブルされることにより、どちらかがそれに対応するリンクされたコメントスレッド、例えば、633aまたは633c、にリンクされてもよい。種々の実施の形態では、タグボタン644の選択の後、イメージ上の位置におけるダブルクリックは位置タグを生成し、クリックアンドドラッグは直線的囲みボックスを生成し、一連のクリックは多角形囲みボックスを生成し、閉領域の描画は非一様囲み領域を生成する。ある実装では、描かれた囲み領域は短い距離だけ離れた一連の関係する点として保存される。
イメージコメントスレッドの生成
図7Aは、イメージ関連コメント用のコメントスレッドを生成するためのクライアント側アルゴリズムのある実施の形態を示す。図 協働コンテンツアイテムエディタ404は、協働コンテンツアイテムにおける選択されたイメージを示すものを受信する700。協働コンテンツアイテムエディタ404はイメージの選択に関連付けられたコメントを生成するコマンドを受信する702。ある実装では、選択されたイメージを示すものおよびコメントを生成するコマンドは一緒に受信されうる。
協働コンテンツアイテムエディタ404はコメントに含めるコンテンツを受信する704。受信されるコンテンツはクライアントデバイスにおいて取得可能であり、そのクライアントデバイスはユーザによるコンテンツの入力(任意のテキスト、テキストフォーマット化、イメージなどを含む)を受け付けるためのインタフェースを(例えば、協働コンテンツアイテムエディタ404を介して)表示する。ある実装では、クライアントデバイスはイメージの選択と、コメントを生成するコマンドと、コメントコンテンツと、受信可能である。これらの全てがクライアントデバイスによって受信されると、クライアントデバイスは、コンテンツを生成するコマンドを提供する際に、協働コンテンツ管理システム130に、選択されたコンテンツとコメントに含めるコンテンツとを示すものを提供する。例えば、新たなイメージコメントボタンの選択が受信されることにより、協働コンテンツアイテムエディタ404はコメントコンテンツを入力するためのインタフェースをクライアントデバイスに提供してもよい。提供されたインタフェースにテキストまたは他のコンテンツが入力され提出されると、協働コンテンツエディタは、コメントについてのイメージの選択と、新たなコメントを生成するコマンドと、コメントのコンテンツと、を一度に受信してもよい。
協働コンテンツアイテムエディタ404は、スレッドをイメージの特定の部分に関連付けるためのイメージタグを生成するコマンド、例えばタグボタンの選択、を受信する706。例えば協働コンテンツアイテムエディタ404は、イメージの一部をスレッドとリンクさせるものとして選択可能なライトボックスモードまたは他のモードに入る。協働コンテンツアイテムエディタ404は、スレッドとリンクされるべきイメージ部分(位置または囲み領域のいずれか)の選択を受信する708。
ある実施の形態では、協働コンテンツアイテムエディタ404は位置の座標を定義する情報を決定し、それは上述のようにイメージ解像度に基づく相対座標で規定されうる。選択された部分の座標は後に、例えばスレッドデータ構造のスレッドPosフィールドに、スレッドに関連付けられて格納される。他の実施の形態では、座標決定は協働コンテンツ管理システム130によって完了される(以下の図7Bの議論参照)。
ある実装では、ステップ708および710はステップ702、705および706よりも前に生じる。ユーザは、協働コンテンツアイテム内のイメージについてライトボックスモードに入り、図6Bに示される標準閲覧インタフェースからイメージ全体を選択することなしに、イメージの領域を選択してもよい。これは新たなイメージコメントボタン658のユーザ選択を受信することにより完了される。協働コンテンツアイテムエディタ404は、次いで、イメージの関連位置または囲み領域を選択するためのモードに入ってもよい。イメージの部分の選択を受信すると、協働コンテンツアイテムエディタ404はコメントコンテンツを受信するためのインタフェースを提供してもよい。協働コンテンツアイテムエディタ404がコメントコンテンツを受信すると、協働コンテンツアイテムエディタ404は、CCIデータベース408にイメージコメントを生成するコマンドを協働コンテンツアイテム管理システム130に送信する。
協働コンテンツアイテムエディタ404は次いで、イメージの指定された位置にタグアイコンを表示し712、これはタグをスレッドにリンクさせる識別子の割り当てることを含む。ある実装では、協働コンテンツアイテムエディタは、上述のように、イメージが特定の解像度で表示された場合に、イメージタグをクラスタ化すべきか否かを判定する。他の実施の形態では、協働コンテンツ管理システム130は、タグがいつクラスタ化されるかを決定してもよく、クラスタ化されたタグは表示のために協働コンテンツアイテムエディタ404によって受信されてもよい。
協働コンテンツ管理システム130は、CCIデータベース408におけるイメージコメント生成の結果を記録するよう、サーバ側で動作する。協働コンテンツ管理システム130は、協働コンテンツアイテムエディタ404から、イメージの選択(これはイメージ識別子またはURLを含みうる)と、コメントコンテンツと、イメージの一部を表すものと、を取得する750。協働コンテンツ管理システム130は、CCIデータベース408にコメントを生成し752、コメントIDとユーザのユーザIDとをコメントの著者IDに割り当てる。協働コンテンツ管理システム130は、CCIデータベース408にスレッドオブジェクトを生成し754、新たなスレッドIDを割り当て、コメントのコメントIDをスレッドのコメントIDリストに追加し、コメントコンテンツをデータベースに保存する。イメージ選択を用いることでスレッドのスパンを設定し、一方で、イメージの示された部分はスレッドのスレッドPosとして保存される。
ある実施の形態では、協働コンテンツ管理システム130は、イメージの取得された部分に基づいてコメントタグの相対座標を算出する756。
図8Aは、イメージを置き換え、関連イメージコメントを扱うためのクライアント側アルゴリズムのある実施の形態を示す。まず、協働コンテンツアイテムエディタ404は、協働コンテンツアイテムのイメージを置き換えるコマンドをユーザから受信する800。例えば、ユーザは新たなイメージコメントボタン658と相互作用してもよい。上述のコマンドのいずれかを受信することに応じて、協働コンテンツアイテムエディタ404は、置換イメージの選択のためのインタフェースを表示する802。例えば、そのインタフェースはファイルナビゲーションウインドウであってもよく、これは、ユーザが、そのローカルファイルシステムから、または、コンテンツ管理システム100上の同期されコンテンツアイテムから、イメージを選択することを可能とする。あるいはまた、そのインタフェースはドラッグアンドドロップゾーンであってもよく、これはユーザがそのゾーン内に選択したイメージファイルをドラッグアンドドロップすることを可能とする。置換イメージ選択インタフェースが表示される802と、協働コンテンツアイテムエディタ404はユーザから置換イメージの選択を受信する804。
ある実装では、ステップ800は同時に達成されてもよい。例えば、ユーザは協働コンテンツアイテム内で置換イメージを元のイメージと同じ位置にドラッグアンドドロップしてもよいし、元のイメージを選択した上で元のイメージが選択されている間に置換イメージを貼り付けてもよい。これらの場合、元のイメージを置換するコマンドは置換イメージの選択と一致する。
置換イメージの選択を受信する804と、協働コンテンツアイテムエディタ404は置換イメージを協働コンテンツ管理システム130にアップロードする806。
オプションで(図8Aにおいて破線で示される)、協働コンテンツアイテムエディタ404はユーザにイメージコメントオプションを表示808してもよい。イメージコメントオプションは、元のイメージに関連付けられたコメントを削除またはアーカイブすること、現在のイメージのコメントタグを置換イメージへ再適用すること、または元のイメージ内のコメントをイメージのタグ付けされた位置または部分からリンク解除し、そのコメントをイメージ全体と関連付けることを含んでもよい。あるいはまた、イメージコメントオプションがユーザに提示されない場合、協働コンテンツアイテムエディタ404はデフォルトで、または元のイメージおよび置換イメージの画像解析を通じて、あるオプションを選択してもよい。例えば、協働コンテンツアイテムエディタ404のデフォルトオプションは現在のイメージコメントおよび関連するタグを新たなイメージに再適用することであってもよい。イメージコメントオプションが画像解析に基づいて選択される場合、協働コンテンツアイテムエディタ404は、協働コンテンツ管理システム130に、二つのイメージの画像解析を要求してもよい。協働コンテンツ管理システム130が、それらのイメージが実質的に同様であると判定した場合、イメージコメントは新たなイメージに適用されてもよい。あるいはまた、協働コンテンツ管理システムが、それらのイメージが実質的に異なると判定した場合、イメージコメントはアーカイブされるか、削除されるか、またはイメージ内のその対応する位置からリンク解除されてもよい。実施の形態により、協働コンテンツアイテムエディタ404によって、任意の画像処理が完了されてもよい。
ユーザによる、デフォルトによる、または画像解析による、元のイメージに関連付けられたイメージコメントを削除するかアーカイブするというイメージコメントオプションの選択に応じて、協働コンテンツアイテムエディタ404は、元のイメージに関連付けられたコメントを削除するかアーカイブするための要求を協働コンテンツ管理システム130に送信する810。
現在のイメージコメントタグを置換イメージに再適用するというオプションが選択された場合、協働コンテンツアイテムエディタ404はタグをその相対位置に再適用する812。協働コンテンツアイテムエディタ404は、上述のようにタグのピクセル位置を決定するために、置換イメージを含むスパンを伴う各コメントスレッドのスレッドPos要素を用いる。タグは次いで置換イメージにおいて決定された位置に表示される。オプションで、協働コンテンツ管理システム100が、置換イメージが元のイメージのクロップされたバージョンであると判定した場合、タグのうちのいくつかはイメージ全体とは関連付いたままイメージからリンク解除される814。この場合、協働コンテンツ管理システム130は、置換イメージと元のイメージとを比べる画像解析を行い、それにしたがいコメントのスレッドPosを変更する。あるいはまた、画像解析は協働コンテンツアイテムエディタ404によって完了されてもよい。
最後に、コメントとイメージ内のその対応するタグとのリンクを解除するという選択に応じて、協働コンテンツアイテムエディタ404は、(各コメントスレッドのスレッドPosをヌル値で置き換えることによって)元のイメージに関連付けられた全てのコメントのリンクを解除するための要求を協働コンテンツ管理システム130に送信する816。コメントスレッドはイメージを含むスパンを有するので、それらはイメージ全体とは関連付けられたままであり、したがって協働コンテンツアイテムエディタ404によって表示される。
図8Bは、イメージを置き換え、関連イメージコメントを扱うためのサーバ側アルゴリズムのある実施の形態を示す。まず、協働コンテンツ管理システム130は協働コンテンツアイテムエディタ404から置換イメージを取得する850。協働コンテンツ管理システム130は、次いで、CCIデータベース408に置換イメージを保存し852、置換イメージ用の新たなイメージIDを生成する854。置換イメージ用のイメージIDが生成されると、協働コンテンツ管理システム130は、協働コンテンツアイテムのテキスト内の元のイメージIDを、同じ位置において、置換イメージのイメージIDと置き換える856。したがって、元のイメージのイメージIDを含むスパンを有する任意のコメントスレッドは、今や、置換イメージを含むスパンを有し、同様に置換イメージと関連付けられるであろう。
元のイメージIDを置換イメージIDで置き換えた後、協働コンテンツ管理システム130は、オプションで、ユーザによって選択されたイメージコメントオプションを示す要求を協働コンテンツアイテムエディタ404から受信してもよい858。あるいはまた、協働コンテンツ管理システム130は、デフォルトのイメージコメントオプションを用いるか、または、元のイメージおよび置換イメージの画像解析に基づいてオプションを決定してもよい。
元のイメージに関連付けられたイメージコメントを削除するかアーカイブするイメージコメントオプションが選択された場合、協働コンテンツ管理システム130は、置換イメージIDを含むスパンを伴うスレッドを特定する860。協働コンテンツ管理システム130は、次いで、CCIデータベース408から特定されたスレッドを除去するかアーカイブする862。スレッドが削除されるべきものである場合、協働コンテンツ管理システム130は単にCCIデータベースからそれらを削除する。スレッドがアーカイブされるべきものである場合、協働コンテンツアイテムは第2データベースまたはCCIデータベースの異なるパーティションにスレッドを保存し、データベーステーブルを用いてそれらを元のイメージIDと関連付ける。
元のイメージのタグを新たなイメージに適用するイメージコメントオプションが選択された場合、協働コンテンツ管理システム130は、元のイメージと置換イメージとを比べる画像解析を行ってもよい864。協働コンテンツ管理システム130が画像解析を通じて、置換イメージが元のイメージのクロップされたバージョンであると判定した場合、協働コンテンツ管理システム130は、イメージのクロップされたセクションの外側のスレッドPosを伴うコメントスレッドのリンクを解除してもよい868。これを達成するために、協働コンテンツ管理システム130は、元の相対座標で、元のイメージの領域のうち除去された領域を決定する。相対座標で表現されたときにスレッドのスレッドPosが除去された領域内に入る場合、スレッドのスレッドPosは、スパンは依然として置換イメージのイメージIDを含みつつ、ヌルに変更される。したがって、スレッドはイメージ全体と関連付けられたままであるが、関連するタグを有さない。
加えて、協働コンテンツ管理システム130は、残りのスレッドのリンクを解除する代わりに、そのような残りのスレッドに関連付けられた相対位置を調整してもよい。これは、置換イメージにおいて各寸法について除去されたイメージの量に基づいて、タグの位置を定義する各座標をスケールすることによって達成されてもよい。イメージのうちスレッドに関連付けられた位置または部分は、イメージの新たな相対寸法が与えられたとして各寸法における相対位置を再計算することによって再計算されてもよい例えば、タグが相対位置(0.2,0.3)に配置されており、かつ、クロップ後のイメージの新たな相対寸法が(0.1−0.9,0−0.5)である場合、新たな相対位置は、xおよびy次元のそれぞれについて式(0.2−0.1)/(0.9−0.1)および(0.3−0)/(0.5−0)によって決定される。これは、置換イメージにおける新たな相対座標(0.125,0.6)を生じさせる。
協働コンテンツ管理システム130が、元のイメージに関連付けられたスレッドのリンクを解除するための要求を受信した場合、協働コンテンツ管理システム130は、置換イメージIDを含むスパンを伴う全てのスレッドを特定し868、それらのスレッドのスレッドPosをヌルに設定する870。
本明細書において、「ある実施の形態」または「実施の形態」への参照は、実施の形態との関連で説明される特定のフィーチャ、構成または特徴が少なくともひとつの実施の形態に含まれることを意味する。本明細書において様々な場所に現れるフレーズ「ある実施の形態では」は、必ずしも同じ実施の形態を指すものではない。
この説明では、「モジュール」という用語は、指定される機能を提供するための計算ロジックの物理的コンピュータ構成を指す。モジュールはハードウエア、ファームウエアおよび/またはソフトウエアで実装可能である。モジュールのソフトウエア実装に関し、当業者であれば、モジュールが、データ構造、メソッド、クラス、ヘッダ、および説明される機能を実行するのに適した他のコードオブジェクトを含むコードブロックを含むことを理解する。具体的な実装言語に依存して、モジュールはパッケージ、クラス、またはコンポーネントであってもよい。モジュールを正式にサポートする言語は、Ada, Algol, BlitzMax, COBOL, D, Dart, Erlang, F, Fortran, Go, Haskell, IBM/360 Assembler, IBM i Control Language (CL), IBM RPG, Java, MATLAB, ML, Modula, Modula−2, Modula−3, Morpho, NEWP, JavaScript, Oberon, Oberon−2, Objective−C, OCaml, Pascalのいくつかの派生 (Component Pascal, Object Pascal, Turbo Pascal, UCSD Pascal), Perl, PL/I, PureBasic, Python, and Rubyを含むが、他の言語も「モジュール」とは異なる用語を用いることで同等の構成をサポート可能である。
本明細書で説明される名を挙げられたモジュールはそのようなモジュールのある実施の形態を表すのであって、他の実施の形態は他のモジュールを含みうることは理解される。加えて、他の実施の形態は、本明細書で説明されるモジュールを欠いてもよく、および/または、説明される機能をモジュール間で異なる態様で分散させてもよい。加えて、二つ以上のモジュールに帰せられる機能は単一のモジュールに組み入れられてもよい。本明細書で説明されるモジュールがソフトウエアとして実装される場合、モジュールはスタンドアローンプログラムとして実装可能であるが、また、例えばより大きなプログラムの一部として、複数の個別のプログラムとして、またはひとつ以上の静的にまたは動的にリンクされたライブラリとして他の手段を通じて実装されてもよい。これらのソフトウエア実装のいずれかにおいて、モジュールはシステムのコンピュータ可読永続ストレージデバイスに保持され、メモリにロードされ、システムのコンピュータのひとつ以上のプロセッサによって実行される。
本明細書における動作はまた、装置によって実行可能である。当該装置は、必要な目的のために特別に構成することができ、又は、コンピュータに格納されたコンピュータプログラムによって選択的に起動又は再構成された汎用コンピュータを含むことができる。そのようなコンピュータプログラムはコンピュータ可読ストレージ媒体に保持されてもよく、そのような媒体は、フロッピーディスクや光学ディスクやCD−ROMや磁気光学ディスクやリードオンリーメモリ(ROM)やランダムアクセスメモリ(RAM)やEPROMやEEPROMや磁気カードまたは光学カードや特定用途集積回路(ASIC)や、電子的インストラクションを保持するのに適した任意のタイプの媒体のうちの任意のタイプなどであってもよいがそれに限定されない。上記のそれぞれはコンピュータシステムバスに接続される。さらに、本明細書で言及されるコンピュータは、単一のプロセッサを含むか、または計算能力向上のためにマルチプロセッサ設計を用いるアーキテクチャであってもよい。
本明細書で提示されるアルゴリズムおよびディスプレイは、生来的に、特定のコンピュータや他の装置に関連するわけではない。本明細書の教示にしたがうプログラムを伴う種々の汎用システムを用いることもでき、または、要求される方法ステップを行うことにより特化した装置を作成するのが便利かもしれない。さまざまなこれらのシステムの要求される構成は、以下の説明から明らかとなろう。加えて、本発明は特定のプログラム言語のいずれかを参照して説明されるわけではない。本明細書で説明される本発明の教示を実装するために種々のプログラム言語を用いることができ、以下での特定の言語への参照は本発明の実施可能性およびベストモードの開示のために提供される。
本発明を好適な実施の形態およびいくつかの代替的な実施の形態を参照して具体的に示し説明したが、本発明の精神および範囲から逸脱することなく、形状や詳細に係る種々の変更を行うことができることは当業者には理解されるであろう。
本明細書で用いられる場合、しきい値を超えることは、比較されるアイテムの値が指定された他の値を超えること、比較されるアイテムが最大値を伴う所定の指定された数のアイテムのうちにあること、または比較されるアイテムが指定される上位パーセンテージ量内の値を有することを意味する。本明細書で用いられる場合、しきい値を下回ることは、比較されるアイテムの値が指定された他の量を下回ること、比較されるアイテムが最小値を伴う所定の指定された数のアイテムのうちにあること、または比較されるアイテムが指定される下位パーセンテージ量内の値を有することを意味する。本明細書で用いられる場合、しきい値内にあることは、比較されるアイテムの値が二つの指定された他の値の間にあること、比較されるアイテムが中間の指定された数のアイテムのうちにあること、または比較されるアイテムが中間の指定されるパーセンテージ範囲内の値を有することを意味する。高いであるとか重要でないなどの相対的な用語は、そうでないと定義されない場合、値を割り当て、その値が確立されたしきい値とどのように比べられるかを決定するものとして理解可能である。例えば、フレーズ「速い接続を選択すること」は、その接続速度に対応する割り当て値を有し、その割り当て値がしきい値を超える接続を選択することを意味するものとして理解可能である。
本明細書で用いられる場合、語「または」はアイテムの集合の任意の可能な並べ替えを指す。例えば、フレーズ「A、BまたはC」は、A、B、Cのうちの少なくともひとつもしくはそれらの任意の組み合わせを指し、それは例えば以下のうちのいずれかである。A;B;C;AおよびB;AおよびC;BおよびC;A,B,およびC;あるいは任意のアイテムの倍数であって例えば、AおよびA;B,BおよびC;A,A,B,C,およびC;など。さらに、要素または他の要素「の少なくともひとつ」を規定する請求項の用語は、要素の集合の任意の可能な並べ替えを指す。例えば、「AおよびBの少なくともひとつ」または「AまたはBの少なくともひとつ」を規定する請求項の用語は、A、B、またはAおよびBの両方を意味する。
本開示は、添付の請求項の範囲内の態様を説明するための種々の例および他の情報を含むが、これらの例の特定のフィーチャや配置構成に基づいて、請求項の限定が暗示されることはない。本開示は、説明のために具体的な実施の形態および実装を含むが、その実施の形態および実装の範囲から逸脱せずに種々の変更をなすことができる。例えば、機能は異なるように分散されてもよいし、本明細書で特定されたもの以外のコンポーネントで実行されてもよい。本開示は、説明されるフィーチャを、その範囲内のシステムコンポーネント、物理構成および論理構成、および方法の非排他的例として含む。
上で言及された任意の特許、特許出願および他の参考文献は本明細書において参照により組み入れられる。必要に応じて態様を変更することで、さらに別の実装を提供するために、上述の種々の参照のシステム、機能およびコンセプトを用いることができる。参照により組み入れられた協働コンテンツアイテムの主張または主題が本願の主張または主題と競合する場合、本願は制御されるべきである。
最後に、明細書において使用された言葉は主に可読性及び説明の目的のために選択されたものであり、本発明の主題の輪郭を描いたり制限を加えたりするために選択されたものではない。従って、本発明の開示は説明のためを意図したものであって、以下の請求項において明らかにされる本発明の範囲を限定するものではない。