Beancount流・会計サイクル
財務諸表は魔法のように現れるわけではありません。そ れらは会計サイクルとして知られる、構造化され、反復可能なプロセスの最終成果物です。その原則は普遍的ですが、使用するツールによって体験は劇的に変わります。このガイドでは、強力なプレーンテキスト会計ツールであるBeancountに焦点を当てて、会計サイクルを解説します。
Beancountのテキストファーストなアプローチが、いかに面倒なステップを排除し、何を自動化すべきか、そしてどのレポートがあなたの財務健全性を最も明確に示してくれるかを見ていきましょう。🧑💻
TL;DR: Beancountのワークフロー
- 記録と仕訳: すべての取引を、クリーンな複式簿記のエントリとして
.beancount
テキストファイルに記録します。 - 検証と照合:
balance
アサーションを使用して台帳が銀行の明細と一致することを確認し、bean-check
を実行してエラーを検出します。 - レビュー: 簡単な健全性チェックのために、修正前の試算表を生成します。
- 修正: 未収、繰延、減価償却、その他の期末項目に関する仕訳を計上します。
- 再レビュー: 修正後の試算表をチェックして、すべてが正しいことを確認します。
- 公開と締め: 損益計算書、貸借対照表、キャッシュフロー計算書を生成します。Beancountではレポートが日付を認識するため、帳簿の締めはオプションです。
このフローは次のように視覚化できます:
ステップ1:取引の捕捉と記録
これは基礎となるステップです。販売、購入、銀行手数料といったすべての財務イベントを記録する必要があります。Beancountでは、通常main.beancount
と名付けられるか、年ごとに複数のファイルに整理された単純なテキストファイルに取引を作成することでこれを行います。
各取引は複式簿記のルールに従う必要があり、すべての転記の合計がゼロでなければなりません。Beancountはこれを強制します。
2025-08-10 * "Walmart" "オ フィス用品の購入"
Expenses:Office:Supplies 45.67 USD
Assets:Bank:Checking -45.67 USD
- プロのヒント:
#project-phoenix
や#client-acme
のようなタグを使用してデータに次元を追加します。これにより、後々のクエリやレポート作成が非常に柔軟になります。
照合作業の習慣 ✅
正確性を保証するための最も強力な機能は、balanceアサーションです。明細期間の終わり(例:月末)に、勘定の残高がどうあるべきかを宣言します。
2025-08-31 balance Assets:Bank:Checking 12345.67 USD
もしその日までのAssets:Bank:Checking
に影響を与えるすべての取引の合計が12345.67 USD
と等しくない場合、Beancountはエラーを発生させます。この単純なディレクティブが、あなたの台帳を自己監査ドキュメントに変えます。
過去のデータを入力している人のために、pad
ディレクティブは、開始残高が最初のアサーションと一致するように、自動的にバランス調整用の取引を作成できます。
ステップ2:「台帳への転記」(これはおまけです!)
伝統的な会計システムでは、まず「仕訳帳」に記入し、次に別の「転記」ステップでそれらの値を「総勘定元帳」にコピーします。
Beancountでは、あなたの.beancount
ファイルが仕訳帳と台帳の両方です。 取引を書いて保存した時点で、すでに転記は完了しています。別のステップはありません 。この直接性が、プレーンテキスト会計の核となる利点です—見たままが得られるものです。
ステップ3:修正前試算表の準備
修正を始める前に、簡単な「すべてが合っているか?」のチェックが必要です。試算表は、すべての勘定とその合計残高をリストアップした単純なレポートです。すべての借方残高の合計は、すべての貸方残高の合計と等しくなければなりません。
これは単純なクエリで生成できます:
bean-query main.beancount \
"SELECT account, sum(position) GROUP BY 1 ORDER BY 1"
または、より視覚的なアプローチとして、Fava(BeancountのWebインターフェース)で台帳を開き、「試算表」レポートに移動します。貸方残高のある資産勘定や、奇妙な値を持つ費用勘定など、異常なものがないか探します。