本文へスキップ
CSVに書き出す

iPhoneのヘルスケアデータをCSVに書き出す方法

ヘルスケアアプリはCSVを書き出せません。書き出されるのは、XML形式のデータが入ったexport.zipです(「概要」、写真、「すべてのヘルスケアデータを書き出す」)。CSVが必要なら、このXMLをスクリプトで変換するか、ヘルスケアのデータを読み取ってCSVを書き出すApp Storeのアプリを使います。以下では両方の方法を紹介し、100万件のレコードで検証したスクリプトも載せています。

teloチーム・確認日:

ヘルスケアアプリから書き出す(公式・無料)

Appleが説明している書き出し方法はこれだけです。ヘルスケアアプリに保存されているデータがすべてまとめて書き出され、項目や期間は選べません。

  1. iPhoneでヘルスケアアプリを開きます。
  2. 「概要」をタップし、右上の写真またはイニシャルをタップします。
  3. プロフィールのいちばん下までスクロールし、「すべてのヘルスケアデータを書き出す」をタップします。
    いちばん下までスクロールしたヘルスケアアプリのプロフィール。「プライバシー」セクションの下に、すべてのデータを書き出す青いボタンがある(英語表示)
    ヘルスケアアプリのプロフィール(英語表示)。iPhoneシミュレータ、iOS 27、2026-11-14。
  4. 確認のメッセージで「書き出す」をタップします。何年分ものデータがあると、ファイルの準備に数分かかることがあります。
    ヘルスケアデータを書き出してよいか確認するメッセージ。キャンセルと書き出しのボタンがある(英語表示)
    確認のメッセージ(英語表示)。iPhoneシミュレータ、iOS 27、2026-11-14。
  5. 共有シートに「export」というZIPアーカイブが表示されます。「ファイル」アプリに保存しておくと、あとでコンピュータで開くのがいちばん簡単です。
    上部にZIPアーカイブexportがあり、コピー、タグの追加、「ファイル」への保存の操作が並ぶ共有シート(英語表示)
    共有シート(英語表示)。2 KBなのは空のシミュレータだからで、実際の書き出しはずっと大きくなります。iOS 27、2026-11-14。
  6. コンピュータでexport.zipを展開します。レコードはapple_health_export/export.xmlに入っています。

export.xmlをPythonでCSVに変換する

export.xmlには、測定値が1件ずつRecordの行として、種類、単位、日時、値とともに記録されています。下のスクリプトはファイルをストリーミングで読み込み、1つのデータの種類を取り出して、開始、終了、値、単位、ソースの列を持つCSVを書き出します。必要なのはPython 3だけで、インストールするものはありません。

  1. 下のコードをto_csv.pyという名前で、apple_health_exportフォルダと同じ場所に保存します。
  2. ターミナルでそのフォルダに移動し、次を実行します:python3 to_csv.py apple_health_export/export.xml HKQuantityTypeIdentifierStepCount
  3. CSVは同じフォルダにデータの種類の名前で作られ、最後に表示される行に書き出した件数が出ます。HKQuantityTypeIdentifierStepCountを目的の種類に置き換えてください。たとえば心拍数ならHKQuantityTypeIdentifierHeartRateです。
python
import csv, sys
import xml.etree.ElementTree as ET

src, want = sys.argv[1], sys.argv[2]  # export.xml HKQuantityTypeIdentifierStepCount
rows = 0
with open(want + ".csv", "w", newline="", encoding="utf-8-sig") as out:
    w = csv.writer(out)
    w.writerow(["startDate", "endDate", "value", "unit", "sourceName"])
    events = ET.iterparse(src, events=("start", "end"))
    _, root = next(events)
    for event, el in events:
        if event == "end" and el.tag == "Record":
            if el.get("type") == want:
                w.writerow([el.get("startDate"), el.get("endDate"), el.get("value"), el.get("unit"), el.get("sourceName")])
                rows += 1
            root.clear()
print(rows, "rows in", want + ".csv")

検証の結果

Appleの形式で、歩数と心拍数のレコード100万件を含むサンプルのexport.xmlを作りました(220 MB、値は例示用で、誰かのデータではありません)。2026-11-13に、Appleシリコン搭載のMacとPython 3.15で計測した結果です。

時間はほぼ同じですが、メモリは大きく違います。検証していない推定ですが、同じ比率なら実際の1 GBの書き出しを丸ごと読み込むには4 GB近いメモリが必要で、一般的なノートパソコンが固まるのに十分な量です。ストリーミングのスクリプトは検証中、16 MB前後にとどまりました。

レコード100万件、220 MBのexport.xmlの変換
XMLの読み込み方使用メモリ時間
ストリーミング(上のスクリプト)16 MB2.2秒
ファイル全体を読み込む(ElementTree.parse)964 MB1.9秒

方法の比較

ヘルスケアのデータをCSVにする方法
方法価格必要なもの制限出典・確認日
ヘルスケアアプリの書き出し+スクリプト無料Python 3が入ったコンピュータiPhoneから出てくるのはXMLだけで、変換は自分で行うAppleサポート
Health Export CSV(アプリ)US$2.99、Remoteは月US$4.99または年US$29.99iPhoneiPhoneから直接CSVとGPXを書き出せる。Remoteはバックグラウンドで同期App Store
Health Auto Export(アプリ)Basic US$2.99(買い切り)、Premiumは月US$1.99、年US$6.99、または永続版US$24.99iPhoneFreeプランは書き出し不可。Basicは手動で書き出し(CSVとJSON)。自動書き出しはPremiumのみApp Store
teloProは年US$49。Freeではアシスタントが見られるのは直近7日分だけteloアプリを入れたiPhoneWebのアカウントから日ごとの値、睡眠、ワークアウトをCSVで取得できる(1日1回、Freeでも可)。中身は日ごとの合計で、すべての記録ではない。履歴をClaude、ChatGPTなどのアシスタントにも渡し(全期間はProのみ)、ProではJSONのAPIでも読めるApp Store

CSVが要らない場合

データについて何か聞きたいだけ(「今年、安静時心拍数は下がった?」)なら、毎回書き出して変換するのは手間です。teloはiPhoneアプリ経由でヘルスケアのデータを読み取り、Claude、ChatGPTなどのアシスタントがファイルなしで直接履歴を参照できるようにします。開発者は同じデータを個人用REST APIからJSONで読み取れます(1回の呼び出しで最大500行)。スプレッドシートだけが必要なら、teloは保存しているデータをCSVでも返します。日と指標ごと、夜ごと、ワークアウトごとに1行で、時刻はあなたのタイムゾーンです(Webの「アカウント」>「あなたのデータ」)。

bash
curl 'https://telo.health/api/v1/query_daily?metrics=steps&from=2026-11-01&to=2026-11-08&granularity=day' \
  -H "Authorization: Bearer $TELO_API_KEY"
FAQ

よくある質問

ヘルスケアはCSVを直接書き出せますか?

いいえ。ヘルスケアアプリの書き出しで作られるのは、XML形式のデータが入ったexport.zipです。CSVが必要なら、export.xmlをスクリプトで変換するか、CSVを書き出せるApp Storeのアプリを使ってください。

1つの項目や期間だけを書き出せますか?

公式の書き出しではできず、すべてまとめて書き出されます。このガイドのスクリプトは1つのデータの種類を取り出し、表のアプリならiPhone上で項目と期間を選べます。

export.xmlはなぜこんなに大きいのですか?

測定値1件が1行になり、ウォッチは1日に何度も心拍数を測るからです。数年使えば数百メガバイトになるのは珍しくありません。

書き出したファイルはどこにありますか?

共有シートで選んだ場所です。「ファイル」アプリに保存した場合は、選んだフォルダ(iPhone内またはiCloud Drive)にexport.zipがあります。AirDropでMacに送った場合は「ダウンロード」フォルダに入ります。

ワークアウトだけ、睡眠だけを書き出せますか?

公式の書き出しではできません。書き出したあと、スクリプトの種類を変えてください。睡眠ならHKCategoryTypeIdentifierSleepAnalysisです。ワークアウトはRecordではなくWorkoutの行なので、別のスクリプトが必要です。表のアプリなら、iPhone上でワークアウトと睡眠を別々に書き出せます。

export.xmlをExcelで開くには?

XMLを直接開かないでください。データの種類ごとに1つのCSVに変換し、行数がExcelのワークシートの上限である1,048,576行未満か確認してください。

teloはCSVを書き出せますか?

はい、2026年11月から対応しています。Webのteloアカウントで「あなたのデータ」>「すべてダウンロード(CSV)」を押すと、日ごとの値、睡眠、ワークアウト、どのAIが何を読んだかをまとめたzipを、あなたのタイムゾーンの時刻で取得できます。中身はiPhoneがteloに送った日ごとの合計で、ヘルスケアのすべての記録ではありません。生の記録が必要ならヘルスケアアプリの書き出しを使ってください。1日1回まで、Freeでも使えます。

出典と提供状況

プランや提供地域、画面は変わることがあります。設定する前に公式の情報源を確認してください。

このガイドの作成方法

2026-11-14に、Appleのサポートページで書き出しの手順を、App Storeのページで価格とプランを、Microsoftのドキュメントで行数の上限を確認しました。スクリーンショットは2026-11-14にiPhoneシミュレータ(iOS 27、英語表示、データなし、iCloudアカウントなし)のヘルスケアアプリで撮影したもので、そのためプロフィールにバックアップの警告が出ています。スクリプトは2026-11-13に社内で、Appleの形式で作った例示用レコード100万件のexport.xmlを使い、Appleシリコン搭載のMacとPython 3.15で計測しました。1 GBの数字は同じ比率による推定です。誰の健康データも使っていません。