動機
同人関係を記帳したいな~というモチベーション。
Ledger
Plain Text Accountingという類の、簿記をプレーンテキストによって行うソフトがあり、有名なのがLedgerやBeancountなどであるらしい。LedgerはC++(互換のHLedgerはHaskell)、BeancountはPythonで書かれている。
違いはよくわからんのだが、このページによるとBeancountは「悲観的」であり、ユーザーは入力ミスを犯すもので、通常の複式簿記の仕組みが提供する以上に入力のチェックを行っているとのことだ。
今回はLedgerを使うことにする。
ちなみにLedgerは一般名詞なので検索性が異様に悪く、Ledger CLIとかで検索しないとまともに情報にありつけない。あるいは公式サイトからたどるとか。
なぜLedger?
勘定科目の名前に日本語を使いたかったのだが、Beancountの安定版であるv2はASCIIの範囲内の文字しか科目名に使えないという制限があった。v3では改善されているとのことだったが、うまくコンパイルが通らない(特にWindowsでは無理そう)。
LedgerやHLedgerは勘定科目名として非ASCIIも扱うことができる。しかし、Windows用として配布されているバイナリは、Ledgerは入力ファイルはShift_JIS (というかたぶんcp932)しか対応してないようで、HLedgerについてはエラーが出て使えないという感じだった。できればUTF-8が使いたいのだが。
UbuntuなどのLinuxならどっちも普通にUTF-8ファイル読めるっぽい。
普段はCygwinを使っているので、CygwinでコンパイルすることでUTF-8で使えるようにしたい。
CygwinでLedgerのインストール
Cygwin以外の人はこのページを参照。
Cygwinに次のパッケージをインストールする
- make
- automake
- cmake
- gcc-core
- gcc-g++
- libboost-devel
- libgmp-devel
- libmpfr-devel
- python3
- wget
ソースコード持ってきてコンパイルする。今回はv3.2.1を使う。
wget https://github.com/ledger/ledger/archive/refs/tags/v3.2.1.tar.gz
tar xvf v3.2.1.tar.gz
cd ledger-3.2.1
./acprep update
make install
できた。
./acprep update
には-j4
などでプロセス数を多く指定してやるとコンパイルが早くなる。
これでUTF-8テキストが扱えるようになった。
実行
例えば、2022年の収支をまとめたファイル2022.journal
が次の内容だとする。
2022-01-31 * 1月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金 450円
この残高を見るには
ledger -f 2022.journal balance
とする。
出力は
-500円 収益:売上:Fanbox
50円 支出:支払手数料
450円 資産:売掛金
--------------------
0
となる。
書き方
複式簿記のアイデアについては解説を省く。
コメントは;
の他、行頭に来る場合#
, |
, *
, %
も使える。
たとえば次のような仕訳は…
2022/1/31 1月分Fanbox売上 |
(売掛金) 450 | (Fanbox売上) 500 |
(支払手数料) 50 | |
Ledgerでは次のような書き方ができる。
2022-01-31 * 1月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金 450円
- 日付は
2022/01/31
みたいな書き方もでき、割と柔軟である。日付の横はスペースで区切って摘要を書く。摘要の前に*
を入れると決済が済んだ取引として扱われ、集計ができるらしいが、使う気が無いので今回は付けなくてもいい気がする。
- その下に勘定科目と、スペースで区切って金額を書く。
- 勘定科目
Assets:Cash
のように:
で区切って2つ以上をつなげたものとなる。英数字以外も使える。
- 最初の部分が勘定科目の種類であり、一貫してれば何でも良くて、今回は資産・負債・純資産・収益・支出の5種類を使うことにする。
資産:A銀行:普通預金
みたいに3つ以上を:
でつなげることもできる。細かく集計したいときとかに便利。
- 金額
- 借方(debit)がプラス(符号なし)
- 貸方(credit)がマイナス
JPY
でも円
でもいいけど金額の前か後に一貫した文字列を置いておくとそれを単位として集計するっぽい。
- 複式簿記の性質から、貸方と借方でそれぞれの合計は一致するため、金額の一つは省略できる。
2022-01-31 * 1月分Fanbox売上
収益:売上:Fanbox ;金額を書かないと自動計算される
支出:支払手数料 50円
資産:売掛金 450円
金額は、実は単位は何でもいい
- 通貨以外でも可能
@
や{}
を使って単価を示すことが可能→通貨に換算される
2022-08-13 コミケでの販売
資産:商品 -10 同人誌A @ 320円
資産:商品 -15 同人誌B {800円}
支出:売上原価 15200円
収益:売上:コミケ -20,000円 ;同人誌A 10冊×500円, 同人誌B 15冊×1000円
資産:現金 20,000円
事業としてやってるわけでもないので、事業専用の財布や銀行口座をもっているわけではない。
そこで、現金を得たり銀行口座に振り込まれた金額は事業主貸として、現金を支払ったり銀行から引き落とされた額は事業主借として振り替える。これにより、事業主貸・事業主借を見るとキャッシュフローが見える*1。
2022-08-11 スーパーにて消毒用エタノール購入
資産:現金 436円
純資産:事業主借 -436円
支出:消耗品費 436円
資産:現金 -436円
実例
; Declare top level accounts, setting their types and display order;
; Replace these account names with yours; it helps commands like bs and is detect them.
account 資産:銀行:普通預金
account 資産:現金
account 資産:売掛金
account 資産:商品
account 資産:貯蔵品
account 負債:買掛金
account 純資産:資本金
account 純資産:事業主貸
account 純資産:事業主借
account 収益:売上
account 支出:支払手数料
account 支出:荷造運賃
account 支出:通信費
account 支出:消耗品費
account 支出:販売促進費
account 支出:売上原価
declare commodities:
commodity 円
2022-01-01 繰越
資産:商品 51 ギリシャ文字・ロシアの文字合冊 @ 96.4円
純資産:資本金 ;自動計算
2022-01-31 1月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-02-28 2月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-03-31 3月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-04-26 Booth Tシャツ無在庫販売
収益:売上:Booth -3,100円
支出:支払手数料 584円
支出:売上原価 2,350円
資産:売掛金:Booth 166円
2022-04-30 4月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-05-31 5月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-06-30 6月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-07-01 7月初頭分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-07-22 Fanbox売上の振り込み
資産:売掛金:Fanbox -3,150円
支出:支払手数料 200円
資産:銀行:普通預金 2,950円
2022-08-11 スーパーにて消毒用エタノール購入
資産:現金 436円
純資産:事業主借 -436円
支出:消耗品費 436円
資産:現金 -436円
2022-08-11 ホームセンターにてコミケ用資材購入
資産:現金 849円
純資産:事業主借 -849円
支出:消耗品費 849円
資産:現金 -849円
2022-08-13 コンビニにておしながき印刷
資産:現金 60円
純資産:事業主借 -60円
支出:販売促進費 60円
資産:現金 -60円
2022-08-13 『モンゴル文字とUnicode』納入される
資産:商品 110 モンゴル文字 @ 215.9円
負債:買掛金 -23,750円
支出:売上原価 ;端数調整
2022-08-13 コミケでの販売
資産:商品 -36 モンゴル文字 @ 215.9円
資産:商品 -27 ギリシャ文字・ロシアの文字合冊 @ 96.4円
支出:売上原価 ;自動計算
収益:売上:コミケ -31,500円
資産:現金 31,500円
2022-08-13 コミケ見本誌提出
資産:商品 -1 モンゴル文字 @ 215.9円
支出:支払手数料 ;自動計算
2022-08-13 コミケ新刊をサークルメンバーに配布
資産:商品 -2 モンゴル文字 @ 215.9円
支出:売上原価 ;自動計算
収益:売上:配布 -1,000円
純資産:事業主貸 1,000円
2022-08-13 コミケ販売後の在庫をゆうパックで自宅へ発送
純資産:事業主借 -1,100円
資産:現金 1,100円
資産:現金 -1,100円
支出:通信費 1,100円
2022-08-13 コミケ売上の現金の回収
資産:現金 -31,500円
純資産:事業主貸 31,500円
2022-08-11 100円ショップにて梱包資材購入
資産:現金 550円
純資産:事業主借 -550円
支出:荷造運賃 550円
資産:現金 -550円
2022-08-18 Booth通販売上
収益:売上:Booth -1,370円
支出:荷造運賃 370円
支出:支払手数料 99円
資産:売掛金:Booth 901円
資産:商品 -1 モンゴル文字 @ 215.9円
資産:商品 -1 ギリシャ文字・ロシアの文字合冊 @ 96.4円
支出:売上原価 ;自動計算
2022-08-19 Booth通販売上
収益:売上:Booth -2,240円
支出:荷造運賃 740円
支出:支払手数料 170円
資産:売掛金:Booth 1,330円
資産:商品 -2 モンゴル文字 @ 215.9円
支出:売上原価 ;自動計算
2022-08-20 Booth通販売上
収益:売上:Booth -3,610円
支出:荷造運賃 1,110円
支出:支払手数料 269円
資産:売掛金:Booth 2,231円
資産:商品 -3 モンゴル文字 @ 215.9円
資産:商品 -2 ギリシャ文字・ロシアの文字合冊 @ 96.4円
支出:売上原価 ;自動計算
2022-08-24 Booth通販売上
収益:売上:Booth -4,780円
支出:荷造運賃 1,480円
支出:支払手数料 357円
資産:売掛金:Booth 2,943円
資産:商品 -4 モンゴル文字 @ 215.9円
資産:商品 -2 ギリシャ文字・ロシアの文字合冊 @ 96.4円
支出:売上原価 ;自動計算
2022-08-25 Booth通販売上
収益:売上:Booth -870円
支出:荷造運賃 370円
支出:支払手数料 71円
資産:売掛金:Booth 429円
資産:商品 -1 モンゴル文字 @ 215.9円
支出:売上原価 ;自動計算
2022-08-31 Booth通販売上
収益:売上:Booth -870円
支出:荷造運賃 370円
支出:支払手数料 71円
資産:売掛金:Booth 429円
資産:商品 -1 ギリシャ文字・ロシアの文字合冊 @ 96.4円
支出:売上原価 ;自動計算
2022-08-31 8月分Fanbox売上
収益:売上:Fanbox -500円
支出:支払手数料 50円
資産:売掛金:Fanbox 450円
2022-09-06 Booth通販売上
収益:売上:Booth -2,740円
支出:荷造運賃 740円
支出:支払手数料 198円
資産:売掛金:Booth 1,802円
資産:商品 -2 モンゴル文字 @ 215.9円
資産:商品 -2 ギリシャ文字・ロシアの文字合冊 @ 96.4円
支出:売上原価 ;自動計算
2022-09-13 Booth通販売上
収益:売上:Booth -1,370円
支出:荷造運賃 370円
支出:支払手数料 99円
資産:売掛金:Booth 901円
資産:商品 -1 モンゴル文字 @ 215.9円
支出:売上原価 ;自動計算
2022-09-21 8月分までのBooth売上の振込
資産:銀行:普通預金 8,229円
支出:支払手数料 200円
資産:売掛金:Booth -8,429円
2022-09-27 印刷代クレジットカード引き落とし
負債:買掛金 23,750円
純資産:事業主借 -23,750円
2022-09-30 9月分Fanbox売上
収益:売上:Fanbox -500円
支出:販売手数料 50円
資産:売掛金:Fanbox 450円
2022-10-31 10月分Fanbox売上
収益:売上:Fanbox -500円
支出:販売手数料 50円
資産:売掛金:Fanbox 450円
2022-11-30 11月分Fanbox売上
収益:売上:Fanbox -500円
支出:販売手数料 50円
資産:売掛金:Fanbox 450円
2022-12-31 12月分Fanbox売上
収益:売上:Fanbox -1,000円
支出:販売手数料 100円
資産:売掛金:Fanbox 900円
2022-12-31 銀行口座のお金を回収
資産:銀行:普通預金 -11,179円
純資産:事業主貸 11,179円
2022-12-31 決算
支出:荷造運賃 -225円
資産:貯蔵品 225円
-X 円
って指定すると円
換算で計算してくれる
ledger -f 2022.journal balance -X 円
-59,950円 収益:売上
-20,950円 Booth
-6,500円 Fanbox
-31,500円 コミケ
-1,000円 配布
28,456円 支出
16,952円 売上原価
2,934円 支払手数料
1,285円 消耗品費
5,875円 荷造運賃
60円 販売促進費
250円 販売手数料
1,100円 通信費
12,018円 純資産
-26,745円 事業主借
43,679円 事業主貸
-4,916円 資本金
19,477円 資産
13,849円 商品
5,403円 売掛金
2,703円 Booth
2,700円 Fanbox
225円 貯蔵品
--------------------
0
所得だいたい3万円か。よかったですね。交通費考慮すると更に1万円近く減るんだけど。
参考
日本語でいろいろまとめてくれている人がいて助かる
Documentationsへのリンク