Appleヘルスケアアプリ

iPhoneのヘルスケア・データを取り出してエクセルで扱う方法と留意事項

Appleヘルスケアアプリ

Appleヘルスケアを使うメリット

iPhone標準アプリの「ヘルスケア」では、例えば毎日の歩数を表示できる。
歩数カウントはiPhone本体の機能として、自動で計測されているため。

それ以外にも、AppleWatchを持っている場合は心拍数、ヘルスケア連動の健康系アプリを使えば、体重や睡眠時間なども表示される。

Appleヘルスケアアプリ

Apppleヘルスケア連動のアプリは色々あるが、例えばスマホ連動の体重計なら、そのスマホアプリで体重を見れると同時に、Appleヘルスケアにも体重データを連係できることが多い。

体重計メーカーのアプリでデータを見れるのに、更にAppleヘルスケアにもデータを保存する意味はあるか?

Appleヘルスケアで体重データを管理するメリットは、例えば体重計のメーカーを変えても過去データを引き継げる点。
また、Appleヘルスケアに取り込んだデータはiCloudにバックアップされるので、iPhoneの機種変をしてもずっとデータが引き継がれる。

一方で、iPhoneをやめてAndroidに移行する場合は、データが引き継げないデメリットもある。
その場合でも、Appleヘルスケアのデータは取り出してエクセルで扱うこともできるが、用途は限定的で、扱いが面倒ではある。

ヘルスケアのデータを書き出す

iPhoneからヘルスケアのデータを取り出すのは、簡単にできる。

まずは、ヘルスケア・アプリの右上アイコンを押下。

ヘルスケアからデータのエクスポート手順1

次に「すべてのヘルスケアデータを書き出す」を選択。

ヘルスケアからデータのエクスポート手順2

書き出したデータは色んな手法でエクスポートできるが、ここでは簡単な「メール添付で自分に送る」ということで。

ヘルスケアからデータのエクスポート手順3

データは圧縮されたzipファイルになっている。
解凍すると、xmlファイルが2つあり、データが入っているのは「export.xml」の方。

ヘルスケアからデータのエクスポート手順4

中身はxmlなので扱いが面倒だが、とりあえずでいうとエクセルで開ける。

export.xmlをエクセルで開く

「export.xml」をエクセルにD&Dすると、以下のメッセージがでるが、「読取り専用のブックとして開く」を選択する。

ヘルスケアからデータのエクスポート手順5

エクセルで開くと、ずらっとデータが表示される。

以下はエクセルのフィルタ機能で、体重(HKQuantityTypeIdentifierBodyMass)のみを表示したもの。

ヘルスケアからデータのエクスポート手順6

以下はフィルタ機能で、睡眠時間(HKCategoryTypeIdentifierSleepAnalysis)を表示したもの。
なお睡眠時間は、Appleヘルスケア対応の目覚ましアプリ「Sleep Cycle」のデータである。

ヘルスケアからデータのエクスポート手順7

ということで、エクセルで開くこと自体は簡単。

ちなみに「HKQuantityTypeIdentifierBodyMass」などデータの意味は、Appleのドキュメントを検索すれば出てくるので、それほど難しくない。
Specify the kind of data used in HealthKit

データはやたらたくさん入っているが、使うのは主に以下の列かと思います。

ヘッダー行意味
/Record/@typeデータの種類 (体重・歩数、etc)
/Record/@value
/Record/@unit単位 (kg・km・count、etc)
/Record/@creationDate記録データが作られた日(≠計測日)
/Record/@startDate記録開始日(=計測日)
/Record/@sourceName記録したアプリ(ヘルスケア連動元)
/Record/MetadataEntry/@keyメタデータのkey(フィルタリング用)

例えばアプリ「SleepCycle」で記録されたデータは「/Record/@sourceName」列が「SleepCycle」になっているので、それをフィルタリングすれば、そのデータのみ表示できる。

体重だけを表示したい場合は、「/Record/@type」列を「HKQuantityTypeIdentifierBodyMass」でフィルタする。

エクセルで扱う場合の問題点

まず第一に、エクセルでは最近のデータしか開けない場合がある。

例えば自分のexport.xmlには、2013年から2021年のデータが入っていたが、エクセルでは2019年~2021年のデータしか表示できなかった。

これはエクセルの表示行数の限界というより、データ構造がそのあたりで変わったからなんじゃないかと思われるが、ちゃんとはチェックしてない。

次に、データが「記録した単位」で記録されていること。

例えば歩数データであれば、一定時間単位で歩数が記録されており、例えば「ある1日の歩数」を知ろうとすると、複数の行を合算しないといけない。
その程度ならエクセルで何とかなるレベルではあるが、もう少し凝ったデータになるとメンドイことになる。
歩数はともかく、睡眠時間とかはエクセルだけで扱うのが難しそうだった。

そういう意味では「継続的な計測」系は扱いが面倒で、体重のような計測がワンショットの記録は扱いやすい

あと、メタデータを含めて複数行で表示されること。

例えば体重であれば、エクセル上では同じ計測データが複数行で表現される。
その場合、「/Record/MetadataEntry/@key」でフィルタしてやれば、解決する。

最後に、エクスポートしたデータを、再びiPhoneにインポートする方法がないこと。

ヘルスケアデータはiCloudに保存され、機種変更しても記録は引き継がれる。
そのため「再びiPhoneにインポートする」というシーンはあまりなさそうではあるが、一応、可能・不可能でいえば、今のところ「インポートする方法はない」ということになる。

まとめ

体重計など、計測が1回のデータは、エクセルでも簡単に扱える。
一方で「歩数」や「睡眠時間」のように、継続的に計測されるタイプのデータは、ちょっと工夫しないとエクセルで扱うのが面倒。

また、ここ数年分のデータしか表示できない可能性アリ。

ほい。

そんな感じ。