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

【Beaconマニア - EP3】Beaconから送られるデータとは?(Major値・Minor値編)

こんにちは、秋山です。

 

今回は、Beacon端末から送信されるデータの中のMajor値とMinor値について書いていきたいと思います。

前回のEP2ではUUIDについて説明しました。軽いおさらいになりますが、UUIDとは最も重要なデータで、主にそのBeaconが自分のサービスのものか否かを判別するための値です。UUIDとMajor値、Minor値の3つを合わせて、アドバタイズメント・パケットと呼びます。

 

さて、Major値、Minor値の役割についてですが、これらはBeaconをカテゴライズするために使われるものとなっています。もっと噛み砕いた表現をすると、Beaconをより詳しく特定するための値ということです。

 

Major値、Minor値のイメージをより詳しく掴むために、今回は架空のサービスを作るイメージに沿って説明していきます。次のようなサービスをイメージしてください。

f:id:hamolo_hampstead:20160603175911p:plain

マネタイズもしづらいですし、実現性は低い内容かとは思いますが・・・。まぁあくまでもMajor値、Minor値について説明するためのサンプルということで、ご容赦下さい。

 

例えばこのサービスの中で配信したいお知らせが、

「今日は市民会館でイベントがあります」

というような全体で共通のもののみだと仮定します。その場合ですと、設置したBeaconの中で区別を行う必要はありませんので、UUIDのみの設定でサービスを運用することが可能です。ただし、仮に市内のショッピングモール等にBeaconが設置されていたとすると、そちらの電波を受信した際にもPUSHが送信されてしまうことになるので、UUIDを基準に本サービスのBeaconか否かを判定することは必須です。そもそもUUID自体は省略が不可なものとなっています。

f:id:hamolo_hampstead:20160603175937p:plain

 

ただし、せっかく沢山のBeaconを設置したのに、市内で共通のお知らせしか配信されないとなると非常にもったいない状態です。せめて

「今日は全校集会の日です」

「サッカー部が県大会で優勝しました」

というように、学校ごとに異なるお知らせをPUSH出来た方が良さそうです。その場合は当然、学校ごとにBeaconを区別する必要が出てきます。そこで使用するのがMajor値です。学校ごとに指定したMajor値を設定することで、学校単位でお知らせの内容を決めることができるようになります。UUID自体を学校ごとに設定する・・・ということも出来なくはないですが、手間と運用の負荷を考慮すると現実的ではありません。

f:id:hamolo_hampstead:20160603180003p:plain

 

また、1個1個のBeaconで異なるお知らせを配信したい、このケースでいうとクラスごとにお知らせの内容を変えたいというケースもあると思います。

「今日の日直はA君です」

「1時間目は自習になりました」

「進路調査票の提出期限は金曜日までです」

というように、より生徒に密な情報が配信できる状態です。Beaconの特性を最大限活用した状態と言えるかもしれません。この場合は、Major値とMinor値によって設定した方が良いでしょう。例えば下記のような感じですね。 

f:id:hamolo_hampstead:20160603180241p:plain

 

このように、Major値は学校、Minor値がクラスを示すという風に設定をし、各Beaconを個々に識別しておけるようにすることで、それぞれ異なる内容を配信できるようになります。

 

上記のサービスを実際に立ち上げるとして、初期段階は全て共通のお知らせのみを配信するというフェーズから運用を開始するかもしれません。ですが、立ち上げ時点でサービスの将来発展した形をある程度想定しておき、その想定を満たすように規則性を持たせてMajor値、Minor値を設定することをオススメします。例えば初期段階で、下記のようにランダムにMajor値、Minor値を割り振ったとします。 

f:id:hamolo_hampstead:20160603180259p:plain

 

「このUUIDのBeaconの電波を受信したらお知らせを配信する」ということのみであればさほど問題は起こらないかもしれません。ですが後に「各クラスごとに異なるお知らせを配信できるようにしたい。そしてその内容は学校側で設定できるようにするために、学校ごとに管理画面を用意したい」ということになった場合、ランダムにID情報を持たせておくと紐付けが非常に面倒になります。

そもそも「このBeaconはA高校の1年1組に設置されているものだ」という情報は、Beacon自身が持っているわけではありません。サービスにおけるDB上で、「Major値が11111でMinor値が101のものはA高校の1年1組のものだ」というように登録される情報です。後から管理画面を作成する場合、ランダムにID情報を割り振っていたか、規則性を持たせていたかで、作業の手間は下記のように変わってきます。

f:id:hamolo_hampstead:20160603180409p:plain

 

この図のようなことを避けるためにも、極力ID情報の設定には事前の想定に基づいた規則性を持たせておきたいところです。

また、最も避けるべきことはUUIDしか設定せずにMajor値、Minor値を省略することです。Beacon端末はBluetoothを用いて通信するものです。よってインターネット上から情報変更は行えないので、後からMajor値、Minor値を設定するとなると、Beacon端末を回収、もしくは設置場所に直接行って書き換えを行うという必要があります。Major値、Minor値は省略できるものですが、何かしらの値を設定しておくことをオススメします。

 

さて、長々とMajor値、Minor値の話を続けてきましたが、そろそろ終わりにしたいと思います。今回のEP3の要点は、

・Major値、Minor値の設定には規則性を持たせる

・Major値、Minor値を省略しない

の2点です。

 

それでは次回更新のEP4をお待ち下さい。ありがとうございました。