それでは、以下順を追ってWalkbaseを使った位置同定の組み込みについて説明していきます。ちなみに、ここでは「ぺこりん」で実現しようとしたことのうち、部屋・フロア判定の部分のみを切り出して説明します。
それ以外の部分(GCMを使ったプッシュ通知やNFCによるタッチでの「ペコリ」交換など)は、連載次回以降で扱う予定にしていますので、そちらを参照してください。
まずはWalkbaseのサービスを利用するために、サインアップを行います。WalkbaseのWebサイトのトップページか、Developersサイトのトップページ(Webサイトトップページのメニューリンク[Developers]から移動)にある[Developer Sign Up]ボタンを押してサインアップページに移動し、必要事項を入力してサインアップしてください。
サインアップを終了すると、Walkbaseを利用するアプリの登録やライブラリのダウンロード、必要なドキュメントの参照などが可能になります。
サインアップ(すでにサインアップ済みの場合はログイン)状態になると、それぞれの開発アカウント用のサイトが用意されます。開発アカウント用サイトのトップページのメニューリンク(右ペイン上部)の[My Applications]からアプリの管理ページに移動し、[New Application]のフォームにアプリ名を入力してアプリを登録します。今回は「Pecorin」として登録しました。
アプリの登録が無事に成功すると[List of Applications]のテーブルに追加したアプリが表示されます。登録したアプリ用のAPI Keyが発行され、テーブル項目のAPI Keyに表示されているはずです。こちらのAPI Keyはライブラリを利用してAPIにアクセスする際利用するのと、後ほど行うWi-Fiアクセスポイント(以下、AP)情報のレコーディング時に利用します。
次に、ロケーションの登録を行います。今回は実験的な環境(開発合宿を行った際にお借りした宿泊先施設)に自分たちでWi-FiのAPを設置してロケーション登録を行いました。
実際には、既存の施設内に設置されたAPの情報をそのまま利用して、そのレコーディングを行うことでロケーション登録をすることも可能です。今回の環境は以下の図のようになります。
2階建ての建物のホールと会議室をそれぞれ部屋として、2階廊下をフロアに見立ててみました。2階廊下のAPが少ないですが、用意できる機材の数に限りがあったのと、吹き抜けになっているために1階のAPの電波も拾えるので、それらでカバーすることでOKとしました。
Walkbaseが公開しているドキュメントによると、APの配置はランダムな方がより位置同定が正確になるようです。
アプリで利用するロケーションはメニューリンクの[My Applications]からロケーションの管理ページに移動し、[New location list]のフォームにロケーション名を入力して登録します。
登録が成功すると、[Lists of locations]のテーブルに追加したロケーションが表示されます。レコーディング時にロケーションを特定するためのIDが発行され、テーブル項目のList IDに表示されます。こちらのIDもAP情報レコーディング時に利用します。
ロケーションが登録できたら、ロケーションにひも付いたロケーションリストを作成しておきます。[Lists of locations]テーブルのロケーション名のリンクをクリックすると表示されるロケーションリストの管理画面で部屋・フロアを登録します。
[New location]の各フォームに必要な項目を入力して登録しますが、ここでは名前だけの登録とします。WalkbaseではGPSで取得した緯度・経度情報を利用することも可能ですが、今回は利用しないため入力しません。
実験した環境は部屋・フロアが3つのみであったため、1つ1つ登録してもあまり手間ではありませんでしたが、より多くの部屋・フロアを登録する場合はCSVによるインポート機能も用意されているので、そちらを利用するとよいでしょう。
ロケーションとロケーションリストの登録までできたら、Walkbaseから提供されているレコーディングツールを利用して各部屋・フロアのAP情報のレコーディングを行います。
レコーディングツールはAndroid用のアプリとして作られていて、開発アカウント用サイトのトップページからダウンロードできるようになっています。手持ちのAndroid端末にダウンロードした.apkファイルをインストールして利用します。ちなみにライブラリ、レコーディングツールともAndroid 2.1以上対応です。
インストールしたらツールを立ち上げ、まずAPI Keyの入力とロケーションデータベースの選択を行います。API Keyはアプリ登録をした際に発行されたAPI Keyです。手入力してもよいのですが、QRコードを読み取ることで簡単に入力できるようになっています。
先ほどアプリの登録を行ったアプリ管理ページを表示して、[List of Applications]テーブルの該当するアプリのAPI Key上にマウスオーバーすると、QRコードが表示されます。それを、レコーディングツールのAPI Key入力フォームの横にあるQRコードボタンで読み取ります。
次に、ロケーションデータベースを選択します。[Foursquare][Your locations]が選択できるようになっています。ここでは説明を割愛しますが、Walkbaseではfoursquareで登録されている場所をロケーションとして利用することもできます。
今回は、先ほど登録したロケーションを利用するので[Your locations]を選択します。[Your locations]を選択すると、ロケーションリストを指定する入力フォームが表示されるので、ロケーションリストのIDを入力して指定します。こちらもQR読み取りに対応しているので、ロケーションの管理画面で自分のロケーションのID上にマウスオーバーすると表示されるQRを読み取って入力します。
ID入力後、ロケーションにひも付けて登録した部屋・フロアの一覧が表示されます。これからレコーディングを行う部屋・フロアをクリックして選択すると、特定するロケーションの広さとレコーディング中にサンプリングする回数の設定を求められるので、適宜設定します。この数値は後から変更することも可能です。
広さについては20平方メートル以下、20〜80平方メートル、80平方メートル以上から選ぶようになっているので、部屋やフロアの大きさに合わせて選択してください。
広さとサンプリングの回数が設定できたら、[Record]ボタンを押してレコーディングを開始します。立ち止まって収集するのではなく、なるべくその範囲で動き回って収集するのがコツのようです。
指定した数のサンプリングが終了すると[Record]ボタンの周囲に表示されている進行状況の数値が100%になり、レコーディングが終了します。レコーディングしたデータはWalkbaseのサーバに送られます。
同じ画面に表示されているStatusのゲージが100%の状態であれば、正確にその部屋・フロアが同定できるデータ取得ができた状態です。
ドキュメントによると、位置を正確に同定するには特定したい場所の範囲で最低10回のデータ登録(check-in)が必要なようです。サンプリング1回につき1回のデータ登録と同等のようですので、レコーディング中のサンプリング回数の設定で10回と設定しておくと1回のレコーディングで取得できることになります。
筆者らが試したところ、1回のレコーディングでのサンプリング数10としてレコーディングしても、Statusゲージが100%にならない場合があります。これはAPの数などにもよるのかもしれませんが、その場合はサンプリング数を増やすか何回かレコーディングを行うことで対応しました。
ただ、こちらも試してみたところですが、サンプリングが10回できていれば、Statusゲージが100%になっていなくても(確実性は下がるかもしれませんが)場所を特定することは可能なようです。
ロケーションにひも付いた部屋・フロア分のレコーディングが終了すると、後は作成するAndroidアプリにライブラリを使って組み込むことで位置の同定ができるようになります。環境の準備ができたところで、次はアプリへの組み込みを見ていきます。
Copyright © ITmedia, Inc. All Rights Reserved.