(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0004】
本発明の具体的な実施形態は、ユーザに向けられた、またはユーザに関するメッセージのアクティビティの1つまたは複数の状況を反映するために、視覚メッセージインジケータの1つまたは複数の動作パラメータを調節する通信装置に関する。本開示のこれらおよび他の特徴、態様および利点は、詳細な記述で次の図と併せて以下でより詳細に述べる。
【0005】
ここで、本発明は、添付の図面に例示されるそのいくつかの実施形態を参照して詳細に述べる。次の記述では、本開示を完全に理解するために、数々の具体的な細部を述べる。しかし、本開示は、これらの具体的な細部のいくつか、またはすべてが無くても実施することができることは、当業者に明らかである。他の事例では、本開示を不要に分かりにくくしないために、よく知られている処理方法および/または構造を詳細に述べていない。さらに、特定の実施形態と連結して本開示を述べるが、この記述は、述べる実施形態に本開示を限定する意図のものでないことを理解すべきである。それとは反対に、この記述は、添付の請求項によって定義される本開示の趣旨および範囲内に含めることができるような代替実施形態、修正実施形態および同等物を包含すると意図する。
【0006】
LEDなどのメッセージインジケータは、ユーザが絶えず装置にアクセスすることが必要でなくバッテリ源を消耗させることなく、メッセージインジケータによってユーザにメッセージが着信したことを通知することができる点において、携帯型通信装置にとって有用である。本発明の実装形態は、メッセージング・アクティビティに基づき、メッセージインジケータの1つまたは複数の動作パラメータを調整することに関する。一実装形態では、動作パラメータの1つまたは複数のための調整スキームは、ユーザに関する、および/またはユーザに向けられたメッセージング・アクティビティの全体的な意味をユーザに伝えるように構成される。本発明の実装形態は、たとえば、ユーザに対するメッセージング・アクティビティのレベル、ユーザの現在のコンテクストに対するメッセージング・アクティビティの直接の関連性、ユーザとメッセージ・アクティビティの送信元との間のコネクションなどを伝達するように構成することができる。
【0007】
図1は、ソーシャル・ネットワーキング・システム100の一例および本発明の様々な実装形態が動作する可能性がある環境を示す。ユーザは、ソーシャル・ネットワーキング・システムおよび他のリモートホストに、通信装置122を使用してネットワーク121を通じてアクセスすることができる。たとえば、ユーザは、コンテンツを掲示し、それにアクセスするために、ソーシャル・ネットワーキング・システムおよび他のリモートホストにアクセスすることができる。他のリモートホストは、他のネットワーク・アプリケーション、たとえばウェブサイト、電子メール・サービスなどを実装することができる。
【0008】
通信装置122は、様々な異なる通信チャネルおよびメッセージ・タイプに対応することができる。たとえば、通信装置122は、無線ネットワークの回路が切り替えられることにより、または非データの部分を通じて、他のクライアント装置と対話することができる。たとえば、ユーザは、通信装置122で、セル方式携帯電話または固定電話回線への非VoIP(Voice over IP)呼を送受信することができ、SMSまたはMMSチャネルを通じてテキストまたはマルチメディアのメッセージを送受信することができ、あるいはSMS制御チャネルを通じてプッシュ通知(push notification)を受け取ることができる。通信装置122は、クライアント装置に存在するウェブ・ブラウザまたは通信装置122のローカルな専用アプリケーションを通じて、外部ウェブサイトおよび他のサービス・プロバイダと対話することができる。たとえば、通信装置122は、Google Voice(商標)またはSkype(商標)など、インスタントVoIP(instant VoIP)サービスを、ウェブ・ブラウザを通じて訪れてそれらのアカウントにログインすることによって、あるいは専用アプリケーションをインストールして実行することによって、対話することができる。通信装置122のユーザは、コンテンツを閲覧する、メッセージを掲示する、送る、および他のユーザから受け取ったメッセージを取り出す、ソートするなどの動作を行うために、アプリケーション、たとえばウェブ・ブラウザまたはネイティブ・アプリケーション(native application)などを通じて、ソーシャル・ネットワーキング・システム100と対話する。通信装置122は、呼、テキストおよび他のメッセージング・データを記憶することが可能な1つまたは複数のメモリを有する。
【0009】
メッセージは、任意の電子メッセージ・フォーマット、たとえば電子メール(e−mail)メッセージ、インスタント・メッセージ(IM:instant message)、チャット・メッセージ、アクティビティ・ストリームまたはニュースフィード・オブジェクト(news feed object)およびショート・メッセージ・サービス(SMS:short message service)テキスト・メッセージなどであってよい。メッセージは、単純なテキストを含むことができる、または画像、ビデオなどの他のコンテンツおよび添付ファイルを含むことができる。いくつかの実装形態では、各ユーザは、受信箱を有し、それは、ユーザが送受信する両方のメッセージを含む。また
、通信装置122は、ソーシャル・ネットワーキング・システム100中の様々なユーザ・ノードおよびハブに関するプロフィール情報をプル(pull:引き出して)して閲覧するために、アプリケーションまたはブラウザを使用することができる。通信装置122は、上記で述べたように、メッセージを受け取り(プッシュ(push)およびプル方法またはこれらのいずれかによって)、かつユーザに表示するために、それらを処理するように動作可能な1つまたは複数のアプリケーションを提供することができる。
【0010】
メッセージは、通常、送信者識別子、宛先識別子および/または装置アドレス、件名、送信時刻、受信時刻の1つまたは複数、およびメッセージ・コンテンツ(テキストおよび/またはマルチメディアなど)を含む。メッセージは、本明細書で述べたように、メッセージング・サービスを通じて、またはソーシャル・ネットワーキング・システム100などのアプリケーション・サービスを通じて、ユーザの間で直接送ることができる。たとえば、ユーザは、ソーシャル・ネットワーキング・システム100にアクセスして、メッセージを作成し送ることができる。あるいは、ユーザは、無線通信サービスを通じてユーザに、より直接的にSMSを送ることができる。また他の実装形態では、ユーザは、ソーシャル・ネットワーキング・システム100に対してステータス更新を掲示するか、またはコンテンツをアップロードすることができ、ニュースフィード・オブジェクトが1または複数の他のユーザに送信される。
【0011】
図2は、説明する目的で、通信装置122の一例を示す。
図2に示される通信装置122は、メッセージインジケータ202を含む携帯用スマートフォンである。一実装形態では、メッセージインジケータ202は、発光ダイオード(LED)を含み、いくつかの実装形態では、LEDを包み込むか、または保護する透明な、または半透明な部材またはハウジングを含む。メッセージインジケータ202は、いくつかの実装形態では、通信装置のハウジング上に取り付けられる物理的なボタンの一部とすることができる。本発明の実装形態によれば、通信装置122は、通信装置と関連するメッセージ・アクティビティをモニタリングし、そして以下でより詳細に述べるように、そのメッセージ・アクティビティに基づき、1つまたは複数の動作パラメータを調整するメッセージング・モニタリング・アプリケーションを提供する。メッセージング・モニタリング・アプリケーションは、通信装置(たとえば電子メール・クライアント、SMSクライアント、IMクライアント、RSSまたはニュースフィード・クライアントなど)上で提供される複数の異なるアプリケーションによって実行されるメッセージをモニタリングする、独立した、または別個のプロセスとして、実装されることができる。他の実装形態では、メッセージング・モニタリング・アプリケーションは、統合して、電子メール・クライアントまたはネイティブ・ソーシャル・ネットワーク・アプリケーションなど、単一のアプリケーションのみに接続して動作することができ、そのモニタリング・アプリケーション自体は、様々なメッセージ・タイプを扱うことができる。そのように、メッセージング・モニタリング・アプリケーションは、本明細書に述べるように、様々な異なるタイプの着信メッセージについてリスナとして登録されて、それらメッセージを処理することができる。
【0012】
図5Aおよび
図5Bは、メッセージング・アクティビティ・モニタリング・アプリケーションによって実装することができる実施例のプロセスを例示する。いくつかの実装形態では、メッセージ・アクティビティ・モニタリング・アプリケーションは、不活動の期間の後で、たとえば通信装置122がアイドル状態に入り、ディスプレイ画面電力を低下させたときなどに起動される。メッセージングインジケータは、ユーザが装置にアクセスし、かつディスプレイ電力を上昇させることが必要でなく、携帯型装置によってモニタリングされるメッセージング・アクティビティの意味をユーザに示すように動作することができる。ユーザが装置にアクセスした、または作動させたとき、メッセージングインジケータは、別の動作モードに入ることができる。他の実装形態では、メッセージ・アクティビティ・モニタリング・アプリケーションは、バックグラウンドプロセスとして常に動作し
ている。他の実装形態では、メッセージング・アクティビティ・モニタリング・アプリケーションは、明示的なユーザ・コマンドに応答して起動することができる。
【0013】
一実装形態では、メッセージ・アクティビティ・モニタリング・アプリケーションは、受け取ったメッセージのメッセージング・アクティビティ・キューを保持し、そしてメッセージング・アクティビティ・キューのコンテンツに基づき、メッセージインジケータの1つまたは複数の動作パラメータを調節する。一実装形態では、メッセージング・アクティビティ・キューは、循環バッファまたはリングとして実装することができ、そこでは最も古いオブジェクトが、新しいオブジェクトを受け取ったことに応答して、上書きされる。通信装置122上で提供される1つまたは複数のアプリケーションは、1つまたは複数のリモートシステムに対して新しいメッセージを求める要求を送ることによって、プッシュ通知メッセージおよび/またはプル・ベースのメッセージを扱うように動作可能とすることができる。いくつかの実装形態では、メッセージ・アクティビティ・モニタリング・アプリケーションは、通信装置122の1つまたは複数の通信プロトコル・スタックの様々な層で挿入される1つまたは複数のエージェントと関連して、動作することができる。エージェントは、1つから複数の異なるアプリケーション(たとえば電子メール、IM、チャット、SMS、音声メールなど)に対応するメッセージを求めてモニタリングし、そのメッセージについての指標をメッセージ・アクティビティ・モニタリング・アプリケーションに送るように動作可能とすることができる。
図5Bに例示するように、メッセージは、動作パラメータ(すなわち、メッセージ通知インジケータの状態)が現在のメッセージング・アクティビティを反映するように、期間閾値(たとえば5分、10分または任意の他の設定可能な期間)の後、キューから排除することができる。たとえば、高い値のハイ・メッセージング・アクティビティ期間中、メッセージインジケータの状態は、急激な鼓動を提示するように調整されることができ、一方適度なメッセージング・アクティビティの期間中、メッセージインジケータの状態は、比較的穏やかな鼓動を提示することができる。いくつかの実装形態では、メッセージインジケータボタン202を作動させると、ユーザに関する親和性(アフィニティ“affinity”)または通知(notification)の値が最も高いメッセージングと関連するクライアント・アプリケーションが起動する。他の実装形態では、メッセージインジケータボタン202の色彩も、鼓動アクティビティに加えて、またはそれに代え、緊急性の異なるレベルおよび/またはメッセージ数を表示するように調整されることができる。
【0014】
図5Aに示すように、メッセージ・アクティビティ・モニタリング・アプリケーションは、メッセージの指標を受け取ったこと(502)に応答し、受け取ったメッセージをメッセージング・アクティビティ・キューに置くか否かを決定する(504)ために、決定ロジックをメッセージに適用することができる。たとえば、メッセージ・アクティビティ・モニタリング・アプリケーションは、メッセージをメッセージング・アクティビティ・キューに加えるべきか否かを決定するために、1つまたは複数のルール・ベースのフィルタを適用することができ、よって通信装置122のメッセージインジケータ202の動作に潜在的に影響を及ぼすことができる。フィルタは、デフォルトのセットとしてアプリケーション開発者によって構成されるか、またはエンド・ユーザによって構成されることができるか、および/またはユーザが最も気にかけるメッセージのタイプを学習する学習アルゴリズムに基づき生成されることができる。フィルタのルールは、様々な異なる属性に基づかせることができる。たとえば、チャネルまたはメッセージ・タイプ(電子メール、SMS、チャット/IM、ニュースフィード・オブジェクト、プッシュ通知または警報など)、メッセージの送信元または送信者、メッセージの件名(たとえば、そのメッセージが対象ユーザに関与するか、または関連するか否か、ユーザがその対象の事柄に対してアフィニティを宣言しているか否か、など)、メッセージと関連するメタデータ(たとえばソーシャル・ネットワーキング・システム100によって送る前に加えられる)、メッセージに付け加えられた、または受け取り時に計算されるメッセージ通知またはアフィニテ
ィの値などに基づかせることができる。たとえば、メッセージのフィルタは、すべてのニュースフィード・オブジェクトを総じて排除するか、または所定のグループ内のユーザと関連していないニュースフィード・オブジェクトを排除することができる。メッセージがフィルタリング動作を通過した場合、メッセージ・アクティビティ・モニタリング・アプリケーションは、そのメッセージをメッセージング・アクティビティ・キューに加える(506)。明確にするために、受け取ったメッセージは、それがメッセージング・アクティビティ・キューに加えられたか否かにかかわらず、通信装置122で提供される1つまたは複数のクライアント・アプリケーションによって処理される。たとえば、メッセージが、プッシュまたはプルプロセス中で配信された電子メール・メッセージまたはニュースフィード・オブジェクトである場合、電子メール・クライアントまたはニュースフィードのアプリケーションも、適用できる場合、受け取ったメッセージを処理することになる。メッセージ・アクティビティ・モニタリング・アプリケーションは、キュー中に含まれるメッセージに基づき、1つまたは複数のメッセージング・アクティビティ値またはメトリックスを計算して(508)、メッセージインジケータの1つまたは複数の通知動作パラメータを調節する(510)ために、メッセージング・アクティビティ・キューにアクセスすることができる。つまり、いくつかの実装形態では、メッセージングング・アクティビティ・キュー中の1つから複数のメッセージは、動作パラメータに、すなわちメッセージインジケータ202の観察可能な振る舞いに影響を及ぼすことができる。通知動作パラメータは、メッセージインジケータの強度、周期(または振動数)、色彩およびデューティ・サイクルを含むことができる。いくつかの実装形態では、メッセージインジケータは、可変周波数および固定デューティ・サイクル、固定周波数および可変デューティ・サイクル、あるいは可変周波数および可変デューティ・サイクルによって動作することができる。通知動作パラメータは、様々な異なる視覚の表示および振る舞いを達成するように構成し調整されることができる。たとえば、メッセージインジケータの動作パラメータおよび調整スキームは、鼓動に似るように構成されることができ、そこでは、視認され得る鼓動の周波数および強度がメッセージング・アクティビティの1つまたは複数の状況を反映する。色彩も、異なるタイプの通知またはメッセージを表示する(たとえば、メッセージには青色、不在着信には赤色)か、あるいは緊急性の変化するレベルを合図する(たとえば、プライオリティが低い場合、緑色、およびプライオリティが高い場合、赤色)ように調整されることができる。いくつかの実装形態では、メッセージインジケータボタン202は、メッセージキュー中のメッセージのタイプを表示するために、繰り返しサイクルに亘って異なる色彩の間で切り替えることができる。
【0015】
図5Bは、メッセージング・アクティビティ・キューからメッセージを排除するプロセスを例示する。
図5Bに示すように、メッセージ・アクティビティ・モニタリング・アプリケーションは、周期的なベースでメッセージング・アクティビティ・キューにアクセスして(552)、古いメッセージを排除する(554)。各メッセージは、時間情報(送信または受信の時刻など)を含むことができる。他の実装形態では、メッセージ・アクティビティ・モニタリング・アプリケーションは、メッセージがメッセージング・アクティビティ・キューに加えられたとき、メッセージにタイム・スタンプを加えることができる。いくつかの実装形態では、メッセージ・アクティビティ・モニタリング・アプリケーションは、期間閾値より古いメッセージを排除することができる。いくつかの実装形態では、期間閾値は、すべてメッセージについて同一である。他の実装形態では、排除時期は、メッセージの1つまたは複数の属性、たとえばメッセージ・タイプ、送信元、件名などによって決定されることができる。いくつかの実装形態では、メッセージ自体は、メッセージ・アクティビティ・モニタリング・アプリケーションが使用するためにメッセージに添付される排除時期を含むことができる。ソーシャル・ネットワーキング・システム100(または、任意の他の送信者)は、通信装置122に送られるメッセージについて排除時期を設定するか、または付け加えることができる。また、メッセージ・アクティビティ・モニタリング・アプリケーションは、
図5Aに示す例と同様に、キュー中に含まれるメッ
セージに基づき、1つまたは複数の累積されたメッセージング・アクティビティ値またはメトリックスを計算して(508)、メッセージインジケータの1つまたは複数の通知動作パラメータを調節する(510)ために、メッセージング・アクティビティ・キューにアクセスすることができる。古くなったメッセージを排除することによって、メッセージインジケータ202の動作状態が、現在のメッセージング・アクティビティを反映する。メッセージが失効するまでの時間の長さは、工学技術、設計およびユーザの経験の考慮事項に応じて変わることができる。この時間の長さはユーザ設定することもできる。
【0016】
いくつかの実装形態では、メッセージング・アクティビティ・キューは、異なる個別の通知動作パラメータを個々に調整するコンポーネントのメッセージング・アクティビティ値を計算するために、異なる軸を横切って評価することができる。他の実装形態では、各通知動作パラメータは、2以上のコンポーネントのメッセージング・アクティビティ値を考慮する関数に基づかせることができる。たとえば、メッセージ・アクティビティ・モニタリング・アプリケーションは、コンポーネントのメッセージング・アクティビティ値を決定するとき、次のファクタの1つ以上を考慮することができる。すなわち、1)メッセージング・アクティビティ・キュー中のメッセージ数;2)メッセージ・アクティビティ・キュー中のメッセージの時間間隔;3)メッセージの送信元または送信者;4)メッセージの個別の件名;5)メッセージの個別のコンテンツ;6)メッセージのコンテクスト(たとえば、それが、対象ユーザによって送られた前のメッセージに対する返答であるか否か);7)メッセージまたはチャネルのタイプ;8)メッセージの送信元と対象ユーザとの間の社会的コネクション(ソーシャル・グラフ中の分離の程度および送信元と対象ユーザとの間の識別された親和性(アフィニティ)を含む);9)送信元と対象ユーザの間の新しさまたは通信頻度の程度;8)メッセージに付け加えられた通知またはアフィニティの値である。通知またはアフィニティの値は、通信装置122から遠隔で(たとえばソーシャル・ネットワーキング・システムにおいて)、および/または通信装置でローカルに計算することができる。各個のメッセージについての通知またはアフィニティの値の計算について、以下に述べる。通知動作パラメータは、計算された通知コンポーネントの値に応じて1つまたは複数の関数に基づかせることができる。たとえば、通知コンポーネントの値は、メッセージインジケータ202の強度、周期および/またはデューティ・サイクルに関する動作パラメータの範囲中で所定の値にマッピングされることができる。
【0017】
様々な実装形態が可能である。たとえば、通知インジケータの強度および/またはデューティ・サイクルは、最近受け取ったメッセージの送信元が、対象ユーザのアフィニティの程度が高い社会的コンタクト(たとえば、宣言した関係(たとえばガールフレンド、ボーイフレンドなど)、または通過したメッセージ・アクティビティに基づき、アフィニティの程度が高いことを示す)であることを合図することができる。たとえば、メッセージインジケータの強度は、ベースラインまたはデフォルト・レベルから最大強度値まで、メッセージのソースと対象ユーザとの間のアフィニティ評価値に基づき変わることができる。いくつかの実装形態では、強度値は、その送信元が最も高いアフィニティ値と関連付けられる単一のメッセージに基づく。他の実装形態では、強度値は、複数のメッセージの累積された評価に基づかせることができる。メッセージインジケータが点滅することができる周波数または周期は、メッセージ・アクティビティ・キュー中のメッセージ数を全体的に、またはメッセージ(または、1つまたは複数の基準、たとえば、同一の送信者、トピックスなどを満たすメッセージのサブセット)の時間の隔たりを合図することができる。いくつかの実装形態では、動作パラメータを調節する関数は、メッセージインジケータの動作が鼓動に似るように構成することができ、そこでは、ライト強度が、メッセージに関して合計したアフィニティを反映し、そして周波数が、メッセージング・アクティビティの観測された量または程度を反映する。いくつかの実装形態では、1つまたは複数のメッセージの緊急性は、時間および/または場所に対する感度に基づかせることができる。たとえばユーザが所与の場所から移動した後(および/または所定の期間が経過した後)失
効するか、または無意味になる恐れがあるユーザにプッシュされたメッセージは、緊急メッセージとして処理されてもよい。場所および時間に対する感度は、他のプロセス(送信または返信のプロセスなど)によって設定されたフラグまたはビットの解析に基づかせることができるか、あるいは携帯型装置における意味解析に基づかせることができる。
【0018】
次の記述は、本発明の実装形態が動作することができる動作環境を例示し、対象ユーザとメッセージとの間のメッセージ通知値およびアフィニティをどのようにして決定することができるのかを述べる。具体的な実施形態では、ソーシャル・ネットワーキング・システムは、ユーザ・プロフィール・データベース101中にユーザ・プロフィール・データおよびソーシャル・グラフ情報を記憶することができる。ソーシャル・ネットワーキング・システム100はいくつかの構成要素を含んでおり、その構成要素はソーシャル・ネットワーキング環境において表されるそのユーザおよびオブジェクトについての情報、およびユーザとオブジェクトとの間の関係を記憶するために使用される。また、ソーシャル・ネットワーキング・システム100は、1つまたは複数のメッセージング・アプリケーション、たとえばインスタント・メッセージング・システム、チャット・システム、VoIPシステム、ビデオ・チャット・システム、電子メール・システム、プッシュ通知システムなどに対応することができる。
【0019】
さらに、ソーシャル・ネットワーキング・システム100は、本明細書に述べるように、システムのユーザ装置に対していくつかの動作をできるようにするために構成要素を含む。具体的な実施形態では、ソーシャル・ネットワーキング・システムは、イベント・データベース102にユーザ・イベント・データおよび予定表データを記憶することができる。具体的な実施形態では、ソーシャル・ネットワーキング・システムは、プライバシ・ポリシ・データベース103中にユーザ・プライバシ・ポリシ・データを記憶することができる。具体的な実施形態では、ソーシャル・ネットワーキング・システムは、場所データベース104中に地理および場所のデータを記憶することができる。具体的な実施形態では、ソーシャル・ネットワーキング・システムは、メディア・データベース105中にメディア・データ(たとえば写真またはビデオ・クリップ)を記憶することができる。具体的な実施形態では、データベース101、102、103、104および105は、ソーシャル・ネットワーキング・システムのフロント・エンド120に動作可能に接続することができる。具体的な実施形態では、フロント・エンド120は、ネットワーク・クラウド121を通じて通信装置122と対話することができる。通信装置122は、一般に、コンピュータ・ネットワークを通じて通信する(たとえば、遠隔に)ための機能を含むコンピュータまたは計算装置である。通信装置122は、他の適切な計算装置の中でも特に、デスクトップ・コンピュータ、ラップトップ・コンピュータ、携帯端末(PDA:personal digital assistant)、自動車搭載または非搭載型ナビゲーション・システム、スマートフォンまたは他のセル方式携帯電話または携帯電話、あるいは携帯用ゲーム装置であってもよい。通信装置122は、コンピュータ・ネットワークを通じてコンテンツにアクセスして、それを閲覧するために、1つまたは複数のクライアント・アプリケーション、たとえばウェブ・ブラウザ(たとえばMicrosoft
Windows(登録商標) Internet Explorer、Mozilla
Firefox、Apple Safari、Google ChromeおよびOperaなど)などを実行することができる。フロント・エンド120は、ユーザがソーシャル・ネットワーキング・システムにアクセスすることを可能にするために、ウェブまたはHTTPのサーバ機能、さらにまた他の機能を含むことができる。ネットワーク・クラウド121は、一般に、ネットワークまたはネットワークの集合(インターネットまたは企業イントラネットまたはその両方の組み合わせなど)を表し、それを通じて、クライアント装置122は、ソーシャル・ネットワーク・システムにアクセスすることができる。
【0020】
具体的な実施形態では、ソーシャル・ネットワーキング・システムのユーザは、1つま
たは複数のメディア・ファイルをメディア・データベース105にアップロードすることができる。たとえば、ユーザは、写真または写真のセット(写真アルバムと呼ばれることがある)、またはビデオ・クリップを、通信装置122(たとえば、コンピュータまたはカメラ付き携帯電話)からメディア・データベース105にアップロードすることができる。具体的な実施形態では、1つまたは複数のメディア・ファイルは、各メディア・ファイルと関連付けられたメタデータ(「タグ(tag)」と呼ばれることがある)を含むことができる。たとえば、デジタル・カメラによって撮影された写真は、ファイル・サイズ、解像度、タイム・スタンプ、カメラ製造業者名および/または場所(たとえばGPS)座標に関するメタデータを含むことができる。ユーザは、アップロードプロセスの間、追加のメタデータ値を写真に加えるか、または写真にタグを付けることができる。メディア・ファイルのタグのいくつかの実施例は、作成者、タイトル、コメント、イベント名、時間、場所、メディア・ファイル中に現れる人たちの名前あるいはユーザのコメントである。具体的な実施形態では、ユーザは、クライアント・アプリケーション(たとえば写真またはビデオのエディタ)を使用することによって、またはメディア・アップローディング・ツールのグラフィカル・ユーザ・インタフェース中に1つまたは複数のタグを入れることによって、メディア・ファイルにタグを付けることができ、そのメディア・アップローディング・ツールは、ユーザの1つまたは複数のメディア・ファイルを、通信装置122からソーシャル・ネットワーキング・システムにアップロードする。また、ユーザは、アップロードした後でソーシャル・ネットワーキング・システムのウェブサイト中において後に、メディア・ファイルにタグを付けることができる。具体的な実施形態では、ソーシャル・ネットワーキング・システムは、メディア・ファイルからメタデータを抽出し、そしてそのメタデータをメディア・データベース105中に記憶することもできる。
【0021】
具体的な実施形態では、場所データベース104は、チェックインに関連するユーザの実際の地理的な場所を識別する地理場所データを記憶することができる。たとえば、インターネットに接続されたコンピュータの地理的な場所は、コンピュータのIPアドレスによって識別することができる。たとえば、Wi−FiおよびGPS能力を備える携帯電話の地理的な場所は、携帯電話の基地局の三角測量、Wi−Fi測位および/またはGPS測位によって識別されることができる。具体的な実施形態では、場所データベース104は、住所の情報ベースを記憶することができ、各住所は、名前、地理的な場所およびメタ情報を含む。たとえば、住所は、地域の企業、興味を有する点(たとえば、カリフォルニア州サンフランシスコのユニオンスクエア)、大学、市または国立公園とすることができる。たとえば、住所の地理的な場所(たとえば、地域のコーヒーショップ)は、所番地、地理的な座標(緯度および経度)のセットまたは他の住所への参照(たとえば「鉄道の駅の隣のコーヒーショップ」)とすることができる。たとえば、広い領域を有する住所の地理的な場所(たとえばヨセミテ国立公園(Yosemite National Park))は、住所の境界を近似する形状(たとえば、円形または多角形)、および/またはその形状の図心(すなわち、幾何学的な中心)とすることができる。たとえば、住所のメタ情報は、最初に住所を作成したユーザを識別する情報、レビュー、評価、コメント、チェックイン・アクティビティ・データなどを含むことができる。住所は、システムの管理者によって作成されるか、および/またはシステムのユーザによって作成されることができる。たとえば、ユーザは、住所名を定め、地理的な場所を提供し、そして新しく作成した住所を場所データベース104に登録するために、クライアント・アプリケーションにアクセスすることによって新しい住所を登録することができる。その作成をするユーザまたは他のユーザは、そのページを対象とするウェブ・ページにアクセスし、そして住所に関する追加の情報、たとえばレビュー、コメントおよび評価を追加することができる。具体的な実施形態では、場所データベース104は、ユーザの場所データを記憶することができる。たとえば、場所データベース104は、ユーザのチェックイン・アクティビティを記憶することができる。たとえば、ユーザが住所(たとえば、新しいレストランまたはコーヒーショップ)を作成することによって、ソーシャル・ネットワーキング・システム
はユーザが作成した住所を場所データベース104中に記憶する。たとえば、ユーザは、住所のコメント、レビューまたは評価を作成することができ、ソーシャル・ネットワーキング・システムに住所に関するユーザのコメント、レビューおよび評価を場所データベース104に記憶させる。
【0022】
具体的な実施形態では、ニュースフィード・エンジン110は、ソーシャル・ネットワーキング・システムのユーザまたはユーザのセットに関するデータを求めてユーザ・プロフィール・データベース101、イベント・データベース102、場所データベース104およびメディア・データベース105にアクセスし、そして特定のユーザに関するニュース・アイテムとして1つまたは複数のアクティビティのリストを作ることができる。具体的な実施形態では、ニュースフィード・エンジン110は、プライバシ・ポリシ・データベース103にアクセスし、そして1つまたは複数のプライバシ設定に基づき、ニュース・アイテムのサブセットを決定することができる。具体的な実施形態では、ニュースフィード・エンジン110は、評価した、またはソートした順序で限定された数のニュース・アイテムの動的なリストを編集することができる。具体的な実施形態では、ニュースフィード・エンジン110は、ニュース・アイテム中の1つまたは複数のアクティビティに関するリンクを提供することができ、リンクは、そのアクティビティに参加する機会をもたらす。たとえば、ニュースフィードは、ウォール・ポスト、ステータス更新、コメントおよび住所への最近のチェックイン(住所のウェブ・ページへのリンクを用いて)を含むことができる。他の実施形態では、ニュースフィード・エンジン110は、ユーザ・プロフィール・データベース101、イベント・データベース102、場所データベース104およびメディア・データベース105にアクセスし、そしてソーシャル・ネットワーキング・システムのユーザから受け取った関連するアクションのグループについて限定された数のニュース・アイテム(すなわち、ニュースフィード)の動的なリストを編集することができる。たとえば、ニュースフィードは、ユーザがソーシャル・ネットワーキング・システムを通じて(イベントに参加するためのリンクを用いて)予定を立てて計画することができるイベント、ユーザおよびイベントの他の参加者によるイベントの具体的な地理的な場所におけるチェックイン、ユーザおよびイベントの他の参加者によって掲示されたイベントに関するメッセージ、およびユーザおよびイベントの他の参加者によってアップロードされたイベントの写真を含むことができる。
【0023】
具体的な実施形態では、ユーザ・プロフィール・データベース101は、ユーザの通信チャネル情報およびアドレス帳を記憶することができる。アドレス帳は、一実装形態では、ユーザが友達またはコンタクトとして関係を確立しているソーシャル・ネットワーキング・システムのユーザの上位セットまたはサブセットとすることができる。通信装置122のユーザは、連絡先を閲覧するために、専用または汎用のクライアント・アプリケーションを使用して、このアドレス帳情報にアクセスすることができる。具体的な実施形態では、アドレス帳は、1または複数のコンタクト(たとえば、人または企業エンティティ)、各コンタクトに関する名前(たとえば、名および/または姓)および通信チャネル情報(たとえば電話番号、IMサービスのためのユーザID、電子メール・アドレス、ソーシャル・ネットワーキング・システムのためのユーザID、自宅住所など)を含むことができる。アドレス帳情報の少なくとも一部分に対して、コンタクトエントリは動的なものであってもよく、その動的なコンタクトエントリはユーザ自身のアカウントおよび連絡先と対応するユーザ・プロフィールを維持しているソーシャル・ネットワーキング・システムのユーザと関連付けられている。したがって、第1のユーザが連絡先の任意の状況を変更したとき、改訂された連絡先は、要求するユーザに提供されることができる。具体的な実施形態では、ユーザは、アドレス帳にアクセスし、調べて、そして通信チャネルを通じてコンタクトに連絡することができる。いくつかの実装形態では、通信装置122は、アドレス帳のコピーをローカルに維持することができ、それは、様々なときに再読み込みするか、または同期させることができる。
【0024】
メッセージ・アフィニティの評価
一実施形態では、ソーシャル・ネットワーキング環境下で動作するプロセスには、アフィニティ関数を実装するモジュールからの特定のユーザに関するアフィニティの度合が必要である。そのモジュールは、一実装形態では、予測関数の重み付けられたセットを結合する(たとえば、加算する)ことによって、必要なアフィニティの度合を計算し、各予測関数が、ユーザが異なるアクションを行うか否かを予測する。重みは、アフィニティの度合を要求するプロセスによって提供することができ、それによって要求するプロセスが予測関数に異なるように重み付けることが可能になる。この意味で、アフィニティ関数は、要求するプロセスによってそれ自体の目的にために調節可能である。一実装形態では、アフィニティは、対象とする受信者へのメッセージの通知値を計算する目的で、計算されることができる。
【0025】
予測関数は、ユーザが特定のアクションを行うか否かを、そのアクションに対するユーザの興味に基づき予測することができる。たとえば、予測関数は、ユーザの過去のアクティビティ(たとえば上記で述べたソーシャル・ネットワーキング・システムの機能を利用して行う他のユーザとの情報のやり取りなど)に基づき、導き出すことができる。さらに、予測関数は、ユーザの過去のアクティビティによってもたらされる信号の強さを時間とともに減衰させる減衰係数を含むことができる。予測関数は、任意の数のアクションを予測することができ、それは、ソーシャル・ネットワーキング・システムの内または外のアクションであってもよい。たとえば、これらのアクションは、メッセージ、コンテンツの掲示およびコンテンツに対するコメントなど、様々なタイプのユーザの通信;他のコネクションのプロフィールを閲覧すること、および他のコネクションによって掲示された写真およびコンテンツを閲覧することなど、様々なタイプのユーザの観察アクション;および同一の写真中にタグを付けられている、同一の場所にチェックインしている、同一のイベントに出席しているなど、2以上のユーザに関する様々なタイプの一致情報を含むことができる。予測関数は、様々なオプションおよび測定応答にユーザを晒すことによってユーザから集めた過去のアクティビティおよびこれまでのユーザの応答またはデータに基づき学習させる機械学習アルゴリズムを使用して、決定することができる。
【0026】
ユーザが所与の状況下で行う可能性がある、起こり得るアクションを予測するためには、ソーシャル・ネットワーキング・システム100上またはその外部の任意のプロセスは、重みのセットを提供することによって所定のユーザに関するアフィニティの度合を要求することができる。アフィニティの度合は、ソーシャル・ネットワーキング・システム中の他のユーザ、コンテンツ、アクション、広告または任意の他のオブジェクトに対するユーザの興味を反映することができる。重みは、バイナリ、またはより一般的には、任意の実数とすることができる。一実装形態では、ソーシャル・ネットワーキング・システム100によって送信されるか、または中継される対象ユーザの通信装置122に向けたメッセージは、たとえば、対象ユーザとそのメッセージとの間のアフィニティを計算するために処理されることができる。アフィニティ値は、通信装置122に送信される前に、メッセージに付け加えられてもよい。他の実装形態では、通信装置122において提供されるプロセスは、アフィニティの度合を要求するために、アフィニティ・モジュールにアクセスすることができる。いくつかの実装形態では、通信装置122は、通信装置122の対象ユーザと、対象ユーザのコンタクトデータベース(通信装置122にローカルに、またはソーシャル・ネットワーキング・システム100上で遠隔に記憶される)において識別される1または複数の他のユーザとの間のアフィニティを要求することができる。改訂されたアフィニティ値は、その後の同期プロセスの間に得られる。通信装置122は、個別のユーザからのメッセージに関するこれらのアフィニティ値を使用することができる。他の実装形態では、通信装置122は、ローカルに対話をモニタリングし、ローカルにアフィニティ値を計算することができる。
【0027】
図6は、ソーシャル・ネットワーキング・システム中のユーザに関するアフィニティの度合を計算するための関数のブロック図である。ユーザが、任意の所与の状況下において行うことを望む可能性があるアクションであって、起こり得るアクションのセットを示すアフィニティの度合615を計算するためには、重み105が予測関数610に適用され、次いでアフィニティの度合615を得るために結合される。
図1に3つの予測関数610が示されているが、本発明の他の実施形態では、任意の数の予測関数を用いることができる。さらに、
図6の実施形態では、重み付けられた予測関数610は、線形で結合される。異なる実施形態では、調和平均、平均平方および幾何平均を含む、他の形態の結合を使用することができる。さらに、重み605が変化している複数のアフィニティの度合615は、ユーザのアクションを予測する前に計算されてもよい。
【0028】
アフィニティ関数の重み605のため、ソーシャル・ネットワーキング・システム環境中の様々なプロセスによってその関数を異なる目的に使用できるようになる。たとえば、閲覧者である友達からのソーシャル推薦を広告に与えるプロセスでは、広告アルゴリズムは、ユーザのコネクションのうちのどのコネクションがソーシャル推薦を言及しているのか、またはアクションのうちのどのタイプのアクションがその推薦で言及されているのかを決定するために、アフィニティの度合615の関数を使用することができる。そのとき、アフィニティの度合615は、ユーザが、他のユーザによって掲示されたコンテンツを閲覧することにどの程度興味を持っているのかを示すそれら予測関数610に、さらにまた、ユーザが、ソーシャル推薦で言及される可能性がある様々なアクションにどの程度興味を持っているのかを示す1つまたは複数の予測関数610に、基づかせることができる。よって、広告アルゴリズムは、アフィニティのその結果得られる度合が、どのソーシャル推薦が閲覧ユーザに対してより関心を引くものになるのかをより正確に決定するように、比較的重い重みをこれらの予測関数610に与えることになる。そのとき、広告アルゴリズムは、アフィニティのその結果得られる度合を使用して、ソーシャル推薦を選択することになり、それによって広告の変更の尤度を増加させる。
【0029】
第2の実施例として、ユーザの間の通信を中継するメッセージング・アプリケーションのためのプロセスでは、ソーシャル・アルゴリズムは、ユーザが、特定の発信ユーザによって送られたメッセージにどのレベルの興味を持つ可能性があるのかを決定するために、アフィニティの度合615の関数を使用することができる。この目的のためのアフィニティの度合615は、ユーザが、ユーザのコネクションによって掲示されたコンテンツを閲覧することにどの程度興味があるのか、および/またはユーザが、全体的に互いにメッセージをどの程度頻繁に送り合っているのかを示す予測関数610に、さらにまた、ユーザが、異なるタイプのメッセージを掲示するか、またはそれにアクセスすることにどの程度興味があるのかを示す1つまたは複数の予測関数610に、基づかせることができる。よって、ソーシャル・アルゴリズムは、アフィニティのその結果得られる度合によって、どのメッセージが閲覧ユーザに対してより興味を引くものになるのかを正確に決定するように、これらの予測関数610に比較的重く重みを付けることになる。重み付けられた予測関数610によってそのようにできるようになる、アフィニティ関数が高度に調節可能であるという性質のため、アフィニティ関数は、いくつかの異なる目的のために使用されてもよい。
【0030】
図7は、一実施形態による、ソーシャル・ネットワーキング・システムの環境のハイ・レベルのブロック図である。
図7は、ソーシャル・ネットワーキング・システム100、ユーザ装置202およびネットワーク708によって接続される外部サーバ704を例示する。ソーシャル・グラフ718は、各ユーザが有するコネクションであって、ソーシャル・ネットワーキング・システム100の他のユーザとのコネクションを記憶する。また、ソーシャル・グラフ718は、いくつかの実施形態では、二次コネクションを記憶する
ことができる。よって、そのコネクションは、直接的、または間接的であってよい。たとえば、ユーザAがユーザBの一次コネクションであるが、しかしユーザCの一次コネクションではなく、そしてユーザBは、ユーザCの一次コネクションである場合、ユーザCは、ソーシャル・グラフ718上でユーザAの二次コネクションになる。
【0031】
アクション・ストア240は、ソーシャル・ネットワーキング・システム100のユーザによって行われたアクションを、これらのアクションと関連付けられる時刻の表示およびアクションと関連付けられる任意のオブジェクトへの参照とともに記憶する。さらに、アクション・ストア740は、規定したカテゴリのアクションに関する統計データを記憶することができる。たとえば、所与のユーザについて、アクション・ストア740は、ユーザによる30日間のウォール・ポスト数、ユーザが送ったメッセージ、30日間にユーザが掲示した写真数および30日間にユーザのコメントを受け取った注目すべきユーザの数を含むことができる。2人のユーザ、たとえばユーザAとユーザBとの間の所与のコネクションについて、アクション・ストア740は、ユーザAからユーザBへのプロフィール・ページの閲覧数、ユーザAからユーザBへの写真ページの閲覧数、ユーザAからユーザBへのメッセージ数およびユーザAとユーザBが同一の写真にタグを付けられた回数などのアクションを含むことができ、これらのアクションは、タイム・スタンプと関連付けられることができるか、または切り取り(たとえば24時間、90日など)によってフィルタリングされることができる。アクション・ストア740に記録されたアクションは、集められたアクションであってよく、そのアクションは、ソーシャル・ネットワーキング・システム100がアクションの選択をユーザに提案したことに応答して、ユーザが行うものである。
【0032】
予測モジュール720は、予測関数610のセットを計算することに関与し、それら関数は、対応するアクションのセットをユーザが行うか否かを予測する。上記で述べたように、各予測関数610は、予測関数610と関連付けられる特定のアクションに対するユーザの興味を表すことができる。ユーザの過去のアクティビティは、同一のアクティビティに対してユーザが将来に持つ興味を示す信号として使用することができる。いくつかの実施形態では、予測関数610は、所定のアクションと関連付けられるユーザの過去のアクティビティを使用して学習させる機械学習アルゴリズムを使用して生成される。よって、予測モジュール720は、アクションのセットのそれぞれについて予測関数610を提供し、予測関数610は、入力としてユーザの過去のアクティビティを受け取り、次いで対応するアクティビティにユーザが係わることになる尤度の度合を出力することができる。
【0033】
いくつかの実施形態では、予測関数610の1つまたは複数は、ユーザの過去のアクティビティからの信号の強さが時間とともに減衰する減衰係数を使用することができる。さらに、異なる予測関数610は、異なる速さで過去のアクティビティを減衰させることができる。たとえば、新しいコネクションを加えるようなユーザ・アクティビティのいくつかのタイプは、他のユーザのステータスに対してコメントするような、より一時的な興味を示すアクティビティの他のタイプよりさらに持続する興味を示す。したがって、予測関数610は、過去のアクティビティの作用を、そのアクティビティが時間の経過とともにより関連性が無くなる可能性がどれくらいであるのかに関する理解に基づき、減衰させることができる。この目的のために、様々な減衰メカニズムを使用することができる。たとえば、予測関数610は、ユーザの振る舞いに関する統計データを減衰させるために、指数関数的な減衰などの数学関数を使用することができる。別の実施形態では、減衰は、24時間または30日など、具体的な時間窓内で起きたユーザの振る舞いに関するそれらの統計データだけを選択することによって、実行することができる。
【0034】
一実施形態では、予測関数610は、式(1)に示すような2つのアフィン関数の比と
して実現される。アフィン関数の分子および分母は、入力としてユーザの過去のアクティビティの統計データを受け取る。
【0035】
【数1】
式中、
Pは、予測関数610であり、
a
i(i=0、1、2、...、N)は、アフィン関数中の分子の係数であり、
b
i(i=0、1、2、...、M)は、アフィン関数中の分母の係数であり、
x
i(i=1、2、...、N+M)は、予測関数Pに関連するユーザの過去のアクティビティに対する統計データである。
【0036】
アフィン関数の分母は、アフィン関数の分子の正規化を表すことができる。たとえば、ユーザが作成したコメント数は、他の統計データの中でも特に、ユーザがソーシャル・ネットワーキング・システム100上で活動した回数によって正規化されることができる。具体的には、b
i(i=0、1、2、...、M)を変更することによって、正規化パターンを変化させることができる。いくつかの実施形態では、係数、すなわちa
i(i=0、1、2、...、N)およびb
i(i=0、1、2、...、M)のいくつか、またはすべては、機械学習を通じて決定され、機械学習は、予測モジュール720によって実装されることができる。特定の実施形態では、管理された機械学習アルゴリズムは、統計的に有意な数のユーザのいくつかのオプションを提供して、ユーザの応答をモニタリングすることによって、収集を通じて得られた、学習させるためのデータとともに使用される。別の実施形態では、管理された機械学習アルゴリズムは、過去のユーザ・アクティビティおよびアクションの選択に対するこれまでの応答に完全に基づき学習させる。また、予測関数610は、非線形のものとすることができる。例の実施形態は、ファミリについて予測関数610を実装し、その予測関数610は、ファミリのメンバについて「含意(if−then)」の構図を含む。すなわち、予測関数610は、それが親または子について計算されているか否かに応じて異なるように計算される。
【0037】
ソーシャル・ネットワーキング・システム100中のいくつかの予測関数610は、ソーシャル・ネットワーキング・システム100中のユーザの通信に関するアクションを予測することができる。特に通信に関する統計データは、ブロードキャストデータおよび通信データを含むことができる。ブロードキャストデータは、たとえば、所与の期間中にユーザが掲示した写真数、所与の期間中にユーザによるアプリケーションを通じた掲示数、およびユーザが掲示したか、またはそうでなければ他のユーザのグループに配信した任意の他の通信を含むことができる。通信データは、たとえば、所与の期間中のユーザからの「いいね!」の投稿数、所与の期間中にユーザが掲示したコメント数、およびユーザの通信アクティビティに関する任意の他の情報を含むことができる。
【0038】
同様に、ソーシャル・ネットワーキング・システム100中のいくつかの予測関数610は、ソーシャル・ネットワーキング・システム100中のコンテンツのユーザの観察に関連するアクションを予測することができる。特に観察に関連する統計データは、たとえば所与の期間中に別のユーザのプロフィール・ページをユーザが閲覧した回数、所与の期間中にユーザが写真を閲覧した回数、所与の期間中にソーシャル推薦を含む広告を閲覧した回数、およびユーザがコンテンツを閲覧することを含む、任意の他のアクティビティを
含むことができる。
【0039】
最後に、ソーシャル・ネットワーキング・システム100中のいくつかの予測関数610は、ソーシャル・ネットワーキング・システムの1または複数の他のユーザとユーザが一致することに関連するアクションを予測することができる。特に一致することに関連する統計データは、たとえば、2以上のユーザが同一の写真でタグを付けられた、同一の場所にチェックインした、または同一のイベントに出席する予定であることを確認した(たとえばRSVPを通じて)割合、および複数のユーザに関連するソーシャル・ネットワーキング・システム中のアクションまたはオブジェクトに関する任意の他のアクティビティを含むことができる。
【0040】
アフィニティ・モジュール760は、ソーシャル・ネットワーキング・システム100からのユーザに関する入力データに基づき、予測関数610を使用してアフィニティの度合615をもたらす。
図6の実施形態では、アフィニティ・モジュール760は、式(2)に示すように、線形で予測関数を加算する。しかし、他の実装形態も等しく実現可能である。
【0041】
【数2】
式中、
Aは、要求されるアフィニティの度合615であり、
P
i(i=0、1、2、...、s)は、ソーシャル・ネットワーキング・システム100中のs予測関数610であり、
β
i(i=1、2、...、s)は、ソーシャル・ネットワーキング・システム100中のs予測関数610に割り当てられる重み605である。
【0042】
図8は、ユーザに関するアフィニティの度合615を、要求に基づき計算するための方法の一実施形態を例示する。ソーシャル・ネットワーキング・システム100は、先ずユーザについてのアフィニティの度合615を求めるプロセスからの要求を、様々な予測関数610に割り当てられる重み605とともに受け取る(810)。その要求は、アフィニティ評価値がそれについて望まれるメッセージ、またはそのメッセージから抽出される1つまたは複数の属性を含むことができる。次いで、ソーシャル・ネットワーキング・システム100は、予測モジュール820でユーザに関する予測関数610を計算する(820)。既に計算されている予測関数610は、アフィニティの全体の度合615を決定する(830)ために結合され、次いで、それは、要求プロセスに提供される(840)。
【0043】
図3は、コンピュータ・システム300の一例を示し、これは、本発明のいくつかの実施形態とともに使用することができる。たとえば、コンピュータ・システム300は、ソーシャル・ネットワーキング・システムの1つまたは複数のサーバを実装するために使用することができ、それは、上記に述べたサーバ側の機能を果たす。この開示では、コンピュータ・システム300が、任意の適切な物理的形態であることが期待されている。例示のみを目的としており限定するものではないが、コンピュータ・システム300は、埋め込み型コンピュータ・システム、システム・オン・チップ(SOC)、シングル・ボード・コンピュータ・システム(SBC)(たとえば、コンピュータ・オン・モジュール(COM)またはシステム・オン・モジュール(SOM))など)、デスクトップ・コンピュ
ータ・システム、ラップトップまたはノートブックのコンピュータ・システム、タブレット・コンピュータ・システム、対話型キオスク(interactive kiosk)、メインフレーム、コンピュータ・システム網、携帯電話、携帯端末(PDA)、サーバあるいはこれらの2以上の組み合わせとすることができる。適切な場合、コンピュータ・システム300は、1つまたは複数のコンピュータ・システム300を含むことができる;統合する、または分散することができる;複数の場所に及ぶことができる;複数のマシンに亘ることができる;クラウド中に存在することができ、それは、1つまたは複数のネットワーク中に1つまたは複数のクラウドコンポーネントを含むことができる。具体的な実施形態では、コンピュータ・システム300は、プロセッサ302、メモリ304、ストレージ306、入出力(I/O)インタフェース308、通信インタフェース310およびバス312を含む。具体的な実施形態では、プロセッサ302は、命令を実行するためのハードウェアを含み、これらの命令からコンピュータ・プログラムが作られる。例示のみを目的としており限定するものではないが、命令を実行するためには、プロセッサ302は、内部レジスタ、内部キャッシュ、メモリ304またはストレージ306から命令を取り出す(またはフェッチする)ことができ;命令をデコードして実行することができ;次いで、1つまたは複数の結果を内部レジスタ、内部キャッシュ、メモリ304またはストレージ306に書き込むことができる。
【0044】
具体的な実施形態では、メモリ304は、プロセッサ302が実行する命令、またはプロセッサ302がそれに基づき動作するデータを記憶するためのメイン・メモリを含む。例示のみを目的としており限定するものではないが、コンピュータ・システム300は、ストレージ306または別の送信元(たとえば別のコンピュータ・システム300など)からメモリ304に命令をロードすることができる。そのとき、プロセッサ302は、メモリ304から内部レジスタまたは内部キャッシュに命令をロードすることができる。命令を実行するためには、プロセッサ302は、内部レジスタまたは内部キャッシュから命令を取り出して、それらをデコードすることができる。1つまたは複数のメモリ・バス(それらは、それぞれがアドレス・バスおよびデータ・バスを含むことができる)は、プロセッサ302をメモリ304に結合することができる。バス312は、以下で述べるように、1つまたは複数のメモリ・バスを含むことができる。具体的な実施形態では、1つまたは複数のメモリ管理ユニット(MMU)が、プロセッサ302とメモリ304との間に存在して、プロセッサ302が要求するメモリ304へのアクセスを容易にする。具体的な実施形態では、メモリ304は、ランダム・アクセス・メモリ(RAM)を含む。このRAMは、適切な場合、揮発性メモリとすることができる。
【0045】
具体的な実施形態では、ストレージ306は、データまたは命令のためにマスストレージを含む。例示のみを目的としており限定するものではないが、ストレージ306は、HDD、フロッピー(登録商標)・ディスク・ドライブ、フラッシュ・メモリ、光ディスク、磁気光ディスク、磁気テープまたはユニバーサル・シリアル・バス(USB)ドライブまたはこれらの2以上の組み合わせを含むことができる。具体的な実施形態では、ストレージ306は、不揮発性の半導体メモリである。具体的な実施形態では、ストレージ306は、リード・オンリ・メモリ(ROM)を含む。適切な場合、このROMは、マスクでプログラムされるROM、プログラマブルROM(PROM)、消去可能なPROM(EPROM)、電気的消去可能なPROM(EEPROM)、電気的書換え可能なROM(EAROM)またはフラッシュ・メモリ、あるいはこれらの2以上の組み合わせとすることができる。この開示で特定のストレージを述べて例示しているが、この開示では、任意の適切なストレージであることが期待されている。
【0046】
具体的な実施形態では、I/Oインタフェース308は、コンピュータ・システム300と1つまたは複数のI/O装置との間で通信するために1つまたは複数のインタフェースを形成するハードウェア、ソフトウェアまたはその両方を含む。コンピュータ・システ
ム300は、これらのI/O装置の1つまたは複数を、適切な場合に含むことができる。これらのI/O装置の1つまたは複数は、人とコンピュータ・システム300との間で通信できるようにすることができる。具体的な実施形態では、通信インタフェース310は、コンピュータ・システム300と1つまたは複数の他のコンピュータ・システム300または1つまたは複数のネットワークとの間における通信(たとえばパケット・ベースの通信など)のために1つまたは複数のインタフェースを形成するハードウェア、ソフトウェアまたはその両方を含む。例示のみを目的としており限定するものではないが、通信インタフェース310は、イーサネット(登録商標)または他の有線ベースのネットワークとの通信のためにネットワーク・インタフェース・コントローラ(NIC)またはネットワーク・アダプタを、あるいはWI−FIネットワークなどの無線ネットワークと通信するために無線NIC(WNIC)または無線アダプタを含むことができる。この開示では、このために、任意の適切なネットワークおよび任意の適切な通信インタフェース310であることが期待されている。具体的な実施形態では、バス312は、コンピュータ・システム300の構成要素を互いに結合するハードウェア、ソフトウェアまたはその両方を含む。
【0047】
上記に述べたクライアント側の機能は、コンピュータ可読記憶媒体上に記憶される一連の命令として実装されることができ、その命令は、実行されたとき、プログラマブル・プロセッサに上記に述べた動作を実施させる。通信装置122は、様々な異なるハードウェアおよび計算システムにおいて実装されることができるが、
図4は、様々な具体的な実施形態による、クライアント装置または携帯型装置の実施例の計算プラットフォームの主な構成要素を示す概略図である。具体的な実施形態では、計算プラットフォーム402は、コントローラ404、メモリ406および入出力サブシステム410を含むことができる。具体的な実施形態では、1つまたは複数のプロセッサおよび/または1つまたは複数のマイクロコントローラを含むことができるコントローラ404は、命令を実行し、かつ計算プラットフォームと関連する動作を実行するように構成することができる。様々な実施形態では、コントローラ404は、シングル・チップ、マルチ・チップ、および/または1つまたは複数の集積回路およびプリント回路基板を含む他の電気的構成要素として実装されることができる。コントローラ404は、任意選択で、命令、データまたはコンピュータ・アドレスを一時的にローカルに記憶するためにキャッシュ・メモリ・ユニットを含むことができる。一例では、コントローラ404は、メモリから取り出された命令を使用して、計算プラットフォーム402の構成要素の間における入力データおよび出力データの受け取りおよび操作を制御することができる。一例では、コントローラ404は、計算プラットフォーム402の一定の処理タスクに、たとえば2D/3Dグラフィック処理、画像処理またはビデオ処理に専用の1つまたは複数のプロセッサまたは1つまたは複数のコントローラを含むことができる。
【0048】
コントローラ404は、適切なオペレーティング・システムとともに、コンピュータ・コードの形態で命令を実行し、データを生成し、そしてそれを使用するように動作することができる。例示のみを目的としており限定するものではないが、オペレーティング・システムは、他の適切なオペレーティング・システムの中でも特に、ウィンドウズ(登録商標)(Windows)ベース、マック(Mac)ベース、またはユニックス(Unix(登録商標))またはリナックス(登録商標)(Linux(登録商標))ベース、あるいはシンビアン(Symbian)ベースであってもよい。オペレーティング・システム、他のコンピュータ・コードおよび/またはデータは、コントローラ404に動作可能に結合されるメモリ406内に物理的に記憶されることができる。メモリ406は、1つまたは複数の記憶媒体を包含し、そして一般に、コンピュータ・コード(たとえばソフトウェアおよび/またはファームウェア)および計算プラットフォーム402が使用するデータを記憶するために場所を提供することができる。一例では、メモリ406は、リード・オンリ・メモリ(ROM)および/またはランダム・アクセス・メモリ(RAM)を含む
、様々な有体のコンピュータ可読記憶媒体を含むことができる。当分野でよく知られているように、ROMは、データおよび命令をコントローラ404に一方向で転送するように動作し、RAMは、通常、データおよび命令を双方向に転送するために使用される。また、メモリ406は、一例では、コントローラ404に双方向で結合されるメモリの他の適切な形態の中でも特に、ハード・ディスク・ドライブ(HDD)、半導体ドライブ(SSD)、フラッシュ・メモリ・カード(たとえばSecured Digital CardまたはSDカード、embedded MultiMediaCardまたはeMMDカード)の形態である、1つまたは複数の固定ストレージを含むことができる。また、情報は、必要なときに計算プラットフォーム402中にロードされて、またはインストールされて、1つまたは複数の取り外し可能な記憶媒体上に存在することができる。一例では、いくつかの適切なメモリ・カード(たとえばSDカード)のいずれかを、一時的に、または永久に計算プラットフォーム402中に装着することができる。
【0049】
入出力サブシステム410は、コントローラ404に動作可能に接続される1つまたは複数の入出力装置を含むことができる。たとえば、入出力サブシステムは、キーボード、マウス、1つまたは複数のボタン、サム・ホイールおよび/またはディスプレイ(たとえば液晶ディスプレイ(LCD)、発光ダイオード(LED)、干渉変調器ディスプレイ(IMOD:Interferometric modulator display)または任意の他の適切なディスプレイ技術)を含むことができる。一般に、入力装置は、データ、コマンドおよび応答を外部環境から計算プラットフォーム402中に転送するように構成される。ディスプレイは、一般に、計算プラットフォーム402のユーザと携帯型装置上で動作するオペレーティング・システムまたはアプリケーション(複数可)との間に使いやすい視覚インタフェースを提供するグラフィカル・ユーザ・インタフェース(GUI)を表示するように構成される。一般に、GUIは、プログラム、ファイルおよびグラフィック画像を有する動作オプションを提示する。ユーザは、動作の間、そのグラフィック画像と関連する機能およびタスクを起動するために、ディスプレイ上に表示される様々なグラフィック画像を選択して作動させることができる。また、入出力サブシステム410は、タッチ・パッドおよびタッチ・スクリーンなど、タッチ・ベースの装置を含むことができる。タッチ・パッドは、ユーザのタッチ・ベースの入力を検出する表面を含む入力装置である。同様に、タッチ・スクリーンは、ユーザのタッチ入力の有無および場所を検出するディスプレイである。また、入出力システム410は、2回または3回の指のタッチなど、2回以上のタッチ入力の有無、場所および動きを識別することができるデュアル・タッチまたはマルチ・タッチのディスプレイまたはタッチ・パッドを含むことができる。
【0050】
具体的な実施形態では、計算プラットフォーム402は、その様々な機能を容易にするために、コントローラ404に動作可能に接続されるオーディオ・サブシステム412、カメラ・サブシステム412、無線通信サブシステム416、センサ・サブシステム418および/または有線通信サブシステム720をさらに含むことができる。たとえば、スピーカ、マイクロフォンおよびコーデック・モジュールを含み、音声信号を処理するように構成されるオーディオ・サブシステム412は、音声認識、音声レプリケーション(voice replication)、デジタル記録および電話機能など、音声によって有効になる機能を容易にするために、利用することができる。たとえば、光センサ(たとえば電荷結合素子(CCD)または相補型金属酸化膜半導体(CMOS)画像センサ)を含むカメラ・サブシステム412は、写真およびビデオ・クリップの記録など、カメラ機能を容易にするために、利用することができる。たとえば、無線通信サブシステム720は、ファイル転送のためにユニバーサル・シリアル・バス(USB)ポートまたはローカル・エリア・ネットワーク(LAN)への接続のためにイーサネット・ポートを含むことができる。
【0051】
無線通信サブシステム416は、1つまたは複数の無線ネットワーク上で、たとえば、無線PAN(WPAN)(たとえばブルートゥースWPAN、赤外線PANなど)、WI−FIネットワーク(たとえば802.11a/b/g/n WI−FIネットワーク、802.11s網形ネットワークなど)、WI−MAXネットワーク、セル方式携帯電話網(たとえばGlobal System for Mobile Communications(GSM(登録商標))ネットワーク、Enhanced Data Rates for GSM Evolution(EDGE)ネットワーク、Universal Mobile Telecommunications System(UMTS)ネットワークおよび/またはLong Term Evolution(LTE)ネットワークなど)上で動作するように設計することができる。さらに、無線通信サブシステム416は、計算プラットフォーム402を他の無線装置のための基地局として構成することができるように、ホスティング(hosting)プロトコルを含むことができる。
【0052】
センサ・サブシステム418は、計算プラットフォーム402の追加の入力をもたらし、複数の機能を容易にするために、1つまたは複数のセンサ装置を含むことができる。たとえば、センサ・サブシステム418は、場所の測位を行うためのGPSセンサ、高度を測定するために高度計、携帯型装置の方向を決定するために運動センサ、カメラ・サブシステム414による写真機能のために光センサ、大気温度測定のために温度センサおよび/またはセキュリティ・アプリケーション(たとえば指紋読取装置)のために生体センサを含むことができる。
【0053】
本明細書では、コンピュータ可読記憶媒体への言及は、構造を備えている1つまたは複数の非一時的な有体のコンピュータ可読記憶媒体を包含する。例示のみを目的としており限定するものではないが、コンピュータ可読記憶媒体は、半導体ベースまたは他の集積回路(IC)(たとえばフィールド・プログラマブル・ゲート・アレイ(FPGA)または特定用途向け集積回路(ASIC)など)、ハード・ディスク、HDD、ハイブリッド・ハード・ドライブ(HHD)、光ディスク、光ディスク・ドライブ(ODD)、磁気光ディスク、磁気光ドライブ、フロッピー・ディスク、フロッピー・ディスク・ドライブ(FDD)、磁気テープ、ホログラフィック記憶媒体、半導体ドライブ(SSD)、RAMドライブ、SDカード、SDドライブ(SECURE DIGITAL drive)、マルチメディア・カード(MMC:MultiMediaCard)、埋め込み型MMC(eMMC:embedded MMC)カード、または別の適切なコンピュータ可読記憶媒体、あるいはこれらの2以上の組み合わせを適切な場合に含むことができる。本明細書では、コンピュータ可読記憶媒体への言及は、米国特許法第101条下で特許保護に適格でない、任意の媒体を除外する。本明細書では、コンピュータ可読記憶媒体への言及は、信号送信の一時的な形態(本質的に伝搬する電気または電磁気の信号など)を、それらが米国特許法第101条下で特許保護に適格でない範囲において除外する。
【0054】
本明細書では、ソフトウェアへの言及は、1つまたは複数のアプリケーション、バイトコード、1つまたは複数のコンピュータ・プログラム、1つまたは複数の実行ファイル、1つまたは複数の命令、ロジック、マシン・コード、1つまたは複数のスクリプトまたはソース・コード、およびその逆も、適切な場合に包含することができる。具体的な実施形態では、ソフトウェアは、1つまたは複数のアプリケーション・プログラミング・インタフェース(API)を含む。本開示では、書かれた、またはそうでなければ、任意の適切なプログラミング言語またはプログラミング言語の組み合わせで表現された、任意の適切なソフトウェアであることが期待されている。具体的な実施形態では、ソフトウェアは、ソース・コードまたはオブジェクト・コードとして表現される。具体的な実施形態では、ソフトウェアは、たとえばC、パール(Perl)、ジャバスクリプト(JavaScript(登録商標))またはその適切な機能拡張など、ハイレベルプログラミング言語で表現される。具体的な実施形態では、ソフトウェアは、アセンブリ言語(またはマシン・
コード)など、ローレベルプログラミング言語で表現される。具体的な実施形態では、ソフトウェアは、ジャバ(JAVA(登録商標))で表現される。具体的な実施形態では、ソフトウェアは、ハイパー・テキスト・マークアップ・ランゲージ(HTML:Hyper Text Markup Language)、エクステンシブル・マークアップ・ランゲージ(XML:Extensible Markup Language)または他の適切なマークアップ・ランゲージで表現される。
【0055】
本開示は、本明細書における例の実施形態に対して、当業者であれば理解されるであろうすべての変更、置換、変形、調整および修正を包含する。同様に、適切な場合、添付の請求項は、本明細書における例の実施形態に対して、当業者であれば理解されるであろうすべての変更、置換、変形、調整および修正を包含する。