データの種類

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

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

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

{
"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 向けアプリの権限に関するおすすめの設定をご覧ください。