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

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

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

特許6453446デバイスの向きに基づいて機能を提供するためのシステムおよび方法
<>
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000002
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000003
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000004
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000005
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000006
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000007
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000008
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000009
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000010
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000011
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000012
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000013
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000014
  • 特許6453446-デバイスの向きに基づいて機能を提供するためのシステムおよび方法 図000015
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6453446
(24)【登録日】2018年12月21日
(45)【発行日】2019年1月16日
(54)【発明の名称】デバイスの向きに基づいて機能を提供するためのシステムおよび方法
(51)【国際特許分類】
   G06F 3/01 20060101AFI20190107BHJP
   G06F 16/00 20190101ALI20190107BHJP
   G06F 3/0487 20130101ALI20190107BHJP
【FI】
   G06F3/01 570
   G06F17/30 310Z
   G06F17/30 360Z
   G06F3/0487
【請求項の数】19
【全頁数】30
(21)【出願番号】特願2017-510620(P2017-510620)
(86)(22)【出願日】2014年8月29日
(65)【公表番号】特表2017-532641(P2017-532641A)
(43)【公表日】2017年11月2日
(86)【国際出願番号】US2014053590
(87)【国際公開番号】WO2016032534
(87)【国際公開日】20160303
【審査請求日】2017年8月21日
(31)【優先権主張番号】14/472,137
(32)【優先日】2014年8月28日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】508178054
【氏名又は名称】フェイスブック,インク.
(74)【代理人】
【識別番号】100105957
【弁理士】
【氏名又は名称】恩田 誠
(74)【代理人】
【識別番号】100068755
【弁理士】
【氏名又は名称】恩田 博宣
(72)【発明者】
【氏名】ボールドウィン、ロバート マイケル
【審査官】 ▲高▼瀬 健太郎
(56)【参考文献】
【文献】 特開2011−249991(JP,A)
【文献】 特開2014−149860(JP,A)
【文献】 特開2011−053736(JP,A)
【文献】 特開2012−164016(JP,A)
【文献】 米国特許出願公開第2012/0290965(US,A1)
【文献】 欧州特許出願公開第02144139(EP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 3/01
G06F 3/0487
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実施される方法であって、
コンピューティングシステムが、コンピューティングシステムが配置される第1の向きを判定するステップと、
前記コンピューティングシステムが、前記第1の向きに配置されたときに第1の機能を提供するステップと、
前記コンピューティングシステムが、第2の向きに配置されることを判定するステップと、
前記コンピューティングシステムが、前記コンピューティングシステムに関連する現在の状態に基づいて、前記コンピューティングシステムによって提供可能な一組の機能のうちの第2の機能を選択するステップと、ここで、前記第2の機能は、前記第1の機能とは異なり、
前記コンピューティングシステムが、第2の向きに配置されると、第2の機能を提供するステップと
前記コンピューティングシステムが、前記第2の機能の提供に続いて前記第1の向きに配置されると判定するステップと、
前記第2の機能に基づいて第3の機能を選択するステップと、ここで、前記第3の機能は、前記第1および第2の機能とは異なり、
前記コンピューティングシステムが、前記第2の機能の提供に続いて前記第1の向きに配置されると第3の機能を提供するステップとを含む、コンピュータにより実施される方法。
【請求項2】
前記第1の向きは縦向きに対応し、前記第2の向きは横向きに対応する、請求項1に記載のコンピュータにより実施される方法。
【請求項3】
前記コンピューティングシステムに関連する現在の状態は、前記コンピューティングシステム上で動作するアプリケーションに関連する現在のコンテキストを含む、請求項1に記載のコンピュータにより実施される方法。
【請求項4】
前記一組の機能のうちの少なくとも第1の一部がコンテンツ制作に関連付けられ、前記一組の機能のうちの少なくとも第2の一部がコンテンツ消費に関連付けられる、請求項1に記載のコンピュータにより実施される方法。
【請求項5】
前記第1の機能は、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付けられ、前記第2の機能は、投稿に含まれる画像を生成するためのカメラモードに関連付けられる、請求項1に記載のコンピュータにより実施される方法。
【請求項6】
前記第1の機能は、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付けられ、前記第2の機能は、投稿に位置タグを追加すること、投稿にユーザタグを追加すること、投稿に顔認識を適用すること、または投稿にリッチテキスト編集を利用することに関連付けられる、請求項1に記載のコンピュータにより実施される方法。
【請求項7】
前記第1の機能は、第1のビューにおいてコンテンツアイテムにアクセスすることに関連付けられ、前記第2の機能は、第2のビューにおいてコンテンツアイテムにアクセスすることに関連付けられ、前記第2のビューは、第1のビューよりも多くのコンテンツアイテムに関連する情報を提供する、請求項1に記載のコンピュータにより実施される方法。
【請求項8】
前記第1の機能は、金融取引を実行するための機能を含み、前記第2の機能は、領収書、名刺、または感謝を表す通信文のうちの少なくとも1つを提供するための機能を含む、請求項1に記載のコンピュータにより実施される方法。
【請求項9】
前記第1の機能は、受信ボックス内のメッセージにアクセスするための機能を含み、前記第2の機能は、メッセージ、受信ボックス、またはメッセージが一部であるメッセージスレッドのうちの少なくとも1つを提供するための機能を含む、請求項1に記載のコンピュータにより実施される方法。
【請求項10】
前記第1の機能は、ウェブリソースへのリンクを提供するための機能を含み、前記第2の機能は、前記リンクを介して前記ウェブリソースのローディングを開始するための機能を含む、請求項1に記載のコンピュータにより実施される方法。
【請求項11】
前記第1の機能は、第1のビューにおいて第1のコンテンツアイテムにアクセスするための機能を含み、前記第2の機能は、前記第1のコンテンツアイテムと、第2のビューに切り替えて第2のコンテンツアイテムにアクセスするための少なくとも1つのタブとを提供するための機能を含む、請求項1に記載のコンピュータにより実施される方法。
【請求項12】
前記第1の機能は、検索を実行するための機能を含み、前記第2の機能は、前記検索の実行に基づいて一組の結果を提供するための機能を含み、一組の結果を提供することは、少なくとも第1の種類の検索結果に関連する第1の一部の結果と、第2の種類の検索結果に関連する第2の一部の結果とを提供することを含む、請求項1に記載のコンピュータにより実施される方法。
【請求項13】
前記第3の機能は、前記第2の機能に関連付けられたカメラモードで生成され、ソーシャルネットワーキングシステムへの投稿に含まれる画像のローディングを開始することに関連付けられ、投稿の作成は、第1の機能に基づいて開始される、請求項に記載のコンピュータにより実施される方法。
【請求項14】
前記第3の機能は、バック命令、キャンセル命令、無視命令、中止命令、エスケープ命令、または終了命令のうちの少なくとも1つに関連付けられる、請求項に記載のコンピュータにより実施される方法。
【請求項15】
前記コンピューティングシステムが第1の向きに配置された後に第2の向きに配置されると、前記コンピューティングシステムが経験した向きの変化に関連する方向を判定し、前記第2の機能を選択することは方向に基づく、請求項1に記載のコンピュータで実施される方法。
【請求項16】
前記第1の向きまたは前記第2の向きの少なくとも1つは、前記コンピューティングシステムの1つ以上の方位センサに基づいて判定される、請求項1に記載のコンピュータにより実施される方法。
【請求項17】
前記1つ以上の方位センサが、加速度計、ジャイロスコープ、コンパス、気圧計、磁力計、またはモーションプロセッサのうちの少なくとも1つを含む、請求項16に記載のコンピュータにより実施される方法。
【請求項18】
システムであって、
少なくとも1つのプロセッサと、
前記少なくとも1つのプロセッサによって実行されると、前記システムに、
コンピューティングシステムが配置される第1の向きを判定すること、
前記コンピューティングシステムが前記第1の向きに配置されたときに第1の機能を提供すること、
前記コンピューティングシステムが第2の向きに配置されることを判定すること、
前記コンピューティングシステムに関連する現在の状態に基づいて、前記コンピューティングシステムによって提供可能な一組の機能のうちの第2の機能を選択すること、ここで、前記第2の機能は、前記第1の機能とは異なり、
前記コンピューティングシステムが第2の向きに配置されると第2の機能を提供すること
前記コンピューティングシステムが、前記第2の機能の提供に続いて前記第1の向きに配置されると判定すること、
前記第2の機能に基づいて第3の機能を選択すること、ここで、前記第3の機能は、前記第1および第2の機能とは異なり、
前記コンピューティングシステムが、前記第2の機能の提供に続いて前記第1の向きに配置されると第3の機能を提供することを実行させる命令を格納するメモリとを備えるシステム。
【請求項19】
命令を含む非一時的なコンピュータ読み取り可能な記憶媒体であって、前記命令は、コンピューティングシステムの少なくとも1つのプロセッサによって実行されると、前記コンピューティングシステムに、
前記コンピューティングシステムが配置される第1の向きを判定すること、
前記コンピューティングシステムが前記第1の向きに配置されたときに第1の機能を提供すること、
前記コンピューティングシステムが第2の向きに配置されることを判定すること、
前記コンピューティングシステムに関連する現在の状態に基づいて、前記コンピューティングシステムによって提供可能な一組の機能のうちの第2の機能を選択すること、ここで、前記第2の機能は、前記第1の機能とは異なり、
前記コンピューティングシステムが第2の向きに配置されると第2の機能を提供すること
前記コンピューティングシステムが、前記第2の機能の提供に続いて前記第1の向きに配置されると判定すること、
前記第2の機能に基づいて第3の機能を選択すること、ここで、前記第3の機能は、前記第1および第2の機能とは異なり、
前記コンピューティングシステムが、前記第2の機能の提供に続いて前記第1の向きに配置されると第3の機能を提供することを実行させる、非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本技術は、コンピューティングデバイスから機能を提供する分野に関する。より詳細には、本技術は、デバイスの向きに基づいて機能を提供する技術に関する。
【背景技術】
【0002】
今日、さまざまな目的のためにコンピューティングデバイス(またはシステム)を利用することが多い。ユーザは、たとえば、他のユーザとインタラクトしたり、コンテンツにアクセスしたり、コンテンツを共有したり、コンテンツを作成したりするために、コンピューティングデバイスを使用することができる。一例では、ソーシャルネットワーキングシステム(またはサービス)のユーザは、自身のコンピューティングデバイスを利用して、ステータスアップデート、リンク、イメージ、ビデオなどの様々なコンテンツアイテムをソーシャルネットワーキングシステムを介して提供、投稿、共有および様々なコンテンツアイテムにアクセスすることができる。
【0003】
多くの場合、コンピューティングデバイスの表示画面のサイズは制限される。したがって、テキスト、画像、および他のコンテンツは、通常、画面上に表示されるスペースと競合することとなる。従来のアプローチの下では、異なるタイプのコンピューティングデバイスの機能は、表示画面のスペースを無駄に使い切る可能性がある。一例では、テキストボックスなどの入力要素、画像などの視覚化、および表示画面のスペースを必要とする他の機能を提供する従来の手法は、非効率的に実行される可能性がある。このように、従来のアプローチは、コンテンツおよび他のデバイスの機能を提供することに関連する全体的なユーザエクスペリエンスに対して課題を生じさせるか、または低下させることとなる。
【発明の概要】
【0004】
本発明による実施形態は、特に、方法、記憶媒体、システム、およびコンピュータプログラム製品に関する添付の特許請求の範囲に開示されている。1つの請求項のカテゴリ、例えば、方法に記載されている任意の特徴は、他の請求項のカテゴリ、例えば、システムにも請求することができる。添付の請求項に記載された従属性または参照は、形式的な理由のためにのみ選択される。しかしながら、以前の請求項(特に多数項従属)への意図的な参照から生じる主題は、請求項およびその特徴の任意の組み合わせが開示され、かつ添付の特許請求の範囲において選択されている従属関係に関係なく請求することができるように、同様に請求することができる。請求することができる主題は、添付の特許請求の範囲に記載された特徴の組み合わせだけでなく、特許請求の範囲における他の特徴の組み合わせも含む。特許請求の範囲に記載された各特徴は、特許請求の範囲における他の特徴または他の特徴の組み合わせと組み合わせることができる。さらに、本明細書に記載または図示された実施形態および特徴のうちのいずれかは、別個の請求項および/または本明細書に記載または図示された任意の実施形態または特徴または添付の特許請求の範囲のいずれかの特徴との任意の組み合わせにおいて請求することができる。
【0005】
本開示の様々な実施形態は、コンピューティングシステムが配置される第1の向きを判定するように構成されたシステム、方法、および非一時的なコンピュータ可読媒体を含むことができる。第1の機能は、コンピューティングシステムが第1の方向に配置されるときに提供される。コンピューティングシステムが第2の向きに配置されることが判定される。第2の機能は、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能から選択することができる。第2の機能は、コンピューティングシステムが第2の向きに配置されるときに提供される。
【0006】
一実施形態において、第1の向きは縦向きに対応し、第2の向きは横向きに対応することができる。一実施形態において、第1の向きは横向きに対応し、第2の向きは縦向きに対応することができる。
【0007】
一実施形態において、コンピューティングシステムに関連する現在の状態は、コンピューティングシステム上で動作するアプリケーションに関連する現在のコンテキストまたはコンピューティングシステム上で動作するオペレーティングシステムに関連する現在のコンテキストのうちの少なくとも1つを含むことができる。
【0008】
一実施形態において、一組の機能のうちの少なくとも第1の一部をコンテンツ制作に関連付け、一組の機能のうちの少なくとも第2の一部をコンテンツ消費に関連付けることができる。
【0009】
一実施形態において、第1の機能を、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付け、第2の機能を、投稿に含まれる画像を生成するためのカメラモードに関連付けることができる。
【0010】
一実施形態において、第1の機能を、ソーシャルネットワーキングシステム上の投稿を作成するための入力要素に関連付け、第2の機能を、投稿に位置タグを追加すること、投稿にユーザタグを追加すること、投稿に顔認識を適用すること、または投稿にリッチテキスト編集を利用することに関連付けることができる。
【0011】
一実施形態において、第1の機能を、第1のビューにおいてコンテンツアイテムにアクセスすることに関連付け、第2の機能を、第2のビューにおいてコンテンツアイテムにアクセスすることに関連付けることができる。いくつかの例では、第2のビューは、第1のビューよりも多くのコンテンツアイテムに関連する情報を提供することができる。
【0012】
一実施形態において、第1の機能を金融取引に関連付け、第2の機能を、領収書、名刺、または感謝を表す通信文のうちの少なくとも1つを提供することに関連付けることができる。
【0013】
一実施形態において、第1の機能を、受信ボックス内のメッセージにアクセスすることに関連付け、第2の機能を、メッセージ、受信ボックス、またはメッセージが一部であるメッセージスレッドのうちの少なくとも1つを提供することに関連付けることができる。
【0014】
一実施形態において、第1の機能を、第1のビューにおいて第1のコンテンツアイテムにアクセスすることに関連付け、第2の機能を、第1のコンテンツアイテムと、第2のビューに切り替えて第2のコンテンツアイテムにアクセスするための少なくとも1つのタブとを提供することに関連付けることができる。
【0015】
一実施形態において、第1の機能を、検索に関連付け、第2の機能を、検索に基づいて一組の結果を提供することに関連付けることができる。いくつかの例では、一組の結果を提供することは、少なくとも第1の検索結果の種類に関連する第1の一部の結果と、第2の検索結果の種類に関連する第2の一部の結果とを含むことができる。
【0016】
一実施形態において、第1の機能を、ウェブリソースへのリンクを提供することに関連付け、第2の機能を、リンクを介してウェブリソースのローディングを開始することに関連付けることができる。
【0017】
一実施形態において、コンピューティングシステムが第2の機能の提供に続いて第1の向きに配置されると判定することができる。第2の機能に基づいて第3の機能を選択することができる。コンピューティングシステムが第2の機能の提供に続いて第1の向きに配置されると第3の機能を提供することができる。
【0018】
一実施形態において、第3の機能を、第2の機能に関連付けられたカメラモードで生成され、ソーシャルネットワーキングシステムへの投稿に含まれる画像のローディングを開始することに関連付けることができる。いくつかの例では、投稿の作成は、第1の機能に基づいて開始することができる。
【0019】
一実施形態において、第3の機能を、バック命令、キャンセル命令、無視命令、中止命令、エスケープ命令、または終了命令のうちの少なくとも1つに関連付けることができる。
【0020】
一実施形態において、コンピューティングシステムが第1の向きに配置された後に第2の向きに配置されると、コンピューティングシステムが経験した向きの変化に関連する方向を判定することができる。いくつかの例では、第2の機能を選択することは方向に基づく。
【0021】
一実施形態において、第1の向きまたは第2の向きの少なくとも1つは、コンピューティングシステムの1つ以上の方位センサに基づいて判定することができる。
一実施形態において、1つ以上の方位センサが、加速度計、ジャイロスコープ、コンパス、気圧計、磁力計、またはモーションプロセッサのうちの少なくとも1つを含むことができる。
【0022】
本発明によるさらなる実施形態では、1つ以上のコンピュータ可読の非一時的な記憶媒体は、実行時に本発明による方法または上記の実施形態のいずれかを行うように動作可能なソフトウェアを具体化する。
【0023】
本発明によるさらなる実施形態では、システムは、1つ以上のプロセッサと、プロセッサに接続された少なくとも1つのメモリとを含み、メモリは、プロセッサによって実行可能な命令を含み、プロセッサは、命令の実行時に本発明による方法または上述の実施形態のいずれかを行うように動作可能である。
【0024】
本発明によるさらなる実施形態では、好ましくはコンピュータ可読の非一時的な記憶媒体を含むコンピュータプログラム製品は、データ処理システム上で実行されたときに、本発明による方法または上述の実施形態のいずれかを行うように動作可能である。
【0025】
本発明の他の多くの特徴および実施形態は、添付の図面および以下の詳細な説明から明らかとなる。
【図面の簡単な説明】
【0026】
図1】本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な方位依存性機能モジュールを含む例示的なシステムを示す。
図2】本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な機能モジュールを示す。
図3】本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された状態判定モジュールの一例を示す。
図4A】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
図4B】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
図4C】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
図5A】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
図5B】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
図6A】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
図6B】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオを示す。
図7】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法を示す。
図8】本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法を示す。
図9】本開示の一実施形態による、様々なシナリオで利用することができる例示的なシステムのネットワーク図を示す。
図10】本開示の一実施形態による、様々なシナリオで利用することができるコンピューティングシステムの一例を示す。
【0027】
図面は、説明のみのための開示された技術の様々な実施形態を示しており、図面は同様の要素を識別するために同じ参照番号を使用する。当業者は、以下の説明から、本明細書に記載の開示された技術の原理から逸脱することなく、図面に示された構造および方法の代替の実施形態を使用できることを容易に認識するであろう。
【発明を実施するための形態】
【0028】
デバイスの向きに基づく機能の提供
さまざまな目的でコンピューティングデバイス(またはシステム)が使用される。コンピューティングデバイスは、さまざまな種類の機能を提供することができる。ユーザは、コンピューティングデバイスを利用して、記事を書く、写真を撮る、またはビデオを録画するなどによりコンテンツを制作することができる。ユーザは、コンピューティングデバイスを使用して、記事の閲覧、メディアの閲覧、ウェブリソース(例えば、ウェブサイト、オンラインサービスなど)へのアクセスなどによりコンテンツを消費することもできる。一例では、ソーシャルネットワーキングシステム(またはサービス)のユーザは、ソーシャルネットワーキングシステムを介して、自身のコンピューティングデバイスを使用して、他のユーザと通信またはインタラクトすることができるとともに、コンテンツを作成し、コンテンツを提供し、コンテンツを共有し、および/またはコンテンツにアクセスすることができる。
【0029】
従来のアプローチの下では、コンピューティングデバイス上に機能を提供するには、コンピューティングデバイスの表示画面の使用が必要となり得る。したがって、コンピューティングデバイス上に提供される異なるタイプの機能または特徴は、多くの場合、表示画面上の表示スペースを共有しなければならない。しかしながら、コンピューティングデバイスの表示画面上の表示スペースは、多くの場合、制限される。一例では、従来のアプローチは、表示スペースを必要とする機能または特徴を非効率的に提供する可能性がある。
【0030】
したがって、デバイスまたはシステムの機能を提供するための改善されたアプローチは、従来のアプローチに関連する様々な懸案事項に対処するか、または懸案事項を軽減するために有益である。本開示の様々な実施形態は、コンピューティングデバイスまたはコンピューティングシステムの向きに基づいて機能を提供することができる。いくつかの実施形態では、開示された技術は、1つ以上の方位センサを利用して、コンピューティングシステムが配置される第1の向きを判定する。第1の機能は、コンピューティングシステムが第1の向きに配置されるときに提供され得る。コンピューティングシステムが第2の向きに配置されたことが判定される。第2の機能は、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能の中から選択することができる。第2の機能は、コンピューティングシステムが第2の向きに配置されるときに提供される。
【0031】
図1は、本開示の一実施形態による、デバイス(またはシステム)の向きに基づいて機能を提供する役割を果たすように構成された例示的な方位依存性機能モジュール102を含む例示的なシステム100を示す。いくつかの実施形態では、方位依存性機能モジュール102は、方位判定モジュール104、機能モジュール106、および状態判定モジュール108を含む。例示的なシステム100は、少なくとも1つのデータストア110を含む。
【0032】
少なくとも1つのデータストア110は、様々なタイプのデータを格納し維持するように構成される。いくつかの実施形態では、少なくとも1つのデータストア110は、図9のソーシャルネットワーキングシステム930などのソーシャルネットワーキングシステム(またはサービス)に関連する情報を格納することができる。ソーシャルネットワーキングシステムに関連する情報は、ユーザ、ソーシャル接続、ソーシャルインタラクション、位置、地図、プレイス、イベント、グループ、投稿、通信、メディア、コンテンツ、アカウント設定、プライバシ設定についてのデータ、およびその他のタイプのデータを含む。例示的なシステム100に示すように、いくつかの実施形態では、方位依存性機能モジュール102は、少なくとも1つのデータストア110と通信するか、または動作するように構成することができる。
【0033】
さらに、方位判定モジュール104は、コンピューティングシステムが配置される向きを判定する役割を果たすように構成される。開示された技術の他のモジュールと同様に、いくつかの実施形態では、方位判定モジュール104は、ハードウェア、ソフトウェア、またはそれらの任意の組み合わせとして実施され得る。例えば、いくつかの実施形態では、方位判定モジュール104は、1つ以上の方位センサを含む。別の例では、1つ以上の方位センサは、方位判定モジュール104の外部で実施することができるが、コンピューティングシステム上または内部に設けられる。
【0034】
方位判定モジュール104は、1つ以上の方位センサを利用するか、または1つ以上の方位センサと連携して動作して、コンピューティングシステムが配置される向きを判定する。一例では、方位判定モジュール104は、コンピューティングシステムが縦向き(または垂直方向)に配置されていることを判定することができる。一例では、方位判定モジュール104は、コンピューティングシステムが横向き(または水平方向)に配置されていることを判定することができる。さらに、方位判定モジュール104は、コンピューティングシステムが経験する向きの変化を判定することができる。例えば、方位判定モジュール104は、コンピューティングシステムが1つの向きに配置されていたと判定し、かつ別の向きに配置されたと判定することができる。
【0035】
いくつかの実施形態では、1つ以上の方位センサは、加速度計、ジャイロスコープ、コンパス、気圧計、磁力計、モーションプロセッサ(例えば、モーション・コプロセッサ)またはそれらの任意の組合せのうちの少なくとも1つを含むことができるが、これに限定されない。
【0036】
さらに、機能モジュール106は、コンピューティングシステムの向きに基づいて機能を提供する役割を果たすように構成される。一例では、機能モジュール106は、コンピューティングシステムに関連する現在の状態に基づいて機能を提供する役割を果たすように構成される。例えば、機能モジュール106は、コンピューティングシステムに関連付けられた向きおよび/または現在の状態に基づいて、一組の機能の中から選択された機能を提供する。機能モジュール106については、図2を参照してより詳細に説明する。
【0037】
いくつかの実施形態では、コンピューティングシステムに関連する現在の状態は、状態判定モジュール108によって判定され、識別され、取得され、および/または提供され得る。状態判定モジュール108に関するより詳細な説明が、図3を参照して提供される。
【0038】
さらに、いくつかの実施形態では、方位判定モジュール104は、コンピューティングシステムが前の向きに配置されていた後に後の向きに配置されると、コンピューティングシステムが経験した向きの変化に関連する方向を判定する役割を果たす。一例では、コンピューティングシステムによって提供される機能の選択は、方向(例えば、時計回り、反時計回りなど)に基づく。
【0039】
図2は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な機能モジュール202を示す。いくつかの実施形態では、図1の機能モジュール106は、例示的な機能モジュール202として実装することができる。一例では、図2の例に示されるように、例示的な機能モジュール202は、コンテンツ制作モジュール210およびコンテンツ消費モジュール220を含む。
【0040】
上述したように、機能モジュール202は、コンピューティングシステムの向きに基づいて機能を提供する役割を果たすように構成することができる。例えば、機能モジュール202は、コンピューティングシステムが第1の向きにあると判定されたときに少なくとも第1の機能を選択して提供し、コンピューティングシステムが第2の向きにあると判定されたときに少なくとも第2の機能を選択して提供する。一例では、機能モジュール202は、コンピューティングシステムに関連する向きおよび/または現在の状態に基づいて、一組の機能の中から選択された機能を提供するように構成されている。いくつかの例では、一組の機能は、コンテンツの制作に関連する一部の機能だけでなく、コンテンツの消費に関連する別の一部の機能を含むことができる。
【0041】
図2の例では、コンテンツ制作モジュール210は、コンテンツ制作に関連する一部の機能を提供するように構成することができる。コンテンツ制作に関連する一部の機能は、メディア制作機能212、編集機能214、およびローディング機能216を含むが、これに限定されない。多くの変形が可能であることを理解されたい。
【0042】
メディア制作機能212は、メディアコンテンツアイテムの取得、作成、および/または提供に関連付けられる。メディアコンテンツアイテムの例には、画像、ビデオ、オーディオ、および/またはテキストなどが含まれるが、これらに限定されない。一例では、メディア制作機能212は、コンピューティングシステムの1つ以上のキーボード(例えば、仮想キーボード、デジタルキーボードなど)を使用して、ソーシャルネットワーキングシステムにおける状態更新または投稿を制作する機能を含むことができる。別の例では、メディア制作機能212は、コンピューティングシステムの1つ以上のカメラを使用して画像を取り込む機能または画像を録画する機能を含むことができる。
【0043】
編集機能214は、メディアコンテンツアイテムおよび他のコンテンツアイテムなどのコンテンツを展開、修正、および/または改訂することと関連付けられる。一例では、編集機能214は、編集画像、ビデオ、オーディオ、および/またはテキストなどに対応することができる。別の例では、編集機能214は、1つ以上のプロパティまたはメタデータ(例えば、タグ、説明、日付、場所など)を追加または編集することに対応することができる。編集機能214は、例えば、特定のコンテンツアイテムに含まれる1つ以上の顔を検出および/または認識するために特定のコンテンツアイテムに顔認識を適用する機能を含むことができる。さらに、いくつかの例では、編集機能214は、フォントスタイル、フォントサイズ、フォント色、記号などを変更することを含むリッチテキスト編集の機能を含むことができる。
【0044】
ローディング機能216は、制作または提供されたコンテンツをローディングする機能と関連付けられる。いくつかのケースでは、ローディング機能216は、制作または提供された画像、ビデオ、または他のコンテンツアイテムのローディングに対応することができる。例えば、ローディング機能216は、ソーシャルネットワーキングシステムへの投稿の一部として含まれるか、または添付されるべく撮影した画像のローディングを開始することを含むことができる。別の例では、ローディング機能216は、送信されるメッセージの一部として含まれるか、または添付されるべく撮影した画像のローディングを開始することを含むことができる。
【0045】
さらに、図2の例では、コンテンツ消費モジュール220は、コンテンツ消費に関連付けられた一部の機能を提供するように構成される。コンテンツ消費に関連する一部の機能は、情報機能222、タブ機能224、およびローディング機能226を含むことができるが、これに限定されない。また、多くの変形が可能であることを理解されたい。
【0046】
情報機能222は、消費されている(例えば、視聴され、再生され、アクセスされた)コンテンツについての情報を提供するか、そうでなければ関連する情報を提供する機能に対応することができる。いくつかの例では、異なる状況下で異なるタイプおよび/または異なる情報量を提供することができる。例えば、コンピューティングシステムが第1の向きにあるとき、特定の情報を提供することができる。コンピューティングシステムが第2の向きに配置されると、異なる情報を提供することができる。
【0047】
タブ機能224は、コンテンツが消費されるインタフェースをナビゲートするためなど、1つ以上のタブを提供する機能に対応することができる。いくつかの例では、各タブは、消費される個々の組のコンテンツアイテムまたは情報へのアクセスを提供することができる。一例では、ソーシャルネットワーキングシステムのユーザのプロファイルページまたはタイムラインでコンテンツを消費することができる。プロファイルページまたはタイムラインの最初のタブで、ユーザに関する情報にアクセスすることができる。この例では、第2のタブは、ユーザに関連する1つ以上のメディアコンテンツアイテムへのアクセスを提供することができる。第3のタブは、ソーシャルネットワーキングシステム内のユーザの友人またはソーシャル接続についての情報を提供することができる。別の例では、消費されるコンテンツは、検索またはクエリから生成された結果を含むことができる。タブ機能224は、異なるタブを介して異なるタイプの検索結果(例えば、ウェブ結果、画像結果、ニュース結果など)を提供することと関連付けられる。
【0048】
ローディング機能226は、消費されるコンテンツのローディングを開始する機能に対応することができる。一例では、ローディング機能226は、消費される画像、ビデオ、または他のコンテンツアイテムをローディングすることを含むことができる。別の例では、ローディング機能226は、リンクまたはウェブアドレスを介してアクセス可能なウェブリソースをローディングすることと関連付けられる。
【0049】
いくつかの実施形態では、コンテンツ消費に関連するローディング機能226は、コンテンツ制作に関連するローディング機能216と実質的に同じか、または類似していてもよい。いくつかの実施形態では、コンテンツ消費に関連するローディング機能226は、コンテンツ制作に関連するローディング機能216とは異なるものであるか、または別であってもよい。多くの変形が可能であることを理解されたい。
【0050】
図3は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供する役割を果たすように構成された例示的な状態判定モジュール302を示す。いくつかの実施形態では、図1の状態判定モジュール108は、例示的な機能モジュール302として実装することができる。図3の例に示すように、機能モジュール302は、アプリケーションコンテキストモジュール304およびオペレーティングシステムコンテキストモジュール306を含むことができる。
【0051】
上記で説明したように、状態判定モジュール302は、コンピューティングシステムに関連する状態(例えば、現在の状態)を取得、判定、認識、および/または特定するように構成することができる。いくつかの例では、コンピューティングシステムに関連する現在の状態は、コンピューティングシステム上で動作するアプリケーションに関連する現在のコンテキストまたはコンピューティングシステム上で動作するオペレーティングシステムに関連する現在のコンテキストのうちの少なくとも1つを含むことができる。
【0052】
アプリケーションコンテキストモジュール304は、コンピューティングシステム上で動作するアプリケーションに関連するコンテキスト(例えば、現在のコンテキスト)を取得、判定、認識、および/または特定するように構成することができる。アプリケーションに関連する現在のコンテキストは、コンピューティングシステム上で動作するアプリケーションが現在実行しているか、または経験している状態、ステージ、ステップ、プロセス、操作、および/またはタスクを示すことができる。
【0053】
一例では、アプリケーションの現在のコンテキストは、アプリケーションのユーザが現在どのアプリケーションインタフェースまたはその一部とインタラクションしているかを示すことができる。別の例では、アプリケーションの現在のコンテキストは、アプリケーションが現在どの機能(複数の機能)を提供しているかを示すことができる。さらなる例では、アプリケーションの現在のコンテキストは、アプリケーションについての最新の情報をリアルタイム(又は、ほぼリアルタイム)で提供することができる。いくつかの実施形態では、コンピューティングシステムによって提供される1つ以上の機能は、アプリケーションの現在のコンテキストに基づくことができる。
【0054】
オペレーティングシステムコンテキストモジュール306は、コンピューティングシステム上で動作するオペレーティングシステムに関連するコンテキスト(例えば、現在のコンテキスト)を取得、判定、認識、および/または特定するように構成することができる。オペレーティングシステムに関連する現在のコンテキストは、コンピューティングシステム上で動作しているオペレーティングシステムが現在実行しているか、または経験している状態、ステージ、ステップ、プロセス、操作、および/またはタスクを示すことができる。
【0055】
一例では、オペレーティングシステムの現在のコンテキストは、オペレーティングシステムのユーザが現在どのオペレーティングシステムインタフェースまたはその一部を使用しているかを示すことができる。別の例では、オペレーティングシステムの現在のコンテキストは、オペレーティングシステムが現在提供している機能(複数の機能)または特徴(複数の特徴)を示すことができる。さらなる例では、オペレーティングシステムの現在のコンテキストは、リアルタイム(又は、ほぼリアルタイム)でオペレーティングシステムについての最新の情報を提供することができる。いくつかの実施形態では、コンピューティングシステムによって提供される1つ以上の機能は、オペレーティングシステムの現在のコンテキストに基づくことができる。
【0056】
図4Aは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ400を示す。例示的なシナリオ400は、デバイスの向きに基づいて機能を提供するように構成された例示的なコンピューティングデバイスまたはシステム402を含むことができる。
【0057】
例示的なシナリオ400では、コンピューティングシステム402は、表示画面404と、後ろ向きカメラ406などの1つ以上のカメラとを含むことができる。コンピューティングシステム402は、第1の向きに配置することもできる。図示されているように、第1の向きは、縦向き(または垂直)に対応することができる。この例では、第1の向きに配置されている間、コンピューティングシステム402は、表示画面404上に、ソーシャルネットワーキングシステム上の投稿を作成する入力要素(例えば、テキストボックス)408を提供することに対応する第1の機能を提供することができる。
【0058】
図4Bは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ430を示す。図4Bにおいて、図4Aのコンピューティングシステム402は、コンピューティングシステム402が第2の向きに配置されるように、向きの変化を経験したか、または変化を受けている。図4Bに示すように、第2の向きは、横向き(または水平方向)に対応することができる。第2の向きに配置されている間、コンピューティングシステム402は、第2の機能を提供することができる。この例では、第2の機能は、ソーシャルネットワーキングシステム上の投稿に含まれる画像を生成するためのカメラモード410に関連付けられる。例示的なシナリオ430に示されるように、カメラモード410は、表示画面404上に、後ろ向きカメラ406のカメラビューと、投稿に含むことができる画像をキャプチャするか、またはビデオを録画するための他のカメラモードのインタフェース要素を提供することができる。ユーザは、カメラモード410を使用して画像を取り込むことができる。さらに、いくつかの実施形態では、カメラモード410は、コンピューティングシステム402が第2の向きに配置されたときに直ちにまたはほぼ即座にイネーブルにすることができる。例えば、カメラモード410は、コンピューティングシステム402が第2の向きに配置されたことが検出されたときに、直ちにまたはほぼ即座に起動することができる。さらに、いくつかの実施形態では、コンピューティングシステム402は、コンピューティングシステム402が第2の向きにあるときに開始、起動、または有効化され得るカメラモード410において1つ以上の画像を自動的にキャプチャすることができる。
【0059】
図4Cは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ460を示す。例示的なシナリオ460は、図4Bのコンピューティングシステム402が、コンピューティングシステム402が縦向きに対応する第1の向きに戻るように、別の向きの変化を経験したか、または変化を受けたことを示している。カメラモード(第2の機能)において画像を取り込んだ後に第1の向きに戻ると、コンピューティングシステム402は、第3の機能を選択して提供することができる。この例では、画像がカメラモードにおいて以前に取り込まれているので(第2の機能)、第3の機能は、ソーシャルネットワーキングシステムへの投稿への組み入れまたは添付412のための画像のローディングを開始することに対応するように選択することができる。
【0060】
さらに、多くの変形が可能であることを理解されたい。一例では、第1の機能は、コンピューティングシステムが第1の向きに配置されているときに提供され、第1の機能は、上述したように、ソーシャルネットワーキングシステムのための投稿を作成する入力要素408に関連付けられる。図4Aに示すように、より多くの表示スペースを必要とする付加的な機能または特徴を効率的に、効果的に、または快適に提供するために、表示画面404上には制限された表示スペースが存在し得る。この例では、明示的に図示されていないが、第2の向きで提供される第2の機能は、投稿に位置タグを追加するオプション、投稿にユーザタグを追加するオプション、投稿に顔認識を適用するオプション、投稿に対してリッチテキスト編集を利用するオプションのうちの少なくとも1つを選択することができる。
【0061】
図5Aは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ500を示す。例示的なシナリオ500は、表示画面504を含む例示的なコンピューティングデバイスまたはシステム502を含む。コンピューティングシステム502は、縦向きなどの第1の向きにある間、第1の機能を提供することができる。この例示的なシナリオ500では、第1の機能は、表示画面504上の第1のビュー506においてコンテンツアイテム(例えば、ピザの画像)にアクセスすることと関連付けられる。
【0062】
図5Bは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ550を示す。例示的なシナリオ550は、図5Aのコンピューティングシステム502が、第1の向きから第2の向き、例えば横向きへの向きの変化を経験したことを示している。コンピューティングシステム502が第2の向きにある間に、第2の機能を提供することができる。この例示的なシナリオ550では、第2の機能は、第2のビュー508においてコンテンツアイテム(例えば、ピザの画像)にアクセスすることと関連付けられる。図示されるように、第2のビュー508は、第1のビュー506よりも多くのコンテンツアイテムに関連する情報を提供することができる。例えば、第2のビュー508は、コンテンツアイテムのより大きなビューを提供することができる。さらに、第2のビュー508は、コンテンツアイテムに関連付けられたプロパティおよび/またはメタデータ(例えば、コメント、いいね、など)510を提供することができる。
【0063】
ここでも、多くの変形が可能であることを理解されたい。一例では、第1の機能を金融取引に関連付けることができ、第2の機能を、領収書、名刺、または感謝を表す通信文(例えば、「ありがとうございます」メモ)のうちの少なくとも1つを提供することと関連付けることができる。別の例では、第1の機能を、受信ボックス内のメッセージにアクセスすることと関連付けることができ、第2の機能を、メッセージ、受信ボックス、またはメッセージが一部であるメッセージスレッドのうちの少なくとも1つを提供することと関連付けることができる。さらなる例では、第1の機能を、ウェブリソースへのリンクを提供することと関連付け、第2の機能を、リンクを介してウェブリソースのローディングを開始すること(例えば、ウェブリソースを提示するためにリンクにアクセスすること)と関連付けることができる。
【0064】
図6Aは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ600を示す。例示的なシナリオ600は、表示画面604を有する例示的なコンピューティングシステム602を含む。コンピューティングシステム602は、縦向きのような第1の向きの間に第1の機能を提供することができる。この例示的なシナリオ600では、第1の機能は、第1のビュー606において第1のコンテンツアイテム(例えば、木の画像)にアクセスすることと関連付けられる。
【0065】
図6Bは、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的なシナリオ650を示す。例示的なシナリオ650は、図6Aのコンピューティングシステム602が、第1の向きから第2の向き、例えば横向きへの向きの変化を経験したことを示している。コンピューティングシステム602が第2の向きにある間に、第2の機能を提供することができる。この例示的なシナリオ650では、第2の機能を、表示画面604上に第1のコンテンツアイテム(例えば、木の画像)と、第2のビューに切り替えて第2のコンテンツアイテムにアクセスするための少なくとも1つのタブ608とを提供することに関連付けることができる。
【0066】
さらに、明示的に図示されていないが、いくつかの実施形態では、第1の機能を検索に関連付けることができ、第2の機能を検索に基づいて一組の結果を提供することと関連付けることができる。一組の結果の提供は、少なくとも第1の検索結果の種類に関連する第1の一部の結果と、第2の検索結果の種類に関連する第2の一部の結果とを提供することを含むことができる。いくつかの例では、第2の機能と併せて、一部の間で切り替えるための1つ以上のタブを提供することができる。多くの他の可能性および変形が存在し得ることを理解されたい。
【0067】
図7は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法700を示す。別段の記載がない限り、様々な実施形態の範囲内で、類似のまたは代替の順序で、または並行して実行される、追加の、より少ない、または代替のステップが存在し得ることを理解されたい。
【0068】
ブロック702において、例示的な方法700は、コンピューティングシステムが配置される第1の向きを判定する。一例では、第1の向きは、縦向き、または代替的に横向きを含むことができる。ブロック704において、例示的な方法700は、コンピューティングシステムが第1の向きに配置されたときに第1の機能を提供する。
【0069】
ブロック706において、例示的な方法700は、コンピューティングシステムが第2の向きに配置されることを判定する。方法700は、コンピューティングシステムが経験する向きの変化を検出し、その結果、コンピューティングシステムは第1の向きではなく第2の向きに配置される。例えば、例示的な方法700は、コンピューティングシステムが、縦向きであることに続いて横向きに配置されることを判定するか、または代替的にコンピューティングシステムが横向きに続いて縦向きに配置される。
【0070】
ブロック708において、例示的な方法700は、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能から第2の機能を選択する。いくつかの例では、コンピューティングシステムに関連する現在の状態は、コンピューティングシステム上で動作するアプリケーションおよび/またはオペレーティングシステムの現在のコンテキストを含む。ブロック710において、例示的な方法700は、コンピューティングシステムが第2の向きに配置されると第2の機能を提供する。
【0071】
図8は、本開示の一実施形態による、デバイスの向きに基づいて機能を提供することに関連する例示的な方法800を示す。ここでも、別段の記載がない限り、様々な実施形態の範囲内で、類似のまたは代替の順序で、または並行して実行される、追加の、より少ない、または代替のステップが存在し得ることを理解されたい。
【0072】
ブロック802において、例示的な方法800は、コンピューティングシステムが第2の機能の提供に続いて第1の向きに配置されることを判定する。ブロック804において、例示的な方法800は、第2の機能に基づいて第3の機能を選択する。ブロック806において、例示的な方法800は、コンピューティングシステムが第2の機能の提供に続いて第1の向きに配置されると第3の機能を提供する。
【0073】
いくつかの実施形態では、第3の機能は、ソーシャルネットワーキングシステムへの投稿に含まれる、第2の機能に関連するカメラモードで生成された画像のローディングを開始することと関連付けられる。いくつかの例では、第1の機能に基づいて投稿の作成を開始することができる。例えば、コンピューティングシステムが第1の向きにあったときに提供された第1の機能の一部として投稿を作成することができる。コンピューティングシステムが第2の向きにあったとき、第2の機能の一部として提供されたカメラモードで画像を生成することができる。第3の機能の一部として、画像は、コンピューティングシステムが第1の向きに戻ったときに、投稿への組み入れまたは添付としてローディングすることができる。
【0074】
さらに、いくつかの実施形態では、第3の機能を、バック命令、キャンセル命令、無視命令、中止命令、エスケープ命令、または終了命令のうちの少なくとも1つに関連付けることができる。いくつかの例では、第3の機能をデフォルトおよび/またはユーザによって設定することができる。
【0075】
さらに、いくつかの実施形態では、コンテンツ消費に関連する1つ以上の機能およびコンテンツ制作に関連する1つ以上の機能を、別々にまたは任意の組み合わせで提供することができる。
【0076】
ここでも、本開示の様々な実施形態に関連する多くの他の用途、アプリケーション、および/または変形が存在し得ると考えられる。例えば、本開示の様々な実施形態は、学習、改善、および/または経時的に洗練され得る。
【0077】
ソーシャルネットワーキングシステム−実施例
図9は、本開示の一実施形態による、強化されたビデオ符号化のための様々な実施形態において利用可能な例示的なシステム900のネットワーク図を示す。システム900は、1つ以上のユーザデバイス910、1つ以上の外部システム920、ソーシャルネットワーキングシステム(またはサービス)930、およびネットワーク950を含む。一実施形態では、ソーシャルネットワーキングサービス、プロバイダ、および/上述した実施形態と関連して説明されたシステムは、ソーシャルネットワーキングシステム930として具体化されてもよい。説明のために、図9で示すシステム900の実施形態は、単一外部システム920および単一ユーザデバイス910を含む。しかしながら、他の実施形態では、システム900は、より多くのユーザデバイス910および/またはより多くの外部システム920を含むことがあり、一実施形態では、ソーシャルネットワーキングシステム930は、ソーシャルネットワークプロバイダによって運営されるが、外部システム920は、それらが異なるエンティティによって運営されるという点において、ソーシャルネットワーキングシステム930から切り離されている。しかしながら様々な実施形態では、ソーシャルネットワーキングシステム930および外部システム920は、連携して動作して、ソーシャルネットワーキングシステム930のユーザ(メンバ)にソーシャルネットワーキングサービスを提供する。この場合、ソーシャルネットワーキングシステム930は、プラットフォームまたはバックボーンを提供し、外部システム920などの他のシステムがこれを使用して、インターネット全域に亘ってユーザにソーシャルネットワーキングサービスおよび機能を提供する。
【0078】
ユーザデバイス910は、ユーザからの入力を受け取り、ネットワーク950を通じてデータを送受信する1または複数のコンピューティングデバイスを含む。一実施形態では、ユーザデバイス910は、例えば、Microsoft Windows(登録商標)互換のオペレーティングシステム(OS)、Apple OS X、および/またはLinux(登録商標)ディストリビューションを実行する従来のコンピュータシステムである。別の実施形態では、ユーザデバイス910は、スマートフォン、タブレット、携帯情報端末(PDA)、携帯電話など、コンピュータ機能を有するデバイスであってもよい。ユーザデバイス910は、ネットワーク950を通じて通信するように構成される。ユーザデバイス910は、アプリケーション、例えばユーザデバイス910のユーザがソーシャルネットワーキングシステム930と対話できるようにするブラウザアプリケーションを、実行する。別の実施形態では、ユーザデバイス910は、iOS4およびANDROID(登録商標)など、ユーザデバイス910の固有のオペレーティングシステムによって提供されるアプリケーションプログラミングインタフェース(API)を通じてソーシャルネットワーキングシステム930と対話する。ユーザデバイス910は、外部システム920およびソーシャルネットワーキングシステム930と、ネットワーク950を通じて通信するように構成され、ネットワーク950は、有線および/または無線通信システムを使用した、ローカルエリアネットワークおよび/またはワイドエリアネットワークの任意の組合せを含む。
【0079】
一実施形態では、ネットワーク950は、通信標準技術および標準プロトコルを使用する。したがって、ネットワーク950は、イーサネット(登録商標)、702.11、ワールドワイドインターオペラビリティフォーマイクロウェーブアクセス(worldwide interoperability for microwave access:WiMAX)、3G、4G、CDMA、GSM(登録商標)、LTE、デジタル加入者線(DSL)などの技術を使用するリンクを含む。同様に、ネットワーク950で使用されるネットワーキングプロトコルは、マルチプロトコルラベルスイッチング(MPLS)、伝送制御プロトコル/インターネットプロトコル(TCP/IP)、ユーザデータグラムプロトコル(UDP)、ハイパーテキスト転送プロトコル(HTTP)、簡易メール転送プロトコル(SMTP)、ファイル転送プロトコル(FTP)などを含む。ネットワーク950を通じて交換されるデータは、ハイパーテキストマークアップ言語(HTML)、および拡張マークアップ言語(XML)を含む技術および/または形式を使用して表される。さらに、すべてまたは一部のリンクは、セキュアソケットレイヤ(SSL)、トランスポート層セキュリティ(TLS)、およびインターネットプロトコルセキュリティ(IPsec)などの従来の暗号化技術を使用して暗号化される。
【0080】
一実施形態では、ユーザデバイス910は、ブラウザアプリケーション912を使用して外部システム920からおよびソーシャルネットワーキングシステム930から受信されたマークアップ言語ドキュメント914を処理することによって、外部システム920から、および/またはソーシャルネットワーキングシステム930から、コンテンツを表示する。マークアップ言語ドキュメント914は、コンテンツおよびコンテンツの形式もしくは体裁(presentation)を記述する1もしくは複数の命令を識別する。マークアップ言語ドキュメント914に含まれている命令を実行することによって、ブラウザアプリケーション912は、マークアップ言語ドキュメント914によって記述される形式または体裁を使用して識別されたコンテンツを表示する。例えば、マークアップ言語ドキュメント914は、外部システム920およびソーシャルネットワーキングシステム930から取り出されたテキストおよび/または画像データを含む複数のフレームを有するウェブページを生成し、表示するための命令を含む。様々な実施形態では、マークアップ言語ドキュメント914は、拡張マークアップ言語(XML)データ、拡張ハイパーテキストマークアップ言語(XHTML)データ、または他のマークアップ言語データを含むデータファイルを含む。さらに、マークアップ言語ドキュメント914は、JavaScript(登録商標)オブジェクト表記法:JSON(JavaScriptObject Notation)データ、JSONP(JSON with padding)、およびJavaScriptデータを含んで、外部システム920とユーザデバイス910との間のデータ交換を容易にする。ユーザデバイス910上のブラウザアプリケーション912は、JavaScriptコンパイラを使用して、マークアップ言語ドキュメント914をデコードする。
【0081】
マークアップ言語ドキュメント914は、FLASH(商標)アプリケーションもしくはUnity(商標)アプリケーション、SilverLight(商標)アプリケーションフレームワークなどの、アプリケーションまたはアプリケーションフレームワークもまた含む、またはこれにリンクする。
【0082】
一実施形態では、ユーザデバイス910はまた、ユーザデバイス910のユーザがソーシャルネットワーキングシステム930にログインしているか否かを示すデータを含む1または複数のクッキー916を含み、これにより、一実施形態では、ソーシャルネットワーキングシステム930からユーザデバイス910に伝達されるデータの修正が可能になる。
【0083】
外部システム920は、1または複数のウェブページ922a、922bを含む1または複数のウェブサーバを含み、これらはネットワーク950を使用してユーザデバイス910に伝達される。外部システム920は、ソーシャルネットワーキングシステム930から切り離されている。例えば、外部システム920は、第1のドメインと関連付けられ、ソーシャルネットワーキングシステム930は、別個のソーシャルネットワーキングドメインと関連付けられる。外部システム920に含まれるウェブページ922a、922bは、コンテンツを識別する、および識別されたコンテンツの形式または体裁を指定する命令を含むマークアップ言語ドキュメント914を含む。
【0084】
ソーシャルネットワーキングシステム930は、複数のユーザを含むソーシャルネットワークのための1または複数のコンピューティングデバイスを含み、ソーシャルネットワークのユーザにソーシャルネットワークの他のユーザと通信し、対話する能力を提供する。一例では、ソーシャルネットワークは、グラフ、すなわちエッジおよびノードを含むデータ構造によって表される。データベース、オブジェクト、クラス、メタ要素、ファイル、またはその他のデータ構造など、ただしこれらに限らない、他のデータ構造が使用されて、ソーシャルネットワークを表す。ソーシャルネットワーキングシステム930は、オペレータによって運営、管理、または制御されてもよい。ソーシャルネットワーキングシステム930のオペレータは、ソーシャルネットワーキングシステム930内でコンテンツを管理し、ポリシーを調整し、使用メトリクスを収集するための人間、自動化アプリケーション、または一連のアプリケーションであってもよい。任意のタイプのオペレータを使用することができる。
【0085】
ユーザが、ソーシャルネットワーキングシステム930に参加し、その後、ユーザが接続されたいと思うソーシャルネットワーキングシステム930の任意の数の他のユーザへの接続を追加する。本明細書で使用する「友達」という用語は、ユーザがソーシャルネットワーキングシステム930を通じて接続、関連付け、または関係を形成したソーシャルネットワーキングシステム930の任意の他のユーザを示す。例えば、一実施形態では、ソーシャルネットワーキングシステム930におけるユーザが、ソーシャルグラフ中のノードとして表される場合、「友達」という用語は、2つのユーザノードの間に形成され、これらを直接接続するエッジを指す。
【0086】
つながりは、ユーザによって明示的に追加されてもよく、または、ユーザの共通の特徴(例えば、同じ教育機関の卒業生であるユーザ)に基づいてソーシャルネットワーキングシステム930によって自動的に作成されてもよい。例えば、具体的には第1のユーザが、特定の他のユーザを友達となるように選択する。ソーシャルネットワーキングシステム930におけるつながりは、通常両方向であるが、両方向である必要はなく、したがって「ユーザ」および「友達」という用語は、参照構造によって決まる。ソーシャルネットワーキングシステム930のユーザ間のつながりは、通常双方向(「2方向」)または「相互」であるが、つながりは、片方向、または「1方向」であってもよい。例えば、ボブおよびジョーがともにソーシャルネットワーキングシステム930のユーザであり、互いに接続されている場合、ボブおよびジョーは、互いのつながりである。一方、ボブが、ソーシャルネットワーキングシステム930に伝達されたデータを閲覧するためにジョーにつながることを希望するが、ジョーが相互のつながりを形成することを望まない場合、片方向のつながりが確立される。ユーザ間のつながりは、直接のつながりであってもよいが、ソーシャルネットワーキングシステム930の一実施形態は、つながりの1もしくは複数のレベルまたは分離度により、つながりが間接的であることを可能にする。
【0087】
ユーザ間のつながりを確立し、維持すること、ユーザ間の対話を可能にすることに加えて、ソーシャルネットワーキングシステム930は、ソーシャルネットワーキングシステム930によってサポートされる様々なタイプのアイテムにアクションを行う能力をユーザに提供する。これらのアイテムは、ソーシャルネットワーキングシステム930のユーザが所属するグループもしくはネットワーク(すなわち、人、エンティティ、およびコンセプトのソーシャルネットワーク)、ユーザが関心を持っている可能性のあるイベントもしくはカレンダエントリ、ユーザがソーシャルネットワーキングシステム930を通じて使用するコンピュータベースのアプリケーション、ソーシャルネットワーキングシステム930によって、もしくはこれを通じて提供されるサービスを通じてユーザがアイテムを売買できるようにする取引、およびユーザがソーシャルネットワーキングシステム930上で、またはソーシャルネットワーキングシステム930から離れて行う広告との対話を含む。これらは、ソーシャルネットワーキングシステム930上でユーザが作用するアイテムのごく少数の例であり、多くの他のアイテムが想定される。ユーザは、ソーシャルネットワーキングシステム930において、またはソーシャルネットワーキングシステム930から分離した、もしくはネットワーク950を通じてソーシャルネットワーキングシステム930に結合された外部システム920において表される任意のものと対話する。
【0088】
ソーシャルネットワーキングシステム930は、様々なエンティティ同士をリンクさせることもできる。例えば、ソーシャルネットワーキングシステム930によって、ユーザ同士が互いに対話することができ、またAPI、ウェブサービス、または他の通信チャネルを通じて外部システム920および他のエンティティと対話することができる。ソーシャルネットワーキングシステム930は、複数のエッジによって相互接続された複数のノードを含む「ソーシャルグラフ」を生成し、維持する。ソーシャルグラフ中の各ノードは、別のノードに作用する、および/または別のノードによって作用される可能性があるエンティティを表す。ソーシャルグラフは、様々なタイプのノードを含む。ノードのタイプの例は、ソーシャルネットワーキングシステム930においてオブジェクトによって表される、ユーザ、人間以外のエンティティ、コンテンツアイテム、ウェブページ、グループ、アクティビティ、メッセージ、コンセプト、およびその他のものを含む。ソーシャルグラフ中の2つのノード間のエッジは、その2つのノード間の特定の種類のつながり、または関連付けを表すことができ、これは、ノード関係から、またはノードの一方によって他方のノードに行われたアクションから生じる。場合によっては、ノード間のエッジは、重み付けされる。エッジの重みは、ノード間のつながりまたは関連付けの強さなど、エッジと関連付けられた属性を表す。様々なタイプのエッジが、様々な重みとともに提供される。例えば、あるユーザが別のユーザに対して「いいね」と表明する(likes)とき作成されるエッジに、ある重みを付けることができ、ユーザが別のユーザと友達になるとき作成されるエッジに、異なる重みを付ける。
【0089】
例として、第1のユーザが第2のユーザを友達として識別するとき、ソーシャルグラフ中のエッジが、第1のユーザを表すノードおよび第2のユーザを表す第2のノードをつなげて生成される。様々なノードが、互いに関係するか、または対話するとき、ソーシャルネットワーキングシステム930は、様々なノードをつなぐエッジを修正して、関係および対話を反映する。
【0090】
ソーシャルネットワーキングシステム930は、ユーザが生成したコンテンツも含み、ソーシャルネットワーキングシステム930とのユーザ対話を向上させる。ユーザが生成したコンテンツは、ユーザがソーシャルネットワーキングシステム930に追加する、アップロードする、送信する、または「投稿する」任意のものを含む。例えば、ユーザは、ユーザデバイス910からソーシャルネットワーキングシステム930に投稿を伝達する。投稿は、ステータス更新などのデータもしくは他のテキストデータ、位置情報、写真などの画像、映像、リンク、音楽、または同様のデータおよび/または媒体を含む。コンテンツは、サードパーティによってソーシャルネットワーキングシステム930に追加されることも可能である。コンテンツ「アイテム」は、ソーシャルネットワーキングシステム930中のオブジェクトとして表される。このように、ソーシャルネットワーキングシステム930のユーザは、様々な通信チャネルを通じて様々なタイプの媒体のテキストおよびコンテンツアイテムを投稿することによって互いと通信するよう推奨される。このような通信が、互いとのユーザ対話を増加させ、ユーザがソーシャルネットワーキングシステム930と対話する頻度を増加させる。
【0091】
ソーシャルネットワーキングシステム930は、ウェブサーバ932と、APIリクエストサーバ934と、ユーザプロファイルストア936と、つながりストア938と、アクションロガー940と、アクティビティログ942と、認可サーバ944とを含む。本発明の一実施形態では、ソーシャルネットワーキングシステム930は、様々なアプリケーションに対して、追加の構成要素、より少ない構成要素、または異なる構成要素を含む。システムの詳細を曖昧にしないように、ネットワークインタフェース、セキュリティ機構、ロードバランサ、フェイルオーバサーバ、管理およびネットワークオペレーションコンソールなどの他の構成要素は、示されていない。
【0092】
ユーザプロファイルストア936は、経歴、人口統計、および他のタイプの記述的情報、例えば、ユーザによって公表された、またはソーシャルネットワーキングシステム930によって推論された、職歴、学歴、趣味もしくは好み、所在地などを含む、ユーザアカウントに関する情報を維持する。この情報は、各ユーザが一意に識別されるように、ユーザプロファイルストア936に記憶される。ソーシャルネットワーキングシステム930はまた、様々なユーザ間の1または複数のつながりを記述するデータをつながりストア938に記憶する。つながり情報は、同様または共通の職歴、グループメンバシップ、趣味、または学歴を有するユーザを示す。さらに、ソーシャルネットワーキングシステム930は、様々なユーザ間にユーザ定義のつながりを含み、ユーザが他のユーザとの関係を指定できるようにする。例えば、ユーザ定義のつながりによって、ユーザは、友達、同僚、パートナなど、ユーザの現実生活の関係に匹敵する他のユーザとの関係を生成できる。ユーザは、予め定義されたつながりタイプから選択するか、または必要に応じてユーザ自身のつながりタイプを定義する。ソーシャルネットワーキングシステム930の他のノードとのつながり、例えば人間以外のエンティティ、バケット、クラスタセンタ、画像、関心、ページ、外部システム、コンセプトなどもまた、つながりストア938に記憶される。
【0093】
ソーシャルネットワーキングシステム930は、ユーザが対話するオブジェクトに関するデータを維持する。このデータを維持するために、ユーザプロファイルストア936およびつながりストア938は、ソーシャルネットワーキングシステム930によって維持されるオブジェクトの対応するタイプのインスタンスを記憶する。各オブジェクトタイプは、オブジェクトのタイプに適切な情報を記憶するために適した情報フィールドを有する。例えば、ユーザプロファイルストア936は、ユーザのアカウントおよびユーザのアカウントに関係する情報を記述するために適したフィールドを有するデータ構造を含む。特定のタイプの新しいオブジェクトが作成されるとき、ソーシャルネットワーキングシステム930は、対応するタイプの新しいデータ構造を初期化し、これに一意のオブジェクト識別子を割り当て、必要に応じてオブジェクトにデータを追加し始める。これは、例えば、ユーザがソーシャルネットワーキングシステム930のユーザになるとき行われることが可能であり、ソーシャルネットワーキングシステム930は、ユーザプロファイルストア936にユーザプロファイルの新しいインスタンスを生成し、ユーザアカウントに一意の識別子を割り当て、ユーザによって提供される情報によりユーザアカウントのフィールドを初期設定し始める。
【0094】
つながりストア938は、他のユーザに対するユーザのつながり、外部システム920に対するつながり、または他のエンティティに対するつながりを記述するのに適したデータ構造を含む。つながりストア938は、つながりタイプをユーザのつながりと関連付けることもでき、これは、ユーザに関する情報へのアクセスを規制するためにユーザのプライバシ設定と併せて使用される。本発明の一実施形態では、ユーザプロファイルストア936およびつながりストア938は、連合データベースとして実装される。
【0095】
つながりストア938、ユーザプロファイルストア936、およびアクティビティログ942に記憶されたデータにより、ソーシャルネットワーキングシステム930は、様々なオブジェクトを識別するノード、およびノード同士を接続するエッジを使用して、様々なオブジェクト間の関係を識別するソーシャルグラフを生成する。例えば、ソーシャルネットワーキングシステム930において、第1のユーザが第2のユーザとつながりを確立する場合、ユーザプロファイルストア936からの第1のユーザおよび第2のユーザのユーザアカウントが、ソーシャルグラフにおいてノードとしての役割を担う。つながりストア938によって記憶された第1のユーザと第2のユーザとのつながりは、第1のユーザおよび第2のユーザと関連付けられたノード間のエッジである。この例を続けると、ソーシャルネットワーキングシステム930中で、第2のユーザは、その後第1のユーザにメッセージを送信する。メッセージを送信するアクション(記憶されてもよい)は、第1のユーザおよび第2のユーザを表しているソーシャルグラフ中の2つのノード間の別のエッジである。さらに、メッセージ自体は、第1のユーザおよび第2のユーザを表すノードに接続された別のノードとしてソーシャルグラフにおいて識別され、含められる。
【0096】
別の例では、ソーシャルネットワーキングシステム930によって維持される画像中に(代替として、ソーシャルネットワーキングシステム930の外部の別のシステムによって維持される画像中に)第1のユーザが第2のユーザをタグ付けする画像自体が、ソーシャルネットワーキングシステム930中のノードとして表される。このタグ付けアクションは、第1のユーザと第2のユーザとの間のエッジを作成するとともに、ソーシャルグラフ中のノードであるユーザのそれぞれと画像との間のエッジを作成する。さらに別の例では、ユーザがイベントに参加することを確認する場合、ユーザおよびイベントは、ユーザプロファイルストア936から取得されるノードであり、イベントの参加は、アクティビティログ942から検索されるノード間のエッジである。ソーシャルグラフを生成し維持することによって、ソーシャルネットワーキングシステム930は、多くの様々なタイプのオブジェクト、およびそれらオブジェクト間の対話およびつながりを記述するデータを含み、これらは、ソーシャル(ネットワーク)的に関係する情報の豊富なソースを提供する。
【0097】
ウェブサーバ932は、ネットワーク950を通じて1もしくは複数のユーザデバイス910および/または1もしくは複数の外部システム920に、ソーシャルネットワーキングシステム930をリンクさせる。ウェブサーバ932は、ウェブページと同様に、Java(登録商標)、JavaScript、Flash、XMLなど、他のウェブ関係コンテンツを供給する。ウェブサーバ932は、メールサーバまたはソーシャルネットワーキングシステム930と1または複数のユーザデバイス910との間でメッセージを受信し、ルーティングするための他のメッセージング機能を含む。メッセージは、インスタントメッセージ、キューに入れられたメッセージ(例えば、電子メール)、テキストおよびSMSメッセージ、または任意の他の好適なメッセージング形式であってもよい。
【0098】
APIリクエストサーバ934により、1または複数の外部システム920およびユーザデバイス910は、1または複数のAPI機能を呼び出すことによって、ソーシャルネットワーキングシステム930からアクセス情報を呼び出す。またAPIリクエストサーバ934により、外部システム920はAPIを呼び出すことによって、ソーシャルネットワーキングシステム930に情報を送信することもある。一実施形態では外部システム920は、ネットワーク950を通じてソーシャルネットワーキングシステム930にAPI要求を送信し、APIリクエストサーバ934は、API要求を受信する。APIリクエストサーバ934は、API要求と関連付けられたAPIを呼び出すことによって要求を処理して適切な応答を生成し、これをAPIリクエストサーバ934は、ネットワーク950を通じて外部システム920に伝達する。例えば、API要求に応答して、APIリクエストサーバ934は、外部システム920にログインしたユーザのつながりなど、ユーザと関連付けられたデータを収集し、収集したデータを外部システム920に伝達する。別の実施形態では、ユーザデバイス910は、外部システム920と同様の方法でAPIを通じてソーシャルネットワーキングシステム930と通信する。
【0099】
アクションロガー940は、ソーシャルネットワーキングシステム930上のおよび/またはソーシャルネットワーキングシステム930の外部のユーザアクションに関するウェブサーバ932からの通信を受信する。アクションロガー940は、アクティビティログ942をユーザアクションに関する情報で設定し、ソーシャルネットワーキングシステム930が、ソーシャルネットワーキングシステム930内で、およびソーシャルネットワーキングシステム930の外部で、そのユーザによって行われた様々なアクションを探索できるようにする。ソーシャルネットワーキングシステム930上の別のノードに対して特定のユーザが行ういずれのアクションも、アクティビティログ942に、または同様のデータベースもしくは他のデータリポジトリに維持されている情報を通じて、各ユーザのアカウントと関連付けられる。識別され記憶される、ソーシャルネットワーキングシステム930内のユーザによって行われるアクションの例は、例えば、別のユーザへのつながりを追加すること、別のユーザへのメッセージを送信すること、別のユーザからのメッセージを読むこと、別のユーザと関連付けられたコンテンツを閲覧すること、別のユーザによって投稿されたイベントに参加すること、画像を投稿すること、画像の投稿を試みること、または別のユーザもしくは別のオブジェクトと対話する他のアクションを含む。ユーザがソーシャルネットワーキングシステム930内でアクションを行うとき、アクションは、アクティビティログ942に記録される。一実施形態では、ソーシャルネットワーキングシステム930は、エントリのデータベースとしてアクティビティログ942を維持する。ソーシャルネットワーキングシステム930内でアクションが行われるとき、そのアクションのためのエントリは、アクティビティログ942に追加される。アクティビティログ942は、アクションログと呼ばれてもよい。
【0100】
さらに、ユーザアクションは、ソーシャルネットワーキングシステム930以外の外部システム920など、ソーシャルネットワーキングシステム930外のエンティティ内で発生するコンセプトおよびアクションと関連付けられる。例えば、アクションロガー940は、ウェブサーバ932から、外部システム920とのユーザ対話を記述したデータを受信する。この例では、外部システム920は、ソーシャルグラフ中の構造化されたアクションおよびオブジェクトに応じてユーザ対話を報告する。
【0101】
ユーザが外部システム920と対話するアクションの他の例は、ユーザが外部システム920もしくは別のエンティティに関心を示すこと、ユーザがソーシャルネットワーキングシステム930に、外部システム920もしくは外部システム920内のウェブページ922aについて述べるコメントを投稿すること、ユーザがソーシャルネットワーキングシステム930に、外部システム920と関連付けられたユニフォームリソースロケータ(URL)もしくは他の識別子を投稿すること、ユーザが外部システム920と関連付けられたイベントに参加すること、または外部システム920と関係するユーザによるその他のアクションを含む。したがって、アクティビティログ942は、ソーシャルネットワーキングシステム930のユーザと、ソーシャルネットワーキングシステム930以外の外部システム920との間の対話を記述するアクションを含む。
【0102】
認可サーバ944は、ソーシャルネットワーキングシステム930のユーザの1または複数のプライバシ設定を確実にする。ユーザのプライバシ設定により、ユーザと関連付けられた特定の情報をどのように共有するかを決定する。プライバシ設定は、ユーザと関連付けられた特定の情報の指定、および情報を共有する1または複数のエンティティの指定を含む。情報を共有するエンティティの例は、他のユーザ、アプリケーション、外部システム920、またはその情報に潜在的にアクセスする可能性があるエンティティを含む。ユーザによって共有される情報は、プロファイル写真、ユーザと関連付けられた電話番号、ユーザのつながり、つながりの追加、ユーザプロファイル情報の変更などユーザによって行われるアクション、その他のユーザアカウント情報を含む。
【0103】
プライバシ設定の指定は、様々なレベルの粒度で提供される。例えば、プライバシ設定は、他のユーザと共有される特定の情報を識別することができ、プライバシ設定は、勤務先の電話番号、またはプロファイル写真、自宅の電話番号、およびステータスを含む個人情報など、関係情報の特定の集合を識別する。代替として、プライバシ設定は、ユーザと関連付けられた情報すべてに適用する。特定の情報にアクセスするエンティティの集合の指定は、様々なレベルの粒度で指定されることも可能である。情報を共有するエンティティの様々な集合は、例えば、ユーザのすべての友達、友達のすべての友達、すべてのアプリケーション、またはすべての外部システム920を含む。一実施形態により、エンティティの列挙を含むエンティティの集合の指定が可能になる。例えば、ユーザは、特定の情報にアクセスすることを許可される外部システム920のリストを提供する。別の実施形態により、情報にアクセスすることを許可されない例外と併せてエンティティの集合を含む指定が可能になる。例えば、ユーザが、すべての外部システム920にユーザの仕事情報にアクセスすることを許可するが、仕事情報にアクセスすることを許可されない外部システム920のリストを指定する。一実施形態は、特定の情報にアクセスすることを許可されない例外のリストを「ブロックリスト」と呼ぶ。ユーザによって指定されたブロックリストに属する外部システム920は、プライバシ設定で指定された情報にアクセスすることを妨げられる。情報の指定の粒度、および情報を共有するエンティティの指定の粒度の様々な組合せが可能である。例えば、すべての個人情報を、友達と共有するのに対して、すべての仕事情報を、友達の友達と共有する。
【0104】
認可サーバ944は、ユーザと関連付けられた特定の情報が、ユーザの友達、外部システム920、ならびに/または他のアプリケーションおよびエンティティによってアクセスされるか否かを決定するロジックを含む。外部システム920は、ユーザの勤務先電話番号など、ユーザのよりプライベートな、慎重に扱うべき情報にアクセスするために認可サーバ944からの認可を必要とする。ユーザのプライバシ設定に基づいて、認可サーバ944は、別のユーザ、外部システム920、アプリケーション、または別のエンティティが、ユーザによって行われるアクションに関する情報を含め、ユーザと関連付けられた情報にアクセスすることを許可されるか否かを決定する。
【0105】
いくつかの実施形態では、ソーシャルネットワーキングシステム930は、方位依存性機能モジュール946を含むことができる。方位依存性機能モジュール946は、例えば、図1の方位依存性機能モジュール102として具体化することができる。方位依存性機能モジュール946は、コンピューティングシステムが配置される第1の向きを判定する役割を果たす。方位依存性機能モジュール946は、コンピューティングシステムが第1の向きに配置されるときに第1の機能を提供する役割を果たすように構成することができる。方位依存性機能モジュール946はまた、コンピューティングシステムが第2の向きに配置されることを判定する役割を果たすように構成され得る。方位依存性機能モジュール946は、さらに、コンピューティングシステムに関連する現在の状態に基づいて、一組の機能のうち第2の機能を選択する役割を果たすように構成することができる。さらに、方位依存性機能モジュール946は、コンピューティングシステムが第2の向きに配置されたときに第2の機能を提供する役割を果たすように構成することができる。
【0106】
ハードウェア実装
前述のプロセスおよび特徴は、多種多様なマシンおよびコンピュータシステムアーキテクチャによって、多種多様なネットワークおよびコンピューティング環境において、実装される。図10は、本発明の一実施形態に従う、本明細書に記載の実施形態の1または複数を実装するために使用されるコンピュータシステム1000の一例を示す。コンピュータシステム1000は、コンピュータシステム1000に本明細書に記載のプロセスおよび特徴を行わせる命令の集合を含む。コンピュータシステム1000は、他のマシンに接続される(例えば、ネットワーク化される)。ネットワーク化された配置においてコンピュータシステム1000は、クライアント−サーバのネットワーク環境でサーバマシンもしくはクライアントマシンの能力で、またはピアツーピア(もしくは分散型)のネットワーク環境でピアマシンとして、動作する。本発明の一実施形態では、コンピュータシステム1000は、ソーシャルネットワーキングシステム930、ユーザデバイス910、外部システム1020もしくはその構成要素であってもよい。本発明の一実施形態では、コンピュータシステム1000は、ソーシャルネットワーキングシステム930の全部または一部を構成する、多くのサーバの中の1つのサーバであってもよい。
【0107】
コンピュータシステム1000は、プロセッサ1002と、キャッシュ1004と、コンピュータ可読媒体に記憶され、本明細書に記載のプロセスおよび特徴を対象とする、1または複数の実行形式のモジュールおよびドライバとを含む。さらに、コンピュータシステム1000は、ハイパフォーマンス入力/出力(I/O)バス1006と、標準I/Oバス1008とを含む。ホストブリッジ1010が、プロセッサ1002をハイパフォーマンスI/Oバス1006に結合するのに対して、I/Oバスブリッジ1012は、2つのバス1006および1008を互いに結合する。システムメモリ1014および1もしくは複数のネットワークインタフェース1016は、ハイパフォーマンスI/Oバス1006に結合する。コンピュータシステム1000は、ビデオメモリと、ビデオメモリに結合されたディスプレイデバイス(図示せず)とをさらに含む。マスストレージ1018およびI/Oポート1020が、標準I/Oバス1008に結合される。コンピュータシステム1000はオプションで、標準I/Oバス1008に結合された、キーボードおよびポインティングデバイス、ディスプレイデバイス、または他の入/出力デバイス(図示せず)を含む。集合的にこれらの要素は、カリフォルニア州サンタクララのインテル社によって製造されるx86互換プロセッサ、およびカリフォルニア州サニーベールのアドバンストマイクロデバイセズ(AMD)社によって製造されるx86互換プロセッサ、ならびにその他の好適なプロセッサに基づくコンピュータシステムを含む、ただしこれらに限定されない、コンピュータハードウェアシステムの広義のカテゴリを表すものとする。
【0108】
オペレーティングシステムは、ソフトウェアアプリケーション(図示せず)へのデータの入力およびソフトウェアアプリケーションからのデータの出力を含む、コンピュータシステム1000の動作を管理し、制御する。オペレーティングシステムは、システム上で実行されているソフトウェアアプリケーションと、システムのハードウェア構成要素との間のインタフェースを提供する。LINUXオペレーティングシステム、カリフォルニア州クパチーノのアップルコンピュータ社から入手可能なアップル・マキントッシュ・オペレーティングシステム、UNIX(登録商標)オペレーティングシステム、Microsoft(登録商標)Windows(登録商標)オペレーティングシステム、BSDオペレーティングシステム、その他など、好適なオペレーティングシステムが使用される。他の実装も可能である。
【0109】
コンピュータシステム1000の要素について、以下により詳細に説明する。詳細には、ネットワークインタフェース1016は、コンピュータシステム1000と、イーサネット(例えばIEEE 802.3)ネットワーク、バックプレーンなど、広範なネットワークのいずれかとの間の通信を提供する。マスストレージ1018は、上記の識別されたそれぞれのコンピューティングシステムによって実装される上述のプロセスおよび特徴を行うためのデータおよびプログラミング命令のための永続的なストレージを提供するのに対して、システムメモリ1014(例えば、DRAM)は、プロセッサ1002によって実行されるとき、データおよびプログラミング命令の一時的なストレージを提供する。I/Oポート1020は、コンピュータシステム1000に結合されるさらなる周辺デバイス間の通信を提供する1または複数のシリアルおよび/またはパラレル通信ポートであってもよい。
【0110】
コンピュータシステム1000は、多様なシステムアーキテクチャを含むことができ、コンピュータシステム1000の様々な構成要素が、並べ替えられる。例えば、キャッシュ1004は、プロセッサ1002とともにオンチップであってもよい。代替として、キャッシュ1004およびプロセッサ1002は、「プロセッサモジュール」として1つにまとめられ、プロセッサ1002が「プロセッサコア」と呼ばれるものであってもよい。さらに、本発明の一実施形態では、上記の構成要素のすべてを必要とするわけではない、または含むわけではない。例えば、標準I/Oバス1008に結合された周辺デバイスは、ハイパフォーマンスI/Oバス1006に結合される。さらに、一実施形態では、単一バスのみが存在し、コンピュータシステム1000の構成要素は、この単一バスに結合されている。さらに、コンピュータシステム1000は、追加のプロセッサ、ストレージ、またはメモリなど、追加の構成要素を含む。
【0111】
一般的には、本明細書に記載のプロセスおよび特徴は、オペレーティングシステムもしくは特定のアプリケーションの一部、構成要素、プログラム、オブジェクト、モジュール、または「プログラム」と呼ばれる一連の命令として実装される。例えば、1または複数のプログラムは、本明細書に記載の特定のプロセスを実行するように使用される。プログラムは、一般的に、コンピュータシステム1000中の様々なメモリおよびストレージに1または複数の命令を含み、これが、1または複数のプロセッサによって読み取られ、実行されると、コンピュータシステム1000に演算を行わせて、本明細書に記載のプロセスおよび特徴を実行する。本明細書に記載のプロセスおよび特徴は、ソフトウェア、ファームウェア、ハードウェア(例えば、特定用途向け集積回路)、またはその任意の組合せで実装される。
【0112】
一実施形態では、本明細書に記載のプロセスおよび特徴は、分散コンピューティング環境において個々にまたは集合的に、コンピュータシステム1000によって実行される一連の実行形式のモジュールとして実装される。前述のモジュールは、ハードウェア、コンピュータ可読媒体(または、機械可読媒体)に記憶された実行形式のモジュール、または両方の組合せによって実現される。例えば、モジュールは、プロセッサ1002など、ハードウェアシステム中のプロセッサによって実行される複数のまたは一連の命令を含む。最初に、一連の命令は、マスストレージ1018など、ストレージに記憶される。しかしながら、一連の命令は、任意の好適なコンピュータ可読記憶媒体に記憶される。さらに、一連の命令は、ローカルに記憶されることを必要とせず、ネットワーク上のサーバなど、リモートストレージからネットワークインタフェース1016を通じて受け取られる。命令は、マスストレージ1018など、ストレージからシステムメモリ1014にコピーされ、その後、プロセッサ1002によってアクセスされ、実行される。様々な実施形態では、1つのモジュールまたは複数のモジュールは、並列処理環境における複数のサーバなど、1つ以上の場所にある1つのプロセッサまたは複数のプロセッサによって実行することが可能である。
【0113】
コンピュータ可読媒体の例は、揮発性および不揮発性メモリデバイス、ソリッドステートメモリ、フロッピー(登録商標)および他のリムーバブルディスク、ハードディスクドライブ、磁気媒体、光ディスク(例えば、コンパクトディスクリードオンリメモリ(CD ROMS)、デジタル多用途ディスク(DVD))、他の同様の非一時的(もしくは一時的)、有形(非有形)記憶媒体、または本明細書に記載のプロセスおよび特徴のいずれか1つもしくは複数を実行するためにコンピュータシステム1000で実行する一連の命令を記憶する、符号化する、もしくは搬送するために適した任意のタイプの媒体など、記録可能なタイプの媒体を含むが、これらに限定されない。
【0114】
説明のために、数多くの特定の詳細が、記述内容を十分に理解できるように示されているが、しかしながら、開示の実施形態は、こうした特定の詳細なしで実践される可能性があることは、当業者には明らかであろう。一例では、説明を曖昧にすることを避けるために、モジュール、構造、プロセス、特徴、およびデバイスが、ブロック図形式で示されている。他の例では、データおよび論理のフローを表すために、機能ブロック図およびフローチャートが示される。ブロック図およびフローチャートの構成要素(例えば、モジュール、ブロック、構造、デバイス、特徴など)は、本明細書に明示的に説明し、示した以外の方法で、様々に組み合わされる、分けられる、取り除かれる、再順序付けされる、および再配置される。
【0115】
本明細書における「一つの実施形態」、「一実施形態」、「他の実施形態」、「一連の実施形態」、「いくつかの実施形態」、「各種実施形態」などへの言及は、この実施形態と関連して説明される特定の特徴、設計、構造、または特性が、本開示の少なくとも一実施形態の中に含まれていることを意味する。本明細書中の様々な場所に、例えば「一実施形態では」、または「一実施形態では」という語句が登場することは、必ずしもすべて同じ実施形態を示しているわけではなく、別個の実施形態または代替の実施形態は、必ずしも他の実施形態を相互に排除しない。さらに、「実施形態」などへの明確な言及があるか否かに関わらず、一実施形態においては様々に組み合わされ、含まれるが、他の実施形態では、様々に省略されることもある、様々な特徴が説明される。同様に、一実施形態には優先または必要条件であるが、他の実施形態ではそうではない可能性がある様々な特徴が説明される。
【0116】
本明細書で使用される言語は、主として読みやすさおよび説明の目的のために選択され、発明の主題を詳細に記述するまたは制限するように選択されていない可能性がある。したがって、本発明の範囲は、この詳細な説明によってではなく、むしろ本明細書に基づく出願に際して発行するいずれかの請求項によって限定されることを意図している。したがって、本発明の実施形態の開示は、本発明の範囲を説明するものであるが、本発明の範囲を限定するものであることを意図せず、本発明の範囲は、次の特許請求の範囲に示される。
図1
図2
図3
図4A
図4B
図4C
図5A
図5B
図6A
図6B
図7
図8
図9
図10