iBeaconを利用したアプリ開発について

iBeaconはiOS7から標準搭載されたBluetooth Low Enaergy(BLE)を使った新技術で,オンラインの情報からオフライン(実際の店舗など)にユーザを誘導するO2O(Online to Offline)施策の切り札になるのではないかと注目を集めている技術です。

従来のO2O施策ではNFCが多く利用されていましたが,iPhoneにはNFCが搭載されておらずiPhoneユーザは利用できない状況でした。
また,日本ではiPhoneのスマートフォンシェアが約7割という調査結果も出ており,特に日本でのO2Oの普及が伸び悩む原因となっています。

iBeaconはBLEに基づいた技術なので,「iBeacon」というAppleの商標はついていますが,同様のことはBLEに対応したAPIが追加されたAndroid4.3以降の端末でも可能となっています。

私はプログラマなので実際にiBeaconアプリを開発する上でのポイントなどをご紹介します。

iBeaconの基本的な仕組みはビーコン(発信機)から常時発信される以下の情報をiPhone(受信機)で受け取るという単純なものです。

  • 送信される情報
    1. UUID:128ビット文字列
    2. Major値:16ビット整数
    3. Minor値:16ビット整数

注意点としては, このUUIDはビーコン固有のUUIDではありません。ビーコン領域(リージョン)のUUIDとなります。
そのため,一つの店舗のビーコンは全て同一のUUIDに設定し,Major値・Minor値の組み合わせでビーコンを特定するような使い方になります。

上記の情報に付随してビーコンからの信号電波強度(rssi)から距離の概算を取得することができます。

  • 取得可能な距離情報
    1. 近接度(proximity):接近(Immediate),近い(Near),遠い(Far),不明(Unknown)のいずれか
    2. 精度(accuracy)

よくaccuracyを距離(m)と解説しているサイトが有りますが,そうではなく精度≒推定誤差です。
地図アプリでGPSを使用した際に表示される誤差の円のようなものです。
この技術では電波強度から距離を概出しているに過ぎないため,ビーコンとの正確な距離は取得できません。
もちろん遮蔽物の状況によっても変わります。
実際に試してみた感じですと,だいたいImmediate:10cm以内,Near:1m以内,Far:1m以上といったところでした。
ビーコンとiPhoneの距離の変化に対する距離情報の追従はワンテンポ遅い感じです。(2秒程度経って変化するぐらい)
内部的にある程度サンプルを取って平均値を返しているような挙動です。

実際のビーコン検出は以下の2つの方法を組み合わせて行います。

  • リージョン監視
    アプリで予めビーコン領域(リージョン)のUUIDを登録しておくことで,リージョンへのIn・Out時にアプリ側に通知が来ます。
    この検出はバックグラウンド動作中も可能です。
    ただし,この際に取得できる情報はリージョンのUUIDのみです。
    ビーコンごとのMajor・Minor・距離情報は取得できません。
  • レイジング
    こちらはアプリから動的にビーコンを検出しに行く感じです。
    1秒ごとに検出されたビーコンのリストを取得できます。
    もちろん,ビーコンごとのMajor・Minor・距離情報も含まれます。

レイジングは常にONにすると電力消費が大きいため,リージョン監視でリージョン内であることを検知すると,
レイジングをONにするような使い方になります。
なお,ユーザがリージョンの境界をウロウロした際に,通知が頻繁に発生することを抑えるため,
リージョンからの退出検知は大きめのバッファが取られています。
そのため,ユーザの退店等を即座に検出するのは難しいです。

あとはこれらの情報とオンラインの情報を組み合わせてサービスを提供することになります。

iOS上でiBeaconをユーザに使用してもらうには以下のハードルを超える必要があります。

  1. iBeaconを使用するアプリをインストールしてもらう
    ※標準アプリのPassbookを使う方法がありますが,こちらについては後述。
  2. iOS7以上を使ってもらう
    iOS7からの技術なので必須です。
  3. Bluetooth機能をONにしてもらう
    BLEを使用した技術なので必須です。
  4. アプリの位置情報サービス利用を許可してもらう
    iBeaconの機能はCoreLocationモジュールに含まれるため許可してもらわないと情報が取れません。
  5. アプリを起動(バックグラウンド動作を含む)しておいてもらう
    アプリが起動している場合しか通知することができません。
    バックグラウンド動作中はビーコン領域へのIn・Out(リージョン監視)のみ検出可能

ユーザに予めやってもらうことが多いため,ある程度ユーザにiBeacon(アプリ)を使う意識を持ってもらうことが必要そうです。
電池の持ちを考慮してBluetoothをOFFにしているユーザが多いと思われますので,このあたりのユーザへの動機付けがサービスの成否を分けそうです。

Passbookとの連携は若干上記と異なります。
Passに予め対応するビーコンの情報(UUID・Major・Minor)を設定しておくことで,そのビーコンと対応したPassがロック画面に表示されるようになります。
GPSより精度よくクーポンなどを提示したい場合に使えそうです。
クーポン裏面にはURLリンクを設置することが可能で,URLスキームと組み合わせることでアプリへ誘導することも可能です。(iOS7からのテキストリンク使用時のみ)
ただし,ロック画面からクーポン表示時はリンクは不活性になってしまうため,Passbookアプリから表示する必要があります。

その他にiBeaconを利用する際に知っておく必要が有ることは,セキュリティについてです。
ビーコンは自分の情報(UUID・Major・Minor)を無差別に発信(アドバタイズ)しているだけですので,セキュリティは非常に低いです。
そのためビーコンに近づくとポイントが発行されるようなシステムを構築した場合,
偽ビーコン(実際のビーコンと同一のUUID・Major・Minorを発信する)を作られてしまうと来店していないのにポイントが貯まるといったことが簡単に可能となります。
このあたりは他の情報(GPS情報など)と組み合わせてうまくやる必要がありそうです。

アメリカでは日本と違いNFCの普及度が低いため,iBeaconの普及にかなり力を入れているようです。
実際に導入された例としては以下のようなものがあります。

このシステムではスタジアムのゲートに近づくとチケットが画面に表示されたり,スタジアム内の売店に近づくとクーポンが表示されたりするようです。

こういったユーザが特定の場所に近づくことでその場所に最適な情報を手に入れることができ,
店舗側はユーザの動線やホットスポットを知ることができるようなシステムが主になっていきそうです。

単純な仕組みだからこそ他の技術と組み合わせることで様々な場所で応用できると思います。
普及していない今のうちに触ってみては如何でしょうか?

もちろんiPhoneをビーコン(発信機)にすることも可能です。

セカンドライフのSIM数の変遷と現状

当社では、2007年の初頭よりSLGuide.jpというセカンドライフ内の、おすすめスポットを口コミ情報を元に紹介するサイトを現在も運営しています。

すでに、お忘れの方も多いとは思いますが、セカンドライフといえば、2007~2008年に日本で話題となったメタバース(=仮想世界)ですね。

今回は、そんなセカンドライフの話を少々。

シム数の変遷

セカンドライフと言えば、冒頭にも書いたとおり、2007~2008年に日本で話題となったメタバースです。
しかし、残念なことに、その後、急速に廃れています。

実際、その通りなのですが、その感覚とはちょっと異なるグラフをお見せします。

次のグラフをご覧ください。
“セカンドライフのSIM数の変遷と現状” の続きを読む

ノマドワーキング制度を使ってみた

昨年ウェブインパクトでは「ノマドワーキング制度」を開始しました。
いつもは番長ブログでは技術ネタを書いていくのですが、弊社の大きな特徴でもありますので、新しく始まった「ノマドワーキング制度」について少し書いていきたいと思います。

ノマドワーキング制度はどんな内容か

弊社では「ノマドワーキングというスタイルを選択できるようにし、勤務場所・勤務時間などを自分で調整できるようにし、業務効率を上げる」という目的としてのノマドではなく手段としてのノマドを重視しています。例えば

  • どちらかというと朝のほうが効率がいいので朝に勤務時間をずらして作業したい
  • 通勤時間がもったいないので打ち合わせがない日は会社ではなく自宅で作業したい

このようなことは「会社に定時に必ず来てタイムカードを押して仕事をして」みたいなスタイルの会社ではできないと思いますが、その昔ながらのスタイルから脱却し「朝が効率いいのであれば朝にずらしてもいいじゃないか」「自宅が作業しやすいなら自宅でやってもいいじゃないか」と自由化を図った結果、導入された制度がノマドワーキング制度です。(ノマドを強制されているわけでなく、これまで同様に会社で作業をしている人ももちろんいます)

“ノマドワーキング制度を使ってみた” の続きを読む

Tarning for Windows – MacやLinuxでの安全なtarファイルの作りかた

LinuxやMacで作成したtarアーカイブをWindowsで展開したときに,本来なら深い階層にあるはずのディレクトリが一番上の階層に展開されてしまったことはないでしょうか?展開したファイルの中に”PaxHeader”という見慣れないディレクトリが作られてしまったことは?これは,tarアーカイブの各種フォーマット規格の違いと.それぞれが持つ制約が原因となって起こる現象です.今回は「”Tarning” for Windows」と題して,Windowsで安全に展開可能なtarアーカイブを作成する方法について考えてみたいと思います.

“Tarning for Windows – MacやLinuxでの安全なtarファイルの作りかた” の続きを読む

office:mac 2011 MBP Retina対応

小ネタです。

MBP Retina、いいですね。かく言う私も発売直後にポチって以降、会社でもカフェでもどこでもわざとらしくドヤリングする毎日です。さすがに最近はユーザが増えてきたのであんまり希少価値がなくなってきましたけどね〜

発売直後は対応アプリが少なくせっかくのRetina液晶なのにdpiが高いせいでむしろガタガタが目立つもどかしい状態でしたが、概ね主要なアプリも対応が進み、Firefox等対応まだ対応ができていないアプリでも、Retinalizerを使用したりInfo.plist書き換えを行えばほとんどのアプリで綺麗な表示が可能になりました。

その中で、office:macだけは上記のような方法ではRetina化できず相当無理やりな方法を取る必要がありましたが、先日思ったより早くMicrosoftから公式パッチが提供され、晴れてRetina対応になりました!

というわけで早速インストールしてExcelやらPowerPointやらを起動!わぁ綺麗さすがRetinaや〜ツールバーの宝石箱や〜、と思いきや全然変わってないやん!どゆこと?

…というわけで少し調べたところ、同じような方が結構おられるようで、どこかの知恵袋的サイトでは「日本語版officeではまだ対応していない模様です」とか断言されていましたが、そんなことはありません。

最新パッチを導入したのにRetina化されない!という方は、以下のコマンドを入力したうえで各アプリを起動し直すことでちゃーんとRetina化されますよー。

[bash]
$ sudo touch /Applications/Microsoft\ Office\ 2011/*.app
Password: <パスワード入力>
[/bash]

そんだけです。

2ch騒動の教訓

おはようございます。プロダクト開発部のhirotoshi(@wi_hiro)です。
さて、技術ネタ第1投目は、javaネタ第一弾:「IzPackを使ってみた」をお送りする予定だったのですが、先週起きたとある事件に関して書きます。
果たして、このネタが番長ブログの最初の技術ネタになってよいのかどうか非常に悩むところではあったものの、反面教師という点で肝に銘じておきたいと思い、書かせていただきます。

2011/01/06の2ch騒動

2ch騒動の詳細は「2ch 騒動 キャップ漏れ」等で検索していただくとして、本来一般のユーザーにはできないはずのスレッドの管理、さらには、板の移転までができるようになってしまいました。
これにより、以下のような事が行われ「2ch壊滅?」とまで言われるような事態に。

  • スレッドの削除
  • スレッドの乱立
  • スクリプトコードを含むスレッドタイトル
  • 勝手な板移転
  • etc

事の発端

なぜ、このような事態になったのか。ここからが、技術的な話し。
確実そうな部分だけ、記載すると

  • 削除スクリプトと思われるファイルが存在し、拡張子が「.cgi」ではなかったために、スクリプト自体がダウンロード可能となっていた。※

というのが一番の発端ようす。
※そのファイル名称(URI)が判明した理由は定かではないですが、以下の説が有力
・アルファベット総当たりで探した
・Apacheの設定で、ディレクトリ内容の表示を許可されて居た

ここから先は推測:

“2ch騒動の教訓” の続きを読む

番長ブログ始めますよ。

皆様初めまして。株式会社ウェブインパクト、プロダクト開発部のhirotoshi(@wi_hiro)と申します。
さて、弊社では本日より技術系ブログとして「番長ブログ」を始めマス。
このブログを始める理由は以下のとおり。

  • オープンソースの恩恵を受けてる俺たちはもっと世間に恩返しをしてもいいんじゃね?
  • 色々やってる事をもうちょっと外に自慢してもいいんじゃね?
  • えっと、宣伝もかねてます(笑)
  • エンジニアも募集しています(笑)

“番長ブログ始めますよ。” の続きを読む