ユーザがアプリケーションと対話することおよび制御することを可能にするために、例えば、デスクトップ・アプリケーション、モバイル・アプリケーション、またはウェブ・ベースのアプリケーションを含む任意のタイプのソフトウェア・アプリケーションにユーザ・インターフェース(user interface:UI)を組み込むことができる。グラフィカル・ユーザ・インターフェース(graphical user interface:GUI)は、例えば、アイコン、ボタン、メニュー、イメージ、ビデオ、またはオーディオを含むマルチメディア・オブジェクトを通じてユーザがソフトウェア・アプリケーションと対話することを可能にするユーザ・インターフェースの1タイプである。
特定の実施形態では、ソフトウェア・アプリケーションをソーシャル・ネットワーキング・システムに関連付けることができる。図1は、ソーシャル・ネットワーキング・システムに関連する例示的なネットワーク環境100を示す。ネットワーク環境100は、ネットワーク110によって互いに接続されたユーザ101、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサード・パーティ・システム170を含む。図1はユーザ101、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サード・パーティ・システム(third-party system)170、およびネットワーク110の特定の構成を示すが、本開示は、ユーザ101、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サード・パーティ・システム170、およびネットワーク110の任意の適切な構成を企図する。限定ではなく例として、ネットワーク110を迂回して、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサード・パーティ・システム170のうちの2つ以上を互いに直接的に接続することができる。別の例として、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサード・パーティ・システム170のうちの2つ以上を、物理的または論理的に、全体的または部分的に共に配置することができる。さらに、図1は特定の数のユーザ101、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サード・パーティ・システム170、およびネットワーク110を示すが、本開示は、任意の適切な数のユーザ101、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サード・パーティ・システム170、およびネットワーク110を企図する。限定ではなく例として、ネットワーク環境100は、複数のユーザ101、クライアント・システム130、ソーシャル・ネットワーキング・システム160、サード・パーティ・システム170、およびネットワーク110を含むことができる。
特定の実施形態では、ユーザ101は、ソーシャル・ネットワーキング・システム160と、またはソーシャル・ネットワーキング・システム160を介して対話または通信する個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、またはサード・パーティ・アプリケーション)、または(例えば、個人またはエンティティの)グループでよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワークをホストするネットワーク・アドレス指定可能コンピューティング・システム(network-addressable computing system)でよい。ソーシャル・ネットワーキング・システム160は、例えば、ユーザ・プロファイル・データ、概念プロファイル・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関する他の適切なデータなどのソーシャル・ネットワーキング・データを生成、格納、受信、および送信することができる。ネットワーク環境100の他の構成要素により、直接的に、またはネットワーク110を介して、ソーシャル・ネットワーキング・システム160にアクセスすることができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、例えば、適切なプライバシー設定を設定することなどにより、ユーザ101がそのアクションをソーシャル・ネットワーキング・システム160によって記録させること、または他のシステム(例えば、サード・パーティ・システム170)と共有させることを選択するか、または選択しないことを可能にする許可サーバを含むことができる。特定の実施形態では、サード・パーティ・システム170は、様々なサード・パーティ・ソフトウェア・アプリケーション(例えば、ウェブ・ベースのアプリケーション)をホストすることができるネットワーク・アドレス指定可能コンピューティング・システムでよい。サード・パーティ・システム170は、例えば、テキスト、イメージ、ビデオ、またはオーディオなどの様々なタイプのデータを生成、格納、受信、および送信することができる。ネットワーク環境100の他の構成要素により、直接的に、またはネットワーク110を介して、サード・パーティ・システム170にアクセスすることができる。特定の実施形態では、1人または複数のユーザ101は、1つまたは複数のクライアント・システム130を使用して、ソーシャル・ネットワーキング・システム160またはサード・パーティ・システム170にアクセスしてデータを送り、ソーシャル・ネットワーキング・システム160またはサード・パーティ・システム170からデータを受信することができる。クライアント・システム130は、直接的に、ネットワーク110を介して、またはサード・パーティ・システムを介して、ソーシャル・ネットワーキング・システム160またはサード・パーティ・システム170にアクセスすることができる。限定ではなく例として、クライアント・システム130は、ソーシャル・ネットワーキング・システム160を介してサード・パーティ・システム170にアクセスすることができる。クライアント・システム130は、例えば、パーソナル・コンピュータ、ラップトップ・コンピュータ、携帯電話、スマートフォン、またはタブレット・コンピュータなどの任意の適切なコンピューティング装置でよい。
本開示は任意の適切なネットワーク110を企図する。限定ではなく例として、ネットワーク110のうちの1つまたは複数の部分は、アドホック・ネットワーク(ad hoc network)、イントラネット、エクストラネット、仮想プライベート・ネットワーク(virtual private network:VPN)、ローカル・エリア・ネットワーク(local area network:LAN)、ワイヤレスLAN(wireless LAN:WLAN)、広域ネットワーク(wide area network:WAN)、ワイヤレスWAN(wireless WAN:WWAN)、大都市圏ネットワーク(metropolitan area network:MAN)、インターネットの一部、公衆交換電話網(Public Switched Telephone Network:PSTN)の一部、携帯電話網、またはこれらの2つ以上の組合せを含むことができる。ネットワーク110は1つまたは複数のネットワーク110を含むことができる。
リンク150は、クライアント・システム130、ソーシャル・ネットワーキング・システム160、およびサード・パーティ・システム170を通信ネットワーク110に接続するか、または互いに接続することができる。本開示は任意の適切なリンク150を企図する。特定の実施形態では、1つまたは複数のリンク150は、1つまたは複数のワイヤーライン(wireline)(例えば、デジタル加入者線(Digital Subscriber Line:DSL)またはData Over Cable Service Interface Specification(DOCSIS)など)、ワイヤレス(例えば、Wi−FiまたはWorldwide Interoperability for Microwave Access(WiMAX)など)、または光(例えば、同期光ネットワーク(Synchronous Optical Network:SONET)または同期デジタル階層(Synchronous Digital Hierarchy:SDH)など)リンクを含む。特定の実施形態では、1つまたは複数のリンク150はそれぞれ、アドホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部、PSTNの一部、セルラ技術ベースのネットワーク、衛星通信技術ベースのネットワーク、別のリンク150、または2つ以上のそのようなリンク150の組合せを含む。リンク150は、必ずしもネットワーク環境100全体を通じて同一である必要はない。1つまたは複数の第1のリンク150は、1つまたは複数の点で1つまたは複数の第2のリンク150と異なることがある。
特定の実施形態では、ソーシャル・ネットワーキング・システム160に関連するサーバと、個々のクライアント・システム130との間で、ネットワーク110を介してデータ(例えば、様々なタイプの情報またはコンテンツを表すデータ)を送ることができる。2つの電子装置(例えば、サーバおよびクライアント)がネットワーク(例えば、ネットワーク110などのコンピュータまたは通信ネットワーク)に接続されるとき、1つまたは複数の適切なネットワーク・プロトコルを使用して、2つの装置間でネットワークを介してデータを送信することができる。ネットワークは、任意の数のサブネットワークを含むことができる。2つの装置間でデータを送信することにより、2つの装置は互いに通信することができる。
ネットワーク通信では、ある装置から別の装置に通信(すなわち、データ)を送るのに、プッシュ(push)およびプル(pull)という2つの方式がある。プッシュ技術では、通信トランザクションを求める要求が、送信装置によって開始される。すなわち、送信装置が、受信装置に、通信を所謂「プッシュ」し、この場合、トランザクションで送信装置を能動側とみなすことができ、受信装置を受動側とみなすことができる。一方、プル技術では、通信トランザクションを求める要求が、受信装置によって開始される。すなわち、受信装置が、送信装置から、通信を所謂「プル」する。この場合、トランザクションで送信装置を受動側とみなすことができ、受信装置を能動側とみなすことができる。特定の実施形態では、ソーシャル・ネットワーキング・システム160に関連するサーバが、クライアント・システム130にデータをプッシュすることができる。サーバからクライアントにプッシュされる通信は、「プッシュ通知」と呼ばれることがある。同様に、クライアント・システム130は、ソーシャル・ネットワーキング・システム160に関連するサーバにデータをプッシュすることができる。
特定の実施形態では、クライアント・システム130は、モバイル電子装置またはコンピューティング装置でよい。スマートフォン、タブレット・コンピュータ、ラップトップ・コンピュータなどのモバイル電子装置は、その位置、方向、または向きを判定する、GPS受信機、コンパス、ジャイロスコープなどの機能を含むことができる。そのようなモバイル装置はまた、BLUETOOTH(登録商標)通信、近距離場通信(near-field communication:NFC)、赤外線(infrared:IR)通信、ワイヤレス・ローカル・エリア・ネットワーク(WLAN)もしくは携帯電話網との通信などの、ワイヤレス通信のための機能をも含むことができる。そのようなモバイル装置はまた、1つまたは複数のカメラ、スキャナ、タッチ・スクリーン、マイクロフォン、あるいはスピーカをも含むことができる。モバイル電子装置はまた、ゲーム、ウェブ・ブラウザ、ソーシャル・ネットワーキング・アプリケーションなどのソフトウェア・アプリケーションを実行することができる。ソーシャル・ネットワーキング・アプリケーションを用いて、ユーザは、ユーザのソーシャル・ネットワーク内の他のユーザと接続し、通信し、情報を共有することができる。
特定の実施形態では、モバイル電子装置(例えば、スマートフォンまたはタブレット・コンピュータ)は、タッチ入力を受け取ることのできるタッチ・スクリーンを含むことができる。図2Aは、タッチ・スクリーン215を有する例示的なモバイル電子装置210(例えば、スマートフォン)を示す。タッチ・スクリーン215は、(例えば、ユーザの指からの)タッチまたは物体(例えば、スタイラス(stylus))の近接の存在および位置を検出する1つまたは複数のタッチ・センサおよびタッチ・センサ・コントローラを組み込むことができる。特定の実施形態では、タッチ・スクリーン215を介して検出される特定のタッチの結果、タッチ入力イベントを生じさせることができる。
異なるモバイル電子装置は、異なる構成を有してもよい。その結果、異なるモバイル装置のタッチ・スクリーンのサイズ、形状、およびアスペクト比は異なることがある。図2Bは、タッチ・スクリーン225を有する別の例示的なモバイル電子装置220(例えば、タブレット・コンピュータ)を示す。同様に、タッチ・スクリーン225は、(例えば、ユーザの指からの)タッチまたは物体(例えば、スタイラス)の近接の存在および位置を検出する1つまたは複数のタッチ・センサおよびタッチ・センサ・コントローラを組み込むことができる。タッチ・スクリーン225を介して検出される特定のタッチの結果、タッチ入力イベントを生じさせることができる。しかし、モバイル電子装置210および220は2つの異なるタイプの装置であるので、それぞれのタッチ・スクリーン215および225は、異なるサイズおよびアスペクト比を有する。
様々なタイプのタッチ入力イベントに対応する、シングル・タップ、ダブル・タップ、ショート・プレス、ロング・プレス、スライド、スワイプ、フリップ、パン、ドラッグ、ピンチ・オープン、またはピンチ・クローズなどの様々なタイプのタッチまたはジェスチャが存在することができる。異なるタッチ入力イベントの結果、異なる応答を得ることができ、本開示は、任意の適用可能なジェスチャを企図する。
ソーシャル・ネットワーキング・システム160は、例えば、ユーザ・データ、アプリケーション・データ、またはソーシャル・データを含む様々なタイプのデータを格納することができる。特定の実施形態では、任意の数のノードおよびエッジを有し、各エッジが2つのノードを接続するグラフ内にそのようなデータを格納することができる。グラフはとりわけソーシャル情報を含むので、グラフはしばしば、「ソーシャル・グラフ(social graph)」または「オープン・グラフ(open graph)」と呼ばれる。
図3は、例示的なソーシャル・グラフ300を示す。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1または複数のソーシャル・グラフ300を1または複数のデータ・ストア内に記憶する。特定の実施形態では、ソーシャル・グラフ300は、複数のノード(複数のユーザ・ノード302または複数のコンセプト・ノード304を含んでもよい)と、それらのノードを接続する複数のエッジ306とを含んでもよい。図3に示されている例示的なソーシャル・グラフ300は、説明のために、2次元の視覚マップ表現で示されている。特定の実施形態では、ソーシャル・ネットワーキング・システム160、クライアント・システム130、またはサード・パーティ・システム170は、適切な用途のためにソーシャル・グラフ300および関連するソーシャル・グラフ情報にアクセスする。ソーシャル・グラフ300のノードおよびエッジは、データ・オブジェクトとして、たとえばデータ・ストア(ソーシャル・グラフ・データベースなど)内に記憶されてもよい。そのようなデータ・ストアは、ソーシャル・グラフ300のノードまたはエッジの、1または複数の検索可能または照会可能なインデックスを含んでもよい。
特定の実施形態では、ユーザ・ノード302は、ソーシャル・ネットワーキング・システム160のユーザに対応する。限定するものとしてではなく一例として、ユーザは、ソーシャル・ネットワーキング・システム160と、またはソーシャル・ネットワーキング・システム160を通じて対話または通信する個人(人間のユーザ)、エンティティ(たとえば、企業、事業者、またはサード・パーティ・アプリケーション)、または(たとえば、個人またはエンティティの)グループであってよい。特定の実施形態では、ユーザがアカウントをソーシャル・ネットワーキング・システム160に登録するとき、ソーシャル・ネットワーキング・システム160は、そのユーザに対応するユーザ・ノード302を作成し、そのユーザ・ノード302を1または複数のデータ・ストア内に記憶する。本明細書に記載のユーザおよびユーザ・ノード302は、適切な場合、登録されたユーザ、および登録されたユーザに関連付けられているユーザ・ノード302に及ぶ。それに加えて、または代替として、本明細書に記載のユーザおよびユーザ・ノード302は、適切な場合、ソーシャル・ネットワーキング・システム160に登録しなかったユーザに及ぶ。特定の実施形態では、ユーザ・ノード302は、ユーザによって提供された情報、またはソーシャル・ネットワーキング・システム160を含む様々なシステムによって収集された情報に関連付けられてもよい。限定するものとしてではなく一例として、ユーザは、自分の名前、プロフィール写真、連絡先情報、誕生日、性別、婚姻状態、家族状態、雇用、学歴、好み、関心、または他の人口統計情報を提供してもよい。特定の実施形態では、ユーザ・ノード302は、ユーザに関連付けられている情報に対応する1または複数のデータ・オブジェクトに関連付けられてもよい。特定の実施形態では、ユーザ・ノード302は、1または複数のウェブ・ページに対応してもよい。
特定の実施形態では、コンセプト・ノード304は、コンセプトに対応する。限定するものとしてではなく一例として、コンセプトは、場所(たとえば、映画館、レストラン、目印、または都市など)、ウェブサイト(たとえば、ソーシャル・ネットワーキング・システム160に関連付けられているウェブサイト、またはウェブアプリケーションサーバに関連付けられているサードパーティウェブサイトなど)、エンティティ(たとえば、人、事業者、グループ、スポーツチーム、または有名人など)、ソーシャル・ネットワーキング・システム160内、またはウェブアプリケーションサーバなど外部サーバ上に位置するリソース(たとえば、オーディオファイル、映像ファイル、デジタル写真、テキストファイル、構造化文書、またはアプリケーションなど)、実際の財産または知的財産(たとえば、彫刻、絵画、映画、ゲーム、楽曲、着想、写真、または書物など)、ゲーム、アクティビティ、着想もしくは理論、別の好適なコンセプト、または2以上のそのようなコンセプトに対応してもよい。コンセプト・ノード304は、ユーザによって提供されたコンセプトの情報、またはソーシャル・ネットワーキング・システム160を含む様々なシステムによって収集された情報に関連付けられてもよい。限定するものとしてではなく一例として、コンセプトの情報は、名前もしくはタイトル、1または複数の画像(たとえば、本の表紙の画像)、ロケーション(たとえば、住所または地理的ロケーション)、(URLに関連付けられる)ウェブサイト、連絡先情報(たとえば、電話番号または電子メール・アドレス)、他の好適なコンセプト情報、またはそのような情報の任意の好適な組合せを含んでもよい。特定の実施形態では、コンセプト・ノード304は、コンセプト・ノード304に関連付けられている情報に対応する1または複数のデータ・オブジェクトに関連付けられてもよい。特定の実施形態では、コンセプト・ノード304は、1または複数のウェブ・ページに対応してもよい。
特定の実施形態では、ソーシャル・グラフ300内のノードは、ウェブ・ページを表しても、ウェブ・ページによって表されてもよい(「プロフィール・ページ」と呼ばれる)。プロフィール・ページは、ソーシャル・ネットワーキング・システム160によってホストされ、またはそこからアクセス可能であってもよい。また、プロフィール・ページは、サード・パーティ・システム170に関連付けられているサードパーティウェブサイト上でホストされてもよい。限定するものとしてではなく一例として、特定の外部ウェブ・ページに対応するプロフィール・ページは、その特定の外部ウェブ・ページであってもよく、プロフィール・ページが、特定のコンセプト・ノード304に対応してもよい。プロフィール・ページは、他のユーザのすべてまたは選択されたサブセットによって閲覧可能であってもよい。限定するものとしてではなく一例として、ユーザ・ノード302は、対応するユーザがコンテンツを追加し、宣言をし、または他の方法で自分を表現する、対応するユーザプロフィールページを有してもよい。限定するものとしてではなく別の例として、コンセプト・ノード304は、1または複数のユーザがコンセプト・ノード304に対応するコンセプトに特に関連してコンテンツを追加し、宣言をし、またはユーザ自身を表現する、対応するコンセプトプロフィールページを有してもよい。
特定の実施形態では、コンセプト・ノード304は、サード・パーティ・システム170によってホストされるサードパーティウェブページまたはリソースを表す。サードパーティウェブページまたはリソースは、要素の中でもとりわけ、コンテンツ、選択可能なアイコンもしくは他のアイコン、またはアクションもしくはアクティビティを表す(たとえば、JavaScript(登録商標)、AJAX、またはPHPコードにより実装される)他の対話可能なオブジェクトを含んでもよい。限定するものとしてではなく一例として、サードパーティウェブページは、「いいね」、「チェックイン」、「食べる」、「推奨する」、または別の好適なアクションまたはアクティビティなど、選択可能なアイコンを含んでもよい。サードパーティウェブページを閲覧するユーザは、アイコンの1つ(たとえば、「食べる」)を選択することによって、アクションを行う。これによって、クライアント・システム130は、ユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム160へ送信する。ソーシャル・ネットワーキング・システム160は、メッセージに応答して、ユーザに対応するユーザ・ノード302とサードパーティウェブページまたはリソースに対応するコンセプト・ノード304との間にエッジ(たとえば、「食べる」エッジ)を作成し、エッジ306を1または複数のデータ・ストア内に記憶する。
特定の実施形態では、ソーシャル・グラフ300内の1対のノードが、1または複数のエッジ306によって互いに接続されてもよい。1対のノードを接続するエッジ306は、その対のノード間の関係を表す。特定の実施形態では、エッジ306は、1対のノード間の関係に対応する1または複数のデータ・オブジェクトまたは属性を含み、または表してもよい。限定するものとしてではなく一例として、第1のユーザは、第2のユーザが第1のユーザの「友達」であることを示してもよい。この示したことに応答して、ソーシャル・ネットワーキング・システム160は、「友達要求」を第2のユーザに送信してもよい。第2のユーザが「友達要求」を確認した場合、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ300内で第1のユーザのユーザ・ノード302を第2のユーザのユーザ・ノード302に接続するエッジ306を作成し、エッジ306をソーシャル・グラフ情報としてデータ・ストア164の1または複数に記憶してもよい。図3の例では、ソーシャル・グラフ300は、ユーザ「A」とユーザ「B」とのユーザ・ノード302間の友達関係を示すエッジ306と、ユーザ「C」とユーザ「B」とのユーザ・ノード302間の友達関係を示すエッジとを含む。本開示は特定のユーザ・ノード302を接続する特定の属性を有する特定のエッジ306について記載し示しているが、本開示は、ユーザ・ノード302を接続する任意の好適な属性を有する任意の好適なエッジ306を企図する。限定するものとしてではなく一例として、エッジ306は、友達関係、家族関係、仕事関係もしくは雇用関係、ファン関係、フォロワー関係、ビジタ関係、加入者関係、主従関係、相互的関係、非相互的関係、別の好適なタイプの関係、または2以上のそのような関係を表してもよい。さらに、本開示は一般にノードを接続されているものとして記載しているが、本開示は、ユーザまたはコンセプトも接続されているものとして記載している。本明細書では、接続されているユーザまたはコンセプトへの言及は、適切な場合、ソーシャル・グラフ300内で1または複数のエッジ306によって接続されているユーザまたはコンセプトに対応するノードに及ぶ。
特定の実施形態では、ユーザ・ノード302とコンセプト・ノード304との間のエッジ306は、コンセプト・ノード304に関連付けられているコンセプトに向かってユーザ・ノード302に関連付けられているユーザによって行われる特定のアクションまたはアクティビティを表してもよい。限定するものとしてではなく一例として、図3に示されているように、ユーザは、コンセプトに対して「いいね」と表明することができ、コンセプトに「通った」、コンセプトを「プレイした」、「聴いた」、「調理した」、コンセプトに「勤務した」、またはコンセプトを「見た」のであり、コンセプトのそれぞれは、エッジタイプまたはサブタイプに対応する。コンセプト・ノード304に対応するコンセプトプロフィールページは、たとえば、選択可能な「チェックイン」アイコン(たとえば、クリッカ可能な「チェックイン」アイコン)または選択可能な「お気に入りに追加」アイコンを含んでもよい。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャル・ネットワーキング・システム160は、それぞれのアクションに対応するユーザのアクションに応答して「お気に入り」エッジ、または「チェックイン」エッジを作成する。限定するものとしてではなく別の例として、ユーザ(ユーザ「C」)は、特定のアプリケーション(オンラインミュージックアプリケーションであるSPOTIFY)を使用して特定の楽曲(「イマジン」)を聴く。この場合には、ソーシャル・ネットワーキング・システム160は、ユーザに対応するユーザ・ノード302と楽曲およびアプリケーションに対応するコンセプト・ノード304との間に「聴いた」エッジ306および「使用した」エッジ(図3に図示)を作成し、ユーザがその楽曲を聞き、そのアプリケーションを使用したことを示す。さらに、ソーシャル・ネットワーキング・システム160は、楽曲およびアプリケーションに対応するコンセプト・ノード304間に「プレイした」エッジ306(図3に図示)を作成し、特定の楽曲が特定のアプリケーションによってプレイされたことを示す。この場合には、「プレイした」エッジ306は、外部アプリケーション(SPOTIFY)によって外部オーディオファイル(楽曲「イマジン」)に対して行われたアクションに対応する。本開示は、ユーザ・ノード302とコンセプト・ノード304とを接続する特定の属性を有する特定のエッジ306について記載しているが、本開示は、ユーザ・ノード302とコンセプト・ノード304とを接続する任意の好適な属性を有する任意の好適なエッジ306を企図する。さらに、本開示は、ユーザ・ノード302とコンセプト・ノード304の間の単一の関係を表すエッジについて記載しているが、本開示は、ユーザ・ノード302とコンセプト・ノード304との間の1または複数の関係を表すエッジを企図する。限定するものとしてではなく一例として、エッジ306は、ユーザが「いいね」と表明したこと、および特定のコンセプトを使用したことの両方を表してもよい。あるいは、別のエッジ306が、ユーザ・ノード302とコンセプト・ノード304(図3に示されているように、ユーザ「E」に関するユーザ・ノード302と「SPOTIFY」に関するコンセプト・ノード304)との間の関係の各タイプ(または単一の関係の複数)を表してもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、ソーシャル・グラフ300内でユーザ・ノード302とコンセプト・ノード304との間にエッジ306を作成する。限定するものとしてではなく一例として、(たとえば、ウェブ・ブラウザまたはユーザのクライアント・システム130によってホストされる専用アプリケーションを使用することによってなど)コンセプトプロフィールページを閲覧するユーザは、「いいね」アイコンをクリックまたは選択することによって、ユーザがコンセプト・ノード304によって表されたコンセプトに対して「いいね」と表明することを示す。これによって、ユーザのクライアント・システム130は、コンセプトプロフィールページに関連付けられているコンセプトに対してユーザが「いいね」と表明することを示すメッセージをソーシャル・ネットワーキング・システム160へ送信する。ソーシャル・ネットワーキング・システム160は、そのメッセージに応答して、ユーザとコンセプト・ノード304との間の「いいね」エッジ306によって示されているように、ユーザに関連付けられているユーザ・ノード302とコンセプト・ノード304との間にエッジ206を作成してもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、エッジ306を1または複数のデータ・ストア内に記憶してもよい。特定の実施形態では、エッジ306は、特定のユーザ・アクションに応答してソーシャル・ネットワーキング・システム160によって自動的に形成されてもよい。限定するものとしてではなく一例として、第1のユーザが写真をアップロードし、映画を見たか、または楽曲を聴いた場合、エッジ306は、第1のユーザに対応するユーザ・ノード302とそれらのコンセプトに対応するコンセプト・ノード304との間に形成されてもよい。本開示は、特定のエッジ306を特定の方法で形成することについて記載しているが、本開示は、任意の好適なエッジ306を任意の好適な方法で形成することを企図する。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、互いについて様々なソーシャルグラフ・エンティティのソーシャル・グラフ親和性(本明細書では「親和性」と呼ばれる)を決定してよい。親和性は、ユーザ、コンセプト、コンテンツ、アクション、広告、オンライン・ソーシャル・ネットワークに関連付けられている他のオブジェクト、またはそれらの任意の適切な組み合わせなど、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間における関係の強さまたは関心のレベルを表すことができる。また、親和性は、サード・パーティ・システム170または他の適切なシステムに関連付けられているオブジェクトに関して決定されてもよい。各ユーザ、主題、またはコンテンツのタイプについて、ソーシャルグラフ・エンティティに対する総合親和性が確立されてもよい。総合親和性は、ソーシャルグラフ・エンティティに関連付けられているアクションまたは関係の継続的なモニタリングに基づき、変化し得る。本開示では特定の方式による特定の親和性の決定について記載するが、本開示では任意の適切な方式による任意の適切な親和性の決定が想定される。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、親和性係数(本明細書では「係数」と呼ばれる)を用いてソーシャル・グラフ親和性を測定または定量してよい。この係数は、オンライン・ソーシャル・ネットワークに関連付けられている特定のオブジェクト間の関係の強さを表してよい、または定量してよい。また、この係数は、ユーザが特定のアクションを行う予測される確率を測定する確率または関数を表してもよく、この確率または関数は、そのアクションについてのそのユーザの関心に基づく。このようにして、ユーザの将来のアクションは、ユーザの以前のアクションに基づいて予測されることができ、その係数は少なくとも部分的にはユーザのアクションの履歴により計算され得る。係数は、オンライン・ソーシャル・ネットワークの内外の任意の数のアクションを予測するために用いられてよい。限定ではなく一例として、これらのアクションは、メッセージの送信、コンテンツのポスト、またはコンテンツに対するコメントなど、様々なタイプの通信、プロフィール・ページ、メディア、または他の適切なコンテンツのアクセスまたは閲覧など、様々なタイプの観察アクション、同じグループにある、同じ写真にタグ付けされる、同じロケーションにおいてチェックインされる、もしくは同じイベントに出席する、または他の適切なアクションなど、2つ以上のソーシャルグラフ・エンティティに関する様々なタイプの同時発生情報、または他の適切なアクションを含んでよい。本開示では特定の方式による特定の親和性の測定について記載するが、本開示では任意の適切な方式による親和性の測定が想定される。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、係数を計算するために様々な因子を用いてよい。これらの因子は、例えば、ユーザ・アクション、オブジェクト間の関係のタイプ、ロケーション情報、他の適切な因子、またはそれらの任意の組み合わせを含んでよい。特定の実施形態では、係数を計算するとき、様々な因子に異なる重み付けを行ってもよい。各因子の重みは静的であってもよく、例えば、ユーザ、関係のタイプ、アクションのタイプ、ユーザのロケーションなどによって変化してもよい。因子のための格付け、そのユーザに対する総合的な係数を決定するべく、それらの重みにしたがって組み合わせられてもよい。限定ではなく一例として、特定のユーザ・アクションには格付けおよび重みの両方が割り当てられる一方、その特定のユーザ・アクションに関連付けられている関係には、格付けと相互に関連する重みとが割り当てられる(例えば、したがって重みが計100%になる)。特定のオブジェクトに対するユーザの係数を計算するために、そのユーザのアクションに割り当てられた格付けが、例えば、総合的な係数の60%を含む一方、そのユーザとそのオブジェクトとの間の関係は、総合的な係数の40%を含んでもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、係数を計算するために用いられる様々な因子の重みを決定するときに、例えば、情報がアクセスされてからの時間、減衰因子、アクセスの頻度、情報に対する関係またはそれに関する情報がアクセスされたオブジェクトに対する関係、オブジェクトに接続されたソーシャルグラフ・エンティティに対する関係、ユーザ・アクションの短期的または長期的な平均、ユーザ・フィードバック、他の適切な変数、またはそれらの任意の組み合わせなど、様々な変数を考慮してもよい。限定ではなく一例として、係数は、係数を計算するとき、より最近のアクションがより関連性を有するように、特定のアクションによって提供される信号の強さを時間とともに減衰させる減衰因子を含んでもよい。格付けおよび重みは、その係数が基づくアクションの継続的なトラッキングに基づいて、継続的に更新されてもよい。任意のタイプのプロセスまたはアルゴリズムが、各因子およびそれらの因子に割り当てられる重みの格付けの割当、結合、平均化などに用いられてよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、履歴のアクションおよび過去のユーザ応答、またはデータを様々なオプションに晒し応答を測定することによってユーザから集められたデータに基づきトレーニングされた機械学習アルゴリズムを用いて、係数を決定してもよい。本開示では特定の方式による特定の係数の計算について記載するが、本開示では任意の適切な方式による係数の計算が想定される。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、ユーザのアクションに基づき係数を計算してもよい。ソーシャル・ネットワーキング・システム160は、オンライン・ソーシャル・ネットワーク上、サード・パーティ・システム170上、他の適切なシステム上、またはそれらの任意の組み合わせ上において、そのようなアクションを監視してよい。任意の適切なタイプのユーザ・アクションのトラッキングまたは監視が行われてよい。典型的なユーザ・アクションには、プロフィール・ページを閲覧すること、コンテンツを作成またはポストすること、コンテンツと対話すること、グループに参加すること、イベントへの参加をリストまたは確認すること、ロケーションにチェックインすること、特定のページに「いいね」と表明すること、ページを作成すること、およびソーシャル・アクションを行う他のタスクを実行することが含まれる。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、特定のタイプのコンテンツを有するユーザのアクションに基づき、係数を計算してよい。コンテンツは、オンライン・ソーシャル・ネットワーク、サード・パーティ・システム170、または別の適切なシステムに関連付けられてよい。コンテンツは、ユーザ、プロフィール・ページ、ポスト、ニュース・ストーリ、ヘッドライン、インスタント・メッセージ、チャット・ルーム会話、電子メール、広告、写真、動画、音楽、他の適切なオブジェクト、またはそれらの任意の組み合わせを含んでよい。ソーシャル・ネットワーキング・システム160は、ユーザのアクションを、そのアクションのうちの1つ以上が主題、コンテンツ、他のユーザなどに対する親和性を示すか否かを判定するために分析してよい。限定ではなく一例として、ユーザが、「コーヒー」またはその変形に関係するコンテンツを頻繁にポストする場合、ソーシャル・ネットワーキング・システム160は、ユーザがコンセプト「コーヒー」に関して高い係数を有すると決定してもよい。特定のアクションまたはアクションのタイプは、他のアクションよりも大きな重み、より高い格付け、またはその両方を割り当てられ、これが総合的な計算された係数に影響を与えてもよい。限定ではなく一例として、第1のユーザが第2のユーザに電子メールを送る場合、そのアクションに対する重みまたは格付けは、第1のユーザが単に第2のユーザのユーザ・プロファイル・ページを閲覧する場合よりも高くてもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、特定のオブジェクトの間の関係のタイプに基づき係数を計算してもよい。ソーシャル・グラフ300を参照すると、ソーシャル・ネットワーキング・システム160は、係数を計算するとき、特定のユーザ・ノード302およびコンセプト・ノード304を接続するエッジ306の数および/またはタイプを分析してもよい。限定ではなく一例として、配偶者タイプのエッジ(2人のユーザが結婚していることを表す)によって接続されているユーザ・ノード302は、友達タイプのエッジによって接続されているユーザ・ノード302より高い係数を割り当てられてもよい。換言すれば、特定のユーザのアクション及び関係に割り当てられた重みに応じて、総合親和性は、ユーザの友達に関するコンテンツに対するよりもユーザの配偶者に関するコンテンツに対してより高くなるように決定されてもよい。特定の実施形態では、ユーザが別のオブジェクトと有する関係は、そのオブジェクトについての係数の計算に関して重みおよび/またはユーザのアクションの格付けに影響を与えてもよい。限定ではなく一例として、ユーザが第1の写真にタグ付けされているが、第2の写真にいいねと表明しかしない場合、コンテンツに対してタグ付けタイプの関係を有することにはコンテンツに対していいねタイプの関係を有するよりも高い重みおよび/または格付けが割り当てられることから、ソーシャル・ネットワーキング・システム160は、ユーザが第2の写真より第1の写真に関して高い係数を有すると決定してもよい。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、1以上の第2のユーザが特定のオブジェクトに対して有する関係に基づき、第1のユーザのための係数を計算してもよい。換言すれば、他のユーザがオブジェクトに対して有する接続および係数は、そのオブジェクトに対する第1のユーザの係数に影響を与えてもよい。限定ではなく一例として、第1のユーザが1以上の第2のユーザに接続されるか、1以上の第2のユーザに対する高い係数を有し、それらの第2のユーザが特定のオブジェクトに接続されるか、特定のオブジェクトに対する高い係数を有する場合、ソーシャル・ネットワーキング・システム160は、その特定のオブジェクトに対して第1のユーザが比較的高い係数を有するべきであると決定してもよい。特定の実施形態では、係数は特定のオブジェクト間の隔たりの程度に基づいてもよい。係数が低いほど、ソーシャル・グラフ300において第1のユーザに間接的に接続されているユーザのコンテンツ・オブジェクトへの関心を第1のユーザが共有する見込みが減少することを表してもよい。限定ではなく一例として、ソーシャル・グラフ300においてより近くにある(すなわち、より隔たりの程度が小さい)ソーシャルグラフ・エンティティ同士は、ソーシャル・グラフ300においてより遠くにあるエンティティ同士よりも高い係数を有してもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、ロケーション情報に基づき係数を計算してもよい。互いに地理的に近くにあるオブジェクト同士は、より離れたオブジェクト同士よりも、より関連している、または互いにより高い関心を有すると考えられてよい。特定の実施形態では、特定のオブジェクトに対するユーザの係数は、そのユーザに関連付けられている現在のロケーション(またはそのユーザのクライアント・システム130のロケーション)に対するそのオブジェクトのロケーションの近接度に基づいてもよい。第1のユーザは、第1のユーザのより近くにある他のユーザまたはコンセプトに、より高い関心を有し得る。限定ではなく一例として、ユーザが空港から1マイル(約1.6km)に位置し、ガソリン・スタンドから2マイル(約3.2km)に位置する場合、ソーシャル・ネットワーキング・システム160は、そのユーザに対する空港の近接度に基づき、ユーザがガソリン・スタンドよりも空港に対しより高い係数を有すると決定してもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、係数情報に基づきユーザに関する特定のアクションを行ってもよい。係数を用いて、ユーザが特定のアクションを行うか否かを、そのアクションについてのそのユーザの関心に基づき予測することができる。係数は、広告、検索結果、ニュース・ストーリ、メディア、メッセージ、通知、または他の適切なオブジェクトなど、ユーザに対する任意のタイプのオブジェクトを生成または提示するときに用いられてよい。また、適切な場合、係数は、そのようなオブジェクトのランクおよび順序を決定するためにも利用されて得る。このように、ソーシャル・ネットワーキング・システム160は、ユーザの関心および現在の状況に関連する情報を提供してもよく、それによって、それらがそのような関心を有する情報を見出す見込みを高める。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、係数情報に基づきコンテンツを生成してもよい。コンテンツ・オブジェクトは、ユーザに特有の係数に基づき提供または選択されてもよい。限定ではなく一例として、係数はユーザに対するメディアを生成するために用いられてもよく、ユーザには、そのメディア・オブジェクトに関してそのユーザが高い総合係数を有するメディアが、提示される。限定ではなく別の一例として、限定ではなく一例として、係数はユーザに対する広告を生成するために用いられてもよく、ユーザには、その広告オブジェクトに関してそのユーザが高い総合係数を有する広告が、提示される。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、係数情報に基づき検索結果を生成してもよい。特定のユーザのための検索結果は、問い合わせを行うユーザに関して検索結果に関連付けられている係数に基づき、得点またはランクを決定されてよい。限定ではなく一例として、より高い係数を有するオブジェクトに対応する検索結果は、より低い係数を有するオブジェクトに対応する結果よりも、検索結果のページにおいて、より高いランクを決定されてもよい。
特定の実施形態では、ソーシャル・ネットワーキング・システム160は、特定のシステムまたはプロセスからの係数の要求に応じて、係数を計算してもよい。ユーザが所与の状況において取り得る(あるいは対象となる)可能性の高いアクションを予測するために、任意のプロセスによって、ユーザの計算された係数が要求されてよい。また、この要求は、係数を計算するために用いられる様々な因子に用いる1組の重みを含んでもよい。この要求は、オンライン・ソーシャル・ネットワーク上で動作するプロセスから、サード・パーティ・システム170から(例えば、APIまたは他の通信チャンネルを介して)、または別の適切なシステムから届いてよい。要求に応じて、ソーシャル・ネットワーキング・システム160は、係数を計算してよい(または、係数が以前に計算され記憶されている場合、その係数情報にアクセスしてよい)。特定の実施形態では、ソーシャル・ネットワーキング・システム160は、特定のプロセスに関する親和性を測定してもよい。様々なプロセス(オンライン・ソーシャル・ネットワークに対して内外の両方)は、特定の1つのオブジェクトまたは複数のオブジェクトからなる組に対する係数を要求してもよい。ソーシャル・ネットワーキング・システム160は、親和性の尺度を要求した特定のプロセスに関連する親和性の尺度を提供してもよい。このように、各プロセスは、プロセスが親和性の尺度を用いる様々なコンテキストに適合する親和性の尺度を受信する。
ソーシャル・グラフ親和性および親和性係数に関して、特定の実施形態では、米国特許出願第11/503093号(2006年8月11日提出)、米国特許出願第12/977027号(2010年12月22日提出)、米国特許出願第12/978265号(2010年12月23日受信)、および米国特許出願第13/632869号、において開示されている1以上のシステム、構成要素、要素、機能、方法、動作、または工程を利用してよい。それらの文献の各々を引用によって本明細書に援用する。
特定の実施形態では、例えば、個々のオブジェクトがどのように互いに関係するかに基づいて、オブジェクトのセットを階層として編成することができる。オブジェクト階層は、任意の数のレベルを有することができ、各レベルに、任意の数のオブジェクトが存在することができる。階層内の特定のオブジェクト間に親子関係(parent-child relationship)または兄弟関係(sibling relationship)が存在することができる。オブジェクト階層内で、親オブジェクトは、その子オブジェクトのレベルより1レベル上にある。2つの兄弟オブジェクトは同一レベルにあり、同一の親オブジェクトを共有する。さらに、階層の任意の部分を、それ自体の中の1階層とみなすこともできる。
図4は、いくつかのオブジェクト410を含む例示的なオブジェクト階層400の一部を示す。図4は、実際にはオブジェクト階層の視覚表現である。各ノードは、階層内の特定のオブジェクトを表し、2つのノードを接続する各エッジは、2つの対応するオブジェクト間の親子関係を表す。
特定の実施形態では、階層内のオブジェクトは親を有することがあり、または有さないことがある。オブジェクトが親を有さない場合、「ルート」オブジェクトと呼ばれることがある(例えば、オブジェクト410A)。通常、ルート・オブジェクトは、階層の第1のレベルまたは最上端のレベルに配置される。特定の実施形態では、階層内のオブジェクトは、子を有することがあり、またはどんな子も有さないことがある。オブジェクトがどんな子も有さない場合、「リーフ」または「終端」オブジェクトと呼ばれることがある(例えば、オブジェクト410B)。オブジェクトが子を有する場合(例えば、オブジェクト410C)、オブジェクトは任意の数の子を有することができる。さらに、同じ親を共有するオブジェクトは、互いの「兄弟」と呼ばれることがある。例えば、図4では、オブジェクト410Cは、オブジェクト410Dおよび410Bの親である。オブジェクト410Dおよび410Bは、オブジェクト410Cの子であり、互いに対する兄弟である。したがって、オブジェクトの階層(例えば、オブジェクト階層400)は、個々のオブジェクト(例えば、オブジェクト410)自体を含むだけではなく、特定のオブジェクト間の関係も示す。さらに、階層内の特定のオブジェクトの位置は、階層内の他のオブジェクトとの関係を示すことができる。
オブジェクト410は様々なタイプでよく、本開示は任意の適用可能なオブジェクト・タイプを企図する。限定はしないが例えば、「オブジェクト」という用語は、限定はしないが、イメージ、ビデオ、キャプション、テキスト・ブロックまたはボックス、ユーザ・インターフェース要素、クリッカブル・リンク、ニュースフィード・ストーリー、他のオブジェクトに対する参照、広告、カレンダ・イベント、グラフィカルにレンダリングすることのできるオープン・グラフ解析を表示する単位、アプリケーション、ウェブサイト、ウェブ・ページ、ブック、章を含む、任意のタイプのコンテンツを指す。特定の実施形態では、オブジェクトの別のより大きい階層の一部であるオブジェクトの階層が与えられると、特定のオブジェクト間の階層関係(例えば、親子または兄弟関係、階層内のオブジェクトの位置)が、これらのオブジェクトがユーザ・インターフェースのコンテキスト(context)でどのように振る舞うか、またはどのようにオブジェクトがユーザに提示されるかについてのいくつかの側面を指示することができる。
1例を挙げると、コンピューティング装置のデスクトップのコンテキストでは、デスクトップは親オブジェクト、時には階層のルート・オブジェクトでよく、その子オブジェクトは、デスクトップ上で利用可能な個々のソフトウェア・アプリケーションである。ソフトウェア・アプリケーションは、それ自体がデスクトップの子オブジェクトのうちの1つであるが、そのソフトウェア・アプリケーションの個々の構成要素の親オブジェクトでもある。異なるソフトウェア・アプリケーションは異なる構成要素を含むことができる。例えば、デジタル・ブックを管理するソフトウェア・アプリケーション(例えば、ブック・リーダー・アプリケーション(book reader application))について、その構成要素は、利用可能なデジタル・ブック、各ブックの個々の章、各章のページ、および各ページ上のテキスト、イメージ、ビデオ、オーディオ、または他のコンテンツもしくはメディア要素を含むことができる。これらのそれぞれはまた、階層内のオブジェクト(例えば、ユーザ・インターフェース構成要素)に対応する。より具体的には、階層内で、デジタル・ブック・アプリケーションはデジタル・ブックの親オブジェクトでよい。デジタル・ブックは、そのブックの個々の章の親オブジェクトでよい。章は、それ自体がブックの子オブジェクトのうちの1つであるが、章内のページの親オブジェクトでもある。ページは、そのページ上のテキスト、イメージ、ビデオ、オーディオ、または他のコンテンツもしくはメディア要素の親オブジェクトである。テキスト・ブロック、イメージ、ビデオ、オーディオ、または他のコンテンツもしくはメディア要素は、それが属するページの子オブジェクトのうちの1つである。同様に、ニュース・フィードを管理するソフトウェア・アプリケーションでは、その構成要素は、各チャネル内の個々のニュース・チャネルおよびニュース・ストーリを含むことができる。これらのそれぞれはオブジェクトに対応することができる。階層内で、ニュース・フィード・アプリケーションは、それ自体がデスクトップの子オブジェクトのうちの1つであるが、ニュース・チャネルの親オブジェクトでもある。ニュース・チャネルは、そのチャネル内に含まれるニュース・ストーリの親オブジェクトである。
別の例として、インターネットまたはワールド・ワイド・ウェブのコンテキストでは、インターネットは、その子オブジェクトが個々のウェブサイトである親オブジェクトである。ウェブサイトは、それ自体がインターネットの子オブジェクトのうちの1つであるが、そのウェブサイトの個々のウェブ・ページの親オブジェクトでもある。ウェブ・ページは、それ自体がそのウェブ・ページが属するウェブサイトの子オブジェクトのうちの1つであるが、ウェブ・ページ内に含まれるテキスト、イメージ、ビデオ、オーディオ、またはリンク(例えば、ユニフォーム・リソース・ロケータ(URL))の親オブジェクトである。各テキスト・ブロック、イメージ、ビデオ、オーディオ、またはリンクはまた、階層内の特定のオブジェクトに対応する。
第3の例として、ソーシャル・ネットワーキング・システム160によって実装されるソーシャル・ネットワーキング・ウェブサイトなどのウェブサイトを、ソーシャル・ネットワーキング・ウェブサイトのコンテンツをナビゲートするための階層構造として構成することもできる。このコンテキストでは、ソーシャル・ネットワーキング・ウェブサイトは、その子オブジェクトがウェブサイトの構成要素(例えば、フォト・アルバム、ユーザ・プロファイル・ページなど)である親オブジェクトでよい。例えば、フォト・アルバムは、それ自体がソーシャル・ネットワーキング・ウェブサイトの子オブジェクトであるが、親オブジェクトであり、アルバム内の個々のフォトは、フォト・アルバムの子オブジェクトでよい。ユーザのプロファイル・ページをそのような階層式に構築することもできる。プロファイル・ページ自体を親オブジェクトとみなすことができ、プロファイル・ページ上の個々のオブジェクトは、プロファイル・ページの子オブジェクトでよい。特定の実施形態では、(例えば、ユーザへの提示のために)プロファイル・ページを、限定はしないが例えば、フォト、フォト・アルバム、チェックイン、他のユーザからのコメント、出席したイベント、タグ、ユーザがプロファイル・ページに追加したアプリケーション、ストーリー、ユーザが聴取した歌、プレイリストなどのオブジェクトのリニア・タイムライン(linear timeline)とみなすことができ、リニア・タイムラインとしてレンダリングすることができる。これらの様々なタイプのオブジェクトはすべて、プロファイル・ページの子でよく、または複数のレベルとしてさらに構成することができる。いくつかの形態では、ユーザのプロファイル・ページは、ユーザの教育情報および職業情報、ユーザのパブリック「ウォール(wall)」、ユーザのソーシャル接続などの任意の数のセクションを含むことができる。次いで、上記の様々なタイプのオブジェクトを特定のセクションに分割することができる。
特定の実施形態では、オブジェクト410は、ユーザ・インターフェースの構成要素でもよい。この場合、オブジェクト階層400はユーザ・インターフェースに対応することができ、各オブジェクト410は、ユーザ・インターフェースの特定の構成要素に対応することができる。ユーザ・インターフェースは、様々なタイプの構成要素を有することができ、本開示は、任意の適用可能なユーザ・インターフェース構成要素タイプを企図する。例えば、ユーザ・インターフェース構成要素(すなわち、オブジェクト410)は、ウィンドウ、セクション、タブ、イメージ、ビデオ、オーディオ、テキスト・ブロック、メニュー、アイコン、ボタン、チェックボックス、ウェブサイト、ウェブ・ページ、フレーム、クリッカブル・リンク、メッセージ、ポスト、または入力フィールドである。特定の実施形態では、ユーザが、限定はしないが例えば、オブジェクト410と対話し、オブジェクト410を閲覧し、読み、聴取し、操作し、または処理することができる場合、ユーザはオブジェクト410を消費することができる。例えば、いくつかのユーザによる消費可能オブジェクト(user-consumable object)410は、テキスト、イメージ、ビデオ、オーディオ、フィード(feed)、実行可能ファイル(executable)(例えば、アプリケーション・プログラムまたはゲーム)、ウェブサイト、ウェブ・ページ、デジタル・ブック、フォト・アルバム、ポスト、またはメッセージである。
特定の実施形態では、オブジェクト階層400に対応するユーザ・インターフェースが(例えば、クライアント・システム130上に)表示されるとき、対応するオブジェクト階層400の構造が、ユーザ・インターフェースの構造を反映することができる。オブジェクト階層400内に反映される、ユーザ・インターフェース内の個々の構成要素間の関係は、これらの構成要素がどのように編成され、ユーザに提示されるかに影響を及ぼす。ユーザ・インターフェースは、オブジェクト階層400の個々のレベルにそれぞれ対応する任意の数のレイヤを有することができる。オブジェクト階層400の特定のレベルのオブジェクト410(例えば、ユーザ・インターフェース構成要素)が、ユーザ・インターフェースの対応するレイヤ内に表示される。いくつかの形態では、ユーザ・インターフェースの最低または最下端のレイヤが、オブジェクト階層400の第1または最上端のレベルに対応する。したがって、ルート・オブジェクト410Aが、ユーザ・インターフェースの最低のレイヤ内に表示される。さらに、ユーザ・インターフェースでは、各オブジェクト410(例えば、ユーザ・インターフェース構成要素)が、親が存在する場合にその親が表示されるレイヤのすぐ上、かつ子が存在する場合にその子が表示されるレイヤのすぐ下のレイヤ内に表示される。兄弟オブジェクト410が同一のレイヤに表示される。したがって、ユーザ・インターフェースの構成要素の位置は、ユーザ・インターフェース内の他の構成要素との関係(例えば、親子または兄弟)を示す。
特定の実施形態では、ユーザ・インターフェース構成要素(例えば、イメージ、ビデオ、フォルダなど)を様々なディスプレイ・モードで表示することができる。1例を挙げると、ユーザ・インターフェース構成要素が表示エリア(例えば、電子装置の画面)全体またはほぼ全体を占有する「全画面」モードでユーザ・インターフェース構成要素を表示することができる。別の例として、ユーザ・インターフェース構成要素が別のユーザ・インターフェース構成要素内に含まれ、その別のユーザ・インターフェース構成要素の一部として表示される(例えば、イメージがウェブ・ページの一部として表示される)「オン・ページ」モードでユーザ・インターフェース構成要素を表示することができる。第3の例として、ユーザ・インターフェース構成要素が一連のユーザ・インターフェース構成要素の一部である(例えば、イメージが、同一のアルバムの別のイメージと共に表示され、またはブックの章が、同一のブックの別の章と共にブックの目次内に表示される)「索引」モードでユーザ・インターフェース構成要素を表示することができる。
特定の実施形態では、階層ユーザ・インターフェースを使用して、ユーザにコンテンツを提示することができる。そのようなユーザ・インターフェースは、「コンテンツ・フィード」または「ニュース・フィード」ユーザ・インターフェースと呼ばれることがある。コンテンツは、限定はしないが例えば、テキスト、アイコン、イメージ、ビデオ、オーディオ、ウェブ・ページ、ポスト、またはメッセージなどの任意のタイプおよびフォーマットである。本開示は、任意の適用可能なコンテンツ・タイプおよびフォーマットを企図する。特定の実施形態では、個々のコンテンツ・アイテム(例えば、テキスト、イメージ、ビデオ、オーディオ、ウェブ・ページ、ポスト、メッセージ、ニュース・ピースなど)を、コンテンツ・セクションと呼ばれる様々なカテゴリに編成することができる。例えば、関連するコンテンツ・アイテムを同一のコンテンツ・セクションに分類することができる。ユーザ・インターフェースは、任意の数のコンテンツ・セクションを含むことができ、各コンテンツ・セクションは、任意の数のコンテンツ・アイテムを含むことができる。階層的に、コンテンツ・セクションは、そのセクションに属するコンテンツ・アイテムの親である。例えば、休日旅行中に撮られた様々なフォトを同一のアルバムとして編成することができ、様々なフォト・アルバムをユーザ・インターフェースのフォト・セクションとして編成することができる。
特定の実施形態では、ユーザは、特定のコンテンツ・アイテムを消費し、または特定のコンテンツ・アイテムと対話することができる。例えば、ユーザがコンテンツ・アイテムをスクロールし、オープンし、閲覧し、聴取し、選択し、検討し、コンテンツ・アイテムに対してコメントし、クリックし、またはタップするとき、ユーザはコンテンツ・アイテムを消費し、またはコンテンツ・アイテムと対話することができる。本開示は、ユーザがコンテンツ・アイテムを消費し、またはコンテンツ・アイテムと対話するための任意の適用可能な手段を企図する。
前述のように、ユーザは、コンピューティング装置上で実行中のアプリケーションを通じてコンピューティング装置(例えば、モバイル装置、テレビジョン、パーソナル・コンピュータ、スマートフォン、タブレット・コンピュータなど)と対話することができる。アプリケーションは、例えば、ソーシャル・ネットワーキング・ウェブサイトに関連するニュース・フィード・アプリケーション、ゲーム、ウェブ・ブラウザ、電話もしくはテキスト・メッセージング・アプリケーション、連絡先もしくはアドレス帳アプリケーション、カメラもしくはフォト・アプリケーション、または任意の他の適切なタイプのアプリケーションでよい。アプリケーション内で、ユーザは、図5に示されるように、1つまたは複数の共有意図(sharing intents)にアクセスすることができる。図5の例では、各共有意図は、FACEBOOK、GMAIL、LINKEDIN、およびメッセージング・アプリケーションを含むコンピューティング装置上のアプリケーションに対応する。特定の実施形態では、ユーザはコンピューティング装置上のアプリケーションと対話する間に、(例えば、タッチ・スクリーン215または225などのコンピューティング装置の画面上で)1つまたは複数の対話要素をユーザに提示することができる。1例として、アプリケーションに関連するユーザ・インターフェースに関連して、ユーザに対話要素を提示することができる。例えば、ユーザがアプリケーションと対話する限り(アプリケーションがオープンされ、またはコンピューティング装置上で実行中である限り)対話要素が提示されるように、対話要素をユーザ・インターフェースと共に永続的に提示することができる。さらに別の例として、ユーザが対話するアプリケーションがある場合に、それがどのアプリケーションであるかの如何に関わらず、ユーザに対話要素を提示することができるように、何らかの特定のアプリケーション(または特定のアプリケーションについての関連するユーザ・インターフェース)とは関わりなくユーザに対話要素を提示することができる。特定の実施形態では、ユーザ・インターフェースはオブジェクト階層に関連付けられないことがある。さらに別の実施形態では、ユーザ・インターフェースをオブジェクト階層400に関連付けることができ、対話要素は、例えば、ユーザ・インターフェースの別のオブジェクトと同じレイヤ内(例えば、オブジェクト階層400の同じレベル内)でよく、またはユーザ・インターフェースの他のオブジェクトとは異なるレイヤ内(例えば、オブジェクト階層400の異なるレベル内)でよい。
特定の実施形態では、対話要素は、ソーシャル・グラフ300のノード(例えば、ユーザ・ノード302または概念ノード304)に対応することができる。1例として、対話要素は、ソーシャル・ネットワーキング・システム160のユーザ(例えば、コンピューティング装置のユーザの友人)、ソーシャル・ネットワーキング・システム160のユーザのグループ(例えば、コンピューティング装置のユーザが属するグループ)、またはエンティティ(例えば、コンピューティング装置のユーザが提携することのできるビジネス)に対応することができる。アプリケーションのユーザ・インターフェースと共にユーザに表示される対話要素の数Nは、画面サイズまたはコンピューティング装置(例えば、タブレット携帯電話、デスクトップ、テレビジョン、ラップトップなど)、アプリケーション、または任意の他の適切な基準に依存することができる。特定の実施形態では、ソーシャル・グラフ300内のユーザに関連するソーシャル・グラフ・ノードのランキングに基づいて、ユーザに表示される対話要素のセットを求めることができる。このランキングは、特定の実施形態では、前述のように、計算した係数に基づいて求めることができる。例えば、ユーザに関連する各ソーシャル・グラフ・ノードの係数を計算し、これらの計算した係数に基づいてノードをランク付けすることができる。ランキングはまた、例えば注目のアプリケーションに依存することができる。フォト・アプリケーションは、ブラウザまたはメッセージング・アプリケーションとは異なるノードのランキング(例えば、ソーシャル・ネットワーキング・システム160のユーザまたは他のユーザの活動に部分的に基づくランキング)を有することができる。ランキング内の上位N個のソーシャル・グラフ・ノードに対応する対話要素をユーザに表示することができる。1例として、ユーザの上位N人(例えば、5人)の友人に対応する対話要素をユーザに表示することができる。さらに、対話要素の構成(例えば、コンピューティング装置の画面上の位置、順序など)は、対話要素に対応するソーシャル・グラフ・ノードのランキングに依存することができる(例えば、最高ランクの対話要素が、画面の左上隅にある)。対話要素は、特定の実施形態では、ソーシャル・グラフ300に関連付けられないことがある。例えば、対話要素は、(以下でさらに説明する)第2のユーザ・インターフェースのオープンのみに対応することができる。
特定の実施形態では、コンピューティング装置のユーザによって対話要素を選択することができる。例として、対話要素を選択するユーザ入力は、(例えば、マウスやトラックパッドなどの入力/出力装置を使用して)対話要素をクリックすること、(例えば、スタイラスまたはユーザの指を使用して)対話要素をタップすること、対話要素をドラッグすること、または任意の他の適切なタッチもしくはジェスチャ(例えば、シングルタップ、ダブルタップ、ショートプレス、ロングプレス、スライド、スワイプ、フリップ、ピンチオープン、またはピンチクローズ)を含むことができる。様々なユーザ入力の結果、対話要素を選択することができ、本開示は、選択のための任意の適用可能なユーザ入力を企図する。さらに、コンピューティング装置により、異なるタイプのユーザ入力を異なるタイプの挙動にマッピングすることができる。例えば、ユーザは、コンピューティング装置の画面上の要素を押すことによって対話要素を選択することができる。ユーザは、特定の実施形態では、対話要素を選択し(例えば、押し)、対話要素を画面上の所望の位置にドラッグすることにより、画面上に引き続き表示するために対話要素を再配置することができる。ユーザはまた、対話要素をタップし、以下でさらに説明する第2のユーザ・インターフェースをオープンすることにより、対話要素を選択することができる。ユーザはまた、対話要素を選択し、画面の特定のエリア(例えば、コンテンツ・アイテムが提示されるエリア)にドラッグすることにより、第2のユーザ・インターフェースをオープンすることができる。さらに別の例として、ユーザは、アプリケーションのユーザ・インターフェースから対話要素にコンテンツ・アイテム(例えば、適宜、フォト、アルバム、リンク、オープン・グラフ・エッジもしくはノード、または任意の他のコンテンツ)をドラッグ・アンド・ドロップし、第2のユーザ・インターフェースをオープンすることができる。第2のユーザ・インターフェースがオープンされる特定の実施形態では、第2のユーザ・インターフェースがユーザによってクローズされ、あるいは棄却されるとき、アプリケーションについての元のユーザ・インターフェースをユーザに再び表示することができる。対話要素を棄却するユーザ入力は、前述のような、任意の適切なタッチまたはジェスチャを含むことができる。ユーザは、例えば、対話要素を押し、対話要素をコンピューティング装置の画面の「外に向かって」(例えば、コンピューティング装置の画面の端に向かって)ドラッグすることにより、対話要素を棄却するための入力を与えることができる。コンピューティング装置が対話要素を棄却するためのユーザ入力を受信した場合、対話要素をユーザに対する表示から除去することができる(例えば、コンピューティング装置の画面ディスプレイから除去することができる)。対話要素は、棄却されるとき、モバイル装置の画面から徐々に消滅する(例えば、フェードアウトする)ことができる。
特定の実施形態では、複数の対話要素のそれぞれの表示および機能は独立している。例えば、第2の対話要素とは関わりなく、第1の対話要素を選択し、棄却し、あるいは対話することができる。さらに別の実施形態では、1つまたは複数の対話要素の移動または棄却により、残りの対話要素の自動再配置が引き起こされる。
特定の実施形態では、コンピューティング装置が(例えば、前述のジェスチャまたはアクションのいずれかによって)対話要素を選択するユーザ入力を受信したとき、コンピューティング装置によって第2のユーザ・インターフェースがオープンされる。第2のユーザ・インターフェースは、例えば、メッセージまたはチャットを送ること、コンテンツ・アイテム(例えば、フォト、アルバム、リンク、オープン・グラフ・エッジもしくはノードなど)を共有すること、または特定のユーザのプロファイルを閲覧することを含む様々なオプションをユーザに提供するコンテキスト・メニューでよい。別の例として、コンピューティング装置のユーザが、選択した対話要素に対応するソーシャル・グラフ300のノードに関連するユーザまたは概念がある場合にその関連するユーザまたは概念と対話または通信することを可能にするメッセージングまたはチャット・アプリケーションに第2のユーザ・インターフェースを関連付けることができる。例えば、コンピューティング装置のユーザは、第2のユーザから受信した1つまたは複数のメッセージを読み、もしくはその1つまたは複数のメッセージに応答し、第2のユーザに対するメッセージもしくはチャットを作成し、または(選択した対話要素に対応するユーザ・ノードによって表すことのできる)第2のユーザとコンテンツ・アイテムを共有することができる。対話要素は、対話要素に対応するユーザまたは概念とコンテンツを共有するための共有意図として機能することができる。選択した対話要素がソーシャル・グラフ300のノードに対応しない特定の実施形態では、第2のユーザ・インターフェースは、ユーザがソーシャル・ネットワーキング・システム160内の任意のユーザまたは概念と対話または通信することを可能にすることができる。
特定の実施形態では、第2のユーザ・インターフェースがオープンされたとき、コンピューティング装置のユーザに関連する情報、選択した対話要素に対応するソーシャル・グラフのノード、またはユーザに表示されるアプリケーション/第1のユーザ・インターフェースに関連するコンテンツに、第2のユーザ・インターフェースを自動的に関連付けることができる。1例として、コンピューティング装置のユーザは、ブラウジング・アプリケーション内でウェブサイトを閲覧することができる。ユーザは、ソーシャル・ネットワーキング・システム160内のユーザの友人に対応する対話要素を選択することができる。メッセージング・アプリケーションに対応する第2のユーザ・インターフェースがオープンすることができ、ユーザが他のユーザとコンテンツを共有することを可能にする。この例では、第2のユーザ・インターフェースが、事前に入力された(pre-populate)情報を自動的に含むメッセージと共にオープンすることができる。事前ポピュレートされた情報は、例えば、コンピューティング装置のユーザについての識別情報を有する「from」フィールドを含むことができる。識別情報は暗黙的であることがあり、コンピューティング装置のユーザに表示されないことがある。事前に入力された情報はまた、選択した対話要素に対応するユーザの友人についての識別情報を含む「to」フィールドをも含むことができる。さらに、事前ポピュレートされた情報は、例えばウェブサイト・コンテンツなどの、ブラウジング・アプリケーションからのコンテンツを含むことができる。コンテンツは、例えば、メッセージ内にインラインで、または添付ファイルとして含まれることがある。メッセージング・アプリケーションに対応する第2のユーザ・インターフェースの例では、メッセージング・アプリケーションは、ユーザがさらなる情報(タイプされたメッセージなど)を含めることを可能にすることができ、メッセージング・アプリケーションはまた、ユーザにさらなる情報(例えば、友人との間の最近のメッセージ履歴、友人のステータスなど)を表示することができる。
特定の実施形態では、コンピューティング装置によってオープンされる第2のユーザ・インターフェースは、コンピューティング装置上で実行中のアプリケーションとは関わりなく機能することができる。1例として、ユーザがウェブ・ブラウザ・アプリケーションでブラウジングしている場合、ユーザに対話要素が表示され、ユーザは対話要素を選択し、第2のユーザ・インターフェース(例えば、メッセージング・アプリケーション)をオープンすることができ、第2のユーザ・インターフェースは、ウェブ・ブラウザ・アプリケーションを終了させ、あるいはその活動を変更させることなく、ウェブ・ブラウザ・アプリケーションとは関わりなく機能することができる。別の実施形態では、第2のユーザ・インターフェースは、元のユーザ・インターフェースと同じアプリケーションの一部(例えば、共有またはメッセージング機能を有するウェブ・ブラウザ・アプリケーションの一部)でよい。
特定の実施形態では、現在のところアプリケーションがオープンされておらず、アクティブではないコンピューティング装置とユーザが対話する間、上記で詳細に説明したように、ソーシャル・グラフ300の1つまたは複数のノードに関連付けることのできる1つまたは複数の対話要素を(例えば、コンピューティング装置のホーム画面またはロック画面上で)ユーザに提示することができる。対話要素を永続的に表示することができ、特定の実施形態では、コンピューティング装置が(例えば、前述のジェスチャまたはアクションのいずれかによって)対話要素を選択するユーザ入力を受信したとき、上記で詳細に説明したように、ユーザ・インターフェースがコンピューティング装置によってオープンされる。
図6Aに、モバイル・コンピューティング装置上のブラウザ・アプリケーションに関連する例示的ユーザ・インターフェース600を示す。モバイル・コンピューティング装置が図6Aの例では示されているが、例えば、パーソナル・コンピュータ、テレビジョン、ラップトップ・コンピュータなどを含む任意の適切なコンピューティング装置を使用することができる。ウェブページ602を含むコンテンツがユーザ・インターフェース内に表示される。さらに、ソーシャル・ネットワーキング・システム160のユーザに対応する対話要素604と、ソーシャル・ネットワーキング・システム160の何らかの特定のユーザに対応しない対話要素606とを含む複数の対話要素がユーザ・インターフェースと共に(この例では、ユーザ・インターフェース600の部分として)表示される。この場合、対話要素が直列に、(例えば、前述のようなランキング方式に基づいて)ソーシャル・ネットワーキング・システム160内のコンピューティング装置のユーザの上位5人の友人に対応して表示される。図6Bに、コンピューティング装置のユーザが(例えば、タップすることによって)対話要素を選択したときに入る例示的な第2のユーザ・インターフェースを示す。図6Bの第2のユーザ・インターフェースは、選択した対話要素に関連するユーザ(ヴィカス(Vikas))と装置ユーザとの間の最後のいくつかのメッセージを示すメッセージング・アプリケーションである。メッセージング・アプリケーションは、装置ユーザが以前のメッセージを読み、ユーザのヴィカスとコンテンツを共有することを可能にする。図6Bの例では、メッセージ608が、第1のユーザ・インターフェース内に表示されるブラウザ・アプリケーションからのウェブページ602からのコンテンツで事前に入力される。
図7Aに、コンピューティング装置(この場合、モバイル・コンピューティング装置)のカメラおよびフォト・アプリケーションに関連する例示的ユーザ・インターフェース700を示す。フォト702を含むコンテンツが、ユーザ・インターフェース内に表示される。さらに、ソーシャル・ネットワーキング・システム160のユーザに対応する対話要素704と、ソーシャル・ネットワーキング・システム160の何らかの特定のユーザに対応しない対話要素706とを含む複数の対話要素がユーザ・インターフェースと共に(この例では、ユーザ・インターフェース700の部分として)表示される。この場合、対話要素が、(例えば、コンピューティング装置上で現在オープンされているアプリケーションに依存することができる、前述のようなランキング方式に基づいて)連続してソーシャル・ネットワーキング・システム160内のコンピューティング装置のユーザの上位5人の友人に対応して表示される。図7Bに、コンピューティング装置のユーザが(例えば、タップすることによって)対話要素を選択したときに(例えば、図7Aの画面から)入る例示的な第2のユーザ・インターフェースを示す。図7Bの第2のユーザ・インターフェースはメッセージング・アプリケーションであり、メッセージ708が、第1のユーザ・インターフェース内に表示されるカメラおよびフォト・アプリケーションからのフォト702を含むコンテンツで事前に入力される。
図8Aに、対話要素の選択後に入る第2のユーザ・インターフェースの部分としてユーザに提示することができる同じメッセージングまたは共有アプリケーションであることがあり、またはそうでないことがあるメッセージング・アプリケーションに関連する例示的ユーザ・インターフェースを示す。図8Bに、特定のユーザの連絡先情報が表示されている、例示的連絡先およびアドレス帳アプリケーション・ユーザ・インターフェースを示す。この例では、アプリケーション内のアロンに対応する対話要素を選択した結果として、ユーザのアロンの情報を表示することができる。
対話要素およびユーザ・インターフェースの機能コンピュータ・ソフトウェアとして実装し、電子またはコンピュータ・システム上で実行することができる。図9は、例示的なコンピュータ・システム900を示す。特定の実施形態では、1つまたは複数のコンピュータ・システム900は、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを実施する。特定の実施形態では、1つまたは複数のコンピュータ・システム900は、本明細書で説明または図示される機能を提供する。特定の実施形態では、1つまたは複数のコンピュータ・システム900上で実行中のソフトウェアが、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを実施しまたは本明細書で説明または図示される機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム900の1つまたは複数の部分を含む。本明細書では、適切な場合、コンピュータ・システムに対する参照はコンピューティング装置を包含し、逆も同様である。さらに、適切な場合、コンピュータ・システムに対する参照は、1つまたは複数のコンピュータ・システムを包含する。
本開示は、任意の適切な数のコンピュータ・システム900を企図する。本開示は、任意の適切な物理的形態を取るコンピュータ・システム900を企図する。限定ではなく例として、コンピュータ・システム900は、組込みコンピュータ・システム、システム・オン・チップ(SOC)、シングル・ボード・コンピュータ・システム(SBC)(例えば、コンピュータ・オン・モジュール(COM)やシステム・オン・モジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話型キオスク、メインフレーム、コンピュータ・システムのメッシュ、携帯電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらの2つ以上の組合せでよい。適切な場合、コンピュータ・システム900は、1つまたは複数のコンピュータ・システム900を含むことができ、一体型または分散型でよく、複数の場所にわたるものでよく、複数のマシンにわたるものでよく、複数のデータセンタにわたるものでよく、またはクラウド内に常駐することができ、クラウドは、1つまたは複数のネットワーク内の1つまたは複数のクラウド構成要素を含むことができる。適切な場合、1つまたは複数のコンピュータ・システム900は、実質的な空間的または時間的な限定なしに、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを実施することができる。限定ではなく例として、1つまたは複数のコンピュータ・システム900は、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップをリアル・タイムに、またはバッチ・モードで実施することができる。適切な場合、1つまたは複数のコンピュータ・システム900は、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを異なる時刻または異なる場所で実施することができる。
特定の実施形態では、コンピュータ・システム900は、プロセッサ902、メモリ904、ストレージ906、入力/出力(I/O)インターフェース908、通信インターフェース910、およびバス912を含む。本開示は、特定の構成の、特定の数の特定の構成要素を有する特定のコンピュータ・システムを説明および図示するが、本開示は、任意の適切な構成の、任意の適切な数の任意の適切な構成要素を有する任意の適切なコンピュータ・システムを企図する。
特定の実施形態では、プロセッサ902は、コンピュータ・プログラムを構成するような命令を実行するハードウェアを含む。限定ではなく例として、命令を実行するために、プロセッサ902は、内部レジスタ、内部キャッシュ、メモリ904、またはストレージ906から命令を取り出し(またはフェッチし)、その命令を復号化および実行し、次いで内部レジスタ、内部キャッシュ、メモリ904、またはストレージ906に1つまたは複数の結果を書き込むことができる。特定の実施形態では、プロセッサ902は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ902を企図する。限定ではなく例として、プロセッサ902は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(translation lookaside buffer:TLB)を含むことができる。命令キャッシュ内の命令は、メモリ904またはストレージ906内の命令のコピーでよく、命令キャッシュは、プロセッサ902によるそうした命令の検索を加速することができる。データ・キャッシュ内のデータは、プロセッサ902で実行中の命令が演算するためのメモリ904またはストレージ906内のデータ、プロセッサ902で実行中の後続の命令によるアクセスのために、またはメモリ904もしくはストレージ906に書き込むために、プロセッサ902で実行された以前の命令の結果、あるいは他の適切なデータのコピーでもよい。データ・キャッシュは、プロセッサ902による読取りまたは書込み演算を加速することができる。TLBはプロセッサ902のための仮想アドレス変換(virtual-address translation)を加速することができる。特定の実施形態では、プロセッサ902は、データ、命令、またはアドレス用の1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ902を企図する。適切な場合、プロセッサ902は、1つまたは複数の演算論理装置(arithmetic logic unit:ALU)を含むことができ、マルチコア・プロセッサでよく、または1つまたは複数のプロセッサ902を含むことができる。本開示は特定のプロセッサを説明および図示するが、本開示は任意の適切なプロセッサを企図する。
特定の実施形態では、メモリ904は、プロセッサ902が実行するための命令、またはプロセッサ902が演算するためのデータを格納するメイン・メモリを含む。限定ではなく例として、コンピュータ・システム900は、ストレージ906または別のソース(例えば、別のコンピュータ・システム900など)からメモリ904に命令をロードすることができる。次いでプロセッサ902は、メモリ904から内部レジスタまたは内部キャッシュに命令をロードすることができる。命令を実行するために、プロセッサ902は、内部レジスタまたは内部キャッシュから命令を取り出し、その命令を復号化することができる。命令の実行中または実行後に、プロセッサ902は、1つまたは複数の結果(これは中間結果または最終結果でよい)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ902は、そうした結果の1つまたは複数をメモリ904に書き込むことができる。特定の実施形態では、プロセッサ902は、(ストレージ906または他の場所ではなく)1つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ904内の命令のみを実行し、(ストレージ906または他の場所ではなく)1つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ904内のデータのみに対して演算する。1つまたは複数のメモリ・バス(これはそれぞれアドレス・バスおよびデータ・バスを含むことができる)が、プロセッサ902をメモリ904に結合することができる。バス912は、以下で説明するように、1つまたは複数のメモリ・バスを含むことができる。特定の実施形態では、1つまたは複数のメモリ管理ユニット(memory management unit:MMU)が、プロセッサ902とメモリ904との間に常駐し、プロセッサ902によって要求されたメモリ904へのアクセスを可能にする。特定の実施形態では、メモリ904はランダム・アクセス・メモリ(RAM)を含む。適切な場合、このRAMは揮発性メモリでよい。適切な場合、このRAMはダイナミックRAM(DRAM)またはスタティックRAM(SRAM)でよい。さらに、適切な場合、このRAMは、単一ポートまたはマルチポートRAMでよい。本開示は任意の適切なRAMを企図する。適切な場合、メモリ904は、1つまたは複数のメモリ904を含むことができる。本開示は特定のメモリを説明および図示するが、本開示は任意の適切なメモリを企図する。
特定の実施形態では、ストレージ906は、データまたは命令用のマス・ストレージを含む。限定ではなく例として、ストレージ906は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、あるいはこれらのうちの2つ以上の組合せを含むことができる。ストレージ906は、適切な場合、取外し可能または取外し不能(または固定)媒体を含むことができる。ストレージ906は、適切な場合、コンピュータ・システム900の内部または外部でよい。特定の実施形態では、ストレージ906は不揮発性固体メモリである。特定の実施形態では、ストレージ906は読取り専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムされたROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気消去可能PROM(EEPROM)、電気書換え可能ROM(EAROM)、またはフラッシュ・メモリ、あるいはこれらのうちの2つ以上の組合せでよい。本開示は、任意の適切な物理的形態を有するマス・ストレージ906を企図する。適切な場合、ストレージ906は、プロセッサ902とストレージ906との間の通信を可能にする1つまたは複数のストレージ制御ユニットを含むことができる。適切な場合、ストレージ906は、1つまたは複数のストレージ906を含むことができる。本開示は特定のストレージを説明および図示するが、本開示は任意の適切なストレージを企図する。
特定の実施形態では、I/Oインターフェース908は、コンピュータ・システム900と1つまたは複数のI/O装置との間の通信のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム900は、適切な場合、これらのI/O装置のうちの1つまたは複数を含むことができる。これらのI/O装置のうちの1つまたは複数は、人とコンピュータ・システム900との間の通信を可能にすることができる。限定ではなく例として、I/O装置は、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の適切なI/O装置、またはこれらのうちの2つ以上の組合せを含むことができる。I/O装置は1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/O装置およびそのための任意の適切なI/Oインターフェース908を企図する。適切な場合、I/Oインターフェース908は、プロセッサ902がこれらのI/O装置のうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインターフェース908は、適切な場合、1つまたは複数のI/Oインターフェース908を含むことができる。本開示は特定のI/Oインターフェースを説明および図示するが、本開示は任意の適切なI/Oインターフェースを企図する。
特定の実施形態では、通信インターフェース910は、コンピュータ・システム900と、1つまたは複数の別のコンピュータ・システム900あるいは1つまたは複数のネットワークとの間の通信(例えば、パケット・ベースの通信など)用の1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、通信インターフェース910は、イーサネット(登録商標)または他のワイヤ・ベースのネットワークと通信するネットワーク・インターフェース・コントローラ(network interface controller:NIC)またはネットワーク・アダプタ、あるいはWi−Fiネットワークなどのワイヤレス・ネットワークと通信するワイヤレスNIC(wire-based network or a wireless:WNIC)またはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワークおよびそのための任意の適切な通信インターフェース910を企図する。限定ではなく例として、コンピュータ・システム900は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、大都市圏ネットワーク(metropolitan area network:MAN)、またはインターネットの1つもしくは複数の部分、あるいはこれらのうちの2つ以上の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、ワイヤードまたはワイヤレスでよい。1例を挙げると、コンピュータ・システム900は、ワイヤレスPAN(WPAN)(例えば、BLUETOOTH WPANなど)、Wi−Fiネットワーク、WI−MAXネットワーク、携帯電話網(例えば、Global System for Mobile Communication(GSM(登録商標))ネットワークなど)、または他の適切なワイヤレス・ネットワーク、あるいはこれらのうちの2つ以上の組合せと通信することができる。コンピュータ・システム900は、適切な場合、これらのネットワークのいずれかに関する任意の適切な通信インターフェース910を含むことができる。通信インターフェース910は、適切な場合、1つまたは複数の通信インターフェース910を含むことができる。本開示は特定の通信インターフェースを説明および図示するが、本開示は任意の適切な通信インターフェースを企図する。
特定の実施形態では、バス912は、コンピュータ・システム900の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、バス912は、アクセラレーテッド・グラフィックス・ポート(Accelerated Graphics Port:AGP)または他のグラフィックス・バス、Enhanced Industry Standard Architecture(EISA)バス、フロント・サイド・バス(FSB)、HYPERTRANSPORT(HT)相互接続、Industry Standard Architecture(ISA)バス、INFINIBAND相互接続、低ピン・カウント(low-pin-count:LPC)バス、メモリ・バス、Micro Channel Architecture(MCA)バス、Peripheral Component Interconnect(PCI)バス、PCI−Express(PCIe)バス、serial advanced technology attachment(SATA)バス、Video Electronics Standards Association local(VLB)バス、または別の適切なバス、あるいはこれらのうちの2つ以上の組合せを含むことができる。バス912は、適切な場合、1つまたは複数のバス912を含むことができる。本開示は特定のバスを説明および図示するが、本開示は、任意の適切なバスまたは相互接続を企図する。
本明細書では、コンピュータ可読非一時的記憶媒体は、適切な場合、1つまたは複数の半導体ベースの、または他の集積回路(IC)(例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向けIC(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスクドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピィ・ディスケット、フロッピィ・ディスク・ドライブ(FDD)、磁気テープ、固体ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、任意の他の適切なコンピュータ可読非一時的記憶媒体、またはこれらの2つ以上の適切な組合せを含むことができる。コンピュータ可読非一時的記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せでよい。
本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「または」は排他的ではなく包含的である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「AまたはB」は「A、B、またはその両方」を意味する。さらに、別段に明記されていない限り、または文脈によって示されていない限り、「および」は協同および個々の両方である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「AおよびB」は、「AおよびBが一緒に、または個別に」を意味する。
本開示の範囲は、当業者なら理解するはずである、本明細書で説明または図示される例示的実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書で説明または図示される例示的実施形態に限定されない。さらに、本開示は、本明細書のそれぞれの実施形態が特定の構成要素、要素、機能、動作、またはステップを含むものとして説明および図示するが、これらの実施形態のいずれも、当業者なら理解するはずである、本明細書のどこかで説明または図示される構成要素、要素、機能、動作、またはステップのいずれかの任意の組合せまたは置換を含むことができる。さらに、特定の機能を実施するように適合され、配置され、実施することが可能であり、実施するように構成され、実施することが可能にされ、実施するように動作可能である装置またはシステムあるいは装置またはシステムの構成要素に対する添付の特許請求の範囲での参照は、その装置、システム、または構成要素がそのように適合され、配置され、可能であり、構成され、可能にされ、動作可能にされる限り、その装置、システム、構成要素またはその特定の機能が活動化され、オンにされ、またはロック解除されるか否かに関わらず、その装置、システム、構成要素を包含する。