本開示のさまざまな実施形態は、添付の図面を参照してこれから以下においてより完全に説明され、ここで本開示の実施形態のうちの一部は示されるが、その全てが示されるわけではない。実際、本開示は、多くの異なる形態で実現され得るのであって、ここで記載される実施形態に限定されるように解釈されるべきではない。むしろ、これら実施形態は、本開示が適用される法的要件を充足するように提供される。「又は」という語は、そうではないと明示されない限り、代替的及び接続的意味の両方でここでは用いられている。「説明的(illustrative)」、「例示(example)」、及び「例示的(exemplary)」という語は、質的なレベルを問わない例であるとして用いられている。全体を通して、同様の番号は、同様の要素を表す。
[概観]
本開示の実施形態は、アプリケーション及び/又はサービスをグループベースコミュニケーションシステムに統合することに大まかには関する。本願出願人は、アプリケーション及びサービスをシステムに統合するための既存の技術の中には、アイフレーム(iframes)(インラインフレーム)の使用を伴うものがあることを特定した。アイフレームは、ウェブサイトに埋め込まれ得るイパーテキストマークアップ言語(HTML)ドキュメントであり、リモートリソース(例えばサードパーティアプリケーション(群)又はサービス(群))からウェブサイトにコンテンツを提供し得る。このようにして、システムによって提供されたウェブサイトは、コンテンツを通信する/やりとりするために他のソースと統合され得る。
出願人は、レイテンシーを最小化することだけでなく、メモリデバイスのメモリスペースを節約することが、グループベースコミュニケーションシステムの任意の実現化を改良するために重要であることを特定した。レイテンシーを増やし、メモリ容量に制約を加えるソリューションは、計算リソースに不当な負担を生じ得て、これは、計算効率に悪影響を与え得て、ネットワークの低速化又はリソースの浪費(例えば帯域幅の減少)を生じ得る。
出願人は、iframeを用いてコンテンツをコンテンツソースからシステムのウェブサイトへと通信することには技術的な欠点が存在することに気づいた。例えば、iframeがロードされる時、ウェブサイトのiframeが用いられたウェブページのスクリプトは、ロード時間が長くなり、ネットワークリソースを消費することになり得て、その結果、ユーザーインターフェイスのレイテンシーが増える。
さらに、ウェブサーバーへの接続の数がウェブページとiframeとの間でふつうは共有されるので、このことは、接続を制限し、そのウェブページをロードしているユーザーインターフェイスのロードを典型的には遅くすることになる。さらにiframeは、典型的にはメモリ内で大きく、メモリ消費が大きいので、iframeは、典型的にはネットワークレイテンシーを増やし、iframeを処理するためのネットワークリソース(例えば処理容量、帯域幅)を制限し得る。
例示的実施形態は、コンテンツのリモートソース(例えばアプリケーション、サービス等)をグループベースコミュニケーションシステムと統合するために特別に構成された共有アプリケーションプログラミングインターフェイス(API)を利用し得る。特別に構成された共有APIを利用することによって、例示的実施形態は、極端に多いデータを検索することなく、グループベースコミュニケーションシステムに関連付けられたリモートリソース(例えばサードパーティアプリケーション、サービス等)の関連するリモートデータオブジェクト(例えば要求されたファイル、コール(例えば電話の通話)、イベントデータ、カレンダーデータ等)を特定し得る。これは、関連するリモートデータオブジェクトが、メッセージ内で特定可能であり得る(例えばリモートリソースは、メッセージ内のリンク(例えば統一資源位置指定子(URL))から特定可能であり得る)、グループベースコミュニケーションシステムのリモートリソース(群)の記憶の中でインデックス作成され得るからである。関連するリモートデータオブジェクトについてのリモートリソースの極端に多いデータを検索しないことに関連するクエリーレイテンシーの最小化によって、例示的実施形態は、ネットワークリソース(例えば処理容量、帯域幅)を節約することもできる。
さらに、例えばiframeのためのスクリプト等のような他のデータとは異なって、グループベースコミュニケーションシステムにリンクされているアプリケーション又はサービスに関連付けられた、関連する要求された情報(例えば登録されたユーザーに関連付けられた要求されたファイル)をユーザーインターフェイスにロードすることによって、例示的実施形態の特別に構成された共有APIは、例示的実施形態をより速くし、例示的実施形態の方がiframeを利用するシステムよりもユーザーインターフェイスをロードするのが速くなるようにし得る。
よって、本開示によるさまざまな実施形態によって構築されたシステムは、あるシステムが遭遇する技術的問題に対する具体的な技術的ソリューションを提供する。
[定義]
ここで用いられるように「データ」、「コンテンツ」、「デジタルコンテンツ」、「デジタルコンテンツコンテンツオブジェクト」、「情報」という語、及び同様の語は、本開示の実施形態に従って送信、受信、及び/又は記憶されることが可能なデータを表すために相互交換的に用いられ得る。よって、任意のそのような語の使用は、本開示の実施形態の精神及び範囲を限定するように解釈されるべきではない。さらに、データを他の計算デバイスから受け取るための計算デバイスがここで記載されるが、このデータは、他の計算デバイスから直接に受け取られてもよく、又は、例えば、1つ以上のサーバー、リレー、ルータ、ネットワークアクセスポイント、基地局、ホスト、及び/又は同様のもののような、「ネットワーク」とここで呼ばれることもある、1つ以上の媒介する計算デバイスを介して間接的に受け取られてもよいことが理解されよう。同様に、計算デバイスは、他の計算デバイスにデータを送るようここでは記載されるが、このデータは、他の計算デバイスに直接に送られてもよく、又は1つ以上の中間計算デバイスを介して、例えば1つ以上のサーバー、リレー、ルータ、ネットワークアクセスポイント、基地局、ホスト及び/又はその他を介して、間接的に送られてもよいことが理解されるだろう。
「コンピュータ読み取り可能な記憶媒体」という語は、非一時的な、物理的つまり有体の記憶媒体(例えば揮発性又は不揮発性メモリ)を表し、これは、電磁信号を表す「コンピュータ読み取り可能な伝送媒体」とは区別され得る。
「クライアントデバイス」という語は、サーバーによって利用可能にされたサービスにアクセスするよう構成されたコンピュータハードウェア及び/又はソフトウェアを表す。サーバーは、しばしば(いつもではないが)他のコンピュータシステム上にあり、その場合、クライアントデバイスは、ネットワークによってサービスにアクセスする。クライアントデバイスは、限定としてではなく、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、ウェラブル機器、パーソナルコンピュータ、エンタープライズコンピュータ等を含み得る。
「グループベース」は、規定されたグループのユーザー群にだけアクセス可能であるのに十分なセキュリティを有するシステム、チャンネル、メッセージ、又は仮想環境を表すためにここでは用いられている。このグループは、オーガナイゼーション又は商業エンタープライズのもののようなコモンアクセス信任状によって定義され得る。アクセスは、参加するための認証された要求又はあるグループメンバーユーザーから他の非メンバーユーザーに送信された参加するための招待によってさらに促進され得る。グループ識別子(以下に定義される)は、データ、情報、メッセージ等を特定のグループと関連付けるために用いられる。
「グループベースコミュニケーションシステム」という語は、コミュニケーションソフトウェアプラットフォームと、複数のグループベースコミュニケーションインターフェイス及び全ての関連付けられた機能をサポートし維持するよう構成された関連付けられたハードウェアとを表す。グループベースコミュニケーションシステムユーザーは、オーガナイゼーショングループに組織化され(例えば、異なる会社の従業員は、別のオーガナイゼーショングループ群であり得る)、それぞれのグループは、それぞれのグループベースコミュニケーションインターフェイスを介してシステムとインタラクトする。例えば、そのグループベースコミュニケーションシステムは、とりわけ、Slack Corporationのグループベースコミュニケーションインターフェイス及びACME Corporationのグループベースコミュニケーションインターフェイスをサポートするかもしれない。例示的グループベースコミュニケーションシステムは、サポーティングサーバー、クライアントデバイス、及びサードパーティーリソースを備える。
「グループベースコミュニケーションインターフェイス」という語は、グループベースコミュニケーションシステムとのユーザーインタラクションを促進するよう構成された仮想コミュニケーション環境を表す。それぞれのグループベースコミュニケーションインターフェイスは、企業又はオーガナイゼーションの従業員のグループのような、ユーザーの選ばれたグループがアクセス可能であり、閲覧可能である(例えばSlack Corp.のインターフェイスは、Slackの従業員がアクセス可能であり、閲覧可能であるが、ACME Corporationのグループベースコミュニケーションインターフェイスは、Slackの従業員にはアクセス可能及び閲覧可能ではない)。グループベースコミュニケーションインターフェイスは、以下で定義される複数のグループベースコミュニケーションチャンネル(例えばマーケティングチャンネル、セールスチャンネル、アカウンティングチャンネル等)を含む。
「グループベースコミュニケーションチャンネル」という語は、当該グループのメンバーだけに閲覧可能である、チャンネルメンバー(例えばクライアントデバイスを用いて環境にアクセスする認証されたユーザー)によってポストされたメッセージングコミュニケーションを表示するよう構成された仮想的な通信環境つまりフィードを表す。グループベースコミュニケーションチャンネルのフォーマットは、グループベースコミュニケーションチャンネルの異なるメンバーには異なるように見えるかもしれない。しかし、グループベースコミュニケーションのチャンネルのコンテンツ(すなわちメッセージングコミュニケーション)は、そのグループベースコミュニケーションチャンネルのそれぞれのメンバーに表示される。例えば、グループベースメッセージングコミュニケーションのコモンセット(common set)は、それぞれのグループベースコミュニケーションチャンネルのそれぞれのメンバーに表示されて、グループベースコミュニケーションチャンネルのコンテンツ(すなわちメッセージングコミュニケーション)がグループベースコミュニケーションチャンネルのメンバーごとに変わらないようにする。
「ユーザー」という語は、個人、企業、オーガナイゼーション、及びこれらの類似物の個人、グループを表すと理解されるべきであり、ここで参照されるユーザー群は、クライアントデバイスを用いてグループベースコミュニケーション又はメッセージングシステムにアクセスしている。
「ユーザープロフィール」、「ユーザーアカウント」、及び「ユーザーアカウント詳細」という語は、ユーザーと関連付けられた情報を表し、これには、例えば、ユーザー識別子、そのユーザーがアクセスを認められているグループベースコミュニケーションチャンネルと関連付けられた1つ以上のグループベースコミュニケーションチャンネル識別子、そのユーザーが関連付けられているグループの1つ以上のグループ識別子、そのユーザーがいずれかのグループベースコミュニケーションチャンネルのオーナーであるかについての表示、ユーザーがいずれかのグループベースコミュニケーションチャンネルの制限を有するかについての表示、複数のメッセージ、複数の絵文字、複数の会話、複数の会話トピックス、グラフィック表現、電子メールアドレス、実名(例えばJohn Doe)、ユーザー名(例えばjdoe)、パスワード、実名、時間帯、ステータス等が含まれる。ユーザーアカウント詳細は、例えば、そのユーザーのユーザー名及びパスワードを含むそのユーザーのログイン情報のようなユーザー資格情報(user credentials)のサブセット指定を含み得る。
「グループベースコミュニケーションチャンネル識別子」又は「チャンネル識別子」という語は、グループベースコミュニケーションチャンネルが特定され得る、データの1つ以上のアイテムを表す。例えば、グループベースコミュニケーションチャンネル識別子は、米国規格協会情報交換標準コード(ASCII)テキスト、ポインタ、メモリアドレス、及びこれらの類似物を含み得る。
「グループ識別子」又は「チーム識別子」という語は、グループベースコミュニケーションシステム内のグループが特定され得る、データの1つ以上のアイテムを表す。例えば、グループ識別子は、ASCIIテキスト、ポインタ、メモリアドレス、及びこれらの類似物を含み得る。ある実施形態では、Slack Corporationのワークスペース(すなわちグループベースコミュニケーションインターフェイス)のメンバーユーザーに関連付けられたグループ識別子は、104356721である。
「リモートリソース」という語は、グループベースコミュニケーションインターフェイスを介してクライアントデバイスにサービスを提供するためにグループベースコミュニケーションシステムと通信するよう構成されたソフトウェアプログラム、アプリケーション、プラットフォーム、又はサービスを表す。リモートリソースは、グループベースコミュニケーションシステムをサポートするものとは別個で、異なる、コンパイルされたコードベース又はリポジトリ上で動作する。ある実施形態では、リモートリソースは、1つ以上のアプリケーションプログラムインターフェイス(API)を通じてグループベースコミュニケーションシステムと通信し得て、グループベースコミュニケーションシステムも同様にリモートリソースと通信し得る。ある実施形態では、リモートリソースは、グループベースコミュニケーションシステムネットワークセキュリティレイヤ又はプロトコル(例えばネットワークファイヤーウォールプロトコル)を鑑みて、リモートリソースとグループベースコミュニケーションシステムとの間でのセキュアな通信を促進するために用いられるトークン又は他の認証資格情報を受け取る。
「リモートデータオブジェクト」又は「リモートで記憶されたデータオブジェクト」という語は、リモートリソースに関連付けられているが、グループベースコミュニケーションシステムの1つ以上のグループベースインターフェイスと共有され得る、メモリ又はデータベースに記憶されているファイル(群)、コールオブジェクト(群)、タスク(群)、イベントオブジェクト(群)、メッセージ又はメッセージオブジェクト(群)、通知又は通知オブジェクト(群)、又はカレンダーオブジェクト(群)を表す。ある実施形態では、リモートデータオブジェクトは、リモートデータオブジェクトアドレスに記憶され、これは、統一資源位置指定子(URL)、インターネットアドレス、又はイントラネットドメインであり得る。
「ローカルに記憶されたデータオブジェクト」という語は、グループベースコミュニケーションシステムに関連付けられたメモリ又はデータベースに記憶されたファイル(群)、コールオブジェクト(群)、タスク(群)、イベントオブジェクト(群)、又はカレンダーオブジェクト(群)を表す。
「ローカル装置メモリ」という語は、ローカルに記憶されたデータオブジェクトを記憶するグループベースコミュニケーションシステムに関連付けられたメモリ又はデータベースを表す。
「リモートリソースメモリ」という語は、リモートで記憶されたデータオブジェクトを記憶するリモートリソースに関連付けられたメモリ又はデータベースを表す。
「共有アプリケーションプログラミングインターフェイス」(共有API)という語は、グループベースコミュニケーションシステム及び1つ以上のリモートリソースの中で及びそれらの間でリモートデータオブジェクトの共有を促進する1セットのルーチン群、プロトコル群、及びソフトウェアシステムツール群を表す。さまざまな実施形態においては、共有APIは、リモートリソースがそのリモートデータオブジェクトを、グループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイス内のユーザーによる共有のために利用可能にさせ得るプロトコル及びプロシージャステップを定義する。共有APIは、リモートリソースとグループベースコミュニケーションシステムとの間の通信を支配するセキュリティ及び認証プロトコルをさらに定義する。
「リモートデータオブジェクトグラフィック表現(remote date object graphical representation)」は、リモートデータオブジェクトを表現し、グループベースコミュニケーションインターフェイス内でレンダリングされるグラフィック表現(例えば画像ファイル)、アイコン、ロゴ、トゥームストーン(tombstone)、図、又はそれらの類似物を表す。さまざまな実施形態においては、リモートデータオブジェクトグラフィック表現は、ユーザーが、リモートリソースの関連付けられたリモートデータオブジェクトとインタラクトする又はアップデートすることを可能にするよう構成されたユーザーエンゲージ可能なリンクを実現する。さまざまな実施形態では、リモートデータオブジェクトグラフィック表現は、リモートリソースから受け取られたリモートデータオブジェクトメタデータに少なくとも部分的に基づいてレンダリングされる。
「データオブジェクトグラフィック表現」という語は、リモートデータオブジェクト又はローカルに記憶されたデータオブジェクトを表現し、グループベースコミュニケーションインターフェイスに対してユーザー共有データオブジェクトリスト又はコモンオブジェクトタイプリスト内でレンダリングされるグラフィック表現(例えば画像ファイル)、アイコン、ロゴ、トゥームストーン、図、又はそれらの類似物を表す。
「共有ロケーション識別子」という語は、グループベースコミュニケーションシステムによって読み取り可能であるグループベースコミュニケーションインターフェイス内のリモートデータオブジェクトの意図された位置についての指示又はアドレスである。さまざまな実施形態において、共有ロケーション識別子は、ASCIIテキスト、ポインタ、メモリアドレス、及びそれらの類似物を含む。ある実施形態では、共有ロケーション識別子は、グループベースコミュニケーションチャンネル識別子又はダイレクトメッセージ(DM)識別子を含む。
「リモートデータオブジェクトメタデータ」という語は、関連付けられたリモートデータオブジェクトを記載するデータセットを表す。リモートデータオブジェクトメタデータは、グループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイス内でリモートデータオブジェクトの共有を可能にするために、リモートリソースによってグループベースコミュニケーションシステムへ送信される。例示的リモートデータオブジェクトメタデータは、リモートリソース識別子、リモートデータオブジェクトグラフィック表現、リモートデータオブジェクト識別子、リモートデータオブジェクトタイプ識別子、リモートデータオブジェクトアドレス、リモートデータオブジェクト作成者識別子、リモートデータオブジェクト受信者識別子、共有ロケーション識別子、リモートデータオブジェクト作成タイムスタンプ、リモートデータオブジェクトアクセスタイムスタンプ、及びそれらの類似物を含む。
「共有ロケーション」という語は、共有ロケーション識別子によって指定され、それによって共有されているリモートデータオブジェクトを受け取るように意図されるグループベースコミュニケーションインターフェイスの位置を表す。例示的共有ロケーションは、グループベースコミュニケーションチャンネル及びダイレクトメッセージインターフェイスである。
「リモートデータオブジェクト共有リクエスト」という語は、リモートデータオブジェクトをグループベースコミュニケーションインターフェイスと共有しろという命令を含む、クライアントデバイス(又はクライアントデバイス上で実行されているアプリケーション)によって生成され、及びグループベースコミュニケーションシステムに送信されるメッセージを表す。例示的リモートデータオブジェクト共有リクエストは、リモートデータオブジェクト識別子、リモートリソース識別子、グループ識別子、共有ロケーション識別子、共有ユーザー識別子、共有タイムスタンプ、及びそれらの類似物を含むデータセットを含み得る。
「リモートデータオブジェクト識別子」という語は、リモートデータオブジェクトの識別を可能にするデータの1つ以上のアイテムを表す。例示的実施形態では、リモートデータオブジェクト識別子は、ASCIIテキスト、ポインタ、メモリアドレス、及びこれらの類似物を含み得る。ある実施形態では、リモートデータオブジェクト識別子は、リモートデータオブジェクトバージョン情報を含む。
「リモートリソース識別子」という語は、そのリモートデータオブジェクトに関連付けられたリモートリソースによってリモートデータオブジェクトに割り当てられたリモートデータオブジェクト識別子である。例えば、ドキュメントリモートデータオブジェクトについてのリモートリソース識別子は、ドキュメントリモートデータオブジェクトを記憶するリモートリソースによってドキュメントリモートデータオブジェクトに割り当てられたドキュメント識別子であり得る。
「ローカル識別子」という語は、グループベースコミュニケーションシステムによってリモートデータオブジェクトに割り当てられたリモートデータオブジェクト識別子である。例えば、ドキュメントリモートデータオブジェクトについてのリモートリソース識別子は、グループベースコミュニケーションシステムによってドキュメントリモートデータオブジェクトに割り当てられたドキュメント識別子であり得る。
「リモート相関テーブル」という語は、リモートデータオブジェクトについてのリモートリソース識別子及びそのリモートデータオブジェクトについてのローカル識別子を同じリモート相関テーブルエントリの一部として記憶するデータの1つ以上のアイテムの構造化された集合体である。ある実施形態では、リモートデータオブジェクト識別子は、そのリモート相関テーブルについてのプライマリキーである。ある実施形態では、リモートデータオブジェクトについてのローカル識別子は、そのリモート相関テーブルについてのプライマリキーではない。リモート相関テーブルは、リレーショナルデータベース(例えばSQLデータベース)中のテーブル及び/又は構造化ファイルベースのデータベース(structured-file-based database)(例えばJSONデータベース)中のファイルであり得る。
「ローカル相関テーブル」という語は、リモートデータオブジェクトについてのローカル識別子及びそのリモートデータオブジェクトについての1つ以上のリモートデータオブジェクトメタデータエントリを同じローカル相関テーブルエントリの一部として記憶するデータの1つ以上のアイテムの構造化された集合体である。ある実施形態では、ローカル識別子は、そのローカル相関テーブルについてのプライマリキーである。ローカル相関テーブルは、リレーショナルデータベース(例えばSQLデータベース)中のテーブル及び/又は構造化ファイルベースのデータベース(例えばJSONデータベース)中のファイルであり得る。
「リモートデータオブジェクト共有通知」という語は、リモートリソースのリモートデータオブジェクトの、グループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイスとの共有を可能にする、グループベースコミュニケーションシステムによって生成され、リモートリソース(群)に送信されたメッセージを表す。例示的リモートデータオブジェクト共有通知は、リモートデータオブジェクト識別子及び共有タイムスタンプを含む。ある実施形態では、リモートデータオブジェクト共有通知は、共有ユーザー識別子、共有ロケーション識別子、認証トークン、及びそれらの類似物を含み得る。
「共有ユーザー識別子」は、リモートデータオブジェクトのグループベースコミュニケーションインターフェイスとの共有を開始したグループベースコミュニケーションユーザーの識別を可能にする、データの1つ以上のアイテムを表す。さまざまな実施形態では、共有ユーザー識別子は、ASCIIテキスト、ポインタ、メモリアドレス、及びこれらの類似物を含み得る。
「ユーザー共有データオブジェクトリスト(user shared data object list)」という語は、ローカルに記憶されたデータオブジェクト及びリモートに記憶されたデータオブジェクトに関連付けられた、共有ユーザー識別子に関連付けられたグループベースコミュニケーションユーザーによって共有されるデータオブジェクトグラフィック表現のリストを表す。ユーザー共有データオブジェクトリストは、共有ユーザー識別子に関連付けられたグループベースコミュニケーションユーザーによって共有されるファイル、コールオブジェクト、タスク、イベントオブジェクト、及びカレンダーオブジェクトに関連付けられたデータオブジェクトグラフィック表現を含み得る。
「コモンオブジェクトタイプリスト」という語は、ローカルに記憶されたデータオブジェクト及びリモートに記憶されたデータオブジェクトに関連付けられた、リモートデータオブジェクトタイプ識別子(例えばファイルタイプ識別子、コールオブジェクトタイプ識別子、タスクタイプ識別子、イベントタイプ識別子、カレンダータイプ識別子)に関連付けられたデータオブジェクトグラフィック表現のリストを表す。ある例示的実施形態では、コモンオブジェクトタイプリストは、それぞれのリモートデータオブジェクトタイプ識別子に基づいて、ファイルだけに、コールオブジェクトだけに、タスクだけに、イベントオブジェクトだけに、又はカレンダーオブジェクトだけに関連付けられたデータオブジェクトグラフィック表現を含み得る。
「アクセスリーセンシー(access recency)」という語は、ローカルに記憶されたデータオブジェクト及びリモートに記憶されたデータオブジェクトが共有ユーザー識別子に関連付けられたグループベースコミュニケーションユーザーによって共有されたリーセンシー(すなわち最も最近の時間的近接性)、又はリモートデータオブジェクトタイプ識別子に関連付けられたローカルに記憶されたデータオブジェクトがグループベースコミュニケーションシステムでアクセスされ、リモートデータオブジェクトタイプ識別子に関連付けられたリモートに記憶されたデータオブジェクトがリモートリソースでアクセスされたリーセンシーを表す。
グループベースコミュニケーションシステムユーザーは、オーガナイゼーショングループに組織化され(organized)(例えばそれぞれの会社の従業員は、別々のオーガナイゼーショングループであり得る)、それぞれのオーガナイゼーショングループは、ユーザーが割当され得る又はユーザーが参加し得る(例えばグループベースコミュニケーションチャンネルは、部署、オフィスのような地理的位置、製品ライン、ユーザーの関心、トピック、問題、及び/又はこれらの類似物)1つ以上のグループベースコミュニケーションチャンネル(以下で説明される)を有し得る。グループ識別子は、メッセージのためのアクセス制御を促進するのに用いられ得る(例えば検索クエリに応答して検索結果の一部としてメッセージリターンを持つようなメッセージへのアクセスは、それらのユーザープロフィールに関連付けられたグループ識別子を有するそれらユーザーに制限され得る)。グループ識別子は、メッセージについてのコンテキストを決定するのに用いられ得る(例えばオーガナイゼーションの名称及び/又はオーガナイゼーションの簡単な説明のようなグループの記述がグループ識別子に関連付けられ得る)。
グループベースコミュニケーションシステムユーザーは、グループベースコミュニケーションチャンネルに参加し得る。一部のグループベースコミュニケーションチャンネルは、それらのユーザープロフィールに関連付けられた特定のオーガナイゼーションのグループ識別子を有するそれらユーザーにとってはグローバルにアクセス可能であり得る(すなわちそのオーガナイゼーションのメンバーであるユーザー)。一部のグループベースコミュニケーションチャンネルへのアクセスは、特定のグループのメンバーに制限され得て、それによってグループベースコミュニケーションチャンネルは、それらのユーザープロフィールに関連付けられた特定のグループ識別子を有するそれらユーザーにアクセス可能である。グループベースコミュニケーションチャンネル識別子は、メッセージについてのアクセス制御を促進するために用いられ得る(例えば、検索クエリに応答して検索結果の一部としてメッセージリターンを持つようなメッセージへのアクセスは、それらのユーザープロフィールに関連付けられたグループ識別子を有し、又はグループベースコミュニケーションチャンネルに参加する能力を有するそれらユーザーに制限され得る)。グループベースコミュニケーションチャンネル識別子は、メッセージのコンテキストを決定するのに用いられ得る(例えば、グループベースコミュニケーションチャンネルで議論されるプロジェクトの説明のような、グループベースコミュニケーションチャンネルの説明は、グループベースコミュニケーションチャンネル識別子に関連付けられ得る)。
「プライベートグループベースコミュニケーションチャンネル」という語は、制限されたアクセスを持つことによって、グループベースコミュニケーションシステムの他のメンバーによって一般にはアクセス可能ではなく及び/又は検索可能ではないグループベースコミュニケーションチャンネルを表す。例えば、プライベートグループベースコミュニケーションチャンネルへのアクセスについての知識及び許可を有する(例えば、ユーザーが許可/認証された後に、プライベートグループベースコミュニケーションチャンネルについてのグループベースコミュニケーションチャンネル識別子がそれらのユーザープロフィールに関連付けられる)ユーザー又は管理者だけが、プライベートグループベースコミュニケーションチャンネルのコンテンツを見ることができる。
リモートデータオブジェクトについての「リモートプレビュー」という語は、リモートデータオブジェクトは、そのリモートプレビューについてのリモートプレビューリクエストが生成されるユーザーインターフェイスからの完全な遷移を実行することなく、リモートデータオブジェクトについての情報を提供するユーザーインターフェイスエレメント群の組み合わせを表す。例えば、リモートデータオブジェクトについてのリモートプレビューは、そのリモートデータオブジェクトについての1つ以上のリモートデータオブジェクトメタデータ情報を含み得る。他の例として、リモートデータオブジェクトについてのリモートデータプレビューは、リモートデータオブジェクト(例えば画像の形態である)のコンテンツの一部を含み得る。ある実施形態では、同時に表示可能であるユーザーインターフェイスエレメントの2つ以上のセットを有するリモートデータオブジェクトは、同時に表示可能なユーザーインターフェイスエレメントのある1セットと、同時に表示可能なユーザーインターフェイスエレメントの他の1セットとの間での遷移を可能にするインタラクティブコンポーネンツを有し得る。
「リモートプレビューマークアップデータ」という語は、リモートプレビューのマークアップ言語コードの少なくとも1つの局面を記載するよう構成されたデータの1つ以上のアイテムを表す。例えば、リモートプレビューマークアップデータは、特定のリモートプレビューについてのハイパーテキストトランスファープロトコルを含み得る。他の例として、リモートプレビューマークアップデータは、特定のリモートプレビューについての画像データを含み得る。
「リモートプレビューリクエスト」という語は、リモートデータオブジェクトについてリモートプレビューを生成し及び表示するリクエストを示すよう構成されたデータの1つ以上のアイテムを表す。例えば、リモートデータオブジェクトについてのリモートプレビューリクエストは、リモートデータオブジェクトについてのリモートプレビューをリクエストするよう構成されたグループベースコミュニケーションシステムのエンドユーザープロフィールによる1つ以上のアクションに基づいて生成され得る。適切なアクションの例には、ポインタをそのリモートデータオブジェクトについてのリモートデータオブジェクトグラフィック表現の上でホバリングさせること、そのリモートデータオブジェクトについてのリモートプレビューをリクエストするよう構成されたキー組み合わせをタイプすること、リモートデータオブジェクトについてのリモートプレビューをリクエストするよう構成されたタッチパターンを実行すること(例えば2本の指の拡張タッチパターン及び/又は2本の指の最小化タッチパターン)、そのリモートデータオブジェクトについてのリモートデータオブジェクトグラフィック表現の上で右クリックを実行すること等が含まれる。
「リモートプレビューメタデータ」という語は、リモートデータオブジェクトについてのリモートプレビューを生成することに関連する情報を含むリモートデータオブジェクトに関連付けられたリモートサーバーに記憶されたデータの1つ以上のアイテムを表す。ある実施形態では、リモートプレビューメタデータは、そのリモートデータオブジェクトについての1つ以上のアクセスセキュリティポリシー、リモートデータオブジェクトのインタラクティブプレビュー、リモートデータオブジェクトのインデックス付きのバージョン等のうちの少なくとも1つを含み得る。例えば、リモートリソースは、リモートデータオブジェクトの特定の部分がアクセス制限されていることを特定し、リモートプレビューメタデータの少なくとも一部分として、そのような特定の部分を含まないリモートデータオブジェクトのインタラクティブプレビューを生成し得る。ある実施形態では、リモートプレビューメタデータは、そのリモートデータオブジェクトについてはプレビューに関連する情報が何も利用可能ではないことを示し得る。
「ローカルプレビューメタデータ」という語は、リモートデータオブジェクトについてのリモートプレビューを生成することに関連する情報を含むグループベースコミュニケーションシステムに記憶されたデータの1つ以上のアイテムを表す。ある実施形態では、リモートデータオブジェクトについてのリモートオブジェクトメタデータは、リモートデータオブジェクトのリモートプレビューを生成するのに用いられ得る情報(例えばリモートデータオブジェクトのインデックス付きバージョン)を含む。
「リモートメタデータリクエスト」という語は、リモートデータオブジェクトについてのリモートプレビューメタデータの、そのリモートデータオブジェクトに関連付けられたリモートリソースからの送信をリクエストするよう構成されたデータの1つ以上のアイテムを表す。例えば、リモートメタデータリクエストは、グループベースコミュニケーションサーバーから、リモートデータオブジェクトに関連付けられたリモートリソースへと送信され得る。
「リモートオブジェクトアクセスリクエスト」は、リモートデータオブジェクトに関連付けられたデータの1つ以上のアイテムを取得及び/又は変更するリクエストをするよう構成されたデータの1つ以上のアイテムを表す。ある実施形態では、リモートオブジェクトアクセスリクエストは、リモートデータオブジェクトに関連付けられた情報(例えばリモートオブジェクトメタデータ情報)を検索したいというリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、リモートデータオブジェクトのコンテンツを閲覧したいというリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、リモートデータオブジェクトのコンテンツを変更したいというリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、リモートデータオブジェクトを削除したいというリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、リモートデータオブジェクトのプロパティ(例えばアクセス制限パラメータ、アドレス等)を変更したいというリクエストである。
「アクセス制御パラメータ」という語は、リモートデータオブジェクトに対して特定のアクションを実行することを、どのユーザープロフィールが許可されるかを記述するよう構成されているデータの1つ以上のアイテムを表す。例えば、リモートデータオブジェクトについての特定のアクセス制御パラメータは、特定のカテゴリのユーザーだけが特定のリモートデータオブジェクトの特定のコンテンツを変更する権限を有することを示し得る。他の例として、リモートデータオブジェクトについての特定のアクセス制御パラメータは、特定のカテゴリのユーザーだけが特定のリモートデータオブジェクトの特定のコンテンツを閲覧する権限を有することを示し得る。さらなる例として、リモートデータオブジェクトについての特定のアクセス制御パラメータは、特定のカテゴリのユーザーだけが特定のリモートデータオブジェクトの特定のプロパティ(例えばアクセス制御パラメータ)を変更する権限を有することを示し得る。
「自動的にレンダリングすること」という語は、1つ以上のコンピューティングデバイス(例えば1つ以上のクライアントデバイス)に1つ以上のユーザーインターフェイスをレンダリングさせるよう構成された1つ以上の操作を表す。例えば、特定のユーザーインターフェイスを自動的にレンダリングするために、グループベースコミュニケーションサーバーは、対応するグループベースコミュニケーションシステムの1つ以上のクライアントデバイス群に、特定のユーザーインターフェイスをレンダリングさせ得る(例えばユーザーインターフェイスをクライアントデバイスにレンダリングするための命令を送信することによって)。
[例示的システムアーキテクチャ]
本開示の方法、装置、及びコンピュータプログラム製品は、さまざまなデバイスの任意のものによって実現され得る。例えば、例示的実施形態の方法、装置、及びコンピュータプログラム製品は、1つ以上のクライアントデバイスのような1つ以上のデバイスと通信するよう構成されるサーバー又は他のネットワークエンティティのようなネットワーク接続されたデバイス(例えばエンタープライズプラットフォーム)によって実現され得る。追加として又は代替として、計算デバイスは、パーソナルコンピュータ又はコンピュータワークステーションのような固定された計算デバイスを含み得る。さらに例示的実施形態は、携帯デジタルアシスタント(PDA)、携帯電話、スマートフォン、ラップトップコンピュータ、タブレットコンピュータ、ウェアラブルデバイス、又は前述のデバイスの任意の組合せのような、さまざまなモバイルデバイスの任意のものによって実現され得る。
図1は、本開示の実施形態が動作し得る例示的システムアーキテクチャ100を示す。ユーザーは、クライアントデバイス101A-101Nを用いて通信ネットワーク103を介してグループベースコミュニケーションシステム105にアクセスし得る。
クライアントデバイス101A-101Nは、上で定義されたような任意のコンピューティングデバイスであり得る。クライアントデバイス101A-101Nからグループベースコミュニケーションシステム105によって受け取られた電子データは、さまざまな形態で、かつさまざまな方法を介して提供され得る。例えば、クライアントデバイス101A-101Nは、デスクトップコンピュータ、ラップトップコンピュータ、スマートフォン、ネットブック、タブレットコンピュータ、ウェアラブルデバイス、及びこれらの類似物を含み得る。
クライアントデバイス101A-101Nのうちのクライアントデバイスが、スマートフォン又はタブレットのようなモバイルデバイスである実施形態においては、クライアントデバイス101A-101Nのうちのそのクライアントデバイスは、グループベースコミュニケーションシステム105と相互作用するために「アプリ」を実行し得る。そのようなアプリは、タブレット又はスマートフォンのようなモバイルデバイス上で動作するように典型的には設計される。例えば、アプリは、iOS(登録商標)、Android(登録商標)、又はWindows(登録商標)のようなモバイルデバイスオペレーティングシステム上で動作するよう提供され得る。これらプラットフォームは、アプリが互いに、及びモバイルデバイスの特定のハードウェア及びソフトウェア要素と通信することを可能にするフレームワークを典型的には提供する。例えば、上で挙げられたモバイルデバイスオペレーティングシステムは、それぞれ、位置サービス回路、有線及び無線ネットワークインターフェイス、ユーザコンタクト、及び他のアプリケーションと相互作用するためのフレームワークを提供する。
追加として又は代替として、クライアントデバイス101A-101Nのうちのそのクライアントデバイスは、ウェブブラウザを介してグループベースコミュニケーションシステム105と相互作用し得る。さらに他の例として、クライアントデバイス101A-101Nのうちのそのクライアントデバイスは、グループベースコミュニケーションシステム105とインターフェイスするよう設計されたさまざまなハードウェア又はファームウェアを含み得る。
通信ネットワーク103は、例えば、それを実現するのに要求される任意のハードウェア、ソフトウェア及び/又はファームウェア(例えばネットワークルータ等のような)と共に、有線又は無線ローカルエリアネットワーク(LAN)、パーソナルエリアネットワーク(PAN)、メトロポリタンエリアネットワーク(MAN)、ワイドエリアネットワーク(WAN)及びそれらの類似物を含む任意の有線又は無線通信ネットワークを含み得る。例えば、通信ネットワーク103は、セルラー式電話、802.11、802.16、802.20、及び/又はWiMaxネットワークを含み得る。さらに、通信ネットワーク103は、インターネットのような公衆ネットワーク、イントラネットのようなプライベートネットワーク、又はそれらの組合せを含み得て、トランスポートコントロールプロトコル/インターネットプロトコル(TCP/IP)ベースのネットワーキングプロトコルを含むがこれには限定されない、現在利用可能な又は将来開発されるさまざまなネットワーキングプロトコルを利用し得る。例えば、ネットワーキングプロトコルは、グループベースコミュニケーションシステムの要求に合うようにカスタマイズされ得る。ある実施形態では、プロトコルは、ウェブソケットチャンネルを介して送られるJSONオブジェクトのカスタムプロトコルである。ある実施形態では、プロトコルは、JSON-RPC、JSON-REST/HTTP、及びこれらの類似物である。
ある実施形態では、オンラインデータ管理システム107は、グループベースコミュニケーションサーバー113、1つ以上のデータベース115、及びアプリケーションプログラミングインターフェイス(API)コンポーネント117を備える。
グループベースコミュニケーションサーバ113は、コンピュータ又はコンピュータ群として実現され得る。グループベースコミュニケーションサーバ113は、クライアントデバイス101A-101Nには限定されないがこれらを含むさまざまなソースからの電子データの受信のために設けられ得る。例えば、グループベースコミュニケーションサーバ113は、クライアントデバイス101A-101Nによって提供されたグループベースメッセージングコミュニケーションを通信ネットワーク103を介して受信及びポスト又は送信するよう動作可能であり得る。
APIコンポーネント117は、サーバー又はサーバー群のような1つ以上のコンピュータ又はコンピューティングデバイスで実現され得る。APIコンポーネント117は、グループベースコミュニケーションシステム105のさまざまなコンポーネントの間及び相互間のデータ伝送を促進するルーチン群、プロトコル群、及びソフトウェアシステムツール群のセットであり得る。例えば、APIコンポーネント117は、通信ネットワーク103を介してクライアントデバイス101A-101Nからクエリを受け取り得る。それは、グループベースコミュニケーションサーバー113からデータを受け取り、及びグループベースコミュニケーションサーバー113にデータを送ることもし得る。APIコンポーネント117は、1つ以上のデータベース115にデータを送ることもし得る。
さらに、APIコンポーネント117は、クライアントがメッセージ又はメッセージメタデータを探せるようにするルーチンを提供する。例えば、search.messagesAPIコンポーネントは、「クエリ」フィールドを有し、そのクエリで与えられる検索を実行する。APIコンポーネント117は、メッセージメタデータの検索も可能にする(例えばhas:reaction又はhas:star、from:john)。APIコンポーネント117は、リモートデータオブジェクトに関連付けられた情報の通信/やりとりのために、リモートリソースをグループベースコミュニケーションシステム105と統合するためのインターフェイスも提供する。
ネットワークアプリケーションサーバー109は、リモートデータオブジェクトに関連付けられた情報の通信/やりとりのために、APIコンポーネント117及び1つ以上の他のAPI群(例えば図2のAPI回路212)とインタラクトし得る。ある実施形態では、ネットワークアプリケーションサーバー109は、1つ以上のリモートリソースオブジェクトについてのリモートリソースプロバイダである。ネットワークアプリケーションサーバー109の例としては、クラウドファイルストレージプラットフォーム(例えばGoogle Drive、Dropbox、Box等)のようなファイルストレージプラットフォームがある。ネットワークアプリケーションサーバー109のさらなる例としては、カレンダープロバイダ、電子メールプロバイダ、又は他のリソースプラットフォームのようなアプリケーションリソースプラットフォーム(例えばWorkday、Asana、Jira、及びそれらの類似物)がある。図1に示された例示的システムアーキテクチャ100は、単一のネットワークアプリケーションサーバー109を示すが、システムアーキテクチャ100は、任意の個数のネットワークアプリケーションサーバー群109を含み得ることが理解されよう。
1つ以上のデータベース115は、ネットワーク接続型ストレージ(NAS)デバイス又はデバイス群のようなデータストレージデバイス(群)として、又は別個のデータベースサーバー又はサーバー群として実現され得る。ある実施形態では、1つ以上のデータベース115は、MySQLデータベース(群)のようなリレーショナルデータベース(群)である。1つ以上のデータベース115は、グループベースコミュニケーションサーバー113によってアクセスされ及び記憶され、APIコンポーネント117から送信された情報を含み、グループベースコミュニケーションサーバー113の動作を促進する。例えば、1つ以上のデータベース115は、複数のグループベースコミュニケーションチャンネル及び/又はそれらの類似物の間で組織化された複数のメッセージングコミュニケーションを限定ではなく含み得る。
この点において、1つ以上のデータベース115は、グループベースコミュニケーションシステム105の主データ記憶として機能し得る。以下に記載されるように、1つ以上のデータベース115は、データ記憶のバックアップ(スナップショット)を記憶し、インデックス生成プロセスのためにこれらバックアップが利用可能であるようにする。
インデックスコンパイラ133は、メッセージにインデックス付けするために、メタデータ及び/又はメッセージのコンテンツを処理し(例えば下に記載されるような従来のプリミティブを用いて)、及び検索のさまざまなファセット(すなわちグループベースコミュニケーションシステム105から結果を返す検索クエリ)を促進し得る。ある例示的実施形態では、会社の又はグループのメッセージは、別個にインデックス付けされるように(例えばそのグループ及び/又は会社に関連付けられた、他のグループ及び/又は会社とは共有されない別個のインデックスにおいて)、メッセージはインデックス付けされ得る。他の例示的実施形態では、メッセージは、別個の分散されたリポジトリにおいてインデックス付けされ得る(例えばセキュリティの目的で、データの分離を促進するために)。
1つ以上のクライアントデバイス101A-101N及びグループベースコミュニケーションシステム105の間での電子情報のやりとりの例が以下に記載される。
例示的グループベースコミュニケーションシステムのある実施形態では、メッセージつまりメッセージングコミュニケーションは、クライアントデバイス101A-101Nのうちのあるクライアントデバイスからグループベースコミュニケーションシステム105へ送られ得る。さまざまな実現例において、メッセージは、クライアントデバイス101A-101Nのうちのあるクライアントデバイスによって直接に、通信ネットワーク103を通じてグループベースコミュニケーションシステム105に送られ得る。メッセージは、グループベースコミュニケーションサーバー113及び/又はその類似物のような1つ以上の媒介を介してグループベースコミュニケーションシステム105に送られてもよい。例えば、クライアントデバイス101A-101Nは、デスクトップ、ラップトップ、タブレット、スマートフォン、及び/又はクライアントアプリケーションを実行しているそれらの類似物(例えばグループベースコミュニケーションアプリ)であり得る。
ある実現例では、メッセージは、メッセージ識別子、送信ユーザー識別子、グループ識別子、グループベースコミュニケーションチャンネル識別子、メッセージコンテンツ(例えばテキスト、絵文字、画像、リンク)、添付物(例えばファイル)、メッセージ階層データ(例えばそのメッセージは、他のメッセージの応答であり得る)、サードパーティメタデータ、及び/又はその他のようなデータを含み得る。ある実施形態では、クライアントデバイス101A-101Nは、以下に示されるような、エクステンシブルマークアップランゲージ(「XML」)でフォーマットされたデータを含む、(セキュア)ハイパーテキストトランスファプロトコル(「HTTP(S)」)POSTメッセージの形態を実質的にとる、以下の例示的メッセージを提供し得る。
POST /authrequest.php HTTP/1.1
Host: www.server.com
Content-Type: Application/XML
Content-Length: 667
<?XML version = “1.0” encoding = “UTF-8”?>
<auth_request>
<timestamp>2020-12-31 23:59:59</timestamp>
<user_accounts_details>
<user_account_credentials>
<user_name>ID_user_1</user_name>
<password>abc123</password>
//OPTIONAL <cookie>cookieID</cookie>
//OPTIONAL <digital_cert_link>www.mydigitalcertificate.com/ JohnDoeDaDoeDoe@gmail.com/mycertifcate.dc</digital_cert_link>
//OPTIONAL <digital_certificate>_DATA_</digital_certificate>
</user_account_credentials>
</user_accounts_details>
<client_details> //iOS Client with App and Webkit
//it should be noted that although several client details
//sections are provided to show example variants of client
//sources, further messages will include only on to save
//space
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53</user_agent_string>
<client_product_type>iPhone6,1</client_product_type>
<client_serial_number>DNXXX1X1XXXX</client_serial_number>
<client_UDID>3XXXXXXXXXXXXXXXXXXXXXXXXD</client_UDID>
<client_OS>iOS</client_OS>
<client_OS_version>7.1.1</client_OS_version>
<client_app_type>app with webkit</client_app_type>
<app_installed_flag>true</app_installed_flag>
<app_name>MSM.app</app_name>
<app_version>1.0 </app_version>
<app_webkit_name>Mobile Safari</client_webkit_name>
<client_version>537.51.2</client_version>
</client_details>
<client_details> //iOS Client with Webbrowser
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Version/7.0 Mobile/11D201 Safari/9537.53</user_agent_string>
<client_product_type>iPhone6,1</client_product_type>
<client_serial_number>DNXXX1X1XXXX</client_serial_number>
<client_UDID>3XXXXXXXXXXXXXXXXXXXXXXXXD</client_UDID>
<client_OS>iOS</client_OS>
<client_OS_version>7.1.1</client_OS_version>
<client_app_type>web browser</client_app_type>
<client_name>Mobile Safari</client_name>
<client_version>9537.53</client_version>
</client_details>
<client_details> //Android Client with Webbrowser
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (Linux; U; Android 4.0.4; en-us; Nexus S Build/IMM76D) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/534.30</user_agent_string>
<client_product_type>Nexus S</client_product_type>
<client_serial_number>YXXXXXXXXZ</client_serial_number>
<client_UDID>FXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX</client_UDID>
<client_OS>Android</client_OS>
<client_OS_version>4.0.4</client_OS_version>
<client_app_type>web browser</client_app_type>
<client_name>Mobile Safari</client_name>
<client_version>534.30</client_version>
</client_details>
<client_details> //Mac Desktop with Webbrowser
<client_IP>10.0.0.123</client_IP>
<user_agent_string>Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.75.14 (KHTML, like Gecko) Version/7.0.3 Safari/537.75.14</user_agent_string>
<client_product_type>MacPro5,1</client_product_type>
<client_serial_number>YXXXXXXXXZ</client_serial_number>
<client_UDID>FXXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX</client_UDID>
<client_OS>Mac OS X</client_OS>
<client_OS_version>10.9.3</client_OS_version>
<client_app_type>web browser</client_app_type>
<client_name>Mobile Safari</client_name>
<client_version>537.75.14</client_version>
</client_details>
<message>
<message_identifier>ID_message_10</message_identifier>
<team_identifier>ID_team_1</team_identifier>
<channel_identifier>ID_channel_1</channel_identifier>
<contents>That is an interesting invention. I have attached a copy our patent policy.</contents>
<attachments>patent_policy.pdf</attachments>
</message>
</auth_request>
グループベースコミュニケーションシステム105は、1つ以上のデータベース115におけるメッセージの記憶を促進するために、受信されたメッセージに基づいて記憶メッセージを作成し得る少なくとも1つのグループベースコミュニケーションサーバ113を備える。ある実現例では、記憶メッセージは、メッセージ識別子、グループ識別子、グループベースコミュニケーションチャンネル識別子、送信ユーザー識別子、トピックス、レスポンス、メッセージコンテンツ、添付物、メッセージ階層データ、サードパーティメタデータ、会話プリミティブデータ及び/又はその他のようなデータを含み得る。例えば、グループベースコミュニケーションサーバ113は、以下に示すような、XMLでフォーマットされたデータを含む、HTTP(S) POSTメッセージの形態を実質的にとる、以下の例示的記憶メッセージを提供し得る。
POST /storage_message.php HTTP/1.1
Host: www.server.com
Content-Type: Application/XML
Content-Length: 667
<?XML version = “1.0” encoding = “UTF-8”?>
<storage_message>
<message_identifier>ID_message_10</message_identifier>
<team_identifier>ID_team_1</team_identifier>
<channel_identifier>ID_channel_1</channel_identifier>
<sending_user_identifier>ID_user_1</sending_user_identifier>
<topics>
<topic>inventions</topic>
<topic>patents</topic>
<topic>policies</topic>
</topics>
<responses>
<response>liked by ID_user_2</response>
<response>starred by ID_user_3</response>
</responses>
<contents>That is an interesting invention. I have attached a copy our patent policy.</contents>
<attachments>patent_policy.pdf</attachments>
<conversation_primitive>
conversation includes messages: ID_message_8, ID_message_9, ID_message_10,
ID_message_11, ID_message_12
</conversation_primitive>
</storage_message>
ある実施形態において、上で定義されたグループ識別子は、メッセージと関連付けられ得る。実施形態において、上で定義されたグループベースコミュニケーションチャンネル識別子は、メッセージと関連付けられ得る。ある実施形態において、上で定義された送信ユーザー識別子は、メッセージと関連付けられ得る。ある実現例では、このメッセージは、そのメッセージを送ったユーザーの送信ユーザー識別子を決定するためにパースされ(parsed)得る(例えばプリハイパーテキストプロセッサ(PHP)コマンドを用いて)。
ある実施形態において、トピック群は、メッセージと関連付けられ得る。ある実現例では、メッセージコンテンツは、そのメッセージで議論されているトピックを決定するためにパースされ得る(例えばPHPコマンドを用いて)。例えば、メッセージ中のハッシュタグは、そのメッセージに関連付けられたチャンネルを示し得る。他の例では、メッセージは、メッセージに関連付けられたトピック群を決定するために、分析され(例えば、それ自身で、会話プリミティブ中の他のメッセージと共に)、又はトピックモデリングのような機械学習技術を用いてパースされ得る。
ある実施形態では、応答を示すデータは、そのメッセージと関連付けられ得る。例えば、他のユーザーによるメッセージへの応答は、反応(例えばメッセージに関連付けられた絵文字の選択、メッセージに関連付けられた「いいね」ボタンの選択)、メッセージに埋め込まれたハイパーリンクをクリックすること、メッセージへ応答すること(例えばメッセージに応答してグループベースコミュニケーションチャンネルにメッセージをポストすること)、メッセージに関連付けられたファイルをダウンロードすること、あるグループベースコミュニケーションチャンネルから他のグループベースコミュニケーションチャンネルへメッセージをシェアすること、メッセージをピン留めすること、メッセージに星を付けること、及び/又はその他を含み得る。ある実施形態では、他のユーザーによるメッセージへの応答に関するデータは、メッセージに含まれ得て、そのメッセージは、応答を決定するためにパースされ得る(例えばPHPコマンドを用いて)。他の実現例では、メッセージへの応答に関するデータは、データベースから取り出され得る。例えば、メッセージに対する応答に関するデータは、以下のようなMySQLデータベースコマンドを介して取得され得る。
SELECT messageResponses
FROM MSM_Message
WHERE messageID = ID_message_10.
以後でさらに説明されるように、上記MySQLデータベースコマンドは、ライブの又は計算されたインデキシングのためにドキュメントを生成するように変更及び使用され得る(APIコンポーネント117におけるライブインデキシングのためにMySQLクエリを介して)。
例えば、メッセージへの応答に関するデータは、メッセージについてのコンテキスト(例えばメッセージについての、あるユーザーの視点からのソーシャルスコア)を決定するのに用いられ得る。他の例では、メッセージへの応答に関連するデータは、ユーザーに関するコンテキストを決定するために分析され得る(例えばあるトピックにおけるユーザーの経験は、そのトピックに関するユーザーのメッセージに対する応答に基づいて決定され得る)。
ある実施形態において、添付物は、メッセージに含まれ得る。もし添付物が存在するなら、ファイルは、メッセージと関連付けられ得る。ある実現例では、メッセージは、添付物のファイル名を決定するためにパースされ得る(例えばPHPコマンドを用いて)。例えば、ファイルコンテンツは、メッセージについてのコンテキストを決定するために分析され得る(例えば特許ポリシーの文書は、そのメッセージが「特許」というトピックに関連付けられていると表示し得る)。
ある実施形態において、サードパーティメタデータは、メッセージに関連付けられ得る。例えば、サードパーティメタデータは、会社、グループ、サードパーティアプリケーション(群)、サービス(群)、グループベースコミュニケーションチャンネル、及び/又はその他に特有である、メッセージ又はユーザーについての追加のコンテキストを提供し得る。ある実現例では、メッセージは、サードパーティメタデータを決定するためにパースされ得る(例えばPHPコマンドを用いて)。例えば、サードパーティメタデータは、メッセージを送ったユーザーがグループベースコミュニケーションチャンネルの許可された代表者であるかを示し得る(例えば、許可された代表者は、グループベースコミュニケーションチャンネルにおける質問に応答するために会社によって許可され得る)。
ある実施形態において、会話プリミティブ(conversation primitive)は、メッセージと関連付けられ得る。ある実施形態では、会話プリミティブは、メッセージを分析し、インデックス付けし、記憶し、及び/又はその他をするのに用いられる要素である。例えば、メッセージは、それ自身で分析され得て、それ自身の会話プリミティブを形成し得る。他の例では、メッセージは、会話を構成する他のメッセージと共に分析され得て、会話を構成するメッセージは、会話プリミティブを形成し得る。ある実現例では、会話プリミティブは、当該メッセージ、特定の個数(例えば2)の先行するメッセージ及び特定の個数(例えば2)の後続するメッセージとして決定され得る。他の実現例では、会話プリミティブ群は、当該メッセージ及び他のメッセージ(例えばそのチャンネルにおける)で議論されているトピック及び/又はこれらメッセージの近接性(例えばメッセージ送信順序の近接性、メッセージ送信時刻の近接性)の分析に基づいて決定され得る。会話プリミティブ群は、会話(メッセージ及びそれらをとりまくメッセージ)に対するシングリング(shingling)及び検索のためにも用いられる。
ある実施形態では、さまざまなメタデータ(上に記載されたように決定される)及びメッセージのコンテンツは、クライアントデバイス101A-101Nからグループベースコミュニケーションシステム105へ通信ネットワーク103を介して送信される。
電子メッセージデータをクライアントデバイス101A-101Nから通信ネットワーク103を介して受け取ると、グループベースコミュニケーションサーバー113は、電子メッセージデータを処理し及び優先順位を付ける。グループベースコミュニケーションサーバー113は、通信ネットワーク103を介してグループベースコミュニケーションシステム105に接続されているクライアントデバイス101A-101Nに、電子メッセージの永続型ブロードキャストを提供する。例えば、ユーザーJohnがクライアントデバイスを用いてグループベースコミュニケーションチャンネルにおいて電子メッセージを送るとき、グループベースコミュニケーションサーバー113は、この電子メッセージを、同じグループベースコミュニケーションチャンネルに関連付けられた他のクライアントデバイスにブロードキャストする。この点で、グループベースコミュニケーションサーバー113は、メッセージアンプリファイアとして働く。
グループベースコミュニケーションサーバー113は、電子メッセージデータを1つ以上のデータベース115にライトするプロセスを開始するためにAPIコンポーネント117と通信もする。
[さまざまな実施形態で利用される例示的装置]
グループベースコミュニケーションサーバー113は、図2に示される装置200のような1つ以上のコンピューティングシステムによって実現され得る。装置200は、プロセッサ202、メモリ204、入力/出力回路206、通信回路208、ディスプレイ210、及びAPI回路212を含み得る。装置200は、ここで説明される動作を実行するよう構成され得る。これら要素202-212は、機能的な限定について記載されているが、具体的な実現例は、特定のハードウェアの使用を必然的に含むことを理解されたい。これら要素202-212のいくつかは、同様の又は共通のハードウェアも含み得ることも理解されたい。例えば、回路のうちの2つのセットが同じプロセッサ、ネットワークインターフェイス、記憶媒体、及びそれらの類似物の使用を活用することで、それらの関連付けられた機能を実行し、重複するハードウェアが回路群のそれぞれのセットごとには必要がないようにしてもよい。
ある実施形態においては、プロセッサ202(及び/又はコプロセッサ又はプロセッサを補助する又はそうでなければプロセッサに関連付けられた任意の他の処理回路)は、装置の要素の間で情報を受け渡しするためにバスを介してメモリ204と通信し得る。メモリ204は、非一時的であり、例えば1つ以上の揮発性及び/又は不揮発性メモリを含み得る。換言すれば、例えばメモリ204は、電子記憶装置(例えばコンピュータで読み取り可能な記憶媒体)であり得る。メモリ204は、この装置が、本開示の例示的実施形態に従ってさまざまな機能を実行できるようにするために、情報、データ、コンテンツ、アプリケーション、命令等を記憶するよう構成され得る。
プロセッサ202は、いくつかの異なるやり方で実現され得て、例えば独立して実行するよう構成された1つ以上の処理装置を含み得る。ある好ましい、非限定的な実施形態においては、プロセッサ202は、命令の独立した実行、パイプライン処理、及び/又はマルチスレッディングを可能にするようにバスを介して並列に構成された1つ以上のプロセッサを含み得る。「処理回路」という語の使用は、装置の内部にあるシングルコアプロセッサ、マルチコアプロセッサ、マルチプロセッサ、及び/又はリモートつまり「クラウド」プロセッサを含むと理解されよう。
ある好ましい、非限定的な実施形態においては、プロセッサ202は、メモリ204に記憶された又はそうでなければプロセッサ202にアクセス可能である命令を実行するよう構成され得る。ある好ましい、非限定的な実施形態においては、プロセッサ202は、ハードコードされた機能群を実行するよう構成され得る。よってハードウェア又はソフトウェアのいずれの方法によって構成されようとも、又はそれらの組み合わせによって構成されようとも、プロセッサ202は、そのように構成されている間は、本開示の実施形態による操作を実行することができるエンティティ(例えば回路として物理的に実現される)を表し得る。代替として、他の例として、プロセッサ202がソフトウェア命令の実行者として実現される時、これら命令は、命令が実行される時に、プロセッサ202がここに記載されたアルゴリズム及び/又は操作を実行するようにプロセッサを具体的に構成し得る。
ある実施形態においては、装置200は、入力/出力回路206を含み得て、これが今度は、出力をユーザーに提供するために、またある実施形態では、ユーザー入力の表示を受け取るためにプロセッサ202と通信し得る。入力/出力回路206は、ユーザーインターフェイスを備え得て、ディスプレイを含み得て、ウェブユーザーインターフェイス、モバイルアプリケーション、クライアントデバイス、キオスク等を備え得る。ある実施形態では、入力/出力回路206は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイクロホン、スピーカ、又は他の入力/出力機構を含み得る。プロセッサ及び/又はプロセッサを備えるユーザーインターフェイス回路は、プロセッサにアクセス可能であるメモリ(例えばメモリ204、及び/又はこの類似物)上に記憶されたコンピュータプログラム命令(例えばソフトウェア及び/又はファームウェア)を通して1つ以上のユーザーインターフェイス要素の1つ以上の機能を制御するよう構成され得る。
通信回路208は、装置200と通信するネットワーク及び/又は任意の他のデバイス、回路、又はモジュールから/へデータを受信及び/又は送信するよう構成される、ハードウェアか、ハードウェア及びソフトウェアの組み合わせかのいずれかで実現されるデバイス又は回路のような任意の手段であり得る。この点で、通信回路208は、例えば、有線又は無線の通信ネットワークとの通信を可能にするネットワークインターフェイスを含み得る。例えば、通信回路208は、1つ以上のネットワークインターフェイスカード、アンテナ、バス、スイッチ、ルータ、モデム、及びサポートするハードウェア及び/又はソフトウェア、又はネットワークを介した通信を可能にするのに適切な任意の他のデバイスを含み得る。追加として又は代替として、通信回路208は、アンテナ/アンテナ群を介した信号の送信を行うために、又はアンテナ/アンテナ群を介して受け取られた信号の受信を扱うために、アンテナ/アンテナ群と相互作用する回路を含み得る。
API回路212(ここでは共有API回路212とも呼ばれる)は、以下により完全に記載されるように、他のリモートリソースと共に、グループベースコミュニケーションシステム105のさまざまなコンポーネントの間での及び相互でのデータ伝送を促進するルーチン、プロトコル、及びソフトウェアシステムツールのセットを含むハードウェア及び/又はソフトウェアを含み得る。API回路212は、情報を交換/伝送するためにグループベースコミュニケーションシステム105を他のリモートリソースと統合するためのインターフェイスを含み得る。API回路212は、これらアクションを実行するためにプロセッサ202のような処理回路を利用し得る。しかし、ある実施形態では、API回路212は、ここで説明される機能を実行するために別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含み得ることも理解されたい。API回路212は、これら設計された機能を実現するためのハードウェア又はソフトウェアのいずれかによって構成されたこの装置のハードウェアコンポーネントを用いて実現され得る。
ここで説明されている情報の全て又は一部は、装置200の1つ以上の要素によって受け取られ、生成され、及び/又は維持されているデータに基づき得ることにも注意されたい。ある実施形態では、ここで説明されている機能の少なくとも一部を提供するために1つ以上の外部システム(リモートクラウドコンピューティング及び/又はデータ記憶システムのような)も活用され得る。
ここで図3を参照すれば、クライアントデバイス(群)101(例えばクライアントデバイス101A-101N)は、図3に示される装置300のような1つ以上のコンピューティングシステムによって実現され得る。装置300は、プロセッサ302、メモリ304、入力/出力回路306、通信回路308、ディスプレイ310、及び共有回路312を含み得る。これら要素302-312は、機能的限定について説明されているが、具体的な実現例は、特定のハードウェアの使用も必然的に含むことを理解されたい。これら要素302-312のいくつかは、同様の又は共通のハードウェアも含み得ることも理解されたい。例えば、回路のうちの2つのセットが同じプロセッサ、ネットワークインターフェイス、記憶媒体、及びそれらの類似物の使用を活用することで、それらの関連付けられた機能を実行し、重複するハードウェアが回路群のそれぞれのセットごとには必要がないようにしてもよい。
ある実施形態においては、プロセッサ302(及び/又はコプロセッサ又はプロセッサを補助する又はそうでなければプロセッサに関連付けられた任意の他の処理回路)は、装置の要素の間で情報を受け渡しするためにバスを介してメモリ304と通信し得る。メモリ304は、非一時的であり、例えば1つ以上の揮発性及び/又は不揮発性メモリを含み得る。換言すれば、例えばメモリ304は、電子記憶装置(例えばコンピュータで読み取り可能な記憶媒体)であり得る。メモリ304は、1つ以上のデータベースを含み得る。さらに、メモリ304は、この装置が、本開示の例示的実施形態に従ってさまざまな機能を実行できるようにするために、情報、データ、コンテンツ、アプリケーション、命令等を記憶するよう構成され得る。
プロセッサ302は、いくつかの異なるやり方で実現され得て、例えば独立して実行するよう構成された1つ以上の処理装置を含み得る。ある好ましい、非限定的な実施形態においては、プロセッサ302は、命令の独立した実行、パイプライン処理、及び/又はマルチスレッディングを可能にするようにバスを介して並列に構成された1つ以上のプロセッサを含み得る。「処理回路」という語の使用は、装置の内部にあるシングルコアプロセッサ、マルチコアプロセッサ、マルチプロセッサ、及び/又はリモートつまり「クラウド」プロセッサを含むと理解されよう。
ある好ましい、非限定的な実施形態においては、プロセッサ302は、メモリ304に記憶された又はそうでなければプロセッサ302にアクセス可能である命令を実行するよう構成され得る。ある好ましい、非限定的な実施形態においては、プロセッサ302は、ハードコードされた機能群を実行するよう構成され得る。よってハードウェア又はソフトウェアのいずれの方法によって構成されようとも、又はそれらの組み合わせによって構成されようとも、プロセッサ302は、そのように構成されている間は、本開示の実施形態による操作を実行することができるエンティティ(例えば回路として物理的に実現される)を表し得る。代替として、他の例として、プロセッサ302がソフトウェア命令(例えばコンピュータプログラム命令)の実行者として実現される時、これら命令は、命令が実行される時に、プロセッサ302がここに記載されたアルゴリズム及び/又は操作を実行するようにプロセッサ302を具体的に構成し得る。
ある実施形態においては、装置300は、入力/出力回路306を含み得て、これが今度は、出力をユーザーに提供するために、またある実施形態では、ユーザー入力の表示を受け取るためにプロセッサ302と通信し得る。入力/出力回路306は、ユーザーインターフェイスを備え得て、ディスプレイを含み得て、ウェブユーザーインターフェイス、モバイルアプリケーション、クライアントデバイス、キオスク等を備え得る。ある実施形態では、入力/出力回路306は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイクロホン、スピーカ、又は他の入力/出力機構を含み得る。プロセッサ及び/又はプロセッサを備えるユーザーインターフェイス回路は、プロセッサにアクセス可能であるメモリ(例えばメモリ304、及び/又はこの類似物)上に記憶されたコンピュータプログラム命令(例えばソフトウェア及び/又はファームウェア)を通して1つ以上のユーザーインターフェイス要素の1つ以上の機能を制御するよう構成され得る。
通信回路308は、装置300と通信するネットワーク及び/又は任意の他のデバイス、回路、又はモジュールから/へデータを受信及び/又は送信するよう構成される、ハードウェアか、ハードウェア及びソフトウェアの組み合わせかのいずれかで実現されるデバイス又は回路のような任意の手段であり得る。この点で、通信回路308は、例えば、有線又は無線の通信ネットワークとの通信を可能にするネットワークインターフェイスを含み得る。例えば、通信回路308は、1つ以上のネットワークインターフェイスカード、アンテナ、バス、スイッチ、ルータ、モデム、及びサポートするハードウェア及び/又はソフトウェア、又はネットワークを介した通信を可能にするのに適切な任意の他のデバイスを含み得る。追加として又は代替として、通信回路308は、アンテナ/アンテナ群を介した信号の送信を行うために、又はアンテナ/アンテナ群を介して受け取られた信号の受信を扱うために、アンテナ/アンテナ群と相互作用する回路を含み得る。
共有回路312は、以下により完全に記載されるように、1つ以上のリモートリソースから、リモートデータオブジェクト(例えばファイル、タスク、コール、イベントデータ、カレンダーデータ等)に関連付けられた情報を受け取るよう構成されたハードウェアを含む。
共有回路312は、これらアクションを実行するためにプロセッサ302のような処理回路を利用し得る。しかし、ある実施形態では、共有回路312は、ここで説明される機能を実行するために別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含み得ることも理解されたい。共有回路312は、これら設計された機能を実現するためのハードウェア又はソフトウェアのいずれかによって構成されたこの装置のハードウェアコンポーネントを用いて実現され得る。
ここで説明されている情報の全て又は一部は、装置300の1つ以上の要素によって受け取られ、生成され、及び/又は維持されているデータに基づき得ることにも注意されたい。ある実施形態では、ここで説明されている機能の少なくとも一部を提供するために1つ以上の外部システム(リモートクラウドコンピューティング及び/又はデータ記憶システムのような)も活用され得る。
ネットワークアプリケーションサーバー109は、図4に示される装置400のような1つ以上のコンピューティングシステムによって実現され得る。装置400は、プロセッサ401、メモリ403、入力/出力回路405、通信回路407、及びインターフェイス生成回路409を含み得る。これら要素401-409は、機能的な限定について記載されているが、具体的な実現例は、特定のハードウェアの使用を必然的に含むことを理解されたい。これら要素401-409のいくつかは、同様の又は共通のハードウェアも含み得ることも理解されたい。例えば、回路のうちの2つのセットが同じプロセッサ、ネットワークインターフェイス、記憶媒体、及びそれらの類似物の使用を活用することで、それらの関連付けられた機能を実行し、重複するハードウェアが回路群のそれぞれのセットごとには必要がないようにしてもよい。
ある実施形態においては、プロセッサ401(及び/又はコプロセッサ又はプロセッサを補助する又はそうでなければプロセッサに関連付けられた任意の他の処理回路)は、装置の要素の間で情報を受け渡しするためにバスを介してメモリ403と通信し得る。メモリ403は、非一時的であり、例えば1つ以上の揮発性及び/又は不揮発性メモリを含み得る。換言すれば、例えばメモリ403は、電子記憶装置(例えばコンピュータで読み取り可能な記憶媒体)であり得る。メモリ403は、装置400が、本開示の例示的実施形態に従ってさまざまな機能を実行できるようにするために、情報、データ、コンテンツ、アプリケーション、命令等を記憶するよう構成され得る。
プロセッサ401は、いくつかの異なるやり方で実現され得て、例えば独立して実行するよう構成された1つ以上の処理装置を含み得る。ある好ましい、非限定的な実施形態においては、プロセッサ401は、命令の独立した実行、パイプライン処理、及び/又はマルチスレッディングを可能にするようにバスを介して並列に構成された1つ以上のプロセッサを含み得る。
ある好ましい、非限定的な実施形態においては、プロセッサ401は、メモリ403に記憶された又はそうでなければプロセッサ401にアクセス可能である命令を実行するよう構成され得る。ある好ましい、非限定的な実施形態においては、プロセッサ401は、ハードコードされた機能群を実行するよう構成され得る。よってハードウェア又はソフトウェアのいずれの方法によって構成されようとも、又はそれらの組み合わせによって構成されようとも、プロセッサ401は、そのように構成されている間は、本開示の実施形態による操作を実行することができるエンティティ(例えば回路として物理的に実現される)を表し得る。代替として、他の例として、プロセッサ401がソフトウェア命令の実行者として実現される時、これら命令は、命令が実行される時に、プロセッサ401がここに記載されたアルゴリズム及び/又は操作を実行するようにプロセッサ401を具体的に構成し得る。
ある実施形態においては、装置400は、入力/出力回路405を含み得て、これが今度は、出力をユーザーに提供するために、またある実施形態では、ユーザー入力の表示を受け取るためにプロセッサ401と通信し得る。入力/出力回路405は、ユーザーインターフェイスを備え得て、ディスプレイを含み得て、ウェブユーザーインターフェイス、モバイルアプリケーション、クライアントデバイス、キオスク等を備え得る。ある実施形態では、入力/出力回路405は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイクロホン、スピーカ、又は他の入力/出力機構を含み得る。
通信回路407は、装置400と通信するネットワーク及び/又は任意の他のデバイス、回路、又はモジュールから/へデータを受信及び/又は送信するよう構成される、ハードウェアか、ハードウェア及びソフトウェアの組み合わせかのいずれかで実現されるデバイス又は回路のような任意の手段であり得る。この点で、通信回路407は、例えば、有線又は無線の通信ネットワークとの通信を可能にするネットワークインターフェイスを含み得る。例えば、通信回路407は、1つ以上のネットワークインターフェイスカード、アンテナ、バス、スイッチ、ルータ、モデム、及びサポートするハードウェア及び/又はソフトウェア、又はネットワークを介した通信を可能にするのに適切な任意の他のデバイスを含み得る。追加として又は代替として、通信回路407は、アンテナ/アンテナ群を介した信号の送信を行うために、又はアンテナ/アンテナ群を介して受け取られた信号の受信を扱うために、アンテナ/アンテナ群と相互作用する回路を含み得る。
インターフェイス生成回路409は、APIコンポーネント117及び/又は共有API212とインタラクトするためのコミュニケーションチャンネルインターフェイスを生成するよう構成されたハードウェアを含む。インターフェイス生成回路409は、これらアクションを実行するためにプロセッサ401のような処理回路を利用し得る。しかし、ある実施形態では、インターフェイス生成回路409は、ここで説明される機能を実行するために別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ(FPGA)、又は特定用途向け集積回路(ASIC)を含み得ることも理解されたい。インターフェイス生成回路409は、これら設計された機能を実現するためのハードウェア又はソフトウェアのいずれかによって構成されたこの装置のハードウェアコンポーネントを用いて実現され得る。
ここで説明されている情報の全て又は一部は、装置400の1つ以上の要素によって受け取られ、生成され、及び/又は維持されているデータに基づき得ることにも注意されたい。ある実施形態では、ここで説明されている機能の少なくとも一部を提供するために1つ以上の外部システム(リモートクラウドコンピューティング及び/又はデータ記憶システムのような)も活用され得る。
「回路」という語は、ハードウェア及び実施形態によってはハードウェアを構成するソフトウェアを含むように広く理解されたい。したがってこの装置の要素について、ここで用いられる「回路」という語は、ここで説明されている特定の回路に関連付けられた機能を実行するよう構成された特定のハードウェアを含むように理解されるべきである。例えば、ある実施形態では、「回路」は、処理回路、記憶媒体、ネットワークインターフェイス、入力/出力デバイス、及びそれらの類似物を含み得る。ある実施形態では、装置200の他の要素は、特定の回路の機能を提供又は補充し得る。例えば、プロセッサ202は、処理機能を提供し得て、メモリ204は、記憶機能を提供し得て、通信回路208は、ネットワークインターフェイス機能を提供し得る等である。同様に、装置300の他の要素は、特定の回路の機能を提供又は補充し得る。例えば、プロセッサ302は、処理機能を提供し得て、メモリ304は、記憶機能を提供し得て、通信回路308は、ネットワークインターフェイス機能を提供し得る等である。さらに、装置400の他の要素は、特定の回路の機能を提供又は補充し得る。例えば、プロセッサ401は、処理機能を提供し得て、メモリ403は、記憶機能を提供し得て、通信回路407は、ネットワークインターフェイス機能を提供し得る等である。
理解されるように、任意のそのようなコンピュータプログラム命令(例えばプログラムコード命令)及び/又は他のタイプのコードは、コンピュータ、プロセッサ、又は他のプログラマブルな装置の回路にロードされて、機械上でコードを実行するそのコンピュータ、プロセッサ、又は他のプログラマブルな回路が、ここで記載されたものを含むさまざまな機能を実現するための手段を作り出すような機械を作り得る。
上に説明されたように、及び本開示に基づいて理解されるように、本開示の実施形態は、方法、モバイルデバイス、バックエンドネットワークデバイス等として構成され得る。したがって実施形態は、ハードウェアだけを含む、又はソフトウェア及びハードウェアの任意の組み合わせを含むさまざまな手段を備え得る。さらに、実施形態は、記憶媒体内に実現されたコンピュータ読み取り可能なプログラム命令(例えばコンピュータソフトウェア)を有する、少なくとも1つの非一時的コンピュータ読み取り可能な記憶媒体上のコンピュータプログラム製品の形態をとり得る。任意の適切なコンピュータ読み取り可能な記憶媒体は、非一時的ハードディスク、CD-ROM、フラッシュメモリ、光学記憶デバイス、又は磁気記憶デバイスを含むようにして利用され得る。
[例示的データフロー]
既に述べたように、さまざまな例示的実施形態は、情報(例えばリモートデータオブジェクトに関連付けられた情報)の交換/伝送のために1つ以上のリモートリソースをグループベースコミュニケーションシステムと統合することを促進する。
ある例示的実施形態では、共有API212は、例えば、リモートリソースのファイル、タスク、コール、カレンダー、及び/又はイベントのようなリモートデータオブジェクトに関連付けられたデータのための、グループベースコミュニケーションシステム105と1つ以上のリモートリソースとの間の通信を促進し得る。リモートデータオブジェクトは、リモートリソースのリモートリソースメモリ(例えばメモリ403)に記憶され得る。限定ではなく説明のために、例えばファイルのようなリモートデータオブジェクトに関連付けられたデータについて、共有API212がグループベースコミュニケーションシステム105とリモートリソースとの間の通信を促進する例を考えてみる。
この例では、グループベースコミュニケーションチャンネルのユーザーのクライアントデバイス(例えばクライアントデバイス101)が、リモートリソース(例えばGoogle Drive(商標))のリンク(例えばファイル(例えばGoogle Drive(商標)のファイル)のためのURL)を含むメッセージを、グループベースコミュニケーションチャンネルの他のユーザーに対してポストすると想定する。この点で、グループベースコミュニケーションサーバー113は、リンクを自動的に分析し、そのリンクに関連付けられたリモートリソース(例えばGoogle Drive(商標))を特定し得る。グループベースコミュニケーションサーバー113は、メッセージのリンク中のサーバードメイン名(例えばgoogle.com)に基づいてリモートリソースを特定し得る。また、このファイルがリモートで記憶されている(例えばリモートリソースのリモートリソースメモリ(例えばメモリ403))と想定する。グループベースコミュニケーションサーバー113は、そのファイルに関連付けられたデータについてのリクエストをリモートリソースに送り得る。ファイルを要求するリクエストの受領に応答して、リモートリソースのコミュニケーションデバイス(例えば装置400)は、共有API212とインタラクトし(例えばインターフェイス生成回路409を介して)、ファイルに関連付けられたデータを取得するために共有API212のresource.remote.add機能APIを呼び出し得る。
resource.remote.add機能APIを実行したことに応答して、リモートリソースのコミュニケーションデバイス(例えば装置400)は、ファイルの名前(例えばファイル名「THISWILLWORK2」)を特定し、これらには限定されないが、そのファイルに関連付けられたそのファイルのサイズ、ファイルタイプ識別子、及びファイルタイプを含むそのファイルについてのリモートデータオブジェクトメタデータを生成すると共に、そのファイルのリモートデータオブジェクトグラフィック表現も生成し得る。リモートリソースのコミュニケーションデバイス(例えば装置400)は、例えば、ファイルの名前と共に、リモートデータオブジェクトグラフィック表現、及びファイルに関連付けられたリモートデータオブジェクトメタデータをグループベースコミュニケーションサーバー113に送信すること又はアップロードすることによって、リモートデータオブジェクトグラフィック表現をグループベースコミュニケーションシステム105に追加することもし得る。グループベースコミュニケーションサーバー113は、ファイル名に部分的に基づいて、メモリデバイス(例えばメモリ204)内で、リモートデータオブジェクトメタデータ及びリモートデータオブジェクトグラフィック表現に関連付けられたデータを記憶及びインデックス付けし得る。
リモートデータオブジェクトグラフィック表現をグループベースコミュニケーションシステム105に追加したことに応答して、リモートリソースのコミュニケーションデバイス(例えば装置400)は、共有API212と通信して(例えばインターフェイス生成回路409を介して)、共有API212のchat.unfurl機能APIを呼び出し実行し得る。chat.unfurl機能APIを実行したことに応答して、リモートリソースのコミュニケーションデバイス(例えば装置400)は、図6のユーザーインターフェイス600に示されるように、リモートデータオブジェクトグラフィック表現を、レンダリングされたBlock Kit(Block Kitメッセージともここでは呼ばれる)ユーザーインターフェイスに自動的に展開(unfurl)し得る。リモートリソースのコミュニケーションデバイス(例えば装置400)は、リモートデータオブジェクトグラフィック表現とのユーザーインタラクション、及びそのファイルに関連付けられたリンク(例えばGoogle Drive(商標)のファイル)を含むメッセージを最初にポストした、グループベースコミュニケーションチャンネルのユーザーのユーザー識別子を検出したことに応答して、リモートデータオブジェクトグラフィック表現を展開し得る。そのメッセージをポストしたグループベースコミュニケーションチャンネルのユーザーに関連付けられたユーザー識別子に部分的に基づいて、グループベースコミュニケーションチャンネル(例えばチャンネル# test_remote_files)を特定したことに応答して、リモートリソースのコミュニケーションデバイス(例えば装置400)は、レンダリングされたBlock Kitユーザーインターフェイスをグループベースコミュニケーションサーバー113がグループベースコミュニケーションチャンネル(例えばchannel # test_remote_files)に提供できる(例えばポストできる)ようにするために、グループベースコミュニケーションサーバー113と通信し得る。この点で、グループベースコミュニケーションチャンネルのユーザーのクライアントデバイス(例えばクライアントデバイス101)は、そのレンダリングされたBlock Kitユーザーインターフェイスを表示(例えばディスプレイ310を介して)し得る。
ここで図7を参照すれば、例示的ユーザーインターフェイスが例示的実施形態によって提供される。図7の例では、Block Kitユーザーインターフェイス701からの共有ファイルタブ703(共有フィーチャー703ともここでは呼ばれる)の選択の検出に応答して、グループベースコミュニケーションサーバー113は、リモートリソース(例えばGoogle Drive(商標))から受け取られたファイル(例えば「THISWILLWORK2」と名付けられたファイル)へのポインタ、メモリアドレス、及びそれらの類似物を、グループベースコミュニケーションシステム105の他のグループベースコミュニケーションチャンネル及び/又はユーザー(群)(例えばグループベースコミュニケーションチャンネル及び/又はそのファイルにアクセスする権限を持つユーザー)に対して、図8に示されるユーザーインターフェイス800を生成しレンダリングし得る。このようにして、グループベースコミュニケーションサーバー113は、あるグループベースコミュニケーションチャンネル(例えばチャンネル# test_remote_files)からのファイルへのポインタ又はメモリアドレスを、他のグループベースコミュニケーションチャンネル(例えばチャンネル# feat-tech-files)及び/又はユーザー(群)と再共有し得る。
他の例示的実施形態では、グループベースコミュニケーションサーバー113がさらなるフィーチャーのタブ705の選択の指示を検出したことに応答して、グループベースコミュニケーションサーバー113は、リモートリソース(例えばGoogle Drive(商標))から受け取られたそのファイル(例えば「THISWILLWORK2」と名付けられたファイル)へのポインタ又はメモリアドレスを削除し得て、そのファイルへのポインタ又はメモリアドレスが削除されたことを表す可視的表示を含む図9に示されるユーザーインターフェイス900を生成及びレンダリングし得る。
例示的実施形態では、グループベースコミュニケーションサーバー113は、共有API212のresource.remote.list機能APIを呼び出し、及びresource.remote.list機能APIを起動/実行して、共有ユーザー識別子に関連付けられたグループベースコミュニケーションサーバー113のローカルメモリ(例えばメモリ204)に記憶された全てのローカルに記憶されたデータオブジェクト(例えばファイル、呼び出しオブジェクト、タスクオブジェクト、イベントオブジェクト及び/又はカレンダーオブジェクト)をクエリ及び取得し得る。グループベースコミュニケーションサーバー113は、共有API212のresource.remote.list機能APIを呼び出し、及びresource.remote.list機能APIを起動/実行して、共有ユーザー識別子に関連付けられたリモートリソース(例えばGoogle Drive(商標)、Dropbox(商標)等)のリモートリソースメモリ(例えばメモリ403)に記憶された、リモートで記憶されたデータオブジェクト(例えばファイル、呼び出しオブジェクト、タスクオブジェクト、イベントオブジェクト及び/又はカレンダーオブジェクト)をクエリ及び取得することもし得る。共有ユーザー識別子は、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトをグループベースコミュニケーションインターフェイスと共有したいという共有リクエストを開始したグループベースコミュニケーションユーザーと関連付けられている。グループベースコミュニケーションサーバー113は、ユーザー共有データオブジェクトリスト(例えば共有ユーザーインターフェイスに関連付けられたファイル、呼び出しオブジェクト、タスクオブジェクト、イベントオブジェクト及び/又はカレンダーオブジェクト)を、グループベースコミュニケーションインターフェイスにレンダリングし得て、ここでユーザー共有データオブジェクトリストは、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトに関連付けられたデータオブジェクトグラフィック表現を含む。
例示的実施形態では、グループベースコミュニケーションサーバー113は、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトの、共有ユーザー識別子に関連付けられたグループベースコミュニケーションユーザーによるアクセスリーセンシー(例えばそれぞれの共有タイムスタンプに関連付けられた時刻に基づいて)に基づいてユーザー共有オブジェクトリストを順番付けし得る。より最近にアクセスされたデータアイテムは、ユーザー共有オブジェクトリストにおいて、より古いアクセスされたデータアイテムよりも、より高く順番付けされ得る。ある他の例示的実施形態では、グループベースコミュニケーションサーバー113は、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトに関連付けられた共有ロケーション識別子に基づいて、ユーザー共有オブジェクトリストを順番付けし得る。共有ロケーション識別子は、その共有ユーザー識別子に関連付けられたグループベースコミュニケーションユーザーが、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトを最も最近に共有したグループベースコミュニケーションチャンネル又はダイレクトメッセージを特定し得る。この点で、ユーザー共有オブジェクトリストは、グループベースコミュニケーションチャンネル又はダイレクトメッセージに共有された最も最近のローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトが、順番付けされたユーザー共有オブジェクトリストにおいて、より古い共有されたローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトに対して、より高くなるように順番付けされ得る。
他の例示的実施形態では、グループベースコミュニケーションサーバー113は、共有API212のresource.remote.list機能APIを呼び出し、及びresource.remote.list機能APIを起動/実行することによって、リモートデータオブジェクトタイプ識別子に関連付けられた、グループベースコミュニケーションサーバー113のローカルメモリ(例えばメモリ204)に記憶された全てのローカルに記憶されたデータオブジェクト(例えばファイル、又は呼び出しオブジェクト、又はタスクオブジェクト、又はイベントオブジェクト、又はカレンダーオブジェクト)をクエリ及び取得し得る。グループベースコミュニケーションサーバー113は、リモートリソースAPI212のresource.remote.list機能APIを呼び出し、及びresource.remote.list機能APIを起動/実行することによって、リモートデータオブジェクトタイプ識別子に関連付けられたリモートリソース(例えばGoogle Drive(商標)、Dropbox(商標)等)のリモートリソースメモリ(例えばメモリ403)に記憶されているリモートで記憶されているデータオブジェクト(例えばファイル、又は呼び出しオブジェクト、又はタスクオブジェクト、又はイベントオブジェクト、又はカレンダーオブジェクト)をクエリ及び取得することもし得る。リモートデータオブジェクトタイプ識別子は、データオブジェクトのタイプ(例えばファイルタイプ、コールオブジェクトタイプ、タスクオブジェクトタイプ、イベントオブジェクトタイプ、又はカレンダーオブジェクトタイプ)に関連付けられている。グループベースコミュニケーションサーバー113は、コモンオブジェクトタイプリスト(例えばファイルオブジェクトタイプリスト(ローカルに及びリモートで記憶されたデータアイテムがファイルに関連付けられている例において))をグループベースコミュニケーションインターフェイスにレンダリングし得て、ここでコモンオブジェクトタイプリストは、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトに関連付けられたデータオブジェクトグラフィック表現を含む。例示的実施形態では、グループベースコミュニケーションサーバー113は、コモンオブジェクトタイプリストを、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトのアクセスリーセンシーに基づいて(例えばそれぞれのリモートデータオブジェクトアクセスタイムスタンプに基づいて)順番付けし得る。より最近にアクセスされたデータアイテムは、コモンオブジェクトタイプリストの中で、より古くアクセスされたデータアイテムに対してより高く順番付けされ得る。ある他の例示的実施形態では、グループベースコミュニケーションサーバー113は、コモンオブジェクトタイプリストを、ローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトに関連付けられた共有ロケーション識別子に基づいて順番付けし得る。共有ロケーション識別子は、グループベースコミュニケーションユーザーが、リモートデータオブジェクトタイプ識別子に関連付けられたローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトを最も最近に共有したグループベースコミュニケーションチャンネル又はダイレクトメッセージを特定し得る。この点で、コモンオブジェクトタイプリストは、グループベースコミュニケーションチャンネル又はダイレクトメッセージに共有された最も最近にローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトが、順番付けされたコモンオブジェクトタイプリストにおいて、より古い共有されたローカルに記憶されたデータオブジェクト及びリモートで記憶されたデータオブジェクトに対して、より高くなるように順番付けされ得る。
ここで図10を参照すれば、リモートデータオブジェクトをホストするリモートリソースとグループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイスとの間のコミュニケーションを管理するためのフローチャートの例示的実施形態が提供される。操作1000において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートリソース(例えばGoogle Drive(商標))によるエンゲージメント(engagement)のために構成された共有アプリケーションプログラミングインターフェイス(例えば共有API212、APIコンポーネント117)を生成し得る。
操作1005において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトに関連付けられたリモートデータオブジェクト識別子、グループベースコミュニケーションインターフェイス(例えばユーザーインターフェイス600)に関連付けられたグループ識別子、及び共有ロケーション識別子(例えばグループベースコミュニケーションチャンネル識別子又はDM識別子)を含むリモートデータオブジェクト共有リクエスト(例えば共有ファイルタブ703の選択に応答して生成されたリクエスト)を受け取り得る。ある例示的実施形態では、リモートデータオブジェクト共有リクエストは、その共有リクエストを開始したグループベースコミュニケーションユーザーに関連付けられた共有ユーザー識別子も含み得る。例示的実施形態では、リモートデータオブジェクトは、ファイル(群)、コールオブジェクト(群)、タスク(群)、イベントオブジェクト(群)、又はカレンダーオブジェクト(群)であり得る。操作1010において、装置(例えばグループベースコミュニケーションサーバー113)は、共有アプリケーションプログラミングインターフェイスを介してリモートデータオブジェクト共有通知をリモートリソースに送り得て、ここでリモートデータオブジェクト共有通知は、リモートデータオブジェクト識別子を含む。
操作1015において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクト共有通知を送信したことに応答して、リモートリソースから共有アプリケーションプログラミングインターフェイスを介して、そのリモートデータオブジェクトに関連付けられたリモートデータオブジェクトメタデータを受け取り得る。ある例示的実施形態では、リモートデータオブジェクトメタデータは、リモートデータオブジェクトグラフィック表現(例えばその中でリモートリソースは後で展開し得る)、リモートデータオブジェクトの名前、リモートデータオブジェクトのサイズ、リモートデータオブジェクトタイプ識別子、及び任意の他の適切なリモートデータオブジェクトメタデータを含み得る。操作1020において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトに関連付けられたリモートデータオブジェクトグラフィック表現を、グループベースコミュニケーションインターフェイスの共有ロケーション(例えばグループベースコミュニケーションチャンネル識別子に関連付けられたグループベースコミュニケーションチャンネル又はDM識別子に関連付けられたDM)に自動的にレンダリングし得て、ここで共有ロケーションは、共有ロケーション識別子に基づいて決定され、リモートデータオブジェクトグラフィック表現は、そのリモートデータオブジェクトのユーザーエンゲージメントを促進するよう構成されている。
ここで図11を参照すれば、リモートデータオブジェクトをホストするリモートリソースと、グループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイスとの間の認証されたコミュニケーションを管理するための信号図の例示的実施形態が提供されている。操作1100において、装置(例えばグループベースコミュニケーションサーバー113)は、グループベースコミュニケーションインターフェイス(例えばユーザーインターフェイス600)を介して、リモートデータオブジェクト共有リクエストを受け取り得る。リモートデータオブジェクト共有リクエストは、認証トークン(例えばOAuthトークン)、リモートデータオブジェクトに関連付けられたリモートデータオブジェクト識別子、グループベースコミュニケーションインターフェイスに関連付けられたグループ識別子、及び共有ロケーション識別子を含み得る。リモートデータオブジェクトは、ファイル(群)、コールオブジェクト(群)、タスク(群)、イベントオブジェクト(群)、又はカレンダーオブジェクト(群)であり得る。
例示的実施形態において、認証トークンは、リモートデータオブジェクトをホスト/記憶しているリモートリソースが、グループベースコミュニケーションシステム105と通信する(例えば、リモートデータオブジェクト共有リクエストを開始しているユーザーのクライアントデバイスがアクセスすることを承認された1つ以上のグループベースコミュニケーションチャンネル又は1つ以上のDMユーザーへのポインタ及び/又はメモリアドレス又はそれら類似物にアクセスする)ことを承認し得る。
操作1105において、装置(例えばグループベースコミュニケーションサーバー113)は、共有アプリケーションプログラミングインターフェイスを介して、リモートデータ共有通知をリモートリソースに送信し得る(例えばリモートリソースのネットワークアプリケーションサーバー109を介して)。リモートデータオブジェクト共有通知は、認証トークン及びリモートデータオブジェクト識別子を含む。操作1110において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートリソースがその認証トークンを検証したことに応答して、リモートリソースから(例えばリモートリソースのネットワークアプリケーションサーバー109を介して)共有アプリケーションプログラミングインターフェイスを介して、リモートデータオブジェクトに関連付けられたリモートデータオブジェクトメタデータを受け取り得る。
操作1115において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトに関連付けられたリモートデータオブジェクトグラフィック表現をグループベースコミュニケーションインターフェイスの共有ロケーションに自動的にレンダリングし得る。共有ロケーションは、共有ロケーション識別子に基づいて、及びリモートリソースが認証トークンを検証したことに応答して決定される。リモートデータオブジェクトグラフィック表現は、リモートデータオブジェクトのユーザーエンゲージメントを促進するよう構成される。
ここで図12を参照すれば、リモートデータオブジェクトをホストするリモートリソースと、グループベースコミュニケーションシステムのグループベースコミュニケーションインターフェイスとの間の認証されたコミュニケーションを管理するための信号図の他の例示的実施形態が提供されている。操作1200において、ユーザーのクライアントデバイス(例えばクライアントデバイス101)は、メッセージ(例えばリンク(例えばURL)を含んでいる)を、そのメッセージがリモートリソースによって記憶されたリモートデータオブジェクトに関連付けられている、グループベースコミュニケーションチャンネル又は他のユーザーとのダイレクトメッセージにポストする。
操作1205において、装置(例えばグループベースコミュニケーションサーバー113)は、メッセージを分析し、リモートリソースのアイデンティティを決定する(例えばURLのドメインに基づいて)。操作1210において、装置(例えばグループベースコミュニケーションサーバー113)は、ポストされたメッセージを分析することに応答して、リモートデータオブジェクトについてのリモートデータオブジェクトアップデートリクエストを生成し得る。例示的実施形態において、リモートデータアップデートリクエストは、認証トークン(例えばOAuthトークン)、リモートデータオブジェクトに関連付けられたリモートデータオブジェクト識別子、グループベースコミュニケーションインターフェイスに関連付けられたグループ識別子、及びアップデートロケーション識別子を含み得る。認証トークンは、リモートデータオブジェクトをホスト/記憶しているリモートリソースが、グループベースコミュニケーションシステム105と通信する(例えば、ユーザーのクライアントデバイスがアクセスすることを承認された1つ以上のグループベースコミュニケーションチャンネル又は1つ以上のDMユーザーへのポインタ及び/又はメモリアドレス又はそれら類似物にアクセスする)ことを承認し得る。
操作1215において、装置(例えばグループベースコミュニケーションサーバー113)は、アプリケーションプログラミングインターフェイス(例えば共有API212、APIコンポーネント117)を介して、リモートデータオブジェクトアップデートリクエストをリモートリソースに送信し得る。操作1220において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトアップデートリクエストを送信したことに応答して及びリモートリソースがその認証トークンを検証したことに応答して、リモートリソースから、アプリケーションプログラミングインターフェイスを介して、リモートデータオブジェクトに関連付けられたリモートデータオブジェクトメタデータを受け取り得る。
操作1225において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトに関連付けられたリモートデータオブジェクトグラフィック表現を、グループベースコミュニケーションインターフェイスのアップデートロケーション(例えばグループベースコミュニケーションチャンネル、他のユーザーとのDM)に、リモートデータオブジェクトメタデータに部分的に基づいてレンダリングし得る。アップデートロケーションは、アップデートロケーション識別子に基づいて決定され得る。リモートデータオブジェクトグラフィック表現は、ユーザーのクライアントデバイス(例えばクライアントデバイス101)によってアクセス可能である。
操作1230において、ユーザーのクライアントデバイス(例えばクライアントデバイス101)は、リモートデータオブジェクトグラフィック表現とエンゲージつまりインタラクトするよう構成される。操作1235において、装置(例えばグループベースコミュニケーションサーバー113)は、クライアントデバイスによるリモートデータオブジェクトグラフィック表現とのエンゲージメント/インタラクションに応答して、リモートデータオブジェクトのプレビュー画像(例えばプレビュー画像オブジェクト)のためにリモートリソースへリクエストを生成及び送信し得る。操作1240において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートリソースがリクエストを装置から受け取り認証トークンを検証したことに応答して、クライアントデバイスによるインタラクション又はアクセスのためのリモートデータオブジェクトのプレビュー画像を持つグループベースコミュニケーションインターフェイスをレンダリングし得る。
ここで図13を参照すれば、リモートデータオブジェクトのためのリモートプレビューを生成するための例示的方法のフローチャート図が呈示される。この例示的方法は、リモートデータオブジェクトの異なるプロパティ及び/又はプレビューをリクエストしているユーザープロフィールの異なるプロパティに従って、リモートデータオブジェクトのためのリモートプレビューを生成するために利用され得る。例えば、グループベースコミュニケーションチャンネルのメンバーは、リモートデータオブジェクトへの異なるアクセス権を有し得るので、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトの特定のアクセス権パラメータに従って、特定のアクセス権調整済み(access-rights-adjusted)のリモートプレビュー(例えば、そのリモートデータオブジェクトについての作成者のユーザープロフィールによって定義される予め選択されたプレビュー、リモートデータオブジェクトに関連付けられたリモートリソースによって生成されたプレビュー、プレビューをリクエストしているユーザーのプロフィールのアクセス権に基づいて生成されたプレビュー等)を生成し得る。この例示的方法で説明されている提案される技術の局面は、グループベースコミュニケーションシステムのセキュリティ及びプライバシーフィーチャーと共に、グループベースコミュニケーションシステムにおけるリモートデータオブジェクトについてのアクセス制御管理の効率及び信頼性を向上し得る。
操作1300において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトについてのリモートデータプレビューリクエストを特定する。例えば、装置は、グループベースコミュニケーションシステム105のエンドユーザープロフィールが、リモートデータオブジェクトについてのリモートプレビューをリクエストするよう構成されたアクションを実行したことを特定し得る。適切なアクションの例には、ポインタをリモートデータオブジェクトについてのリモートデータオブジェクトグラフィック表現の上でホバリングさせること、リモートデータオブジェクトについてのリモートプレビューをリクエストするよう構成されたキー組み合わせを押すこと、リモートデータオブジェクトについてのリモートプレビューをリクエストするよう構成されたタッチパターン(例えば2本指の拡張タッチパターン及び/又は2本指の最小化タッチパターン)を実行すること、リモートデータオブジェクトについてのリモートデータオブジェクトグラフィック表現の上で右クリックを実行すること等が含まれる。
操作1305において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートメタデータリクエストを、リモートデータオブジェクトについてのリモートリソースへ送信し得て、これによってリモートデータオブジェクトについてリモートプレビューメタデータを受け取り得る。リモートプレビューメタデータは、そのリモートデータオブジェクトについての1つ以上のアクセスセキュリティポリシー、リモートデータオブジェクトのインタラクティブプレビュー、リモートデータオブジェクトのインデックス付きバージョン等のうちの少なくとも1つを含み得る。例えば、リモートリソースは、リモートデータオブジェクトの特定の部分がアクセス制限されていることを特定し、そのような特定の部分を含まないリモートデータオブジェクトのインタラクティブプレビューを、リモートプレビューメタデータの少なくとも一部として、生成し得る。ある実施形態では、リモートプレビューメタデータは、プレビューに関連したいかなる情報もそのリモートデータオブジェクトについては利用可能ではないことを示し得る。
操作1310において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトのためのローカルプレビューメタデータを、リモートデータオブジェクトのためのリモートオブジェクトメタデータから取得する。ある実施形態では、リモートデータオブジェクトのためのリモートオブジェクトメタデータは、リモートデータオブジェクトのリモートプレビューを生成するのに用いられ得る情報(例えばリモートデータオブジェクトのインデックス付きバージョン)を含む。ある実施形態では、操作1310でローカルプレビューメタデータとして取得された情報のうちの少なくとも一部は、操作1305でリモートプレビューメタデータとして受け取られた情報のうちの一部に少なくとも部分的に依存する。例えば、もしリモートプレビューメタデータがリモートデータオブジェクトについてのアクセス制御制限が存在しないことを示すなら、装置は、そのリモートデータオブジェクトについてのリモートオブジェクトメタデータの全てを用いて、リモートデータオブジェクトのためのリモートプレビューを生成し得る。逆に、もしリモートプレビューメタデータがリモートデータオブジェクトについてのアクセス制御制限が存在することを示すなら、装置は、非機密とみなされるリモートデータオブジェクトについてのリモートデータオブジェクトメタデータの一部(例えばリモートデータオブジェクトのインデックス付きのバージョン)だけを用いて、そのリモートデータオブジェクトについてのリモートプレビューを生成し得る。ある実施形態では、もしリモートプレビューメタデータがリモートデータオブジェクトのインタラクティブプレビューを含むなら、装置は、ローカルプレビューメタデータを取得せずに、その代わりそのインタラクティブプレビューを用いてリモートデータオブジェクトのリモートプレビューを生成する。
操作1315において、装置(例えばグループベースコミュニケーションサーバー113)は、そのリモートデータオブジェクトについてのリモートプレビューメタデータ及びそのリモートデータオブジェクトについてのローカルプレビューメタデータに基づいて、リモートデータオブジェクトのためのリモートプレビューを生成する。ある実施形態では、リモートデータオブジェクトのためのリモートプレビューメタデータが、リモートデータオブジェクトのインタラクティブプレビューを含むと判定されたことに応答して、装置は、リモートプレビューをそのインタラクティブプレビューに基づいて決定する。ある実施形態では、リモートデータオブジェクトのためのリモートプレビューメタデータが、そのリモートデータオブジェクトについてのアクセス制御が存在することを示すと判定されたことに応答して、装置は、非機密であるとみなされるリモートデータオブジェクト(例えばリモートデータオブジェクトのインデックス付きのバージョン)についてのリモートデータオブジェクトメタデータの一部に基づいて、リモートプレビューを決定する。ある実施形態では、リモートデータオブジェクトについてのリモートプレビューメタデータが、そのリモートデータオブジェクトについてのアクセス制御が存在しないことを示すと判定したことに応答して、装置は、リモートデータオブジェクトについてのリモートオブジェクトメタデータオブジェクトの全ての部分に基づいてリモートプレビューを決定する。ある実施形態では、リモートデータオブジェクトについてのリモートプレビューメタデータが、そのリモートデータオブジェクトについての特定のアクセス制御制限を示すと判定したことに応答して、装置は、リモートデータオブジェクトについてのリモートデータオブジェクトメタデータの中の情報をフィルタリングし、リモートデータオブジェクトのリモートプレビューを生成するのに適切な情報を決定する。
ここで図15を参照すれば、リモートデータオブジェクトについてのリモートプレビューを生成及びレンダリングするための例示的方法の信号図が呈示される。操作1500において、クライアントデバイス(例えばクライアントデバイス101)は、リモートデータオブジェクトについてのリモートプレビューリクエストをサーバーデバイス(例えばグループベースコミュニケーションサーバー113)に送る。操作1505において、サーバーデバイスは、リモートプレビューリクエストを分析して、リモートデータオブジェクトを特定する。操作1510において、サーバーデバイスは、そのリモートデータオブジェクトについてのリモートメタデータリクエストを生成する。操作1515において、サーバーデバイスは、リモートデータオブジェクトについてのリモートメタデータリクエストをリモートデータオブジェクトに関連付けられたリモートリソースに送る。操作1520において、リモートリソースは、リモートデータオブジェクトについてのリモートプレビューメタデータをサーバーデバイスに送信する。操作1525において、サーバーデバイスは、リモートデータオブジェクトについてのローカルプレビューメタデータを取得する。操作1525において、サーバーデバイスは、そのリモートデータオブジェクトについてのリモートプレビューメタデータ及びリモートデータオブジェクトについてのローカルプレビューメタデータに基づいて、リモートデータオブジェクトについてのリモートプレビューを生成する。操作1530において、サーバーデバイスは、リモートプレビューをクライアントデバイスに送信する。操作1535において、クライアントデバイスは、リモートプレビューをレンダリングする。
ここで図14を参照すれば、リモートデータオブジェクトについてのリモートデータオブジェクト識別子に基づいて、リモートデータオブジェクトアクセスリクエストを処理するための例示的方法のフローチャートダイヤグラムが呈示される。この例示的方法は、リモートデータオブジェクトについてのリモートオブジェクトメタデータが、利用可能な主キーフィールドの個数を制限する構造化されたフォーマットで記憶される時に、同じリモートデータオブジェクトについての2つ以上のデータオブジェクト識別子を維持する(例えばリモートデータオブジェクトについてのリモートソース側識別子と、リモートデータオブジェクトについてのグループベースシステム側識別子との関連性を記憶する)のに特に適し得る。そのような文脈では、例示的方法の局面によって開示されている間接的なルックアップ技術を利用すれば、メタデータデータベース記憶に関連付けられた記憶コストを低減し、メタデータデータベース取得の計算コスト、及びスケーラビリティ及びメタデータデータベースの再利用性を増加し得る。
操作1400において、装置(例えばグループベースコミュニケーションサーバー113)は、リモート相関テーブル中のリモートデータオブジェクトについてのリモートリソース識別子、及びリモートデータオブジェクトについてのローカル識別子を記憶し、ここでリモートデータオブジェクト識別子は、リモート相関テーブルのための主キーである。ある実施形態では、リモートデータオブジェクトについてのローカル識別子は、リモート相関テーブルについて主キーではない。リモート相関テーブルは、リレーショナルデータベース(例えばSQLデータベース)中のテーブル及び/又は構造化されたファイルベースのデータベース(例えばJSONデータベース)であり得る。
操作1405において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトについてのローカル識別子及びリモートデータオブジェクトについてのリモートデータオブジェクトメタデータをローカル相関テーブル内に記憶し、ここでこのローカル識別子は、ローカル相関テーブルについての主キーである。ローカル相関テーブルは、リレーショナルデータベース(例えばSQLデータベース)中のテーブル及び/又は構造化されたファイルベースのデータベース(例えばJSONデータベース)であり得る。
操作1410において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトについてのリモートデータオブジェクト識別子に関連付けられたリモートオブジェクトアクセスリクエストを受け取る。ある実施形態では、リモートオブジェクトアクセスリクエストは、リモートデータオブジェクトに関連付けられた情報(例えばリモートオブジェクトメタデータ情報)を検索するためのリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、リモートデータオブジェクトのコンテンツを閲覧するためのリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、リモートデータオブジェクトのコンテンツを変更するためのリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、リモートデータオブジェクトを削除するためのリクエストである。ある実施形態では、リモートデータオブジェクトリクエストは、そのリモートデータオブジェクトのプロパティ(例えばアクセス制限パラメータ、アドレス等)を変更するためのリクエストである。ある実施形態では、リモートオブジェクトアクセスリクエストは、リモートデータオブジェクトについてのリモートリソース識別子を含む。
操作1415において、装置(例えばグループベースコミュニケーションサーバー113)は、リモート相関テーブル及びリモートデータオブジェクトについてリモートデータオブジェクト識別子に基づいて、リモートデータオブジェクトについてのローカル識別子を求める。ある実施形態では、装置は、主キーとしてリモートリソース識別子を用いてリモート相関テーブルの逆引き(reverse lookup)を実行することによって、リモートリソース識別子に関連付けられたリモート相関テーブルエントリを特定し、特定のリモート相関テーブルエントリに関連付けられたローカル識別子をそれから取得する。
操作1420において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートデータオブジェクトについてのリモートデータオブジェクトメタデータを、ローカル相関テーブル及びリモートデータオブジェクトについてのローカル識別子に基づいて求める。ある実施形態では、この装置は、主キーとしてリモートデータオブジェクトについてのローカル識別子を用いてローカル相関テーブルの逆引きを実行することによって、ローカル識別子に関連付けられたローカル相関テーブルエントリを特定し、特定のリモート相関テーブルエントリに関連付けられたリモートデータオブジェクトメタデータをそれから取得する。
操作1425において、装置(例えばグループベースコミュニケーションサーバー113)は、リモートオブジェクトについてのリモートオブジェクトアクセスリクエストを、そのリモートデータオブジェクトについてのリモートデータオブジェクトメタデータに基づいて処理する。ある実施形態では、この装置は、リモートオブジェクトアクセスリクエストによって示された所望のアクションを、リモートデータオブジェクトメタデータに基づいて実行する。例えば、もし所望のアクションが、特定のリモートデータオブジェクト識別子を有するリモートデータオブジェクトを取得することであるなら、この装置は、リモートデータオブジェクトを取得し、検索結果インターフェイスを用いてそれを検索結果として提示し得る。他の例では、もし所望のアクションが、特定のリモートデータオブジェクト識別子を有するリモートデータオブジェクトを変更することであるなら、この装置は、リクエストされたようにリモートデータオブジェクトを変更し、及び/又はリモートデータオブジェクトの変更のためのリクエストを、特定のデータオブジェクトに関連付けられたリモートリソースに送り得る。さらなる例として、もし所望のアクションが、特定のリモートデータオブジェクト識別子を有するリモートデータオブジェクトを削除することであるなら、この装置は、リクエストされたようにリモートデータオブジェクトを削除し、及び/又はリモートデータオブジェクトの削除のためのリクエストを、特定のデータオブジェクトに関連付けられたリモートリソースに送り得る。
[追加の実装の詳細]
例示的処理システムはここで図において記載されてきたが、ここで記載されている本主題及び機能的動作の実装は、本明細書において開示された構造及びそれらの構造的等価物を含む、他のタイプのデジタル電子回路において、又はコンピュータソフトウェア、ファームウェア、又はハードウェアにおいて、又はそれらの1つ以上の組合せにおいて、実現化され得る。
ここで記載された主題の実施形態及び動作は、本明細書において開示された構造及びそれらの構造的等価物を含む、デジタル電子回路において、又はコンピュータソフトウェア、ファームウェア、又はハードウェアにおいて、又はそれらの1つ以上の組合せにおいて、実現化され得る。ここで記載された主題の実施形態は、情報/データ処理装置による実行のために、又は情報/データ処理装置の動作を制御するために、コンピュータ読み取り可能な記憶媒体上にエンコードされた、1つ以上のコンピュータプログラム、すなわちコンピュータプログラム命令の1つ以上のモジュールとして実現化され得る。代替として、又は追加として、プログラム命令は、人工的に生成され搬送される信号、例えば機械生成された電気的、光学的、又は電磁的信号の上にエンコードされ得て、そのような信号は、情報/データ処理装置による実行のために適切な受信機装置への送信のために情報/データをエンコードするために生成されている。コンピュータ読み取り可能な記憶媒体は、コンピュータで読み取り可能な記憶装置、コンピュータで読み取り可能な記憶基板、ランダム又はシリアルアクセスメモリアレイ又はデバイス、又はそれらの1つ以上の組合せであり得るか、又はそれらに含まれ得る。さらに、コンピュータ読み取り可能な記憶媒体は、搬送される信号ではない一方で、コンピュータ読み取り可能な記憶媒体は、人工的に生成された搬送される信号中にエンコードされたコンピュータプログラム命令のソース又は宛先であり得る。コンピュータ読み取り可能な記憶媒体は、1つ以上の別個の物理的要素又は媒体(例えば複数のCD、ディスク、又は他の記憶装置)であり得て、又はそれに含まれ得る。
ここで記載された動作は、1つ以上のコンピュータ読み取り可能な記憶装置上に記憶された、又は他のソースから受信された情報/データに対して、情報/データ処理装置によって実行される動作として実現化され得る。
「データ処理装置」という語は、例示として、プログラム可能なプロセッサ、コンピュータ、システムオンチップ、又は複数のプロセッサ、又は前記の組合せを含む、データを処理する全ての種類の装置、デバイス、及び機械を包含する。装置は、例えば、FPGA(フィールドプログラマブルゲートアレイ)又はASIC(特定用途向け集積回路)のような専用の論理回路を含み得る。この装置は、ハードウェアに加えて、対象となるコンピュータプログラムのための実行環境を作るコード、例えば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、又はこれらの1つ以上の組合せも含み得る。この装置及び実行環境は、ウェブサービス、分散化コンピューティング、及びグリッドコンピューティングインフラストラクチャのような、さまざまな異なるコンピューティングモデルインフラストラクチャを実現し得る。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られている)は、コンパイラ型言語又はインタープリタ型言語、宣言型言語又は手続き型言語、を含む任意の形態のプログラミング言語で記述され得て、それは、スタンドアローンプログラムとして、又はモジュール、要素、サブルーチン、オブジェクト、又はコンピューティング環境における使用に適した他のユニットとしてのものを含む任意の形態に展開され得る。コンピュータプログラムは、そうである必要はないが、ファイルシステム中のファイルに対応してもよい。プログラムは、他のプログラム又は情報/データを保持するファイルの一部の中に(例えば、マークアップ言語文書内に記憶された1つ以上のスクリプト)、当該プログラムの専用の単一のファイルの中に、又は複数の連携されたファイルの中に(例えば、1つ以上のモジュール、サブプログラム、又はコードの一部を記憶するファイル群)記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、又は1つのサイトに位置する又は複数のサイトにわたって分散化され通信ネットワークによって相互接続されている複数のコンピュータ群上で、実行されるように展開され得る。
ここで記載されている処理及びロジックフローは、入力情報/データに対して操作を行い、出力を生成することによって、アクションを実行するために、1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行され得る。コンピュータプログラムの実行に適したプロセッサは、例として、汎用及び特定用途向けの両方のマイクロプロセッサ、及び任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサを含む。一般に、プロセッサは、リードオンリーメモリ、ランダムアクセスメモリ、又はそれら両方から、命令及び情報/データを受け取る。コンピュータの本質的な要素は、命令に従ってアクションを実行するプロセッサ、及び命令及びデータを記憶する1つ以上のメモリデバイスである。一般に、コンピュータは、情報/データをそれから受け取る、又は情報/データをそれに転送する、又はそれら両方を行う、データを記憶する1つ以上のマスストレージデバイス、例えば、磁気的、磁気光学的ディスク、又は光学ディスクも含むか、又はそれに動作可能に結合される。しかし、コンピュータは、そのようなデバイスを有する必要はない。コンピュータプログラム命令及び情報/データを記憶するのに適するデバイスは、例として、半導体メモリデバイス、例えば、EPROM、EEPROM、及びフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスク又は取り外し可能なディスク、磁気光学ディスク、及びCD ROM及びDVD-ROMディスクを含む、全ての形態の不揮発性メモリ、媒体及びメモリデバイスを含む。プロセッサ及びメモリは、特定用途向け論理回路によって補足され得て、又は、特定用途向け論理回路の中に組み込まれ得る。
ユーザーとの相互作用を提供するために、ここで記載された主題の実施形態は、情報/データをユーザーに表示するディスプレイデバイス、例えばCRT(陰極線管)又はLCD(液晶ディスプレイ)モニタ及びキーボード及びポインティングデバイス、例えばマウス又はトラックボールを有するコンピュータ上で実現化され得て、キーボード及びポインティングデバイスは、ユーザーがコンピュータに入力を提供し得る。ユーザーとの相互作用を提供するために他の種類のデバイスも用いられ得て、例えば、ユーザーに提供されるフィードバックは、任意の形態の感覚的フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、又は触覚的フィードバックであり得て、ユーザーからの入力は、音響、音声、又は触覚の入力を含む任意の形態で受け取られ得る。加えて、コンピュータは、ユーザーによって用いられるデバイスへ文書を送り、及びそのようなデバイスから文書を受け取ることによって、ユーザーと相互作用をし得る。例えば、ウェブブラウザから受け取られた要求に応答して、ウェブページをユーザーのクライアントデバイス上のウェブブラウザに送信することによって、ユーザーと相互作用をし得る。
ここで記載された主題の実施形態は、バックエンドのコンポーネントを、例えば情報/データサーバとして含む、又はミドルウェアコンポーネントを含むサーバー、例えばアプリケーションサーバー、又はフロントエンドコンポーネント、例えばそれによってここで開示された主題の実現化によってユーザーが相互作用できるグラフィカルユーザインターフェイス又はウェブブラウザを有するクライアントデバイスを含む、又は1つ以上のそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実現され得る。システムのコンポーネントは、デジタル情報/データ通信の任意の形態又は媒体、例えば通信ネットワークによって相互接続され得る。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)及びワイドエリアネットワーク(「WAN」)、インターネットワーク(例えばインターネット)、及びピアツーピアネットワーク(例えばアドホックピアツーピアネットワーク)が含まれる。
コンピューティングシステムは、クライアント及びサーバーを含み得る。クライアント及びサーバーは、一般に互いに離れており、典型的には通信ネットワークを通して相互作用する。クライアント及びサーバーの関係は、それぞれのコンピュータ上で走るコンピュータプログラムによって、及び互いにクライアント・サーバ関係を有することによって、生じる。ある実施形態では、サーバーは、情報/データ(例えばハイパーテキストマークアップ言語(HTML)ページ及び/又はリモートプレビューのための画像データ)をクライアントデバイスに送信する(例えばクライアントデバイスで情報/データを表示し、かつユーザーの相互作用からユーザー入力を受け取るために)。クライアントデバイスにおいて生成された情報/データ(例えばユーザの相互作用の結果)は、クライアントデバイスからサーバーにおいて受け取られ得る。
本明細書は、多くの具体的な実現例についての詳細を含むが、これらは、任意の発明の、又はクレームされ得る内容の範囲に対する限定として解釈されるべきではなく、むしろ特定の発明の特定の実施形態に特有の特徴についての記載として解釈されるべきである。別個の実施形態群の文脈においてここで記載されているある特徴群は、単一の実施形態において組み合わせられて実現され得る。逆に、単一の実施形態の文脈で記載されているさまざまな特徴は、複数の実施形態において別個に、又は任意の適切なサブコンビネーションにおいて実現されてもよい。さらに、特徴は、ある組合せで機能するとして上では記載され、出願当初においてはそのようにクレームされてさえいるが、クレームされた組合せからの1つ以上の特徴は、場合によっては、その組合せから削除され得て、クレームされた組合せは、サブコンビネーション又はサブコンビネーションの変化形に関するものであり得る。
同様に、操作は、特定の順序で図面において示されているが、これは、そうではないと記載されていない限り、所望の結果を達成するために、そのような操作が示された特定の順序で、又は順次的なやり方で実行されること、又は全ての図示された操作が実行されることを要求するものとしては理解されるべきではない。ある状況においては、マルチタスキング及びパラレル処理が優位性を持ち得る。さらに上で記載された実施形態におけるさまざまなシステムコンポーネントの分離は、そのような分離を全ての実施形態において要求するものとしては理解されるべきではなく、記載されたプログラムコンポーネント及びシステムは、一般に、単一のソフトウェアプロダクトに互いに統合され、又は複数のソフトウェアプロダクトにパッケージングされ得ることが理解されるべきである。
よって、本主題の特定の実施形態が記載されてきた。他の実施形態も以下の請求項の範囲内である。場合によっては、請求項中で記載されたアクションは、異なる順序で実行され得るが、依然として、所望の結果を達成し得る。加えて、添付の図で示されたプロセスは、そうではないと記載されていない限り、所望の結果を得るためには、示された特定の順序、又は順次的なやり方であることを必ずしも要求しない。ある実施形態では、マルチタスキング及びパラレル処理が優位性を用い得る。
[結論]
本発明が関連する技術における当業者なら、前述の記載及び関連する図面において提示された教示を利用すれば、ここで述べられた本発明の多くの改変及び他の実施形態に想到することができよう。したがって、本発明は、開示された特定の実施形態に限定されるべきではなく、改変及び他の実施形態は、添付の特許請求の範囲の範囲内に含まれるよう意図されていると理解されるべきである。ここでは特定の語が採用されているが、それらは一般的な叙述的な意味で用いられているのに過ぎず、限定を目的としたものではない。