HealthKitの概要
- HealthStoreというHealthKitが管理している保存領域がある。
- HealthStoreへは扱えるデータがあらかじめ決まっており、健康データならなんでも扱えるというわけではない。
- HealthStoreへの書き込み、読み込みはユーザの許可がデータごとに許可が必要
- ユーザは、心拍データは許可、血圧は拒否などデータ単位でのパーミッションの制御が可能
- HealthStore内のデータは、iPhoneやApple Watch、サードパーティアプリが書き込みと読み込みができるという仕組み
HealthKitで扱えるデータ
-
HealthKit データ一覧(iOS 11までカバーされている)
- iOS 12では病状、検査室、薬、バイタルなどの健康記録データであるHealth Recordsが増えている
- wathcOS 5でワークアウトAPIがアップデートされ、低心拍数の通知が追加されている
- HealthKitはあくまでもデータを取り扱えるだけなので、例えば睡眠分析をApple Watchが書き込むわけではない
- AutoSleepのようなサードパーティアプリが心拍数などから睡眠状況を書き込んだりする
Apple Watchが書き込むデータ
- 書き込み頻度は、Apple Watch 2(watchOS 4.3.2) と Apple Watch 4(watchOS 5.0)で差がみられなかった
心拍系
- Watchアプリ内に設定があり、許可すればその後自動で書き込み続けられる
心拍数
- 1分間あたりの心臓の鼓動の回数を示し、心血管の健康状態を表す(ヘルスケアアプリの説明より)
- 概ね5分間隔くらいで書き込まれていた
安静時心拍数
- 数分間の安静した状態またはリラックスした状態で測定される1分間あたりの平均心拍数(ヘルスケアアプリの説明より)
- 1日に1回を限度に安静した状態を検知したときに書き込まれる?
歩行時平均心拍数
- 1日を通して、安定したペースでの歩行時にApple Watchで測定された1分あたりの平均心拍数(ヘルスケアアプリの説明より)
- 安定したペースでの歩行が検知されたら書き込まれる?
心拍変動
- 1日に数回書き込まれていた
高心拍数の通知/低心拍数の通知
- 安静時心拍数が選択した閾値より高い(or 低い)心拍数が10分間続いていることが検出された場合通知される(ヘルスケアアプリの説明より)
- Watchアプリ内に設定があり、許可すればその後通知がされれば自動で書き込まれる
- 低心拍数の通知はwatchOS 5.0から有効
アクティブエネルギー
- 安静時消費エネルギーを超えるエネルギー燃焼量の推定値(ヘルスケアアプリの説明より)
- 最短で1分ごとに書き込まれていた
- 睡眠中などほぼ動いてなくて推定できない場合は書き込まれていなかった
- デスクワークでほぼキーボードを打っているだけくらいの動きでも書き込まれていたため、Apple Watchをしている方の腕を完全に動かさないくらいしない限り推定されるような挙動だった
開発メモ
クエリ
- クエリが豊富なので全件取得、1日単位で取得、特定条件で取得などほとんどのケースに対応できそう
バックグラウンドでHealthKitのデータにアクセスできるか
- 端末がロックされているとHealthKitのデータにアクセスできない
- Background Fetchでアプリが定期的にHealthKitのデータにアクセスしてデータを集計するというのはできないと考えた方良い(ロック解除した状態で他のアプリを操作しているときは可能だけど状況が限定的過ぎる)
- アプリの起動時にアクセスや、明示的な更新ボタンなどを設ける必要がある
その他
- Capabilitiesあり
- RxHealthKit
- 情報は古いけど参考にできそうな概要
- AppleWatchで心拍数を測定するアプリ
- リアルタイムの心拍数を取得する場合には、アプリ側でワークアウト(WorkoutSession)を開始させる必要がある
- 【AppleWatch】リアルタイムの心拍数取得
- Apple Watchがデフォルトで動いている心拍計はリアルタイムで動作しているわけではないため、ワークアウトで明治的にApple Watchの心拍計を動作させ、それをHealthStoreに書き込み、読み込みを行うということが必要だと思われる
- ワークアウトのアップデートハンドラがあるので、ワークアウト中アプリ画面内で現在の心拍数を表示するということは可能
- shu223/watchOS-2-Sampler
-
プライバシーポリシーが必須
- どちらにせよHealthKitを使っていなくても2018/10/3から全アプリでプライバシーポリシーは必須になる
禁止事項
- HealthKitを利用して集取したデータでターゲット広告などの利用は禁止
開発者が「HealthKit APIで収集したエンドユーザーの健康情報を広告プラットフォームや情報ブローカー、データ再販業者に販売することが禁止」されたという。
ユーザーの許可を得たうえで「医療研究を目的にサードパーティーと」データを共有することは認められている。
HealthKitに関連するその他のフレームワーク
- HealthKitと連携するAppleのフレームワークがいくつかある
- 一般的なアプリでの利用を想定したものではなく、医学的な研究目的のためのフレームワークだと思われる
ResearchKit
このソフトウェアフレームワークで開発したアプリケーションを使うと、医学研究者が意味のある確実なデータを収集できるようになります。
CareKit
このソフトウェアフレームワークで開発したアプリケーションを使うと、みんなが自分の症状をもっと良く理解し、自分でそれを管理できるようになります。