iOS 8 の新機能の中でも個人的に気になったのが HomeKit と HealthKit。でも何ができるのか、実際どうやって使うのか、どこまでAPIが開発者に公開されてるのか、発表だけ聞いてもいまいちピンと来ません。
実際に自分で試してみるのが一番です。
そんなわけで、HealthKit、HomeKit を対応デバイスなしでいますぐ試す方法 について6/14日に開催された yidev 第15回勉強会で、表題の内容で発表してきました。
スライドはアップしないつもりだったのでKeynoteではなく Markdown でスライドをつくった のですが、世間的にWWDCの動画(今年のは一般公開されてる)ぐらいまでなら全然OKだよねっていう雰囲気っぽいのでここに内容を貼り付けておきます。
自己紹介
- フリーランスiOSデベロッパー
- ブログ:Over&Out その後
- 著書:iOSアプリ開発 達人のレシピ100
HealthKit
HealthKit でできること
- 健康、運動データの保存、アクセス
- セキュリティ、プライバシー設定
- 検索、統計クエリ
- 単位変換
- 新データの通知
- アクセサリーの統合
とりあえずデバイス繋いで使ってみる
HealthKit デバイスの接続方法
- APIを探しても見当たらない
- WWDCセッション動画 "Introducing HealthKit"を見ても見当たらない
→ iOS8に標準で付いてくる "Health" アプリを利用する
対応デバイスを用意する
HealthKit 対応デバイス
"HealthKit対応"を謳ったものは当然まだない
→ BLEの標準プロファイルをサポートしてるので既存デバイスで普通に繋がる
- Heart Rate Monitor
- Glucose Sensor
- Blood Pressure Monitor
- Health Thermometer
対応デバイスを買いたくない
【日本正規代理店品】Wahoo Fitness 心拍計 Blue HR for iPhone(Bluetooth SMART/Bluetooth 4.0対応)WAF-PH-000001
posted with amazlet at 14.06.22
Blue HR
売り上げランキング: 4,280
売り上げランキング: 4,280
わりと高い。。
対応デバイスを代用する
iPhoneでエミュレートする
- Core Bluetooth で実装する
- アプリを使用する(例:LightBlue)
デモ
公式サンプル "Fit" のビルド方法
参考資料
動画
- Designing Accessories for iOS and OS X (701)
- Introducing HealthKit (203)
Dev Center
- HealthKitのサンプルコード
- クラスリファレンスはまだない
HomeKit
HomeKitとは?
- 各種アクセサリを独自のプロトコルで統一する
- アクセサリ:鍵、照明、カメラ、ドア、サーモスタットetc...
- ユーザ別にデバイスを制御する方法や、デバイスをGroup化して制御する機構を提供する
デバイス接続手段
- Bluetooth Low Energy
- IP
では、試せないのか?
Home Kit Accessory Simulator
起動方法
[Xcode] > [Open Developer Tool] > [Home Kit Accessory Simulator]
実装方法
(実はこれはプレゼンでは説明してないのですが、簡単に。)
マネージャ生成
self.homeManager = [[HMHomeManager alloc] init]; self.homeManager.delegate = self;
家を生成
[self.homeManager addHomeWithName:@"First Home" completionHandler:^(HMHome *home, NSError *error) { if (error) { NSLog(@"error:%@", error); return; } }];
部屋を生成して家にaddする
[home addRoomWithName:@"First Room" completionHandler:^(HMRoom *room, NSError *error) { if (error) { NSLog(@"error:%@", error); } else { NSLog(@"success!"); } } ];
アクセサリ(周辺デバイス)を探す
self.accessoryBrowser = [[HMAccessoryBrowser alloc] init]; self.accessoryBrowser.delegate = self; [self.accessoryBrowser startSearchingForNewAccessories];
デリゲートメソッドまわりは省略。
Siri連携
(口頭で話しただけ)
参考資料
動画
- Designing Accessories for iOS and OS X (701)
- Introducing HomeKit (213)
Dev Center
- Home Kit の各クラスリファレンス
- サンプルはまだない
See Also
ご清聴ありがとうございました!