(58)【調査した分野】(Int.Cl.,DB名)
複数のジオフェンスに関するジオフェンスデータを記憶するデータ記憶部であって、ジオフェンスに関する前記ジオフェンスデータは、該ジオフェンスに関連付けられたプログラムのインジケーションを含む、データ記憶部と、
所定のプログラムが実行されるようスケジュールされない、オペレーティングシステムの節約期間中に、1以上のジオフェンスイベントが発生したときを含む、前記複数のジオフェンスに関する1以上のジオフェンスイベントが発生したときを検出するジオフェンスイベント検出モジュールと、
前記の検出された1以上のジオフェンスイベントのレコードを保持させるジオフェンスイベント記憶モジュールと、
前記オペレーティングシステムの実行期間中に後で実行されるようスケジュールされているプログラムに対して、前記の検出された1以上のジオフェンスイベントの前記レコードに含まれる1以上のジオフェンスイベントのインジケーションを提供することを、前記オペレーティングシステムが前記実行期間に入るまで待機するジオフェンスイベントレポートモジュールと、
を備えたコンピューティングデバイス。
前記レコードは、ジオフェンスに関する検出されたジオフェンスイベントのレコードであって、該ジオフェンスに関連付けられた前記プログラムが実行されているかどうかに関係なく検出されたジオフェンスイベントのレコードである、請求項7記載のコンピューティングデバイス。
ジオフェンスイベントの前記レコードは、各ジオフェンスイベントについて、該ジオフェンスイベントのアイデンティフィケーションと、該ジオフェンスイベントが検出された時間のタイムスタンプと、を含む、請求項7記載のコンピューティングデバイス。
【発明を実施するための形態】
【0005】
ジオフェンスイベントの融合(coalescing)について本明細書で説明する。コンピューティングデバイスの位置が判定され、関心領域の位置が特定される。関心領域は、ジオフェンスとも呼ばれる地理的領域である。複数のジオフェンスがコンピューティングデバイスにより特定され得、異なるジオフェンスがコンピューティングデバイス上の異なるプログラムに関連付けられ得る。コンピューティングデバイスのオペレーティングシステムは、コンピューティングデバイスに関するオペレーションの複数の異なる期間を実装し、この複数の異なる期間は、所定のプログラムが実行されるよう通常はスケジュールされない節約期間と、そのようなプログラムが実行されるよう通常はスケジュールされる実行期間と、を含む。コンピューティングデバイスのシステムは、コンピューティングデバイスがジオフェンスに入ったとき又はジオフェンスから出たときに発生するジオフェンスイベントを特定する。システムは、複数のジオフェンスの各々に関するジオフェンスイベントのレコードを保持し、オペレーティングシステムの実行期間中にプログラムがコンピューティングデバイス上で実行されるようスケジュールされている時間に、それらジオフェンスイベントのうち選択されたジオフェンスイベント(例えば、プログラムに関連付けられた各ジオフェンスに最も直近入ったこと、及び、プログラムに関連付けられた各ジオフェンスから最も直近出たことに関するジオフェンスイベント)をプログラムに提供する。
【0006】
図1は、本明細書で説明するジオフェンスイベントの融合を用いることができる例示的なシステム100を示している。システム100は、コンピューティングデバイス102を含む。コンピューティングデバイス102は、様々なタイプのデバイスのうちの任意のデバイスとすることができるが、典型的にはモバイルデバイスである。例えば、コンピューティングデバイス102は、スマートフォン又は他の無線電話機、ラップトップコンピュータ又はネットブックコンピュータ、タブレットコンピュータ又はノートパッドコンピュータ、ウェアラブルコンピュータ、移動局、エンターテイメント機器、オーディオ再生デバイス及び/又はビデオ再生デバイス、ゲームコンソール、自動車用コンピュータ等とすることができる。コンピューティングデバイス102は、一般に、モバイルデバイスと呼ばれる。なぜならば、デバイス102は、複数の異なる位置に移動される(例えば、ユーザが異なる位置に移動するときにユーザと一緒にユーザにより運ばれる)よう設計又は意図されているからである。
【0007】
コンピューティングデバイス102の位置は、以下でより詳細に説明するように、無線ネットワーキング(例えば、Wi−Fi(登録商標))三角測位、セルラ測位、全地球航法衛星システム(GNSS)測位、ネットワークアドレス(例えば、インターネットプロトコル(IP)アドレス)測位等といった多種多様な技術のうちの任意の技術を用いて判定することができる。異なる位置判定技術は、異なる精度誤差又は関連付けられた不確定性を有し得る。例えば、位置判定技術は、10メートル(m)又は10キロメートル(km)の精度であり得る。したがって、コンピューティングデバイス102の位置は、正確には示されず、コンピューティングデバイス102を取り囲む領域104として示される。領域104は、コンピューティングデバイス102の判定された位置の不確定性を表し、したがって、コンピューティングデバイスが、特定の位置(例えば、領域104の略中心)に存在すると判定されたとしても、コンピューティングデバイス102は、実際には、領域104内のどこかに存在するであろう。
【0008】
システム100はまた、複数のジオフェンス112、114、116、及び118も示している。各ジオフェンス112〜118は、コンピューティングデバイス102、コンピューティングデバイス102のユーザ、コンピューティングデバイス102上で実行されているプログラム等にとって関心のある多種多様な場所のうちの任意の場所であり得る。例えば、ジオフェンス112〜118は、ユーザの自宅、ユーザの職場、ユーザにより訪問され得るレストラン又は事業所、教育施設、公共サービス(例えば、病院や図書館)、地理的場所(例えば、街や国)等であり得る。
【0009】
ジオフェンス112〜118の位置は、コンピューティングデバイス102内に保持される、あるいは、コンピューティングデバイス102によりアクセス可能である。コンピューティングデバイス102の異なるユーザは、任意的に、異なるジオフェンスを保持させてもよいし、異なるジオフェンスにアクセスさせてもよいことに留意すべきである。コンピューティングデバイス102は、モバイル式であり、ジオフェンス112〜118に入ることもあるし、ジオフェンス112〜118から出ることもある。任意の所与の時間において、コンピューティングデバイス102は、ジオフェンス112〜118のうちの1つのジオフェンス内に存在することもあるし、どのジオフェンス内にも存在しないこともある。コンピューティングデバイス102が、特定のジオフェンスを含む領域内に存在すると判定された場合、コンピューティングデバイス102は、その特定のジオフェンス内に存在すると呼ばれる。一方、コンピューティングデバイス102が、特定のジオフェンスを含む領域内に存在しないと判定された場合、コンピューティングデバイス102は、その特定のジオフェンス外に存在する、あるいは、その特定のジオフェンス内に存在しないと呼ばれる。2以上のジオフェンスが重なり合う状況も生じることがあり、その場合、コンピューティングデバイス102は、2以上のジオフェンス112〜118内に同時に存在することもある。
図1の例示は、縮尺通りではなく、ジオフェンス112〜118は、コンピューティングデバイス102よりもサイズが著しく大きいことがある(通常は、コンピューティングデバイス102よりもサイズが著しく大きい)。
【0010】
図示される例において、領域104は、ジオフェンス112〜118のいずれとも交わっておらず、したがって、コンピューティングデバイス102は、ジオフェンス112〜118の各々の外に存在する。しかしながら、領域104が、ジオフェンス112〜118のうちの1つと少なくとも部分的に重なり合った場合、コンピューティングデバイス102は、重なり合っているジオフェンス内に存在する可能性がある。そのような状況においてコンピューティングデバイス102がジオフェンス内に存在すると判定されるかジオフェンス外に存在すると判定されるかは、重なり合いの存在、ジオフェンスがどれくらい重なり合っているか等に基づいて、様々な方法により判定することができる。
【0011】
図2は、1以上の実施形態に従った、ジオフェンスイベントの融合を実施する例示的なシステム200を示すブロック図である。システム200は、
図1のコンピューティングデバイス102等の単一のデバイスにより実装されてもよいし、コンピューティングデバイス102、及びネットワーク(例えば、セルラ電話網又は他の無線電話網、インターネット等)を介してアクセスされる1以上のサーバコンピュータ等の複数のデバイスにより実装されてもよい。システム200は、1以上の位置判定モジュール202、ジオフェンス判別モジュール204、ジオフェンスイベント検出モジュール206、ジオフェンストリガモジュール208、及びデータ記憶部210を含む。
【0012】
データ記憶部210は、本明細書で説明する技術により用いられる様々なデータを保持する。データ記憶部210は、システムメモリ(例えば、ランダムアクセスメモリ(RAM))、フラッシュメモリ又は他のソリッドステートメモリ、磁気ディスク、光ディスク等といった多種多様な記憶デバイスのうちの任意の記憶デバイスを用いて実装することができる。データ記憶部210に保持されるデータは、複数のジオフェンスの各々に関するジオフェンスデータ220を含み、複数のジオフェンスを特定する。ジオフェンスデータ220は、データ記憶部210にデータを記憶させている、データ記憶部210のディストリビュータ又はリセラ、システム200を実装しているコンピューティングデバイス上で実行されるプログラム、別のデバイス又はサービス等といった様々なソースから取得することができる。ジオフェンスに関するジオフェンスデータは、ジオフェンスの境界に加えて、ジオフェンスがトリガされるために満たされるべき基準(criteria)を表す。
【0013】
満たされるべき基準は、デバイスがジオフェンスに入ったこと、デバイスがジオフェンスから出たこと、デバイスが特定の時間量(例えば、少なくとも閾時間量、単に閾時間量等)の間ジオフェンス内に留まっていること、ジオフェンスに関する時間期間(例えば、開始時間と終了時間、開始時間と継続期間)、これらの組合せ等を指し得る。満たされるべきシステム状態等の様々なさらなる基準が任意的に含まれてもよい。例えば、基準は、コンピューティングデバイスのディスプレイがオン又はオフにされたかどうか、コンピューティングデバイスがネットワーク接続(例えば、インターネット接続)を有しているかどうか、コンピューティングデバイスの電力状態(例えば、コンピューティングデバイスが少なくとも閾バッテリ寿命量を残しているかどうか)等を含み得る。
【0014】
ジオフェンスがトリガされたこと(基準が満たされたこと)に応じて行われる1以上のアクションも、ジオフェンスデータの一部として含まれ得る。ジオフェンスがトリガされたときに、特定のプログラムに通知すること、特定のコンテンツがコンピューティングデバイスにより表示又は別の形で再生されること、ジオフェンスデータがデータ記憶部210から削除されること、これらの組合せ等といった様々なアクションのうちのいずれかが行われ得る。複数の異なるアクションが、ジオフェンスがトリガされた態様に基づいて行われ得る。例えば、1つのアクションは、デバイスがジオフェンスに入ったことに応じて行われ、別のアクションは、デバイスがジオフェンスから出たことに応じて行われる。
【0015】
ジオフェンスの境界は、多種多様な方法のうちのいずれかの方法により指定することができる。例えば、ジオフェンスは、位置(例えば、緯度座標及び経度座標)及び半径、位置のセット(例えば、ジオフェンスの複数のコーナーの緯度座標及び経度座標)、一連のベクトル等として指定することができる。本明細書における説明において、略円形形状であるジオフェンスについて言及する。しかしながら、ジオフェンスは、様々な標準的幾何学形状(例えば、三角形、四角形、八角形等)、他の幾何学形状(例えば、自由形状又はブロブ)等のうちの任意の形状とすることができることに留意すべきである。
【0016】
データ記憶部210が、システム200の一部として、
図2に示されている。データ記憶部210に保持されるデータは、プログラム230(例えば、システム200を実装しているコンピューティングデバイスにロードされるときのプログラム230)から取得できることに留意すべきである。代替的に、プログラム230のうちの1以上のプログラムが、データ記憶部210に加えて使用される、あるいは、データ記憶部210の代わりに使用されるデータ記憶部を含んでもよい。
【0017】
ジオフェンスは、多種多様な態様で使用することができる。例えば、行われるジオフェンスアクションは、システム200の少なくとも一部を実装しているコンピューティングデバイスのユーザがバス停に近づいているときにユーザに通知すること、ユーザがショッピングモール又はショッピング店に入ったときにユーザにクーポンを与えること、子供が学校を離れたとき又は子供が自宅に戻ったときに子供の親に通知すること、ユーザが別の街に旅行したときに現在位置に関する天気情報を表示すること等であり得る。
【0018】
データ記憶部210に保持されるデータはまた、本明細書で説明する技術により用いられるさらなるデータを含み得る。例えば、データ記憶部210は、以下でより詳細に説明するように、ジオフェンスイベント検出モジュール206により検出されたジオフェンスイベントであるジオフェンスイベントのレコード222を含み得る。
【0019】
位置判定モジュール202は、コンピューティングデバイス102の位置を判定する1以上のモジュールを含む。図示される例において、位置判定モジュール202は、Wi−Fi(登録商標)モジュール212、GNSSモジュール214、ネットワークアドレスモジュール216、及びセルラモジュール218を含む。しかしながら、これらのモジュール212〜218は例であり、位置判定モジュール202は、モジュール212〜218の各々を必ずしも含む必要はないし、且つ/あるいは、位置判定モジュール202は、異なる方法によりコンピューティングデバイス102の位置を判定する1以上のさらなるモジュールを含んでもよいことに留意すべきである。例えば、位置判定モジュールは、MEMS(マイクロエレクトロメカニカルシステム)、カメラ、マイクロフォン等を含んでもよい。
【0020】
Wi−Fi(登録商標)モジュール212は、Wi−Fi(登録商標)信号を使用して、例えば、Wi−Fi(登録商標)信号の三角測位を使用して、コンピューティングデバイス102の位置を判定する。Wi−Fi(登録商標)モジュール212は、様々な無線アクセスポイントから、信号が受信される元である特定の無線アクセスポイント及び/又は特定の無線ネットワークの識別子を含む信号を受信することができる。例えば、無線アクセスポイントは、その無線アクセスポイントの媒体アクセス制御(MAC)アドレス、その無線アクセスポイントによりサポートされている無線ネットワークの基本サービスセット識別子(BSSID)等を送信することができる。Wi−Fi(登録商標)モジュール212はまた、そのような受信信号の強度(例えば、受信信号強度インジケータ(RSSI)値)を測定することができる。Wi−Fi(登録商標)モジュール212は、コンピューティングデバイスの任意の所与の位置に関して任意の所与の時間に、複数の無線アクセスポイントから信号を受信できることに留意すべきである。Wi−Fi(登録商標)モジュール212は、信号が受信される元である無線アクセスポイントと、任意の特定の時間におけるその信号の強度と、を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、無線アクセスポイント、信号強度、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、Wi−Fi(登録商標)モジュール212は、信号が受信される元である無線アクセスポイントと、特定の所与の時間におけるその信号の強度と、のインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをWi−Fi(登録商標)モジュール212に返すリモートサービス(例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる)に提供してもよい。
【0021】
GNSSモジュール214は、GNSS測位を使用して、コンピューティングデバイス102の位置を判定する。コンピューティングデバイスの位置のこの判定は、GNSSモジュール214が信号を受信できる元である、あるいはGNSSモジュール214が通信できる特定数の衛星(例えば、4以上の衛星)に基づく。GNSSモジュール214は、多種多様な技術を用いてGNSS機能を実装することができる。そのような技術は、全地球測位システム(GPS)、全地球航法衛星システム(GLONASS)、北斗航法システム(又はコンパス航法システム)、ガリレオ測位システム、これらの組合せ等を含むが、これらに限定されるものではない。GNSSモジュール214は、GNSSモジュール214が任意の特定の所与の時間において信号を受信できる元である、あるいはGNSSモジュール214が任意の特定の所与の時間において通信できる1以上の衛星を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、様々な公開方式(public manner)及び/又は専用方式(proprietary manner)のうちのいずれかの方式で動作する。
【0022】
ネットワークアドレスモジュール216は、ネットワークアドレス測位を使用して、コンピューティングデバイス102の位置を判定する。使用されるネットワークアドレスは、コンピューティングデバイス102のIPアドレス等、様々なネットワークアドレスのうちの任意のネットワークアドレスとすることができる。ネットワークアドレスモジュール216は、任意の特定の時間におけるコンピューティングデバイスに割り当てられたIPアドレスを所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、IPアドレス又はアドレス範囲、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、ネットワークアドレスモジュール216は、特定の所与の時間におけるコンピューティングデバイスのIPアドレスのインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをネットワークアドレスモジュール216に返すリモートサービス(例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる)に提供してもよい。
【0023】
セルラモジュール218は、セルラ測位を使用して、コンピューティングデバイス102の位置を判定する。セルラモジュール218は、様々なセルトランシーバから、信号が受信される元である特定のセルトランシーバの識別子(例えば、セルタワー識別子又はトランシーバ識別子)を含む信号を受信することができる。セルラモジュール218はまた、そのような受信信号の強度を測定することができる。セルラモジュール218は、コンピューティングデバイスの任意の所与の位置に関して任意の所与の時間に、複数のセルトランシーバから信号を受信できることに留意すべきである。セルラモジュール218は、信号が受信される元であるセルトランシーバと、任意の特定の時間におけるその信号の強度と、を所与として、その特定の所与の時間におけるコンピューティングデバイスの位置を判定するために、セルトランシーバ、信号強度、及び対応する位置のレコードを保持することができる、あるいは、それらにアクセスすることができる。代替的に、セルラモジュール218は、信号が受信される元であるトランシーバと、特定の所与の時間におけるその信号の強度と、のインジケーションを、その特定の所与の時間におけるコンピューティングデバイスの位置を判定して、その位置のインジケーションをセルラモジュール218に返すリモートサービス(例えば、多種多様なタイプのネットワークのうちのいずれかのネットワークを介してアクセスされる)に提供してもよい。追加的又は代替的に、セルラモジュール218は、低電力で状態変化をモニタリングして、通知を(例えば、ジオフェンスイベント検出モジュール206に)提供してもよく、これは、継続的なポーリングを要することなく、低電力での動き検出を可能にする。
【0024】
位置判定モジュール202により判定される位置は、通常、緯度座標及び経度座標であるが、位置は、他の方法により、代替的に指定されてもよい。位置判定モジュール202の各々は、判定する位置の関連付けられた不確定性(位置の精度誤差又は推定精度誤差とも呼ばれる)を有する。この不確定性の程度は、例えば、位置判定モジュール自体によりレポートされる、システム200の他のモジュール(例えば、ジオフェンスイベント検出モジュール206)において予め設定される、あるいはシステム200の他のモジュール(例えば、ジオフェンスイベント検出モジュール206)によりアクセス可能である等、様々な方法により判定することができる。この不確定性は、位置判定モジュールにより判定された位置に関する位置不確定領域(position uncertainty area)をもたらす。位置不確定領域は、コンピューティングデバイス102が、判定された位置に関して実際に存在するであろう領域である。1以上の実施形態において、位置不確定領域は、略円形領域であり、位置判定モジュールにより判定された位置が、その略円形領域の略中心であり、その略円形領域の半径が、位置判定モジュールに関する不確定性として判定された誤差半径である。代替的に、位置不確定領域は、様々な他の標準的幾何学形状又は他の幾何学形状を用いて表されてもよい。したがって、位置判定モジュールに関する位置不確定領域は、空間的誤差分布関数(spatial error distribution function)であり得る。空間的誤差分布関数の近似は、領域にわたる一様分布(flat distribution)とすることができるが、空間的誤差分布関数の様々な他の近似又は表現が、代替的に使用されてもよい。
【0025】
複数の実施形態において、位置を判定するためのユーザ承諾を受信した後にのみ、位置が位置判定モジュール202により判定される。このユーザ承諾は、オプトイン承諾(opt-in consent)であり得、この場合、ユーザは、位置が判定される前に、位置が位置判定モジュール202により判定されることを要求する肯定的アクション(affirmative action)を行う。あるいは、このユーザ承諾は、オプトアウト承諾(opt-out consent)であってもよく、この場合、ユーザは、位置が位置判定モジュール202により判定されるべきではないことを要求する肯定的アクションを行う。ユーザが、位置の判定を拒否することを選択しなかった場合、それは、ユーザの位置を判定することに対するユーザによる暗黙的承諾である。さらに、位置判定モジュール202により判定された位置は、判定された位置を受信するコンピューティングデバイス(例えば、
図1のコンピューティングデバイス102)内に保持され得、他のデバイス又はサービスに通信される必要はない。
【0026】
代替的に、ユーザ承諾は、特定のプログラムに対しては許可されて、他のプログラムに対しては無効にされてもよい。この場合、ユーザが、ジオフェンス追跡が使用される少なくとも1つのプログラムに対して承諾したときのみ、位置情報が判定されることになる。位置情報は、承諾されたプログラムに属するジオフェンスのみに関するエントリ及び/又はイグジットを判定するために使用される。許可されていないプログラムからの残りのジオフェンスは追跡されない。
【0027】
図3は、1以上の実施形態に従った、位置が判定されるべきであるかどうかをユーザが選択することを可能にするためにユーザに対して表示され得る例示的なユーザインタフェースを示している。なぜ位置情報が判定されるかをユーザに説明する記載302を含む位置コントロールウインドウ300が表示される。プライバシに関する声明へのリンク304も表示される。ユーザがリンク304を選択した場合、システム200のプライバシに関する声明が表示され、ユーザの情報がどのように機密のまま保たれるかがユーザに説明される。
【0028】
さらに、ユーザは、位置情報の判定を許可するためのラジオボタン306又は位置情報の判定を拒否するためのラジオボタン308を選択することができる。ラジオボタン306又は308が選択されると、ユーザは、その選択を保存するための「OK」ボタン310を選択することができる。これらラジオボタン及び「OK」ボタンは、位置情報の判定を許可又は拒否するためにユーザに対して提示され得るユーザインタフェースの例に過ぎず、様々な他の従来のユーザインタフェース技術が代替的に使用されてもよいことを理解すべきである。その後、
図2のシステム200は、ユーザの選択に従って、コンピューティングデバイスの位置を判定することに進むか、あるいは、コンピューティングデバイスの位置を判定しない。
【0029】
図2に戻ると、ジオフェンス判別モジュール204は、データ記憶部210において特定されるジオフェンスのうち、ジオフェンスがトリガされるかどうかに関する判定がなされるべき1以上のジオフェンスを判別する。多数の異なるジオフェンスに関するデータが、データ記憶部210に保持され得、それらジオフェンスのうちの1以上のジオフェンスが、ジオフェンス判別モジュール204により選択される。ジオフェンス判別モジュール204は、以下でより詳細に説明するように、ジオフェンスとコンピューティングデバイスとの間の現在距離に基づいて、ジオフェンスのサイズ(ジオフェンスにより包含される領域のサイズ)に基づいて、どのジオフェンスが最も厳格である(stringent)か(あるいは、ほぼ最も厳格であるか)に基づいて等、多種多様な方法によりこの判別を行うことができる。ジオフェンス判別モジュール204により判別される1以上のジオフェンスは、コンピューティングデバイスの現在位置等の様々な基準に基づいてコンピューティングデバイスが入った又は出た可能性がより高いとみなされるジオフェンスであり、それら1以上のジオフェンスは、基準が変わるまで、ジオフェンス判別モジュール204の焦点(focus)であり得る。しかしながら、ジオフェンス判別モジュール204は、データ記憶部210内のジオフェンスのうちの任意のジオフェンスに関してジオフェンスがトリガされるかどうかを判定できることに留意すべきである。
【0030】
ジオフェンスイベント検出モジュール206は、定期間隔又は不定期間隔でコンピューティングデバイスの現在位置を取得し、ジオフェンスイベントが発生したかどうかを検出する。この間隔は、現在の状態(例えば、最も近いジオフェンスまでのおおよその距離、コンピューティングデバイスの電力バジェット(power budget)、コンピューティングデバイスの移動の推定速度等)に基づいて、動的に選択され得る。ジオフェンスイベントは、デバイスがジオフェンスに入ったこと、デバイスがジオフェンスから出たこと、又は、デバイスが特定の時間量の間ジオフェンス内に留まっていること(例えば、ジオフェンス内に存在していてジオフェンスから出ていないこと)を指す。ジオフェンスイベント検出モジュール206は、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを判定するために、ジオフェンスのサイズに対する、判定された位置に関連付けられた不確定性を評価することができる。代替的に、ジオフェンスイベント検出モジュール206は、位置判定モジュールにより判定された位置を使用して、判定された位置に関連付けられた不確定性を考慮することなく、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを判定してもよい。ジオフェンスイベント検出モジュール206はまた、コンピューティングデバイスがジオフェンス内に存在するかジオフェンス外に存在するかを経時的に追跡することができるので、コンピューティングデバイスがジオフェンス内からジオフェンス外に移動したかどうか、コンピューティングデバイスがジオフェンス外からジオフェンス内に移動したかどうか、コンピューティングデバイスがジオフェンス内に存在していた時間量等を認識している。
【0031】
ジオフェンスイベント検出モジュール206は、ジオフェンスイベント記憶モジュール224を含み、ジオフェンスイベント記憶モジュール224は、ジオフェンスイベントがジオフェンスイベント検出モジュール206により検出されたことに応じて、検出されたジオフェンスイベントを、ジオフェンスイベントレコード222に記憶する。ジオフェンスイベントレコード222は、データベース、ジオフェンスごとのジオフェンスイベントのリスト等、多種多様な形で実装することができる。検出されたジオフェンスイベントを記憶することは、ジオフェンスイベントと、任意的にジオフェンスイベントの様々な態様と、を特定するデータを記憶することを指す。検出されたジオフェンスイベントに関して記憶されるデータは、ジオフェンスイベントがジオフェンスに入ったことであるかジオフェンスから出たことであるかのインジケーション、コンピューティングデバイスが入った又は出たジオフェンスの(例えば、識別子の)インジケーション、コンピューティングデバイスがジオフェンス内に存在していた(あるいは、ジオフェンス内に存在している)継続期間、ジオフェンスに関連付けられたプログラム(例えば、ジオフェンスイベントが通知されるプログラム)、ジオフェンスイベントが検出された時間のタイムスタンプ(例えば、日付及び/又は時間)等を含み得る。記憶されたデータはまた、ジオフェンスイベントが検出されるジオフェンスを特定することができる、あるいは、ジオフェンスイベントは、ジオフェンスイベントが検出されるジオフェンスのアイデンティフィケーション(識別情報)が固有であるように記憶され得る(例えば、ジオフェンスイベントは、ジオフェンスに関するリストに追加され得、各ジオフェンスは、異なるリストを有する)。コンピューティングデバイスがジオフェンス内に存在していた継続期間又はコンピューティングデバイスがジオフェンス内に存在している継続期間は、例えば、ジオフェンスイベント検出モジュール206が、コンピューティングデバイスがジオフェンスに入ってからどれくらいの時間が経過したかをモニタリングすることによって、ジオフェンスに入った最後のジオフェンスイベントが検出された後に経過した時間(又は、ジオフェンスから出た最も直近のジオフェンイベントが検出されてからジオフェンスに入った前のジオフェンスイベントが検出されるまでに経過した時間)を判定することによって等、様々な方法により判定することができる。
【0032】
1以上の実施形態において、ジオフェンスイベント検出モジュール206により検出された各ジオフェンスイベントは、データ記憶部210に、例えば、ジオフェンスイベントの発生の時間によりソートされた順番付きリストで記憶される。ジオフェンスイベントレコード222は、過去24時間、過去1週間等といった様々な期間の間にわたるジオフェンスイベントを含み得る。代替的に、ジオフェンスイベントレコード222は、各ジオフェンスイベントについて、ジオフェンスから出た最も直近のジオフェンスイベント及びジオフェンスに入った最も直近のジオフェンスイベントを含んでもよい。新たなジオフェンスイベントがジオフェンスに関して検出されるたびに、同じタイプ(ジオフェンスから出た又はジオフェンスイベントに入った)の前に記録されていたジオフェンスイベントが、新たに検出されたジオフェンスイベントにより置換されてもよい。したがって、いくつかの実施形態においては、ジオフェンスに関する、ジオフェンスから出た最も直近のジオフェンスイベント及びジオフェンスに入った最も直近のジオフェンスイベントのみが記録されるのに対し、他の実施形態においては、ジオフェンスに関する、ジオフェンスに入った複数のジオフェンスイベント及びジオフェンスから出た複数のジオフェンスイベントが記録される(例えば、ジオフェンスに入った全てのジオフェンスイベント及びジオフェンスから出た全てのジオフェンスイベントが記録される)。ジオフェンスに関する記録されたジオフェンスイベントはまた、ジオフェンスに関するジオフェンスデータを提供したアプリケーションがシステム200から削除された、あるいは
アンインストールされた等といった様々なイベントに応じて、データ記憶部210から削除されてもよい。
【0033】
ジオフェンストリガモジュール208は、ジオフェンスに関連付けられた基準を分析し、基準が満たされたかどうかを判定する。この判定は、ジオフェンスイベント検出モジュール206により判定された1以上のジオフェンスイベントの発生に少なくとも部分的に基づいてなされる。基準が満たされたことに応じて、ジオフェンストリガモジュール208は、ジオフェンスがトリガされることを決定し、適切なアクションを行う。行われるアクションは、データ記憶部210に記憶される、トリガされるジオフェンスに関するジオフェンスデータに関連付けられてもよいし、ジオフェンストリガモジュール208において予め設定される、別のモジュール又はデバイスから取得される等、他の方法により決定されてもよい。
【0034】
1以上の実施形態において、ジオフェンスがトリガされたことに応じてジオフェンストリガモジュール208により行われるアクションは、ジオフェンスがトリガされたことを1以上のプログラム230に通知することである。1以上のプログラム230は、アプリケーション、オペレーティングシステムモジュール又はコンポーネント等といった多種多様なタイプのプログラムを含み得る。通知すべき1以上のプログラム230(トリガされたジオフェンスに関連付けられたプログラム230とも呼ばれる)は、ジオフェンストリガモジュール208において設定される、データ記憶部210内のジオフェンスに関するジオフェンスデータの一部として特定される、別のモジュール又はサービスから取得される等、様々な方法により特定することができる。プログラム230には、発生したジオフェンスイベントに加えて、任意的にさらなる情報(例えば、コンピューティングデバイスが、少なくとも閾時間量の間ジオフェンス内に存在していたこと)が通知され得る。次いで、プログラム230は、ジオフェンスがトリガされたことに基づいて、プログラム230が所望するアクションを行うことができる。
【0035】
ジオフェンストリガモジュール208は、ジオフェンスがトリガされたことのプログラムへの通知を管理するジオフェンスイベントレポートモジュール226を含む。ジオフェンスイベントレポートモジュール226は、ジオフェンスイベントレコード222から1以上のジオフェンスイベントを選択する。例えば、ジオフェンスイベントレポートモジュール226は、プログラム230に関連付けられた各ジオフェンスについて、最も直近のジオフェンスイグジットイベント(ジオフェンスから出た最も直近のジオフェンスイベント)及び最も直近のジオフェンスエントリイベント(ジオフェンスに入った最も直近のジオフェンスイベント)を選択する。ジオフェンスイベントレポートモジュール226は、プログラム230に関連付けられた各ジオフェンスに関するジオフェンスイベントを融合し、プログラム230に関連付けられたジオフェンスに関するジオフェンスイベントの集合をプログラム230に提供する。
【0036】
1以上の実施形態において、ジオフェンスイベント(ジオフェンスに入ったこと又はジオフェンスから出たこと)に応じて、ジオフェンスがトリガされ、ジオフェンスイベントレポートモジュール226は、そのジオフェンスイベントをプログラムに通知する。代替的に、ジオフェンスイベントレポートモジュール226は、ジオフェンスイベントをプログラムに通知するかどうかを判定する際に、ジオフェンスに関連付けられた他の基準を考慮して、そのようなさらなる基準が満たされた場合にのみプログラムに通知してもよい。例えば、インターネット接続が望ましいと基準が示しているが、インターネットアクセスが現在利用可能でない場合、ジオフェンスイベントレポートモジュール226は、ジオフェンスイベントをプログラムに通知しない。この他の基準は、ジオフェンスイベントレコード222及び/又はジオフェンスデータ220の一部として記憶され得る。
【0037】
さらに、ジオフェンスイベントレポートモジュール226は、プログラム自体に関連付けられた任意の基準を考慮することができる。例えば、通知すべきプログラムが、1日のうち所定の時間の間は実行されないと基準が示している場合、ジオフェンスイベントが1日のうちのそのような所定の時間の間に発生しても、ジオフェンスイベントレポートモジュール226は、ジオフェンスイベントをプログラムに通知しない。
【0038】
さらに、ジオフェンスイベントレポートモジュール226が、ジオフェンスの自動的満了等といった所定のジオフェンスイベントをプログラム230に通知しない状況が生じることもある。例えば、ジオフェンスが、特定の時間期間の間のみ有効である場合(例えば、夜9時に閉店する店に関する日々の取引)、ジオフェンスは、満了すると、システム200から自動的に削除され得、ジオフェンスに関連付けられたプログラム230には、この削除イベントが通知され得ない。
【0039】
1以上の実施形態において、ジオフェンスに関連付けられるプログラム230は、システム200を実装しているコンピューティングデバイス上のプログラムである。システム200を実装しているコンピューティングデバイスのオペレーティングシステムは、コンピューティングデバイスに関するオペレーションの複数の異なる期間を実装する。オペレーションのこれら複数の異なる期間は、コンピューティングデバイスが電力節約モードで動作している節約期間を含む。節約期間中、所定のプログラム(オペレーティングシステムプログラム以外のアプリケーション等)は、実行されるよう通常はスケジュールされず、様々な他の電力節約技術が、コンピューティングデバイスの電力使用を低減させるために、オペレーティングシステムにより使用され得る。オペレーションの複数の異なる期間はまた、コンピューティングデバイスが実行モードで動作している実行期間を含む。節約期間中通常はスケジュールされないプログラムが、オペレーティングシステムのスケジューリング機構により、実行期間中実行されるようスケジュールされる。スケジューリング機構は、多種多様のファクタを考慮して、どのプログラムが実行されるか、及び、どのくらいの時間の間そのプログラムが実行されるかを決定することができる。そのようなファクタとして、例えば、どれくらい直近にプログラムが実行されるよう最後にスケジュールされたか、プログラムが実行されるようスケジュールされた最後の時間にプログラムがどれくらいの時間の間(すなわち、何らかの過去の時間期間にわたって)実行されたか、スケジュールされるべき他のプログラム、コンピューティングデバイスの利用可能な電力(例えば、残りのバッテリ寿命)、プログラムを実行するユーザリクエストが受信されたかどうか等がある。スケジューリング機構は、システム200とは独立して動作することに留意すべきである。スケジューリング機構は、プログラムをスケジュールする時間を決定する際に、プログラムに関するジオフェンスイベントが検出されたかどうかを考慮することができるが、スケジューリング機構は、プログラムに関連付けられたジオフェンスイベントが検出されたことに単に応じて、実行されるプログラムをスケジュールする必要はない(通常はそのようにはしない)。
【0040】
図4は、1以上の実施形態に従った、オペレーションの様々な期間の例を示している。ちりばめられた実行期間404及び節約期間406を含むタイムライン402が示されている。実行期間404中、オペレーティングシステムは、実行モードで動作している。節約期間406中、オペレーティングシステムは、電力節約モードで動作している。同じ時間期間を有するものとして図示されているが、異なる実行期間404は、異なる期間を有し得、異なる節約期間406は、異なる期間を有し得ることに留意すべきである。実行期間404及び/又は節約期間406のこれらの期間は、コンピューティングデバイスの動作中、時間とともに変わり得る。
【0041】
図2に戻ると、ジオフェンスイベントレポートモジュール226は、プログラム230に関連付けられた各ジオフェンスに関するジオフェンスイベントを融合し、プログラム230が後で実行されるようスケジュールされている時間に、プログラム230に関連付けられたジオフェンスに関するジオフェンスイベントの集合をプログラム230に提供する。(例えば、最も直近のイベントから始まる時系列にソートされた)ジオフェンスイベントの集合は、プログラム230が実行されるようスケジュールされる次の時間にプログラム230に提供されてもよいし、後の時間に提供されてもよい。プログラム230が実行されるようスケジュールされる時間は、オペレーティングシステムのスケジューリング機構により制御され得、次の実行期間又はいくらか後の実行期間内であり得る。実行期間中及び節約期間中の両方において、ジオフェンスイベント検出モジュール206は、ジオフェンスイベントを検出するよう動作し、ジオフェンスイベント記憶モジュール224は、検出されたジオフェンスイベントを、ジオフェンスイベントレコード222に記憶することに留意すべきである。したがって、検出されたジオフェンスイベントが通知されるべきプログラム230が、実行されていない、あるいは、実行されるようスケジュールされていない(すなわち、オペレーティングシステムが節約期間中である)場合であっても、プログラムに関連付けられたジオフェンスに関するジオフェンスイベントは、それでも検出されていて記録されており、プログラム230が後で実行されるときに、プログラム230に提供され得る。ジオフェンスイベントがプログラム230により受信されると、ジオフェンスイベントは、その後、データ記憶部210から削除され得る。
【0042】
モジュール204〜208は、位置判定モジュール202から分離されたモジュールとして図示されているが、モジュール204〜208のうちの1以上のモジュールは、代替的に、位置判定モジュール202のうちの1つの位置判定モジュール内に少なくとも部分的に実装されてもよいことに留意すべきである。例えば、モジュール204〜208のうちの1以上のモジュールの少なくとも一部は、GNSSモジュール214又はWi−Fi(登録商標)モジュール212のハードウェアコンポーネント内に実装されてもよい。
【0043】
図5は、1以上の実施形態に従った、ジオフェンスイベントを融合するための例示的なプロセス500を示すフローチャートである。プロセス500は、
図2のシステム200等のシステムにより実行される。プロセス500は、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せにより実装することができる。プロセス500が、一連の動作として示されているが、プロセス500は、様々な動作のオペレーションを実行するために、図示される順番に限定されるものではない。プロセス500は、ジオフェンスイベントを融合するための例示的なプロセスである。ジオフェンスイベントを融合することについての異なる図を参照するさらなる説明が、本明細書に含まれる。
【0044】
プロセス500において、コンピューティングデバイスに関するジオフェンスイベントの発生が検出される(動作502)。ジオフェンスイベントの発生は、
図2の位置判定モジュール202のうちの1以上のモジュールにより判定されたコンピューティングデバイスの位置に基づき、様々なジオフェンスの位置が、データ記憶部210内のジオフェンスデータにおいて特定される。
【0045】
検出されたジオフェンスイベントのレコードが保持される(動作504)。保持される検出されたジオフェンスイベントのレコードは、上述したように、ジオフェンスイベントと、任意的にジオフェンスイベントの様々な態様と、を特定する様々な情報を含み得る。
【0046】
プログラムに関連付けられた少なくとも1つのジオフェンスに関して検出された1以上のジオフェンスイベントのインジケーションが、プログラムが実行されるときに、プログラムに提供され(動作506)、プログラムは、次いで、示されたジオフェンスに基づいて、プログラムが所望する様々なオペレーションを実行することができる。1以上のジオフェンスイベントのインジケーションは、
図2のデータ記憶部210に保持されている、ジオフェンスイベントとジオフェンスイベントの様々な態様とを特定する情報、ジオフェンスイベントを特定する情報が記憶されているデータ記憶部210内の位置の識別子等、様々な形をとることができる。プログラムが
図2のシステム200に対してジオフェンスイベントをリクエストする、システム200が(例えば、プログラムのアプリケーションプログラミングインタフェース又は他のコールバック関数を呼び出すことにより)ジオフェンスイベントをプログラムに自動的に通知する等といった様々な機構を用いて、インジケーションがプログラムに提供され得る。
【0047】
動作506におけるプログラムが実行される時間は、上述したように、オペレーティングシステムのスケジューリング機構により決定される。ジオフェンスイベントが検出されたときに、プログラムは、スケジュールされるよう待機している、あるいは、実行されていないことがあることに留意すべきである。プログラムがすでに実行されている場合には、検出されたジオフェンスイベントが、動作506において、(例えば、直ちに)プログラムに提供される、あるいは、動作506において、プログラムが実行される次の時間に、プログラムに提供される。プログラムが実行される次の時間は、様々な方法により決定され得る。例えば、プログラムは、ユーザによりアクティブ化されたときに実行されることもあるし、オペレーティングシステムのスケジューリング機構により決定された時間に実行されることもある。同じプログラムの複数のインスタンスが同時に実行される場合、イベント配信の重複と、特定のジオフェンスイベントを受信した際のプログラムからの結果として生じる重複アクションと、を避けるために、ジオフェンスイベントは、プログラムの1つのインスタンスのみに提供され得る。1以上の実施形態において、1以上のジオフェンスイベントは、プログラムに関連付けられた各ジオフェンス(又は、ジオフェンスイベントが検出されるプログラムに関連付けられた少なくとも各ジオフェンス)に関する最も直近のジオフェンスエントリイベント及び最も直近のジオフェンスイグジットイベントである。
【0048】
したがって、プログラムに関連付けられた複数のジオフェンスに関するジオフェンスイベントが、融合されて、動作506において、ジオフェンスイベントの順番付き集合としてプログラムに提供される。さらに、オペレーティングシステムのスケジューリング機構に基づいてプログラムが実行されるときにジオフェンスイベントをプログラムに提供することにより、プログラムへのジオフェンスイベントの提供が、オペレーティングシステムのスケジューリング機構と調和される(harmonized)。ジオフェンスイベントをプログラムに提供する、スケジューリング機構から分離された機構は使用されず、これは、スケジューリング機構が迂回されることを防止するとともに、節約期間が、検出されたジオフェンスイベントに起因して中断されることを防止する。
【0049】
したがって、本明細書で説明した技術は、電力を節約し、且つ、様々なプログラムによる乱用(abuse)を防止するように、ジオフェンスの使用をサポートする。ジオフェンスイベントを融合し、ジオフェンスイベントをオペレーティングシステムのスケジューリング機構と調和させることにより、オペレーティングシステムのスケジューリング機構は、トリガされる多数のジオフェンスを有するプログラムにより迂回されることがない。本明細書で説明した技術はまた、最も直近のジオフェンスエントリイベント及びジオフェンスイグジットイベントをプログラムに提供するので、現在の地理的関連情報をプログラムに提供することができる。
【0050】
特定のモジュールを参照しながら特定の機能について本明細書で説明したが、本明細書で説明した個々のモジュールの機能は、複数のモジュールに分割されてもよいし、且つ/あるいは、複数のモジュールの少なくとも一部の機能は、1つのモジュールに結合されてもよいことに留意すべきである。さらに、あるアクションを実行するものとして本明細書で説明した特定のモジュールは、そのアクションを実行するその特定のモジュール自体を含む、あるいは、そのアクションを実行する(あるいは、その特定のモジュールと協働してそのアクションを実行する)別のコンポーネント又はモジュールを呼び出すその特定のモジュール又はそのアクションを実行する(あるいは、その特定のモジュールと協働してそのアクションを実行する)別のコンポーネント又はモジュールに別の形でアクセスするその特定のモジュールを含む。したがって、あるアクションを実行する特定のモジュールは、そのアクションを実行するその特定のモジュール自体、及び/又は、その特定のモジュールにより呼び出される、あるいはその特定のモジュールにより別の形でアクセスされる、そのアクションを実行する別のモジュールを含む。
【0051】
図6は、本明細書で説明した様々な技術を実装することができる1以上のシステム及び/又はデバイスを表す例示的なコンピューティングデバイス602を含む例示的なシステムを、概括的に600で示している。コンピューティングデバイス602は、例えば、サービスプロバイダのサーバ、クライアントに関連付けられたデバイス(例えば、クライアントデバイス)、オンチップシステム、及び/又は、任意の他の適切なコンピューティングデバイス若しくはコンピューティングシステムとすることができる。
【0052】
図示される例示的なコンピューティングデバイス602は、処理システム604、1以上のコンピュータ読み取り可能な媒体606、及び互いに通信可能に接続される1以上のI/Oインタフェース608を含む。図示されていないが、コンピューティングデバイス602は、様々なコンポーネントを互いと接続するシステムバス又は他のデータ・コマンド転送システムをさらに含み得る。システムバスは、メモリバス若しくはメモリコントローラ、周辺バス、ユニバーサルシリアルバス、及び/又は、様々なバスアーキテクチャのうちのいずれかを利用するプロセッサバス若しくはローカルバス等の様々なバス構造の任意の1つ又は組合せを含み得る。制御ライン及びデータライン等の多様な他の例も意図されている。
【0053】
処理システム604は、ハードウェアを用いて1以上のオペレーションを実行する機能を表す。したがって、処理システム604は、プロセッサ、機能ブロック等として構成することができるハードウェア要素610を含むものとして示されている。これは、特定用途向け集積回路、又は、1以上の半導体を用いて形成される他の論理デバイスとしてのハードウェアによる実装物を含み得る。ハードウェア要素610は、ハードウェア要素610が形成される材料又はハードウェア要素610において利用される処理機構により限定されるものではない。例えば、プロセッサは、1以上の半導体及び/又はトランジスタ(例えば、電子集積回路(IC))から構成され得る。そのようなコンテキストにおいて、プロセッサ実行可能な命令は、電子的に実行可能な命令であり得る。
【0054】
コンピュータ読み取り可能な媒体606は、メモリ/ストレージ612を含むものとして示されている。メモリ/ストレージ612は、1以上のコンピュータ読み取り可能な媒体に関連付けられたメモリ/ストレージ能力を表す。メモリ/ストレージ612は、揮発性媒体(ランダムアクセスメモリ(RAM)等)及び/又は不揮発性媒体(読み取り専用メモリ(ROM)、フラッシュメモリ、光ディスク、磁気ディスク等)を含み得る。メモリ/ストレージ612は、固定媒体(例えば、RAM、ROM、固定ハードドライブ等)に加えて、着脱可能な媒体(例えば、フラッシュメモリ、着脱可能なハードドライブ、光ディスク等)を含み得る。コンピュータ読み取り可能な媒体606は、以下でさらに説明するように、多様な他の態様で構成されてもよい。
【0055】
1以上の入力/出力インタフェース608は、ユーザが様々な入力デバイスを用いてコマンド及び情報をコンピューティングデバイス602に入力できるようにするとともに、様々な出力デバイスを用いて情報をユーザ及び/又は他のコンポーネントに提示できるようにする機能を表す。入力デバイスの例は、キーボード、カーソル制御デバイス(例えば、マウス)、マイクロフォン(例えば、音声入力用)、スキャナ、タッチ機能(例えば、物理的タッチを検出するよう構成される静電容量式センサ又は他のセンサ)、(例えば、ジェスチャとしてのタッチを含まない動きを検出するために、赤外線周波数等の非可視波長又は可視波長を利用することができる)カメラ等を含む。出力デバイスの例は、ディスプレイデバイス(例えば、モニタやプロジェクタ)、スピーカ、プリンタ、ネットワークカード、触覚応答デバイス等を含む。したがって、コンピューティングデバイス602は、ユーザインタラクションをサポートするために、以下でさらに説明するように、多様な態様で構成することができる。
【0056】
コンピューティングデバイス602はまた、ジオフェンスシステム614を含む。ジオフェンスシステム614は、上述したジオフェンスの融合を含む様々なジオフェンス機能を提供する。ジオフェンスシステム614は、例えば、
図2のシステム200を実装することができる。
【0057】
様々な技術が、ソフトウェア、ハードウェア要素、又はプログラムモジュールの一般的コンテキストにおいて本明細書で説明され得る。一般に、そのようなモジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、要素、コンポーネント、データ構造等を含む。本明細書で使用される「モジュール」、「機能」、及び「コンポーネント」という用語は、一般に、ソフトウェア、ファームウェア、ハードウェア、又はこれらの組合せを表す。本明細書で説明した技術の特徴は、プラットフォーム非依存であり、これは、そのような技術が、様々なプロセッサを有する様々なコンピューティングプラットフォーム上で実装され得ることを意味する。
【0058】
説明したモジュール及び技術の実装物は、何らかの形態のコンピュータ読み取り可能な媒体に記憶されてもよいし、そのようなコンピュータ読み取り可能な媒体を介して伝送されてもよい。コンピュータ読み取り可能な媒体は、コンピューティングデバイス602がアクセスできる様々な媒体を含み得る。限定ではなく例として、コンピュータ読み取り可能な媒体は、「コンピュータ読み取り可能な記憶媒体」及び「コンピュータ読み取り可能な信号媒体」を含み得る。
【0059】
「コンピュータ読み取り可能な記憶媒体」とは、単なる信号伝送、搬送波、又は信号自体ではなく、情報の永続的記憶を可能にする媒体及び/若しくはデバイス、並びに/又は有体のストレージを指す。したがって、コンピュータ読み取り可能な記憶媒体は、非信号伝送媒体を指す。コンピュータ読み取り可能な記憶媒体は、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、論理要素/回路、又は他のデータ等といった情報を記憶するのに適した方法又は技術により実装された、揮発性及び不揮発性の着脱可能及び着脱不可能な媒体及び/又は記憶デバイス等のハードウェアを含む。コンピュータ読み取り可能な記憶媒体の例は、RAM、ROM、EEPROM、フラッシュメモリ、若しくは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、若しくは他の光ストレージ、ハードディスク、磁気カセット、磁気テープ、磁気ディスクストレージ、若しくは他の磁気記憶デバイス、又は、所望の情報を記憶するのに適した、コンピュータがアクセスできる他の記憶デバイス、有体の媒体、若しくは製品を含み得るが、これらに限定されるものではない。
【0060】
「コンピュータ読み取り可能な信号媒体」とは、ネットワークを介して等、コンピューティングデバイス602のハードウェアに命令を伝送するよう構成された信号伝送媒体を指す。信号媒体は、通常、コンピュータ読み取り可能な命令、データ構造、プログラムモジュール、又は他のデータを、搬送波、データ信号、又は他の伝送機構等の変調されたデータ信号内に具現化することができる。信号媒体はまた、任意の情報配信媒体を含む。「変調されたデータ信号」という用語は、信号内の情報を符号化するように設定又は変更された特性のうちの1以上を有する信号を意味する。限定ではなく例として、通信媒体は、有線ネットワーク又は直接配線接続等の有線媒体と、音響、RF、赤外線、及び他の無線媒体等の無線媒体と、を含む。
【0061】
前述したように、ハードウェア要素610及びコンピュータ読み取り可能な媒体606は、本明細書で説明した技術の少なくとも一部の態様を実装するためにいくつかの実施形態において使用することができる、ハードウェア形態で実装された命令、モジュール、プログラマブルデバイスロジック、及び/又は固定デバイスロジックを表す。ハードウェア要素は、集積回路又はオンチップシステム、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)、コンプレックスプログラマブル論理デバイス(CPLD)、及び、シリコンによる他の実装物又は他のハードウェアデバイスのコンポーネントを含み得る。このコンテキストにおいて、ハードウェア要素は、そのハードウェア要素により具現化される命令、モジュール、及び/又はロジックにより定められるプログラムタスクを実行する処理デバイスに加えて、前述したコンピュータ読み取り可能な記憶媒体等の、実行される命令を記憶するために利用されるハードウェアデバイスとして動作することができる。
【0062】
前述したものの組合せを使用して、本明細書で説明した様々な技術及びモジュールを実装することもできる。したがって、ソフトウェア、ハードウェア、又は、プログラムモジュール及び他のプログラムモジュールは、何らかの形態のコンピュータ読み取り可能な記憶媒体上に具現化される、且つ/あるいは、1以上のハードウェア要素610により具現化される1以上の命令及び/又はロジックとして実装することができる。コンピューティングデバイス602は、ソフトウェアモジュール及び/又はハードウェアモジュールに対応する特定の命令及び/又は機能を実行するよう構成することができる。したがって、ソフトウェアとしてコンピューティングデバイス602により実行可能なモジュールとしてのモジュールの実装は、例えば、処理システムのハードウェア要素610及び/又はコンピュータ読み取り可能な記憶媒体を使用することにより、ハードウェアにより少なくとも部分的に実現することができる。命令及び/又は機能は、本明細書で説明した技術、モジュール、及び例を実装する1以上の製品(例えば、1以上のコンピューティングデバイス602及び/又は処理システム604)により、実行可能/動作可能であり得る。
【0063】
図6にさらに示されるように、例示的なシステム600は、パーソナルコンピュータ(PC)、モバイルデバイス、及び/又は他のデバイス上でアプリケーションを実行する際のシームレスなユーザエクスペリエンスのためのユビキタス環境を可能にする。サービス及びアプリケーションは、アプリケーションを利用している間、ビデオゲームをプレイしている間、ビデオを見ている間等に1つのデバイスから次のデバイスに移る際の共通のユーザエクスペリエンスのために、これらの環境において実質的に同様に動作する。
【0064】
例示的なシステム600において、複数のデバイスが、中央コンピューティングデバイスを介して相互接続される。中央コンピューティングデバイスは、複数のデバイスに対してローカルにあってもよいし、複数のデバイスからリモートに位置してもよい。1以上の実施形態において、中央コンピューティングデバイスは、ネットワーク、インターネット、又は他のデータ通信リンクを介して複数のデバイスに接続される1以上のサーバコンピュータのクラウドであり得る。
【0065】
1以上の実施形態において、この相互接続アーキテクチャは、複数のデバイスのユーザに共通のシームレスなエクスペリエンスを提供するために、複数のデバイスにわたって機能を配信することを可能にする。複数のデバイスの各々は、異なる物理的要件及び能力を有し得、中央コンピューティングデバイスは、各デバイス向けに合わせられながらも全てのデバイスに共通であるエクスペリエンスを各デバイスに提供することを可能にするプラットフォームを使用する。1以上の実施形態において、ターゲットデバイスのクラスが作成され、エクスペリエンスが、デバイスの一般クラス向けに合わせられる。デバイスのクラスは、デバイスの物理的特徴、使用のタイプ、又は他の共通特性により定められ得る。
【0066】
様々な実装において、コンピューティングデバイス602は、コンピュータ616又はモバイル618等の使用のために、多種多様な構成をとることができる。これらの構成の各々は、一般に異なる構造及び能力を有し得るデバイスを含み、したがって、コンピューティングデバイス602は、異なるデバイスクラスのうちの1以上のデバイスクラスに従って構成され得る。例えば、コンピューティングデバイス602は、パーソナルコンピュータ、デスクトップコンピュータ、マルチスクリーンコンピュータ、ラップトップコンピュータ、ネットブック等を含むデバイスのコンピュータ616クラスとして実装され得る。コンピューティングデバイス602はまた、携帯電話機、ポータブル音楽プレーヤ、ポータブルゲームデバイス、タブレットコンピュータ、ウェアラブルデバイス、マルチスクリーンコンピュータ等といったモバイルデバイスを含むデバイスのモバイル618クラスとして実装され得る。
【0067】
本明細書で説明した技術は、コンピューティングデバイス602のこれら様々な構成によりサポートされ得るが、本明細書で説明した技術の特定の例に限定されるものではない。本機能は、以下で説明するように、プラットフォーム624を経由して「クラウド」622を介する等、分散システムの使用により全て又は一部が実装されてもよい。
【0068】
クラウド622は、リソース626のためのプラットフォーム624を含む、且つ/あるいは、リソース626のためのプラットフォーム624を表す。プラットフォーム624は、クラウド622のハードウェアリソース(例えば、サーバ)及びソフトウェアリソースの基礎をなす機能を抽象化する。リソース626は、コンピューティングデバイス602からリモートにあるサーバ上でコンピュータ処理が実行されている間に利用することができるアプリケーション及び/又はデータを含み得る。リソース626はまた、インターネット、及び/又は、セルラネットワーク若しくはWi−Fi(登録商標)ネットワーク等の加入者ネットワークを介して提供されるサービスを含み得る。
【0069】
プラットフォーム624は、コンピューティングデバイス602を他のコンピューティングデバイスに接続するためのリソース及び機能を抽象化することができる。プラットフォーム624はまた、リソースのスケーリングを抽象化して、プラットフォーム624を介して実装されるリソース626を求める受けた要求に対するスケールの対応するレベルを提供するよう機能することができる。したがって、相互接続されるデバイスの実施形態において、本明細書で説明した機能の実装物は、システム600にわたって分散させることができる。例えば、本明細書で説明した機能は、コンピューティングデバイス602上に一部を実装することができるとともに、クラウド622の機能を抽象化するプラットフォーム624を介して実装することができる。
【0070】
構造的特徴及び/又は方法論的動作に特有の言葉で主題について説明したが、添付の特許請求の範囲において定められる主題は、上述した特定の特徴又は動作に必ずしも限定されるものではない。そうではなく、上述した特定の特徴及び動作は、請求項を実施する例示的な形態として開示されている。