iBeaconのビーコン設置とチート対応の一例

もう、よくある例題なので、載せときます。

/post/2013-12-21-ibeacon-ex1/20131220_fig1.png
/post/2013-12-21-ibeacon-ex1/20131220_fig3.png
/post/2013-12-21-ibeacon-ex1/20131220_fig2.png

チート防止でUUIDまでいじるのは、Androidで無法される場合は意味ないんだけど、UUID固定だとiOSで拾われるかもしれないから、UUIDも変えちゃえ、って程度の話。 実際にはCBでペリフェラルに接続かけて、キーをゲット、とかできるのでしょうけど。そこまでやらなくても、運営でカバーしたほうが、楽だと思うし。人がどっと来る場面では、接続ミスとか、いやなトラブルの原因になるし。

iBeaconぶっちゃけ雑感 - これって不動産よね

iBeaconの、ブログ記事を書いたり、講演をしたり、勉強会でプレゼンしたり、ハッカソンが開催されたりと、ひと通り、iBeaconを伝えるべきところには伝え終わったかな、と思うので、ここらでぶっちゃけiBeaconってどうよ?、と乱文を書いてみようかなと思います。

Twitterに散々書き散らしていますが、Twitterではまとめとしてイマイチですので。

ノンアルコールだけど梅酒でお酒を飲んだ気分になって。

/post/2013-12-19-ibeacon-put-bluntly/IMG_0791.jpg

iBeaconって、マイクロな不動産なのよ

iBeaconとかいってるけど、せいぜい30mの範囲をマーキングするわけでしょ。犬がテリトリーを主張するのに、おしっこするのと、やってることは同じ。 そして、野生の世界ではテリトリーは命をかけて守ってるから、それくらい価値があるってことよね。iBeaconを設置できたら、つまりテリトリーをゲット、ってことじゃない。

これって、意味付けされたマイクロな不動産が生まれた、ってことだよね。 だって、セブン-イレブンのレジの前10mに並んだ人に、狙い撃ちで広告をうてる権利、っていくらの値段がつくと思う? iBeaconを設置した人は、自分の商売のためだけに設置するのだろうし、そういうことだと思うけど、 でもUUIDはスニフしたらわかっちゃうし、毎日変更するとか、無意味なイタチごっこしたくないよね。

GPSだと、こういう売り買いはできないよね。 だって、地球上の位置を表すデータでしかないから、地図で建物がどこか、位の意味しか取れないし、屋内じゃ取れないから使えないし。 それがiBeaconだと、設置位置とUUIDの管理で、“レジの前"どころか、“パン屋のレジの前"とか、そんな意味付けされた場所まで紐付けられちゃう。 そして、その位置情報を利用する権利を、売り買いするわけ。むちゃくちゃいいじゃん。

だから、iBeaconのマイクロ不動産市場を作って、不動産鑑定士的な資格認定制度で取引知識の人材確保して、売り買いの場を作って、不法占拠とか、 それに違反する場合はBANしちゃえる、社会の仕組みがでてくるよね。

セカンドライフの土地売買とかあったけど、こっちはすでにリアル世界でリアルに毎日人とお金が動いている場所に意味付けるマイクロな不動産だから、 むちゃくちゃいい値段つきそうじゃない?

位置に紐付けで、あぷりとかパスにトリガーを送る、これだけの仕組みだけど、つまり意味があるからトリガが送られるってことだよね。 しかも、そのトリガーを受け取る権利は、UUIDを知らないと得られない。トリガーを受け取る権利、権利という概念で扱える、これ自体が、ほんとに、ものよね。

なんか、グルーポン的な人たちが、ひゃっはーしそうな話ね。

とか書いてみたけど、当面のiBeaconの使われ方って、私有地、よね。自分のリアル土地に、リアルビーコンを配置して、 閉じた環境で、利用者の動線やら購買記録をゲットして、テナントに月額んー万円で分析データあるんだけどー、みたいな。 それだけでおいしいから、別に第3者にビーコン情報出す必要もないか。

Apple、最強

iBeaconの仕組み自体は、独自に作れますが、ビーコンの電波を、バックグラウンドでiOSが検出してアプリ通知してくれる、これが一般開発者では手が出せないAppleにしかできないこと、だと思います。

ロック画面表示のあのバックグラウンドモード

notify on displayのあの、ロック画面表示タイミングでのビーコンチェックのモード、あれ、やばいよね。

ロック画面の解除で横スワイプの特許があったけど、あれと同じくらい、ヤバイ。だって、ユーザが、なにか欲しいタイミングで、そこでビーコンチェックを入れるのって、むちゃくちゃ自然だし。

常時BGモニタしなくても、自然にチェックできるし。あれは簡単すぎて、でも有効で便利すぎて、ハードウェアの電池減りにも効き目がありすぎて、特許になってたら、やばすぎる。

iAD

iADがiBeacon対応して、お店に応じたクーポンとかリアル場面で有効な広告を出す程度のこと、やってくるだろうし、そのときにどうなるか、どうするかくらいは計画しとかないとね。

フォーマットにUUIDがあるって、つまりそういう意味よね。

スマフォの広告

訓練されたスマフォユーザは画面上部と下部の広告領域を意識外に飛ばせるが、もしもiBeacon連動で、リアルにビーコン領域のその場で使える"オトクすぎるクーポン”、が10回に1回くらいでも配信されたら、逆に広告を見ざるをえない習慣を刷り込める、って程度のこと、常識よね?

このクーポンで目の前にあるお店のなんとかセットが半額、って感じの。それが広告自体に目線を引きつける、撒き餌になるという。

マクドナルドとか、いい道具よ。椅子に加速度センサいれとけば、客入りキャパがわかるから、時間帯予測とあわせて、ちょっとお客を入れておきたいな、って思ったら、そういうクーポンにトリガひっかけたらいいんだから。来店の習慣を刷り込む、ために。iOSのSDKでユーザのIDヒモ付で履歴や好みに合わせて、狙える客を狙えそうだし

ハードウェアってゴミ

BLEの世界は、Appcessory、アプリケーションとアクセサリが不分割な様を表す造語まであるくらい、の世界だけど、iBeaconもビーコン自体がAppcessoryになっている。 ハードウェア単体を販売されても、それを利用するアプリからすぐ使えるSDKに、クラウド側の記録サービス位ないと不便だろうと思う。 でも、クラウド側の保存があっても、動線のデータの保存を他社に任せる、なんてありえないから、クラウドのサービスじゃなくて、サーバのSDK自体を出す形か。

ハードだけで差別化といっても、単純すぎるから、価格競争になるだけろうな。っていうか、めんどくさいから、部品供給元として2~3社残って価格競争してればいいだけだよな。

OSを握られた世界

そもそもiBeacon自体、Appleが自分の利用場面に合わせて適当にいじってくるだろうし、ハードウェアとの統合で、公開もされていない仕様がいつ変更されるかも、わからない。 iOSの更新自体OTAでいつでも更新されるいまどき、ハードウェアとOSの両方を握られた世界で、3rdとしてどうするんだろう。どうもできない。そりゃそうだ。

iBeacon不動産市場

なんかもう、ビーコン無料にしちゃって、不動産市場で、ビーコンの設置位置情報が紐付いた、UUIDやら番号割り当ての一覧を売り買いするところで、 利益出しちゃえばいいんじゃない?ビーコンを置くことで、逆にお金がもらえるくらいの。

スーパーの販促のヨーグルトのビーコンで、競合他社の広告がでるとか、けっこうユカイよね。そういうのはやめての仕組みとか、いろいろ人間の間の調整がいるところって、確実に永遠になくならない仕事になりそうじゃない。

iPhone5以降だと、なぜか、殆ど電池も食わないですし。WiFi/BTのコンボチップに通信制御のマイコンがいるから、そっち側のハードウェア自体に、仕組みを入れてるんかもですね。M7プロセッサ的な。Appleって、ハードウェアは2年前から、iOSの根幹の変化は1年前から、こそっと入れてくるよね。iBeaconにしてもBLE関係にしても。

Passbookがスマートになっちゃう?

一時注目を浴びたPassbookだけど、例えば位置に紐付けして表示されるPassbookって、通勤で毎日利用する駅に紐付けられていたら、 駅につくたび表示されて、とてもうざったい。

外部から処理ルーチン、インテリジェンスが全く入れられなくて、位置=表示、の単純なものすぎて、実用じゃないのね。

でもiBeaconだと、iBeacon->アプリ(処理)->(必要なら)passbookを表示、とかアプリで表示って、処理を間に入れられる。 Passbook自体をiBeaconにひもづけるんじゃなくて、一度アプリでうけて、必要ならアプリからPassbookを出してもいいし、 アプリ自体がPassな画面を出してもいい。

ユーザから見たら、どっちにしても同じようなものに見えるでしょう。

アプリの終焉

いろんな会社が自社の会員カードのアプリを出しているけど、いちいちアプリをインストしたかを思い出すのも、うざったい。 iOS7でフォルダの制約がなくなったから、アプリ全て1つのフォルダに放り込んでいるのよ。だって、使わないアプリばっかりで、アイコンを見るのも、うざいから。

財布にたくさんのクレジットカードがあるような、そんな面倒さ。

でもビーコンがあれば、それに対応したアプリがロック画面にでてくる、というのが作れる。

これって、ユーザが意識してアプリを起動する、の終わりじゃないか?

その店にいたら、その店のアプリを起動したいに決まっているし、レジの前にいたら、支払いしたがってるのに決まっている。それは文脈から、そうだ。 なら、その文脈に合わせたアプリがすでに出ている、というのはとても自然。

Windowsユーザでデスクトップに整理整頓しないファイルが、だばーっと置いてある非効率な人を見て、笑いものにすることもあるけど、iPhoneのアプリも整理整頓する時代、 おわっているのかも。

12月17日 大垣 iBeaconハッカソン

/post/2013-12-18-ibeaconhackathon/1489281_10202720478431900_646551468_n.jpg

iBeaconハッカソンとは

2013年12月17日に、岐阜県大垣市 ドリーム・コア2Fメッセで、パブリックな建物を使った、おそらく世界でも初のハッカソンが開催されました イベントページ: https://www.facebook.com/events/772613819421404/。ハッカソンは、“ハック"と"マラソン"を組み合わせた造語で、開発者やデザイナが集まり集中的に共同作業をするイベントを表す言葉です。

iBeaconは、Apple社がiOS7で導入した位置と近接検出技術です。このiBeaconを利用した製品開発やサービス提案には、ビーコンと呼ばれる電波を発信するハードウェアや、ビーコンの信号にあわせたユーザ体験の設計など、ソフトウェアだけで開発が完結していたアプリケーション開発とはまた異なるスキルが必要になります。大きな期待が寄せられているO2Oや決済といった単語とからめて、記事に取り上げられるiBeaconですが、実際に実物のビーコンのハードウェアを手にして、その振る舞いを体験した人は、まだ極少数です。

iBeaconがどのようなものかは、実際に手に取り、体験してみればよくわかります。そこで、iBeaconの課題や可能性、そして面白さを、参加者間で共有するアイディア・ハッカソンが企画されました。ハッカソンは、岐阜県大垣市にある情報産業の拠点、ソフトピアジャパンにあるインキュベート施設ドリームコアの建物1つをまるごと使いました。建物のあちこちに計30個のビーコンを参加者に配置してもらい、それをアイディアを実施した場面と見立て、実際に振る舞いを確かめ理解を深める体験を、共有しました。

ビーコンは、(株)アプリックスから提供を受けました 中日新聞および岐阜新聞で日本初の「iBeaconハッカソン」に関する記事が報道 http://www.aplix.co.jp/?p=7891

ハッカソンには、東京からの日帰り参加が難しい大垣という場所で、しかも年末という時期にもかかわらず、30名弱が集まりました。北は北海道、西は石川県、東はカリフォルニア、南は兵庫県と広い地域から参加者が集まりました。そのスキルや背景知識も、半導体回路設計、ハードウェア開発者、無線技術者、iOSアプリケーション開発者、ウェブ開発者、それに経営者にバリスタと、ユニークで多彩な集まりとなりました。

プログラム

ハッカソンのプログラムは、以下のとおりです。午前中にiBeaconの基礎知識などのイントロダクションを行い、お昼ごはんを食べながら自己紹介をしました。午後からは、実際にビーコンを手にして、iOS SDKの振る舞いや、電波の信号強度の変化を、遊びながら、実体験しました。その後、チームに分かれて、アイディアスケッチとディスカッションをおこないました。

  • 11:00〜12:00:イントロダクション
  • 12:00〜13:00:昼食 (お弁当を食べつつ、自己紹介)
  • 13:00〜13:30:ビーコンで遊ぶ
  • 13:30〜15:30:チームごとにアイデアだし
    • アイデアスケッチ#1(アイデアスケッチ:20分+共有:10分)
    • アイデアスケッチ#2(アイデアスケッチ:20分+共有:10分)
    • 投票とディスカッション(20分)
  • 15:30〜16:00:チーム間で共有(兼休憩)
  • 16:00〜17:30:ビーコンを実際に設置してチーム内で実験
  • 17:30〜18:30:チームごとに発表
  • 18:30〜19:30:全体でディスカッション
  • 発表

イントロダクション

イントロダクションのプレゼンテーション資料です。

アイデアスケッチ

アイディアスケッチの手順を説明するプレゼンテーション資料です。

チームのプレゼンテーション

5チームが、それぞれのアイディアと実験結果をプレゼンテーションしました。

最初のチームは、車の盗難に備えたビーコンを発表しました。 クルマが盗まれると、ビーコン信号が出ます。盗まれたクルマを特定できるUUIDなどの情報をネットに登録しておけば、だれかのiPhoneがそのビーコンを検出した時に、通知される仕組みです。 発信器を、クルマのダッシュボードや助手席に置いて、車内から車外に電波が出るかを実験をされていました。 朝起きたら駐車場にあるべき自分の車がない、クルマを盗まれた実体験をもとにしたプレゼンテーションで、迫力がありました。

iPhoneの置き忘れ防止のキーホルダー(keyfob)は、Bluetooth Low Energyが利用される、よくある商品群です。 しかし、それは自分のiPhoneとだけ接続するもので、自分のiPhoneからしか、使えないものです。 不特定多数にID情報を発信し続けるビーコンの特性と、バックグラウンド状態でビーコンを検出できるiPhoneの機能、そしてそれをソーシャルの要素と掛けあわせて、自分では探せないものが探せるようになるところに、大きな可能性があります。

2つめのチームは、決済などのサービスです。今まさに提案している案件が、実際のiBeaconに触れてみると不都合があることがわかり、もしもこれを知らずに開発をはじめていたとしたら、ぞっとすると話されていたのが、印象に残りました。

3つ目のチームは、街路にビーコンを設置しておいて、自動車のフロントウィンドウにビーコンに紐付けられた情報をAR表示する、というものです。 クルマが早く移動しすぎると、iOSがビーコンを検出する前にビーコンの到達範囲を行き過ぎるかもしれません。ドリームコア前の街路にビーコンを設置して、そこでクルマを時速20km/50kmで走らせて、振る舞いを実験されていました。ビーコンの信号モニタアプリの画面を動画撮影して、記録に残していました。

4つ目のチームは、クルマの運転中に心臓が停止した状況を想定しました。実際の車を使ったデモンストレーションでは、心臓が停止したらビーコンを送信するウェアラブル機器を、ビーコンの電池を手で出し入れして模擬しました。受信側のiPhoneに、イヤホン端子にLEDを接続して、受信信号強度でそのLEDの光り方を変化させる機能を実際に製作されていました。車自体に、ビーコンを検出したら路肩に移動する機能を入れることもありうる、と言われていました。あの短時間で、まさか実際のアプリまで作るチームが出てくるとは、予想外でした。

5つ目のチームは、新人教師が地元のおばあちゃんを訪問する場面を想定されました。表の目的は、おばあちゃんに挨拶をすることですが、裏の目的としておばあちゃんの安否確認を仕込まれている、細かい設定です。デモンストレーションでは、建物の4箇所にビーコンとおばあちゃんの似顔絵を設置して、それぞれのあばあちゃんを訪問しました。そのデモンストレーション・アプリは、訪問時の情報をネットワークを通じてウェブ側に投げていました。その滞在時間をヒートマップ表示するウェブアプリまで作られていました。今回は、実装までする時間はとてもないと思っていましたが、超速でここまで作られていて、さすがというか、驚きました。 動線検出は、従来の手段では実現ができなかった、iBeaconという新しいものを売り込む強力な謳い文句になるのでしょうが、まさに、それを実証するデモンストレーションでした。

写真

30個もビーコンが集まると、丼に入れて持ち運びたくなります。冬場なので、回路が静電気で破壊されないように、モジュール1つ1つを、静電防止ビニールで包みました。

/post/2013-12-18-ibeaconhackathon/IMG_0775.jpg

iBeaconを使う美濃市の観光アプリの、デモンストレーション場面です。iOSデバイスを持っていない方に貸し出す機器は、iPhoneでは毎月回線料金がかかるため、ハードウェアの購入金額だけですむiPod touchやiPadになります。しかしそれらにはGPSが搭載されていませんから、観光地案内に必ず欲しい地図表示に適しません。iBeaconを取り込むことで、位置が検出できるようになり、これを解決できるわけです。

Apple Notification Center Serviceの解説

Apple Notification Center Service とは

Appleは、Bluetooth LEにいち早く対応し、またその利用領域を毎年拡大しています。

2011年に世界で初めてBluetooth Low Energyに対応したiPhone4sと同時に公開されたiOS5は、CoreBluetoothフレームワークで一般アプリ開発者に、Bluetooth LE周辺機器との接続を開放しました。翌年のiOS6は、セントラル・ロールに加えて、ペリフェラル・ロールが追加されました。

iOS5とiOS6は、個別のアプリケーションとBluetooth LE機器との接続だけでしたが、iOS7からは、iOS自体がBluetooth LE機器およびBluetooth LEを利用したサービスに対応しはじめました。

iOS7から提供されたiOSが担当するBluetooth LEの機能は:

  • Apple Notification Center Service (ANCS)
  • iBeacon
  • Gameコントローラ (MFi)
  • HID over BLE(キーボードなどの入力装置)

です。今回はこのうちの、ANCSについて解説します。

Appleのドキュメントに詳細があります: https://developer.apple.com/library/ios/documentation/CoreBluetooth/Reference/AppleNotificationCenterServiceSpecification/

Apple Notification Center Serviceの目的

The Apple Notification Center Service (ANCS)の目的は、Bluetooth LEでiOSデバイスに接続するBluetoothアクセサリーに、iOSが出力する様々な通知(メールやFacebookなどの新着、電話着信など)にアクセスする簡便な方法を提供することです。

ANCSの設計原則は、Simplicity, Efficienty そして Scalabilityの3つです。LEDが光るだけの簡単なアクセサリから、液晶表示器がある強力な周辺機器まで、様々な周辺デバイスにサービスを提供します。

ANCSは、Bluetooth LEの規格にあるGATTを使います。特定の、閉じた技術は使っていません。GATTクライアントとして振る舞う周辺機器は、iOSデバイスが提供するANCSを通して、通知サービスの発見と接続そしてアクセスができます。

具体的になにができるのか

iOSの通知の取得と、その通知の詳細情報の取得ができます。いま定義されているイベントには:

  • 電話着信
  • 不在着信
  • 音声メール
  • ソーシャル
  • スケジュール
  • 電子メール
  • ニュース
  • 健康とフィットネス
  • ビジネスとファイナンス
  • 位置
  • エンターテイメント

があります。また、特定のアプリケーションを指定して、詳細情報を取り出す仕組みがあります。

最も簡単なアクセサリは、電話やメール着信でLEDが光るアクセサリでしょう。昔、携帯電話の電波信号で光るLEDアクセサリがありました。電波の周波数が様々になった現代では実現できないアクセサリになっていましたが、ANCSを使うことで、あの当時にあったアクセサリを現代でもう一度実現できます。

そして腕時計型などのウェアブル機器との連携に不可欠な機能です。単体で3G網に接続できない機器は、スマートフォンをハブとします。スマートフォンからの通知の仕組みとしてANCSは、いかなるアプリケーションにも柔軟に対応できる仕組みとなっています。

サンプルコード

詳しくはサンプルコード: https://github.com/reinforce-lab/CoreBluetooth_samples/tree/master/ANCS/ を参照してください。

このサンプルを試すには、iOS6の端末と、iOS7の端末が必要です。アプリをインストールしたら、まずiOS6の端末で、右のNCというタブを選択して、Connectボタンを押します。そしてiOS7の端末で、左のNPのタブを選択して、Advertisingボタンを押します。しばらくすれば、iOS6の端末で接続が完了するでしょう。デバッグコンソールに、通知情報などが表示されます。

iOS7でのCoreBluetoothは、ANCSをフィルタしてアプリに通知しません。このためNCはiOS6の端末でのみ、実装できます。iOS7のANCSに接続するには、まずiOS7側でアドバタイジングを開始します。このとき、なにもサービスを指定する必要はありません。iOS7の端末に接続できれば、ANCSのサービスが検索できます。

あとは、Appleのドキュメント通りです。

モジュールでANCSのクライアントを開発するには

Nordic semiconductor社のnRF51822の開発SDKに、experimentalですが、ANCSのサンプルコードがあります。nRF Goの開発ボード用で表示周りがLCDを利用するコードになっています。PCA10001で使う場合は、simple_uart.c などでメッセージ出力部分を置換するかします。 SDK5.2以降、ソフトウェアデバイスver6以降を使います。半導体はROM256kB、RAM16kBの品番では、Packet: QF AA, Revison: FA, HWID: 002A 以降のものを使います。

iBeaconの解説

このページの解説はKindle本にまとめました。

iBeacon関連企業リスト

モバイルに近接技術を利用した会社が、iBeacon関連でサービス提供をいろいろと開始しています。iBeacon関連企業のリストです。

参考サイトの調査

ドキュメント

位置情報とマッププログラミングガイド (Appleの日本語ドキュメントpdf) https://developer.apple.com/jp/devcenter/ios/library/documentation/LocationAwarenessPG.pdf

WWDC 2013, What’s New in Core Location

WWDC 2012 Staying on Track with Location Services

Passbook

http://passkit.com/ Passbook生成を提供している。

https://developer.apple.com/passbook/

ブログ

Location and Maps Programming Guide

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

Github

RadiusNetworks / android-ibeacon-service Android4.3のBLEのライブラリで、iBeaconの信号を受信するサンプルコード。

daher-alfawares / iBeacon iPadで動作するビーコンとその表示アプリみたいです。

nicktoumpelis / HiBeacons iPhoneで動作する。 ビーコン、出す方と受信する方。表で一覧表示。

スマートフォン勉強会@関西のログ

2013年11月2日、大阪梅田での スマートフォン勉強会@関西 の資料です。

スライド

手書きノート

/post/2013-10-21-ibeacon/ibeacon_01.jpg
/post/2013-10-21-ibeacon/ibeacon_02.jpg
/post/2013-10-21-ibeacon/ibeacon_03.jpg