🩺

【iOS】HealthKitに関連するデータ型について

2024/05/08に公開

Healthkitとは

HealthKitとは、Appleが開発したiOSデバイス向けのフレームワークで、ヘルスケアとフィットネスのデータを統合して管理するためのプラットフォームです。HealthKitを使用することで、ユーザーは様々な健康データを複数のデバイスで一元管理することができます。例えば、身長・体重・歩幅・睡眠などの身体にまつわるデータを管理することができます。

HealthKitのデータを扱う上で、HealthKitのデータ型を理解する必要があります。
この記事では、HealthKitで用いられるデータ型に着目して、記事を記載していきます。

HealthKitで用いるデータ型について

HealthKitを用いてデータの読み書きを行う上で、データの型・関係性を理解する必要があります。

上図の通りになります。

  • HKSampleは、HKObjectのサブクラス
  • HealthSamples(HKQuantitySample,HKCategorySample etc)は、HKSampleのサブクラス

であることを理解しておく必要があります。

HKObjectとは?

HKObjectは、データにまつわるメタ情報を保持します。

プロパティ 説明
uuid オブジェクトの一意な識別子
metadata オブジェクトに関連付けられたメタデータ
sourceRevision アプリ・デバイスのバージョンに関連したデータ
device データが生成されたデバイスに関連したデータ

HKObject自体はメタデータのみを扱います。実際のヘルスデータは、HKObjectを継承したサブクラスで管理します。

HKSampleとは?

HKSampleはデータの開始時間と終了時間に関連付けられた不変のデータを保持します。

プロパティ 説明
startDate サンプルの開始日時
endDate サンプルの終了日時
hasUndeterminedDuration サンプルの期間が未確定かどうかを示す
sampleType サンプルのタイプ

HealthSamplesとは?

HealthSamplesとは、HKObject・HKSampleを継承したサブクラス(HKQuantitySample,HKCategorySample etc)を指します。

HealthSamplesのデータ構造は全て似た構造を持っています。

項目 日本語
DataType データ項目 運動、歩行距離、音量、疼痛 etc
Value データの値 ウォーキングorランニング、623m、101dBA SPL、中等度 etc
Time 時間・時間帯 各データの時間・時間帯
Metadata メタデータ 運動時の天気、運動が屋内or屋外、記録したデバイス、データ取得したアプリ etc

4つの項目が存在するHealthSamplesデータを用いることによって、データの保存・取得が可能になります。

HealthSamplesの各データ型について

HKSampleを継承したHealthSamplesのデータ型は、4つが存在します。

データタイプ 説明
HKQuantitySample 数値と単位を扱う。 身長、心拍数、消費された食事エネルギー etc
HKCategorySample リストから選択された1つのデータを扱う。 睡眠データ、疼痛 etc
HKCorrelationSample 2つ以上のデータを1つの値に結合する。 食物摂取、血圧 etc
HKWorkout 単一の身体活動に関する情報を扱う。 継続時間、合計距離、合計消費エネルギー etc

他にもSamplesが存在する。継承元が一部異なることなるものの、HKObject・HKSampleを継承したサブクラスです。

データタイプ 説明 継承元
HKHeartbeatSeriesSample 心拍の情報を扱うデータを扱う。 HKSeriesSample
HKCDADocumentSample 医療情報にまつわるドキュメントデータを扱う。 HKDocumentSample
HKWorkoutRoute 運動時の時のユーザーの経路のデータを扱う。 HKSeriesSample

これらのデータ型を用いて、ヘルスケアに関連するデータを読み書きすることが可能になります。

以上がHealthKitを実装する上で、理解しておくべきデータ型となります。

最後に

記事内に間違い・気になる部分ありましたら、コメントいただけると大変うれしいです。
良かったと思ったら、記事へのいいね・Xのフォローよろしくお願いいたします。

https://sites.google.com/view/muranakar

個人でアプリを作成しているので、良かったら覗いてみてください。

参考

https://developer.apple.com/videos/play/wwdc2020/10664/

https://developer.apple.com/documentation/healthkit/hkobject

https://developer.apple.com/documentation/healthkit/hksample

Discussion