Annieの部屋

ウィーンのホーフブルク宮殿の中にある非常口がアイコンの、きっとエンジニアな人。

Fitbit Web API + pixela で歩数を可視化するぞー (ローカル実行編)

最近、界隈でこのFitbit Web APIとpixela使ってみた記事をよく見かけるので、私もやってみたくなった。

といっても

やり方は↓こちらの記事をほぼそのままトレース。(これ以降、「もとの記事」と書いているところはすべてこちらの記事を指している)

bufferings.hatenablog.com

FitbitのAPIの呼び方やPixelaの使い方も詳しくまとめて書かれていて本当に読みやすい。

”やっていること”のうち

  1. Fitbit の API で歩数を取得
  2. Pixela に記録
  3. というスクリプトをつくって

のところまで。自動化は次のステップで頑張ってみる。

Rubyで書いた

Ruby 2.7.5。最近RubyのSilverを取得したので、こういうところで積極的に使っていきたいなぁと。

(業務レベルでは書いたことがないので、変な使い方をしているかもしれない。)

もとの記事ではTypeScriptで書かれている。

TOKEN系の管理はもとの記事を習って.envファイルで管理できるようにした。

もちろんpushしないように、.gitignoreに入れてある。

github.com

ローカルファイルで管理しているFitbitのRefresh Tokenの値を上書きするところは

↓こちらの記事のやり方を参考にして

Rubyでファイルの内容を書き換えるサンプル(置換する) - Qiita

  1. .envの中身を変数に展開して
  2. gsub()+正規表現を使って、変数の中のRefresh Tokenのところだけをうまいこと新しい値に置き換えて
  3. 元のファイルに書き戻す

とやることにした。

(とりあえず動いているけど、正規表現がイマイチなのでもうちょっとブラッシュアップしたい)

完成したもの

https://pixe.la/v1/users/anniewillescape/graphs/steps

2022年2月から3月中旬まで値が空白なのは、Fitbitが壊れてたから。 何ならこれがやりたいがためにFitbit買い替えたまである。

次はこれを自動化したい

まだ自分のローカルPCで手動で動かせるようにしかできていない。 勝手に更新し続けておいてほしいので、次はこのscriptの実行を自動化したいなぁと思っている。

おまけ(無駄な話)

rubygsubを使うときに、何を思ったのか正規表現'でくくってしまったので、当たり前だけど検索したい文字列が見つからなくて詰まった。

めちゃくちゃ恥ずかしいミスして時間が溶けた。

# 間違い
buffer.gsub!('/FITBIT_REFRESH_TOKEN=.+/', "FITBIT_REFRESH_TOKEN=#{new_refresh_token}")

# 正しくはこう
buffer.gsub!(/FITBIT_REFRESH_TOKEN=.+/, "FITBIT_REFRESH_TOKEN=#{new_refresh_token}")