• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
I beaconについて
 

I beaconについて

on

  • 1,854 views

 

Statistics

Views

Total Views
1,854
Views on SlideShare
1,854
Embed Views
0

Actions

Likes
6
Downloads
22
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    I beaconについて I beaconについて Presentation Transcript

    • iBeaconを触ってみた 一階武史(@shiffon_1f)
    • 目次 1.自己紹介 2.iBeaconとは 3.Beaconの識別情報 4.Beaconからの情報 5.Estimote社のBeacon 6.Beaconを動かしてみた 7.動かした感想
    • 1.自己紹介 名前:一階 武史(@shiffon_1f) URL:http://shiffon.info/blog 所属:某広告制作会社 経歴: 昔は官公庁メイン名お堅いSIでソフトウェアアーキテクト。今は 180度歩行転換して、柔らかな思考が必要な広告制作会社でテクニ カルディレクターをやっています。 技術が(下手の横)好きなエンジニアです。
    • 2.iBeaconとは すごくおおざっぱに言うと、AppleがiOS7に搭載した BluetoothLowEnergyに準拠したBeaconを利用するための技術です。 Beaconは2秒に1回程度の発信ならボタン電池で5年は軽く持つと 言われているので、一度設置したら当分放っておいても大丈夫な便 利デバイスです。 現在はEstimote社以外にも、Aplix社がiBeacon互換のチップを販売 していてます。 今購入するなら値段もサポートもAplix社の方がよいと思われま す。 購入URL:http://www.aplix.co.jp/?page_id=7593
    • 3.Beaconの識別情報 Beaconは個体識別を行うために3つのパラメータを持っています。 (1)proximityUUID いわゆる大区分。1つのアプリには20個まで登録可能。 (2)major いわゆる中区分。 大区分配下でBeaconをグループ分けする際に利用 (3)minor いわゆる小区分。 中区分配下でBeaconをグループ分けする際に利用。 ここで重要なのは、これらの値はBeacon個体毎に個別の値を設定す る必要がないということです。
    • 3.Beaconの識別情報 とある外食産業の各店舗にBeaconを配置する際の設定方法を、利用 シーンごとに書いてみます。 ・店舗を識別せずに、単純にレジにだけBeaconを配置する場合 proximityUUIDを全て同じに設定すればOK ・店舗を識別せずに、単純にレジとドリンクバーにBeaconを配置す る場合 proximityUUIDを全て同じにし、majorをレジとドリンクバーで 別々に設定すればOK ・店舗を識別して、レジとドリンクバーにBeaconを配置する場合 proximityUUIDを全て同じにし、majorの値を各店舗で別々に、 minorをレジとドリンクバーで別々に設定すればOK と、利用の仕方に応じてフレキシブルに設定出来ます。
    • 4.Beaconからの情報 Beaconを認識すると識別情報に加えて、以下3つの情報が来ます。 ※認識したBeaconの情報はFramework側で自動的に近い順に並べて くれます。 (1)proximity 端末との距離で、近接/近い/遠い/不明の4種類で定義 (2)accuracy 正確さ?使わなくていいっぽい。 (3)rssi 電波受信強度。使わなくていいっぽい。 アプリケーション側はBeaconの識別情報と主にproximityの情報 を利用して、来店回数を+1したり、お知らせを出したりします。
    • 5.Estimote社のBeacon 随分前に発注したBeaconがやっと来たので、いろいろ調べてみまし た。
    • 5.Estimote社のBeacon とはいうものの、パッケージには使い方などが一切入っておらず、 電源の入れ方すら分かりません。 なので、サクッとさくっと割りました!
    • 5.Estimote社のBeacon 電池は工場出荷時から既にセットされていてすぐ使える状態でし た。 OFFにしたり電池を交換するときは割って中身を取り出さないと駄 目なようです。 ・・・面倒くさいですね・・・。 ちなみにBeaconの情報を書き換えるツールは現在提供されていませ ん(多分)。
    • 5.Estimote社のBeacon Beaconの情報はEstimote社のHPからサンプルアプリのプロジェクト がDL出来るようになっているので、それを利用して確認します。 なお、自分のプロジェクトでBeaconを扱う場合は、Estimote社が提 供しているライブラリ(サンプルアプリのプロジェクトから取り出 して利用)を組み込むことで利用可能になり、Beaconの情報は ESTBeaconというクラスに格納されます。 と書きましたが、AppleのCoreLocationFrameworkだけで取得できる か試してみたら問題なく動作したので、Esimote社のライブラリは 特にいらない模様です。
    • 6.Beaconを動かしてみた アプリを起動すると周囲のBeaconを検知するアプリを作ってみまし た。 1.CoreLcoationFrameworkを追加する。 2.変数を定義 @property (nonatomic, strong) CLLocationManager* locationManager; @property (nonatomic, strong) NSUUID* proximityUUID; @property (nonatomic, strong) CLBeaconRegion* beaconRegion; NSString* beaconUUID = @"XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"; ※beaconUUIDは事前にEstimote社のサンプルプログラムを動かして 取得
    • 6.Beaconを動かしてみた 3.viewDidLoadで測定開始 if ([CLLocationManager isMonitoringAvailableForClass:[CLBeaconRegion class]]) { if( _locationManager == nil ) { _locationManager = [CLLocationManager new]; _locationManager.delegate = self; } _proximityUUID = [[NSUUID alloc] initWithUUIDString:beaconUUID]; _beaconRegion = [[CLBeaconRegion alloc] initWithProximityUUID:_proximityUUID identifier:@"EstimoteSampleRegion"]; [_locationManager startMonitoringForRegion:_beaconRegion]; // 最初から範囲内にいるとイベントが走らないのでここで走らせておく。 [_locationManager startRangingBeaconsInRegion:_beaconRegion]; }
    • 6.Beaconを動かしてみた ※コメントにもありますが"startMonitoringForRegion"を呼び出すとBeaconの監視を開 始しますが、この時に対象Beaconが既に近くにあると発見イベントが通知されないとい う残念な仕様になっているので、即Beaconとの距離測定を開始しています。 実際に使う際はしばらく距離測定対象が存在しなければ"stopRangingBeaconsInRegion" を呼び出す感じがいいのではないかと思います。 ※EstimoteのBeacon全てを対象にしているのでinitWithProximityUUIDにmajorやminor を指定していません。
    • 6.Beaconを動かしてみた 4.Beacon発見/ロストイベント - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region - (void)locationManager:(CLLocationManager *)manager didExitRegion:(CLRegion *)region ※Beaconが見つかると"didRangeBeacons"が、Beaconを全て見失うと"didExitRegion"が 呼び出されます。 ※"didRangeBeacons"の(NSArray *)beaconsには、Frameworkが近いBeaconから順番に セットしてくれているので、自前で距離計算をする必要はありません。
    • 6.Beaconを動かしてみた 5.Beaconの情報に応じた処理 for (CLBeacon* clBeacon in beacons) { switch(Beacon.proximity) { } switch (clBeacon.major integerValue ) { } } ※EstimoteのBeaconは3色全てmajorの値が異なるので、majorの値を元に3色を識別し ています。 ※majorの値は事前に端末に3色それぞれを近接させて取得しました。 と、意外と簡単に扱うことができます。
    • 7.動かした感想 非接触でいろいろ情報発信が出来るのでNFCより便利!みたいな話 になって盛り上がってましたが、Passbookと同じ道を歩む、がっか り規格になるんじゃないかと思ってます。 がっかりになると思った大まかな理由は以下2つです。 1.アプリに組み込まないと動かない。 ユーザにアプリを落として貰うハードルがまず高いし、当然開発費 がそれなりにかかってくるわけで、無印やユニクロみたいな既に店 舗連動のアプリを持っているところでないと採用が進まないのでは ないかと思ってます。
    • 7.動かした感想 2.認識の精度が悪い。 ひょっとしたらEstimote社の現行のチップの性能なのかもしれませ んが、これが結構問題だと思ってます。 端末にBeaconを近づける/遠ざけるのいずれの場合にも認識に時間 がかかる(10秒〜15秒)ので、まずリアルタイム処理で反応させる のは難しそう。 店の前を通ったらPush通知というイメージがありますが、店の前を 通り過ぎてからPush通知 or Push通知がでないということになりそ うな気がします。 更に動かしていないも関わらず端末とBeaconの距離が変動したり、 見失ったりするので難儀だな、と。 端末の周りにEstimoteのBeacon3色を置いて放置したら、検知順番 は変わるし、いきなり見失うしと結構大変でした。
    • 7.動かした感想 そもそもiOSのシェアは全世界だと13%切っているので、新しい規格 を採用したところで普及するわけないじゃん!という根本的な問題 を横に置いても、すごく残念でした。 ※あくまでiBeaconの話で、BLE自体はいいものだと思ってます。 AppleはiBeaconより、AirDropをもっと強化すれば良かったのでは ないかと思います。
    • Fin