(57)【要約】      （修正有）【課題】ＯＳ側のジオフェンス機能を利用する場合に、ＯＳ側に設定する監視対象のエリアを切り替えるタイミングを制御する。【解決手段】監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載されたコンピュータに、第一の時点におけるコンピュータの位置に応じて、第一のエリア情報を生成する処理と、第一の時点におけるコンピュータの位置に基づいて、予め定義された複数の候補エリア情報から、ＯＳに監視対象エリアとして設定可能な最大数よりも第一のエリア情報の数以上少ない数の第二のエリア情報を選択する処理と、第一のエリア情報と、第二のエリア情報とを、ＯＳに監視対象エリアとして、設定する。【選択図】図８
2019109869.tif 000002
【特許請求の範囲】
【請求項１】
監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載されたコンピュータに、
第一の時点における前記コンピュータの位置に応じて、第一のエリア情報を生成する処理と、
前記第一の時点における前記コンピュータの位置に基づいて、予め定義された複数の候補エリア情報から、前記ＯＳに前記監視対象エリアとして設定可能な最大数よりも前記第一のエリア情報の数以上少ない数の第二のエリア情報を選択する処理と、
前記第一のエリア情報と、前記第二のエリア情報とを前記ＯＳに、前記監視対象エリアとして、設定する処理と、
前記コンピュータの位置が前記第一のエリア情報が示すエリアへ進入したこと又は離脱したことを示す第一の通知を、前記ＯＳから受信すると、前記第一の通知を受信した第二の時点における前記コンピュータの位置に応じて、新たな第一のエリア情報を生成する処理と、
前記第二の時点における前記コンピュータの位置に応じて、前記複数の候補エリア情報から、新たな前記第二のエリア情報の選択を行う処理と、
前記新たな第一のエリア情報と前記新たな第二のエリア情報とを、前記ＯＳの新たな監視対象エリアとして、再設定する処理と
を実行させることを特徴とする制御プログラム。
【請求項２】
前記コンピュータの位置が、前記第二のエリア情報が示すエリアの範囲内となったことを示す第二の通知を前記ＯＳから受信すると、前記第二のエリア情報に対応する情報を出力する処理を前記コンピュータに実行させることを特徴とする請求項１に記載の制御プログラム。
【請求項３】
前記新たな第一のエリア情報の生成と、前記新たな第二のエリア情報の選択とを行う処理は、
前記第二の通知を受信した第三の時点における前記コンピュータの位置に応じて、前記第一のエリア情報を新たに生成するとともに、前記複数の候補エリア情報から前記第二のエリア情報を新たに選択する、
ことを特徴とする請求項２に記載の制御プログラム。
【請求項４】
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置を含むエリアに対応することを特徴とする請求項１乃至請求項３のいずれか一項に記載の制御プログラム。
【請求項５】
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置が含まれ、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする請求項４に記載の制御プログラム。
【請求項６】
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置を含まず、該第一の時点における前記コンピュータの位置から所定距離離れた周囲に生成されたエリアに対応することを特徴とする請求項１乃至請求項３のいずれか一項に記載の制御プログラム。
【請求項７】
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置が含まれず、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする請求項６に記載の制御プログラム。
【請求項８】
前記第一のエリア情報は、前記コンピュータの移動の速さと前記コンピュータの移動方向との少なくとも一方に基づいて生成されることを特徴とする請求項１乃至請求項７のいずれか一項に記載の制御プログラム。
【請求項９】
監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載されたコンピュータが、
第一の時点における前記コンピュータの位置に応じて、第一のエリア情報を生成する処理と、
前記第一の時点における前記コンピュータの位置に基づいて、予め定義された複数の候補エリア情報から、前記ＯＳに前記監視対象エリアとして設定可能な最大数よりも前記第一のエリア情報の数以上少ない数の第二のエリア情報を選択する処理と、
前記第一のエリア情報と、前記第二のエリア情報とを前記ＯＳに、前記監視対象エリアとして、設定する処理と、
前記コンピュータの位置が前記第一のエリア情報が示すエリアへ進入したこと又は離脱したことを示す第一の通知を、前記ＯＳから受信すると、前記第一の通知を受信した第二の時点における前記コンピュータの位置に応じて、新たな第一のエリア情報を生成する処理と、
前記第二の時点における前記コンピュータの位置に応じて、前記複数の候補エリア情報から、新たな前記第二のエリア情報の選択を行う処理と、
前記新たな第一のエリア情報と前記新たな第二のエリア情報とを、前記ＯＳの新たな監視対象エリアとして、再設定する処理と
を実行することを特徴とする制御方法。
【請求項１０】
監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載された制御装置であって、
第一の時点における前記制御装置の位置に応じて、第一のエリア情報を生成する第１の生成部と、
前記第一の時点における前記制御装置の位置に基づいて、予め定義された複数の候補エリア情報から、前記ＯＳに前記監視対象エリアとして設定可能な最大数よりも前記第一のエリア情報の数以上少ない数の第二のエリア情報を選択する第１の選択部と、
前記第一のエリア情報と、前記第二のエリア情報とを前記ＯＳに、前記監視対象エリアとして、設定する設定部と、
前記制御装置の位置が前記第一のエリア情報が示すエリアへ進入したこと又は離脱したことが判定されると、前記判定した第二の時点における前記制御装置の位置に応じて、新たな第一のエリア情報を生成する第２の生成部と、
前記第二の時点における前記制御装置の位置に応じて、前記複数の候補エリア情報から、新たな前記第二のエリア情報の選択を行う第２の選択部と、
前記新たな第一のエリア情報と前記新たな第二のエリア情報とを、前記ＯＳの新たな監視対象エリアとして、再設定する再設定部と
を有することを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、制御プログラム、制御方法及び制御装置に関する。
【背景技術】
【０００２】
例えばＧＰＳ（Global  Positioning  System）受信機で測定した端末装置の位置情報を用いて、端末装置を利用するユーザが、予め決められた１以上の所定のエリア（サービス提供エリア）に進入したか又はサービス提供エリアから離脱したかを判定するアプリケーションが知られている。このようなアプリケーションでは、例えば、ユーザがサービス提供エリアに進入した場合、当該サービス提供エリアに応じたサービスをユーザに提供する。
【０００３】
他方で、ジオフェンス機能を備えるＯＳ（Operating  System）が知られている。ジオフェンス機能では、監視対象として設定されたエリア（このエリアは「ジオフェンス」と呼ばれる。）にユーザが進入したか又は当該エリアからユーザが離脱したかをＯＳが判定することができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特表２０１６−５２８５６４号公報
【特許文献２】特表２０１４−５２０３４１号公報
【特許文献３】特表２０１６−５２１９４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、アプリケーションがサービス提供エリアをＯＳに監視対象として設定することが考えられる。これにより、アプリケーションは、例えば、サービス提供エリアにユーザが進入したことを示す通知をＯＳから受け取ることで、当該サービス提供エリアに応じたサービスをユーザに提供することができる。
【０００６】
ただし、ジオフェンス機能では、監視対象として設定可能なエリアの最大数がＯＳによって予め決まっているため、アプリケーションは、当該最大数を超えた数のサービス提供エリアをＯＳに設定することはできない。例えば、監視対象として設定可能なエリアの最大数が「２０個」である場合、アプリケーションは、２０個を超える数のサービス提供エリアをＯＳに設定することはできない。
【０００７】
このため、ＯＳに設定可能な最大数を超える数のサービス提供エリアが存在する場合、アプリケーションは、これらのサービス提供エリアの全部を監視対象としてＯＳに設定することはできない。この場合、ＯＳに設定されていないサービス提供エリアにユーザが進入したとしても、ユーザには、当該サービス提供エリアに応じたサービスが提供されない。したがって、当該サービス提供エリアに応じたサービスを提供するためには、アプリケーションは、監視対象としてＯＳに設定するエリアを切り替える必要がある。
【０００８】
１つの側面では、本発明は、ＯＳ側のジオフェンス機能を利用する場合に、ＯＳ側に設定する監視対象のエリアを切り替えるタイミングを制御することを目的とする。
【課題を解決するための手段】
【０００９】
１つの態様では、監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載されたコンピュータに、第一の時点における前記コンピュータの位置に応じて、第一のエリア情報を生成する処理と、前記第一の時点における前記コンピュータの位置に基づいて、予め定義された複数の候補エリア情報から、前記ＯＳに前記監視対象エリアとして設定可能な最大数よりも前記第一のエリア情報の数以上少ない数の第二のエリア情報を選択する処理と、前記第一のエリア情報と、前記第二のエリア情報とを前記ＯＳに、前記監視対象エリアとして、設定する処理と、前記コンピュータの位置が前記第一のエリア情報が示すエリアへ進入したこと又は離脱したことを示す第一の通知を、前記ＯＳから受信すると、前記第一の通知を受信した第二の時点における前記コンピュータの位置に応じて、新たな第一のエリア情報を生成する処理と、前記第二の時点における前記コンピュータの位置に応じて、前記複数の候補エリア情報から、新たな前記第二のエリア情報の選択を行う処理と、前記新たな第一のエリア情報と前記新たな第二のエリア情報とを、前記ＯＳの新たな監視対象エリアとして、再設定する処理とを実行させることを特徴とする。
【発明の効果】
【００１０】
ＯＳ側のジオフェンス機能を利用する場合に、ＯＳ側に設定する監視対象のエリアを切り替えるタイミングを制御することができる。
【図面の簡単な説明】
【００１１】
【図１】第一の実施形態に係るサービス提供システムの全体構成の一例を示す図である。
【図２】ジオフェンスの再設定の一例を説明する図である。
【図３】第一の実施形態に係る端末装置のハードウェア構成の一例を示す図である。
【図４】第一の実施形態に係るサーバ装置のハードウェア構成の一例を示す図である。
【図５】第一の実施形態に係るサービス提供システムの機能構成の一例を示す図である。
【図６】ジオフェンス定義ＤＢの一例を示す図である。
【図７】サービスアプリケーションＤＢの一例を示す図である。
【図８】第一の実施形態に係るサービス提供システムの全体処理の一例を示す図である。
【図９】アプリ側ジオフェンス定義テーブルの一例を示す図である。
【図１０】第一の実施形態に係る初期設定処理の一例を示すシーケンス図である。
【図１１】ＯＳ側ジオフェンス定義テーブルの一例を示す図である。
【図１２】第一の実施形態に係るサービス提供処理の一例を示すシーケンス図である。
【図１３】第一の実施形態に係るジオフェンスへの進入又はジオフェンスからの離脱を判定する処理の一例を示すフローチャートである。
【図１４】サービス利用画面の一例を示す図である。
【図１５】第一の実施形態に係るジオフェンスの再設定処理の一例を示すシーケンス図である。
【図１６】第一の実施形態に係るサービス提供処理の他の例を示すシーケンス図である。
【図１７】第二の実施形態に係るサービス提供システムの機能構成の一例を示す図である。
【図１８】第二の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の一例を示すフローチャートである。
【図１９】制御用ジオフェンスの半径を算出する場合の一例を説明する図である。
【図２０】第二の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の他の例を示すフローチャートである。
【図２１】制御用ジオフェンスの半径を算出する場合の他の例を説明する図である。
【図２２】第三の実施形態に係る制御用ジオフェンスの一例を説明する図である。
【図２３】第三の実施形態に係るサービス提供システムの機能構成の一例を示す図である。
【図２４】第三の実施形態に係るサービス提供処理の一例を示すシーケンス図である。
【図２５】第三の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の一例を示すフローチャートである。
【図２６】第三の実施形態に係る制御用ジオフェンスの他の例を説明する図である。
【図２７】第三の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の他の例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施形態について添付の図面を参照しながら説明する。以降では、予め決められた所定のエリア（サービス提供エリア）にユーザが進入した場合に、当該エリアに応じたサービスをユーザに提供するサービス提供システム１について説明する。
【００１３】
（第一の実施形態）
まず、本実施形態に係るサービス提供システム１の全体構成について、図１を参照しながら説明する。図１は、第一の実施形態に係るサービス提供システム１の全体構成の一例を示す図である。
【００１４】
図１に示すように、本実施形態に係るサービス提供システム１は、端末装置１０と、サーバ装置２０とを有する。また、端末装置１０とサーバ装置２０とは、例えばインターネット等のネットワークＮを介して通信可能に接続される。
【００１５】
端末装置１０は、例えばスマートフォンやタブレット端末等のユーザが所持して移動させることが可能な情報処理端末である。端末装置１０は、ユーザが所定のエリアに進入したか又はユーザが所定のエリアから離脱したかを判定する。そして、端末装置１０は、ユーザが所定のエリアに進入したと判定した場合、当該エリアに応じたサービスをユーザに提供する。一方で、端末装置１０は、ユーザが所定のエリアから離脱したと判定した場合、当該エリアに応じたサービスの提供を終了する。なお、ユーザがエリアに進入することは「チェックイン」とも称され、ユーザがエリアから離脱することは「チェックアウト」とも称される。
【００１６】
端末装置１０には、ユーザアプリケーション１１０と、基盤アプリケーション１２０と、ＯＳ１３０とがインストールされている。ユーザアプリケーション１１０は、ユーザが利用するアプリケーションプログラムである。基盤アプリケーション１２０は、ユーザアプリケーション１１０の基盤として機能するアプリケーションプログラムであり、ＯＳ１３０のジオフェンス機能によって監視されるエリア（すなわち、監視対象のエリア）を当該ＯＳ１３０に設定及び再設定する。なお、ユーザアプリケーション１１０と基盤アプリケーション１２０とが１つのアプリケーション１４０を構成していても良い。
【００１７】
ＯＳ１３０は、ジオフェンス機能を備えるオペレーティングシステムである。ＯＳ１３０としては、例えば、ｉＯＳ（登録商標）やＡｎｄｒｏｉｄ（登録商標）等が挙げられる。ＯＳ１３０は、ジオフェンス機能により、ＧＰＳ受信機等によって測定されたユーザの現在位置に基づいて、基盤アプリケーション１２０から設定されたエリアにユーザが進入したか又はユーザが当該エリアから離脱したかを判定する。そして、ＯＳ１３０は、ユーザが当該エリアに進入したと判定した場合、ユーザが当該エリアに進入したことを示すイベントを基盤アプリケーション１２０に通知する。同様に、ＯＳ１３０は、ユーザが当該エリアから離脱したと判定した場合、ユーザが当該エリアから離脱したことを示すイベントを基盤アプリケーション１２０に通知する。以降では、ＯＳ１３０に設定されるエリアのことを「ジオフェンス」とも表す。
【００１８】
なお、端末装置１０は、スマートフォンやタブレット端末に限られない。端末装置１０は、例えば、携帯型のゲーム機器、音楽プレーヤー、ウェアラブルデバイス、自動車に搭載される車載機等であっても良い。すなわち、端末装置１０には、ユーザが所持して移動可能な又は車両（自動車、自動二輪車、自転車等）に搭載等して移動可能な種々の情報処理装置（コンピュータ）を用いることができる。
【００１９】
サーバ装置２０は、所定のエリア（ジオフェンス）を定義したジオフェンス定義情報やサービスを実現するサービスアプリケーションを端末装置１０に提供する情報処理装置又は情報処理システムである。
【００２０】
サーバ装置２０には、サーバプログラム２１０がインストールされている。また、サーバ装置２０は、ジオフェンス定義ＤＢ２２０と、サービスアプリケーションＤＢ２３０とを有する。
【００２１】
サーバ装置２０は、端末装置１０からの要求に応じて、ジオフェンス定義ＤＢ２２０に格納されているジオフェンス定義情報を当該端末装置１０に送信する。また、サーバ装置２０は、端末装置１０からの要求に応じて、サービスアプリケーションＤＢ２３０に格納されているサービスアプリケーションのうち、ユーザが進入したジオフェンスに対応するサービスアプリケーションを当該端末装置１０に送信する。なお、ジオフェンス定義ＤＢ２２０及びサービスアプリケーションＤＢ２３０の詳細については後述する。
【００２２】
サービスアプリケーションが端末装置１０に送信されることで、当該端末装置１０において、当該サービスアプリケーションにより実現されるサービスがユーザに提供される。このようなサービスとしては、例えば、ユーザが進入したジオフェンス内の観光案内情報を提供するサービス、ユーザが進入したジオフェンス内の店舗で利用可能なクーポンを提供するサービス等が挙げられる。ただし、ユーザに提供されるサービスは、これらに限られず、ユーザが進入したジオフェンスに応じた種々のサービスが提供されても良い。
【００２３】
ここで、基盤アプリケーション１２０が監視対象としてＯＳ１３０に設定するジオフェンスを切り替える場合（すなわち、監視対象のジオフェンスをＯＳ１３０に再設定する場合）について、図２を参照しながら説明する。図２は、ジオフェンスの再設定の一例を説明する図である。以降では、ユーザが進入した場合にサービスが提供されるジオフェンスを「サービス用ジオフェンス」と表す。これに対して、端末装置１０（コンピュータ）の現在位置に応じて生成されるジオフェンス（制御用ジオフェンス）は、本実施形態においては、端末装置１０の現在位置を含むように生成されるエリアである。例えば、端末装置１０の現在位置を中心に所定半径を有する円形のエリアが、制御用ジオフェンスとして設定される。
【００２４】
図２では、一例として、ＯＳ１３０に設定可能なジオフェンスの最大数Ｍが「５」であるものとする。また、図２に示すように、サービス用ジオフェンスは、「ｐｌａｃｅ１」〜「ｐｌａｃｅ１０」の１０個が存在するものとする。
【００２５】
Ｓ１）端末装置１０は、ユーザの現在位置から近い順（すなわち、当該端末装置１０の現在位置から近い順）に４（＝Ｍ−１）個のサービス用ジオフェンスを選択し、ＯＳ１３０に設定する。図２に示す例では、「ｐｌａｃｅ１」、「ｐｌａｃｅ２」、「ｐｌａｃｅ５」及び「ｐｌａｃｅ６」の４個のサービス用ジオフェンスが選択及び設定される。
【００２６】
また、端末装置１０は、ユーザの現在位置を中心として所定の半径の円形領域を表す制御用ジオフェンスを生成し、ＯＳ１３０に設定する。これにより、ＯＳ１３０には、選択されたＭ−１個のサービス用ジオフェンスと、生成された１個の制御用ジオフェンスとが監視対象として設定される。
【００２７】
Ｓ２）その後、ユーザが移動したことで、ユーザが制御用ジオフェンスから離脱した場合、端末装置１０は、ユーザの移動後の現在位置から近い順に４（＝Ｍ−１）個のサービス用ジオフェンスを新たに選択し、ＯＳ１３０に設定する。図２に示す例では、「ｐｌａｃｅ５」、「ｐｌａｃｅ６」、「ｐｌａｃｅ７」及び「ｐｌａｃｅ８」の４個のサービス用ジオフェンスが新たに選択及び設定される。
【００２８】
また、端末装置１０は、ユーザの移動後の現在位置を中心として所定の半径の円形領域を表す制御用ジオフェンスを新たに生成し、ＯＳ１３０に設定する。これにより、ＯＳ１３０には、新たに選択されたＭ−１個のサービス用ジオフェンスと、新たに生成された１個の制御用ジオフェンスとが監視対象として設定される。
【００２９】
以降も同様に、端末装置１０は、ユーザが制御用ジオフェンスから離脱した場合、サービス用ジオフェンスを新たに選択し、ＯＳ１３０に設定すると共に、制御用ジオフェンスを新たに生成し、ＯＳ１３０に設定する。
【００３０】
このように、本実施形態に係る端末装置１０は、ユーザが制御用ジオフェンスから離脱した場合（すなわち、当該端末装置１０が制御用ジオフェンスから離脱した場合）、サービス用ジオフェンス及び制御用ジオフェンスをＯＳ１３０に再設定する。これにより、本実施形態に係る端末装置１０では、ユーザの移動に応じて、監視対象としてＯＳ１３０に設定されるサービス用ジオフェンスを、当該ユーザの近くに存在するサービス用ジオフェンスに切り替えることができる。
【００３１】
制御用ジオフェンスは、或る時点におけるユーザの現在位置を含むジオフェンスであるため、ユーザがその位置から移動すると自然に、ジオフェンス離脱のイベントが発生することになる。これにより、アプリケーション１４０（基盤アプリケーション１２０）側ではＯＳ１３０からの通知を受けて、サービス用ジオフェンスを再選択及び再設定することができる。つまり、強制的にジオフェンス離脱を発生させる制御用ジオフェンスを導入したことで、アプリケーション１４０（基盤アプリケーション１２０）側でサービス用ジオフェンスの再選択を、制御用ジオフェンスからの離脱により必ず発生させることになる。以上から、ＯＳ１３０からのイベント通知がないことにより、サービス用ジオフェンスの再選択及び再設定が行われずに、ＯＳ１３０の監視対象が切り替わらないという事態を回避することができる。
【００３２】
次に、本実施形態に係る端末装置１０のハードウェア構成について、図３を参照しながら説明する。図３は、第一の実施形態に係る端末装置１０のハードウェア構成の一例を示す図である。
【００３３】
図３に示すように、本実施形態に係る端末装置１０は、入力装置１１と、表示装置１２と、外部Ｉ／Ｆ１３と、通信Ｉ／Ｆ１４と、ＲＯＭ（Read  Only  Memory）１５とを有する。また、本実施形態に係る端末装置１０は、ＲＡＭ１６（Random  Access  Memory）と、ＣＰＵ（Central  Processing  Unit）１７と、補助記憶装置１８と、ＧＰＳ受信機１９とを有する。これら各ハードウェアは、それぞれがバスＢ１で相互に接続されている。
【００３４】
入力装置１１は、例えばタッチパネル等であり、端末装置１０に各種の操作を入力するのに用いられる。表示装置１２は、例えばディスプレイ等であり、端末装置１０による各種の処理結果を表示する。
【００３５】
外部Ｉ／Ｆ１３は、外部装置とのインタフェースである。外部装置には、記録媒体１３ａ等がある。端末装置１０は、外部Ｉ／Ｆ１３を介して、記録媒体１３ａの読み取りや書き込みを行うことができる。記録媒体１３ａには、例えば、ＳＤメモリカード(SD  memory  card）やＵＳＢ（Universal  Serial  Bus）メモリ等がある。
【００３６】
通信Ｉ／Ｆ１４は、端末装置１０をネットワークＮに接続するためのインタフェースである。端末装置１０は、通信Ｉ／Ｆ１４を介して、サーバ装置２０と通信を行うことができる。
【００３７】
ＲＯＭ１５は、電源を切ってもデータを保持することができる不揮発性の半導体メモリである。ＲＡＭ１６は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＣＰＵ１７は、例えば補助記憶装置１８やＲＯＭ１５等からプログラムやデータをＲＡＭ１６上に読み出して、各種処理を実行する演算装置である。
【００３８】
補助記憶装置１８は、プログラムやデータを格納している不揮発性の半導体メモリである。補助記憶装置１８には、例えば、ユーザアプリケーション１１０、基盤アプリケーション１２０、ＯＳ１３０等が格納されている。ＧＰＳ受信機１９は、ＧＰＳから所定の電波を受信して、端末装置１０の現在位置を測定する。
【００３９】
本実施形態に係る端末装置１０は、図３に示すハードウェア構成を有することにより、後述する各種処理が実現される。
【００４０】
次に、本実施形態に係るサーバ装置２０のハードウェア構成について、図４を参照しながら説明する。図４は、第一の実施形態に係るサーバ装置２０のハードウェア構成の一例を示す図である。
【００４１】
図４に示すように、本実施形態に係るサーバ装置２０は、入力装置２１と、表示装置２２と、外部Ｉ／Ｆ２３と、通信Ｉ／Ｆ２４とを有する。また、本実施形態に係るサーバ装置２０は、ＲＯＭ２５と、ＲＡＭ２６と、ＣＰＵ２７と、補助記憶装置２８とを有する。これら各ハードウェアは、それぞれがバスＢ２で相互に接続されている。
【００４２】
入力装置２１は、例えばキーボードやマウス、タッチパネル等であり、サーバ装置２０に各種の操作を入力するのに用いられる。表示装置２２は、例えばディスプレイ等であり、サーバ装置２０による各種の処理結果を表示する。なお、サーバ装置２０は、入力装置２１及び表示装置２２のうちの少なくとも一方を有していなくても良い。
【００４３】
外部Ｉ／Ｆ２３は、外部装置とのインタフェースである。外部装置には、記録媒体２３ａ等がある。サーバ装置２０は、外部Ｉ／Ｆ２３を介して、記録媒体２３ａの読み取りや書き込みを行うことができる。記録媒体２３ａには、例えば、ＳＤメモリカードやＵＳＢメモリ、ＣＤ（Compact  Disc）、ＤＶＤ（Digital  Versatile  Disc）等がある。
【００４４】
通信Ｉ／Ｆ２４は、サーバ装置２０をネットワークＮに接続するためのインタフェースである。サーバ装置２０は、通信Ｉ／Ｆ２４を介して、端末装置１０と通信を行うことができる。
【００４５】
ＲＯＭ２５は、電源を切ってもデータを保持することができる不揮発性の半導体メモリである。ＲＡＭ２６は、プログラムやデータを一時保持する揮発性の半導体メモリである。ＣＰＵ２７は、例えば補助記憶装置２８やＲＯＭ２５等からプログラムやデータをＲＡＭ２６上に読み出して、各種処理を実行する演算装置である。
【００４６】
補助記憶装置２８は、例えばＨＤＤ（Hard  Disk  Drive）やＳＳＤ（Solid  State  Drive）等であり、プログラムやデータを格納している不揮発性のメモリである。補助記憶装置２８には、例えば、サーバプログラム２１０等が格納されている。
【００４７】
本実施形態に係るサーバ装置２０は、図４に示すハードウェア構成を有することにより、後述する各種処理が実現される。
【００４８】
次に、本実施形態に係るサービス提供システム１の機能構成について、図５を参照しながら説明する。図５は第一の実施形態に係るサービス提供システム１の機能構成の一例を示す図である。
【００４９】
図５に示すように、本実施形態に係る端末装置１０は、利用開始部１１１と、監視要求部１１２と、サービス処理部１１３とを有する。これら各部は、ユーザアプリケーション１１０がＣＰＵ１７に実行させる処理により実現される。
【００５０】
また、本実施形態に係る端末装置１０は、ジオフェンス取得部１２１と、選択部１２２と、生成部１２３と、設定要求部１２４と、判定要求部１２５と、イベント中継部１２６とを有する。これら各部は、基盤アプリケーション１２０がＣＰＵ１７に実行させる処理により実現される。
【００５１】
更に、本実施形態に係る端末装置１０は、設定部１３１と、位置取得部１３２と、位置判定部１３３と、イベント通知部１３４とを有する。これら各部は、ＯＳ１３０がＣＰＵ１７に実行させる処理により実現される。
【００５２】
利用開始部１１１は、ユーザアプリケーション１１０の利用開始イベントを受け付ける。ユーザアプリケーション１１０の利用開始イベントとは、例えば、ユーザアプリケーション１１０により表示される利用開始画面における利用開始操作、ユーザアプリケーション１１０の起動処理における所定のイベント等である。
【００５３】
監視要求部１１２は、利用開始部１１１により利用開始イベントが受け付けられると、ジオフェンスの監視を基盤アプリケーション１２０に要求する。ジオフェンスの監視とは、ユーザがジオフェンスに進入したか又はユーザがジオフェンスから離脱したかを判定することである。
【００５４】
サービス処理部１１３は、ユーザがジオフェンスに進入したことを示すイベント（ｉｎイベント）又はユーザがジオフェンスから離脱したことを示すイベント（ｅｘｉｔイベント）が基盤アプリケーション１２０から通知された場合、イベントに応じた処理を行う。
【００５５】
例えば、ユーザがジオフェンスに進入したことを示すイベント（ｉｎイベント）が通知された場合、サービス処理部１１３は、当該ジオフェンスに対応するサービスアプリケーションの取得要求をサーバ装置２０に送信する。これにより、ユーザが進入したジオフェンスに対応するサービスを実現するサービスアプリケーションがサーバ装置２０から取得される。
【００５６】
一方で、例えば、ユーザがジオフェンスから離脱したことを示すイベント（ｅｘｉｔイベント）が通知された場合、サービス処理部１１３は、当該ジオフェンスに対応するサービスアプリケーションを端末装置１０から削除する。
【００５７】
ジオフェンス取得部１２１は、監視要求部１１２によりジオフェンスの監視が要求されると、ジオフェンス定義情報の取得要求をサーバ装置２０に送信する。このとき、ジオフェンス取得部１２１は、例えば、位置取得部１３２により取得された位置情報（すなわち、端末装置１０を利用するユーザの現在位置を示す位置情報）を含む当該取得要求をサーバ装置２０に送信する。
【００５８】
ジオフェンス定義情報の取得要求に応じてサーバ装置２０から返信されるジオフェンス定義情報は、ジオフェンス取得部１２１により、アプリ側ジオフェンス定義テーブル３００に格納される。アプリ側ジオフェンス定義テーブル３００は、基盤アプリケーション１２０により管理されるテーブルであり、サーバ装置２０から返信されたジオフェンス定義情報（すなわち、サービス用ジオフェンスを定義したジオフェンス定義情報）を格納する。アプリ側ジオフェンス定義テーブル３００は、例えば補助記憶装置１８に記憶される。なお、アプリ側ジオフェンス定義テーブル３００の詳細については後述する。
【００５９】
選択部１２２は、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、監視対象としてＯＳ１３０に設定するジオフェンス定義情報を選択する。このとき、選択部１２２は、ＯＳ１３０に設定可能なジオフェンスの最大数Ｍから、制御用ジオフェンスの数Ｌ（本実施形態ではＬ＝１）以上少ない数のジオフェンス定義情報を、当該ジオフェンス定義情報が定義するジオフェンスとユーザの現在位置とが近い順にアプリ側ジオフェンス定義テーブル３００から選択する。
【００６０】
生成部１２３は、制御用ジオフェンスのジオフェンス定義情報を生成する。このとき、生成部１２３は、例えば、ユーザの現在位置を中心として所定の半径の円形領域を表す制御用ジオフェンスのジオフェンス定義情報を生成する。
【００６１】
設定要求部１２４は、選択部１２２により選択されたジオフェンス定義情報（サービス用ジオフェンスのジオフェンス定義情報）の設定をＯＳ１３０に要求する。また、設定要求部１２４は、生成部１２３により生成されたジオフェンス定義情報（制御用ジオフェンスのジオフェンス定義情報）の設定をＯＳ１３０に要求する。
【００６２】
判定要求部１２５は、ユーザがジオフェンスに進入したか又はユーザがジオフェンスから離脱したかの判定をＯＳ１３０に要求する。
【００６３】
イベント中継部１２６は、ＯＳ１３０から通知されたイベント（ｉｎイベント又はｅｘｉｔイベント）をユーザアプリケーション１１０等に中継する。例えば、イベント中継部１２６は、サービス用ジオフェンスへのｉｎイベント又はサービス用ジオフェンスからのｅｘｉｔイベントが通知された場合、当該ｉｎイベント又はｅｘｉｔイベントをユーザアプリケーション１１０に通知する。
【００６４】
また、イベント中継部１２６は、制御用ジオフェンスからのｅｘｉｔイベントが通知された場合、当該ｅｘｉｔイベントを選択部１２２及び生成部１２３に通知する。制御用ジオフェンスからのｅｘｉｔイベントが選択部１２２に通知されることで、選択部１２２では、新たなサービス用ジオフェンスが選択される。同様に、制御用ジオフェンスからのｅｘｉｔイベントが生成部１２３に通知されることで、生成部１２３では、新たな制御用ジオフェンスが生成される。
【００６５】
一方で、イベント中継部１２６は、制御用ジオフェンスへのｉｎイベントが通知された場合、当該ｉｎイベントを破棄する。これは、ユーザの現在位置を含む制御用ジオフェンス（例えば、ユーザの現在位置を中心として所定の半径の円形領域を表す制御用ジオフェンス）がＯＳ１３０に設定されると、ｉｎイベントが発生するが、ユーザアプリケーション１１０等にとって、制御用ジオフェンスへのｉｎイベントの通知は不要だからである。
【００６６】
設定部１３１は、設定要求部１２４からの要求に応じて、ジオフェンス定義情報をＯＳ側ジオフェンス定義テーブル４００に格納する。ＯＳ側ジオフェンス定義テーブル４００は、ＯＳ１３０により管理されるテーブルであり、監視対象のジオフェンスを表すジオフェンス定義情報を格納する。ジオフェンス定義情報がＯＳ側ジオフェンス定義テーブル４００に格納されることで、当該ジオフェンス定義情報によって表されるジオフェンスが監視対象としてＯＳ１３０に設定される。ＯＳ側ジオフェンス定義テーブル４００は、例えば補助記憶装置１８に記憶される。なお、ＯＳ側ジオフェンス定義テーブル４００の詳細については後述する。
【００６７】
位置取得部１３２は、ＧＰＳ受信機１９により測定された位置（すなわち、端末装置１０を利用するユーザの現在位置）を示す位置情報を取得する。
【００６８】
位置判定部１３３は、ＯＳ側ジオフェンス定義テーブル４００を参照して、ユーザがジオフェンスに進入したか又はジオフェンスから離脱したかを判定する。すなわち、位置判定部１３３は、位置取得部１３２により取得された位置情報により示される位置（ユーザの現在位置）がジオフェンスに進入したか又はジオフェンスから離脱したかを判定する。
【００６９】
イベント通知部１３４は、位置判定部１３３によりユーザがジオフェンスに進入したと判定された場合、当該ジオフェンスへの進入を示すｉｎイベントを基盤アプリケーション１２０に通知する。また、イベント通知部１３４は、位置判定部１３３によりユーザがジオフェンスから離脱したと判定された場合、当該ジオフェンスからの離脱を示すｅｘｉｔイベントを基盤アプリケーション１２０に通知する。
【００７０】
図５に示すように、本実施形態に係るサーバ装置２０は、ジオフェンス提供部２１１と、アプリ提供部２１２とを有する。これら各部は、サーバプログラム２１０がＣＰＵ２７に実行させる処理により実現される。
【００７１】
また、本実施形態に係るサーバ装置２０は、上述したように、ジオフェンス定義ＤＢ２２０と、サービスアプリケーションＤＢ２３０とを有する。これら各ＤＢは、例えば補助記憶装置２８を用いて実現可能である。なお、これら各ＤＢのうちの少なくとも１つのＤＢが、サーバ装置２０とネットワークＮを介して接続される記憶装置等を用いて実現されていても良い。
【００７２】
ジオフェンス提供部２１１は、ジオフェンス定義情報の取得要求を受信すると、当該取得要求に対応するジオフェンス定義情報をジオフェンス定義ＤＢ２２０から取得し、当該ジオフェンス定義情報を端末装置１０に返信する。
【００７３】
アプリ提供部２１２は、サービスアプリケーションの取得要求を受信すると、当該取得要求に対応するサービスアプリケーションをサービスアプリケーションＤＢ２３０から取得し、当該サービスアプリケーションを端末装置１０に返信する。
【００７４】
ジオフェンス定義ＤＢ２２０は、地図上に定義されたサービス用ジオフェンスを表すジオフェンス定義情報を格納する。ここで、ジオフェンス定義ＤＢ２２０について、図６を参照しながら説明する。図６は、ジオフェンス定義ＤＢ２２０の一例を示す図である。
【００７５】
図６に示すように、ジオフェンス定義ＤＢ２２０には、提供地域毎に、ジオフェンス定義情報が格納されている。図６に示すジオフェンス定義ＤＢ２２０には、提供地域「地域Ａ」の１以上のジオフェンス定義情報、提供地域「地域Ｂ」の１以上のジオフェンス定義情報等が格納されている。これは、例えば、ジオフェンス定義情報の取得要求に含まれる位置情報により示される位置が地域Ａに含まれる場合、ジオフェンス提供部２１１は、提供地域「地域Ａ」のジオフェンス定義情報を端末装置１０に送信することを示している。同様に、例えば、ジオフェンス定義情報の取得要求に含まれる位置情報により示される位置が地域Ｂに含まれる場合、ジオフェンス提供部２１１は、提供地域「地域Ｂ」のジオフェンス定義情報を端末装置１０に送信することを示している。これにより、ユーザアプリケーション１１０の利用開始イベントを受け付けたときにおけるユーザの現在位置に対応するジオフェンス定義情報が端末装置１０に提供される。
【００７６】
なお、提供地域に設定される地域は、例えば、地図上の緯度及び経度を各頂点とする多角形領域等で定義される。当該多角形領域等によって、例えば、都道府県や市区町村、地方（例えば、東北地方や関東地方、東海地方等）等の各種地域を示す地理的な範囲が表される。
【００７７】
また、各ジオフェンス定義情報には、データの項目として、ジオフェンスＩＤと、ジオフェンス名と、緯度と、経度と、半径とが含まれる。
【００７８】
ジオフェンスＩＤは、ジオフェンスを識別する識別情報である。ジオフェンス名は、ジオフェンスの名称である。緯度及び経度は、ジオフェンスの中心を示す緯度及び経度である。半径は、ジオフェンスの半径である。これにより、ジオフェンス定義情報では、所定の緯度及び経度を中心とした所定の半径で表される円を境界とする円形領域がジオフェンスとして定義される。
【００７９】
なお、ジオフェンスは、円形領域に限られない。ジオフェンス定義情報では、例えば、楕円領域や多角形領域、種々の曲線を境界とする領域等で表されるジオフェンスが定義されていても良い。
【００８０】
また、図６に示すジオフェンス定義ＤＢ２２０では、提供地域毎にジオフェンス定義情報が格納されている場合について説明したが、これに限られない。ジオフェンス定義ＤＢ２２０では、例えば、ユーザアプリケーション１１０を識別するアプリＩＤ毎にジオフェンス定義情報が格納されていても良いし、アプリＩＤ及び提供地域毎にジオフェンス定義情報が格納されていても良い。これにより、複数の種類のユーザアプリケーション１１０が存在する場合に、例えば、ユーザアプリケーション１１０毎に、当該ユーザアプリケーション１１０に対応するジオフェンス定義情報を端末装置１０に提供することができる。
【００８１】
サービスアプリケーションＤＢ２３０は、サービスアプリケーションを格納する。ここで、サービスアプリケーションＤＢ２３０について、図７を参照しながら説明する。図７は、サービスアプリケーションＤＢ２３０の一例を示す図である。
【００８２】
図７に示すように、サービスアプリケーションＤＢ２３０には、ジオフェンスＩＤ毎に、当該ジオフェンスＩＤに対応付けてサービスアプリケーションが格納されている。例えば、ジオフェンスＩＤ「ａ００１」には、アプリケーション名「サービスアプリ１」のサービスアプリケーションが対応付けられている。同様に、例えば、ジオフェンスＩＤ「ａ００２」には、アプリケーション名「サービスアプリ２」のサービスアプリケーションが対応付けられている。これは、例えば、ジオフェンスＩＤ「ａ００１」により識別されるジオフェンス定義情報が定義するジオフェンスにユーザが進入した場合、端末装置１０には、アプリケーション名「サービスアプリ１」のサービスアプリケーションが提供されることを示している。同様に、例えば、ジオフェンスＩＤ「ａ００２」により識別されるジオフェンス定義情報が定義するジオフェンスにユーザが進入した場合、端末装置１０には、アプリケーション名「サービスアプリ２」のサービスアプリケーションが提供されることを示している。
【００８３】
以降では、本実施形態に係るサービス提供システム１の全体処理について、図８を参照しながら説明する。図８は、第一の実施形態に係るサービス提供システム１の全体処理の一例を示す図である。
【００８４】
まず、ユーザアプリケーション１１０の利用開始部１１１は、当該ユーザアプリケーション１１０の利用開始イベントを受け付ける（ステップＳ８０１）。
【００８５】
次に、ユーザアプリケーション１１０の監視要求部１１２は、利用開始部１１１により利用開始イベントが受け付けられると、ジオフェンスの監視を基盤アプリケーション１２０に要求する（ステップＳ８０２）。
【００８６】
基盤アプリケーション１２０のジオフェンス取得部１２１は、監視要求部１１２によりジオフェンスの監視が要求されると、位置情報の取得をＯＳ１３０に要求する（ステップＳ８０３）。
【００８７】
ＯＳ１３０の位置取得部１３２は、ジオフェンス取得部１２１により位置情報の取得が要求されると、ＧＰＳ受信機１９により測定された位置を示す位置情報を取得する（ステップＳ８０４）。そして、位置取得部１３２は、取得した位置情報を基盤アプリケーション１２０に返信する（ステップＳ８０５）。
【００８８】
なお、端末装置１０の現在位置は、ＧＰＳ受信機１９により測定される場合に限られない。端末装置１０の現在位置は、例えば、Ｗｉ−Ｆｉ（登録商標）により測定されても良いし、Ｂｌｕｅｔｏｏｔｈ（登録商標）等を用いたビーコンにより測定されても良い。
【００８９】
基盤アプリケーション１２０のジオフェンス取得部１２１は、ＯＳ１３０から位置情報が返信されると、ジオフェンスの取得要求をサーバ装置２０に送信する（ステップＳ８０６）。このとき、ジオフェンスの取得要求には、ＯＳ１３０から返信された位置情報（すなわち、ユーザの現在位置を示す位置情報）が含まれる。
【００９０】
なお、ジオフェンス取得部１２１は、上述したように、ジオフェンスの取得要求にアプリＩＤを含めても良い。
【００９１】
サーバ装置２０のジオフェンス提供部２１１は、ジオフェンス定義情報の取得要求を受信すると、当該取得要求に対応するジオフェンス定義情報をジオフェンス定義ＤＢ２２０から取得する（ステップＳ８０７）。すなわち、ジオフェンス提供部２１１は、当該取得要求に含まれる位置情報により示される位置が含まれる提供地域を特定し、特定した提供地域のジオフェンス定義情報をジオフェンス定義ＤＢ２２０から取得する。
【００９２】
ジオフェンス提供部２１１は、ジオフェンス定義ＤＢ２２０から取得したジオフェンス定義情報を端末装置１０に返信する（ステップＳ８０８）。なお、このとき、ジオフェンス提供部２１１は、特定した提供地域に関する情報（例えば、提供地域を表す地域名、提供地域を定義する多角形領域等を表す情報等）を端末装置１０に返信しても良い。
【００９３】
基盤アプリケーション１２０のジオフェンス取得部１２１は、サーバ装置２０から返信されたジオフェンス定義情報をアプリ側ジオフェンス定義テーブル３００に格納する（ステップＳ８０９）。
【００９４】
ここで、アプリ側ジオフェンス定義テーブル３００について、図９を参照しながら説明する。図９は、アプリ側ジオフェンス定義テーブル３００の一例を示す図である。図９に示すように、アプリ側ジオフェンス定義テーブル３００には、サーバ装置２０から返信されたジオフェンス定義情報が格納される。
【００９５】
なお、本実施形態では、アプリ側ジオフェンス定義テーブル３００には、サーバ装置２０から返信されたジオフェンス定義情報が格納されるものとしたが、これに限られない。例えば、アプリ側ジオフェンス定義テーブル３００には予めジオフェンス定義情報が格納されていても良い。
【００９６】
図８に戻る。ステップＳ８０９に続いて、基盤アプリケーション１２０及びＯＳ１３０は、初期設定処理を行う（ステップＳ８１０）。初期設定処理では、サービス用ジオフェンスを表すジオフェンス定義情報の選択と、制御用ジオフェンスを表すジオフェンス定義情報の生成とが行われ、これらのジオフェンス定義情報がＯＳ１３０に設定される。なお、初期設定処理の詳細は後述する。
【００９７】
次に、端末装置１０及びサーバ装置２０は、例えばユーザアプリケーション１１０が利用終了イベントを受け付けるまで、サービス提供処理を行う（ステップＳ８１１）。ユーザアプリケーション１１０の利用終了イベントとは、例えば、ユーザアプリケーション１１０により表示される所定の画面における利用終了操作等である。サービス提供処理では、ユーザがジオフェンスに進入したか又はユーザがジオフェンスから離脱したかが判定され、判定結果に応じて、ジオフェンスの再設定やサービスの提供が行われる。なお、サービス提供処理の詳細は後述する。
【００９８】
以降では、図８のステップＳ８１０の処理（初期設定処理）の詳細について、図１０を参照しながら説明する。図１０は、第一の実施形態に係る初期設定処理の一例を示すシーケンス図である。
【００９９】
まず、基盤アプリケーション１２０の選択部１２２は、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報の数が選択可能数Ｓを超えているか否かを判定する（ステップＳ１００１）。選択可能数Ｓとは、ＯＳ１３０に設定可能なサービス用ジオフェンスの数である。選択可能数Ｓは、ＯＳ１３０に設定可能なジオフェンスの最大数Ｍと、制御用ジオフェンスの数Ｌ（本実施形態ではＬ＝１）とを用いて、Ｓ＝Ｍ−Ｌと表される。
【０１００】
上記のステップＳ１００１において、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報の数が選択可能数Ｓを超えていないと判定された場合、基盤アプリケーション１２０は、ステップＳ１００２の処理を行う。すなわち、この場合、基盤アプリケーション１２０の選択部１２２は、アプリ側ジオフェンス定義テーブル３００に格納されている全てのジオフェンス定義情報を選択する（ステップＳ１００２）。これにより、Ｓ個以下のジオフェンス定義情報が選択される。
【０１０１】
一方で、上記のステップＳ１００１において、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報の数が選択可能数Ｓを超えていると判定された場合、基盤アプリケーション１２０は、ステップＳ１００３の処理を行う。すなわち、この場合、基盤アプリケーション１２０の選択部１２２は、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、当該ジオフェンス定義情報が定義するジオフェンスとユーザの現在位置とが近い順に最大でＳ個のジオフェンス定義情報を選択する（ステップＳ１００３）。
【０１０２】
ユーザの現在位置から近い順とは、例えば、ジオフェンス定義情報に含まれる緯度及び経度と、現在位置を示す緯度及び経度とが近い順としても良いし、ジオフェンスの境界と、現在位置を示す緯度及び経度とが近い順としても良い。また、現在位置としては、例えば、図８のステップＳ８０５で返信された位置情報により示される位置を用いても良いし、位置取得部１３２により位置情報を取得し直しても良い。
【０１０３】
なお、選択部１２２によるジオフェンス定義情報の選択は、ユーザの現在位置からの近い順での選択に限られない。例えば、ジオフェンス定義情報に優先度が設定されるような場合には、選択部１２２は、優先度が高い順に最大でＳ個のジオフェンス定義情報を選択しても良い。
【０１０４】
ステップＳ１００２又はステップＳ１００３に続いて、基盤アプリケーション１２０の設定要求部１２４は、サービス用ジオフェンスの設定をＯＳ１３０に要求する（ステップＳ１００４）。当該要求には、選択部１２２により選択されたジオフェンス定義情報が含まれる。
【０１０５】
ＯＳ１３０の設定部１３１は、設定要求部１２４からサービス用ジオフェンスの設定が要求されると、当該要求に含まれているジオフェンス定義情報をＯＳ側ジオフェンス定義テーブル４００に格納する（ステップＳ１００５）。これにより、サービス用ジオフェンスがＯＳ１３０に設定される。
【０１０６】
次に、基盤アプリケーション１２０の生成部１２３は、制御用ジオフェンスのジオフェンス定義情報を生成する（ステップＳ１００６）。生成部１２３は、例えば、ユーザの現在位置を中心として所定の半径（例えば、数百メートル等）の円形領域を表す制御用ジオフェンスのジオフェンス定義情報を生成する。
【０１０７】
ただし、生成部１２３により生成される制御用ジオフェンスのジオフェンス定義情報は、これに限られない。生成部１２３は、例えば、ユーザの現在位置を含む円形以外の領域を表す制御用ジオフェンスのジオフェンス定義情報を生成しても良い。円形以外の領域としては、例えば、楕円領域、多角形領域、種々の曲線を境界とする領域等であっても良い。
【０１０８】
次に、基盤アプリケーション１２０の設定要求部１２４は、制御用ジオフェンスの設定をＯＳ１３０に要求する（ステップＳ１００７）。当該要求には、生成部１２３により生成されたジオフェンス定義情報が含まれる。
【０１０９】
ＯＳ１３０の設定部１３１は、設定要求部１２４から制御用ジオフェンスの設定が要求されると、当該要求に含まれているジオフェンス定義情報をＯＳ側ジオフェンス定義テーブル４００に格納する（ステップＳ１００８）。これにより、制御用ジオフェンスがＯＳ１３０に設定される。
【０１１０】
ここで、一例として、ＯＳ１３０に設定可能なジオフェンスの最大数Ｍが「２０」である場合におけるＯＳ側ジオフェンス定義テーブル４００について、図１１を参照しながら説明する。図１１は、ＯＳ側ジオフェンス定義テーブル４００の一例を示す図である。
【０１１１】
図１１に示すように、ＯＳ側ジオフェンス定義テーブル４００には、ジオフェンスＩＤが「ａ００１」〜「ａ０１９」の１９個のサービス用ジオフェンスのジオフェンス定義情報が格納されている。また、ＯＳ側ジオフェンス定義テーブル４００には、ジオフェンスＩＤが「ｃ０００」の１個の制御用ジオフェンスのジオフェンス定義情報が格納されている。
【０１１２】
このように、ＯＳ側ジオフェンス定義テーブル４００には、Ｓ＝Ｍ−Ｌ個以下のサービス用ジオフェンスのジオフェンス定義情報と、Ｌ個（本実施形態ではＬ＝１）の制御用ジオフェンスのジオフェンス定義情報とが格納される。上述したように、ＯＳ側ジオフェンス定義テーブル４００に格納されるジオフェンス定義情報が定義するジオフェンスが監視対象のジオフェンスである。
【０１１３】
なお、図１０では、サービス用ジオフェンスが選択及び設定（ステップＳ１００１〜ステップＳ１００５）された後、制御用ジオフェンスが生成及び設定（ステップＳ１００６〜ステップＳ１００８）されるが、この処理順は逆であっても良い。すなわち、制御用ジオフェンスが生成及び設定（ステップＳ１００６〜ステップＳ１００８）された後、サービス用ジオフェンスが選択及び設定（ステップＳ１００１〜ステップＳ１００５）されても良い。更に、生成された制御用ジオフェンスと選択されたサービス用ジオフェンスとが、ＯＳ１３０側の監視対象として同時に設定されても良い。
【０１１４】
以降では、図８のステップＳ８１１の処理（サービス提供処理）の詳細について、図１２を参照しながら説明する。図１２は、第一の実施形態に係るサービス提供処理の一例を示すシーケンス図である。
【０１１５】
まず、基盤アプリケーション１２０の判定要求部１２５は、ユーザがジオフェンスに進入したか又はユーザがジオフェンスから離脱したかの判定をＯＳ１３０に要求する（ステップＳ１２０１）。
【０１１６】
ＯＳ１３０は、ユーザがジオフェンスに進入したか又はユーザがジオフェンスから離脱したかの判定が判定要求部１２５から要求されると、ジオフェンスへの進入又はジオフェンスからの離脱判定処理を開始する（ステップＳ１２０２）。ここで、ジオフェンスへの進入又はジオフェンスからの離脱判定処理について、図１３を参照しながら説明する。図１３は、第一の実施形態に係るジオフェンスへの進入又はジオフェンスからの離脱を判定する処理の一例を示すフローチャートである。
【０１１７】
ＯＳ１３０の位置取得部１３２は、ＧＰＳ受信機１９により測定された位置（すなわち、端末装置１０を利用するユーザの現在位置）を示す位置情報を取得する（ステップＳ１３０１）。
【０１１８】
次に、位置判定部１３３は、ＯＳ側ジオフェンス定義テーブル４００を参照して、ユーザが、それぞれのジオフェンスに進入したか、又はそれぞれのジオフェンスから離脱したかを判定する（ステップＳ１３０２）。例えば、位置判定部１３３は、ＯＳ側ジオフェンス定義テーブル４００に格納されているジオフェンス定義情報毎に、当該ジオフェンス定義情報が定義するジオフェンスにユーザの現在位置が含まれるか否かを判定する。そして、位置判定部１３３は、当該ジオフェンス定義情報が定義するジオフェンスにユーザの現在位置が含まれると判定した場合、ユーザが当該ジオフェンスに進入したと判定する。一方で、位置判定部１３３は、ユーザの現在位置が含まれていたジオフェンスからユーザの現在位置が含まれなくなったと判定された場合、ユーザが当該ジオフェンスから離脱したと判定する。
【０１１９】
ステップＳ１３０２において、ユーザがジオフェンスに進入したと判定されず、かつ、ユーザがジオフェンスから離脱したとも判定されなかった場合、ＯＳ１３０は、ステップＳ１３０１に戻る。したがって、この場合、例えば所定の時間毎に、上記のステップＳ１３０１及びステップＳ１３０２の処理が繰り返し行われる。例えば、ＧＰＳ受信機１９による位置の測定間隔がΔＴである場合、ΔＴ毎に、上記のステップＳ１３０１及びステップＳ１３０２の処理が繰り返し行われる。
【０１２０】
これにより、監視対象としてＯＳ１３０に設定されたジオフェンス（サービス用ジオフェンス及び制御用ジオフェンス）が監視される。
【０１２１】
一方で、ステップＳ１３０２において、ユーザがジオフェンスに進入したと判定された場合、又は、ユーザがジオフェンスから離脱したと判定された場合、ＯＳ１３０は、ジオフェンスへの進入又はジオフェンスからの離脱判定処理を終了する。
【０１２２】
図１２に戻る。ステップＳ１２０２において、ユーザがジオフェンスに進入したと判定された場合、後述するステップＳ１２０３〜ステップＳ１２０７の処理が行われる。一方で、ステップＳ１２０２において、ユーザがジオフェンスから離脱したと判定された場合、後述するステップＳ１２０８〜ステップＳ１２１１の処理が行われる。
【０１２３】
ステップＳ１２０２において、ユーザがジオフェンスに進入したと判定された場合、イベント通知部１３４は、当該ジオフェンスへの進入を示すｉｎイベントを基盤アプリケーション１２０に通知する（ステップＳ１２０３）。ｉｎイベントには、ユーザが進入したジオフェンスを識別するジオフェンスＩＤが含まれる。なお、ｉｎイベントには、例えば、図８のステップ１３０１で取得された位置情報（ユーザの現在位置を示す位置情報）が含まれていても良い。
【０１２４】
基盤アプリケーション１２０のイベント中継部１２６は、ＯＳ１３０から通知されたｉｎイベントがサービス用ジオフェンスへの進入を示すｉｎイベントである場合、当該ｉｎイベントをユーザアプリケーション１１０に通知する（ステップＳ１２０４）。一方で、基盤アプリケーション１２０のイベント中継部１２６は、ＯＳ１３０から通知されたｉｎイベントが制御用ジオフェンスへの進入を示すｉｎイベントである場合、当該ｉｎイベントを破棄する。なお、イベント中継部１２６は、例えば、ｉｎイベントに含まれるジオフェンスＩＤがアプリ側ジオフェンス定義テーブル３００に含まれない場合、当該ジオフェンスＩＤにより識別されるジオフェンスを制御用ジオフェンスと判断すれば良い。一方で、イベント中継部１２６は、例えば、ｉｎイベントに含まれるジオフェンスＩＤがアプリ側ジオフェンス定義テーブル３００に含まれる場合、当該ジオフェンスＩＤにより識別されるジオフェンスをサービス用ジオフェンスと判断すれば良い。
【０１２５】
ユーザアプリケーション１１０のサービス処理部１１３は、ｉｎイベントが基盤アプリケーション１２０から通知されると、サービスアプリケーションの取得要求をサーバ装置２０に送信する（ステップＳ１２０５）。サービスアプリケーションの取得要求には、当該ｉｎイベントに含まれているジオフェンスＩＤが含まれる。
【０１２６】
サーバ装置２０のアプリ提供部２１２は、サービスアプリケーションの取得要求を受信すると、当該取得要求に対応するサービスアプリケーションをサービスアプリケーションＤＢ２３０から取得する（ステップＳ１２０６）。すなわち、アプリ提供部２１２は、当該取得要求に含まれるジオフェンスＩＤに対応するサービスアプリケーションをサービスアプリケーションＤＢ２３０から取得する。
【０１２７】
そして、アプリ提供部２１２は、サービスアプリケーションＤＢ２３０から取得したサービスアプリケーションを端末装置１０に返信する（ステップＳ１２０７）。
【０１２８】
これにより、端末装置１０を利用するユーザに対して、サービスアプリケーションにより実現されるサービスが提供される。ここで、一例として、ユーザアプリケーション１１０が「Ａ市観光アプリ」であり、Ａ市内にある「ＡＢＣモール」を示す地理的範囲に定義されたサービス用ジオフェンスにユーザが進入した場合に提供されるサービスの利用画面について、図１４を参照しながら説明する。図１４は、サービス利用画面の一例を示す図である。
【０１２９】
図１４に示すサービス利用画面Ｇ１００は、ユーザアプリケーション１１０により表示される画面である。サービスアプリケーションの一例である「ＡＢＣモールアプリ」がサーバ装置２０から返信された場合、ユーザアプリケーション１１０は、サービス利用画面Ｇ１００上にアイコンＧ１１０を表示する。
【０１３０】
アイコンＧ１１０は、「ＡＢＣモールアプリ」により提供されるサービスを利用するための表示部品である。ユーザによりアイコンＧ１１０が選択されると、「ＡＢＣモールアプリ」により、サービス利用画面Ｇ２００が表示される。これにより、ユーザは、「ＡＢＣモールアプリ」により提供されるサービス（例えば、「ＡＢＣモール」内の店舗で利用可能なクーポン情報）を利用することができる。
【０１３１】
なお、本実施形態では、ユーザがサービス用ジオフェンスに進入した場合、ユーザアプリケーション１１０が当該サービス用ジオフェンスに対応するサービスアプリケーションをサーバ装置２０から取得する場合について説明したが、これに限られない。ユーザがサービス用ジオフェンスに進入した場合、ユーザアプリケーション１１０は、例えば、当該サービス用ジオフェンスに対応する情報の出力（例えば、画像や文字情報等の表示、動画や音楽等の再生、メール送信等）を行っても良い。
【０１３２】
図１２に戻る。ステップＳ１２０２において、ユーザがジオフェンスから離脱したと判定された場合、イベント通知部１３４は、当該ジオフェンスからの離脱を示すｅｘｉｔイベントを基盤アプリケーション１２０に通知する（ステップＳ１２０８）。ｅｘｉｔイベントには、ユーザが離脱したジオフェンスを識別するジオフェンスＩＤが含まれる。なお、ｅｘｉｔイベントには、例えば、図８のステップ１３０１で取得された位置情報（ユーザの現在位置を示す位置情報）が含まれていても良い。
【０１３３】
ＯＳ１３０から通知されたｅｘｉｔイベントがサービス用ジオフェンスからの離脱を示すｅｘｉｔイベントである場合、基盤アプリケーション１２０のイベント中継部１２６は、当該ｅｘｉｔイベントをユーザアプリケーション１１０に通知する（ステップＳ１２０９）。
【０１３４】
ユーザアプリケーション１１０のサービス処理部１１３は、ｅｘｉｔイベントが基盤アプリケーション１２０から通知されると、当該ｅｘｉｔイベントに含まれるジオフェンスＩＤに対応するサービスアプリケーションを削除する（ステップＳ１２１０）。これにより、当該サービスアプリケーションによるサービスの提供が終了する。
【０１３５】
一方で、ＯＳ１３０から通知されたｅｘｉｔイベントが制御用ジオフェンスからの離脱を示すｅｘｉｔイベントである場合、基盤アプリケーション１２０は、ジオフェンスの再設定処理を行う（ステップＳ１２１１）。すなわち、基盤アプリケーション１２０は、サービス用ジオフェンスの再選択及びＯＳ１３０への再設定と、制御用ジオフェンスの再生成及びＯＳ１３０への再設定とを行う。ここで、ジオフェンスの再設定処理について、図１５を参照しながら説明する。図１５は、第一の実施形態に係るジオフェンスの再設定処理の一例を示すシーケンス図である。
【０１３６】
まず、基盤アプリケーション１２０の設定要求部１２４は、ジオフェンスの削除をＯＳ１３０に要求する（ステップＳ１５０１）。
【０１３７】
ＯＳ１３０の設定部１３１は、設定要求部１２４からジオフェンスの削除が要求されると、ＯＳ側ジオフェンス定義テーブル４００に格納されている全てのジオフェンス定義情報を削除する（ステップＳ１５０２）。これにより、監視対象としてＯＳ１３０に設定されているジオフェンスが削除される。
【０１３８】
次に、基盤アプリケーション１２０の選択部１２２は、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、当該ジオフェンス定義情報が定義するジオフェンスとユーザの現在位置とが近い順に最大でＳ個のジオフェンス定義情報を選択する（ステップＳ１５０３）。
【０１３９】
なお、例えば、ＯＳ１３０から通知されたｅｘｉｔイベントに含まれる位置情報に基づいて、ユーザの現在位置が属する地域（提供地域）が変更になったか否かが判定されても良い。このような判定は、例えば、当該位置情報と、図８のステップＳ８０８でサーバ装置２０から返信された提供地域に関する情報とに基づいて端末装置１０で行われても良いし、当該位置情報が含まれる問合せを端末装置１０からサーバ装置２０に送信することで、サーバ装置２０で行われても良い。そして、端末装置１０は、ユーザの現在位置が属する地域が変更になったと判定された場合、上記のステップＳ１５０３の処理の前に、ジオフェンス取得部１２１により、変更後の地域（提供地域）に対応するジオフェンス定義情報をサーバ装置２０から取得し、アプリ側ジオフェンス定義テーブル３００を更新しても良い。
【０１４０】
次に、基盤アプリケーション１２０の設定要求部１２４は、サービス用ジオフェンスの設定をＯＳ１３０に要求する（ステップＳ１５０４）。当該要求には、選択部１２２により選択されたジオフェンス定義情報が含まれる。
【０１４１】
ＯＳ１３０の設定部１３１は、設定要求部１２４からサービス用ジオフェンスの設定が要求されると、当該要求に含まれているジオフェンス定義情報をＯＳ側ジオフェンス定義テーブル４００に格納する（ステップＳ１５０５）。これにより、サービス用ジオフェンスがＯＳ１３０に再設定される。
【０１４２】
なお、上記のステップＳ１５０２の処理は必ずしも実行される必要はない。つまり、ＯＳ１３０はＯＳ側ジオフェンス定義テーブル４００からジオフェンス定義情報を削除せずに、例えば、選択部１２２は監視対象としてＯＳ１３０に過去に設定済みのサービス用ジオフェンスを記憶しておく。そして、選択部１２２は、これらのサービス用ジオフェンスと、ステップＳ１５０３で今回選択されたサービス用ジオフェンスとの差分を特定する。そして、選択部１２２は、ＯＳ側ジオフェンス定義テーブル４００に格納されているジオフェンス定義情報のうち、今回選択されなかったサービス用ジオフェンスのジオフェンス定義情報を削除するともに、今回新たに選択されたサービス用ジオフェンスのジオフェンス定義情報を追加するように、ＯＳ１３０に要求しても良い。これにより、ＯＳ１３０に対するサービス用ジオフェンスの監視設定及び削除に関する要求を、効率化することができる。
【０１４３】
次に、基盤アプリケーション１２０の生成部１２３は、制御用ジオフェンスのジオフェンス定義情報を生成する（ステップＳ１５０６）。生成部１２３は、例えば、ユーザの現在位置を中心として所定の半径の円形領域を表す制御用ジオフェンスのジオフェンス定義情報を生成する。このとき、生成部１２３は、ユーザの現在位置として、例えば、ＯＳ１３０から通知されたｅｘｉｔイベントに含まれる位置情報が示す位置を用いれば良い。なお、生成部１２３は、位置取得部１３２により、ユーザの現在位置を示す位置情報を取得し直しても良い。
【０１４４】
次に、基盤アプリケーション１２０の設定要求部１２４は、制御用ジオフェンスの設定をＯＳ１３０に要求する（ステップＳ１５０７）。当該要求には、生成部１２３により生成されたジオフェンス定義情報が含まれる。
【０１４５】
ＯＳ１３０の設定部１３１は、設定要求部１２４から制御用ジオフェンスの設定が要求されると、当該要求に含まれているジオフェンス定義情報をＯＳ側ジオフェンス定義テーブル４００に格納する（ステップＳ１５０８）。これにより、制御用ジオフェンスがＯＳ１３０に再設定される。
【０１４６】
なお、図１５では、ＯＳ側ジオフェンス定義テーブル４００からジオフェンス定義情報が削除（ステップＳ１５０１〜ステップＳ１５０２）された後、サービス用ジオフェンスの選択及び設定と、制御用ジオフェンスの生成及び設定とが行われるが、これに限られない。例えば、ＯＳ側ジオフェンス定義テーブル４００に格納されているジオフェンス定義情報のうち、サービス用ジオフェンスのジオフェンス定義情報が削除された後、サービス用ジオフェンスの選択及び設定が行われても良い。同様に、例えば、ＯＳ側ジオフェンス定義テーブル４００に格納されているジオフェンス定義情報のうち、制御用ジオフェンスのジオフェンス定義情報が削除された後、制御用ジオフェンスの生成及び設定が行われても良い。
【０１４７】
また、サービス用ジオフェンスの選択及び設定（ステップＳ１５０３〜ステップＳ１５０５）と、制御用ジオフェンスの生成及び設定（ステップＳ１５０６〜ステップＳ１５０８）との処理順は逆であっても良い。
【０１４８】
以上のように、本実施形態に係る端末装置１０は、地図上に予め定義されたサービス用ジオフェンスから選択されたサービス用ジオフェンスと、ユーザの現在位置が含まれる制御用ジオフェンスとを監視対象としてＯＳ１３０に設定する。そして、本実施形態に係る端末装置１０は、ユーザが制御用ジオフェンスから離脱した場合に、サービス用ジオフェンスの再選択及び再設定と、制御用ジオフェンスの再生成及び再設定とを行う。これにより、本実施形態に係る端末装置１０は、ユーザの移動に応じて、監視対象のエリア（サービス用ジオフェンス）を適切に切り替えることができる。
【０１４９】
また、本実施形態に係る端末装置１０は、当該判定をＯＳ１３０が行うため、例えば、基盤アプリケーション１２０がバックグラウンドで動作している場合であっても、ユーザがジオフェンスに進入したか又はユーザがジオフェンスから離脱したかを判定することができる。同様に、本実施形態に係る端末装置１０は、例えば、基盤アプリケーション１２０を起動していない場合であっても、ユーザがジオフェンスに進入したか又はユーザがジオフェンスから離脱したかを判定することができる。
【０１５０】
更に、本実施形態に係る端末装置１０は、ユーザがサービス用ジオフェンスに進入した場合に、サービス用ジオフェンスの再選択及び再設定と、制御用ジオフェンスの再生成及び再設定とを行っても良い。ユーザがサービス用ジオフェンスに進入した場合に、サービス用ジオフェンスの再選択及び再設定と、制御用ジオフェンスの再生成及び再設定とを行う場合について、図１６を参照しながら説明する。図１６は、第一の実施形態に係るサービス提供処理の他の例を示すシーケンス図である。なお、図１６におけるステップＳ１２０１〜ステップＳ１２１１は、図１２と同様であるため、その説明を省略する。
【０１５１】
基盤アプリケーション１２０は、ユーザアプリケーション１１０にｉｎイベントを通知（ステップＳ１２０４）した後、ステップＳ１２１１を行う。これにより、基盤アプリケーション１２０によりジオフェンスの再設定処理（図１２のステップＳ１２１１の処理）が行われる。
【０１５２】
このように、本実施形態に係る端末装置１０は、当該アプリケーションによるサービスの提供と共に、ジオフェンスの再設定処理（図１２のステップＳ１２１１の処理）を行っても良い。
【０１５３】
また、同様に、本実施形態に係る端末装置１０は、ユーザがサービス用ジオフェンスから離脱した場合に、サービス用ジオフェンスの再選択及び再設定と、制御用ジオフェンスの再生成及び再設定とを行っても良い。この場合、基盤アプリケーション１２０は、ユーザアプリケーション１１０にｅｘｉｔイベントを通知（図１２のステップＳ１２０９）した後、ジオフェンスの再設定を行えば良い。
【０１５４】
（第二の実施形態）
次に、第二の実施形態について説明する。第二の実施形態では、制御用ジオフェンスが円形領域であるものとし、当該制御用ジオフェンスの半径ｒ０を動的に算出する場合について説明する。
【０１５５】
なお、第二の実施形態では、主に、第一の実施形態との相違点について説明し、第一の実施形態と同様の構成要素については第一の実施形態と同一の符号を付与し、その説明を省略する。
【０１５６】
まず、本実施形態に係るサービス提供システム１の機能構成について、図１７を参照しながら説明する。図１７は、第二の実施形態に係るサービス提供システム１の機能構成の一例を示す図である。
【０１５７】
図１７に示すように、本実施形態に係る端末装置１０は、生成部１２３Ａを有する。生成部１２３Ａは、半径ｒ０の円形領域を表す制御用ジオフェンスのジオフェンス定義情報を生成する。このとき、生成部１２３Ａは、例えば、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、選択部１２２により選択されなかったジオフェンス定義情報が定義するサービス用ジオフェンスまでの距離に基づいて、半径ｒ０を算出する。
【０１５８】
以降では、本実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理（図１０のステップＳ１００６及び図１５のステップＳ１５０６の処理）について、図１８を参照しながら説明する。図１８は、第二の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の一例を示すフローチャートである。
【０１５９】
まず、生成部１２３Ａは、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、選択部１２２により選択されなかったジオフェンス定義情報を特定する。言い換えれば、生成部１２３Ａは、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、ＯＳ１３０に設定されないサービス用ジオフェンスのジオフェンス定義情報を特定する。
【０１６０】
そして、生成部１２３Ａは、ユーザの現在位置と、特定したジオフェンス定義情報が定義するサービス用ジオフェンスとの距離をそれぞれ算出する（ステップＳ１８０１）。
【０１６１】
例えば、図１９に示すように、「ｐｌａｃｅ１」〜「ｐｌａｃｅ１０」のサービス用ジオフェンスのうち、「ｐｌａｃｅ１」〜「ｐｌａｃｅ４」及び「ｐｌａｃｅ９」〜「ｐｌａｃｅ１０」が選択部１２２により選択されなかったサービス用ジオフェンスであるとする。この場合、生成部１２３Ａは、ユーザの現在位置と、「ｐｌａｃｅ１」〜「ｐｌａｃｅ４」及び「ｐｌａｃｅ９」〜「ｐｌａｃｅ１０」がそれぞれ表すサービス用ジオフェンスとの距離をそれぞれ算出する。なお、ユーザの現在位置と、サービス用ジオフェンスとの距離としては、ユーザの現在位置から、サービス用ジオフェンスの境界までの距離のうちの最短距離とすれば良い。
【０１６２】
なお、選択部１２２によるサービス用ジオフェンスの選択が、生成部１２３Ａによる制御用ジオフェンスの生成よりも後に行われる場合、生成部１２３Ａは、選択部１２２により選択されないジオフェンス定義情報を特定すれば良い。
【０１６３】
次に、生成部１２３Ａは、上記のステップＳ１８０１で算出した距離のうちの最短距離Ｄｍｉｎに基づいて、制御用ジオフェンスの半径ｒ０を算出する（ステップＳ１８０２）。生成部１２３Ａは、例えば、以下の（１）又は（２）により半径ｒ０を算出すれば良い。
【０１６４】
（１）図１９に示すように、生成部１２３Ａは、上記のステップＳ１８０１で算出した距離のうちの最短距離Ｄｍｉｎ（すなわち、「ｐｌａｃｅ４」のサービス用ジオフェンスまでの距離）を、制御用ジオフェンスの半径ｒ０とする。これは、ユーザの現在位置を中心として半径ｒ０＝Ｄｍｉｎの円形領域内では、未選択のサービス用ジオフェンス（すなわち、ＯＳ１３０に設定されないサービス用ジオフェンス）が存在しないためである。
【０１６５】
（２）図１９に示すように、生成部１２３は、図１５に示すジオフェンスの再設定処理中におけるユーザの移動距離を考慮して、制御用ジオフェンスの半径ｒ０を算出する。この場合、ユーザの移動の速さをｖ、ジオフェンスの再選択処理の処理時間をｔｐとして、ｒ０＝Ｄｍｉｎ−ｖ×ｔｐとすれば良い。これにより、例えば、ユーザの移動の速さｖが大きい場合であっても、ジオフェンスの再選択処理が完了しないうちに、ＯＳ１３０に設定されていないサービス用ジオフェンスにユーザが進入してしまうような事態を防止することができる。
【０１６６】
なお、上記の（１）又は（２）において、所定のマージンＭを考慮しても良い。例えば、上記の（１）の場合、ｒ０＝Ｄｍｉｎ−Ｍとしても良い。同様に、例えば、上記の（２）の場合、ｒ０＝Ｄｍｉｎ−ｖ×ｔｐ−Ｍとしても良い。
【０１６７】
次に、生成部１２３Ａは、上記のステップＳ１８０２で算出した半径ｒ０と、ユーザの現在位置とから、制御用ジオフェンスのジオフェンス定義情報を生成する（ステップＳ１８０３）。すなわち、生成部１２３Ａは、例えば、ユーザの現在位置を中心として、上記のステップＳ１８０２で算出した半径ｒ０の円形領域を表す制御用ジオフェンスのジオフェンス定義情報を生成する。
【０１６８】
以上により、本実施形態に係る端末装置１０は、ユーザの移動に応じて、制御用ジオフェンスの半径を動的に算出することができる。このとき、本実施形態に係る端末装置１０は、ＯＳ１３０に設定されないサービス用ジオフェンスまでの距離に基づいて、制御用ジオフェンスの半径を算出する。これにより、ＯＳ１３０に設定されていないサービス用ジオフェンスにユーザが進入してしまう事態を防止し、かつ、ジオフェンスの再選択処理の頻度を抑えることができる。
【０１６９】
したがって、例えば、制御用ジオフェンスの半径ｒ０が小さいことにより頻繁にジオフェンスの再選択処理が行われ、端末装置１０のＣＰＵ１７の処理負荷や消費電力等が増加してしまう事態を防止することができる。
【０１７０】
ここで、本実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の他の例について、図２０を参照しながら説明する。図２０は、第二の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の他の例を示すフローチャートである。
【０１７１】
まず、生成部１２３Ａは、ユーザの移動方向を特定する（ステップＳ２００１）。ユーザの移動方向の特定方法は限定されない。生成部１２３Ａは、例えば、以下の（１）又は（２）の方法により移動方向を特定すれば良い。
【０１７２】
（１）端末装置１０が加速度センサや電子コンパス等を備える場合、これらの加速度センサや電子コンパスからユーザの移動方向を特定する。
【０１７３】
（２）ユーザがこれまでに進入（チェックイン）したサービス用ジオフェンスの履歴からユーザの移動方向を特定する。例えば、ユーザがこれまでにチェックインしたサービス用ジオフェンスが、順に、「ｐｌａｃｅＡ」、「ｐｌａｃｅＢ」、「ｐｌａｃｅＣ」、「ｐｌａｃｅＤ」であるとする。また、「ｐｌａｃｅＡ」の中心から「ｐｌａｃｅＢ」の中心への方向（例えば北を０度として時計回りに正の方向とすれば良い。）をθ１とする。同様に、「ｐｌａｃｅＢ」の中心から「ｐｌａｃｅＣ」の中心への方向θ２、「ｐｌａｃｅＣ」の中心から「ｐｌａｃｅＤ」の中心への方向θ３とする。
【０１７４】
このとき、方位差ｄ１＝θ２−θ１と、ｄ２＝θ３−θ２とを算出して、ｄ２−ｄ１が予め決められた所定の値ｄ以下である場合、生成部１２３Ａは、ユーザの移動方向をθ３とすれば良い。
【０１７５】
次に、生成部１２３Ａは、上記のステップＳ２００１で特定した移動方向に基づいて、移動方向領域Ｕを特定する（ステップＳ２００２）。例えば、図２１に示すように、生成部１２３Ａは、地図上における所定の領域内であって、移動方向に直交し、かつ、ユーザの現在位置を通る直線に対して当該移動方向側にある領域を移動方向領域Ｕと特定する。
【０１７６】
次に、生成部１２３Ａは、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、移動方向領域Ｕに含まれ、かつ、選択部１２２により選択されなかったジオフェンス定義情報を特定する。言い換えれば、生成部１２３Ａは、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、ＯＳ１３０に設定されず、かつ、移動方向領域Ｕに含まれるサービス用ジオフェンスのジオフェンス定義情報を特定する。
【０１７７】
そして、生成部１２３Ａは、ユーザの現在位置と、特定したジオフェンス定義情報が定義するサービス用ジオフェンスとの距離をそれぞれ算出する（ステップＳ２００３）。
【０１７８】
例えば、図２１に示すように、「ｐｌａｃｅ１」〜「ｐｌａｃｅ１０」のサービス用ジオフェンスのうち、「ｐｌａｃｅ１」〜「ｐｌａｃｅ４」及び「ｐｌａｃｅ９」〜「ｐｌａｃｅ１０」が選択部１２２により選択されなかったサービス用ジオフェンスであるとする。この場合、ＯＳ１３０に設定されず、かつ、移動方向領域Ｕに含まれるサービス用ジオフェンスは、「ｐｌａｃｅ９」及び「ｐｌａｃｅ１０」となる。したがって、生成部１２３Ａは、ユーザの現在位置と、「ｐｌａｃｅ９」及び「ｐｌａｃｅ１０」がそれぞれ表すサービス用ジオフェンスとの距離をそれぞれ算出する。これは、移動方向領域Ｕに含まれないサービス用ジオフェンスは、ユーザが進入する可能性が低いためである。これにより、移動方向領域Ｕに含まれないサービス用ジオフェンスの影響によって、制御用ジオフェンスの半径ｒ０が不必要に小さくなってしまう事態を防止することができる。以降のステップＳ１８０２及びステップＳ１８０３は、図１８と同様である。
【０１７９】
以上により、本実施形態に係る端末装置１０は、ユーザの移動方向も考慮して、制御用ジオフェンスの半径を動的に算出することができる。このとき、本実施形態に係る端末装置１０は、ユーザの移動方向を考慮して、ユーザが進入する可能性が低いサービス用ジオフェンスを除外して、制御用ジオフェンスの半径を算出する。これにより、ジオフェンスの再選択処理の頻度を更に抑えることができる。
【０１８０】
なお、図１８のステップＳ１８０１において、選択部１２２により選択されなかったジオフェンス定義情報がない場合（すなわち、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報がＳ個以下である場合）、制御用ジオフェンスの半径は、予め決められた値とされても良い。
【０１８１】
（第三の実施形態）
次に、第三の実施形態について説明する。第一の実施形態及び第二の実施形態では、ユーザが制御用ジオフェンスから離脱した場合に、サービス用ジオフェンス及び制御用ジオフェンスの再設定を行う場合について説明した。
【０１８２】
ところで、ＯＳ１３０によっては、ユーザが制御用ジオフェンスから離脱したと判定してから、基盤アプリケーション１２０に対してｅｘｉｔイベントを通知するまで数分程度要する場合がある。このため、例えば、ユーザが自動車等に乗って高速で移動している場合には、ジオフェンスの再設定処理が終了する前に、ＯＳ１３０に設定されていないサービス用ジオフェンスにユーザが進入してしまう事態も考えられる。
【０１８３】
一方で、ｉｎイベントについては、ユーザがジオフェンスに進入したと判定されてから、基盤アプリケーション１２０に通知されるまで数秒程度であることが知られている。そこで、第三の実施形態では、ユーザが制御用ジオフェンスに進入した場合に、サービス用ジオフェンス及び制御用ジオフェンスの再設定を行う場合について説明する。
【０１８４】
なお、第三の実施形態では、主に、第一の実施形態との相違点について説明し、第一の実施形態と同様の構成要素については第一の実施形態と同一の符号を付与し、その説明を省略する。
【０１８５】
第三の実施形態に係る制御用ジオフェンスの一例について、図２２を参照しながら説明する。図２２は、第三の実施形態に係る制御用ジオフェンスの一例を説明する図である。
【０１８６】
図２２に示すように、本実施形態では、例えば、ユーザの現在位置を中心とした半径Ｒの円と外接し、かつ、隣り合う制御用ジオフェンス同士が外接するようにＬ（図２２に示す例ではＬ＝６）個の制御用ジオフェンスがＯＳ１３０に設定される。なお、Ｌには３以上の整数が予め設定される。
【０１８７】
端末装置１０（コンピュータ）の現在位置に応じて生成される制御用ジオフェンスは、本実施形態においては、端末装置１０の現在位置の周囲に生成されるエリアである。例えば、端末装置１０の現在位置を中心に所定半径を有する円と外接する円形のエリアが、制御用ジオフェンスとして設定される。
【０１８８】
図２２に示すような制御用ジオフェンスをＯＳ１３０に設定することで、ユーザがどの方向に移動したとしても、ユーザは制御用ジオフェンスに進入するようになる。
【０１８９】
次に、本実施形態に係るサービス提供システム１の機能構成について、図２３を参照しながら説明する。図２３は、第三の実施形態に係るサービス提供システム１の機能構成の一例を示す図である。
【０１９０】
図２３に示すように、本実施形態に係る端末装置１０は、生成部１２３Ｂと、イベント中継部１２６Ａとを有する。
【０１９１】
生成部１２３Ｂは、例えば、半径Ｒの円と外接し、かつ、隣り合う制御用ジオフェンス同士が外接するようなＬ個の制御用ジオフェンスのそれぞれのジオフェンス定義情報を生成する。
【０１９２】
イベント中継部１２６Ａは、ＯＳ１３０から通知されたイベント（ｉｎイベント又はｅｘｉｔイベント）を中継する。このとき、イベント中継部１２６Ａは、サービス用ジオフェンスへのｉｎイベント又はサービス用ジオフェンスからのｅｘｉｔイベントが通知された場合、当該ｉｎイベント又はｅｘｉｔイベントをユーザアプリケーション１１０に通知する。
【０１９３】
また、イベント中継部１２６Ａは、制御用ジオフェンスへのｉｎイベントが通知された場合、当該ｉｎイベントを選択部１２２に通知する。制御用ジオフェンスへのｉｎイベントが選択部１２２に通知されることで、選択部１２２では、サービス用ジオフェンスが新たに選択される。同様に、制御用ジオフェンスへのｉｎイベントが生成部１２３Ｂに通知されることで、生成部１２３Ｂでは、制御用ジオフェンスが新たに生成される。一方で、イベント中継部１２６Ａは、制御用ジオフェンスからのｅｘｉｔイベントが通知された場合、当該ｅｘｉｔイベントを破棄する。
【０１９４】
以降では、本実施形態に係るサービス提供システム１の全体処理について、図２４を参照しながら説明する。図２４は、第三の実施形態に係るサービス提供システム１の全体処理の一例を示す図である。
【０１９５】
基盤アプリケーション１２０のイベント中継部１２６Ａは、ＯＳ１３０から通知されたｉｎイベントが制御用ジオフェンスへの進入を示すｉｎイベントである場合、図１５に示すジオフェンスの再設定処理を行う（ステップＳ２４０１）。
【０１９６】
以上のように、本実施形態に係る端末装置１０は、ユーザが制御用ジオフェンスに進入した場合に、ジオフェンスの再設定処理を行う。上述したように、ｉｎイベントは、ユーザがジオフェンスに進入したと判定されてから、基盤アプリケーション１２０に通知されるまで数秒程度である。したがって、例えば、ユーザが自動車等に乗って高速で移動している場合であっても、ＯＳ１３０に設定されていないサービス用ジオフェンスにユーザが進入してしまう事態を防止することができる。
【０１９７】
以降では、本実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理（図１０のステップＳ１００６及び図１５のステップＳ１５０６の処理）について、図２５を参照しながら説明する。図２５は、第三の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の一例を示すフローチャートである。
【０１９８】
まず、生成部１２３Ｂは、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、選択部１２２により選択されなかったジオフェンス定義情報を特定する。言い換えれば、生成部１２３Ｂは、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、ＯＳ１３０に設定されないサービス用ジオフェンスのジオフェンス定義情報を特定する。
【０１９９】
そして、生成部１２３Ａは、ユーザの現在位置と、特定したジオフェンス定義情報が定義するサービス用ジオフェンスとの距離をそれぞれ算出する（ステップＳ２５０１）。
【０２００】
次に、生成部１２３Ｂは、上記のステップＳ２５０１で算出した距離のうちの最短距離Ｄｍｉｎに基づいて半径Ｒを決定する。そして、生成部１２３Ｂは、ユーザの現在位置を中心として、決定した半径Ｒで表される第１の円を決定する（ステップＳ２５０２）。生成部１２３Ｂは、半径Ｒとして、例えば、Ｒ＝Ｄｍｉｎとしても良いし、所定のマージンＭを考慮して、Ｒ＝Ｄｍｉｎ＋Ｍとしても良い。
【０２０１】
次に、生成部１２３Ｂは、上記のステップＳ２５０２で決定した第１の円に外接し、かつ、隣り合う円同士が外接するＬ個の第２の円を特定する。そして、生成部１２３Ｂは、特定した第２の円を境界とする円形領域をそれぞれ表す制御用ジオフェンスのジオフェンス定義情報を生成する（ステップＳ２５０３）。
【０２０２】
以上により、本実施形態に係る端末装置１０は、ユーザの現在位置を中心として半径Ｒの円に外接し、かつ、隣り合う制御用ジオフェンス同士が外接するＬ個の制御用ジオフェンスをＯＳ１３０に設定することができる。言い換えれば、本実施形態に係る端末装置１０は、ユーザの現在位置が含まれないＬ個の制御用ジオフェンスを、ユーザの周囲を囲むように定義し、ＯＳ１３０に設定することができる。
【０２０３】
これにより、本実施形態に係る端末装置１０は、ユーザの移動によって、ユーザが制御用ジオフェンスに進入した場合に、サービス用ジオフェンス及び制御用ジオフェンスの再設定を行うにようにすることができる。
【０２０４】
本実施形態では、制御用ジオフェンスは、或る時点におけるユーザの現在位置の周囲にあるジオフェンス（例えば、現在位置を中心に所定半径を有する円と外接する円形のエリア）であるため、ユーザがその位置から移動すると自然に、ジオフェンス進入のイベントが発生することになる。これにより、アプリケーション１４０（基盤アプリケーション１２０）側ではＯＳ１３０からの通知を受けて、サービス用ジオフェンスを再選択及び再設定することができる。つまり、強制的にジオフェンス進入を発生させる制御用ジオフェンスを導入したことで、アプリケーション１４０（基盤アプリケーション１２０）側でサービス用ジオフェンスの再選択を、制御用ジオフェンスへの進入により必ず発生させることになる。以上から、ＯＳ１３０からのイベント通知がないことにより、サービス用ジオフェンスの再選択及び再設定が行われずに、ＯＳ１３０の監視対象が切り替わらないという事態を回避することができる。
【０２０５】
なお、図２５のステップＳ２５０１において、選択部１２２により選択されなかったジオフェンス定義情報が無い場合（すなわち、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報がＳ個以下である場合）、第１の円の半径は、予め決められた値とされても良い。
【０２０６】
ここで、図２５では、ユーザの周囲を囲むように定義されたＬ個の制御用ジオフェンスのジオフェンス定義情報を生成する場合について説明したが、ユーザの移動方向が特定された場合には、ユーザの周囲を囲むようにＬ個の制御用ジオフェンスを定義する必要はない。例えば、図２６に示すように、ユーザの移動方向が特定された場合は、当該移動方向の前方にＬ（図２６に示す例ではＬ＝３）個の制御用ジオフェンスをＯＳ１３０に設定すれば良い。図２６に示す例では、ユーザの移動方向の水平方向にｘ軸、当該移動方向と直交する方向にｙ軸を定義すれば、半径ｒ０の円形領域を表す第１の制御用ジオフェンスが、ユーザの現在位置からｘ軸の正の方向に２ｒ０の位置（ｘ０１，ｙ０１）を中心に設定されている。また、半径ｒ０の円形領域を表す第２の制御用ジオフェンスが、第１の制御用ジオフェンスから、ｙ軸の正の方向にｒ０の位置（ｘ０１，ｙ０２）を中心に設定されている。同様に、半径ｒ０の円形領域を表す第３の制御用ジオフェンスが、第１の制御用ジオフェンスから、ｙ軸の負の方向にｒ０の位置（ｘ０１，ｙ０３）を中心に設定されている。
【０２０７】
そこで、以降では、ユーザの移動方向が特定可能である場合に、制御用ジオフェンスのジオフェンス定義情報を生成する処理について、図２７を参照しながら説明する。図２７は、第三の実施形態に係る制御用ジオフェンスのジオフェンス定義情報を生成する処理の他の例を示すフローチャートである。
【０２０８】
まず、生成部１２３Ｂは、ユーザの移動方向を特定する（ステップＳ２７０１）。ユーザの移動方向は、例えば、図２０のステップＳ２００１と同様の方法により特定すれば良い。
【０２０９】
次に、生成部１２３Ｂは、上記のステップＳ２７０１で特定した移動方向に基づいて、移動方向領域Ｕを特定する（ステップＳ２７０２）。
【０２１０】
次に、生成部１２３Ｂは、アプリ側ジオフェンス定義テーブル３００に格納されているジオフェンス定義情報のうち、移動方向領域Ｕに含まれ、かつ、選択部１２２により選択されなかったジオフェンス定義情報を特定する。
【０２１１】
そして、生成部１２３Ｂは、ユーザの現在位置と、特定したジオフェンス定義情報が定義するサービス用ジオフェンスとの距離をそれぞれ算出する（ステップＳ２７０３）。
【０２１２】
次に、生成部１２３Ｂは、上記のステップＳ２７０３で算出した距離のうちの最短距離Ｄｍｉｎに基づいて、制御用ジオフェンスの半径ｒ０を算出する（ステップＳ２７０４）。生成部１２３Ｂは、ｒ０＝Ｄｍｉｎとしても良いし、所定のマージンＭを考慮して、ｒ０＝Ｄｍｉｎ−Ｍとしても良い。
【０２１３】
次に、生成部１２３Ｂは、上記のステップＳ２７０１で特定した移動方向の前方に、半径ｒ０のＬ個の円形領域でそれぞれ表される制御用ジオフェンスのジオフェンス定義情報を生成する（ステップＳ２７０５）。例えば、Ｌ＝３である場合、生成部１２３Ｂは、ユーザの現在位置からｘ軸の正の方向に２ｒ０の位置を中心として、半径ｒ０の円形領域で表される第１の制御用ジオフェンスのジオフェンス定義情報を生成する。また、当該第１の制御用ジオフェンスからｙ軸の正の方向にｒ０の位置を中心として、半径ｒ０の円形領域で表される第２の制御用ジオフェンスのジオフェンス定義情報を生成する。更に、当該第１の制御用ジオフェンスからｙ軸の負の方向にｒ０の位置を中心として、半径ｒ０の円形領域で表される第３の制御用ジオフェンスのジオフェンス定義情報を生成する。
【０２１４】
以上により、本実施形態に係る端末装置１０は、ユーザの移動方向も考慮して、ユーザの移動方向の前方にＬ個の制御用ジオフェンスをＯＳ１３０に設定することができる。なお、図２７では、ユーザの移動方向の前方にＬ個の円形領域でそれぞれ表される制御用ジオフェンスのジオフェンス定義情報を生成する場合を説明したが、これに限られない。例えば、矩形領域をジオフェンスとして定義可能である場合には、生成部１２３Ａは、例えば、ユーザの移動方向の前方に、１つの矩形領域で表される制御用ジオフェンスのジオフェンス定義情報を生成しても良い。
【０２１５】
なお、生成部１２３は、特許請求の範囲の第１の生成部及び第２の生成部の一例である。選択部１２２は、特許請求の範囲の第１の選択部及び第２の選択部の一例である。設定部１３１は、特許請求の範囲の設定部及び再設定部の一例である。位置判定部１３３は、特許請求の範囲の判定部の一例である。
【０２１６】
以上、本発明の実施形態について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【０２１７】
以上の説明に関し、更に以下の項を開示する。
（付記１）
監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載されたコンピュータに、
第一の時点における前記コンピュータの位置に応じて、第一のエリア情報を生成する処理と、
前記第一の時点における前記コンピュータの位置に基づいて、予め定義された複数の候補エリア情報から、前記ＯＳに前記監視対象エリアとして設定可能な最大数よりも前記第一のエリア情報の数以上少ない数の第二のエリア情報を選択する処理と、
前記第一のエリア情報と、前記第二のエリア情報とを前記ＯＳに、前記監視対象エリアとして、設定する処理と、
前記コンピュータの位置が前記第一のエリア情報が示すエリアへ進入したこと又は離脱したことを示す第一の通知を、前記ＯＳから受信すると、前記第一の通知を受信した第二の時点における前記コンピュータの位置に応じて、新たな第一のエリア情報を生成する処理と、
前記第二の時点における前記コンピュータの位置に応じて、前記複数の候補エリア情報から、新たな前記第二のエリア情報の選択を行う処理と、
前記新たな第一のエリア情報と前記新たな第二のエリア情報とを、前記ＯＳの新たな監視対象エリアとして、再設定する処理と
を実行させることを特徴とする制御プログラム。
（付記２）
前記コンピュータの位置が、前記第二のエリア情報が示すエリアの範囲内となったことを示す第二の通知を前記ＯＳから受信すると、前記第二のエリア情報に対応する情報を出力する処理を前記コンピュータに実行させることを特徴とする付記１に記載の制御プログラム。
（付記３）
前記新たな第一のエリア情報の生成と、前記新たな第二のエリア情報の選択とを行う処理は、
前記第二の通知を受信した第三の時点における前記コンピュータの位置に応じて、前記第一のエリア情報を新たに生成するとともに、前記複数の候補エリア情報から前記第二のエリア情報を新たに選択する、
ことを特徴とする付記２に記載の制御プログラム。
（付記４）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置を含むエリアに対応することを特徴とする付記１乃至付記３のいずれか一項に記載の制御プログラム。
（付記５）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置が含まれ、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする付記４に記載の制御プログラム。
（付記６）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置を含まず、該第一の時点における前記コンピュータの位置から所定距離離れた周囲に生成されたエリアに対応することを特徴とする付記１乃至付記３のいずれか一項に記載の制御プログラム。
（付記７）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置が含まれず、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする付記６に記載の制御プログラム。
（付記８）
前記第一のエリア情報は、前記コンピュータの移動の速さと前記コンピュータの移動方向との少なくとも一方に基づいて生成されることを特徴とする付記１乃至付記７のいずれか一項に記載の制御プログラム。
（付記９）
監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載されたコンピュータが、
第一の時点における前記コンピュータの位置に応じて、第一のエリア情報を生成する処理と、
前記第一の時点における前記コンピュータの位置に基づいて、予め定義された複数の候補エリア情報から、前記ＯＳに前記監視対象エリアとして設定可能な最大数よりも前記第一のエリア情報の数以上少ない数の第二のエリア情報を選択する処理と、
前記第一のエリア情報と、前記第二のエリア情報とを前記ＯＳに、前記監視対象エリアとして、設定する処理と、
前記コンピュータの位置が前記第一のエリア情報が示すエリアへ進入したこと又は離脱したことを示す第一の通知を、前記ＯＳから受信すると、前記第一の通知を受信した第二の時点における前記コンピュータの位置に応じて、新たな第一のエリア情報を生成する処理と、
前記第二の時点における前記コンピュータの位置に応じて、前記複数の候補エリア情報から、新たな前記第二のエリア情報の選択を行う処理と、
前記新たな第一のエリア情報と前記新たな第二のエリア情報とを、前記ＯＳの新たな監視対象エリアとして、再設定する処理と
を実行することを特徴とする制御方法。
（付記１０）
前記コンピュータの位置が、前記第二のエリア情報が示すエリアの範囲内となったことを示す第二の通知を前記ＯＳから受信すると、前記第二のエリア情報に対応する情報を出力する処理を前記コンピュータが実行することを特徴とする付記９に記載の制御方法。
（付記１１）
前記新たな第一のエリア情報の生成と、前記新たな第二のエリア情報の選択とを行う処理は、
前記第二の通知を受信した第三の時点における前記コンピュータの位置に応じて、前記第一のエリア情報を新たに生成するとともに、前記複数の候補エリア情報から前記第二のエリア情報を新たに選択する、
ことを特徴とする付記１０に記載の制御方法。
（付記１２）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置を含むエリアに対応することを特徴とする付記９乃至付記１１のいずれか一項に記載の制御方法。
（付記１３）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置が含まれ、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする付記１２に記載の制御方法。
（付記１４）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置を含まず、該第一の時点における前記コンピュータの位置から所定距離離れた周囲に生成されたエリアに対応することを特徴とする付記９乃至付記１１のいずれか一項に記載の制御方法。
（付記１５）
前記第一のエリア情報は、前記第一の時点における前記コンピュータの位置が含まれず、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする付記１４に記載の制御方法。
（付記１６）
前記第一のエリア情報は、前記コンピュータの移動の速さと前記コンピュータの移動方向との少なくとも一方に基づいて生成されることを特徴とする付記９乃至付記１５のいずれか一項に記載の制御方法。
（付記１７）
監視対象エリアへの進入又は離脱を監視する機能を有するＯＳが搭載された制御装置であって、
第一の時点における前記制御装置の位置に応じて、第一のエリア情報を生成する第１の生成部と、
前記第一の時点における前記制御装置の位置に基づいて、予め定義された複数の候補エリア情報から、前記ＯＳに前記監視対象エリアとして設定可能な最大数よりも前記第一のエリア情報の数以上少ない数の第二のエリア情報を選択する第１の選択部と、
前記第一のエリア情報と、前記第二のエリア情報とを前記ＯＳに、前記監視対象エリアとして、設定する設定部と、
前記制御装置の位置が前記第一のエリア情報が示すエリアへ進入したこと又は離脱したことが判定されると、前記判定した第二の時点における前記制御装置の位置に応じて、新たな第一のエリア情報を生成する第２の生成部と、
前記第二の時点における前記制御装置の位置に応じて、前記複数の候補エリア情報から、新たな前記第二のエリア情報の選択を行う第２の選択部と、
前記新たな第一のエリア情報と前記新たな第二のエリア情報とを、前記ＯＳの新たな監視対象エリアとして、再設定する再設定部と
を有することを特徴とする制御装置。
（付記１８）
前記制御装置の位置が、前記第二のエリア情報が示すエリアの範囲内となったことが判定されると、前記第二のエリア情報に対応する情報を出力部を有することを特徴とする付記１７に記載の制御装置。
（付記１９）
前記第２の生成部は、前記第二の通知を受信した第三の時点における前記制御装置の位置に応じて、前記第一のエリア情報を新たに生成し、
前記第２の選択部は、前記第三の時点における前記制御装置の位置に応じて、前記複数の候補エリア情報から前記第二のエリア情報を新たに選択する、
ことを特徴とする付記１８に記載の制御装置。
（付記２０）
前記第一のエリア情報は、前記第一の時点における前記制御装置の位置を含むエリアに対応することを特徴とする付記１７乃至付記１９のいずれか一項に記載の制御装置。
（付記２１）
前記第一のエリア情報は、前記第一の時点における前記制御装置の位置が含まれ、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする付記２０に記載の制御装置。
（付記２２）
前記第一のエリア情報は、前記第一の時点における前記制御装置の位置を含まず、該第一の時点における前記制御装置の位置から所定距離離れた周囲に生成されたエリアに対応することを特徴とする付記１７乃至付記１９のいずれか一項に記載の制御装置。
（付記２３）
前記第一のエリア情報は、前記第一の時点における前記制御装置の位置が含まれず、かつ、当該位置と、前記第一の時点において選択されない前記第二のエリア情報が示すエリアとの距離に基づいて生成されることを特徴とする付記２２に記載の制御装置。
（付記２４）
前記第一のエリア情報は、前記制御装置の移動の速さと前記制御装置の移動方向との少なくとも一方に基づいて生成されることを特徴とする付記１７乃至付記２３のいずれか一項に記載の制御装置。
【符号の説明】
【０２１８】
１        サービス提供システム
１０      端末装置
２０      サーバ装置
１１０    ユーザアプリケーション
１１１    利用開始部
１１２    監視要求部
１１３    サービス処理部
１２０    基盤アプリケーション
１２１    ジオフェンス取得部
１２２    選択部
１２３    生成部
１２４    設定要求部
１２５    判定要求部
１２６    イベント中継部
１３０    ＯＳ
１３１    設定部
１３２    位置取得部
１３３    位置判定部
１３４    イベント通知部
１４０    アプリケーション
２１０    サーバプログラム
２１１    ジオフェンス提供部
２１２    アプリ提供部
２２０    ジオフェンス定義ＤＢ
２３０    サービスアプリケーションＤＢ
３００    アプリ側ジオフェンス定義テーブル
４００    ＯＳ側ジオフェンス定義テーブル
【図１】
2019109869.tif 000003
【図２】
2019109869.tif 000004
【図３】
2019109869.tif 000005
【図４】
2019109869.tif 000006
【図５】
2019109869.tif 000007
【図６】
2019109869.tif 000008
【図７】
2019109869.tif 000009
【図８】
2019109869.tif 000010
【図９】
2019109869.tif 000011
【図１０】
2019109869.tif 000012
【図１１】
2019109869.tif 000013
【図１２】
2019109869.tif 000014
【図１３】
2019109869.tif 000015
【図１４】
2019109869.tif 000016
【図１５】
2019109869.tif 000017
【図１６】
2019109869.tif 000018
【図１７】
2019109869.tif 000019
【図１８】
2019109869.tif 000020
【図１９】
2019109869.tif 000021
【図２０】
2019109869.tif 000022
【図２１】
2019109869.tif 000023
【図２２】
2019109869.tif 000024
【図２３】
2019109869.tif 000025
【図２４】
2019109869.tif 000026
【図２５】
2019109869.tif 000027
【図２６】
2019109869.tif 000028
【図２７】
2019109869.tif 000029