データ型

Google Fit には、com.google 名前空間に一連の健康とウェルネスに関するデータ型が用意されています。

データ型は、データポイント内の値の形式を定義します。データポイントは、次のいずれかを表すことができます。

  • 瞬時の読み取りまたは観測
  • 期間の統計情報を含む集計

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

Google Fit では、新しいデータ型を定義することもできます。

データ型のグループ

Google Fit には次のデータ型があります。

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

詳細については、以下をご覧ください。

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

データ型の使用

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 リソースには、各データソースのデータ型 (とそのフィールドのリスト)が含まれます。データソースを作成するときに、これらのデータ型のいずれかを指定できます。また、Fitness ストアからデータソースを取得するときに、データ型の名前とそのフィールドのリストを取得できます。

たとえば、データソースの表現では、データ型は次のように指定されます。

{
"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 のアプリの権限に関するおすすめの方法について詳しくは、こちらをご覧ください