iPhone と Apple Watch は、心拍数や歩数、睡眠、血中酸素などを、毎日自動で記録しています。何年も使っていれば、記録は数百万件になります。研究や開発に使えば、ほかではなかなか手に入らない、長い期間の生活のデータです。
ただ、「ヘルスケア」アプリが書き出すデータは、1 GB を超えることもある大きな XML ファイルで、そのままでは Excel などで開けません。この記事では、HealthKit で記録されるデータの一覧と、Mac アプリ HealthKit Parser で CSV にして分析する方法を紹介します。
HealthKit とは
HealthKit は、iPhone の中に健康に関するデータをまとめて保管する、Apple の仕組みです。iPhone と Apple Watch が自動で測ったデータに加えて、体重計や血圧計のアプリ、睡眠や食事を記録するアプリなどが書き込んだデータも、ここに集まります。「ヘルスケア」アプリは、その中身を見るためのアプリです。
ほかのアプリが HealthKit のデータを読むには、データの種類ごとに利用者の許可が要ります。自分でアプリを作れば HealthKit から直接データを読めますが、自分の記録をまとめて取り出すだけなら、「ヘルスケア」アプリの書き出し機能を使うのがいちばん手軽です。
HealthKit で記録されるデータの一覧
HealthKit のデータは、HKQuantityTypeIdentifierHeartRate(心拍数)のような識別子で区別されています。書き出したデータにも、HealthKit Parser で作った CSV の type 列にも、この識別子がそのまま入ります。主なものを、「ヘルスケア」アプリの分類に近い形でまとめました。
「単位の例」は書き出したデータに入っている単位です。iPhone の設定によって、km と mi のように変わることがあります。「主な記録元」は、どこで記録されることが多いかの目安です。
アクティビティ
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 歩数 | HKQuantityTypeIdentifier | count | iPhone・Apple Watch |
| ウォーキング+ランニングの距離 | HKQuantityTypeIdentifier | km | iPhone・Apple Watch |
| 上った階数 | HKQuantityTypeIdentifier | count | iPhone・Apple Watch |
| アクティブエネルギー | HKQuantityTypeIdentifier | kcal | Apple Watch |
| 安静時消費エネルギー | HKQuantityTypeIdentifier | kcal | Apple Watch |
| エクササイズ時間 | HKQuantityTypeIdentifier | min | Apple Watch |
| スタンド時間 | HKQuantityTypeIdentifier | min | Apple Watch |
| スタンド(1 時間ごと) | HKCategoryTypeIdentifier | — | Apple Watch |
| 身体活動の強度 | HKQuantityTypeIdentifier | kcal/hr·kg | Apple Watch |
| 心肺機能(VO2 max) | HKQuantityTypeIdentifier | mL/min·kg | Apple Watch |
| 日光下で過ごした時間 | HKQuantityTypeIdentifier | min | Apple Watch |
| サイクリングの距離 | HKQuantityTypeIdentifier | km | Apple Watch・他のアプリ・機器 |
| 水泳の距離・ストローク数 | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | m, count | Apple Watch |
| ランニングの速度・パワー・歩幅・上下動・接地時間 | HKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifier | W, m, cm, ms … | Apple Watch |
| ワークアウトの負荷(推定) | HKQuantityTypeIdentifier | appleEffortScore | Apple Watch |
心臓
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 心拍数 | HKQuantityTypeIdentifier | count/min | Apple Watch |
| 安静時心拍数 | HKQuantityTypeIdentifier | count/min | Apple Watch |
| 歩行時平均心拍数 | HKQuantityTypeIdentifier | count/min | Apple Watch |
| 心拍変動(HRV) | HKQuantityTypeIdentifier | ms | Apple Watch |
| 心拍数の回復(1 分後) | HKQuantityTypeIdentifier | count/min | Apple Watch |
| 心房細動の履歴 | HKQuantityTypeIdentifier | % | Apple Watch |
| 高心拍数・低心拍数・不規則な心拍リズムの通知 | HKCategoryTypeIdentifierHKCategoryTypeIdentifierHKCategoryTypeIdentifier | — | Apple Watch |
呼吸
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 呼吸数 | HKQuantityTypeIdentifier | count/min | Apple Watch |
| 血中酸素 | HKQuantityTypeIdentifier | % | Apple Watch |
| 睡眠中の呼吸の乱れ | HKQuantityTypeIdentifier | count | Apple Watch |
| 睡眠時無呼吸の通知 | HKCategoryTypeIdentifier | — | Apple Watch |
睡眠
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 睡眠(就寝中・コア・深い・レム・覚醒) | HKCategoryTypeIdentifier | — | Apple Watch・iPhone・他のアプリ・機器 |
| 睡眠中の手首の皮膚温 | HKQuantityTypeIdentifier | degC | Apple Watch |
| 睡眠時間の目標 | HKData | hr | 「ヘルスケア」アプリ |
歩行
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 歩行速度 | HKQuantityTypeIdentifier | km/hr | iPhone |
| 歩幅 | HKQuantityTypeIdentifier | cm | iPhone |
| 歩行非対称性 | HKQuantityTypeIdentifier | % | iPhone |
| 両脚支持時間 | HKQuantityTypeIdentifier | % | iPhone |
| 歩行安定性 | HKQuantityTypeIdentifier | % | iPhone |
| 階段の上り・下りの速度 | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | m/s | iPhone・Apple Watch |
| 6 分間歩行の距離(推定) | HKQuantityTypeIdentifier | m | iPhone |
聴覚
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 環境音レベル | HKQuantityTypeIdentifier | dBASPL | Apple Watch |
| ヘッドフォン音声レベル | HKQuantityTypeIdentifier | dBASPL | iPhone |
| 大きな環境音の通知 | HKCategoryTypeIdentifier | — | Apple Watch |
身体測定
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 身長 | HKQuantityTypeIdentifier | cm | 手入力・他のアプリ・機器 |
| 体重 | HKQuantityTypeIdentifier | kg | 他のアプリ・機器・手入力 |
| BMI | HKQuantityTypeIdentifier | count | 他のアプリ・機器・手入力 |
| 体脂肪率 | HKQuantityTypeIdentifier | % | 他のアプリ・機器・手入力 |
| 除脂肪体重 | HKQuantityTypeIdentifier | kg | 他のアプリ・機器・手入力 |
| ウエスト周囲長 | HKQuantityTypeIdentifier | cm | 手入力 |
バイタル
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 血圧(収縮期・拡張期) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | mmHg | 他のアプリ・機器・手入力 |
| 体温 | HKQuantityTypeIdentifier | degC | 他のアプリ・機器・手入力 |
| 基礎体温 | HKQuantityTypeIdentifier | degC | 他のアプリ・機器・手入力 |
| 血糖値 | HKQuantityTypeIdentifier | mg/dL | 他のアプリ・機器・手入力 |
栄養
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| 摂取エネルギー・たんぱく質・脂質・炭水化物 | HKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifier | kcal, g | 他のアプリ・機器・手入力 |
| 水分・カフェイン | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | mL, mg | 他のアプリ・機器・手入力 |
| 食物繊維・ビタミン・ミネラルなど(30 種類以上) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier… | g, mg, µg … | 他のアプリ・機器・手入力 |
その他
| データ | type 列の値 | 単位の例 | 主な記録元 |
|---|---|---|---|
| マインドフルネス | HKCategoryTypeIdentifier | — | Apple Watch・他のアプリ・機器 |
| 手洗い | HKCategoryTypeIdentifier | — | Apple Watch |
| 歯磨き | HKCategoryTypeIdentifier | — | 他のアプリ・機器 |
| 転倒の回数 | HKQuantityTypeIdentifier | count | Apple Watch |
| 月経などの周期記録 | HKCategoryTypeIdentifier… | — | 手入力・他のアプリ・機器 |
| 症状(頭痛・発熱・せきなど) | HKCategoryTypeIdentifierHKCategoryTypeIdentifierHKCategoryTypeIdentifier… | — | 手入力 |
| 紫外線指数 | HKQuantityTypeIdentifier | count | 他のアプリ・機器 |
単位が「—」のものは、value 列に HKCategoryValueSleepAnalysisAsleepCore(睡眠のコア)のような区分の値が入るデータです。
このほかにも、聴力検査の結果やワークアウト中の速度など、HealthKit には 100 種類を超えるデータがあります。実際にどのデータが入っているかは、使っている機器やアプリによって変わります。筆者の約 9 年分(2017〜2026 年)の書き出しには、42 種類・約 308 万件の記録が入っていました。いちばん多いのは Apple Watch のアクティブエネルギーと心拍数で、それぞれ 70 万件前後です。
iPhone でヘルスケアデータを書き出す
- iPhone で「ヘルスケア」アプリを開き、右上のプロフィールのアイコンをタップします。
- いちばん下の「すべてのヘルスケアデータを書き出す」をタップし、確認が出たら「書き出す」をタップします。データが多いと、書き出しに数分かかります。
- 共有のメニューが出たら、AirDrop で Mac に送るか、「ファイル」に保存して Mac に移します。
- Mac で zip ファイルをダブルクリックして展開します。
展開すると、apple_health_export というフォルダができます。中身は次のとおりです。
export.xml:すべての記録。HealthKit Parser で読み込むのはこのファイルexport_cda.xml:医療情報の標準形式(HL7 CDA)で書かれた記録electrocardiograms:Apple Watch で記録した心電図の波形(CSV)workout-routes:ワークアウトの経路(GPX)
HealthKit Parser で CSV にする
HealthKit Parser は、export.xml を読み込んで、記録を CSV に書き出す Mac アプリです。処理はすべて Mac の中で行い、データをどこにも送りません。
1. export.xml を読み込む
HealthKit Parser を起動すると、新しい書類のウインドウが開きます。ツールバーの「XMLをインポート」をクリックし、展開したフォルダの export.xml を選びます。

読み込みには時間がかかります。筆者の 1.4 GB の export.xml(約 308 万件)は、MacBook Pro(M4)で約 14 分でした。読み込みが終わるまで、ウインドウの右下に「XML をパースしています…」と表示されます。
2. 記録の種類と件数を確かめる
読み込みが終わると、記録の期間(開始・終了)とデータ数、記録されているデータの種類と、種類ごとの件数が表示されます。タイトルとメモは自由に書けます。

書類を保存しておけば、次からは export.xml を読み込み直さずに、すぐに開けます。期間を変えて何度も書き出したいときに便利です。
3. CSV に書き出す
ツールバーの「CSVとして書き出し」をクリックし、書き出す期間とデータの種類を選んで「書き出し」をクリックします。期間は「全期間」のほか、開始と終了の日時で絞り込めます。

すべての種類を一度に書き出すこともできますが、記録が数百万件あると CSV は大きくなります。分析に使う種類だけを選ぶと扱いやすくなります。
CSV の中身
CSV は 1 行が 1 件の記録で、次の列があります。
| 列 | 内容 |
|---|---|
type | データの種類(上の表の識別子) |
unit | 単位 |
value | 値。睡眠などでは区分を表す文字列 |
start, end | 記録の開始・終了の日時。Mac の「言語と地域」の書式で、分まで(例:2025/06/12 11:14) |
start_UT, end_UT | 記録の開始・終了の日時を Unix 時間(秒)で表したもの |
creation, creation_UT | 記録が HealthKit に保存された日時と、その Unix 時間 |
device | 記録した機器(機種やソフトウェアのバージョン) |
source name, source version | 記録したアプリや機器の名前と、そのバージョン |
安静時心拍数を書き出した例です(一部の列だけ)。
| type | unit | value | start_UT | end_UT |
|---|---|---|---|---|
HKQuantityTypeIdentifier | count/min | 63 | 1791559483.0 | 1791640198.0 |
HKQuantityTypeIdentifier | count/min | 63 | 1791645830.0 | 1791714436.0 |
HKQuantityTypeIdentifier | count/min | 58 | 1791737624.0 | 1791765440.0 |
_UT の列(Unix 時間)
列名の最後に _UT が付いた列は、日時を Unix 時間で表したものです。Unix 時間は、1970 年 1 月 1 日 0 時 0 分 0 秒(協定世界時、UTC)からの経過秒数で、タイムゾーンに左右されません。
- 海外への旅行や出張でタイムゾーンが変わっても、記録の順番や間隔がずれない
- 引き算だけで、睡眠などの区間の長さ(秒)がわかる
- 秒まで正確(
startなどの列は分まで) - 研究用の機器やほかのセンサーのデータと、時刻で突き合わせやすい
- 表示するときに、好きなタイムゾーンに変換できる
Python(pandas)なら、次のように読み込めます。見出しの行はカンマのあとに空白が入っているので、skipinitialspace=True を付けます。
import pandas as pd
df = pd.read_csv("resting_heart_rate.csv", skipinitialspace=True)
# Unix 時間 → 日時(UTC)→ 日本時間
df["start_local"] = (pd.to_datetime(df["start_UT"], unit="s", utc=True)
.dt.tz_convert("Asia/Tokyo"))
# 区間の長さ(秒)
df["seconds"] = df["end_UT"] - df["start_UT"]
Excel では、=E2/86400+DATE(1970,1,1) のように計算し、セルの表示形式を日時にすると UTC の日時になります(E 列が start_UT のとき)。日本時間にするには、さらに 9/24 を足します。
分析するときの注意
- 同じデータが重なっていることがある:iPhone と Apple Watch の両方を使っていると、歩数や距離は両方で記録されます。「ヘルスケア」アプリは重なりを除いて表示しますが、書き出したデータには両方が入っています。合計するときは、
source nameやdeviceの列で記録元を絞り込みます。 - 割合は 0〜1 の値:単位が % のデータ(血中酸素、体脂肪率、歩行非対称性など)は、97% が 0.97 のように入っています。
- 単位を確かめる:単位は iPhone の設定によって変わることがあります。
unit列を確かめてから計算します。 - 区分のデータは 1 行が 1 区間:睡眠は
value列にHKCategoryValueSleepAnalysisAsleepCore(コア)、…AsleepDeep(深い)、…AsleepREM(レム)、…Awake(覚醒)などが入り、1 行が 1 つの区間です。長さはend_UT − start_UTで求めます。 - ほかの人のデータを扱うとき:ヘルスケアデータは、とても機微な個人情報です。研究で参加者のデータを扱うときは、所属機関の倫理審査や同意の手続きに従ってください。
CSV に入らないもの
HealthKit Parser が CSV にするのは、export.xml の中の個々の記録です。ワークアウトのまとめ(種目と時間、合計の距離など)、アクティビティリングの 1 日ごとの集計、生年月日や血液型などのプロフィールは含みません。ワークアウト中の心拍数や距離、消費エネルギーは、個々の記録として CSV に入ります。
心電図の波形とワークアウトの経路は、展開したフォルダの中に CSV と GPX で入っているので、そのまま使えます。
まとめ
iPhone と Apple Watch の記録は、書き出して CSV にすれば、Excel・R・Python などで自由に分析できます。_UT の列を使えば、タイムゾーンを気にせずに、ほかのデータと組み合わせられます。
HealthKit Parser は、Mac App Store で買い切りで販売しています(macOS 12 以降)。サブスクリプションはありません。
