health-data について
health-data は、ローカルの SQLite データベースにある Apple Health データを検索・分析するスキルです。定型レポートに加え、SQL による独自の分析にも対応します。
主な機能
- 01日次・週次の健康サマリー
- 02睡眠、バイタル、活動、ワークアウトの検索
- 03Markdown、JSON、FHIR R4、ASCII 形式で出力
- 04SQL によるカスタム分析
活用シーン
- 01日々の歩数、カロリー、心拍数の確認
- 02週ごとの活動量と安静時心拍数の比較
- 03睡眠ステージと夜間の睡眠時間の分析
- 04健康測定データの FHIR R4 形式での出力
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ glebis/ claude-skills --skill health-dataインストール後、Claude Code で/health-dataを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.claude-plugin/plugin.jsonreferences/fhir_mappings.mdschema.mdscripts/health_query.py詳細
Apple Health データクエリスキル
43 種類の健康指標にわたる 630 万件以上のレコードを含む、ローカルの SQLite データベースから健康データをクエリして分析します。
データベースの場所
~/data/health.db
クエリ方法
1. Python スクリプト(一般的なクエリにおすすめ)
scripts/health_query.py を使用すると、あらかじめ用意されたクエリを自動的にフォーマットできます。
# Daily summary
python ~/.claude/skills/health-data/scripts/health_query.py --format markdown daily --date 2025-11-29
# Weekly trends
python ~/.claude/skills/health-data/scripts/health_query.py --format json weekly --weeks 4
# Sleep analysis
python ~/.claude/skills/health-data/scripts/health_query.py --format fhir sleep --days 7
# Latest vitals
python ~/.claude/skills/health-data/scripts/health_query.py vitals
# Activity rings
python ~/.claude/skills/health-data/scripts/health_query.py --format json activity --days 30
# Workout history
python ~/.claude/skills/health-data/scripts/health_query.py workouts --days 30 --type Running
# Custom SQL
python ~/.claude/skills/health-data/scripts/health_query.py --format json query "SELECT * FROM workouts LIMIT 5"
出力形式: markdown、json、fhir、ascii
2. 直接 SQL(カスタム/アドホッククエリ向け)
柔軟にクエリするには、データベースに対して SQL を直接実行します。テーブル構造とクエリテンプレートについては、references/schema.md を参照してください。
sqlite3 ~/data/health.db "SELECT AVG(value) FROM health_records WHERE record_type LIKE '%HeartRate%' AND start_date LIKE '2025-11%'"
あらかじめ用意されたクエリ
1 日の健康サマリー
今日の主要な指標を取得します:
python ~/.claude/skills/health-data/scripts/health_query.py daily
返される項目:歩数、カロリー、心拍数(平均/最小/最大)、運動時間、距離、アクティビティリングの状況。
週ごとの傾向
週ごとのパフォーマンスを比較します:
python ~/.claude/skills/health-data/scripts/health_query.py weekly --weeks 4
返される項目:1 日あたりの平均歩数、安静時心拍数、運動時間、週ごとのワークアウト回数。
睡眠分析
睡眠パターンを分析します:
python ~/.claude/skills/health-data/scripts/health_query.py sleep --days 14
返される項目:夜間の睡眠時間、睡眠ステージ(コア、深い睡眠、REM)、平均睡眠時間。
最新のバイタルサイン
直近のバイタル測定値を取得します:
python ~/.claude/skills/health-data/scripts/health_query.py vitals
返される項目:心拍数、HRV、安静時心拍数、血中酸素濃度、呼吸数とタイムスタンプ。
アクティビティリング
リングの達成状況を追跡します:
python ~/.claude/skills/health-data/scripts/health_query.py activity --days 30
返される項目:1 日ごとのリングの値/目標、達成率、すべてのリングを達成した日数。
ワークアウト履歴
運動セッションを確認します:
python ~/.claude/skills/health-data/scripts/health_query.py workouts --days 30 --type Running
返される項目:ワークアウトの種類、時間、距離、カロリー、種類ごとのサマリー。
出力形式
Markdown(デフォルト)
読みやすい表やリストで出力します。レポートやサマリーに最適です。
JSON
プログラムで利用できる構造化データです:
{
"date": "2025-11-29",
"metrics": {
"steps": 8542,
"active_calories": 450.5,
"heart_rate": {"avg": 72.3, "min": 52, "max": 145}
}
}
FHIR R4
医療情報の相互運用形式です。LOINC コードを使用した Observation リソースを含む FHIR Bundle として出力します。コードの対応表については、references/fhir_mappings.md を参照してください。
ASCII
棒グラフと統計を含む、ターミナルで見やすい出力です:
============================================================
DAILY SUMMARY - 2025-11-29
============================================================
METRICS
----------------------------------------
steps 2620
active_calories 234.5
heart_rate avg: 67.5 min: 52 max: 108
ACTIVITY RINGS
----------------------------------------
move [███████░░░░░░░░░░░░░] 36.7% (238/650)
exercise [░░░░░░░░░░░░░░░░░░░░] 0.0% (0/35)
stand [████████████████████] 100.0% (10/10)
よく使われる SQL パターン
アドホッククエリには、references/schema.md にある次のパターンを使用します。
時間ごとの心拍数(概日リズムのパターン):
SELECT strftime('%H', start_date) as hour, ROUND(AVG(value), 1) as avg_hr
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierHeartRate'
AND value BETWEEN 40 AND 200
GROUP BY hour ORDER BY hour;
今月の日ごとの歩数:
SELECT DATE(start_date) as day, SUM(value) as steps
FROM health_records
WHERE record_type = 'HKQuantityTypeIdentifierStepCount'
AND start_date >= DATE('now', 'start of month')
GROUP BY day ORDER BY day;
睡眠の質(深い睡眠+REM の時間):
SELECT DATE(start_date) as night,
ROUND(SUM(duration_minutes)/60.0, 1) as quality_hours
FROM sleep_sessions
WHERE sleep_stage IN ('Deep', 'REM')
GROUP BY night ORDER BY night DESC LIMIT 14;
ワークアウトのサマリー:
SELECT REPLACE(workout_type, 'HKWorkoutActivityType', '') as type,
COUNT(*) as count, ROUND(SUM(duration_minutes)) as total_min
FROM workouts
WHERE start_date >= DATE('now', '-30 days')
GROUP BY type ORDER BY count DESC;
利用可能なレコードの種類
データベースには、次のような 43 種類の健康指標が含まれています。
バイタルサイン: 心拍数、HRV、安静時心拍数、血中酸素濃度、呼吸数、血圧
アクティビティ: 歩数、距離、アクティブカロリー、基礎代謝カロリー、上った階数、運動時間、スタンド時間
モビリティ: 歩行速度、歩幅、歩行時の非対称性、階段昇降速度、歩行安定性
身体: 体重、BMI、体脂肪率
音声: 環境騒音、ヘッドフォンの音量
その他: VO2 Max、日光を浴びた時間、紫外線への曝露
データの対象範囲
- レコード数: 630 万件以上の測定値
- 日付範囲: 2015-10-13 から現在まで
- ワークアウト: 1,435 セッション
- 睡眠セッション: 40,514 レコード
- アクティビティ日数: 1,875 日分のサマリー
リソース
scripts/
health_query.py- Markdown/JSON/FHIR 形式で出力するメインのクエリツール
references/
schema.md- データベーススキーマ、レコードの種類の対応表、SQL クエリテンプレートfhir_mappings.md- LOINC コードと FHIR R4 テンプレート
トラブルシューティング
データベースが見つからない場合:
~/data/health.db が存在することを確認してください。/Users/server/apple_health_export/ からインポートスクリプトを実行します。
python import_health.py --status
指定した日付範囲にデータがない場合: 利用可能な日付範囲を確認します。
SELECT MIN(start_date), MAX(start_date) FROM health_records;
外れ値がある場合: 生理学的に妥当な範囲(例:心拍数 40~200 bpm)でフィルタリングします。
WHERE value BETWEEN 40 AND 200