ワークアウト - JSONエクスポート形式

JSONエクスポートでのワークアウト構造に関するドキュメント

Last updated: February 6, 2026

On this page

ワークアウト

ワークアウトデータには、Apple Healthに記録されたランニング、サイクリング、水泳、筋力トレーニングなどのすべての運動セッションが含まれます。JSONエクスポートでは、ワークアウトはworkouts配列に保存されます。

エクスポートバージョン

Health Auto Exportは2つのワークアウトエクスポートバージョンをサポートしています:

  • バージョン2(推奨):より詳細なメタデータと構造化データを備えた拡張形式
  • バージョン1(レガシー):既存のワークフローとの互換性のために維持されている古い形式

ワークアウト バージョン2

バージョン2は、データが利用可能な場合にのみ含まれるオプションフィールドを含む包括的な構造を提供します。

基本構造

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "Running",
  "start": "2024-02-06 07:00:00 -0800",
  "end": "2024-02-06 07:30:00 -0800",
  "duration": 1800
}

必須フィールド

  • id (String): ワークアウトの一意の識別子
  • name (String): ワークアウトタイプ名(例:「Running」、「Cycling」、「Swimming」)
  • start (Date): yyyy-MM-dd HH:mm:ss Z形式のワークアウト開始時刻
  • end (Date): yyyy-MM-dd HH:mm:ss Z形式のワークアウト終了時刻
  • duration (Number): 秒単位のワークアウト時間

オプションフィールド

以下のフィールドは、データが利用可能な場合にのみ含まれます:

場所情報

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): "Indoor""Outdoor""Pool""Open Water"のいずれか
  • isIndoor (Boolean): ワークアウトが屋内で行われたかどうか

エネルギーと強度

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "MET"
  }
}
  • activeEnergyBurned (Object): ワークアウト中に燃焼したアクティブカロリー
  • totalEnergy (Object): 燃焼した総カロリー(アクティブ+安静時)
  • intensity (Object): タスクの代謝当量(MET)値

距離と速度

{
  "distance": {
    "qty": 3.5,
    "units": "mi"
  },
  "speed": {
    "qty": 7.0,
    "units": "mph"
  },
  "avgSpeed": {
    "qty": 7.0,
    "units": "mph"
  },
  "maxSpeed": {
    "qty": 8.5,
    "units": "mph"
  }
}
  • distance (Object): 移動した総距離
  • speed (Object): 現在または平均速度
  • avgSpeed (Object): ワークアウト全体の平均速度
  • maxSpeed (Object): 達成した最大速度

単位:

  • 距離:"mi"(マイル)または"km"(キロメートル)
  • 速度:"mph"(時速マイル)または"kmph"(時速キロメートル)

標高

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): 獲得した総標高
  • elevationDown (Object): 失った総標高

単位: "ft"(フィート)または"m"(メートル)

環境データ

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): ワークアウト中の周囲温度
  • humidity (Object): 相対湿度のパーセンテージ

温度単位: "degF"(華氏)または"degC"(摂氏)

水泳専用フィールド

{
  "lapLength": {
    "qty": 0.025,
    "units": "mi"
  },
  "strokeStyle": "Freestyle",
  "swolfScore": 45,
  "salinity": "Fresh Water",
  "totalSwimmingStrokeCount": {
    "qty": 1200,
    "units": "count"
  },
  "swimCadence": {
    "qty": 30,
    "units": "spm"
  }
}
  • lapLength (Object): 各ラップの長さ
  • strokeStyle (String): 次のいずれか:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): 水泳効率スコア
  • salinity (String): "Fresh Water"または"Salt Water"
  • totalSwimmingStrokeCount (Object): ストロークの総数
  • swimCadence (Object): 1分あたりのストローク数

歩数とケイデンスデータ

{
  "stepCount": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 5000,
      "units": "count",
      "source": "Apple Watch"
    }
  ],
  "stepCadence": {
    "qty": 180,
    "units": "spm"
  },
  "flightsClimbed": {
    "qty": 10,
    "units": "count"
  }
}
  • stepCount (Array): 時間経過に伴う歩数測定の配列
  • stepCadence (Object): 1分あたりの歩数
  • flightsClimbed (Object): 上った階段のフライト数

心拍数データ

{
  "heartRate": {
    "min": {
      "qty": 120,
      "units": "bpm"
    },
    "avg": {
      "qty": 150,
      "units": "bpm"
    },
    "max": {
      "qty": 175,
      "units": "bpm"
    }
  },
  "maxHeartRate": {
    "qty": 175,
    "units": "bpm"
  },
  "avgHeartRate": {
    "qty": 150,
    "units": "bpm"
  },
  "heartRateData": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "Min": 120,
      "Avg": 150,
      "Max": 175,
      "units": "bpm",
      "source": "Apple Watch"
    }
  ],
  "heartRateRecovery": [
    {
      "date": "2024-02-06 07:30:00 -0800",
      "Min": 140,
      "Avg": 145,
      "Max": 150,
      "units": "bpm",
      "source": "Apple Watch"
    }
  ]
}
  • heartRate (Object): 最小、平均、最大心拍数のサマリー
  • maxHeartRate (Object): ワークアウト中の最大心拍数
  • avgHeartRate (Object): ワークアウト中の平均心拍数
  • heartRateData (Array): ワークアウト全体の詳細な心拍数測定
  • heartRateRecovery (Array): 回復期間中の心拍数測定

時系列データ配列

「ワークアウトメトリクスを含める」が有効になっている場合、多くのメトリクスを時系列配列として含めることができます:

{
  "activeEnergy": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 50,
      "units": "kcal",
      "source": "Apple Watch"
    }
  ],
  "basalEnergy": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 20,
      "units": "kcal",
      "source": "Apple Watch"
    }
  ],
  "cyclingCadence": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 90,
      "units": "rpm",
      "source": "Apple Watch"
    }
  ],
  "cyclingDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 0.5,
      "units": "mi",
      "source": "Apple Watch"
    }
  ],
  "cyclingPower": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 200,
      "units": "W",
      "source": "Power Meter"
    }
  ],
  "cyclingSpeed": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 18,
      "units": "mph",
      "source": "Apple Watch"
    }
  ],
  "swimDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 25,
      "units": "yd",
      "source": "Apple Watch"
    }
  ],
  "swimStroke": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 20,
      "units": "count",
      "source": "Apple Watch"
    }
  ],
  "walkingAndRunningDistance": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 0.25,
      "units": "mi",
      "source": "Apple Watch"
    }
  ]
}

QuantityData構造:

  • date (Date): 測定のタイムスタンプ
  • qty (Number): 数量値
  • units (String): 測定単位
  • source (String, オプション): データソースデバイスまたはアプリ

HeartRateData構造:

  • date (Date): 測定のタイムスタンプ
  • Min (Number): 最小心拍数
  • Avg (Number): 平均心拍数
  • Max (Number): 最大心拍数
  • units (String): 単位(通常は「bpm」)
  • source (String, オプション): データソースデバイスまたはアプリ

ルートデータ

「ルートデータを含める」が有効で、ワークアウトにGPSデータがある場合:

{
  "route": [
    {
      "latitude": 37.7749,
      "longitude": -122.4194,
      "altitude": 50.5,
      "course": 45.0,
      "courseAccuracy": 5.0,
      "horizontalAccuracy": 10.0,
      "verticalAccuracy": 15.0,
      "timestamp": "2024-02-06 07:00:00 -0800",
      "speed": 7.0,
      "speedAccuracy": 0.5
    }
  ]
}

位置フィールド:

  • latitude (Number): GPS緯度座標
  • longitude (Number): GPS経度座標
  • altitude (Number): メートル単位の標高
  • course (Number): 度単位の移動方向(0-360)
  • courseAccuracy (Number): 度単位のコース測定の精度
  • horizontalAccuracy (Number): メートル単位の水平位置精度
  • verticalAccuracy (Number): メートル単位の垂直位置精度
  • timestamp (Date): 位置が記録された時刻
  • speed (Number): メートル/秒単位の速度
  • speedAccuracy (Number): m/s単位の速度測定の精度

メタデータ

{
  "metadata": {
    "customField": "value",
    "anotherField": 123
  }
}
  • metadata (Object): ワークアウトに関連付けられた追加のカスタムメタデータ

ワークアウト バージョン1(レガシー)

バージョン1はよりシンプルな構造を使用します。新しいエクスポートにはバージョン2が推奨されます。

バージョン1構造

{
  "name": "Running",
  "start": "2024-02-06 07:00:00 -0800",
  "end": "2024-02-06 07:30:00 -0800",
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "activeEnergy": {
    "qty": 350,
    "units": "kcal"
  },
  "distance": {
    "qty": 3.5,
    "units": "mi"
  },
  "heartRateData": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 150,
      "units": "count"
    }
  ],
  "route": [
    {
      "lat": 37.7749,
      "lon": -122.4194,
      "altitude": 50.5,
      "timestamp": "2024-02-06 07:00:00 -0800"
    }
  ]
}

ワークアウトメトリクスの時間グループ化

エクスポートバージョン2を使用し、「ワークアウトメトリクスを含める」が有効な場合、時系列データの粒度を制御できます:

  • : ワークアウトメトリクスを分間隔でグループ化
  • : ワークアウトメトリクスを秒間隔でグループ化(より詳細、ファイルサイズが大きい)

ヒント

  • ルートデータを含める: 屋外ワークアウトのGPSルート情報を取得するには、このオプションを有効にします
  • ワークアウトメトリクスを含める: 心拍数、パワー、ケイデンスなどのメトリクスの詳細な時系列データを取得するには、これを有効にします
  • エクスポートバージョン: 最も包括的なデータ構造にはバージョン2を使用します
  • GPXエクスポート: ルートデータは、マッピングアプリケーションで使用するために、別のGPXファイルとしてエクスポートすることもできます

関連ドキュメント