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インターフェース)で台帳を開き、「試算表」レポートに移動します。貸方残高のある資産勘定や、奇妙な値を持つ費用勘定 など、異常なものがないか探します。
ステップ4:修正仕訳の計上
修正仕訳は、発生主義会計の下で正確な報告を行うために不可欠です。これにより、現金がいつやり取りされたかに関わらず、収益は稼得時に、費用は発生時に認識されることが保証されます。
一般的な修正には以下が含まれます:
- 未収(Accruals): まだ請求していないが稼得した収益、または発生したがまだ支払っていない費用を記録します。
- 繰延(Deferrals): 前払金を処理します。顧客が1年分のサービス料を前払いした場合、それを負債(
Liabilities:UnearnedRevenue
)として計上し、毎月その1/12を収益として認識します。 - 非現金項目(Non-Cash Items): 資産の減価償却などを記録します。
- 訂正(Corrections): 銀行フィードからの見逃し項目(少額の利息支払いなど)の修正や会計処理を行います。
例:未収収益の計上
8月31日にプロジェクトを完了しましたが、請求書を送るのは9月になります。正しい期間(8月)に収益を認識するために、修正仕訳を行います:
2025-08-31 * "クライアントプロジェクト#1042の収益を未収計上"
Assets:AccountsReceivable 3000.00 USD
Income:Consulting -3000.00 USD
例:減価償却の記録
あなたの会社には資産の減価償却スケジュールがあります。期間の終わりに、費用を計上します:
2025-12-31 * "コンピュータ機器の年間減価償却"
Expenses:Depreciation 4800.00 USD
Assets:Fixed:AccumulatedDepreciation -4800.00 USD
ステップ5:修正後試算表の実行と検証
修正仕訳を計上したら、再び試算表レポートを実行します。これがあなたの修正後試算表です。これは、財務諸表を作成するために使用される最終的な数値セットを提供します。
これはまた、Beancountに組み込まれている健全性チェックを実行する絶好のタイミングでもあります:
bean-check main.beancount
このコマンドは、すべての構文、貸借一致ルール、およびアサーションを検証します。何も出力されずに実行されれば、あなたの帳簿は機械的に健全です。
ステップ6:財務諸表の公開 📊
これが成果です。修正後試算表の数値を使用して、主要な財務レポートを生成できるようになりました。Favaは、インタラクティブでドリルダウン可能なレポートを標準で提供するため、これを行う最も簡単な方法です。
- 損益計算書(P&L): ある期間の収益と費用を示し、純利益または純損失を明らかにします。
- 貸借対照表: 特定の日付における、所有するもの(資産)と負っているもの(負債)、そして純資産(資本)のスナップショットです。
- キャッシュフ ロー計算書: お金がどこから来てどこへ行ったかを示すことで、期首の現金残高と期末の現金残高を調整します。
カスタムレポートには、Beancountクエリ言語(BQL)を使用できます。以下は月次損益計算書のクエリです:
-- 2025年8月の損益計算書
SELECT account, sum(position)
WHERE account ~ '^(Income|Expenses)'
AND date >= 2025-08-01 AND date <= 2025-08-31
GROUP BY account ORDER BY account;