(57)【特許請求の範囲】
【請求項１】
クライアントデバイスのグループベースコミュニケーションインタフェースを更新するコンピュータで実現される方法であって、前記グループベースコミュニケーションインタフェースは、複数のグループベースコミュニケーションチャンネルを示すチャンネルリストペインを備え、前記コンピュータで実現される方法は、
外部と共有されるコミュニケーションチャンネル生成要求を受け取ることであって、前記外部と共有されるコミュニケーションチャンネル生成要求は、第１グループＩＤ（identification）及び第２グループＩＤを含む、外部と共有されるコミュニケーションチャンネル生成要求を受け取ること、及び
前記クライアントデバイスが、前記第１グループＩＤ又は前記第２グループＩＤのうちの１つに関連付けられているという判断に応答して、前記グループベースコミュニケーションインタフェースの前記チャンネルリストペインにおいて、前記クライアントデバイスに関連付けられた１つ以上の内部で共有されるコミュニケーションチャンネルを含む内部で共有されるコミュニケーションチャンネルリスト、及び前記クライアントデバイスに関連付けられた１つ以上の外部と共有されるコミュニケーションチャンネルを含む外部と共有されるコミュニケーションチャンネルリストの表示を行うこと
を含み、
前記１つ以上の内部で共有されるコミュニケーションチャンネルは、前記第１グループＩＤに関連付けられた第１ユーザ群にだけアクセス可能であり、
前記１つ以上の外部と共有されるコミュニケーションチャンネルのうちの少なくとも１つの外部と共有されるコミュニケーションチャンネルは、前記第１グループＩＤ又は前記第２グループＩＤに関連付けられた第２ユーザ群にアクセス可能であり、
前記１つ以上の内部で共有されるコミュニケーションチャンネルのそれぞれは、第１複数メッセージングコミュニケーションを通信するよう構成され、
前記１つ以上の外部と共有されるコミュニケーションチャンネルのそれぞれは、第２複数メッセージングコミュニケーションを通信するよう構成され、
前記チャンネルリストペインは、関連付けられたグループベースコミュニケーションチャンネルが外部と共有されていることを示す、前記１つ以上の外部と共有されるコミュニケーションチャンネルの個々に関連付けられた外部と共有されるコミュニケーションチャンネルステータス指示子をさらに含む
コンピュータで実現される方法。
【請求項２】
前記外部と共有されるコミュニケーションチャンネル生成要求は、前記第１グループＩＤに関連付けられた第１の外部と共有されるコミュニケーションチャンネル指示子、及び前記第２グループＩＤに関連付けられた第２の外部と共有されるコミュニケーションチャンネル指示子をさらに含み、
前記コンピュータで実現される方法は、
前記クライアントデバイスが前記第１グループＩＤに関連付けられているという判断に応答して、前記チャンネルリストペインにおいて、前記第１の外部と共有されるコミュニケーションチャンネル指示子を表示すること、及び
前記クライアントデバイスが前記第２グループＩＤと関連付けられているという判断に応答して、前記チャンネルリストペインにおいて、前記第２の外部と共有されるコミュニケーションチャンネル指示子を表示すること
をさらに含む、請求項１に記載のコンピュータで実現される方法。
【請求項３】
前記グループベースコミュニケーションインタフェースは、１つ以上のユーザアイコンを備えるチャンネルユーザフレックスペインをさらに備える
請求項１に記載のコンピュータで実現される方法。
【請求項４】
前記１つ以上のユーザアイコンのそれぞれは、対応するユーザアバター及び対応するグループアイコンを含む
請求項３に記載のコンピュータで実現される方法。
【請求項５】
前記グループベースコミュニケーションインタフェースは、チャンネルメッセージングペイン及びチャンネル入力ボックスをさらに備える
請求項１に記載のコンピュータで実現される方法。
【請求項６】
前記外部と共有されるコミュニケーションチャンネルリストから選択された外部と共有されるコミュニケーションチャンネルの電子的表示を前記クライアントデバイスから受け取ること、
前記チャンネルメッセージングペインにおいて、前記選択された外部と共有されるコミュニケーションチャンネルに関連付けられた１つ以上のユーザメッセージを表示すること、
前記選択された外部と共有されるコミュニケーションチャンネルに関連付けられたユーザ入力を、前記チャンネル入力ボックスにおいて前記クライアントデバイスから受け取ること、及び
前記チャンネルメッセージングペインにおいて前記ユーザ入力を表示すること
をさらに含む
請求項５に記載のコンピュータで実現される方法。
【請求項７】
前記第１複数メッセージングコミュニケーションのそれぞれは、前記第１グループＩＤに関連付けられ、前記第２グループＩＤには関連付けられず、
前記第２複数メッセージングコミュニケーションのうちの少なくとも一部は、前記第１グループＩＤ及び前記第２グループＩＤに関連付けられる
請求項１に記載のコンピュータで実現される方法。
【請求項８】
前記第１グループＩＤは、前記第２グループＩＤとは異なり、
前記第１グループＩＤに関連付けられた前記第１ユーザ群は、前記少なくとも１つの外部と共有されるコミュニケーションチャンネルにアクセスするための、前記第２グループＩＤに関連付けられた前記第２ユーザ群に関連付けられた第２プライバシー設定とは異なる第１プライバシー設定に関連付けられる
請求項１に記載のコンピュータで実現される方法。
【請求項９】
クライアントデバイスのグループベースコミュニケーションインタフェースを更新する装置であって、前記グループベースコミュニケーションインタフェースは、複数のグループベースコミュニケーションチャンネルを示すチャンネルリストペインを備え、前記装置は、少なくとも１つのプロセッサ及びプログラムコードを含む少なくとも１つの非一時的メモリを備え、前記少なくとも１つの非一時的メモリ及び前記プログラムコードは、前記少なくとも１つのプロセッサと共に、前記装置に
外部と共有されるコミュニケーションチャンネル生成要求を受け取ることであって、前記外部と共有されるコミュニケーションチャンネル生成要求は、第１グループＩＤ及び第２グループＩＤを含む、外部と共有されるコミュニケーションチャンネル生成要求を受け取ること、及び
前記クライアントデバイスが、前記第１グループＩＤ又は前記第２グループＩＤのうちの１つと関連付けられているという判断に応答して、前記グループベースコミュニケーションインタフェースの前記チャンネルリストペインにおいて、前記クライアントデバイスに関連付けられた１つ以上の内部で共有されるコミュニケーションチャンネルを含む内部で共有されるコミュニケーションチャンネルリスト、及び前記クライアントデバイスに関連付けられた１つ以上の外部と共有されるコミュニケーションチャンネルを含む外部と共有されるコミュニケーションチャンネルリストの表示を行うこと
を少なくともさせ、
前記１つ以上の内部で共有されるコミュニケーションチャンネルは、前記第１グループＩＤに関連付けられた第１ユーザ群にだけアクセス可能であり、
前記１つ以上の外部と共有されるコミュニケーションチャンネルのうちの少なくとも１つの外部と共有されるコミュニケーションチャンネルは、前記第１グループＩＤ又は前記第２グループＩＤに関連付けられた第２ユーザ群にアクセス可能であり、
前記１つ以上の内部で共有されるコミュニケーションチャンネルのそれぞれは、第１複数メッセージングコミュニケーションを通信するよう構成され、
前記１つ以上の外部と共有されるコミュニケーションチャンネルのそれぞれは、第２複数メッセージングコミュニケーションを通信するよう構成され、
前記チャンネルリストペインは、関連付けられたグループベースコミュニケーションチャンネルが外部と共有されていることを示す、前記１つ以上の外部と共有されるコミュニケーションチャンネルの個々に関連付けられた外部と共有されるコミュニケーションチャンネルステータス指示子をさらに含む
装置。
【請求項１０】
前記外部と共有されるコミュニケーションチャンネル生成要求は、前記第１グループＩＤに関連付けられた第１の外部と共有されるコミュニケーションチャンネル指示子、及び前記第２グループＩＤに関連付けられた第２の外部と共有されるコミュニケーションチャンネル指示子をさらに含み、
前記少なくとも１つの非一時的メモリ及び前記プログラムコードは、前記少なくとも１つのプロセッサと共に、前記装置に
前記クライアントデバイスが前記第１グループＩＤに関連付けられているという判断に応答して、前記チャンネルリストペインにおいて、前記第１の外部と共有されるコミュニケーションチャンネル指示子を表示すること、及び
前記クライアントデバイスが前記第２グループＩＤと関連付けられているという判断に応答して、前記チャンネルリストペインにおいて、前記第２の外部と共有されるコミュニケーションチャンネル指示子を表示すること
をさらにさせる、請求項９に記載の装置。
【請求項１１】
前記グループベースコミュニケーションインタフェースは、１つ以上のユーザアイコンを備えるチャンネルユーザフレックスペインをさらに備える
請求項９に記載の装置。
【請求項１２】
前記１つ以上のユーザアイコンのそれぞれは、対応するユーザアバター及び対応するグループアイコンを含む
請求項１１に記載の装置。
【請求項１３】
前記グループベースコミュニケーションインタフェースは、チャンネルメッセージングペイン及びチャンネル入力ボックスをさらに備える
請求項９に記載の装置。
【請求項１４】
前記少なくとも１つの非一時的メモリ及び前記プログラムコードは、前記少なくとも１つのプロセッサと共に、前記装置に
前記外部と共有されるコミュニケーションチャンネルリストから選択された外部と共有されるコミュニケーションチャンネルの電子的表示を前記クライアントデバイスから受け取ること、
前記チャンネルメッセージングペインにおいて、前記選択された外部と共有されるコミュニケーションチャンネルに関連付けられた１つ以上のユーザメッセージを表示すること、
前記選択された外部と共有されるコミュニケーションチャンネルに関連付けられたユーザ入力を、前記チャンネル入力ボックスにおいて前記クライアントデバイスから受け取ること、及び
前記チャンネルメッセージングペインにおいて前記ユーザ入力を表示すること
をさらにさせる、請求項１３に記載の装置。
【請求項１５】
前記第１複数メッセージングコミュニケーションのそれぞれは、前記第１グループＩＤに関連付けられ、前記第２グループＩＤには関連付けられず、
前記第２複数メッセージングコミュニケーションのうちの少なくとも一部は、前記第１グループＩＤ及び前記第２グループＩＤに関連付けられる
請求項９に記載の装置。
【請求項１６】
前記第１グループＩＤは、前記第２グループＩＤとは異なり、
前記第１グループＩＤに関連付けられた前記第１ユーザ群は、前記少なくとも１つの外部と共有されるコミュニケーションチャンネルにアクセスするための、前記第２グループＩＤに関連付けられた前記第２ユーザ群に関連付けられた第２プライバシー設定とは異なる第１プライバシー設定に関連付けられる
請求項９に記載の装置。
【請求項１７】
クライアントデバイスのグループベースコミュニケーションインタフェースを更新するコンピュータプログラムであって、前記グループベースコミュニケーションインタフェースは、複数のグループベースコミュニケーションチャンネルを示すチャンネルリストペインを備え、前記コンピュータプログラムは、コンピュータに
外部と共有されるコミュニケーションチャンネル生成要求を受け取ることであって、前記外部と共有されるコミュニケーションチャンネル生成要求は、第１グループＩＤ及び第２グループＩＤを含む、外部と共有されるコミュニケーションチャンネル生成要求を受け取ること、及び
前記クライアントデバイスが、前記第１グループＩＤ又は前記第２グループＩＤのうちの１つと関連付けられているという判断に応答して、前記グループベースコミュニケーションインタフェースの前記チャンネルリストペインにおいて、前記クライアントデバイスに関連付けられた１つ以上の内部で共有されるコミュニケーションチャンネルを含む内部で共有されるコミュニケーションチャンネルリスト、及び前記クライアントデバイスに関連付けられた１つ以上の外部と共有されるコミュニケーションチャンネルを含む外部と共有されるコミュニケーションチャンネルリストの表示を行うこと
を実行させ、
前記１つ以上の内部で共有されるコミュニケーションチャンネルは、前記第１グループＩＤに関連付けられた第１ユーザ群にだけアクセス可能であり、
前記１つ以上の外部と共有されるコミュニケーションチャンネルのうちの少なくとも１つの外部と共有されるコミュニケーションチャンネルは、前記第１グループＩＤ又は前記第２グループＩＤに関連付けられた第２ユーザ群にアクセス可能であり、
前記１つ以上の内部で共有されるコミュニケーションチャンネルのそれぞれは、第１複数メッセージングコミュニケーションを通信するよう構成され、
前記１つ以上の外部と共有されるコミュニケーションチャンネルのそれぞれは、第２複数メッセージングコミュニケーションを通信するよう構成され、
前記チャンネルリストペインは、関連付けられたグループベースコミュニケーションチャンネルが外部と共有されていることを示す、前記１つ以上の外部と共有されるコミュニケーションチャンネルの個々に関連付けられた外部と共有されるコミュニケーションチャンネルステータス指示子をさらに含む
コンピュータプログラム。
【請求項１８】
前記外部と共有されるコミュニケーションチャンネル生成要求は、前記第１グループＩＤに関連付けられた第１の外部と共有されるコミュニケーションチャンネル指示子、及び前記第２グループＩＤに関連付けられた第２の外部と共有されるコミュニケーションチャンネル指示子をさらに含み、
前記コンピュータプログラムは、コンピュータに
前記クライアントデバイスが前記第１グループＩＤに関連付けられているという判断に応答して、前記チャンネルリストペインにおいて、前記第１の外部と共有されるコミュニケーションチャンネル指示子を表示すること、及び
前記クライアントデバイスが前記第２グループＩＤと関連付けられているという判断に応答して、前記チャンネルリストペインにおいて、前記第２の外部と共有されるコミュニケーションチャンネル指示子を表示すること
をさらに実行させる、請求項１７に記載のコンピュータプログラム。
【請求項１９】
前記グループベースコミュニケーションインタフェースは、１つ以上のユーザアイコンを備えるチャンネルユーザフレックスペインをさらに備える
請求項１７に記載のコンピュータプログラム。
【請求項２０】
前記１つ以上のユーザアイコンのそれぞれは、対応するユーザアバター及び対応するグループアイコンを含む
請求項１９に記載のコンピュータプログラム。
【請求項２１】
前記グループベースコミュニケーションインタフェースは、チャンネルメッセージングペイン及びチャンネル入力ボックスをさらに備え、
前記コンピュータプログラムは、コンピュータに
前記外部と共有されるコミュニケーションチャンネルリストから選択された外部と共有されるコミュニケーションチャンネルの電子的表示を前記クライアントデバイスから受け取ること、
前記チャンネルメッセージングペインにおいて、前記選択された外部と共有されるコミュニケーションチャンネルに関連付けられた１つ以上のユーザメッセージを表示すること、
前記選択された外部と共有されるコミュニケーションチャンネルに関連付けられたユーザ入力を、前記チャンネル入力ボックスにおいて前記クライアントデバイスから受け取ること、及び
前記チャンネルメッセージングペインにおいて前記ユーザ入力を表示すること
をさらに実行させる、請求項１７に記載のコンピュータプログラム。
【請求項２２】
前記第１複数メッセージングコミュニケーションのそれぞれは、前記第１グループＩＤに関連付けられ、前記第２グループＩＤには関連付けられず、
前記第２複数メッセージングコミュニケーションのうちの少なくとも一部は、前記第１グループＩＤ及び前記第２グループＩＤに関連付けられる
請求項１７に記載のコンピュータプログラム。
【請求項２３】
前記第１グループＩＤは、前記第２グループＩＤとは異なり、
前記第１グループＩＤに関連付けられた前記第１ユーザ群は、前記少なくとも１つの外部と共有されるコミュニケーションチャンネルにアクセスするための、前記第２グループＩＤに関連付けられた前記第２ユーザ群に関連付けられた第２プライバシー設定とは異なる第１プライバシー設定に関連付けられる
請求項１７に記載のコンピュータプログラム。
【発明の詳細な説明】
【背景技術】
【０００１】
さまざまなシステムは、外部と共有されたコミュニケーションチャンネルを確立するよう構成される。出願人は、既存のシステムに関連する多くの欠点及び課題を特定した。注がれた努力、創意、及び革新を通して、これら特定された欠点及び課題の多くは、本発明の実施形態による解法を開発することによって解決され、これらの多くの例は、ここで詳細に記載される。
【発明の概要】
【課題を解決するための手段】
【０００２】
大まかには、本発明の実施形態は、外部と共有されるコミュニケーションチャンネルを生成する方法、装置、システム、計算デバイス及び／又は等を提供する。
【０００３】
ある局面によれば、グループベースコミュニケーションプラットフォームにおいて外部と共有されるコミュニケーションチャンネルを作成するコンピュータで実現される方法が提供される。前記グループベースコミュニケーションプラットフォームは、複数のデータベースシャードを有し得る。前記コンピュータで実現される方法は、イニシエータグループＩＤに関連付けられた第１クライアントデバイスから、前記イニシエータグループＩＤ及びターゲットグループＩＤに関連付けられた共有されるコミュニケーションチャンネル生成クエリを受け取ること、前記グループベースコミュニケーションプラットフォームにおいて、共有されるコミュニケーションチャンネルシャードを生成することであって、前記共有されるコミュニケーションチャンネルシャードは、共有されるコミュニケーションチャンネルＩＤが割り当てられ、グループベースコミュニケーションプラットフォームは、前記イニシエータグループＩＤに関連付けられた第１データベースシャード、及び前記ターゲットグループＩＤに関連付けられた第２データベースシャードを含む、共有されるコミュニケーションチャンネルシャードを生成すること、前記ターゲットグループＩＤに関連付けられた第２クライアントデバイスに、共有されるコミュニケーションチャンネル承認要求を送信することであって、前記共有されるコミュニケーションチャンネル承認要求は、前記共有されるコミュニケーションチャンネルＩＤと関連付けられる、共有されるコミュニケーションチャンネル承認要求を送信すること、共有されるコミュニケーションチャンネル承認通知を受け取ることであって、前記共有されるコミュニケーションチャンネル承認通知は、前記共有されるコミュニケーションチャンネルＩＤを前記ターゲットグループＩＤと関連付ける電子許可を含む、共有されるコミュニケーションチャンネル承認通知を受け取ること、メインデータベースにおいて、前記イニシエータグループＩＤ、前記ターゲットグループＩＤ、及び前記共有されるコミュニケーションチャンネルＩＤに基づいて、シャード参照テーブルを更新すること、及び前記共有されるコミュニケーションチャンネルシャードに基づいて、前記共有されるコミュニケーションチャンネルの、外部と共有されるグループベース共有コミュニケーションチャンネルインタフェースを前記第１クライアントデバイス及び前記第２クライアントデバイスのそれぞれに送信すること
を含み得る。
【０００４】
他の局面によれば、前記シャード参照テーブルは、前記イニシエータグループＩＤ及び前記第１データベースシャードの間の第１参照関係、及び前記ターゲットグループＩＤ及び前記第２データベースシャードの間の第２参照関係を含む。
【０００５】
他の局面によれば、前記シャード参照テーブルを更新することは、前記イニシエータグループＩＤに基づいて、前記シャード参照テーブルにおいて前記第１参照関係を特定すること、前記ターゲットグループＩＤに基づいて、前記シャード参照テーブルにおいて前記第２参照関係を特定すること、及び前記第１参照関係、前記第２参照関係、及び前記共有されるコミュニケーションチャンネルＩＤの間の第３参照関係を生成することをさらに含み得る。
【０００６】
他の局面によれば、クライアントデバイスのグループベースコミュニケーションインタフェースを更新するコンピュータで実現される方法が提供される。前記グループベースコミュニケーションインタフェースは、チャンネルメッセージングペイン及び複数のグループベースコミュニケーションチャンネルを示すチャンネルリストペインを定義し得る。前記方法は、外部と共有されるコミュニケーションチャンネル生成要求を受け取ることであって、前記外部と共有されるコミュニケーションチャンネル生成要求は、第１グループＩＤ及び第２グループＩＤを含む、外部と共有されるコミュニケーションチャンネル生成要求を受け取ること、前記クライアントデバイスが、前記第１グループＩＤ又は前記第２グループＩＤのうちの１つと関連付けられているかを判断すること、及び前記クライアントデバイスが、前記第１グループＩＤ又は前記第２グループＩＤのうちの１つと関連付けられているという判断に応答して、前記チャンネルリストペインにおいて、外部と共有されるコミュニケーションチャンネルリストサブペインを生成することを含み得る。
【０００７】
他の局面によれば、前記外部と共有されるコミュニケーションチャンネルリストサブペインは、前記クライアントデバイスと関連付けられた１つ以上の外部と共有されるコミュニケーションチャンネルのリストを示す。
【０００８】
他の局面によれば、前記外部と共有されるコミュニケーションチャンネル生成要求は、前記第１グループＩＤと関連付けられた第１の外部と共有されるコミュニケーションチャンネル指示子、及び前記第２グループＩＤと関連付けられた第２の外部と共有されるコミュニケーションチャンネル指示子をさらに含み、前記チャンネルリストペインにおいて、前記外部と共有されるコミュニケーションチャンネルリストサブペインを生成することは、前記クライアントデバイスが前記第１グループＩＤと関連付けられているという判断に応答して、前記外部と共有されるコミュニケーションチャンネルリストサブペインにおいて、前記第１の外部と共有されるコミュニケーションチャンネル指示子を表示すること、及び前記クライアントデバイスが前記第２グループＩＤと関連付けられているという判断に応答して、前記外部と共有されるコミュニケーションチャンネルリストサブペインにおいて、前記第２の外部と共有されるコミュニケーションチャンネル指示子を表示することをさらに含む。
【０００９】
他の局面によれば、グループベースコミュニケーションプラットフォームにおいて外部と共有されるコミュニケーションチャンネルを作成する装置が提供される。ある実施形態では、前記グループベースコミュニケーションプラットフォームは、複数のデータベースシャードを有し、前記装置は、少なくとも１つのプロセッサ及びプログラムコードを含む少なくとも１つの非一時的メモリを備える。前記少なくとも１つの非一時的メモリ及び前記プログラムコードは、前記プロセッサと共に、前記プロセッサにイニシエータグループＩＤに関連付けられた第１クライアントデバイスから、前記イニシエータグループＩＤ及びターゲットグループＩＤに関連付けられた共有されるコミュニケーションチャンネル生成クエリを受け取ること、前記グループベースコミュニケーションプラットフォームにおいて、共有されるコミュニケーションチャンネルシャードを生成することであって、前記共有されるコミュニケーションチャンネルシャードは、共有されるコミュニケーションチャンネルＩＤが割り当てられ、グループベースコミュニケーションプラットフォームは、前記イニシエータグループＩＤに関連付けられた第１データベースシャード、及び前記ターゲットグループＩＤに関連付けられた第２データベースシャードを含む、共有されるコミュニケーションチャンネルシャードを生成すること、前記ターゲットグループＩＤに関連付けられた第２クライアントデバイスに、共有されるコミュニケーションチャンネル承認要求を送信することであって、前記共有されるコミュニケーションチャンネル承認要求は、前記共有されるコミュニケーションチャンネルＩＤと関連付けられる、共有されるコミュニケーションチャンネル承認要求を送信すること、共有されるコミュニケーションチャンネル承認通知を受け取ることであって、前記共有されるコミュニケーションチャンネル承認通知は、前記共有されるコミュニケーションチャンネルＩＤを前記ターゲットグループＩＤと関連付ける電子許可を含む、共有されるコミュニケーションチャンネル承認通知を受け取ること、メインデータベースにおいて、前記イニシエータグループＩＤ、前記ターゲットグループＩＤ、及び前記共有されるコミュニケーションチャンネルＩＤに基づいて、シャード参照テーブルを更新すること、及び前記共有されるコミュニケーションチャンネルシャードに基づいて、前記共有されるコミュニケーションチャンネルの、外部と共有されるグループベース共有コミュニケーションチャンネルインタフェースを前記第１クライアントデバイス及び前記第２クライアントデバイスのそれぞれに送信することをさせる。
【００１０】
他の局面によれば、コンピュータプログラム製品が提供される。前記コンピュータプログラム製品は、その中に記憶されたコンピュータ読み取り可能なプログラムコード部を有する少なくとも１つの非一時的コンピュータ読み取り可能な記憶媒体を備え、前記コンピュータ読み取り可能なプログラムコード部は、イニシエータグループＩＤに関連付けられた第１クライアントデバイスから、前記イニシエータグループＩＤ及びターゲットグループＩＤに関連付けられた共有されるコミュニケーションチャンネル生成クエリを受け取り、前記グループベースコミュニケーションプラットフォームにおいて、共有されるコミュニケーションチャンネルシャードを生成することであって、前記共有されるコミュニケーションチャンネルシャードは、共有されるコミュニケーションチャンネルＩＤが割り当てられ、グループベースコミュニケーションプラットフォームは、前記イニシエータグループＩＤに関連付けられた第１データベースシャード、及び前記ターゲットグループＩＤに関連付けられた第２データベースシャードを含む、共有されるコミュニケーションチャンネルシャードを生成し、前記ターゲットグループＩＤに関連付けられた第２クライアントデバイスに、共有されるコミュニケーションチャンネル承認要求を送信することであって、前記共有されるコミュニケーションチャンネル承認要求は、前記共有されるコミュニケーションチャンネルＩＤと関連付けられる、共有されるコミュニケーションチャンネル承認要求を送信し、共有されるコミュニケーションチャンネル承認通知を受け取ることであって、前記共有されるコミュニケーションチャンネル承認通知は、前記共有されるコミュニケーションチャンネルＩＤを前記ターゲットグループＩＤと関連付ける電子許可を含む、共有されるコミュニケーションチャンネル承認通知を受け取り、メインデータベースにおいて、前記イニシエータグループＩＤ、前記ターゲットグループＩＤ、及び前記共有されるコミュニケーションチャンネルＩＤに基づいて、シャード参照テーブルを更新し、及び前記共有されるコミュニケーションチャンネルシャードに基づいて、前記共有されるコミュニケーションチャンネルの、外部と共有されるグループベース共有コミュニケーションチャンネルインタフェースを前記第１クライアントデバイス及び前記第２クライアントデバイスのそれぞれに送信するよう構成された実行可能部を備える。
【図面の簡単な説明】
【００１１】
一般的な語でいくつかの実施形態をこのように記載して、添付図面がここで参照され、これらは、必ずしも縮尺通りではない。
【図１】図１は、本発明のある実施形態によるグループベースコミュニケーションプラットフォームの例示的システムアーキテクチャの図である。
【図２】図２は、本発明のある実施形態によるメッセージサーバの例示的概略図である。
【図３】図３は、本発明のある実施形態によるネットワークアプリケーションサーバの例示的概略図である。
【図４】図４は、本発明のある実施形態による例示的方法を示す例示的フローチャートである。
【図５】図５は、本発明のある実施形態による例示的方法を示す例示的フローチャートである。
【図６】図６は、本発明のある実施形態による例示的方法を示す例示的フローチャートである。
【図７】図７は、本発明のある実施形態による例示的方法を示す例示的フローチャートである。
【図８Ａ】図８Ａは、本発明のある実施形態による例示的ユーザインタフェースのさまざまな要素を示す。
【図８Ｂ】図８Ｂは、本発明のある実施形態による例示的ユーザインタフェースのさまざまな要素を示す。
【図８Ｃ】図８Ｃは、本発明のある実施形態による例示的ユーザインタフェースのさまざまな要素を示す。
【図８Ｄ】図８Ｄは、本発明のある実施形態による例示的ユーザインタフェースのさまざまな要素を示す。
【発明を実施するための形態】
【００１２】
本発明のさまざまな実施形態がここで添付の図面を参照してより完全に以下に記載され、図面において、本発明の全てではないがいくつかの実施形態が示される。実際、本発明は、多くの異なる形態で実現され得て、ここで述べられた実施形態に限定されるように解釈されるべきではない。むしろ、これら実施形態は、本開示が適用され得る法的要件を満足するように提供される。「又は（or）」という語は、ここでは、そうではないと明示されない限り、択一的及び接続的の両方の意味で用いられる。「説明のための（illustrative）」及び「例示的（exemplary）」という語は、質のレベルを明示しない例として用いられる。同様の番号は、同様の要素を通して参照する。
【００１３】
概観
本発明のさまざまな実施形態は、おおまかには、グループベースコミュニケーションプラットフォームにおいて外部と共有されるコミュニケーションチャンネルの確立に関する。グループベースコミュニケーションプラットフォームは、複数のクライアントデバイスと通信するよう構成され、複数のネットワークデータベースを操作する。クライアントデバイスのそれぞれは、グループＩＤ（group identification）と関連付けられ得て、これは、クライアントデバイスが関連付けられているグループ又は組織を示し得る。例えば、特定の組織は、グループベースコミュニケーションプラットフォームに接続された複数のクライアントデバイスを有し得て、グループベースコミュニケーションプラットフォームは、それぞれのクライアントデバイスを特定の組織と関連付けられているとして特定する。
【００１４】
グループベースコミュニケーションプラットフォームは、複数のデータベースシャードも含み、それぞれのデータベースシャードは、特定のグループＩＤに関連するデータを記憶する。例えば、データベースシャードは、特定の組織のメンバに関連付けられた電子コミュニケーションデータを記憶し得て、これにより、その特定の組織のメンバは、リアルタイムで同じ組織の他のメンバとコミュニケーションし、データをやりとりできる。この例では、その組織そのものがデータベースシャードの所有者であり、関連するデータがどこにどのように記憶されるかを支配する。これは、データ保持、展開（unfurling）、及びインテグレーション（integration）設定のような、多くの技術的なタスクを簡略化する。
【００１５】
しかし、既存のシステム及びアプローチは、それぞれのデータベースシャードは単一の組織によってしか所有され得ないため、異なる組織の間でのデータ交換及び通信についてのサポートを提供しないので、多くの技術的な制約及び制限によって悩まされている。例えば、組織ＸのユーザTonyがデータ（組織Ｘのデータベースシャードに記憶されている）を組織Ｙの他のユーザFrankと共有しようとするとき、Tonyは、当該データを他の通信手段を通じて交換しなければならず、これは通信遅延及び非効率を生じ得る。データは、もともと、タイムセンシティブかつ動的であり得るので、既存システムの技術的制限は、データの完全性を損ね、ネットワークリソースを枯渇し得る。
【００１６】
加えて、既存のシステムは、外部と共有されるコミュニケーションチャンネルにおいてユーザアイデンティティ（user identities）を管理するようには管理されていない。例えば、Tonyは、組織Ｘ及び組織Ｚの両方のメンバであり得る。Tonyは、組織Ｘ内のコミュニケーションチャンネルと関連付けられたアイデンティティ（“Tony-X”）、及び組織Ｚ内のコミュニケーションチャンネルと関連付けられたもう一つのアイデンティティ（“Tony-Z”）を有し得る。組織Ｘ及び組織Ｚを接続する外部と共有されるコミュニケーションチャンネルにおいて、既存のシステムは、“Tony-X”及び“Tony-Z”を両立させることが不可能であり、“Tony-X”及び“Tony-Z”は、２人の異なる個人であると間違って判断し得る。既存のシステムは、Tonyを組織Ｘのメンバと判断し、さらには組織Ｚの個人又はゲストと判断もし得て、これは、データ管理においてコンフリクトを生じ得る。
【００１７】
本発明のさまざまな実施形態によって構築されたシステムは、既存のシステムが直面する問題を克服する。
【００１８】
上の「TonyからFrank」の議論に続いて、本発明のさまざまな実施形態によって構築されたグループベースコミュニケーションプラットフォーム（例えばSLACK（登録商標）によって提供されるクラウドベースのグループコラボレーションツール）におけるTonyは、外部と共有されるコミュニケーションチャンネルを通してFrankとリアルタイムでデータを交換することができる。換言すれば、組織Ｘ及び組織Ｙのメンバは、あたかも彼らが同じ組織に所属するかのように、外部と共有されるコミュニケーションチャンネルにおいてコンテンツを見てデータを共有することができる。ネットワークアプリケーション及び他のソフトウェアインテグレーションは、外部と共有されるコミュニケーションチャンネルにおいて動作し続け、それぞれの組織は、そのそれぞれのチャンネルエクスペリエンスに適用するそれ自身の基本設定（preferences）を維持する。
【００１９】
上の“Tony-X/Tony-Z”の議論から続いて、本発明のさまざまな実施形態によって構築されたグループベースコミュニケーションプラットフォームにおいて、Tonyには、Tonyを組織Ｘ及び組織Ｚの両方のメンバとして認識する統一されたアイデンティティが割り当てられる。換言すれば、SLACK（登録商標）によって提供される、このクラウドベースのグループコラボレーションツールは、個人を別個のチームのメンバとして認識し得るアイデンティティの合体を作ることができる。
【００２０】
ユーザエクスペリエンスの観点から、本発明のさまざまな実施形態によって構築されたシステムは、組織の生産性及び効率を大幅に向上させることができる。これらは、他の形態の通信（電子メールのような）の必要性も低減し、異なる組織の間でより良いコラボレーションを提供しつつ、チームの間のチャンネルの非接続を除去する。加えて、それらは、非対称でカスタマイズ可能なプライバシー設定を提供するよう構成され、ここで、２つのチーム間の外部と共有されるコミュニケーションチャンネルは、あるチームについてある一つのプライバシーコンフィギュレーションを有し、もう一つのチームについて異なるコンフィギュレーションを有し得る。さらに、外部と共有されるコミュニケーションチャンネルは、クロスネットワーク効果を作り得て、これは、異なる組織又は異なるグループからのユーザリテンション率を増す。
【００２１】
開発者の観点からは、本発明のさまざまな実施形態によって構築されたシステムは、データの取得及び適切な可視性のためのサポートを提供しつつ、保存設定（retention settings）の柔軟性を提供する。それらは、チャンネルに基づいたチームの選択的接続と共に、チャンネルの選択的接続も可能にする。
【００２２】
よって、本発明のさまざまな実施形態によって構築されたシステムは、既存のシステムが直面する技術的問題に対して、具体的な、技術的な解法を提供し、その詳細が以下に説明される。
【００２３】
定義
ここで用いられるように「データ」、「コンテンツ」、「情報」という語、及び同様の語は、本発明の実施形態に従って送信、受信、及び／又は記憶されることが可能なデータを表すために相互交換的に用いられ得る。よって、任意のそのような語の使用は、本発明の実施形態の精神及び範囲を限定するように解釈されるべきではない。さらに、データを他の計算デバイスから受け取るための計算デバイスがここで記載されるが、このデータは、他の計算デバイスから直接に受け取られてもよく、又は、例えば、１つ以上のサーバ、リレー、ルータ、ネットワークアクセスポイント、基地局、ホスト、及び／又は同様のもののような、１つ以上の媒介する計算デバイスを介して間接的に受け取られてもよいことが理解されよう。同様に、計算デバイスは、他の計算デバイスにデータを送るようここでは記載されるが、このデータは、他の計算デバイスに直接に送られてもよく、又は１つ以上の中間計算デバイスを介して、例えば１つ以上のサーバ、リレー、ルータ、ネットワークアクセスポイント、基地局、ホスト及び／又はその他を介して、間接的に送られてもよいことが理解されるだろう。
【００２４】
「ユーザ」という語は、個人、複数の個人のグループ、事業家、組織等を表すと理解されるべきである。ユーザは、クライアントデバイスを用いてグループベースコミュニケーション又はメッセージングシステムにアクセスし得る。「グループベース」は、規定されたグループのユーザ群にだけアクセス可能であるのに十分なセキュリティを有するシステム、チャンネル、メッセージ、又は仮想環境を表すためにここでは用いられている。このグループは、組織又は商業エンタープライズのもののようなコモンアクセス信任状によって定義され得る。アクセスは、参加するための認証された要求又はあるグループメンバユーザから他の非メンバユーザに送信された参加するための招待によってさらに促進され得る。グループ識別子（以下に定義される）は、データ、情報、メッセージ等を特定のグループと関連付けるために用いられる。
【００２５】
「ユーザプロファイル」、「ユーザアカウント」、及び「ユーザアカウント詳細」という語は、ユーザと関連付けられた情報を表し、これには、例えば、ユーザ識別子、そのユーザがアクセスを認められているグループベースコミュニケーションチャンネルと関連付けられた１つ以上のグループベースコミュニケーションチャンネル識別子、そのユーザが関連付けられているグループの１つ以上のグループ識別子、そのユーザがいずれかのグループベースコミュニケーションチャンネルのオーナーであるかについての表示、ユーザがいずれかのグループベースコミュニケーションチャンネルの制限を有するかについての表示、複数のメッセージ、複数の絵文字、複数の会話、複数の会話トピックス、アバター、電子メールアドレス、実名（例えばJohn Doe）、ユーザ名（例えばjdoe）、パスワード、実名、時間帯、ステータス等が含まれる。ユーザアカウント詳細は、例えば、そのユーザのユーザ名及びパスワードを含むそのユーザのログイン情報のようなユーザ資格情報（user credentials）のサブセット指定を含み得る。
【００２６】
「クライアントデバイス」という語は、１つ以上のサーバによって利用可能にされた１つ以上のサービスにアクセスするよう構成されたコンピュータハードウェア（群）及び／又はソフトウェア（群）を表す。サーバ（群）は、しばしば（いつもではないが）他のコンピュータシステム上にあり、その場合、クライアントデバイスは、ネットワークによってサービスにアクセスする。クライアントデバイスは、グループＩＤ（group identification）と関連付けられ得て、ここでこのグループＩＤは、ユーザが所属するグループ（例えばユーザグループ）を示唆する電子的表示である。クライアントデバイスは、限定としてではなく、スマートフォン、タブレットコンピュータ、ラップトップコンピュータ、デスクトップコンピュータ、ウェラブル機器、パーソナルコンピュータ、エンタープライズコンピュータ等を含み得る。
【００２７】
「グループベースコミュニケーションプラットフォーム」という語は、１つ以上のクライアントデバイスにアクセス可能であり、データベースの操作に関連する複数のソフトウェアアプリケーションへのアクセスを提供するよう動作可能である計算サービスの集合体を表す。ある例では、グループベースコミュニケーションプラットフォームは、ソフトウェアアプリケーションを実行し、デジタルコンテンツアイテム、アプリケーション関連データ、及び／又はその他を記憶する１つ以上のデータベースへのアクセスを有する１つ以上の追加のサーバと通信するように設けられている１つ以上のセントラルサーバの形態を取り得る。グループベースコミュニケーションプラットフォームは、クライアント保存設定及び他のコンプライアンス局面もサポートし得る。さらに、グループベースコミュニケーションプラットフォームは、データへの適切なアクセスを付与し、サードパーティがアプリケーション及びボットをビルドして、カスタマーのワークフローと統合することを許す包括的なサードパーティ開発者サポートも提供し得る。
【００２８】
「コミュニケーションチャンネル」という語は、システム及びシステムの部分の間でデータの交換のために用いられる情報ルート及び関連付けられた回路を表す。例えば、コミュニケーションチャンネルは、さまざまなクライアントデバイスの間で確立され得て、これらクライアントデバイスが互いの間でデータを通信し、共有することを可能にする。コミュニケーションチャンネルＩＤ（communication channel identification）は、コミュニケーションチャンネルに割り当てられ得て、これは、そのコミュニケーションチャンネルの関連するデータが記憶されているデータベース中の物理アドレスを示す。コミュニケーションチャンネルは、「パブリック」であり得て、これは、任意のクライアントデバイスがコミュニケーションチャンネルを通して情報共有に加入及び参加できるようにし得る。コミュニケーションチャンネルは、「プライベート」であり得て、これは、コミュニケーションチャンネルにおけるデータ通信をあるクライアントデバイス及び／又はユーザに制限し得る。
【００２９】
「グループベースコミュニケーションチャンネルインタフェース」という語は、当該グループのメンバだけに閲覧可能である、チャンネルメンバ（例えばクライアントデバイスを用いて環境にアクセスする認証されたユーザ）によってポストされたメッセージングコミュニケーションを表示するよう構成された仮想的な通信環境つまりフィードを表す。グループベースコミュニケーションチャンネルのフォーマットは、グループベースコミュニケーションチャンネルの異なるメンバには異なるように見えるかもしれない。しかし、グループベースコミュニケーションのチャンネルのコンテンツ（すなわちメッセージングコミュニケーション）は、そのグループベースコミュニケーションチャンネルのそれぞれのメンバに表示される。例えば、グループベースのメッセージングコミュニケーションの共通セット（common set）は、それぞれのグループベースコミュニケーションチャンネルのそれぞれのメンバに表示されて、グループベースコミュニケーションチャンネルのコンテンツ（すなわちメッセージングコミュニケーション）がグループベースコミュニケーションチャンネルのメンバごとに変わらないようにする。
【００３０】
ここで用いられるように、「メッセージングコミュニケーション」及び「メッセージ」という語は、クライアントデバイスを用いてユーザによって提供される、グループベースコミュニケーションチャンネル内で表示されるよう構成された任意の電子的に生成されたデジタルコンテンツオブジェクトを表す。メッセージコミュニケーションは、ユーザによって提供される（クライアントデバイスを用いて）任意のテキスト、画像、動画、オーディオ又はそれらの組み合わせを含み得る。例えば、ユーザは、メッセージコンテンツとしてメッセージングコミュニケーションの中で画像及び動画と共にテキストを含むメッセージングコミュニケーションを提供し得る。そのような場合、テキスト、画像、及び動画は、メッセージングコミュニケーション又はデジタルコンテンツオブジェクトを構成し得る。グループベースコミュニケーションシステムのグループベースコミュニケーションチャンネルに送信又はポストされたそれぞれのメッセージは、以下を含むメタデータを含み、すなわちこのメタデータは、送信するユーザの識別子、メッセージ識別子、メッセージコンテンツ、グループ識別子、及びグループベースコミュニケーションチャンネルの識別子を含む。上述の識別子のそれぞれは、ＡＳＣＩＩテキスト、ポインタ、メモリアドレス等を含み得る。
【００３１】
「グループベースコミュニケーションチャンネル識別子」又は「チャンネル識別子」という語は、グループベースコミュニケーションチャンネルが特定され得るデータの１つ以上のアイテムを表す。例えば、グループベースコミュニケーションチャンネル識別子は、ＡＳＣＩＩテキスト、ポインタ、メモリアドレス等を含み得る。
【００３２】
「グループ識別子」又は「チーム識別子」は、グループベースコミュニケーションシステム内のグループが特定され得るデータの１つ以上のアイテムを表す。例えば、グループ識別子は、ＡＳＣＩＩテキスト、ポインタ、メモリアドレス等を含み得る。
【００３３】
「送信ユーザ識別子」は、特定のユーザ（すなわち特定のユーザに関連付けられたクライアントデバイス）によって送られるメッセージのコレクションと関連付けられる。これらメッセージは、ユーザに関するコンテキストを決定するために分析され得る（例えばあるトピックにおけるユーザの専門知識又は興味は、そのようなメッセージの中のそのトピック又はそのトピックに関連付けられたキーワードの言及の頻度に基づいて決定され得る）。
【００３４】
グループベースコミュニケーションシステムユーザは、組織グループに組織化され（organized）（例えばそれぞれの会社の従業員は、別々の組織グループであり得る）、それぞれの組織グループは、ユーザが割当され得る又はユーザが参加し得る（例えばグループベースコミュニケーションチャンネルは、部署、オフィスのような地理的位置、製品ライン、ユーザの関心、トピック、問題、及び／又はその他を表し得る）１つ以上のグループベースコミュニケーションチャンネル（以下で説明される）を有し得る。グループ識別子は、メッセージのためのアクセス制御を促進するのに用いられ得る（例えばサーチクエリに応答してサーチ結果の一部としてメッセージリターンを持つようなメッセージへのアクセスは、それらのユーザプロファイルに関連付けられたグループ識別子を有するそれらユーザに制限され得る）。グループ識別子は、メッセージについてのコンテキストを決定するのに用いられ得る（例えば組織の名称及び／又は組織の簡単な説明のようなグループの記述がグループ識別子に関連付けられ得る）。
【００３５】
グループベースコミュニケーションシステムユーザは、グループベースコミュニケーションチャンネルに参加し得る。一部のグループベースコミュニケーションチャンネルは、それらのユーザプロファイルに関連付けられた特定の組織グループ識別子を有するそれらユーザにとってはグローバルにアクセス可能であり得る（すなわちその組織のメンバであるユーザ）。一部のグループベースコミュニケーションチャンネルへのアクセスは、特定のグループのメンバに制限され得て、それによってグループベースコミュニケーションチャンネルは、それらのユーザプロファイルに関連付けられた特定のグループ識別子を有するそれらユーザにアクセス可能である。グループベースコミュニケーションチャンネル識別子は、メッセージについてのアクセス制御を促進するために用いられ得る（例えば、サーチクエリに応答してサーチ結果の一部としてメッセージリターンを持つようなメッセージへのアクセスは、それらのユーザプロファイルに関連付けられたグループ識別子を有し、又はグループベースコミュニケーションチャンネルに参加する能力を有するそれらユーザに制限され得る）。グループベースコミュニケーションチャンネル識別子は、メッセージのコンテキストを決定するのに用いられ得る（例えば、グループベースコミュニケーションチャンネルで議論されるプロジェクトの説明のような、グループベースコミュニケーションチャンネルの説明は、グループベースコミュニケーションチャンネル識別子に関連付けられ得る）。
【００３６】
「プライベートグループベースコミュニケーションチャンネル」という語は、制限されたアクセスを持つことによって、グループベースコミュニケーションシステムの他のメンバによって一般にはアクセス可能ではなく及び／又はサーチ可能ではないグループベースコミュニケーションチャンネルを表す。例えば、プライベートグループベースコミュニケーションチャンネルへのアクセスについての知識及び許可を有する（例えば、ユーザが許可／認証された後に、プライベートグループベースコミュニケーションチャンネルについてのグループベースコミュニケーションチャンネル識別子がそれらのユーザプロファイルに関連付けられる）ユーザ又は管理者だけが、プライベートグループベースコミュニケーションチャンネルのコンテンツを見ることができる。
【００３７】
「クエリ」という語は、データベースに関連付けられた要求を表す。「クエリ」は、１つ以上のクライアントデバイス上で生成され得て、グループベースコミュニケーションプラットフォームに送信され得る。クエリは、「セレクトクエリ」であり得て、これは、クエリに従ってデータをデータベースから読み出し可能なフォーマットで抽出するのに用いられる。クエリは、「アクションクエリ」であり得て、これは、ネットワークデータベース内に記憶されたデータに対して操作（挿入、削除、及び／又は更新のような）を要求する。例えば、「コミュニケーションチャンネル生成クエリ」は、コミュニケーションチャンネルの生成を要求するアクションクエリである。
【００３８】
「シャード」という語は、個別にアクセスされ、管理され得るデータの関連する、個別のアイテム群の集合体を表す。シャードは、単一のデータベース内に記憶され得て、又はオプションとして複数のデータベース群にわたって拡散され得る。これは、大量のデータが存在するときに特に有用である。非常に大きなデータベースを１箇所に作成及び維持するコストは、指数関数的に増加し得るが、これは、データベースがよりハイエンドのコンピュータを必要とするからである。対照的に、データベースシャードは、ずっと安価な通常のデータベース群のいくつかにわたって分散され得る。「シャーディング」は、大きなデータベースをパーティショニングすることによって、より管理しやすくすることを表す。データベースをシャーディングすることは、データベースを、共通のものを共有しない、より小さなデータベース群に分割することを伴うので、２つ以上のデータベースシャードを伴うコミュニケーションチャンネルを作成するのには技術的な困難を生じる。データベースは、これらには限定されないが、チャンネルＩＤ、ユーザＩＤ、チームＩＤ、又はデータベース構成内のデータの任意の属性を含む、さまざまなファクタに基づいて「シャード化（sharded）」され得る。どのファクタ（群）を使用すべきかを決定するために、システムは、データ分離、データの近接（ルックアップのために）、及びパフォーマンス／分散システムにわたるアクセスのスピードを考慮し得る。システムは、データの量及びシステムがそのようなデータを取得するのに要求されるスピードの両方を考慮する必要があるかもしれない。
【００３９】
「参照テーブル」という語は、さまざまなデータアイテム群の間の参照関係（referential connections）群のセットを表す。参照テーブルは、表形式であり得て、これは、「行」及び「列」を含み得る。それぞれの行は、参照関係を表現し得て、それぞれの列は、データアイテムを表現し得る。データアイテムは、グループＩＤ、チャンネルＩＤ、ネットワークデータベース中の物理アドレス等であり得る。参照関係は、さまざまなデータアイテム群の間の関係及び／又は制約を示し得る。例えば、シャード参照テーブルは、ネットワークデータベース中のコミュニケーションチャンネルシャードの物理アドレスを、そのコミュニケーションチャンネルのＩＤに基づいて特定し得る。シャード参照テーブルは、データベースシャードパラメータ、メッセージサーバシャードパラメータ、Redisシャードパラメータ、Solrシャードパラメータ、チームメタデータ（例えば作成日付、アーカイブ日付、削除日付）、管理者ユーザデータ、ドメイン、電子メールドメイン、基本設定、招待（invites）、クレジット、支払いレベル、及びチームがエンタープライズであるかを示すデータのようなパラメータを含み得る。
【００４０】
「イベント」という語は、システムハードウェア及び／又はソフトウェアにとって技術的な重要性を有する特定可能な、非一時的な出現を表す。イベントは、コンピュータシステムによって認識され得る、なんらかのメッセージ、トークン、カウント、パターン、値、又はマーカを表現し得る。イベントに基づいて、所定の機能を実行するためにアプリケーションがトリガされ得る。例えば、グループベースコミュニケーションチャンネルにおいて、ユーザによって送信されたメッセージは、イベントアプリケーションプログラミングインタフェース（ＡＰＩ）を利用するアプリケーションにとってのイベントである。イベントは、キーストローク又はマウスの動きのようなユーザによって発生されたものでもよく、又はプログラムローディング及びエラーのようなシステムによって発生されたものであってもよい。
【００４１】
例示的システムアーキテクチャ
本発明の方法、装置、及びコンピュータプログラム製品は、さまざまなデバイスの任意のものによって実現され得る。例えば、例示的実施形態の方法、装置、及びコンピュータプログラム製品は、１つ以上のクライアントデバイスのような１つ以上のデバイスと通信するよう構成されるサーバ又は他のネットワークエンティティのようなネットワークデバイスによって実現され得る。ある好ましい非限定的な実施形態において、計算デバイスは、パーソナルコンピュータ又はコンピュータワークステーションのような固定された計算デバイスを含み得る。さらに例示的実施形態は、携帯デジタルアシスタント（ＰＤＡ）、携帯電話、スマートフォン、ラップトップコンピュータ、タブレットコンピュータ、ウェアラブルデバイス、又は前述のデバイスの任意の組合せのような、さまざまなモバイルデバイスの任意のものによって実現され得る。
【００４２】
図１は、本発明の実施形態が動作し得る例示的計算システム１００を示す。ユーザは、クライアントデバイス１０１Ａ−１０１Ｎを用いて通信ネットワーク１０３を介してグループベースコミュニケーションプラットフォーム１０５にアクセスし得る。
【００４３】
通信ネットワーク１０３は、例えば、それを実現するのに要求される任意のハードウェア、ソフトウェア及び／又はファームウェア（例えばネットワークルータ等のような）と共に、有線又は無線ローカルエリアネットワーク（ＬＡＮ）、パーソナルエリアネットワーク（ＰＡＮ）、メトロポリタンエリアネットワーク（ＭＡＮ）、ワイドエリアネットワーク（ＷＡＮ）等を含む任意の有線又は無線通信ネットワークを含み得る。例えば、通信ネットワーク１０３は、セルラー式電話、８０２．１１、８０２．１６、８０２．２０、及び／又はＷｉＭａｘネットワークを含み得る。さらに、通信ネットワーク１０３は、インターネットのような公衆ネットワーク、イントラネットのようなプライベートネットワーク、又はそれらの組合せを含み得て、ＴＣＰ／ＩＰベースのネットワーキングプロトコルを含むがこれには限定されない、現在利用可能な又は将来開発されるさまざまなネットワーキングプロトコルを利用し得る。例えば、ネットワーキングプロトコルは、グループベースコミュニケーションシステムの要求に合うようにカスタマイズされ得る。ある実施形態では、プロトコルは、ウェブソケットチャンネルを介して送られるＪＳＯＮオブジェクトのカスタムプロトコルである。ある実施形態では、プロトコルは、ＪＳＯＮ−ＲＰＣ、ＪＳＯＮ−ＲＥＳＴ／ＨＴＴＰ等である。
【００４４】
グループベースコミュニケーションプラットフォーム１０５は、メッセージサーバ１０７及びネットワークアプリケーションサーバ１０９を含み得る。ネットワークアプリケーションサーバ１０９は、メインデータベース１１１及び１つ以上のデータベースシャード１１３Ａ−１１３Ｎと通信し得る。
【００４５】
メッセージサーバ１０７は、この技術分野で知られるようにコンピュータ又はコンピュータ群として実現され得る。メッセージサーバ１０７は、クライアントデバイス１０１Ａ−１０１Ｎには限定されないがこれらを含むさまざまなソースからの電子データを通信ネットワーク１０３を介して受信するために設けられ得る。例えば、メッセージサーバ１０７は、クライアントデバイス１０１Ａ−１０１Ｎによって提供された電子メッセージを受信及び処理するよう動作可能であり得る。メッセージサーバ１０７は、クライアントデバイス１０１Ａ−１０１Ｎへの電子メッセージの送信及び増幅（amplification）を促進することもし得る。
【００４６】
同様に、ネットワークアプリケーションサーバ１０９は、この技術分野で知られるようにコンピュータ又はコンピュータ群として実現され得る。ネットワークアプリケーションサーバ１０９は、クライアントデバイス１０１Ａ−１０１Ｎに限定されないがこれらを含むさまざまなソースから通信ネットワーク１０３を介して電子データを受信することを実現し得る。例えば、ネットワークアプリケーションサーバ１０９は、クライアントデバイス１０１Ａ−１０１Ｎによって提供された電子メッセージを受信及び処理するよう動作可能であり得る。ネットワークアプリケーションサーバ１０９は、メインデータベース１１１及び／又は１つ以上のデータベースシャード１１３Ａ−１１３Ｎに関して、クライアントデバイス１０１Ａ−１０１Ｎ及び／又はメッセージサーバ１０７によって提供されるネットワークデータベースクエリを受信及び処理するようにも動作可能であり得る。ネットワークアプリケーションサーバ１０９は、さらに、ユーザインタフェースの生成を促進し得る。
【００４７】
クライアントデバイス１０１Ａ−１０１Ｎは、上で定義されたような任意の計算デバイスであり得る。クライアントデバイス１０１Ａ−１０１Ｎからメッセージサーバ１０７及びネットワークアプリケーションサーバ１０９によって受信された電子データは、さまざまな形態で、かつさまざまな方法を介して提供され得る。
【００４８】
ある好ましい非限定的な実施形態においては、クライアントデバイス１０１Ａ−１０１Ｎのうちの１つ以上は、スマートフォン又はタブレットのようなモバイルデバイスである。１つ以上のクライアントデバイスは、メッセージサーバ１０７及び／又はネットワークアプリケーションサーバ１０９と相互作用するために「アプリ」を実行し得る。そのようなアプリは、スマートフォン又はタブレットのようなモバイルデバイス上で動作するように典型的には設計される。例えば、アプリは、Apple Inc.のiOS（登録商標）、Google Inc.のAndroid（登録商標）、又はMicrosoft Inc.のWindows 10 Mobile（登録商標）のようなモバイルデバイスオペレーティングシステム上で動作するよう提供され得る。これらプラットフォームは、アプリが互いに、及びモバイルデバイスの特定のハードウェア及びソフトウェア要素と通信することを可能にするフレームワークを典型的には提供する。例えば、上で挙げられたモバイルデバイスオペレーティングシステムは、それぞれ、位置サービス回路、有線及び無線ネットワークインタフェース、ユーザコンタクト、及び他のアプリケーションと相互作用するためのフレームワークを提供する。アプリの外で動作するハードウェア及びソフトウェアモジュールとの通信は、モバイルデバイスオペレーティングシステムによって提供されるアプリケーションプログラミングインタフェース（ＡＰＩ）を介して典型的には提供される。
【００４９】
ある好ましい非限定的な実施形態においては、クライアントデバイス１０１Ａ−１０１Ｎは、ウェブブラウザを介してメッセージサーバ１０７及び／又はネットワークアプリケーションサーバ１０９と相互作用し得る。クライアントデバイス１０１Ａ−１０１Ｎは、メッセージサーバ１０７及び／又はネットワークアプリケーションサーバ１０９と相互作用するよう設計されたさまざまなハードウェア又はファームウェアも含み得る。
【００５０】
ある好ましい非限定的な実施形態においては、データベースシャード１１３Ａ−１１３Ｎは、ネットワークアタッチトストレージ（ＮＡＳ）装置又は装置群のようなデータ記憶装置として、又は別個のデータベースサーバ又はサーバ群として実現され得る。データベースシャード１１３Ａ−１１３Ｎは、ネットワークアプリケーションサーバ１０９によってアクセス及び記憶される情報を含む。例えば、データベースシャード１１３Ａ−１１３Ｎは、ユーザプロファイル、ユーザ特権情報、電子ファイル、複数のグループベースコミュニケーションチャンネル間で組織化されたメッセージングコミュニケーション、及び／又はその他を限定ではなく含み得る。
【００５１】
ある好ましい非限定的な実施形態においては、メインデータベース１１１は、ネットワークアタッチトストレージ（ＮＡＳ）装置又は装置群のようなデータ記憶装置として、又は別個のデータベースサーバ又はサーバ群として実現され得る。メインデータベース１１１は、ネットワークアプリケーションサーバ１０９によってアクセス及び記憶される情報を含む。例えば、メインデータベース１１１は、シャード参照テーブルを限定ではなく含み得る。
【００５２】
例示的グループベースコミュニケーションプラットフォーム１０５のある実施形態では、メッセージ又はメッセージングコミュニケーションは、クライアントデバイス１０１Ａ−１０１Ｎからグループベースコミュニケーションプラットフォーム１０５に送られ得る。さまざまな実現例において、メッセージは、クライアントデバイス１０１Ａ−１０１Ｎのうちの１つによって直接に、通信ネットワーク１０３を通じてグループベースコミュニケーションプラットフォーム１０５に送られ得る。メッセージは、メッセージサーバ及び／又はその他のような媒介を介してグループベースコミュニケーションシステム１０５に送られてもよい。例えば、クライアントデバイス１０１Ａ−１０１Ａは、デスクトップ、ラップトップ、タブレット、スマートフォン、及び／又はクライアントアプリケーションを実行しているもの（例えばグループベースコミュニケーションアプリ）であり得る。ある実現例では、メッセージは、メッセージ識別子、送信ユーザ識別子、グループ識別子、グループベースコミュニケーションチャンネル識別子、メッセージコンテンツ（例えばテキスト、絵文字、画像、リンク）、添付物（例えばファイル）、メッセージ階層データ（例えばそのメッセージは、他のメッセージの応答であり得る）、サードパーティメタデータ、及び／又はその他のようなデータを含み得る。ある実施形態では、クライアントデバイス１０１Ａ−１０１Ｎは、以下に示されるような、エクステンシブルマークアップランゲージ（「ＸＭＬ」）でフォーマットされたデータを含む、（セキュア）ハイパーテキストトランスファプロトコル（「ＨＴＴＰ（Ｓ）」）ＰＯＳＴメッセージの形態を実質的にとる、以下の例示的メッセージを提供し得る。
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>
グループベースコミュニケーションプラットフォーム１０５は、少なくとも１つのデータベースシャード１１３Ａ−１１３Ｎにおけるメッセージのインデキシング及び記憶を促進するために、受信されたメッセージに基づいて記憶メッセージを作成し得る少なくとも１つのメッセージサーバ１０７を備える。ある実施形態では、記憶メッセージは、メッセージ識別子、グループ識別子、グループベースコミュニケーションチャンネル識別子、送信ユーザ識別子、トピックス、レスポンス、メッセージコンテンツ、添付物、メッセージ階層データ、サードパーティメタデータ、会話プリミティブデータ及び／又はその他のようなデータを含み得る。例えば、グループベースコミュニケーションサーバ１０６は、以下に示すような、ＸＭＬでフォーマットされたデータを含む、ＨＴＴＰ（Ｓ）  ＰＯＳＴメッセージの形態を実質的にとる、以下の例示的記憶メッセージを提供し得る。
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）得る（例えばＰＨＰコマンドを用いて）。
【００５４】
ある実施形態では、応答を示すデータは、そのメッセージと関連付けられ得る。例えば、他のユーザによるメッセージへの応答は、反応（例えばメッセージに関連付けられた絵文字の選択、メッセージに関連付けられた「いいね」ボタンの選択）、メッセージに埋め込まれたハイパーリンクをクリックすること、メッセージへ応答すること（例えばメッセージに応答してグループベースコミュニケーションチャンネルにメッセージをポストすること）、メッセージに関連付けられたファイルをダウンロードすること、あるグループベースコミュニケーションチャンネルから他のグループベースコミュニケーションチャンネルへメッセージをシェアすること、メッセージをピン留めすること、メッセージに星を付けること、及び／又はその他を含み得る。ある実施形態では、他のユーザによるメッセージへの応答に関するデータは、メッセージに含まれ得て、そのメッセージは、応答を決定するためにパースされ得る（例えばＰＨＰコマンドを用いて）。他の実現例では、メッセージへの応答に関するデータは、データベースから取り出され得る。例えば、メッセージに対する応答に関するデータは、以下のようなMySQLデータベースコマンドを介して取得され得る。
SELECT messageResponses
FROM MSM_Message
WHERE messageID = ID_message_10.
例えば、メッセージへの応答に関するデータは、メッセージについてのコンテキスト（例えばメッセージについての、あるユーザの視点からのソーシャルスコア）を決定するのに用いられ得る。他の例では、メッセージへの応答に関連するデータは、ユーザに関するコンテキストを決定するために分析され得る（例えばあるトピックにおけるユーザの経験は、そのトピックに関するユーザのメッセージに対する応答に基づいて決定され得る）。
【００５５】
実施形態において、添付物は、メッセージに含まれ得る。もし添付物が存在するなら、ファイルは、メッセージと関連付けられ得る。ある実現例では、メッセージは、添付物のファイル名を決定するためにパースされ得る（例えばＰＨＰコマンドを用いて）。例えば、ファイルコンテンツは、メッセージについてのコンテキストを決定するために分析され得る（例えば特許ポリシーの文書は、そのメッセージが「特許」というトピックに関連付けられていると表示し得る）。
【００５６】
実施形態において、サードパーティメタデータは、メッセージに関連付けられ得る。例えば、サードパーティメタデータは、会社、グループ、グループベースコミュニケーションチャンネル、及び／又はその他に特有である、メッセージ又はユーザについての追加のコンテキストを提供し得る。ある実現例では、メッセージは、サードパーティメタデータを決定するためにパースされ得る（例えばＰＨＰコマンドを用いて）。例えば、サードパーティメタデータは、メッセージを送ったユーザがグループベースコミュニケーションチャンネルの許可された代表者であるかを示し得る（例えば、許可された代表者は、グループベースコミュニケーションチャンネルにおける質問に応答するために会社によって許可され得る）。
【００５７】
実施形態において、会話プリミティブ（conversation primitive）は、メッセージと関連付けられ得る。ある実施形態では、会話プリミティブは、メッセージを分析し、インデックス付けし、記憶し、及び／又はその他をするのに用いられる要素である。例えば、メッセージは、それ自身で分析され得て、それ自身の会話プリミティブを形成し得る。他の例では、メッセージは、会話を構成する他のメッセージと共に分析され得て、会話を構成するメッセージは、会話プリミティブを形成し得る。ある実現例では、会話プリミティブは、当該メッセージ、特定の個数（例えば２）の先行するメッセージ及び特定の個数（例えば２）の後続するメッセージとして決定され得る。他の実現例では、会話プリミティブは、当該メッセージ及び他のメッセージ（例えばそのチャンネルにおける）で議論されているトピック及び／又はこれらメッセージの近接性（例えばメッセージ送信順序の近接性、メッセージ送信時刻の近接性）の分析に基づいて決定され得る。
【００５８】
実施形態においては、上で説明されたように決定されたさまざまなメタデータ及び／又はメッセージのコンテンツは、メッセージをインデックス化する（例えば会話プリミティブを用いて）ことによって、サーチングのさまざまなファセット（すなわちメッセージサーバ１０７から結果を返すサーチクエリ）を促進するために用いられ得る。ある実現例では、記憶メッセージ（storage message）は、メッセージサーバ１０７におけるインデキシングを促進するために、グループベースコミュニケーションサーバ１０６から送信され得る。他の実現例において、メッセージに関連付けられたメタデータが決定され得て、このメッセージは、メッセージサーバ１０７においてインデキシングされ得る。ある実施形態において、メッセージは、会社の又はグループのメッセージが別個にインデックス化されるようにインデックス化され得る（例えば他のグループ及び／又は会社とシェアされていないグループ及び／又は会社に関連付けられた別個のインデックスにおいて）。ある実現例では、メッセージは、別個の分散化されたリポジトリにおいてインデックス化され得る（例えばセキュリティの目的のためにデータ隔離を促進するために）。
【００５９】
もしメッセージに関連付けられた添付物が存在するなら、その関連付けられたファイルのファイルコンテンツは、サーチングを促進するために、メッセージサーバ１０７においてそのようなファイルをインデックス化するために用いられ得る。ある実施形態においては、ファイルは、別個の配信リポジトリにおいて会社の又はグループのファイルがインデックス化されるように、インデックス化され得る。
【００６０】
１つ以上のクライアントデバイス１０１Ａ−１０１Ｎ及びグループベースコミュニケーションプラットフォーム１０５の間の電子情報交換の例については、以下で説明される。
【００６１】
１つ以上のクライアントデバイス１０１Ａ−１０１Ｎは、データベースシャード１１３Ａ−１１３Ｎに関連付けられた１つ以上の共有されるコミュニケーションチャンネル生成クエリを生成するよう構成される。「TonyからFrank」の説明から続けると、Tonyは、クライアントデバイス１０１Ａ（組織Ｘに関連付けられたグループＩＤを有する）を使用して、Frankのクライアントデバイス１０１Ｂ（組織Ｙに関連付けられたグループＩＤを有する）との外部と共有されるコミュニケーションチャンネルの作成を要求する共有されたコミュニケーションチャンネル生成クエリを生成し得る。組織Ｘ及び組織Ｙは、データベースシャード１１３Ａ−１１３Ｎの別個のシャードとそれぞれ関連付けられている。共有されたコミュニケーションチャンネル生成クエリは、通信ネットワーク１０３を介してグループベースコミュニケーションプラットフォーム１０５に送信され得る。
【００６２】
１つ以上の共有されるコミュニケーションチャンネル生成クエリを１つ以上のクライアントデバイス１０１Ａ−１０１Ｎから受信すると、グループベースコミュニケーションプラットフォーム１０５は、ネットワークアプリケーションサーバ１０９を利用して、１つ以上の共有されるコミュニケーションチャンネル生成クエリに基づいて、１つ以上のデータベースシャードを生成する。ネットワークアプリケーションサーバ１０９は、さらに、共有されたコミュニケーションチャンネルＩＤを１つ以上の生成されたデータベースシャードのそれぞれに割り当て得る。以前の例から続けると、ネットワークアプリケーションサーバ１０９は、クライアントデバイス１０１Ａを介してTonyによって提供された、共有されたコミュニケーションチャンネル生成クエリに基づいて、データベースシャード１１３Ｎを生成し得て、共有されたコミュニケーションチャンネルＩＤをデータベースシャード１１３Ｎと関連付け得る。
【００６３】
１つ以上のデータベースシャードを１つ以上の共有されるコミュニケーションチャンネル生成クエリに基づいて生成した後、グループベースコミュニケーションプラットフォーム１０５は、１つ以上の共有されるコミュニケーションチャンネル承認要求（acceptance requests）を１つ以上のクライアントデバイス１０１Ａ−１０１Ｎに送信し得る。以前の例から続けると、グループベースコミュニケーションプラットフォーム１０５は、共有されたコミュニケーションチャンネル承認要求をクライアントデバイス１０１Ｂ（Frank）に送信し得るが、このデバイスは、クライアントデバイス１０１Ａ（Tony）によって提供された共有されたコミュニケーションチャンネル生成クエリにおいて示されている。
【００６４】
共有されたコミュニケーションチャンネル承認要求を受信すると、１つ以上のクライアントデバイス１０１Ａ−１０１Ｎは、１つ以上の電子許可を生成し得て、これら電子許可をグループベースコミュニケーションプラットフォーム１０５に送信し得る。以前の例から続けると、Frankは、クライアントデバイス１０１Ｂを介して、共有されたコミュニケーションチャンネル承認要求に応答して、電子許可を生成し得る。電子許可は、Tonyによって提供された共有されたコミュニケーションチャンネル生成クエリの、Frankによる承認を示し得る。クライアントデバイス１０１Ｂは、さらに、この電子許可をグループベースコミュニケーションプラットフォーム１０５に送信し得る。
【００６５】
１つ以上の電子許可を１つ以上のクライアントデバイス１０１Ａ−１０１Ｎから受信すると、グループベースコミュニケーションプラットフォーム１０５は、メインデータベース１１１に記憶されたシャード参照テーブルを通して、１つ以上のチャンネルＩＤを１つ以上のクライアントデバイス１０１Ａ−１０１Ｎと関連付ける。以前の例から続けると、電子許可をクライアントデバイス１０１Ｂから受信すると、グループベースコミュニケーションプラットフォーム１０５は、さらに、メインデータベース１１１に記憶されたシャード参照テーブルを、組織ＸのＩＤ、組織ＹのＩＤ、及びデータベースシャード１１３Ｎのような新しく作成されたデータベースシャードの共有されたコミュニケーションチャンネルＩＤに基づいて更新し得る。
【００６６】
共有されたコミュニケーションチャンネルシャードを生成し、シャード参照テーブルを更新することによって、本発明は、アイデンティティの合体（union of identities）の問題を解決するような、既存のシステムに対する多くの技術的優位性を提供する。上の「Tony-X/Tony-Z」の例から続けると、本発明に基づいて作成される、組織Ｘ及び組織Ｚの間の外部と共有されるコミュニケーションチャンネルは、２つの別々の組織におけるTony-X及びTony-ZというTonyの２つのアイデンティティを両立させる（reconcile）ことができる。シャード参照テーブルを更新する一方で、本発明の実施形態によって構築されたシステムは、例えば、それぞれの組織に関連付けられたデータを検索及び比較することによって、重複ユーザアイデンティティを特定することができる。Tony-X及びTony-Yが同じ個人に関連付けられていると判断すると、本発明の実施形態によって構築されたシステムは、共有されたコミュニケーションチャンネルシャードにおいて、統合されたアイデンティティをTonyに割り当てる。一方、既存のシステムは、共有されたコミュニケーションチャンネルシャードを作成すること、及び／又はシャード参照テーブルを更新することができないので、アイデンティティの合体の問題を解決することができない。
【００６７】
グループベースコミュニケーションプラットフォーム１０５は、１つ以上の生成されたデータベースシャードのための１つ以上のインタフェースをさらに生成し得て、その１つ以上のインタフェースをクライアントデバイス１０１Ａ−１０１Ｎに送信し得る。前の例から続けると、グループベースコミュニケーションプラットフォーム１０５は、データベースシャード１１３Ｎのためのユーザインタフェースを生成し、そのユーザインタフェースをクライアントデバイス１０１Ａ及び１０１Ｂに送信し得る。ある実施形態では、グループベースコミュニケーションプラットフォーム１０５は、適切なデータ／インタフェースだけをクライアントデバイス１０１Ａ及び１０１Ｂに送り得て、又はクライアントデバイス１０１Ａ及び１０１Ｂに送る前に、そのデータを取得し及びキャッシュし得て、又はクライアントデバイス１０１Ａ及び１０１Ｂ上でアプリの一部として使用され得るインタフェースプログラムをコンパイルし得る。
【００６８】
ある好ましい非限定的な実施形態では、メインデータベース１１１に記憶された参照テーブルは、データベースシャード１１３Ａ−１１３ＮのグループＩＤ及びデータベースシャードの間の参照関係（referential connections）を示し得る。前の例から続けると、クライアントデバイス１０１Ａ及び１０１Ｃは、共に組織ＸのＩＤと関連付けられ得て、シャード参照テーブルは、クライアントデバイス１０１Ａ−１０１Ｂの間のコミュニケーションに関するデータがデータベースシャード１１３Ａに記憶されていることを示し得る。
【００６９】
ある好ましい非限定的な実施形態では、グループベースコミュニケーションプラットフォーム１０５が１つ以上のクライアントデバイス１０１Ａ−１０１Ｎから１つ以上の電子許可（electronic approval）を受け取る時、グループベースコミュニケーションプラットフォーム１０５は、新しい参照関係を生成することによって、参照メインデータベース１１１に記憶されたシャード参照テーブルを更新し得る。例えば、組織Ｘ及び組織Ｙの間の共有されたコミュニケーションチャンネルを作成するための電子許可を受け取った後、グループベースコミュニケーションプラットフォーム１０５は、組織ＸのＩＤ、組織ＹのＩＤ、及び新しく生成されたデータベースシャードのＩＤの間の参照関係を示す、シャード参照テーブルを更新し得る。
【００７０】
ある好ましい非限定的な実施形態では、グループベースコミュニケーションプラットフォーム１０５は、メッセージサーバ１０７を用いて、外部と共有されるコミュニケーションチャンネルにおける１つ以上のクライアントデバイス１０１Ａ−１０１Ｎから、同じチャンネルにおける他のクライアントデバイスに受け取られた電子メッセージを増幅し（amplify）得る。例えば、メッセージサーバ１０７は、外部と共有されるコミュニケーションチャンネルに関連して、クライアントデバイス１０１Ａから電子メッセージを受け取り得る。メッセージサーバ１０７は、ネットワークアプリケーションサーバ１０９にクエリを送信し（query）得て、一方、ネットワークアプリケーションサーバ１０９は、メインデータベース１１１に記憶されたシャード参照テーブルに基づいて、外部と共有されるコミュニケーションチャンネルに関連付けられた１つ以上のクライアントデバイスを特定する。メッセージサーバ１０７は、それぞれの特定されたクライアントデバイスに電子メッセージをさらに送信し得る。
【００７１】
上述の電子情報交換は、既存のシステムに対して、さまざまな技術的優位性を提供する。例えば、それは、通信ネットワーク１０３にディスパッチされたメッセージの過負荷を生じることなしに、情報取得及びデータのディスパッチ（dispatch）を可能にする。加えて、通信ネットワーク１０３のコンフィギュレーションに基づくディスパッチスピードと共に、データのロバスト性は、グループベースコミュニケーションプラットフォーム１０５に対してメッセージサーバ１０７又はネットワークアプリケーションサーバ１０９のいずれかを利用する選択肢を提供する。さらに、データのロバスト性は、外部のアプリケーション（グループベースコミュニケーションプラットフォーム１０５のために開発された）が、以下にさらに説明されるように、メッセージを発信する（emit）ためにウェブソケット又はＲＰＣ  ＡＰＩ（これらはメッセージサーバ１０７又はネットワークアプリケーションサーバ１０９をさらに利用し得る）を使用する選択肢を提供する。
【００７２】
本発明の実施形態を実現するための例示的装置
メッセージサーバ１０７は、図２に示される装置２００のような１つ以上の計算システムによって実現され得る。装置２００は、プロセッサ２０２、メモリ２０４、入力／出力回路２０６、通信回路２０８、及びメッセージ増幅器回路２１０を含み得る。装置２００は、図１について上で、及び図４−７について下で説明される操作を実行するよう構成され得る。これら要素２０２−２１０は、機能的な限定について記載されているが、具体的な実現例は、特定のハードウェアの使用を必然的に含むことを理解されたい。これらの要素２０２−２１０のいくつかは、同様の又は共通のハードウェアも含み得ることも理解されたい。例えば、回路群のうちの２つのセットが同じプロセッサ、ネットワークインタフェース、記憶媒体等の使用を活用することで、それらの関連付けられた機能を実行し、重複するハードウェアが回路群のそれぞれのセットごとには必要がないようにしてもよい。
【００７３】
ある実施形態においては、プロセッサ２０２（及び／又はコプロセッサ又はプロセッサを補助する又はそうでなければプロセッサに関連付けられた任意の他の処理回路）は、装置の要素の間で情報を受け渡しするためにバスを介してメモリ２０４と通信し得る。メモリ２０４は、非一時的であり、例えば１つ以上の揮発性及び／又は不揮発性メモリを含み得る。換言すれば、例えばこのメモリ２０４は、電子記憶装置（例えばコンピュータ読み取り可能な記憶媒体）であり得る。メモリ２０４は、この装置が、本発明の例示的実施形態に従ってさまざまな機能を実行できるようにするために、情報、データ、コンテンツ、アプリケーション、命令等を記憶するよう構成され得る。
【００７４】
プロセッサ２０２は、いくつかの異なるやり方で実現され得て、例えば独立して実行するよう構成された１つ以上の処理装置を含み得る。ある好ましい非限定的な実施形態では、このプロセッサ２０２は、命令の独立した実行、パイプライン処理、及び／又はマルチスレッディングを可能にするようにバスを介して並列に構成された１つ以上のプロセッサを含み得る。「処理回路」という語の使用は、装置の内部にあるシングルコアプロセッサ、マルチコアプロセッサ、マルチプロセッサ、及び／又はリモートつまり「クラウド」プロセッサを含むと理解されよう。
【００７５】
ある好ましい非限定的な実施形態では、プロセッサ２０２は、メモリ２０４に記憶された又はそうでなければプロセッサ２０２にアクセス可能である命令を実行するよう構成され得る。ある好ましい非限定的な実施形態では、このプロセッサ２０２は、ハードコードされた機能群を実行するよう構成され得る。よってハードウェア又はソフトウェアのいずれの方法によって構成されようとも、又はそれらの組み合わせによって構成されようとも、プロセッサ２０２は、そのように構成されている間は、本発明の実施形態による操作を実行することができるエンティティ（例えば回路として物理的に実現される）を表し得る。代替として、他の例として、プロセッサ２０２がソフトウェア命令の実行者として実現される時、これら命令は、命令が実行される時に、プロセッサ２０２がここに記載されたアルゴリズム及び／又は操作を実行するようにプロセッサを具体的に構成し得る。
【００７６】
ある実施形態においては、装置２００は、入力／出力回路２０６を含み得て、これが今度は、出力をユーザに提供するために、またある実施形態では、ユーザ入力の表示を受け取るためにプロセッサ２０２と通信し得る。入力／出力回路２０６は、ユーザインタフェースを備え得て、ディスプレイを含み得て、ウェブユーザインタフェース、モバイルアプリケーション、クライアントデバイス、キオスク等を備え得る。ある実施形態では、入力／出力回路２０６は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイクロホン、スピーカ、又は他の入力／出力機構を含み得る。プロセッサを備えるプロセッサ及び／又はユーザインタフェース回路は、プロセッサにアクセス可能であるメモリ（例えばメモリ２０４及び／又はその他）上に記憶されたコンピュータプログラム命令（例えばソフトウェア及び／又はファームウェア）を通して１つ以上のユーザインタフェース要素の１つ以上の機能を制御するよう構成され得る。
【００７７】
通信回路２０８は、装置２００と通信するネットワーク及び／又は任意の他のデバイス、回路、又はモジュールから／へデータを受信及び／又は送信するよう構成される、ハードウェアか、ハードウェア及びソフトウェアの組み合わせかのいずれかで実現されるデバイス又は回路のような任意の手段であり得る。この点で、通信回路２０８は、例えば、有線又は無線の通信ネットワークとの通信を可能にするネットワークインタフェースを含み得る。例えば、通信回路２０８は、１つ以上のネットワークインタフェースカード、アンテナ、バス、スイッチ、ルータ、モデム、及びサポートするハードウェア及び／又はソフトウェア、又はネットワークを介した通信を可能にするのに適切な任意の他のデバイスを含み得る。追加として又は代替として、通信回路２０８は、アンテナ／アンテナ群を介した信号の送信を行うために、又はアンテナ／アンテナ群を介して受け取られた信号の受信を扱うために、アンテナ／アンテナ群と相互作用する回路を含み得る。
【００７８】
メッセージ増幅器回路２１０は、データベースシャード（群）に基づいて、１つ以上のクライアントデバイスから他のクライアントデバイスに受け取られた電子メッセージ及び関連付けられたメタデータをコピー及び増幅するよう構成されたハードウェアを含む。メッセージ増幅器回路２１０は、これらアクションを実行するために、プロセッサ２０２のような処理回路を利用し得る。しかし実施形態によっては、メッセージ増幅器回路２１０は、ここで記載された機能を実行するための別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は特定用途向け集積回路（ＡＳＩＣ）を含んでもよいことが理解されるべきである。メッセージ増幅器回路２１０は、これら計画された機能を実現するためのハードウェア又はソフトウェアのいずれかによって構築された装置のハードウェアコンポーネントを用いて実現され得る。
【００７９】
ここで記載された情報のうちの全部又は一部は、装置２００の１つ以上のコンポーネントによって受け取られた、生成された及び／又は維持されたデータに基づき得ることにも注意されたい。ある実施形態では、１つ以上の外部システム（リモートクラウドコンピューティング及び／又はデータストレージシステムのような）が活用されることによって、ここで説明された機能のうちの少なくとも一部を提供し得る。
【００８０】
ネットワークアプリケーションサーバ１０９は、図３に示される装置３００のような１つ以上の計算システムによって実現され得る。装置３００は、プロセッサ３０１、メモリ３０３、入力／出力回路３０５、通信回路３０７、データベース回路３０９、インタフェース生成回路３１１、及び参照テーブル生成回路３１３を含み得る。装置３００は、図１について上で説明した操作を実行し、図４−７について下で説明される操作を実行するよう構成され得る。これらコンポーネント３０１−３１３は、機能的限定について説明されるが、特定の実現例は、必然的に特定のハードウェアの使用を含むことが理解されるべきである。これらコンポーネント３０１−３１３は、同様の又は共通のハードウェアを含み得ることも理解されるべきである。例えば、回路の２つのセットは、同じプロセッサ、ネットワークインタフェース、記憶媒体等の使用を活用してそれらに関連付けられた機能を実行することによって、回路群のそれぞれのセットについて重複するハードウェアが要求されないようにし得る。
【００８１】
ある実施形態では、プロセッサ３０１（及び／又はコプロセッサ又はプロセッサを補助する又はその他のやり方でプロセッサに関連付けられた任意の他の処理回路）は、装置のコンポーネントの間で情報を流すためにバスを介してメモリ３０３と通信し得る。メモリ３０３は、非一時的であり、例えば、１つ以上の揮発性及び／又は不揮発性メモリを含み得る。換言すれば、例えば、メモリ３０３は、電子記憶装置（例えばコンピュータ読み取り可能な記憶媒体）であり得る。メモリ３０３は、装置３００が本発明の例示的実施形態に従ってさまざまな機能を実行できるようにするために、情報、データ、コンテンツ、アプリケーション、命令等を記憶するよう構成され得る。
【００８２】
プロセッサ３０１は、いくつかの異なるやり方で実現され得て、例えば、独立して実行するよう構成された１つ以上の処理装置を含み得る。ある好ましい非限定的な実施形態では、プロセッサ３０１は、命令の独立した実行、パイプライニング、及び／又はマルチスレッディングを可能にするために、バスを介して縦列に構成された１つ以上のプロセッサを含み得る。
【００８３】
ある好ましい非限定的な実施形態では、プロセッサ３０１は、メモリ３０３に記憶された又はそうでなければプロセッサにアクセス可能である命令を実行するよう構成され得る。ある好ましい非限定的な実施形態では、プロセッサ３０１は、ハードコードされた機能を実行するよう構成され得る。よってハードウェア又はソフトウェアのいずれの方法によって構成されようとも、又はそれらの組み合わせによって構成されようとも、プロセッサ３０１は、そのように構成されている間は、本発明の実施形態による操作を実行することができるエンティティ（例えば回路として物理的に実現される）を表し得る。代替として、他の例として、プロセッサ３０１がソフトウェア命令の実行者として実現される時、これら命令は、命令が実行される時に、プロセッサがここに記載されたアルゴリズム及び／又は操作を実行するようにプロセッサを具体的に構成し得る。
【００８４】
ある実施形態においては、装置３００は、入力／出力回路３０５を含み得て、これが今度は、出力をユーザに提供するために、またある実施形態では、ユーザ入力の表示を受け取るためにプロセッサ３０１と通信し得る。入力／出力回路３０５は、ユーザインタフェースを備え得て、ディスプレイを含み得て、ウェブユーザインタフェース、モバイルアプリケーション、クライアントデバイス、キオスク等を備え得る。ある実施形態では、入力／出力回路３０５は、キーボード、マウス、ジョイスティック、タッチスクリーン、タッチエリア、ソフトキー、マイクロホン、スピーカ、又は他の入力／出力機構を含み得る。
【００８５】
通信回路３０７は、装置３００と通信するネットワーク及び／又は任意の他のデバイス、回路、又はモジュールから／へデータを受信及び／又は送信するよう構成される、ハードウェアか、ハードウェア及びソフトウェアの組み合わせかのいずれかで実現されるデバイス又は回路のような任意の手段であり得る。この点で、通信回路３０７は、例えば、有線又は無線の通信ネットワークとの通信を可能にするネットワークインタフェースを含み得る。例えば、通信回路３０７は、１つ以上のネットワークインタフェースカード、アンテナ、バス、スイッチ、ルータ、モデム、及びサポートするハードウェア及び／又はソフトウェア、又はネットワークを介した通信を可能にするのに適切な任意の他のデバイスを含み得る。追加として又は代替として、通信回路３０７は、アンテナ／アンテナ群を介した信号の送信を行うために、又はアンテナ／アンテナ群を介して受け取られた信号の受信を扱うために、アンテナ／アンテナ群と相互作用する回路を含み得る。
【００８６】
データベース回路３０９は、データベースシャード１１３Ａ−１１３Ｎ及びメインデータベース１１１を含む１つ以上のネットワークデータベースを管理するよう構成されたハードウェアを含む。データベース回路３０９は、これらのアクションを実行するためにプロセッサ３０１のような処理回路を利用し得る。データベース回路３０９は、インタフェース生成回路３１１及び参照テーブル生成回路３１３にデータを送信し得る。ある好ましい非限定的な実施形態では、送信されたデータは、１つ以上のデータベースシャード１１３Ａ−１１３Ｎに関連付けられ得る。
【００８７】
ある実施形態では、データベース回路３０９は、別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は特定用途向け集積回路（ＡＳＩＣ）を含み得る。ある実現例では、以下に説明される参照テーブル生成回路３１３及びインタフェース生成回路３１１は、データベース回路３０９に属するサブ回路であり得る。データベース回路３０９は、ここで説明される機能を実現するハードウェア又はソフトウェアのいずれかによって構成される装置のハードウェアコンポーネントを用いて実現され得る。
【００８８】
参照テーブル生成回路３１３は、メインデータベース１１１に記憶されたシャード参照テーブルを生成及び更新するよう構成されたハードウェアを含む。参照テーブル生成回路３１３は、これらアクションを実行するためにプロセッサ３０１のような処理回路を利用し得る。しかし、ある実施形態では、参照テーブル生成回路３１３は、ここで説明される機能を実行するための別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は特定用途向け集積回路（ＡＳＩＣ）を含み得ることも理解されなければならない。参照テーブル生成回路３１３は、これら計画された機能を実現するハードウェア又はソフトウェアのいずれかによって構成される装置のハードウェアコンポーネントを用いて実現され得る。
【００８９】
インタフェース生成回路３１１は、クライアントデバイス１０１Ａ−１０１Ｎのためのコミュニケーションチャンネルインタフェースを生成するよう構成されたハードウェアを含む。インタフェース生成回路３１１は、これらアクションを実行するためにプロセッサ３０１のような処理回路を利用し得る。しかし、ある実施形態では、インタフェース生成回路３１１は、ここで説明される機能を実行するための別個のプロセッサ、特別に構成されたフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は特定用途向け集積回路（ＡＳＩＣ）を含み得ることも理解されなければならない。インタフェース生成回路３１１は、これら計画された機能を実現するハードウェア又はソフトウェアのいずれかによって構成される装置のハードウェアコンポーネントを用いて実現され得る。
【００９０】
ここで説明される情報の全て又は一部は、装置３００の１つ以上のコンポーネントによって受け取られる、生成される、及び／又は維持されるデータに基づき得ることにも注意されたい。ある実施形態では、ここで説明される機能の少なくとも一部を提供するために、１つ以上の外部システム（リモートクラウド計算及び／又はデータ記憶システムのような）も活用され得る。
【００９１】
「回路」という語は、ハードウェア、及び実施形態によっては、そのハードウェアを設定するためのソフトウェアを含むように広く理解されるべきである。装置のコンポーネントについて、ここで用いられる「回路」という語は、したがって、ここで説明される特定の回路に関連付けられた機能を実行するように構成された特定のハードウェアを含むように理解されるべきである。例えば、ある実施形態によっては、「回路」は、処理回路、記憶媒体、ネットワークインタフェース、入力／出力装置等を含み得る。ある実施形態では、装置２００の他の要素は、特定の回路の機能を提供又は補完し得る。例えば、プロセッサ２０２は、処理機能を提供し得て、メモリ２０４は、記憶機能を提供し得て、通信回路２０８は、ネットワークインタフェース機能を提供し得る等である。同様に、装置３００の他の要素は、特定の回路の機能を提供又は補充し得る。例えば、プロセッサ３０１は、処理機能を提供し得て、メモリ３０３は、記憶機能を提供し得て、通信回路３０７は、ネットワークインタフェース機能を提供し得る等である。
【００９２】
理解されるように、任意のそのようなコンピュータプログラム命令及び／又は他のタイプのコードは、コンピュータ、プロセッサ、又は他のプログラム可能な装置の回路の上にロードされることによって機械を作り得て、それによってそのコードを当該機械上で実行するコンピュータ、プロセッサ、又は他のプログラム可能な回路が、ここで説明されるものを含むさまざまな機能を実現する手段を作る。
【００９３】
上に説明されたように、及び本開示に基づいて理解されるように、本発明の実施形態は、方法、モバイルデバイス、バックエンドネットワークデバイス等として構成され得る。したがって実施形態は、ハードウェアだけを含む、又はソフトウェア及びハードウェアの任意の組み合わせを含むさまざまな手段を備え得る。さらに、実施形態は、記憶媒体内に実現されたコンピュータ読み取り可能なプログラム命令（例えばコンピュータソフトウェア）を有する、少なくとも１つの非一時的コンピュータ読み取り可能な記憶媒体上のコンピュータプログラム製品の形態をとり得る。任意の適切なコンピュータ読み取り可能な記憶媒体は、非一時的ハードディスク、ＣＤ−ＲＯＭ、フラッシュメモリ、光学記憶デバイス、又は磁気記憶デバイスを含むようにして利用され得る。
【００９４】
外部と共有されるコミュニケーションチャンネルを生成する例示的データフロー
図４，５，６，及び７は、共有されたコミュニケーションチャンネル生成クエリのイニシエータ及びターゲットがグループの管理者であるかに基づいて、外部と共有されるコミュニケーションチャンネルを生成することにおける、１つ以上のクライアントデバイス１０１Ａ−１０１Ｎ及びグループベースコミュニケーションプラットフォーム１０５の間のさまざまな相互作用を示す。
【００９５】
「管理者」という語は、コミュニケーションチャンネルを管理し、さまざまなメンテナンスタスクに関して他のサブスクライバの代わりに決断を行う権限を有するコミュニケーションチャンネルのサブスクライバを表す。例えば、グループ管理者は、そのコミュニケーションチャンネルを「パブリック」又は「プライベート」のいずれかに設定する権限を有し得る。他の例として、外部と共有されるコミュニケーションチャンネルを作る要求を受け取る時、グループ管理者だけが、そのグループの代わりにその要求を承認する権限を有する。ある実施形態では、システムは、そのユーザがグループのメンバであるかを示すために、ユーザに関連付けられたデータに対してフラグを用いる。
【００９６】
図４を参照すると、プロセス４００は、グループＡの非管理者が共有されたコミュニケーションチャンネルを作る要求をグループＢの非管理者をターゲットとして送信するときに、外部と共有されるコミュニケーションチャンネルを生成する例示的プロセスを示す。
【００９７】
プロセス４００は、ステップ４０２において開始し、ここでグループＡの非管理者は、外部と共有されるコミュニケーションチャンネルを作る要求を送信する。ステップ４０４において、システムは、グループＡの非管理者のための招待を自動的に作成し、その招待をグループＢの非管理者と共有する。ここで、招待は、外部と共有されるコミュニケーションチャンネルを作成する要求の電子表示である。例えば、招待は、要求の詳細を含むウェブページへリンクするユニフォームリソースロケータ（ＵＲＬ）の形態を取り得る。ある実施形態では、このＵＲＬは、ＵＲＬリンクが送信されてから所定の時間量が経過した後で、無効になり得る。例えば、ユーザは、そのＵＲＬが送信から２４時間後に無効になるよう設定し得る。
【００９８】
ステップ４０６において、グループＢの非管理者は招待を受け取る。ステップ４０８において、グループＢの非管理者は、チャンネルを追加するかについての初期決定を行う。もしグループＢの非管理者がチャンネルを追加しないと決定するなら、ステップ４１０においてグループＡの非管理者は、要求が拒否されたという電子表示を受け取る。
【００９９】
もしグループＢの非管理者がチャンネルを追加すると決定するなら、システムは、外部と共有されるコミュニケーションチャンネルを作成する要求を、それぞれステップ４１２及び４１４においてグループＡの管理者及びグループＢの管理者に自動的に転送する。もしステップ４１６においてグループＡの管理者が要求を承認しないなら、ステップ４２０においてグループＡ及びグループＢの非管理者は、要求が拒否されたという電子表示を受け取る。同様に、ステップ４１８において、もしグループＢの管理者がその要求を承認しないなら、ステップ４２０においてグループＡ及びグループＢの非管理者は、要求が拒否されたという電子表示を受け取る。
【０１００】
グループＡの管理者及びグループＢの管理者の両方が要求を承認するときは、システムは、ステップ４２２における、外部と共有されるコミュニケーションチャンネルの作成に進む。
【０１０１】
図５をここで参照して、プロセス５００は、グループＡの非管理者が、共有されたコミュニケーションチャンネルを作成する要求をグループＢの管理者をターゲットとして送信するときの、外部と共有されるコミュニケーションチャンネルを作成する例示的プロセスを示す。
【０１０２】
プロセス５００は、ステップ５０１において開始し、ここでグループＡの非管理者は、外部と共有されるコミュニケーションチャンネルを作成する要求を送信する。システムは、ステップ５０３において、グループＡの非管理者のための招待を自動的に作成し、その招待をグループＢの管理者と共有する。
【０１０３】
グループＢの管理者と招待を共有すると、ステップ５０５において、システムは、承認のための要求を自動的に生成する。それからグループＢの管理者は、ステップ５０７において、外部と共有されるコミュニケーションチャンネルを作成する要求を承認するかを決定する。もしグループＢの管理者が要求を承認しないなら、ステップ５０９において、グループＡの非管理者は、要求が拒否された電子表示を受け取る。
【０１０４】
もしグループＢの管理者が要求を承認するなら、ステップ５１１において、システムは、要求をグループＡの管理者に自動的に転送する。もしグループＡの管理者がステップ５１３において要求を承認しないなら、ステップ５１５において、グループＢの管理者及び非管理者の両方が、要求が拒否されたという電子表示を受け取る。
【０１０５】
もしグループＡの管理者がステップ５１３において要求を承認するなら、システムは、ステップ５１７において、外部と共有されるコミュニケーションチャンネルの作成に進む。
【０１０６】
ここで図６を参照すると、プロセス６００は、グループＡの管理者が共有されたコミュニケーションチャンネルを作成する要求を、グループＢの非管理者をターゲットとして送信するときに、外部と共有されるコミュニケーションチャンネルを生成する例示的プロセスを示す。
【０１０７】
プロセス６００は、ステップ６０２で開始し、ここでグループＡの管理者は、外部と共有されるコミュニケーションチャンネルを作成する要求を送信する。システムは、ステップ６０４において、グループＡの管理者への招待を自動で作成し、この招待をグループＢの非管理者と共有する。
【０１０８】
グループＢの非管理者は、ステップ６０６において招待を受け取る。ステップ６０８において、グループＢの非管理者は、チャンネルを追加するかについての初期決定を行う。もしグループＢの非管理者がチャンネルを追加しないと決定するなら、グループＡの管理者は、ステップ６１０において、要求が拒否されたという電子表示を受け取る。
【０１０９】
もしグループＢの非管理者がチャンネルを追加することを決定するなら、システムは、外部と共有されるコミュニケーションチャンネルを作成する要求を、グループＡの管理者及びグループＢの管理者にそれぞれステップ６１２及び６１４で自動的に転送する。もしグループＡの管理者がステップ６１６において要求を承認しないと決定するなら、グループＢの非管理者は、ステップ６２０において、要求が拒否されたという電子表示を受け取る。同様に、もしグループＢの管理者がステップ６１８において要求を承認しないなら、グループＢの非管理者は、ステップ６２０において要求が拒否されたという電子表示を受け取る。
【０１１０】
グループＡの管理者及びグループＢの管理者の両方が要求を承認するとき、システムは、ステップ６２２において、外部と共有されるコミュニケーションチャンネルの作成に進む。
【０１１１】
ここで図７を参照すると、プロセス７００は、グループＡの管理者が、共有されるコミュニケーションチャンネルを作成する要求を、グループＢの管理者をターゲットとして送信するときの、外部と共有されるコミュニケーションチャンネルを生成する例示的プロセスを示す。
【０１１２】
プロセス７００は、ステップ７０１で開始し、ここでグループＡの管理者は、外部と共有されるコミュニケーションチャンネルを作成する要求を送信する。システムは、ステップ７０３において、グループＡの管理者に対する招待を自動的に作成し、この招待をグループＢの管理者と共有する。
【０１１３】
グループＢの管理者と招待を共有すると、システムは、ステップ７０５において、承認の要求を自動的に生成する。グループＢの管理者は、ステップ７０７において、外部と共有されるコミュニケーションチャンネルを作成する要求を承認するかをそれから決定する。もしグループＢの管理者が要求を承認しないなら、グループＡの管理者は、ステップ７０９において、要求が拒否されたという電子表示を受け取る。
【０１１４】
もしグループＢの管理者が要求を承認するなら、システムは、ステップ７１１において、要求をグループＡの管理者に自動的に転送する。もしグループＡの管理者がステップ７１３において要求を承認しないなら、グループＢの管理者は、ステップ７１５において、要求が拒否されたという電子表示を受け取る。もしグループＡの管理者が要求を承認するなら、システムは、ステップ７１７において、外部と共有されるコミュニケーションチャンネルの作成へと進む。
【０１１５】
外部と共有されるコミュニケーションチャンネルについての例示的実現例
図８Ａ、８Ｂ、８Ｃ、及び８Ｄは、本発明のある実施形態に従った例示的コミュニケーションチャンネルインタフェースのさまざまな要素を示す。
【０１１６】
ここで図８Ａを参照すると、例示的コミュニケーションチャンネルインタフェース８００Ａが示される。コミュニケーションチャンネルインタフェース８００Ａは、ユーザ名ボックス８０２を含み、これは、コミュニケーションチャンネルインタフェース８００Ａに関連付けられた現在のユーザアカウントを示す。
【０１１７】
コミュニケーションチャンネルインタフェース８００Ａは、チャンネルリストペインも含み得て、これは外部と共有されるコミュニケーションチャンネルリストサブペイン８０４を含み得る。外部と共有されるコミュニケーションチャンネルリストサブペイン８０４は、ユーザが素早く簡単に、ユーザがサブスクライブしている全ての外部と共有されるコミュニケーションチャンネルをナビゲートできるようにする。例えば、図８Ａに示されるように、ユーザTonyは、外部と共有されるコミュニケーションチャンネルＣ１、Ｃ２、Ｃ３、及びＣ４をサブスクライブしており、これらは、それぞれのチャンネル名の右にある重なる正方形のシンボルによって示されている。それぞれのグループは、外部と共有されるコミュニケーションチャンネルリストサブペイン８０４における外部と共有されるコミュニケーションチャンネルの名前についてその基本設定を設定し得る。
【０１１８】
コミュニケーションチャンネルインタフェース８００Ａのチャンネルリストペインは、内部で共有されるコミュニケーションチャンネルリストサブペイン８０６をさらに含み得て、これは、ユーザがサブスクライブしている全ての内部で共有されるコミュニケーションチャンネルをリストにする。外部と共有されるコミュニケーションチャンネルリストサブペイン８０４でリストされているものとは対照的に、内部で共有されるコミュニケーションチャンネルリストサブペイン８０６中の全てのチャンネルは、その同じグループ又は組織内の他のユーザと共有される。
【０１１９】
外部と共有されるコミュニケーションチャンネルリストサブペイン８０４又は内部で共有されるコミュニケーションチャンネルリストサブペイン８０６におけるチャンネルは、プライベートチャンネル又はパブリックチャンネルであり得る。チャンネルの状態は、チャンネル名の左にあるアイコンによって示され得る。例えば、図８Ａの内部で共有されるコミュニケーションチャンネルリストサブペイン８０６に示されるように、チャンネルＣ５及びＣ６は、その名前の隣にシャープマークをそれぞれ有し、これは、それらがパブリックチャンネルであることを示し、チャンネルＣ７及びＣ８は、その名前の隣に鍵マークをそれぞれ有し、これは、それらがプライベートチャンネルであることを示す。
【０１２０】
コミュニケーションチャンネルインタフェース８００Ａは、チャンネルタイトルボックス８１０及びダイレクトメッセージペイン８０８をさらに含む。ダイレクトメッセージペイン８０８は、ユーザとして同じチャンネルを共有する全てのメンバをリストにする。例えば、図８Ａのダイレクトメッセージペイン８０８に示されるように、ユーザは、同じチャンネルＣ１をユーザとして共有するBeth又はCarlにダイレクトメッセージを送信し得る。ダイレクトメッセージペイン８０８に関連して、コミュニケーションチャンネルインタフェース８００Ａは、フレックスペイン８１６をさらに含み得て、これは、グループのメンバディレクトリのような情報を表示し得る。メンバディレクトリは、フレックスペイン８１６を通じて、ブラウズ時に表示可能であり、検索可能であり、かつフィルタ可能であり得る。
【０１２１】
ある実施形態では、メンバディレクトリの表示は、保存設定に基づいて決定され得る。保存設定は、どのアプリケーションがそのチャンネルにインストールされるか、どのフィーチャーがそのチャンネルについてイネーブルされるか、及びどのユーザがチャンネルを制御することを許可されるかについての他の基本設定をさらに決定し得る。
【０１２２】
加えて、コミュニケーションチャンネルインタフェース８００Ａは、チャンネルメッセージングペイン８１２を含み、これは、そのコミュニケーションチャンネルに関連付けられたテキスト、画像、及び他の履歴データを表示する。ある実施形態では、履歴データは、ユーザがチャンネルに参加又は退出する時、アプリケーションがインストールされ又はチャンネルから除去される時のようなメンバーシップに対する変更を含み得る。
【０１２３】
ある実施形態では、チャンネルメッセージングペイン８１２における、あるコンテンツの閲覧特権設定（viewing privilege settings）（すなわち、だれがこれらコンテンツを見てもよいか）は、そのユーザに特定のものであり得て、パブリックビューからは隠される。例えば、ユーザが、アプリケーション又はボットとプライベートに相互作用するコマンドを用いるとき、そのようなアクティビティは、パブリックによる閲覧からは隠され得る。ユーザは、そのようなアクティビティがパブリック（public）によって閲覧可能である（viewable）ようにも選択し得る。
【０１２４】
ある実施形態では、閲覧特権設定は、チーム及び／又はそのチームにインストールされたアプリケーションに特定のものであり得る。例えば、組織ＸからのTonyがコマンドを使いたいとき、そのコマンドメニューは、組織Ｘにインストールされているアプリケーションからのコマンドだけを見せる。
【０１２５】
ユーザは、チャンネル入力ボックス８１４を用いて、コミュニケーションチャンネルに寄与し得て、これは、チャンネルメッセージングペイン８１２に表示される。チャンネル入力ボックス８１４は、オートコンプリート機能を提供し得て、これは、チャンネル入力ボックス８１４は、チャンネル入力ボックス８１４におけるユーザ名、チャンネル名、及びユーザタイプのような他の情報を自動的に認識する。ある実施形態では、オートコンプリートボットは、アプリケーションの名前も認識し得て、他のボットは、チャンネルとさらに相互作用をし得る。チャンネル入力ボックス８１４は、ユーザが外部と共有されるコミュニケーションチャンネルの中にいるときに、彼又は彼女が投稿したいかなる情報も他のグループ又は組織のメンバによって閲覧され得ることをユーザに対して警告するメッセージ入力警告も提供し得る。図８Ｂをここで参照して、例示的ユーザアイコン８００Ｂが示される。ユーザアイコン８００Ｂは、ユーザアバター８０１及びグループアイコン８０３を含み得る。ユーザアバター８０１は、ユーザのアイデンティティを示し得て、グループアイコン８０３は、ユーザが関連付けられているグループを示し得る。ある好ましい非限定的な実施形態では、ユーザアバター８０１は、７２画素×７２画素のサイズで、４画素の丸コーナーを有し得る。グループアイコン８０３は、２２画素×２２画素のサイズで、４画素の丸コーナー、１画素の内側ボーダー、及び３画素の外側ボーダーを有し得る。
【０１２６】
図８Ｃをここで参照して、例示的コミュニケーションチャンネルインタフェース８００Ｃが示される。コミュニケーションチャンネルインタフェース８００Ｃは、グループメンバプロフィールカード８１８を含み得て、これは、グループメンバのプロフィール写真８２０、グループＩＤボックス８２２及び機能ボタン８２４をさらに含み得る。グループＩＤボックス８２２は、グループメンバが関連付けられているグループの名前のような情報を含み得る。機能ボタン８２４は、ダイレクトメッセージをグループメンバに送信するような、ユーザがさまざまな機能を実行することを可能にし得る。
【０１２７】
図８Ｄをここで参照して、ユーザインタフェース８００Ｄは、グループメンバとのダイレクトメッセージングのための例示的インタフェースを示す。ユーザインタフェース８００Ｄは、メンバ名ボックス８１０’を含み得て、これは、そのユーザがダイレクトメッセージングをしているグループメンバの名前を示す。コミュニケーションペイン８１２’は、ユーザとグループメンバとの間のダイレクトメッセージング履歴を示す。ユーザインタフェース８００Ｄは、ダイレクトメッセージプロフィールペイン８２６をさらに含み得て、これは、ユーザ情報セクション８２８及び関連する情報セクション８３０を含み得る。ダイレクトメッセージプロフィールペイン８２６は、ユーザが、ユーザがダイレクトメッセージングをしているグループメンバについての基本情報を素早く容易に認識できるようにする。
【０１２８】
本発明の実施形態を実現する例示的アプリケーションプログラミングインタフェース（ＡＰＩ）設計
ある実施形態では、本発明の実施形態に従って構成されたシステムは、外部と共有されるコミュニケーションチャンネルにおけるアプリケーション及びボットの構成可能性（configurability）を実現するアプリケーションプログラミングインタフェース（ＡＰＩ）を提供し得る。
【０１２９】
既存のシステムは、技術的制限に悩まされている。例えば、ある既存のシステムは、外部と共有されるコミュニケーションチャンネルにおけるメンバチームをロールアップする（roll up）ことができず、一方で他のシステムは、グループベースコミュニケーションチャンネルが同じシャードに記憶されていないユーザにはイベントを発信（emit）できない。
【０１３０】
本発明のさまざまな実施形態は、既存のシステムに対する技術的改良を提供する。上述のように、共有されたコミュニケーションチャンネルシャードは、外部と共有されるコミュニケーションチャンネルに関連付けられたデータを記憶するよう生成され得る。本発明のある実施形態では、イベントサブスクリプションテーブル（例えば「event_subscriptions_types」）が共有されたコミュニケーションチャンネルシャードに記憶され得る。イベントサブスクリプションテーブルは、イベントを外部と共有されるコミュニケーションチャンネルにおけるメンバに発信するかに関する情報を記憶する。上述の技術的困難を解決するために、イベントサブスクリプションテーブルは、「resource_id」カラム及び「resource_type」カラムを含むように更新され得る。「resource_id」カラムは、リソース（例えばイベント）のＩＤを記憶し、「resource_type」カラムは、リソースのタイプ（例えばそのグループベースコミュニケーションチャンネルが異なるシャードに記憶されているチームによって、イベントがサブスクライブされているか）を特定する。これら２つのカラムを利用することによって、本発明の実施形態は、グループベースコミュニケーションチャンネルにインストールされたアプリケーションのための連結されたイベントレジストレーション情報をどこにどのように記憶するの問題を解決する。「TonyからFrank」の例から続けると、外部と共有されるコミュニケーションチャンネルは、「resource_type」カラム及び「resource_id」カラムを利用して、組織Ｘ及び／又は組織Ｙが特定のリソース（すなわちイベント）をサブスクライブしているかに関する情報を記憶し得る。
【０１３１】
下のプログラミングコードは、「resrouce_type」及び「resrouce_id」カラムを含むように「event_subscriptions_types」テーブルを変更することを提供する。
ALTER TABLE event_subscriptions_types ADD COLUMN resource_type varchar(25) NOT NULL AFTER team_id
ALTER TABLE event_subscriptions_types ADD COLUMN resource_id bigint(20) UNSIGNED NOT NULL AFTER resource_type
ALTER TABLE event_subscriptions_types ADD COLUMN ext_team_id bigint(20) UNSIGNED NOT NULL AFTER team_id
ALTER TABLE event_subscriptions_types DROP PRIMARY KEY, ADD PRIMARY KEY event_subscription_id, team_id, event_type, resource_type, resource_id)
本発明のある実施形態では、「channel_id」カラム及び「event_subscription_id」カラムは、「event_subscriptions_types」テーブルに追加され得る。「channel_id」カラムは、グループベースコミュニケーションチャンネルを特定し、「event_subscription_id」は、それぞれのグループベースコミュニケーションチャンネルがサブスクライブされているイベントを特定する。「TonyからFrank」の例から続けると、「channel_id」カラム及び「event_subscription_id」カラムは、組織Ｘ及び組織Ｙのそれぞれがどのイベントにサブスクライブしているかに関する情報を記憶する。
【０１３２】
さらに、本発明のある実施形態は、「event_subscriptions_ext_shared」のような共有されたコミュニケーションチャンネルシャード内に新しいテーブルも作成することによって、それぞれのチームについてのイベントサブスクリプション情報を別個に記憶し得る。下のプログラミングコードは、「event_subscriptions_ext_shared」テーブルの作成を行う。
CREATE TABLE ‘event_subscriptions_ext_shared’ (
‘subscription_team_id’ bigint(20) UNSIGNED NOT NULL,
‘channel_id’ bigint(20) UNSIGNED NOT NULL,
‘api_app_id’ bigint(20) UNSIGNED NOT NULL,
‘event_type’ varchar(255) NOT NULL
PRIMARY KEY (‘subscription_t_team_id’, ‘channel_id’, ‘event_type’)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
追加の実装の詳細
例示的処理システムは図２及び３において記載されてきたが、ここで記載されている本主題及び機能的動作の実装は、本明細書において開示された構造及びそれらの構造的等価物を含む、他のタイプのデジタル電子回路において、又はコンピュータソフトウェア、ファームウェア、又はハードウェアにおいて、又はそれらの１つ以上の組合せにおいて、実現化され得る。
【０１３３】
ここで記載された主題の実施形態及び動作は、本明細書において開示された構造及びそれらの構造的等価物を含む、デジタル電子回路において、又はコンピュータソフトウェア、ファームウェア、又はハードウェアにおいて、又はそれらの１つ以上の組合せにおいて、実現化され得る。ここで記載された主題の実施形態は、情報／データ処理装置による実行のために、又は情報／データ処理装置の動作を制御するために、コンピュータ読み取り可能な記憶媒体上にエンコードされた、１つ以上のコンピュータプログラム、すなわちコンピュータプログラム命令の１つ以上のモジュールとして実現化され得る。代替として、又は追加として、プログラム命令は、人工的に生成され搬送される信号、例えば機械生成された電気的、光学的、又は電磁的信号の上にエンコードされ得て、そのような信号は、情報／データ処理装置による実行のために適切な受信機装置への送信のために情報／データをエンコードするために生成されている。コンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な記憶装置、コンピュータ読み取り可能な記憶基板、ランダム又はシリアルアクセスメモリアレイ又はデバイス、又はそれらの１つ以上の組合せであり得るか、又はそれらに含まれ得る。さらに、コンピュータ読み取り可能な記憶媒体は、搬送される信号ではない一方で、コンピュータ読み取り可能な記憶媒体は、人工的に生成された搬送される信号中にエンコードされたコンピュータプログラム命令のソース又は宛先であり得る。コンピュータ読み取り可能な記憶媒体は、１つ以上の別個の物理的要素又は媒体（例えば複数のＣＤ、ディスク、又は他の記憶装置）であり得て、又はそれに含まれ得る。
【０１３４】
ここで記載された動作は、１つ以上のコンピュータ読み取り可能な記憶装置上に記憶された、又は他のソースから受信された情報／データに対して、情報／データ処理装置によって実行される動作として実現化され得る。
【０１３５】
「データ処理装置」という語は、例示として、プログラム可能なプロセッサ、コンピュータ、システムオンチップ、又は複数のプロセッサ、又は前記の組合せを含む、データを処理する全ての種類の装置、デバイス、及び機械を包含する。装置は、例えば、ＦＰＧＡ（フィールドプログラマブルゲートアレイ）又はＡＳＩＣ（特定用途向け集積回路）のような専用の論理回路を含み得る。この装置は、ハードウェアに加えて、対象となるコンピュータプログラムのための実行環境を作るコード、例えば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想機械、又はこれらの１つ以上の組合せも含み得る。この装置及び実行環境は、ウェブサービス、分散化コンピューティング、及びグリッドコンピューティングインフラストラクチャのような、さまざまな異なるコンピューティングモデルインフラストラクチャを実現し得る。
【０１３６】
コンピュータプログラム（プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、又はコードとしても知られている）は、コンパイラ型言語又はインタープリタ型言語、宣言型言語又は手続き型言語、を含む任意の形態のプログラミング言語で記述され得て、それは、スタンドアローンプログラムとして、又はモジュール、要素、サブルーチン、オブジェクト、又はコンピューティング環境における使用に適した他のユニットとしてのものを含む任意の形態に展開され得る。コンピュータプログラムは、そうである必要はないが、ファイルシステム中のファイルに対応してもよい。プログラムは、他のプログラム又は情報／データを保持するファイルの一部の中に（例えば、マークアップ言語文書内に記憶された１つ以上のスクリプト）、当該プログラムの専用の単一のファイルの中に、又は複数の連携されたファイルの中に（例えば、１つ以上のモジュール、サブプログラム、又はコードの一部を記憶するファイル群）記憶され得る。コンピュータプログラムは、１つのコンピュータ上で、又は１つのサイトに位置する又は複数のサイトにわたって分散化され通信ネットワークによって相互接続されている複数のコンピュータ群上で、実行されるように展開され得る。
【０１３７】
ここで記載されている処理及びロジックフローは、入力情報／データに対して操作を行い、出力を生成することによって、アクションを実行するために、１つ以上のコンピュータプログラムを実行する１つ以上のプログラム可能なプロセッサによって実行され得る。コンピュータプログラムの実行に適したプロセッサは、例として、汎用及び特定用途向けの両方のマイクロプロセッサ、及び任意の種類のデジタルコンピュータの任意の１つ以上のプロセッサを含む。一般に、プロセッサは、リードオンリーメモリ又はランダムアクセスメモリ又はそれら両方から命令及び情報／データを受け取る。コンピュータの本質的な要素は、命令に従ってアクションを実行するプロセッサ、及び命令及びデータを記憶する１つ以上のメモリデバイスである。一般に、コンピュータは、情報／データをそれから受け取る、又は情報／データをそれに転送する、又はそれら両方を行う、データを記憶する１つ以上のマスストレージデバイス、例えば、磁気的、磁気光学的ディスク、又は光学ディスクも含むか、又はそれに動作可能に結合される。しかし、コンピュータは、そのようなデバイスを有する必要はない。コンピュータプログラム命令及び情報／データを記憶するのに適するデバイスは、例として、半導体メモリデバイス、例えば、ＥＰＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリデバイス、磁気ディスク、例えば、内部ハードディスク又は取り外し可能なディスク、磁気光学ディスク、及びＣＤ  ＲＯＭ及びＤＶＤ−ＲＯＭディスクを含む、全ての形態の不揮発性メモリ、媒体及びメモリデバイスを含む。プロセッサ及びメモリは、特定用途向け論理回路によって補足され得て、又は、特定用途向け論理回路の中に組み込まれ得る。
【０１３８】
ユーザとの相互作用を提供するために、ここで記載された主題の実施形態は、情報／データをユーザに表示するディスプレイデバイス、例えばＣＲＴ（陰極線管）又はＬＣＤ（液晶ディスプレイ）モニタ及びキーボード及びポインティングデバイス、例えばマウス又はトラックボールを有するコンピュータ上で実現化され得て、キーボード及びポインティングデバイスは、ユーザがコンピュータに入力を提供し得る。ユーザとの相互作用を提供するために他の種類のデバイスも用いられ得て、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚的フィードバック、例えば、視覚的フィードバック、聴覚的フィードバック、又は触覚的フィードバックであり得て、ユーザからの入力は、音響、音声、又は触覚の入力を含む任意の形態で受け取られ得る。加えて、コンピュータは、ユーザによって用いられるデバイスへ文書を送り、及びそのようなデバイスから文書を受け取ることによって、ユーザと相互作用をし得る。例えば、ウェブブラウザから受け取られた要求に応答して、ウェブページをユーザのクライアントデバイス上のウェブブラウザに送信することによって、ユーザと相互作用をし得る。
【０１３９】
ここで記載された主題の実施形態は、バックエンドのコンポーネントを、例えば情報／データサーバとして含む、又はミドルウェアコンポーネントを含むサーバ、例えばアプリケーションサーバ、又はフロントエンドコンポーネント、例えばそれによってここで開示された主題の実現化によってユーザが相互作用できるグラフィカルユーザインタフェース又はウェブブラウザを有するクライアントデバイスを含む、又は１つ以上のそのようなバックエンド、ミドルウェア、又はフロントエンドコンポーネントの任意の組合せを含む、コンピューティングシステムにおいて実現され得る。システムのコンポーネントは、デジタル情報／データ通信の任意の形態又は媒体、例えば通信ネットワークによって相互接続され得る。通信ネットワークの例としては、ローカルエリアネットワーク（「ＬＡＮ」）及びワイドエリアネットワーク（「ＷＡＮ」）、インターネットワーク（例えばインターネット）、及びピアツーピアネットワーク（例えばアドホックピアツーピアネットワーク）が含まれる。
【０１４０】
コンピューティングシステムは、クライアント及びサーバを含み得る。クライアント及びサーバは、一般に互いに離れており、典型的には通信ネットワークを通して相互作用する。クライアント及びサーバの関係は、それぞれのコンピュータ上で走るコンピュータプログラムによって、及び互いにクライアント・サーバ関係を有することによって、生じる。ある実施形態では、サーバは、情報／データ（例えばＨＴＭＬページ）をクライアントデバイスに送信する（例えばクライアントデバイスで情報／データを表示し、かつユーザの相互作用からユーザ入力を受け取るために）。クライアントデバイスにおいて生成された情報／データ（例えばユーザの相互作用の結果）は、クライアントデバイスからサーバにおいて受け取られ得る。
【０１４１】
本明細書は、多くの具体的な実現例についての詳細を含むが、これらは、任意の本発明の、又はクレームされ得る内容の範囲に対する限定として解釈されるべきではなく、むしろ特定の本発明の特定の実施形態に特有の特徴についての記載として解釈されるべきである。別個の実施形態群の文脈においてここで記載されているある特徴群は、単一の実施形態において組み合わせられて実現され得る。逆に、単一の実施形態の文脈で記載されているさまざまな特徴は、複数の実施形態において別個に、又は任意の適切なサブコンビネーションにおいて実現されてもよい。さらに、特徴は、ある組合せで機能するとして上では記載され、出願当初においてはそのようにクレームされてさえいるが、クレームされた組合せからの１つ以上の特徴は、場合によっては、その組合せから削除され得て、クレームされた組合せは、サブコンビネーション又はサブコンビネーションの変化形に関するものであり得る。
【０１４２】
同様に、操作は、特定の順序で図面において示されているが、これは、そうではないと記載されない限り、所望の結果を達成するために、そのような操作が示された特定の順序で、又は順次的なやり方で実行されること、又は全ての図示された操作が実行されることを要求するものとしては理解されるべきではない。ある状況においては、マルチタスキング及びパラレル処理が優位性を持ち得る。さらに上で記載された実施形態におけるさまざまなシステムコンポーネントの分離は、そのような分離を全ての実施形態において要求するものとしては理解されるべきではなく、記載されたプログラムコンポーネント及びシステムは、一般に、単一のソフトウェアプロダクトに互いに統合され、又は複数のソフトウェアプロダクトにパッケージングされ得ることが理解されるべきである。
【０１４３】
よって、本主題の特定の実施形態が記載されてきた。他の実施形態も以下の請求項の範囲内である。場合によっては、請求項中で記載されたアクションは、異なる順序で実行され得るが、依然として、所望の結果を達成し得る。加えて、添付の図で示されたプロセスは、そうではないと記載されない限り、所望の結果を得るためには、示された特定の順序、又は順次的なやり方であることを必ずしも要求しない。ある実施形態では、マルチタスキング及びパラレル処理が優位性を用い得る。
【０１４４】
結論
多くの改変及び他の実施形態には、本発明が関連する技術における当業者なら、前述の記載及び関連する図面において提示された教示を利用し、想到することができよう。したがって、本発明は、開示された特定の実施形態に限定されるべきではなく、改変及び他の実施形態は、添付の特許請求の範囲の範囲内に含まれるよう意図されていると理解されるべきである。ここでは特定の語が採用されているが、そうではないと記載されない限り、それらは一般的な叙述的な意味で用いられているのに過ぎず、限定を目的としたものではない。
【図１】
0006911189.tif 000002
【図２】
0006911189.tif 000003
【図３】
0006911189.tif 000004
【図４】
0006911189.tif 000005
【図５】
0006911189.tif 000006
【図６】
0006911189.tif 000007
【図７】
0006911189.tif 000008
【図８Ａ】
0006911189.tif 000009
【図８Ｂ】
0006911189.tif 000010
【図８Ｃ】
0006911189.tif 000011
【図８Ｄ】
0006911189.tif 000012