LoginSignup
10
7

More than 5 years have passed since last update.

自家製家計簿システム作って家庭内で運用する

Last updated at Posted at 2018-12-02

Stylez Advent Calendar 2018の2日目です。
今年は色々な方が書いてくださるようなので嬉しいです。

はじめに

家計ってどう管理していますか?

私事ですが、今年結婚いたしました。
共働きなのでいい感じに折半したいなーとなったのですが、いい感じに折半できるアプリケーションを見つけることができませんでした。。。

ないんだったら自分で作ればいいのよ!
と、某黄色いカチューシャの人が言っていたのを思い出したので作ってみました。
ここ1年半ほどまともに作らせてもらえてないですし、息抜きを兼ねて…。

こんな感じ

必要な機能は折半なのでこれだけです。
スクリーンショット 2018-12-02 20.44.53.png
メモ欄の部分にまとめたい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に登録します。
このとき、メモ欄にお互いの名前をいれておきます。
これをグループ化のキーとして使います。
スクリーンショット 2018-12-02 21.05.07.png

データ取得

データ取得はOAuth1.0aでzaimと認証してREST APIで引っ張ってきます。
ローカルで使うだけなので、tokenはCookieに入れてしまって、再認証がいらないようにしています。
スクリーンショット 2018-12-02 21.08.16.png

計算

集計期間を指定して、お互い使った金額を取得し計算をします。
グループ化のキーもこのとき指定します。
スクリーンショット 2018-12-02 21.12.52.png
面倒なので前回精算した日をLocalstorageにいれてしまって、現在日付との間で使った金額を算出してます。
グループ化のキーにお互いの名前を入れて、どっちが何円使って、どっちが何円払うかみたいなことを計算します。

運用

今は2〜3ヶ月に1回で精算しています。
今のところローカルPCで実行して、集計後はslackで共有しています。

今後の改善

  • Slack連携
    • スラッシュコマンド打ったら精算してくれるとか
    • 精算後自動で通知してくれるとか
  • サーバでの運用
    • 買って以来何者にもなれていないラズパイに乗っけたい

まとめ

やっぱり作るのはたのしい。
自分たちの生活は自分たちでどんどんよくしていきたい。

これで困ってる人結構いると思うんですよね……。
(ほんとはもっと作り込んでwebサービス化したかったのですが、データストアにzaimを使用しているところでよくないかなと思い諦めました。)


この内容で社内LTをさせていただいたときの資料です。
LTするの初めてだしでちょっと緊張したのは内緒です。
https://speakerdeck.com/kxn4t/homemade-household-account-book-system

10
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
7