次の表に、データ型の完全なリストを示します。各型の Google Health API での表現と、各型が使用可能なスコープを理解するのに役立つ複数の列があります。
データ型dataType
filter パラメータ |
Record type |
利用可能な オペレーション |
スコープ | Webhook サポート |
真のゼロの サポート |
|---|---|---|---|---|---|
アクティブな消費カロリー
active-energy-burnedactive_energy_burned
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
アクティブな時間(分)
active-minutesactive_minutes
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
アクティブ ゾーン時間
active-zone-minutesactive_zone_minutes
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
アクティビティ レベル
activity-levelactivity_level
|
間隔 | list、reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
高度
altitudealtitude
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
血糖値
blood-glucoseblood_glucose
|
サンプル | list、get、reconcile、rollup、dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
体脂肪率
body-fatbody_fat
|
サンプル | list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
心拍ゾーン内の消費カロリー
calories-in-heart-rate-zonecalories_in_heart_rate_zone
|
間隔 | rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
深部体温
core-body-temperaturecore_body_temperature
|
サンプル | list、get、reconcile、rollup、dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
1 日の心拍変動
daily-heart-rate-variabilitydaily_heart_rate_variability
|
毎日 | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
1 日の心拍ゾーン
daily-heart-rate-zonesdaily_heart_rate_zones
|
毎日 | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
1 日の酸素飽和度
daily-oxygen-saturationdaily_oxygen_saturation
|
毎日 | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
1 日の呼吸数
daily-respiratory-ratedaily_respiratory_rate
|
毎日 | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
1 日の安静時の心拍数
daily-resting-heart-ratedaily_resting_heart_rate
|
毎日 | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
毎日の睡眠時の体温の推移
daily-sleep-temperature-derivationsdaily_sleep_temperature_derivations
|
毎日 | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
1 日の最大酸素摂取量
daily-vo2-maxdaily_vo2_max
|
毎日 | list、reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
距離
distancedistance
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
心電図(ECG)
electrocardiogramelectrocardiogram
|
セッション | list | .ecg.readonly |
||
エクササイズ
exerciseexercise
|
セッション | list、get、reconcile、create、update、batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
階数
floorsfloors
|
間隔 | reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
食べ物
foodfood
|
食べ物 | list、get | .nutrition.readonly.nutrition.writeonly |
||
食品の測定単位
food-measurement-unitfood_measurement_unit
|
食べ物 | list、get | .nutrition.readonly.nutrition.writeonly |
||
心拍数
heart-rateheart_rate
|
サンプル | list、reconcile、rollup、dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
心拍変動
heart-rate-variabilityheart_rate_variability
|
サンプル | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
身長
heightheight
|
サンプル | list、get、reconcile、create、update、batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
水分摂取量の記録
hydration-loghydration_log
|
セッション | list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .nutrition.readonly.nutrition.writeonly |
||
不整脈の通知
irregular-rhythm-notificationirregular_rhythm_notification
|
セッション | list | .irn.readonly |
||
月経期間
menstrual-periodmenstrual_period
|
間隔 | create、update、batchDelete | .reproductive_health.writeonly |
||
ムード
moodsmoods
|
サンプル | create、update、batchDelete | .mindfulness.writeonly |
||
栄養摂取量の記録
nutrition-lognutrition_log
|
サンプル | list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .nutrition.readonly.nutrition.writeonly |
||
排卵検査
ovulation-testovulation_test
|
サンプル | create、update、batchDelete | .reproductive_health.writeonly |
||
酸素飽和度
oxygen-saturationoxygen_saturation
|
サンプル | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
呼吸数の睡眠の概要
respiratory-rate-sleep-summaryrespiratory_rate_sleep_summary
|
サンプル | list、reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
||
ランニング時の最大酸素摂取量
run-vo2-maxrun_vo2_max
|
サンプル | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
座りがちな時間
sedentary-periodsedentary_period
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
睡眠
sleepsleep
|
セッション | list、get、reconcile、create、update、batchDelete | .sleep.readonly.sleep.writeonly |
||
手順
stepssteps
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
プールの長さのデータ
swim-lengths-dataswim_lengths_data
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
症状
symptomssymptoms
|
サンプル | create、update、batchDelete | .logged_symptoms.writeonly |
||
心拍ゾーンの時間
time-in-heart-rate-zonetime_in_heart_rate_zone
|
間隔 | list、reconcile、rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
総カロリー
total-caloriestotal_calories
|
間隔 | rollup、dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
最大酸素摂取量
vo2-maxvo2_max
|
サンプル | list、reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
||
重み
weightweight
|
サンプル | list、get、reconcile、rollup、dailyRollup、create、update、batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
クエリの制約
API からデータポイント、ロールアップ、日次ロールアップをクエリする場合は、次の制約に注意してください。
- フィルタの要件:
total-caloriesなどの読み取り専用の派生データ型では、間隔の開始時刻を指定するフィルタ(物理時間または市民時間を使用)が必要です。 - クエリ範囲の上限:
calories-in-heart-rate-zone、heart-rate、active-minutes、total-caloriesの最大クエリ範囲は 14 日です。他のすべてのデータ型の最大クエリ範囲は 90 日です。
データの可用性
ユーザーのデータは、アクティビティ トラッカーを同期するか、Fitbit モバイルアプリまたはウェブアプリに新しいデータを手動で入力した後にのみ更新されます。Fitbit デバイスと Fitbit モバイルアプリは、モバイル デバイスで Fitbit アプリが開いていて、両者がアクティブなデータ接続を持ち、Bluetooth の範囲内にある場合、15 分ごとに自動的に同期できます。ユーザーが MobileTrack を使用してアクティビティを記録している場合、アプリが開いている限り、MobileTrack は 1 時間ごとに同期します。
過去のデータのクエリ
Google Health API の主なメリットの一つは、ユーザーのパフォーマンスを追跡し、健康状態を長期間にわたってモニタリングできることです。ユーザーのデータは、記録された時点まで遡ってクエリできます。API では、アプリケーションが使用できる過去のデータ量に制限は課されません。
ただし、過去のデータのクエリは、標準のレート制限の対象となります。これらの上限に対する API 呼び出しの数を減らすため、Google Health API では日付範囲にわたるデータのクエリがサポートされています。次のページネーションとリクエストの境界に注意してください。
- 各エンドポイントは、ページあたり最大 10,000 個のデータポイントのページサイズを返します。
- クエリの期間は、リクエストごとに 14 ~ 90 日に制限されます。
アプリケーションに必要な過去のデータの量によっては、データセット全体を取得するために複数の連続したリクエストが必要になり、追加の時間がかかることがあります。アプリケーションのデータ同期プロセスを設計する際は、この点に留意してください。
最適なパフォーマンスを確保し、API エラーを回避するには、過去のデータをクエリする際に次のガイドラインに従ってください。
段階的なデータ同期(ホットロードとコールド スタートの読み込み)
- 初期の「ホット」読み込み: メインの読み込みシーケンス中に、最新の 7 ~ 14 日間のデータのみを取得してレンダリングします。これにより、ユーザーは長時間実行されるクエリを待つことなく、データをすぐに確認できます。
- バックグラウンドの「コールド」読み込み: メイン UI のレンダリング後に、古い履歴データの取得を非同期の優先度の低いキューまたはバックグラウンド プロセスに委任します。
時間ベースのクエリ チャンク化
- 1 回の API 呼び出しで複数年または複数月の期間をリクエストしないでください。過去の大きなクエリを、より小さな連続した間隔(リクエストあたり 1 週間など)に分割します。
- これらのサブクエリを安全にバッチ処理またはシーケンス処理して、同時実行制限を尊重し、UI の進行状況インジケーターを安定した状態に保ちます。
事前集計されたロールアップを活用する
事前集計された概要エンドポイント(DailyRollUpDataPoints など)を使用するように、概要ダッシュボードと傾向グラフを再構築します。これにより、バックエンドのコンピューティング オーバーヘッドとクライアントへのネットワーク転送時間が大幅に短縮されます。
復元力のあるエラー処理(スマート再試行)
- レート制限(
429 Too Many Requests)とサーバー ゲートウェイ タイムアウト(504 Gateway Timeout)が発生した場合は、厳密な指数バックオフ処理を実装します。失敗した大きなペイロードをすぐに再試行しないでください。即時再試行はバックエンドの輻輳を増大させ、システム パフォーマンスの低下を悪化させます。 - クエリが繰り返しタイムアウトする場合は、自動的に小さい時間枠にフォールバックします(たとえば、1 週間のチャンクを 3 日間に短縮します)。
サードパーティによるアクセス
Fitbit デバイスは、サードパーティのアプリやサービスと直接通信できません。これらのデバイスは、Fitbit モバイルアプリとのみ通信して同期するように設計されています。
デバイスは、Fitbit アプリが開いているときは 1 日を通して自動的にデータを同期します。また、Bluetooth が有効でアプリがバックグラウンドで実行されている場合は、15 分ごとにデータを同期します。この同期プロセスが完了すると、Google Health API を介してサードパーティ サービスでデータを利用できるようになります。
距離の基準
elevationGainMillimeters などの運動距離は、次の理由から標準単位としてミリメートルで測定されます。
- データの精度を維持する: ミリメートルを使用する最も重要な理由は、読み取って提供するデータの精度を維持するためです。ミリメートルなどの細かい単位を使用すると、測定値を高い精度で表すことができます。
- 標準化: ミリメートルは、Google のサービス全体で設計された標準単位です。この一貫性により、API のさまざまな部分を操作するデベロッパーに一貫したエクスペリエンスを提供できます。
- 幅広い測定システムのサポート: ミリメートルなどの基本単位を使用することで、デベロッパーは、メートル法、ヤード・ポンド法、その他の測定システムを使用しているかどうかにかかわらず、選択した他の単位に簡単に変換できます。
昼の長さが変化する
Health API による時間の処理では、ユーザーの時間を優先して、夏時間や旅行による 1 日の長さの変動を考慮します。すべてのデータポイントは、物理的な UTC タイムスタンプと、イベント発生時に有効だった UTC オフセットの両方とともに保存されます。これにより、システムで次のことが可能になります。
- イベントを正確な物理的瞬間にマッピングします。
- 集計のために、時間をユーザーのローカル コンテキストに修正します。
夏時間
夏時間が終了すると、25 時間の暦日となり、その日付のロールアップには 25 時間分のデータが含まれます。「春の進み」では、時間が標準時に戻る 23 時間の民事日になります。
旅行
タイムゾーンを移動すると、1 日の物理的な長さがさらに大きく変動する可能性があります。
dailyRollUp エンドポイントを使用して、タイムゾーンの差異を調整します。ユーザーの現地時間に基づいて記録されたカレンダーの日付にデータが自動的に割り当てられるため、タイムゾーンの変更があっても、1 日のデータを効果的に「つなぎ合わせる」ことができます。