Stylez Advent Calendar 2018の2日目です。
今年は色々な方が書いてくださるようなので嬉しいです。
はじめに
家計ってどう管理していますか?
私事ですが、今年結婚いたしました。
共働きなのでいい感じに折半したいなーとなったのですが、いい感じに折半できるアプリケーションを見つけることができませんでした。。。
ないんだったら自分で作ればいいのよ!
と、某黄色いカチューシャの人が言っていたのを思い出したので作ってみました。
ここ1年半ほどまともに作らせてもらえてないですし、息抜きを兼ねて…。
こんな感じ
必要な機能は折半なのでこれだけです。
メモ欄の部分にまとめたいkeyを入力して、精算を押すだけです。
分担
お互いSEなので分担して進めました。
- 自分:認証周りとか土台周り
- 嫁:画面、計算周り
アーキテクチャ
- 言語:Java 8
- フレームワーク:SpringBoot 2.0
- 画面:Thymleaf 3、mini.css
- データストア:zaim
- 認証:OAuth1.0a
認証周りはこの辺を見てください。
JavaでZaimのAPI(OAuth1.0)を叩く
(以前やってたのはこれがやりたかったのです。
選定理由
- zaim
- 折半したいだけだから家計簿部分まで作るのはなんかちがう
- レシート読み取りでの登録が便利(最近ますます精度が上がっててすごい
- APIが公開されている
- Java + SpringBoot
- お互いJavaはわかる
- SpringBootだと早そうだけどちゃんと使ったことはなかった
- mini.css
- Bootstrapはなんだかんだ面倒だから別の使ってみたかった(らしい
嫁曰く、結局同じくらいの使用感だったみたいですが。。
どう使っているか
データ登録
スマホアプリから各々レシートを読み取ったりしてデータをzaimに登録します。
このとき、メモ欄にお互いの名前をいれておきます。
これをグループ化のキーとして使います。
データ取得
データ取得はOAuth1.0aでzaimと認証してREST APIで引っ張ってきます。
ローカルで使うだけなので、tokenはCookieに入れてしまって、再認証がいらないようにしています。
計算
集計期間を指定して、お互い使った金額を取得し計算をします。
グループ化のキーもこのとき指定します。
面倒なので前回精算した日をLocalstorageにいれてしまって、現在日付との間で使った金額を算出してます。
グループ化のキーにお互いの名前を入れて、どっちが何円使って、どっちが何円払うかみたいなことを計算します。
運用
今は2〜3ヶ月に1回で精算しています。
今のところローカルPCで実行して、集計後はslackで共有しています。
今後の改善
- Slack連携
- スラッシュコマンド打ったら精算してくれるとか
- 精算後自動で通知してくれるとか
- サーバでの運用
- 買って以来何者にもなれていないラズパイに乗っけたい
まとめ
やっぱり作るのはたのしい。
自分たちの生活は自分たちでどんどんよくしていきたい。
これで困ってる人結構いると思うんですよね……。
(ほんとはもっと作り込んでwebサービス化したかったのですが、データストアにzaimを使用しているところでよくないかなと思い諦めました。)
この内容で社内LTをさせていただいたときの資料です。
LTするの初めてだしでちょっと緊張したのは内緒です。
https://speakerdeck.com/kxn4t/homemade-household-account-book-system