家計簿のミタ
このソフトをホリネズミに捧げます。
このソフトは、Linuxで動くコマンドライン操作の複式簿記家計簿です(Linux以外でも動くかもしれないけど、自分では確認してません。Windowsで動かそうとしたけど、いろいろ問題にぶつかるので途中でやめました)。
自分用に作っているので、自分以外の人はあまり期待しないように。
データベースを自分で用意しないといけないので、普通の人にはインストールすら難しいです。
プログラマの方ならインストールできると思います。
バージョンアップするときに、テーブルの構造を変えることがあるので、バージョンアップする場合、自分でschema.sqlの差分を見ながらALTER TABLE等をしないといけない場合があります。
バグもあるだろうし、自分でデータベースのバックアップを取れないとデータも消えるかもしれんし。
おしゃれな機能もなく、シンプルなものとなっている。
それでも使いたいという奇特な方だけご使用ください。
必要要件
インストール
mita
mitaからバイナリをダウンロードする。
Linux(x64)以外は用意されてない。
mitaをパスが通る場所に置く。
fzf
複数の選択肢から選ぶのを便利にするコマンドです。
インストールの仕方は自分で調べてください。
PostgreSQL(データベース)
- PostgreSQL をインストール
- PostgreSQLに自分のユーザー名のROLEをつくる
- PostgreSQLにさっきつくったROLEがオーナーのmitaという名前のデータベースをつくる
- コマンドラインでpsql mitaと入力してデータベースへ接続できるか確認。\qで終了。パスワードを求められた場合は、ROLEにパスワードを設定して、mitaと入力してヘルプを表示したあと、~/.config/mita/config.tomlのデータベースのUserとPasswordを設定する。
- mita data schema.sql | psql mitaで、テーブル等を作成する
- mita data accounts.example.tsv >accounts.tsv
- accounts.tsvを編集して自分の好みに勘定科目を変更する
- mita account import accounts.tsvで勘定科目をテーブルにインポートする
使用例
以下は、mita data accounts.example.tsvの勘定科目が登録されているものとします。$はプロンプトを表す。
まずmitaと引数を与えずに実行するとヘルプが表示される。
開始残高を設定
$ mita transaction add
日付:
借方: 現金
貸方: 開始残高
金額: 50000
摘要:
2020-01-03 現金 / 開始残高 50,000
y(es), d(ate), l(eft), r(ight), a(mount), n(ote), s(tart-end), q(uit): y
借方と貸方はfzfで選択できるので楽です。
$ mita tr a
と省略形でも実行できる。
日付は以下の形式をサポート
- 入力なし : 今日
- -1 : 昨日。-3なら3日前
- 5 : 今月の5日
- 12/31 または 12-31 : 12月31日
- 2019/12/10 または 2019-12-10 : 2019年12月10日
からあげを購入
$ mita tr a "" 食費 現金 1000 からあげ
mita tr a 日付 借方 貸方 金額 [摘要] [開始月 終了月]
でも入力できる。
""は日付に入力なしを渡している。
いままで入力した取引を表示してみる。
$ mita tr ls
0 2020-01-03 現金 開始残高 50,000
1 2020-01-03 食費 現金 1,000 からあげ
今月分だけが表示されている。最後の引数に月を表す文字列を与えると表示する月を指定できる。11なら今年の11月、2019-10なら2019年10月、-- -1なら先月(-から始まる引数はオプション指定として解釈されてしまうので、--でこれ以降は引数であることを明示している)。
お母さんからおこづかいをもらった。
$ mita tr a "" 現金 その他収入 3000
現在の資産状況を確認する。
$ mita bs
資産:
現金 52,000
負債:
総資産: 52,000
総負債: 0
純資産: 52,000
bsという名前は貸借対照表(B/S)からきている。
今月の収支状況を確認する。
$ mita pl
2020-01
収入:
その他収入 3,000
費用:
食費 1,000
総収入: 3,000
総費用: 1,000
損益 : 2,000
plという名前は損益計算書(P/L)からきている。
B/Sはある時点の情報だが、P/Lはある期間の情報であることに注意する。このソフトではP/Lの期間は1月ごと。なので引数に月を表す数字を入力するとその月のP/Lが出る。月の形式は前に示したmita tr lsと同じ。
もっとグラフィカルにP/Lを知りたいので、以下を実行する。
$ mita server
Running on http://localhost:5001/ (Press CTRL+C to quit)
ブラウザを開いてURLにhttp://localhost:5001/ と指定する。
上に資産の推移、下に1月ごとの収支が1年分表示される。
以下は、他のデータにたいしてmita serverをした例です。
給料を入力する。給料は手取りだけ入力するのではなく、所得税や年金保険料等も入力することで、お金に対する意識が高まる。
給料は定型的な項目を複数入力することになるので、テンプレート(雛形)機能を利用する。まずはテンプレートを登録する。
$ mita te a
名前: 給与
(省略)
0 未収入金 / 給与 0
1 健康保険 / 未収入金 0
2 年金保険料 / 未収入金 0
3 雇用保険 / 未収入金 0
4 所得税 / 未収入金 0
5 住民税 / 未収入金 0
0-5, a(dd), r(emove), o(rder), q(uit): q
今回は、未収入金を使ったが、家計簿の運用方法は自分の好きなように決めることができる。
今作ったテンプレートを使ってみる。
$ mita te u
テンプレート: 給与
日付: 2019-12-31
未収入金 / 給与 0
金額: 100000
健康保険 / 未収入金 0
金額: 15000
年金保険料 / 未収入金 0
金額: 15000
雇用保険 / 未収入金 0
金額: 2000
所得税 / 未収入金 0
金額: 2000
住民税 / 未収入金 0
金額: 5000
0 2019-12-31 未収入金 / 給与 100,000
1 2019-12-31 健康保険 / 未収入金 15,000
2 2019-12-31 年金保険料 / 未収入金 15,000
3 2019-12-31 雇用保険 / 未収入金 2,000
4 2019-12-31 所得税 / 未収入金 2,000
5 2019-12-31 住民税 / 未収入金 5,000
y(es), d(ate), 0-5, q(uit): y
実際に入力されたか、先月の収支を確認してみる。
$ mita pl -- -1
2019-12
収入:
給与 100,000
費用:
保険 32,000
年金保険料 15,000
健康保険 15,000
雇用保険 2,000
税金 7,000
所得税 2,000
住民税 5,000
総収入: 100,000
総費用: 39,000
損益 : 61,000
25日に給料が振り込まれた。
$ mita tr a 25 A銀行 未収入金 61000
スポーツクラブの年会費を払った。
$ mita tr a "" 娯楽 現金 50000 ジム年会費 2020-01 2020-12
期間を指定することで、5万円を2020年1月から12月までに(50000/12)円分ずつ分配した費用になる。
費用が各月に分配されているか確認する。
$ mita pl
2020-01
収入:
その他収入 3,000
費用:
食費 1,000
娯楽 4,167
総収入: 3,000
総費用: 5,167
損益 : -2,167
娯楽の費用が実際に支払った50,000円でなく12で割った4,167になっている。このように期間を指定することで月ごとの実質的な収支がわかる。
車を買ったときに、簿記でいう減価償却をしてもいいが、単純化して最低限乗りそうな期間(たとえば5年)を指定するという運用にしてもいいんじゃないでしょうか。
あとは、mita tr aのaの代わりに、eなら編集、rなら削除などの機能があります。
trをacに変えれば、取引の代わりに勘定科目に対して操作できます。
ずぼら家計簿のすすめ
私が家計簿をつける目的は、何にどれくらい使っているのかをおおざっぱに理解するためです。なので、現金は紙幣のみ管理しています。
たとえば、パンを100円で買って、千円札で払ったら、
食費 / 現金 1,000
と入力します。もし 100円玉で買っていたら、紙幣は使ってないので家計簿には何も記入しません。
食費(200円)と書籍(600円)を同時に購入して千円札で払った場合は、金額の大きい書籍のみを借方に書きます。
小さい金額を正確に入力してもメリットよりも、管理のための手間が増えるデメリットのほうが大きくなります。
私は紙幣だけの管理をしているのですが、それでも記入忘れでときどき実際の現金と家計簿の現金残高が合わなくなります。硬貨まで管理していたら、たぶん家計簿が続いてなかったと思います。