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