おことわり
全世界は言いすぎました。せいぜい知り合い程度です。でも晒そうと思えば全世界にも晒せます。
お母さん、ありがとう
私、最近誕生日を迎えました。そんでお母さんから誕生日プレゼントに体重計をもらいました。どういう意味でしょうか。
体重計、のってみました。めっちゃ太ってました。おかしい。半年で20キロぐらい太りました。自分新卒なんですが、お給料がもらえてうめーもん沢山食ってたらこんなことなってました。そろそろ痩せなきゃなと思いました。
体重を晒す
過去何回ものダイエットに成功している自分ですが、最も効果的だったダイエット方法として、体重を晒すというものがありました。毎日自分の体重を知り合いに晒すことで、「ちゃんと痩せてなかったら恥ずかしい」とか「サボったらバレる」などという意識から挫折防止になるってやつです。心理学の文脈ではこういうの「自己宣言効果」っていうみたいですね。何やら色々論文とかも出てるみたい。あと、ちゃんと痩せてると色んな人から褒められます。これ地味に嬉しいです。
過去にはインスタグラムのストーリーなどに手動でアップロードしていたのですが、写真を撮ったり、アップロードしたりする手間が面倒くさい!この手間が億劫で結局体重を公開することやめ、結果ダイエットも挫折したりすることが多々ありました。
体重を色々な人に公開することのメリットは身を持って実感しています。あとはどれだけその手間を省くかってのが重要なわけです。
今の体重計ってすげー
母親からもらった体重計なんですが、専用のアプリをインストールすればなんと乗るだけで自動でスマホにデータが連携されるんです。今の体重計ってすげー。
体重体組成計 KRD-403T-B(KRD-408T-B) カラダスキャン アイスブルー

んでこれなんですが、自動でAppleのヘルスケアアプリにも体重情報が連携されます。このイベントをトリガーに自動で何らかの形で体重更新を通知できないだろうか?と思ったのが、この取り組みのきっかけになります。
こんな感じで実現しました

イベント駆動のパイプラインに分割することで、計測データの永続化・加工・通知を疎結合かつ非同期に扱え、後からメトリクス追加や通知先の拡張もしやすい構成にしてます。
Health Auto ExportというアプリはiOSのヘルスケアの体重更新イベントをトリガーにして、指定したURLに更新データを送信することができます。今回はこのアプリを使いLambda Functions URLsに更新データを送信します。データを受け取ったLambdaはS3にその内容を保存します。その後、S3イベント通知でLambdaが起動し、データの内容をDynamoDBに書き込みます。DynamoDBのデータが書き換われば、DynamoDB StreamsがLambdaを起動し、LINEの公式アカウントにメッセージを送信します。メッセージの送信には、Messaging APIを使用し、体重と前回の計測との差分を計算した結果を送信します。LINE公式アカウントを友だち追加すれば、誰でも私のダイエットの経過を見ることができます。
なお、LambdaのアプリケーションコードはGoで書いてます。
実際に使ってみた
体重計に乗ると、以下のようにLINEの公式アカウントに通知が行きます。

太ってますね。
母親の反応
今後の展望
- LLMに直近1週間とかの体重投げて、トレンド分析とかコメントさせたい。やりたかったけど時間がなかった。
- いろんなメトリクスを連携できるので、体脂肪率とか睡眠時間とか連携したい(通知をするかどうかは別として)。やりたかったけど時間がなかった。
- 今回Lambdaにコードベタ書きだから、アーキテクチャしっかりしたい。ヘキサゴナルアーキテクチャ(ポートアンドアダプタ)とか相性良さそう。やりたかったけど時間がなかった。
おわりに
お母さん、これから、痩せるからね。


