IFTTTとTogglのラッパーAPI
Toggl
勉強時間などを計測するために、Togglというタイムトラッキングサービスを最近使用している。
英語の勉強時間や運動時間、家事に費やした時間を集計してレポートとして見ることができて便利だ。
ただAndroid、iOS、Webなどアプリがあるが、何かを始める度に入力することは面倒である。しかし、出来るだけ細かく入力した方が振り返りに便利。
IFTTT
IFTTTはWebサービス同士を連携できるサービスで、2020年10月からの無料プラン変更に伴い、自分は有料プランに変更した。
せっかく有料プランにしたのだから、最大限活用したく、Togglと連携できないか調べてみた。
TogglとIFTTTの連携
上記の記事のように、Google AssistantからTogglを操作できると便利そうだったので、ラッパーAPIを作ってみたところ、なるほど便利。以前より細かく計測できるようになった。
ラッパーAPIの改良
1ヶ月ほど使ってみてもう少し使いやすくする・かつ細かいことをしたいなーと思い、次の点から改良してみた。
- プロジェクトをIFTTTから入力しやすくする
- プロジェクトIDでなく、プロジェクト名で入力できるようにする
- 時間帯などの条件によって、アクションを制御する
- スマホが家のWiFiと接続したら、電気ONかつTogglのトラッキング開始のアクションを作ったら、深夜にスマホが再起動して、目覚めが最悪になったので...
- IFTTTのWebhookから呼ばれるかつ呼び出す用のエンドポイントを作る
ラッパーAPIの開発
せっかくなので、Spring WebFluxを勉強がてら開発、Azure AppServiceにデプロイすることにした。最低限の機能しか開発してないので、ちょくちょく直してく。
https://github.com/vagivagi/connector
- さらにせっかくなのでGraal VM使ってNative Imageでデプロイしようとしたら、JDKのダウンロードに時間かかりすぎて死んだ。あとでやる。
- Toggl APIのSDKもあったが、Webflux対応していないので、自分でガリガリ書いた。気が向いたら、リポジトリ分けるかも。
- Toggl APIやIFTTTのWebhookの仕様に引っ張られて、セキュリティ的に微妙なところがあるので、アプリやインフラ設定からもう少しセキュリティ担保したい
今後
今後はIFTTT対応していないサービスのAPIやIFTTTだけで組むのが難しそうなレシピ思いついたらラッパー使っていく。