読者です 読者をやめる 読者になる 読者になる

ANAアプリが羽田空港でiBeacon使うようになったのでビーコンの位置を特定してきた

Dev iPhone

ANAアプリがこのたびのアップデートで、羽田空港内でのiBeaconガイダンスを追加しました。

ANA

ANA

  • ANA (All Nippon Airways)
  • 旅行
  • 無料

よく知らない人のために言っておくと、羽田空港第2ビルはANA専用みたいになってるんですが、乗る飛行機の出発ゲートによって通るべき手荷物検査場が違うのです*1。なので、以前からANAアプリはジオフェンスで羽田空港の圏内に入ったら行くべき手荷物検査場を案内するLocal Notificationを出したりしていました。今回はこの案内をさらにわかりやすくするためにiBeaconを使ったサービスを開始したということらしいです。

iBeaconは仕様が決まっているので、スキャンしたり強度を調べることでどこにあるか位置を特定することができます。ちょうどこのアップデートが降ってきた直後に羽田空港に行く用事があったので、ビーコンを探してきました。

iBeacon のしくみ

実際の話の前に、iBeaconのしくみをおさらいしておきましょう。

iBeacon のビーコンは Bluetooth のアドバタイジングで以下のデータを流しています。

  • Proximity UUID (128bit UUID)
    • 組織単位で指定することが想定されている。
  • Major
  • Minor

このアドバタイズの受信圏内に入った/出たなどを監視してアプリを起動させたり、ビーコンからの距離を測ることができます。ビーコンからの距離は近い順から Immediate, Near, Far という指標で表されます。アプリを起動中であれば、メートル単位でとることもできます*2

ANA アプリの実装を見る

まず、ANA アプリがどういう実装になっているか見てみました。

f:id:iseebi:20150830230823p:plain

直近の予約があるときにレンジングの定義を行って、指定のビーコンのNearに入ったら対応するHTMLコンテンツを表示するLocal Notificationを通知する形になっているみたいでした。

iBeacon をさがす

iBeaconをiOSから受信するには、そのビーコンのProximity UUIDを知っている必要があります。そのため、この調査のためにはBLEを搭載したAndroid端末を併用する必要があります*3

今回はiBeacon & Eddystone ScannerXperia Z3 Compactに入れて、Proximity UUIDを調べたり、距離を調査したりしました。

Proximity UUIDがわかれば、iOS 側は BLExplr のBeacon Ranging機能が使えますので、Androidと併用すると良いです。(BLExplrは設定画面でProximity UUIDをセットしておく必要があります)

BLExplr

BLExplr

  • Michael Kroll
  • ユーティリティ
  • ¥360

調査結果

1時間半かけてImmediateが出るところを調べた結果、以下のように配置されているようでした。

f:id:iseebi:20150830233653p:plain

f:id:iseebi:20150831074743p:plain

設置位置

Major Minor 場所
1017 10100 地下1階モノレール出口 案内所5の中 (検査場A/B側)
1017 10200 地下1階モノレール出口 案内所6の中 (検査場C/D側)
1017 20100 2階 案内所1付近 看板の中
1017 20200 2階 吹き抜けエスカレーター降りてすぐの出発案内の看板 (地下1階京急線出口付近でも受信できる)
1017 20300 2階 案内所2/検査場D付近 看板の中

各箇所2個ずつ置かれているようで、出発案内(20200)はエスカレーターの左右にそれぞれ置かれている2台のモニターにそれぞれ、看板の中に入っているもの(20100/20300)は2本ある看板の中にそれぞれ1こずつ入っているようでした。

感覚的には、レンジングを捨ててビーコンの周囲5mから10mくらいのところでNearが出る感じになっているのではないかというところでした。

いずれも有人カウンターの中だったり、看板の中だったり、人の手が届かないところに置かれていて流石だなと思いました。


他の所でもiBeaconを実地運用されているものがあったら調べてみたいと思います。

※ 2015/08/31(Mon) 追記 : ご意見を元に一部情報を修正しました。

*1:正確にはどこから入ってもOKだけど、推奨じゃないところから入るとすごく歩かないといけなくなる

*2:ただしそれほど正確に出ない

*3:AndroidであればiBeaconも通常のAPIで見つかる。iOSの場合、Core Bluetoothでとろうとしてもフィルタされてしまう