以下、実施形態の位置提供システム1、端末装置、位置取得方法、および、位置取得用プログラムを、図面を参照して説明する。
図1は、実施形態に係る位置提供システム1の構成を示すブロック図である。この位置提供システム1は、複数の端末装置10A、10B、・・・、10N(以下、総称する場合には単に「端末装置10」と呼ぶ)、位置情報サーバ30、認証サーバ40、POI(Point Of Interest)サーバ42、およびアプリケーションサーバ50A、50B、・・・、50N(以下、総称する場合には単に「アプリケーションサーバ50」と呼ぶ)を有する。
位置提供システム1は、端末装置10から位置情報サーバ30に、端末装置10の位置情報を送信し、この位置情報を位置情報サーバ30からアプリケーションサーバ50に提供するものである。端末装置10は、任意の送信タイミングまたは所定期間ごとに位置情報を送信する。本実施形態においては、予め端末装置10内で決定された送信タイミングによって位置情報を送信する例について説明する。しかし、端末装置10の位置情報の送信タイミングは、位置情報サーバ30によって設定されてもよい。
位置情報サーバ30は、端末装置10から送信された位置情報を受信して蓄積する。この具体例においては、位置情報サーバ30は、端末装置10毎に時系列に位置情報を蓄積する。また、位置情報サーバ30は、端末装置10において利用が許可されているアプリケーションの識別情報(ID)も蓄積してもよい。位置情報サーバ30は、蓄積した位置情報をPOIサーバ42およびアプリケーションサーバ50に送信する。
また、位置情報サーバ30は、後述するライブラリ管理情報(図3)をその記憶部に記憶する。位置情報サーバ30は、ライブラリ管理情報を定期的に端末装置10に送信する。また、端末装置10において、複数の位置情報ライブラリのうち、特定の位置情報ライブラリが端末装置10における位置情報の取得を制御する。ここで、位置情報サーバ30は、端末装置10の複数の位置情報ライブラリのうち、いずれの位置情報ライブラリを、特定の位置情報ライブラリにするかということを、端末装置10に対して指定可能である。
アプリケーションサーバ50は、端末装置10にインストールされた複数のアプリケーションプログラムのそれぞれに対応したサーバ装置である。ここで、端末装置10には、アプリケーションプログラムA〜Nから選択される、複数のアプリケーションプログラムをインストールすることができる。本実施形態においては、端末装置10にアプリケーションプログラムA〜Cがインストールされている場合を一例にして説明する。この具体例においては、アプリケーションサーバ50Aは、端末装置10にインストールされた複数のアプリケーションプログラムのうち、アプリケーションプログラムAに対応したサーバ装置である。また、アプリケーションサーバ50Bは、端末装置10にインストールされた複数のアプリケーションプログラムのうち、アプリケーションプログラムBに対応したサーバ装置である。また、アプリケーションサーバ50Cは、端末装置10にインストールされた複数のアプリケーションプログラムのうち、アプリケーションプログラムCに対応したサーバ装置である。このアプリケーションサーバ50は、位置情報サーバ30を介して端末装置10の位置情報を受信する。
アプリケーションサーバ50は、トラッキングされた端末装置10の位置情報を用いて所定のアプリケーション処理を行う。トラッキングされた位置情報には、任意または所定の期間ごとに繰り返して更新された端末装置10の最新位置または過去の位置が含まれる。このアプリケーション処理には、端末装置10の位置の変化を解析して、端末装置10に適した広告情報等のアプリケーション情報を判定する処理などが含まれていてもよい。アプリケーション情報は、アプリケーションサーバ50から端末装置10に送信されてもよい。これによりアプリケーションサーバ50は、端末装置10に、端末装置10の位置に適した広告等を表示させることができる。この一例の場合、アプリケーション情報は、端末装置10の位置情報取得部で取得された位置情報に基づく情報に相当する。
認証サーバ40は、端末装置10が位置情報サーバ30と通信を開始する際に、各種の認証処理を行う。この認証サーバ40が行う認証処理には、一例として、端末認証処理、ユーザ認証処理、またはアプリケーション認証処理が含まれている。これら認証処理の具体例について説明すると、端末認証処理において認証サーバ40は、端末装置10から送信された端末IDと予め記憶しておいた端末IDとが合致した場合に認証を成功させる。ここで、端末IDとは、端末装置10を識別するための固有の記号や番号などの情報である。ユーザ認証処理における認証サーバ40は、端末装置10から送信されたユーザIDと予め記憶しておいたユーザIDとが合致した場合に認証を成功させる。ここで、ユーザIDとは、端末装置10を利用するユーザを識別するための固有の記号や番号などの情報である。アプリケーション認証処理における認証サーバ40は、端末装置10から送信されたアプリケーションIDと予め記憶しておいたアプリケーションIDとが合致した場合に認証を成功させる。ここで、アプリケーションIDとは、端末装置10において利用可能なアプリケーションプログラムを識別するための固有の記号や番号などの情報である。
認証サーバ40による認証が成功した場合、認証サーバ40は、端末装置10にトークンを生成して、端末装置10に送信する。認証サーバ40から送信されたトークンは、端末装置10に記憶される。これにより端末装置10は、位置情報サーバ30およびアプリケーションサーバ50とセキュアな通信が可能となる。なお、トークンは任意のタイミングで更新されてもよい。これにより、端末装置10は、さらにセキュアな通信が可能となる。
また、認証サーバ40は、端末装置10が携帯電話である場合、端末認証処理においてIP(Internet Protocol)アドレスおよび電話番号を用いてもよい。認証サーバ40は、位置情報サーバ30を介して、端末装置10から送信されたIPアドレスおよび電話番号を受信する。認証サーバ40は、受信したIPアドレスおよび電話番号と、正当なIPアドレスおよび電話番号とを照合する。認証サーバ40は、受信したIPアドレスおよび電話番号が正当なIPアドレスおよび電話番号と照合できた場合には、通信を許可する認証結果を位置情報サーバ30に送信する。
POIサーバ42は、POI情報を蓄積している。POI情報は、少なくとも店舗等の緯度、経度を示す情報を含んでいる。POIサーバ42は、端末装置10、位置情報サーバ30またはアプリケーションサーバ50から出力される、端末装置10の位置情報を含む要求を受け付けると、この要求の受け付けに応じて当該位置情報に対応したPOI情報を検索し、当該位置情報付近のPOI情報を返信する。なお、POI情報には、店舗等のロケーションID、ロケーション名、およびカテゴリ等を含んでいてもよい。これによりPOIサーバ42は、位置情報に対応したロケーションID、ロケーション名、およびカテゴリ等を検索結果として返信できる。
また、POIサーバ42は、POI情報をキーとして端末装置10を検索してもよい。これによりPOIサーバ42は、POI情報に該当する端末装置10を抽出して、検索結果として返信することができる。例えば、POIサーバ42は、ある店舗内に存在する端末装置10を検索して、端末装置10のユーザIDを返信することができる。
図2は、実施形態に係る端末装置10の構成を示すブロック図である。端末装置10は、処理部12、通信部14、GPS(Global Positioning System)測位部16、および記憶部18を含む。端末装置10は、ユーザに保有されて移動する機器である。端末装置10は、例えば携帯電話またはスマートフォンであってもよい。
通信部14は、位置情報サーバ30との間で通信を行う。通信部14は、例えば通信ICチップにより構成されている。通信部14は、処理部12から供給された位置情報を所定の通信データに変換して位置情報サーバ30に送信する。この位置情報には、測位時刻、緯度および経度が含まれている。認証サーバ40がアプリケーション認証をする場合には、位置情報には、端末装置10において許可されているアプリケーションのアプリケーションIDが含まれていてもよい。位置情報サーバ30またはアプリケーションサーバ50から通信データを受信した場合、通信部14は、受信した通信データに所定の処理を施して処理部12に出力する。
位置情報には、ユーザID、端末ID、端末機種名、およびOS(Operating System)の種別等の端末装置10に関する情報が含まれていてもよい。さらに、位置情報には、位置情報の測位方式、および当該測位方式で測位された位置情報の測位誤差を含んでいてもよい。測位方式としては、例えばGPS測位方式、セルID方式、Wi−Fi方式、またはネットワーク測位方式が挙げられる。さらに、端末装置10がWi−Fiネットワークに存在する場合には、位置情報には、Wi−FiネットワークのアクセスポイントのIDが含まれていてもよい。さらに、端末装置10がBluetooth(登録商標)機能を起動して通信している場合、位置情報には、Bluetooth(登録商標)端末としてのIDが含まれていてもよい。
さらに、位置情報には、位置情報が示す位置において端末装置10が実行したプログラムに関するプログラム実行履歴情報が含まれていてもよい。プログラム実行履歴情報には、端末装置10がプログラムを実行した時刻と実行したプログラムの名称や種類が含まれる。なお、プログラム実行履歴情報には、プログラムの起動された時刻と、スリープ状態からのプログラムが再起動された時刻とが含まれる。端末装置10が実行するプログラムには、例えば、カメラプログラム、メールプログラム、電話プログラム、音楽再生プログラム(再生した楽曲名などを含んでもよい)、電卓プログラム等が含まれる。
さらに、位置情報には、位置情報が示す位置において端末装置10がアクセスしたウェブページへのアクセス履歴や起動したウェブブラウザの操作履歴に関するウェブ履歴情報が含まれていてもよい。ウェブ履歴情報には、端末装置10が企業の広告、又は、ホームページ等のWebページにアクセスした時刻とアクセスしたWebページのアドレスとが含まれる。
さらに、位置情報には、位置情報が示す位置において端末装置10が受け付けたユーザからの操作に関する操作履歴情報が含まれていてもよい。操作履歴情報には、端末装置10が操作を受け付けた時刻と受け付けた操作の名称や種類が含まれる。端末装置10が受け付ける操作には、例えば、電源をONする操作、電源をOFFする操作、スピーカ音量の調節操作、省電力モードへの切替操作等が含まれる。
さらに、位置情報には、位置情報が示す位置における端末装置10の姿勢の変化を示す姿勢変化情報が含まれていてもよい。姿勢変化情報には、端末装置10の姿勢が変化した時刻が含まれる。なお、端末装置10の姿勢の変化は、後述する加速度センサ等により検出される。
さらに、位置情報には、位置情報が示す位置において端末装置10が取得した環境情報が含まれていてもよい。環境情報には、端末装置10が収集した音情報や、近距離通信の通信履歴等が含まれる。端末装置10が収集した音情報は、例えば店舗で流される可聴音や不可聴音に関する情報である。近距離通信の通信履歴は、例えばBluetooth(登録商標)及び赤外線等の通信を行った時刻等が含まれる。
ウェブ履歴情報、プログラム実行履歴情報、操作履歴情報、充電履歴情報、姿勢変化情報、及び環境情報は、処理部12により生成される。
GPS測位部16は、位置情報を取得する位置情報取得部として機能する。GPS測位部16は、自装置の位置を特定して位置情報を生成し、処理部12に出力する。このときGPS測位部16は、複数のGPS衛星からGPS衛星の位置および時刻を含むGPS信号を受信する。GPS測位部16は、複数のGPS衛星と端末装置10の距離を演算し、三角測量演算により自装置の位置を特定する。特定された位置および時刻は、位置情報としてGPS測位部16から処理部12に供給される。
GPS測位部16は、スリープ状態と、通常動作状態との少なくとも2つの状態によって動作する。このうち、スリープ状態とは、測位を実施せずに待機している状態であって、通常動作状態よりも消費電力が少ない状態である。また、通常動作状態とは、測位を実施する状態であって、スリープ状態よりも消費電力が多い状態である。GPS測位部16は、処理部12による起動要求によって、状態を遷移させる。具体的には、GPS測位部16は、処理部12による起動要求をトリガにして、スリープ状態から通常動作状態に状態を遷移させる。また、GPS測位部16は、測位演算が終了したことをトリガにして、通常動作状態からスリープ状態に状態を遷移させる。ここで、起動要求とは、処理部12がGPS測位部16に対して出力する要求であって、自装置の位置を特定して位置情報を生成する処理の実行の要求である。
換言すれば、GPS測位部16は、処理部12から出力される起動要求の入力を待機している期間においてスリープ状態となっている。スリープ状態とは、省電力で動作している状態であり、起動要求により解除される。GPS測位部16は、処理部12から起動要求を入力することに応じて起動する。これによりGPS測位部16は、スリープ状態から通常動作状態に切り替わる。起動要求は、自装置の位置情報を取得する命令である。GPS測位部16は、起動要求に応じて位置情報を取得して処理部12に出力すると、所定時間後にスリープ状態となる。
なお、位置情報を取得する位置情報取得部は、他の方式により位置情報を取得してもよい。
この位置情報取得部は、セルID(携帯電話基地局)方式によって位置情報を取得してもよい。このセルID方式は、端末装置10が携帯電話端末の場合、携帯電話端末としての通信機能を応用して、3つ以上の携帯電話基地局の電波情報に基づいて端末装置10の現在地を算出する。
位置情報取得部は、Wi−Fi方式によって位置情報を取得してもよい。Wi−Fi方式は、端末装置10周辺の無線LANのアクセスポイントから送信される電波を検出し、アクセスポイントの位置情報に基づいてアクセスポイントまたは所定のサーバ等から端末装置10の位置情報を取得する。
さらに、位置情報取得部は、ネットワーク測位方式によって位置情報を取得してもよい。ネットワーク測位方式は、セルID方式とWi−Fi方式による測位で位置情報を取得する。
このように、位置情報取得部は、GPS測位方式のみならず、セルID方式またはWi−Fi方式を用いる構成であっても、処理部12からの起動要求に応じてスリープ状態から起動して、位置情報を取得できる。
本実施形態において、端末装置10は、位置情報の取得方式として、Wi−Fi方式およびセルID方式よりも、GPS測位部16による測位方式を優先する。端末装置10は、例えば自装置が屋内にいる等のGPS測位部16に測位ができない状況において、GPS測位部16による測位に代えて、セルID方式またはWi−Fi方式による測位に切り替える。
記憶部18は、各種の情報を記憶する記録媒体である。記憶部18は、位置情報取得制御部122により取得させた位置情報を蓄積する。記憶部18は、位置情報を時系列で記憶する。記憶部18は、アプリケーション認証を行う場合、位置情報に対応付けて、起動が許可されたアプリケーションプログラムのアプリケーションIDを記憶してもよい。また、記憶部18は、後述するライブラリ管理情報とマスタ選択条件とを記憶する。
また、記憶部18には、位置情報取得制御部122が動作するための位置取得制御用プログラムとしての位置情報ライブラリが記憶される。位置取得制御用プログラムは、コンピュータにより読込可能なプログラムである。
処理部12は、例えば、CPU(Central Processing Unit)等のプロセッサが、メモリに記憶されたプログラムを実行することにより機能するソフトウェア機能部である。また、これらの機能部のうち一部または全部は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)等のハードウェア機能部であってもよい。
処理部12は、アプリケーション処理部120A、120B、120C(以下、総称する場合には単に「アプリケーション処理部120」と呼ぶ。)を有する。アプリケーション処理部120A、120B、120Cは、CPUがアプリケーションプログラムA、B、Cを実行することにより機能するソフトウェア機能部である。本実施形態において、複数のアプリケーション処理部120A、120B、120Cは、それぞれ任意のアプリケーション処理を実行する。また、本実施形態では、アプリケーションプログラムA、B、Cの3つを実行するが2以上のアプリケーションプログラムを同時に実行するものであればよい。
端末装置10は、アプリケーションプログラムA、B、Cの起動時にアプリケーション認証のための動作を行ってもよい。この場合、端末装置10は、アプリケーションプログラムが起動する際に、アプリケーションプログラムごとに予め定められているアプリケーションIDを認証サーバ40に送信する。より具体的には、端末装置10は、アプリケーションプログラムAが起動する際に、アプリケーションプログラムAを示すアプリケーションIDを認証サーバ40に送信する。端末装置10は、認証サーバ40からアプリケーション認証が許可されたか否かの認証結果を受信する。端末装置10は、認証結果が「許可」の場合のみアプリケーションプログラムの起動を許可する。
処理部12は、同時に複数のアプリケーションプログラムA、B、Cが実行可能である。処理部12は、複数のアプリケーションプログラムA、B、Cのうち優先度の低いアプリケーションプログラムをバックグラウンドで実行する。なお、アプリケーションプログラムA、B、Cは、所定期間ごとに起動要求を出力することが設定されていてもよい。所定期間は、アプリケーションプログラムA、B、Cごとに設定されていてもよい。
独自の所定期間は、例えばアプリケーションの種類等に基づき、1分、10分、1時間などが挙げられる。また、独自の所定期間は、ユーザの操作を受け付け、ユーザにより指定された期間となるように変更させてもよい。さらに、独自の所定期間は、過去の測位履歴に基づいて自動的に変更させてもよい。例えば、次の所定期間を設定する際に、処理部12は、前回の所定期間の開始前および経過時において測位された2つの位置情報から前回の所定期間内の移動距離を算出し、前回の所定期間において自装置の移動がある、または移動距離が長い場合には、次の所定期間を短く変更してもよい。
独自のタイミングは、自装置が通信する基地局に対応したセルID、自装置が通信可能なWiFiアクセスポイントのアクセスポイントIDが変化したタイミングが挙げられる。処理部12は、セルIDまたはアクセスポイントIDが変化したことをトリガとして起動要求の出力タイミングの到来を判断できる。さらに、独自のタイミングは、後述する加速度センサ等の自装置の移動を検知し、自装置が所定距離移動したと推定されるタイミングであってもよい。この所定距離は、後述するように、自装置が所定エリアに進入したことに応じて再設定または変更されてもよい。また、所定距離は、ユーザの操作を受け付け、ユーザにより指定された距離となるように変更させてもよい。
本実施形態の端末装置10は、アプリケーションプログラムが起動要求を出力するものであっても、一つの位置情報取得制御部122のみがGPS測位部16に起動要求を出力する。
図2の構成において、アプリケーションプログラムA、B、Cには、それぞれに位置情報ライブラリが付属している。すなわち、アプリケーションプログラムAには、位置情報ライブラリAが付属している。また、アプリケーションプログラムBには、位置情報ライブラリBが付属しており、アプリケーションプログラムCには、位置情報ライブラリCが付属している。以下の説明において、これら位置情報ライブラリA、B、Cを総称して、位置情報ライブラリという。また、以下では、一つのアプリケーションに対して、一つの位置情報ライブラリが付属する例について説明する。
この位置情報ライブラリは、GPS測位部16に対して、起動要求を出力する。また、位置情報ライブラリは、この起動要求に応じてGPS測位部16が生成した位置情報を取得し、取得した位置情報をアプリケーションプログラムに出力する。これにより、アプリケーションプログラムは、GPS測位部16が生成した位置情報の利用が可能になる。
また、この位置情報ライブラリとは、端末装置10のCPUによって実行されるソフトウェアである。すなわち、端末装置10において、CPUが位置情報ライブラリを実行する。これにより、端末装置10は、ソフトウェア機能部として位置情報取得制御部122A、122B、122C(以下、総称する場合には単に「位置情報取得制御部122」と呼ぶ。)を構成する。すなわち、処理部12は、これら位置情報取得制御部122をアプリケーションごとに有している。
位置情報取得制御部122を実現するための位置情報ライブラリは、それぞれ、独自の測位タイミングおよび位置情報の送信タイミングが設定される。複数のアプリケーションに付属されるそれぞれの位置情報ライブラリは、付属されるアプリケーションの種類および使用頻度、ダウンロードされた日時、またはソフトウェアバージョン等が異なる。従って、それぞれの位置情報ライブラリの測位タイミングおよび送信タイミングは、それぞれ好ましいタイミングが設定される。
後述するように、自装置が通常モードと省電力モードの切替によって変更され、変更された動作モードに応じてマスタとしての位置情報ライブラリが変更されることに伴い、自装置の測位タイミングおよび送信タイミングを変更させる。
ここで、アプリケーションプログラムA、B、Cには、それぞれに位置情報ライブラリが付属しているが、必ずしも、これら全ての位置情報ライブラリがGPS測位部16に対して起動要求を出力しなくてもよい。つまり、処理部12には、複数の位置情報取得制御部122のうち、位置情報を取得させて位置情報をアプリケーション処理部120に利用可能にする一つの位置情報取得制御部122が存在していればよい。「一つの位置情報取得制御部122」は、後述するマスタとされた位置情報ライブラリにより実現される。「一つの位置情報取得制御部122」は、図4を参照して後述するように、複数のアプリケーションに対応した1つの位置情報ライブラリとして付属していてもよい。
アプリケーション処理部120は、一つの位置情報取得制御部122によってGPS測位部16に取得させる位置情報を利用する。
「位置情報を利用する」とは、端末装置10内で位置情報を使用することを含む。アプリケーション処理部120は、例えば、位置情報を使用することにより、GPS測位部16により取得された位置情報に基づいて自装置の位置を地図上に表示させることができる。
「位置情報を利用する」とは、GPS測位部16により取得した位置情報に基づく情報を使用することを含む。位置情報に基づく情報は、位置情報を用いることによって得られた新たな情報である。位置情報に基づく情報は、端末装置10内で位置情報に基づいて処理をしたことによって得られた情報であってもよく、アプリケーションサーバ50内で位置情報に基づいて処理したことによって得られた情報であってもよい。例えば、アプリケーション処理部120は、自装置の位置に近い店舗の広告情報を抽出して、広告情報をプッシュ広告として表示してもよい。アプリケーション処理部120は、アプリケーションサーバ50によって位置情報に基づいて抽出された広告情報を受信して、広告情報をプッシュ広告として表示してもよい。
アプリケーション処理部120は、一つの位置情報取得制御部122が取得する位置情報を利用可能にする。「位置情報を利用可能にする」とは、端末装置10以外の装置に位置情報を取得させ、端末装置10以外の装置に位置情報を処理可能にすることを含む。
このために、アプリケーション処理部120は、GPS測位部16により取得された位置情報の利用を許可する。このときアプリケーション処理部120は、位置情報を送信することを許可するかをユーザに問い合わせる。ユーザが位置情報の送信を許可した場合、アプリケーション処理部120は、位置情報の利用を許可する許可情報を生成する。アプリケーション処理部120は、生成した許可情報を位置情報サーバ30に送信する。位置情報サーバ30は、端末装置10から送信された許可情報を受信した後、以降において端末装置10から送信された位置情報を蓄積して、アプリケーションサーバ50等に送信できる。これによりアプリケーション処理部120は、アプリケーションサーバ50によって位置情報を利用して、端末装置10の位置の解析等を行わせることができる。
さらに、アプリケーション処理部120は、予め端末装置10にインストールされたものである。アプリケーション処理部120は、位置情報ライブラリが端末装置10に供給されることに伴って、端末装置10にインストールされたものであってもよい。具体的には、位置情報ライブラリが付属したアプリケーションプログラムを同時にダウンロードして端末装置10にインストールする。これにより端末装置10は、アプリケーション処理部120および位置情報取得制御部122を備えることができる。
位置情報ライブラリは、ユーザの許可に応じてダウンロードされる。アプリケーションプログラムを起動している時に、アプリケーション処理部120は、自装置の位置情報の送信を許可するかを問い合わせる画面を表示させる。ユーザの操作に基づいて位置情報の送信が許可された場合、アプリケーション処理部120は、位置情報ライブラリのダウンロード要求を送信させる。
位置情報サーバ30は、ダウンロード要求を受信したことに応じて位置情報ライブラリを端末装置10に送信する。これにより端末装置10は、位置情報ライブラリのダウンロードを開始する。処理部12は、ダウンロードが完了すると、位置情報ライブラリを各アプリケーションプログラムに付属させる。
処理部12は、ダウンロードした位置情報ライブラリを他のアプリケーションに付属させてもよい。処理部12は、ダウンロードした位置情報ライブラリを複製し、位置情報ライブラリが付属していないアプリケーションに組み込む。これにより処理部12は、位置情報ライブラリが付属していないアプリケーションに位置情報ライブラリを付属させることができる。
処理部12は、既にアプリケーションに組み入れられている古いバージョンの位置情報ライブラリに代えて最新バージョンの位置情報ライブラリに更新してもよい。これにより処理部12は、アプリケーションの位置情報ライブラリを最新なものに更新することができる。
次に、位置情報取得制御部122について説明する。位置情報取得制御部122は、GPS測位部16を制御して位置情報を取得し、取得した位置情報を位置情報サーバ30に送信する機能を有する。
まず、位置情報取得制御部122によるGPS測位部16の制御について説明する。位置情報取得制御部122は、GPS測位部16に起動要求を行う。複数のアプリケーション処理部120A、120B、120Cに付属した複数の位置情報取得制御部122A、122B、122Cのうちの一つの位置情報取得制御部122が、GPS測位部16に起動要求を行う。複数の位置情報取得制御部122のうち起動要求を行う一つの位置情報取得制御部122は、予め特定されている。すなわち、複数のアプリケーションプログラムA、B、Cのうちどのアプリケーションプログラムの位置情報取得制御部122からGPS測位部16に起動要求を出力するかは特定されている。
複数の位置情報取得制御部122のうち、起動要求を出力した位置情報取得制御部122には、GPS測位部16から位置情報が供給される。この位置情報取得制御部122は、GPS測位部16から位置情報が供給されたことを、他の位置情報取得制御部122に通知する。この、他の位置情報取得制御部122は、位置情報が供給されたことを示す通知に応じて、起動要求を出力した位置情報取得制御部122に対して位置情報を要求する。起動要求を出力した位置情報取得制御部122は、他の位置情報取得制御部122からの要求に応じて、他の位置情報取得制御部122に対して位置情報を出力する。ここで、起動要求を出力した位置情報取得制御部122とは、予め特定されたアプリケーションに付属した位置情報取得制御部122である。また、他の位置情報取得制御部122とは、予め特定されたアプリケーション以外のアプリケーションに付属した位置情報取得制御部122である。つまり、予め特定されたアプリケーションに付属した位置情報取得制御部122は、他のアプリケーションに付属した位置情報取得制御部122に位置情報を出力する。これにより、他のアプリケーションに付属した位置情報取得制御部122は、GPS測位部16に起動要求を行うことなく、GPS測位部16が生成した位置情報を取得することができる。
予め特定されたアプリケーションに付属した位置情報取得制御部122は、位置情報サーバ30に位置情報を送信する場合に、記憶部18に蓄積した位置情報を読み出して、通信部14に出力する。これにより位置情報取得制御部122は、記憶部18から読み出した位置情報を、通信部14から位置情報サーバ30に送信させる。
なお、位置情報取得制御部122は、位置情報サーバ30を介さずに、アプリケーションサーバ50に直接的に位置情報を送信してもよい。
予め特定されたアプリケーションに付属した位置情報取得制御部122は、所定条件を満たす場合に、端末装置10から位置情報サーバ30に位置情報を送信させる。所定条件は、予め端末装置10内で決定された送信タイミングである。
所定条件は、位置情報サーバ30から送信された所定期間であってもよい。これにより端末装置10は、位置情報サーバ30が要求する頻度で位置情報サーバ30に位置情報を送信できる。
所定条件は、アプリケーションによって設定されたタイミングであってもよい。これにより端末装置10は、アプリケーションが要求する頻度で位置情報サーバ30に位置情報を送信できる。
所定条件は、位置情報サーバ30を介さずにアプリケーションサーバ50に直接的に位置情報を送信する場合、アプリケーションサーバ50から送信された所定期間であってもよい。これにより端末装置10は、アプリケーションサーバ50が要求する頻度で、アプリケーションサーバ50に位置情報を送信できる。
また、予め特定されたアプリケーションに付属した位置情報取得制御部122は、位置情報とともに、ウェブ履歴情報、プログラム実行履歴情報、操作履歴情報、充電履歴情報、姿勢変化情報及び環境情報の全部又は一部を位置情報サーバ30に送信してもよい。
さらに、位置情報取得制御部122は、位置情報を記憶部18から読み出して通信部14により通信させる度に、位置情報の送信完了または送信不能を送信履歴として記憶してもよい。位置情報取得制御部122は、例えば自装置周辺の電波の影響により位置情報の送信ができない場合には、位置情報の送信を中止し、当該位置情報に対応付けて送信不能であるという送信履歴を記憶部18に記憶させる。位置情報取得制御部122は、送信タイミングにおいて送信履歴を参照し、前回の送信タイミング以降にGPS測位部16により取得された位置情報、および送信不能の位置情報を記憶部18から読み出し、通信部14により通信させる。これにより、位置情報取得制御部122は、位置情報の送信ができない状況が生じても、位置情報を漏れなく送信できる。
ここで、予め特定されたアプリケーションに付属した位置情報取得制御部122を、マスタ権限を有する位置情報取得制御部122(位置情報ライブラリ)、または、単にマスタとも称する。また、予め特定されたアプリケーション以外のアプリケーションに付属した位置情報取得制御部122を、マスタの権限を有しない位置情報取得制御部122(位置情報ライブラリ)、または、スレーブとも称する。
この位置情報ライブラリの状態には、動作不可状態と動作状態とがある。ここで、動作不可状態とは、位置情報ライブラリが機能していない状態である。この動作不可状態になる条件には、位置情報ライブラリが付属されるアプリケーションのアンインストール、ユーザの操作によるアプリケーションの動作停止、ユーザの操作による測位機能の停止などが含まれる。また、動作状態とは、上述したマスタまたはスレーブのいずれかとして位置情報ライブラリが機能している状態である。すなわち、この動作状態には、位置情報ライブラリが、マスタとして動作している状態と、スレーブとして動作している状態とが含まれる。動作可能状態になる条件には、位置情報ライブラリが付属されるアプリケーションのインストール、ユーザの操作によるアプリケーションの動作開始、ユーザの操作による測位機能の開始などが含まれる。ここで、位置情報ライブラリが、動作不可状態から動作可能状態に遷移する場合に、マスタとして動作する場合と、スレーブとして動作する場合とがある。以下では、一例として、アプリケーションがインストールされるなどして、位置情報ライブラリが新たに端末装置10に追加された場合に、この位置情報ライブラリが、先ずはスレーブとして動作する場合について説明する。
スレーブとして動作する位置情報ライブラリ(以下、単にスレーブとも記載する。)は、GPS測位部16に対して起動要求を送信しない。スレーブが位置情報の取得を欲する場合には、GPS測位部16から直接的に位置情報を取得するのではなく、位置情報を取得しているマスタとして動作する位置情報ライブラリ(以下、単にマスタとも記載する。)を介して位置情報を取得する。ここで、マスタは、GPS測位部16から直接的に位置情報を取得する。また、マスタは、GPS測位部16から直接的に位置情報を取得したことを、スレーブに対して通知する。スレーブは、マスタから通知を受けた場合に、マスタに位置情報を要求して、位置情報を取得する。これにより、スレーブは、GPS測位部16から直接的に位置情報を取得することなく、位置情報を取得することができる。すなわち、スレーブは、GPS測位部16に対して起動要求をすることなく、位置情報を取得することができる。
なお、端末装置10は、アプリケーションに対して位置情報の利用を禁止する操作を植え付けてもよい。換言すると、端末装置10は、位置情報ライブラリによる位置情報の取得を禁止するユーザの操作を受け付けてもよい。位置情報の取得が禁止された位置情報ライブラリは、マスタの権限を得ることがない。また、マスタは、位置情報の取得が禁止された位置情報ライブラリに対しては、GPS測位部16から位置情報を取得したことを通知しない。そして、マスタは、位置情報の取得が禁止された位置情報ライブラリから位置情報の要求があった場合にも、当該位置情報ライブラリに対しては位置情報を提供しない。
次に、マスタとスレーブとの切替について説明する。何らかの要因により、マスタが動作できなくなると、すべての位置情報ライブラリが位置情報を取得することができなくなる。このため、何らかの要因によりマスタが動作できなくなった場合、あるスレーブをマスタにする、すなわち、マスタとスレーブとを切替えることにより、位置情報を取得する。ここで、マスタとスレーブとを切替するためには、切替が行われる条件を検出する制御が必要になる。また、スレーブが複数ある場合には、いずれのスレーブをマスタに切替するのか、すなわちスレーブの選択の制御が必要になる。以下、まずマスタとスレーブとの切替が行われる条件について説明し、次に、スレーブが複数ある場合の、マスタとなるべきスレーブの選択について説明する。
[マスタとスレーブとの切替が行われる条件]
処理部12による、位置情報ライブラリのマスタとスレーブとの切替が行われる条件について説明する。マスタとスレーブとの切替は、例えば、以下の3つの条件により発生する。
第1の切替条件は、ユーザからマスタの機能停止を指示する操作を受け付けることである。機能停止を指示する操作とは、例えば、位置情報ライブラリが付属するアプリケーション、すなわち位置情報ライブラリに対して行われる、アンインストール、実行の停止、実行に必要な情報の削除、位置情報の利用の不承諾などの操作をいう。つまり、第1の切替条件によりマスタとスレーブの切替が行われる場合、それまでにマスタとして機能していた位置情報ライブラリの機能の一部または全てが制限されるとともに、それまでスレーブとして機能していた位置情報ライブラリのいずれかが新たにマスタとして機能する。
また、第2の切替条件は、現在のマスタよりもマスタとしての優先性が高い位置情報ライブラリが発生することである。現在のマスタよりもマスタとしての優先性が高い位置情報ライブラリは、例えば、端末装置10に新たな位置情報ライブラリがインストールされること、マスタ選択条件が変更されることなどにより発生する。
また、第3の切替条件は、位置情報サーバ30からマスタの変更を指示されることである。つまり、第2、第3の切替条件によりマスタとスレーブの切替が行われる場合、それまでマスタとして機能していた位置情報ライブラリはスレーブとして機能を始め、それまでスレーブとして機能していた位置情報ライブラリのいずれかが新たにマスタとして機能する。
[マスタとなるべきスレーブの選択条件(マスタ選択条件)]
本実施形態において、マスタとスレーブとの切替は、位置情報サーバ30から取得されるライブラリ管理情報に基づいて行われる。ライブラリ管理情報は、ライブラリ属性情報と優先順位情報とを含む。ライブラリ属性情報は、端末装置10に含まれる位置情報ライブラリの属性を表す情報である。ライブラリ属性情報は、マスタ選択における位置情報ライブラリの優先順位の決定のために参照される情報である。つまり、ライブラリ属性情報は、マスタ選択における位置情報ライブラリの評価指標である。優先順位情報は、端末装置10に含まれる位置情報ライブラリ各々についてのマスタ選択における優先順位を表す情報である。
図3は、ライブラリ管理情報の一例を示す図である。
図3に示される例において、ライブラリ管理情報は、位置情報取得制御部識別情報(位置情報取得制御部ID)、インストール日時情報(インストール日時)、起動日時情報(起動日時)、バージョン情報(バージョン)、認証情報(認証)、起動要求頻度情報(起動要求頻度)、アプリ起動回数情報(アプリ起動回数)、アプリ種別情報(アプリ種別)、発行主体情報(発行主体)および優先順位情報(優先順位)を含み、これらが互いに対応付けられ構成される。これらの各種情報のうち、位置情報取得制御部識別情報、インストール日時情報、起動日時情報、バージョン情報、認証情報、起動要求頻度情報、アプリ起動回数情報、アプリ種別情報、および発行主体情報とは、ライブラリ属性情報の一例である。
位置情報取得制御部識別情報は、端末装置10に含まれる複数の位置情報ライブラリを識別するための識別情報である。位置情報取得制御部識別情報は、例えば、位置情報ライブラリが付属するアプリケーションの識別情報である。図3に示される例では、位置情報取得制御部識別情報の値は、位置情報ライブラリが付属するアプリケーションの名称である。
インストール日時情報は、処理部12により処理情報ライブラリがインストールされた日時を表す情報である。インストールされた日時が古ければ古い程、位置情報ライブラリが付属するアプリケーションは、ユーザにより削除されずに長い期間利用されていると考えられる。従って、インストール日時情報は、ユーザによる位置情報ライブラリへの信頼度を表す情報である。
起動日時情報は、端末装置10において、処理部12により位置情報ライブラリについて、最後の実行が開始された日時を表す情報である。最後の実行が開始された日時が古ければ古い程、位置情報ライブラリが付属するアプリケーションは、ユーザによりその機能が停止されることなく長い期間利用されていると考えられる。従って、起動日時情報は、位置情報ライブラリが付属するアプリケーションに対するユーザの信頼度、つまり、位置情報ライブラリに対するユーザの信頼度を表す情報である。
なお、起動日時情報は、端末装置10おいて、処理部12により位置情報ライブラリが初めて実行された日時を表す情報であってもよい。初めて実行された日時が古ければ古い程、位置情報ライブラリが付属するアプリケーションは、ユーザにより削除されずに長い期間利用されていると考えられる。従って、この場合も、起動日時情報は、位置情報ライブラリが付属するアプリケーションに対するユーザの信頼度、つまり、位置情報ライブラリに対するユーザの信頼度を表す情報である。
バージョン情報は、位置情報ライブラリのバージョンを表す情報である。バージョン情報は、例えば、数値により表される。そして、バージョン情報は、その数値が高い程、新しいバージョンであることを表す。位置情報ライブラリのバージョンは、バグフィックスなどにより更新される。従って、バージョン情報は、位置情報ライブラリの性能を表す情報である。
認証情報は、位置情報ライブラリが付属するアプリケーションに対して、認証サーバ40による認証が成功しているか否かを表す情報である。すなわち、認証情報は、認証サーバ40の管理者による位置情報ライブラリへの信頼度を表す情報である。認証情報は、例えば「TRUE」、「FALSE」、「NULL」の3つの値により表される。そして、「TRUE」、「FALSE」、「NULL」は、それぞれ、認証が成功したこと、認証が失敗したこと、認証処理が行われていないことを表す。
起動要求頻度情報は、位置情報ライブラリがマスタの権限を有した時に、位置情報取得部160を起動する頻度を表す情報である。位置情報取得部160の起動頻度が高い程、位置情報の鮮度は向上するが、消費電力が増加して端末装置10の省電力性が損なわれる。これに対し、位置情報取得部160の起動頻度が低い程、消費電力が減少して端末装置10の省電力性が向上するが、位置情報の鮮度が損なわれる。つまり、起動要求頻度情報は、端末装置10の省電力性と位置情報の鮮度とを表す情報である。起動要求頻度情報の値は、例えば、位置情報ライブラリが付属するアプリケーションによる位置情報の要求頻度である。図3に示される例において、起動要求頻度情報は、位置情報ライブラリが位置情報取得部160に起動要求を行う時間間隔を表している。
なお、ライブラリ管理情報として、上述の起動要求頻度情報以外に、位置情報取得部160の起動頻度を表す情報が含まれてもよい。例えば、ライブラリ管理情報は、位置情報ライブラリがマスタである場合に、位置情報取得部160に対して起動要求を出力する規則を定める起動規則情報であってもよい。具体的には、例えば、ライブラリ管理情報は、端末装置10において移動が検知された場合に、位置情報ライブラリが位置情報取得部160の起動要求を出力するか否かを表す起動規則情報を含んでもよい。また、例えば、ライブラリ属性情報は、端末装置10が所定の区域に存在する場合に、位置情報ライブラリが所定の時刻、所定の時間間隔などに応じて起動要求を出力することを定める起動規則情報であってもよい。
なお、起動頻度を表す情報は、各位置情報ライブラリについて、複数定められてもよい。具体的には、例えば、端末装置10が通常の動作を行う通常モードと、自装置の電力消費を抑制する省電力モードを有する場合、起動頻度を表す情報は、モードごとに定められてもよい。この場合、省電力モードにおいて、通常モードよりも低い起動頻度を定める。これにより、端末装置10は、省電力モードにおいて、GPS測位部16を起動する頻度を低減し、端末装置10の電力消費を抑制することができる。
アプリ種別情報は、位置情報ライブラリが付属するアプリケーションの種別を示す情報である。アプリケーションの種別には、例えば、常駐型、定期起動型、および手動起動型がある。常駐型のアプリケーションは、例えば、端末装置10の電源投入に応じて起動するアプリケーションである。定期起動型のアプリケーションは、所定日時の到来または所定期間の経過に応じて起動するアプリケーションである。手動起動型のアプリケーションは、ユーザによる起動操作に応じて起動するアプリケーションである。常駐型および定期起動型のアプリケーションは、ユーザの意図により実行されているとは限らない。これに対し、手動起動型のアプリケーションは、ユーザの意図により実行される。従って、アプリ種別情報は、位置情報ライブラリが付属するアプリケーションに対するユーザの信頼度、つまり、位置情報ライブラリに対するユーザの信頼度を表す情報である。
また、アプリ種別情報は、位置情報ライブラリの可用性を表す情報でもある。この観点から、アプリケーションの種別について具体的に説明する。常駐型のアプリケーションは、その起動がユーザにより意識されにくいため、ユーザにより削除される可能性が低い。また、定期起動型のアプリケーションも、手動起動型のアプリケーションに比して、その起動がユーザにより意識されにくく、ユーザに削除される可能性が低い。これに対し、手動起動型のアプリケーションの起動は、ユーザにより意識的に行われる。そのため、手動起動型のアプリケーションは、インストールされてから間もない期間において、ユーザにより頻繁に起動されるが、時間が経過して使われなくなると直ぐに削除されてしまう傾向がある。このように、端末装置10において、位置情報ライブラリが安定的に存在しうるか否か、あるいは、位置情報ライブラリが安定的に利用可能か否かは、アプリケーションの種別により異なっている。つまり、アプリ種別情報は、位置情報ライブラリに対するユーザの信頼度と、位置情報ライブラリの可用性とを表す情報である。
アプリ起動回数情報は、位置情報ライブラリが付属するアプリケーションが処理部12により起動された回数(頻度)を表す情報である。アプリ起動回数情報は、例えば、アプリケーションが初めて起動されてから、これまでに起動された回数を数値により表す。アプリケーションが起動された回数が多い程、そのアプリケーションは、ユーザにより頻用されていると考えられる。従って、アプリ起動回数情報は、位置情報ライブラリが付属するアプリケーションに対するユーザの信頼度、つまり、位置情報ライブラリに対するユーザの信頼度を表す情報である。
なお、アプリ起動回数情報の数値は、他のライブラリ属性情報に応じて重み付けされてもよい。具体的には、例えば、ユーザによる信頼度が高い手動起動型のアプリケーションが起動された場合、アプリ起動回数情報が表す回数は、アプリケーションの起動回数に一定の割合を加算した、重み付けのされた回数で更新される。これに対して、ユーザによる信頼度が低い常駐型のアプリケーションが起動された場合、アプリ起動回数情報が表す回数は、アプリケーションの起動回数そのままの回数で更新されてもよい。このように各種ライブラリ管理情報は、他のライブラリ管理情報の値に応じて重み付けされてもよい。これにより、端末装置10は、マスタ選択における位置情報ライブラリの優先順位の決定において、複数の異なる評価指標を統合することができる。
発行主体情報は、位置情報ライブラリが付属するアプリケーションの発行主体(発行元)を表す情報である。発行主体が、例えば、端末装置10の製造元の関連企業、ユーザが端末装置10に関して通信契約を結んだ通信事業者などである場合、当該企業はユーザによる信頼性が高いと考えられる。そして、信頼性が高い発行主体から提供されるアプリケーションもまた、信頼性が高いと考えられる。従って、発行主体情報は、位置情報ライブラリが付属するアプリケーションに対するユーザの信頼度、つまり、位置情報ライブラリに対するユーザの信頼度を表す情報である。
優先順位情報は、位置情報ライブラリの複数のスレーブのうち、いずれのスレーブをマスタとして選択するのかという場合の、マスタ選択順位を表す情報である。すなわち、優先順位情報は、位置情報ライブラリのマスタとしての優先度(ふさわしさ)を表す情報である。図3に示される例において、優先順位情報の値は、数字または「NULL」で表される。優先順位情報の値が数字の場合、マスタに選択される優先順位が高い程、小さい値である。特に、優先順位情報の値が「1」の場合、この位置情報ライブラリはマスタである。これに対して、優先順位情報の値が「2」以上など「1」以外の数値の場合、この位置情報ライブラリはスレーブである。優先順位情報の値が「NULL」の場合、この位置情報ライブラリはマスタの候補ではないことを表す。具体的には、位置情報ライブラリが動作不可状態の場合、優先順位情報の値は「NULL」で表される。位置情報ライブラリが動作状態の場合、優先順位情報の値は数字で表される。また、例えば、端末装置10に新たに追加された位置情報ライブラリの優先順位情報には、複数の位置情報ライブラリにそれぞれ与えられている値のうち、最も大きな値が、先ずは割り当てられる。
図3に示される例において、第2段目に登録されているライブラリ管理情報は、位置情報取得制御部識別情報「アプリA」、インストール日情報「2014/7/10 20:03:40」、起動日時情報「2014/08/10 15:16:20」、バージョン情報「02」、認証情報「TRUE」、起動要求頻度情報「30 sec」、アプリ起動回数情報「50」、アプリ種別情報「常駐型」、発行主体情報「A社」、および優先順位情報「2」を対応付けている。すなわち、このライブラリ管理情報は、「アプリA」が、「2014年7月10日 20時03分40秒」にインストールされ、「2014年08月10日 15時16分20秒」に起動されたことを表す。また、このライブラリ管理情報は、「アプリA」に付属する位置情報ライブラリがマスタの権限を有した場合には、「30秒」間隔で、位置情報取得部160に起動要求を出力することを表す。また、このライブラリ管理情報は、「アプリA」に付属する位置情報ライブラリが、そのバージョンが「02」であり、認証サーバ40による認証に成功していることを表す。また、このライブラリ管理情報は、「アプリA」が、「A社」により提供される「常駐型」のアプリケーションであり、初めて起動されてからこれまでに「50」回起動されたことを表す。また、このライブラリ管理情報は、「アプリA」に付属する位置情報ライブラリの優先順位が「2」位であり、マスタの位置情報ライブラリがマスタの権限を有しなくなった場合に、「アプリA」に付属する位置情報ライブラリがマスタとして機能するスレーブであることを表す。
図3に示される例において、第3段目に登録されているライブラリ管理情報は、位置情報取得制御部識別情報「アプリB」、インストール日時情報「2014/6/12 21:33:03」、起動日時情報「2014/08/12 10:11:03」、バージョン情報「02」、認証情報「TRUE」、起動要求頻度情報「15 sec」、アプリ起動回数情報「100」、アプリ種別情報「手動起動型」、発行主体情報「B社」、および優先順位情報「1」を対応付けている。すなわち、このライブラリ管理情報は、「アプリB」が、「2014年6月12日 21時33分03秒」にインストールされ、「2014年08月12日 10時11分03秒」に起動されたことを表す。また、このライブラリ管理情報は、「アプリB」に付属する位置情報ライブラリがマスタの権限を有した場合には、「15秒」間隔で、位置情報取得部160に起動要求を出力することを表す。また、このライブラリ管理情報は、「アプリB」に付属する位置情報ライブラリが、そのバージョンが「02」であり、認証サーバ40による認証に成功していることを表す。また、このライブラリ管理情報は、「アプリB」が、「B社」により提供される「手動起動型」のアプリケーションであり、初めて起動されてからこれまでに「100」回起動されたことを表す。また、このライブラリ管理情報は、「アプリB」が示す位置情報ライブラリの優先順位が「1」位であり、現在マスタとして機能していることを表す。
なお、ライブラリ属性情報は、上述した各種情報のうち、任意の情報を含まなくてもよい。また、ライブラリ管理情報は、上述した各種ライブラリ属性情報以外にも、マスタを選択するための任意の情報を含んでよい。具体的には、例えば、ライブラリ管理情報は、アプリケーションの実行がユーザの操作により禁止された回数を示す情報、アプリケーションの測位機能がユーザの操作により停止された回数を示す情報などを含んでもよい。ユーザによるアプリケーションの実行禁止の操作は、当該アプリケーションに対してユーザが悪感情を抱いた場合に行われることが考えられる。従って、これらの情報は、位置情報ライブラリが付属するアプリケーションに対するユーザの信頼度、つまり、位置情報ライブラリに対するユーザの信頼度を表す情報である。
なお、本実施形態において、ライブラリ管理情報は、位置情報サーバ30により管理されている。マスタは、例えば定期的に、位置情報サーバ30から送信されるライブラリ管理情報を取得する。マスタは、取得したライブラリ管理情報を記憶部18に記憶させる。
なお、位置情報サーバ30がライブラリ管理情報を更新するための情報は、例えば、端末装置10から位置情報サーバ30に送信される。具体的には、例えば、端末装置10は、位置情報ライブラリを新規にインストールした場合、そのインストール日時を示すインストール日時情報を位置情報サーバ30に送信する。そして、位置情報サーバ30は、受信したインストール日時情報により、自装置が管理するライブラリ管理情報のインストール日時情報を更新する。また、例えば、端末装置10は、アプリケーションが起動された場合、その起動日時を示す起動日時情報を位置情報サーバ30に送信する。そして、位置情報サーバ30は、受信した起動日時情報により、自装置が管理するライブラリ管理情報の起動日時情報を更新するとともに、アプリ起動回数情報の値に「1」を加算して更新する。このように、端末装置10は、ライブラリ属性情報の更新が必要となるタイミングで、逐次その旨を位置情報サーバ30に通知してよい。また、端末装置10は、位置情報サーバ30へのライブラリ属性情報の前回の送信からの差分を記憶しておき、当該差分を位置情報サーバ30に送信してもよい。この場合、端末装置10は、位置情報とともに、ライブラリ属性情報を位置情報サーバ30に送信してもよい。
また、位置情報サーバ30は、例えば、端末装置10から送信されたアプリケーションの認証要求に対する認証結果を認証サーバ40から取得し、認証情報を更新する。
また、位置情報サーバ30は、ライブラリ属性情報のうち、アプリケーションの属性情報を他の装置から取得してもよい。位置情報サーバ30は、例えば、バージョン情報、起動要求頻度情報、アプリ種別情報、発行主体情報などのアプリケーションの属性情報を、アプリケーションの属性情報の管理装置などから取得する。当該管理装置は、例えば、これらのアプリケーションの属性情報をアプリケーションの識別情報と対応付けて管理し、位置情報サーバ30から送信されるアプリケーションの識別情報(位置情報取得制御部識別情報)に応じてライブラリ属性情報を送信する。
次に、マスタ選択条件について説明する。マスタ選択条件は、複数の位置情報ライブラリからマスタを選択するための条件を定める。マスタ選択条件は、目的に応じて任意に定められてよい。具体的には、マスタ選択条件は、例えば、位置情報ライブラリに対するユーザの信頼度、位置情報ライブラリに対する位置情報サーバ30の管理者の信頼度、端末装置10の省電力性、位置情報の鮮度などを担保する目的に応じて定められる。
例えば、位置情報ライブラリに対するユーザの信頼度を担保することを目的とする場合、インストール日時情報が表す日時が古いこと、起動日時情報が表す日時が古いこと、アプリ起動回数情報が示すアプリケーションの起動回数が多いこと、発行主体情報が信頼性の高い特定の発行主体を表していること、アプリケーションの実行が禁止された回数が少ないこと、アプリケーションの測位機能が停止された回数が少ないこと、およびこれらの組み合わせなどをマスタ選択条件とする。
また、例えば、位置情報ライブラリに対する認証サーバ40の管理者の信頼度を担保することを目的とする場合、認証情報が認証の成功を表していることなどをマスタ選択条件とする。
また、例えば、位置情報ライブラリの性能を担保することを目的とする場合、バージョン情報が表す位置情報ライブラリのバージョンが新しいことなどをマスタ選択条件とする。
また、例えば、端末装置10の省電力性を担保することを目的とする場合、起動要求頻度情報が表す位置情報取得部160に対する位置情報ライブラリからの起動要求の出力頻度が低いこと、位置情報取得部160への起動要求を位置情報ライブラリが出力可能にするための規則が少ないこと、位置情報ライブラリが付属するアプリケーションの消費電力が低いこと、バージョン情報が表す位置情報ライブラリのバージョンが新しいこと、およびこれらの組み合わせなどをマスタ選択条件とする。アプリケーションの消費電力が低いとは、例えば、アプリケーションの測位の要求頻度が低いこと、アプリケーションが外部装置に要求する情報量が少ないこと、アプリケーションが端末装置10のCPUに要求する処理量が少ないことなどである。
また、例えば、位置情報の鮮度を担保することを目的とする場合、起動要求頻度情報が表す位置情報取得部160に対する位置情報ライブラリからの起動要求の出力頻度が高いこと、位置情報取得部160への起動要求を位置情報ライブラリが出力可能にするための規則が多いこと、およびこれらの組み合わせなどをマスタ選択条件とする。
これら異なる目的に応じて定められるマスタ選択条件は、それぞれに優先順位を付し、互いに組み合わされてもよい。
[マスタとスレーブとの切替手順]
次に、処理部12によるマスタとスレーブとの切替手順について説明する。以下では、マスタとスレーブの切替処理の前におけるマスタを「現マスタ」と称する。また、マスタとスレーブの切替処理の後におけるマスタを「次期マスタ」と称する。
マスタとスレーブとの切替処理において、先ず、現マスタは、第1の切替条件、第2の切替条件、または第3の切替条件が満たされたか否かを判定する。具体的には、例えば、現マスタは、自位置情報ライブラリまたは自位置情報ライブラリが付属するアプリケーションに対するアンインストール、実行の停止、実行に必要な情報の削除、位置情報の利用の不承諾などの操作を端末装置10が受け付けた場合に、第1の切替条件が満たされたと判定する。
また、例えば、現マスタは、端末装置10に新たな位置情報ライブラリがインストールされた場合やマスタ選択条件の変更が行われた場合などに、記憶部18に記憶されているライブラリ管理情報を参照し、自位置情報ライブラリに比してマスタ選択条件を好適に満たすスレーブが存在するか否かを判定する。自位置情報ライブラリに比してマスタ選択条件を好適に満たすスレーブが存在する場合、現マスタは、第2の切替条件が満たされたと判定する。また、例えば、現マスタは、端末装置10が位置情報サーバ30からスレーブの位置情報ライブラリのいずれかをマスタとして指定する通知を受信した場合、第3の切替条件が満たされたと判定する。
第1の切替条件、第2の切替条件、または第3の切替条件が満たされた場合、現マスタは、記憶部18に記憶されているライブラリ属性情報とマスタ選択条件とを参照し、各位置情報ライブラリの優先順位を決定する。次に、現マスタは、決定した優先順位を示す優先順位情報を位置情報サーバ30に通信部14を介して送信する。つまり、現マスタは、位置情報サーバ30に次期マスタを通知する。次に、現マスタは、次期マスタの位置情報ライブラリに、当該位置情報ライブラリが次期マスタとして選択されたことを通知する。そして、次期マスタは、端末装置10に含まれる各スレーブに、自位置情報ライブラリがマスタであることを通知する。
これにより、通知を受けた位置情報ライブラリは、自位置情報ライブラリがマスタであるかスレーブであるかを判定するとともに次期マスタを識別する。なお、次期マスタは、各スレーブに対してマスタの変更があった旨を通知してもよい。この場合、通知を受けた各スレーブは、優先順位情報を参照して、自位置情報ライブラリがマスタであるかスレーブであるかを判定するとともに、次期マスタを識別する。これにより、マスタが機能しなくなった場合にも、端末装置10は、新たなマスタを、スレーブの中から選択することができる。そして、端末装置10は、位置情報を継続して取得することができる。
なお、スレーブが上述した第1〜第3の切替条件が満たされたか否かを判定してもよい。この場合、各スレーブは、例えば、記憶部18に記憶されている優先順位情報を定期的に参照する。そして、例えば、自位置情報ライブラリの優先順位が「2」位の場合、当該位置情報ライブラリは第1の切替条件が満たされたか否かを判定する。このように、特定のスレーブ(監視スレーブ)が切替条件が満たされたか否かの判定を行ってもよい。また、この場合、第1の条件が満たされたか否かの判定を、上述の方法とは別の方法で行ってもよい。具体的には、例えば、監視スレーブが現マスタに応答を要求する。この応答要求は、マスタが機能しているか否かを確認する目的で行われる。つまり、監視スレーブは、マスタから応答があれば、マスタは機能しており、第1の条件は満たされていないと判定する。これに対し、監視スレーブは、マスタから応答がなければマスタは機能しておらず、第1の条件が満たされていると判定する。そして、マスタとスレーブとの切替処理において現マスタが行う処理を、監視スレーブが実行する。これにより端末装置10は、プログラムエラーなど、何らかの理由によりマスタがマスタの変更を通知できずに機能を停止した場合であっても、新たなマスタを、スレーブの中から選択することができる。
図4に端末装置10の他の構成例を示す。端末装置10は、図2に示した構成に限らず、図4に示すように構成されていてもよい。図4の端末装置10は、複数のアプリケーション処理部120A、120B、120Cに対して1つの位置情報取得制御部122を有している。位置情報取得制御部122は、複数のアプリケーションに対応した1つの位置情報ライブラリとして実装される。
図5に端末装置10のさらに他の構成例を示す。この端末装置10において、位置情報取得部160は、上述したGPS測位部16に加えて、加速度センサ161を含んでいる。加速度センサ161は、自装置である端末装置10に加わる加速度の変化に応じて物理量が変化する。この加速度センサ161は、半導体静電容量センサであってもよい。
なお、端末装置10は、自装置の挙動を検出するため、重力センサ、ジャイロセンサ、または地磁気センサを含んでいてもよい。本実施形態においては、加速度センサ161のみを備えることを説明するが、これらの重力センサ、ジャイロセンサ、または地磁気センサは、加速度センサ161とともに、または、加速度センサ161に代えて備えていてもよい。
加速度センサ161により検出された加速度は、端末装置10の挙動に相当する。位置情報取得部160は、加速度センサ161により検出された挙動に基づいて自装置の移動を検出する。位置情報取得部160は、自装置の移動を検出したことに応じて移動量を更新する。この移動量は、実際の端末装置10の移動量とは異なり、端末装置10の挙動から推定される移動量である。この移動量は位置情報取得部160から処理部12に出力される。これにより、処理部12は、移動量に応じて変化する自装置の位置情報を記憶部18に蓄積することができる。
なお、位置情報取得部160は、加速度センサ161における物理量の変化に基づいて自装置が移動したことを検知してもよい。位置情報取得部160は、自装置が移動したことを検知したことに応じて、位置情報取得制御部122により測位タイミングを判定させることができる。例えば、位置情報取得制御部122は、自装置が移動状態である場合に、測位タイミングであることを判定することができる。また、位置情報取得制御部122は、単位時間当たりの移動距離または所定位置からの移動距離が所定距離(例えば100メートル)を超えている場合には、測位タイミングであることを判定することができる。
さらに位置情報取得制御部122は、通信部14が通信可能な通信エリアの識別子に基づいて測位タイミングを判定してもよい。この通信エリアの識別子としては、基地局のセルIDまたはWi−FiネットワークにおけるアクセスポイントIDが挙げられる。位置情報取得制御部122は、通信部14により検出された通信エリアの識別子が変更したことを判定したタイミングを、測位タイミングであると判定できる。
次に、端末装置10の動作を説明する。
図6は、端末装置10において、マスタによって位置情報を取得させ、取得された位置情報を位置情報サーバ30に送信する処理手順を示すフローチャートである。
先ずステップS100において、マスタは、測位タイミングとなったか否かを判定する。測位タイミングは、自装置の位置情報を取得するタイミングである。測位タイミングは、予め自装置内に設定された時間間隔である。なお、測位タイミングは、位置情報サーバ30により指定された時間間隔であってもよい。
次のステップS102において、マスタは、GPS測位部16に起動要求を出力する。これによりGPS測位部16は、GPS信号を受信して三角測量演算を行って自装置の位置を特定する。GPS測位部16は、特定した位置を位置情報として取得する。マスタには、GPS測位部16により取得された位置情報が供給される。マスタは、供給された位置情報を測位時刻と共に記憶部18に蓄積する。
次のステップS104において、マスタは、ステップS102にて位置情報を取得したことをスレーブに通知する。
次のステップS106において、マスタは、スレーブから位置情報の取得要求を受信したか否かを判定する。位置情報の取得要求を受信した場合(ステップS106:YES)、マスタは、位置情報の取得要求を送信したスレーブに、ステップS102にて蓄積した位置情報を出力する(ステップS108)。マスタは、位置情報の取得要求を出力した全てのスレーブに位置情報を出力する。なお、ステップS104の通知後、スレーブから位置情報の取得要求がなくなって所定時間が経過した場合には、タイムアウトしてステップS110に処理を進めてもよい。
ステップS110において、マスタは、位置情報サーバ30への位置情報の送信タイミングであるか否かを判定する。位置情報の送信タイミングは、前回の送信タイミングから所定時間を経過した時である。所定時間は、予め自装置内で決定された時間である。なお、所定時間は、位置情報サーバ30により要求された時間間隔であってもよい。
位置情報の送信タイミングとなった場合(ステップS110:YES)、マスタは、位置情報サーバ30に未送信の位置情報を記憶部18から読み出して、位置情報サーバ30に送信させる(ステップS112)。送信タイミングではない場合(ステップS110:NO)、マスタは、処理をステップS100に戻す。
図7は、端末装置10において、マスタとスレーブとの切替処理の流れの一例を示すシーケンスチャートである。
図7では、一例として、端末装置10が3つの位置情報ライブラリ「アプリA」、「アプリB」、「アプリC」を含む場合を示している。また、図7に示される例において、「アプリA」が現マスタであり、「アプリB」が次期マスタであり、「アプリC」がスレーブである。
先ず図7のステップS200において、「アプリA」は、マスタとして機能している。
次のステップS202において、「アプリA」は、第1の切替条件、第2の切替条件、または第3の切替条件が満たされたか否かを判定する。第1〜第3の切替条件のうちのいずれの切替条件も満たされていない場合(ステップS202;NO)、「アプリA」は、マスタとして機能し続ける(ステップS200)。また、第1〜第3の切替条件のうち、少なくともいずれかの切替条件が満たされた場合(ステップS202;YES)、「アプリA」は、記憶部18に記憶されているライブラリ属性情報とマスタ選択条件とを参照し、次期マスタを決定する(ステップS204)。
次のステップS206において、「アプリA」は、「アプリB」に「アプリB」が次期マスタであることを通知する。
次のステップS208において、「アプリB」は、マスタとして機能を始める。
次のステップS210において、「アプリB」は、自位置情報ライブラリがマスタであることをスレーブの「アプリA」および「アプリC」に通知する。
なお、「アプリA」は、「アプリB」がマスタの権限を有したことを認識しているため、「アプリB」は、「アプリA」に対するステップS210の処理を省略してもよい。
次のステップS212において、「アプリA」および「アプリC」は、「アプリB」がマスタであることを識別し、「アプリB」のスレーブとして機能し始める。
なお、上述した実施形態において、ライブラリ管理情報は、位置情報サーバ30により管理されているものとして説明したが、これには限られない。ライブラリ管理情報の全てまたはその一部は、端末装置10などの位置情報サーバ30以外の装置により管理されてもよい。
また、上述した実施形態において、マスタ選択情報は、端末装置10の記憶部18に記憶されているものとして説明したが、これには限られない。マスタ選択情報は、例えば、位置情報サーバ30などの端末装置10以外の装置に記憶されていてもよい。そして、位置情報サーバ30は、端末装置10にマスタ選択条件を送信し、端末装置10は、位置情報サーバ30から受信したマスタ選択条件に基づいてマスタを決定してもよい。
また、上述した実施形態において、マスタの決定処理は、端末装置10が行う者として説明したが、これには限られない。例えば、位置情報サーバ30は、自装置または自装置以外の装置に記憶されているマスタ選択条件およびライブラリ属性情報を参照して、優先順位情報を生成する。次に、位置情報サーバ30は、生成した優先順位情報を端末装置10に送信する。そして、端末装置10に含まれる各位置情報ライブラリは、位置情報サーバ30から受信した優先順位情報に基づいて、それぞれマスタまたはスレーブとして機能する。
以上、本発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、本発明の要旨を逸脱しない範囲の設計変更等も含まれる。
本発明は、例えば、端末装置、位置取得方法、および位置情報取得制御用プログラムなどとして実施することができる。
また、上述した端末装置10の機能を実現するためのコンピュータプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行するようにしてもよい。なお、ここでいう「コンピュータシステム」とは、OSや周辺機器等のハードウェアを含むものであってもよい。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、フラッシュメモリ等の書き込み可能な不揮発性メモリ、DVD(Digital Versatile Disk)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。
さらに「コンピュータ読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムが送信された場合のサーバやクライアントとなるコンピュータシステム内部の揮発性メモリ(例えばDRAM(Dynamic Random Access Memory))のように、一定時間プログラムを保持しているものも含むものとする。
また、上記プログラムは、このプログラムを記憶装置等に格納したコンピュータシステムから、伝送媒体を介して、あるいは、伝送媒体中の伝送波により他のコンピュータシステムに伝送されてもよい。ここで、プログラムを伝送する「伝送媒体」は、インターネット等のネットワーク(通信網)や電話回線等の通信回線(通信線)のように情報を伝送する機能を有する媒体のことをいう。
また、上記プログラムは、前述した機能の一部を実現するためのものであっても良い。
さらに、前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるもの、いわゆる差分ファイル(差分プログラム)であっても良い。