VISA デビットカードを使ったら口座残高が通知されるようにした

VISA デビットカードを使ったら口座残高が通知されるようにしたので、個人の技術的な備忘録。

三菱東京UFJダイレクトのページの操作を自動化して、口座残高を調べる - kitak.blog の続きにあたります。ざっくりこんなかんじです。

(あらかじめ、VISA デビッドカードを使ったら Gmail のアドレスにメールが来るようにしておく。これは三菱東京UFJダイレクトのページで設定できる)

  1. IFTTT の Applet で Gmail で指定のアドレスからメールが届いたら、VPS のウェブサーバーに HTTP リクエストを送るようにする
  2. ウェブサーバーでは、前回の記事で紹介した Python スクリプトを実行して、口座残高を取得する(スクレイピングに時間がかかってタイムアウトすることがあるのでジョブキューに投げる)
  3. LINE Notify で残高を通知する

IFTTT

Gmail のアドレスにメールが届いたことを検知するには、Push Notifications  |  Gmail API  |  Google Developers に書かれている方法でできそうだったけれども、Cloud Pub/Sub API とか諸々のお膳立てが面倒なかんじだった。
他に何か良い方法は無いかと考えていたら、IFTTTGmail の Trigger があったのを思い出したので、調べたら、ついでに Maker Channel (https://ifttt.com/maker) というものがあるのを知った。HTTP リクエストを Trigger にしたり、Action で HTTP リクエストを実行してくれる。名前から分かるように、Arduino とか Raspberry Pi みたいなデバイスと連携するためにできた機能っぽいんだけど、既存のウェブサービスと自作ウェブサービスの連携が捗る神機能な気がする。けっこう前からあるようだけど、大昔に TwitterEvernote の連携をして以来 IFTTT を使っていなかったので知らなかった。

LINE Notify

取得した口座残高は LINE Notify ( https://notify-bot.line.me/ja/ ) で通知させることにした。LINE 版 ikachan。
HTTP リクエストを実行すれば、LINE のグループに通知を送れる。シークレットトークンの発行も簡単。

自作ウェブサービス周り

  • VPSVultr の東京リージョンを借りた
  • IFTTT からのリクエストを受け付けるサーバーは Flask で書いた。Flask を使うにあたって Home · yoshiya0503/Flask-Best-Practices Wiki · GitHub とか GitHub - be-hase/ghe-line-notify: LINE Notify Gateway for Github Enterprise. を参考にした
  • 口座残高の取得にけっこう時間がかかるので、ジョブキューに投げることにした。使ったジョブキューのモジュールはシンプルそうな RQ
  • 教養ぐらいのつもりで Docker (Docker Compose) を使って動かすことにした
  • 手元で作った Docker image を EC2 Container Registry に push して、VPS で pull して使う。ECS 使わんの? と思われそうだけど、あれも使いたいこれも使いたいとなって AWS 沼に嵌っていきそうな気がしたのでやめた。あと、リハビリとして、VPS いじりをしたい気持ちだった
  • 手元で開発を行っている環境と同じ環境を簡単に構築できるので、Deploy はすんなりいった。ただ初めてやることが多かったので、Deploy までのお膳立てがけっこう大変だった
  • (自分しか使わないサービスだから別にいいんだけど) Container の監視どうしようかな、と思って、色々調べたら、Datadog を使うのが楽そうだった。Docker integration で 走っている Container の数を監視して、減ったら通知するようにした。通知は Webhook integration で、口座残高と同じく LINE Notify を使った

というかんじで、口座残高が通知されるようになった。ブラウザで動く JavaScript ばかりしばらく書いてて、色々アレになっている部分があるので、今年はこういう個人のお金まわりのウェブアプリを書いてリハビリをする予定。