Google Health API のデータ型

次の表に、データ型の完全なリストを示します。各型の Google Health API での表現と、各型が使用可能なスコープを理解するのに役立つ複数の列があります。

表: Google Health API のデータ型
データ型
  dataType
  filter パラメータ
利用可能な
オペレーション
スコープ
アクティブな消費カロリー
active-energy-burned
active_energy_burned
レコードタイプ: Interval
list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
アクティブな時間(分)
active-minutes
active_minutes
レコードタイプ: Interval

対応デバイス

  • Fitbit Air
  • Fitbit Alta
  • Fitbit Alta HR
  • Fitbit Blaze
  • Fitbit Charge 2
  • Fitbit Charge 3
  • Fitbit Flex 2
  • Fitbit Inspire
  • Fitbit Inspire HR
  • Google Pixel Watch 4
list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
アクティブ ゾーン時間
active-zone-minutes
active_zone_minutes
レコードタイプ: Interval

対応デバイス

list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
アクティビティ レベル
activity-level
activity_level
レコードタイプ: Interval
list、reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
高度
altitude
altitude
レコードタイプ: Interval
list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
血糖値
blood-glucose
blood_glucose
レコードタイプ: サンプル
list、get、reconcile、rollup、dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
体脂肪率
body-fat
body_fat
レコードタイプ: サンプル

対応デバイス

list、get、reconcile、rollup、dailyRollup、create、update、batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
心拍ゾーン内の消費カロリー
calories-in-heart-rate-zone
calories_in_heart_rate_zone
レコードタイプ: Interval
rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
深部体温
core-body-temperature
core_body_temperature
レコードタイプ: サンプル
list、get、reconcile、rollup、dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
1 日の心拍変動
daily-heart-rate-variability
daily_heart_rate_variability
レコードタイプ: 毎日

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
1 日の心拍ゾーン
daily-heart-rate-zones
daily_heart_rate_zones
レコードタイプ: 毎日
list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
1 日の酸素飽和度
daily-oxygen-saturation
daily_oxygen_saturation
レコードタイプ: 毎日

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
1 日の呼吸数
daily-respiratory-rate
daily_respiratory_rate
レコードタイプ: 毎日

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
1 日の安静時の心拍数
daily-resting-heart-rate
daily_resting_heart_rate
レコードタイプ: 毎日

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
毎日の睡眠時の体温の推移
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
レコードタイプ: 毎日

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
1 日の最大酸素摂取量
daily-vo2-max
daily_vo2_max
レコードタイプ: 毎日

対応デバイス

list、reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
距離
distance
distance
レコードタイプ: Interval

対応デバイス

list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
心電図(ECG)
electrocardiogram
electrocardiogram
レコードタイプ: セッション

対応デバイス

list .ecg.readonly
エクササイズ
exercise
exercise
レコードタイプ: セッション

対応デバイス

list、get、reconcile、create、update、batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
階数
floors
floors
レコードタイプ: Interval
reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
食べ物
food
food
レコードタイプ: Food
list、get .nutrition.readonly
.nutrition.writeonly
食品の測定単位
food-measurement-unit
food_measurement_unit
レコードタイプ: Food

対応デバイス

list、get .nutrition.readonly
.nutrition.writeonly
心拍数
heart-rate
heart_rate
レコードタイプ: サンプル

対応デバイス

list、reconcile、rollup、dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
心拍変動
heart-rate-variability
heart_rate_variability
レコードタイプ: サンプル

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
身長
height
height
レコードタイプ: サンプル
list、get、reconcile、create、update、batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
水分摂取量の記録
hydration-log
hydration_log
レコードタイプ: セッション
list、get、reconcile、rollup、dailyRollup、create、update、batchDelete .nutrition.readonly
.nutrition.writeonly
不整脈の通知
irregular-rhythm-notification
irregular_rhythm_notification
レコードタイプ: セッション
list .irn.readonly
月経期間
menstrual-period
menstrual_period
レコードタイプ: Interval
create、update、batchDelete .reproductive_health.writeonly
ムード
moods
moods
レコードタイプ: サンプル
create、update、batchDelete .mindfulness.writeonly
栄養摂取量の記録
nutrition-log
nutrition_log
レコードタイプ: サンプル

対応デバイス

list、get、reconcile、rollup、dailyRollup、create、update、batchDelete .nutrition.readonly
.nutrition.writeonly
排卵検査
ovulation-test
ovulation_test
レコードタイプ: サンプル
create、update、batchDelete .reproductive_health.writeonly
酸素飽和度
oxygen-saturation
oxygen_saturation
レコードタイプ: サンプル

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
呼吸数の睡眠のまとめ
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
レコードタイプ: サンプル

対応デバイス

list、reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
ランニング時の最大酸素摂取量
run-vo2-max
run_vo2_max
レコードタイプ: サンプル

対応デバイス

list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
座りがちな期間
sedentary-period
sedentary_period
レコードタイプ: Interval

対応デバイス

list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
睡眠
sleep
sleep
レコードタイプ: セッション

対応デバイス

list、get、reconcile、create、update、batchDelete .sleep.readonly
.sleep.writeonly
手順
steps
steps
レコードタイプ: Interval

対応デバイス

list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
プールの長さデータ
swim-lengths-data
swim_lengths_data
レコードタイプ: Interval

対応デバイス

list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
症状
symptoms
symptoms
レコードタイプ: サンプル
create、update、batchDelete .logged_symptoms.writeonly
心拍ゾーンの時間
time-in-heart-rate-zone
time_in_heart_rate_zone
レコードタイプ: Interval
list、reconcile、rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
総消費カロリー
total-calories
total_calories
レコードタイプ: Interval

対応デバイス

rollup、dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
最大酸素摂取量
vo2-max
vo2_max
レコードタイプ: サンプル

対応デバイス

list、reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
重み
weight
weight
レコードタイプ: サンプル

対応デバイス

list、get、reconcile、rollup、dailyRollup、create、update、batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

クエリの制約

API からデータポイント、ロールアップ、日次ロールアップをクエリする場合は、次の制約に注意してください。

  • フィルタの要件: total-calories などの読み取り専用の派生データ型では、間隔の開始時刻を指定するフィルタ(物理時間または市民時間を使用)が必要です。
  • クエリ範囲の上限: ロールアップと 1 日のロールアップ集計エンドポイントでは、データ型に基づいてクエリ範囲の上限が適用されます。
    • calories-in-heart-rate-zoneheart-rateactive-minutestotal-calories の最大クエリ範囲は 14 日間です。
    • 他のすべてのデータ型の場合、クエリの最大範囲は 90 日間です。

データの可用性

ユーザーのデータは、アクティビティ トラッカーを同期するか、Fitbit モバイルアプリまたはウェブアプリに新しいデータを手動で入力した後にのみ更新されます。Fitbit デバイスと Fitbit モバイルアプリは、モバイル デバイスで Fitbit アプリが開いていて、両者がアクティブなデータ接続を持ち、Bluetooth の範囲内にある場合、15 分ごとに自動的に同期できます。ユーザーが MobileTrack を使用してアクティビティを記録している場合、アプリが開いている限り、MobileTrack は 1 時間ごとに同期します。

過去のデータのクエリ

Google Health API の主なメリットの一つは、ユーザーのパフォーマンスを追跡し、健康状態を長期間にわたってモニタリングできることです。ユーザーのデータは、記録された時点まで遡ってクエリできます。API では、アプリケーションが使用できる過去のデータ量に制限は課されません。

ただし、過去のデータのクエリは、標準のレート制限の対象となります。システムの安定性を管理し、過剰なペイロードを防ぐため、Google Health API はエンドポイント固有のページサイズで自動ページネーションを使用します。次の境界と動作に注意してください。

  • 自動ページ設定: 長い期間のデータをクエリすると、API はそのエンドポイントのページサイズの上限までの結果の最初のページと nextPageToken のみを返します。後続のページをリクエストするには、nextPageToken を使用する必要があります。
  • 可変ページサイズ: 上限は、エンドポイントとデータ型によって異なります。ほとんどのデータ型では、ページサイズの上限は 10,000 です。ただし、exercisesleep などの特定のデータ型では、デフォルトと最大ページサイズは 25 に制限されます。たとえば、クライアントが過去 10 年間のすべての睡眠データをリクエストした場合でも、API は最初のページに 25 件の睡眠セッションのみを返します。
  • ロールアップの日付範囲の制限: データ ロールアップと集計のエンドポイント(rollUpdailyRollUp など)では、クエリの日付範囲はデータ型に基づいて制限されます。
    • calories-in-heart-rate-zoneheart-rateactive-minutestotal-calories の最大範囲は 14 日間です。
    • 他のすべてのロールアップ データ型の最大期間は 90 日間です。

アプリケーションに必要な過去のデータ量によっては、データセット全体を取得するために、ページを順番にページネーションする必要があります。アプリケーションのデータ同期プロセスを設計する際は、この点に留意してください。

最適なパフォーマンスを確保し、API エラーを回避するには、過去のデータをクエリする際に次のガイドラインに従ってください。

段階的なデータ同期(ホットロードとコールド スタートの読み込み)

  • 初期の「ホット」読み込み: メインの読み込みシーケンス中に、最新の 7 ~ 14 日間のデータのみを取得してレンダリングします。これにより、ユーザーは長時間実行されるクエリを待つことなく、データをすぐに確認できます。
  • バックグラウンドの「コールド」読み込み: メイン UI のレンダリング後に、古い履歴データの取得を非同期の優先度の低いキューまたはバックグラウンド プロセスに委任します。

集計のためのクエリのチャンク化

  • ロールアップ エンドポイントと毎日のロールアップ エンドポイントでは、最大期間の上限(データ型に応じて 14 日または 90 日)が適用されるため、過去の大きな集計クエリを、この上限内の小さな連続した間隔に分割する必要があります。
  • これらのサブクエリを安全にバッチ処理またはシーケンス処理して、同時実行制限を尊重し、UI の進行状況インジケーターを安定した状態に保ちます。

事前集計されたロールアップを活用する

事前集計された概要エンドポイント(DailyRollUpDataPoints など)を使用するように、概要ダッシュボードと傾向グラフを再構築します。これにより、バックエンドのコンピューティング オーバーヘッドとクライアントへのネットワーク転送時間が大幅に短縮されます。

復元力のあるエラー処理(スマート再試行)

  • レート制限(429 Too Many Requests)とサーバー ゲートウェイ タイムアウト(504 Gateway Timeout)が発生した場合は、厳密な指数バックオフ処理を実装します。失敗した大きなペイロードをすぐに再試行しないでください。即時再試行はバックエンドの輻輳を増大させ、システム劣化を悪化させます。

サードパーティによるアクセス

Fitbit デバイスは、サードパーティのアプリやサービスと直接通信できません。これらのデバイスは、Fitbit モバイルアプリとのみ通信して同期するように設計されています。

デバイスは、Fitbit アプリが開いているときは 1 日を通して自動的にデータを同期します。また、Bluetooth が有効でアプリがバックグラウンドで実行されている場合は、15 分ごとにデータを同期します。この同期プロセスが完了すると、Google Health API を介してサードパーティ サービスでデータを利用できるようになります。

距離の基準

elevationGainMillimeters などの運動距離は、次の理由から標準単位としてミリメートルで測定されます。

  1. データの精度を維持する: ミリメートルを使用する最も重要な理由は、読み取って提供するデータの精度を維持するためです。ミリメートルなどの細かい単位を使用すると、測定値を高い精度で表すことができます。
  2. 標準化: ミリメートルは、Google のサービス全体で設計された標準単位です。この一貫性により、API のさまざまな部分を操作するデベロッパーに一貫したエクスペリエンスを提供できます。
  3. 幅広い測定システムのサポート: ミリメートルなどの基本単位を使用すると、デベロッパーは、メートル法、ヤード・ポンド法、その他の測定システムを使用しているかどうかにかかわらず、選択した他の単位に簡単に変換できます。

昼の長さが変化する

Health API による時間の処理では、ユーザーの時間を優先して、夏時間や旅行による 1 日の長さの変動を考慮します。すべてのデータポイントは、物理的な UTC タイムスタンプと、イベント発生時に有効だった UTC オフセットの両方とともに保存されます。これにより、システムで次のことが可能になります。

  • イベントを正確な物理的な瞬間にマッピングします。
  • 集計のために、時間をユーザーのローカル コンテキストに修正します。

夏時間

夏時間が終了すると、25 時間の暦日となり、その日付のロールアップには 25 時間分のデータが含まれます。「春の進み」では、時刻が標準時に戻る 23 時間の民事日になります。

旅行

タイムゾーンを移動すると、1 日の物理的な長さがさらに大きく変動する可能性があります。

dailyRollUp エンドポイントを使用して、タイムゾーンの差異を調整します。ユーザーの現地時間に基づいて、記録された日付にデータが自動的に割り当てられるため、タイムゾーンの変更があっても、日付が効果的に「つなぎ合わされます」。