FitbitAPI 日中の詳細なActivityデータを時系列に取得する

秒単位の消費カロリーなど詳細なデータを取得する

Fitbit APIにより、秒単位の消費カロリーなど、詳細な分析を行うのに必要なデータを取得することもできる。

Access to the Intraday Time Series for personal use (accessing your own data) is available through the “Personal” App Type.

詳細なActivityデータの利用は個人的な利用に限られる

ドキュメントの先頭に以下のような注意書きがあり、あくまで個人的な利用を想定しているようだ。商用利用を目的とする場合は api@fitbit.com を通じて許可を得る必要があるようだ。理由は、かなりのデータ量になるためリソースに対するチャージであったり、fitbitの真髄である「24時間秒単位の心拍数」を”ヒドいアプリに応用されたくない”というイメージ的なモノであったり、いろいろだと思う。
OAuth2 Authenticate grant flowの一番最初のフェーズにおいてWebアプリを登録する際に、アプリケーションタイプとして「Personal」を選択しないとデータを得られないようだ。

Access to the Intraday Time Series for personal use (accessing your own data) is available through the “Personal” App Type.

Access to the Intraday Time Series for all other uses is currently granted on a case-by-case basis. Applications must demonstrate necessity to create a great user experience. Fitbit is very supportive of non-profit research and personal projects. Commercial applications require thorough review and are subject to additional requirements. Only select applications are granted access and Fitbit reserves the right to limit this access. To request access, email api@fitbit.com.

申告しないといけないのか、このAPIを叩いても秒単位の心拍数データを得られなかった。秘伝のタレは簡単には渡してもらえないということか。ドキュメント上は以下のデータに限って詳細データを取得できる。

諸々の注意事項

  • trackerは7日分のデータを蓄えることができる。それを超えると古いデータから順に失われる。
  • trackerが7日以上同期されていない場合、辻褄合わせが発生する。抜けた分について、概要は同期されている分だけ、詳細な歩数はゼロ、詳細なカロリーはBMR、EERから計算される。なお、失われた詳細な歩数はFitbitが用意する式によって計算できる。
  • 現在の実装では、ユーザのタイムゾーンにおけるタイムスタンプ値のみ出力する。

trackerデータ欠損時のデータ補完アルゴリズム

ちょっと難しくて訳せず…

  • If a user had no Fitbit tracker data for the specific day then the greater of Logged Activities + BMR (for minutes when there is no activity) and the calories calculated from the EER for that day (if EER enabled for this user’s profile) are taken.
  • In case, there was some data from the tracker for the specific day, that data where available is used and for time where data is unavailable, the BMR is used.
  • If the total is less than 20% greater than BMR then the EER (cals < EER * 0.8) is used. EER never used to calculate calories for today.

Fitbitが採用するBMR算出式

身長、体重など簡単に取得できるデータからBMRを推定する計算する式がいくつか存在する。
その中で、Fitbitは MD Mifflin-St Jeor equation を採用している。

参考)他には以下のようなものがある。それぞれに関して資料を見つけた。

  • Harris–Benedict式
  • Owen式
  • Wang式
  • Cunningham式
  • 日本人のための式?

母集団が脳梗塞急性期の患者だしn数が30と少ないので俯瞰するに留めるが、推定の精度について議論がある分野のようで、特に欧米人向けの推定式を日本人にそのままあてはめて良いか、という大きな議論があるようだ。

推定式 平均値 分散 二乗平均平方根
Harris–Benedict 式 1087 9800 99
Mifflin 式 1012 34829 187
Owen 式 1290

51573 227
日本人のための簡易式 1285 47083 217
Wang 式 1208 32631 181
Cunningham 式 1175 27216 165

このペーパーの中では、Miffin式は、間接熱量計実測値よりも推定量が下振れする傾向を示している。

Fitbitが採用するEER(TEE,Total energy expenditure)

EERとは、Estimated Energy Requirement の略。何のこっちゃであるが、括弧付きで TEE ,Total energy expenditure が付与されているところから、カロリー消費を推定する指標なのだろう。Fitbitは 米国CDC(疾病予防管理センター)のペーパー(An Easy Approach to Calculating Estimated Energy Requirements)のEER推定式を採用している。

式は以下である。

取得方法

PHPを使ったOAuth2認証については過去エントリ(djchen/oauth2-fitbitを使ってPHPで簡単にFitbitのデータを取得する)を参考のこと。

詳細データのリソースURIは、過去エントリ(FitbitAPI Activityデータを時系列で取得する)で紹介した概要データのリソースURIに似ている。ただし、詳細データの取得を要求できるリソースは以下に限定される。

RESTFul APIは以下の通りである。

概要データの取得に加え、[detail-level]という項目が追加されている。その値として「1min」か「15min」のいずれかを使用する。

実行例

せっかくなので、日課の1時間ランで絶賛カロリー消費中の時間帯について1分ごとの詳細データを取得してみた。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする