データ型

Google Fit は、com.google 名前空間で健康とウェルネスに関するデータのセットを提供します。

データ型は、データポイント内の値の形式を定義します。データポイントは次のものを表します。

  • 瞬間的な読み取りまたは観察
  • 時間間隔の統計情報の集計

Google Fit では、瞬間的な観測に対応するデータ型と集計データのデータ型を定義しています。データポイントは、データ型のフィールドの値とタイムスタンプ情報で構成されます。瞬間的な観測を表すポイントにはタイムスタンプが含まれ、集計データ型のポイントには間隔の開始時間も含まれます。

Google Fit では新しいデータ型も定義できます。

データ型グループ

Google Fit のデータタイプ:

一般公開データ型
プラットフォームが提供する標準のデータタイプには、接頭辞「com.google」が付いています。(例: com.google.step_count.delta)。これらのデータ型は、フィットネス アクティビティ、睡眠、栄養など、健康とウェルネスに関するデータの即時読み取りを取得します。どのアプリでも、これらのデータタイプに対する読み取りと書き込みの適切な権限をリクエストできます。ただし、データを書き込んだアプリのみが読み取れる一部の位置情報タイプは除きます。

詳しくは以下をご覧ください。

健康に関するデータの種類
プラットフォームが提供するデータ型のうち、センシティブ データが含まれる可能性があるためアクセスが制限されているデータ型。詳細については、Health のデータ型をご覧ください。
集計データ型
時間またはアクティビティ タイプ別に集計された健康とウェルネスの情報を読み取るためのデータ型。詳細については、集計データ型をご覧ください。
非公開のカスタムデータ型
特定のアプリで定義されたカスタムデータ型。そのデータ型を定義するアプリのみが、このタイプのデータの読み取りと書き込みを行えます。詳細については、カスタムデータ型をご覧ください。

データ型の使用

Android

Android では、データ型は DataType クラスのパブリック フィールドとして定義されます。データ型を指定して Fitness API を呼び出す方法は、達成したい内容によって異なります。

  • データを記録するには、Recording API を使用して、記録するデータ型ごとにサブスクリプションを作成します。
  • データを読み取るには、History API を使用して、データ型ごとに読み取りリクエストを送信します。
  • 過去の履歴データを挿入するには、History API を使用して、データ型ごとに挿入リクエストを送信します。
  • セッションを作成するには、Sessions API を使用して、セッション メタデータを使用してデータを挿入または記録します。

即時の DataType オブジェクトのデータポイントを作成するには、正しい形式の値を割り当てます。次の例は、食品を文字列として、食事の種類を Field クラスの定数として、栄養成分をマッピングされた浮動小数点値として割り当てる方法を示しています。

val nutritionSource = DataSource.Builder()
    .setDataType(DataType.TYPE_NUTRITION)
    ...
    .build()

val nutrients = mapOf(
    Field.NUTRIENT_TOTAL_FAT to 0.4f,
    Field.NUTRIENT_SODIUM to 1f,
    Field.NUTRIENT_POTASSIUM to 422f
)
val banana = DataPoint.builder(nutritionSource)
    .setTimestamp(now, TimeUnit.MILLISECONDS)
    .setField(Field.FIELD_FOOD_ITEM, "banana")
    .setField(Field.FIELD_MEAL_TYPE, Field.MEAL_TYPE_SNACK)
    .setField(Field.FIELD_NUTRIENTS, nutrients)
    .build()

アプリでデータポイントを設定したら、History API を使用して過去のデータを挿入、読み取り、削除できます。

REST

dataSources リソースには、各データソースのデータ型(およびそのフィールドのリスト)が含まれます。データソースの作成時にこれらのデータタイプのいずれかを指定し、フィットネス ストアからデータソースを取得するときに、データタイプの名前とそのフィールドのリストを取得できます。

たとえば、データソース表現では、データタイプを次のように指定します。

{
"dataStreamId": "exampleDataSourceId",
...
"dataType": {
  "name": "com.google.step_count.delta"
},
...
}

認可スコープ

認可スコープは、ユーザーがアプリにアクセスを許可できるデータ型のグループを対象とします。アプリがアクセスする必要のあるデータの種類をユーザーが把握するのに役立ちます。 また、データタイプを個別に承認する必要がないため、そのデータの使用権限をアプリに簡単に付与できます。ユーザーは、アプリをダウンロードした後、これらの権限を付与します。

OAuth スコープの同意画面の例
図 2. OAuth スコープの同意画面

少数のユーザーでアプリをテストしたら、アプリを起動する前に、それらのデータ型に関連するスコープに基づいて確認をリクエストする必要があります。上記のリンク先のデータ型のページを読み、各データ型に適用されるスコープを確認してください。

たとえば、アプリが血圧の書き込みと読み取りを行う必要がある場合は、読み取りと書き込みの両方を実行していることを宣言し、両方のスコープをリクエストする必要があります。Google Fit プラットフォームに血圧データを書き込むだけの場合は、書き込みスコープをリクエストするだけで済みます。

データ型は責任を持って選択する。アプリで必要になる可能性があるため、すべてのデータ型をリクエストしないでください。指定されたタイプによって、ユーザーに権限の付与を求めるスコープが決まります。ユーザーがアクセス権を付与する可能性が高まるように、アプリが必要とするデータタイプのみを要求します。ユーザーは、明確に説明された制限付きのスコープに対するアクセス権を、より付与しやすくなります。

次の表を使用して、アプリがアクセスする必要があるスコープが機密性が高いか、制限されているかを確認できます(それによって、実施する必要がある確認手順が異なります)。

範囲 説明 カテゴリ
https://www.googleapis.com/auth/fitness.activity.read Google Fit プラットフォームからアクティビティ データを読み取ります。 制限されています
https://www.googleapis.com/auth/fitness.activity.write Google Fit プラットフォームにアクティビティ データを書き込む 制限されています
https://www.googleapis.com/auth/fitness.blood_glucose.read Google Fit プラットフォームから血糖データを読み取ります。 制限されています
https://www.googleapis.com/auth/fitness.blood_glucose.write Google Fit プラットフォームに血糖データを書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.blood_pressure.read Google Fit プラットフォームから血圧データを読み取る。 制限されています
https://www.googleapis.com/auth/fitness.blood_pressure.write Google Fit プラットフォームに血圧データを書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.body.read Google Fit プラットフォームから身体測定データ(身長、体重、体脂肪率)を読み取る。 制限されています
https://www.googleapis.com/auth/fitness.body.write 身体測定データを Google Fit プラットフォームに書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.body_temperature.read Google Fit プラットフォームから体温データを読み取る。 制限されています
https://www.googleapis.com/auth/fitness.body_temperature.write 体温データを Google Fit プラットフォームに書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.heart_rate.read Google Fit プラットフォームから心拍数データを読み取る。 制限されています
https://www.googleapis.com/auth/fitness.heart_rate.write Google Fit プラットフォームに心拍数データを書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.location.read Google Fit プラットフォームから位置情報を読み取ります。 制限されています
https://www.googleapis.com/auth/fitness.location.write Google Fit プラットフォームに位置情報を書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.nutrition.read Google Fit プラットフォームから栄養データを読み取る。 制限されています
https://www.googleapis.com/auth/fitness.nutrition.write Google Fit プラットフォームに栄養データを書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.oxygen_saturation.read Google Fit プラットフォームから酸素飽和度データを読み取ります。 制限されています
https://www.googleapis.com/auth/fitness.oxygen_saturation.write Google Fit プラットフォームに酸素飽和度データを書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.reproductive_health.read Google Fit プラットフォームからリプロダクティブ ヘルスのデータを読み取る。 制限されています
https://www.googleapis.com/auth/fitness.reproductive_health.write リプロダクティブ ヘルスのデータを Google Fit プラットフォームに書き込みます。 制限されています
https://www.googleapis.com/auth/fitness.sleep.read Google Fit プラットフォームから睡眠データを読み取る。 制限されています
https://www.googleapis.com/auth/fitness.sleep.write Google Fit プラットフォームに睡眠データを書き込みます。 制限されています

既存のアプリに新しいスコープを追加する

アプリを更新して新しいスコープをリクエストすると(たとえば、新しい睡眠スコープや心拍数スコープを追加する、読み取りスコープを追加するなど)、アプリがこれらのスコープへのアクセスをリクエストしていることがユーザーに示され、ユーザーはアクセスの許可または拒否を選択できるようになります。

リソースが必要になったときに、ユーザーに承認をリクエストすることをおすすめします。増分承認のリクエストに関するガイドラインに従ってください。

アプリがこのデータを使用する理由と方法を理解することで、ユーザーがアクセスを許可する可能性が高くなります。

  • これらのスコープを求められることをユーザーに警告/通知する画面を追加することを検討してください。
  • ユーザーが十分な情報に基づいて判断できるように、アプリがこれらのスコープ/データへのアクセスを要求する理由を明確に説明する。

詳しくは、Android のアプリの権限に関するベスト プラクティスをご覧ください。