はじめに
コマンドラインから 家計簿をつけることができる ledger を試してました.
ledger は
Ledger は, *nix システムのコマンドラインで動作する, 複式簿記記録ツール.
メリットは,
- command line
- 複式簿記
- データはプレーンテキストで保存
- シンプル
以下から, ダウンロードできる. マルチプラットフォーム.
つかいかた
.dat 形式の独自 ledger フォーマットで記録していく.
以下, 3 日間の自分の記録. budger.dat で保存する.
; -*- ledger -*-
2015/03/30 .
食費:外食:主食 4.00
食費:外食:飲み物 2.00
食費:自炊 17.00
資産
2015/03/28 .
光熱費:水道 25.00
食費:外食:カフェ 3.00
食費:外食:カフェ 3.00
食費:外食:主食 6.00
食費:自炊 3.00
資産
2015/03/27 .
食費:外食:カフェ 3.00
食費:外食:カフェ 3.00
資産
バランスシート
集計は, bal
を指定する.
$ ledger -f budget.dat bal
25 光熱費:水道
-69 資産:支出
44 食費
24 外食
12 カフェ
10 主食
2 飲み物
20 自炊
--------------------
0
トランザクション
項目の支出の確認には, reg
を指定する. もちろん reg (項目)
でフィルタリングできる.
$ ledger -f budget.dat reg 外食
15-Mar-30 . 食費:外食:主食 4 4
食費:外食:飲み物 2 6
15-Mar-28 . 食費:外食:カフェ 3 9
食費:外食:カフェ 3 12
食費:外食:主食 6 18
15-Mar-27 . 食費:外食:カフェ 3 21
食費:外食:カフェ 3 24
Emacs 連携 (ledger-mode)
Emacs 用の lisp もある.
ledger のデータファイルを編集するときのメジャーモード. Emacs から ledger コマンドを発行するための 関数がとても豊富に容易されている.
よく利用するのが, M-x ledger-report
(C-c C-o C-r) これで,
いろいろな情報を簡単にまとめることができる.
org-capture との連携
(require 'ledger-mode)
(add-to list 'load-path "~/.emacs.d/el-get/repo/ledger-mode/lisp")
(add-to-list 'auto-mode-alist '("\\.dat$" . ledger-mode))
flycheck-ledger
ledger ファイルを flycheck でチェックすることもできる.
(with-eval-after-load 'flycheck
'(require 'flycheck-ledger))
org-mode (org-babel) 連携
legder -f xx org とかくと, org-table 形式で出力.
これをやると, コマンドラインから使えなくなってしまうのが欠点.
以下の設定を追加. これで, org-babel で ledger が利用可能になる.
(org-babel-do-load-languages
'org-babel-load-languages
'((R . t)
(shell . t)
(ledger . t))) ;; ★
#begin_src ledger :cmdline bal
とかいてコードを書く. これを評価する と
balance コマンドが発行される. :cmdline というオプションにいろい
ろと指定すれば, 自由に ledger のコマンドが発行できる.
#begin_src ledger :cmdline org :results raw
とかくと, org-table
方式でテーブル出力が可能だ. org-table からならば, R を利用し
てデータ集計が可能.
まとめ
デメリット
ledger の最大のメリットは, データを簡単にフィルタリングできるという ことだと思う. しかし, 以下のようなデメリットもある.
- データの加工は不自由 (ledger 仕様)
- グラフもかけない
- クラウド連携もできない
あわよくば複式簿記をみにつけたい
しかし, 自分はしばらく ledger を利用しつづけようと思う. あわよくば ledger を通じて複式簿記をみにつけたい.
ledger には, 複式簿記用の大量の機能が備わっている. これらはほとんど理解していない. データ加工は, 必要に応じて Excel や Gnu Cash をつかいわけることにする.
environment
- Arch Linux
- Ledger 3.1.0