blog
ブログ

Salesoforce技術ブログ:FitBitAPIをSalesforceから呼んでみた

久しぶりに記事を投稿します。前Dです。
実は、HP管理者のイタズラにより、過去投稿した記事の、私の名前がしょっちゅう変更されているのですが、気にしません(`・ω・´)

今年の6月にふと思い立ってFitbitを購入しました。
主には睡眠状態を取りたいという目的だったのですが、歩数等もとれるので、あとちょっとで1日の歩数が達成できる、となるとちょっと頑張っちゃいますね。
少しながら健康を意識できるので、皆様もぜひいかがでしょうか。
※当社にはCharge2とAlta HRユーザが合わせて10名程います。

FitbitはBluetoothでスマホと連動し、収集した情報をスマホアプリのダッシュボードで閲覧ができます。
このアプリでも十分情報は見れるのですが、APIが提供されているので、外部からのデータ取得も可能となっています。

という訳で、せっかくなのでSalesforceから、このFitbitAPIを読んでデータを取得してみました。

APIを使ってデータを取得する手順は下記のとおりです。
まずは、APIコールするための準備をします。
こちらを参考にさせて頂きました)

1.dev.fitbit.comへアクセスし、fitbit利用のアカウントでログインする
2.「REGIST IN APP」タブをクリックし、情報を入力、「Register」ボタンをクリックする
※入力する情報は、上述の参考ページを参照ください。
dev.fitbit.com

3.登録完了画面が表示されるので、画面下部の「OAuth 2.0 tutorial page」を別タブで開く
登録後

4.OAuth 2.0 tutorial pageの「1.Authorize」で情報を入力する
5.「2.Parse response」の上にあるURLをクリックする。fitbitへのアクセス許可のウィンドウが出るので「許可」する
※「許可」後、アクセス拒否・ページが存在しないといったエラーが表示されますが、問題ありません。
URLをクリック
アクセス許可確認

6.5.の操作後に表示されたページのURLを「2.Parse response」に貼り付ける
URL表示

↑のURLを↓に貼り付けます。
URL貼り付け

7.「3.Make Request」に表示された「OAuth 2.0 Access Token」を使用する
アクセストークンの確認

これでAPIコールする準備は完了です。
あとは、API Referenceのページを参考に、取得したい情報のURLをコールします。
※下記はサンプルコードです

Http http = new Http();
HttpRequest request = new HttpRequest();

request.setEndpoint(‘https://api.fitbit.com/1/user/’ + ユーザID + JSONのURL;
request.setMethod(‘GET’);
Request.setHeader(‘Authorization’, ‘Bearer ’+ アクセストークン);
HttpResponse response = http.send(request);
Integer status = response.getStatusCode();  // 結果コードを取得。200の場合は成功
return response.getBody();   // JSON形式で結果が取得できる

取得結果が下記のようなJSON形式で返却されるので、取得結果を処理をしたい形に加工します。

[{"dateTime":"2017-09-30","value":{"customHeartRateZones":[],"heartRateZones":[{"caloriesOut":585.16128,"max":93,"min":30,"minutes":657,"name":"Out of Range"},{"caloriesOut":197.45264,"max":130,"min":93,"minutes":85,"name":"Fat Burn"},{"caloriesOut":30.27552,"max":158,"min":130,"minutes":5,"name":"Cardio"},{"caloriesOut":0,"max":220,"min":158,"minutes":0,"name":"Peak"}],"restingHeartRate":73}}]

下記は心拍数を取得してリストに出してみたものになります。
データを取得して表示

課題として、アクセストークンは端末ごとに取得・設定する必要があります。
また、トークンには有効期限があるため、定期的な更新が必要です。
(この辺りは良い運用方法が無いか現在調査中です)

SalesforceはEinstein Analyticsダッシュボードという優秀な分析ツールも出ていますので、
Fitbitからデータを取得してEinstein Analyticsに連携し、様々なデータをグラフで見てみる、というのも非常に面白そうですね。

contact

ご相談・ご質問等ございましたら、お気軽にお問い合わせください。

翻訳