(57)【特許請求の範囲】
【請求項１】
コンピュータにより実施される方法であって、
コンピューティングシステムが、コンピューティングシステムが配置される第１の向きを判定するステップと、
前記コンピューティングシステムが、前記第１の向きに配置されたときに第１の機能を提供するステップと、
前記コンピューティングシステムが、第２の向きに配置されることを判定するステップと、
前記コンピューティングシステムが、前記コンピューティングシステムに関連する現在の状態に基づいて、前記コンピューティングシステムによって提供可能な一組の機能のうちの第２の機能を選択するステップと、ここで、前記第２の機能は、前記第１の機能とは異なり、
前記コンピューティングシステムが、第２の向きに配置されると、第２の機能を提供するステップと、
前記コンピューティングシステムが、前記第２の機能の提供に続いて前記第１の向きに配置されると判定するステップと、
前記第２の機能に基づいて第３の機能を選択するステップと、ここで、前記第３の機能は、前記第１および第２の機能とは異なり、
前記コンピューティングシステムが、前記第２の機能の提供に続いて前記第１の向きに配置されると第３の機能を提供するステップとを含む、コンピュータにより実施される方法。
【請求項２】
前記第１の向きは縦向きに対応し、前記第２の向きは横向きに対応する、請求項１に記載のコンピュータにより実施される方法。
【請求項３】
前記コンピューティングシステムに関連する現在の状態は、前記コンピューティングシステム上で動作するアプリケーションに関連する現在のコンテキストを含む、請求項１に記載のコンピュータにより実施される方法。
【請求項４】
前記一組の機能のうちの少なくとも第１の一部がコンテンツ制作に関連付けられ、前記一組の機能のうちの少なくとも第２の一部がコンテンツ消費に関連付けられる、請求項１に記載のコンピュータにより実施される方法。
【請求項５】
前記第１の機能は、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付けられ、前記第２の機能は、投稿に含まれる画像を生成するためのカメラモードに関連付けられる、請求項１に記載のコンピュータにより実施される方法。
【請求項６】
前記第１の機能は、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付けられ、前記第２の機能は、投稿に位置タグを追加すること、投稿にユーザタグを追加すること、投稿に顔認識を適用すること、または投稿にリッチテキスト編集を利用することに関連付けられる、請求項１に記載のコンピュータにより実施される方法。
【請求項７】
前記第１の機能は、第１のビューにおいてコンテンツアイテムにアクセスすることに関連付けられ、前記第２の機能は、第２のビューにおいてコンテンツアイテムにアクセスすることに関連付けられ、前記第２のビューは、第１のビューよりも多くのコンテンツアイテムに関連する情報を提供する、請求項１に記載のコンピュータにより実施される方法。
【請求項８】
前記第１の機能は、金融取引を実行するための機能を含み、前記第２の機能は、領収書、名刺、または感謝を表す通信文のうちの少なくとも１つを提供するための機能を含む、請求項１に記載のコンピュータにより実施される方法。
【請求項９】
前記第１の機能は、受信ボックス内のメッセージにアクセスするための機能を含み、前記第２の機能は、メッセージ、受信ボックス、またはメッセージが一部であるメッセージスレッドのうちの少なくとも１つを提供するための機能を含む、請求項１に記載のコンピュータにより実施される方法。
【請求項１０】
前記第１の機能は、ウェブリソースへのリンクを提供するための機能を含み、前記第２の機能は、前記リンクを介して前記ウェブリソースのローディングを開始するための機能を含む、請求項１に記載のコンピュータにより実施される方法。
【請求項１１】
前記第１の機能は、第１のビューにおいて第１のコンテンツアイテムにアクセスするための機能を含み、前記第２の機能は、前記第１のコンテンツアイテムと、第２のビューに切り替えて第２のコンテンツアイテムにアクセスするための少なくとも１つのタブとを提供するための機能を含む、請求項１に記載のコンピュータにより実施される方法。
【請求項１２】
前記第１の機能は、検索を実行するための機能を含み、前記第２の機能は、前記検索の実行に基づいて一組の結果を提供するための機能を含み、一組の結果を提供することは、少なくとも第１の種類の検索結果に関連する第１の一部の結果と、第２の種類の検索結果に関連する第２の一部の結果とを提供することを含む、請求項１に記載のコンピュータにより実施される方法。
【請求項１３】
前記第３の機能は、前記第２の機能に関連付けられたカメラモードで生成され、ソーシャルネットワーキングシステムへの投稿に含まれる画像のローディングを開始することに関連付けられ、投稿の作成は、第１の機能に基づいて開始される、請求項１に記載のコンピュータにより実施される方法。
【請求項１４】
前記第３の機能は、バック命令、キャンセル命令、無視命令、中止命令、エスケープ命令、または終了命令のうちの少なくとも１つに関連付けられる、請求項１に記載のコンピュータにより実施される方法。
【請求項１５】
前記コンピューティングシステムが第１の向きに配置された後に第２の向きに配置されると、前記コンピューティングシステムが経験した向きの変化に関連する方向を判定し、前記第２の機能を選択することは方向に基づく、請求項１に記載のコンピュータで実施される方法。
【請求項１６】
前記第１の向きまたは前記第２の向きの少なくとも１つは、前記コンピューティングシステムの１つ以上の方位センサに基づいて判定される、請求項１に記載のコンピュータにより実施される方法。
【請求項１７】
前記１つ以上の方位センサが、加速度計、ジャイロスコープ、コンパス、気圧計、磁力計、またはモーションプロセッサのうちの少なくとも１つを含む、請求項１６に記載のコンピュータにより実施される方法。
【請求項１８】
システムであって、
少なくとも１つのプロセッサと、
前記少なくとも１つのプロセッサによって実行されると、前記システムに、
コンピューティングシステムが配置される第１の向きを判定すること、
前記コンピューティングシステムが前記第１の向きに配置されたときに第１の機能を提供すること、
前記コンピューティングシステムが第２の向きに配置されることを判定すること、
前記コンピューティングシステムに関連する現在の状態に基づいて、前記コンピューティングシステムによって提供可能な一組の機能のうちの第２の機能を選択すること、ここで、前記第２の機能は、前記第１の機能とは異なり、
前記コンピューティングシステムが第２の向きに配置されると第２の機能を提供すること、
前記コンピューティングシステムが、前記第２の機能の提供に続いて前記第１の向きに配置されると判定すること、
前記第２の機能に基づいて第３の機能を選択すること、ここで、前記第３の機能は、前記第１および第２の機能とは異なり、
前記コンピューティングシステムが、前記第２の機能の提供に続いて前記第１の向きに配置されると第３の機能を提供することを実行させる命令を格納するメモリとを備えるシステム。
【請求項１９】
命令を含む非一時的なコンピュータ読み取り可能な記憶媒体であって、前記命令は、コンピューティングシステムの少なくとも１つのプロセッサによって実行されると、前記コンピューティングシステムに、
前記コンピューティングシステムが配置される第１の向きを判定すること、
前記コンピューティングシステムが前記第１の向きに配置されたときに第１の機能を提供すること、
前記コンピューティングシステムが第２の向きに配置されることを判定すること、
前記コンピューティングシステムに関連する現在の状態に基づいて、前記コンピューティングシステムによって提供可能な一組の機能のうちの第２の機能を選択すること、ここで、前記第２の機能は、前記第１の機能とは異なり、
前記コンピューティングシステムが第２の向きに配置されると第２の機能を提供すること、
前記コンピューティングシステムが、前記第２の機能の提供に続いて前記第１の向きに配置されると判定すること、
前記第２の機能に基づいて第３の機能を選択すること、ここで、前記第３の機能は、前記第１および第２の機能とは異なり、
前記コンピューティングシステムが、前記第２の機能の提供に続いて前記第１の向きに配置されると第３の機能を提供することを実行させる、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、コンピューティングデバイスから機能を提供する分野に関する。より詳細には、本技術は、デバイスの向きに基づいて機能を提供する技術に関する。
【背景技術】
【０００２】
今日、さまざまな目的のためにコンピューティングデバイス（またはシステム）を利用することが多い。ユーザは、たとえば、他のユーザとインタラクトしたり、コンテンツにアクセスしたり、コンテンツを共有したり、コンテンツを作成したりするために、コンピューティングデバイスを使用することができる。一例では、ソーシャルネットワーキングシステム（またはサービス）のユーザは、自身のコンピューティングデバイスを利用して、ステータスアップデート、リンク、イメージ、ビデオなどの様々なコンテンツアイテムをソーシャルネットワーキングシステムを介して提供、投稿、共有および様々なコンテンツアイテムにアクセスすることができる。
【０００３】
多くの場合、コンピューティングデバイスの表示画面のサイズは制限される。したがって、テキスト、画像、および他のコンテンツは、通常、画面上に表示されるスペースと競合することとなる。従来のアプローチの下では、異なるタイプのコンピューティングデバイスの機能は、表示画面のスペースを無駄に使い切る可能性がある。一例では、テキストボックスなどの入力要素、画像などの視覚化、および表示画面のスペースを必要とする他の機能を提供する従来の手法は、非効率的に実行される可能性がある。このように、従来のアプローチは、コンテンツおよび他のデバイスの機能を提供することに関連する全体的なユーザエクスペリエンスに対して課題を生じさせるか、または低下させることとなる。
【発明の概要】
【０００４】
本発明による実施形態は、特に、方法、記憶媒体、システム、およびコンピュータプログラム製品に関する添付の特許請求の範囲に開示されている。１つの請求項のカテゴリ、例えば、方法に記載されている任意の特徴は、他の請求項のカテゴリ、例えば、システムにも請求することができる。添付の請求項に記載された従属性または参照は、形式的な理由のためにのみ選択される。しかしながら、以前の請求項（特に多数項従属）への意図的な参照から生じる主題は、請求項およびその特徴の任意の組み合わせが開示され、かつ添付の特許請求の範囲において選択されている従属関係に関係なく請求することができるように、同様に請求することができる。請求することができる主題は、添付の特許請求の範囲に記載された特徴の組み合わせだけでなく、特許請求の範囲における他の特徴の組み合わせも含む。特許請求の範囲に記載された各特徴は、特許請求の範囲における他の特徴または他の特徴の組み合わせと組み合わせることができる。さらに、本明細書に記載または図示された実施形態および特徴のうちのいずれかは、別個の請求項および／または本明細書に記載または図示された任意の実施形態または特徴または添付の特許請求の範囲のいずれかの特徴との任意の組み合わせにおいて請求することができる。
【０００５】
本開示の様々な実施形態は、コンピューティングシステムが配置される第１の向きを判定するように構成されたシステム、方法、および非一時的なコンピュータ可読媒体を含むことができる。第１の機能は、コンピューティングシステムが第１の方向に配置されるときに提供される。コンピューティングシステムが第２の向きに配置されることが判定される。第２の機能は、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能から選択することができる。第２の機能は、コンピューティングシステムが第２の向きに配置されるときに提供される。
【０００６】
一実施形態において、第１の向きは縦向きに対応し、第２の向きは横向きに対応することができる。一実施形態において、第１の向きは横向きに対応し、第２の向きは縦向きに対応することができる。
【０００７】
一実施形態において、コンピューティングシステムに関連する現在の状態は、コンピューティングシステム上で動作するアプリケーションに関連する現在のコンテキストまたはコンピューティングシステム上で動作するオペレーティングシステムに関連する現在のコンテキストのうちの少なくとも１つを含むことができる。
【０００８】
一実施形態において、一組の機能のうちの少なくとも第１の一部をコンテンツ制作に関連付け、一組の機能のうちの少なくとも第２の一部をコンテンツ消費に関連付けることができる。
【０００９】
一実施形態において、第１の機能を、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付け、第２の機能を、投稿に含まれる画像を生成するためのカメラモードに関連付けることができる。
【００１０】
一実施形態において、第１の機能を、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付け、第２の機能を、投稿に位置タグを追加すること、投稿にユーザタグを追加すること、投稿に顔認識を適用すること、または投稿にリッチテキスト編集を利用することに関連付けることができる。
【００１１】
一実施形態において、第１の機能を、第１のビューにおいてコンテンツアイテムにアクセスすることに関連付け、第２の機能を、第２のビューにおいてコンテンツアイテムにアクセスすることに関連付けることができる。いくつかの例では、第２のビューは、第１のビューよりも多くのコンテンツアイテムに関連する情報を提供することができる。
【００１２】
一実施形態において、第１の機能を金融取引に関連付け、第２の機能を、領収書、名刺、または感謝を表す通信文のうちの少なくとも１つを提供することに関連付けることができる。
【００１３】
一実施形態において、第１の機能を、受信ボックス内のメッセージにアクセスすることに関連付け、第２の機能を、メッセージ、受信ボックス、またはメッセージが一部であるメッセージスレッドのうちの少なくとも１つを提供することに関連付けることができる。
【００１４】
一実施形態において、第１の機能を、第１のビューにおいて第１のコンテンツアイテムにアクセスすることに関連付け、第２の機能を、第１のコンテンツアイテムと、第２のビューに切り替えて第２のコンテンツアイテムにアクセスするための少なくとも１つのタブとを提供することに関連付けることができる。
【００１５】
一実施形態において、第１の機能を、検索に関連付け、第２の機能を、検索に基づいて一組の結果を提供することに関連付けることができる。いくつかの例では、一組の結果を提供することは、少なくとも第１の検索結果の種類に関連する第１の一部の結果と、第２の検索結果の種類に関連する第２の一部の結果とを含むことができる。
【００１６】
一実施形態において、第１の機能を、ウェブリソースへのリンクを提供することに関連付け、第２の機能を、リンクを介してウェブリソースのローディングを開始することに関連付けることができる。
【００１７】
一実施形態において、コンピューティングシステムが第２の機能の提供に続いて第１の向きに配置されると判定することができる。第２の機能に基づいて第３の機能を選択することができる。コンピューティングシステムが第２の機能の提供に続いて第１の向きに配置されると第３の機能を提供することができる。
【００１８】
一実施形態において、第３の機能を、第２の機能に関連付けられたカメラモードで生成され、ソーシャルネットワーキングシステムへの投稿に含まれる画像のローディングを開始することに関連付けることができる。いくつかの例では、投稿の作成は、第１の機能に基づいて開始することができる。
【００１９】
一実施形態において、第３の機能を、バック命令、キャンセル命令、無視命令、中止命令、エスケープ命令、または終了命令のうちの少なくとも１つに関連付けることができる。
【００２０】
一実施形態において、コンピューティングシステムが第１の向きに配置された後に第２の向きに配置されると、コンピューティングシステムが経験した向きの変化に関連する方向を判定することができる。いくつかの例では、第２の機能を選択することは方向に基づく。
【００２１】
一実施形態において、第１の向きまたは第２の向きの少なくとも１つは、コンピューティングシステムの１つ以上の方位センサに基づいて判定することができる。
一実施形態において、１つ以上の方位センサが、加速度計、ジャイロスコープ、コンパス、気圧計、磁力計、またはモーションプロセッサのうちの少なくとも１つを含むことができる。
【００２２】
本発明によるさらなる実施形態では、１つ以上のコンピュータ可読の非一時的な記憶媒体は、実行時に本発明による方法または上記の実施形態のいずれかを行うように動作可能なソフトウェアを具体化する。
【００２３】
本発明によるさらなる実施形態では、システムは、１つ以上のプロセッサと、プロセッサに接続された少なくとも１つのメモリとを含み、メモリは、プロセッサによって実行可能な命令を含み、プロセッサは、命令の実行時に本発明による方法または上述の実施形態のいずれかを行うように動作可能である。
【００２４】
本発明によるさらなる実施形態では、好ましくはコンピュータ可読の非一時的な記憶媒体を含むコンピュータプログラム製品は、データ処理システム上で実行されたときに、本発明による方法または上述の実施形態のいずれかを行うように動作可能である。
【００２５】
本発明の他の多くの特徴および実施形態は、添付の図面および以下の詳細な説明から明らかとなる。
【図面の簡単な説明】
【００２６】
【図１】本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な方位依存性機能モジュールを含む例示的なシステムを示す。
【図２】本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な機能モジュールを示す。
【図３】本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された状態判定モジュールの一例を示す。
【図４Ａ】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
【図４Ｂ】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
【図４Ｃ】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
【図５Ａ】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
【図５Ｂ】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
【図６Ａ】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
【図６Ｂ】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
【図７】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法を示す。
【図８】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法を示す。
【図９】本開示の一実施形態による、様々なシナリオで利用することができる例示的なシステムのネットワーク図を示す。
【図１０】本開示の一実施形態による、様々なシナリオで利用することができるコンピューティングシステムの一例を示す。
【００２７】
図面は、説明のみのための開示された技術の様々な実施形態を示しており、図面は同様の要素を識別するために同じ参照番号を使用する。当業者は、以下の説明から、本明細書に記載の開示された技術の原理から逸脱することなく、図面に示された構造および方法の代替の実施形態を使用できることを容易に認識するであろう。
【発明を実施するための形態】
【００２８】
デバイスの向きに基づく機能の提供
さまざまな目的でコンピューティングデバイス（またはシステム）が使用される。コンピューティングデバイスは、さまざまな種類の機能を提供することができる。ユーザは、コンピューティングデバイスを利用して、記事を書く、写真を撮る、またはビデオを録画するなどによりコンテンツを制作することができる。ユーザは、コンピューティングデバイスを使用して、記事の閲覧、メディアの閲覧、ウェブリソース（例えば、ウェブサイト、オンラインサービスなど）へのアクセスなどによりコンテンツを消費することもできる。一例では、ソーシャルネットワーキングシステム（またはサービス）のユーザは、ソーシャルネットワーキングシステムを介して、自身のコンピューティングデバイスを使用して、他のユーザと通信またはインタラクトすることができるとともに、コンテンツを作成し、コンテンツを提供し、コンテンツを共有し、および／またはコンテンツにアクセスすることができる。
【００２９】
従来のアプローチの下では、コンピューティングデバイス上に機能を提供するには、コンピューティングデバイスの表示画面の使用が必要となり得る。したがって、コンピューティングデバイス上に提供される異なるタイプの機能または特徴は、多くの場合、表示画面上の表示スペースを共有しなければならない。しかしながら、コンピューティングデバイスの表示画面上の表示スペースは、多くの場合、制限される。一例では、従来のアプローチは、表示スペースを必要とする機能または特徴を非効率的に提供する可能性がある。
【００３０】
したがって、デバイスまたはシステムの機能を提供するための改善されたアプローチは、従来のアプローチに関連する様々な懸案事項に対処するか、または懸案事項を軽減するために有益である。本開示の様々な実施形態は、コンピューティングデバイスまたはコンピューティングシステムの向きに基づいて機能を提供することができる。いくつかの実施形態では、開示された技術は、１つ以上の方位センサを利用して、コンピューティングシステムが配置される第１の向きを判定する。第１の機能は、コンピューティングシステムが第１の向きに配置されるときに提供され得る。コンピューティングシステムが第２の向きに配置されたことが判定される。第２の機能は、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能の中から選択することができる。第２の機能は、コンピューティングシステムが第２の向きに配置されるときに提供される。
【００３１】
図１は、本開示の一実施形態による、デバイス（またはシステム）の向きに基づいて機能を提供する役割を果たすように構成された例示的な方位依存性機能モジュール１０２を含む例示的なシステム１００を示す。いくつかの実施形態では、方位依存性機能モジュール１０２は、方位判定モジュール１０４、機能モジュール１０６、および状態判定モジュール１０８を含む。例示的なシステム１００は、少なくとも１つのデータストア１１０を含む。
【００３２】
少なくとも１つのデータストア１１０は、様々なタイプのデータを格納し維持するように構成される。いくつかの実施形態では、少なくとも１つのデータストア１１０は、図９のソーシャルネットワーキングシステム９３０などのソーシャルネットワーキングシステム（またはサービス）に関連する情報を格納することができる。ソーシャルネットワーキングシステムに関連する情報は、ユーザ、ソーシャル接続、ソーシャルインタラクション、位置、地図、プレイス、イベント、グループ、投稿、通信、メディア、コンテンツ、アカウント設定、プライバシ設定についてのデータ、およびその他のタイプのデータを含む。例示的なシステム１００に示すように、いくつかの実施形態では、方位依存性機能モジュール１０２は、少なくとも１つのデータストア１１０と通信するか、または動作するように構成することができる。
【００３３】
さらに、方位判定モジュール１０４は、コンピューティングシステムが配置される向きを判定する役割を果たすように構成される。開示された技術の他のモジュールと同様に、いくつかの実施形態では、方位判定モジュール１０４は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせとして実施され得る。例えば、いくつかの実施形態では、方位判定モジュール１０４は、１つ以上の方位センサを含む。別の例では、１つ以上の方位センサは、方位判定モジュール１０４の外部で実施することができるが、コンピューティングシステム上または内部に設けられる。
【００３４】
方位判定モジュール１０４は、１つ以上の方位センサを利用するか、または１つ以上の方位センサと連携して動作して、コンピューティングシステムが配置される向きを判定する。一例では、方位判定モジュール１０４は、コンピューティングシステムが縦向き（または垂直方向）に配置されていることを判定することができる。一例では、方位判定モジュール１０４は、コンピューティングシステムが横向き（または水平方向）に配置されていることを判定することができる。さらに、方位判定モジュール１０４は、コンピューティングシステムが経験する向きの変化を判定することができる。例えば、方位判定モジュール１０４は、コンピューティングシステムが１つの向きに配置されていたと判定し、かつ別の向きに配置されたと判定することができる。
【００３５】
いくつかの実施形態では、１つ以上の方位センサは、加速度計、ジャイロスコープ、コンパス、気圧計、磁力計、モーションプロセッサ（例えば、モーション・コプロセッサ）またはそれらの任意の組合せのうちの少なくとも１つを含むことができるが、これに限定されない。
【００３６】
さらに、機能モジュール１０６は、コンピューティングシステムの向きに基づいて機能を提供する役割を果たすように構成される。一例では、機能モジュール１０６は、コンピューティングシステムに関連する現在の状態に基づいて機能を提供する役割を果たすように構成される。例えば、機能モジュール１０６は、コンピューティングシステムに関連付けられた向きおよび／または現在の状態に基づいて、一組の機能の中から選択された機能を提供する。機能モジュール１０６については、図２を参照してより詳細に説明する。
【００３７】
いくつかの実施形態では、コンピューティングシステムに関連する現在の状態は、状態判定モジュール１０８によって判定され、識別され、取得され、および／または提供され得る。状態判定モジュール１０８に関するより詳細な説明が、図３を参照して提供される。
【００３８】
さらに、いくつかの実施形態では、方位判定モジュール１０４は、コンピューティングシステムが前の向きに配置されていた後に後の向きに配置されると、コンピューティングシステムが経験した向きの変化に関連する方向を判定する役割を果たす。一例では、コンピューティングシステムによって提供される機能の選択は、方向（例えば、時計回り、反時計回りなど）に基づく。
【００３９】
図２は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な機能モジュール２０２を示す。いくつかの実施形態では、図１の機能モジュール１０６は、例示的な機能モジュール２０２として実装することができる。一例では、図２の例に示されるように、例示的な機能モジュール２０２は、コンテンツ制作モジュール２１０およびコンテンツ消費モジュール２２０を含む。
【００４０】
上述したように、機能モジュール２０２は、コンピューティングシステムの向きに基づいて機能を提供する役割を果たすように構成することができる。例えば、機能モジュール２０２は、コンピューティングシステムが第１の向きにあると判定されたときに少なくとも第１の機能を選択して提供し、コンピューティングシステムが第２の向きにあると判定されたときに少なくとも第２の機能を選択して提供する。一例では、機能モジュール２０２は、コンピューティングシステムに関連する向きおよび／または現在の状態に基づいて、一組の機能の中から選択された機能を提供するように構成されている。いくつかの例では、一組の機能は、コンテンツの制作に関連する一部の機能だけでなく、コンテンツの消費に関連する別の一部の機能を含むことができる。
【００４１】
図２の例では、コンテンツ制作モジュール２１０は、コンテンツ制作に関連する一部の機能を提供するように構成することができる。コンテンツ制作に関連する一部の機能は、メディア制作機能２１２、編集機能２１４、およびローディング機能２１６を含むが、これに限定されない。多くの変形が可能であることを理解されたい。
【００４２】
メディア制作機能２１２は、メディアコンテンツアイテムの取得、作成、および／または提供に関連付けられる。メディアコンテンツアイテムの例には、画像、ビデオ、オーディオ、および／またはテキストなどが含まれるが、これらに限定されない。一例では、メディア制作機能２１２は、コンピューティングシステムの１つ以上のキーボード（例えば、仮想キーボード、デジタルキーボードなど）を使用して、ソーシャルネットワーキングシステムにおける状態更新または投稿を制作する機能を含むことができる。別の例では、メディア制作機能２１２は、コンピューティングシステムの１つ以上のカメラを使用して画像を取り込む機能または画像を録画する機能を含むことができる。
【００４３】
編集機能２１４は、メディアコンテンツアイテムおよび他のコンテンツアイテムなどのコンテンツを展開、修正、および／または改訂することと関連付けられる。一例では、編集機能２１４は、編集画像、ビデオ、オーディオ、および／またはテキストなどに対応することができる。別の例では、編集機能２１４は、１つ以上のプロパティまたはメタデータ（例えば、タグ、説明、日付、場所など）を追加または編集することに対応することができる。編集機能２１４は、例えば、特定のコンテンツアイテムに含まれる１つ以上の顔を検出および／または認識するために特定のコンテンツアイテムに顔認識を適用する機能を含むことができる。さらに、いくつかの例では、編集機能２１４は、フォントスタイル、フォントサイズ、フォント色、記号などを変更することを含むリッチテキスト編集の機能を含むことができる。
【００４４】
ローディング機能２１６は、制作または提供されたコンテンツをローディングする機能と関連付けられる。いくつかのケースでは、ローディング機能２１６は、制作または提供された画像、ビデオ、または他のコンテンツアイテムのローディングに対応することができる。例えば、ローディング機能２１６は、ソーシャルネットワーキングシステムへの投稿の一部として含まれるか、または添付されるべく撮影した画像のローディングを開始することを含むことができる。別の例では、ローディング機能２１６は、送信されるメッセージの一部として含まれるか、または添付されるべく撮影した画像のローディングを開始することを含むことができる。
【００４５】
さらに、図２の例では、コンテンツ消費モジュール２２０は、コンテンツ消費に関連付けられた一部の機能を提供するように構成される。コンテンツ消費に関連する一部の機能は、情報機能２２２、タブ機能２２４、およびローディング機能２２６を含むことができるが、これに限定されない。また、多くの変形が可能であることを理解されたい。
【００４６】
情報機能２２２は、消費されている（例えば、視聴され、再生され、アクセスされた）コンテンツについての情報を提供するか、そうでなければ関連する情報を提供する機能に対応することができる。いくつかの例では、異なる状況下で異なるタイプおよび／または異なる情報量を提供することができる。例えば、コンピューティングシステムが第１の向きにあるとき、特定の情報を提供することができる。コンピューティングシステムが第２の向きに配置されると、異なる情報を提供することができる。
【００４７】
タブ機能２２４は、コンテンツが消費されるインタフェースをナビゲートするためなど、１つ以上のタブを提供する機能に対応することができる。いくつかの例では、各タブは、消費される個々の組のコンテンツアイテムまたは情報へのアクセスを提供することができる。一例では、ソーシャルネットワーキングシステムのユーザのプロファイルページまたはタイムラインでコンテンツを消費することができる。プロファイルページまたはタイムラインの最初のタブで、ユーザに関する情報にアクセスすることができる。この例では、第２のタブは、ユーザに関連する１つ以上のメディアコンテンツアイテムへのアクセスを提供することができる。第３のタブは、ソーシャルネットワーキングシステム内のユーザの友人またはソーシャル接続についての情報を提供することができる。別の例では、消費されるコンテンツは、検索またはクエリから生成された結果を含むことができる。タブ機能２２４は、異なるタブを介して異なるタイプの検索結果（例えば、ウェブ結果、画像結果、ニュース結果など）を提供することと関連付けられる。
【００４８】
ローディング機能２２６は、消費されるコンテンツのローディングを開始する機能に対応することができる。一例では、ローディング機能２２６は、消費される画像、ビデオ、または他のコンテンツアイテムをローディングすることを含むことができる。別の例では、ローディング機能２２６は、リンクまたはウェブアドレスを介してアクセス可能なウェブリソースをローディングすることと関連付けられる。
【００４９】
いくつかの実施形態では、コンテンツ消費に関連するローディング機能２２６は、コンテンツ制作に関連するローディング機能２１６と実質的に同じか、または類似していてもよい。いくつかの実施形態では、コンテンツ消費に関連するローディング機能２２６は、コンテンツ制作に関連するローディング機能２１６とは異なるものであるか、または別であってもよい。多くの変形が可能であることを理解されたい。
【００５０】
図３は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な状態判定モジュール３０２を示す。いくつかの実施形態では、図１の状態判定モジュール１０８は、例示的な機能モジュール３０２として実装することができる。図３の例に示すように、機能モジュール３０２は、アプリケーションコンテキストモジュール３０４およびオペレーティングシステムコンテキストモジュール３０６を含むことができる。
【００５１】
上記で説明したように、状態判定モジュール３０２は、コンピューティングシステムに関連する状態（例えば、現在の状態）を取得、判定、認識、および／または特定するように構成することができる。いくつかの例では、コンピューティングシステムに関連する現在の状態は、コンピューティングシステム上で動作するアプリケーションに関連する現在のコンテキストまたはコンピューティングシステム上で動作するオペレーティングシステムに関連する現在のコンテキストのうちの少なくとも１つを含むことができる。
【００５２】
アプリケーションコンテキストモジュール３０４は、コンピューティングシステム上で動作するアプリケーションに関連するコンテキスト（例えば、現在のコンテキスト）を取得、判定、認識、および／または特定するように構成することができる。アプリケーションに関連する現在のコンテキストは、コンピューティングシステム上で動作するアプリケーションが現在実行しているか、または経験している状態、ステージ、ステップ、プロセス、操作、および／またはタスクを示すことができる。
【００５３】
一例では、アプリケーションの現在のコンテキストは、アプリケーションのユーザが現在どのアプリケーションインタフェースまたはその一部とインタラクションしているかを示すことができる。別の例では、アプリケーションの現在のコンテキストは、アプリケーションが現在どの機能（複数の機能）を提供しているかを示すことができる。さらなる例では、アプリケーションの現在のコンテキストは、アプリケーションについての最新の情報をリアルタイム（又は、ほぼリアルタイム）で提供することができる。いくつかの実施形態では、コンピューティングシステムによって提供される１つ以上の機能は、アプリケーションの現在のコンテキストに基づくことができる。
【００５４】
オペレーティングシステムコンテキストモジュール３０６は、コンピューティングシステム上で動作するオペレーティングシステムに関連するコンテキスト（例えば、現在のコンテキスト）を取得、判定、認識、および／または特定するように構成することができる。オペレーティングシステムに関連する現在のコンテキストは、コンピューティングシステム上で動作しているオペレーティングシステムが現在実行しているか、または経験している状態、ステージ、ステップ、プロセス、操作、および／またはタスクを示すことができる。
【００５５】
一例では、オペレーティングシステムの現在のコンテキストは、オペレーティングシステムのユーザが現在どのオペレーティングシステムインタフェースまたはその一部を使用しているかを示すことができる。別の例では、オペレーティングシステムの現在のコンテキストは、オペレーティングシステムが現在提供している機能（複数の機能）または特徴（複数の特徴）を示すことができる。さらなる例では、オペレーティングシステムの現在のコンテキストは、リアルタイム（又は、ほぼリアルタイム）でオペレーティングシステムについての最新の情報を提供することができる。いくつかの実施形態では、コンピューティングシステムによって提供される１つ以上の機能は、オペレーティングシステムの現在のコンテキストに基づくことができる。
【００５６】
図４Ａは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ４００を示す。例示的なシナリオ４００は、デバイスの向きに基づいて機能を提供するように構成された例示的なコンピューティングデバイスまたはシステム４０２を含むことができる。
【００５７】
例示的なシナリオ４００では、コンピューティングシステム４０２は、表示画面４０４と、後ろ向きカメラ４０６などの１つ以上のカメラとを含むことができる。コンピューティングシステム４０２は、第１の向きに配置することもできる。図示されているように、第１の向きは、縦向き（または垂直）に対応することができる。この例では、第１の向きに配置されている間、コンピューティングシステム４０２は、表示画面４０４上に、ソーシャルネットワーキングシステム上の投稿を作成する入力要素（例えば、テキストボックス）４０８を提供することに対応する第１の機能を提供することができる。
【００５８】
図４Ｂは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ４３０を示す。図４Ｂにおいて、図４Ａのコンピューティングシステム４０２は、コンピューティングシステム４０２が第２の向きに配置されるように、向きの変化を経験したか、または変化を受けている。図４Ｂに示すように、第２の向きは、横向き（または水平方向）に対応することができる。第２の向きに配置されている間、コンピューティングシステム４０２は、第２の機能を提供することができる。この例では、第２の機能は、ソーシャルネットワーキングシステム上の投稿に含まれる画像を生成するためのカメラモード４１０に関連付けられる。例示的なシナリオ４３０に示されるように、カメラモード４１０は、表示画面４０４上に、後ろ向きカメラ４０６のカメラビューと、投稿に含むことができる画像をキャプチャするか、またはビデオを録画するための他のカメラモードのインタフェース要素を提供することができる。ユーザは、カメラモード４１０を使用して画像を取り込むことができる。さらに、いくつかの実施形態では、カメラモード４１０は、コンピューティングシステム４０２が第２の向きに配置されたときに直ちにまたはほぼ即座にイネーブルにすることができる。例えば、カメラモード４１０は、コンピューティングシステム４０２が第２の向きに配置されたことが検出されたときに、直ちにまたはほぼ即座に起動することができる。さらに、いくつかの実施形態では、コンピューティングシステム４０２は、コンピューティングシステム４０２が第２の向きにあるときに開始、起動、または有効化され得るカメラモード４１０において１つ以上の画像を自動的にキャプチャすることができる。
【００５９】
図４Ｃは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ４６０を示す。例示的なシナリオ４６０は、図４Ｂのコンピューティングシステム４０２が、コンピューティングシステム４０２が縦向きに対応する第１の向きに戻るように、別の向きの変化を経験したか、または変化を受けたことを示している。カメラモード（第２の機能）において画像を取り込んだ後に第１の向きに戻ると、コンピューティングシステム４０２は、第３の機能を選択して提供することができる。この例では、画像がカメラモードにおいて以前に取り込まれているので（第２の機能）、第３の機能は、ソーシャルネットワーキングシステムへの投稿への組み入れまたは添付４１２のための画像のローディングを開始することに対応するように選択することができる。
【００６０】
さらに、多くの変形が可能であることを理解されたい。一例では、第１の機能は、コンピューティングシステムが第１の向きに配置されているときに提供され、第１の機能は、上述したように、ソーシャルネットワーキングシステムのための投稿を作成する入力要素４０８に関連付けられる。図４Ａに示すように、より多くの表示スペースを必要とする付加的な機能または特徴を効率的に、効果的に、または快適に提供するために、表示画面４０４上には制限された表示スペースが存在し得る。この例では、明示的に図示されていないが、第２の向きで提供される第２の機能は、投稿に位置タグを追加するオプション、投稿にユーザタグを追加するオプション、投稿に顔認識を適用するオプション、投稿に対してリッチテキスト編集を利用するオプションのうちの少なくとも１つを選択することができる。
【００６１】
図５Ａは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ５００を示す。例示的なシナリオ５００は、表示画面５０４を含む例示的なコンピューティングデバイスまたはシステム５０２を含む。コンピューティングシステム５０２は、縦向きなどの第１の向きにある間、第１の機能を提供することができる。この例示的なシナリオ５００では、第１の機能は、表示画面５０４上の第１のビュー５０６においてコンテンツアイテム（例えば、ピザの画像）にアクセスすることと関連付けられる。
【００６２】
図５Ｂは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ５５０を示す。例示的なシナリオ５５０は、図５Ａのコンピューティングシステム５０２が、第１の向きから第２の向き、例えば横向きへの向きの変化を経験したことを示している。コンピューティングシステム５０２が第２の向きにある間に、第２の機能を提供することができる。この例示的なシナリオ５５０では、第２の機能は、第２のビュー５０８においてコンテンツアイテム（例えば、ピザの画像）にアクセスすることと関連付けられる。図示されるように、第２のビュー５０８は、第１のビュー５０６よりも多くのコンテンツアイテムに関連する情報を提供することができる。例えば、第２のビュー５０８は、コンテンツアイテムのより大きなビューを提供することができる。さらに、第２のビュー５０８は、コンテンツアイテムに関連付けられたプロパティおよび／またはメタデータ（例えば、コメント、いいね、など）５１０を提供することができる。
【００６３】
ここでも、多くの変形が可能であることを理解されたい。一例では、第１の機能を金融取引に関連付けることができ、第２の機能を、領収書、名刺、または感謝を表す通信文（例えば、「ありがとうございます」メモ）のうちの少なくとも１つを提供することと関連付けることができる。別の例では、第１の機能を、受信ボックス内のメッセージにアクセスすることと関連付けることができ、第２の機能を、メッセージ、受信ボックス、またはメッセージが一部であるメッセージスレッドのうちの少なくとも１つを提供することと関連付けることができる。さらなる例では、第１の機能を、ウェブリソースへのリンクを提供することと関連付け、第２の機能を、リンクを介してウェブリソースのローディングを開始すること（例えば、ウェブリソースを提示するためにリンクにアクセスすること）と関連付けることができる。
【００６４】
図６Ａは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ６００を示す。例示的なシナリオ６００は、表示画面６０４を有する例示的なコンピューティングシステム６０２を含む。コンピューティングシステム６０２は、縦向きのような第１の向きの間に第１の機能を提供することができる。この例示的なシナリオ６００では、第１の機能は、第１のビュー６０６において第１のコンテンツアイテム（例えば、木の画像）にアクセスすることと関連付けられる。
【００６５】
図６Ｂは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ６５０を示す。例示的なシナリオ６５０は、図６Ａのコンピューティングシステム６０２が、第１の向きから第２の向き、例えば横向きへの向きの変化を経験したことを示している。コンピューティングシステム６０２が第２の向きにある間に、第２の機能を提供することができる。この例示的なシナリオ６５０では、第２の機能を、表示画面６０４上に第１のコンテンツアイテム（例えば、木の画像）と、第２のビューに切り替えて第２のコンテンツアイテムにアクセスするための少なくとも１つのタブ６０８とを提供することに関連付けることができる。
【００６６】
さらに、明示的に図示されていないが、いくつかの実施形態では、第１の機能を検索に関連付けることができ、第２の機能を検索に基づいて一組の結果を提供することと関連付けることができる。一組の結果の提供は、少なくとも第１の検索結果の種類に関連する第１の一部の結果と、第２の検索結果の種類に関連する第２の一部の結果とを提供することを含むことができる。いくつかの例では、第２の機能と併せて、一部の間で切り替えるための１つ以上のタブを提供することができる。多くの他の可能性および変形が存在し得ることを理解されたい。
【００６７】
図７は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法７００を示す。別段の記載がない限り、様々な実施形態の範囲内で、類似のまたは代替の順序で、または並行して実行される、追加の、より少ない、または代替のステップが存在し得ることを理解されたい。
【００６８】
ブロック７０２において、例示的な方法７００は、コンピューティングシステムが配置される第１の向きを判定する。一例では、第１の向きは、縦向き、または代替的に横向きを含むことができる。ブロック７０４において、例示的な方法７００は、コンピューティングシステムが第１の向きに配置されたときに第１の機能を提供する。
【００６９】
ブロック７０６において、例示的な方法７００は、コンピューティングシステムが第２の向きに配置されることを判定する。方法７００は、コンピューティングシステムが経験する向きの変化を検出し、その結果、コンピューティングシステムは第１の向きではなく第２の向きに配置される。例えば、例示的な方法７００は、コンピューティングシステムが、縦向きであることに続いて横向きに配置されることを判定するか、または代替的にコンピューティングシステムが横向きに続いて縦向きに配置される。
【００７０】
ブロック７０８において、例示的な方法７００は、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能から第２の機能を選択する。いくつかの例では、コンピューティングシステムに関連する現在の状態は、コンピューティングシステム上で動作するアプリケーションおよび／またはオペレーティングシステムの現在のコンテキストを含む。ブロック７１０において、例示的な方法７００は、コンピューティングシステムが第２の向きに配置されると第２の機能を提供する。
【００７１】
図８は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法８００を示す。ここでも、別段の記載がない限り、様々な実施形態の範囲内で、類似のまたは代替の順序で、または並行して実行される、追加の、より少ない、または代替のステップが存在し得ることを理解されたい。
【００７２】
ブロック８０２において、例示的な方法８００は、コンピューティングシステムが第２の機能の提供に続いて第１の向きに配置されることを判定する。ブロック８０４において、例示的な方法８００は、第２の機能に基づいて第３の機能を選択する。ブロック８０６において、例示的な方法８００は、コンピューティングシステムが第２の機能の提供に続いて第１の向きに配置されると第３の機能を提供する。
【００７３】
いくつかの実施形態では、第３の機能は、ソーシャルネットワーキングシステムへの投稿に含まれる、第２の機能に関連するカメラモードで生成された画像のローディングを開始することと関連付けられる。いくつかの例では、第１の機能に基づいて投稿の作成を開始することができる。例えば、コンピューティングシステムが第１の向きにあったときに提供された第１の機能の一部として投稿を作成することができる。コンピューティングシステムが第２の向きにあったとき、第２の機能の一部として提供されたカメラモードで画像を生成することができる。第３の機能の一部として、画像は、コンピューティングシステムが第１の向きに戻ったときに、投稿への組み入れまたは添付としてローディングすることができる。
【００７４】
さらに、いくつかの実施形態では、第３の機能を、バック命令、キャンセル命令、無視命令、中止命令、エスケープ命令、または終了命令のうちの少なくとも１つに関連付けることができる。いくつかの例では、第３の機能をデフォルトおよび／またはユーザによって設定することができる。
【００７５】
さらに、いくつかの実施形態では、コンテンツ消費に関連する１つ以上の機能およびコンテンツ制作に関連する１つ以上の機能を、別々にまたは任意の組み合わせで提供することができる。
【００７６】
ここでも、本開示の様々な実施形態に関連する多くの他の用途、アプリケーション、および／または変形が存在し得ると考えられる。例えば、本開示の様々な実施形態は、学習、改善、および／または経時的に洗練され得る。
【００７７】
ソーシャルネットワーキングシステム−実施例
図９は、本開示の一実施形態による、強化されたビデオ符号化のための様々な実施形態において利用可能な例示的なシステム９００のネットワーク図を示す。システム９００は、１つ以上のユーザデバイス９１０、１つ以上の外部システム９２０、ソーシャルネットワーキングシステム（またはサービス）９３０、およびネットワーク９５０を含む。一実施形態では、ソーシャルネットワーキングサービス、プロバイダ、および／上述した実施形態と関連して説明されたシステムは、ソーシャルネットワーキングシステム９３０として具体化されてもよい。説明のために、図９で示すシステム９００の実施形態は、単一外部システム９２０および単一ユーザデバイス９１０を含む。しかしながら、他の実施形態では、システム９００は、より多くのユーザデバイス９１０および／またはより多くの外部システム９２０を含むことがあり、一実施形態では、ソーシャルネットワーキングシステム９３０は、ソーシャルネットワークプロバイダによって運営されるが、外部システム９２０は、それらが異なるエンティティによって運営されるという点において、ソーシャルネットワーキングシステム９３０から切り離されている。しかしながら様々な実施形態では、ソーシャルネットワーキングシステム９３０および外部システム９２０は、連携して動作して、ソーシャルネットワーキングシステム９３０のユーザ（メンバ）にソーシャルネットワーキングサービスを提供する。この場合、ソーシャルネットワーキングシステム９３０は、プラットフォームまたはバックボーンを提供し、外部システム９２０などの他のシステムがこれを使用して、インターネット全域に亘ってユーザにソーシャルネットワーキングサービスおよび機能を提供する。
【００７８】
ユーザデバイス９１０は、ユーザからの入力を受け取り、ネットワーク９５０を通じてデータを送受信する１または複数のコンピューティングデバイスを含む。一実施形態では、ユーザデバイス９１０は、例えば、Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）互換のオペレーティングシステム（ＯＳ）、Ａｐｐｌｅ  ＯＳ  Ｘ、および／またはＬｉｎｕｘ（登録商標）ディストリビューションを実行する従来のコンピュータシステムである。別の実施形態では、ユーザデバイス９１０は、スマートフォン、タブレット、携帯情報端末（ＰＤＡ）、携帯電話など、コンピュータ機能を有するデバイスであってもよい。ユーザデバイス９１０は、ネットワーク９５０を通じて通信するように構成される。ユーザデバイス９１０は、アプリケーション、例えばユーザデバイス９１０のユーザがソーシャルネットワーキングシステム９３０と対話できるようにするブラウザアプリケーションを、実行する。別の実施形態では、ユーザデバイス９１０は、ｉＯＳ４およびＡＮＤＲＯＩＤ（登録商標）など、ユーザデバイス９１０の固有のオペレーティングシステムによって提供されるアプリケーションプログラミングインタフェース（ＡＰＩ）を通じてソーシャルネットワーキングシステム９３０と対話する。ユーザデバイス９１０は、外部システム９２０およびソーシャルネットワーキングシステム９３０と、ネットワーク９５０を通じて通信するように構成され、ネットワーク９５０は、有線および／または無線通信システムを使用した、ローカルエリアネットワークおよび／またはワイドエリアネットワークの任意の組合せを含む。
【００７９】
一実施形態では、ネットワーク９５０は、通信標準技術および標準プロトコルを使用する。したがって、ネットワーク９５０は、イーサネット（登録商標）、７０２．１１、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス（ｗｏｒｌｄｗｉｄｅ  ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  ｍｉｃｒｏｗａｖｅ  ａｃｃｅｓｓ：ＷｉＭＡＸ）、３Ｇ、４Ｇ、ＣＤＭＡ、ＧＳＭ（登録商標）、ＬＴＥ、デジタル加入者線（ＤＳＬ）などの技術を使用するリンクを含む。同様に、ネットワーク９５０で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング（ＭＰＬＳ）、伝送制御プロトコル／インターネットプロトコル（ＴＣＰ／ＩＰ）、ユーザデータグラムプロトコル（ＵＤＰ）、ハイパーテキスト転送プロトコル（ＨＴＴＰ）、簡易メール転送プロトコル（ＳＭＴＰ）、ファイル転送プロトコル（ＦＴＰ）などを含む。ネットワーク９５０を通じて交換されるデータは、ハイパーテキストマークアップ言語（ＨＴＭＬ）、および拡張マークアップ言語（ＸＭＬ）を含む技術および／または形式を使用して表される。さらに、すべてまたは一部のリンクは、セキュアソケットレイヤ（ＳＳＬ）、トランスポート層セキュリティ（ＴＬＳ）、およびインターネットプロトコルセキュリティ（ＩＰｓｅｃ）などの従来の暗号化技術を使用して暗号化される。
【００８０】
一実施形態では、ユーザデバイス９１０は、ブラウザアプリケーション９１２を使用して外部システム９２０からおよびソーシャルネットワーキングシステム９３０から受信されたマークアップ言語ドキュメント９１４を処理することによって、外部システム９２０から、および／またはソーシャルネットワーキングシステム９３０から、コンテンツを表示する。マークアップ言語ドキュメント９１４は、コンテンツおよびコンテンツの形式もしくは体裁（ｐｒｅｓｅｎｔａｔｉｏｎ）を記述する１もしくは複数の命令を識別する。マークアップ言語ドキュメント９１４に含まれている命令を実行することによって、ブラウザアプリケーション９１２は、マークアップ言語ドキュメント９１４によって記述される形式または体裁を使用して識別されたコンテンツを表示する。例えば、マークアップ言語ドキュメント９１４は、外部システム９２０およびソーシャルネットワーキングシステム９３０から取り出されたテキストおよび／または画像データを含む複数のフレームを有するウェブページを生成し、表示するための命令を含む。様々な実施形態では、マークアップ言語ドキュメント９１４は、拡張マークアップ言語（ＸＭＬ）データ、拡張ハイパーテキストマークアップ言語（ＸＨＴＭＬ）データ、または他のマークアップ言語データを含むデータファイルを含む。さらに、マークアップ言語ドキュメント９１４は、ＪａｖａＳｃｒｉｐｔ（登録商標）オブジェクト表記法：ＪＳＯＮ（ＪａｖａＳｃｒｉｐｔＯｂｊｅｃｔ  Ｎｏｔａｔｉｏｎ）データ、ＪＳＯＮＰ（ＪＳＯＮ  ｗｉｔｈ  ｐａｄｄｉｎｇ）、およびＪａｖａＳｃｒｉｐｔデータを含んで、外部システム９２０とユーザデバイス９１０との間のデータ交換を容易にする。ユーザデバイス９１０上のブラウザアプリケーション９１２は、ＪａｖａＳｃｒｉｐｔコンパイラを使用して、マークアップ言語ドキュメント９１４をデコードする。
【００８１】
マークアップ言語ドキュメント９１４は、ＦＬＡＳＨ（商標）アプリケーションもしくはＵｎｉｔｙ（商標）アプリケーション、ＳｉｌｖｅｒＬｉｇｈｔ（商標）アプリケーションフレームワークなどの、アプリケーションまたはアプリケーションフレームワークもまた含む、またはこれにリンクする。
【００８２】
一実施形態では、ユーザデバイス９１０はまた、ユーザデバイス９１０のユーザがソーシャルネットワーキングシステム９３０にログインしているか否かを示すデータを含む１または複数のクッキー９１６を含み、これにより、一実施形態では、ソーシャルネットワーキングシステム９３０からユーザデバイス９１０に伝達されるデータの修正が可能になる。
【００８３】
外部システム９２０は、１または複数のウェブページ９２２ａ、９２２ｂを含む１または複数のウェブサーバを含み、これらはネットワーク９５０を使用してユーザデバイス９１０に伝達される。外部システム９２０は、ソーシャルネットワーキングシステム９３０から切り離されている。例えば、外部システム９２０は、第１のドメインと関連付けられ、ソーシャルネットワーキングシステム９３０は、別個のソーシャルネットワーキングドメインと関連付けられる。外部システム９２０に含まれるウェブページ９２２ａ、９２２ｂは、コンテンツを識別する、および識別されたコンテンツの形式または体裁を指定する命令を含むマークアップ言語ドキュメント９１４を含む。
【００８４】
ソーシャルネットワーキングシステム９３０は、複数のユーザを含むソーシャルネットワークのための１または複数のコンピューティングデバイスを含み、ソーシャルネットワークのユーザにソーシャルネットワークの他のユーザと通信し、対話する能力を提供する。一例では、ソーシャルネットワークは、グラフ、すなわちエッジおよびノードを含むデータ構造によって表される。データベース、オブジェクト、クラス、メタ要素、ファイル、またはその他のデータ構造など、ただしこれらに限らない、他のデータ構造が使用されて、ソーシャルネットワークを表す。ソーシャルネットワーキングシステム９３０は、オペレータによって運営、管理、または制御されてもよい。ソーシャルネットワーキングシステム９３０のオペレータは、ソーシャルネットワーキングシステム９３０内でコンテンツを管理し、ポリシーを調整し、使用メトリクスを収集するための人間、自動化アプリケーション、または一連のアプリケーションであってもよい。任意のタイプのオペレータを使用することができる。
【００８５】
ユーザが、ソーシャルネットワーキングシステム９３０に参加し、その後、ユーザが接続されたいと思うソーシャルネットワーキングシステム９３０の任意の数の他のユーザへの接続を追加する。本明細書で使用する「友達」という用語は、ユーザがソーシャルネットワーキングシステム９３０を通じて接続、関連付け、または関係を形成したソーシャルネットワーキングシステム９３０の任意の他のユーザを示す。例えば、一実施形態では、ソーシャルネットワーキングシステム９３０におけるユーザが、ソーシャルグラフ中のノードとして表される場合、「友達」という用語は、２つのユーザノードの間に形成され、これらを直接接続するエッジを指す。
【００８６】
つながりは、ユーザによって明示的に追加されてもよく、または、ユーザの共通の特徴（例えば、同じ教育機関の卒業生であるユーザ）に基づいてソーシャルネットワーキングシステム９３０によって自動的に作成されてもよい。例えば、具体的には第１のユーザが、特定の他のユーザを友達となるように選択する。ソーシャルネットワーキングシステム９３０におけるつながりは、通常両方向であるが、両方向である必要はなく、したがって「ユーザ」および「友達」という用語は、参照構造によって決まる。ソーシャルネットワーキングシステム９３０のユーザ間のつながりは、通常双方向（「２方向」）または「相互」であるが、つながりは、片方向、または「１方向」であってもよい。例えば、ボブおよびジョーがともにソーシャルネットワーキングシステム９３０のユーザであり、互いに接続されている場合、ボブおよびジョーは、互いのつながりである。一方、ボブが、ソーシャルネットワーキングシステム９３０に伝達されたデータを閲覧するためにジョーにつながることを希望するが、ジョーが相互のつながりを形成することを望まない場合、片方向のつながりが確立される。ユーザ間のつながりは、直接のつながりであってもよいが、ソーシャルネットワーキングシステム９３０の一実施形態は、つながりの１もしくは複数のレベルまたは分離度により、つながりが間接的であることを可能にする。
【００８７】
ユーザ間のつながりを確立し、維持すること、ユーザ間の対話を可能にすることに加えて、ソーシャルネットワーキングシステム９３０は、ソーシャルネットワーキングシステム９３０によってサポートされる様々なタイプのアイテムにアクションを行う能力をユーザに提供する。これらのアイテムは、ソーシャルネットワーキングシステム９３０のユーザが所属するグループもしくはネットワーク（すなわち、人、エンティティ、およびコンセプトのソーシャルネットワーク）、ユーザが関心を持っている可能性のあるイベントもしくはカレンダエントリ、ユーザがソーシャルネットワーキングシステム９３０を通じて使用するコンピュータベースのアプリケーション、ソーシャルネットワーキングシステム９３０によって、もしくはこれを通じて提供されるサービスを通じてユーザがアイテムを売買できるようにする取引、およびユーザがソーシャルネットワーキングシステム９３０上で、またはソーシャルネットワーキングシステム９３０から離れて行う広告との対話を含む。これらは、ソーシャルネットワーキングシステム９３０上でユーザが作用するアイテムのごく少数の例であり、多くの他のアイテムが想定される。ユーザは、ソーシャルネットワーキングシステム９３０において、またはソーシャルネットワーキングシステム９３０から分離した、もしくはネットワーク９５０を通じてソーシャルネットワーキングシステム９３０に結合された外部システム９２０において表される任意のものと対話する。
【００８８】
ソーシャルネットワーキングシステム９３０は、様々なエンティティ同士をリンクさせることもできる。例えば、ソーシャルネットワーキングシステム９３０によって、ユーザ同士が互いに対話することができ、またＡＰＩ、ウェブサービス、または他の通信チャネルを通じて外部システム９２０および他のエンティティと対話することができる。ソーシャルネットワーキングシステム９３０は、複数のエッジによって相互接続された複数のノードを含む「ソーシャルグラフ」を生成し、維持する。ソーシャルグラフ中の各ノードは、別のノードに作用する、および／または別のノードによって作用される可能性があるエンティティを表す。ソーシャルグラフは、様々なタイプのノードを含む。ノードのタイプの例は、ソーシャルネットワーキングシステム９３０においてオブジェクトによって表される、ユーザ、人間以外のエンティティ、コンテンツアイテム、ウェブページ、グループ、アクティビティ、メッセージ、コンセプト、およびその他のものを含む。ソーシャルグラフ中の２つのノード間のエッジは、その２つのノード間の特定の種類のつながり、または関連付けを表すことができ、これは、ノード関係から、またはノードの一方によって他方のノードに行われたアクションから生じる。場合によっては、ノード間のエッジは、重み付けされる。エッジの重みは、ノード間のつながりまたは関連付けの強さなど、エッジと関連付けられた属性を表す。様々なタイプのエッジが、様々な重みとともに提供される。例えば、あるユーザが別のユーザに対して「いいね」と表明する（ｌｉｋｅｓ）とき作成されるエッジに、ある重みを付けることができ、ユーザが別のユーザと友達になるとき作成されるエッジに、異なる重みを付ける。
【００８９】
例として、第１のユーザが第２のユーザを友達として識別するとき、ソーシャルグラフ中のエッジが、第１のユーザを表すノードおよび第２のユーザを表す第２のノードをつなげて生成される。様々なノードが、互いに関係するか、または対話するとき、ソーシャルネットワーキングシステム９３０は、様々なノードをつなぐエッジを修正して、関係および対話を反映する。
【００９０】
ソーシャルネットワーキングシステム９３０は、ユーザが生成したコンテンツも含み、ソーシャルネットワーキングシステム９３０とのユーザ対話を向上させる。ユーザが生成したコンテンツは、ユーザがソーシャルネットワーキングシステム９３０に追加する、アップロードする、送信する、または「投稿する」任意のものを含む。例えば、ユーザは、ユーザデバイス９１０からソーシャルネットワーキングシステム９３０に投稿を伝達する。投稿は、ステータス更新などのデータもしくは他のテキストデータ、位置情報、写真などの画像、映像、リンク、音楽、または同様のデータおよび／または媒体を含む。コンテンツは、サードパーティによってソーシャルネットワーキングシステム９３０に追加されることも可能である。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム９３０中のオブジェクトとして表される。このように、ソーシャルネットワーキングシステム９３０のユーザは、様々な通信チャネルを通じて様々なタイプの媒体のテキストおよびコンテンツアイテムを投稿することによって互いと通信するよう推奨される。このような通信が、互いとのユーザ対話を増加させ、ユーザがソーシャルネットワーキングシステム９３０と対話する頻度を増加させる。
【００９１】
ソーシャルネットワーキングシステム９３０は、ウェブサーバ９３２と、ＡＰＩリクエストサーバ９３４と、ユーザプロファイルストア９３６と、つながりストア９３８と、アクションロガー９４０と、アクティビティログ９４２と、認可サーバ９４４とを含む。本発明の一実施形態では、ソーシャルネットワーキングシステム９３０は、様々なアプリケーションに対して、追加の構成要素、より少ない構成要素、または異なる構成要素を含む。システムの詳細を曖昧にしないように、ネットワークインタフェース、セキュリティ機構、ロードバランサ、フェイルオーバサーバ、管理およびネットワークオペレーションコンソールなどの他の構成要素は、示されていない。
【００９２】
ユーザプロファイルストア９３６は、経歴、人口統計、および他のタイプの記述的情報、例えば、ユーザによって公表された、またはソーシャルネットワーキングシステム９３０によって推論された、職歴、学歴、趣味もしくは好み、所在地などを含む、ユーザアカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザプロファイルストア９３６に記憶される。ソーシャルネットワーキングシステム９３０はまた、様々なユーザ間の１または複数のつながりを記述するデータをつながりストア９３８に記憶する。つながり情報は、同様または共通の職歴、グループメンバシップ、趣味、または学歴を有するユーザを示す。さらに、ソーシャルネットワーキングシステム９３０は、様々なユーザ間にユーザ定義のつながりを含み、ユーザが他のユーザとの関係を指定できるようにする。例えば、ユーザ定義のつながりによって、ユーザは、友達、同僚、パートナなど、ユーザの現実生活の関係に匹敵する他のユーザとの関係を生成できる。ユーザは、予め定義されたつながりタイプから選択するか、または必要に応じてユーザ自身のつながりタイプを定義する。ソーシャルネットワーキングシステム９３０の他のノードとのつながり、例えば人間以外のエンティティ、バケット、クラスタセンタ、画像、関心、ページ、外部システム、コンセプトなどもまた、つながりストア９３８に記憶される。
【００９３】
ソーシャルネットワーキングシステム９３０は、ユーザが対話するオブジェクトに関するデータを維持する。このデータを維持するために、ユーザプロファイルストア９３６およびつながりストア９３８は、ソーシャルネットワーキングシステム９３０によって維持されるオブジェクトの対応するタイプのインスタンスを記憶する。各オブジェクトタイプは、オブジェクトのタイプに適切な情報を記憶するために適した情報フィールドを有する。例えば、ユーザプロファイルストア９３６は、ユーザのアカウントおよびユーザのアカウントに関係する情報を記述するために適したフィールドを有するデータ構造を含む。特定のタイプの新しいオブジェクトが作成されるとき、ソーシャルネットワーキングシステム９３０は、対応するタイプの新しいデータ構造を初期化し、これに一意のオブジェクト識別子を割り当て、必要に応じてオブジェクトにデータを追加し始める。これは、例えば、ユーザがソーシャルネットワーキングシステム９３０のユーザになるとき行われることが可能であり、ソーシャルネットワーキングシステム９３０は、ユーザプロファイルストア９３６にユーザプロファイルの新しいインスタンスを生成し、ユーザアカウントに一意の識別子を割り当て、ユーザによって提供される情報によりユーザアカウントのフィールドを初期設定し始める。
【００９４】
つながりストア９３８は、他のユーザに対するユーザのつながり、外部システム９２０に対するつながり、または他のエンティティに対するつながりを記述するのに適したデータ構造を含む。つながりストア９３８は、つながりタイプをユーザのつながりと関連付けることもでき、これは、ユーザに関する情報へのアクセスを規制するためにユーザのプライバシ設定と併せて使用される。本発明の一実施形態では、ユーザプロファイルストア９３６およびつながりストア９３８は、連合データベースとして実装される。
【００９５】
つながりストア９３８、ユーザプロファイルストア９３６、およびアクティビティログ９４２に記憶されたデータにより、ソーシャルネットワーキングシステム９３０は、様々なオブジェクトを識別するノード、およびノード同士を接続するエッジを使用して、様々なオブジェクト間の関係を識別するソーシャルグラフを生成する。例えば、ソーシャルネットワーキングシステム９３０において、第１のユーザが第２のユーザとつながりを確立する場合、ユーザプロファイルストア９３６からの第１のユーザおよび第２のユーザのユーザアカウントが、ソーシャルグラフにおいてノードとしての役割を担う。つながりストア９３８によって記憶された第１のユーザと第２のユーザとのつながりは、第１のユーザおよび第２のユーザと関連付けられたノード間のエッジである。この例を続けると、ソーシャルネットワーキングシステム９３０中で、第２のユーザは、その後第１のユーザにメッセージを送信する。メッセージを送信するアクション（記憶されてもよい）は、第１のユーザおよび第２のユーザを表しているソーシャルグラフ中の２つのノード間の別のエッジである。さらに、メッセージ自体は、第１のユーザおよび第２のユーザを表すノードに接続された別のノードとしてソーシャルグラフにおいて識別され、含められる。
【００９６】
別の例では、ソーシャルネットワーキングシステム９３０によって維持される画像中に（代替として、ソーシャルネットワーキングシステム９３０の外部の別のシステムによって維持される画像中に）第１のユーザが第２のユーザをタグ付けする画像自体が、ソーシャルネットワーキングシステム９３０中のノードとして表される。このタグ付けアクションは、第１のユーザと第２のユーザとの間のエッジを作成するとともに、ソーシャルグラフ中のノードであるユーザのそれぞれと画像との間のエッジを作成する。さらに別の例では、ユーザがイベントに参加することを確認する場合、ユーザおよびイベントは、ユーザプロファイルストア９３６から取得されるノードであり、イベントの参加は、アクティビティログ９４２から検索されるノード間のエッジである。ソーシャルグラフを生成し維持することによって、ソーシャルネットワーキングシステム９３０は、多くの様々なタイプのオブジェクト、およびそれらオブジェクト間の対話およびつながりを記述するデータを含み、これらは、ソーシャル（ネットワーク）的に関係する情報の豊富なソースを提供する。
【００９７】
ウェブサーバ９３２は、ネットワーク９５０を通じて１もしくは複数のユーザデバイス９１０および／または１もしくは複数の外部システム９２０に、ソーシャルネットワーキングシステム９３０をリンクさせる。ウェブサーバ９３２は、ウェブページと同様に、Ｊａｖａ（登録商標）、ＪａｖａＳｃｒｉｐｔ、Ｆｌａｓｈ、ＸＭＬなど、他のウェブ関係コンテンツを供給する。ウェブサーバ９３２は、メールサーバまたはソーシャルネットワーキングシステム９３０と１または複数のユーザデバイス９１０との間でメッセージを受信し、ルーティングするための他のメッセージング機能を含む。メッセージは、インスタントメッセージ、キューに入れられたメッセージ（例えば、電子メール）、テキストおよびＳＭＳメッセージ、または任意の他の好適なメッセージング形式であってもよい。
【００９８】
ＡＰＩリクエストサーバ９３４により、１または複数の外部システム９２０およびユーザデバイス９１０は、１または複数のＡＰＩ機能を呼び出すことによって、ソーシャルネットワーキングシステム９３０からアクセス情報を呼び出す。またＡＰＩリクエストサーバ９３４により、外部システム９２０はＡＰＩを呼び出すことによって、ソーシャルネットワーキングシステム９３０に情報を送信することもある。一実施形態では外部システム９２０は、ネットワーク９５０を通じてソーシャルネットワーキングシステム９３０にＡＰＩ要求を送信し、ＡＰＩリクエストサーバ９３４は、ＡＰＩ要求を受信する。ＡＰＩリクエストサーバ９３４は、ＡＰＩ要求と関連付けられたＡＰＩを呼び出すことによって要求を処理して適切な応答を生成し、これをＡＰＩリクエストサーバ９３４は、ネットワーク９５０を通じて外部システム９２０に伝達する。例えば、ＡＰＩ要求に応答して、ＡＰＩリクエストサーバ９３４は、外部システム９２０にログインしたユーザのつながりなど、ユーザと関連付けられたデータを収集し、収集したデータを外部システム９２０に伝達する。別の実施形態では、ユーザデバイス９１０は、外部システム９２０と同様の方法でＡＰＩを通じてソーシャルネットワーキングシステム９３０と通信する。
【００９９】
アクションロガー９４０は、ソーシャルネットワーキングシステム９３０上のおよび／またはソーシャルネットワーキングシステム９３０の外部のユーザアクションに関するウェブサーバ９３２からの通信を受信する。アクションロガー９４０は、アクティビティログ９４２をユーザアクションに関する情報で設定し、ソーシャルネットワーキングシステム９３０が、ソーシャルネットワーキングシステム９３０内で、およびソーシャルネットワーキングシステム９３０の外部で、そのユーザによって行われた様々なアクションを探索できるようにする。ソーシャルネットワーキングシステム９３０上の別のノードに対して特定のユーザが行ういずれのアクションも、アクティビティログ９４２に、または同様のデータベースもしくは他のデータリポジトリに維持されている情報を通じて、各ユーザのアカウントと関連付けられる。識別され記憶される、ソーシャルネットワーキングシステム９３０内のユーザによって行われるアクションの例は、例えば、別のユーザへのつながりを追加すること、別のユーザへのメッセージを送信すること、別のユーザからのメッセージを読むこと、別のユーザと関連付けられたコンテンツを閲覧すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像の投稿を試みること、または別のユーザもしくは別のオブジェクトと対話する他のアクションを含む。ユーザがソーシャルネットワーキングシステム９３０内でアクションを行うとき、アクションは、アクティビティログ９４２に記録される。一実施形態では、ソーシャルネットワーキングシステム９３０は、エントリのデータベースとしてアクティビティログ９４２を維持する。ソーシャルネットワーキングシステム９３０内でアクションが行われるとき、そのアクションのためのエントリは、アクティビティログ９４２に追加される。アクティビティログ９４２は、アクションログと呼ばれてもよい。
【０１００】
さらに、ユーザアクションは、ソーシャルネットワーキングシステム９３０以外の外部システム９２０など、ソーシャルネットワーキングシステム９３０外のエンティティ内で発生するコンセプトおよびアクションと関連付けられる。例えば、アクションロガー９４０は、ウェブサーバ９３２から、外部システム９２０とのユーザ対話を記述したデータを受信する。この例では、外部システム９２０は、ソーシャルグラフ中の構造化されたアクションおよびオブジェクトに応じてユーザ対話を報告する。
【０１０１】
ユーザが外部システム９２０と対話するアクションの他の例は、ユーザが外部システム９２０もしくは別のエンティティに関心を示すこと、ユーザがソーシャルネットワーキングシステム９３０に、外部システム９２０もしくは外部システム９２０内のウェブページ９２２ａについて述べるコメントを投稿すること、ユーザがソーシャルネットワーキングシステム９３０に、外部システム９２０と関連付けられたユニフォームリソースロケータ（ＵＲＬ）もしくは他の識別子を投稿すること、ユーザが外部システム９２０と関連付けられたイベントに参加すること、または外部システム９２０と関係するユーザによるその他のアクションを含む。したがって、アクティビティログ９４２は、ソーシャルネットワーキングシステム９３０のユーザと、ソーシャルネットワーキングシステム９３０以外の外部システム９２０との間の対話を記述するアクションを含む。
【０１０２】
認可サーバ９４４は、ソーシャルネットワーキングシステム９３０のユーザの１または複数のプライバシ設定を確実にする。ユーザのプライバシ設定により、ユーザと関連付けられた特定の情報をどのように共有するかを決定する。プライバシ設定は、ユーザと関連付けられた特定の情報の指定、および情報を共有する１または複数のエンティティの指定を含む。情報を共有するエンティティの例は、他のユーザ、アプリケーション、外部システム９２０、またはその情報に潜在的にアクセスする可能性があるエンティティを含む。ユーザによって共有される情報は、プロファイル写真、ユーザと関連付けられた電話番号、ユーザのつながり、つながりの追加、ユーザプロファイル情報の変更などユーザによって行われるアクション、その他のユーザアカウント情報を含む。
【０１０３】
プライバシ設定の指定は、様々なレベルの粒度で提供される。例えば、プライバシ設定は、他のユーザと共有される特定の情報を識別することができ、プライバシ設定は、勤務先の電話番号、またはプロファイル写真、自宅の電話番号、およびステータスを含む個人情報など、関係情報の特定の集合を識別する。代替として、プライバシ設定は、ユーザと関連付けられた情報すべてに適用する。特定の情報にアクセスするエンティティの集合の指定は、様々なレベルの粒度で指定されることも可能である。情報を共有するエンティティの様々な集合は、例えば、ユーザのすべての友達、友達のすべての友達、すべてのアプリケーション、またはすべての外部システム９２０を含む。一実施形態により、エンティティの列挙を含むエンティティの集合の指定が可能になる。例えば、ユーザは、特定の情報にアクセスすることを許可される外部システム９２０のリストを提供する。別の実施形態により、情報にアクセスすることを許可されない例外と併せてエンティティの集合を含む指定が可能になる。例えば、ユーザが、すべての外部システム９２０にユーザの仕事情報にアクセスすることを許可するが、仕事情報にアクセスすることを許可されない外部システム９２０のリストを指定する。一実施形態は、特定の情報にアクセスすることを許可されない例外のリストを「ブロックリスト」と呼ぶ。ユーザによって指定されたブロックリストに属する外部システム９２０は、プライバシ設定で指定された情報にアクセスすることを妨げられる。情報の指定の粒度、および情報を共有するエンティティの指定の粒度の様々な組合せが可能である。例えば、すべての個人情報を、友達と共有するのに対して、すべての仕事情報を、友達の友達と共有する。
【０１０４】
認可サーバ９４４は、ユーザと関連付けられた特定の情報が、ユーザの友達、外部システム９２０、ならびに／または他のアプリケーションおよびエンティティによってアクセスされるか否かを決定するロジックを含む。外部システム９２０は、ユーザの勤務先電話番号など、ユーザのよりプライベートな、慎重に扱うべき情報にアクセスするために認可サーバ９４４からの認可を必要とする。ユーザのプライバシ設定に基づいて、認可サーバ９４４は、別のユーザ、外部システム９２０、アプリケーション、または別のエンティティが、ユーザによって行われるアクションに関する情報を含め、ユーザと関連付けられた情報にアクセスすることを許可されるか否かを決定する。
【０１０５】
いくつかの実施形態では、ソーシャルネットワーキングシステム９３０は、方位依存性機能モジュール９４６を含むことができる。方位依存性機能モジュール９４６は、例えば、図１の方位依存性機能モジュール１０２として具体化することができる。方位依存性機能モジュール９４６は、コンピューティングシステムが配置される第１の向きを判定する役割を果たす。方位依存性機能モジュール９４６は、コンピューティングシステムが第１の向きに配置されるときに第１の機能を提供する役割を果たすように構成することができる。方位依存性機能モジュール９４６はまた、コンピューティングシステムが第２の向きに配置されることを判定する役割を果たすように構成され得る。方位依存性機能モジュール９４６は、さらに、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能のうち第２の機能を選択する役割を果たすように構成することができる。さらに、方位依存性機能モジュール９４６は、コンピューティングシステムが第２の向きに配置されたときに第２の機能を提供する役割を果たすように構成することができる。
【０１０６】
ハードウェア実装
前述のプロセスおよび特徴は、多種多様なマシンおよびコンピュータシステムアーキテクチャによって、多種多様なネットワークおよびコンピューティング環境において、実装される。図１０は、本発明の一実施形態に従う、本明細書に記載の実施形態の１または複数を実装するために使用されるコンピュータシステム１０００の一例を示す。コンピュータシステム１０００は、コンピュータシステム１０００に本明細書に記載のプロセスおよび特徴を行わせる命令の集合を含む。コンピュータシステム１０００は、他のマシンに接続される（例えば、ネットワーク化される）。ネットワーク化された配置においてコンピュータシステム１０００は、クライアント−サーバのネットワーク環境でサーバマシンもしくはクライアントマシンの能力で、またはピアツーピア（もしくは分散型）のネットワーク環境でピアマシンとして、動作する。本発明の一実施形態では、コンピュータシステム１０００は、ソーシャルネットワーキングシステム９３０、ユーザデバイス９１０、外部システム１０２０もしくはその構成要素であってもよい。本発明の一実施形態では、コンピュータシステム１０００は、ソーシャルネットワーキングシステム９３０の全部または一部を構成する、多くのサーバの中の１つのサーバであってもよい。
【０１０７】
コンピュータシステム１０００は、プロセッサ１００２と、キャッシュ１００４と、コンピュータ可読媒体に記憶され、本明細書に記載のプロセスおよび特徴を対象とする、１または複数の実行形式のモジュールおよびドライバとを含む。さらに、コンピュータシステム１０００は、ハイパフォーマンス入力／出力（Ｉ／Ｏ）バス１００６と、標準Ｉ／Ｏバス１００８とを含む。ホストブリッジ１０１０が、プロセッサ１００２をハイパフォーマンスＩ／Ｏバス１００６に結合するのに対して、Ｉ／Ｏバスブリッジ１０１２は、２つのバス１００６および１００８を互いに結合する。システムメモリ１０１４および１もしくは複数のネットワークインタフェース１０１６は、ハイパフォーマンスＩ／Ｏバス１００６に結合する。コンピュータシステム１０００は、ビデオメモリと、ビデオメモリに結合されたディスプレイデバイス（図示せず）とをさらに含む。マスストレージ１０１８およびＩ／Ｏポート１０２０が、標準Ｉ／Ｏバス１００８に結合される。コンピュータシステム１０００はオプションで、標準Ｉ／Ｏバス１００８に結合された、キーボードおよびポインティングデバイス、ディスプレイデバイス、または他の入／出力デバイス（図示せず）を含む。集合的にこれらの要素は、カリフォルニア州サンタクララのインテル社によって製造されるｘ８６互換プロセッサ、およびカリフォルニア州サニーベールのアドバンストマイクロデバイセズ（ＡＭＤ）社によって製造されるｘ８６互換プロセッサ、ならびにその他の好適なプロセッサに基づくコンピュータシステムを含む、ただしこれらに限定されない、コンピュータハードウェアシステムの広義のカテゴリを表すものとする。
【０１０８】
オペレーティングシステムは、ソフトウェアアプリケーション（図示せず）へのデータの入力およびソフトウェアアプリケーションからのデータの出力を含む、コンピュータシステム１０００の動作を管理し、制御する。オペレーティングシステムは、システム上で実行されているソフトウェアアプリケーションと、システムのハードウェア構成要素との間のインタフェースを提供する。ＬＩＮＵＸオペレーティングシステム、カリフォルニア州クパチーノのアップルコンピュータ社から入手可能なアップル・マキントッシュ・オペレーティングシステム、ＵＮＩＸ（登録商標）オペレーティングシステム、Ｍｉｃｒｏｓｏｆｔ（登録商標）Ｗｉｎｄｏｗｓ（登録商標）オペレーティングシステム、ＢＳＤオペレーティングシステム、その他など、好適なオペレーティングシステムが使用される。他の実装も可能である。
【０１０９】
コンピュータシステム１０００の要素について、以下により詳細に説明する。詳細には、ネットワークインタフェース１０１６は、コンピュータシステム１０００と、イーサネット（例えばＩＥＥＥ  ８０２．３）ネットワーク、バックプレーンなど、広範なネットワークのいずれかとの間の通信を提供する。マスストレージ１０１８は、上記の識別されたそれぞれのコンピューティングシステムによって実装される上述のプロセスおよび特徴を行うためのデータおよびプログラミング命令のための永続的なストレージを提供するのに対して、システムメモリ１０１４（例えば、ＤＲＡＭ）は、プロセッサ１００２によって実行されるとき、データおよびプログラミング命令の一時的なストレージを提供する。Ｉ／Ｏポート１０２０は、コンピュータシステム１０００に結合されるさらなる周辺デバイス間の通信を提供する１または複数のシリアルおよび／またはパラレル通信ポートであってもよい。
【０１１０】
コンピュータシステム１０００は、多様なシステムアーキテクチャを含むことができ、コンピュータシステム１０００の様々な構成要素が、並べ替えられる。例えば、キャッシュ１００４は、プロセッサ１００２とともにオンチップであってもよい。代替として、キャッシュ１００４およびプロセッサ１００２は、「プロセッサモジュール」として１つにまとめられ、プロセッサ１００２が「プロセッサコア」と呼ばれるものであってもよい。さらに、本発明の一実施形態では、上記の構成要素のすべてを必要とするわけではない、または含むわけではない。例えば、標準Ｉ／Ｏバス１００８に結合された周辺デバイスは、ハイパフォーマンスＩ／Ｏバス１００６に結合される。さらに、一実施形態では、単一バスのみが存在し、コンピュータシステム１０００の構成要素は、この単一バスに結合されている。さらに、コンピュータシステム１０００は、追加のプロセッサ、ストレージ、またはメモリなど、追加の構成要素を含む。
【０１１１】
一般的には、本明細書に記載のプロセスおよび特徴は、オペレーティングシステムもしくは特定のアプリケーションの一部、構成要素、プログラム、オブジェクト、モジュール、または「プログラム」と呼ばれる一連の命令として実装される。例えば、１または複数のプログラムは、本明細書に記載の特定のプロセスを実行するように使用される。プログラムは、一般的に、コンピュータシステム１０００中の様々なメモリおよびストレージに１または複数の命令を含み、これが、１または複数のプロセッサによって読み取られ、実行されると、コンピュータシステム１０００に演算を行わせて、本明細書に記載のプロセスおよび特徴を実行する。本明細書に記載のプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア（例えば、特定用途向け集積回路）、またはその任意の組合せで実装される。
【０１１２】
一実施形態では、本明細書に記載のプロセスおよび特徴は、分散コンピューティング環境において個々にまたは集合的に、コンピュータシステム１０００によって実行される一連の実行形式のモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ可読媒体（または、機械可読媒体）に記憶された実行形式のモジュール、または両方の組合せによって実現される。例えば、モジュールは、プロセッサ１００２など、ハードウェアシステム中のプロセッサによって実行される複数のまたは一連の命令を含む。最初に、一連の命令は、マスストレージ１０１８など、ストレージに記憶される。しかしながら、一連の命令は、任意の好適なコンピュータ可読記憶媒体に記憶される。さらに、一連の命令は、ローカルに記憶されることを必要とせず、ネットワーク上のサーバなど、リモートストレージからネットワークインタフェース１０１６を通じて受け取られる。命令は、マスストレージ１０１８など、ストレージからシステムメモリ１０１４にコピーされ、その後、プロセッサ１００２によってアクセスされ、実行される。様々な実施形態では、１つのモジュールまたは複数のモジュールは、並列処理環境における複数のサーバなど、１つ以上の場所にある１つのプロセッサまたは複数のプロセッサによって実行することが可能である。
【０１１３】
コンピュータ可読媒体の例は、揮発性および不揮発性メモリデバイス、ソリッドステートメモリ、フロッピー（登録商標）および他のリムーバブルディスク、ハードディスクドライブ、磁気媒体、光ディスク（例えば、コンパクトディスクリードオンリメモリ（ＣＤ  ＲＯＭＳ）、デジタル多用途ディスク（ＤＶＤ））、他の同様の非一時的（もしくは一時的）、有形（非有形）記憶媒体、または本明細書に記載のプロセスおよび特徴のいずれか１つもしくは複数を実行するためにコンピュータシステム１０００で実行する一連の命令を記憶する、符号化する、もしくは搬送するために適した任意のタイプの媒体など、記録可能なタイプの媒体を含むが、これらに限定されない。
【０１１４】
説明のために、数多くの特定の詳細が、記述内容を十分に理解できるように示されているが、しかしながら、開示の実施形態は、こうした特定の詳細なしで実践される可能性があることは、当業者には明らかであろう。一例では、説明を曖昧にすることを避けるために、モジュール、構造、プロセス、特徴、およびデバイスが、ブロック図形式で示されている。他の例では、データおよび論理のフローを表すために、機能ブロック図およびフローチャートが示される。ブロック図およびフローチャートの構成要素（例えば、モジュール、ブロック、構造、デバイス、特徴など）は、本明細書に明示的に説明し、示した以外の方法で、様々に組み合わされる、分けられる、取り除かれる、再順序付けされる、および再配置される。
【０１１５】
本明細書における「一つの実施形態」、「一実施形態」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「各種実施形態」などへの言及は、この実施形態と関連して説明される特定の特徴、設計、構造、または特性が、本開示の少なくとも一実施形態の中に含まれていることを意味する。本明細書中の様々な場所に、例えば「一実施形態では」、または「一実施形態では」という語句が登場することは、必ずしもすべて同じ実施形態を示しているわけではなく、別個の実施形態または代替の実施形態は、必ずしも他の実施形態を相互に排除しない。さらに、「実施形態」などへの明確な言及があるか否かに関わらず、一実施形態においては様々に組み合わされ、含まれるが、他の実施形態では、様々に省略されることもある、様々な特徴が説明される。同様に、一実施形態には優先または必要条件であるが、他の実施形態ではそうではない可能性がある様々な特徴が説明される。
【０１１６】
本明細書で使用される言語は、主として読みやすさおよび説明の目的のために選択され、発明の主題を詳細に記述するまたは制限するように選択されていない可能性がある。したがって、本発明の範囲は、この詳細な説明によってではなく、むしろ本明細書に基づく出願に際して発行するいずれかの請求項によって限定されることを意図している。したがって、本発明の実施形態の開示は、本発明の範囲を説明するものであるが、本発明の範囲を限定するものであることを意図せず、本発明の範囲は、次の特許請求の範囲に示される。
【図１】
0006453446.tif 000002
【図２】
0006453446.tif 000003
【図３】
0006453446.tif 000004
【図４Ａ】
0006453446.tif 000005
【図４Ｂ】
0006453446.tif 000006
【図４Ｃ】
0006453446.tif 000007
【図５Ａ】
0006453446.tif 000008
【図５Ｂ】
0006453446.tif 000009
【図６Ａ】
0006453446.tif 000010
【図６Ｂ】
0006453446.tif 000011
【図７】
0006453446.tif 000012
【図８】
0006453446.tif 000013
【図９】
0006453446.tif 000014
【図１０】
0006453446.tif 000015