API概要
ドキュメントはこちら。このAPIを使用することで、Fitbitが管理している各種Activityデータを時系列に取得できる。取得できるActivityデータは大きくactivity系とtracker系の2種類に分類され、それぞれ以下のように分類されている。
Fitbitデバイスの運動計測機能をtrackerと呼び、純粋に運動計測機能により取得したデータをtracker系で取得するようだ。また、その上位層として、手動入力値等の追加データを含むデータをactivity系で取得するようだ。
activity系
key | means of value |
---|---|
activities/calories | 消費カロリーの集計値。基礎代謝(BMR)とtracker系消費カロリー、および手動入力された消費カロリーの合計 |
activities/caloriesBMR | 基礎代謝(BMR)の集計値。Fitbitデバイスが計測したデータに基づき計算された値 |
activities/steps | 歩数 |
activities/distance | 距離 |
activities/floors | 縦方向の移動の階数表現 |
activities/elevation | 縦方向の移動距離 |
activities/minutesSedentary | 強度により4個に分類された運動強度のうち1レベル目(最弱)の運動時間 |
activities/minutesLightlyActive | 2レベル目の運動時間 |
activities/minutesFairlyActive | 3レベル目の運動時間 |
activities/minutesVeryActive | 4レベル目の運動時間(最強) |
activities/activityCalories | Sedentaryレベル以上の運動強度について1分毎に計算された消費カロリー。基礎代謝(BMR)や手動入力を含む。 |
tracker系
key | means of value |
---|---|
activities/tracker/calories | Fitbit trackerにより計測された基礎代謝を含む消費カロリー。手動入力は含まない。 |
activities/tracker/steps | Fitbit trackerにより計測された歩数 |
activities/tracker/distance | Fitbit trackerにより計測された距離 |
activities/tracker/floors | Fitbit trackerにより計測された縦方向の移動の階数表現 |
activities/tracker/elevation | Fitbit trackerにより計測された縦方向の移動距離 |
activities/tracker/minutesSedentary | 強度により4個に分類された運動強度のうち1レベル目(最弱)の運動時間 |
activities/tracker/minutesLightlyActive | 2レベル目の運動時間 |
activities/tracker/minutesFairlyActive | 3レベル目の運動時間 |
activities/tracker/minutesVeryActive | 4レベル目の運動時間(最強) |
activities/tracker/activityCalories | Fitbit trackerにより計測されたSedentaryレベル以上の運動強度について1分毎に計算された消費カロリー。基礎代謝(BMR)を含む。手動入力は含まない。 |
Fitbit Charge/Fitbit Charge HR 保護カバー (Dark Purple)
API詳細
RESTfulAPIの書式は2通りある。以下は取得日付が1日のみの場合。
GET /1/user/[user-id]/[resource-path]/date/[date]/[period].json
開始日時、終了日時を指定し、2日以上の時系列データを取得することもできる。
GET /1/user/[user-id]/[resource-path]/date/[base-date]/[end-date].json
いずれの形式ともに、resource-pathとして、API概要にて示した key 値を指定する。
実行例
それでは実行例を紹介する。まず、今日(today, 2016/06/09) の activities/calories を取得してみる。 activities-calories-intraday という1日分の非常に詳細なデータも付いてくるが本エントリでは省略する。次回紹介。
/1/user/-/activities/calories/date/today/1d.json
Array
(
[activities-calories] => Array
(
[0] => Array
(
[dateTime] => 2016-06-09
[value] => 1082
)
)
[activities-calories-intraday] => Array
(
[dataset] => Array
(
…
)
)
)
次に、今日(today)と、1週間(1w) を合わせて activities/calories を取得してみる。すると、今日を末日とする1週間分の消費カロリーを取得できた。1w を指定した場合、1日分の詳細データ activities-calories-intraday は出力されなかった。
/1/user/-/activities/calories/date/today/1w.json
Array
(
[activities-calories] => Array
(
[0] => Array
(
[dateTime] => 2016-06-03
[value] => 2805
)
[1] => Array
(
[dateTime] => 2016-06-04
[value] => 2653
)
[2] => Array
(
[dateTime] => 2016-06-05
[value] => 2834
)
[3] => Array
(
[dateTime] => 2016-06-06
[value] => 2734
)
[4] => Array
(
[dateTime] => 2016-06-07
[value] => 2822
)
[5] => Array
(
[dateTime] => 2016-06-08
[value] => 2652
)
[6] => Array
(
[dateTime] => 2016-06-09
[value] => 1098
)
)
)
基礎代謝(BMR)を期間を指定して取得してみる。一定値ではなかった!。Fitbitはtrackerから基礎代謝を計算で求めているということのようだ。すごいすごい。
/1/user/-/activities/tracker/calories/date/2016-06-05/2016-06-06.json
Array
(
[activities-caloriesBMR] => Array
(
[0] => Array
(
[dateTime] => 2016-06-05
[value] => 1603
)
[1] => Array
(
[dateTime] => 2016-06-06
[value] => 1604
)
[2] => Array
(
[dateTime] => 2016-06-07
[value] => 1594
)
[3] => Array
(
[dateTime] => 2016-06-08
[value] => 1603
)
)
)
activities/tracker/calories を1日だけ取得してみる。today を指定すると1日分の詳細データが含まれていたが、期間指定により1日分を指定すると詳細データが含まれない。今回のケースでは、activities/calories と activities/tracker/calories は同一値(2834)である。
/1/user/-/activities/tracker/calories/date/2016-06-05/2016-06-05.json
Array
(
[activities-tracker-calories] => Array
(
[0] => Array
(
[dateTime] => 2016-06-05
[value] => 2834
)
)
)