iPhoneの接近を検知できるデバイス、iBeaconについてわかったことまとめ

つみきでアプリエンジニアをしている野田といいます。
今回はiBeaconについて簡単に紹介してみたいと思います。

iBeaconとは

BLE(Bluetooth Low Energy)を使い、ビーコンと呼ばれる発信器の信号から、ビーコンに近づいたり離れたりすることをアプリに伝えることができるというものです。

よくわかる解説動画

※効果音はスキップモア様から利用させてもらっています。

iBeaconでできること

それではiBeaconでどのようなことができるか説明したいと思います。まずiBeaconはそれぞれを識別するために以下の情報を設定することができます。

ビーコン識別情報

  • proximity UUID (128-bit UUID) アプリ、サービス単位
  • major (uint16) 建物、店舗
  • minor (uint16) フロア、商品棚

UUIDは設定必須、major,minorは任意で設定できます。 これらの情報を受信側で識別し該当の広告を出したり通知を送ることができると思います。

それでは次にiBeaconではどのようなことができるのか説明していきたいと思います。iBeaconはビーコン領域(リージョン)の入出の監視、距離測定(レンジング)を行うことができます。以下にそれぞれについて説明します。

領域(リージョン)入出監視

ビーコン領域への出入りを監視することができます。ただし、ビーコン領域に入ったことは信号が来た時点で受け取ることができますが、ビーコン領域から出たことは実際に領域から出た後ある程度(20〜50秒程度)の遅延があります。領域境界上で入出を繰り返し取得しないような配慮だと思われますが、実装時には注意が必要です。また、受信側でCLBeaconRegionの初期化時にUUID,major,minorを設定することで監視するビーコンを選択することができます。

距離測定(レンジング)

リージョン監視が有効になっているものに対して1秒毎に下記のレンジングに関する情報を受け取ることができます。

  • proximity(ビーコンとの相対距離をCLProximityという値で表したもの)
    • CLProximity
    • CLProximityImmediate (近傍:1m未満)
    • CLProximityNear (近い:約1m)
    • CLProximityFar (遠い:1m以上)
    • CLProximityUnknown (計測不能)
  • accuracy (ビーコンとの距離をmで表したもの。ただし推定なのであまり当てにはなりません)
  • rssi (ビーコンの信号(RSSI)強度)

距離測定の情報は基本的にざっくり近い、遠いというような情報になります。いちお、accuracyで推定距離を取得することができますが、これはあくまで推定なのであまり当てにしないほうがいいと思います。実際に出力してみましたが、設置場所などでけっこうな誤差がありました。

ただし、この領域監視、距離測定はいつでも行うことができるということではなく、アプリの状態によってできることに制限が生まれてきます。次にそれぞれの状態でできる事について説明します。

アプリの状態による取得情報の変化

ビーコンから受け取る事ができる情報はアプリの起動状態によって変化します。以下にそれぞれの状態の時に受け取れるものを簡単にまとめます。

  • フォアグラウンド
    領域監視、距離測定を受取ることができます。
  • バックグラウンド
    領域監視のみ、距離情報は受け取ることができない。
  • アプリ終了時
    領域監視によりアプリを起動することができる(iOS7.1以上のみ)

このように、アプリが受け取ることができる情報は主にフォアグラウンドのみで全て有効になるためそれを想定して実装することになると思います。そのためバックグラウンド、アプリ終了時は領域の入出を監視してユーザーに通知を出し、アプリをフォアグラウンド状態にしてもらうようなフローになるのではないでしょうか。

これらの情報をうまく使って開発者側はアプリに実装していくことになります。以下に実装の際に参考にしたサイトを載せるので参考にしてアプリを実際に実装してみてください。また、ビーコン発信器が無い方でもiPhone,Macをビーコン発信器として使うことができるのでひと通り試してみることはできます。

[iOS 7] 新たな領域観測サービス iBeacon を使ってみる

[iOS 7][iBeacon] Mac を Beacon 端末にする

実装する際の注意点として上記のサイトでも書かれていますが、領域観測時に既に観測領域内にいると領域に入っているという通知が呼び出されないということがあります。この問題については現在ではその対応方法についても記載されているようなのでそちらも読み進めて確認してもらえればと思います。

ビーコン端末

iBeaconを使ったサービスとして開発する際、ビーコンとなる端末が必要になってくると思います(iphone,macを使ってもいいですが、、)。そこでビーコン発信器として使えるものをちょっとだけですがまとめてみました。

Estimote Beacons

http://estimote.com/
おそらく現状一番有名なビーコン。(ゴツゴツしたブロックのあれです)
SDKもあり、実装も楽に行うことができる。
ただし、現状技適を通ってないのでサービスとして日本では使うことができない。

BM1

http://www.aplix.co.jp/?page_id=8620
アプリックス社が開発しているビーコン端末。
国内の会社なのでサポート周りも充実していると思われる。
Android用のSDKも用意されている模様。
技適も通っている。

Androidで使えるのか

サービスとして使いたいという方はやはり、iOSだけでなくAndroidでも使えるかどうかというのは非常に気になるところだと思います。調査したところAndroidはBLEをandroid4.3以降で使えるようになっています。よって同様のことがこのバージョン以降で実現できるようになります。ただし、android4.3は国内では対応端末が少ないため、実際にはandroid4.4を待って実装ということになりそうです。

まとめ

iBeaconについて簡単にまとめてみました。ユーザーが接近してきたという情報がわかるので、店内広告や案内、ユーザーの経路などを取得するために使えるような技術ではないかなと思います。また、複数台組み合せてうまく使えば室内でのユーザーの位置を測定するなんてこともできそうな気がしました。

スマホアプリ制作、Web制作、UIコンサルなどのご依頼はこちら

お問い合わせ