アプリカンブログ

HTML5でiOS/Androidアプリが開発できるプラットフォーム、アプリカンのブログです。

iBeacon/ビーコンとは何か?

iOS7で発表されて以来注目を集めているのがiBeacon(ビーコン。以下iBeacon)です。O2Oで使える、BLE(Bluetooth Low Energy)を使うといった要素についてはよく言われていますが、実際のところどういった仕組みなのでしょうか。

こんなそんなiBeaconについて解説します。

そもそもビーコン(Beacon)とは?

Beaconというのは日本語で言うと灯台やのろしを意味します。つまりあるポイントにあって、そこから目印になる情報(灯台であれば光、のろしであれば煙)を発信し続ける存在です。その情報そのものには大きな意味はなく、それを受け取った側で判別し利用します。

f:id:moongift:20150312125603p:plain

iBeaconの構成要素

iBeaconは2つの要素で構成されます。一つがビーコンデバイス、もう一つがスマートフォン/タブレットです。ビーコンデバイスはBluetoothで発信を続けています。それをスマートフォンやタブレットで受け取ることで近くにビーコンデバイスがあるというのを検知し、通知を出す仕組みになります。

f:id:moongift:20150312125619p:plain

肝はBLE(Bluetooth Low Energy)

BLE(Bluetooth Low Energy)というのは低消費電力型のBluetoothになります。ビーコンデバイスは常時情報を発信しますのでバッテリーを消費します。しかしBLEによってボタン型の小さな電池であっても1年くらいは保つようになっています。

f:id:moongift:20140216185912j:plain

上の画像はEstimote Beacons

そしてiBeacon自体はビーコンデバイスとスマートフォンで相互通信することはありません。ビーコンデバイスはただ発信を続けるだけで、それを受け取って処理を行うのはスマートフォン側になります。そのためビーコンデバイスの仕組みがシンプルになり、消費電力を抑えることができるようになっています。

スマートフォン側の必須要件は?

処理を行う側のスマートフォン側では、まずBluetoothがオンになっていなければiBeaconは検知できません。BLEを使っているとは言え、多少なりとも消費電力が発生してしまうBluetoothは全く使っていないユーザはオフにしている可能性があります。オフになっているとiBeaconは使えませんのでご注意ください。

さらにBluetoothの中でもBLE(Bluetooth Low Energy)に対応している必要があります。iPhoneで言えばiPhone 4s以降が対応機種になります。Androidについては機種によって異なりますが、BLE APIはAndroid 4.3以降が対応していますので、少なくともAndroid 4.3以降の端末が対象になります。

また、Bluetooth機器は世の中に無数あり、iBeaconのような使い方ではなくマウスやキーボード、カメラと接続したりするのにも使われます。その際には機器を特定するUUIDが必要になります。iBeaconにおいても同様で、常にどんなビーコンデバイスでも検知する訳ではありません。どのUUIDを検知するか指定する必要があります。

つまりスマートフォンアプリを作り、アプリの中で検知するUUIDを指定する必要があります。

ビーコンデバイスの発信する情報

ビーコンデバイスが発信する情報はシンプルで、

  • UUID
  • major
  • minor

の3つになります。UUIDは法人や団体などの組織単位で割り当てるコードになります。majorはグルーピングの一つで、モールや会場単位で割り当てるのを想定しています。minorはmajorの下位のグルーピングで、個々の店舗や会場内のポイントごとに設定するイメージになります。

f:id:moongift:20150312125722p:plain

スマートフォンなどが受信するビーコンの情報において、major/minorを含めるかどうかは任意になります。また、スマートフォン側では送信されている信号の強度によって、ビーコンデバイスとの距離を測定できるようになっています。

位置情報との違いは?

GPSなどを使った位置情報測定とiBeaconは同じようにスマートフォンの場所を検知する技術になります。iPhoneアプリにおいてもどちらも「位置情報を利用しますが宜しいですか?」という確認ダイアログが出ます。

しかしGPSは地球上における一点のポイントを特定するのに対して、iBeaconの場合はビーコンデバイスからの距離を特定します。距離なので一点ではなく、円周ということです。また、一つの場所を特定するのではなく、ビーコンデバイスからの相対距離になります。

GPSは衛星からの情報を使って三角測量で場所を特定します。そのため屋内において位置情報の測定や誤差が大きいという問題があります。対してiBeaconの場合、屋内でも利用できるという強みがあります。通知や処理を行う距離をごく短くすれば、博物館などで展示物ごとに案内を出すこともできるでしょう。また、iBeaconの最大距離は50mと言われており、歩いて一分程度の距離にいる人に対してクーポンを提示したり、何らかの情報発信ができるようになります。このような仕組みをGPSで実現しようとした場合、位置情報の定常的な監視が必要になります。これはバッテリー消費が大きくなります。

iBeaconはネットワーク不要

iBeaconは通知を行うまでの処理においてサーバと通信が発生しません。ビーコンデバイス自体も単にBLEの情報を発信するだけでサーバと通信する訳ではありません。そのため通知する内容などは予めアプリ側に仕込んでおく必要があります。

ただしiOS7.1以降ではビーコンデバイスを検知した後、10秒程度処理ができるようになっています。その間においてサーバに情報を送ったり、逆に受け取ると言ったことも可能です(ネットワーク状態の保証はないのでお勧めしませんが)。


iBeaconやるならアプリカン!

iBeaconをアプリに実装する上では意外と面倒な処理が多いです。強度によって処理を分ける必要もあります。そこで私たちの開発しているアプリカンの利用をお勧めします。アプリカンではXMLファイルに設定を書くだけでiOS/Android両方に対応したiBeaconが簡単に使えるようになります。

面倒な処理を考えることなくiBeaconの良さだけをさくっと使えるアプリカン、どうぞお試しください!

アプリカン | アプリ開発支援プラットフォーム