Appleのヘルスケアアプリのデータを使って、他のアプリでグラフを描こうと思ったが、エクスポートされるデータはXMLのため、そのままでは扱いにくい。
このため、XMLファイルから体重データを抜き出してCSVを出力するRubyスクリプトを書いた。
以下、ChatGPTにヘルスケアデータの構造を聞いた回答
Appleのヘルスケアアプリでエクスポートされるデータは、XML (Extensible Markup Language) フォーマットで提供されます。このフォーマットは、ヘルスデータを構造化して格納するための標準的な形式です。
データの構造と内容
-
XMLヘッダー エクスポートされたファイルは、XMLヘッダーから始まります。
-
全体のルート要素 データ全体は
<HealthData>
というルート要素でラップされています。 -
データの各エントリー ヘルスケアのデータは、それぞれの記録を
<Record>
要素として格納します。主な属性は以下の通りです:- type: データの種類(例: 歩数、心拍数など)。
- sourceName: データのソース名(iPhone、Apple Watchなど)。
- sourceVersion: ソースのバージョン情報。
- unit: データの単位(例:
count
,bpm
,kcal
など)。 - creationDate: データが作成された日時。
- startDate: データの開始日時(測定期間の開始)。
- endDate: データの終了日時(測定期間の終了)。
- value: データの値(例: 歩数の数値、体重の値など)。
例:
-
ワークアウトデータ ワークアウトデータは
<Workout>
要素で表されます。これには以下の属性が含まれます:- workoutActivityType: ワークアウトの種類(例: ランニング、サイクリングなど)。
- duration: ワークアウトの継続時間。
- totalDistance: 総移動距離。
- totalEnergyBurned: 総消費カロリー。
- startDate: ワークアウト開始日時。
- endDate: ワークアウト終了日時。
例:
-
メタデータ 各エントリーには
<MetadataEntry>
要素が付属している場合があります。この要素には、追加情報がキー・バリュー形式で格納されます。例: 1
-
ファイルの最後 エクスポートされたデータの最後には、ヘルスデータの概要を示す
<ExportDate>
要素が含まれます。
主なデータ種類と識別子
- 歩数:
HKQuantityTypeIdentifierStepCount
- 心拍数:
HKQuantityTypeIdentifierHeartRate
- 体重:
HKQuantityTypeIdentifierBodyMass
- 睡眠分析:
HKCategoryTypeIdentifierSleepAnalysis
使用例と注意点
- データ解析: このXMLファイルを解析するには、プログラミング言語(例: Python, JavaScript, R)や専用ツールを使用します。
- プライバシー: エクスポートされたデータには個人情報が含まれるため、取り扱いには注意が必要です。
- データ量: データが大量になる場合があるので、解析時にはパフォーマンスを考慮してください。
これがAppleのヘルスケアアプリでエクスポートされるデータのフォーマットの概要です。