自戒、点検、内省

終わらない反省会をしよう

Apple ヘルスケアの内容をClaudeで深掘り

Apple Watch と iPhone でひたすら健康データを積み上げてきました。歩数、睡眠、HRV(心拍変動)、安静時心拍、VO2Max……。記録はあるのに、アプリで眺めて「ふーん」で終わる毎日でした。

この状況を変えたくて、Apple ヘルスケアの export.xml から SQLite DB を構築し、Claude から直接クエリできる仕組みを整えました。今回はその最新構成の話です。

前回

retrospective.hatenadiary.com

ツールはこちら

SQLiteのDBにするツール github.com

SQLiteをMCPでClaudeに公開するツール github.com

仕組み:chiebukuro-mcp 経由でデータと会話する

export.xml (数GB)
↓ import_xml.rb(SAXパース、初回のみ)
raw_records(全件)
↓ build_summary.rb
daily_summary(日次集計)
↑
chiebukuro-mcp(chiebukuro_query_health ツール)
↑
Claude Code / Claude Desktop

ポイントは chiebukuro-mcp というところです。以前は自前で MCP サーバーを立てていましたが、今は廃止して chiebukuro-mcp に統合しました。

chiebukuro-mcp は「知恵袋」として、いろんな情報をいれたいくつかのSQLiteのDBをまとめて Claude に提供する個人用 MCP サーバーです。この機能により、 chiebukuro_query_health というツールが登録されており、Claude がここに SELECT を投げると即座に結果が返ってきます。

自前 MCP サーバーを別途起動・管理する必要がなくなり、Claude Code を開けばそのまま健康データと話せる状態になっています。

データの構造

DB に持っているのはこういう指標です:

指標 内容
step_count 歩数
active_energy 消費カロリー
body_mass 体重
body_fat 体脂肪率
heart_rate 平均心拍数
resting_hr 安静時心拍
hrv HRV(SDNN)
respiratory_rate 呼吸数
vo2max VO2Max
sleep_hours 就床時間
asleep_hours 実睡眠時間
body_battery Garmin 身体スコア

daily_summary テーブルに日次で集計されており、raw_records には Apple Health の生データが全件入っています。

使い方:自然言語で聞くだけ

Claude Code で直接質問するだけです。

直近90日の健康状態をまとめて。HRV・安静時心拍・睡眠・歩数の傾向と、
このまま続けると3ヶ月後どうなりそうかも教えて。

裏では chiebukuro_query_health が走り、Claude が結果を受け取って考察します。SQL は書かなくていい。

深掘りも自然言語でそのまま投げられます:

後者の問いには、Claude が条件付きの SQL を自力で組み立ててくれます。自分で SQL を書いてもできることですが、「思いついたままに聞ける」という体験は別物です。

やってみてよかったこと

複数指標を横断した気づきが早いです。「睡眠時間は十分なのに翌日スコアが低い日がある」と思っていたら、「就床〜実睡眠の乖離が大きい日に翌日スコアが下がる傾向がある」と Claude がすぐ指摘してくれました。睡眠の「量」ではなく「質(寝つきの悪さ)」が影響している可能性を、数値ベースで見せてもらえます。

もちろん偽相関もあるので、そのまま信じるのではなく「こういう傾向があるかもしれない」として扱っています。それでも、眺めるだけだったデータが「仮説を試す素材」に変わったのは大きな変化です。

DB の再構築

Apple Health で新しいデータをエクスポートしたときは /apple-health-care-update-db コマンドで DB を再構築できます。初回セットアップは /apple-health-care-init-db です。どちらも Claude Code のスラッシュコマンドとして登録してあり、サブエージェントが一連の作業を自動でやってくれます。