iPhone と Apple Watch は、心拍数、歩数、睡眠、血中酸素など膨大な記録を毎日ためています。「ヘルスケア」アプリのグラフでは物足りず、自分で集計したい——という人のための手順です。
研究用のデータ整理にも、自分の記録を眺めるためにも使えます。
手順 1:ヘルスケアアプリからすべてのデータを書き出す
- iPhone で「ヘルスケア」アプリを開く
- 右上の丸いプロフィールアイコンをタップ
- 下のほうにある「すべてのヘルスケアデータを書き出す」をタップ
- 書き出しが終わるまで待つ(データ量によっては数分〜十数分かかります)
- 共有シートが開くので、AirDrop やメールなどで Mac に転送する
書き出されるのは Zip ファイルです。ダブルクリックで解凍すると、apple_health_export というフォルダができ、その中に export.xml が入っています。これが本体です。心電図を記録していれば CSV、ワークアウトの GPS ログがあれば GPX ファイルも一緒に入っています。
手順 2:export.xml をどう扱うか
ここで多くの人がつまずきます。export.xml は Apple 独自の XML 形式で、しかも巨大です。数年分の記録があると数百 MB〜1 GB を超えることも珍しくありません。Excel や Numbers ではそのまま開けません。
選択肢は 2 つです。
選択肢 A:自分でスクリプトを書く
Python なら、メモリに全部読み込まず 1 レコードずつ処理する iterparse を使います。
import csv
import xml.etree.ElementTree as ET
with open("records.csv", "w", newline="", encoding="utf-8") as f:
w = csv.writer(f)
w.writerow(["type", "sourceName", "unit", "startDate", "endDate", "value"])
for _, elem in ET.iterparse("export.xml", events=("end",)):
if elem.tag == "Record":
w.writerow([
elem.get("type"), elem.get("sourceName"), elem.get("unit"),
elem.get("startDate"), elem.get("endDate"), elem.get("value"),
])
elem.clear() # メモリを解放する(これを忘れると落ちます)
種類を絞りたいときは elem.get("type") でフィルタします(歩数なら HKQuantityTypeIdentifierStepCount、心拍数なら HKQuantityTypeIdentifierHeartRate)。
- 向いている人:プログラミングができて、抽出条件を細かく制御したい人
- 注意:
elem.clear()を忘れるとメモリを使い切って落ちます。ワークアウトや睡眠はRecordとは別のタグなので、必要なら追加で処理します
選択肢 B:変換用のアプリを使う
コードを書かずに済ませたいなら、専用アプリが早道です。
私たちが作った HealthKit Parser は、この作業のためだけに作った Mac アプリです。
- Mac で HealthKit Parser を起動し、「XML をインポート」から解凍したフォルダ内の
export.xmlを選ぶ - 読み込まれた記録を確認する
- 「CSV として書き出し」で保存する
ポイントは、ドキュメントベースであることです。一度読み込んで HealthKit Parser の形式で保存しておけば、次回からは XML を解析し直すことなく即座に開けます。大きなファイルの最初の読み込みには時間がかかりますが、その後は待たされません。
データはどこにも送信されません。渡されたファイルを読み込み、指定した場所に CSV を書き出すだけのアプリです。買い切りで、macOS 12 以降に対応しています。
手順 3:CSV を分析する
書き出した CSV は 1 行 1 レコードのプレーンなテキストです。Excel、Numbers、R、Python、どれでもそのまま読めます。
分析するときに覚えておくと楽なポイントです。
type列でフィルタする:1 つのファイルに何十種類ものデータが混ざっています。まず種類を絞りますsourceName列を確認する:iPhone と Apple Watch、サードパーティのアプリが同じ指標を二重に記録していることがあります。歩数を合計するときは特に注意してください- 日付はタイムゾーン付き:
2026-09-01 07:12:33 +0900のような形式です。日単位で集計するなら、先頭 10 文字を切り出すのが手軽です - 単位は
unit列にある:同じ指標でも記録元によって単位が違うことがあります
注意点
書き出されるのはあなた自身の健康記録です。共有や保管には配慮してください。また、これらの数値は医療機器としての精度が保証されたものではありません。体調の判断は医療者に相談してください。
