いまからできる!LINEで共有家計簿!
(実装に関しては後半にあります)
共有ができる家計簿を作りました!
LINE家計簿ってサービスがありますが、全く関係ないです。
LINEのサービスと勘違いするなどの問題が出たらプロダクトカラーを青にします。
以前、Slackで使える家計簿の記事を書きました。
あさってからできる!Slack家計簿!
http://blog.leonardo-mbc.blue/archives/127
今回は新しく LINE で使える家計簿の bot を作成しました。
Slack だけで何不自由なかったのですが、自分の親もまぜて家計簿を共有したいとなって脱 Slack となりました。
Slackだと実装が必要でしたけど、LINE なので誰でも使えるように公開しました!
かけいぼっと https://line-kakeibot.firebaseapp.com/
家計簿をつけている図

こんな感じで使った金額を複数人で共有していきます
「払った金額だけを束ねて、後で見るの?」
そうではありません!
もともと僕と嫁の運用では、共通の銀行口座に毎月10万円を振り込みます。
(じぶん銀行が無料で自動入金(pull)してくれて便利です)
定額自動入金サービス | じぶん銀行
http://www.jibunbank.co.jp/service/money_order/

同じ額入れてる口座なので、月一で集計される金額も
払った金額そのまま、払った人に戻せばおっけー

返金の処理もうまく自動化したかったのですが
PayPal for Slackが日本口座には対応しておらず断念
(何か良さそうなツールがあったらおしえてください)

そして、残ったお金で光熱費の支払いや貯金をするのです。
実装について
コードはすべてこちらに上がっております。
https://github.com/Leonardo-mbc/line-kakeibot

LINE の MessagingAPI から Webhook を受け付けるために、https のドメインが必要になります。
なので、サクッと作れて楽な App Engine をフロントサーバーとして用意しました。
LPサイトや、LIFFで動作する静的なHTMLは Firebase hosting で上げています。
最初の構想では、Functions を各々の機能ごとにつくってマイクロサービスみたいにしたかったのですが、Functions から Functions を呼んでと連鎖していくとめちゃくちゃ重い
それに LINE の Webhook がきてから replyToken に時間制限があるようで、たまにほとんどの場合返信できなくなります。
なので App Engine を使うことにしました。
LIFF
LIFF とは
https://developers.line.biz/ja/docs/liff/overview/

LINE Front-end Framework というもので、LINE のトークの中で開くことができるWebアプリです。
ユーザーのIDやメッセージの送信などといったアクションができます。
家計簿を見たり、設定の変更に他のアプリをつかってやるより、トークの中でさくっと見れたほうが良いと思って LIFF を採用しました。



LIFF から手に入る UserId をもとに、Functions を経由して DB からデータを取ってきます。
セキュリティ的には Hosting と Functions の間に Auth があったほうが良いと思います。
家計簿に招待 機能
共有できる家計簿なので、自分がつくった家計簿に招待することができます。
共有家計簿なので、この仕組は結構重要な機能です。
できるだけ簡単な仕組みで共有できることを目指して、以下のようにQRで共有することにしました。

招待ボタンを押したらQRコードがでるので、それを共有したい人に読んでもらいましょう
普通のQRコードリーダで問題ないです。
QRを読み込むと、LINE ログインを要求されます

こうすることで、どの端末・アプリからQRコードをひらいても、LINE の userId と紐付けることができます!
豆知識1
LINE の userId は bot(Messaging API) ごとに異なります。
LIFF の場合は LIFF が紐付けられている Messaging API のuserId となり、
LINE ログインの場合は、LINE ログインに紐付けられてる Messaging API のアカウントの userId となります。
なのでかけいぼっとでは、Messaging API と LINE ログインのアカウントを作成して、
LINE ログインを MessagingAPI に紐づけ、
LIFF を Messaging API に紐づけすることで、3つとも同じ userId で運用できています。
豆知識2
LIFF はGETパラメータ/search クエリを受け取れません(2018.12.23現在)
受け取れると書いてある記事もありますが、現時点では古い不具合と思います。
仕組み的には受け取れないのはわかりやすく
LINEスキーマのURLをクリックすると、設定したURLをLIFF内で開くからです。
line://app/1629647443-akpkbe4r
↓
https://line-kakeibot.firebaseapp.com/line-liff-starter
/app/{id} にどんなパラメータをつけても転送先のURLには影響ありません
かけいぼっとでの家計簿や設定などは userId によって取得できるデータを変えるようにしました。
また、家計簿へ招待する場合は、どの家計簿かを示す家計簿IDを渡さないといけないため、LIFFでは実装できず、App Engine 上の静的ファイルとして乗せることにしています。(なので LINE ログインで userId との紐づけが必要なのです!)
おわりに
全体的にはかけいぼっとの宣伝です。
LINE家計簿や、マネーフォワードのような家計簿アプリは個人の記録をつけるだけで
誰かと毎月精算したいといったニッチなニーズにはつかえないのです。
ないから作ったというだけですが、せっかくなのでみんなもユースケースにあえば使ってみてください。
僕がサーバー代とか払うだけで無料ですので!
1 Response
[…] (この家計簿アプリについてはこちらの記事を参照 http://blog.leonardo-mbc.blue/archives/293 ) […]