データの正確性と一貫した集計を確保するため、Google Health API ではユーザー アクティビティのレポート方法が最新化されています。true zeros と on-wrist filtering を導入することで、API を使用して、ユーザーが静止していた期間とデバイスを装着していなかった期間を正確に区別できます。
True Zeros
真のゼロは、ユーザーがデバイスを装着してアクティブにトラッキングしていたものの、特定の指標でゼロの値が記録されたことを示す明示的なデータポイントです。たとえば、デバイスを装着しているにもかかわらず、1 分間のインターバル中に歩数や距離が 0 と記録されることがあります。
これまで、欠損データは曖昧でした。ユーザーが座りがちであったか、デバイスが手首から外れていたことを示している可能性があります。API は、デバイスが装着されているがアクティブでない場合に、明示的に 0 の値を保存して返すことで、この問題を解決します。これにより、手首に装着したままの期間と欠損データを明確に区別できます。
手首でのフィルタリング
手首装着フィルタリングとは、ユーザーがデバイスを実際に装着しているかどうかを特定するプロセスです。これにより、デバイスがバッグに入っているときに車両の振動によって記録された「ファントム」歩数など、余分なデータを API で除外できます。
サポートされるデータタイプ
次のデータ型では、真のゼロ動作と手首でのフィルタリングがサポートされています。
- 高度
- 距離
- 階数
- 手順
- 総カロリー
アプリケーションへの影響
真のゼロを実装すると、データギャップの解釈や、日次平均などの指標の計算の精度が向上します。
リストとロールアップの動作
デフォルトでは、Google Health API は次のデータ型について手首装着データのみを返します。
- リスト オペレーション: デバイスを装着していた期間のデータポイントのみを返します。
- データのギャップ: リストにギャップや欠落したレコードがある場合、デバイスが手首から外されていたか、同期されていなかったことを示します。
- 空のレコード: ユーザーがデバイスを装着していたものの、アクティビティがなかった(真のゼロ)データポイントは、通常の
dataSourceと間隔またはタイムスタンプの情報とともに返されますが、指標固有のフィールド(countプロパティなど)は省略されます。これらはゼロ値として解釈されます。
- ロールアップ オペレーション: レスポンスの 0 は、真のゼロ(ユーザーがデバイスを装着していたが、動いていなかった)を意味します。特定の期間にトラッキング デバイスが装着されていなかった場合、API はそのロールアップ ウィンドウのデータを返しません。
list オペレーションでは、オンデバイス アルゴリズムがセンサーの生テレメトリーを再分類する際に、連続するコネクテッド デバイスの同期で重複する間隔が生じることもあります。間隔の重複の処理の詳細については、データ管理ガイドをご覧ください。
Fitbit Web API との比較
Fitbit Web API は、トラッキング デバイスを装着していない場合でも、ゼロを含むデータを返すことがよくありました。Google Health API は、より正確な動きを表現します。
| 機能 | Fitbit Web API | Google Health API |
|---|---|---|
| 操作なしの曖昧さ | データがない場合は、アクティビティがないか、手首から外している可能性があります。 | ゼロは、着用中の非アクティブ状態を明示的に示します。 |
| データギャップ | データギャップのデフォルトは UTC オフセットになる可能性があります。 | 明示的なストレージにより、タイムゾーンと市民時間の問題が解決されます。 |
| フィルタリング | 手首でのフィルタリングは限定的です。 | 手首での厳格なフィルタリングにより、生理学的精度が確保されます。 |