Fitbit

FitbitAPI Daily Activity Summary を取得する

更新日:

API概要

ドキュメントはこちら。Daily Activity Summaryとは、その名の通り、Fitbitデバイスが取得しFitbitにストアされたデータに関して1日の活動にフォーカスして集計した統計情報だ。
用途にもよるだろうが、ほとんどのケースで、このDaily Activity Summaryを取得するだけで事が足りるのではないだろうか。

Summaryのレベルでさえ、ダッシュボードには表示されない詳細なデータが記録されている。ダッシュボードやアプリが、UI/UXを実現するために、どのようにデータを選別しているかがわかる。

注釈

ドキュメントには以下の記述がある。Fitbitの製品にはセンサや機能の違いによりいくつかバリエーションがあるが、スキーマはハイエンドに揃えていて、取得できないデータには0, null, falseなど、空データが入るようだ。

Daily summary data and daily goals for elevation (elevation, floors) only included for users with a device with an altimeter.

リスエストヘッダに付与した「Accept-Language」によりデータの単位を設定できる。APIを介さず普通にダッシュボードにアクセスすると設定画面から単位を設定できるのだが、それとは異なる単位を指定できるということになる。

The Get Daily Activity Summary endpoint retrieves a summary and list of a user’s activities and activity log entries for a given day in the format requested using units in the unit system which corresponds to the Accept-Language header provided.

ドキュメントに実行例と今回の実行例を比較するとスキーマが大きく異なることがわかる。競争が激しい業界なのでスキーマのアップデートも速いのだろうか。このあたりはドキュメントに記述がなく将来に渡って現在のスキーマが存在し得るのか不安になる。

API詳細

RESTful APIは以下の通り。

パラメタは以下の通り。

parameter name explain sample
user-id ユーザIDを取得する。”-“を指定するとログイン中のユーザ(通常、自分)となる。自分以外のIDを取得したいケースというのは…?。(Fitbitにはグループで実績を共有する概念があるのでグループメンバのIDを指定するのかも…詳細は不明)。 “-“
date 取得したいデータの日付を指定する。フォーマットは”yyyy-mm-dd”。 2016-06-08

summaryオブジェクト

key name value means
activeScore 不明
activityCalories Fitbitが検出したActivityにより消費したカロリー
caloriesBMR 基礎代謝
caloriesOut 直訳すると、プレミアムプラン会員の専属トレーナー(または自分)が設定した消費カロリー目標。
Calorie burn goal (caloriesOut) represents either dynamic daily target from the premium trainer plan or manual calorie burn goal. Goals are included to the response only for today and 21 days in the past.
distances distanceオブジェクトの配列
elevation 垂直方向の移動距離(?と思われる。)
fairlyActiveMinutes まずまず運動している時間 [分] 運動強度は sedentary < light < fairly < veryActive
floors 垂直方向の移動距離を建物の階数に変換した数値。ダッシュボードではこちらが使われている。
heartRateZones heartRateZoneオブジェクトの配列
lightlyActiveMinutes 軽く運動している時間 [分]
marginalCalories 不明。あまり重要でないカロリー?
restingHeartRate 安静時心拍数
sedentaryMinutes 座っている、静止している時間 [分]
steps 1日の歩数
veryActiveMinutes 激しく運動している時間 [分]

distanceオブジェクト

key name value means
activity 距離を集計するActivity、total, tracker, loggedActivities, veryActive, moderatelyActive, lightlyActive, sedentaryActive
distance 距離 [km]

heartRateZoneオブジェクト

key name value means
min 心拍数ゾーンを定義する最低心拍数 [bmp]
max 心拍数ゾーンを定義する最大心拍数 [bmp]
name 心拍数ゾーンに付けられた名称
minutes 1日のうち、該当心拍数ゾーンにあった時間 [分]
caloriesOut 1日のうち、該当心拍数ゾーンで消費したカロリー [Cal]

実行してみる

OAuth2 Authenticate grant flow の実装例は前のエントリに書いた。このシリーズを始めてみて気づいたが、FitbitのAPIから得られるデータだけでは個人を識別できない。すなわち、APIから取得できるデータは個人情報ではない。管理側のアプリが個人識別情報とセットでストアして初めて個人情報になる。

データ項目についてはドキュメントを参照のこと。見慣れないデータも出てくるので新鮮だ。caloriesBMRとは基礎代謝だろうか。総消費カロリー(caloriesOut) と別のデータとなっている。

結論

  • FitbitAPIからDaily Activity Summary
  • 実データを俯瞰してスキーマの定義をまとめた

-Fitbit

Copyright© ikuty.com , 2024 AllRights Reserved Powered by AFFINGER4.