Hatena::ブログ(Diary)

Over&Out その後 このページをアンテナに追加 RSSフィード Twitter

2014-03-26

iBeacon+実店舗の初仕事がリリースされました(&独立のご報告)

人に会う度に「あれ、なんで日本にいるの?」「いつアメリカに戻るの?」とよく聞かれるのでまずご報告ですが、現在はフリーランスの iOS エンジニアとして日本国内で活動しております。


シリコンバレーから戻ってきたきっかけは、こちらこちら の記事に書いた通り「プライベートな事情」だったわけですが、その後しばらくしてその「事情」は落ち着き、アメリカに戻れる状況になったときに、自分としては結構迷いがありました。


理由は主に自分がエンジニアとして今後どう生存していくか的なことなのですが、本題に入る前にものすごく長くなってしまいそうなのでまたの機会に書きます。


そんなこんなで数ヶ月フラフラしつつ色々考えた結果、今年1月末に都内にちゃんとアパートを借りて引っ越し、2月から正式にフリーランスエンジニアとしての活動を開始したのでした *1


みなさまどうぞよろしくお願いいたします!!!!



・・・で、やっと本題です↓


本題:iBeacon+実店舗アプリ

今日リリースされたてほやほやの、火鍋専門店『小肥羊』で使えるメニューオーダーアプリです。



こちらの記事がわかりやすいです。


iBeaconの使い方としては実店舗での入退店管理とクーポン付与というド直球。


ちなみに僕が開発を担当したのは、このリリースされたアプリ自体ではなく、プロジェクト前段階の実証実験用アプリです。

  • 店に近づくと通知が来て地図が出て道案内してくれる
  • 入店するとメニュー等のUIが有効になる
  • 入店後しばらくするとおすすめメニューを通知
  • 退店するとありがとうございました通知&クーポン付与

みたいな機能を持つ非公開アプリをつくって、このプロジェクトの関係者一同のiPhoneに入れて実際に店に行く体験をしてみる(火鍋を食べてビールも飲む)、という実験でした。


(その頃のツイート)


その実験から得たいろいろなノウハウや反省を活かして本番アプリ開発へ、となったわけなのですが、僕はその頃はもう別のお仕事が決まっていたので本番開発には入れず、じっとスカイプを見守っていただけでした *2


きっかけ

ちなみにこの話をいただくきっかけになったのは、こんなツイートでした。



iOS+デバイス連携的なことに興味を持ち、連載とか始めたりブログに書いてたりしてたのを知っていた MTL の @i2key さんからの絶妙のトスでした。


ほんと何がやりたいとか書いとくといいことあると思いました。


メディア掲載等


他にやってること

新しいウェアラブルデバイスの開発とか、とある医療機器系のスタートアップとのお仕事とか、UIに凝ったiOS7アプリ案件とか、ありがたいことにおもしろい&勉強になるお仕事の話をいろいろといただいております。


今は書けないことばかりなのですが、書けるようになったら順次報告させていただきたいと思っております。


ちなみに僕のこれまでの実績などについては、もうだいぶ古い(2013年1月)ですがこちらのスライドに整理されています *3



まとめ

火鍋すごくおいしいので、ぜひアプリをダンロードして行ってみてください!


https://itunes.apple.com/jp/app//id839937843?mt=8


f:id:shu223:20140327195444j:image:w240


2014.3.27 追記

iBeacon / BLEといえばこの方、という わふうさん 執筆の iBeacon 解説書 for Kindle。こちらも昨日出たばかり。僕も速攻ポチりました。



*1:AppSociallyの問い合わせ対応的なことは続けていて、CEO高橋氏とはいまも良き友人です。

*2:リリースアプリのじゃんけんボーナスチャンス機能だけは担当してたりします

*3:このときはフリーでやっていこうと決めてたわけじゃなく、海外で働くにあたってリモートで日本の仕事をやる可能性も模索する意味でお仕事募集してました

2014-03-24

複数のWiFi設定を保持しIRKitにセットできるユーティリティアプリをつくりました

IRKit は基本的に家に据え置きで使うことが想定されたプロダクト設計になってますが、自分の場合はいろいろと仕事で使う場面が多く、家とコワーキングスペース、その他別の作業場所など、使う場所がコロコロ変わります。


で、IRKitは軽くて小さいのでデバイス自体のモバイル性は高いのですが、公式アプリにしろSDKにしろ、WiFi設定は基本的には一度きり、という想定になったつくりになっています。具体的には、SSID, PasswordをWiFi環境が変わるたびに手打ちしないといけない。


f:id:shu223:20140324182734j:image:w240


それが面倒なので、WiFiのSSIDとPassowrdの設定を複数保持して、IRKitの設定時に呼び出せるユーティリティアプリをつくりました。


ダウンロード

GitHubでプロジェクト一式を公開しています。git clone して pod install してください。


https://github.com/shu223/IRKitWifiUtility


使い方

1. wifi_settings.plist に ssid と password の辞書を入れておく

2. ビルド&インストール

起動するとplistに書いたWiFi設定がリスト表示され、


f:id:shu223:20140324181601j:image:w240


セルをタップするといつものセットアップ画面が立ち上がるのですが、下記のように Name (SSID) と Password があらかじめ入力された状態になります。


f:id:shu223:20140324182756j:image:w240


しくみ

WiFi設定画面のビューコントローラは IRWifiEditViewController なのですが、このクラスの keys という IRKeys 型オブジェクトに、plistファイルからとってきた SSID/Passをセットしています。


その際、IRWifiEditViewController オブジェクトはアプリ側(SDK導入側)から直接生成したり保持したりしてないので、そのプロパティをアプリ側からいじるために、IRNewPeripheralViewController の navController プロパティをヘッダに出す修正をSDKに行い(pull request 送信済み)、そのdelegateにアプリ側ビューコントローラをセットしています。


IRNewPeripheralViewController *vc = [[IRNewPeripheralViewController alloc] init];
vc.delegate = self;

[self presentViewController:vc
                   animated:YES
                 completion:^{
                     
                     vc.navController.delegate = self;
                 }];

で、UINavigationControllerDelegate の 〜 willShowViewController 〜 メソッドで、IRWifiEditViewController オブジェクトをフックし keys プロパティをいじっています。

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
    
    if ([viewController isKindOfClass:[IRWifiEditViewController class]]) {
        
        IRKeys *keys = [(IRWifiEditViewController *)viewController keys];
        if (keys) {
            
            NSAssert(selectedIndex < [self.items count], @"invalid index!");
            
            NSDictionary *item = self.items[selectedIndex];
            keys.ssid     = item[@"ssid"];
            keys.password = item[@"password"];
            
            [(IRWifiEditViewController *)viewController setKeys:keys];
        }
    }
}

注意点

設定を変えるときはIRKitデバイス側のリセットが必要です。


自分の場合はボールペン等は持っていないことが多いのですが、ライトニングケーブルの角でもリセットスイッチを押せることを発見し、上記ユーティリティの作成と相俟ってだいぶIRKitをいろんな環境で使うのが快適になりました。


f:id:shu223:20140324181657j:image:w400



IRKit
IRKit
posted with amazlet at 14.01.14
maaash.jp


2014-03-17

UISegmentedControlで複数セグメントを選択する

UISegmentedControl は複数のセグメントの中からどれか1つを選ぶための UI なので、セグメントごとにOn/Offをトグルさせる、といった使い方はできないわけですが、見た目的にそういう挙動を期待したくなることがあります。


たとえば、TableViewやCollectionViewの要素や、マップのアノテーションの、フィルタリング条件を指定してもらうためのUIとか。


そこで、WLSegmentedControlというOSSを使うと、UISegmentedControl と同じような見た目で、複数セグメント選択ができるようになります。


no title


こんな感じです。


f:id:shu223:20140323102116p:image:w300


UISegmentedControlのサブクラスとして実装されてるわけではなく、UIControlをベースに、見た目がiOS7のUISegmentedControlっぽくなるように実装されています。


使い方

ビュー生成:

NSArray *items = @[@"item1", @"item2", @"item3", @"item4"];
self.segmentedCtl = [[WLHorizontalSegmentedControl alloc] initWithItems:items];
self.segmentedCtl.allowsMultiSelection = YES;
[self.segmentedCtl addTarget:self
                      action:@selector(segmentChanged:)
            forControlEvents:UIControlEventValueChanged];
[self.view addSubview:self.segmentedCtl];

メソッド名などでやってることは一目瞭然だと思うので、説明は割愛します。


各セグメントの選択状態を指定する

WLSegmentedControl は、NSIndexSet という、複数のインデックス要素を格納するコレクションクラスを利用してつくられています。


選択状態をセットするときは、NSIndexSetオブジェクトを生成して、 setSelectedSegmentIndice: メソッドでセットします。

NSIndexSet *indexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(0, 4)];
[self.segmentedCtl setSelectedSegmentIndice:indexSet];

あまりよくないところ

  • メンテされてない(2014年3月現在、3ヶ月以上前から更新なし)
  • 見た目のカスタマイズ性に乏しい
    • フォントとか。
  • ソースがあまり奇麗ではない
  • CocoaPods非対応
  • プロジェクトに追加すべきクラスファイルだけフォルダにわける、といった配慮もされてない
  • IBで配置できるようにつくられてない

こんな感じで、OSSとしては積極的におすすめできるものではありませんが、pull requestしたり、参考にしつつ自分なりに新たにつくるなどすると良さそうです。


参考

EZ-NET: NSIndexSet の値を取得・設定する : Objective-C プログラミング


2014-03-15

IB上でカスタムフォントを選択してプレビューできるXcodeプラグイン『MoarFonts』

iOSでカスタムフォントを使う場合、いままで(自分の場合)は

  1. UILabelやUIButtonのサブクラスを作成(内部でfontプロパティをカスタムフォントで差し替える)
  2. IB 上で UILabel オブジェクトを置いて、"Custom Class" に 1 で作成したクラスを指定
  3. IB 上でフォントサイズ、色、レイアウトを決める
  4. ビルドして確認

ってなことをやってたわけですが、カスタムフォントは同じポイント数(pointSize)を指定しても全然サイズが違ったり、縦位置が全然違ったり、横に大きく広がったりということがザラで、 ビルドしてみるまでどう見えるかが未知数、という問題を抱えていました。「ちょっと大きかったなー」「もうちょい下か」「frame.size.width広げよう」みたいに調整する度にビルドするという。。


自分は比較的泥臭い作業耐性があるのでそんなもんだと思ってやってたわけですが、昨今のXcodeプラグインブームを見るにつけ、「どこかの偉い人がとっくに解決してくれてるのではないか」と思ってググってみたらやっぱりありました。


MoarFonts

http://pitaya.ch/moarfonts/



Interface Builder 上でカスタムフォントを選ぶことができ、ばっちりプレビューもされます。


使い方は、プロジェクトにスクリプトを1行追加してビルドするだけ。


導入手順

moarfontsの実行ファイルを /usr/local/bin にコピーしておきます。

$ cp moarfonts /usr/local/bin/

下記ディレクトリのアクセス権を変更しておきます。

sudo chmod a+w /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/.lilid
sudo chmod a+w /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator7.1.sdk/System/Library/.lilid/.lilic

使い方

[Build Phase] の + ボタンを押して [Run Script Build Phase] を追加して下記スクリプトを入力。

mdfind -onlyin "${SRCROOT}" "kMDItemContentTypeTree == public.font" -0 | sort -z | xargs -0 /usr/local/bin/moarfonts install

ビルドすれば上記スクリプトが実行され、あとはXcodeを再起動すればIBからカスタムフォントが選択・プレビューできるようになります。


トラブルシューティング

自分のXcodeプロジェクトで、IBのフォントのドロップダウンリストには出てくるものの、選んでも反映されない、ということがありました。


フォントをコピーするスクリプトの mdfind コマンドに渡すパスのあたりが怪しいと思い検証してみたものの、そこは正しくフォントファイルを検索できている様子。スクリプトの結果をログ出力させてみても success したと言っています。

Successfully installed xxxx (/Users/(中略)/Resorces/fonts/xxxx.otf)

いろいろ試してわかったのは、そのプロジェクトで使用していた複数のフォントファイルの、「フォント名がかぶっていた」ことが原因でした。不要な方を削除することで解決。


無料のはないの?

非常にありがたいMoarFontsですが、実は有料(10ドル)です。購入を決断する前に、無料のものも探してみました。

no title

最初に見つけたのはこちらでした。


システムフォントの定義をカスタムフォントに置き換えることで、「カスタムフォントをIB上で選択」を実現するものです。Xcodeプラグインではなくプロジェクトに追加しておく方式で、

こちらの記事で紹介した『AutoNibL10n』とできることも実現方法(loadメソッド内でmethod swizzling)も似ています。


一番肝心な「IBでのプレビュー」ができないので今回の要件としてはアウト。


no title

良さそう、と思ったのですが、もう公開されてないようです。どうやら、上記のMoarFontsと同じ作者で、README には MoarFonts を使ってくださいと書いてあります。



そんなわけで、無料で「IBでカスタムフォントのプレビューができる」ものは見つけられず、MoarFontsをお買い上げ。短縮できる時間や自分でつくる時間を考えると、全然ありかなーと思います。


2014-03-09

Objective-Cのクラスの依存関係を「D3.js」でビジュアライズするライブラリ

Objc-dependency-visualizerというOSSツールを使うと、アプリ内で使用している Objective-C クラスの依存関係をビジュアライズしてくれます。


試しに "iOS7 Sampler" でやってみると、こんな感じのを生成してくれました。


f:id:shu223:20140310030019j:image


実行するのはrubyスクリプトで、依存関係だけが記述されているだけのシンプルなjsファイルが生成されます。


で、閲覧時にはリポジトリに同梱されている index.html 内のJavaScriptから、生成したjsファイルとビジュアライゼーション用 JavaScript ライブラリ「D3.js」を使用してビジュアライズされます。


そんなわけで、引っ張ったり特定の箇所にフォーカスしたり表示をいろいろカスタマイズしたりできます。


f:id:shu223:20140310031646j:image

(SVProgressHUDにフォーカスした図)


使い方

GitHubからcloneしてきます。

git clone https://github.com/PaulTaykalo/objc-dependency-visualizer.git

あとはスクリプトを実行するだけ。

cd objc-dependency-visualizer
./generate-objc-dependencies-to-json.rb -s <PROJECT_PREFIX>  > origin.js

・・・といっても引数に指定する <PROJECT_PREFIX> って何?という話ですが、スクリプトの中身を見たところ、

IO.popen("find ~/Library/Developer/Xcode/DerivedData -name \"#{options[:project_name]}*-*\" -type d -depth 1 -exec find {} -type d -name \"i386\" -o -name \"armv*\" -o -name \"x86_64\" \\; ") { |f| 
 f.each do |line|  
  paths << line
 end
}

"~/Library/Developer/Xcode/DerivedData" を見に行ってるので、その配下にあるフォルダ名のプレフィックス(例:フォルダ名 "iOS7Sampler-gsaqzzlucgunafcnfuaxtsbqynjz" であれば "iOS7Sampler")を入れておけばよさそうです。


成功すると origin.js に次のような依存関係を抽出したものが出力されます。

var dependencies = {
	links:
	  [
         { "source" : "ActivityTrackingViewController", "dest" : "CMMotionActivityManager" },
         { "source" : "ActivityTrackingViewController", "dest" : "CMStepCounter" },
         { "source" : "ActivityTrackingViewController", "dest" : "SVProgressHUD" },
         { "source" : "AVCaptureManager", "dest" : "AVCaptureDevice" },
         { "source" : "AVCaptureManager", "dest" : "AVCaptureDeviceInput" },
         { "source" : "AVCaptureManager", "dest" : "AVCaptureMovieFileOutput" },
         { "source" : "AVCaptureManager", "dest" : "AVCaptureSession" },
         { "source" : "AVCaptureManager", "dest" : "AVCaptureVideoPreviewLayer" },
         { "source" : "BeaconViewController", "dest" : "CBPeripheralManager" },
         { "source" : "BeaconViewController", "dest" : "CLBeaconRegion" },
         { "source" : "BeaconViewController", "dest" : "CLLocationManager" },
         { "source" : "BeaconViewController", "dest" : "PulsingHaloLayer" },
(中略)            
      ]
 }
;  

あとはリポジトリに同梱されていた index.html を開くだけ。


しくみ

ビジュアライズの部分は上述した通り「D3.js」が用いられています。


で、依存性を抽出する部分は、スクリプトのソースを見てみると、

IO.popen("find \"#{options[:search_directory]}\" -name \"*.o\" -exec  /usr/bin/nm -o {} \\;") { |f| 

という処理があることから、nmコマンドが用いられているようです。(nmはオブジェクトファイルからシンボルをリストするコマンド)


ちなみに、昔書いた

で紹介した objc_dep.py ではプロジェクト内にあるソースファイルを直接見に行く形式だったので、同じプロジェクトに対して実行しても結果が変わってくるかと思います。


プロジェクトフォルダにはあるけど実は使用してないコードとかが混ざらない分、こっちの方がよりアプリの実態を正確に表してくれそうかなと。



2014-03-04

【MFi取得済】kontakt.io のビーコンモジュールについての調査

ちょっと所用で、 kontakt.io について急造で調べてみました。調べた、といってもデバイスが手元にないので、主に公式サイトから。



kontakt.io の特長

kontakt.io ってもともとあんまり情報がなくて、

今回比べた中で一番電波が届く距離が短く、なおかつ受信頻度も少ないBeaconでした。

かなりマイナーなBeaconモジュールでしたが、結果もそれに見合ったような感じになってしまいました。

こういう記事もあるのであんまりパッとしない、もっといえば競合と比べていいところがない印象があった(※追記もご参照ください)のですが、ちゃんと調べてみるといろいろと長所があるなと。以下に列挙していきます。


Apple の iBeacon 認証を取得済み(!)

例の MFi のやつです。GClue佐々木さんのツイートで知りました。



どこで確認できるんだろう?と探しまわったところ、こちらのページに iBeacon マークがりました。



ケースのカスタマイズ

自社のロゴを載せたり、色を変えたり、カスタムケース自体を作成してくれたりするようです。



http://kontakt.io/order-now/white-label-service/


最少ロット数制限あり。(orderページで確認できます。


CMS(Content Management System)

まだちゃんと中身をみれてないのですが、管理ツール的なバックエンドサービスも提供しているようです。


http://kontakt.io/technology/kontakt-io-cms-content-management-system/

The Kontakt.io CMS is the web portal that allows you to control precisely what happens when someone gets in proximity to your beacons. For example when someone walks through the entrance of your venue, you can send a welcome message or special offer directly to that visitor’s smart device.


ビーコンの状態を見たり、内部データをバックアップしたり、ロックかけたり、等々できるようです。


API

上述したバックエンドシステムに相当する機能をAPIとしても提供してくれています。なので自前でシステムつくったり、管理アプリつくったりできるのかなと。


けっこう見つかりにくいのですが、APIドキュメントは下記にありました。


http://docs.kontakt.io/index.html


APIキーはこちらからとれます。


参考ページ:iBeacons with Content Management: Inside Kontakt | BEEKn


etc...

ここでタイムリミット。これから kontakt についていくらか情報が入りそうなので、他のビーコンよりもおもしろい点等あれば(書ける範囲で)書いていこうと思います。


(2014.3.9追記)CEOのSzymonさんに会いました

この記事を書いた数時間後、kontakt.ioのCEO、Szymon氏にお会いしてきました。



いろいろ聞けたけど、ここに書いてよさそうな話だけ書くと、

  • 初期ロットからkontaktのハード自体もまるっとアップデートされていて、additional sensorを追加可能になっていたり、各種モジュールも強化されている。
  • 技適はもちろんとる。ハードをアップデートしたらまた承認受けないといけないので今準備中だがあと数週間もすれば取れる。
  • (この記事の冒頭で紹介したビーコン比較の記事について)kontaktは出荷時は電波強度を最も弱く設定しているし、パケット送信周期も設定次第なので、計測方法として適切ではない。あとそれからハード自体も相当アップデートされている

まとめ

Szymonさんもいい人だったし、konakt.io、だいぶ良さげです。


iBeacon関連の最近のニュースとか技術情報とか

最近 iBeacon まわりの情報をあまり追えてなかったので、ざざっとニュースとか技術情報に目を通してみました。


ニュース、導入事例など

「iBeacon」に対応したスタンプラリー『Sitekicker+ for スタンプラリー』を発売 | ニュース | DNP 大日本印刷

大日本印刷株式会社(本社:東京 社長:北島義俊 資本金:1,144億円 以下:DNP)は、ビーコン(Beacon)*1に対応したサービス『Sitekicker+(サイトキッカープラス)』を開発しました。

ショッピングモールやテーマパーク、美術館などの大型施設内や観光地などでのスタンプラリーに効果的です。iPhoneにダウンロードした専用アプリを起動し、施設内のビーコンデバイス付近のスタンプポイントに近づくと専用端末からの情報をBluetoothで自動的に受信して、スタンプを集めることができます。生活者がスマートフォンを専用端末に「かざす」動作も必要ありません。


専用端末と生活者の距離に応じて、配信する情報を変化させることも可能で、スタンプラリー以外にも店舗内の場所に合わせた情報を配信することができます。例えば、店舗の入り口では本日の特売情報を、個別のエリアでは該当する商品カテゴリーの情報を、商品棚の前では対象商品の情報を表示するなどの使い分けが可能です。また、行動分析などのデータも取得できるため、マーケティングへの活用も期待できます。


3/3、つまり昨日のプレスリリース。スタンプラリーはビーコン用途についてブレストすると必ず出てくるものだし、しかも大手からなので、今後が楽しみです。


DNPは、導入に向けたコンサルティングから各企業が生活者に向けて提供するサービスに応じたアプリの開発やカスタマイズ、サービス運営の代行まで、一貫した機能を提供します。

初期導入費用:200,000円(専用端末5台を含む)、月額利用料:50,000円


安い。。


no title

「ACCESS Beacon Framework」(ABF)は、Beacon本体と、リファレンスアプリケーション、バックエンド機能を提供するクラウドサービスBaaS(Backend as a Service) を組み合わせて提供する事により、企業様がBeaconサービスを素早く市場投入する事ができます。



図を見ると、上述のスタンプラリーだけでなく、いろんなサーバーサイド機能から管理ツール、ビーコンモジュールまでほんとにトータルに提供してくれるようです。


筐体に入ったBeaconモジュール(株式会社Braveridge製)ですので、すぐに使えます。

(中略)

  • Bluetooth認証および無線規格(日本・FCC・CE)に対応済みのBLEモジュールを実装している為、日本国内・海外(一部の国を除く)でのサービスが可能です。
  • DFU(Device Firmware Update)の標準対応により、スマートフォンからのファームウェアの書き換えが可能です。

このモジュールは初めて知りました。技適取得済み、ファーム書き換え可能ってだいぶアツいです。このフレームワークとは関係なく入手可能なんでしょうか(あとで調べてみます)。


iOS7以降で使えるリファレンスアプリです。標準的なBeaconサービスを実装済みで、クラウドとの接続も設定済みです。(Android OS対応は2014年夏を予定しております)

  • スタンプラリー、クーポン、お知らせ通知などの標準的な機能10種類をリファレンスで用意しており、購入したその日からご使用頂けます。
  • 企業様が配信したいコンテンツを表示する事ができます。コンテンツの入れ替えはサービス管理画面にて簡単に行えます。
  • 個別サービス向けBeaconアプリの受託開発も承ります。

スタンプラリー、クーポンをはじめ、ビーコンのよくある用途を実装済みのCustomizableなアプリも提供してくれるとのこと。評価キット(Beaconモジュール + リファレンスアプリ + 管理システム)あり。


その他

iBeacon対応のスマートフォンに専用アプリケーションをインストールしてあるユーザーは、店舗内を移動しながら、その位置に応じて最適な情報を受け取れる。店内に設置されたLED照明設備が、端末と位置情報をやりとりするグリッドとしての役割を果たす。

ヒースロー空港の所定エリアに上級クラスの客が近付くと、アプリを介して利用可能なサービス案内やお得な販売情報、フライトスケジュールなどが入手可能な仕組みも提供しているという。

球場で具体的にどのようなサービスが受けられるかは3月中に発表予定。

JoinTVで番組に参加、クーポンを入手、店舗で活用という“オンエアー→オンライン→オフライン”という流れを生み出すとしています。


技術情報

no title

(略)iBeaconが、Appleの「Made For iPhone」などのロゴマークで知られるMFi ライセンスプログラムのもと、認証を受けたメーカーとともに本格的に展開されることになるようです。

これまで「Made For iPhone」などのMFi ライセンスプログラムでは、Apple が定める性能基準を満たしていると同社が認証した機器にのみ「Made-for-iPhone」などのロゴの使用を許可してきましたが、iBeaconの場合もこの手法と同様にAppleはメーカーにiBeaconの名称を製品に使用する前に、いくつかの条件を満たすよう求めています。

iBeaconに該当する製品の場合には、これまでのMFi ライセンスプログラムとは別にiBeaconの機能についての基準を満たす必要があります。AppleがiBeaconのブランドを管理することにより、消費者はビーコンを発信するBluetooth機器がiPhoneやiPadなどのiOS機器に対応しているのかどうかがひと目で分かることになります。


ちらっとFacebookで見かけてはいましたが、中身は読んでおらず、詳細はつかめてませんでした。もしかしたら Core Bluetooth & BLE まわりに何らかの制約が課されてしまうのか、といらぬ不安まで感じていましたが、正規と野良を分ける話のようなので、それぐらいでよかったです。


Apple Releases iBeacon Specification | BEEKn

ついに iBeacon の仕様が公式に公開!!!!


・・・と思ったら上述の MFi の話とつながっていて、MFiプログラム下において公開してくれるとのことです。

Under their MFI program, manufacturers can now request that Apple permit them to attach the iBeacon name to their devices so long as they meet certain criteria.


The specifications are available after signing an NDA. Applying to the program in order to register to carry the iBeacon name, we’re told, is free.



北から南や西を見て思うこと: iBeaconを使った室内向け測位システム作ったよ

図書室に9個のビーコンモジュールを置いて、室内測位(室内における現在位置を計算)するデモ動画。iPhoneに表示している室内地図上に今いる位置がマッピングされる。


Ibeacon hack4aizu - SSSSLIDE

Aka-Beacon の GClue さんによるスライド資料。後半に BLE113 モジュールについての話がちらっと出てくる。


no title

ハッカソンで最優秀賞を獲得した作品。

キッチンにいくとキッチンリモコンに、キッチンから離れると部屋リモコンに。


#Kadecotって知らなかった。あとで見る。


Beaconモジュール

Bluetooth Beacon

上で出てきたBraveridge社製ビーコンモジュール。




BluetoothチップにはNordicSemiconductor社のnRF51822を使用しております。

また、弊社開発の電波法・BT認証を取得。


書籍

iOS位置情報プログラミング―iBeacon/GeoFence/Navi/CoreMotion/M7の理解と実践
橋本 佳幸
秀和システム
売り上げランキング: 7,750


iOSの位置情報関連機能だけ(!)を扱った技術書。


[目次]

  • 01 iOSでリアルな世界とモノを「つなぐ」意義
  • 02 近隣情報をナビゲーションでつなぐ
  • 03 オープンデータで観光情報をつなぐ
  • 04 モーションアクティビティで利用者の行動軌跡をつなぐ
  • 05 商品と情報をビーコンでつなぐ
  • 06 エリアに入ってきた利用者とつながる
  • 07 近づくと自動的に機器につながる
  • 08 iOSとロボットをつないで来場者を歓迎する

2009 | 08 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2018 | 02 |