スモールビジネスの財務をデトックス — Beancount流
乱雑な元帳を30日で落ち着いた、現金に自信のあるビジネスへ変える—プレーンテキスト会計を活用して。
TL;DR
- 分離・簡素化・ロック:最小限の勘定科目表、一貫したインポート、そして自動残高チェックで帳簿を固定。
- 重要項目を可視化:COGS、間接費、キャッシュランウェイを
bean-query
で即座に取得。 - ノイズ除去(未使用サブスクリプションや重複ツール)と 良好な習慣のコード化(週次照合、月次締め、領収書添付)。
- 税務シーズンを退屈に:ステートメント、領収書、残高を一元管理し、検証可能に。
なぜ「デトックス」か?
小規模事業の財務が乱雑になると、単に見た目が悪いだけでなく、コストが増大します。無駄な支出が隠れ、本当の利益率が見えにくくなり、税務シーズンは慌ただしい宝探しに変わります。30日間の財務デトックスは、資金の流れと漏れを特定し、複雑さを排除し、シンプルで再現可能なルーティンを制度化するリセットです。
Beancount は 透明性・スクリプタビリティ・検証可能性 を備えているため最適です。ブラックボックスのソフトと違い、プレーンテキストの元帳はすべての数値が説明可能です。ディレクティブとクエリでチェックとバランスを自動化し、自己監査システムを構築できます。本ガイドは4週間の計画でその実現方法を示します。
Week 0 — ベースラインを設定
クリーンアップの前に、堅固な基盤が必要です。この週は財務世界の構造を定義します。
最小限の勘定科目表を作成
勘定科目表は財務システムの骨格です。ここではミニマリズムを目指します。将来必要になるかもしれないすべての費用に口座を作らないでください。今日使っている必須項目だけで始め、後から追加できます。乱雑な科目表は誤分類を招き、ハイレベルな分析を困難にします。
シンプルで効果的な例:
; Core entities
2025-01-01 open Assets:Bank:Checking USD
2025-01-01 open Assets:Bank:Savings USD
2025-01-01 open Liabilities:CreditCard:Business USD
2025-01-01 open Income:Sales
2025-01-01 open Expenses:COGS
2025-01-01 open Expenses:Overhead:Rent
2025-01-01 open Expenses:Overhead:Utilities
2025-01-01 open Expenses:SaaS
2025-01-01 open Equity:Opening-Balances
検証可能な残高をロック
プレーンテキスト会計の最大の強みは「現実を主張できる」ことです。balance
ディレクティブは「この日付にこの口座は正確にこの金額だった」と Beancount に指示します。合わなければエラーが発生します。これが第一の安全網です。
開始時は pad
と balance
を組み合わせて、銀行ステートメントから口座を初期化します。pad
は取引を作成し、正しい開始残高へ強制し、差額をエクイティ口座に振ります。
; Initialize from statements
2025-01-01 pad Assets:Bank:Checking Equity:Opening-Balances
2025-01-01 balance Assets:Bank:Checking 12345.67 USD
注意点:pad
は必要最小限に使用してください。繰り返しの照合ミスを隠すための手段ではありません。
Week 1 — フローを分離・簡素化
構造ができたら、資金の流れを明確にします。
ビジネスと個人を分離
小規模事業の金銭管理の黄金律です。資金を混同すると混乱と税務上の頭痛のもとになります。
- ビジネス専用の銀行口座とクレジットカードを1つずつ持つ。
- 元帳でも
Assets:Bank:Business:Checking
、Liabilities:CreditCard:Business
のように分離。 - 自分への支払いは
Equity:Owner-Draws
への配分として記録。個人支出をビジネス口座から直接分類しない。
ベンダーカテゴリを標準化
AWS、Google Cloud、Vercel をそれぞれ別口座にしません。すべて Expenses:Cloud
のような単一の論理カテゴリにマッピングします。分析しないマイクロ口座は作らない。目的はパターンを見える化することであり、ベンダーごとに口座を増やすことではありません。
Week 2 — 入力と領収書を自動化
手入力は遅く、エラーが起きやすく、持続不可能です。今週はレジャーを自動化する仕組みを構築します。
ドラマなしのインポートパスを構築
Beancount のインポートフレームワークで CSV や OFX を読み取り、取引を自動生成できます。一度設定すれば何百時間も節約できます。インポートルールは Git などでバージョン管理し、再現性とバックアップを確保しましょう。
- 公式ガイド Importing External Data から開始。
- インタラクティブにしたい場合は beancount-import の Web UI を検討。
ingest
や新しいbeangulp
フレームワークを使うユーザーも多いので、どれかに統一。
書類は正しい場所に添付
領収書なしの取引は根拠がありません。Beancount とその Web UI Fava は、エントリにソースドキュメントをリンクするのが非常に簡単です。
2 つの方法があります:
- Documents フォルダ + ディレクティブ:領収書やステートメントを専用フォルダに保存し、
document
ディレクティブで取引にリンク。 - Fava のドラッグ&ドロップ:PDF や画像を取引上にドラッグすると、Fava が自動でファイルを保存し、正しい
document
ディレクティブを元帳に挿入。
; In your main ledger file, tell Fava where your documents live
option "documents" "/home/acme/docs"
; Link a receipt to a specific transaction posting
2025-08-07 * "Figma" "Monthly Subscription"
Assets:CreditCard:Business -12.00 USD
Expenses:SaaS 12.00 USD
document: "receipts/figma-2025-08-07.pdf"
Week 3 — 真実を即座に取得(再利用する高速クエリ)
元帳がクリーンになり、データが流入したら、重要な質問を投げかけます。bean-query
を使って瞬時に答えを得ましょう。
1) 現金はどこにある?
流動資産のスナップショットを取得。
bean-query business.beancount 'BALANCES FROM year = 2025 AND (account "Assets:Bank" OR account "Liabilities:CreditCard")'
これだけで、複数の銀行ポータルにログインせずにリアルタイムのキャッシュポジションが把握できます。
2) 間接費と COGS の内訳は?
支出が本当にどこに向かっているかを把握。製品提供に直接関わるコスト(COGS)と、非必須の間接費を分離します。
SELECT
account,
units(sum(position))
WHERE
account "^Expenses:(Overhead|COGS)" AND year = 2025
GROUP BY
account
ORDER BY
account
3) 「ゾンビ」サブスクリプションは?
小額で継続的に支払われているが忘れられがち なサービスを検出。
SELECT
payee,
COUNT(*) AS num_transactions,
SUM(number) AS total_spent
WHERE
account "^Expenses:SaaS" AND date >= '2025-01-01'
GROUP BY
payee
ORDER BY
num_transactions DESC,
total_spent DESC
頻繁に支払っているベンダーが一目で分かります。不要なものが見つかれば即座に解約しましょう。
Week 4 — システムを整頓・固定
最終週は、財務を長期的にクリーンに保つ習慣とガードレールを構築します。
シンプルな予算を設定
Fava は元帳の budget
ディレクティブを読み取り、進捗バーで可視化します。支出目標に対して現在位置を常に把握できます。
; SaaS の支出上限を月額 100 USD に設定
2025-01-01 custom "budget" Expenses:SaaS "monthly" 100.00 USD
ソフトウェア、広告、外注費など、変動費の主要カテゴリに設定すれば、逸脱を早期に検知できます。
毎月の締めを徹底
非交渉可能な月次締めプロセスを確立:
- 照合:すべての銀行・クレジットカード口座に対し、月末ステートメントの金額と同じ
balance
アサーションを追加。 - 添付:
balance
エントリにステートメント PDF をdocument
ディレクティブでリンク。 - レポート:先ほどの 3 つのクエリ(現金、間接費/COGS、サブスクリプション)を実行し、結果を短い月次レビューに貼り付け。
残高アサーション は自動トリガーです。元帳がステートメントと合わなければ Beancount がエラーを出し、問題箇所を指摘します。
税務シーズンを退屈に(良い意味で)
このシステムを導入すれば、税務準備は危機からシンプルなレポート作業へと変わります。
- 領収書は取引に添付 されているので、探し回る必要なし。Fava ではワンクリックで原本にアクセス。
- 税務関連項目はタグ付け(例:
#tax-deductible
)でき、bean-query
で会計士向けにクリーンなレポートを抽出。 - 年末残高は
balance
アサーションでロック され、数字に対する信頼性が向上。
30日間チェックリスト(印刷用)
- Day 1–3
- 最小限の勘定科目表を作成。
- 銀行・カードごとに
pad
+balance
を最新ステートメントで設定。
- Day 4–10
- インポートパイプラインを1つ構築し、ルールをバージョン管理。
- 直近90日分を遡ってインポートし、最初の
BALANCES
スナップショットを取得。
- Day 11–15
- ベンダーを各カテゴリ(SaaS、Cloud、Shipping など)に統一。
- 照合期間のステートメント PDF を添付し、Fava に表示されることを確認。
- Day 16–20
- 間接費 vs. COGS クエリを実行し、誤分類を修正。
- サブスクリプション頻度クエリを実行し、未使用サービスを解約または統合。
- Day 21–25
- 主要変動費カテゴリに予算を設定。
- 予算上限を超えた場合のアラートを確認。
- Day 26–30
- 月次締めプロセスを実施し、残高アサーションと領収書添付を完了。
- 3 つのクエリ結果を月次レビューにまとめ、次月へ引き継ぎ。
Common Snippets(共通スニペット)
残高ロック
2025-01-01 balance Assets:Bank:Checking 15000.00 USD
ベンダー統一例
2025-02-15 * "Amazon Web Services" "月額利用料"
Expenses:Cloud 200.00 USD
Assets:Bank:Checking -200.00 USD
タグ付け例
2025-03-10 * "Office Supplies" "文房具購入"
Expenses:OfficeSupplies 45.00 USD
#tax-deductible
Common Queries(共通クエリ)
SELECT account, units(sum(position))
WHERE account = "Assets:Bank:Checking"
Common Directives(共通ディレクティブ)
option "titlecase_account" "yes"
option "operating_currency" "USD"
Common Tags(共通タグ)
#tax-deductible
– 税務上控除可能#cash-confident
– 現金に自信がある取引#monthly-review
– 月次レビュー用
Common Scripts(共通スクリプト)
#!/usr/bin/env bash
# 30日間の自動照合スクリプト
bean-check --auto --year 2025
Common Templates(共通テンプレート)
2025-04-01 * "テンプレート取引" "