飯能大好きマンの誕生

TL;DR

飯能の山々最高

お久しぶりです

久しくなんも書いてなかったんですが、この隙に

  • ローラー台購入
  • サイコンを Garmin Edge 25J から Wahoo Element Bolt にする
  • ビブショーツデビューする
  • 少しばかり Rapha 厨になる
    • そして Assos デビューもする
  • 100km 超えに成功する
  • BB Base に乗車し千葉サイクリングを楽しむ(そしたらパンクする)
  • パワーメーター導入

などいろいろあったんですが *1、最近は飯能に激ハマりしてしまっております。

飯能と私の出会い

友達が飯能にでかけてるのをみて、自分も後日なんとなく行ってみたら、

  • 信号少ないからペースも自由だし
  • 車通りも少ないから気を使うことが少なくて済むし
  • うまいご飯屋さんが結構あるし
  • なにより峠がたくさんある!!!!!

ということで、これはすごくいいエリアがあると気づいてしまったのです。
また、自分は西武池袋線沿線に住んでいるので、飯能まで電車一本で行けるのもとてもポイントが高いです。

最近外で乗るときはほとんど飯能に出かけています。

今の時点で好きな飯能の峠

奥武蔵グリーンライン

鎌北湖側から行くと登って登って登ってちょっと下るみたいなのをとにかく繰り返す峠の連続ルート。
距離もあるし、同じような見た目と同じような感じの斜度が永遠と続く感じがするので、Wahoo Element のクライミングページを見ながらでないと全然終わりがわからないのですが、刈場坂峠までクリアするとなんとなく一段落したくなります。

そしてクリアした先に待っているのはとてつもない獲得標高!登った気になります。

謎の岩もあります。

刈場坂峠までクリア。

ameblo.jp

こんな獲得標高おばけみたいなルートもあってとても楽しい飯能です!

関連記事

↓ これ以後、山は楽しいということに気づいたし、すこし痩せたので前よりは登れるようになってきました。 bobpp.hateblo.jp

*1:これらに関してはいつか書きたい

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時間で一番楽だったのはプランクするときのタイマーを声で発行できることが便利でした。