プレーンテキストファイルで「複式」家計簿(4)

トランザクションのスケジューリング

繰り返し発生するトランザクションをその都度、手入力するのはとても非合理的です。たしかにLedger-ver3のマニュアルには、Ledgerはそれを回避する機能をもっているとの記述はありますが、実際にどうやるのか具体的な説明は書かれていません。

そのため結構四苦八苦しましたが、ここの記事を見て「目からウロコ!」。やり方は簡単で、まずホームディレクトリに ledger-schedule.ledger という名前(ディフォールトです)で、次のようなコンテンツのファイルを作ります:

;;; 毎月
[*/*/01]   NTTコミュニケーション
    Expenses:通信費        4590 JPY
    Assets:三菱UFJ
[*/*/05]   東京ガス
    Expenses:公共料金:ガス  4000 JPY
    Assets:三菱UFJ
   :
;;; 隔月
[*/E/01]  団地管理費
    Expenses:管理費:横浜    40400 JPY
    Assets:三菱UFJ
   :
;;; 年に1回
[*/03/31]   日本基礎心理学会
    Expenses:諸会費          9000 JPY
    Assets:Cash
   :

そして、Emacsでメインのledgerファイルを開き、メニューから、「Ledger」 –> 「Show upcoming transaction(C-c C-u)」をクリックすると、本日から7日 および15日 の間の定期的トランザクションの候補が上記ファイルから読み出されて、2ndバッファに表示されます。ユーザはそれを コピペ して使う、というしかけです。

ここで「隔月」の E は偶数月(even)の意味です。奇数月の場合には O (odd)にします。その他、たとえば毎月1日と15日のトランザクションの場合には、 [*/*/1,15] などとします。詳しくはマニュアルを見て下さい。

なお細かいことですが、ノートPCなど画面の小さいPCで作業する際には、 C-c C-u する前に、 C-x 3 でEmacsの窓を 縦に 2分割しておくと、 C-c C-u したときに両ファイルの視認性がよくなり作業が楽です。

定期的なトランザクションと言っても、月ごとに金額も変動しますし、曜日の巡り合わせで日付も変動します。したがって、この機能は完全に全自動で仕訳帳に転記してくれるというものではありません。しかし、転記の手間はかなり省けますし、なによりも転記忘れミスの防止には大いに役立ちます。なおこの機能はEmacs内に限定されています。

(補足)

このシリーズの(3)で、「定期的なトランザクション」について記述しましたが、そこで紹介したのはbudget(予算建て)と関連して使うことを想定してしたものでした。そこで記帳された内容はバランスなどの計算の対象となるものではありませんでした。中途半端な紹介をして申し訳ありませんでした。なお予算建てと収支予測などについては後日あらためて紹介したいと思います。

トランザクション中のアカウントで計算式を使う

次の例は、セブンイイレブンで買い物をしましたが、買ったものは当日のランチの他、夕食や朝食などの一般食品も含まれていて、総額=1,194円。それをナナコカードで支払ったという例です。

レシートには品名が書いてあるので、ランチ用品がどれで一般食品がどれかはわかります。それを見ながら電卓を叩けば、ランチの合計、一般食品の合計は計算できますが、面倒です。そこでランチの2品だけの価格を足し算の「式」でアカウントに転記し、あとはレシートの合計欄の金額を転記すれば、一般食品の金額はLedgerが計算して補完してくれます:

2019/06/20 * セブンイレブン
    Expenses:Lunch                                (289 JPY + 138 JPY)
    Expenses:Grocery:Food
    Assets:nanaco                                 - 1194 JPY

これは、日々の生活でとても便利です。なお、許容される式の書き方の感じは以下のとおりです:

(289 JPY + 138 JPY)   ---> ok
(JPY 289 + JPY 138)   ---> ok
(289 JPY + JPY 138)   ---> ok
(289 + 138 ) JPY      ---> no!
(289 JPY * 2)         ---> ok

式の書き方の詳細はマニュアルを参照して下さい。

月別の支出をざくっと知りたい

reg では、

ledger reg cars -M

なとどすれば、簡単にクルマCars関係の月ごとのレポートが表示されます。 reg report ほど細かくなくても良いので、 bal -M で月ごとのサマリが表示できると便利なのですができません。これに関してはマニュアルにも記述がありませんでした。

しばらく不便をかこっていたら、Wiegleyさんがフォーラムに次のような記事を書いているのを見つけました( https://www.mail-archive.com/ledger-cli@googlegroups.com/msg09020.html ):

RE:Monthly balance position

John Wiegley |  Thu, 12 Apr 2018 12:08:20 -0700

>>>>> "RL" == Richard Lawrence <wyl...@gmail.com> writes:

RL> I don't think so, at least not with regular ledger. I'd be happy to be
RL> proven wrong, though! I have also wanted this feature.

You can use:

    ledger --group-by 'format_date(date, "%Y/%m")' bal

John

なるほど!これは素晴らしい!ということで、もう少し具体的な例にして紹介しておきます:

$ ledger bal --group-by 'format_date(date, "%Y-%m")' --depth 2 expenses and not 租税公課

この例だと、支出Expensesから「租税公課」を除いて、支出の第2階層のカテゴリまでのアカウントの金額が、月ごとにbalレポート表示されます。もちろん、期間を限定したければ、このコマンドの後ろに、 --period 指定します。

これはとても便利で頻繁に使えます。しかし、あまりにコマンドの文字列が長くなるので、簡単な シェルスクリプト にしておくとよいでしょう。その際、次のように"expenses and not 租税公課"のところだけを標準入力から受け入れるようにしておけば、汎用性が少し高まります(スクリプト名= mbal.sh ):

#!/bin/bash
#
#  引数入力されたアカウント等(Payee,Tagなどを含む)を
#  月ごとにbal reportするスクリプト
#     Usage: mbal "EXPR" RET
#     Examples: mbal "expenses and not 租税公課" RET
#               mbal "expenses and %hinako" RET
#               mbal "expenses and not Cars -e apr" RET
#    **attn** 引数にはクオートをつけること

if [ $# = 0 ]
then
    echo 'Usage: mbal 'EXPR'
    exit 1
fi

options=$1

/usr/bin/ledger bal\
      -f Your_Ledger_File.ledger\
      --group-by 'format_date(date, "%Y-%m")'\
      --depth 2\
      $options

これだけです。 mbal はmonthly balanceのつもりですw

「帳簿の世界史(文春文庫)」

この本は 複式簿記 の歴史、というよりも歴史上のいくつかの王国や政府などが滅亡したのは、会計帳簿をきちんとつけなかったために財政破綻したからだ、というストーリになっています。この主張が歴史科学的にどれほど妥当なのかは門外漢のボクには評価できませんが、とても強い印象を受けました。

また、専門家には当たり前の常識だったのでしょうが、わが国に複式簿記を紹介したのが 福沢諭吉 であることを、この本で初めて知りました。

さてそれはともかく、これまで学会の理事会、大学の理事会・評議委員会などの末席を汚した経験がありますが、その時点では会計の「いろはのい」すら知りませんでした。まことに申し訳なかったと反省しています。しかし、ボクの経験から推測すると、それらの会議体に提出される会計書類の具体的な内容を理解すること、およびそれらの書類の基礎または背後にある実体的な意味合いを理解すること、つまり会計帳簿、とりわけ複式簿記に関するリテラシーを持っていたのは、会議出席者のごく一部であったように思います。

もし本書の主張するように、どれほどの人々が帳簿読み取りの知識をもっているか、そのことがその組織、集団さらには国の盛衰に影響を及ぼすとすれば、残念ながらボクの参与していたそれらの組織体の将来的な見通しはかなり厳しいと言えるかもしれません。

資格と学会と一般人のリテラシー

わが国では、ちゃんとした簿記の資格があって、人口比率でいえば複式簿記のリテラシーを持つ者の率は高いような気もしますが、実態はどうなのでしょうか?米国では高等学校で行う「会計」教育のきちんとしたプログラム案があるようです。わが国では商業高校など以外では会計教育は行われていませんですよね。それから、ちょっと気がかりになったので、わが国で「会計」の語を含む 学会 の構成員の数を調べてみました。心理学のようにマイナー(?)な学問でも10,000人規模の学会がいくつかあったりしますが、商学部や経営学部などに在籍している学生数に比して、思いの外、学会構成員数が少ないのに驚きました。

簿記には何級といった資格もあるし、専門職として公認会計士、税理士などの確立したキャリアパスがあるのですが、いわゆる一般の人々(一般職サラリーマン、公務員、家計を預かる主婦・主夫の方など)などへの普及は、もしかしたら進んでいないのかもしれません。実態を把握できる調査結果を見てみたいと思っています。

もしかしたら

複式簿記は、勉強を始めた第一歩のところで、いきなり 貸方借方 というとても日本語として理解しづらい言葉が出てきます。ボクもこれで激しい「目まい」を覚えました。いろいろな専門家集団がギルドの利益と構成員の食い扶持を守るするために、時として意図的に ジャーゴン を使うことがままありますが、まさか会計関係ではそんなことは無いと思います。会計・経理はその基礎に厳格な「倫理」がないと成り立たず、社会からの信頼もそれによって保たれているからです。しかし、少なくとも一般人からとても敷居が高くなっている(ように見える)状況は、福沢諭吉の意図していたこととは異なるのかも知れません。