Nokia の体重計で得たデータを Google スプレッドシートに記録するようにした

ダイエットしたい

すべてはここから始まりました。
何故したいかというと...

bobpp.hateblo.jp

前回の山登りサイクリングで山の前にあまりにも無力だったためです。ここは脂肪を落としてすこしでも重力に抗えるようにしようと決意しました。

ここまでやったこと

  • 目標と達成時の、自分へのご褒美を決めた
  • カロリー制限
  • 自転車乗る頻度を上げる
  • ご飯を減らしてプロテイン

まぁなどなど色々やってみていますが、やはり正しく記録することも必要だろうと。

我が家には Nokia (旧 Withings) の体重計があります。
そのため、朝体重を測れば Web で見れます。

だがしかし、Google スプレッドシートにも記帳するようにしたいと考えています。
こうすることで目標値の達成予定日の計算なども出来るし、適当なルールで今日に近いほうが重みの強い加重平均もどきを取ったりできるので、楽しみがいがあります。(なお、目標達成となる達成基準は瞬間的な体重じゃなくて先程あげた加重平均もどきで行うことも決めました)

それ IFTTT で出来るよ

まぁそうなんですよ。IFTTT で体重のデータが増えたらそれをスプレッドシートに載せるなんて造作でもないんです。

なのですが... f:id:BoBpp:20171203233127p:plain

日付のフォーマットがおかしいのですよ!"November 29, 2017 at 09:49AM" このフォーマットをスプレッドシートが日付として理解してくれないのです。
これでは、達成日の予想は難しいですし、データとして使いづらそう。

なので、どこかで日付のフォーマットを変換してあげる必要がありそうです。

IFTTT Webhook を活用しよう

まず考えたのは f:id:BoBpp:20171203235104p:plain

こういうプランです。なんやかんやの部分はなんやかんやあとで考えるのですが、ひとまず

  1. 体重が登録されたら IFTTT 経由でまずなんやかんやの Webhook を呼び出す
  2. なんやかんやの Webhook は "at" なキーに入った日付を strptime して strftime して、Google スプレッドシートが読めそうな日付のフォーマットにする
  3. そして IFTTT の Webhook に送信し、その値を Google スプレッドシートに記帳する

こういう流れです。

Sinatra で書こう

これくらいなら、Sinatra で十分ですよね。すいすいー。
30分くらいで書けました。

ですが、デプロイだ、エラーの監視だ、ああだこうだって考え始めると、この程度のことをやるにしては重厚な準備が必要だなと感じてきました。

そこで Google Cloud Functions

なんか Ruby で書いて、自前のサーバで走らせたりする程度のものではないと判断、いいサービスはないかなと探した結果、 cloud.google.com こちらにたどり着きました。

バイトサイズのビジネス ロジックからアプリケーションを構築すると、コードが実行される時間に対してのみ、最も近い 100 ミリ秒単位で課金されます。インフラストラクチャを一切管理することなく、ゼロから地球規模に至るまでユーザーにサービスを提供できます。

自分用だから、1回/日 だし、余裕で無料範囲内で収まりそう。コレで行きましょう。

ということで書いたよ。

github.com

こういうものを書きました。

{
  "at": "{{MeasuredAt}}",
  "weight": {{WeightKg}},
  "fat": {{FatMassKg}}
}

こういう JSONGoogle Cloud Function に飛ばすようにして上記のコードが処理して、

{
  "value1": 変換した日付,
  "value2": weight と同じ値,
  "value3": fat と同じ値
}

こういうフォーマットの JSON を IFTTT の Webhook に送信し、この値を IFTTT がスプレッドシートに記帳します。

これできっちり記録が出来るダイエット生活が出来るようになりました。結果がちゃんと出るのが待ち遠しいです。

Google Home と ASUS ルータの設定


未来的生活始める

うちも勢いで Google Home 導入してみることにしました。

Wi-Fi の設定でつまづく

なんど設定しても Wi-Fi 接続エラー がでる。

色々調べて、Google Group も調べたりして Google Group | What router settings do I need to set up Google Home? これがすごく参考になりました。

Enable: Universal Plug and Play (UPnP), multicast, Internet Group Management Protocol (IGMP).

という表記。

我が家の ASUS のルータ RT-AC85U の設定には IGMP スヌーピング という項目がありました。

f:id:BoBpp:20171011024423p:plain

これを有効にしてみると、、、、繋がった!

Google Home でやること

今日ここまでの4,5時間で一番楽だったのはプランクするときのタイマーを声で発行できることが便利でした。

奥多摩でヒルクライムに挑戦してきました

やはりロードバイクに乗る以上、山登りはやってみたい。

bobpp.hateblo.jp

前回の三浦半島一周での獲得標高は 840m、今回は2400m を予定。
およそ3倍、しかも休み休み登るわけでなく、山頂に近づくに連れて斜度がきつくなっていくイメージです。

f:id:BoBpp:20171002004625p:plain:w760

奥多摩駅に降り立つ・スタート



ということで、ホリデー快速おくたまに乗ってやってきました奥多摩駅
ホリデー快速の最後尾では自分達含めて三人の輪行勢がいて、とりあえずもう一本電車早くしてもいいのかなと思うところです。


無事に山梨県に入り、


https://tabelog.com/yamanashi/A1905/A190503/19005206/
こちらのR411さんで美味しい鹿肉ソーセージカレーも食べて、ここまではとても順調。奥多摩湖を左手に走る景色の良さもあり、車も多くないことから非常に快適。
きついな!って思う坂もあったけど11-32Tを入れたおかげでちゃんと登れましたし、充実感もありました。

bobpp.hateblo.jp

ただ、お昼休み地点はスタートから 22km 地点。 キツそうな柳沢峠はこのあとすぐ!といったところ。

峠が遂に牙をむく

柳沢峠にはいって結構序盤はきついながらも無難に登っていましたが、峠に入って 6km にきたところで個人的には激坂が・・・!
32T でも全然登れません...。

休憩もはさみながら、ちょっとずつ登りますが、脚が売り切れたのか全然踏めなくなってしまう、、、

一緒に行ってる友人氏はくるくるとケイデンスを維持して登っていくのが羨ましい。

膝があああ

そしてついに膝が悲鳴を上げ始める、、、!
ここからは休憩をほんとにちまちまはさみながら5,6km/hとかの超低速で登ります。

ついに!

何度途中で止まったかわかりませんが、登り切れました。
全然ダメダメなヒルクライムだったけども、一番高いところからの景色は達成感がとてつもなかったです。

いいですね、山。また挑戦します。

きたく


帰りはホリデー快速ビューやまなし輪行して帰りました。

帰宅後は自宅で、一人焼肉パーティで締めました。

記録

反省

  • 山がキツくなった時点で強度90%以上の高負荷を結構続けてしまったのが敗因かもしれない
    • 心拍数アラート使っていたけど、範囲が狭すぎて、ほとんどの期間高いか低いかのなんらかのアラートしていたので、強度が上がりすぎていることに気づけなかった
      → 次は心拍数アラートの適正範囲をかなり低負荷なところから強度90%程度と広めに設定して、アラートが鳴れば確実になんらかのアクションを起こす必要があるようにした
  • 今回膝がノートラブルで完走出来れば次はサポーター外そうと思っていたが、外せなさそう
    → 引き続き膝の強化に努める
  • 坂はやっぱり軽いことが正義な気がすごくするのでダイエットへの強い決意を得た
  • 一人焼肉で肉を買いすぎない