DjangoとMDBで家計簿アプリを作りました(ソースコード全文公開)

DjangoとMDBを使って家計簿アプリ第二弾を作ってみました。
以前公開した家計簿アプリをベースにMDBを使ってマテリアルデザインを取り入れています。
完全にフレームワークの力ですが、以前のものより使い勝手と見栄えが良くなっていると思います。

ちなみに前回はPythonライブラリのplotlyを使ってグラフを出力してみましたが、今回はJavaScriptライブラリのChart.jsを使用しました。
細かい調整や複雑なグラフを作る場合はをplotlyに軍配があがるような気がしますが、Webアプリケーション上での見栄えはChart.jsの方がいいかな、と思います。Chart.jsは特別なことはせずにグラフに動きが出る点も面白いです。

ソースコード

githubに公開しています。
https://github.com/qlitre/django-mdb-kakeibo

概要

モデルですが、以下の構成となっています。

  • 支出カテゴリ
  • 支出
  • 収入カテゴリ
  • 収入
  • 資産カテゴリ
  • 資産


基本的にカテゴリに紐づける形で金額を入力していくシンプルな使用方法です。
入力された値をpythonライブラリのpandasを使って集計処理を行い、適宜グラフデータを作成しています。

画面イメージ


支出一覧ページ

支出は年月に加えてキーワードや金額で絞り込めたりと、少し細かく検索できるようにしています。
家計簿をつけていて一番気にするところだと思うので…


収入一覧ページ

収入はレコード数も少ないので、検索にはあまり力を入れておらず、年月の検索のみです。
一般的なサラリーマンですと、月に一度給料が入って、たまにボーナスがある、という感じですので。
地味な点ですが、ヘッダー上のいま見ているページの色を紫にするようにしています。


資産一覧ページ

この家計簿アプリでは資産状況も管理できるようにしています。
例えば現金をいくらもっていて、有価証券の額はいくらで…ということを記録します。
月に一度カテゴリごとに保有している額を入力していく仕様です。


登録削除方法


支出、収入、資産それぞれで一覧ページから登録削除ができるようにしています。
以下のgif画像は支出を追加して削除する例です。


カテゴリの登録

カテゴリの登録に関してはDJango管理サイトから行う仕様です。

月間収支確認ページ

以下の内容が確認できます。

  • 収支
  • 総支出
  • 総収入
  • カテゴリごとの支出、構成比
  • カテゴリ別ドーナッツグラフ


デフォルトではシステム日付に対応した月が表示されますが、ボタンで前月、次月送りができます。


収支推移ページ


収入と支出の推移を確認できます。


グラフはカテゴリごとに表示を切り替えたりできます。


資産ダッシュボードページ


こちらは以下の情報が確認できます。

  • カテゴリごとの現保有額、構成比
  • 前月、期初比
  • カテゴリ別ドーナッツグラフ
  • 資産額、月別増加率の複合グラフ



試しにビットコインを追加してみましょう。


その他機能

django-import-exportを使用して、管理サイトからデータの入出力をできるようにしています。

プロジェクトの開始方法

まずは適当なディレクトリでgit cloneしてください。

git clone https://github.com/qlitre/django-mdb-kakeibo


次にcloneしたディレクトリに移動して、仮想環境を立ち上げてください。

cd django-mdb-kakeibo
python -m venv myvenv
myvenv\scripts\activate


次にライブラリをpip installします。

pip install -r requirements.txt


installが終わったら、modelをmigrateしてsuperuserを作っておきましょう。

python manage.py migrate
python manage.py createsuperuser


カテゴリの登録は管理画面から行っていく仕様です。
とりあえずの初期カテゴリデータを用意していますので、動作確認等にお使いください。

python manage.py loaddata initial.json


settings.pyの以下の項目を環境に合わせて編集ください。
例えば2021年から開始して、4月を期初とするなら以下のようにします。

# 家計簿のスタート年を定義
# 年の絞り込み検索のスタートする年として使用されます。
KAKEIBO_START_YEAR = 2021

# 家計簿の起算月を定義
# 年初比に使用されます。
MONTH_OF_BEGIN_TERM = 4


あとはrunserverして家計簿アプリをお楽しみください。

python manage.py runserver
TOPページ