今日はEmacsで簡易家計簿を作るにはどうしたら良さそうか考えてみました(・ω・)/
実際の所、最近預金残高を見るたびにドンドン減っていくのが悲しいのです(ノω・、)
どうせリタイアしたころには年金なんて出ないでしょうから、
せめて月に使ったお金をざっくり管理して、
無駄な所は省いていかないといけません。
もちろん世の中には家計簿をつけるためのプログラムが色々ある訳ですが、
せっかくなのでEmacsを使ってみたいと思います。
とは言え、Lispなんて書けませんから、
Emacsに元からある機能をやりくりします。
多分
- Org modeの表計算
- Remember mode
の2つを使うと、ザックリな事は出来そうです。
目指すのは、
- とにかくサクッと登録したい
- お金を使った物のカテゴリー位は記録したい
- ざっくり眺めて、1週間ごととか1か月ごとに、使ったお金の合計が分かればそれで良い
- カテゴリーごとに合計が出るともっと良い
という程度の物です。
グラフ化したりは、多分要りません。
(使い始めは楽しいけど、すぐ飽きるので)
では始めます。
まずEmacsの設定ファイルに以下を追加します。
;;Remember Mode Setting
(setq org-directory "~/org/")
(setq remember-annotation-functions '(org-remember-annotation))
(setq remember-handler-functions '(org-remember-handler))
(add-hook 'remember-mode-hook 'org-remember-apply-template)
(define-key global-map "\C-cr" 'org-remember)
;;Template Setting for Remember Mode
(setq org-remember-templates
'(("Journal" ?j "** %^{Head Line} %t %^g\n%i%?" "~/org/journal.org")
("Book" ?b "** %^{Book Title} %t :BOOK: \n%[~/org/.book_template.txt]\n""~/org/journal.org")
("Cinema" ?c "** %^{Film Title} %t :CINEMA: \n%[~/org/.film_template.txt\n""~/org/journal.org")
("Account" ?a "** %^{Ammount} %u %^g %!" "~/org/account.org")))
といっても、今回追記したのは一番下の赤文字の部分のみです。
"Account" ?a
の部分の意味は、まずCtrl+c rを押した時に出てくるテンプレート選択に"account"を追加してます。
その時、小文字の"a"をタイプするとAccountを選択するように指示しています。
その後の
"** %^{Ammount} %u %^g %!"
では実際に書き込む文字列のテンプレートを作っています。
まず
**
を書きこんで、
%^{Ammount}
の部分でユーザーからの書き込みを待ちます。
ここでは金額を書き込むことにします。
その後ろに
%u
で書きこんだ日付を入れて、
%^g
でタグを設定するようにユーザーに促します。
通常書き終わると、Ctrl+c Ctrl+cと入力しないと保存されないのですが、
ここでは一番最後に
%!
と書いておくことで、タグを入力し終わったら則保存するよう設定します。
その後ろの
"~/org/account.org"
の部分は、入力した内容を保存するファイルを指定しています。
さてこれで、いつでも Ctrl+c r を打って、金額と使い道を入れたら
特定のファイルに書き込まれるようになりました。
試しに適当に入力してみるとこんな感じになります。
金額 日付 使い道
の順で並んでいます。
タグのところはBookとかDrinkとかだけでも良いですし、
具体的に何を買ったのかを書いても良さそうです。
このままですと計算できないので、
これを表に落とします。
マウスで領域選択して、Ctrl+c | で下のように表形式にしてくれます。
もしきれいに表が作られない(縦線がジグザグになったり)する場合は、
使っているフォントが悪者です。
どうしてもアジア系のフォントはアルファベットと幅が異なりますので、
Emacsが文字数をカウントしてあわせてくれる表の幅がずれる事があります。
表にしたので、今度は使った用途別に並べ替えてみます。
用途別に並べ替えたいので、一番上の :Book: の所から初めて、
下まで選択します。
この状態で Ctrl+c ^ と打つと、
ミニバッファに
- アルファベット順
- 番号順
- 日付順
のどれでソートを書けるか聞いてきます。
アルファベット順に並べ替えたいので、”a”をタイプするとこうなります。
当然漢字もきちんと並べ替えてくれますが、英語で書くか日本語で書くか決めておいた方が良さそうです。
ではこの表で使ったお金の合計を出してみましょう。
まず合計した値を入れるために、一番下に行を追加します。
:本:ハイペリオン:
と書いてある所で TAB を押すと行が追加できます。
で、数字が書かれている列の一番下にカーソルを持ってきて、
Ctrl-u Ctrl-c =
と押すと、ミニバッファに式を入れるよう求められます。
Field formula B12=
と表示されるので、続けて
Field formula B12=vsum(B1..B11)
と打ち込んでEnterを押します。
列は左からA、B、C、、、、、
行は上から1,2,3、、、、、
と数えます。
式の入力を間違えて無ければ、
合計値が入力されます。
若干面倒くさいですが、
下のようにカテゴリーごとに計算させることも可能です。
(自分で足し算の範囲を指定しているので当たり前ですが)
列と行の番号が知りたい場合は、
表の中で Ctrl+c } と打つと番号が表示されます。
またこんな滅多に使わない機能の為にキーバインドなんて覚えてられるか!
という人の為に、上のツールバーから色々な機能を使えます。
月に一度位の頻度なら、頑張って覚えずにここに甘えるのが無難です。
という訳で、Emacs上で管理するザックリ家計簿の巻きでした。