(57)【要約】  例示の実施形態は、協調アクティビティに対する協調または協同効果の適用に関する。複数のデバイスにわたってインタラクティブ効果および経験を同期させるための協調アクティビティプロトコルが提供される。このプロトコルは、リアルタイム通信（ＲＴＣ）チャネルを介して複数のデバイス上で開始かつ協調される効果を可能にする。メッセージは効果を協調して開始するために交換されてよく、（開始されると）一般データはアプリケーションプログラミングインターフェース（ＡＰＩ）コールを介して交換されてよい。いくつかの実施形態によると、協調アクティビティは、テレビ会議または共有ビデオ視聴体験などの共有ビデオ体験である。他の実施形態によると、協調アクティビティは、シングルまたはマルチプレーヤゲーム、共有読書、写真アルバムとの共同対話など、他のタイプの体験に関する。【選択図】図１Ａ
2021510944.tif 000002
【特許請求の範囲】
【請求項１】
第１のデバイスおよび第２のデバイスへのビデオデータの送信を容易にすることと、
デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始することであって、前記媒体効果は、前記第１のデバイスおよび前記第２のデバイスにおいて見られる前記ビデオデータを修正する、媒体効果を開始することと、
前記媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信することであって、前記ＡＰＩコールは前記協調アクティビティに従って前記第１のデバイスからなされ、前記ＡＰＩコールは前記ビデオデータになされる修正を指定する情報と関連付けられる、ＡＰＩコールを受信することと、を備える、方法。
【請求項２】
前記ＡＰＩコールと関連付けられた前記情報は、フォーマットが前記協調アクティビティプロトコルによって事前に定義されていない一般データを備える、請求項１に記載の方法。
【請求項３】
前記ＡＰＩコールと関連付けられた前記情報は、前記協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備える、請求項１に記載の方法。
【請求項４】
前記フォーマット済みデータは、前記第１のデバイスおよび前記第２のデバイス上で再生するビデオを変更するためのコマンドを含む、請求項３に記載の方法。
【請求項５】
前記フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを備えるビデオ制御コマンドを含む、請求項３に記載の方法。
【請求項６】
前記フォーマット済みデータは、前記ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含む、請求項３に記載の方法。
【請求項７】
前記ビデオデータはテレビ会議データを備え、前記第１のデバイスおよび前記第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えるインターフェースを表示し、前記媒体効果は、前記第１のユーザが前記第１のパネル側に傾くまたは向かう時に開始され、前記修正は、前記第１のユーザが傾いたまたは向かった側の方向における前記第１のパネルのサイズを拡張すること、および前記第１のユーザ側と関連付けられた方向における前記第２のパネルのサイズを低減することを備える、請求項１に記載の方法。
【請求項８】
１つまたは複数のプロセッサによって実行される時、
第１のデバイスおよび第２のデバイスへのビデオデータの送信を容易にすること、
デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始することであって、前記媒体効果は、前記第１のデバイスおよび前記第２のデバイスにおいて見られる前記ビデオデータを修正する、媒体効果を開始すること、および、
前記媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信することであって、前記ＡＰＩコールは前記協調アクティビティに従って前記第１のデバイスからなされ、前記ＡＰＩコールは前記ビデオデータになされる修正を指定する情報と関連付けられる、ＡＰＩコールを受信することを前記プロセッサに行わせる命令を記憶する、非一時的コンピュータ可読媒体。
【請求項９】
前記ＡＰＩコールと関連付けられた前記情報は、フォーマットが前記協調アクティビティプロトコルによって事前に定義されていない一般データを備える、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１０】
前記ＡＰＩコールと関連付けられた前記情報は、前記協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備える、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１１】
前記フォーマット済みデータは、前記第１のデバイスおよび前記第２のデバイス上で再生するビデオを変更するためのコマンドを含む、請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１２】
前記フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを備えるビデオ制御コマンドを含む、請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１３】
前記フォーマット済みデータは、前記ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含む、請求項１０に記載の非一時的コンピュータ可読媒体。
【請求項１４】
前記ビデオデータはテレビ会議データを備え、前記第１のデバイスおよび前記第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えるインターフェースを表示し、前記媒体効果は、前記第１のユーザが前記第１のパネル側に傾くまたは向かう時に開始され、前記修正は、前記第１のユーザが傾いたまたは向かった側の方向における前記第１のパネルのサイズを拡張すること、および前記第１のユーザ側と関連付けられた方向における前記第２のパネルのサイズを低減することを備える、請求項８に記載の非一時的コンピュータ可読媒体。
【請求項１５】
第１のデバイスおよび第２のデバイスに送信されるビデオデータを保持する非一時的コンピュータ可読媒体と、
ハードウェアプロセッサ回路と、
デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始するように構成される媒体効果開始ロジックであって、前記媒体効果は、前記第１のデバイスおよび前記第２のデバイスにおいて見られる前記ビデオデータを修正する、媒体効果開始ロジックと、
前記媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信するように構成される媒体効果情報交換ロジックであって、前記ＡＰＩコールは前記協調アクティビティに従って前記第１のデバイスからなされ、前記ＡＰＩコールは前記ビデオデータになされる修正を指定する情報と関連付けられる、媒体効果情報交換ロジックと、を備える、装置。
【請求項１６】
前記ＡＰＩコールと関連付けられた前記情報は、前記協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備える、請求項１５に記載の装置。
【請求項１７】
前記フォーマット済みデータは、前記第１のデバイスおよび前記第２のデバイス上で再生するビデオを変更するためのコマンドを含む、請求項１６に記載の装置。
【請求項１８】
前記フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを備えるビデオ制御コマンドを含む、請求項１６に記載の装置。
【請求項１９】
前記フォーマット済みデータは、前記ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含む、請求項１６に記載の装置。
【請求項２０】
前記ビデオデータはテレビ会議データを備え、前記第１のデバイスおよび前記第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えるインターフェースを表示し、前記媒体効果は、前記第１のユーザが前記第１のパネル側に傾くまたは向かう時に開始され、前記修正は、前記第１のユーザが傾いたまたは向かった側の方向における前記第１のパネルのサイズを拡張すること、および前記第１のユーザ側と関連付けられた方向における前記第２のパネルのサイズを低減することを備える、請求項１５に記載の装置。
【請求項２１】
第１のデバイスおよび第２のデバイスへのビデオデータの送信を容易にすることと、
デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始することであって、前記媒体効果は、前記第１のデバイスおよび前記第２のデバイスにおいて見られる前記ビデオデータを修正する、媒体効果を開始することと、
前記媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信することであって、前記ＡＰＩコールは前記協調アクティビティに従って前記第１のデバイスからなされ、前記ＡＰＩコールは前記ビデオデータになされる修正を指定する情報と関連付けられる、ＡＰＩコールを受信することと、を備える、コンピュータ実施方法。
【請求項２２】
前記ＡＰＩコールと関連付けられた前記情報は、フォーマットが前記協調アクティビティプロトコルによって事前に定義されていない一般データを備える、請求項２１に記載のコンピュータ実施方法。
【請求項２３】
前記ＡＰＩコールと関連付けられた前記情報は、前記協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備える、請求項２１に記載のコンピュータ実施方法。
【請求項２４】
前記フォーマット済みデータは、前記第１のデバイスおよび前記第２のデバイス上で再生するビデオを変更するためのコマンドを含み、および／または前記フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを備え、および／または前記フォーマット済みデータは、前記ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含む、請求項２３に記載のコンピュータ実施方法。
【請求項２５】
前記ビデオデータはテレビ会議データを備え、前記第１のデバイスおよび前記第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えるインターフェースを表示し、前記媒体効果は、前記第１のユーザが前記第１のパネル側に傾くまたは向かう時に開始され、前記修正は、前記第１のユーザが傾いたまたは向かった側の方向における前記第１のパネルのサイズを拡張すること、および前記第１のユーザ側と関連付けられた方向における前記第２のパネルのサイズを低減することを備える、請求項２１から２４のいずれか一項に記載のコンピュータ実施方法。
【請求項２６】
１つまたは複数のプロセッサによって実行される時、
第１のデバイスおよび第２のデバイスへのビデオデータの送信を容易にすること、
デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始することであって、前記媒体効果は、前記第１のデバイスおよび前記第２のデバイスにおいて見られる前記ビデオデータを修正する、媒体効果を開始すること、および、
前記媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信することであって、前記ＡＰＩコールは前記協調アクティビティに従って前記第１のデバイスからなされ、前記ＡＰＩコールは前記ビデオデータになされる修正を指定する情報と関連付けられる、ＡＰＩコールを受信することを前記プロセッサに行わせる命令を記憶する、非一時的コンピュータ可読媒体。
【請求項２７】
前記ＡＰＩコールと関連付けられた前記情報は、フォーマットが前記協調アクティビティプロトコルによって事前に定義されていない一般データを備える、請求項２６に記載の非一時的コンピュータ可読媒体。
【請求項２８】
前記ＡＰＩコールと関連付けられた前記情報は、前記協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備える、請求項２６に記載の非一時的コンピュータ可読媒体。
【請求項２９】
前記フォーマット済みデータは、前記第１のデバイスおよび前記第２のデバイス上で再生するビデオを変更するためのコマンドを含み、および／または前記フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを備え、および／または前記フォーマット済みデータは、前記ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含む、請求項２８に記載の非一時的コンピュータ可読媒体。
【請求項３０】
前記ビデオデータはテレビ会議データを備え、前記第１のデバイスおよび前記第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えるインターフェースを表示し、前記媒体効果は、前記第１のユーザが前記第１のパネル側に傾くまたは向かう時に開始され、前記修正は、前記第１のユーザが傾いたまたは向かった側の方向における前記第１のパネルのサイズを拡張すること、および前記第１のユーザ側と関連付けられた方向における前記第２のパネルのサイズを低減することを備える、請求項２６から２９のいずれか一項に記載の非一時的コンピュータ可読媒体。
【請求項３１】
第１のデバイスおよび第２のデバイスに送信されるビデオデータを保持する非一時的コンピュータ可読媒体と、
ハードウェアプロセッサ回路と、
デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始するように構成される媒体効果開始ロジックであって、前記媒体効果は、前記第１のデバイスおよび前記第２のデバイスにおいて見られる前記ビデオデータを修正する、媒体効果開始ロジックと、
前記媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信するように構成される媒体効果情報交換ロジックであって、前記ＡＰＩコールは前記協調アクティビティに従って前記第１のデバイスからなされ、前記ＡＰＩコールは前記ビデオデータになされる修正を指定する情報と関連付けられる、媒体効果情報交換ロジックと、を備える、装置。
【請求項３２】
前記ＡＰＩコールと関連付けられた前記情報は、前記協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備える、請求項３１に記載の装置。
【請求項３３】
前記フォーマット済みデータは、前記第１のデバイスおよび前記第２のデバイス上で再生するビデオを変更するためのコマンドを含み、および／または前記フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを備え、および／または前記フォーマット済みデータは、前記ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含む、請求項３２に記載の装置。
【請求項３４】
前記ビデオデータはテレビ会議データを備え、前記第１のデバイスおよび前記第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えるインターフェースを表示し、前記媒体効果は、前記第１のユーザが前記第１のパネル側に傾くまたは向かう時に開始され、前記修正は、前記第１のユーザが傾いたまたは向かった側の方向における前記第１のパネルのサイズを拡張すること、および前記第１のユーザ側と関連付けられた方向における前記第２のパネルのサイズを低減することを備える、請求項３１から３３のいずれか一項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、米国特許法第１１９条（ｅ）に基づく、一部継続出願である、「Ｃｏｏｒｄｉｎａｔｅｄ  Ｅｆｆｅｃｔｓ  ｉｎ  Ｖｉｄｅｏｓ」という名称の、２０１８年１月１２日に出願された米国特許出願第１５／８７０，００８号（代理人整理番号１３６０Ｆ０２０５．１）の利益を主張するものであり、かつ、「Ｍｅｔｈｏｄｓ  ａｎｄ  Ｓｙｓｔｅｍｓ  ｆｏｒ  Ｉｎｉｔｉａｔｉｎｇ  ａ  Ｃｏｏｒｄｉｎａｔｅｄ  Ｅｆｆｅｃｔ」という名称の、２０１８年１月１２日に出願された米国特許出願第１５／８６９，９２６号（代理人整理番号１３６０Ｆ０２０１）の優先権を主張するものである。前述の出願の内容は参照により本明細書に組み込まれている。
【背景技術】
【０００２】
フェイシャルマスクオーバーレイ、追加されたグラフィック、変更された背景などの媒体効果は、ビデオストリームに適用される場合がある。一般的に、媒体効果は、ユーザによって、そのユーザ自身の映像を修正するために適用されている（例えば、ユーザ自身の顔にマスクを適用する）。しかしながら、最近、協調アクティビティプロトコルは、実装形態が協調的に取り扱われる協調媒体効果を、少なくとも部分的に、該効果を開始しなかったクライアントデバイスによって可能にするように開発されている。このプロトコルの例示の実装形態は、米国特許出願第１５／８６９，９２６号に記載されている。
【発明の概要】
【０００３】
本発明による実施形態は、とりわけ、方法、記憶媒体、およびシステムを対象とした添付の特許請求の範囲に開示されており、１つの特許請求項の分類に述べられる任意の特徴は、別の特許請求項の分類、例えば、システム、コンピュータプログラム製品においても特許請求可能である。添付の特許請求の範囲に対する従属関係または参照は、単に形式的な理由で選定されている。しかしながら、添付の特許請求の範囲で選定された従属関係にかかわらず、請求項およびその特徴の任意の組み合わせが、開示され、かつ特許請求できるように、任意の前の請求項（とりわけ、多数項従属）への意図的な参照から生じる任意の主題も特許請求可能である。特許請求可能である主題は、添付の特許請求の範囲に記載される特徴の組み合わせだけでなく、特許請求の範囲における特徴の任意の他の組み合わせも含み、特許請求の範囲に述べられるそれぞれの特徴は任意の他の特徴または特許請求の範囲における他の特徴の組み合わせと組み合わせ可能である。さらに、本明細書に説明されるまたは示される実施形態および特徴のいずれかは、別々の請求項において、および／または本明細書に説明されるまたは示される任意の実施形態もしくは特徴と、または添付の特許請求項の特徴のいずれかとの任意の組み合わせで特許請求可能である。
【０００４】
本発明による一実施形態では、とりわけ、コンピュータ実施方法は、第１のデバイスおよび第２のデバイスへのビデオデータの送信を容易にすることと、デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始することであって、媒体効果は、第１のデバイスおよび第２のデバイスにおいて見られるビデオデータを修正する、媒体効果を開始することと、媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信することであって、ＡＰＩコールは協調アクティビティに従って第１のデバイスからなされ、ＡＰＩコールはビデオデータになされる修正を指定する情報と関連付けられる、ＡＰＩコールを受信することと、を備えてよい。
【０００５】
ＡＰＩコールと関連付けられた情報は、フォーマットが協調アクティビティプロトコルによって事前に定義されていない一般データを備えてよい。
【０００６】
ＡＰＩコールと関連付けられた情報は、協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備えてよい。
【０００７】
フォーマット済みデータは、第１のデバイスおよび第２のデバイス上で再生するビデオを変更するためのコマンドを含んでよい。
【０００８】
フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを含むビデオ制御コマンドを含んでよい。
【０００９】
フォーマット済みデータは、ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含んでよい。
【００１０】
本発明による一実施形態では、ビデオデータは、テレビ会議データを備えてよく、第１のデバイスおよび第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを含むことができるインターフェースを表示してよく、媒体効果は、第１のユーザが第１のパネル側に傾くまたはお時に開始されてよく、修正は、第１のユーザが傾いたまたは向かった側の方向における第１のパネルのサイズを拡張すること、および第１のユーザ側と関連付けられた方向における第２のパネルのサイズを低減することを備えてよい。
【００１１】
本発明による一実施形態では、非一時的コンピュータ可読媒体は、１つまたは複数のプロセッサによって実行される時、第１のデバイスおよび第２のデバイスへのビデオデータの送信を容易にすること、デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始することであって、媒体効果は、第１のデバイスおよび第２のデバイスにおいて見られるビデオデータを修正する、媒体効果を開始すること、および、媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信することであって、ＡＰＩコールは協調アクティビティに従って第１のデバイスからなされ、ＡＰＩコールはビデオデータになされる修正を指定する情報と関連付けられる、ＡＰＩコールを受信することをプロセッサに行わせてよい命令を記憶することができる。
【００１２】
ＡＰＩコールと関連付けられた情報は、フォーマットが協調アクティビティプロトコルによって事前に定義されていない一般データを備えてよい。
【００１３】
ＡＰＩコールと関連付けられた情報は、協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備えてよい。
【００１４】
フォーマット済みデータは、第１のデバイスおよび第２のデバイス上で再生するビデオを変更するためのコマンドを含んでよい。
【００１５】
フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを含むビデオ制御コマンドを含んでよい。
【００１６】
フォーマット済みデータは、ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含んでよい。
【００１７】
ビデオデータは、テレビ会議データを備えてよく、第１のデバイスおよび第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えることができるインターフェースを表示してよく、媒体効果は、第１のユーザが第１のパネル側に傾くまたは向かう時に開始されてよく、修正は、第１のユーザが傾いたまたは向かった側の方向における第１のパネルのサイズを拡張すること、および第１のユーザ側と関連付けられた方向における第２のパネルのサイズを低減することを備えてよい。
【００１８】
本発明による一実施形態では、装置は、第１のデバイスおよび第２のデバイスに送信されるビデオデータを保持する非一時的コンピュータ可読媒体と、ハードウェアプロセッサ回路と、デバイスにとらわれない協調アクティビティプロトコルによる媒体効果を開始するように構成される媒体効果開始ロジックであって、媒体効果は、第１のデバイスおよび第２のデバイスにおいて見られるビデオデータを修正する、媒体効果開始ロジックと、媒体効果に関するアプリケーションプログラミングインターフェース（ＡＰＩ）コールを受信するように構成される媒体効果情報交換ロジックであって、ＡＰＩコールは協調アクティビティに従って第１のデバイスからなされ、ＡＰＩコールはビデオデータになされる修正を指定する情報と関連付けられる、媒体効果情報交換ロジックと、を備えてよい。
【００１９】
ＡＰＩコールと関連付けられた情報は、協調アクティビティプロトコルによって事前に定義されるサービスと関連付けられたフォーマット済みデータを備えてよい。
【００２０】
フォーマット済みデータは、第１のデバイスおよび第２のデバイス上で再生するビデオを変更するためのコマンドを含んでよい。
【００２１】
フォーマット済みデータは、停止コマンド、開始コマンド、一時停止コマンド、または同期コマンドのうちの少なくとも１つを含むビデオ制御コマンドを備えてよい。
【００２２】
フォーマット済みデータは、ビデオデータにアクセスしたエントリポイントに基づいてビデオサムネイルモードをトリガするためのコマンドを含んでよい。
【００２３】
ビデオデータは、テレビ会議データを備えてよく、第１のデバイスおよび第２のデバイスはそれぞれ、第１のユーザのビデオを表示するための第１のパネル、および第２のユーザのビデオを表示するための第２のパネルを備えることができるインターフェースを表示してよく、媒体効果は、第１のユーザが第１のパネル側に傾くまたは向かう時に開始されてよく、修正は、第１のユーザが傾いたまたは向かった側の方向における第１のパネルのサイズを拡張すること、および第１のユーザ側と関連付けられた方向における第２のパネルのサイズを低減することを備えてよい。
【００２４】
本発明による一実施形態では、１つまたは複数のコンピュータ可読非一時的記憶媒体は、本発明または上述した実施形態のいずれかによる方法を行うために実行される時に動作可能であるソフトウェアを具現化してよい。
【００２５】
本発明による一実施形態では、システムは、１つまたは複数のプロセッサと、プロセッサに結合され、かつ、プロセッサによって実行可能な命令を備える少なくとも１つのメモリであって、プロセッサは、命令を実行する時、本発明または上述した実施形態のいずれかによる方法を行うように動作可能である、少なくとも１つのメモリと、を備えてよい。
【００２６】
本発明による一実施形態では、好ましくは、コンピュータ可読非一時的記憶媒体を備えるコンピュータプログラム製品は、データ処理システム上で実行される時、本発明または上述した実施形態のいずれかによる方法を行うように動作可能であってよい。
【図面の簡単な説明】
【００２７】
【図１Ａ】開始ユーザおよび非開始ユーザの映像に媒体効果が協調されて適用されるテレビ会議インターフェースの一例を示す図である。
【図１Ｂ】協調効果によって、１ユーザと関連付けられたパネルは縮小し、別のユーザと関連付けられたパネルは拡大するテレビ会議インターフェースを示す図である。
【図１Ｃ】協調効果によって、１ユーザと関連付けられたパネルは縮小し、別のユーザと関連付けられたパネルは拡大するテレビ会議インターフェースを示す図である。
【図１Ｄ】協調効果によって、１ユーザと関連付けられたパネルは縮小し、別のユーザと関連付けられたパネルは拡大するテレビ会議インターフェースを示す図である。
【図１Ｅ】共有ビデオ体験の一例を示す図である。
【図１Ｆ】共有ビデオ体験の一例を示す図である。
【図１Ｇ】共有読書体験の例を示す図である。
【図１Ｈ】共有写真アルバム体験の一例を示す図である。
【図１Ｉ】協調ゲーム体験の一例を示す図である。
【図１Ｊ】協調ゲーム体験の一例を示す図である。
【図２Ａ】例示の実施形態による使用に適した例示のクライアント／サーバ環境を示すブロック図である。
【図２Ｂ】協調効果開始メッセージのための例示のデータ構造を示す図である。
【図２Ｃ】一般データまたは事前に定義されたタイプのデータを交換するための協調効果データ交換メッセージのための例示のデータ構造を示す図である。
【図３Ａ】クライアント／サーバ環境における例示の情報交換を示すデータフロー図である。
【図３Ｂ】クライアント／サーバ環境における例示の情報交換を示すデータフロー図である。
【図３Ｃ】クライアント／サーバ環境における例示の情報交換を示すデータフロー図である。
【図４Ａ】協調アクティビティプロトコルによる協調効果を適用するための例示の方法を示すフローチャートである。
【図４Ｂ】協調アクティビティプロトコルによる協調効果を適用するための例示の方法を示すフローチャートである。
【図５Ａ】例示的な中央集中通信サービスを含むシステムの概観を提供するブロック図である。
【図５Ｂ】例示的な分散通信サービスを含むシステムの概観を提供するブロック図である。
【図５Ｃ】図５Ａ〜図５Ｂのソーシャルネットワーキンググラフをより詳細に描写する図である。
【図６】メッセージングサービスのためのシステムの例を描写するブロック図である。
【図７】例示的な実施形態と共に使用するのに好適である例示的なコンピューティングデバイスを例証するブロック図である。
【図８】例示的な通信アーキテクチャを描写する図である。
【図９】例示的なマルチキャリア通信デバイスを描写するブロック図である。
【発明を実施するための形態】
【００２８】
比較的複雑な協調効果を開始しないクライアントデバイスに関与するこの効果を実装するための技法について本明細書に記載する。これらの効果は、ビデオ中心の体験（例えば、ビデオ通話、共有ビデオ視聴）またはビデオ中心ではない体験（例えば、シングルレイヤーまたはマルチレイヤーゲーム、共有読書体験、共有写真アルバムなど）のコンテクストにおいて適用されてよい。
【００２９】
効果は、複数のデバイスにわたるインタラクティブ効果および体験を同期するためのプロトコルに従って適用されてよい。この協調アクティビティプロトコルは、リアルタイム通信（ＲＴＣ）チャネルを介して複数のデバイス上で開始かつ協調される効果を可能にする。プロトコルは、効果を協調して開始するためにメッセージを交換すること、および（開始されると）アプリケーションプログラミングインターフェース（ＡＰＩ）コールを介して一般データを交換することに関与する。それ故に、システムは、データタイプおよびプラットフォーム両方共にとらわれないことで、効果の開発者はデータがどのように解釈されるものにするのかを定義することが可能になる。
【００３０】
場合によっては、より高い水準のサービスは、（例えば、順番の交渉、順番の譲歩、スコア記録、指導者選出などの重要な共通アクティビティに対して）事前に定義されたタイプのデータを交換するために提供されてよい。
【００３１】
プロトコルを使用して、ビデオストリームにおける効果を同期し、ビデオ中心ではない体験（例えば、共同ビデオ視聴、読書、マルチプレーヤゲーム、観賞体験のあるシングルプレーヤゲーム、総当たり式の短期シングルプレーヤゲーム、写真アルバムの観賞／整理）などを協調させることができる。
【００３２】
例えば、共有体験は、複数の参加者によるテレビ会議であってよい。１つの例では、協調効果は、あるユーザ（開始ユーザ）によって別のユーザ（非開始ユーザ）に適用されてよい。これは、例えば、開始ユーザのビデオが処理される（例えば、非開始ユーザにひげを描き、その後、全ての参加者に見えるようになる）、または、開始ユーザが、開始ユーザのみならず、１または複数の非開始ユーザに関与する効果を開始することができる（例えば、開始ユーザが、火の玉を投げる真似をし、この火の玉は開始ユーザの手に現れた後、画面から離れて投げられるように見え、その後非開始ユーザのビデオに現れて、「燃えている」アニメーションを、これらがぶつけられる時にこれらのユーザに適用されるようにすることができる）やり方に影響を与えることなく、開始ユーザが非開始ユーザ（複数可）に効果を適用することに関与し得る。
【００３３】
協調効果はまた、共同体験においてビデオを視聴する複数のユーザに適用され得る。この場合、協調効果は、ビデオを開始する、ビデオを停止する、ビデオを一時停止する、参加デバイスの間でビデオの場所を同期させる、ビデオをサムネイルモードにする、またはビデオを全画面構成に大きくするなどのために適用可能であってよい。
【００３４】
ユーザの間で協調される体験はまた、写真アルバムを観賞するまたは整理すること、協調して読書すること、またはマルチプレーヤゲーム（または、複数のデバイスの間であるタイプの協調が必要とされるシングルプレーヤゲーム）に参加することなど、ビデオ中心でなくてよい。様々な協調効果は、協調体験の状態を変更するために適用されてよい。
【００３５】
上述したアクティビティは、これらが、テレビ会議などのビデオコンポーネントの存在を必要としない点でビデオ中心ではなく、協調効果は非ビデオ情報に適用される。それにもかかわらず、アクティビティは、ビデオコンポーネントに関連して（例えば、ユーザがゲームをしている一方、他のユーザはテレビ会議で視聴かつ通信する）用いられてよい。この場合、協調効果は、ビデオコンポーネント、非ビデオコンポーネント、または、ビデオコンポーネントおよび非ビデオコンポーネント両方に適用されてよい。
【００３６】
この簡単な概要は、以下により詳細に論じられる概念に対する非限定的な導入として機能することが意図される。しかしながら、さらなる例示的な実施形態について論じる前に、データプライバシに関する簡単な記述が、まず提供される。プライバシ設定および認証のより詳細な説明は、以下の図に関連して取り上げられるものとする。
【００３７】
データプライバシに関する記述
本明細書に説明されるいくつかの実施形態は、１人または複数のユーザによって自発的に提供される情報を含み得る訓練データまたは指標を利用する。そのような実施形態において、データプライバシは、いくつかのやり方で守られ得る。
【００３８】
例えば、ユーザは、ユーザデータが収集または使用される前に任意のデータ収集にオプトインすることを要求され得る。ユーザはまた、任意のデータ収集からオプトアウトする機会を提供され得る。データ収集にオプトインする前に、ユーザは、データが使用されるやり方、どのぐらいの間データが保持されるか、およびデータを開示から守るために適所にある安全措置についての説明を提供され得る。
【００３９】
データを収集されたユーザを識別するいかなる情報も、データから消去される、または切り離され得る。任意の識別情報が保持される必要がある場合（例えば、規制要件を満たすため）、ユーザは、その識別情報の収集、その識別情報が使用される用途、およびその識別情報が保持されることになる時間量を通知され得る。ユーザを具体的に識別する情報は、除去され得、また、例えば、総称の識別番号または他の非特異的な形態の識別と置き換えられ得る。
【００４０】
データは、一旦収集されると、データへの不正アクセスを防ぐために安全措置を含む安全なデータストレージ位置に記憶され得る。データは、暗号化された形式で記憶され得る。識別情報および／または非識別情報は、既定の時間期間後にデータストレージから消去され得る。
【００４１】
特定のプライバシ保護技術が例証の目的のために本明細書に説明されるが、当業者は、プライバシが他の様式でも同様に守られることを認識するものとする。データプライバシに関するさらなる詳細は、以下で、ネットワーク実施形態を説明するセクションにおいて論じられる。
【００４２】
ユーザのプライバシ条件が満たされると仮定して、例示的な実施形態は、数ある可能性の中でも、ソーシャルネットワーク内またはモバイルデバイス上でのメッセージング（例えば、メッセージングクライアントアプリケーションを通して、またはショートメッセージサービスを介して）を含む、多種多様なメッセージングシステムにおいて採用され得る。次に、メッセージングシステムにおける同時性ビデオ会話に参加するための例示的なロジックおよびプロセスの外観が提供される。
【００４３】
理解を助けるものとして、まず、一連の例が、根本の実装形態の詳細な説明が説明される前に、提示される。これらの例は、単に例証であることが意図されること、および本発明は示される実施形態に限定されないことに留意されたい。
【００４４】
協調効果
これより、図面を参照するが、ここでは同様の参照番号は、全体を通して同様の要素を指すために使用される。以下の説明において、説明の目的のため、多数の具体的な詳細事項が、それらの徹底的な理解を提供するために明記される。しかしながら、新規の実施形態は、これらの具体的な詳細事項なしに実践されてもよい。他の事例において、周知の構造およびデバイスは、それらの説明を容易にするためにブロック図の形態で示される。特許請求される主題と一致する全ての修正形態、均等物、および代替物を網羅することが意図される。
【００４５】
図および付随する説明において、指示表示「ａ」および「ｂ」および「ｃ」（ならびに同様の指示子）は、任意の正の整数を表す変数であることが意図される。したがって、例えば、実装形態が、ａ＝５の値を設定する場合、コンポーネント１２２−１から１２２−ａとして例証されるコンポーネント１２２の完全なセットは、コンポーネント１２２−１、１２２−２、１２２−３、１２２−４、および１２２−５を含み得る。実施形態は、この文脈に限定されない。
【００４６】
図１Ａ〜図１Ｊは、複数のユーザが共有体験で参加してよい例示のインターフェースを示す。様々なタイプの協調効果について、それぞれのインターフェースと併せて説明する。
【００４７】
一般に、協調効果は、協調アクティビティおよび／または協調アクティビティの状態と関連付けられたデータを修正する効果であってよく、この場合、修正は効果を開始しないデバイスによる協調を必要とする。
【００４８】
協調効果は、ビデオまたはインターフェースを修正するためにビデオまたはインターフェースに適用されてよいマスクまたはアニメーションなどの映像データを含む。しかしながら、協調効果はアニメーションまたはグラフィックデータに限定されない。例えば、オーディオ効果はビデオストリームに適用されてよい。オーディオ効果は、例えば、オーディオをストリームに加えること（例えば、笑い声トラックまたは拍手トラックなどのオーディオトラックを再生すること）、ストリームにおけるオーディオを修正すること（例えば、声のピッチ、音量などのユーザの声の性質を変更すること）、オーディオストリームにおける歌にマッチするビートを再生することなどを含んでよい。
【００４９】
さらに、本明細書に説明される技法は、ビデオを修正する視聴覚データの形式の協調効果に限定されない。いくつかの実施形態では、メッセージは、任意の協調アクティビティ（例えば、シングルまたはマルチプレーヤゲーム、協調観賞体験など）の状態を修正するために協調アクティビティプロトコルに従って交換されてよい。修正は、映像または音響データに適用されるグラフィックまたは音響オーバーレイを含んでよい、または協調アクティビティの状態（例えば、マルチプレーヤゲームでの競合解消の目的でリーダーデバイスを選出すること、ゲームの順番を飛ばすこと、インタラクティブな本、ビデオ、または写真アルバムにコマンドを発行することなど）を変更してよい。
【００５０】
協調効果は、協調効果を開始するユーザのビデオまたは体験に適用されてよい。協調効果は、ユーザによって直接（例えば、画面上のボタンを押す、あるいは協調効果を適用するためのコマンドを発行することによって）、または間接的に（例えば、既定の回数または間隔などで協調効果を適用することによって協調効果が適用されるものとする条件を検出することによって）適用されてよい。
【００５１】
いくつかの実施形態では、協調効果を、媒体効果を適用した参加者と異なる参加者に適用してよい、または、協調されるように複数のユーザに適用してよい。図１Ａは、媒体効果がテレビ会議の複数のユーザに適用されるインターフェースの一例を示す。
【００５２】
この場合、システムは、第２の参加者（Ｊａｃｋ）に向けられた第１の参加者（Ｊｉｌｌ）と関連付けられた感情状態（例えば、ロマンチックな感情状態）を検出した。システムはしたがって、協調アクティビティプロトコルによって、ＪｉｌｌのビデオストリームおよびＪａｃｋのビデオストリーム両方に対する「ロマンチックな」協調効果を開始する。この場合、アニメーションのキス媒体効果１２２−１が、最初はＪｉｌｌの口を中心にＪｉｌｌのディスプレイに現れる。効果１２２−１は、Ｊｉｌｌの画面の端に飛ぶように見えて消える。この効果は、媒体効果１２２−２としてＪａｃｋのディスプレイ上に再び現れて、Ｊａｃｋの頬に飛んでいく。通信中のそれぞれの参加者は、この協調媒体効果を見ることができる。他の例は、怒ったユーザの顔をドラゴンとしてアニメ化すること、および、ユーザが別のユーザに火を噴いていること、雪玉を投げることを示すことなどを含んでよい。
【００５３】
マルチユーザ協調効果は、感情状態が検出された元の（選択中の）ユーザ、および少なくとも１人の他のユーザに適用されてよい。他のユーザは、例えば、現在アクティブなユーザ（例えば、現在話している、あるいは最も関連しているとみなされるユーザ）、同じまたは対応する感情状態を有する別のユーザ、元のユーザが現在見ているディスプレイの一部分と関連付けられたユーザ（例えば、ユーザが、別のユーザのビデオストリームを凝視し、かつマルチユーザ媒体効果をトリガする感情を持っている場合、媒体効果は他のユーザのビデオストリームを対象にしている場合がある）、または選択済みの他のユーザであってよい。
【００５４】
いくつかの実施形態では、協調効果は直接自動的に適用されてよい。その他の場合、複数の候補の協調効果が識別される場合があり、推奨される協調効果のセットは、開始ユーザによる選択のために自動的に提示されてよい。
【００５５】
ビデオ通話において（または他のビデオデータに）音響またはグラフィック協調効果を適用する例では、協調アクティビティプロトコルを使用して、効果を適用するそれぞれのユーザが、必要なデータ（例えば、効果を適用するためのロジック、アニメーションデータなど）を確実に有するようにする効果を開始する、および、効果を適用することを可能にするデータを交換することができる。例えば、効果の場所またはパスは、ユーザの特定の特徴（例えば、鼻、口、手）の位置に左右される場合がある。効果（例えば、図１Ａにおけるキスをすることは、Ｊｉｌｌのパネルの端の場所から消え、Ｊａｃｋのパネル上の対応する場所に再び現れる）を協調させるために、場所情報は、協調アクティビティプロトコルを通して交換されてよい。
【００５６】
図１Ｂ〜図１Ｄに示される別の例では、協調効果は、テレビ会議に対するグラフィカルユーザインターフェース（ＧＵＩ）の状態を修正することができる。図１Ｂに示されるようなＧＵＩにおいて、ユーザ（Ｊｉｌｌ）は第１のパネル１０６と関連付けられ、ユーザ（Ｊａｃｋ）は第２のパネル１０４と関連付けられる。各パネルはそれぞれ、幅および高さによって定められる対応するサイズを有する。この場合、それぞれのパネルの幅および高さは、最初は同じである。例えば、第１のパネル１０６および第２のパネル１０４の幅はそれぞれ、最初はある特定の値ｄ１に設定される。
【００５７】
テレビ会議アプリケーションは、協調アクティビティプロトコルによって、ＧＵＩを修正する協調効果をサポートしてよい。この場合、図１Ｃに示されるように、１つまたは複数の協調効果は、開始ユーザ（この場合はＪｉｌｌ）が自身のパネル１０６の端１０８の１つに傾く時にトリガされてよい。ユーザが、十分な速度でパネルに傾く（または、自身の手でパネル１０６の端を押すことなどによって別のやり方で効果をトリガする）場合、テレビ会議アプリケーションはこの条件を１つまたは複数の協調効果の適用と関連付けてよい。開始クライアントデバイスの機能を果たすＪｉｌｌのクライアントデバイスは、この条件が満たされていることを検出することができ、かつ協調アクティビティプロトコルを通して関連付けられた効果を開始してよい。第１の効果として、アプリケーションは、ユーザの頭が、ビデオ通話におけるそれぞれの参加者のデバイス上で再生されるようにパネル１１０の端１０８に接触すると（ノック音などの）音が再生されるようにしてよい。オプションとして、アプリケーションは、インターフェースを振るなどして、即座の可視効果を引き起こしてもよい。
【００５８】
同時にまたはその後、アプリケーションは、各パネル１０６、１０４のサイズを変更させてよい。この場合、第１のパネル１０６は、Ｊｉｌｌが押す方向（すなわち、端１０８の方向）に幅を拡張させ、第２のパネル１０４は同じ方向に対応する量で縮小する。その結果、第２のパネル１０４は、ｄ２の幅に縮小し、これは第１のパネル１０６の幅ｄ３より小さい。元のｄ１のサイズからその後のｄ２／ｄ３のサイズに変更するための調節量は、開始ユーザが端１０８をどのくらい強く押すように見えるか（例えば、ユーザが端１０８にどれくらい迅速に傾くか）、および／または、ユーザが端１０８をどれくらい長く保持するかに左右される場合がある。媒体効果の適用を可能にする情報（例えば、開始ユーザの頭または手の位置、ユーザが移動する速度、ユーザが端１０８に触れてから経過した時間など）は、協調アクティビティプロトコルによって非開始ユーザと交換されてよい。
【００５９】
このような実施形態は、例えば、ユーザがこれらの映像の背景および／または画面内にあるものを示すことを望む時、有用である場合がある。
【００６０】
図１Ｂ〜図１Ｄの例はまた、複数の協調効果を、同時に存在するおよび／または互いに重ね合わせられる場合があることを示すのに役立つ。例えば、図１Ｃからのオーディオ協調効果１１０は、パネル１０６が拡張し始めるのと同時に適用されてよい。さらなる実施形態では、協調効果はまた、非協調効果と重ね合わせられてよい。
【００６１】
この場合、Ｊｉｌｌのデバイスが開始デバイスとしての役割を果たしたことも注目に値する。パネル拡張協調効果によって、Ｊａｃｋのパネルサイズが修正されて、Ｊａｃｋは非開始ユーザになっている。しかしながら、この会議における他の参加者も非開始ユーザとしてフラグが立てられるが、これは、変更がそれぞれのユーザのＧＵＩを修正するためにこれらユーザのデバイスでも協調されなければならないからである。キス効果が適用された図１Ａからの例では、これらの他のユーザを非開始ユーザとしてタグ付けすることは必要ではない場合があるが、これは、媒体効果が、ＪａｃｋおよびＪｉｌｌのビデオストリームに適用された後、必ずしも他のユーザによる協調を必要とすることなく他のユーザにブロードキャスト可能であるからである。同様に、オーディオ効果１１０は協調効果である必要はないが、これは、オーディオ効果１１０が、他のユーザが効果の適用時に協調することを必ずしも必要とするわけではなく、開始ユーザのオーディオデータに追加されてよいからである。
【００６２】
図１Ｅは、複数のユーザが（例えば、オンラインビデオ共有サービスを介して）共同ビデオ視聴体験を共有する別の例を示す。この例では、ビデオ１１８は、それぞれの参加者のクライアントアプリケーションのインターフェース上で表示され、ビデオの再生は、それぞれのユーザが同じビデオを同じ再生状態で同時に見るように同期される。
【００６３】
共同体験を作成するために、図１Ｅに示される実施形態は、二次特徴としてのテレビ会議を含む。ビデオ視聴体験を観賞している参加者は、プレビューパネル１１４における自身のテレビ会議データのプレビューを見ることができる。他の参加者は、参加者パネル１１６−１、１１６−２、１１６−３などに現れる。代替的には、参加者は、図１Ｇ〜図１Ｈとの関連で説明されるように）オーディオ会議を介して通信でき、（図１Ｆとの関連で説明されるように）メッセージングインターフェースにおいてメッセージを交換できる、または、アプリケーションは、参加者通信能力を提供しないようにすることができ、代わりに、（図１１の例にあるように）参加者体験を単に同期または協調させることができる。これらの異なる通信能力は、本明細書に説明される実施形態のいずれかと組み合わせられてよい。
【００６４】
ビデオの再生を制御するために、それぞれの参加者は、再生制御１２０が設けられている。制御１２０は、停止、再生、一時停止、早送り、巻き戻しなど、ビデオの状態を変更するのに適した任意の制御を含んでよい。これらの制御１２０をアクティブ化することによって、協調効果を、それぞれの参加者の再生状態の変更をもたらすようにアクティブ化させることができる。
【００６５】
協調効果は、いくつかのやり方で協調アクティビティプロトコルによって実装されてよい。例えば、アプリケーションは、開始メッセージを使用して一般的な「ビデオ再生」協調効果を開始後、データメッセージにおいて一般データとして個々の命令を送信してよい。代替的には、アプリケーションは、それぞれの制御に対する新しい効果（例えば、開始メッセージを介して開始される再生効果、開始メッセージを介して開始される停止効果など）を開始することが可能である。またさらに、アプリケーションは、一般ビデオ再生協調効果を開始することができ、さらにまた、協調アクティビティプロトコルの事前に構成された高水準サービス（例えば、再生サービス、停止サービスなど）を起動する既定のフォーマットのデータを伝達するデータメッセージを使用して個々の命令を送信してよい。
【００６６】
一時停止、再生、停止、早送り、および巻き戻しなどのいくつかの制御は、１参加者がコントロールをアクティブ化する場合、ビデオ再生の状態がそれぞれの参加者のアプリケーションで変更されるように協調させてよい。その他、音量などは、アプリケーションごとに適用されることが可能であり、それによって、これらの制御をアクティブ化することで別の参加者のアプリケーションにおける対応する制御に影響しないようにする。
【００６７】
この場合、協調効果は、（他の実施形態では、協調効果は、さらに、または交互に、テレビ会議情報に適用されてよいが）テレビ会議情報ではなく表示されているビデオ１１８に適用可能である。協調効果は、（例えば、開始メッセージを介して協調アクティビティプロトコルによって協調効果を開始後、プロトコルのデータメッセージを介して一般データまたはフォーマット済みデータを交換することによって）テレビ会議中心の実施形態およびテレビ会議中心ではない実施形態に対して同様のやり方で適用される。クライアント／サーバ環境（図２Ａを参照）が、協調効果が非テレビ会議データに適用される時にわずかに異なっている場合があることは、留意されるべきである。例えば、図２Ａに示される通信サーバは、オーディオおよびビデオデータを互いから受信後、データを再配布するのではなく、中央側から視聴されているビデオ１１８の配布を協調させてよい。協調効果に関連しているメッセージは、ＲＴＣチャネル上で提供され続けてよく、他のタイプのデータ（この場合のビデオデータ、または、後述される例では、写真データ、ゲームデータ、本データなど）は、これら自体の専用チャネル上で配布されてよい。それぞれの場合、共有体験は、オプションとして、テレビ会議またはオーディオ会議に関わる場合があるため、ビデオおよび／またはオーディオデータは、共有体験に直接関連している他のタイプのデータに加えて配布されてよい。テレビ会議および／またはオーディオ会議データは、他のタイプのデータおよび制御データを配布する同じ通信サーバによって配布されてよい、および／または別々のサーバによって取り扱われてよい。
【００６８】
ビデオ再生に関連する協調効果は、再生または一時停止ボタンを押すことなどによって明白にアクティブ化される効果に限定されない。協調効果はまた、例えば、ビデオの再生を協調させるアプリケーションによって自動的にアクティブ化されてよい。協調効果は、既定の条件の発生時にまたは既定のタイミングでアクティブ化されてよく、背景で（場合によって、ユーザの知識がなくても）実行されてよい。他のこのような例は、既定の間隔で自動的にアクティブ化されてよい同期効果である。各参加者のアプリケーションは、ビデオの現在の再生についてのタイミング情報（例えば、所定の時間でのビデオを通じたユーザの進行）を指示する、同期効果に関連しているデータメッセージを交換することができる。タイミング情報を使用して、それぞれのアプリケーションは、ビデオ再生をローカルに同期できることで、それぞれの参加者がビデオの同じ一部を同時に観賞するようにする。
【００６９】
自動的なまたは背景の効果の別の例は図１Ｆに示されている。この例では、参加者は、メッセージングインターフェース１２２を通して対話している。メッセージングインターフェースでは、ユーザは、会話パネル１２６においてテキストベースのメッセージを交換する権利が与えられてよい。この例では、会話パネル１２６におけるメッセージのうちの１つは、ビデオ１２４へのリンクを含む。１ユーザがリンクを選択する時、ビデオ１２４はインターフェース１２２において表示可能である。
【００７０】
アプリケーションは、ビデオにアクセスしたエントリポイントに左右される異なるやり方でビデオ１２４を表示するように構成されてよい。例えば、メッセージングによる会話における参加者がユーザに映画を勧めるボットと対話し、かつユーザのうちの１人が映画を再生し始めるようにボットに命令する場合、これは、（図１Ｅからの例と同様に見える場合がある）全画面モードでビデオ１２４の再生をトリガしてよい。他方では、会話パネル１２６におけるリンクを介してビデオにアクセスする時、ビデオ１２４は、図１Ｆに示されるように、サムネイルモードで表示されてよい。ビデオのエントリポイントに反応するサムネイルモードおよび全画面モードを可能にするために、データメッセージは、エントリポイントを表す（または、ビデオ１２４がサムネイルモードまたは全画面モードで再生されるものとすることを明白に指定する）協調アクティビティプロトコルによって交換されてよい。
【００７１】
図１Ｇに示される別の実施形態は、共有読書体験に関する。電子書籍インターフェース１２８は、複数の参加クライアントデバイスのディスプレイ上に本の同じページを表示することができるアプリケーションによって提供されてよい。この例では、コールパネル１３０は、参加者が、インターフェース１２８を観賞している間音声通話で通信していることを指示する。このような実施形態は、例えば、教科書を参照する勉強グループをサポートするための共有雑誌読書体験のために、親が自宅から離れている間に自分の子供に読書させることを可能にするのに有用である場合がある。協調アクティビティプロトコルを使用して、電子書籍の表示を同期させ続けることができる。
【００７２】
様々な対話可能な要素は、参加者が本を検索できるようにすることが可能である。例えば、リンク１３２は、参加者がディスプレイに本の目次（または、索引、図版一覧など）を示すようにすることを可能にしてよい。ディスプレイがタッチスクリーンである場合、現在のページの左領域１３４と対話することによって、本を前のページに戻るようにして、場合によってページめくりのアニメーションを示すことができる。同様に、右領域１３６と対話することによって、ページを進めさせることができる。いくつかの実施形態では、ページを後方にまたは前方にめくるための高速アイコンが提供されてよい。
【００７３】
これらの対話のそれぞれは、協調アクティビティプロトコルによって送られる対応する協調効果と関連付けられてよい。協調アクティビティプロトコルによってもたらされ得る協調アクションの他の例は、用語をサーチすること、指定されたページにジャンプすること、（例えば、目次から読んだばかりのページに戻るように、またはあるページからある索引に戻るようにジャンプするために）アクセスした前のページに戻ること、図を拡張すること、特定のページをブックマークすることなどを含む。
【００７４】
さらに別の実施形態では、協調体験は、図１Ｈに示されるように、写真アルバムインターフェース１４０における写真アルバムを観賞するまたは編集することに関与してよい。写真アルバムインターフェースにおいて、アルバムから現在観賞されている写真は、オプションとして、メインウィンドウ１４２に表示可能である。現在観賞されている写真は、前方インターフェース要素１４８を使用してアルバムにおける次の写真を、または、後方インターフェース要素１４６を使用してアルバムにおける前の写真を検索することによって変更されてよい。アルバムにおける写真のそれぞれ（または、利用可能な表示空間量に応じて、アルバムにおける写真の限定された部分集合）は、サムネイルバージョン１４４−１、１４４−２、１４４−３などにおいて表示されてよい。サムネイルバージョン１４４−ｉを選択することによって、関連付けられた写真をメインウィンドウ１４２において表示させてよい。アルバムライブラリリンク１５０は、ユーザが、現在のアルバムを出て、全ての利用可能なアルバムのリストを見ることができるようにしてよい。編集コマンド１５２は、メインウィンドウ１４２における写真を編集可能にすることができる。さらに、ユーザは、サムネイルビュー１４４−ｉにおける写真を選択し、かつこれらをアルバムにおける新しい場所にドラッグしてよい。さらなるオプションは、新しい画像をアルバムに追加する、またはアルバムにおける写真を削除するために提供されてよい。これらの対話のいずれも、協調効果と関連付け可能であることで、複数の参加者は協調してアルバムを観賞しかつ対話することができる。
【００７５】
協調体験のさらなる例は、シングルまたはマルチプレーヤゲームをプレイすることに関与する。図１Ｉは、ゲームの現在の状態を表示するためのゲームパネル１５６を含むマルチプレーヤゲームインターフェース１５４の一例を示す。ゲームの現在のプレーヤは、アバター１５８、１６０によって識別可能であり、コア１６２は表示されてよい。現在のプレーヤは、ゲームを観察することを望む任意の他のユーザと同様に、ゲームインターフェース１５４を観賞することができる。
【００７６】
この例では、協調効果は、スコアを記録する（例えば、スコアがローカルデバイスにおいて変化する時、かつどの程度変化するかを指示するデータメッセージを送信する）、ゲームパネル１５６におけるゲームの状態を同期させる、またはあるユーザから次のユーザに順番を飛ばすために提供されてよい。順番を飛ばすことは、図１Ｉに示されるビリヤードゲームにおいてショットを打つ時など、１プレーヤが、「最後の順番」要素を選択するまたは順番を最後にする行動を取る時、手動で取り扱われてよい。代替的にはまたはさらに、順番を飛ばすことは、（現在のプレーヤの順番と関連付けられたタイマが時間切れになる時など）あらかじめ定められた条件下で自動的に生じる受動アクティビティであってよい。
【００７７】
協調効果の別の例は、現在のプレーヤの中で「リーダ」デバイスを選択するための協調効果である。いくつかのゲームでは、データは、それぞれのユーザのアプリケーションに提供された後、ゲーム世界を構築し、かつユーザがゲーム世界と対話できるようにする。ローカルデバイスは、ゲーム世界の状態（例えば、バスケットボールが適切な軌道で送られて、ひいては最後にリングに入ったかどうか、ロケット発射装置からのロケットが特定の場所で接触したかどうかなど）を判断するために計算を行ってよい。場合によっては、異なるプレーヤのデバイスは、ゲーム世界の状態について異なる結論に達する場合があり、デバイスのうちの１つは、現在のゲーム状態のアービターであるように選択されなければならない。指導者選出を可能にする協調効果が提供されることによって、このプロセスは合理化可能である。
【００７８】
図１Ｉの例では、ゲームは限定数のプレーヤ（例えば、この場合二人）を可能にさせてよい。複数の人達は、一緒にプレイすることを希望してアプリケーションインターフェース１５４と対話してよい。それ故に、プレイするためのプレーヤの次のグループを選択するための協調効果が提供されてよい。これは、例えば、シングルまたはダブルエリミネーションのプレーオフ方式で全ての参加者の中で総当たり式に行われてよく、または、次のプレーヤは、現在のゲームの優勝者とプレイする（例えば、「次の挑戦者！」スタイルのプレイ）ようにランダムにまたはアルゴリズムで選択可能である。
【００７９】
同様の次のプレーヤ選択は、図１Ｊに示されるシングルプレーヤゲームインターフェース１６６などのシングルプレーヤゲームに対しても行われてよい。インターフェース１６６は、プレーヤが互いにテレビ会議する間、プレーヤのうちの１人はゲームをし、他の参加者はゲームビューパネル１７０において視聴できるようにする。インターフェース１６６は、現在のプレーヤを見ることができるプレビューウィンドウ１６８、およびプレイしない参加者を示すサムネイルビュー１７２−１、１７２−２、１７２−３を含む。
【００８０】
シングルプレーヤゲームでは、同様の効果はマルチプレーヤゲームにおけるように提供されてよい（例えば、ゲームをする次のプレーヤを選択すること、共有観賞体験を協調させること、ゲームを開始すること、ゲームを停止すること、ゲームを一時停止すること、ゲームビューパネル１７０の各ビューを同期させることなど）。
【００８１】
上述した協調効果のいずれも、アプリケーション開発者によって実装可能であり、協調アクティビティプロトコルは、プロトコルによって認識された既定のフォーマットではないデータを有するデータメッセージを交換することができる。この場合、メッセージは、各アプリケーションによって解釈可能である一般データを交換してよい。さらなる実施形態では、上述した効果のいずれも、高水準サービスのように協調アクティビティプロトコルによってサポートされてよく、データは、プロトコルによって認識可能であり、かつサービスと関連付けられた既定のフォーマットのものであってよい。
【００８２】
次に、協調効果を適用するためのクライアント／サーバ環境に対する例示の構成について、図２Ａを参照して説明する。
【００８３】
例示のシステム構成およびデータ構造
図２Ａは、協調効果を適用するための例示のシステムを示す。協調効果は、自動的に、手動で、またはこの両方の組み合わせで適用されてよい。
【００８４】
システムは、（例えば）１対１、１対多数、またはグループ通信であってよいビデオ通信を容易にすることができる。代替的にはまたはさらに、システムは、別のタイプの協調アクティビティ（例えば、ゲーム、インタラクティブな観賞体験など）を容易にすることができる。ビデオ会話への協調媒体効果の適用に関する一例について後述するが、本出願がこの例に限定されないことは理解されたい。
【００８５】
開始クライアント２０２−１は、通信中の第１の参加者と関連付けられたデバイスであってよい。開始クライアント２０２−１は、例えば、１人または複数の他の参加者との、ビデオベースの会議通話のためのビデオ通信など、協調アクティビティで参加するための通信アプリケーション４０４−１を実行するモバイルデバイスであってよい（が、本発明はモバイルデバイスによるアプリケーションに限定されない）。開始クライアント２０２−１は、１つまたは複数の非開始クライアント２０２−２、２０２−３、２０４−４などでまたはこれらによって適用される協調効果を開始するデバイスであってよい。
【００８６】
通信アプリケーション２０４−１は、ビデオ通信と関連付けられた情報を、通信を容易にする１つまたは複数のサーバに送信させることができる。例えば、情報は、通信と関連付けられたビデオフレームを含有するビデオデータ２０８、グラフィカルフレームと同期させるための音声情報を含有するオーディオデータ２１２、および制御データ２１６を含んでよい。制御データ２１６は、ビデオデータ２０８およびオーディオデータ２１２と関連付けられた（例えば、これらに同期させた）協調効果を適用するために使用される様々な命令、識別子、メタデータなどを含んでよい。
【００８７】
いくつかの例では、協調効果はアプリケーション２０４−１によって適用されてよい。その他では、アプリケーション２０４−１は、サードパーティが適切なコマンド（例えば、アプリケーションプログラミングインターフェースコマンド）または参照によって協調効果を挿入することができるフレームを定義してよい。
【００８８】
それぞれのタイプのデータは、関連付けられたチャネルで送信されてよい。例えば、通信アプリケーション２０４−１、またはクライアント２０２−１の別のコンポーネントは、通信サーバ２１８との、ビデオチャネル２０６、オーディオチャネル２１０、および制御チャネル２１４を開いてよい。ビデオチャネル２０６は、ビデオフォーマットのビデオデータ２０８のみを伝達してよい。よって、通信サーバ２１８は、ビデオチャネル２０６上で受信されたいずれのデータもビデオフォーマットのデータとして扱ってよく、データを適切に処理することができる。同様に、オーディオチャネル２１０は、オーディオフォーマットのオーディオデータ２１２のみを伝達してよい。
【００８９】
本発明が、ビデオチャネル２０６およびオーディオチャネル２１０上でそれぞれ、ビデオデータ２０８およびオーディオデータ２１２を送信することに限定されないことは理解されたい。例えば、グラフィックデータは、協調アクティビティが写真アルバムの観賞である場合にデータチャネルで共有されてよい。別の例では、ゲームデータは、ゲームの状態についての情報の伝達専用のデータチャネルで共有されてよい。共有聴取体験（例えば、複数のユーザが音楽アルバムまたはコンサートを同時に聞くこと）について、チャネルは、オーディオチャネル２１０を含んでよいが、ビデオチャネル２０６を含まない場合がある。それぞれの場合、制御チャネル４１４は、データチャネルと別個であり異なっているリアルタイムチャネルであってよい。
【００９０】
制御チャネル２１４は、必ずしも既定のフォーマットではない一般データを送信してよい、または指定された制御フォーマットで制御命令を送信してよい。例えば、制御チャネル２１４は、ビデオデータ２０８および／またはオーディオデータ２１２を分析するための命令を伝達してよい、または協調効果を適用するための命令を伝達してよい。制御チャネル２１４は、例えば、ウェブリアルタイム通信（ＷｅｂＲＴＣ）チャネルであってよい。
【００９１】
ビデオチャネル２０６、オーディオチャネル２１０、および制御チャネルは、両方向に情報を伝達することができる。よって、例えば、ビデオチャネル２０６およびオーディオチャネル２１０は、開始クライアント２０２−１上での表示／再生のためのデータ（例えば、１つまたは複数の非開始クライアント２０２−２、２−３、２０２−４のビデオストリームに関するデータ）を伝達可能である。制御チャネル２１４は、通信サーバ２１８からの勧告、１つまたは複数の識別された感情状態、他の命令などを伝達することができる。
【００９２】
通信サーバ２１８は、効果協調ロジック２２０を適用することによって、１つまたは複数の開始クライアント２０２−１と１つまたは複数の非開始クライアント２０２−２、２０２−３、２０２−４との間における協調効果の適用などを協調させるように構成されてよい。通信サーバ２１８はまた、いくらかの利用可能な協調効果に関するデータを含む、協調効果ライブラリ（図示せず）を記憶してよい。協調効果は識別子によって識別可能であり、協調効果ライブラリは、オプションとして、クライアントデバイス２０２においてローカルに記憶された協調効果ライブラリをミラーリングすることができる。代替的にはまたはさらに、通信サーバ２１８に記憶された（または複数の通信サーバ２１８の間で分けられた）ライブラリは、ローカルクライアントデバイス２０２で部分的にキャッシュされてよい。場合によっては、ローカルクライアントデバイスは、協調効果のサムネイルバージョンを含んで、その効果を通信アプリケーション２０４で選択可能にしてよいが、協調効果の実装詳細を含まないことによってクライアントデバイス２０２上での記憶を存続させてよい。協調効果が適用されると、対応するクライアントデバイス２０２は、通信サーバ２１８からの実装詳細を要求することができる。
【００９３】
通信サーバ２１８は、ビデオデータ２０８、オーディオデータ２１２、および任意の適用された協調効果を組み合わせるための視聴覚コンパイルロジック２２４をさらに含んでよい。視聴覚コンパイルロジック２２４は、オーディオデータ２１２をビデオデータ２０８と同期させ、さらに協調効果を、組み合わせたオーディオ／ビデオデータと（またはオーディオデータ２１２もしくはビデオデータ２０８と個々に）同期させるためのロジックを含んでよい。
【００９４】
組み合わせられると、結果として生じた視聴覚データ２３０は、オプションとして、通信サーバ２１８からブロードキャストサーバ２２６に送信されてよい。ブロードキャストサーバ２２６は、ビデオ通信と関連付けられた１つまたは複数の受信側クライアント２０２−２、２０２−３、２０２−４を識別するブロードキャストロジック２２８を含んでよい。ブロードキャストサーバ２２６は、オーディオデータ２１２、ビデオデータ２０８、および適用された協調効果を含む視聴覚データ２３０を、受信側クライアント２０２−２、２０２−３、２０２−４のそれぞれに送信してよい。
【００９５】
場合によっては、視聴覚データ２３０は、全ての受信者２０２−２、２０２−３、２０２−４にブロードキャストしてよいが、協調効果に関連しているメッセージは、対応する制御チャネル２０６上で、この効果を作用させるために協調が必要とされる非開始クライアント２０２−ｉに送信されてよい。例えば、図１Ａにおける例では、協調効果はＪｉｌｌのデバイスによって開始されてよく、（Ｊｉｌｌのビデオと適切に協調させてＪａｃｋのビデオ上に対応するキスアニメーションを適用するために）Ｊａｃｋのデバイスとの協調を必要とする場合がある。ビデオデータは、協調効果が適用されるとブロードキャストサーバ２２６によってブロードキャストされ続けてよいが、デバイスのそれぞれにかつそれぞれから提供される制御データは変化し得る。例えば、Ｊｉｌｌのデバイスは、制御チャネル２１４上で開始命令を送信してよく、この命令は、（視聴覚データ２３０を受信する他のデバイスにではなく）Ｊａｃｋのデバイスに中継されてよい。Ｊａｃｋのデバイスは、受信確認、データなどを、これ自体の対応する制御チャネル２１４（図示せず）上で通信サーバ２１８に送信することができる。
【００９６】
協調効果はＪａｃｋのデバイスとＪｉｌｌのデバイスとの間で協調されるため、それぞれのデバイスは、この効果を、これらの対応するオーディオデータ２１２および／またはビデオデータ２０８に適用可能にするために通信サーバ２１８に対して制御データ２１６を送信／受信してよい（または、これらの効果は、オプションとして、各クライアントデバイスによって協調されるようにローカルに適用されてよい）。結果として生じる修正された視聴覚データ２３０は、ブロードキャストサーバ２２６によって会話のそれぞれの参加者にブロードキャストされてよい。
【００９７】
図２Ｂ〜図２Ｃは、協調効果の適用を協調させるために交換可能であるメッセージの例を示す。
【００９８】
図２Ｂは、非開始クライアントデバイスにおいて協調効果を開始するまたは初期化するために開始クライアントデバイスによって送信可能である開始メッセージ２５０を示す。開始メッセージ２５０は、ＲＴＣチャネル上で通信サーバによって受信されてよい。
【００９９】
開始メッセージ２５０は、協調効果開始メッセージとしてメッセージ２５０を識別するメッセージ２５０のヘッダにおいてフラグ２５２または他の識別子を含んでよい。それ故に、通信サーバ２１８は、メッセージ２５０を受信すると、メッセージ２５０を処理し、かつ１つまたは複数の非開始クライアントが協調効果を開始することを要求するための適切な措置を講じてよい。フラグ２５２は、例えば、開始メッセージ２５０のヘッダデータに含まれてよい。
【０１００】
開始メッセージ２５０は、協調効果タイプ識別子２５４をさらに含んでよい。識別子２５４は、協調効果のタイプを指定してよい（例えば、キス効果、同期効果、アプリケーションコマンド効果などを識別する）。識別子２５４は、通信サーバにおいて記憶される協調効果ライブラリにおける協調効果と関連付けられた識別子に対応し得る（図２Ａに関連した説明を参照）。
【０１０１】
メッセージ２５０は、１つまたは複数の非開始ユーザ識別子２５６をさらに指定してよい。これらの識別子２５６は、タイプ識別子２５４によって識別される協調効果の協調アクティビティにおけるどの参加者が、協調効果を適用するべきなのかを指示してよい。通信サーバは、非開始ユーザ識別子２５６を読み出し、かつ開始メッセージ２５０をＲＴＣチャネル上の適切なデバイスに転送してよい。
【０１０２】
協調効果が開始されると、開始ユーザデバイスおよび非開始ユーザデバイスは、データを交換することによって協調効果の適用を協調させてよい。この目的のために、データメッセージ２６０は、例えば、図２Ｃに示されるように使用されてよい。
【０１０３】
データは、アプリケーションプログラミングインターフェース（ＡＰＩ）コールを介して協調効果のために交換されてよい。例えば、ユーザデバイス上のアプリケーションは、協調効果を生成または修正するためにＡＰＩコールをサポートするアプリケーションレベルプラットフォームと関連付けられ得る。このようなプラットフォームの１つの例は、カルフォルニア州メンロパークのＦａｃｅｂｏｏｋ社によるＡＲ  Ｓｔｕｄｉｏである。
【０１０４】
しかしながら、協調効果を協調させる協調アクティビティプロトコルは、協調効果の実装詳細を理解する必要はない。その効果を、一般データ（すなわち、開始メッセージ２５０およびデータメッセージ２６０のフォーマットを定義する協調アクティビティプロトコルによって事前に定義されるおよび／または認識されるフォーマットではないデータ）を交換するＡＰＩコールを介して協調させることを可能にすることによって、プロトコルは、効果が影響を及ぼすデバイスのみならず、これらそのものの効果、およびこれらの効果をサポートするプラットフォームにとらわれないやり方で適用されてよい。
【０１０５】
それ故に、協調アクティビティプロトコルは、データを互いに交換するために、効果および／または効果を実行するデバイスを可能にする一方、効果をサポートするアプリケーションおよび／またはプラットフォームが、そのデータがどのように解釈されるのかを判断可能にすることによって、様々な効果の協調をサポートする。よって、プロトコルは、新しい効果、プラットフォーム、およびデバイスに容易に拡張可能である。
【０１０６】
協調アクティビティプロトコルは、異なる通信方法をサポートすることができる（および公開することができる）。１つの例では、プロトコルは、高信頼通信モードおよび信頼できない通信モードをサポートしてよい。データメッセージ２６０における信頼性フラグ２６２は、アプリケーションが、メッセージ２６０が高信頼モードまたは低信頼モードで送信されるべきかどうかを指定することを可能にする。
【０１０７】
高信頼モードで送信される時、協調アクティビティプロトコルは、データメッセージ２６０がターゲットデバイスによって受信されることを保証することができる。例えば、通信サーバは、データメッセージ２６０を転送すると、受信側デバイスが受信確認を送るのを待機することができる。既定の時間に受信されるこのような受信確認がない場合、サーバは、受信が確認されるまで（または、送信が失敗したことを送信者が通知可能になる既定の試行数または既定の経過時間まで）データメッセージ２６０を再送信してよい。高信頼モードは、協調アクティビティの状態（例えば、ビデオ開始／停止／一時停止／再生／同期コマンド、ゲームでの順番の交渉、順番の譲歩、スコア記録など）に影響するコマンドおよび重要データにとって有用であり得る。メッセージは、メッセージの複製コピーが受信される場合、メッセージデータが複数回処理されないことを確実にするための識別子と共に送信されてよい。高信頼通信モードの一例は、ユーザデータグラムプロトコル（ＵＤＰ）によって実施されるが、他の適した例が存在する。
【０１０８】
低信頼モードで送信される時、協調アクティビティプロトコルは、データメッセージ２６０に対する配信保証を提供しない場合がある。通信サーバは、この意図される受信者にメッセージ２６０を一度送ることができ、メッセージの受信の確認を必要としない場合がある。低信頼モードは、例えば、１つまたはいくつかのデータポイントが失われても必ずしも協調効果の性能を低下させない場合があるデータのストリームにとって、有用であり得る。例えば、図１Ａに関して後述される例では、Ｊｉｌｌの口の場所は、キス効果の協調を可能にするために規則的な間隔で送信されてよい。しかしながら、これらのデータポイントの１つまたはいくつかが失われても致命的ではない場合があり、システムは、受信されるデータポイント間を補間することができる。これらのデータポイントを低信頼モードで送信可能にすることによって、効果は、開始側および非開始側において処理リソースを節約することができ、（メッセージが再送信される必要がなく、受信確認が送られる必要がなくなるため）ネットワークリソースをさらに節約することができる。
【０１０９】
いくつかの実施形態では、開始メッセージ２５０は、高信頼モードで常に送信されるため、効果を保証されるやり方で開始可能にする。他の実施形態では、プロトコルは、開始メッセージ２５０が信頼性フラグ２６２を提供できるようにしてよいため、場合によって、開始メッセージ２５０は低信頼モードで送信されることが可能になる。これは、例えば、効果そのものを適用するアプリケーションが（例えば、開始側および非開始側におけるアプリケーションの間で直接通信することによって）配信を保証する時、使用可能である。
【０１１０】
データメッセージ２６０は、協調効果をサポートするプラットフォームおよび／またはアプリケーションによって認識可能なＡＰＩコール２６４を含んでよい。ＡＰＩコール２６４は、メッセージ２６０が適用する協調効果を識別するオブジェクトまたは方法名２６６を含んでよい。協調効果が開始メッセージ２５０に応答して開始される時、プラットフォームはオブジェクト名または識別子をこの効果に割り当ててよい。名称または識別子は、いくつかある可能性の中でも特に、開始メッセージ２５０の一部として指定されてよい、開始メッセージ２５０と別個に開始デバイスによって指定されてよい、または、開始メッセージ２５０に応答して非開始デバイスによって割り当てされかつ開始メッセージ２５０の受信確認の一部として返されてよい。この名称または識別子は、メッセージ２６０が適切な効果に適用されることを確実にするためにＡＰＩコール２６４において使用されてよい。
【０１１１】
場合によっては、ＡＰＩコール２６４は方法名を指定してよい。方法名は、協調効果がどれくらい適用されるまたは修正されるかを指示することができる。例えば、ＡＰＩコール２６４は、共有ビデオ観賞体験の「停止」方法に対するコールであってよい。停止方法を適用することによって、ビデオの再生を、開始デバイスおよび非開始デバイス上で停止させることができる。
【０１１２】
いくつかの実施形態では、協調効果の適用は、方法名とは別個にまたはこれに加えてデータを必要とする場合がある。それ故に、ＡＰＩコール２６４は、オプションとして、協調効果によって使用可能なデータ２６８（例えば、協調、同期データなど）を指定することができる。
【０１１３】
例えば、図１Ａからの例では、キス効果は、画面のどの側がＪｉｌｌの口および／またはテレビ会議中のユーザインターフェースの現在のレイアウトに最も近いか（例えば、ＪａｃｋのビデオフレームがＪｉｌｌの左、右、上、または下に現れているかどうか）に応じて、Ｊｉｌｌの画面から左、右、上、または下に飛ぶように見える場合がある。協調効果は、Ｊｉｌｌのビデオ上の所定の場所から消えて、Ｊａｃｋのビデオ上の対応する近い場所に再び現れる。よって、データ２６８は、顔認識ロジックによって識別されるＪｉｌｌの口の場所を含むことができることで、キスアニメーションがＪａｃｋのビデオ上に現れる時、Ｊｉｌｌのビデオにおいて消えた場所に可能な限り近くの箇所から生じるように見える。
【０１１４】
別の例では、キスアニメーションのパスは、Ｊｉｌｌの口の場所およびＪａｃｋの頬の場所両方に左右され得、テレビ会議しているユーザインターフェースにおいて観賞されるこれらの場所の間の最短のパスを取るように見える。よって、Ｊｉｌｌのデバイスは、Ｊｉｌｌの口の場所を識別するデータ２６８を送信することができ、Ｊａｃｋのデバイスは、Ｊａｃｋの頬の場所を識別するデータ２６８を送信することができる。キスアニメーションのパスは、ＪａｃｋおよびＪｉｌｌの各々のテレビ会議アプリケーションによって独立して判断されてよい、または中間通信サーバによって判断されてよい。
【０１１５】
データ２６８は、効果が、Ｊｉｌｌのビデオから消えることおよびＪａｃｋのビデオ上に現れることが同時に生じることを可能にするタイミング情報をさらに含んでよい。
【０１１６】
他の例では、データ２６８は、同期の目的でのタイミングデータ、シングルまたはマルチプレーヤゲームのゲーム状態に関する情報、アプリケーション特有のコマンド、または協調効果を適用するために使用可能な任意の他のタイプのデータを含んでよい。
【０１１７】
データ２６８は、協調アクティビティプロトコルによってあらかじめ定められない一般フォーマットのものであってよい。代替的には、協調アクティビティプロトコルは、異なるプロバイダからの協調効果によって一般的に使用されるいくつかの高水準サービス（例えば、ゲームでの順番の交渉、指導者選出など）を直接サポート可能である。この場合、データ２６８は、適用される特定のサービスと関連付けられた既定のフォーマットでフォーマットされてよい。サーバまたは受信側クライアントが、データ２６８が特定のサービスと関連付けられた既定のフォーマットのものであることを識別する時、システムは、サービスを起動する一方、サービスの機能性をその効果に与えるようにデータ２６８をサービスに指定してよい。
【０１１８】
場合によっては、データ２６８は、メッセージ２６０において明白に提供されてよく、データは、受信側クライアントデバイスに押されてよい。代替策として、フィールド２６８は、データが記憶される場所を指定してよく、受信側クライアントデバイスは、メッセージ２６０の受信時に（または、必要に応じてなど、その後に）その場所からデータを引き出すことができる。
【０１１９】
データフローおよび例示の方法
図３Ａ〜図３Ｃは、様々な効果適用シナリオにおいて、図２Ａに示されるものなど、様々なデバイスの間の情報交換を示す例示のデータフロー図を示す。
【０１２０】
図３Ａに示されるように、開始クライアントデバイス２０２−１は、非開始クライアントデバイス２０２−２によって協調アクティビティを初期化または開始するための命令３０２を送信してよい。命令３０２は、図２Ｂに示されるものなど、開始メッセージ２５０の形式のものであってよい。命令３０２は、協調効果が適用されるべきであると判断することに応答して開始クライアントデバイス２０２−１のアプリケーションによって生成されてよい。この判断は、アプリケーションが、ある特定の条件が適用されることなどを検出する時の協調効果の自動適用に基づいて、（例えば、協調効果を選択しかつこれを適用するようにアプリケーションに命令する）インターフェースにおけるユーザによる協調効果の手動適用から生じ得る。
【０１２１】
命令３０２を受信すると、通信サーバは、（例えば、開始メッセージ２５０におけるＵＩＤフィールド２５６に基づいて）命令３０２が向けられる１つまたは複数の非開始ユーザデバイスを識別してよく、この命令を識別されたデバイスに転送してよい。
【０１２２】
受信時に、非開始クライアントデバイス２０２−２は、（例えば、ローカルデバイスが、協調効果に対して最新であるキャッシュされたロジックを有するかどうかを判断することによって）協調効果を適用することが可能であるかどうかを判断するようにチェックしてよい。オプションとして、非開始クライアントデバイスは、デバイスのユーザが、協調効果の適用を承認または取り消すことを可能にするプロンプトを表示してよい。
【０１２３】
効果が適用され得ることを非開始クライアントデバイス２０２−２が判断することを想定して、非開始クライアントデバイス２０２−２は、確認３０４を通信サーバ２１８に送信し返してよい。通信サーバ２１８は、この確認を、命令３０２を最初に送った開始クライアントデバイス２０２−１に中継してよい。
【０１２４】
複数の非開始クライアントデバイスが識別される場合、通信サーバは、非開始クライアントデバイスの全てが協調効果を開始する準備ができていることを確認するまで、確認３０４を開始クライアントデバイス２０２−１に送信しないようにしてよい。通信サーバ２１８は、オプションとして、協調効果に対するパーティの全てが準備ができてチェックインした時に非開始クライアントデバイスに信号送信してよい。
【０１２５】
非開始クライアントデバイス２０２−２は、命令３０２を受信するとすぐに協調効果を、インスタンス化、初期化、または開始してよい。代替的には、それぞれの非開始クライアントデバイス２０２−２は、協調効果を、インスタンス化、初期化、または開始する意向を信号送信してよいが、全ての影響された非開始クライアントデバイスが準備ができてチェックインするまでこのように行うのを待機してよい。いくつかの実施形態では、協調効果は、いくつかある可能性の中でも特に、ある既定のまたはユーザ指定可能な時間で遅延させてよく、トリガ条件が発生すると適用されてよく、または、後続のメッセージ（第１のＡＰＩコール３０６など）が受信される時に適用されてよい。
【０１２６】
開始クライアントデバイス２０２−１が確認３０４を受信すると、協調効果は適用される準備ができている。開始クライアントデバイス２０２−１および非開始クライアントデバイス２０２−２は、（例えば、通信サーバ２１８を介して交換されるデータメッセージ２６０によって）ＡＰＩコール３０６、３１０を通してデータを交換してよい。ＡＰＩコール３０６、３１０が高信頼モードで送信される場合、ＡＰＩコール３０６、３１０を受信するデバイスは、受信確認３０８と共にコールに応答してよい。サーバ２１８は、受信確認３０８を使用して、ＡＰＩコール３０６、３０８を再送信するかどうかを判断してよい。オプションとして、受信確認が受信される時、サーバ２１８は、ＡＰＩコール３０６、３１０を発したデバイスに戻って受信確認を中継してよい。
【０１２７】
図３Ｂは、非開始クライアントデバイスが協調効果を適用しようとしているが、効果を適用するための必要な情報全てを有しているわけではない（例えば、非開始デバイスはローカルにキャッシュされる協調効果を実装するためのロジックのコピーを有していない）一例を示す。この場合、非開始クライアントデバイス２０２−２は、命令３０２を受信することに応答して遅延要求３２０を送信する。サーバ２１８は、オプションとして、遅延が要求されたことを開始クライアント２０２−１に通知してよく、代替的には、サーバ２１８は、協調効果の状況に関して開始クライアント２０２−１に報告を返す前に遅延が解消されるまで、単に待機してよい。
【０１２８】
遅延要求３２０を送信後、非開始クライアント２０２−２は任意の欠けている協調効果データに対する要求３２２を送信してよい。代替的には、要求は、遅延要求３２０の一部であってよい、または遅延要求３２０の存在によってサーバ２１８から推論されてよい。それに応じて、サーバ２１８は、このローカルな協調効果ライブラリからまたは遠隔の場所から、要求３２２において指定された欠けているデータ（または協調効果と関連付けられた全てのデータ）を取り出してよい。サーバ２１８はさらにまた、協調効果データ３２４を非開始クライアント２０２−２に送信してよい。代替的には、サーバ２１８は、データが取り出され得る場所を送信してよく、非開始クライアント２０２−２は、指定された場所からデータを取り出してよい。
【０１２９】
協調効果データが適用された後、非開始クライアント２０２−２は、非開始クライアント２０２−２が協調効果を開始する準備ができている（または既に開始している）という指示３２６を送信してよい。サーバ２１８は、指示３２６を開始クライアント２０２−１に送信してよく、その後、開始クライアント２０２−１および非開始クライアント２０２−２は、上述されるようにデータを交換可能である。
【０１３０】
図３Ｃは、非開始デバイスが協調効果を適用することを拒否する一例を示す。この拒否には、非開始クライアント２０２−２が協調効果を適用する必要があるデータを有さず、データを取得できない場合、非開始デバイス２０２−２のユーザが、協調効果の適用を明白に取り消す、または協調効果が適用されないものとすることを指示する基本設定を指定している場合、非開始クライアント２０２−２上のアプリケーション２０４−２が協調効果の適用をサポートしない場合、非開始クライアントが協調効果を適用するのに利用可能な十分なリソースを有していない場合など、いくつかの理由のためである場合がある。協調効果の適用が非開始クライアント２０２−２で拒否される場合、拒否メッセージ３３０はサーバ２１８に送信されかつ開始クライアント２０２−１に中継されてよい。それに応じて、開始クライアント２０２−１は協調効果の適用を取り消してよい。
【０１３１】
協調効果が複数の非開始クライアントで適用された場合、クライアントの１つまたは複数における効果の拒否は、効果が、全てのクライアントにおいて取り消されるようにしてもよいししなくてもよい。いくつかの実施形態では、ある特定のクライアントは、必須であるおよびその他はオプションであるとしてフラグが立てられてよく、オプションのクライアントにおける取り消しは、効果が残りのクライアントで取り消されるようにしないことになるが、必須のクライアントにおける取り消しはそのように行われることになる。他の実施形態では、効果は効果の適用を拒否しなかった任意のユーザに適用されてよい。さらにその他では、効果は、既定の閾値の数または割合のクライアントが効果の適用を拒否しない限り、適用されてよい。
【０１３２】
次に、画像サーチに基づく協調効果を適用するための例示のロジック４００について、図４Ａ〜図４Ｂに関連して説明する。図４Ａ〜図４Ｂは、示されるロジックブロックを、様々なロジックのグループ（例えば、命令受信ロジック４０４、命令転送ロジック４０８など）に整理する。いくつかの実施形態では、これらのロジックモジュールは、図２Ａに示されるように、通信サーバ２１８上で提供されてよいが、このような構成が必須ではないことは理解されたい。モジュールの全ては、同じデバイスで実装されてよい、または任意の数のデバイスにわたって分散させてよい。モジュールの様々な組み合わせは、所定のデバイス上で用いられてよい、または個々のモジュールのロジックは異なるデバイスによって行われてよい。
【０１３３】
処理はブロック４０２で始めてよく、ここで、システムは協調アクティビティまたは対話に関するデータを受信する。例えば、データは、テレビ会議用のビデオデータ、マルチプレーヤゲーム用のゲームデータ、写真アルバムを表示するためのグラフィックデータ、共有読書体験での使用のための本のコンテンツに関するデータなどを含んでよい。システムは、協調アクティビティと関連付けられた１つまたは複数のクライアントデバイスを識別してよい。
【０１３４】
処理は、さらにまた、命令受信ロジック４０４にハンドオーバされてよい。命令受信ロジック４０４は、ブロック４０６において、ネットワークインターフェースを、命令を受信することに従事させてよい。ネットワークインターフェースは、リアルタイム通信（ＲＴＣ）チャネル上で命令をリッスンしてよい。命令は、図２Ｂと関連して説明されるように、開始メッセージの形式のものであってよい。命令は、開始クライアントが発するものであってよく、システムに、非開始クライアント上でブロック４０２において参照されるアクティビティに関連している協調効果を開始するように命令してよい。
【０１３５】
処理はさらにまた、命令転送ロジック４０８にハンドオーバされてよい。命令転送ロジック４０８は、ブロック４１０において、ネットワークインターフェースが、ＲＴＣチャネルを介して命令において識別される非開始クライアントデバイスに命令を転送することに従事させてよい。
【０１３６】
処理はさらにまた、合意受信ロジック４１２にハンドオーバされてよい。オプションとして、合意受信ロジック４１２は、例えば、クライアントが、命令の受信を確認する、または応答メッセージを送信する（ブロック４１２〜４１４）まで、各クライアントに命令を再送信することによって、非開始クライアントに命令の配信を保証することができる。
【０１３７】
命令に応答して、非開始クライアントは、このＲＴＣチャネル上でいくつかの異なるタイプのメッセージのうちの１つで応答してよい。ブロック４１８において、システムは、応答が、協調効果が非開始クライアントにおいて開始されているまたは開始されることになることの確認であるかどうかを判断してよい。ブロック４１８における判断が「はい」である場合、処理は合意転送ロジック４３６に渡されてよい（図４Ｂ）。
【０１３８】
他方で、ブロック４１８における判断が「いいえ」である場合、処理はブロック４２０に進んでよく、システムは、メッセージが協調効果の拒否であるかどうかを判断してよい。拒否である場合、処理はブロック４２２に進み、ここで、上で概説されるように、システムは、拒否を開始クライアントに戻すように転送してよく、開始クライアントは、協調効果の適用を取り消してよい、または、非開始クライアントの部分集合に協調効果を適用してよい。処理はその後終了してよい。
【０１３９】
ブロック４２０における判断が「いいえ」である場合、システムは、ブロック４２６に進み、メッセージが遅延要求であるかどうかを判断してよい。遅延要求である場合、システムは、（オプションとして）ブロック４２８において、開始クライアントデバイスに遅延要求の通知を転送してよい。遅延要求または後続のメッセージが協調効果に関するデータを要求する場合（ブロック４３０）、ブロック４３２において、システムは、関連データをローカルレポジトリから取り出してよい、またはデータが保持される遠隔の場所を識別してよい。システムは、データおよび／または場所情報をＲＴＣチャネル上の要求しているデバイスに転送してよい。
【０１４０】
ブロック４３４において、システムは、遅延要求の確認または拒否を受信してよい。メッセージが拒否される（例えば、非開始クライアントが、ブロック４３２においてデータを受信し、かつ協調効果を実行するための必要なリソースまたはアプリケーションの十分に最新のバージョンを有さないと判断した）場合、処理はブロック４２２に戻ってよく、システムは上述されるように拒否を処理してよい。メッセージが、効果が開始されているまたは開始されることになるとの確認である場合、処理は、合意転送ロジック４３６に渡されてよい（図４Ｂ）。
【０１４１】
ブロック４２６〜４３４は、遅延ロジック４２４を共に構成してよい。
【０１４２】
図４Ｂに戻ると、合意転送ロジック４３６は、ブロック４３８において、非開始クライアントが、協調効果を開始しているまたは開始しようとしているとの確認を送信するように動作可能であってよい。確認は、ＲＴＣチャネル上のネットワークインターフェースによって送信されてよい。
【０１４３】
協調効果が開始クライアントデバイスおよび非開始クライアントデバイス両方で開始された後、デバイスは、協調効果に関連している情報を交換してよい。それ故に、データ受信ロジック４３０は、ブロック４３２において、データと関連付けられるＡＰＩコールを含有するメッセージを受信してよい。メッセージは、例えば、図２Ｃに示されるものなどのデータメッセージであってよい。メッセージは、送り側デバイスと関連付けられたＲＴＣチャネル上のネットワークインターフェースによって受信されてよい。送り側デバイスは、開始クライアントであってよい、または非開始クライアントであってよい。処理はさらにまた、データ転送ロジック４３４に渡されてよい。
【０１４４】
ブロック４３６において、データ転送ロジック４３４は、ブロック４３２で受信されるメッセージが協調プロトコルと関連付けられた高水準のあらかじめ定義されたサービス（すなわち、効果協調ロジック２２０を定義するプロトコルおよび／またはシステムにおいて交換されるメッセージのフォーマット）を起動するかどうか判断してよい。高水準サービスは、複数の異なる効果によって求められる場合があり、ひいては、協調アクティビティプロトコルによって標準的なやり方で（典型的には通信サーバ２１８上で）実施される一般的な機能性を含む。転送ロジック４３４は、例えば、ＡＰＩコールがサービスに関連付けられるかどうか、またはメッセージがサービスと関連付けられたあらかじめ定義されたフォーマットのデータを含むかどうかを判断するために、ＡＰＩコールを含むメッセージを分析してよい。
【０１４５】
データ転送ロジック４３４が、メッセージが高水準サービスを起動することを判断する場合、ブロック４３８において、システムは、オプションとして、サービスと関連付けられたローカルアクションを行ってよい。例えば、高水準サービスがどのクライアントデバイスがマルチプレーヤゲームで次の順番を取ることになるか、またはどのデバイスが、シングルプレーヤゲームにおいて次回プレイするのかを交渉することに関与する場合、システムはプレーヤをローカルに選択してよい。サービスがスコア記録に関与する場合、システムは、（例えば、ブロック４０２において受信されたアクティビティデータに基づいて）ローカルに記憶されるゲームの状態を調べ、かつスコアを更新してよい。高水準サービスの他の例には、（能動的には、ユーザによる高速アクションを通して、または受動的には、条件の発生によって）順番を譲歩すること、指導者選出を行うこと（例えば、どのクライアントのゲーム状態が異なるデバイス上のゲーム状態の間の矛盾の場合制御するのかを判断すること）などが挙げられる。
【０１４６】
場合によって、システムは、（例えば、システムが、協調アクティビティの状態についての全ての必要な情報を有しているわけではない時）高水準サービスに関連している全てのアクションを行うことができない場合がある。この場合、システムは、受信側クライアントデバイス上で実装される高水準サービスとしてメッセージにフラグを立ててよく、関係しているクライアントデバイスから追加の情報を要求してよく、および／またはサービスを実行するために受信側クライアントデバイス上で行う命令を生成してよい。
【０１４７】
ブロック４４０において、システムは、ＡＰＩコール、および／またはブロック４３２において受信されたメッセージの受信者へのサービスに関連している命令を転送してよい。
【０１４８】
ブロック４４２において、システムは、メッセージが、（ブロック４３２において受信されるデータメッセージにおけるフラグによって指定されるように）高信頼モードまたは低信頼モードで送られるかどうかを判断してよい。モードが低信頼モードである場合、システムはブロック４３２に戻り、かつ新しいデータメッセージを待つことができる。
【０１４９】
モードが高信頼モードである場合、システムは、ブロック４４４〜４５０において、既定の時間待機した後、メッセージの受信確認が受信されたかどうかを判断してよい。該受信確認が受信された場合、システムは、オプションとして、受信確認を送り側クライアントに転送してよい（ブロック４４８）。該受信確認が受信されない場合、システムは、ブロック４４０で送信された元の情報を再送信後（ブロック４５０）、ブロック４４４に戻って、別の既定の時間待機することができる。ブロック４４４〜４５０におけるループが既定の時間または既定の反復回数を超えて繰り返される場合、システムは、送信が失敗したと判断してよく、送り側クライアントデバイスにメッセージ送信の失敗を通知してよい。
【０１５０】
オプションとして、データ送信が失敗の実行中の協調効果は、シャットダウンされ得る。同様に、システムは、協調効果が終了している（あるいは、協調効果が実行中に失敗する場合のように、デバイス上で終わっている）ことを指示するメッセージを開始クライアントデバイスまたは非開始クライアントデバイスから受信してよい。これらの場合、システムは、協調効果を実行している他のクライアントに、この効果が終わっていることを通知することなど、シャッドダウンおよびクリーンアップ手順を行ってよい。
【０１５１】
通信システムの概要
これらの例は、クライアントデバイスでローカルに、または（例えば、リモートサーバで）遠隔で提供される通信システムによって実装されてよい。図５Ａ〜図５Ｃは、通信システムの様々な例を示し、以下により詳細に論じられる。
【０１５２】
図５Ａは、上述される機能性が通信サーバに統合される例示の集中型通信システム５００を示す。中央集中システム５００は、全体が単一の中央集中サーバデバイス５２６内にあるなど、単一のコンピューティングエンティティ内でメッセージングまたは通信サービスの構造および／または動作の一部または全てを実装することができる。
【０１５３】
通信システム５００は、１つまたは複数のコンポーネントを含むソフトウェアアプリケーションを有するコンピュータ実装システムを含み得る。図５Ａに示される通信システム５００は、特定のトポロジにおいて限定された数の要素を有するが、通信システム５００は、代替トポロジにおいてはより多くのまたはより少ない要素を含み得る。
【０１５４】
通信サービス５００は、概して、メッセージを、受信、記憶、および伝達するように構成され得る。クライアントデバイス５１０上で実行などしてよいクライアント５２０がオフラインであり、かつクライアントが利用可能である際にメッセージ／通信を配信する間に、通信サービス５００はメッセージまたはビデオ通信を記憶してよい。代替的にはまたはさらに、クライアント５２０はソーシャルネットワーキング機能性を含んでよい。
【０１５５】
クライアントデバイス５１０は、受信ユーザ、ユーザアカウント、または受信側クライアントデバイス５１０に対して決定している他の識別子にアドレス指定されるメッセージを送信してよい。例示的な実施形態において、クライアントデバイス５１０の各々およびそれらのそれぞれの通信クライアント５２０は、通信サービス５００の特定のユーザと関連付けられる。いくつかの実施形態において、クライアントデバイス５１０は、スマートフォンなどのセルラデバイスであってもよく、クライアントデバイス５１０の各々と関連付けられた電話番号に基づいて通信サービス５００のものと識別され得る。いくつかの実施形態において、各通信クライアントは、通信サービス５００に登録されたユーザアカウントと関連付けられてもよい。一般に、各通信クライアントは、メッセージの受信のための様々な技術により対処され得る。いくつかの実施形態においては、クライアントデバイス５１０はセルラデバイスであり得、他の実施形態においては、クライアントデバイス５１０のうちの１つまたは複数は、パーソナルコンピュータ、タブレットデバイス、任意の他の形態のコンピューティングデバイスであり得る。
【０１５６】
クライアント５１０は、１つまたは複数の入力デバイス５１２および１つまたは複数の出力デバイス５１８を含み得る。入力デバイス５１２は、例えば、マイクロフォン、キーボード、カメラ、電子ペン、タッチスクリーン、ならびに、メッセージデータ、要求、コマンド、ユーザインターフェース対話、選択、および他のタイプの入力を含む、入力を受信するための他のデバイスを含み得る。出力デバイス５１８は、スピーカ、モニタまたはタッチスクリーンなどのディスプレイデバイス、および通信システム５００にインターフェースを提示するための他のデバイスを含み得る。
【０１５７】
クライアント５１０は、ハードドライブ、ソリッドステートドライブ、フラッシュストレージ、リードオンリメモリ、またはランダムアクセスメモリのうちの１つまたはそれらの組み合わせなど、非一時的コンピュータ可読記憶媒体であり得るメモリ５１９を含み得る。メモリ５１９は、入力５１４の表現、および／または出力５１６の表現、ならびに１つまたは複数のアプリケーションであり得る。例えば、メモリ５１９は、ユーザがソーシャルネットワーキングサービスと対話することを可能にする通信クライアント５２０および／またはソーシャルネットワーキングクライアントを記憶することができる。
【０１５８】
入力５１４は、入力デバイス２１２がキーボードである場合など、テキストであってもよい。代替的に、入力５１４は、入力デバイス５１２がマイクロフォンまたはカメラである場合など、オーディオまたはビデオ記録であってもよい。したがって、入力５１４は、オーディオ記録を、通信システム５００によって処理可能であるテキストへ変換するために、自動音声認識（ＡＳＲ）ロジックの対象となり得る。ＡＳＲロジックは、クライアントデバイス５１０に位置し得る（オーディオ記録がクライアント５１０によってローカルで処理され、対応するテキストが通信サーバ５２６へ伝送されるように）か、または通信サーバ５２６に遠隔で位置し得る（この場合、オーディオ記録は通信サーバ８２６に伝送され得、通信サーバ５２６がオーディオをテキストへと処理し得る）。他の組み合わせもまた可能であり、例えば、入力デバイス５１２がタッチパッドまたは電子ペンである場合、入力５１４は、手書きの形態であり得、これは、入力５１２を処理可能なテキストに変換するために、手書きまたは光学文字認識分析ロジックの対象になり得る。
【０１５９】
クライアント５１０は、インターネットなどのネットワーク５２４と通信するためのネットワークインターフェース５２２を備え得る。ネットワークインターフェース５２２は、ネットワーク５２４と互換性のある形式で、および／またはネットワーク５２４と互換性のあるプロトコルを使用して、入力５１４を伝送することができ、ネットワーク５２４から対応する出力５１６を受信することができる。
【０１６０】
ネットワークインターフェース５２２は、ネットワーク５２４を介して通信サーバ５２６に通信することができる。通信サーバ５２６は、クライアント間の通信を受信、記憶、および転送するように動作可能であり得る。
【０１６１】
通信サーバ５２６は、ネットワークインターフェース５２２、通信基本設定５２８、および通信ロジック５３０を含んでよい。通信基本設定５２８は、１つまたは複数のユーザおよび／またはメッセージスレッドに対する１つまたは複数のプライバシ設定または他の基本設定を含んでよい。さらに、通信基本設定５２８は、本明細書に説明されるロジックに対するデフォルトの設定を含む１つまたは複数の設定を含んでよい。
【０１６２】
通信ロジック５３０は、本発明の上述される特徴のいずれかまたは全てを実装するためのロジックを含んでよい。代替的にはまたはさらに、特徴の一部または全ては、通信クライアント５２０などのアプリケーションに組み込まれるなどによって、クライアント５１０−ｉにおいて実装されてよい。
【０１６３】
クライアント５１０のネットワークインターフェース５２２および／または通信サーバ５２６はまた、ネットワーク５２４を通してアプリサーバ５４０と通信するために使用されてよい。アプリサーバは、（いくつかあるエンティティの中でも特に）クライアント５１０−ｉおよび／または通信サーバ５２６によるダウンロードに利用可能なソフトウェアを表す、アプリライブラリ５４４におけるソフトウェアまたはアプリケーションを記憶してよい。アプリライブラリ５４４におけるアプリは、本明細書に説明される実施形態を完全にまたは部分的に実装してよい。例示の実施形態を組み込むソフトウェアをダウンロードするための要求を受信すると、アプリロジック５４２は、アプリライブラリ５４４における対応するアプリを識別可能であり、かつ（例えば、ネットワークインターフェースを介して）ソフトウェアを要求したエンティティにアプリを提供してよい。
【０１６４】
クライアント５１０のネットワークインターフェース５２２および／または通信サーバ５２６はまた、ネットワーク５２４を通してソーシャルネットワーキングサーバ５３６と通信するために使用されてよい。ソーシャルネットワーキングサーバ５３６は、ソーシャルネットワーク内のつながりを規定するソーシャルネットワーキンググラフ５３８を含み得るか、またはそれと対話し得る。さらに、通信サーバ５２６は、つながり情報、通信履歴、イベント詳細などをソーシャルネットワークから取得することなど、様々な目的のためにソーシャルネットワーキングサーバ５３６に接続し得る。
【０１６５】
クライアント５１０のユーザは、ソーシャルネットワーキングサーバ５３６と、またはそれを介して対話もしくは通信する、個人（人間のユーザ）、エンティティ（例えば、企業、ビジネス、またはサードパーティアプリケーション）、またはグループ（例えば、個人またはエンティティの）であってもよい。ソーシャルネットワーキングサーバ５３６は、オンラインソーシャルネットワークをホストするネットワークアドレス可能コンピューティングシステムであってもよい。ソーシャルネットワーキングサーバ５３６は、例えば、ユーザプロフィールデータ、概念プロフィールデータ、ソーシャルグラフ情報、またはオンラインソーシャルネットワークに関する他の好適なデータなど、ソーシャルネットワーキングデータを生成、記憶、受信、および送信することができる。ソーシャルネットワーキングサーバ５３６は、ネットワーク環境の他のコンポーネントによって、直接的に、またはネットワーク５２４を介するかのいずれかでアクセスされ得る。
【０１６６】
ソーシャルネットワーキングサーバ５３６は、例えば適切なプライバシ設定を設定することによって、ユーザが、自らのアクションをソーシャルネットワーキングサーバ５３６によりログさせること、または他のシステム（例えば、通信サーバ５２６などのサードパーティシステム）と共有させることについてオプトインまたはオプトアウトすることを可能にする認証サーバ（または他の好適なコンポーネント）を含み得る。ユーザのプライバシ設定は、ユーザと関連付けられたどんな情報がログされ得るか、ユーザと関連付けられた情報がどのようにログされ得るか、ユーザと関連付けられた情報がいつログされ得るか、誰がユーザと関連付けられた情報をログし得るか、ユーザと関連付けられた情報が誰と共有され得るか、およびどんな目的でユーザと関連付けられた情報がログまたは共有され得るかを決定することができる。認証サーバは、ブロッキング、データハッシュ化、匿名化、または必要に応じて他の好適な技術により、ソーシャルネットワーキングサーバ５３６のユーザの１つまたは複数のプライバシ設定を強化するために使用され得る。
【０１６７】
より具体的には、オンラインソーシャルネットワークのコンテンツオブジェクトのうちの１つまたは複数が、プライバシ設定と関連付けられてもよい。オブジェクトのためのプライバシ設定（または「アクセス設定」）は、例えば、オブジェクトと共同して、認証サーバ上のインデックス内など任意の好適な様式で、別の好適な様式で、またはそれらの任意の組み合わせで記憶され得る。オブジェクトのプライバシ設定は、オブジェクト（またはオブジェクトと関連付けられた特定の情報）がオンラインソーシャルネットワークを使用してどのようにアクセス（例えば、閲覧または共有）され得るかを指定することができる。オブジェクトのためのプライバシ設定が、特定のユーザがオブジェクトにアクセスすることを可能にする場合、オブジェクトは、ユーザに対して「可視」であると説明され得る。限定ではないが、例として、オンラインソーシャルネットワークのユーザは、ユーザプロフィールページ上の職歴情報にアクセスすることができるユーザのセットを識別する、ユーザプロフィールページのためのプライバシ設定を指定することができ、このようにして他のユーザをその情報にアクセスすることから除外する。特定の実施形態において、プライバシ設定は、オブジェクトと関連付けられた特定の情報にアクセスすることが許可されるべきではないユーザの「ブロックリスト」を指定することができる。言い換えると、ブロックリストは、オブジェクトが可視ではない１つまたは複数のユーザまたはエンティティを指定することができる。限定ではないが、例として、ユーザは、ユーザと関連付けられたフォトアルバムにアクセスすることができないユーザのセットを指定することができ、このようにしてそれらのユーザをフォトアルバムにアクセスすることから除外する（同時に、場合により、ユーザのセット内にない特定のユーザがフォトアルバムにアクセスすることを可能にする）。
【０１６８】
特定の実施形態において、プライバシ設定は、ソーシャルネットワーキンググラフ５３８の特定の要素を関連付けられてもよい。ノードまたはエッジなどのソーシャルグラフ要素のプライバシ設定は、どのようにしてソーシャルグラフ要素、ソーシャルグラフ要素と関連付けられた情報、またはソーシャルグラフ要素と関連付けられたコンテンツオブジェクトがオンラインソーシャルネットワークを使用してアクセスされ得るかを指定することができる。限定ではないが、例として、特定の写真に対応する特定の概念ノードは、写真が、写真内でタグ付けされたユーザおよびそのユーザの友達によってのみアクセスされ得ることを指定するプライバシ設定を有し得る。特定の実施形態において、プライバシ設定は、ユーザが、自分のアクションをソーシャルネットワーキングサーバ５３６によってログさせることまたは他のシステムと共有させることについてオプトインまたはオプトアウトすることを可能にし得る。特定の実施形態において、オブジェクトと関連付けられたプライバシ設定は、許可されたアクセスまたはアクセスの否認の任意の好適な粒度を指定することができる。限定ではないが、例として、アクセスまたはアクセスの否認は、特定のユーザ（例えば、自分のみ、自分のルームメイト、および自分の上司）、特定の隔たりの次数以内のユーザ（例えば、友達、または友達の友達）、ユーザグループ（例えば、ゲーミングクラブ、自分の家族）、ユーザネットワーク（例えば、特定の雇用主の従業員、特定の大学の学生または卒業生）、全てのユーザ（「公開」）、ユーザなし（「非公開」）、サードパーティシステムのユーザ、特定のアプリケーション（例えば、サードパーティアプリケーション、外部ウェブサイト）、他の好適なユーザもしくはエンティティ、またはそれらの任意の組み合わせに対して指定され得る。本開示は、特定のプライバシ設定を特定の様式で使用することについて説明するが、本開示は、任意の好適なプライバシ設定を任意の好適な様式で使用することを企図する。
【０１６９】
ユーザ（または他のエンティティ）からの、データストアに記憶された特定のオブジェクトの要求に応答して、ソーシャルネットワーキングサーバ５３６は、データストアに対するオブジェクトの要求を送信することができる。要求は、要求と関連付けられたユーザを識別することができる。要求されたデータオブジェクトは、認証サーバが、ユーザがオブジェクトと関連付けられたプライバシ設定に基づいてオブジェクトにアクセスする権限を与えられていることを決定する場合に、ユーザ（またはユーザのクライアントシステム５１０）にのみ送信され得る。要求しているユーザがオブジェクトにアクセスする権限を与えられていない場合、認証サーバは、要求されたオブジェクトがデータストアから取得されることを防ぐことができるか、または要求されたオブジェクトがユーザに送信されることを防ぐことができる。検索クエリという文脈においては、オブジェクトは、クエリを行っているユーザがオブジェクトにアクセスする権限を与えられている場合にのみ検索結果として生成され得る。言い換えると、オブジェクトは、クエリを行っているユーザにとって可視である可視性を有する必要がある。オブジェクトがユーザにとって可視ではない可視性を有する場合、オブジェクトは、検索結果から除外され得る。
【０１７０】
いくつかの実施形態において、ターゲティング基準は、様々な目的のためにソーシャルネットワークのユーザを識別するために使用され得る。ユーザを識別して、ターゲティングするために使用されるターゲティング基準は、ソーシャルネットワーキングサーバ５３６上の明白な述べられたユーザ関心、または、ソーシャルネットワーキングサーバ５３６上のノード、オブジェクト、エンティティ、ブランド、もしくはページとのユーザの明白なつながりを含み得る。加えて、または代替として、そのようなターゲティング基準は、暗黙のまたは推測されるユーザ関心またはつながり（ユーザの履歴、デモグラフィック、ソーシャルアクティビティもしくは他のアクティビティ、友達のソーシャルアクティビティもしくは他のアクティビティ、サブスクリプション、またはユーザと似た（例えば、共有する関心、つながり、またはイベントに基づいて）他のユーザの先述のいずれかを分析することを含み得る）を含み得る。特定の実施形態は、プラットフォームおよび「いいね（ｌｉｋｅ）」印象データ；コンテクスト信号（例えば、「コカ・コーラについてのページを、今誰が閲覧しているか、または最近閲覧したのは誰か？」）；軽いつながり（例えば、「チェックイン」）；つながり類似；ファン；抽出されたキーワード；ＥＭＵ広告；推測広告；係数、親密性、または他のソーシャルグラフ情報；友達の友達つながり；ピンニングまたはブースティング；割引；投票；世帯収入、ソーシャルクラスタまたはグループ；画像または他のメディアで検出された製品；ソーシャルグラフまたはオープングラフエッジタイプ；ｇｅｏ予測；プロフィールまたはページの閲覧；ステータスアップデートまたは他のユーザ投稿（自然言語処理またはキーワード抽出を伴い得る分析）；イベント情報；または協調フィルタリングを伴い得る、プラットフォームターゲティングを利用することができる。ユーザを識別しターゲティングすることはまた、必要に応じて、プライバシ設定（ユーザオプトアウトなど）、データハッシュ化、またはデータ匿名化を含意し得る。
【０１７１】
図５Ａに示される集中型実施形態は、新しいシステムとして、または既存のシステムに対するアップグレードとしての展開に適合し得るが、これは、例示の実施形態を実装するためのロジックが通信サーバ５２６に組み込まれるからである。対照的に、図５Ｂは、例示の実施形態を実装するための機能性が、分散され、かつ通信サーバから遠隔でアクセス可能である例示の分散型通信システム５５０を示す。分散通信システム５５０の例としては、クライアント−サーバアーキテクチャ、３層アーキテクチャ、Ｎ層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスター−スレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムが挙げられる。
【０１７２】
図５Ｂに示されるコンポーネントの多くは、図５Ａのものと同一であり、これらの要素の説明は、簡潔にするためにここでは繰り返されない（アプリサーバ５４０は、論述を容易にするために図から省略されるが、この実施形態はまた、アプリサーバ５４０を用いる場合があることは理解されたい）。集中型実施形態と分散型実施形態との間の主な違いは、例示の実施形態を実装するためにロジック５３０をホストする別々の処理サーバ５５２の追加である。処理サーバ５５２は、通信サーバ５２６とは全く異なり得るが、ロジック５３０およびロジック５３４の機能を通信サーバ５２６に提供するために、直接的またはネットワーク５２４を介するかのいずれかで通信サーバ５２６と通信することができる。
【０１７３】
図５Ｂに描写される実施形態は、例えば、既存の通信サーバを置き換えるのが困難であるか、または望ましくないときに、例示的な実施形態が既存の通信システムと一緒に配備されることを可能にするのに特によく適している可能性がある。加えて、いくつかの場合において、通信サーバ５２６は、追加のピボット機能の追加を制限するまたは不可能にする限られたリソース（例えば、処理またはメモリリソース）を有し得る。そのような状況では、本明細書に説明される能力は、依然として、別個の処理サーバ５５２を通じて提供されてもよい。
【０１７４】
なおさらなる実施形態では、ロジック５３２は、例えば、通信クライアント５２０の一部として、クライアント５１０−ｉにおいてローカルに設けられてよい。これらの実施形態では、それぞれのクライアント５１０−ｉは、どのメッセージがどのスレッドに属するのか、およびどのようにディスプレイを更新しかつ通知を発行するのかに関する判断をこれ自体で行う。その結果、異なるクライアント５１０−ｉは、ローカル設定に応じて、同じ会話を異なるように表示可能である（例えば、同じメッセージは異なるスレッドに割り当て可能である、または同様のスレッドは異なるペアレントまたはハイライトを有してよい）。
【０１７５】
図５Ｃは、ソーシャルネットワーキンググラフ５３８の例を例証する。例示的な実施形態において、ソーシャルネットワーキングサービスは、１つまたは複数のソーシャルグラフ５３８を、ソーシャルネットワーキングサービスを介したソーシャルグラフデータ構造として１つまたは複数のデータストアに記憶することができる。
【０１７６】
ソーシャルグラフ５３８は、ユーザノード５５４および概念ノード５５６などの複数のノードを含み得る。ソーシャルグラフ２２８は、さらには、ノードを接続するエッジ５５８を含み得る。ソーシャルグラフ２２８のノードおよびエッジは、データオブジェクトして、例えば、データストア（ソーシャルグラフデータベースなど）に記憶され得る。そのようなデータストアは、ソーシャルグラフ２２８のノードまたはエッジの１つまたは複数の検索可能またはクエリ可能なインデックスを含み得る。
【０１７７】
ソーシャルグラフ５３８には、ソーシャルネットワーキングサーバ２２６、クライアントシステム２１０、サードパーティシステム（例えば、翻訳サーバ２２４）、または適したアプリケーションのための任意の他の認可されたシステムまたはデバイスがアクセスすることができる。
【０１７８】
ユーザノード５５４は、ソーシャルネットワーキングシステムのユーザに対応し得る。ユーザは、ソーシャルネットワーキングシステムと、またはそれを介して対話または通信する、個人（人間のユーザ）、エンティティ（例えば、企業、ビジネス、またはサードパーティアプリケーション）、またはグループ（例えば、個人またはエンティティの）であってもよい。例示的な実施形態において、ユーザがソーシャルネットワーキングシステムにアカウントを登録するとき、ソーシャルネットワーキングシステムは、ユーザに対応するユーザノード５５４を作成し、１つまたは複数のデータストアにユーザノード３０を記憶することができる。本明細書に説明されるユーザおよびユーザノード５５４は、適切な場合、登録ユーザおよび登録ユーザと関連付けられたユーザノード５５４を指し得る。加えて、または代替的に、本明細書に説明されるユーザおよびユーザノード５５４は、適切な場合、ソーシャルネットワーキングシステムに登録していないユーザを指し得る。特定の実施形態において、ユーザノード５５４は、ユーザによって提供される情報、またはソーシャルネットワーキングシステムを含む様々なシステムによって生成される情報と関連付けられてもよい。限定ではないが、例として、ユーザは、自分の名前、プロフィール写真、連絡先情報、誕生日、性別、婚姻ステータス、家族ステータス、職業、学歴、嗜好、興味、または他のデモグラフィック情報を提供することができる。特定の実施形態において、ユーザノード５５４は、ユーザと関連付けられた情報に対応する１つまたは複数のデータオブジェクトと関連付けられてもよい。特定の実施形態において、ユーザノード５５４は、１つまたは複数のウェブページに対応してもよい。ユーザノード５５４は、ソーシャルネットワーキングシステム内のユーザについての固有ユーザ識別子と関連付けられてもよい。
【０１７９】
特定の実施形態において、概念ノード５５６は、概念に対応してもよい。限定ではないが、例として、概念は、場所（例えば、映画館、レストラン、ランドマーク、または都市など）、ウェブサイト（例えば、ソーシャルネットワークサービスと関連付けられたウェブサイト、もしくはウェブアプリケーションサーバと関連付けられたサードパーティウェブサイトなど）、エンティティ（例えば、人、ビジネス、グループ、スポーツチーム、または有名人など）、ソーシャルネットワーキングシステム内もしくはウェブアプリケーションサーバなどの外部サーバ上に位置し得るリソース（例えば、オーディオファイル、ビデオファイル、デジタルフォト、テキストファイル、構造化文書、またはアプリケーションなど）、物的財産もしくは知的財産（例えば、彫刻、絵画、映画、ゲーム、楽曲、思想、写真、または著作物など）、ゲーム、アクティビティ、思想もしくは理論、別の好適な概念、または２つ以上のそのような概念に対応してもよい。概念ノード５５６は、ユーザによって提供される概念の情報、またはソーシャルネットワーキングシステムを含む様々なシステムによって収集される情報と関連付けられてもよい。限定ではないが、例として、概念の情報は、名称もしくはタイトル、１つまたは複数の画像（例えば、本の表紙の画像）、ロケーション（例えば、住所または地理的なロケーション）、ウェブサイト（ＵＲＬと関連付けられ得る）、連絡先情報（例えば、電話番号または電子メールアドレス）、他の好適な概念情報、またはそのような情報の任意の好適な組み合わせを含み得る。特定の実施形態において、概念ノード５５６は、概念ノード５５６と関連付けられた情報に対応する１つまたは複数のデータオブジェクトと関連付けられてもよい。特定の実施形態において、概念ノード５５６は、１つまたは複数のウェブページに対応してもよい。
【０１８０】
特定の実施形態において、ソーシャルグラフ５３８内のノードは、ウェブページ（「プロフィールページ」と称され得る）を表し得るか、またはウェブページによって表され得る。プロフィールページは、ソーシャルネットワーキングシステムによってホストされ得るか、またはソーシャルネットワーキングシステムにアクセス可能であり得る。プロフィールページはまた、サードパーティサーバと関連付けられたサードパーティウェブサイト上でホストされてもよい。限定ではないが、例として、特定の外部ウェブページに対応するプロフィールページは、特定の外部ウェブページであってもよく、プロフィールページは、特定の概念ノード５５６に対応してもよい。プロフィールページは、他のユーザの全てまたは選択されたサブセットによって閲覧可能であってもよい。限定ではないが、例として、ユーザノード５５４は、対応するユーザが、コンテンツを追加する、発言をする、または別のやり方で自己表現をすることができる対応するユーザプロフィールページを有し得る。ビジネスページ２０５などのビジネスページは、商業エンティティに対するユーザプロファイルページを備えてよい。限定ではないが、別の例として、概念ノード５５６は、特に概念ノード５５６に対応する概念に関して、１人または複数のユーザが、コンテンツを追加する、発言をする、または自己表現をすることができる対応する概念プロフィールページを有し得る。
【０１８１】
特定の実施形態において、概念ノード５５６は、サードパーティウェブページ、またはサードパーティシステムによってホストされるリソースを表してもよい。サードパーティウェブページまたはリソースは、他の要素中でも特に、コンテンツ、選択可能なアイコンもしくは他のアイコン、またはアクションもしくはアクティビティを表す他の対話可能オブジェクト（例えば、ＪａｖａＳｃｒｉｐｔ、ＡＪＡＸ、またはＰＨＰコードで実装され得る）を含み得る。限定ではないが、例として、サードパーティウェブページは、「いいね」、「チェックイン」、「食べる」、「お薦め」、または別の好適なアクションもしくはアクティビティなどの選択可能なアイコンを含み得る。サードパーティウェブページを閲覧するユーザは、アイコンのうちの１つ（例えば、「食べる」）を選択して、クライアントシステムに、ユーザのアクションを示すメッセージをソーシャルネットワーキングシステムへ送信させることによって、アクションを実施することができる。メッセージに応答して、ソーシャルネットワーキングシステムは、ユーザに対応するユーザノード５５４とサードパーティウェブページまたはリソースに対応する概念ノード５５６との間にエッジ（例えば、「食べる」エッジ）を作成し、エッジ５５８を１つまたは複数のデータストアに記憶することができる。
【０１８２】
特定の実施形態において、ソーシャルグラフ５３８内の一対のノードは、１つまたは複数のエッジ５５８によって互いに接続されてもよい。一対のノードを接続するエッジ５５８は、その一対のノード間の関係を表し得る。特定の実施形態において、エッジ５５８は、一対のノード間の関係に対応する１つまたは複数のデータオブジェクトまたは属性を含み得るか、またはこれを表し得る。限定ではないが、例として、第１のユーザは、第２のユーザが第１のユーザの「友達」であることを示し得る。この指示に応答して、ソーシャルネットワーキングシステムは、第２のユーザに「友達申請」を送信することができる。第２のユーザが「友達申請」を承認すると、ソーシャルネットワーキングシステムは、ソーシャルグラフ５３８において第１のユーザのユーザノード５５４を第２のユーザのユーザノード５５４に接続するエッジ５５８を作成し、エッジ５５８をソーシャルグラフ情報として１つまたは複数のデータストアに記憶することができる。図５Ｃの例では、ソーシャルグラフ５３８は、ユーザ「アマンダ」およびユーザ「ドロシー」のユーザノード５５４間の友達関係を示すエッジ５５８を含む。本開示は、特定のユーザノード５５４を接続する特定の属性を有する特定のエッジ５５８を説明または例証するが、本開示は、ユーザノード５５４を接続する任意の好適な属性を有する任意の好適なエッジ５５８を企図する。限定ではないが、例として、エッジ５５８は、友人関係、家族関係、ビジネスまたは雇用関係、ファン関係、フォロワー関係、ビジタ関係、サブスクライバ関係、上司／部下の関係、互恵関係、非互恵関係、別の好適なタイプの関係、または２つ以上のそのような関係を表し得る。さらに、本開示は、全体として、ノードを接続されるものとして説明するが、本開示はまた、ユーザまたは概念を接続されるものとして説明する。本明細書において、ユーザまたは概念が接続されているという言及は、適切な場合、それらのユーザまたは概念に対応するノードが、ソーシャルグラフ５３８内で１つまたは複数のエッジ５５８によって接続されることを指し得る。
【０１８３】
特定の実施形態において、ユーザノード５５４と概念ノード５５６との間のエッジ５５８は、概念ノード５５６と関連付けられた概念に対して、ユーザノード５５４と関連付けられたユーザによって実施される特定のアクションまたはアクティビティを表し得る。限定ではないが、例として、図５Ｃに例証されるように、ユーザは、ある概念について、「いいね」、「出席した」、「再生した」、「聴いた」、「料理した」、「勤務した」、または「見た」とすることができ、それらの各々が、エッジタイプまたはサブタイプに対応し得る。概念ノード５５６に対応する概念プロフィールページは、例えば、選択可能な「チェックイン」アイコン（例えば、クリック可能な「チェックイン」アイコンなど）または選択可能な「お気に入りに追加」アイコンを含み得る。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャルネットワーキングシステムは、それぞれのアクションに対応するユーザのアクションに応答して、「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではないが、別の例として、ユーザ（ユーザ「カーラ」）は、特定のアプリケーション（オンラインミュージックアプリケーションであるＳＰＯＴＩＦＹ）を使用して特定の楽曲（「Ａｃｒｏｓｓ  ｔｈｅ  Ｓｅａ」）を聴き得る。この場合、ソーシャルネットワーキングシステムは、ユーザがその曲を聴いたこと、およびそのアプリケーションを使用したことを示すために、ユーザに対応するユーザノード５５４と楽曲およびアプリケーションに対応する概念ノード５５６との間に「聴いた」エッジ５５８および「使用した」エッジを作成することができる（図５Ｃに例証されるように）。さらに、ソーシャルネットワーキングシステムは、その特定の楽曲がその特定のアプリケーションによって再生されたことを示すために、楽曲およびアプリケーションに対応する概念ノード５５６間に「再生した」エッジ５５８を作成することができる（図５Ｃに例証されるように）。この場合、「再生した」エッジ５５８は、外部アプリケーション（ＳＰＯＴＩＦＹ）によって外部オーディオファイル（楽曲「Ａｃｒｏｓｓ  ｔｈｅ  Ｓｅａ」）に対して実施されたアクションに対応する。本開示は、ユーザノード８５４および概念ノード５５６を接続する特定の属性を有する特定のエッジ８５８を説明するが、本開示は、ユーザノード５５４および概念ノード５５６を接続する任意の好適な属性を有する任意の好適なエッジ、５５８を企図する。さらに、本開示は、単一の関係を表す、ユーザノード５５４と概念ノード５５６との間のエッジを説明するが、本開示は、１つまたは複数の関係を表す、ユーザノード５５４と概念ノード５５６との間のエッジを企図する。限定ではないが、例として、エッジ５５８は、ユーザが、特定の概念において、いいねをすることおよび使用したことがあることの両方を表してもよい。代替的に、別のエッジ５５８は、ユーザノード５５４と概念ノード５５６との間（図５Ｃに例証されるように、ユーザ「エドウィン」のユーザノード５５４と「ＳＰＯＴＩＦＹ」の概念ノード５５６との間）の関係の各タイプ（または多数の単一の関係）を表し得る。
【０１８４】
特定の実施形態において、ソーシャルネットワーキングシステムは、ソーシャルグラフ５３８内にユーザノード５５４と概念ノード５５６との間にエッジ５５８を作成することができる。限定ではないが、例として、概念プロフィールページを閲覧する（例えば、ウェブブラウザ、またはユーザのクライアントシステムによってホストされる特定用途向けアプリケーションを使用することによってなど）ユーザは、「いいね」アイコンをクリックまたは選択することによって、自分が概念ノード５５６によって表される概念を好むことを示すことができ、「いいね」アイコンは、ユーザのクライアントシステムに、概念プロフィールページと関連付けられた概念のユーザによるいいねを示すメッセージをソーシャルネットワーキングシステムへ送信させることができる。このメッセージに応答して、ソーシャルネットワーキングシステムは、ユーザと概念ノード５５６との間の「いいね」エッジ５５８によって例証されるように、ユーザと関連付けられたユーザノード５５４と概念ノード５５６との間にエッジ５５８を作成することができる。特定の実施形態において、ソーシャルネットワーキングシステムは、エッジ５５８を１つまたは複数のデータストアに記憶することができる。特定の実施形態において、エッジ５５８は、特定のユーザアクションに応答して、ソーシャルネットワーキングシステムによって自動的に形成され得る。限定ではないが、例として、第１のユーザが、写真をアップロードする、映画を見る、または楽曲を聴くと、エッジ５５８が、第１のユーザに対応するユーザノード５５４とそれらの概念に対応する概念ノード５５６との間に形成され得る。本開示は、特定のエッジ５５８を特定の様式で形成することについて説明するが、本開示は、任意の好適なエッジ５５８を任意の好適な様式で形成することを企図する。
【０１８５】
ソーシャルグラフ５３８は、複数の製品ノードをさらに含み得る。製品ノードは、特定の企業と関連付けられ得る特定の製品を表し得る。企業は、ＣｔｏＢ（Ｃｏｎｓｕｍｅｒ  ｔｏ  Ｂｕｓｉｎｅｓｓ）サービスに製品カタログを提供し得、したがってＣｔｏＢサービスは、ソーシャルグラフ５３８内の製品内の製品の各々を表し得、各製品が異なる製品ノード内にある。製品ノードは、価格情報、説明的情報、製造者情報、在庫情報、および他の関連情報などの製品に関する情報を含み得る。例えば、レストランのメニュー上の品目の各々は、ソーシャルグラフ５３８内に品目の各々を説明する製品ノードにより表され得る。製品ノードは、エッジによって、製品を提供する企業にリンクされ得る。複数の企業が製品を提供する場合、各企業は、自らの製品提供と関連付けられた異なる製品ノードを有し得るか、または同じ製品ノードに各々リンクし得る。製品ノードは、エッジによって、製品を購入した、評価した、所有する、お薦めした、または閲覧した各ユーザにリンクされ得、このエッジは、関係の性質を説明している（例えば、購入した、評価した、所有する、お薦めした、閲覧した、または他の関係）。製品ノードの各々は、リンクされた小売企業に依って、グラフＩＤおよび関連小売ＩＤと関連付けられてもよい。したがって、企業から入手可能な製品は、ソーシャルグラフ５３８内の企業のユーザノードにリンクされた入手可能な製品ノードを取得することによって、ユーザに通信され得る。製品ノードについての情報は、参照された製品に関する情報をカプセル化する製品オブジェクトとして、ソーシャルネットワーキングシステムによって操作され得る。
【０１８６】
そのようなものとして、ソーシャルグラフ５３８は、ソーシャルネットワーキングシステムの２人以上のユーザの、共有される興味、共有される体験、または他の共有されるもしくは共通の属性を推測するために使用され得る。例えば、ソーシャルグラフ５３８内に表される共通の企業、製品、メディアアイテム、施設、または他のエンティティへのエッジを各々が有する２人以上のユーザは、そのエンティティとの共有される関係を示し得、これは、１人または複数のユーザに対して、メッセージングシステムを含むソーシャルネットワーキングシステムの使用のカスタマイズを提案するために使用され得る。
【０１８７】
上に説明される実施形態は、メッセージングアーキテクチャによって実施され得、次に、その例が、図６を参照して説明される。
【０１８８】
メッセージングアーキテクチャ
図６は、例示的な実施形態との使用に好適なメッセージングサービス６００の様々な機能を実装する複数のサーバの実施形態を例証する。作用および機能の異なる分散が、メッセージングサービス６００の様々な実施形態において使用され得ることを理解されたい。
【０１８９】
メッセージングサービス６００は、ドメイン名フロントエンド６０２を含み得る。ドメイン名フロントエンド６０２は、ドメイン名システム（ＤＮＳ）内のメッセージングサービス６００と関連付けられた１つまたは複数のドメイン名に割り当てられ得る。ドメイン名フロントエンド６０２は、入接続を受信し、様々なメッセージングサービスを提供するサーバへの接続を分散することができる。
【０１９０】
メッセージングサービス６０２は、１つまたは複数のチャットサーバ６０４を含み得る。チャットサーバ６０４は、チャットメッセージなどのユーザツーユーザメッセージング更新を受信および伝送するためのフロントエンドサーバを含み得る。入接続は、作業負荷均衡化に基づいてドメイン名フロントエンド６０２によってチャットサーバ６０４に割り当てられ得る。
【０１９１】
メッセージングサービス６００は、バックエンドサーバ６０８を含み得る。バックエンドサーバ６０８は、フロントエンドチャットサーバ６０４のチャット動作の支援において専門タスクを実施することができる。複数の異なるタイプのバックエンドサーバ６０８が使用されてもよい。異なるバックエンドサーバ６０８に対するタスクのタイプの割り当ては、異なる実施形態においては異なり得ることを理解されたい。いくつかの実施形態において、専用サーバによって提供されるバックエンドサービスのうちのいくつかは、単一のサーバ、または、本明細書に説明される実施形態においては異なるサーバ間で分割される複数のタスクを各々が実施するサーバのセットにおいて組み合わされ得る。同様に、いくつかの実施形態において、本明細書に説明される専用バックエンドサーバのうちのいくつかのタスクは、異なるサーバグループの異なるサーバ間で分割され得る。
【０１９２】
メッセージングサービス６００は、１つまたは複数のオフラインストレージサーバ６１０を備え得る。１つまたは複数のオフラインストレージサーバ６１０は、保留中の現在オフラインのメッセージングクライアントのメッセージングコンテンツを、そのメッセージングクライアントが再接続するときのために、記憶することができる。
【０１９３】
メッセージングサービス６００は、１つまたは複数のセッションサーバ６１２を備え得る。１つまたは複数のセッションサーバ６１２は、接続されたメッセージングクライアントのセッション状態を維持することができる。
【０１９４】
メッセージングサービス６００は、１つまたは複数のプレゼンスサーバ６１４を備え得る。１つまたは複数のプレゼンスサーバ６１４は、メッセージングサービス６００のためのプレゼンス情報を維持することができる。プレゼンス情報は、所与のユーザが、オンラインメッセージングクライアントを有し、チャットのために利用可能であるか否かを、オンラインメッセージングクライアントを有するが、現在そこから離れているか否かを、オンラインメッセージングクライアントを有さないのか否かを、および、任意の他のプレゼンス状態を示す、ユーザ特有の情報に対応してもよい。
【０１９５】
メッセージングサービス６００は、１つまたは複数のプッシュストレージサーバ６１６を備え得る。１つまたは複数のプッシュストレージサーバ６１６は、プッシュ要求をキャッシュに格納し、プッシュ要求をメッセージングクライアントに伝送することができる。プッシュ要求は、メッセージングクライアントをウェイクアップするため、メッセージング更新が利用可能であることをメッセージングクライアントに通知するため、およびメッセージングクライアントとのサーバ側主導の対話を別途実施するために使用され得る。
【０１９６】
メッセージングサービス６００は、１つまたは複数のグループサーバ６１８を備え得る。１つまたは複数のグループサーバ６１８は、グループのリストを維持すること、グループにユーザを追加すること、グループからユーザを除去すること、ならびにグループチャットメッセージの受信、キャッシュ、および転送を実施することができる。
【０１９７】
メッセージングサービス６００は、１つまたは複数のブロックリストサーバ６２０を備え得る。１つまたは複数のブロックリストサーバ６２０は、ユーザ特有のブロックリストを維持することができ、このユーザ特有の受信ブロックリストは、各ユーザに対してそのユーザにメッセージを送信することが禁じられている１つまたは複数の他のユーザを示す。代替的または追加的に、１つまたは複数のブロックリストサーバ６２０は、各ユーザに対してそのユーザがメッセージを伝送することを禁じられている１つまたは複数の他のユーザを示すユーザ特有の送信ブロックリストを維持することができる。受信ブロックリストおよび送信ブロックリストは、例えば、データベース内に、組み合わせて記憶されてもよく、受信ブロックリストおよび送信ブロックリストがブロック情報の同じレポジトリの異なる視点を表していることを理解されたい。
【０１９８】
メッセージングサービス６００は、１つまたは複数の最終視聴情報サーバ６２２を備え得る。１つまたは複数の最終視聴情報サーバ６２２は、最終視聴ロケーション、ステータス、メッセージングクライアント、およびメッセージングサービス６００へのユーザの最終視聴接続の他の要素を示す情報を受信、記憶、および維持することができる。
【０１９９】
メッセージングサービス６００は、１つまたは複数のキーサーバ６２４を備え得る。１つまたは複数のキーサーバは、公開／秘密キー暗号化通信のための公開キーをホストすることができる。
【０２００】
メッセージングサービス６００は、１つまたは複数のプロフィール写真サーバ６２６を備え得る。１つまたは複数のプロフィール写真サーバ６２６は、メッセージングサービス６００の複数のユーザの取得可能プロフィール写真を記憶し、利用可能にすることができる。
【０２０１】
メッセージングサービス６００は、１つまたは複数のスパムログサーバ６２８を備え得る。１つまたは複数のスパムログサーバ６２８は、既知のスパムおよび疑わしいスパム（例えば、望まないメッセージ、特に宣伝性質のもの）をログすることができる。１つまたは複数のスパムログサーバ６２８は、メッセージがスパムであるかどうかを決定するため、および、いくつかの実施形態において、疑わしいスパマー（スパムメッセージを送信するユーザ）に対する処罰的処置を実施するために、メッセージを分析するように動作可能であり得る。
【０２０２】
メッセージングサービス６００は、１つまたは複数の統計サーバ６３０を備え得る。１つまたは複数の統計サーバは、メッセージングサービス６００の動作およびメッセージングサービス６００のユーザの挙動に関連する統計情報をコンパイルし、記憶することができる。
【０２０３】
メッセージングサービス６００は、１つまたは複数のウェブサーバ６３２を備え得る。１つまたは複数のウェブサーバ６３２は、ウェブブラウザとのハイパーテキスト転送プロトコル（ＨＴＴＰ）およびハイパーテキスト転送プロトコルセキュア（ＨＴＴＰＳ）接続に携わり得る。
【０２０４】
メッセージングサービス６００は、１つまたは複数のチャットアクティビティ監視サーバ６３４を備え得る。１つまたは複数のチャットアクティビティ監視サーバ６３４は、メッセージングサービス６００のユーザによる不正挙動または妨害挙動を決定するためにユーザのチャットを監視することができる。１つまたは複数のチャットアクティビティ監視サーバ６３４は、スパムログサーバ６２８およびブロックリストサーバ６２０と協働して作用することができ、１つまたは複数のチャットアクティビティ監視サーバ６３４が、スパムおよび他の妨害挙動を識別し、スパム情報をスパムログサーバ６２８に、および適切な場合には、ブロッキング情報をブロックリストサーバ６２０に提供する。
【０２０５】
メッセージングサービス６００は、１つまたは複数の同期サーバ６３６を備え得る。１つまたは複数の同期サーバ６３６は、メッセージングサービス６００内のユーザの連絡先を決定するために、メッセージングシステム５００を、携帯電話上のアドレス帳などのメッセージングクライアントからの連絡先情報と同期することができる。
【０２０６】
メッセージングサービス６００は、１つまたは複数のマルチメディアサーバ６３８を備え得る。１つまたは複数のマルチメディアサーバは、メッセージングクライアント間で転送中のマルチメディア（例えば、画像、ビデオ、オーディオ）、オフラインエンドポイントのためにキャッシュ格納されたマルチメディアを記憶することができ、マルチメディアのトランスコーディングを実施することができる。
【０２０７】
メッセージングサービス６００は、１つまたは複数の支払いサーバ６４０を備え得る。１つまたは複数の支払いサーバ６４０は、ユーザからの支払いを処理することができる。１つまたは複数の支払いサーバ６４０は、支払いの実施のために外部サードパーティサーバに接続することができる。
【０２０８】
メッセージングサービス６００は、１つまたは複数の登録サーバ６４２を備え得る。１つまたは複数の登録サーバ６４２は、メッセージングサービス６００の新規ユーザを登録することができる。
【０２０９】
メッセージングサービス６００は、１つまたは複数の音声中継サーバ６４４を備え得る。１つまたは複数の音声中継サーバ６４４は、ボイスオーバインターネットプロトコル（ＶｏＩＰ）コールの実施のために、メッセージングクライアント間のＶｏＩＰ音声通信を中継することができる。
【０２１０】
上記の方法は、コンピュータ可読媒体上の命令として、またはコンピューティングアーキテクチャの一部として具現化され得る。図７は、先に説明されるような様々な実施形態を実装するのに好適である例示的なコンピューティングアーキテクチャ７００の実施形態を例証する。１つの実施形態において、コンピューティングアーキテクチャ７００は、コンピュータ７０１などの電子デバイスの一部を含み得るか、電子デバイスの一部として実装され得る。実施形態は、この文脈に限定されない。
【０２１１】
本出願において使用される場合、用語「システム」および「コンポーネント」は、コンピュータ関連エンティティ、ハードウェア、ハードウェアおよびソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアのいずれかを指すことが意図され、その例は、例示的なコンピューティングアーキテクチャ７００によって提供される。例えば、コンポーネントは、限定されるものではないが、プロセッサ上で実行するプロセス、プロセッサ、ハードディスクドライブ、複数のストレージデバイス（光学のものおよび／または磁気ストレージ媒体）、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および／またはコンピュータであってもよい。例証として、サーバ上で実行するアプリケーションおよびサーバの両方がコンポーネントであってもよい。１つまたは複数のコンポーネントは、実行のプロセスおよび／またはスレッド内に存在してもよく、コンポーネントは、１つのコンピュータ上に局在し得、および／または２つ以上のコンピュータに分散され得る。さらに、コンポーネントは、動作を協調させるために、様々なタイプの通信メディアによって互いに通信可能に結合されてもよい。この協調は、情報の一方向または双方向交換に関与し得る。例えば、コンポーネントは、通信メディアを介して通信される信号の形態で情報を通信することができる。情報は、様々な信号線に割り振られた信号として実装されてもよい。そのような割り振りにおいては、各メッセージは信号である。しかしながら、さらなる実施形態は、データメッセージを採用し得る。そのようなデータメッセージは、様々な接続にわたって送信され得る。例示的な接続としては、パラレルインターフェース、シリアルインターフェース、およびバスインターフェースが挙げられる。
【０２１２】
コンピューティングアーキテクチャ７００は、１つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入力／出力（Ｉ／Ｏ）コンポーネント、電源などの様々な共通コンピューティング要素を含む。しかしながら、実施形態は、コンピューティングアーキテクチャ７００による実装に限定されない。
【０２１３】
図７に示されるように、コンピューティングアーキテクチャ７００は、処理ユニット７０２、システムメモリ７０４、およびシステムバス７０６を備える。処理ユニット７０２は、限定しないが、ＡＭＤ（登録商標）、Ａｔｈｌｏｎ（登録商標）、Ｄｕｒｏｎ（登録商標）、およびＯｐｔｅｒｏｎ（登録商標）プロセッサ；ＡＲＭ（登録商標）アプリケーション、埋め込み型かつ安全なプロセッサ；ＩＢＭ（登録商標）およびＭｏｔｏｒｏｌａ（登録商標）ＤｒａｇｏｎＢａｌｌ（登録商標）およびＰｏｗｅｒＰＣ（登録商標）プロセッサ；ＩＢＭおよびＳｏｎｙ（登録商標）セルプロセッサ；Ｉｎｔｅｌ（登録商標）Ｃｅｌｅｒｏｎ（登録商標）、Ｃｏｒｅ（２）Ｄｕｏ（登録商標）、Ｉｔａｎｉｕｍ（登録商標）、Ｐｅｎｔｉｕｍ（登録商標）、Ｘｅｏｎ（登録商標）、およびＸＳｃａｌｅ（登録商標）プロセッサ；ならびに同様のプロセッサを含む、様々な市販のプロセッサのいずれかであってもよい。デュアルマイクロプロセッサ、マルチコアプロセッサ、および他のマルチプロセッサアーキテクチャもまた、処理ユニット７０２として採用されてもよい。
【０２１４】
システムバス７０６は、限定されるものではないが、システムメモリ７０４を含む、システムコンポーネントのための、処理ユニット７０２へのインターフェースを提供する。システムバス７０６は、様々な市販のバスアーキテクチャのいずれかを使用して、メモリバス（メモリコントローラありまたはなしの）、周辺機器用バス、およびローカルバスへさらに相互接続することができる、いくつかのタイプのバス構造のうちのいずれかであってもよい。インターフェースアダプタは、スロットアーキテクチャを介してシステムバス７０６に接続することができる。スロットアーキテクチャ例は、限定しないが、アクセラレイティッドグラフィックスポート（ＡＧＰ：Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ）、カードバス、（拡張）業界標準アーキテクチャ（（Ｅ）ＩＳＡ：（Ｅｘｔｅｎｄｅｄ）Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、マイクロチャネルアーキテクチャ（ＭＣＡ：Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ）、ＮｕＢｕｓ、周辺コンポーネント相互接続（拡張）（ＰＣＩ（Ｘ）：Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  （Ｅｘｔｅｎｄｅｄ））、ＰＣＩエクスプレス、パーソナルコンピュータメモリカード国際協会（ＰＣＭＣＩＡ：Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ  Ｍｅｍｏｒｙ  Ｃａｒｄ  Ｉｎｔｅｒｎａｔｉｏｎａｌ  Ａｓｓｏｃｉａｔｉｏｎ）、および同様のものを含み得る。
【０２１５】
コンピューティングアーキテクチャ７００は、様々な製造品を備え得るか、または実装し得る。製造品は、ロジックを記憶するためのコンピュータ可読記憶媒体を備え得る。コンピュータ可読記憶媒体の例は、揮発性メモリまたは不揮発性メモリ、取り外し可能または取り外し不可能メモリ、消去可能または消去不可能メモリ、書き込み可能または書き換え可能メモリなどを含む、電子データを記憶することが可能な任意の有形媒体を含み得る。ロジックの例は、ソースコード、コンパイル済みコード、解釈されたコード、実行可能コード、静的コード、動的コード、オブジェクト指向コード、視覚的コード、および同様のものなどの、任意の好適なタイプのコードを使用して実施される実行可能なコンピュータプログラム命令を含み得る。実施形態はまた、本明細書に説明される動作の実施を可能にするために１つまたは複数のプロセッサによって読み出され、実行され得る、非一時的コンピュータ可読媒体内に含まれるか、または非一時的コンピュータ可読媒体上にある命令として少なくとも部分的に実施され得る。
【０２１６】
システムメモリ７０４は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリなどのポリマーメモリ、オボニックメモリ、相変化または強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン（ＳＯＮＯＳ）メモリ、磁気または光学カード、独立ディスクの冗長アレイ（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋ）ドライブなどのデバイスのアレイ、ソリッドステートメモリデバイス（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ））、および情報を記憶するのに好適な任意の他のタイプの記憶媒体などの、１つまたは複数の高速メモリユニットの形態にある様々なタイプのコンピュータ可読記憶媒体を含み得る。図７に示される例証された実施形態において、システムメモリ７０４は、不揮発性メモリ７０８および／または揮発性メモリ７１０を含み得る。基本入力／出力システム（ＢＩＯＳ）は、不揮発性メモリ７０８に記憶され得る。
【０２１７】
コンピューティングアーキテクチャ７００は、内部（または外部）ハードディスクドライブ（ＨＤＤ）７１２、取り外し可能な磁気ディスク７１６から読み出すため、またはそれに書き込むための磁気フロッピディスクドライブ（ＦＤＤ）７１４、および取り外し可能な光学ディスク７２０（例えば、ＣＤ−ＲＯＭまたはＤＶＤ）から読み出すため、またはそれに書き込むための光学ディスクドライブ７１８を含む、１つまたは複数の低速メモリユニットの形態にある様々なタイプのコンピュータ可読記憶媒体を含み得る。ＨＤＤ７１２、ＦＤＤ７１４、および光学ディスクドライブ７２０は、それぞれＨＤＤインターフェース７２２、ＦＤＤインターフェース７２４、および光学ドライブインターフェース７２６によってシステムバス７０６に接続され得る。外部ドライブ実装のためのＨＤＤインターフェース７２２は、ユニバーサルシリアルバス（ＵＳＢ）およびＩＥＥＥ６９４インターフェース技術のうちの少なくとも一方または両方を含み得る。
【０２１８】
ドライブおよび関連コンピュータ可読媒体は、データ、データ構造、コンピュータ実行可能命令などの揮発性および／または不揮発性ストレージを提供する。例えば、オペレーティングシステム７２８、１つまたは複数のアプリケーションプログラム７３０、他のプログラムモジュール７３２、およびプログラムデータ７３４を含む、いくつかのプログラムモジュールが、ドライブおよびメモリユニット７０８、７１２に記憶されてもよい。１つの実施形態において、１つまたは複数のアプリケーションプログラム７３０、他のプログラムモジュール７３２、およびプログラムデータ７３４は、例えば、メッセージングシステム５００の様々なアプリケーションおよび／またはコンポーネントを含み得る。
【０２１９】
ユーザは、コマンドおよび情報を、１つまたは複数の有線／ワイヤレス入力デバイス、例えば、キーボード７３６およびマウス７３８などのポインティングデバイスを通じてコンピュータ７０１に入力することができる。他の入力デバイスは、マイクロフォン、赤外線（ＩＲ）リモートコントロール、無線周波数（ＲＦ）リモートコントロール、ゲームパッド、スタイラスペン、カードリーダ、ドングル、指紋リーダ、グローブ、グラフィックスタブレット、ジョイスティック、キーボード、網膜リーダ、タッチスクリーン（例えば、容量性、抵抗性など）、トラックボール、トラックパッド、センサ、スタイラス、および同様のものを含み得る。これらの入力デバイスおよび他の入力デバイスは、多くの場合、システムバス７０６に結合される入力デバイスインターフェース７４０を通じて処理ユニット７０２に接続されるが、パラレルポート、ＩＥＥＥ６９４シリアルポート、ゲームポート、ＵＳＢポート、ＩＲインターフェースなどの他のインターフェースによって接続されてもよい。
【０２２０】
モニタ７４２または他のタイプのディスプレイデバイスもまた、ビデオアダプタ７４４などのインターフェースを介してシステムバス７０６に接続される。モニタ７４２は、コンピュータ７０１の内部または外部にあってもよい。モニタ７４２に加えて、コンピュータは、典型的には、スピーカ、プリンタなどの他の周辺出力デバイスを含む。
【０２２１】
コンピュータ７０１は、リモートコンピュータ７４４などの１つまたは複数のリモートコンピュータへの有線および／またはワイヤレス通信を介した論理接続を使用してネットワーク環境内で動作することができる。リモートコンピュータ７４４は、ワークステーション、サーバコンピュータ、ルータ、パーソナルコンピュータ、ポータブルコンピュータ、マイクロプロセッサベースのエンターテイメント機器、ピアデバイス、または他の共通ネットワークノードであってもよく、また典型的には、コンピュータ７０１に関連して説明される要素の多くまたは全てを含むが、簡潔性のために、メモリ／ストレージデバイス７４６のみが例証される。描写される論理接続は、ローカルエリアネットワーク（ＬＡＮ）７４８、および／またはより大きいネットワーク、例えば、広域ネットワーク（ＷＡＮ）７５０への有線／ワイヤレス接続を含む。そのようなＬＡＮおよびＷＡＮネットワーキング環境は、オフィスや会社内では通常のことであり、イントラネットなどの企業全体のコンピュータネットワークを促進し、このコンピュータネットワークの全てが、世界通信ネットワーク、例えば、インターネットに接続することができる。
【０２２２】
ＬＡＮネットワーキング環境で使用される場合、コンピュータ７０１は、有線および／またはワイヤレス通信ネットワークインターフェースまたはアダプタ７５２を通じてＬＡＮ７４８に接続される。アダプタ７５２は、ＬＡＮ７４８への有線および／またはワイヤレス通信を促進することができ、ＬＡＮ７４８もまた、アダプタ７５２のワイヤレス機能と通信するために配設されるワイヤレスアクセスポイントを含み得る。
【０２２３】
ＷＡＮネットワーキング環境で使用される場合、コンピュータ７０１は、モデム７５４を含み得るか、またはＷＡＮ７５０上の通信サーバに接続されるか、またはインターネットを用いるなど、ＷＡＮ７５０を介した通信を確立するための他の手段を有する。内部または外部の、有線および／またはワイヤレスデバイスであり得るモデム７５４は、入力デバイスインターフェース７４０を介してシステムバス７０６に接続する。ネットワーク環境において、コンピュータ７０１に関して描写されるプログラムモジュール、またはその部分は、リモートメモリ／ストレージデバイス７４６に記憶されてもよい。示されるネットワーク接続は、例示的であり、コンピュータ間の通信リンクを確立するための他の手段が使用されてもよいことを理解されたい。
【０２２４】
コンピュータ７０１は、ワイヤレス通信（例えば、ＩＥＥＥ８０２．１３  ＯＴＡ（Ｏｖｅｒ  Ｔｈｅ  Ａｉｒ）変調技術）内に動作可能に配設されるワイヤレスデバイスなど、ＩＥＥＥ８０２規格ファミリを使用する有線およびワイヤレスデバイスまたはエンティティと通信するように動作可能である。これは、中でも特に、少なくともＷｉ−Ｆｉ（またはワイヤレスフィディリティ）、ＷｉＭａｘ、およびＢｌｕｅｔｏｏｔｈ（商標）ワイヤレス技術を含む。したがって、通信は、従来のネットワークのようにあらかじめ定められた構造であり得るか、または単に、少なくとも２つのデバイス間のアドホック通信であり得る。Ｗｉ−Ｆｉネットワークは、安全で信頼性の高い高速ワイヤレス接続を提供するためにＩＥＥＥ８０２．１３ｘ（ａ、ｂ、ｇ、ｎなど）と呼ばれる無線技術を使用する。Ｗｉ−Ｆｉネットワークは、コンピュータを、互いに、インターネットに、および有線ネットワーク（ＩＥＥＥ８０２．３関連の媒体および機能を使用する）に接続するために使用されてもよい。
【０２２５】
図８は、先に説明されるような様々な実施形態を実装するのに好適である例示的な通信アーキテクチャ８００を描写するブロック図である。通信アーキテクチャ８００は、送信器、受信器、トランシーバ、無線、ネットワークインターフェース、ベースバンドプロセッサ、アンテナ、増幅器、フィルタ、電源などの様々な一般的な通信要素を含む。しかしながら、実施形態は、通信アーキテクチャ８００による実装に限定されない。
【０２２６】
図８に示されるように、通信アーキテクチャ８００は、１つまたは複数のクライアント８０２およびサーバ８０４を含む。クライアント８０２は、クライアントデバイス５１０を実装し得る。サーバ８０４は、サーバデバイス５２６を実装し得る。クライアント８０２およびサーバ８０４は、クッキーおよび／または関連文脈情報など、それぞれのクライアント８０２およびサーバ８０４にローカルな情報を記憶するために採用され得る１つまたは複数のそれぞれのクライアントデータストア８０６およびサーバデータストア８０８に動作可能に接続される。
【０２２７】
クライアント８０２およびサーバ８０４は、通信フレームワーク８１０を使用して互いに情報を通信することができる。通信フレームワーク８１０は、任意の周知の通信技術およびプロトコルを実装し得る。通信フレームワーク８１０は、パケット交換ネットワーク（例えば、インターネットなどの公衆ネットワーク、企業イントラネットなどのプライベートネットワークなど）、回路交換ネットワーク（例えば、公衆電話交換ネットワーク）、またはパケット交換ネットワークおよび回路交換ネットワークの組み合わせ（好適なゲートウェイおよびトランスレータを用いて）として実装され得る。
【０２２８】
通信フレームワーク８１０は、通信ネットワークを受容する、通信ネットワークと通信する、および通信ネットワークに接続するように構成される様々なネットワークインターフェースを実装し得る。ネットワークインターフェースは、入力出力インターフェースの特殊な形態とみなされ得る。ネットワークインターフェースは、限定することなく、直接接続、イーサネット（例えば、シック（Ｔｈｉｃｋ）、シン（Ｔｈｉｎ）、ツイストペア１０／１００／１０００ＢＡＳＥ  Ｔ、および同様のもの）、トークンリング、ワイヤレスネットワークインターフェース、セルラネットワークインターフェース、ＩＥＥＥ８０２．８ａ−ｘネットワークインターフェース、ＩＥＥＥ８０２．１６ネットワークインターフェース、ＩＥＥＥ８０２．２０ネットワークインターフェース、および同様のものを含む接続プロトコルを採用し得る。さらに、複数のネットワークインターフェースが、様々な通信ネットワークタイプに関与するために使用されてもよい。例えば、複数のネットワークインターフェースが、ブロードキャスト、マルチキャスト、およびユニキャストネットワークを介した通信を可能にするために採用されてもよい。もし処理要件がより大きい速度および容量を指示する場合、同様に、分散ネットワークコントローラアーキテクチャが、クライアント８０２およびサーバ８０４によって必要とされる通信可能な帯域幅を、プールするため、負荷平衡するため、および他のやり方で増大するために採用されてもよい。通信ネットワークは、限定することなく、直接相互接続、安全なカスタム接続、プライベートネットワーク（例えば、企業イントラネット）、公衆ネットワーク（例えば、インターネット）、パーソナルエリアネットワーク（ＰＡＮ：Ｐｅｒｓｏｎａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ローカルエリアネットワーク（ＬＡＮ：Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、メトロポリタンエリアネットワーク（ＭＡＮ：Ｍｅｔｒｏｐｏｌｉｔａｎ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネット上のノードとしてのオペレーティングミッション（ＯＭＮＩ：Ｏｐｅｒａｔｉｎｇ  Ｍｉｓｓｉｏｎｓ  ａｓ  Ｎｏｄｅｓ  ｏｎ  ｔｈｅ  Ｉｎｔｅｒｎｅｔ）、広域ネットワーク（ＷＡＮ：Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ワイヤレスネットワーク、セルラネットワーク、および他の通信ネットワークを含む、有線および／またはワイヤレスネットワークのうちの任意の１つまたは組み合わせであってもよい。
【０２２９】
図９は、メッセージングシステム５００などのマルチキャリアＯＦＤＭシステムにおいて使用するためのデバイス９００の実施形態を例証する。デバイス９００は、例えば、メッセージングコンポーネントロジック６００、意思決定ロジック７００、およびグループ選択ロジック８００を参照して説明されるようなソフトウェアコンポーネント９０２を実装し得る。デバイス９００はまた、論理回路９０４を実装し得る。論理回路９０４は、メッセージングシステム６００について説明される動作を実施するために物理回路を含み得る。図９に示されるように、デバイス９００は、無線インターフェース９０６、ベースバンド回路９０８、およびコンピューティングプラットフォーム９１０を含み得るが、実施形態はこの設定に限定されない。
【０２３０】
デバイス９００は、全体が単一のデバイス内にあるなど、単一のコンピューティングエンティティ内のメッセージングシステム５００および／または論理回路９０４の構造および／または動作の一部または全てを実施することができる。代替的に、デバイス９００は、クライアント−サーバアーキテクチャ、３層アーキテクチャ、Ｎ層アーキテクチャ、密結合またはクラスタアーキテクチャ、ピアツーピアアーキテクチャ、マスター−スレーブアーキテクチャ、共有データベースアーキテクチャ、および他のタイプの分散システムなどの分散システムアーキテクチャを使用して、複数のコンピューティングエンティティにわたってメッセージングシステム５００および／または論理回路９０４の構造および／または動作の部分を分散することができる。実施形態は、この文脈に限定されない。
【０２３１】
１つの実施形態において、無線インターフェース９０６は、シングルキャリアまたはマルチキャリア変調信号（例えば、相補型符号変調（ＣＣＫ）および／または直交周波数分割多重（ＯＦＤＭ）シンボルを含む）を伝送および／または受信するために適合されるコンポーネントまたはコンポーネントの組み合わせを含み得るが、実施形態は、任意の特定のＯＴＡ（Ｏｖｅｒ  Ｔｈｅ  Ａｉｒ）インターフェースまたは変調スキームに限定されない。無線インターフェース９０６は、例えば、受信器９１２、送信器９１４、および／または周波数シンセサイザ９１６を含み得る。無線インターフェース９０６は、バイアス制御、水晶発振器、および／または１つまたは複数のアンテナ９１８を含み得る。別の実施形態において、無線インターフェース９０６は、要求に応じて、外部電圧制御発振器（ＶＣＯ）、表面音響波フィルタ、中間周波数（ＩＦ）フィルタ、および／またはＲＦフィルタを使用してもよい。予想されるＲＦインターフェース設計の多様性に起因して、その広範な説明は省略される。
【０２３２】
ベースバンド回路９０８は、受信および／または伝送信号を処理するために無線インターフェース９０６と通信することができ、また、例えば、受信信号をダウンコンバートするためのアナログ−デジタル変換器９２０、および伝送用に信号をアップコンバートするためのデジタル−アナログ変換器９２２を含み得る。さらに、ベースバンド回路９０８は、受信／伝送信号それぞれを処理するＰＨＹリンク層のためのベースバンドまたは物理層（ＰＨＹ）処理回路９２４を含み得る。ベースバンド回路９０８は、例えば、媒体アクセス制御（ＭＡＣ）／データリンク層処理のための処理回路９２６を含み得る。ベースバンド回路９０８は、例えば１つまたは複数のインターフェース９３０を介して処理回路９２６および／またはコンピューティングプラットフォーム９１０と通信するためのメモリコントローラ９２８を含み得る。
【０２３３】
いくつかの実施形態において、ＰＨＹ処理回路９２４は、バッファメモリなどの追加の回路と併せて、無線フレームなどの通信フレームを構築および／または分解するために、フレーム構築および／または検出モジュールを含み得る。代替的に、または加えて、ＭＡＣ処理回路９２６は、確実にこれらの機能の処理を共有するか、またはＰＨＹ処理回路９２４とは独立してこれらの処理を実施することができる。いくつかの実施形態において、ＭＡＣおよびＰＨＹ処理は、単一の回路に統合されてもよい。
【０２３４】
コンピューティングプラットフォーム９１０は、デバイス９００にコンピューティング機能を提供することができる。示されるように、コンピューティングプラットフォーム９１０は、処理コンポーネント９３２を含み得る。ベースバンド回路９０８に加えて、またはベースバンド回路９０８の代わりに、デバイス９００は、処理コンポーネント９３２を使用して、メッセージングシステム５００および論理回路９０４の処理動作またはロジックを実行することができる。処理コンポーネント９３２（および／またはＰＨＹ９２４および／またはＭＡＣ９２６）は、様々なハードウェア要素、ソフトウェア要素、または両方の組み合わせを備え得る。ハードウェア要素の例は、デバイス、論理デバイス、コンポーネント、プロセッサ、マイクロプロセッサ、回路、プロセッサ回路、回路素子（例えば、トランジスタ、抵抗器、キャパシタ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラマブル論理デバイス（ＰＬＤ）、デジタル信号プロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、メモリユニット、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含み得る。ソフトウェア要素の例は、ソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、ソフトウェア開発プログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、メソッド、プロシージャ、ソフトウェアインターフェース、アプリケーションプログラムインターフェース（ＡＰＩ）、命令セット、コンピューティングコード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボル、またはそれらの任意の組み合わせを含み得る。実施形態がハードウェア要素および／またはソフトウェア要素を使用して実装されるかどうかを決定することは、所与の実装形態について所望されるような、所望の計算速度、電力レベル、熱耐性、処理サイクルバジェット、入力データレート、出力データレート、メモリリソース、データバス速度、および他の設計制約または性能制約などの任意の数の因子に応じて異なり得る。
【０２３５】
コンピューティングプラットフォーム９１０は、他のプラットフォームコンポーネント９３４をさらに含み得る。他のプラットフォームコンポーネント９３４は、１つまたは複数のプロセッサ、マルチコアプロセッサ、コプロセッサ、メモリユニット、チップセット、コントローラ、周辺機器、インターフェース、発振器、タイミングデバイス、ビデオカード、オーディオカード、マルチメディア入力／出力（Ｉ／Ｏ）コンポーネント（例えば、デジタルディスプレイ）、電源などの一般的なコンピューティング要素を含む。メモリユニットの例は、限定することなく、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、同期ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能なプログラマブルＲＯＭ（ＥＰＲＯＭ）、電気的に消去可能なプログラマブルＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリなどのポリマーメモリ、オボニックメモリ、相変化または強誘電性メモリ、シリコン−酸化物−窒化物−酸化物−シリコン（ＳＯＮＯＳ）メモリ、磁気または光学カード、独立ディスクの冗長アレイ（ＲＡＩＤ：Ｒｅｄｕｎｄａｎｔ  Ａｒｒａｙ  ｏｆ  Ｉｎｄｅｐｅｎｄｅｎｔ  Ｄｉｓｋ）ドライブなどのデバイスのアレイ、ソリッドステートメモリデバイス（例えば、ＵＳＢメモリ、ソリッドステートドライブ（ＳＳＤ））、および情報を記憶するのに好適な任意の他のタイプの記憶媒体などの、１つまたは複数の高速メモリユニットの形態にある様々なタイプのコンピュータ可読およびマシン可読記憶媒体を含み得る。
【０２３６】
デバイス９００は、例えば、ウルトラモバイルデバイス、モバイルデバイス、固定デバイス、マシンツーマシン（Ｍ２Ｍ）デバイス、パーソナルデジタルアシスタント（ＰＤＡ）、モバイルコンピューティングデバイス、スマートフォン、電話機、デジタル電話機、携帯電話、ユーザ機器、電子書籍リーダ、ハンドセット、一方向ページャ、双方向ページャ、メッセージングデバイス、コンピュータ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ノートブックコンピュータ、ネットブックコンピュータ、ハンドヘルドコンピュータ、タブレットコンピュータ、サーバ、サーバアレイまたはサーバファーム、ウェブサーバ、ネットワークサーバ、インターネットサーバ、ワークステーション、ミニコンピュータ、メインフレームコンピュータ、スーパーコンピュータ、ネットワークアプライアンス、ウェブアプライアンス、分散コンピューティングシステム、マルチプロセッサシステム、プロセッサベースのシステム、家電製品、プログラマブル家電製品、ゲーム機、テレビ、デジタルテレビ、セットトップボックス、ワイヤレスアクセスポイント、基地局、ノードＢ、発展型ノードＢ（ｅＮＢ）、加入者ステーション、モバイル加入者センター、無線ネットワークコントローラ、ルータ、ハブ、ゲートウェイ、ブリッジ、スイッチ、マシン、またはそれらの組み合わせであってもよい。したがって、本明細書に説明されるデバイス９００の機能および／または特定の設定は、要求に応じて適宜、デバイス９００の様々な実施形態に含まれ得るか、または省略され得る。いくつかの実施形態において、デバイス９００は、３ＧＰＰ  ＬＴＥ仕様、および／またはＷＭＡＮのためのＩＥＥＥ１４０２．１６規格、および／または本明細書で引用される他の広帯域ワイヤレスネットワークのうちの１つまたは複数に関連したプロトコルおよび周波数に準拠するように設定され得るが、実施形態は、この点に関して限定されない。
【０２３７】
デバイス９００の実施形態は、単入力単出力（ＳＩＳＯ）アーキテクチャを使用して実装され得る。しかしながら、特定の実装形態は、ビーム形成または空間分割多重アクセス（ＳＤＭＡ）のための適応アンテナ技術を使用する、および／またはＭＩＭＯ通信技術を使用する、伝送および／または受信のための複数のアンテナ（例えば、アンテナ９１８）を含み得る。
【０２３８】
デバイス９００のコンポーネントおよび特徴は、ディスクリート回路、特定用途向け集積回路（ＡＳＩＣ）、論理ゲート、および／またはシングルチップアーキテクチャの任意の組み合わせを使用して実装され得る。さらに、デバイス９００の特徴は、マイクロコントローラ、プログラマブル論理アレイ、および／もしくはマイクロプロセッサ、または適切な場合には適宜、先述の任意の組み合わせを使用して実装され得る。本明細書では、ハードウェア、ファームウェア、および／またはソフトウェア要素は、まとめて、または個別に、「ロジック」または「回路」と称され得ることに留意されたい。
【０２３９】
図９のブロック図に示される例示的なデバイス９００は、多くの予想される実装形態の１つの機能的な説明例を表し得るということを理解されたい。したがって、添付の図面に描写されるブロック機能の分割、省略、または包含は、これらの機能を実装するためのハードウェアコンポーネント、回路、ソフトウェア、および／または要素が、必ず、実施形態において分割、省略、または包含されることを類推するわけではない。
【０２４０】
少なくとも１つのコンピュータ可読記憶媒体９３６は、実行されるとき、本明細書に説明されるコンピュータ実装方法のいずれかをシステムに実行させる命令を含み得る。
【０２４１】
用語に関する一般的な注釈
いくつかの実施形態は、「１つの実施形態」または「実施形態」という表現、ならびにそれらの派生形を使用して説明され得る。これらの用語は、実施形態に関連して説明される特定の特徴、構造、または特性が、少なくとも１つの実施形態に含まれることを意味する。本明細書内の様々な場所での「１つの実施形態では」という句の登場は、必ずしも全てが同じ実施形態を指しているわけではない。さらに、別途記載のない限り、上に説明される特徴は、任意の組み合わせで一緒に使用可能であることが理解される。したがって、別個に論じられる任意の特徴は、その特徴が互いに相いれないことが記載されていない限りは、互いに組み合わせて用いられてもよい。
【０２４２】
本明細書で使用される表記および専門用語を全体的に参照すると、本明細書における詳細説明は、コンピュータまたはコンピュータのネットワーク上で実行されるプログラムプロシージャの観点で提示され得る。これらの手続き的説明および表現は、当業者によって、他の当業者に自身の研究の内容を最も効果的に伝えるために使用される。
【０２４３】
プロシージャは、ここでは、および一般的には、所望の結果をもたらす動作の首尾一貫したシーケンスであると考えられる。これらの動作は、物理的量の物理的操作を必要とするものである。必須ではないが、通常、これらの量は、記憶、転送、結合、比較、および別途操作されることが可能である電気、磁気、または光信号の形態をとる。場合によっては、主に一般的用法の理由から、これらの信号を、ビット、値、要素、シンボル、文字、項、数字、または同様のものと呼ぶことが簡便であることが分かっている。しかしながら、これらの用語および同様の用語の全ては、適切な物理的量と関連付けられるものとし、それらの量に適用される簡便なラベルにすぎないことに留意されたい。
【０２４４】
さらに、実施される操作は、多くの場合、追加する、または比較するなどの用語で言及され、人間のオペレータによって実施される知的動作と一般的に関連付けられる。１つまたは複数の実施形態の一部を形成する、本明細書に説明される動作のいずれにおいても、人間のオペレータのそのような能力は必要ではないか、大半の場合は望ましくない。むしろ、動作はマシン動作である。様々な実施形態の動作を実施するための有用なマシンは、汎用デジタルコンピュータまたは同様のデバイスを含む。
【０２４５】
いくつかの実施形態は、「結合される」または「接続される」という表現、ならびにそれらの派生形を使用して説明され得る。これらの用語は、必ずしも互いの同義語として意図されない。例えば、いくつかの実施形態は、２つ以上の要素が互いと直接的な物理接触または電気接触状態にあることを示すために、「接続される」および／または「結合される」という用語を使用して説明され得る。しかしながら、「結合される」という用語はまた、２つ以上の要素が、互いと直接的な物理接触状態にないが、それでも依然として互いと協働するか、または対話することを意味し得る。
【０２４６】
様々な実施形態はまた、これらの動作を実施するための装置またはシステムに関する。この装置は、必要とされる目的のために特別に構築され得るか、またはそれは、コンピュータに記憶されるコンピュータプログラムによって選択的に有効化または再設定されるような汎用コンピュータを備え得る。本明細書に提示されるプロシージャは、特定のコンピュータまたは他の装置に本質的に関連するものではない。様々な汎用マシンが、本明細書内の教示に従って書かれたプログラムと共に使用され得るか、または様々な汎用マシンは、必要とされる方法ステップを実施するために、より特殊な装置を構築するのに簡便であることを証明し得る。様々なこれらのマシンのための必要とされる構造は、与えられる説明から明らかであるものとする。
【０２４７】
本開示の要約書は、読み手が本技術開示の本質を迅速に理解できるようにするために提供されるということが強調される。要約書は、特許請求の範囲または意味を解釈または制限するために用いられないという理解のもとに提出される。加えて、先述の「発明を実施するための形態」において、様々な特徴が、本開示を効率化するという目的のために単一の実施形態内にまとめられていることが分かる。このような開示方法は、特許請求される実施形態が各請求項に明示的に列挙されるものよりも多くの特徴を必要とするという意図を示すものとして解釈されるべきではない。むしろ、以下の請求項が示すように、発明の主題は、単一の開示された実施形態の全ての特徴よりも少ないことにある。したがって、以下の請求項は、各請求項が別個の実施形態として自立した状態で、以後、「発明を実施するための形態」に組み込まれる。添付の請求項において、「ｉｎｃｌｕｄｉｎｇ」および「ｉｎ  ｗｈｉｃｈ」という用語は、それぞれ「ｃｏｍｐｒｉｓｉｎｇ」および「ｗｈｅｒｅｉｎ」という用語の平易な英語の均等物として使用される。さらに、「第１の」、「第２の」、「第３の」などの用語は、単にラベルとして使用され、それらの対象物に対して数値的要件を課すことは意図されない。
【０２４８】
上に説明されていることは、開示されるアーキテクチャの例を含む。当然ながら、コンポーネントおよび／または方法論の全ての考えられる組み合わせを説明することは不可能であるが、当業者は、多くのさらなる組み合わせおよび置き換えが可能であることを認識し得る。したがって、新規のアーキテクチャは、添付の特許請求の範囲の趣旨および範囲内に入る全てのそのような変更、修正、および変形を包含することが意図される。
【図１Ａ】
2021510944.tif 000003
【図１Ｂ】
2021510944.tif 000004
【図１Ｃ】
2021510944.tif 000005
【図１Ｄ】
2021510944.tif 000006
【図１Ｅ】
2021510944.tif 000007
【図１Ｆ】
2021510944.tif 000008
【図１Ｇ】
2021510944.tif 000009
【図１Ｈ】
2021510944.tif 000010
【図１Ｉ】
2021510944.tif 000011
【図１Ｊ】
2021510944.tif 000012
【図２Ａ】
2021510944.tif 000013
【図２Ｂ】
2021510944.tif 000014
【図２Ｃ】
2021510944.tif 000015
【図３Ａ】
2021510944.tif 000016
【図３Ｂ】
2021510944.tif 000017
【図３Ｃ】
2021510944.tif 000018
【図４Ａ】
2021510944.tif 000019
【図４Ｂ】
2021510944.tif 000020
【図５Ａ】
2021510944.tif 000021
【図５Ｂ】
2021510944.tif 000022
【図５Ｃ】
2021510944.tif 000023
【図６】
2021510944.tif 000024
【図７】
2021510944.tif 000025
【図８】
2021510944.tif 000026
【図９】
2021510944.tif 000027
【国際調査報告】
2021510944.tif 000028
2021510944.tif 000029
2021510944.tif 000030