(57)【特許請求の範囲】
【請求項１】
少なくともプロセッサとメモリとを備えるユーザのコンピューティングデバイスの上で実行する統合フレームワークによって実装されるコンピュータ実施方法であって、
前記統合フレームワークで前記ユーザからサービスを求める要求を受け取ることであって、前記サービスは、前記統合フレームワーク以外のサービスであり、（i）前記ユーザのコンピューティングデバイス、または（ii）前記ユーザのコンピューティングデバイスの外部にあるデバイスのうちの少なくとも１つに存在する、ことと、
前記統合フレームワークを用いて、（i）前記ユーザのコンピューティングデバイス、または（ii）前記ユーザのコンピューティングデバイスの外部にあるデバイスのうちの少なくとも１つに存在する複数のサービスのレジストリにアクセスすることであって、前記複数のサービスの各々が信頼レベルの階層の信頼レベルに関連づけられていることと、
信頼レベルの前記階層に従い、前記信頼レベルの最も信頼できるレベルから開始して、より信頼できない信頼レベルのプロバイダが探索されるよりも前に、より信頼できる信頼レベルに関連づけられたプロバイダが探索されるように、前記要求されたサービスのプロバイダが見つかるまで、または前記要求されたサービスのプロバイダを見つけることなく前記階層のすべてのレベルが探索されるまで、前記要求されたサービスのプロバイダを前記レジストリで反復的に探索することと、
前記要求されたサービスのプロバイダを見つけると、前記統合フレームワークから前記要求されたサービスの前記見つかったプロバイダに対し命令が発行され、前記要求に応答して前記見つかったプロバイダが前記サービスを前記ユーザのコンピューティングデバイスに提供することを要求することと
を含む、コンピュータ実施方法。
【請求項２】
前記複数のサービスのプロバイダのうち最も信頼できる信頼レベルに関連づけられたプロバイダが、前記ユーザのコンピューティングデバイスの上で利用可能なプロバイダである、請求項１に記載のコンピュータ実施方法。
【請求項３】
前記複数のサービスのプロバイダのうち２番目に信頼できる信頼レベルに関連づけられたプロバイダが、兄弟コンピューティングデバイス上で利用可能なプロバイダである、請求項２に記載のコンピュータ実施方法。
【請求項４】
前記複数のサービスのプロバイダのうち３番目に信頼できる信頼レベルに関連づけられたプロバイダが、前記関連づけられたユーザにアクセス権限があるネットワークのデバイスの上で利用可能なプロバイダである、請求項３に記載のコンピュータ実施方法。
【請求項５】
前記要求されたサービスが前記ユーザのコンピューティングデバイス上で利用可能な第１のプロバイダおよび兄弟コンピューティングデバイス上で利用可能な第２のプロバイダから利用可能であり、かつ、前記方法が、
１つまたは複数の基準に従い、前記サービスを前記第１のプロバイダと前記第２のプロバイダのいずれから取得すべきか評価することと、
前記１つまたは複数の基準に従い、前記サービスを前記第２のプロバイダから取得すると決定すると、前記第２のプロバイダを前記要求されたサービスの前記見つかったプロバイダとして決定することとをさらに含む、請求項３に記載のコンピュータ実施方法。
【請求項６】
前記１つまたは複数の基準が、前記ユーザのコンピューティングデバイス上で利用可能な電力の決定、前記ユーザのコンピューティングデバイスおよび前記兄弟コンピューティングデバイスが利用可能なリソースの決定、または前記ユーザのコンピューティングデバイスが利用可能なネットワーク接続の決定のいずれか１つを含む、請求項５に記載のコンピュータ実施方法。
【請求項７】
少なくともプロセッサとメモリとを備えるコンピューティングシステムの上の統合フレームワークによって実行されるときに、請求項１から６に関して上記に記載された方法のいずれか１つを実行するコンピュータ実行可能命令を担持する、コンピュータ可読媒体。
【請求項８】
プロセッサとメモリとを備えるコンピュータシステムであって、前記プロセッサが前記メモリに格納されている命令を、追加コンポーネントの一部としてまたは追加コンポーネントと共に実行し、前記追加コンポーネントが、
各センサがサービスのプロバイダである、前記コンピュータシステム上に配置された複数のセンサと、
各アプリがサービスのプロバイダである、前記コンピュータシステム上にインストールされた複数のアプリと、
前記コンピュータシステム上のサービスのプロバイダのレジストリを維持する統合フレームワークであって、サービスの前記プロバイダが前記複数のセンサと前記複数のアプリとを含み、前記コンピュータシステムの外部のデバイスからのサービスの複数のプロバイダをさらに含み、前記レジストリ内のサービスの前記プロバイダの各々が信頼レベルの階層の信頼レベルに関連づけられる、統合フレームワークと
を含み、前記プロセッサは、サービスを求める要求に応答して、前記統合フレームワークに、
信頼レベルの前記階層に従い、前記信頼レベルの最も信頼できるレベルから開始して、より信頼できない信頼レベルのサービスのプロバイダが探索されるよりも前に、より信頼できる信頼レベルに関連づけられたサービスのプロバイダが探索されるように、前記要求されたサービスのプロバイダが見つかるまで、または前記要求されたサービスのプロバイダを見つけることなく前記階層のすべてのレベルが探索されるまで、前記要求されたサービスのプロバイダを前記レジストリで反復的に探索することと、
前記要求されたサービスのプロバイダを見つけると、前記要求されたサービスの前記見つかったプロバイダに対し、前記要求に応答して前記プロセッサに前記サービスを提供するように命令を発行することと
を行わせる命令を実行する、コンピュータシステム。
【請求項９】
信頼レベルの前記階層の最も信頼できる信頼レベルに関連づけられたサービスのプロバイダが、前記コンピュータシステム上で利用可能なサービスのプロバイダであり、かつ、信頼レベルの前記階層の２番目に信頼できる信頼レベルに関連づけられたサービスのプロバイダが、兄弟コンピューティングデバイス上で利用可能なサービスのプロバイダである、請求項８に記載のコンピュータシステム。
【請求項１０】
前記コンピュータシステムがユーザに関連づけられており、かつ、信頼レベルの前記階層の３番目に信頼できる信頼レベルに関連づけられたサービスのプロバイダが、前記関連づけられたユーザにアクセス権限があるネットワークのデバイスの上で利用可能なサービスのプロバイダである、請求項９に記載のコンピュータシステム。
【請求項１１】
前記統合フレームワークが、前記要求されたサービスが前記コンピュータシステム上で利用可能なサービスの第１のプロバイダおよび兄弟コンピュータシステム上で利用可能なサービスの第２のプロバイダから利用可能であると決定するように構成され、
１つまたは複数の基準に従い、前記サービスをサービスの前記第１のプロバイダとサービスの前記第２のプロバイダのいずれから取得すべきか評価することと、
前記１つまたは複数の基準に従い、前記サービスをサービスの前記第２のプロバイダから取得すると決定すると、前記第２のプロバイダを前記要求されたサービスの前記見つかったプロバイダとして決定することとを行うようにさらに構成された、請求項１０に記載のコンピュータシステム。
【発明の詳細な説明】
【背景技術】
【０００１】
[0001]  モバイルコンピューティングデバイスの利用における一態様として、デバイスに１つまたは複数のサービスを実行する種々のアプリが含まれており、さらにユーザがこのようなアプリをインストールするというものがある。一般に「アプリ」とは、１つのタスクまたは関連タスクの小さい集合を実行するための小さい専用ソフトウェアプログラムである。モバイルデバイス上の一連のアプリが複数のベンダーのプログラムとして提供されているのは、よくあることである。さらに、それぞれのアプリは、典型的には、他のアプリまたはアプリケーションとは別々に動作するよう設計されるため、各々がユーザデータ（個人情報を含む、デバイスユーザに関連するデータ）の固有の集合を維持することになる。
【０００２】
[0002]  一人の人物／ユーザが、モバイルコンピューティングデバイスに加えて、他のコンピューティングデバイスを所有および／使用しているのもごく当たり前である。例えば、ユーザが、一日の間に、スマートフォンの他に、タブレットコンピュータ、ラップトップコンピュータ、ゲーム機、およびデスクトップコンピュータといった１つまたは複数の他のコンピューティングデバイスを使用することもある。（それぞれがコンピューティングデバイスである）これらのデバイスの各々は、互いに異なる能力を有し、保有することになる少なくとも一部のアプリおよび／またはアプリケーションは他のすべてのデバイスにインストールされるとは限らない。一方、いくつかのデバイスまたはすべてのデバイスの間でアプリが一部重複することもある。さらに、これらのコンピューティングデバイスの各々は、そのユーザに関する個人情報（パスワード、選好、人口統計学的属性情報、アカウント情報、所在地など）を格納および／または維持している。
【０００３】
[0003]  一連のアプリはユーザのために機能／サービスの堅牢な集合を提供しうるが、アプリの各々によって提供されるサービスおよびコンテンツの統合点は、ユーザである場合が多い。しかし、自分のコンピューティングデバイス（または複数のコンピューティングデバイス）に自分のことを理解させて、その理解を基に各自の固有のニーズおよびコンテキストに合わせたパーソナル化されたアシスタンスを提供させたいと考えるユーザは、増えている。
【発明の概要】
【０００４】
[0004]  以下の「概要」は、「発明を実施するための形態」において以下にさらに説明される概念の選択を簡略化された形態で紹介するために提供される。この「概要」は、特許請求の範囲の主題の重要な特徴または必須の特徴を特定することを意図しているものではなく、特許請求の範囲の主題の範囲を制限することを意図するものでもない。
【０００５】
[0005]  開示される主題の態様によれば、アプリおよびサービスのクライアント側統合を提供するシステムおよび方法が提供される。コンピューティングデバイス上での統合フレームワークの実行により、種々のアプリ、アプリケーション、サービス、センサなどの統合が提供される。統合フレームワークは、サービスを求める要求を受け取ると、統合フレームワークに登録されている複数のプロバイダ各々の複数のサービスのレジストリにアクセスする。統合フレームワークに登録されているサービスの各々は、信頼レベルの階層の信頼レベルに関連づけられている。統合フレームワークは、信頼レベルの階層に従い、信頼レベルの最も信頼できるレベルから開始して、より信頼できない信頼レベルへと、要求されたサービスのプロバイダが見つかるまで、または要求されたサービスのプロバイダを見つけることなく階層のすべてのレベルが探索されるまで、要求されたサービスのプロバイダをレジストリで反復的に探索する。
【０００６】
[0006]  開示される主題の上記の態様および付随的な利点の多くは、以下の図面と併せて以下の説明を参照することによって、より深い理解がなされ、さらに容易に理解されるであろう。
【図面の簡単な説明】
【０００７】
【図１】[0007]開示される主題の態様を実装するのに好適な例示的ネットワーク環境を示す図である。
【図２】[0008]アプリおよびサービスのクライアント側統合を提供する際にコンピューティングデバイス上で実行されている、種々のコンポーネントおよびプロセスを示す図である。
【図３】[0009]モバイルコンピューティングデバイス上のアプリおよびサービスの信頼のレベルおよび実行順序を示す図である。
【図４】[0010]パーソナル化の進行（と共に比例して増加する個人情報へのアクセス量）に応じた個人情報セキュリティの関係を示すグラフ図である。
【図５】[0011]開示される主題の態様による、アプリおよびサービスを実行する例示的なルーチンの流れ図である。
【図６】[0012]開示される主題の態様による、クライアント側統合フレームワークとインタラクションを行う例示的なルーチンの流れ図である。
【図７】[0013]クライアント側統合フレームワークの階層にアプリおよびサービスを統合する例示的なルーチンの流れ図である。
【図８】[0014]より信頼できるレベルのサービスが利用可能であっても、より外側のレベルのサービスを利用すべきか否かに関して評価する、例示的なルーチンの流れ図である。
【図９】[0015]開示される主題の態様を実装するのに好適な例示的モバイルコンピューティングデバイスのブロック図である。
【発明を実施するための形態】
【０００８】
[0016]  明確にするため、本文書における「例示的」という用語は、何かの例示または実例となるものと解釈されるべきであり、その何かの理想的な例示および／または主たる例示と解釈されるべきではない。「個人情報」という用語は、関連づけられたユーザの情報、データ、メタデータ、選好、行動に加え、そのユーザと対話する際のルールにも対応している。一般に個人情報とは、関連づけられたユーザのいくつかの側面を表す、当該ユーザに関する情報である。個人情報は、（限定ではなく例示を意図するものであるが）性別、年齢、学歴、人口統計学的属性データ、居住地国、市民権などのデータを含みうる。個人情報は、選好および興味、専門知識、能力なども含む場合がある。さらに、個人情報は、パーソナルアシスタンスを提供する際に、関連づけられたユーザと対話するための（関連づけられたユーザによって確立されたルールならびに以下に説明する分析を通じて知得および/または推察されるルールを含む）ルールを含む場合がある。
【０００９】
[0017]  前述のように、「アプリ」という用語は、典型的には、コンピューティングデバイス上で１つのタスクまたは関連タスクの小さい集合を実行するための小さい専用ソフトウェアプログラムへの言及である。アプリは、コンピューティングデバイス上にプリインストールされている場合も、コンピューティングデバイスのユーザの指示に従ってインストールされる場合もある。「アプリケーション」という用語は、コンピューティングデバイス上で１つまたは複数のタスクを実行するソフトウェアプログラムへの言及である。典型的には、アプリケーションは、アプリよりも適用範囲の点で広範かつ堅牢であるが、アプリもアプリケーションも共にソフトウェアプログラムである。アプリもアプリケーションも共にソフトウェアプログラムであり、この両方共、開示される主題の態様を実装するのに好適なコンピューティングデバイスの上にインストールされうることから、用語に関して簡潔化を図るため、（特に異なる指摘がない限り）以降の「アプリ」という用語への言及は、アプリおよびアプリケーションの両方を包含するものと解釈されたい。
【００１０】
[0018]  以下に説明するように、統合フレームワークは、コンピューティングデバイス上に共にローカルに配置されたアプリおよびセンサだけでなく、（兄弟デバイスなどの）他のデバイスの上で利用可能なアプリおよびセンサも統合する。言うまでもなく、アプリおよびセンサ、デバイスなどは、個別にデータ、データストリーム、機能性、アクティビティなどを提供することができる。本開示の目的のために、統合フレームワークに登録されている種々のアプリ、センサ、デバイスなどのデータ、データストリーム、機能性、機能、アクティビティは、プロバイダ（アプリ、センサ、デバイスなど）によって提供されるサービス（データ、ストリーム、機能性など）と称することとする。
【００１１】
[0019]  パーソナル化されたアシスタンスを提供する一つの解決策は、多数のサブスクライバにパーソナル化されたアシスタンスを提供することのできるオンラインサービスを配備することである。そのために、世界中から収集される大量のデータを収集、格納、照合、分析、および操作する多数のコンピュータおよび／またプロセッサを利用する。このようなモノリシックなモデルでは、ユーザの各種のコンピュータの上のアプリがすべて、このモノリシックなオンラインサービスに依拠して、ユーザの所望するサービスを提供する。典型的には、サブスクライバ（パーソナル化されたアシスタンスを受けることを望む者）は、アプリを介してオンラインサービスに種々の個人情報を提供しており、オンラインサービスがサブスクライバの生活を数多くの側面から観察して可能な限り多くの個人情報を獲得するのを許している。サブスクライバが（特に自身のコンピュータに関して）行うほぼあらゆるアクティビティが捕捉され、さらなる個人情報を特定するために分析される。このようなアクティビティは、オンライン行動、購入、選好、所属先、銀行取引情報などを含むが、これらに限定されない。オンラインサービスは次いで、収集し維持している自身のサブスクライバの蓄積された個人情報に基づき、その演算能力を使ってパーソナル化されたアシスタンスを提供する。
【００１２】
[0020]  前述のような大規模なモノリシックオンラインサービスを運営するには高額な費用がかかる。そのような大規模なオンラインサービスの運用を続けるためには、オンラインサービス側に収益源が必要である。一方で、サブスクライバ／個々のユーザは、パーソナル化されたアシスタンスを無償で受けたいと望んでいる。モノリシックなオンラインサービスは、パーソナル化されたサービスの対価をサブスクライバに直接課金するのではなく、サブスクライバの個人情報から収益を得られる仕組みを作ることで収益源を生み出す。このような収益化を一般に「広告原資による」または「ベンダー原資による」と言う。オンラインサービスが自身のサブスクライバの個人情報を収益化する方法は、サブスクライバの中から、（オンラインサービスが受け取り、知り得た、サブスクライバの個人情報によって判断されるような）種々の個性、趣味、人口統計学的属性、およびその他の属性を持つ個人を特定し、そのような個人を対象に広告主に代わって広告を流すことによって、特定した情報から収益を生み出すというものである。言うまでもなく、（前述の）モノリシックなオンラインサービスが、そのサブスクライバを対象とする広告を売るのは、サブスクライバの個人情報から収益を生み出せる一つの方法に過ぎない。あるいは、オンラインサービスは、単に連絡先のリストおよび／または情報を売ることもできる。もちろん、サブスクライバに関する連絡先のリストおよび／または情報を売ることは、個人のプライバシーに関する懸念を生む。
【００１３】
[0021]  サブスクライバは、パーソナル化されたアシスタンスを「無償で」受けるのを歓迎する傾向が強いため、頻繁に提示される広告も許容してしまう。さらに、サブスクライバは、オンラインサービスが自分たちの個人情報をどの程度保有し、収益化／第三者（例えば、広告主、ベンダー、各種の組織など）に公開しているのか、ほとんど意識しておらず、それに気づいたとすれば、不安にかられるであろう。もちろん、オンラインサービス側では、サブスクライバには損害を与えないと主張することによってサブスクライバを懐柔するだろうが、オンラインサービス側は矛盾している。つまり、オンラインサービスは、そのサブスクライバの個人情報を（広告、連絡先リストの販売などを問わず）第三者に提供することによって収益を挙げている。さらに、第三者に提供される個人情報が具体的になればなるほど、オンラインサービス側にもたらされる金銭的報酬は増える。ところが、さらされる個人情報が具体的になるにつれて、個人情報をさらされた本人に対する迷惑行為のリスクと可能性も高まるのである。
【００１４】
[0022]  言うまでもなく、個人情報を（ユーザの個人情報の取扱いに節度を示すかどうかに関わらず）既知の第三者にさらすことのリスクを考慮に入れないとしても、多数のユーザ／サブスクライバの個人情報を大量に格納するだけで、オンラインサービスが、なりすまし犯罪者をひきつけ、おびき寄せる格好のターゲットを提供してしまうことは、不幸な事件が後を絶たないことからも明らかである。したがって、パーソナル化されたアシスタンスのレベルは、本人について知られている個人情報の量と直接的な相関関係がありうる一方で、（個人情報の漏えいまたは悪用のリスクに対する）本人の個人的なセキュリティも、本人についてオンラインサービスが保有する個人情報の量に左右される。図４に示すように、理想としては、高度な個人的セキュリティ（すなわち、個人情報におけるセキュリティ）かつ高度なパーソナル化であるが、モノリシックなオンラインサービスでは、パーソナル化のレベルが上がるにつれて、（本人の個人情報に関する）個人的セキュリティのレベルが下がるというのが現実である。
【００１５】
[0023]  モノリシックなオンラインサービスと対照的なものとして、開示される主題の態様に従う、個人の所有する１つのコンピューティングデバイス（または複数のコンピューティングデバイス）の上で動作するパーソナルデーモンについては、２０１４年２月２４日に出願された「Ｌｏｃａｌ  Ｐｅｒｓｏｎａｌ  Ｄａｅｍｏｎ」という名称の、関連する米国特許出願第１４／１８７５６７号に記載されている。関連出願に記載されているように、「デーモン」は、定義としては、コンピュータユーザの直接の制御下で実行されるのではなく、コンピューティングデバイスのバックグラウンドで実行される、コンピューティングデバイス上で動作する実行のプロセスまたはスレッドである。しかし、デーモンがコンピューティングデバイスのバックグラウンドで動作する間、コンピュータユーザはデーモンと対話し、この対話を通じてデーモンのアクティビティを指示することができる。さらに、「パーソナルデーモン」は、パーソナル化されたアシスタンスを提供する際に、コンピュータユーザの個人情報に対してアクセス、取得、推察、維持、および作用を行うデーモンである。パーソナルデーモンは、関連づけられたユーザのアクティビティを数多くの側面から観察して、ユーザに関するさらなる個人情報を（可能な限り、いつどこでも）特定し、推察し、かつ／または学習するだけでなく、ユーザに代わり行動するための、すなわち、ユーザにパーソナル化されたアシスタンスを提供するためのルールを推察し、学習する。さらに、パーソナルデーモンは、ユーザとのダイアログおよびその他の対話を通じて、特に、推察された情報および／またはユーザに代わって行動するためのルールに関して、ユーザに関する個人情報を学習および／または確認してもよい。これには、ユーザに関して以前導かれた推察を確認すること、ユーザの選好その他の個人情報を要求することなどが含まれる。「ローカルパーソナルデーモン」とは、「ローカルで」すなわち、ユーザのコンピューティングデバイスの上で動作するパーソナルデーモンである。ローカルパーソナルデーモンは、ユーザのコンピューティングデバイスの上で動作するが、ネットワーク上のサービスおよび情報にアクセスできることから、ローカルパーソナルデーモンは「クラウド端」の動作と言われる。本開示の目的のために、「パーソナルデーモン」および「ローカルパーソナルデーモン」は同義であると見なされたい。
【００１６】
[0024]  「パーソナルアシスタンス」という用語は、関連づけられたユーザにパーソナルアシスタンスを提供するパーソナルデーモンというコンテキストにおいて、基本的にユーザに代わり１つまたは複数のアクションを実行することと解釈されるべきである。典型的には、ただし必ずしもそうとは限らないが、パーソナルアシスタンスは、ユーザの現在のコンテキストの側面に関連する１つまたは複数のイベントによってトリガされる。限定ではなく例示を意図するものであるが、パーソナルアシスタンスの１つまたは複数のアクションには、以下が含まれうる。すなわち、ユーザに特定のアクションをとるように推奨すること、ユーザに代わりデータおよび／またはサービスを取得すること、ユーザのアクティビティの分析に基づく個人情報の推察についてユーザに確認すること、パーソナルデーモンがユーザに代わりアクションをとることへの許可についてユーザに確認すること、ユーザに１つまたは複数のイベントに関する通知を提供すること、ユーザの現在のアクティビティとは異なる選択肢を提供すること、場所を提案すること、ユーザに代わりコンピューティングデバイスに対してアクションを実行すること、別のおよび／または関連するアクティビティもしくはアイテムを推奨することなどである。サブスクライバの個人情報を収集し、収益化するモノリシックなオンラインサービスを利用する場合とは異なり、パーソナルデーモンは、ユーザによって定められたルールおよび指示に従う場合を除き、関連づけられたユーザの個人情報を他の第三者実体と共有することはない。
【００１７】
[0025]  開示される主題の態様によれば、ユーザのコンピューティングデバイスの上で動作しているパーソナルデーモンは、ユーザのコンピューティングデバイスの上で、またはこれを介して利用できる種々のサービスの統合点となる。コンピューティングデバイスは、コンピューティングデバイスに関連づけられたユーザにパーソナル化されたアシスタンスを提供する際にパーソナルデーモンが依拠する、クライアント側統合フレームワークを含んでいる。当業者であれば理解するように、このコンテキストにおいて「フレームワーク」とは、特定の機能性の集合を提供する、（コンピューティングデバイス上で実行可能な）一連の実行可能なプロセスおよびサービスである。本開示の場合、そのような機能性は、ローカルサービスとローカルコンピューティングデバイス上には常駐しないサービスとの両方を含むサービスの統合である。この統合フレームワークは、クラウドにおけるリモートデバイスではなく、ユーザの（すなわちクライアントの）コンピューティングデバイスに実装されるため、「クライアント側」統合フレームワークである。ただし、統合フレームワークは、リモートソースと協調し、リモートソースからサービスを取得することができる。そのようなクライアント側統合フレームワークが、特許出願「Ｌｏｃａｌ  Ｐｅｒｓｏｎａｌ  Ｄａｅｍｏｎ」で検討されたＯｎ｛Ｅｖｅｎｔ｝フレームワークである。開示される主題の態様によれば、以下にさらに詳細に検討するように、統合フレームワークは、サービスを取得するための「ローカル優先の」パターンを実装する。
【００１８】
[0026]  ここで図１を参照すると、図１は、開示される主題の態様を実装するのに好適な例示的ネットワーク環境１００のブロック図である。図に示す通り、ネットワーク環境１００は、１つまたは複数のユーザコンピューティングデバイス１０２〜１０６を含んでいる。ユーザ１０１に関連づけられたユーザコンピューティングデバイス１０２のように、ユーザコンピューティングデバイスの少なくともいくつかは、パーソナルデーモンおよび対応する統合フレームワークをホストするように好適に構成されている。当業者には容易に理解されるように、好適なユーザコンピューティングデバイスには、限定ではなく例示を意図するものであるが、以下が含まれる。すなわち、タブレットコンピューティングデバイス、コンピューティングデバイス１０２などのスマートフォンデバイス、いわゆる「ファブレット」コンピューティングデバイス（すなわち、典型的なタブレットコンピューティングデバイスとスマートフォンデバイスとにまたがる機能性を有するコンピューティングデバイス）、ラップトップコンピュータ、デスクトップコンピュータ、ウェアラブルコンピューティングデバイス、携帯情報端末、ゲーム機などである。
【００１９】
[0027]  ネットワーク環境１００は、ユーザコンピューティングデバイス１０２〜１０６が、ネットワーク全体に分散されたネットワークにアクセス可能なデバイスおよび／またはサービスとの通信ならびにこれらへのアクセスを可能にする、ネットワーク１１０もまた備えている。例えば、図１に示すように、ネットワーク１１０には、ネットワークサービスプロバイダ１１２〜１１６も通信可能に接続されている。ネットワークサービスプロバイダとは、ユーザ１０１などのユーザを含む他者に１つまたは複数のサービスを提供する、（コンピューティングデバイスが対応している）オンラインサービスである。このようなネットワークサービスプロバイダ１１２〜１１６には、限定ではなく例示を意図するものであるが、以下が含まれる。すなわち、ネットワークサービスプロバイダ１１６などのソーシャルネットワークサービスプロバイダ、検索エンジン１１４などの検索エンジン、交通情報プロバイダ１１２などの交通情報プロバイダ、ニュースサービス（図示せず）、気象情報サービス（図示せず）、オンラインゲームサービス（図示せず）、バンキングサービス（図示せず）などである。実際のところ、所望されるどのような種類のサービスでも（無償または有償で）オンラインサービスから得られるように思われる。
【００２０】
[0028]  開示される主題の態様によれば、以下にさらに詳細に検討するように、統合フレームワークを有する（ユーザコンピューティングデバイス１０２などの）ユーザコンピューティングデバイスは、「クラウド端」のデバイスとして実装される。これは、ローカル処理が発生する一方で、コンピューティングデバイスは、ネットワーク１１０を介して他のコンピューティングデバイスおよびネットワークサービスプロバイダからサービスを取得できることを意味する。
【００２１】
[0029]  多くのユーザが複数のコンピューティングデバイスを所持／利用していることは、当業者には容易に理解されよう。実際、一人のユーザが、例を挙げれば、スマートフォンに加え、タブレットコンピューティングデバイス、ラップトップコンピュータ、および／またはデスクトップコンピュータを所持しているのは、よくあることである。開示される主題の態様によれば、コンピューティングデバイス１０２などのコンピューティングデバイスの上で動作しているパーソナルデーモンは、関連づけられたコンピュータユーザ１０１に関する個人情報を、同様に構成された「兄弟コンピューティングデバイス」と共有するように構成することができる。兄弟コンピューティングデバイスとは、同じユーザに関連づけられ、それぞれが統合フレームワークで構成されているコンピューティングデバイスである。例えば、ユーザコンピューティングデバイス１０２〜１０４は、コンピュータユーザ１０１のための兄弟コンピューティングデバイスとすることができる。以下にさらに詳細に検討するように、兄弟コンピューティングデバイス上の統合フレームワークに登録されたサービスは、このようなサービスが他の供給源から得られるサービスよりも概して優先されるような信頼のレベルを享受する。
【００２２】
[0030]  好適なユーザコンピューティングデバイスの構成に関しては、図２に、ユーザコンピューティングデバイス１０２などのように、アプリおよびサービスのクライアント側統合を提供するにあたり好適に構成されたユーザコンピューティングデバイスの上にホストされている、種々のコンポーネントおよびプロセスの図２００を示す。ユーザコンピューティングデバイス１０２は、コンピューティングデバイス上で実行中の（または実行可能な）アプリ２０２〜２１０などの１つまたは複数のアプリまたはサービスを含んでいる。コンピューティングデバイス１０２上のアプリには、関連づけられたユーザ１０１に代わり動作しているパーソナルデーモン２０６が含まれている。
【００２３】
[0031]  好適に構成されたユーザコンピューティングデバイス１０２の上では、統合フレームワーク２２０も動作している。統合フレームワーク２２０は、拡張可能なイベント／アクションフレームワークである。すなわち、このフレームワークは、（例示的なセンサ２２２〜２３２などの）１つまたは複数のセンサまたはサービスに関してイベントの発生を検出し、これに応答して、検出したイベントに関連づけられた１つまたは複数のアクションをユーザコンピューティングデバイス上で実行する。センサ２２２〜２３２は、地理的センサ、加速度センサ、タイマ、ネットワークイベントセンサ、電源センサ、プロセッサ負荷センサ、光および音声センサなどの、ユーザコンピューティングデバイス上のハードウェアセンサに対応している。言うまでもなく、アプリおよびサービス２０２〜２１０もまた、チェックイン、「いいね」、テキストメッセージなどの一定の条件に基づいてイベントを生成するという点において、ソフトウェアセンサとして登録されてもよい。統合フレームワーク２２０は、次の点において拡張可能である。すなわち、ソフトウェアセンサを含むセンサがフレームワークに追加／登録可能であり、アクションがサービスとして追加および／または削除可能であるという点、ならびに（統合フレームワーク２２０を含む）他のアプリおよびアプリケーションが、センサの検知するイベントに対してサブスクライブ可能であるという点である。このため、図示されていないが、統合フレームワーク２２０は、１つまたは複数のアプリまたはアプリケーションがセンサのサービスにサブスクライブできるようにするサブスクリプションインターフェイス、ならびにサービスのプロバイダ（アプリ、アプリケーション、センサ、デバイスなど）が、提供されるサービスおよびサービスの呼出方法を統合フレームワークに「パブリッシュ」できるようにするパブリッシャインターフェイスを含んでいる。統合フレームワーク２２０はまた、種々のセンサ／サービス２２２〜２３２がフレームワークへ通知を送信するための入力インターフェイス（図示せず）も含んでいる。統合フレームワーク２２０はまた、前述のサービスのプロバイダに加え、スクリプト、コンピュートグラフ、および／または既存のプロバイダに対するオーケストレーションを含む、従来のものより新しい他のプロバイダを利用してもよい。
【００２４】
[0032]  統合フレームワーク２２０の拡張可能性に関しては、アプリ（またはアプリケーション）およびサービスは、他のセンサ、サービス、および／またはアプリからのイベントにサブスクライブするように、統合フレームワークに登録されうると理解されたい。サブスクライブされたイベントの通知を受け取ると、サブスクライブ側のアプリおよびサービスは次いで、サブスクライブされた供給源からの情報を利用して、さらなるデータおよび／または機能性を生成してもよい。言うまでもなく、これらサブスクライブ側のアプリおよびサービスは、統合フレームワーク２２０を通じて生成するデータ、サービス、および／または機能性をパブリッシュして、さらに他のアプリがそれらのサービスにサブスクライブできるようにしてもよい。要するに、１つのアプリ（またはアプリケーションまたはサービス）が、他のアプリおよびサービスのサービス／データ／機能性のコンシューマとして統合フレームワーク２２０に登録すると共に、他のサービスおよびアプリによって利用されうるサービスまたはデータまたは機能性のパブリッシャ／プロデューサとしても登録してよい。
【００２５】
[0033]  開示される主題の種々の実施形態において、および設計実装の特徴として、アプリ（またはサービス）が別のアプリ（またはセンサまたはサービス）のコンシューマとしてサブスクライブするとき、統合フレームワーク２２０は、統合フレームワーク２２０がそれ以上関与することなくサブスクライブされたサービスを受ける、サブスクライブ側のアプリの情報および／または能力を提供することができる。言うまでもなく、代替実施形態において、統合フレームワーク２２０は、生成側サービスと消費側サービスとの間の「リンクする」態様を提供することができる。
【００２６】
[0034]  サブスクライブ側／消費側サービスは、生成側サービスのうち、すべてにサブスクライブしてもよいし、ある種のサービス（またはデータまたは機能性）を提供する特定のサービスにサブスクライブしてもよい。例えば、サブスクライブ側のサービスまたはアプリは、ローカルコンピューティングデバイス上のバッテリーの現在の電力レベルを検出する／報告するセンサと、センサのデータを消費して、ローカルコンピューティングデバイスが現在の電力レベルを前提に現在の処理レベルで動作を継続できる時間に関してさらなる詳細データを生成する、パブリッシュ側サービスとの両方に対してサブスクライブしてもよい。統合フレームワーク２２０のもとで、アプリは、所望のデータ／サービス／機能性の種類に基づき、特定の生成側サービス／アプリに対してサブスクライブしてもよいし、あるいは、生成側サービス／アプリの集合に対してサブスクライブしてもよい。
【００２７】
[0035]  開示される主題の態様によれば、コンピューティングデバイス１０２上で利用可能な（ハードウェアとソフトウェア両方のセンサおよびサービスを含む）センサおよびサービス２２２〜２３２は、統合フレームワーク２２０に登録される。アプリ、デバイス、またはセンサの登録は、登録された実体によって提供される１つのサービス（または複数のサービス）の性質を統合フレームワークに通知することを含んでおり、フレームワークによってトリガされ、受領される可能性のあるイベントの性質をフレームワークに通知する。前述の通り、統合フレームワーク２２０への登録により、サービスのプロバイダがサービス提供のために呼び出し可能となるよう、フレームワークに対して当該プロバイダとの通信の方法が通知される。レジストリ内の情報により、他のアプリ、アプリケーション、またはサービスは、システム全体で提供されるデータおよび／またはサービスを把握できるようになり、さらに、登録されたサービス／センサによって生成される１つのイベント（または複数のイベント）にサブスクライブするか、または登録されたアプリ／アプリケーション／センサを実行して、そのサービスおよびデータを活用することができる。関連づけられたユーザのために種々のアプリおよびサービスの統合点として機能するパーソナルデーモン２０６は、ユーザにパーソナルアシスタンスを提供する際に、統合フレームワーク２２０のアプリおよびサービスにサブスクライブする。
【００２８】
[0036]  開示される主題の種々の実施形態によれば、統合フレームワーク２２０に対するサービスの登録は、コンピューティングデバイスへのサービスのインストールプロセスの一環として行われる。一実施形態によれば、統合フレームワーク２２０に対する登録は、サービスに関連づけられたマニフェストに従って行われうる。あるいは、サービスは、初期化／インストールプロセスの一環として、統合フレームワークとの間でその登録情報を通信するように構成されてもよい。あるいは、統合フレームワーク２２０は、サービスのインストール時に登録情報のグローバルリストを照会するように構成されてもよい。さらなる代替実施形態においては、関連づけられたユーザが、サービスの登録情報を統合フレームワーク２２０に手作業で追加してもよい。
【００２９】
[0037]  開示される主題の態様によれば、各プロバイダのサービスに関する情報を格納することに加えて、統合フレームワークに登録されたそれぞれのサービスが信頼レベルの階層の信頼レベルに関連づけられる。信頼レベルは、概して、関連づけられたユーザがそのサービスに関して抱いている信頼を示すものである。ここで図３を参照すると、ローカルサービス（すなわち、統合フレームワーク２２０を有するコンピューティングデバイス上に存在するサービス）は、典型的には、図３で「私」レベル３０２として特徴づけられている、信頼の最上位レベルに関連づけられている。既に述べたように、ローカルデバイス上にないサービスも統合フレームワーク２２０に登録することができる。実際、兄弟コンピューティングデバイス上のサービスは、同じく上位の信頼のレベル、すなわち、図３で「私のもの」レベル３０４と称される、２番目に信頼できるレベルに位置づけられている。関連づけられたユーザが信頼できると見なしうるサービス、例えば、ユーザがメンバーとなっているまたは関連づけられたユーザにアクセス権限のあるネットワークの上のデバイスから得られるサービスには、より下位の信頼のレベル、すなわち、図３で「私たちのもの」レベル３０６と称される、３番目の信頼のレベルを与えることができる。統合フレームワーク２２０がコンピューティングデバイス１０２上で利用可能であっても、必ずしもより上位の信頼のレベルに関連づけられていないサービスは、典型的には、図３で「他者」レベル３０８と称される、信頼の最下位レベルに含められる。
【００３０】
[0038]  開示される主題の態様によれば、サービスを求める要求が統合フレームワーク２２０によって受領されると、統合フレームワークは、通常、最も信頼できる、すなわち、信頼の「私」レベルに存在するサービスで要求を満たそうと試みる。最も信頼できるレベルで一致するサービスを見つけることができないと、統合フレームワーク２２０は、矢印３１２で示すように、要求を満たすために、順次、外側のレベルへと対象を広げていく。もちろん、そのサービスがローカルコンピューティングデバイス上で利用可能であるにもかかわらず、ローカルデバイス上に存在しないサービスプロバイダからサービスを取得するほうが有利である場合もある。例えば（限定ではなく例示を意図するものであるが）、バッテリー電力が低く、特定のサービスが相当の電力量を消費することがわかっている場合は、ローカルコンピューティングデバイス以外のコンピューティングデバイスからそのサービスを取得すると有利であろう。同様に、ローカルコンピューティングデバイス上のプロバイダ／センサ（信頼の「私」レベル３０２に相当するもの）からサービスを取得するか、それともより外側の信頼のレベル、特に信頼の「私のもの」レベル３０４からサービスを取得するのかを決定する際は、処理可用性および処理能力、メモリ制約、データ可用性、ネットワーク帯域幅、ネットワーク接続速度、時刻などすべてが考慮されうる。
【００３１】
[0039]  図３には、アドホック信頼レベル３１０も示されている。開示される主題の態様によれば、ユーザは、相互通信、別のデバイスへのデータ提供などの目的で、別のデバイスとのアドホックネットワーク（例えば、２つのモバイルデバイス間の一時的なネットワーク）を一時的に確立することができる。そのため、統合フレームワーク２２０は、接続が継続する間、アドホックネットワーク上のデバイスのアプリ／サービス／センサに、信頼の「アドホック」レベル３１０を一時的に関連づけることができる。図３のアドホックレベル３１０は、「アドホック」レベル３１０が「私のもの」レベル３０４と「私たちのもの」レベル３０６との中間に位置することを示しているが、言うまでもなく、これは例示のみを目的としており、開示される主題を限定するものと見なされるべきではない。「アドホック」レベル３１０が与えられている信頼のレベルは、信頼レベルの階層における他の場所に構成可能なように配置されてもよいし、関連づけられたユーザによって手作業で決定されてもよい。
【００３２】
[0040]  開示される主題の種々の実施形態に従い、図３に関する上記の項では、統合フレームワーク２２０が、ローカルコンピューティングデバイス上でサービスが利用可能ではないとき（または実行できる可能性がないとき）、どのようにして外部のコンピューティングデバイスにサービスを求めるかについて説明したが、統合フレームワーク内のメッセージは他のコンピューティングデバイスには送信されない。一般的には、統合フレームワーク２２０が、検知したイベントまたは信号に基づき、リモートデバイスからサービスを取得しようとするとき、リモートデバイスにサービスを求める要求を出すためにリモートデバイスとの通信専用の１つまたは複数のサービスが呼び出される。
【００３３】
[0041]  図３に関して上記に説明したパターンについて言えば、サービスの位置を特定する際に「私」レベルから始めて、信頼レベルに従って外側へ広げていくパターンを、ユーザ自身のモバイルコンピューティングデバイスに実装すると有利であると思われるが、異なるポリシーを適用するのが妥当である場合もある。例えば、親は、子のモバイルコンピューティングデバイス上で利用可能である種々の機能を把握しておきたい、または制御したいと望むかもしれない。そのような状況では、親が子のために定めたポリシーに基づき、サービスを探す順序を変えてもよい。例えば、（ローカルコンピューティングデバイスのサービス以上に）最も信頼できると見なされる種々のサービスを親が特定してもよいし、統合フレームワーク２２０が要求されたサービスを探す信頼のレベルを親が制限するなどしてもよい。もちろん、企業においても、従業員に提供するモバイルデバイスに対してポリシーを実施することが望まれるであろう。
【００３４】
[0042]  ここで図５を参照すると、図５は、ユーザのモバイルコンピューティングデバイス１０２の上の統合フレームワーク２２０によって実装されうるような、開示される主題の態様による、サービスを取得する例示的なルーチン５００の流れ図である。最初にブロック５０２において、統合フレームワーク２２０に登録されているサービスのプロバイダにサービスを求める要求が受領される。ブロック５０４において、ローカルサービス、すなわち、最も信頼できる信頼レベル（信頼の「私」レベル３０２）のサービスから、要求を満たすようなプロバイダ／サービスの探索が開始される。ブロック５０６において、（最初は、最も信頼できるレベルから始まる）現在のレベルに対して、要求を満たすような登録済みサービスの探索が行われる。判定ブロック５０８において、現在の信頼のレベルでサービスが見つかるか否かに関する決定が行われる。「いいえ」の場合、ルーチン５００は、以下に説明する判定ブロック４１２へ進む。一方、要求されたサービスが見つかった場合、すなわち、現在のレベルのプロバイダによって実施されうる場合、ルーチン５００はブロック５１０へ進み、ここで、見つかったサービスのプロバイダに対して命令が出される。その後、ルーチン５００は終了する。
【００３５】
[0043]  判定ブロック５１２において、サービスを探索する対象となる、別の、より下位の信頼のレベルが存在するか否かに関する決定が行われる。「いいえ」の場合、つまり、要求されたサービスが利用可能ではない場合、ブロック５１４において、ルーチンは、要求されたサービスが見つからなかった旨の表示を返す。一方、探索対象の別のレベルが存在する場合、ルーチン５００はブロック５１６へ進み、ここで（図３に関して既に述べたような）次の信頼のレベルが選択され、このプロセスは前述のブロック５０６へ戻る。
【００３６】
[0044]  ここで図６を参照すると、図６は、パーソナルデーモンによって行われるような、開示される主題の態様による、クライアント側統合フレームワークと対話する例示的なルーチン６００の流れ図である。最初にブロック６０２において、統合フレームワークに登録されているアプリまたはサービスに関するサービス情報を求める要求が出される。ブロック６０４において、サービスに関する情報が受領される。判定ブロック６０６において、要求されたサービス情報によって、現在利用可能なものが特定されるか（他方の選択肢は、サービスが利用可能ではないというものである）否かに関する決定が行われる。「はい」の場合、ルーチンはブロック６０８へ進み、ここで、特定されたサービスに対して要求が出される。その後、ルーチン６００は終了する。
【００３７】
[0045]  図７は、クライアント側統合フレームワーク２２０の階層にサービスを統合する例示的なルーチン７００の流れ図である。最初にブロック７０２において、統合フレームワーク２２０は、サービス（または前述の入力インターフェイスを介したアプリもしくセンサ）に関する情報を受け取る。ブロック７０４において、統合フレームワーク２２０は、サービスに関連づけられる、信頼レベルの階層の信頼レベルを決定する。前述のように、信頼レベルは、サービスが、ローカルデバイス上、兄弟デバイス上、デバイスの信頼できるネットワークの上、アドホックネットワーク上、またはその他で利用できるか否かに対応させることができる。ブロック７０６において、統合フレームワーク２２０のレジストリは、関連づけられた信頼レベルを含む情報で更新される。その後、ルーチン７００は終了する。
【００３８】
[0046]  ここで、ルーチン５００のブロック５１０に関して図５から説明してきた評価について取り上げる。図８は、（例えば、ローカルコンピューティングデバイス上の）より信頼できるレベルのサービスが利用可能であっても、より外側のレベルのサービスを利用すべきか否かを評価する、例示的なルーチン８００の流れ図である。最初にブロック８０２において、（例えばローカルコンピューティングデバイス上の、最も信頼できるレベルに対応するような）現在のレベルで利用可能なサービスが、信頼階層の別のレベルでも利用可能か否かに関する決定が行われる。「いいえ」の場合、ブロック８０４において、現在のレベルのサービスが利用されることになり、ルーチン８００は終了する。一方、より外側の信頼のレベルでサービスが利用可能である場合、ルーチンはブロック８０６へ進む。
【００３９】
[0047]  ブロック８０６において、より外側のレベルのサービスの利用に関する種々の基準について評価が行われる。前述のように、これらの基準としては、（限定ではなく、例示を意図するものであるが）以下が含まれる。すなわち、現在の演算処理のバッテリー電力は低いかどうか、ある種のサービスが大量の電力を消費するとわかっているかどうか、別のコンピューティングデバイスおよびローカルコンピューティングデバイスの処理可用性および処理能力、メモリ制約、ローカルコンピューティングデバイスと別のコンピューティングデバイスとのデータ可用性の対比、現在のデバイスのネットワーク帯域容量、ローカルコンピューティングデバイスのネットワーク接続速度、時刻、データセキュリティの問題などである。この評価（またはこれらの評価）に基づき、判定ブロック８０８において、より外側のレベルのサービスを利用すべきか否かに関する決定が行われる。「いいえ」の場合、ルーチン８００はブロック８０４へ戻り、ここで、現在のレベルのサービスが利用される旨の表示が返され、その後、ルーチン８００は終了する。「はい」の場合、ブロック８１０において、現在のレベルよりも（信頼の階層における）より外側のレベルのサービスを利用する旨の表示が返される。その後、ルーチン８００は終了する。
【００４０】
[0048]  前述の種々のルーチンおよびプロセスに関しては、これらのルーチン／プロセスは、種々のタスクを完了するための個別のステップに関して表現されているが、これらのステップは本質的に論理的なものと見なされるべきであり、特定の実装における任意の実ステップおよび／または個別のステップに対応していることも、対応していないこともある。また、これらのステップが種々のルーチンにおいて提示される順序も、ステップが実行されうる唯一の順序と解釈されるべきではない。さらに、これらのルーチンは、開示される主題の種々の新規な特徴を含んでいるが、ルーチンの実行において他のステップ（記載せず）も実行されうる。さらに、当業者であれば理解するであろうが、これらのルーチンの論理的ステップは、互いに組み合わせることも、複数のステップで構成することもできる。ルーチン５００〜８００のステップは、並列的にも直列的にも実行することができる。しばしば、ただし必ずしもではないが、種々のルーチンの機能性は、図８に関して説明したように、コンピューティングデバイス上で実行されるソフトウェア（例えば、アプリケーション、システムサービス、ライブラリなど）において実施される。種々の実施形態において、種々のルーチンの全部または一部も、コンピュータシステム上のシステムオンチップ、専用設計プロセッサおよび／または論理回路などを含むが、これらに限定されないハードウェアモジュールにおいて実施されうる。
【００４１】
[0049]  これらのルーチン／プロセスは、典型的には、ルーチン、機能、ループ構造、ｉｆ−ｔｈｅｎおよびｉｆ−ｔｈｅｎ−ｅｌｓｅ文などのセレクタ、代入、算術計算などを含む実行可能コードとして実装される。ルーチン各々の厳密な実装は、プログラミング言語、コンパイラ、ターゲットプロセッサ、動作環境、およびリンクを含む、種々の実装構成および判定に依拠している。当業者であれば容易に理解するであろうが、これらのルーチンにおける論理的ステップはいくつもの手法で実装することが可能であり、上記の論理的説明によって同様の結果を十分に達成可能である。
【００４２】
[0050]  開示される主題の数多くの新規な態様は、（コンピュータプログラムとも称される）アプリケーション、アプリ（概して単一の用途または狭い用途を意図した、小さいアプリケーション）、および／または方法において実施されるルーチンとして表現されているが、これらの態様はまた、コンピュータ可読記憶媒体とも称されるコンピュータ可読媒体に格納されたコンピュータ実行可能命令として実施されてもよい。当業者であれば理解するように、コンピュータ可読媒体は、コンピュータ実行可能命令を後のリトリーブおよび実行のためにホストすることができる。コンピュータ可読記憶装置に格納されたコンピュータ実行可能命令が実行されるとき、これらは、種々のルーチンに関して上記に説明したステップ、方法、およびルーチンを含む、種々のステップ、方法、および／または機能性を実行する。コンピュータ可読媒体の例としては、以下を含むが、これらに限定されない。すなわち、ブルーレイディスク、デジタルビデオディスク（DVD）、コンパクト（CD）、光ディスクカートリッジなどの光学記憶媒体、ハードディスクドライブ、フロッピーディスク、磁気テープなどを含む磁気記憶媒体、ランダムアクセスメモリ（RAM）、読み出し専用メモリ（ROM）、メモリカード、サムドライブなどのメモリ記憶装置、クラウドストレージ（すなわち、オンラインストレージサービス）などである。ただし、本開示の目的のために、搬送波および伝播信号は、コンピュータ可読媒体から明示的に除外する。
【００４３】
[0051]  図９は、開示される主題の態様を実装するのに好適な例示的モバイルコンピューティングデバイスのブロック図である。例示的なモバイルコンピューティングデバイス９００は、プロセッサ９０２（または処理装置）とシステムバス９１０によって相互接続されたメモリ９０４とを備えている。容易に理解されるように、メモリ９０４は、（必ずしもではないが）典型的には揮発性メモリ９０６および不揮発性メモリ９０８の両方を備えている。揮発性メモリ９０６は、メモリに電力が供給されている限り、情報を保持または格納している。対照的に、不揮発性メモリ９０８は、電源を利用できなくても情報を格納しておく（または持続的に保存する）ことが可能である。一般的に言って、ＲＡＭおよびＣＰＵキャッシュメモリは揮発性メモリ９０６の例であるのに対し、ＲＯＭ、ソリッドステートメモリデバイス、メモリ記憶装置、および／またはメモリカードは不揮発性メモリ９０８の例である。
【００４４】
[0052]  プロセッサ９０２は、種々の機能、特に関連づけられたユーザにパーソナルアシスタンスを提供するパーソナルデーモン２０６の実行に関わる機能を実行する際に、メモリ９０４からリトリーブされた命令を実行する。プロセッサ９０２は、シングルプロセッサ、マルチプロセッサ、シングルコアユニット、およびマルチコアユニットなど、市販されている種々のプロセッサのいずれによる構成としてもよい。さらに、当業者であれば理解するであろうが、開示される主題の新規な態様は、携帯情報端末、ウェアラブルコンピューティングデバイス、スマートフォンデバイス、タブレットコンピューティングデバイス、ファブレットコンピューティングデバイス、ラップトップコンピュータ、デスクトップコンピュータなどを含むが、これらに限定されない他のコンピュータシステム構成で実施することができる。
【００４５】
[0053]  システムバス９１０は、モバイルデバイスの種々のコンポーネントが相互に通信を行うためのインターフェイスを提供する。システムバス９１０は、（内部コンポーネントおよび外部コンポーネントの両方を含む）種々のコンポーネントを相互に接続できる、数種類のバス構造のいずれでもよい。コンピューティングデバイス９００は、コンピューティングデバイス９００を他のネットワークアクセス可能コンピュータ、オンラインサービス、および／またはネットワークエンティティ、ならびにコンピュータネットワーク１１０上の他のデバイスと相互に接続するための、ネットワーク通信コンポーネント９１２をさらに備えている。ネットワーク通信コンポーネント９１２は、有線接続、無線接続、またはその両方を介してネットワーク１１０上の種々のコンピュータおよびデバイスと通信を行うように構成することができる。
【００４６】
[0054]  コンピューティングデバイス９００は、実行可能アプリ／アプリケーション９１６もまた含んでいる。当業者であれば理解するように、アプリケーションは、コンピューティングデバイス９００などのコンピューティングデバイスの上で、（プロセッサ上での実行により）１つまたは複数のタスクを実行する、一連の実行可能命令に対応している。アプリケーションは、必ずしもではないが、典型的には、コンピューティングデバイスのユーザの指示で実行される。アプリケーションは、（アプリケーションの構成物によって意図された）種々のタスクを実行する際に、コンピューティングデバイス上で利用可能な機能を組み合わせる。「アプリ」という用語は、時にアプリケーションの短縮語として用いられるが、そうでない場合、アプリも同様に１つまたは複数のタスクを実行するための一連の実行可能命令に対応している。ただし、アプリケーションとは対照的に、アプリは、必ずしもではないが典型的には、しばしば範囲の狭いトピック／機能に絞られたタスクの限定された集合を対象とする。アプリの範囲は、典型的には、アプリケーションのそれよりも制限されているため、アプリは、典型的には、システムリソースに関して必要なフットプリントがより小さく、リソースが限られているコンピューティングデバイスによる実行により適している場合が多い。アプリ／アプリケーション９１８は、典型的にはメモリ９０４に格納されているが、例示のみを意図すると、メモリ９０４とは無関係に呼び出される。
【００４７】
[0055]  例示的なコンピューティングデバイス９００は、センサ９１８もまた備えている。典型的には、センサは、コンピューティングデバイス９００に関連する特定のイベントを検知する、種々のハードウェアデバイスに対応している。センサ９１８には、限定ではなく例示を意図するものであるが、加速度センサ、ハプティックセンサ、静電容量センサ、音声センサ、光ファイバセンサ、タイマ、温度センサ、電力センサ（AC/DCセンサ、電圧センサなど）、無線信号センサ、ジオロケーションセンサ、磁気センサ、高度計、気圧センサなどが含まれる。センサは、インターネットルーティングデータ、ＨＴＴＰリクエスト／レスポンスのインスペクション、ＭＡＣアドレス、セルラ／無線三角測量などの通信情報に依拠しうる。当業者であれば理解するように、好適に構成されたコンピューティングデバイス９００は、ハードウェアセンサ９１８の種々の組合せとすることができる。さらに、これらのハードウェアセンサおよび（以下で検討する）ソフトウェアセンサは、ユーザコンテキストをモニタする際に統合フレームワーク２２０を経由して用いられる。前述のように、統合フレームワーク２２０は、拡張可能なイベント／アクションフレームワークである。すなわち、このフレームワークは、（センサ９１８を含む）１つまたは複数のセンサに関して発生するイベントを検出し、これに応答して、検出したイベントに関連づけられたアクションをコンピューティングデバイス９００上で実行する。このフレームワークは、ソフトウェアセンサを含むセンサを追加できるという点、および検知されるイベントに対してサブスクライバがサブスクライブできるという点で拡張可能である。統合フレームワーク２２０は、統合レジストリを含む自身の情報を統合データストア９１４に格納する。
【００４８】
[0056]  統合フレームワーク２２０に関しては、当業者は、このフレームワークを実装する種々の代替例が存在しうることを理解するであろうが、一実施形態において、フレームワーク２２０は、Ｎｏｄｅ．ｊｓ  ＤｅｖｅｌｏｐｅｒｓのＮｏｄｅ．ｊｓテクノロジー上に構築されたバックグラウンドサービスとして実装される。Ｎｏｄｅ．ｊｓテクノロジーは、センサ９１８などのハードウェアセンサに加えてソフトウェアセンサとインターフェイスをとれるように、拡張可能性と堅牢性を備えている。アプリ／アプリケーション９１６を含むアプリおよびアプリケーションは、ＪａｖａＳｃｒｉｐｔ（登録商標）コードによりＮｏｄｅ．ｊｓプロセスとインターフェイスをとる。言うまでもなく、統合フレームワーク２２０はＮｏｄｅ．ｊｓ以外のテクノロジーを用いても実装できるが、Ｎｏｄｅ．ｊｓを用いると有利であるのは、コンピューティングデバイス９００などのホストコンピューティングデバイスにおけるフットプリントが比較的小さく、多種多様なオペレーティングシステムプラットフォーム上に配備できるような構成を有しており、ＪａｖａＳｃｒｉｐｔ（登録商標）プログラミング言語は幅広くサポートされているためである。
【００４９】
[0057]  例示的なコンピューティングデバイス９００の種々のコンポーネントに関しては、当業者であれば理解するであろうが、これらのコンポーネントは、コンピューティングデバイスのメモリに格納された実行可能なソフトウェアモジュールとしても、（ＳｏＣ−システムオンチップを含む）ハードウェアモジュールとしても、または両者の組合せとしても実装することができる。さらに、種々のコンポーネントの各々は、１つまたは複数のコンピュータシステムと連携して動作する、独立した協調的なプロセスまたはデバイスとして実装することができる。言うまでもなく、例示的なコンピューティングデバイス９００に関してこれまで説明してきた種々のコンポーネントは、説明された種々の機能を実行するための論理コンポーネントと見なすべきであることもさらに理解されたい。当業者であれば容易に理解できるように、論理的なコンポーネントおよび／またはサブシステムは、個別の実コンポーネントと直接、一対一に対応していても、対応していなくてもよい。実実施形態において、各コンピュータシステムの種々のコンポーネントは、互いに組み合わされても、複数の実コンポーネントにわたって分散されてもよいし、かつ／またはコンピュータネットワーク上の協調プロセスとして実装されてもよい。
【００５０】
[0058]  開示される主題の種々の新規な態様について説明してきたが、これらの態様は例示であり、限定するものとして解釈すべきではないことを理解されたい。種々の態様の変形例および代替例は、開示される主題の範囲から逸脱することなく実施されうる。
【図１】
0006603238.tif 000002
【図２】
0006603238.tif 000003
【図３】
0006603238.tif 000004
【図４】
0006603238.tif 000005
【図５】
0006603238.tif 000006
【図６】
0006603238.tif 000007
【図７】
0006603238.tif 000008
【図８】
0006603238.tif 000009
【図９】
0006603238.tif 000010