イントロ
ここでは:
Ledger-cliを使ってNPO法人会計に準拠した「活動計算書」と「貸借対照表」を書いてみます
そのためのシェルスクリプト( financial-statements.sh
)を紹介します。
Ledger-cli はオープンソースの 複式簿記 会計処理システムです。UNIXのコマンドラインベースで動き、元帳などすべてのデータはプレインテキストです。
Ledgerにはユニークで優れた特徴がたくさんありますが、その最たるものは、複式簿記のいわゆる 貸方/借方 (debit/credit)の概念をスルーできるということ1。
これから Ledgerで経理処理を始めてみようという方は、下の図1 に書かれている4つの基本勘定科目( Income
, Assets
, Liabilities
, Expenses
)とそれらの間の相互関係を抑えておくだけでOKです。
あとはトランザクションの書き方、ポスティングの書き方の 具体例 を見ながら実際に使って見れば、複式簿記概念に基づく基本的な会計処理が可能になります。
サンプル出力
さっそくですが、図2は
financial-statements.sh
を起動したときに得られる「 活動計算書 」と「 貸借対象表 」の出力例です。まだ 試作品 レベルです。おいおい少しずつ手をいれて行く予定です。なおこの計算の元となった仮想的なLedgerのポスティングデータはこちらからダウンロードできます。
補足説明
- 上の2表では、金額がゼロの勘定科目は書かれていません。Ledgerのオプション
--empty
を効かせてあるからです。もし金額ゼロの科目も表に含めたいときには、このオプションを外します。 - ちなみにサンプルデータのポスティング数は120ほどですが、この「活動計算書」と「貸借対照表」出力を得るために要する時間は 330msecです2。
修正履歴
- 2024/01/21 : Ledgerオプションの
--sort account
を--sort -account
に変更(accountの前にマイナス記号を付加)して勘定科目名の表示順を逆にして、「その他XXXXX」が先頭に来ないようにした。
Ledger関係ファイルの配置
この記事では、Ledger関係のファイルが図3のように配置されていることを前提としています。
Ledger-dir配下のファイル
financial-statements.sh
図2を出力するためのスクリプト。まだ 試作品 というかベータ版レベルですがソースコードは こちらからダウンロードできます。
- Ledger-cliをインストールした後、関係ファイルを図3のような形に配置し、Ledgerデータファイル(
sample-npo-data.ledger
)、それからconfig/
ディレクトリ内にこの下に説明した5個のデータファイルを作成すれば動きます。
sample-npo-data.ledger
これはこの記事のために作った架空のLedgerファイルです。 こちら からダウンロードできます。
configsディレクトリ配下の設定ファイル
accounts-npo.dat
この設定ファイルには全ての 勘定科目名 が次のような形式でリストされています。ダウンロードはこちら から。
;; 勘定科目構造 Time-stamp: <>
account Opening Balance
account Equity:Adjustments
;;;;;;;;;;;;;;;;;
;; I 経常収益の部
;;;;;;;;;;;;;;;;;
account 経常収益
;; I-1. 受取入会金
account 経常収益:受取入会金
account 経常収益:受取入会金:正会員受取入会金
account 経常収益:受取入会金:学生会員受取入会金
;; I-2. 受取会費
:
commodities-npo.dat
使用する 通貨記号 (など)が格納されています[^footnore_comm]。中身は(当面)これだけです。
commodity JPY
commodity USD
commodity EUR
commodity hour
init-npo.dat
Ledgerの設定ファイルの中で一番重要なファイルです。デフォルトだとホームディレクトリ内の /.ledgerrc
がinit-file になります。今回は configs/
配下に init-npo.dat
という名前にしています。内容は次のようになっています:
--file PATH/sample-npo-data.ledger
--color
--check-payees
--date-format %Y/%m/%d
--pager /usr/bin/less
--sort date
--pedantic
--explicit
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Aliases
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
alias income=経常収益
alias expns=経常費用
alias assets=資産
alias liab=負債
alias cash=資産:流動資産:現金預金:現金
alias ufj=資産:流動資産:現金預金:UFJ
この中で大事なのは --pedantic
, --explicit
のふたつ。これを指定することでトランザクション内に タイプミス があれば、Ledgerはエラーを出して処理を停止してくれます。エラーメッセージが沢山でてくるのでドキッとしますが、元帳ledger内のタイプミスを完全に抑止するためにこの機能はとても有効です。
これを有効活用するためには、新しい勘定科目名、支払先、通貨記号などを転記する際に、それを accounts.dat, payees.dat, commodities.dat
などのデータファイルに追記することが必要です。その手間は、元帳内でタイプミスを見つける作業の大変さに比べるとごくささやかなものです。
payees-npo.dat
トランザクション中で、日付の後ろに記述されている payees
(支払先名)のリストです。ダウンロードはこちらから。
payee 相模原花子
payee 担当事務職
payee 岩波書店
payee いとうや
payee 東京太郎
payee ○○大学図書館
:
このデータファイルもとても大事。日々、数多くのトランザクションを書いていると、かならずタイプミスが起こります。とくに「支払先」名は綴りがちょっと違うだけで大きな問題になります。上で書いた --pedantic, --explicit
オプションを忘れずにinit-file内に書いておきましょう。
tags-npo.dat
次のような内容のタグのリストが格納されます。
tag ID
tag 会員番号
tag Receipt
Ledgerのtagについては、過去に何回か触れていますのでここでは省略します。
-
タグに関連した記事一覧
Tipsと今後の課題
- スクリプトは大急ぎで書いたコードなのであちこちツギハギです(恥)
- シェルスクリプトで帳票の列揃えをするのはちょっと苦しいですが、まぁこの程度ならなんとか付き合っていけますね(汗)
- Ledgerの –balance-format 部はデフォルトのformatを左右入れ替えただけです。書き方が微妙で完全には理解していません。もっと良い方法があるかと思います。
- わが国のNPO法人会計で推奨されている勘定科目名の中には、ちょっと馴染みが無いものもあって、スクリプト内の変数名を決めるのがたいへんでした3。
- あと「財務諸表」を2種の書類に分けて「 正味財産 」を表示するところでコードの行数をくいました。そのへんで、とてもアグリーuglyなコードになりました。基本4勘定科目のバランスシートだけならコードは3分の1で済んだかなぁ(汗)
- 標準的な「勘定科目」からさらに 深度の深い勘定科目 を設定した方が、将来のデータ分析には便利なように思われます。そのときにはLedgerの
--depth
オプションの値を起動時に引数で渡すようにします。 - このような財務諸表を 書くだけ なら、エクセルとかネット上のサービスを使えば書けるのでしょうが、過去のデータを可視化したり今後のトレンドを予測したりするときにはLedgerの優位性は圧倒的です。次の記事では可視化例をアップしてみようと思います。
- NPO法人会計に準拠した トランザクションの書き方 の解説を先にデプロイすべきだったかも知れません。
実は下書きはできていますが、まずは財務諸表をLedgerでなんとか書けることを紹介した方が良いだろうということで、急遽方針転換して、こちらを先にデプロイしました。あしからず・・・。遅ればせながら本日(2024/01/25)「小規模学会のためのLedgerポスティング例 — NPO法人会計基準に準拠しながら」をデプロイしました。 - 正味財産が負になると、金額の前に△ではなくマイナス符号がつきます4。
Appendix: NPO法人会計関係記事一覧
タイトル | 日付 |
---|---|
Ledger-cliでNPO法人会計 – 勘定科目にエリアスを使う | 2024/02/22 |
Ledger-cliによるNPO法人会計注記 – 使途制約のある寄付等 | 2024/02/15 |
Ledger-cliによるNPO法人会計注記 – 役員及びその近親者との取引 | 2024/02/02 |
Ledger-cliでNPO法人会計の可視化 — かんたん折れ線グラフ | 2024/01/29 |
小規模学会のためのLedgerポスティング例 — NPO法人会計基準に準拠しながら | 2024/01/25 |
NPO法人会計に準拠した財務諸表をLedger-cliで書く | 2024/01/21 |
Footnotes:
-
環境はThinkPad X230, Ubuntu 20.04 です。Ledgerのバージョンは 3.1.3-20190331。現在、スクリプトはまだ未整理なのでもう少し高速化できると思いますし、最新の高性能PCならほとんど瞬時に終わると思います。 ↩︎
-
NPO法人会計の勘定科目名には、たとえば「人件費」や「その他経費」など、同じ科目名が「事業費」にも「管理費」にも含まれるという構造になっています。こうした構造だと、Ledgerでのクエリの際に「事業費:人件費」などと上位カテゴリの科目名をつけることが必要になります。もし勘定科目名ツリーを構成する科目名がどのレベルでもユニークだったら、検索の際の文字入力数はずっと少なくて済みます。ま、そもそも一つずつの科目名をできるだけ短くしたいという意図で作られた科目名構造ではないので仕方ないかとは思いますが・・・。 ↩︎
-
マイナス記号は他の勘定科目でもつくことがあります。たとえば誰かが立替払いした「立替金」も締め日までに精算していない場合には
立替金 -2,200 JPY
と表示されます。 ↩︎