(57)【要約】一実施形態においては、コンピューティング・デバイスは、予め生成すべきディスプレイ・オブジェクトの部分を識別する。装置は、アイドル時間の次に来たるウィンドウ（すなわち、スレッドが最小期間の間アイドルとなる場合の次の機会）を識別するためにスレッドを監視する。装置は、ウィンドウの間にスレッドにより実行するために、１つ以上の選択される予め生成されるタスクをメッセージ・キューに付加する。装置は、コンテンツ・レイアウトの一部におけるコンテンツを備えるディスプレイ・オブジェクトの少なくとも１つの選択される要素を予め生成することにより、メッセージ・キューにおける１つ以上の選択される予め生成されるタスクを実行し、続いてディスプレイ・オブジェクトを返す。
2016519823.tif 000002
【特許請求の範囲】
【請求項１】
コンピューティング・デバイスによって、予め生成すべきディスプレイ・オブジェクトの部分を識別する工程と、
前記コンピューティング・デバイスによって、アイドル時間の次のウィンドウを識別するためにスレッドを監視する工程であって、該アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含む、スレッドを監視する工程と、
前記コンピューティング・デバイスによって、前記アイドル時間の次のウィンドウの間に前記スレッドにより実行するために、１つ以上の選択される予め生成されるタスクをメッセージ・キューに付加する工程と、
前記コンピューティング・デバイスによって、コンテンツ・レイアウトの一部におけるコンテンツを備えるとともに前記コンテンツ・レイアウトに関連付けられるディスプレイ・オブジェクトの少なくとも１つの選択される要素を予め生成することにより、前記メッセージ・キューにおける前記１つ以上の選択される予め生成されるタスクを実行する工程と、
前記コンピューティング・デバイスによって、前記ディスプレイ・オブジェクトを返す工程とを含むことを特徴とする方法。
【請求項２】
予め生成すべき前記ディスプレイ・オブジェクトの前記部分は、前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域を満たす前記コンテンツ・レイアウトの前記一部を含み、前記表示可能領域は、前記スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項３】
前記少なくとも１つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項２に記載の方法。
【請求項４】
前記メッセージ・キューにおける前記１つ以上の選択される予め生成されるタスクを実行する工程は、
降伏点に達することで現在実行されているタスクをサスペンドする工程と、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加する工程とを含むことを特徴とする請求項１に記載の方法。
【請求項５】
アプリケーション・テイラード・リサイクラに少なくとも１つの予め生成される要素を格納する工程と、
前記コンテンツ・レイアウトの前記一部におけるコンテンツに対するリクエストに応じて、前記アプリケーション・テイラード・リサイクラから前記少なくとも１つの予め生成される要素を検索する工程と、
前記コンテンツ・レイアウトの前記一部に要求されるような前記ディスプレイ・オブジェクトの他の要素を更新する工程と、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第１の部分におけるコンテンツに対するリクエストを受信する工程とを更に含むことを特徴とする請求項４に記載の方法。
【請求項６】
前記アプリケーション特有の規則は、各要素を予め生成するコストに基づいて要素に優先順位を付け、前記要素を予め生成するコストは、要素のサイズ、要素の複雑度、要素がいかなる頻度で更新される必要があるか、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項１に記載の方法。
【請求項７】
アプリケーション特有の規則は、前記コンピューティング・デバイスの前記利用可能なメモリに基づき予め生成するために選択される要素の数を調整することを特徴とする請求項５に記載の方法。
【請求項８】
ソフトウェアを具現化する１つまたは複数の非一時的なコンピュータ可読記憶媒体であって、該ソフトウェアはコンピューティング・デバイスによる実行時に、
予め生成すべきディスプレイ・オブジェクトの部分を識別し、
アイドル時間の次のウィンドウを識別するためにスレッドを監視し、前記アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、
前記アイドル時間の次のウィンドウの間に前記スレッドにより実行するために、１つ以上の選択される予め生成されるタスクをメッセージ・キューに付加し、
コンテンツ・レイアウトの一部におけるコンテンツを備えるとともに前記コンテンツ・レイアウトに関連付けられるディスプレイ・オブジェクトの少なくとも１つの選択される要素を予め生成することにより、前記メッセージ・キューにおける前記１つ以上の選択される予め生成されるタスクを実行し、
前記ディスプレイ・オブジェクトを返すように動作可能であることを特徴とするコンピュータ可読記憶媒体。
【請求項９】
予め生成すべき前記ディスプレイ・オブジェクトの前記部分は、前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域を満たす、前記コンテンツ・レイアウトの前記部分を含み、前記表示可能領域は、前記スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定されることを特徴とする請求項８に記載の媒体。
【請求項１０】
前記少なくとも１つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項９に記載の媒体。
【請求項１１】
前記メッセージ・キューにおける前記１つ以上の選択される予め生成されるタスクを実行するために、前記ソフトウェアは、実行時に、
降伏点に達することで現在実行されているタスクをサスペンドし、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加するように更に動作可能であることを特徴とする請求項８に記載の媒体。
【請求項１２】
前記ソフトウェアは、実行時に、
アプリケーション・テイラード・リサイクラに少なくとも１つの予め生成される要素を格納し、
前記コンテンツ・レイアウトの前記部分におけるコンテンツに対するリクエストに応じて、前記アプリケーション・テイラード・リサイクラから少なくとも１つの予め生成される要素を検索し、
前記コンテンツ・レイアウトの前記部分のために必要に応じて前記ディスプレイ・オブジェクトの他の要素を更新し、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第１の部分におけるコンテンツに対するリクエストを受信するように更に動作可能であることを特徴とする請求項１１に記載の媒体。
【請求項１３】
前記アプリケーション特有の規則は、各要素を予め生成するコストに基づいて要素に優先順位を付け、前記要素を予め生成するコストは、前記要素のサイズ、前記要素の複雑度、前記要素がいかなる頻度で更新される必要があるか、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項８に記載の媒体。
【請求項１４】
アプリケーション特有の規則は、前記コンピューティング・デバイスの前記利用可能なメモリに基づき予め生成するために選択される要素の数を調整することを特徴とする請求項１２に記載の媒体。
【請求項１５】
１つ以上のプロセッサと、
同プロセッサによって実行可能な指示を含む、前記プロセッサに接続されるメモリとを備えるコンピューティング・デバイスであって、前記プロセッサは、前記指示の実行時に、
予め生成すべきディスプレイ・オブジェクトの部分を識別し、
アイドル時間の次のウィンドウを識別するために、スレッドを監視し、前記アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、
前記アイドル時間の次のウィンドウの間に前記スレッドにより実行するために、メッセージ・キューに１つ以上の選択される予め生成されるタスクを付加し、
前記ディスプレイ・オブジェクトが関連付けられるコンテンツ・レイアウトの一部のための、コンテンツを備えるディスプレイ・オブジェクトの少なくとも１つの選択される要素を予め生成することにより、前記メッセージ・キューにおける１つ以上の選択される予め生成されるタスクを実行し、
前記ディスプレイ・オブジェクトを返すように動作可能であることを特徴とするコンピューティング・デバイス。
【請求項１６】
前記メッセージ・キューにおける前記１つ以上の選択される予め生成されるタスクを実行するために動作可能な前記プロセッサは、
降伏点に達することで現在実行されているタスクをサスペンドし、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加するように更に動作可能であることを特徴とする請求項１５に記載のコンピューティング・デバイス。
【請求項１７】
前記プロセッサは、前記指示の実行時に、
アプリケーション・テイラード・リサイクラに少なくとも１つの予め生成される要素を格納し、
前記コンテンツ・レイアウトの前記部分におけるコンテンツに対するリクエストに応じて、前記アプリケーション・テイラード・リサイクラから少なくとも１つの予め生成される要素を検索し、
前記コンテンツ・レイアウトの前記部分のために必要に応じて前記ディスプレイ・オブジェクトの他の要素を更新し、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第１の部分におけるコンテンツに対するリクエストを受信するように更に動作可能であることを特徴とする請求項１６に記載のコンピューティング・デバイス。
【請求項１８】
予め生成すべき前記ディスプレイ・オブジェクトの前記部分は、前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域を満たす、前記コンテンツ・レイアウトの前記部分を含み、前記表示可能領域は、前記前記スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定され、前記少なくとも１つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項１５に記載のコンピューティング・デバイス。
【請求項１９】
前記アプリケーション特有の規則は、各要素を予め生成するコストに基づき要素に優先順位を付け、前記予め要素を生成するコストは、前記要素のサイズ、前記要素の複雑度、前記要素がいかなる頻度で更新される必要があるか、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項１５に記載のコンピューティング・デバイス。
【請求項２０】
アプリケーション特有の規則は、前記コンピューティング・デバイスの前記利用可能なメモリに基づき予め生成するために選択される要素の数を調整することを特徴とする請求項１５に記載のコンピューティング・デバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、オブジェクト・ライフサイクル管理に関する。
【背景技術】
【０００２】
コンテンツが表示可能領域を越えて拡張する（コンテンツを視界に入れるためにユーザがコンテンツ・レイアウトをスクロールする必要がある）、特定のディスプレイ・スクリーンのためにコンテンツ・レイアウトをレンダリングする場合、ディスプレイ・オブジェクト（例えば、ＡＮＤＲＯＩＤ（登録商標）のビュー・オブジェクト）およびそれらのディスプレイ・オブジェクトの要素は、ユーザがコンテンツをスクロールすると、これらが視界に入るように、専用ＵＩスレッドによってリアル・タイムに生成される。表示可能領域を越えた位置から付加的なコンテンツを視界に入れる際に潜在的に重要な部分は、ディスプレイ・オブジェクトを生成するためのタスクのリアル・タイム実行、すなわち測定（ディスプレイ・オブジェクト、およびその要素の各々の面積要件の再帰的な測定）、レイアウト（ディスプレイ・オブジェクトへの、続いてその要素の各々への面積および位置の割り当て）、およびスクリーン上のディスプレイ・オブジェクトを引くためのコマンドの生成による。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
これは、フレーム・バッファ充填のような他の重大なオペレーションを処理することに更にビジーであるＵＩスレッドにそのようなタスクを割り当てるシステムの作動において特に問題である。
【課題を解決するための手段】
【０００４】
特定の実施形態においては、ＵＩスレッドが予め生成されるタスク（あるいはその論理チャンク）を間に置くためにアイドルとなる期間を利用することにより、ディスプレイ・オブジェクトを予め生成することが達成される。ディスプレイ・オブジェクトを予め生成することを促進するために、アプリケーションは、ＵＩスレッドが最小のアイドル時間（例えば次のフレーム・バッファ充填の前に残された１７ミリ秒）の間、アイドルとなる期間を識別するためにＵＩスレッドを監視し、１つ以上の予め生成されるタスクをＵＩスレッドのためのメッセージ・キューに付加し、完了させる（時間が十分である場合）ために、あるいは降伏点に到達し、残された利用可能時間が最小のアイドル時間未満となるまで、予め生成されるタスクを実行する。
【０００５】
ここに開示される実施形態は、ディスプレイ・オブジェクトのサブ要素により更に実施され、これらの要素のうちのいくつかは入れ子のディスプレイ・オブジェクトを含む。特定の実施形態は、ビュー・モデル・ビューのモデル・パターンに従う任意のプラットフォーム上で実施される。
【図面の簡単な説明】
【０００６】
【図１Ａ】ディスプレイ・オブジェクトを使用してレンダリングされるコンテンツ・レイアウトを示すワイヤフレーム。
【図１Ｂ】図１Ａの詳細なセクションを例示するワイヤフレーム。
【図２】アプリケーション・テイラード・オブジェクトを予め満たす方法を例示する図。
【図３】ソーシャル・ネットワーキング・システムに関連付けられたネットワーク環境を例示する図。
【図４】ソーシャル・グラフを例示する図。
【図５】コンピュータ・システムを例示する図。
【発明を実施するための形態】
【０００７】
コンテンツを意識してディスプレイ・オブジェクトを予め満たすことを促進するために、アプリケーションは、アプリケーション特有のポリシーを適用し、満たすためにもっともコスト高となるディスプレイ・オブジェクトおよび／またはディスプレイ・オブジェクトの要素のみを予め選択的に満たす方法を決定する。
【０００８】
表示されるコンテンツ・レイアウトの特定のセクションに対するリクエストを受け取るに先立って、アプリケーションは、コンテンツ・レイアウトの特定のセクションの要素を選択し、選択された要素を予め満たすか、あるいは満たし、リサイクラに予め満たされる要素を格納する。同じコンテンツ要素が再びリクエストされると、アプリケーションは、リサイクラからディスプレイ・オブジェクトを検索し、ラッパ・オブジェクトでラップし、ラップされたディスプレイ・オブジェクトを返す。ここに開示される実施形態は、ディスプレイ・オブジェクトの要素により更に実施され、これらの要素のうちのいくつかは入れ子のディスプレイ・オブジェクトを含む。
【０００９】
リサイクラを実行する方法に関して、特定の実施形態においては、２０１３年４月１１日に出願され発明の名称が「アプリケーション・テイラード・オブジェクトの再利用」である米国特許出願第１３／８６１２５０号明細書に開示される１つ以上のシステム、コンポーネント、要素、機能、方法、作動、あるいは工程が利用され、明細書はその全体がここに開示されたものとする。
【００１０】
図１Ａは、複数のディスプレイ・オブジェクトに基づきタブレット・デバイス上のディスプレイのためにレンダリングされる、ソーシャル・ネットワーキング・システムのユーザのためのニュースフィード・ページを示すコンテンツ・レイアウト１００を例示するワイヤフレームである。コンテンツ・レイアウト１００の表示可能領域（点線によって示す）は、タブレット・デバイスのスクリーン面積の範囲内に適合する（スクロール不要視認可能領域（ａｂｏｖｅ  ｔｈｅ  ｆｏｌｄ））コンテンツ・レイアウト１００の部分を含む。
【００１１】
コンテンツ・レイアウト１００は、ヘッダ領域１１０、メニューバー１２０、左側サイドバー１３０、右側サイドバー１４０、および主本体領域１５０を含む。領域はそれぞれそれ自身のディスプレイ・オブジェクトに関連付けられ、その各々は、制限ではなく、例として、１つ以上の画像、動画、テキスト、リンク、形式、および対話型の要素などの複数の要素を含む。これらの要素の各々は１つ以上の入れ子のディスプレイ・オブジェクトによって表される。
【００１２】
ヘッダ領域１１０に関連付けられるディスプレイ・オブジェクトは、ソーシャルネットワークのユーザの対話型のプロフィール画像１１２、ソーシャルネットワークのユーザによって選択されるテキスト・ブロック１１４、背景画像１１６、およびテーマ音楽を含む。対話型のプロフィール画像１１２は、マウスのようなポインティングデバイスがプロフィール画像上にとどまると現れるソーシャルネットワークのユーザのプロフィールの要約を表示するポップアップ・ウィンドウをレンダリングするために、画像、テキスト、リンク、およびＪＡＶＡＳＣＲＩＰＴ（登録商標）コードを含むディスプレイ・オブジェクトに基づきレンダリングされる。
【００１３】
メニューバー１２０に関連付けられるディスプレイ・オブジェクトは、５つのメニュー・オプション１２５Ａ乃至１２５Ｆを含み、その各々は画像、テキスト、およびリンクを含む。
【００１４】
左側のサイドバー１３０に関連付けられるディスプレイ・オブジェクトは、推奨の混合（スポンサード・ストーリを含む）（１３５Ａ乃至１３５Ｅのみを示すが、更に多くの推奨があってもよい）のためのコンテンツを含み、その各々はディスプレイ・オブジェクトに基づいてレンダリングされる。推奨のためのディスプレイ・オブジェクトの各々は、推奨に関係する更に詳細な情報を得るために、対話型の画像、タイトル、推奨のためのテキスト、およびリンクを含む。ニュースフィード・アイテムのためのディスプレイ・オブジェクトの各々は、更に１つ以上の画像あるいは１つの動画を含む。
【００１５】
右側のサイドバー１４０に関連付けられるディスプレイ・オブジェクトは、１つ以上の広告１４５のためのコンテンツを含み、その各々が、ディスプレイ・オブジェクトに基づいてレンダリングされる。図１Ａに示す例において例示されるように、広告１４５Ａはスクロール不要視認領域に現れるが、広告１４５Ｂはなお見えない。広告のコンテンツは、サードパーティ広告主によって少なくとも部分的に決定される。
【００１６】
主本体領域１５０に関連付けられるディスプレイ・オブジェクトは、複数のニュースフィード・アイテム（１５５Ａ乃至１５５Ｅのみを示すが、より多くのニュースフィード・アイテムが設けられてもよい）を含み、その各々はユーザの友達（すなわち、ソーシャルグラフのつながり）に関係するアクティビティに関連付けられるディスプレイ・オブジェクトに基づいてレンダリングされる。
【００１７】
図１Ｂは、図１Ａの詳細なセクションを例示するワイヤフレームであり、コンテンツ・レイアウト１００の主本体領域１５０におけるニュースフィード・アイテム１５５Ｂ乃至１５５Ｅを示す。図１Ａに示すように、コンテンツ・レイアウト１００の表示可能領域（点線で示す）は、タブレット・デバイスのスクリーン上に適合するコンテンツ・レイアウト１００の部分を含む。
【００１８】
ニュースフィード・アイテム１５５のためのディスプレイ・オブジェクトはそれぞれ、友達の対話型のプロフィール画像１６０、友達の名前１６５、ニュースフィード・アイテム用のテキスト１７０、時間依存情報１７５（例えば、リストを見たか、コメントしたか、「いいね！」した人の絶えず更新される数、リストを見たか、コメントしたか、「いいね！」したもっとも最近の１人か２人の人の短いリスト等）、ニュースフィード・アイテムを「いいね！」するためのリンク１８０、ニュースフィード・アイテムに関するコメントへのリンク１８５、およびニュースフィード・アイテムを「共有する」ためのリンク１９０を含む。ニュースフィード・アイテムのためのディスプレイ・オブジェクトの各々は、１つ以上の画像１９５あるいは１つのビデオを更に含む。
【００１９】
対話型のプロフィール画像１６０の各々は、マウスのようなポインティングデバイスがプロフィール画像上にとどまると現れるソーシャルネットワークのユーザのプロフィールの要約を表示するポップアップ・ウィンドウをレンダリングするために、画像、テキスト、リンク、およびＪＡＶＡＳＣＲＩＰＴ（登録商標）コードを含むディスプレイ・オブジェクトに基づいてレンダリングされる。
【００２０】
図２は、アプリケーションで制御された、ディスプレイ・オブジェクトの事前補充方法を例示する。工程２１０で、アプリケーションは、予め生成すべきディスプレイ・オブジェクトの部分を識別する。例えば、図１Ａに例示するように、ディスプレイ・オブジェクトは、ニュースフィードのためのコンテンツ・レイアウト・オブジェクトを含み、図１Ｂに示すように、ニュースフィードは、ニュースフィード要素１５５の長いリストを含む。予め生成するために識別されるディスプレイ・オブジェクトの部分は、ユーザが「ページ・ダウン」ボタンを押すことにより下へスクロールする場合に表示可能領域を満たすニュースフィード要素１５５の次の組を含む。
【００２１】
工程２２０では、アプリケーションは、ＵＩスレッドが最小の期間の間アイドルとなる場合における時間の次のウィンドウを識別するためにＵＩスレッドを監視する。例えば、アプリケーションが６０Ｈｚ（あるいは６０フレーム／秒）のスクリーン・リフレッシュレート・レートでモバイル・コンピューティング・デバイス用のオペレーティング・システム上で作動している場合、オペレーティング・システムは１６．６７ミリ秒ごとにフレーム・バッファの充填を完了する必要がある。コンピューティング・デバイスが１２ミリ秒でフレーム・バッファの充填を完了すると、１６．６７ミリ秒ごとに（フレーム・バッファを満たすオペレーションの完了時に）発生する４．６７ミリ秒のウィンドウが残される。最小の期間は、少なくともコンテンツ・レイアウトに基づいて発生する可能性の高い多くのタスクに使用される最も小さな有用な期間である。
【００２２】
工程２３０では、アプリケーションは、アイドル時間の次の期間の間にＵＩスレッドにより実行するために、１つ以上の予め生成されるタスクを選択してメッセージ・キューに付加する。特定の実施形態では、アプリケーションは、迅速に実行される複数のタスクをグループ化する。１つ以上の予め生成されるタスクのための実行時間の合計は、時間の次のウィンドウにおいて利用可能な時間未満である。任意の所定のタスクのために予期される実行時間は、予め定められる評価で設定されるか、あるいは、個別のユーザやユーザ群に基づく所与の十分な履歴データにより時間にわたって学習される。実行される次のタスクが時間の次のウィンドウにおいて利用可能である時間よりも長くかかる特定の実施形態においては、アプリケーションはタスクが降伏点でサスペンドされると予期して、タスクをメッセージ・キューに単純に付加する。
【００２３】
特定の実施形態では、アプリケーションは、表示可能領域の面積、利用可能なメモリ、およびアプリケーションに特有の規則に基づいて、予め生成するためにディスプレイ・オブジェクトの特定の要素を選択する。特定の実施形態では、特にリストベースやグリッドベースのコンテンツ・レイアウトに関して、アプリケーション特有の規則は、インクリメントを設定し、これにより要素を予め生成する。
【００２４】
インクリメントは、表示可能領域の面積の範囲内に適合するリストまたはグリッドのアイテムの数によって定義されるユニットの倍数である。例えば、図１Ｂに示すように、４つのニュースフィード・アイテムが、表示可能領域の縦の面積を満たし、コンテンツ・レイアウトが、縦の面積に延びる（が、水平の面積ではない）。この例において、アプリケーション特有の規則は、ユニットが４つのニュースフィード・アイテムを含むと判断し（表示可能領域を満たすものであるため）、要素を予め生成するためのインクリメントが３であると決定する。これらにより、アプリケーションがニュースフィード・アイテム１５５Ｂ乃至１５５Ｅを表示するためのリクエストに応じる場合、アプリケーションは次の１２のニュースフィード・アイテムに選択される要素を更に予め満たす。特定の実施形態では、倍数はユーザに特有の使用法パターンに基づく。例えば、ユーザが通常ニュースフィードを相当緩慢にスクロールする場合、倍数はより小さな数となる。逆に、ユーザが通常ニュースフィードを相当迅速にスクロールする場合、倍数はより大きな数となる。特定の実施形態では、倍数は、リストまたはグリッド要素のためのコンテンツの属性に更に基づく。例えば、コンテンツが非常に豊富であるとともにユーザがブラウズするのに時間がかかる可能性が高いタイプのものである場合（例えば、ユーザが各々の上をマウス操作すると再生される動画のサムネール）、倍数は低減される。
【００２５】
特定の実施形態では、アプリケーション特有の規則は、生成がよりコスト高であるディスプレイ・オブジェクトの要素の選択に優先順位を付ける。要素を生成するコストは、任意の適用可能な基準、例えば要素のサイズ、要素の複雑度（例えば、要素が入れ子のディスプレイ・オブジェクトか。）、いかなる頻度で要素を更新する必要があるか、プラットフォームの性能および構成（例えば、装置はクライアント側スクリプトの実行をサポートしないか、禁止するか。これに代わるより単純なコンテンツを備えた代替物が必要であるか。）などに基づき決定される。
【００２６】
特定の実施形態では、アプリケーション特有の規則は、利用可能なメモリに基づきディスプレイ・オブジェクトの要素を選択する。例えば、利用可能なメモリがあまりない場合、アプリケーションは、最もコスト高な要素のみを予め生成することを選択するが、より多くの利用可能なメモリがある場合、アプリケーションは、付加的な要素（多少それほどコスト高でない要素）を予め生成する。別の例において、利用可能なメモリがあまりない場合、アプリケーションは頻繁に再使用される可能性が高い要素を予め生成することを選択する。例えば、次の１０のニュースフィード・アイテムがすべて人気のあるオンライン記事への同じ複合リンク（これは画像、テキスト、リンク、および他の情報を含む）を投稿した人に関係する場合、複合リンクを表す要素は他の要素よりも上の優先順位を受け取る。
【００２７】
工程２４０では、アプリケーションは、メッセージ・キューにおけるスケジュールされたタスクを実行する。特定の実施形態では、スケジュールされたタスクは、ディスプレイ・オブジェクトの要素の測定、および／またはレイアウトに関する。実行される次のタスクが時間の次のウィンドウで利用可能な時間よりも長くかかる特定の状況において、アプリケーションは、ＵＩスレッドが著しく遅延することなくそのキュー（例えば、次のフレーム・バッファ充填）の他の作業を処理できるように降伏点でタスクの実行をサスペンドする。
【００２８】
工程２４５では、降伏点においてタスクをサスペンドする必要がある場合、アプリケーションは、ＵＩスレッドにおけるメッセージ・キューにサスペンドされたタスクを戻して付加する。これにより、タスクは利用可能な次のウィンドウを再度占める。これに代えて、実施される予め生成される付加的なタスクがある場合、アプリケーションは次の１つ以上のタスクをスケジュールするために工程２２０に戻る。
【００２９】
工程２５０では、これから実行されるいくつかの選択されたタスクがなお存在する場合、工程２２０に戻るが、あるいは可能であれば（工程２５５）、アプリケーションは、完了させるべく予め生成されるタスクを実行する（予め生成されたコンテンツ・レイアウトの部分のためのリクエストが受け取られる前に十分な時間がある場合）。
【００３０】
工程２６０では、アプリケーションは、アプリケーション・テイラード・リサイクラにディスプレイ・オブジェクトの予め生成される要素を格納する。コンテンツ・レイアウトの関連する部分が表示可能領域のためにリクエストされるまで、これらの格納される要素は、リサイクラに保持される。
【００３１】
工程２６５では、一旦ディスプレイ・オブジェクトが予め生成されたコンテンツ・レイアウトの部分のためのリクエストが受け取られると、アプリケーションはアプリケーション・テイラード・リサイクラからディスプレイ・オブジェクトの任意の予め生成される要素を検索する（工程２７０）。しかしながら、リサイクラが以前に使用されたディスプレイ・オブジェクトおよびその要素の他、予め生成されるディスプレイ・オブジェクトおよびその要素を含むため、特定の実施形態においては、アプリケーション・テイラード・リサイクル・ポリシーが適用され、リサイクラにおける予め生成されたものを含むいずれのディスプレイ・オブジェクトおよびその要素が再使用に適切であるかが識別される。
【００３２】
リサイクラにおけるディスプレイ・オブジェクトは、現在リクエストされているコンテンツと同じか同様であるコンテンツを含む場合、再使用に適切である。検索されるディスプレイ・オブジェクトを再度使用するために、必要に応じてディスプレイ・オブジェクトの特定の要素を更新することが必要である。予め生成されたディスプレイ・オブジェクトにおいてさえ、ユーザがスクロールするのにどのくらいの時間がかかったかに応じて、所定の時間依存要素を少なくとも更新する必要がある。
【００３３】
リサイクラにおけるディスプレイ・オブジェクトは、同じタイプのオブジェクトであるが異なるコンテンツを含む場合、再利用に適切である。この場合、アプリケーションは、リクエストされたコンテンツを有するディスプレイ・オブジェクトをゼロからリアル・タイムに生成し（これらは任意の予め生成されるディスプレイ・オブジェクトやその要素のためである必要はない）、これにより、ディスプレイ・オブジェクトにおける既存のコンテンツのほとんど、あるいはそうでない場合すべてを上書きする。
【００３４】
いずれのディスプレイ・オブジェクトが再使用、再利用に適切であるか、あるいは適切でないかの判断は、アプリケーション特有の、装置特有の、および／または、ユーザ特有のリサイクル・ポリシーに依存する。特定の実施形態では、アプリケーションは、アプリケーション要件、コンテンツのタイプ、装置属性（例えば、利用可能なメモリおよび／またはディスプレイ・スクリーンの面積。）、コンテンツ統計、使用パターンおよび選択、あるいは１つ以上の任意の他の適切な要因に従って、リサイクル・ポリシーを設定する。これらのポリシーにより、オブジェクトをリサイクラにいくつ保持するか、いかなるタイプのオブジェクトをリサイクラに格納するか、どのようにディスプレイ・オブジェクトが再使用および／または再利用に適切であるかを判断するか、ディスプレイ・オブジェクトをいつ再使用乃至再利用するかが管理される。
【００３５】
リサイクラがゼロ（ｎｕｌｌ）を返すと、アプリケーションは、リクエストされたコンテンツを表示するために適切なタイプの新しいディスプレイ・オブジェクトを膨らませ、続いてリクエストされたコンテンツを有するディスプレイ・オブジェクトを生成する。新しいディスプレイ・オブジェクトを膨らませること、および空のディスプレイ・オブジェクトを生成することは、コスト高な作業であるため、これは最も高価なパスである。従って、アプリケーションは、リサイクラに格納される適切なディスプレイ・オブジェクトをいつ再利用するか、あるいは再利用を禁止するかを決定する場合、対立する優先順位の均衡を保つ必要がある。
【００３６】
工程２８０では、アプリケーションは、表示可能領域のために要求されるようなディスプレイ・オブジェクトを生成する処理を完了し、リクエストに応じてディスプレイ・オブジェクトを返す。
【００３７】
ここに開示される実施形態は、ディスプレイ・オブジェクトの要素に関して実施されるものとして記述されるが、特定の実施形態においては、ここに開示される技術は、ディスプレイ・オブジェクトの所定の要素（ディスプレイ・オブジェクトそのものであってもよい）に対して、これらの要素の一部あるいはすべてを予め満たすために、再帰的な方法で適用されてもよい。
【００３８】
ここに開示される実施形態は、アプリケーションによって実施されるものとして記述されるが、当業者に認識されるように、ここに開示される例示の方法２００および他の実施形態の工程の多くは、１つ以上の抽象化層で作動する１つ以上のソフトウェアによって実施される。例えば、上述した例示の方法の工程は、アプリケーションとは個別に実行されるとともにアプリケーションとリサイクラとのインターフェースとなるソフトウェアによって実行される。
【００３９】
特定の実施形態においては、適切な場合、図２の方法の１つ以上の工程を繰り返す。本開示は特定の順序で生じるものとして図２の方法の特定の工程について記述し、例示しているが、本開示において任意の好適な順序で生じる図２の方法の任意の好適な工程も考えられる。更に、本開示は図２の方法の特定の工程を実施する特定のコンポーネント、装置、あるいはシステムについて開示し記述するが、本開示においては、図２の方法の任意の適切な工程を実施する任意の適切なコンポーネント、装置、あるいはシステムが考えられる。
【００４０】
図３は、ソーシャル・ネットワーキング・システムに関連付けられるネットワーク環境３００を例示する。ネットワーク環境３００は、ネットワーク３１０によって互いに接続されたユーザ３０１、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、およびサード・パーティ・システム３７０を含む。図３はユーザ３０１、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、サード・パーティ・システム（ｔｈｉｒｄ−ｐａｒｔｙ  ｓｙｓｔｅｍ）３７０、およびネットワーク３１０の特定の構成を示すが、本開示は、ユーザ３０１、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、サード・パーティ・システム３７０、およびネットワーク３１０の任意の適切な構成を企図する。限定ではなく例として、ネットワーク３１０を迂回して、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、およびサード・パーティ・システム３７０のうちの２つ以上を互いに直接的に接続することができる。別の例として、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、およびサード・パーティ・システム３７０のうちの２つ以上を、物理的または論理的に、全体的または部分的に共に配置することができる。さらに、図３は特定の数のユーザ３０１、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、サード・パーティ・システム３７０、およびネットワーク３１０を示すが、本開示は、任意の適切な数のユーザ３０１、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、サード・パーティ・システム３７０、およびネットワーク３１０を企図する。限定ではなく例として、ネットワーク環境３００は、複数のユーザ３０１、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、サード・パーティ・システム３７０、およびネットワーク３１０を含むことができる。
【００４１】
特定の実施形態では、ユーザ３０１は、ソーシャル・ネットワーキング・システム３６０と、またはソーシャル・ネットワーキング・システム３６０を介して対話または通信する個人（人間のユーザ）、エンティティ（例えば、企業、ビジネス、またはサード・パーティ・アプリケーション）、または（例えば、個人またはエンティティの）グループでよい。特定の実施形態では、ソーシャル・ネットワーキング・システム３６０は、オンライン・ソーシャル・ネットワークをホストするネットワーク・アドレス指定可能コンピューティング・システム（ｎｅｔｗｏｒｋ−ａｄｄｒｅｓｓａｂｌｅ  ｃｏｍｐｕｔｉｎｇ  ｓｙｓｔｅｍ）でよい。ソーシャル・ネットワーキング・システム３６０は、例えば、ユーザ・プロファイル・データ、概念プロファイル・データ、ソーシャル・グラフ情報、またはオンライン・ソーシャル・ネットワークに関する他の適切なデータなどのソーシャル・ネットワーキング・データを生成、格納、受信、および送信することができる。ネットワーク環境３００の他の構成要素により、直接的に、またはネットワーク３１０を介して、ソーシャル・ネットワーキング・システム３６０にアクセスすることができる。特定の実施形態では、ソーシャル・ネットワーキング・システム３６０は、例えば、適切なプライバシー設定を設定することなどにより、ユーザ３０１がそのアクションをソーシャル・ネットワーキング・システム３６０によって記録させること、または他のシステム（例えば、サード・パーティ・システム３７０）と共有させることを選択するか、または選択しないことを可能にする許可サーバ（あるいは他の適切な１つ以上の構成要素）を含むことができる。ユーザのプライバシー・セッティングにより、ユーザに関連付けられるどのような情報のログが記録されるか、どのようにユーザに関連付けられる情報のログが記録されるか、いつユーザに関連付けられる情報がログを記録されるか、誰がユーザに関連付けられる情報のログを記録するか、誰がユーザに関連付けられる情報を共有するか、いかなる目的でユーザに関連付けられる情報のログを記録するか、あるいは情報を共有するかが決定される。認証サーバは、好適にブロッキング、データ・ハッシング、匿名化、あるいは他の適切な技術を介してソーシャル・ネットワーキング・システム３０のユーザの１つ以上のプライバシー・セッティングを強化するために使用される。ネットワーク環境３００の他の構成要素により、直接的に、またはネットワーク３１０を介して、サード・パーティ・システム３７０にアクセスすることができる。特定の実施形態では、１人または複数のユーザ３０１は、１つまたは複数のクライアント・システム３３０を使用して、ソーシャル・ネットワーキング・システム３６０またはサード・パーティ・システム３７０にアクセスしてデータを送り、ソーシャル・ネットワーキング・システム３６０またはサード・パーティ・システム３７０からデータを受信することができる。クライアント・システム３３０は、直接的に、ネットワーク３１０を介して、またはサード・パーティ・システムを介して、ソーシャル・ネットワーキング・システム３６０またはサード・パーティ・システム３��０にアクセスすることができる。限定ではなく例として、クライアント・システム３３０は、ソーシャル・ネットワーキング・システム３６０を介してサード・パーティ・システム３７０にアクセスすることができる。クライアント・システム３３０は、例えば、パーソナル・コンピュータ、ラップトップ・コンピュータ、携帯電話、スマートフォン、またはタブレット・コンピュータなどの任意の適切なコンピューティング装置でよい。
【００４２】
本開示は任意の適切なネットワーク３１０を企図する。限定ではなく例として、ネットワーク３１０のうちの１つまたは複数の部分は、アドホック・ネットワーク（ａｄ  ｈｏｃ  ｎｅｔｗｏｒｋ）、イントラネット、エクストラネット、仮想プライベート・ネットワーク（ｖｉｒｔｕａｌ  ｐｒｉｖａｔｅ  ｎｅｔｗｏｒｋ：ＶＰＮ）、ローカル・エリア・ネットワーク（ｌｏｃａｌ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＬＡＮ）、ワイヤレスＬＡＮ（ｗｉｒｅｌｅｓｓ  ＬＡＮ：ＷＬＡＮ）、広域ネットワーク（ｗｉｄｅ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＷＡＮ）、ワイヤレスＷＡＮ（ｗｉｒｅｌｅｓｓ  ＷＡＮ：ＷＷＡＮ）、大都市圏ネットワーク（ｍｅｔｒｏｐｏｌｉｔａｎ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＭＡＮ）、インターネットの一部、公衆交換電話網（Ｐｕｂｌｉｃ  Ｓｗｉｔｃｈｅｄ  Ｔｅｌｅｐｈｏｎｅ  Ｎｅｔｗｏｒｋ：ＰＳＴＮ）の一部、携帯電話網、またはこれらの２つ以上の組合せを含むことができる。ネットワーク３１０は１つまたは複数のネットワーク３１０を含むことができる。
【００４３】
リンク３５０は、クライアント・システム３３０、ソーシャル・ネットワーキング・システム３６０、およびサード・パーティ・システム３７０を通信ネットワーク３１０に接続するか、または互いに接続することができる。本開示は任意の適切なリンク３５０を企図する。特定の実施形態では、１つまたは複数のリンク３５０は、１つまたは複数のワイヤーライン（ｗｉｒｅｌｉｎｅ）（例えば、デジタル加入者線（Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ：ＤＳＬ）またはＤａｔａ  Ｏｖｅｒ  Ｃａｂｌｅ  Ｓｅｒｖｉｃｅ  Ｉｎｔｅｒｆａｃｅ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ＤＯＣＳＩＳ）など）、ワイヤレス（例えば、Ｗｉ−ＦｉまたはＷｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ（ＷｉＭＡＸ）など）、または光（例えば、同期光ネットワーク（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｏｐｔｉｃａｌ  Ｎｅｔｗｏｒｋ：ＳＯＮＥＴ）または同期デジタル階層（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｉｇｉｔａｌ  Ｈｉｅｒａｒｃｈｙ：ＳＤＨ）など）リンクを含む。特定の実施形態では、１つまたは複数のリンク３５０はそれぞれ、アドホック・ネットワーク、イントラネット、エクストラネット、ＶＰＮ、ＬＡＮ、ＷＬＡＮ、ＷＡＮ、ＷＷＡＮ、ＭＡＮ、インターネットの一部、ＰＳＴＮの一部、セルラ技術ベースのネットワーク、衛星通信技術ベースのネットワーク、別のリンク３５０、または２つ以上のそのようなリンク３５０の組合せを含む。リンク３５０は、必ずしもネットワーク環境３００全体を通じて同一である必要はない。１つまたは複数の第１のリンク３５０は、１つまたは複数の点で１つまたは複数の第２のリンク３５０と異なることがある。
【００４４】
図４は、例示的なソーシャル・グラフ４００を示す。特定の実施形態では、ソーシャル・ネットワーキング・システム３６０は、１つまたは複数のデータ・ストア（ｄａｔａ  ｓｔｏｒｅ）内に１つまたは複数のソーシャル・グラフ４００を格納することができる。特定の実施形態では、ソーシャル・グラフ４００は、複数のノード（これは複数のユーザ・ノード４０２または複数の概念ノード（ｃｏｎｃｅｐｔ  ｎｏｄｅ）４０４を含むことができる）と、ノードを接続する複数のエッジ（ｅｄｇｅ）４０６とを含むことができる。図４に示される例示的なソーシャル・グラフ４００は、説明のために、２次元視覚マップ表現で示されている。特定の実施形態では、ソーシャル・ネットワーキング・システム３６０、クライアント・システム３３０、またはサード・パーティ・システム３７０は、ソーシャル・グラフ４００および適切なアプリケーションについての関連するソーシャル・グラフ情報にアクセスすることができる。ソーシャル・グラフ４００のノードおよびエッジを、データ・オブジェクトとして、例えばデータ・ストア（ソーシャル・グラフ・データベースなど）内に格納することができる。そのようなデータ・ストアは、ソーシャル・グラフ４００のノードまたはエッジの１つまたは複数の検索可能または照会可能な索引を含むことができる。
【００４５】
特定の実施形態では、ユーザ・ノード４０２は、ソーシャル・ネットワーキング・システム３６０のユーザに対応することができる。限定ではなく例として、ユーザは、ソーシャル・ネットワーキング・システム３６０と、またはソーシャル・ネットワーキング・システム３６０を介して対話または通信する個人（人間のユーザ）、エンティティ（例えば、企業、ビジネス、またはサード・パーティ・アプリケーション）、または（例えば、個人またはエンティティの）グループでよい。特定の実施形態では、ユーザがソーシャル・ネットワーキング・システム３６０にアカウントを登録するとき、ソーシャル・ネットワーキング・システム３６０は、ユーザに対応するユーザ・ノード４０２を作成し、１つまたは複数のデータ・ストア内にユーザ・ノード４０２を格納することができる。本明細書で説明するユーザおよびユーザ・ノード４０２は、適切な場合、登録されたユーザおよび登録されたユーザに関連するユーザ・ノード４０２を指す。追加または代替として、本明細書で説明するユーザおよびユーザ・ノード４０２は、適切な場合、ソーシャル・ネットワーキング・システム３６０に登録していないユーザを指す。特定の実施形態では、ユーザによって提供される情報、またはソーシャル・ネットワーキング・システム３６０を含む様々なシステムによって収集される情報に、ユーザ・ノード４０２を関連付けることができる。限定ではなく例として、ユーザは、ユーザの名前、プロファイル写真、連絡先情報、誕生日、性別、結婚状況、家族状況、職業、学歴、好み、関心、または他の人口統計情報を提供することができる。特定の実施形態では、ユーザに関連する情報に対応する１つまたは複数のデータ・オブジェクトにユーザ・ノード４０２を関連付けることができる。特定の実施形態では、ユーザ・ノード４０２は、１つまたは複数のウェブ・ページに対応することができる。
【００４６】
特定の実施形態では、概念ノード４０４は概念（ｃｏｎｃｅｐｔ）に対応することができる。限定ではなく例として、概念は、場所（例えば、映画館、レストラン、ランドマーク、または都市など）、ウェブサイト（例えば、ソーシャル・ネットワーク・システム３６０に関連するウェブサイトまたはウェブ・アプリケーション・サーバに関連するサード・パーティ・ウェブサイトなど）、エンティティ（例えば、人、会社、グループ、スポーツ・チーム、または有名人など）、ソーシャル・ネットワーキング・システム３６０内またはウェブ・アプリケーション・サーバなどの外部サーバ上に位置することのできるリソース（例えば、オーディオ・ファイル、ビデオ・ファイル、デジタル・フォト、テキスト・ファイル、構造化された文書、またはアプリケーションなど）、物的または知的財産（例えば、彫刻、絵画、映画、ゲーム、歌、アイデア、写真、または著作物など）、ゲーム、活動、アイデアまたは理論、他の適切な概念、あるいは２つ以上のそのような概念に対応することができる。ユーザによって提供される概念の情報、またはソーシャル・ネットワーキング・システム３６０を含む様々なシステムによって収集される情報に概念ノード４０４を関連付けることができる。限定ではなく例として、概念の情報は、名前またはタイトル、１つまたは複数のイメージ（例えば、本のカバー・ページのイメージ）、位置（例えば、住所または地理的位置）、ウェブサイト（それをＵＲＬに関連付けることができる）、連絡先情報（例えば、電話番号またはｅメール・アドレス）、他の適切な概念情報、またはそのような情報の任意の適切な組合せを含むことができる。特定の実施形態では、概念ノード４０４に関連する情報に対応する１つまたは複数のデータ・オブジェクトに概念ノード４０４を関連付けることができる。特定の実施形態では、概念ノード４０４は１つまたは複数のウェブ・ページに対応することができる。
【００４７】
特定の実施形態では、ソーシャル・グラフ４００内のノードは、ウェブ・ページ（「プロファイル・ページ」と呼ばれることがある）を表すこと、またはウェブ・ページによって表すことができる。プロファイル・ページは、ソーシャル・ネットワーキング・システム３６０によってホストすること、またはソーシャル・ネットワーキング・システム３６０にとってアクセス可能にすることができる。プロファイル・ページはまた、サード・パーティ・サーバ３７０に関連するサード・パーティ・ウェブサイト上でホストすることもできる。限定ではなく例として、特定の外部ウェブ・ページに対応するプロファイル・ページは、特定の外部ウェブ・ページでよく、プロファイル・ページは、特定の概念ノード４０４に対応することができる。プロファイル・ページは、他のユーザのすべてまたは選択された一部分によって閲覧可能とすることができる。限定ではなく例として、ユーザ・ノード４０２は、対応するユーザがその中でコンテンツを追加し、宣言を行い、あるいはユーザ自身を表現することのできる、対応するユーザ・プロファイル・ページを有することができる。限定ではなく別の例として、概念ノード４０４は、特に概念ノード４０４に対応する概念に関連して、１人または複数のユーザがその中でコンテンツを追加し、宣言を行い、またはユーザ自身を表現することのできる、対応する概念プロファイル・ページを有することができる。
【００４８】
特定の実施形態では、概念ノード４０４は、サード・パーティ・システム３７０によってホストされるサード・パーティ・ウェブページまたはリソースを表すことができる。サード・パーティ・ウェブページまたはリソースは、他の要素において、コンテンツ、選択可能な、もしくは他のアイコン、またはアクションもしくは活動を表す（例えば、ＪＡＶＡ（登録商標）Ｓｃｒｉｐｔ、ＡＪＡＸ、またはＰＨＰコードで実装することのできる）他の対話型オブジェクトを含むことができる。限定ではなく例として、サード・パーティ・ウェブページは、「いいね」、「チェックイン（ｃｈｅｃｋ  ｉｎ）」、「食べる（ｅａｔ）」、「レコメンド（ｒｅｃｏｍｍｅｎｄ）」、または別の適切なアクションもしくは活動などの、選択可能なアイコンを含むことができる。サード・パーティ・ウェブページを閲覧するユーザは、アイコンのうちの１つ（例えば、「食べる」）を選択し、クライアント・システム３３０に、ユーザのアクションを示すメッセージをソーシャル・ネットワーキング・システム３６０に送信させることによってアクションを実施することができる。メッセージに応答して、ソーシャル・ネットワーキング・システム３６０は、ユーザに対応するユーザ・ノード４０２と、サード・パーティ・ウェブページまたはリソースに対応する概念ノード４０４との間のエッジ（例えば、「食べる」エッジ）を作成し、１つまたは複数のデータ・ストア内にエッジ４０６を格納することができる。
【００４９】
特定の実施形態では、１つまたは複数のエッジ４０６によってソーシャル・グラフ４００内の１対のノードを互いに接続することができる。１対のノードを接続するエッジ４０６は、その１対のノード間の関係を表すことができる。特定の実施形態では、エッジ４０６は、１対のノード間の関係に対応する１つまたは複数のデータ・オブジェクトまたは属性を含むか、または表すことができる。限定ではなく例として、第１のユーザは、第２のユーザが第１のユーザの「友人」であることを示すことができる。この表示に応答して、ソーシャル・ネットワーキング・システム３６０は、第２のユーザに「友人要求」を送信することができる。第２のユーザが「友人要求」を確認した場合、ソーシャル・ネットワーキング・システム３６０は、第１のユーザのユーザ・ノード４０２をソーシャル・グラフ４００内の第２のユーザのユーザ・ノード４０２に接続するエッジ４０６を作成し、１つまたは複数のデータ・ストア３６４のうちのエッジ４０６をソーシャル・グラフ情報として格納することができる。図４の例では、ソーシャル・グラフ４００は、ユーザ「Ａ」とユーザ「Ｂ」のユーザ・ノード４０２間の友人関係を示すエッジ４０６と、ユーザ「Ｃ」とユーザ「Ｂ」のユーザ・ノード４０２間の友人関係を示すエッジとを含む。本開示は、特定のユーザ・ノード４０２を接続する特定の属性を有する特定のエッジ４０６を説明するかまたは図示するが、本開示は、ユーザ・ノード４０２を接続する任意の適切な属性を有する任意の適切なエッジ４０６を企図する。限定ではなく例として、エッジ４０６は、友人関係、家族関係、ビジネスまたは雇用関係、ファン関係（ｆａｎ  ｒｅｌａｔｉｏｎｓｈｉｐ）、フォロワ関係、ビジター関係（ｖｉｓｉｔｏｒ  ｒｅｌａｔｉｏｎｓｈｉｐ）、加入者関係、上位／従属関係、相互関係、非相互関係、別の適切なタイプの関係、または２つ以上のそのような関係を表すことができる。さらに、本開示は一般にノードが接続されているものとして説明するが、本開示はまた、ユーザまたは概念が接続されているものとして説明する。本明細書では、接続されているユーザまたは概念に対する参照は、適切な場合、１つまたは複数のエッジ４０６によってソーシャル・グラフ４００内で接続されているユーザまたは概念に対応するノードを指すことがある。
【００５０】
特定の実施形態では、ユーザ・ノード４０２と概念ノード４０４との間のエッジ４０６は、概念ノード４０４に関連する概念に対する、ユーザ・ノード４０２に関連するユーザによって実施される特定のアクションまたは活動を表すことができる。限定ではなく例として、図４に示されるように、ユーザは、概念に対して「いいね」を表明し、概念に「出席し」、概念を「再生し」、概念を「聴取し」、概念を「調理し」、概念に「取り組み」、または概念を「視聴する」ことができ、そのそれぞれは、エッジ・タイプまたはサブタイプに対応することができる。概念ノード４０４に対応する概念プロファイル・ページは、例えば、選択可能な「チェックイン」アイコン（例えば、クリッカブル（ｃｌｉｃｋａｂｌｅ）「チェックイン」アイコンなど）または選択可能な「お気に入りに追加」アイコンを含むことができる。同様に、ユーザがこれらのアイコンをクリックした後、ソーシャル・ネットワーキング・システム３６０は、それぞれのアクションに対応するユーザのアクションに応答して、「お気に入り」エッジまたは「チェックイン」エッジを作成することができる。限定ではなく別の例として、ユーザ（ユーザ「Ｃ」）が、特定のアプリケーション（オンライン音楽アプリケーションであるＳＰＯＴＩＦＹ）を使用して、特定の歌を聴取することができる（「Ｒａｍｂｌｅ  Ｏｎ」）。この場合、ソーシャル・ネットワーキング・システム３６０は、（図４に示すように）ユーザに対応するユーザ・ノード４０２と、歌およびアプリケーションに対応する概念ノード４０４との間の「聴取済み（ｌｉｓｔｅｎｅｄ）」エッジ４０６および「使用済み（ｕｓｅｄ）」エッジを作成し、ユーザが歌を聴取し、アプリケーションを使用したことを示すことができる。さらに、ソーシャル・ネットワーキング・システム３６０は、（図４に示すように）歌およびアプリケーションに対応する概念ノード４０４間の「再生済み（ｐｌａｙｅｄ）」エッジ４０６を作成し、特定の歌が特定のアプリケーションによって再生されたことを示すことができる。この場合、「再生済み」エッジ４０６は、外部アプリケーション（ＳＰＯＴＩＦＹ）によって外部オーディオ・ファイル（歌「イマジン」）に対して実施されたアクションに対応する。本開示は、ユーザ・ノード４０２および概念ノード４０４を接続する特定の属性を有する特定のエッジ４０６を説明するが、本開示は、ユーザ・ノード４０２および概念ノード４０４を接続する任意の適切な属性を有する任意の適切なエッジ４０６を企図する。さらに、本開示は単一の関係を表すユーザ・ノード４０２と概念ノード４０４との間のエッジを説明するが、本開示は、１つまたは複数の関係を表すユーザ・ノード４０２と概念ノード４０４との間のエッジを企図する。限定ではなく例として、エッジ４０６は、ユーザが特定の概念を好むこと、および特定の概念を使用したことの両方を表すことができる。あるいは、別のエッジ４０６は、（図４の、ユーザ「Ｅ」に関するユーザ・ノード４０２と、「ＳＰＯＴＩＦＹ」に関する概念ノード４０４との間で示されるように）ユーザ・ノード４０２と概念ノード４０４との間の各タイプの関係（または複数の単一の関係）を表すことがで���る。
【００５１】
特定の実施形態では、ソーシャル・ネットワーキング・システム３６０は、ソーシャル・グラフ４００内のユーザ・ノード４０２と概念ノード４０４との間のエッジ４０６を作成することができる。限定ではなく例として、（例えば、ユーザのクライアント・システム３３０によってホストされるウェブ・ブラウザまたは専用アプリケーションを使用することによって）概念プロファイル・ページを閲覧するユーザは、「いいね」アイコンをクリックまたは選択することにより、ユーザが概念ノード４０４によって表される概念を好むことを示すことができ、それによって、ユーザのクライアント・システム３３０に、ユーザが概念プロファイル・ページに関連する概念を好むことを示すメッセージをソーシャル・ネットワーキング・システム３６０に送信させることができる。メッセージに応答して、ソーシャル・ネットワーキング・システム３６０は、ユーザと概念ノード４０４との間の「いいね」エッジ４０６で示されるように、ユーザに関連するユーザ・ノード４０２と、概念ノード４０４との間のエッジ４０６を作成することができる。特定の実施形態では、ソーシャル・ネットワーキング・システム３６０は、１つまたは複数のデータ・ストア内にエッジ４０６を格納することができる。特定の実施形態では、特定のユーザ・アクションに応答して、エッジ４０６をソーシャル・ネットワーキング・システム３６０によって自動的に形成することができる。限定ではなく例として、第１のユーザが写真をアップロードし、映画を視聴し、または歌を聴取する場合、第１のユーザに対応するユーザ・ノード４０２と、これらの概念に対応する概念ノード４０４との間のエッジ４０６を形成することができる。本開示は、特定の方式で特定のエッジ４０６を形成することを説明するが、本開示は、任意の適切な方式で任意の適切なエッジ４０６を形成することを企図する。
【００５２】
特定の実施形態では、広告は、テキスト（ＨＴＭＬリンクされる）、１つ以上の画像（ＨＴＭＬリンクされる）、１つ以上の動画、オーディオ、１つ以上のＡＤＯＢＥ  ＦＬＡＳＨファイル、これらの適切な組み合わせ、あるいは１つ以上のウェブ・ページ上に、１つ以上の電子メールに、あるいはユーザによって要求された検索結果に関して示される任意の適切なデジタル形式の任意の他の適切な広告である。付加的に、あるいはこれに代えて、広告は、１つ以上のスンポンサード・ストーリ（例えばソーシャル・ネットワーキング・システム３６０上のニュースフィードあるいはティッカー・アイテム）である。スポンサード・ストーリは、ユーザによるソーシャル・アクションである（例えば、ページを「いいね！」し、ページで「いいね！」するかコメントし、ページに関連付けられたイベントに回答を促し（ＲＳＶＰｉｎｇ）、ページに投稿された質問に投票し、場所にチェックインし、アプリケーションを使用するか、ゲームをプレイし、あるいはウェブサイトを「いいね！」するか共有する）。広告主は、例えば、ユーザのプロフィール・ページあるいは他のページの予め定められた領域内で示されたソーシャル・アクションを、広告主に関連付けられた付加的な情報とともに示し、他のユーザのニュースフィードやティッカー内で立体表示するか強調表示し、あるいは他の方法で促進することにより促進する。広告主はソーシャル・アクションを促進するために支払いをする。限定ではなく、例として、広告は、検索結果ページの検索結果の間に含まれ、スポンサード・コンテンツは、非スポンサード・コンテンツに対して促進される。
【００５３】
特定の実施形態においては、広告は、ソーシャル・ネットワーキング・システムのウェブ・ページ、サードパーティのウェブ・ページ、あるいは他のページ内で表示されるように要求される。広告は、例えばページのトップのバナー領域に、ページの側部の欄に、ページのＧＵＩに、ポップアップ・ウィンドウに、ドロップダウン・メニューに、ページの入力フィールドに、ページのコンテンツのトップ上に、あるいはページに対する他の位置などの、ページの専用部分に表示される。付加的に、あるいはこれに代えて、広告はアプリケーション内に表示されてもよい。広告は、専用ページ内に表示され、ユーザがページにアクセスするかアプリケーションを利用するに先だって、広告と対話するか広告を見ることをユーザに要求する。ユーザは、例えばウェブ・ブラウザを介して広告を見る。
【００５４】
図５は、例示的なコンピュータ・システム５００を示す。特定の実施形態では、１つまたは複数のコンピュータ・システム５００は、本明細書で説明または図示される１つまたは複数の方法の１つまたは複数のステップを実施する。特定の実施形態では、１つまたは複数のコンピュータ・システム５００は、本明細書で説明または図示される機能を提供する。特定の実施形態では、１つまたは複数のコンピュータ・システム５００上で実行中のソフトウェアが、本明細書で説明または図示される１つまたは複数の方法の１つまたは複数のステップを実施しまたは本明細書で説明または図示される機能を提供する。特定の実施形態は、１つまたは複数のコンピュータ・システム５００の１つまたは複数の部分を含む。本明細書では、適切な場合、コンピュータ・システムに対する参照はコンピューティング装置を包含し、逆も同様である。さらに、適切な場合、コンピュータ・システムに対する参照は、１つまたは複数のコンピュータ・システムを包含する。
【００５５】
本開示は、任意の適切な数のコンピュータ・システム５００を企図する。本開示は、任意の適切な物理的形態を取るコンピュータ・システム５００を企図する。限定ではなく例として、コンピュータ・システム５００は、組込みコンピュータ・システム、システム・オン・チップ（ＳＯＣ）、シングル・ボード・コンピュータ・システム（ＳＢＣ）（例えば、コンピュータ・オン・モジュール（ＣＯＭ）やシステム・オン・モジュール（ＳＯＭ）など）、デスクトップ・コンピュータ・システム、ラップトップもしくはノートブック・コンピュータ・システム、対話型キオスク、メインフレーム、コンピュータ・システムのメッシュ、携帯電話、携帯情報端末（ＰＤＡ）、サーバ、タブレット・コンピュータ・システム、またはこれらの２つ以上の組合せでよい。適切な場合、コンピュータ・システム５００は、１つまたは複数のコンピュータ・システム５００を含むことができ、一体型または分散型でよく、複数の場所にわたるものでよく、複数のマシンにわたるものでよく、複数のデータセンタにわたるものでよく、またはクラウド内に常駐することができ、クラウドは、１つまたは複数のネットワーク内の１つまたは複数のクラウド構成要素を含むことができる。適切な場合、１つまたは複数のコンピュータ・システム５００は、実質的な空間的または時間的な限定なしに、本明細書で説明または図示される１つまたは複数の方法の１つまたは複数のステップを実施することができる。限定ではなく例として、１つまたは複数のコンピュータ・システム５００は、本明細書で説明または図示される１つまたは複数の方法の１つまたは複数のステップをリアル・タイムに、またはバッチ・モードで実施することができる。適切な場合、１つまたは複数のコンピュータ・システム５００は、本明細書で説明または図示される１つまたは複数の方法の１つまたは複数のステップを異なる時刻または異なる場所で実施することができる。
【００５６】
特定の実施形態では、コンピュータ・システム５００は、プロセッサ５０２、メモリ５０４、ストレージ５０６、入力／出力（Ｉ／Ｏ）インターフェース５０８、通信インターフェース５１０、およびバス５１２を含む。本開示は、特定の構成の、特定の数の特定の構成要素を有する特定のコンピュータ・システムを説明および図示するが、本開示は、任意の適切な構成の、任意の適切な数の任意の適切な構成要素を有する任意の適切なコンピュータ・システムを企図する。
【００５７】
特定の実施形態では、プロセッサ５０２は、コンピュータ・プログラムを構成するような命令を実行するハードウェアを含む。限定ではなく例として、命令を実行するために、プロセッサ５０２は、内部レジスタ、内部キャッシュ、メモリ５０４、またはストレージ５０６から命令を取り出し（またはフェッチし）、その命令を復号化および実行し、次いで内部レジスタ、内部キャッシュ、メモリ５０４、またはストレージ５０６に１つまたは複数の結果を書き込むことができる。特定の実施形態では、プロセッサ５０２は、データ、命令、またはアドレスのための１つまたは複数の内部キャッシュを含むことができる。本開示は、適切な場合、任意の適切な数の任意の適切な内部キャッシュを含むプロセッサ５０２を企図する。限定ではなく例として、プロセッサ５０２は、１つまたは複数の命令キャッシュ、１つまたは複数のデータ・キャッシュ、および１つまたは複数の変換ルックアサイド・バッファ（ｔｒａｎｓｌａｔｉｏｎ  ｌｏｏｋａｓｉｄｅ  ｂｕｆｆｅｒ：ＴＬＢ）を含むことができる。命令キャッシュ内の命令は、メモリ５０４またはストレージ５０６内の命令のコピーでよく、命令キャッシュは、プロセッサ５０２によるそうした命令の検索を加速することができる。データ・キャッシュ内のデータは、プロセッサ５０２で実行中の命令が演算するためのメモリ５０４またはストレージ５０６内のデータ、プロセッサ５０２で実行中の後続の命令によるアクセスのために、またはメモリ５０４もしくはストレージ５０６に書き込むために、プロセッサ５０２で実行された以前の命令の結果、あるいは他の適切なデータのコピーでもよい。データ・キャッシュは、プロセッサ５０２による読取りまたは書込み演算を加速することができる。ＴＬＢはプロセッサ５０２のための仮想アドレス変換（ｖｉｒｔｕａｌ−ａｄｄｒｅｓｓ  ｔｒａｎｓｌａｔｉｏｎ）を加速することができる。特定の実施形態では、プロセッサ５０２は、データ、命令、またはアドレス用の１つまたは複数の内部レジスタを含むことができる。本開示は、適切な場合、任意の適切な数の任意の適切な内部レジスタを含むプロセッサ５０２を企図する。適切な場合、プロセッサ５０２は、１つまたは複数の演算論理装置（ａｒｉｔｈｍｅｔｉｃ  ｌｏｇｉｃ  ｕｎｉｔ：ＡＬＵ）を含むことができ、マルチコア・プロセッサでよく、または１つまたは複数のプロセッサ５０２を含むことができる。本開示は特定のプロセッサを説明および図示するが、本開示は任意の適切なプロセッサを企図する。
【００５８】
特定の実施形態では、メモリ５０４は、プロセッサ５０２が実行するための命令、またはプロセッサ５０２が演算するためのデータを格納するメイン・メモリを含む。限定ではなく例として、コンピュータ・システム５００は、ストレージ５０６または別のソース（例えば、別のコンピュータ・システム５００など）からメモリ５０４に命令をロードすることができる。次いでプロセッサ５０２は、メモリ５０４から内部レジスタまたは内部キャッシュに命令をロードすることができる。命令を実行するために、プロセッサ５０２は、内部レジスタまたは内部キャッシュから命令を取り出し、その命令を復号化することができる。命令の実行中または実行後に、プロセッサ５０２は、１つまたは複数の結果（これは中間結果または最終結果でよい）を内部レジスタまたは内部キャッシュに書き込むことができる。次いでプロセッサ５０２は、そうした結果の１つまたは複数をメモリ５０４に書き込むことができる。特定の実施形態では、プロセッサ５０２は、（ストレージ５０６または他の場所ではなく）１つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ５０４内の命令のみを実行し、（ストレージ５０６または他の場所ではなく）１つまたは複数の内部レジスタもしくは内部キャッシュ内、またはメモリ５０４内のデータのみに対して演算する。１つまたは複数のメモリ・バス（これはそれぞれアドレス・バスおよびデータ・バスを含むことができる）が、プロセッサ５０２をメモリ５０４に結合することができる。バス５１２は、以下で説明するように、１つまたは複数のメモリ・バスを含むことができる。特定の実施形態では、１つまたは複数のメモリ管理ユニット（ｍｅｍｏｒｙ  ｍａｎａｇｅｍｅｎｔ  ｕｎｉｔ：ＭＭＵ）が、プロセッサ５０２とメモリ５０４との間に常駐し、プロセッサ５０２によって要求されたメモリ５０４へのアクセスを可能にする。特定の実施形態では、メモリ５０４はランダム・アクセス・メモリ（ＲＡＭ）を含む。適切な場合、このＲＡＭは揮発性メモリでよい。適切な場合、このＲＡＭはダイナミックＲＡＭ（ＤＲＡＭ）またはスタティックＲＡＭ（ＳＲＡＭ）でよい。さらに、適切な場合、このＲＡＭは、単一ポートまたはマルチポートＲＡＭでよい。本開示は任意の適切なＲＡＭを企図する。適切な場合、メモリ５０４は、１つまたは複数のメモリ５０４を含むことができる。本開示は特定のメモリを説明および図示するが、本開示は任意の適切なメモリを企図する。
【００５９】
特定の実施形態では、ストレージ５０６は、データまたは命令用のマス・ストレージを含む。限定ではなく例として、ストレージ５０６は、ハード・ディスク・ドライブ（ＨＤＤ）、フロッピー（登録商標）・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、光磁気ディスク、磁気テープ、またはユニバーサル・シリアル・バス（ＵＳＢ）ドライブ、あるいはこれらのうちの２つ以上の組合せを含むことができる。ストレージ５０６は、適切な場合、取外し可能または取外し不能（または固定）媒体を含むことができる。ストレージ５０６は、適切な場合、コンピュータ・システム５００の内部または外部でよい。特定の実施形態では、ストレージ５０６は不揮発性固体メモリである。特定の実施形態では、ストレージ５０６は読取り専用メモリ（ＲＯＭ）を含む。適切な場合、このＲＯＭは、マスクプログラムされたＲＯＭ、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気消去可能ＰＲＯＭ（ＥＥＰＲＯＭ）、電気書換え可能ＲＯＭ（ＥＡＲＯＭ）、またはフラッシュ・メモリ、あるいはこれらのうちの２つ以上の組合せでよい。本開示は、任意の適切な物理的形態を有するマス・ストレージ５０６を企図する。適切な場合、ストレージ５０６は、プロセッサ５０２とストレージ５０６との間の通信を可能にする１つまたは複数のストレージ制御ユニットを含むことができる。適切な場合、ストレージ５０６は、１つまたは複数のストレージ５０６を含むことができる。本開示は特定のストレージを説明および図示するが、本開示は任意の適切なストレージを企図する。
【００６０】
特定の実施形態では、Ｉ／Ｏインターフェース５０８は、コンピュータ・システム５００と１つまたは複数のＩ／Ｏ装置との間の通信のための１つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。コンピュータ・システム５００は、適切な場合、これらのＩ／Ｏ装置のうちの１つまたは複数を含むことができる。これらのＩ／Ｏ装置のうちの１つまたは複数は、人とコンピュータ・システム５００との間の通信を可能にすることができる。限定ではなく例として、Ｉ／Ｏ装置は、キーボード、キーパッド、マイクロフォン、モニタ、マウス、プリンタ、スキャナ、スピーカ、スチル・カメラ、スタイラス、タブレット、タッチ・スクリーン、トラックボール、ビデオ・カメラ、別の適切なＩ／Ｏ装置、またはこれらのうちの２つ以上の組合せを含むことができる。Ｉ／Ｏ装置は１つまたは複数のセンサを含むことができる。本開示は、任意の適切なＩ／Ｏ装置およびそのための任意の適切なＩ／Ｏインターフェース５０８を企図する。適切な場合、Ｉ／Ｏインターフェース５０８は、プロセッサ５０２がこれらのＩ／Ｏ装置のうちの１つまたは複数を駆動することを可能にする１つまたは複数のデバイス・ドライバまたはソフトウェア・ドライバを含むことができる。Ｉ／Ｏインターフェース５０８は、適切な場合、１つまたは複数のＩ／Ｏインターフェース５０８を含むことができる。本開示は特定のＩ／Ｏインターフェースを説明および図示するが、本開示は任意の適切なＩ／Ｏインターフェースを企図する。
【００６１】
特定の実施形態では、通信インターフェース５１０は、コンピュータ・システム５００と、１つまたは複数の別のコンピュータ・システム５００あるいは１つまたは複数のネットワークとの間の通信（例えば、パケット・ベースの通信など）用の１つまたは複数のインターフェースを提供するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、通信インターフェース５１０は、イーサネット（登録商標）または他のワイヤ・ベースのネットワークと通信するネットワーク・インターフェース・コントローラ（ｎｅｔｗｏｒｋ  ｉｎｔｅｒｆａｃｅ  ｃｏｎｔｒｏｌｌｅｒ：ＮＩＣ）またはネットワーク・アダプタ、あるいはＷｉ−Ｆｉネットワークなどのワイヤレス・ネットワークと通信するワイヤレスＮＩＣ（ｗｉｒｅ−ｂａｓｅｄ  ｎｅｔｗｏｒｋ  ｏｒ  ａ  ｗｉｒｅｌｅｓｓ：ＷＮＩＣ）またはワイヤレス・アダプタを含むことができる。本開示は、任意の適切なネットワークおよびそのための任意の適切な通信インターフェース５１０を企図する。限定ではなく例として、コンピュータ・システム５００は、アドホック・ネットワーク、パーソナル・エリア・ネットワーク（ＰＡＮ）、ローカル・エリア・ネットワーク（ＬＡＮ）、広域ネットワーク（ＷＡＮ）、大都市圏ネットワーク（ｍｅｔｒｏｐｏｌｉｔａｎ  ａｒｅａ  ｎｅｔｗｏｒｋ：ＭＡＮ）、またはインターネットの１つもしくは複数の部分、あるいはこれらのうちの２つ以上の組合せと通信することができる。これらのネットワークのうちの１つまたは複数の１つまたは複数の部分は、ワイヤードまたはワイヤレスでよい。１例を挙げると、コンピュータ・システム５００は、ワイヤレスＰＡＮ（ＷＰＡＮ）（例えば、ＢＬＵＥＴＯＯＴＨ（登録商標）  ＷＰＡＮなど）、Ｗｉ−Ｆｉネットワーク、ＷＩ−ＭＡＸネットワーク、携帯電話網（例えば、Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ（ＧＳＭ（登録商標））ネットワークなど）、または他の適切なワイヤレス・ネットワーク、あるいはこれらのうちの２つ以上の組合せと通信することができる。コンピュータ・システム５００は、適切な場合、これらのネットワークのいずれかに関する任意の適切な通信インターフェース５１０を含むことができる。通信インターフェース５１０は、適切な場合、１つまたは複数の通信インターフェース５１０を含むことができる。本開示は特定の通信インターフェースを説明および図示するが、本開示は任意の適切な通信インターフェースを企図する。
【００６２】
特定の実施形態では、バス５１２は、コンピュータ・システム５００の構成要素を互いに結合するハードウェア、ソフトウェア、またはその両方を含む。限定ではなく例として、バス５１２は、アクセラレーテッド・グラフィックス・ポート（Ａｃｃｅｌｅｒａｔｅｄ  Ｇｒａｐｈｉｃｓ  Ｐｏｒｔ：ＡＧＰ）または他のグラフィックス・バス、Ｅｎｈａｎｃｅｄ  Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＥＩＳＡ）バス、フロント・サイド・バス（ＦＳＢ）、ＨＹＰＥＲＴＲＡＮＳＰＯＲＴ（ＨＴ）相互接続、Ｉｎｄｕｓｔｒｙ  Ｓｔａｎｄａｒｄ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＩＳＡ）バス、ＩＮＦＩＮＩＢＡＮＤ相互接続、低ピン・カウント（ｌｏｗ−ｐｉｎ−ｃｏｕｎｔ：ＬＰＣ）バス、メモリ・バス、Ｍｉｃｒｏ  Ｃｈａｎｎｅｌ  Ａｒｃｈｉｔｅｃｔｕｒｅ（ＭＣＡ）バス、Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ（ＰＣＩ）バス、ＰＣＩ−Ｅｘｐｒｅｓｓ（ＰＣＩｅ）バス、ｓｅｒｉａｌ  ａｄｖａｎｃｅｄ  ｔｅｃｈｎｏｌｏｇｙ  ａｔｔａｃｈｍｅｎｔ（ＳＡＴＡ）バス、Ｖｉｄｅｏ  Ｅｌｅｃｔｒｏｎｉｃｓ  Ｓｔａｎｄａｒｄｓ  Ａｓｓｏｃｉａｔｉｏｎ  ｌｏｃａｌ（ＶＬＢ）バス、または別の適切なバス、あるいはこれらのうちの２つ以上の組合せを含むことができる。バス５１２は、適切な場合、１つまたは複数のバス５１２を含むことができる。本開示は特定のバスを説明および図示するが、本開示は、任意の適切なバスまたは相互接続を企図する。
【００６３】
本明細書では、コンピュータ可読非一時的記憶媒体は、適切な場合、１つまたは複数の半導体ベースの、または他の集積回路（ＩＣ）（例えば、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）または特定用途向けＩＣ（ＡＳＩＣ）など）、ハード・ディスク・ドライブ（ＨＤＤ）、ハイブリッド・ハード・ドライブ（ＨＨＤ）、光ディスク、光ディスク・ドライブ（ＯＤＤ）、光磁気ディスク、光磁気ドライブ、フロッピー（登録商標）・ディスケット、フロッピー（登録商標）・ディスク・ドライブ（ＦＤＤ）、磁気テープ、固体ドライブ（ＳＳＤ）、ＲＡＭドライブ、セキュア・デジタル・カードもしくはドライブ、任意の他の適切なコンピュータ可読非一時的記憶媒体、またはこれらの２つ以上の適切な組合せを含むことができる。コンピュータ可読非一時的記憶媒体は、適切な場合、揮発性、不揮発性、または揮発性と不揮発性の組合せでよい。
【００６４】
本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「または」は排他的ではなく包含的である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「ＡまたはＢ」は「Ａ、Ｂ、またはその両方」を意味する。さらに、別段に明記されていない限り、または文脈によって示されていない限り、「および」は協同および個々の両方である。したがって、本明細書では、別段に明記されていない限り、または文脈によって示されていない限り、「ＡおよびＢ」は、「ＡおよびＢが一緒に、または個別に」を意味する。
【００６５】
本開示の範囲は、当業者なら理解するはずである、本明細書で説明または図示される例示的実施形態に対するすべての変更、置換、変形、改変、および修正を包含する。本開示の範囲は、本明細書で説明または図示される例示的実施形態に限定されない。さらに、本開示は、本明細書のそれぞれの実施形態が特定の構成要素、要素、機能、動作、またはステップを含むものとして説明および図示するが、これらの実施形態のいずれも、当業者なら理解するはずである、本明細書のどこかで説明または図示される構成要素、要素、機能、動作、またはステップのいずれかの任意の組合せまたは置換を含むことができる。さらに、特定の機能を実施するように適合され、配置され、実施することが可能であり、実施するように構成され、実施することが可能にされ、実施するように動作可能である装置またはシステムあるいは装置またはシステムの構成要素に対する添付の特許請求の範囲での参照は、その装置、システム、または構成要素がそのように適合され、配置され、可能であり、構成され、可能にされ、動作可能にされる限り、その装置、システム、構成要素またはその特定の機能が活動化され、オンにされ、またはロック解除されるか否かに関わらず、その装置、システム、構成要素を包含する。
【図１Ａ】
2016519823.tif 000003
【図１Ｂ】
2016519823.tif 000004
【図２】
2016519823.tif 000005
【図３】
2016519823.tif 000006
【図４】
2016519823.tif 000007
【図５】
2016519823.tif 000008
【手続補正書】
【提出日】平成27年10月30日(2015.10.30)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンピューティング・デバイスのスレッドによって、コンテンツ・レイアウトの表示可能領域のためのフレーム・バッファ充填タスクを開始する工程と、
前記コンピューティング・デバイスによって、予め生成すべきディスプレイ・オブジェクトの部分を識別する工程であって、該ディスプレイ・オブジェクトは、前記表示可能領域外にある前記コンテンツ・レイアウトの一部に関連付けられる、予め生成すべきディスプレイ・オブジェクトの部分を識別する工程と、
前記コンピューティング・デバイスによって、アイドル時間の次のウィンドウの開始点を識別するために前記スレッドを監視する工程であって、該アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、該開始点は、前記フレーム・バッファ充填タスクを実施するために要求される見積もられる期間に少なくとも一部基づく、前記スレッドを監視する工程と、
前記コンピューティング・デバイスによって、前記フレーム・バッファ充填タスクを完了させることで前記スレッドにより実行するために、１つ以上の選択されるタスクをメッセージ・キューに付加する工程であって、前記選択されるタスクの各々は、前記ディスプレイ・オブジェクトの少なくとも１つの選択される要素のためのコンテンツを予め生成する、１つ以上の選択されるタスクをメッセージ・キューに付加する工程と、
前記コンピューティング・デバイスによって、前記フレーム・バッファ充填タスクの完了時に、前記選択されるタスクの実行を開始する工程と、
前記コンピューティング・デバイスによって、前記ディスプレイ・オブジェクトを返す工程とを含むことを特徴とする方法。
【請求項２】
前記表示可能領域は、スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定されることを特徴とする請求項１に記載の方法。
【請求項３】
前記少なくとも１つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項２に記載の方法。
【請求項４】
前記メッセージ・キューにおける前記１つ以上の選択されるタスクを実行する工程は、
前記アイドル時間の終点である降伏点に達することで現在実行されているタスクをサスペンドする工程と、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加する工程とを含むことを特徴とする請求項１に記載の方法。
【請求項５】
アプリケーション・テイラード・リサイクラに少なくとも１つの選択される要素を格納する工程と、
前記コンテンツ・レイアウトの前記一部におけるコンテンツに対するリクエストに応じて、前記アプリケーション・テイラード・リサイクラから前記少なくとも１つの選択される要素を検索する工程と、
前記コンテンツ・レイアウトの前記一部に要求されるような前記ディスプレイ・オブジェクトの他の要素を更新する工程と、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第１の部分におけるコンテンツに対するリクエストを受信する工程とを更に含むことを特徴とする請求項４に記載の方法。
【請求項６】
１つ以上のアプリケーション特有の規則は、各要素を予め生成するコストに基づいて要素に優先順位を付け、前記要素を予め生成するコストは、要素のサイズ、要素の複雑度、要素がいかなる頻度で更新される必要があるか、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項１に記載の方法。
【請求項７】
アプリケーション特有の規則は、前記コンピューティング・デバイスの利用可能なメモリに基づき予め生成するために選択される要素の数を調整することを特徴とする請求項６に記載の方法。
【請求項８】
ソフトウェアを具現化する１つまたは複数の非一時的なコンピュータ可読記憶媒体であって、該ソフトウェアはコンピューティング・デバイスによる実行時に、
コンテンツ・レイアウトの表示可能領域のためのフレーム・バッファ充填タスクを開始し、
予め生成すべきディスプレイ・オブジェクトの部分を識別し、該ディスプレイ・オブジェクトは、前記表示可能領域外にある前記コンテンツ・レイアウトの一部に関連付けられ、
アイドル時間の次のウィンドウの開始点を識別するためにスレッドを監視し、前記アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、該開始点は、前記フレーム・バッファ充填タスクを実施するために要求される見積もられる期間に少なくとも一部基づき、
前記フレーム・バッファ充填タスクを完了させることで前記スレッドにより実行するために、１つ以上の選択される予め生成されるタスクをメッセージ・キューに付加し、前記選択されるタスクの各々は、前記ディスプレイ・オブジェクトの少なくとも１つの選択される要素のためのコンテンツを予め生成し、
前記フレーム・バッファ充填タスクの完了時に、前記選択されるタスクの実行を開始し、
前記ディスプレイ・オブジェクトを返すように動作可能であることを特徴とするコンピュータ可読記憶媒体。
【請求項９】
前記表示可能領域は、スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定されることを特徴とする請求項８に記載の媒体。
【請求項１０】
前記少なくとも１つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項９に記載の媒体。
【請求項１１】
前記メッセージ・キューにおける前記１つ以上の選択されるタスクを実行するために、前記ソフトウェアは、実行時に、
前記アイドル時間の終点である降伏点に達することで現在実行されているタスクをサスペンドし、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加するように更に動作可能であることを特徴とする請求項８に記載の媒体。
【請求項１２】
前記ソフトウェアは、実行時に、
アプリケーション・テイラード・リサイクラに前記少なくとも１つの選択される要素を格納し、
前記コンテンツ・レイアウトの前記一部におけるコンテンツに対するリクエストに応じて、前記アプリケーション・テイラード・リサイクラから前記少なくとも１つの選択される要素を検索し、
前記コンテンツ・レイアウトの前記一部のために必要に応じて前記ディスプレイ・オブジェクトの他の要素を更新し、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第１の部分におけるコンテンツに対するリクエストを受信するように更に動作可能であることを特徴とする請求項１１に記載の媒体。
【請求項１３】
１つ以上のアプリケーション特有の規則は、各要素を予め生成するコストに基づいて要素に優先順位を付け、前記要素を予め生成するコストは、前記要素のサイズ、前記要素の複雑度、前記要素がいかなる頻度で更新される必要があるか、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項８に記載の媒体。
【請求項１４】
アプリケーション特有の規則は、前記コンピューティング・デバイスの利用可能なメモリに基づき予め生成するために選択される要素の数を調整することを特徴とする請求項１３に記載の媒体。
【請求項１５】
１つ以上のプロセッサと、
同プロセッサによって実行可能な指示を含む、前記プロセッサに接続されるメモリとを備えるコンピューティング・デバイスであって、前記プロセッサは、前記指示の実行時に、
コンテンツ・レイアウトの表示可能領域のためのフレーム・バッファ充填タスクを開始し、
予め生成すべきディスプレイ・オブジェクトの部分を識別し、該ディスプレイ・オブジェクトは、前記表示可能領域外にある前記コンテンツ・レイアウトの一部に関連付けられ、
アイドル時間の次のウィンドウの開始点を識別するために、スレッドを監視し、前記アイドル時間の次のウィンドウは、前記スレッドが最小時間アイドルになる場合の次の機会を含み、該開始点は、前記フレーム・バッファ充填タスクを実施するために要求される見積もられる期間に少なくとも一部基づき、
前記フレーム・バッファ充填タスクを完了させることで前記スレッドにより実行するために、メッセージ・キューに１つ以上の選択される予め生成されるタスクを付加し、前記選択されるタスクの各々は、前記ディスプレイ・オブジェクトの少なくとも１つの選択される要素のためのコンテンツを予め生成し、
前記フレーム・バッファ充填タスクの完了時に、前記選択されるタスクの実行を開始し、
前記ディスプレイ・オブジェクトを返すように動作可能であることを特徴とするコンピューティング・デバイス。
【請求項１６】
前記メッセージ・キューにおける前記１つ以上の選択されるタスクを実行するために動作可能な前記プロセッサは、
前記アイドル時間の終点である降伏点に達することで現在実行されているタスクをサスペンドし、
後に再開されるように、前記サスペンドされたタスクを前記メッセージ・キューに付加するように更に動作可能であることを特徴とする請求項１５に記載のコンピューティング・デバイス。
【請求項１７】
前記プロセッサは、前記指示の実行時に、
アプリケーション・テイラード・リサイクラに前記少なくとも１つの選択される要素を格納し、
前記コンテンツ・レイアウトの前記一部におけるコンテンツに対するリクエストに応じて、前記アプリケーション・テイラード・リサイクラから前記少なくとも１つの選択される要素を検索し、
前記コンテンツ・レイアウトの前記一部のために必要に応じて前記ディスプレイ・オブジェクトの他の要素を更新し、
前記コンピューティング・デバイスに関連付けられるスクリーンの表示可能領域のコンテンツ・レイアウトの第１の部分におけるコンテンツに対するリクエストを受信するように更に動作可能であることを特徴とする請求項１６に記載のコンピューティング・デバイス。
【請求項１８】
前記表示可能領域は、スクリーンの面積、前記スクリーンのアスペクト比、レンダリングされる前記コンテンツのタイプ、アプリケーション特有の要因、ユーザ構成の設定、あるいはユーザの選択に基づいて決定され、前記少なくとも１つの選択される要素の選択は、前記表示可能領域の面積、前記コンピューティング・デバイスの利用可能なメモリ、あるいはアプリケーション特有の規則に基づくことを特徴とする請求項１５に記載のコンピューティング・デバイス。
【請求項１９】
１つ以上のアプリケーション特有の規則は、各要素を予め生成するコストに基づき要素に優先順位を付け、前記予め要素を生成するコストは、前記要素のサイズ、前記要素の複雑度、前記要素がいかなる頻度で更新される必要があるか、前記コンピューティング・デバイスのプラットフォームの性能、あるいは前記コンピューティング・デバイスの構成を含む要因に基づくことを特徴とする請求項１５に記載のコンピューティング・デバイス。
【請求項２０】
アプリケーション特有の規則は、前記コンピューティング・デバイスの利用可能なメモリに基づき予め生成するために選択される要素の数を調整することを特徴とする請求項１９に記載のコンピューティング・デバイス。
【国際調査報告】
2016519823.tif 000009
2016519823.tif 000010