その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

【iOS8】いますぐ試せる HealthKit & HomeKit

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

対応デバイスを買いたくない

わりと高い。。

対応デバイスを代用する

iPhoneでエミュレートする
  • Core Bluetooth で実装する
  • アプリを使用する(例:LightBlue)
BLEモジュールにファームを書き込む
  • 例:BLE113 Development Kit

参考:http://d.hatena.ne.jp/shu223/20140419/1397911453

デモ

公式サンプル "Fit" のビルド方法

http://d.hatena.ne.jp/shu223/20140607/1402416458

参考資料

動画
  • Designing Accessories for iOS and OS X (701)
  • Introducing HealthKit (203)
Dev Center
  • HealthKitのサンプルコード
  • クラスリファレンスはまだない

HomeKit

HomeKitとは?

  • 各種アクセサリを独自のプロトコルで統一する
    • アクセサリ:鍵、照明、カメラ、ドア、サーモスタットetc...
  • ユーザ別にデバイスを制御する方法や、デバイスをGroup化して制御する機構を提供する

デバイス接続手段

  • Bluetooth Low Energy
  • IP

HomeKit Accessory Profiles


  • → Service, Characteristicって、BLEのGATTベースプロファイル?
  • NO!

HomeKit Accessory Protocol Layers


BLE の GATT、IP の JSON をラップする独自プロトコル

プロトコルやプロファイルの仕様は?


要MFi

では、試せないのか?

Home Kit Accessory Simulator

起動方法

[Xcode] > [Open Developer Tool] > [Home Kit Accessory Simulator]

新規アクセサリ作成

[+] > [New Accessory]


  • サービス追加
    • Add Light Bulb
    • Add Garage Door Opener
    • Add Thermostat
    • Add Lock
    • Add Switch
  • 有効化
    • スイッチをONに


同じ WiFi 内ならこれでアクセサリとして HMAccessoryBrowser から発見できる。

実装方法

(実はこれはプレゼンでは説明してないのですが、簡単に。)

マネージャ生成
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 の各クラスリファレンス
  • サンプルはまだない

ご清聴ありがとうございました!