特許第6130049号(P6130049)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ フェイスブック,インク.の特許一覧

<>
  • 特許6130049-ディスプレイ・オブジェクトの前生成 図000002
  • 特許6130049-ディスプレイ・オブジェクトの前生成 図000003
  • 特許6130049-ディスプレイ・オブジェクトの前生成 図000004
  • 特許6130049-ディスプレイ・オブジェクトの前生成 図000005
  • 特許6130049-ディスプレイ・オブジェクトの前生成 図000006
  • 特許6130049-ディスプレイ・オブジェクトの前生成 図000007
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6130049
(24)【登録日】2017年4月21日
(45)【発行日】2017年5月17日
(54)【発明の名称】ディスプレイ・オブジェクトの前生成
(51)【国際特許分類】
   G06F 9/48 20060101AFI20170508BHJP
   G06F 9/54 20060101ALI20170508BHJP
   G06F 3/14 20060101ALI20170508BHJP
【FI】
   G06F9/46 452F
   G06F9/46 480B
   G06F3/14 310A
【請求項の数】20
【全頁数】23
(21)【出願番号】特願2016-507566(P2016-507566)
(86)(22)【出願日】2014年4月3日
(65)【公表番号】特表2016-519823(P2016-519823A)
(43)【公表日】2016年7月7日
(86)【国際出願番号】US2014032786
(87)【国際公開番号】WO2014168807
(87)【国際公開日】20141016
【審査請求日】2015年10月30日
(31)【優先権主張番号】13/861,303
(32)【優先日】2013年4月11日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】フェイスブック,インク.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】カルドア、ジョナサン エム.
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 米国特許第6182133(US,B1)
【文献】 柏原正三,Visual C++ Version2.0によるWindowsプログラミング研究 第10回,Dr. Dobb's Journal Japan,日本,株式会社翔泳社,1996年 1月,第5巻 第1号,54-71ページ
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/48
G06F 3/14
G06F 9/54
(57)【特許請求の範囲】
【請求項1】
コンピューティング・デバイスのスレッドによって、コンテンツ・レイアウトの表示可能領域のためのフレーム・バッファ充填タスクを開始する工程と、
前記コンピューティング・デバイスによって、予め生成すべきディスプレイ・オブジェクトの部分を識別する工程であって、該ディスプレイ・オブジェクトは、前記表示可能領域外にある前記コンテンツ・レイアウトの一部に関連付けられる、予め生成すべきディスプレイ・オブジェクトの部分を識別する工程と、
前記コンピューティング・デバイスによって、アイドル時間の次のウィンドウの開始点を識別するために前記スレッドを監視する工程であって、該アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、該開始点は、前記フレーム・バッファ充填タスクを実施するために要求される期間に少なくとも一部基づく、前記スレッドを監視する工程と、
前記コンピューティング・デバイスによって、前記フレーム・バッファ充填タスクを完了させることで前記スレッドにより実行するために、1つ以上の選択されるタスクをメッセージ・キューに付加する工程であって、前記選択されるタスクの各々は、前記ディスプレイ・オブジェクトの少なくとも1つの選択される要素のためのコンテンツを予め生成する、1つ以上の選択されるタスクをメッセージ・キューに付加する工程と、
前記コンピューティング・デバイスによって、前記フレーム・バッファ充填タスクの完了時に、前記選択されるタスクの実行を開始する工程と、
前記コンピューティング・デバイスによって、前記ディスプレイ・オブジェクトを返す工程とを含むことを特徴とする方法。
【請求項2】
前記表示可能領域は、スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定されることを特徴とする請求項1に記載の方法。
【請求項3】
前記少なくとも1つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項2に記載の方法。
【請求項4】
前記メッセージ・キューにおける前記1つ以上の選択されるタスクを実行する工程は、
在実行されているタスクをサスペンドする工程と、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加する工程とを含むことを特徴とする請求項1に記載の方法。
【請求項5】
アプリケーションに適合したリサイクラに少なくとも1つの選択される要素を格納する工程と、
前記コンテンツ・レイアウトの前記一部におけるコンテンツに対するリクエストに応じて、前記アプリケーションに適合したリサイクラから前記少なくとも1つの選択される要素を検索する工程と、
前記コンテンツ・レイアウトの前記一部に要求されるような前記ディスプレイ・オブジェクトの他の要素を更新する工程と、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第1の部分におけるコンテンツに対するリクエストを受信する工程とを更に含むことを特徴とする請求項4に記載の方法。
【請求項6】
1つ以上のアプリケーション特有の規則に従い、各要素を予め生成するコストに基づいて要素に優先順位付けられ、前記要素を予め生成するコストは、要素のサイズ、要素の複雑度、要素の時間依存性、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項1に記載の方法。
【請求項7】
アプリケーション特有の規則に従い、前記コンピューティング・デバイスの利用可能なメモリに基づき予め生成するために選択される要素の数調整されることを特徴とする請求項6に記載の方法。
【請求項8】
ソフトウェアを具現化する1つまたは複数の非一時的なコンピュータ可読記憶媒体であって、該ソフトウェアはコンピューティング・デバイスによる実行時に、
コンテンツ・レイアウトの表示可能領域のためのフレーム・バッファ充填タスクを開始し、
予め生成すべきディスプレイ・オブジェクトの部分を識別し、該ディスプレイ・オブジェクトは、前記表示可能領域外にある前記コンテンツ・レイアウトの一部に関連付けられ、
アイドル時間の次のウィンドウの開始点を識別するためにスレッドを監視し、前記アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、該開始点は、前記フレーム・バッファ充填タスクを実施するために要求される期間に少なくとも一部基づき、
前記フレーム・バッファ充填タスクを完了させることで前記スレッドにより実行するために、1つ以上の選択される予め生成されるタスクをメッセージ・キューに付加し、前記選択されるタスクの各々は、前記ディスプレイ・オブジェクトの少なくとも1つの選択される要素のためのコンテンツを予め生成し、
前記フレーム・バッファ充填タスクの完了時に、前記選択されるタスクの実行を開始し、
前記ディスプレイ・オブジェクトを返すように動作可能であることを特徴とするコンピュータ可読記憶媒体。
【請求項9】
前記表示可能領域は、スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定されることを特徴とする請求項8に記載の媒体。
【請求項10】
前記少なくとも1つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項9に記載の媒体。
【請求項11】
前記メッセージ・キューにおける前記1つ以上の選択されるタスクを実行するために、前記ソフトウェアは、実行時に、
在実行されているタスクをサスペンドし、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加するように更に動作可能であることを特徴とする請求項8に記載の媒体。
【請求項12】
前記ソフトウェアは、実行時に、
アプリケーションに適合したリサイクラに前記少なくとも1つの選択される要素を格納し、
前記コンテンツ・レイアウトの前記一部におけるコンテンツに対するリクエストに応じて、前記アプリケーションに適合したリサイクラから前記少なくとも1つの選択される要素を検索し、
前記コンテンツ・レイアウトの前記一部のために必要に応じて前記ディスプレイ・オブジェクトの他の要素を更新し、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第1の部分におけるコンテンツに対するリクエストを受信するように更に動作可能であることを特徴とする請求項11に記載の媒体。
【請求項13】
1つ以上のアプリケーション特有の規則に従い、各要素を予め生成するコストに基づいて要素に優先順位付けられ、前記要素を予め生成するコストは、前記要素のサイズ、前記要素の複雑度、前記要素の時間依存性、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項8に記載の媒体。
【請求項14】
アプリケーション特有の規則に従い、前記コンピューティング・デバイスの利用可能なメモリに基づき予め生成するために選択される要素の数調整されることを特徴とする請求項13に記載の媒体。
【請求項15】
1つ以上のプロセッサと、
同プロセッサによって実行可能な指示を含む、前記プロセッサに接続されるメモリとを備えるコンピューティング・デバイスであって、前記プロセッサは、前記指示の実行時に、
コンテンツ・レイアウトの表示可能領域のためのフレーム・バッファ充填タスクを開始し、
予め生成すべきディスプレイ・オブジェクトの部分を識別し、該ディスプレイ・オブジェクトは、前記表示可能領域外にある前記コンテンツ・レイアウトの一部に関連付けられ、
アイドル時間の次のウィンドウの開始点を識別するために、スレッドを監視し、前記アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、該開始点は、前記フレーム・バッファ充填タスクを実施するために要求される期間に少なくとも一部基づき、
前記フレーム・バッファ充填タスクを完了させることで前記スレッドにより実行するために、メッセージ・キューに1つ以上の選択される予め生成されるタスクを付加し、前記選択されるタスクの各々は、前記ディスプレイ・オブジェクトの少なくとも1つの選択される要素のためのコンテンツを予め生成し、
前記フレーム・バッファ充填タスクの完了時に、前記選択されるタスクの実行を開始し、
前記ディスプレイ・オブジェクトを返すように動作可能であることを特徴とするコンピューティング・デバイス。
【請求項16】
前記メッセージ・キューにおける前記1つ以上の選択されるタスクを実行するために動作可能な前記プロセッサは、
在実行されているタスクをサスペンドし、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加するように更に動作可能であることを特徴とする請求項15に記載のコンピューティング・デバイス。
【請求項17】
前記プロセッサは、前記指示の実行時に、
アプリケーションに適合したリサイクラに前記少なくとも1つの選択される要素を格納し、
前記コンテンツ・レイアウトの前記一部におけるコンテンツに対するリクエストに応じて、前記アプリケーションに適合したリサイクラから前記少なくとも1つの選択される要素を検索し、
前記コンテンツ・レイアウトの前記一部のために必要に応じて前記ディスプレイ・オブジェクトの他の要素を更新し、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第1の部分におけるコンテンツに対するリクエストを受信するように更に動作可能であることを特徴とする請求項16に記載のコンピューティング・デバイス。
【請求項18】
前記表示可能領域は、スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定され、前記少なくとも1つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項15に記載のコンピューティング・デバイス。
【請求項19】
1つ以上のアプリケーション特有の規則に従い、各要素を予め生成するコストに基づき要素に優先順位付けられ、前記予め要素を生成するコストは、前記要素のサイズ、前記要素の複雑度、前記要素の時間依存性、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項15に記載のコンピューティング・デバイス。
【請求項20】
アプリケーション特有の規則に従い、前記コンピューティング・デバイスの利用可能なメモリに基づき予め生成するために選択される要素の数調整されることを特徴とする請求項19に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【0001】
本開示は、オブジェクト・ライフサイクル管理に関する。
【背景技術】
【0002】
コンテンツが表示可能領域を越えて拡張する(コンテンツを視界に入れるためにユーザがコンテンツ・レイアウトをスクロールする必要がある)、特定のディスプレイ・スクリーンのためにコンテンツ・レイアウトをレンダリングする場合、ディスプレイ・オブジェクト(例えば、ANDROID(登録商標)のビュー・オブジェクト)およびそれらのディスプレイ・オブジェクトの要素は、ユーザがコンテンツをスクロールすると、これらが視界に入るように、専用UIスレッドによってリアル・タイムに生成される。表示可能領域を越えた位置から付加的なコンテンツを視界に入れる際に潜在的に重要な部分は、ディスプレイ・オブジェクトを生成するためのタスクのリアル・タイム実行、すなわち測定(ディスプレイ・オブジェクト、およびその要素の各々の面積要件の再帰的な測定)、レイアウト(ディスプレイ・オブジェクトへの、続いてその要素の各々への面積および位置の割り当て)、およびスクリーン上のディスプレイ・オブジェクトを引くためのコマンドの生成による。
【発明の概要】
【発明が解決しようとする課題】
【0003】
これは、フレーム・バッファ充填のような他の重大なオペレーションを処理することに更にビジーであるUIスレッドにそのようなタスクを割り当てるシステムの作動において特に問題である。
【課題を解決するための手段】
【0004】
特定の実施形態においては、UIスレッドが予め生成されるタスク(あるいはその論理チャンク)を間に置くためにアイドルとなる期間を利用することにより、ディスプレイ・オブジェクトを予め生成することが達成される。ディスプレイ・オブジェクトを予め生成することを促進するために、アプリケーションは、UIスレッドが最小のアイドル時間(例えば次のフレーム・バッファ充填の前に残された17ミリ秒)の間、アイドルとなる期間を識別するためにUIスレッドを監視し、1つ以上の予め生成されるタスクをUIスレッドのためのメッセージ・キューに付加し、完了させる(時間が十分である場合)ために、あるいは降伏点に到達し、残された利用可能時間が最小のアイドル時間未満となるまで、予め生成されるタスクを実行する。
【0005】
ここに開示される実施形態は、ディスプレイ・オブジェクトのサブ要素により更に実施され、これらの要素のうちのいくつかは入れ子のディスプレイ・オブジェクトを含む。特定の実施形態は、ビュー・モデル・ビューのモデル・パターンに従う任意のプラットフォーム上で実施される。
【図面の簡単な説明】
【0006】
図1A】ディスプレイ・オブジェクトを使用してレンダリングされるコンテンツ・レイアウトを示すワイヤフレーム。
図1B図1Aの詳細なセクションを例示するワイヤフレーム。
図2】アプリケーション・テイラード・オブジェクトを予め満たす方法を例示する図。
図3】ソーシャル・ネットワーキング・システムに関連付けられたネットワーク環境を例示する図。
図4】ソーシャル・グラフを例示する図。
図5】コンピュータ・システムを例示する図。
【発明を実施するための形態】
【0007】
コンテンツを意識してディスプレイ・オブジェクトを予め満たすことを促進するために、アプリケーションは、アプリケーション特有のポリシーを適用し、満たすためにもっともコスト高となるディスプレイ・オブジェクトおよび/またはディスプレイ・オブジェクトの要素のみを予め選択的に満たす方法を決定する。
【0008】
表示されるコンテンツ・レイアウトの特定のセクションに対するリクエストを受け取るに先立って、アプリケーションは、コンテンツ・レイアウトの特定のセクションの要素を選択し、選択された要素を予め満たすか、あるいは満たし、リサイクラに予め満たされる要素を格納する。同じコンテンツ要素が再びリクエストされると、アプリケーションは、リサイクラからディスプレイ・オブジェクトを検索し、ラッパ・オブジェクトでラップし、ラップされたディスプレイ・オブジェクトを返す。ここに開示される実施形態は、ディスプレイ・オブジェクトの要素により更に実施され、これらの要素のうちのいくつかは入れ子のディスプレイ・オブジェクトを含む。
【0009】
リサイクラを実行する方法に関して、特定の実施形態においては、2013年4月11日に出願され発明の名称が「アプリケーションに適合したオブジェクトの再利用」である米国特許出願第13/861250号明細書に開示される1つ以上のシステム、コンポーネント、要素、機能、方法、作動、あるいは工程が利用され、明細書はその全体がここに開示されたものとする。
【0010】
図1Aは、複数のディスプレイ・オブジェクトに基づきタブレット・デバイス上のディスプレイのためにレンダリングされる、ソーシャル・ネットワーキング・システムのユーザのためのニュースフィード・ページを示すコンテンツ・レイアウト100を例示するワイヤフレームである。コンテンツ・レイアウト100の表示可能領域(点線によって示す)は、タブレット・デバイスのスクリーン面積の範囲内に適合する(スクロール不要視認可能領域(above the fold))コンテンツ・レイアウト100の部分を含む。
【0011】
コンテンツ・レイアウト100は、ヘッダ領域110、メニューバー120、左側サイドバー130、右側サイドバー140、および主本体領域150を含む。領域はそれぞれそれ自身のディスプレイ・オブジェクトに関連付けられ、その各々は、制限ではなく、例として、1つ以上の画像、動画、テキスト、リンク、形式、および対話型の要素などの複数の要素を含む。これらの要素の各々は1つ以上の入れ子のディスプレイ・オブジェクトによって表される。
【0012】
ヘッダ領域110に関連付けられるディスプレイ・オブジェクトは、ソーシャルネットワークのユーザの対話型のプロフィール画像112、ソーシャルネットワークのユーザによって選択されるテキスト・ブロック114、背景画像116、およびテーマ音楽を含む。対話型のプロフィール画像112は、マウスのようなポインティングデバイスがプロフィール画像上にとどまると現れるソーシャルネットワークのユーザのプロフィールの要約を表示するポップアップ・ウィンドウをレンダリングするために、画像、テキスト、リンク、およびJAVASCRIPT(登録商標)コードを含むディスプレイ・オブジェクトに基づきレンダリングされる。
【0013】
メニューバー120に関連付けられるディスプレイ・オブジェクトは、5つのメニュー・オプション125A乃至125Fを含み、その各々は画像、テキスト、およびリンクを含む。
【0014】
左側のサイドバー130に関連付けられるディスプレイ・オブジェクトは、推奨の混合(スポンサード・ストーリを含む)(135A乃至135Eのみを示すが、更に多くの推奨があってもよい)のためのコンテンツを含み、その各々はディスプレイ・オブジェクトに基づいてレンダリングされる。推奨のためのディスプレイ・オブジェクトの各々は、推奨に関係する更に詳細な情報を得るために、対話型の画像、タイトル、推奨のためのテキスト、およびリンクを含む。ニュースフィード・アイテムのためのディスプレイ・オブジェクトの各々は、更に1つ以上の画像あるいは1つの動画を含む。
【0015】
右側のサイドバー140に関連付けられるディスプレイ・オブジェクトは、1つ以上の広告145のためのコンテンツを含み、その各々が、ディスプレイ・オブジェクトに基づいてレンダリングされる。図1Aに示す例において例示されるように、広告145Aはスクロール不要視認領域に現れるが、広告145Bはなお見えない。広告のコンテンツは、サードパーティ広告主によって少なくとも部分的に決定される。
【0016】
主本体領域150に関連付けられるディスプレイ・オブジェクトは、複数のニュースフィード・アイテム(155A乃至155Eのみを示すが、より多くのニュースフィード・アイテムが設けられてもよい)を含み、その各々はユーザの友達(すなわち、ソーシャルグラフのつながり)に関係するアクティビティに関連付けられるディスプレイ・オブジェクトに基づいてレンダリングされる。
【0017】
図1Bは、図1Aの詳細なセクションを例示するワイヤフレームであり、コンテンツ・レイアウト100の主本体領域150におけるニュースフィード・アイテム155B乃至155Eを示す。図1Aに示すように、コンテンツ・レイアウト100の表示可能領域(点線で示す)は、タブレット・デバイスのスクリーン上に適合するコンテンツ・レイアウト100の部分を含む。
【0018】
ニュースフィード・アイテム155のためのディスプレイ・オブジェクトはそれぞれ、友達の対話型のプロフィール画像160、友達の名前165、ニュースフィード・アイテム用のテキスト170、時間依存情報175(例えば、リストを見たか、コメントしたか、「いいね!」した人の絶えず更新される数、リストを見たか、コメントしたか、「いいね!」したもっとも最近の1人か2人の人の短いリスト等)、ニュースフィード・アイテムを「いいね!」するためのリンク180、ニュースフィード・アイテムに関するコメントへのリンク185、およびニュースフィード・アイテムを「共有する」ためのリンク190を含む。ニュースフィード・アイテムのためのディスプレイ・オブジェクトの各々は、1つ以上の画像195あるいは1つのビデオを更に含む。
【0019】
対話型のプロフィール画像160の各々は、マウスのようなポインティングデバイスがプロフィール画像上にとどまると現れるソーシャルネットワークのユーザのプロフィールの要約を表示するポップアップ・ウィンドウをレンダリングするために、画像、テキスト、リンク、およびJAVASCRIPT(登録商標)コードを含むディスプレイ・オブジェクトに基づいてレンダリングされる。
【0020】
図2は、アプリケーションで制御された、ディスプレイ・オブジェクトの事前補充方法を例示する。工程210で、アプリケーションは、予め生成すべきディスプレイ・オブジェクトの部分を識別する。例えば、図1Aに例示するように、ディスプレイ・オブジェクトは、ニュースフィードのためのコンテンツ・レイアウト・オブジェクトを含み、図1Bに示すように、ニュースフィードは、ニュースフィード要素155の長いリストを含む。予め生成するために識別されるディスプレイ・オブジェクトの部分は、ユーザが「ページ・ダウン」ボタンを押すことにより下へスクロールする場合に表示可能領域を満たすニュースフィード要素155の次の組を含む。
【0021】
工程220では、アプリケーションは、UIスレッドが最小の期間の間アイドルとなる場合における時間の次のウィンドウを識別するためにUIスレッドを監視する。例えば、アプリケーションが60Hz(あるいは60フレーム/秒)のスクリーン・リフレッシュレート・レートでモバイル・コンピューティング・デバイス用のオペレーティング・システム上で作動している場合、オペレーティング・システムは16.67ミリ秒ごとにフレーム・バッファの充填を完了する必要がある。コンピューティング・デバイスが12ミリ秒でフレーム・バッファの充填を完了すると、16.67ミリ秒ごとに(フレーム・バッファを満たすオペレーションの完了時に)発生する4.67ミリ秒のウィンドウが残される。最小の期間は、少なくともコンテンツ・レイアウトに基づいて発生する可能性の高い多くのタスクに使用される最も小さな有用な期間である。
【0022】
工程230では、アプリケーションは、アイドル時間の次の期間の間にUIスレッドにより実行するために、1つ以上の予め生成されるタスクを選択してメッセージ・キューに付加する。特定の実施形態では、アプリケーションは、迅速に実行される複数のタスクをグループ化する。1つ以上の予め生成されるタスクのための実行時間の合計は、時間の次のウィンドウにおいて利用可能な時間未満である。任意の所定のタスクのために予期される実行時間は、予め定められる評価で設定されるか、あるいは、個別のユーザやユーザ群に基づく所与の十分な履歴データにより時間にわたって学習される。実行される次のタスクが時間の次のウィンドウにおいて利用可能である時間よりも長くかかる特定の実施形態においては、アプリケーションはタスクが降伏点でサスペンドされると予期して、タスクをメッセージ・キューに単純に付加する。
【0023】
特定の実施形態では、アプリケーションは、表示可能領域の面積、利用可能なメモリ、およびアプリケーションに特有の規則に基づいて、予め生成するためにディスプレイ・オブジェクトの特定の要素を選択する。特定の実施形態では、特にリストベースやグリッドベースのコンテンツ・レイアウトに関して、アプリケーション特有の規則に従い、インクリメント設定され、これにより要素予め生成される。
【0024】
インクリメントは、表示可能領域の面積の範囲内に適合するリストまたはグリッドのアイテムの数によって定義されるユニットの倍数である。例えば、図1Bに示すように、4つのニュースフィード・アイテムが、表示可能領域の縦の面積を満たし、コンテンツ・レイアウトが、縦の面積に延びる(が、水平の面積ではない)。この例において、アプリケーション特有の規則に従い、ユニットが4つのニュースフィード・アイテムを含むと判断され(表示可能領域を満たすものであるため)、要素を予め生成するためのインクリメントが3であると決定される。これらにより、アプリケーションがニュースフィード・アイテム155B乃至155Eを表示するためのリクエストに応じる場合、アプリケーションは次の12のニュースフィード・アイテムに選択される要素を更に予め満たす。特定の実施形態では、倍数はユーザに特有の使用法パターンに基づく。例えば、ユーザが通常ニュースフィードを相当緩慢にスクロールする場合、倍数はより小さな数となる。逆に、ユーザが通常ニュースフィードを相当迅速にスクロールする場合、倍数はより大きな数となる。特定の実施形態では、倍数は、リストまたはグリッド要素のためのコンテンツの属性に更に基づく。例えば、コンテンツが非常に豊富であるとともにユーザがブラウズするのに時間がかかる可能性が高いタイプのものである場合(例えば、ユーザが各々の上をマウス操作すると再生される動画のサムネール)、倍数は低減される。
【0025】
特定の実施形態では、アプリケーション特有の規則に従い、生成がよりコスト高であるディスプレイ・オブジェクトの要素の選択に優先順位付けられる。要素を生成するコストは、任意の適用可能な基準、例えば要素のサイズ、要素の複雑度(例えば、要素が入れ子のディスプレイ・オブジェクトか。)、要の時間依存性、プラットフォームの性能および構成(例えば、装置はクライアント側スクリプトの実行をサポートしないか、禁止するか。これに代わるより単純なコンテンツを備えた代替物が必要であるか。)などに基づき決定される。
【0026】
特定の実施形態では、アプリケーション特有の規則に従い、利用可能なメモリに基づきディスプレイ・オブジェクトの要素選択される。例えば、利用可能なメモリがあまりない場合、アプリケーションは、最もコスト高な要素のみを予め生成することを選択するが、より多くの利用可能なメモリがある場合、アプリケーションは、付加的な要素(多少それほどコスト高でない要素)を予め生成する。別の例において、利用可能なメモリがあまりない場合、アプリケーションは頻繁に再使用される可能性が高い要素を予め生成することを選択する。例えば、次の10のニュースフィード・アイテムがすべて人気のあるオンライン記事への同じ複合リンク(これは画像、テキスト、リンク、および他の情報を含む)を投稿した人に関係する場合、複合リンクを表す要素は他の要素よりも上の優先順位を受け取る。
【0027】
工程240では、アプリケーションは、メッセージ・キューにおけるスケジュールされたタスクを実行する。特定の実施形態では、スケジュールされたタスクは、ディスプレイ・オブジェクトの要素の測定、および/またはレイアウトに関する。実行される次のタスクが時間の次のウィンドウで利用可能な時間よりも長くかかる特定の状況において、アプリケーションは、UIスレッドが著しく遅延することなくそのキュー(例えば、次のフレーム・バッファ充填)の他の作業を処理できるように降伏点でタスクの実行をサスペンドする。
【0028】
工程245では、降伏点においてタスクをサスペンドする必要がある場合、アプリケーションは、UIスレッドにおけるメッセージ・キューにサスペンドされたタスクを戻して付加する。これにより、タスクは利用可能な次のウィンドウを再度占める。これに代えて、実施される予め生成される付加的なタスクがある場合、アプリケーションは次の1つ以上のタスクをスケジュールするために工程220に戻る。
【0029】
工程250では、これから実行されるいくつかの選択されたタスクがなお存在する場合、工程220に戻るが、あるいは可能であれば(工程255)、アプリケーションは、完了させるべく予め生成されるタスクを実行する(予め生成されたコンテンツ・レイアウトの部分のためのリクエストが受け取られる前に十分な時間がある場合)。
【0030】
工程260では、アプリケーションは、アプリケーションに適合したリサイクラにディスプレイ・オブジェクトの予め生成される要素を格納する。コンテンツ・レイアウトの関連する部分が表示可能領域のためにリクエストされるまで、これらの格納される要素は、リサイクラに保持される。
【0031】
工程265では、一旦ディスプレイ・オブジェクトが予め生成されたコンテンツ・レイアウトの部分のためのリクエストが受け取られると、アプリケーションはアプリケーションに適合したリサイクラからディスプレイ・オブジェクトの任意の予め生成される要素を検索する(工程270)。しかしながら、リサイクラが以前に使用されたディスプレイ・オブジェクトおよびその要素の他、予め生成されるディスプレイ・オブジェクトおよびその要素を含むため、特定の実施形態においては、アプリケーションに適合したリサイクル・ポリシーが適用され、リサイクラにおける予め生成されたものを含むいずれのディスプレイ・オブジェクトおよびその要素が再使用に適切であるかが識別される。
【0032】
リサイクラにおけるディスプレイ・オブジェクトは、現在リクエストされているコンテンツと同じか同様であるコンテンツを含む場合、再使用に適切である。検索されるディスプレイ・オブジェクトを再度使用するために、必要に応じてディスプレイ・オブジェクトの特定の要素を更新することが必要である。予め生成されたディスプレイ・オブジェクトにおいてさえ、ユーザがスクロールするのにどのくらいの時間がかかったかに応じて、所定の時間依存要素を少なくとも更新する必要がある。
【0033】
リサイクラにおけるディスプレイ・オブジェクトは、同じタイプのオブジェクトであるが異なるコンテンツを含む場合、再利用に適切である。この場合、アプリケーションは、リクエストされたコンテンツを有するディスプレイ・オブジェクトをゼロからリアル・タイムに生成し(これらは任意の予め生成されるディスプレイ・オブジェクトやその要素のためである必要はない)、これにより、ディスプレイ・オブジェクトにおける既存のコンテンツのほとんど、あるいはそうでない場合すべてを上書きする。
【0034】
いずれのディスプレイ・オブジェクトが再使用、再利用に適切であるか、あるいは適切でないかの判断は、アプリケーション特有の、装置特有の、および/または、ユーザ特有のリサイクル・ポリシーに依存する。特定の実施形態では、アプリケーションは、アプリケーション要件、コンテンツのタイプ、装置属性(例えば、利用可能なメモリおよび/またはディスプレイ・スクリーンの面積。)、コンテンツ統計、使用パターンおよび選択、あるいは1つ以上の任意の他の適切な要因に従って、リサイクル・ポリシーを設定する。これらのポリシーにより、オブジェクトをリサイクラにいくつ保持するか、いかなるタイプのオブジェクトをリサイクラに格納するか、どのようにディスプレイ・オブジェクトが再使用および/または再利用に適切であるかを判断するか、ディスプレイ・オブジェクトをいつ再使用乃至再利用するかが管理される。
【0035】
リサイクラがゼロ(null)を返すと、アプリケーションは、リクエストされたコンテンツを表示するために適切なタイプの新しいディスプレイ・オブジェクトを膨らませ、続いてリクエストされたコンテンツを有するディスプレイ・オブジェクトを生成する。新しいディスプレイ・オブジェクトを膨らませること、および空のディスプレイ・オブジェクトを生成することは、コスト高な作業であるため、これは最も高価なパスである。従って、アプリケーションは、リサイクラに格納される適切なディスプレイ・オブジェクトをいつ再利用するか、あるいは再利用を禁止するかを決定する場合、対立する優先順位の均衡を保つ必要がある。
【0036】
工程280では、アプリケーションは、表示可能領域のために要求されるようなディスプレイ・オブジェクトを生成する処理を完了し、リクエストに応じてディスプレイ・オブジェクトを返す。
【0037】
ここに開示される実施形態は、ディスプレイ・オブジェクトの要素に関して実施されるものとして記述されるが、特定の実施形態においては、ここに開示される技術は、ディスプレイ・オブジェクトの所定の要素(ディスプレイ・オブジェクトそのものであってもよい)に対して、これらの要素の一部あるいはすべてを予め満たすために、再帰的な方法で適用されてもよい。
【0038】
ここに開示される実施形態は、アプリケーションによって実施されるものとして記述されるが、当業者に認識されるように、ここに開示される例示の方法200および他の実施形態の工程の多くは、1つ以上の抽象化層で作動する1つ以上のソフトウェアによって実施される。例えば、上述した例示の方法の工程は、アプリケーションとは個別に実行されるとともにアプリケーションとリサイクラとのインターフェースとなるソフトウェアによって実行される。
【0039】
特定の実施形態においては、適切な場合、図2の方法の1つ以上の工程を繰り返す。本開示は特定の順序で生じるものとして図2の方法の特定の工程について記述し、例示しているが、本開示において任意の好適な順序で生じる図2の方法の任意の好適な工程も考えられる。更に、本開示は図2の方法の特定の工程を実施する特定のコンポーネント、装置、あるいはシステムについて開示し記述するが、本開示においては、図2の方法の任意の適切な工程を実施する任意の適切なコンポーネント、装置、あるいはシステムが考えられる。
【0040】
図3は、ソーシャル・ネットワーキング・システムに関連付けられるネットワーク環境300を例示する。ネットワーク環境300は、ネットワーク310によって互いに接続されたユーザ301、クライアント・システム330、ソーシャル・ネットワーキング・システム360、およびサード・パーティ・システム370を含む。図3はユーザ301、クライアント・システム330、ソーシャル・ネットワーキング・システム360、サード・パーティ・システム(third−party system)370、およびネットワーク310の特定の構成を示すが、本開示は、ユーザ301、クライアント・システム330、ソーシャル・ネットワーキング・システム360、サード・パーティ・システム370、およびネットワーク310の任意の適切な構成を企図する。限定ではなく例として、ネットワーク310を迂回して、クライアント・システム330、ソーシャル・ネットワーキング・システム360、およびサード・パーティ・システム370のうちの2つ以上を互いに直接的に接続することができる。別の例として、クライアント・システム330、ソーシャル・ネットワーキング・システム360、およびサード・パーティ・システム370のうちの2つ以上を、物理的または論理的に、全体的または部分的に共に配置することができる。さらに、図3は特定の数のユーザ301、クライアント・システム330、ソーシャル・ネットワーキング・システム360、サード・パーティ・システム370、およびネットワーク310を示すが、本開示は、任意の適切な数のユーザ301、クライアント・システム330、ソーシャル・ネットワーキング・システム360、サード・パーティ・システム370、およびネットワーク310を企図する。限定ではなく例として、ネットワーク環境300は、複数のユーザ301、クライアント・システム330、ソーシャル・ネットワーキング・システム360、サード・パーティ・システム370、およびネットワーク310を含むことができる。
【0041】
特定の実施形態では、ユーザ301は、ソーシャル・ネットワーキング・システム360と、またはソーシャル・ネットワーキング・システム360を介して対話または通信する個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、またはサード・パーティ・アプリケーション)、または(例えば、個人またはエンティティの)グループでよい。特定の実施形態では、ソーシャル・ネットワーキング・システム360は、オンライン・ソーシャル・ネットワークをホストするネットワーク・アドレス指定可能コンピューティング・システム(network−addressable computing system)でよい。ソーシャル・ネットワーキング・システム360は、例えば、ユーザ・プロファイル・データ、概念プロファイル・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関する他の適切なデータなどのソーシャル・ネットワーキング・データを生成、格納、受信、および送信することができる。ネットワーク環境300の他の構成要素により、直接的に、またはネットワーク310を介して、ソーシャル・ネットワーキング・システム360にアクセスすることができる。特定の実施形態では、ソーシャル・ネットワーキング・システム360は、例えば、適切なプライバシー設定を設定することなどにより、ユーザ301がそのアクションをソーシャル・ネットワーキング・システム360によって記録させること、または他のシステム(例えば、サード・パーティ・システム370)と共有させることを選択するか、または選択しないことを可能にする許可サーバ(あるいは他の適切な1つ以上の構成要素)を含むことができる。ユーザのプライバシー・セッティングにより、ユーザに関連付けられるどのような情報のログが記録されるか、どのようにユーザに関連付けられる情報のログが記録されるか、いつユーザに関連付けられる情報がログを記録されるか、誰がユーザに関連付けられる情報のログを記録するか、誰がユーザに関連付けられる情報を共有するか、いかなる目的でユーザに関連付けられる情報のログを記録するか、あるいは情報を共有するかが決定される。認証サーバは、好適にブロッキング、データ・ハッシング、匿名化、あるいは他の適切な技術を介してソーシャル・ネットワーキング・システム30のユーザの1つ以上のプライバシー・セッティングを強化するために使用される。ネットワーク環境300の他の構成要素により、直接的に、またはネットワーク310を介して、サード・パーティ・システム370にアクセスすることができる。特定の実施形態では、1人または複数のユーザ301は、1つまたは複数のクライアント・システム330を使用して、ソーシャル・ネットワーキング・システム360またはサード・パーティ・システム370にアクセスしてデータを送り、ソーシャル・ネットワーキング・システム360またはサード・パーティ・システム370からデータを受信することができる。クライアント・システム330は、直接的に、ネットワーク310を介して、またはサード・パーティ・システムを介して、ソーシャル・ネットワーキング・システム360またはサード・パーティ・システム370にアクセスすることができる。限定ではなく例として、クライアント・システム330は、ソーシャル・ネットワーキング・システム360を介してサード・パーティ・システム370にアクセスすることができる。クライアント・システム330は、例えば、パーソナル・コンピュータ、ラップトップ・コンピュータ、携帯電話、スマートフォン、またはタブレット・コンピュータなどの任意の適切なコンピューティング装置でよい。
【0042】
本開示は任意の適切なネットワーク310を企図する。限定ではなく例として、ネットワーク310のうちの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つ以上の組合せを含むことができる。ネットワーク310は1つまたは複数のネットワーク310を含むことができる。
【0043】
リンク350は、クライアント・システム330、ソーシャル・ネットワーキング・システム360、およびサード・パーティ・システム370を通信ネットワーク310に接続するか、または互いに接続することができる。本開示は任意の適切なリンク350を企図する。特定の実施形態では、1つまたは複数のリンク350は、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つまたは複数のリンク350はそれぞれ、アドホック・ネットワーク、イントラネット、エクストラネット、VPN、LAN、WLAN、WAN、WWAN、MAN、インターネットの一部、PSTNの一部、セルラ技術ベースのネットワーク、衛星通信技術ベースのネットワーク、別のリンク350、または2つ以上のそのようなリンク350の組合せを含む。リンク350は、必ずしもネットワーク環境300全体を通じて同一である必要はない。1つまたは複数の第1のリンク350は、1つまたは複数の点で1つまたは複数の第2のリンク350と異なることがある。
【0044】
図4は、例示的なソーシャル・グラフ400を示す。特定の実施形態では、ソーシャル・ネットワーキング・システム360は、1つまたは複数のデータ・ストア(data store)内に1つまたは複数のソーシャル・グラフ400を格納することができる。特定の実施形態では、ソーシャル・グラフ400は、複数のノード(これは複数のユーザ・ノード402または複数の概念ノード(concept node)404を含むことができる)と、ノードを接続する複数のエッジ(edge)406とを含むことができる。図4に示される例示的なソーシャル・グラフ400は、説明のために、2次元視覚マップ表現で示されている。特定の実施形態では、ソーシャル・ネットワーキング・システム360、クライアント・システム330、またはサード・パーティ・システム370は、ソーシャル・グラフ400および適切なアプリケーションについての関連するソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ400のノードおよびエッジを、データ・オブジェクトとして、例えばデータ・ストア(ソーシャル・グラフ・データベースなど)内に格納することができる。そのようなデータ・ストアは、ソーシャル・グラフ400のノードまたはエッジの1つまたは複数の検索可能または照会可能な索引を含むことができる。
【0045】
特定の実施形態では、ユーザ・ノード402は、ソーシャル・ネットワーキング・システム360のユーザに対応することができる。限定ではなく例として、ユーザは、ソーシャル・ネットワーキング・システム360と、またはソーシャル・ネットワーキング・システム360を介して対話または通信する個人(人間のユーザ)、エンティティ(例えば、企業、ビジネス、またはサード・パーティ・アプリケーション)、または(例えば、個人またはエンティティの)グループでよい。特定の実施形態では、ユーザがソーシャル・ネットワーキング・システム360にアカウントを登録するとき、ソーシャル・ネットワーキング・システム360は、ユーザに対応するユーザ・ノード402を作成し、1つまたは複数のデータ・ストア内にユーザ・ノード402を格納することができる。本明細書で説明するユーザおよびユーザ・ノード402は、適切な場合、登録されたユーザおよび登録されたユーザに関連するユーザ・ノード402を指す。追加または代替として、本明細書で説明するユーザおよびユーザ・ノード402は、適切な場合、ソーシャル・ネットワーキング・システム360に登録していないユーザを指す。特定の実施形態では、ユーザによって提供される情報、またはソーシャル・ネットワーキング・システム360を含む様々なシステムによって収集される情報に、ユーザ・ノード402を関連付けることができる。限定ではなく例として、ユーザは、ユーザの名前、プロファイル写真、連絡先情報、誕生日、性別、結婚状況、家族状況、職業、学歴、好み、関心、または他の人口統計情報を提供することができる。特定の実施形態では、ユーザに関連する情報に対応する1つまたは複数のデータ・オブジェクトにユーザ・ノード402を関連付けることができる。特定の実施形態では、ユーザ・ノード402は、1つまたは複数のウェブ・ページに対応することができる。
【0046】
特定の実施形態では、概念ノード404は概念(concept)に対応することができる。限定ではなく例として、概念は、場所(例えば、映画館、レストラン、ランドマーク、または都市など)、ウェブサイト(例えば、ソーシャル・ネットワーク・システム360に関連するウェブサイトまたはウェブ・アプリケーション・サーバに関連するサード・パーティ・ウェブサイトなど)、エンティティ(例えば、人、会社、グループ、スポーツ・チーム、または有名人など)、ソーシャル・ネットワーキング・システム360内またはウェブ・アプリケーション・サーバなどの外部サーバ上に位置することのできるリソース(例えば、オーディオ・ファイル、ビデオ・ファイル、デジタル・フォト、テキスト・ファイル、構造化された文書、またはアプリケーションなど)、物的または知的財産(例えば、彫刻、絵画、映画、ゲーム、歌、アイデア、写真、または著作物など)、ゲーム、活動、アイデアまたは理論、他の適切な概念、あるいは2つ以上のそのような概念に対応することができる。ユーザによって提供される概念の情報、またはソーシャル・ネットワーキング・システム360を含む様々なシステムによって収集される情報に概念ノード404を関連付けることができる。限定ではなく例として、概念の情報は、名前またはタイトル、1つまたは複数のイメージ(例えば、本のカバー・ページのイメージ)、位置(例えば、住所または地理的位置)、ウェブサイト(それをURLに関連付けることができる)、連絡先情報(例えば、電話番号またはeメール・アドレス)、他の適切な概念情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態では、概念ノード404に関連する情報に対応する1つまたは複数のデータ・オブジェクトに概念ノード404を関連付けることができる。特定の実施形態では、概念ノード404は1つまたは複数のウェブ・ページに対応することができる。
【0047】
特定の実施形態では、ソーシャル・グラフ400内のノードは、ウェブ・ページ(「プロファイル・ページ」と呼ばれることがある)を表すこと、またはウェブ・ページによって表すことができる。プロファイル・ページは、ソーシャル・ネットワーキング・システム360によってホストすること、またはソーシャル・ネットワーキング・システム360にとってアクセス可能にすることができる。プロファイル・ページはまた、サード・パーティ・サーバ370に関連するサード・パーティ・ウェブサイト上でホストすることもできる。限定ではなく例として、特定の外部ウェブ・ページに対応するプロファイル・ページは、特定の外部ウェブ・ページでよく、プロファイル・ページは、特定の概念ノード404に対応することができる。プロファイル・ページは、他のユーザのすべてまたは選択された一部分によって閲覧可能とすることができる。限定ではなく例として、ユーザ・ノード402は、対応するユーザがその中でコンテンツを追加し、宣言を行い、あるいはユーザ自身を表現することのできる、対応するユーザ・プロファイル・ページを有することができる。限定ではなく別の例として、概念ノード404は、特に概念ノード404に対応する概念に関連して、1人または複数のユーザがその中でコンテンツを追加し、宣言を行い、またはユーザ自身を表現することのできる、対応する概念プロファイル・ページを有することができる。
【0048】
特定の実施形態では、概念ノード404は、サード・パーティ・システム370によってホストされるサード・パーティ・ウェブページまたはリソースを表すことができる。サード・パーティ・ウェブページまたはリソースは、他の要素において、コンテンツ、選択可能な、もしくは他のアイコン、またはアクションもしくは活動を表す(例えば、JAVA(登録商標)Script、AJAX、またはPHPコードで実装することのできる)他の対話型オブジェクトを含むことができる。限定ではなく例として、サード・パーティ・ウェブページは、「いいね」、「チェックイン(check in)」、「食べる(eat)」、「レコメンド(recommend)」、または別の適切なアクションもしくは活動などの、選択可能なアイコンを含むことができる。サード・パーティ・ウェブページを閲覧するユーザは、アイコンのうちの1つ(例えば、「食べる」)を選択し、クライアント・システム330に、ユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム360に送信させることによってアクションを実施することができる。メッセージに応答して、ソーシャル・ネットワーキング・システム360は、ユーザに対応するユーザ・ノード402と、サード・パーティ・ウェブページまたはリソースに対応する概念ノード404との間のエッジ(例えば、「食べる」エッジ)を作成し、1つまたは複数のデータ・ストア内にエッジ406を格納することができる。
【0049】
特定の実施形態では、1つまたは複数のエッジ406によってソーシャル・グラフ400内の1対のノードを互いに接続することができる。1対のノードを接続するエッジ406は、その1対のノード間の関係を表すことができる。特定の実施形態では、エッジ406は、1対のノード間の関係に対応する1つまたは複数のデータ・オブジェクトまたは属性を含むか、または表すことができる。限定ではなく例として、第1のユーザは、第2のユーザが第1のユーザの「友人」であることを示すことができる。この表示に応答して、ソーシャル・ネットワーキング・システム360は、第2のユーザに「友人要求」を送信することができる。第2のユーザが「友人要求」を確認した場合、ソーシャル・ネットワーキング・システム360は、第1のユーザのユーザ・ノード402をソーシャル・グラフ400内の第2のユーザのユーザ・ノード402に接続するエッジ406を作成し、1つまたは複数のデータ・ストア364のうちのエッジ406をソーシャル・グラフ情報として格納することができる。図4の例では、ソーシャル・グラフ400は、ユーザ「A」とユーザ「B」のユーザ・ノード402間の友人関係を示すエッジ406と、ユーザ「C」とユーザ「B」のユーザ・ノード402間の友人関係を示すエッジとを含む。本開示は、特定のユーザ・ノード402を接続する特定の属性を有する特定のエッジ406を説明するかまたは図示するが、本開示は、ユーザ・ノード402を接続する任意の適切な属性を有する任意の適切なエッジ406を企図する。限定ではなく例として、エッジ406は、友人関係、家族関係、ビジネスまたは雇用関係、ファン関係(fan relationship)、フォロワ関係、ビジター関係(visitor relationship)、加入者関係、上位/従属関係、相互関係、非相互関係、別の適切なタイプの関係、または2つ以上のそのような関係を表すことができる。さらに、本開示は一般にノードが接続されているものとして説明するが、本開示はまた、ユーザまたは概念が接続されているものとして説明する。本明細書では、接続されているユーザまたは概念に対する参照は、適切な場合、1つまたは複数のエッジ406によってソーシャル・グラフ400内で接続されているユーザまたは概念に対応するノードを指すことがある。
【0050】
特定の実施形態では、ユーザ・ノード402と概念ノード404との間のエッジ406は、概念ノード404に関連する概念に対する、ユーザ・ノード402に関連するユーザによって実施される特定のアクションまたは活動を表すことができる。限定ではなく例として、図4に示されるように、ユーザは、概念に対して「いいね」を表明し、概念に「出席し」、概念を「再生し」、概念を「聴取し」、概念を「調理し」、概念に「取り組み」、または概念を「視聴する」ことができ、そのそれぞれは、エッジ・タイプまたはサブタイプに対応することができる。概念ノード404に対応する概念プロファイル・ページは、例えば、選択可能な「チェックイン」アイコン(例えば、クリッカブル(clickable)「チェックイン」アイコンなど)または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャル・ネットワーキング・システム360は、それぞれのアクションに対応するユーザのアクションに応答して、「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく別の例として、ユーザ(ユーザ「C」)が、特定のアプリケーション(オンライン音楽アプリケーションであるSPOTIFY)を使用して、特定の歌を聴取することができる(「Ramble On」)。この場合、ソーシャル・ネットワーキング・システム360は、(図4に示すように)ユーザに対応するユーザ・ノード402と、歌およびアプリケーションに対応する概念ノード404との間の「聴取済み(listened)」エッジ406および「使用済み(used)」エッジを作成し、ユーザが歌を聴取し、アプリケーションを使用したことを示すことができる。さらに、ソーシャル・ネットワーキング・システム360は、(図4に示すように)歌およびアプリケーションに対応する概念ノード404間の「再生済み(played)」エッジ406を作成し、特定の歌が特定のアプリケーションによって再生されたことを示すことができる。この場合、「再生済み」エッジ406は、外部アプリケーション(SPOTIFY)によって外部オーディオ・ファイル(歌「イマジン」)に対して実施されたアクションに対応する。本開示は、ユーザ・ノード402および概念ノード404を接続する特定の属性を有する特定のエッジ406を説明するが、本開示は、ユーザ・ノード402および概念ノード404を接続する任意の適切な属性を有する任意の適切なエッジ406を企図する。さらに、本開示は単一の関係を表すユーザ・ノード402と概念ノード404との間のエッジを説明するが、本開示は、1つまたは複数の関係を表すユーザ・ノード402と概念ノード404との間のエッジを企図する。限定ではなく例として、エッジ406は、ユーザが特定の概念を好むこと、および特定の概念を使用したことの両方を表すことができる。あるいは、別のエッジ406は、(図4の、ユーザ「E」に関するユーザ・ノード402と、「SPOTIFY」に関する概念ノード404との間で示されるように)ユーザ・ノード402と概念ノード404との間の各タイプの関係(または複数の単一の関係)を表すことができる。
【0051】
特定の実施形態では、ソーシャル・ネットワーキング・システム360は、ソーシャル・グラフ400内のユーザ・ノード402と概念ノード404との間のエッジ406を作成することができる。限定ではなく例として、(例えば、ユーザのクライアント・システム330によってホストされるウェブ・ブラウザまたは専用アプリケーションを使用することによって)概念プロファイル・ページを閲覧するユーザは、「いいね」アイコンをクリックまたは選択することにより、ユーザが概念ノード404によって表される概念を好むことを示すことができ、それによって、ユーザのクライアント・システム330に、ユーザが概念プロファイル・ページに関連する概念を好むことを示すメッセージをソーシャル・ネットワーキング・システム360に送信させることができる。メッセージに応答して、ソーシャル・ネットワーキング・システム360は、ユーザと概念ノード404との間の「いいね」エッジ406で示されるように、ユーザに関連するユーザ・ノード402と、概念ノード404との間のエッジ406を作成することができる。特定の実施形態では、ソーシャル・ネットワーキング・システム360は、1つまたは複数のデータ・ストア内にエッジ406を格納することができる。特定の実施形態では、特定のユーザ・アクションに応答して、エッジ406をソーシャル・ネットワーキング・システム360によって自動的に形成することができる。限定ではなく例として、第1のユーザが写真をアップロードし、映画を視聴し、または歌を聴取する場合、第1のユーザに対応するユーザ・ノード402と、これらの概念に対応する概念ノード404との間のエッジ406を形成することができる。本開示は、特定の方式で特定のエッジ406を形成することを説明するが、本開示は、任意の適切な方式で任意の適切なエッジ406を形成することを企図する。
【0052】
特定の実施形態では、広告は、テキスト(HTMLリンクされる)、1つ以上の画像(HTMLリンクされる)、1つ以上の動画、オーディオ、1つ以上のADOBE FLASHファイル、これらの適切な組み合わせ、あるいは1つ以上のウェブ・ページ上に、1つ以上の電子メールに、あるいはユーザによって要求された検索結果に関して示される任意の適切なデジタル形式の任意の他の適切な広告である。付加的に、あるいはこれに代えて、広告は、1つ以上のスンポンサード・ストーリ(例えばソーシャル・ネットワーキング・システム360上のニュースフィードあるいはティッカー・アイテム)である。スポンサード・ストーリは、ユーザによるソーシャル・アクションである(例えば、ページを「いいね!」し、ページで「いいね!」するかコメントし、ページに関連付けられたイベントに回答を促し(RSVPing)、ページに投稿された質問に投票し、場所にチェックインし、アプリケーションを使用するか、ゲームをプレイし、あるいはウェブサイトを「いいね!」するか共有する)。広告主は、例えば、ユーザのプロフィール・ページあるいは他のページの予め定められた領域内で示されたソーシャル・アクションを、広告主に関連付けられた付加的な情報とともに示し、他のユーザのニュースフィードやティッカー内で立体表示するか強調表示し、あるいは他の方法で促進することにより促進する。広告主はソーシャル・アクションを促進するために支払いをする。限定ではなく、例として、広告は、検索結果ページの検索結果の間に含まれ、スポンサード・コンテンツは、非スポンサード・コンテンツに対して促進される。
【0053】
特定の実施形態においては、広告は、ソーシャル・ネットワーキング・システムのウェブ・ページ、サードパーティのウェブ・ページ、あるいは他のページ内で表示されるように要求される。広告は、例えばページのトップのバナー領域に、ページの側部の欄に、ページのGUIに、ポップアップ・ウィンドウに、ドロップダウン・メニューに、ページの入力フィールドに、ページのコンテンツのトップ上に、あるいはページに対する他の位置などの、ページの専用部分に表示される。付加的に、あるいはこれに代えて、広告はアプリケーション内に表示されてもよい。広告は、専用ページ内に表示され、ユーザがページにアクセスするかアプリケーションを利用するに先だって、広告と対話するか広告を見ることをユーザに要求する。ユーザは、例えばウェブ・ブラウザを介して広告を見る。
【0054】
図5は、例示的なコンピュータ・システム500を示す。特定の実施形態では、1つまたは複数のコンピュータ・システム500は、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを実施する。特定の実施形態では、1つまたは複数のコンピュータ・システム500は、本明細書で説明または図示される機能を提供する。特定の実施形態では、1つまたは複数のコンピュータ・システム500上で実行中のソフトウェアが、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを実施しまたは本明細書で説明または図示される機能を提供する。特定の実施形態は、1つまたは複数のコンピュータ・システム500の1つまたは複数の部分を含む。本明細書では、適切な場合、コンピュータ・システムに対する参照はコンピューティング装置を包含し、逆も同様である。さらに、適切な場合、コンピュータ・システムに対する参照は、1つまたは複数のコンピュータ・システムを包含する。
【0055】
本開示は、任意の適切な数のコンピュータ・システム500を企図する。本開示は、任意の適切な物理的形態を取るコンピュータ・システム500を企図する。限定ではなく例として、コンピュータ・システム500は、組込みコンピュータ・システム、システム・オン・チップ(SOC)、シングル・ボード・コンピュータ・システム(SBC)(例えば、コンピュータ・オン・モジュール(COM)やシステム・オン・モジュール(SOM)など)、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話型キオスク、メインフレーム、コンピュータ・システムのメッシュ、携帯電話、携帯情報端末(PDA)、サーバ、タブレット・コンピュータ・システム、またはこれらの2つ以上の組合せでよい。適切な場合、コンピュータ・システム500は、1つまたは複数のコンピュータ・システム500を含むことができ、一体型または分散型でよく、複数の場所にわたるものでよく、複数のマシンにわたるものでよく、複数のデータセンタにわたるものでよく、またはクラウド内に常駐することができ、クラウドは、1つまたは複数のネットワーク内の1つまたは複数のクラウド構成要素を含むことができる。適切な場合、1つまたは複数のコンピュータ・システム500は、実質的な空間的または時間的な限定なしに、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを実施することができる。限定ではなく例として、1つまたは複数のコンピュータ・システム500は、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップをリアル・タイムに、またはバッチ・モードで実施することができる。適切な場合、1つまたは複数のコンピュータ・システム500は、本明細書で説明または図示される1つまたは複数の方法の1つまたは複数のステップを異なる時刻または異なる場所で実施することができる。
【0056】
特定の実施形態では、コンピュータ・システム500は、プロセッサ502、メモリ504、ストレージ506、入力/出力(I/O)インターフェース508、通信インターフェース510、およびバス512を含む。本開示は、特定の構成の、特定の数の特定の構成要素を有する特定のコンピュータ・システムを説明および図示するが、本開示は、任意の適切な構成の、任意の適切な数の任意の適切な構成要素を有する任意の適切なコンピュータ・システムを企図する。
【0057】
特定の実施形態では、プロセッサ502は、コンピュータ・プログラムを構成するような命令を実行するハードウェアを含む。限定ではなく例として、命令を実行するために、プロセッサ502は、内部レジスタ、内部キャッシュ、メモリ504、またはストレージ506から命令を取り出し(またはフェッチし)、その命令を復号化および実行し、次いで内部レジスタ、内部キャッシュ、メモリ504、またはストレージ506に1つまたは複数の結果を書き込むことができる。特定の実施形態では、プロセッサ502は、データ、命令、またはアドレスのための1つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ502を企図する。限定ではなく例として、プロセッサ502は、1つまたは複数の命令キャッシュ、1つまたは複数のデータ・キャッシュ、および1つまたは複数の変換ルックアサイド・バッファ(translation lookaside buffer:TLB)を含むことができる。命令キャッシュ内の命令は、メモリ504またはストレージ506内の命令のコピーでよく、命令キャッシュは、プロセッサ502によるそうした命令の検索を加速することができる。データ・キャッシュ内のデータは、プロセッサ502で実行中の命令が演算するためのメモリ504またはストレージ506内のデータ、プロセッサ502で実行中の後続の命令によるアクセスのために、またはメモリ504もしくはストレージ506に書き込むために、プロセッサ502で実行された以前の命令の結果、あるいは他の適切なデータのコピーでもよい。データ・キャッシュは、プロセッサ502による読取りまたは書込み演算を加速することができる。TLBはプロセッサ502のための仮想アドレス変換(virtual−address translation)を加速することができる。特定の実施形態では、プロセッサ502は、データ、命令、またはアドレス用の1つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ502を企図する。適切な場合、プロセッサ502は、1つまたは複数の演算論理装置(arithmetic logic unit:ALU)を含むことができ、マルチコア・プロセッサでよく、または1つまたは複数のプロセッサ502を含むことができる。本開示は特定のプロセッサを説明および図示するが、本開示は任意の適切なプロセッサを企図する。
【0058】
特定の実施形態では、メモリ504は、プロセッサ502が実行するための命令、またはプロセッサ502が演算するためのデータを格納するメイン・メモリを含む。限定ではなく例として、コンピュータ・システム500は、ストレージ506または別のソース(例えば、別のコンピュータ・システム500など)からメモリ504に命令をロードすることができる。次いでプロセッサ502は、メモリ504から内部レジスタまたは内部キャッシュに命令をロードすることができる。命令を実行するために、プロセッサ502は、内部レジスタまたは内部キャッシュから命令を取り出し、その命令を復号化することができる。命令の実行中または実行後に、プロセッサ502は、1つまたは複数の結果(これは中間結果または最終結果でよい)を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ502は、そうした結果の1つまたは複数をメモリ504に書き込むことができる。特定の実施形態では、プロセッサ502は、(ストレージ506または他の場所ではなく)1つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ504内の命令のみを実行し、(ストレージ506または他の場所ではなく)1つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ504内のデータのみに対して演算する。1つまたは複数のメモリ・バス(これはそれぞれアドレス・バスおよびデータ・バスを含むことができる)が、プロセッサ502をメモリ504に結合することができる。バス512は、以下で説明するように、1つまたは複数のメモリ・バスを含むことができる。特定の実施形態では、1つまたは複数のメモリ管理ユニット(memory management unit:MMU)が、プロセッサ502とメモリ504との間に常駐し、プロセッサ502によって要求されたメモリ504へのアクセスを可能にする。特定の実施形態では、メモリ504はランダム・アクセス・メモリ(RAM)を含む。適切な場合、このRAMは揮発性メモリでよい。適切な場合、このRAMはダイナミックRAM(DRAM)またはスタティックRAM(SRAM)でよい。さらに、適切な場合、このRAMは、単一ポートまたはマルチポートRAMでよい。本開示は任意の適切なRAMを企図する。適切な場合、メモリ504は、1つまたは複数のメモリ504を含むことができる。本開示は特定のメモリを説明および図示するが、本開示は任意の適切なメモリを企図する。
【0059】
特定の実施形態では、ストレージ506は、データまたは命令用のマス・ストレージを含む。限定ではなく例として、ストレージ506は、ハード・ディスク・ドライブ(HDD)、フロッピー(登録商標)・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス(USB)ドライブ、あるいはこれらのうちの2つ以上の組合せを含むことができる。ストレージ506は、適切な場合、取外し可能または取外し不能(または固定)媒体を含むことができる。ストレージ506は、適切な場合、コンピュータ・システム500の内部または外部でよい。特定の実施形態では、ストレージ506は不揮発性固体メモリである。特定の実施形態では、ストレージ506は読取り専用メモリ(ROM)を含む。適切な場合、このROMは、マスクプログラムされたROM、プログラマブルROM(PROM)、消去可能PROM(EPROM)、電気消去可能PROM(EEPROM)、電気書換え可能ROM(EAROM)、またはフラッシュ・メモリ、あるいはこれらのうちの2つ以上の組合せでよい。本開示は、任意の適切な物理的形態を有するマス・ストレージ506を企図する。適切な場合、ストレージ506は、プロセッサ502とストレージ506との間の通信を可能にする1つまたは複数のストレージ制御ユニットを含むことができる。適切な場合、ストレージ506は、1つまたは複数のストレージ506を含むことができる。本開示は特定のストレージを説明および図示するが、本開示は任意の適切なストレージを企図する。
【0060】
特定の実施形態では、I/Oインターフェース508は、コンピュータ・システム500と1つまたは複数のI/O装置との間の通信のための1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム500は、適切な場合、これらのI/O装置のうちの1つまたは複数を含むことができる。これらのI/O装置のうちの1つまたは複数は、人とコンピュータ・システム500との間の通信を可能にすることができる。限定ではなく例として、I/O装置は、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の適切なI/O装置、またはこれらのうちの2つ以上の組合せを含むことができる。I/O装置は1つまたは複数のセンサを含むことができる。本開示は、任意の適切なI/O装置およびそのための任意の適切なI/Oインターフェース508を企図する。適切な場合、I/Oインターフェース508は、プロセッサ502がこれらのI/O装置のうちの1つまたは複数を駆動することを可能にする1つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。I/Oインターフェース508は、適切な場合、1つまたは複数のI/Oインターフェース508を含むことができる。本開示は特定のI/Oインターフェースを説明および図示するが、本開示は任意の適切なI/Oインターフェースを企図する。
【0061】
特定の実施形態では、通信インターフェース510は、コンピュータ・システム500と、1つまたは複数の別のコンピュータ・システム500あるいは1つまたは複数のネットワークとの間の通信(例えば、パケット・ベースの通信など)用の1つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、通信インターフェース510は、イーサネット(登録商標)または他のワイヤ・ベースのネットワークと通信するネットワーク・インターフェース・コントローラ(network interface controller:NIC)またはネットワーク・アダプタ、あるいはWi−Fiネットワークなどのワイヤレス・ネットワークと通信するワイヤレスNIC(wire−based network or a wireless:WNIC)またはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワークおよびそのための任意の適切な通信インターフェース510を企図する。限定ではなく例として、コンピュータ・システム500は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、ローカル・エリア・ネットワーク(LAN)、広域ネットワーク(WAN)、大都市圏ネットワーク(metropolitan area network:MAN)、またはインターネットの1つもしくは複数の部分、あるいはこれらのうちの2つ以上の組合せと通信することができる。これらのネットワークのうちの1つまたは複数の1つまたは複数の部分は、ワイヤードまたはワイヤレスでよい。1例を挙げると、コンピュータ・システム500は、ワイヤレスPAN(WPAN)(例えば、BLUETOOTH(登録商標) WPANなど)、Wi−Fiネットワーク、WI−MAXネットワーク、携帯電話網(例えば、Global System for Mobile Communication(GSM(登録商標))ネットワークなど)、または他の適切なワイヤレス・ネットワーク、あるいはこれらのうちの2つ以上の組合せと通信することができる。コンピュータ・システム500は、適切な場合、これらのネットワークのいずれかに関する任意の適切な通信インターフェース510を含むことができる。通信インターフェース510は、適切な場合、1つまたは複数の通信インターフェース510を含むことができる。本開示は特定の通信インターフェースを説明および図示するが、本開示は任意の適切な通信インターフェースを企図する。
【0062】
特定の実施形態では、バス512は、コンピュータ・システム500の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、バス512は、アクセラレーテッド・グラフィックス・ポート(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つ以上の組合せを含むことができる。バス512は、適切な場合、1つまたは複数のバス512を含むことができる。本開示は特定のバスを説明および図示するが、本開示は、任意の適切なバスまたは相互接続を企図する。
【0063】
本明細書では、コンピュータ可読非一時的記憶媒体は、適切な場合、1つまたは複数の半導体ベースの、または他の集積回路(IC)(例えば、フィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向けIC(ASIC)など)、ハード・ディスク・ドライブ(HDD)、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、光磁気ディスク、光磁気ドライブ、フロッピー(登録商標)・ディスケット、フロッピー(登録商標)・ディスク・ドライブ(FDD)、磁気テープ、固体ドライブ(SSD)、RAMドライブ、セキュア・デジタル・カードもしくはドライブ、任意の他の適切なコンピュータ可読非一時的記憶媒体、またはこれらの2つ以上の適切な組合せを含むことができる。コンピュータ可読非一時的記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せでよい。
【0064】
本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「または」は排他的ではなく包含的である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「AまたはB」は「A、B、またはその両方」を意味する。さらに、別段に明記されていない限り、または文脈によって示されていない限り、「および」は協同および個々の両方である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「AおよびB」は、「AおよびBが一緒に、または個別に」を意味する。
【0065】
本開示の範囲は、当業者なら理解するはずである、本明細書で説明または図示される例示的実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書で説明または図示される例示的実施形態に限定されない。さらに、本開示は、本明細書のそれぞれの実施形態が特定の構成要素、要素、機能、動作、またはステップを含むものとして説明および図示するが、これらの実施形態のいずれも、当業者なら理解するはずである、本明細書のどこかで説明または図示される構成要素、要素、機能、動作、またはステップのいずれかの任意の組合せまたは置換を含むことができる。さらに、特定の機能を実施するように適合され、配置され、実施することが可能であり、実施するように構成され、実施することが可能にされ、実施するように動作可能である装置またはシステムあるいは装置またはシステムの構成要素に対する添付の特許請求の範囲での参照は、その装置、システム、または構成要素がそのように適合され、配置され、可能であり、構成され、可能にされ、動作可能にされる限り、その装置、システム、構成要素またはその特定の機能が活動化され、オンにされ、またはロック解除されるか否かに関わらず、その装置、システム、構成要素を包含する。
図1A
図1B
図2
図3
図4
図5