Beancountで高速かつ信頼できる月末締めを実現する10の実践ステップ
Beancount で元帳がプレーンテキストで管理されているなら、月末締めは高速で監査可能です。プロセスはスプレッドシートや電卓に追われる慌ただしい作業である必要はありません。このガイドは、Beancount とそのウェブインターフェースである Fava 向けに、バランスアサーション、スマートインポート、軽量チェックを中心とした、シンプルで再現可能なプロセスをまとめています。
手間のかからない締めのチェックリストは以下の通りです:
- 取引明細を集め、すべての生データ取引をインポートする。
- 支払先、説明、メタデータを正規化する。
- 現金、銀行、クレジット口座すべてを
balance
アサーションで照合する。 - 振替および口座間移動を照合する。
- 投資の価格を更新し、評価額を検証する。
- 元帳に文書(領収書、請求書)を添付または参照する。
- 損益および差異チェックのためにクエリとダッシュボードを実行する。
- 必要に応じて発生主義の仕訳や調整を記録する。
- 自動チェックで元帳を検証する。
- 月次をコミット、タグ付け、アーカイブする。
1. 基本ルールを設定し(再利用する)
一貫した締めは安定した基盤から始まります。勘定科目表と重要な Beancount オプションは中央で宣言し、ほとんど変更しないようにします。operating_currency
や documents
のようなオプションは、レポートやインポートが毎回予測可能に動作することを保証します。
Tip: オプションファイルを「インフラ」として扱いましょう。変更すると数値の計算方法が変わる可能性があります。Git で慎重にバージョン管理してください。
2. すべてをインポートし、以後手入力は不要
データインポートの自動化は、帳簿締めの速度を最大限に向上させます。Beancount の強力なインポートツールとコミュニテ ィが作成したインポーターを使用して、銀行フィード、クレジットカードの CSV/OFX ファイル、証券データ、給与レポートを取り込みましょう。
目標は、バランスの取れた仕訳を生成するワンコマンドインポートで、レビューとコミットだけが必要です。これにより、エラーや遅延の主な原因である手動データ入力が不要になります。
3. 支払先とメタデータを事前に正規化
クリーンなデータは信頼できるデータです。インポート時に支払先、ナレーション、タグを標準化し、検索、ルール、レポートが月々正確に保たれるようにします。
Beancount のプラグインシステムにより、ファイル読み込み時に軽量な変換や検証を追加できます。これはカスタムの一貫性チェックを強制したり、組み込みの noduplicates
プラグインで重複取引を問題になる前にフラグ付けするのに最適です。
4. balance
アサーションで照合
ステートメントがあるすべての口座(当座預金、普通預金、クレジットカード)について、Beancount の balance
ディレクティブを使って期末残高をアサートします。こ のシンプルな行が、手動の目視チェックを正確な自動テストに変えます。
2025-01-01 balance Assets:Cash 1000 USD
残高はその日の 開始時 にチェックされるため、月末ステートメントには 次月の 1 日目を使用するのが最も簡単です。Beancount の計算残高がアサーションと合わない場合、正確なエラーと調査開始日が表示されます。常に真実のソース(取引)を最初に修正し、無理に照合を「強制」しないでください。
5. 口座間振替を照合
すべての振替が取引の両側に記録されていることを確認します。例えば、当座預金からクレジットカードへの支払いは、両方の口座に反映されるべきです。振替の不一致は照合の頭痛の種となります。
pad
ディレクティブは 、口座を初期設定する際の過去の開始残高を設定するために のみ 使用します。これは設定ツールであり、月末の差異を修正するための照合用の棒ではありません。
6. 投資のポジションと価格を検証
正確な純資産を把握するには、投資や外貨の最新の市場価値が必要です。Beancount の price
ディレクティブを使って、締め日の時点の価値を記録しましょう。
2025-01-01 price AAPL 150 USD
多くのツールが自動でこれらの価格を取得できます。更新後にバランスシートや純資産レポートを再実行すれば、評価額の変化が確認できます。
7. 領収書と 原本書類を添付
取引を原本書類にリンクさせ、クリーンな監査証跡を保ちましょう。メインの Beancount ファイルで documents
オプションを使用して、領収書や請求書のアーカイブを指し示します。
option "documents" "/path/to/documents"
ファイル名を日付で付ける(例:2025-08-13.vendor.receipt.pdf
)と、Beancount と Fava が自動的に検出・リンクし、取引ごとにワンクリックで領収書を表示できます。
8. Fava と BQL で月次をレビュー
高速なフィードバックループは重要です。Fava を使って財務を視覚的に確認しましょう。チャートやレポートは、カテゴリ別の支出分析、収入トレンドのチェック、 異常の瞬時把握に最適です。
より正確なチェックには Beancount Query Language (BQL) を使用します。例えば、以下のクエリは 2025 年 8 月の全支出を順位付けして集計します。
SELECT account, SUM(position) AS amount
FROM balances
WHERE account ~ 'Expenses:'
AND date >= '2025-08-01' AND date < '2025-09-01'
GROUP BY account
ORDER BY amount DESC;
9. 発生主義の仕訳と調整を記録
発生主義会計を使用している場合、月末の調整を明示的な日付付き取引として記録します。未受領の光熱費などの未払費用、前払費用の償却、収益認識などが該当します。簡潔かつナレーションで十分に文書化し、将来のレビュー時に理解しやすくしましょう。
10. 検証、タグ付け、アーカイブ
月次を確定する前に、構造的整合性の最終チェックを実行します:
beancount -f -x -X -p -t -v -c -e -l -i -m -r -s -w -y -z -A -B -C -D -E -F -G -H -I -J -K -L -M -N -O -P -Q -R -S -T -U -V -W -X -Y -Z
このコマンドは、残高不一致や未開設口座への参照、その他一般的なエラーを検出します。指摘された問題はすべて修正してください。
すべてが正しいことを確認したら、Git などのバージョン管理システムに明確なメッセージとタグ(例:close-2025-08
)でコミットします。最後に銀行明細をアーカイブし、月次をロックしたとみなします。
カスタマイズ可能なシンプルな締めスクリプト
これらのステップのほとんどはシンプルなシェルスクリプトで自動化できます。締め作業を単一の再現可能なコマンドに変換しましょう。
#!/bin/bash
# Example Beancount close script
beancount -f myfile.beancount import statements.csv
beancount -f myfile.beancount balance Assets:Cash
beancount -f myfile.beancount price AAPL 150 USD
beancount -f myfile.beancount query "SELECT ..."
git add myfile.beancount
git commit -m "Month close for August 2025"
git tag close-2025-08