Zaim + BigQuery + Looker Studio でイケてる家計簿を作る
我が家では家計簿アプリ Zaim を使って妻と二人で家計簿をつけており、Zaim からデータを取り込んで BigQuery + Looker Studio で収支や資産状況を可視化しています。数ヶ月くらい運用して、なかなか便利だったので、紹介させてください。
TL;DR
- お金の履歴が BigQuery に入っていると、可視化もアラートも自由自在でとても便利
- BigQuery はよくあるデータ分析用の 3 層構成を意識している
- 我が家の台所事情には触れません
どんなダッシュボード?
細かい金額は伏せていますが、以下のようなダッシュボードを作っています。他にも何種類かダッシュボードがありますが、この記事では割愛します。Zaim でも表示できるグラフも含まれていて、Zaim の再実装になっている部分もあります。しかし、Zaim や他の家計簿アプリに比べると圧倒的に可視化の自由度は高く、大型出費ランキングやリスク許容度などは独自に実装して活用しています。ちなみに、リスク資産には一律で同じ損失率を設定しています。考え方は普通の人が資産運用で 99 点をとる方法とその考え方を参考にしています。
家計簿アプリの選定
色々な家計簿アプリがありますが、Zaim は金融機関やクレジットカードが多く、レシートのカメラ読み取りや CSV ダウンロードができる点に魅力を感じて選びました。しかし、複数のユーザでアカウントを共有する機能がなく、夫婦や家族の生活費管理としてはやや力不足です。今はパスワードを夫婦で共有して 1 アカウントで運用しています。
アカウント共有という点では OshidOri が優れていますが、私が試した時点では電子マネーや XXPay 系のサービスがほとんど連携できず諦めました。B/43 も家族での家計簿管理に対応していそうですが、試していません。MoneyForward や Moneytree もアカウント共有できず、Zaim との機能的な大きな差は感じませんでした。
家計簿の可視化の課題
Zaim はよくできた使いやすいサービスですが、一部の金融機関(モバイル Suica など)が 1 アカウントしか登録できないため、夫婦で同じ金融機関に別々の口座を持っているときに困ります。夫婦で使うとなると、複数の Zaim アカウントを利用し、その収支を集計・可視化する必要があります。そこで、複数の Zaim アカウントの情報を統合的に集計・表示するために、家計簿ダッシュボードを Looker Studio で自作することにしました。
インフラ構成
家計簿システムは以下のようなインフラ構成になっています。
GitHub Actions
まず、Python で Zaim から支払い履歴を取得し、BigQuery へデータを投入するプログラムを書きました。このプログラムは GitHub Actions 上で週一でスケジュール実行されています。Selenium で Zaim にログインし、支払い履歴は CSV でダウンロード、残高情報はスクレイピングしています。Zaim と GitHub Actions が ETL のような役割を担っていると考えてもらえれば、理解しやすいと思います。
BigQuery
BigQuery には lake
, mart
という 2 つのデータセットを作っています。よくある 3 層構成を意識していて、lake
はデータソース層、mart
はデータマート層に対応しています。今の時点では必要性を感じていないため、中間となるデータウェアハウス層を省いています。
-
lake
: Zaim から取得した生データをそのまま入れるデータセット-
zaim_asset
: 銀行等の残高推移を記録したテーブル -
zaim_payment
:zaim_payment
は支払い・収入の履歴テーブル
-
-
mart
: ダッシュボードから直接参照して、可視化に利用するデータセット-
monthly_asset_1y
: 過去 1 年間の 1 ヶ月単位の残高の推移を見るためのビュー。スキャンサイズ策げのための期間の絞り込みや、口座の用途(生活費、趣味、投資)、安全資産 or リスク資産を判定している。 -
zaim_payment_6m
: 過去 6 ヶ月の支払い・収入履歴のビュー。不要なレコードの除外やカラムの追加などを行い、家計簿の集計に使いやすく加工。
-
BigQuery には無料枠があり、
- 1 TB のクエリ(1 か月あたり)
- 10 GB のストレージ(1 か月あたり)
までは料金がかからず処理できます。まだ数メガバイトくらいしか使っていないので、余裕で無料です。
Looker Studio
以前は DataPortal という名前でしたが、Looker に統合されて Looker Studio という名前になりました。言わずと知れた無料でダッシュボードが作れる凄いヤツです。痒いところに手が届かないところもありますが、これほどのサービスが無料で使えるのは驚くべきことですね。BigQuery との連携ができるので、mart のデータを読み込み表示させています。
さいごに
一度作ると便利ですし、いろいろな集計をかけることで自分のお金の使い方への理解が深まるので良いですね。本職がデータエンジニアなので、(家族に嫌がられない範囲で)家庭にもデータに基づく意思決定を浸透させていこうかなと思っています。
Discussion