Ruby を使って Fitbit API で遊んでみた

ハイテク万歩計の Fitbit One を購入して遊んでいる。

ゲーミフィケーション的な要素があり、日頃の運動不足解消に一役かっている。

Fitbit 自体は、体重や体脂肪、睡眠時間や摂取カロリーなど健康に関する数値のデータベースを目指しているように見える。

最近の Web サービスらしく RESTful API を提供しており、データを流し込むことができるため、別サービスに貯めていた体重と体脂肪を Fitbit にインポートしてみた。

インポータ

実行には、Ruby と Bundler が必要。

OAuth の登録

dev.fitbit.com にアクセスして、consumer キーと consumer secret を取得しておく。

準備
$ git clone git://github.com/mallowlabs/fitbit-weight-importer.git
$ cd fitbit-weight-importer
$ bundle install --path .bundle
$ cp config/fitbit.yml.example config/fitbit.yml
$ vim config/fitbit.yml
consumer / consumer key を記述する
CSV のフォーマット

以下のフォーマットで体重と体脂肪を準備する。

"Date","Weight","Fat"
"2012-09-09","54.80","16.90"
"2012-12-09","56.30","17.00"
実行

以下のコマンドで実行をする。
途中で URL が表示されるので、ブラウザでアクセスし、表示される PIN コードを入力する。

$  bundle exec ruby bin/main.rb data.csv

データが登録されて、グラフが生成されているのを確認できる。

技術的な話

Fitbit API は素直な OAuth + RESTful API なので難しいことは何もない。
https://wiki.fitbit.com/display/API/Fitbit+API

とはいえ、クライアントライブラリがあると便利である。
公式で紹介されているクライアントライブラリは、Java / PHP / .NET しかないが、 Ruby の 3rd パーティのライブラリとして Fitgem がある。

ドキュメントも充実しているため、http://www.fitbitclient.com/ を読めば困ることはないだろう。

この記事を読んで興味を持った方は Fitgem を使って何かサービスを作ってみてください!