メインコンテンツまでスキップ

BeancountとFavaにおける勘定科目管理の完全ガイド

· 約17分
Mike Thrift
Mike Thrift
Marketing Manager

勘定科目体系はBeancount台帳の根幹です。よく設計された勘定科目の階層構造があれば、すべてのレポートがより明確になり、すべてのクエリがより速くなり、確定申告のシーズンもずっと楽になります。このガイドでは、BeancountとFavaにおける勘定科目の作成、参照、更新、クローズについて、基本から上級パターンまで、知っておくべきことをすべて解説します。

5つの勘定科目タイプ

Beancountは、5つのルート勘定科目タイプを持つ標準的な複式簿記モデルを採用しています:

タイプ用途通常の符号レポート
Assets所有する資産(現金、投資、不動産)正(借方)貸借対照表
Liabilities負っている債務(クレジットカード、ローン、住宅ローン)負(貸方)貸借対照表
Equity自己資本、利益剰余金、期首残高負(貸方)貸借対照表
Income収入源(給与、利息、配当金)負(貸方)損益計算書
Expenses費用カテゴリー(食費、家賃、光熱費)正(借方)損益計算書

基本的な会計等式は常に成り立ちます:

Assets + Expenses + Equity + Income + Liabilities = 0

便利な判断基準があります:その金額が一定期間にのみ意味がある場合(例:「今月食費にいくら使った?」)はIncomeまたはExpensesを使います。継続的な残高を表す場合(例:「当座預金にいくら入っている?」)はAssetsまたはLiabilitiesを使います。

勘定科目の命名規則

Beancountの勘定科目名は、コロンで区切られた階層的な識別子です。ルールは以下の通りです:

  • 5つのルートタイプのいずれかで始まる必要があります:AssetsLiabilitiesEquityIncomeExpenses
  • 各コンポーネントは大文字または数字で始まります
  • コンポーネントには文字、数字、ハイフンを使用できます(スペースやアンダースコアは不可)
  • 最低2つのコンポーネントが必要です(例:Expenses:Foodは可、Expensesのみは不可)
  • コロン(:)で階層レベルを区切ります
; 有効な勘定科目名
Assets:US:BofA:Checking
Liabilities:CA:RBC:CreditCard
Equity:Retained-Earnings
Income:US:Acme:Salary
Expenses:Food:Groceries
Assets:Crypto:BTC-Holdings

; 無効な勘定科目名
assets:checking ; ルートタイプが小文字
Assets:my checking ; スペースは使用不可
Expenses ; コンポーネントが1つだけ

貸借対照表の勘定科目に推奨される命名パターンは:

タイプ : 国 : 金融機関 : 口座 : サブ口座

例:Assets:US:Vanguard:401k:VTSAXLiabilities:US:Chase:Sapphire

費用・収入の勘定科目には、カテゴリーベースの命名を使います:

Expenses:Food:Groceries
Expenses:Housing:Utilities:Electric
Income:US:Employer:Salary

ルート名のカスタマイズ

5つのルートタイプの名前は、ローカライズや個人の好みに合わせて変更できます:

option "name_assets"       "Actifs"
option "name_liabilities" "Passifs"
option "name_equity" "Capital"
option "name_income" "Revenus"
option "name_expenses" "Depenses"

勘定科目の作成(openディレクティブ)

すべての勘定科目は、取引を記帳する前にopenディレクティブで宣言する必要があります。完全な構文は以下の通りです:

YYYY-MM-DD open Account [ConstraintCurrency,...] ["BookingMethod"]

基本的なopen

2014-05-01 open Assets:US:BofA:Checking

通貨制約付き

通貨を制限することで、誤った通貨での記帳を防止できます:

2014-05-01 open Assets:US:BofA:Checking       USD
2014-05-01 open Assets:Cash USD,CAD,EUR
2012-03-01 open Assets:US:ETrade:Main:ITOT ITOT

ブッキングメソッド付き

投資口座では、売却時のロットのマッチング方法を指定します:

2014-02-11 open Assets:US:ETrade:IVV   IVV   "FIFO"
2014-02-11 open Assets:US:Schwab:AAPL AAPL "LIFO"
2014-02-11 open Assets:US:Fidelity GOOG "STRICT"

利用可能なブッキングメソッド:

メソッド動作
"STRICT"デフォルト。正確なロット指定が必要で、曖昧な場合はエラーになる
"FIFO"先入先出法 ── 最も古いロットから減少させる
"LIFO"後入先出法 ── 最も新しいロットから減少させる
"AVERAGE"すべてのロットを統合し、平均コストを再計算する
"NONE"ロットマッチングなし。任意の価格を受け入れる

メタデータ付き

2013-03-14 open Assets:US:BTrade:HOOLI
category: "taxable"
institution: "BTrade Corp"
account-number: "XX-1234-5678"

open日付の戦略的な選び方

  • Expenses:Groceriesのような汎用的な勘定科目には生年月日を使います(生涯合計が得られます)
  • 仕事関連の収入勘定科目には就職日を使います
  • 金融機関固有の勘定科目(銀行口座、クレジットカード)には実際の口座開設日を使います

プラグインによる自動open

プロトタイピング中に手動のopenディレクティブをスキップしたい場合:

plugin "beancount.plugins.auto_accounts"

これにより、取引で参照されたすべての勘定科目に対してopenディレクティブが自動生成されます。ただし、これはタイプミスの検出力を低下させるため、本番環境での使用は推奨されません

勘定科目の一覧表示とクエリ

bean-query(BQL)の使用

# すべての勘定科目と残高を一覧表示
bean-query ledger.beancount "SELECT account, units(sum(position)) GROUP BY 1"

# 費用勘定科目のみを表示
bean-query ledger.beancount "SELECT account WHERE account ~ 'Expenses'"

# 累計残高付きの口座明細
bean-query ledger.beancount \
"SELECT date, account, position, balance WHERE account ~ 'BofA:Checking'"

# 特定の勘定科目の仕訳帳表示
bean-query ledger.beancount "JOURNAL 'Assets:US:BofA:Checking'"

bean-reportの使用

# 試算表(すべての勘定科目の最終残高)
bean-report ledger.beancount balances

# 貸借対照表
bean-report ledger.beancount balsheet

# 損益計算書
bean-report ledger.beancount income

# 特定の勘定科目の仕訳帳
bean-report ledger.beancount journal -a Assets:US:BofA:Checking

Favaの使用

Favaは勘定科目を探索するためのリッチなビジュアルインターフェースを提供します:

  • 貸借対照表ページ:すべてのAssets、Liabilities、Equityのインタラクティブなツリー
  • 損益計算書ページ:すべてのIncomeとExpensesのインタラクティブなツリー
  • 勘定科目ページ:任意の勘定科目名をクリックすると、仕訳帳、変動、残高のタブが表示される
  • フィルターバー:正規表現パターンを使用して一致する勘定科目のみを表示(例:Assets:US

勘定科目の更新(名前変更と再編成)

Beancountにはビルトインの名前変更ディレクティブはありませんが、いくつかのアプローチがあります。

1. 検索と置換

単純な検索・置換で対応できますが、注意が必要です。Assets:BankAssets:Bank:Cashにもマッチしてしまいます。単語境界を意識したパターンを使いましょう:

sed -i 's/Assets:US:OldBank:Checking/Assets:US:NewBank:Checking/g' *.beancount

2. rename_accountsプラグイン

beancount_reds_plugins パッケージは強力なリネームプラグインを提供しています:

plugin "beancount_reds_plugins.rename_accounts.rename_accounts" "{
'Expenses:Taxes' : 'Income:Taxes',
'Assets:House:Capital-Improvements' : 'Expenses:House:Appliances',
}"

このプラグインは:

  • 部分文字列マッチングを使用します(Expenses:Taxes:Federalは自動的にIncome:Taxes:Federalになります)
  • 後方参照付きの正規表現をサポートします
  • リネームされた勘定科目のOpenディレクティブを自動生成します
  • ソースファイルは変更しません ── メモリ内の表現のみを変更します
  • プラグイン行をコメントアウトすることでオン・オフを切り替えられます

3. クローズして再開パターン

実際の口座移行の場合(例:銀行の乗り換え):

; 旧口座
2010-01-01 open Assets:US:OldBank:Checking USD

; 旧口座をクローズし、新口座を開設
2024-06-15 close Assets:US:OldBank:Checking
2024-06-15 open Assets:US:NewBank:Checking USD

; 残高を振替
2024-06-15 * "新しい銀行への振替"
Assets:US:OldBank:Checking -5000.00 USD
Assets:US:NewBank:Checking 5000.00 USD

勘定科目のクローズ

closeディレクティブは、勘定科目がもう使用されていないことを示します:

2016-11-28 close Liabilities:CreditCard:CapitalOne

クローズの効果

  • クローズ日以降に記帳があるとエラーになる
  • 有効期間外のレポートからその勘定科目をフィルタリングする
  • Favaのツリービューから勘定科目を非表示にする(設定可能)

クローズすべきタイミング

  • 実際の銀行口座やクレジットカードを解約したとき
  • 転職したとき
  • 勘定科目体系を統合または再編成するとき
  • 不動産を売却したり投資ポジションをクローズしたとき

クローズ前に必ず残高ゼロを確認する

Beancountはクローズ時に自動的に残高ゼロを検証しません。手動でアサーションを追加してください:

2023-12-31 balance Assets:US:OldBank:Savings  0.00 USD
2023-12-31 close Assets:US:OldBank:Savings

勘定科目体系の整理

シンプルに始めて、徐々に改善する

初日から完璧な勘定科目体系を作る必要はありません。大まかなカテゴリーから始めて、レポートのニーズが増えるにつれて分割していきましょう。Beancountの作者は250以上の費用勘定科目を持っていると報告していますが、それらはすべて自然に時間とともに作られたものです。

よくある整理パターン

パターン1:金融機関別(貸借対照表の勘定科目向け)

Assets:US:BofA:Checking
Assets:US:BofA:Savings
Assets:US:Vanguard:401k:VTSAX
Assets:US:Vanguard:401k:VBTLX
Liabilities:US:Amex:Platinum
Liabilities:US:Chase:Sapphire

パターン2:カテゴリー別(収入・費用の勘定科目向け)

Expenses:Food:Groceries
Expenses:Food:Restaurant
Expenses:Food:Coffee
Expenses:Housing:Rent
Expenses:Housing:Insurance
Expenses:Housing:Utilities:Electric
Expenses:Housing:Utilities:Water
Expenses:Transport:Subway
Expenses:Transport:Gas
Expenses:Health:Medical
Expenses:Health:Dental

パターン3:地域別(多国間の家計管理向け)

Assets:US:BofA:Checking
Assets:CA:RBC:Checking
Assets:UK:HSBC:Current
Income:US:Acme:Salary
Income:CA:Freelance:Consulting

パターン4:物件・プロジェクト別(不動産や事業向け)

Assets:US:Loft4530:Property
Income:US:Loft4530:Rental
Expenses:Loft4530:Electricity
Expenses:Loft4530:Insurance
Expenses:Loft4530:Maintenance

パターン5:関連勘定科目のミラーリング(同じ金融機関コンポーネント)

Assets:US:ETrade:Cash
Assets:US:ETrade:AAPL
Income:US:ETrade:Dividends
Income:US:ETrade:PnL
Expenses:US:ETrade:Commissions

階層はどこまで深くすべきか?

  • 2〜3階層が費用カテゴリーでは一般的です(Expenses:Food:Restaurant
  • 3〜4階層が構造化された貸借対照表の項目向けです(Assets:US:Vanguard:401k:VTSAX
  • レポート上の明確な理由がない限り、5階層以上は避けましょう
  • 深い階層は、Favaがツリービューで折りたたむ場合にうまく機能します

実践的な例

個人の家計管理のための実践的な勘定科目体系を紹介します:

; ── 資産 ──
Assets:US:BofA:Checking USD
Assets:US:BofA:Savings USD
Assets:US:Vanguard:401k:VTSAX VTSAX
Assets:US:Vanguard:Roth:VTSAX VTSAX
Assets:US:ETrade:Cash USD
Assets:US:ETrade:AAPL AAPL
Assets:Cash:Wallet USD

; ── 負債 ──
Liabilities:US:Amex:Platinum USD
Liabilities:US:Chase:Freedom USD
Liabilities:US:BofA:Mortgage USD

; ── 収入 ──
Income:US:Employer:Salary
Income:US:Employer:Bonus
Income:US:Employer:Match401k
Income:US:ETrade:Dividends
Income:US:BofA:Interest

; ── 費用 ──
Expenses:Food:Groceries
Expenses:Food:Restaurant
Expenses:Food:Coffee
Expenses:Housing:Rent
Expenses:Housing:Insurance
Expenses:Housing:Utilities:Electric
Expenses:Housing:Utilities:Water
Expenses:Transport:Subway
Expenses:Transport:Taxi
Expenses:Transport:Gas
Expenses:Health:Medical
Expenses:Health:Dental
Expenses:Health:Pharmacy
Expenses:Shopping:Clothing
Expenses:Shopping:Electronics
Expenses:Entertainment:Streaming
Expenses:Entertainment:Books
Expenses:Travel:Flights
Expenses:Travel:Hotels
Expenses:Taxes:Federal
Expenses:Taxes:State
Expenses:Taxes:SocialSecurity
Expenses:Taxes:Medicare

; ── 純資産 ──
Equity:Opening-Balances
Equity:Retained-Earnings

Fava固有の機能

最新状態インジケーター

勘定科目管理におけるFavaの最も便利な機能の一つです。任意の勘定科目に以下のメタデータを追加します:

2014-05-01 open Assets:US:BofA:Checking  USD
fava-uptodate-indication: TRUE

Favaは勘定科目の横に色付きのドットを表示します:

  • 緑色のドット:最後のエントリーがパスしたbalanceアサーションである(勘定科目が照合済み)
  • 赤色のドット:最後のエントリーが失敗したbalanceアサーションである(注意が必要)
  • 黄色のドット:最後のエントリーは存在するがbalanceアサーションではない(未照合)
  • 灰色のドット:振り返り期間内にアクティビティがない

灰色のしきい値を設定できます:

2016-06-14 custom "fava-option" "uptodate-indicator-grey-lookback-days" "60"

ツリービューの制御

Favaでの勘定科目表示を制御します:

; クローズ済み勘定科目をツリーに表示する
2016-06-14 custom "fava-option" "show-closed-accounts" "true"

; 取引数がゼロの勘定科目を表示する
2016-06-14 custom "fava-option" "show-accounts-with-zero-transactions" "true"

; 残高ゼロの勘定科目を表示する
2016-06-14 custom "fava-option" "show-accounts-with-zero-balance" "true"

折りたたみパターン

深くネストされた勘定科目をデフォルトで折りたたみます:

; 3階層以上のすべての勘定科目を折りたたむ
2016-06-14 custom "fava-option" "collapse-pattern" ".*:.*:.*"

; 特定のサブツリーを折りたたむ
2016-06-14 custom "fava-option" "collapse-pattern" "Assets:US:Vanguard:.*"

勘定科目の仕訳帳に子勘定科目を含める

Favaで勘定科目の仕訳帳を表示する際に、子勘定科目の記帳も含めます:

2016-06-14 custom "fava-option" "account-journal-include-children" "true"

読みやすさのための符号反転

デフォルトでは、収入と負債は負の数値(自然な符号)で表示されます。正の数値で表示するには:

2016-06-14 custom "fava-option" "invert-income-liabilities-equity" "true"

ドキュメント管理

Favaは勘定科目の階層構造とドキュメントの管理を統合しています。ドキュメントのルートを設定します:

option "documents" "/path/to/documents"

そして、勘定科目のパスに沿ってファイルを整理します:

/path/to/documents/
Assets/
US/
BofA/
Checking/
2024-01-15.january-statement.pdf
2024-02-15.february-statement.pdf
Liabilities/
US/
Amex/
Platinum/
2024-03-15.march-bill.pdf

YYYY-MM-DDで始まるファイルはFavaによって自動的に検出され、その勘定科目の仕訳帳ビューに表示されます。

よくある間違いとその回避方法

1. 勘定科目名のタイプミス

Expenses:Grocriesのような1つのタイプミスが、まったく意図しない新しい勘定科目を作成してしまいます。

解決策:本番環境ではauto_accountsプラグインを使用しないでください。明示的なopenディレクティブを必須にしましょう。Beancountは宣言されていない勘定科目に対して即座にエラーを出します:

ERROR: Invalid reference to unknown account 'Expenses:Grocries'

2. 通貨制約の設定忘れ

通貨制約がないと、USD専用の口座に誤ってEURを記帳できてしまいます。

解決策:openディレクティブでは常に通貨を指定しましょう:

2014-01-01 open Assets:US:BofA:Checking  USD

3. 定期的な残高確認を怠る

定期的なbalanceアサーションがないと、エラーが何ヶ月も検出されないまま放置される可能性があります。

解決策:すべてのアクティブな勘定科目に月次のbalanceアサーションを追加しましょう:

2024-01-01 balance Assets:US:BofA:Checking   5,432.10 USD
2024-02-01 balance Assets:US:BofA:Checking 4,890.55 USD
2024-03-01 balance Assets:US:BofA:Checking 6,123.00 USD

4. 命名規則の不統一

パターンの混在(例:Expenses:FoodExpenses:US:Food)はクエリやレポートを混乱させます。

解決策:規則を決めて一貫して守りましょう。貸借対照表の勘定科目には国のプレフィックスを使い、収入・費用にはカテゴリーベースの命名を使います。

5. 残高ゼロのアサーションなしでのクローズ

closeディレクティブは残高を検証しません。まだ残高がある勘定科目をクローズしてしまう可能性があります。

解決策:closeには必ずbalanceアサーションを組み合わせましょう:

2023-12-31 balance Assets:US:OldBank:Savings  0.00 USD
2023-12-31 close Assets:US:OldBank:Savings

上級パターン

マルチ通貨のヒント

運用通貨を宣言すると、専用のレポート列が表示されます:

option "operating_currency" "USD"
option "operating_currency" "EUR"

マルチ通貨の勘定科目では、許可する通貨をすべて列挙します:

2014-01-01 open Assets:Cash  USD,CAD,EUR

複数通貨のbalanceアサーションは、通貨ごとに1つずつ行う必要があります:

2024-01-01 balance Assets:Cash     562.00 USD
2024-01-01 balance Assets:Cash 210.00 CAD
2024-01-01 balance Assets:Cash 60.00 EUR

初期設定のためのpadとbalance

padディレクティブを使うと、金額を手動で計算せずに期首残高を設定できます:

2000-05-28 open Assets:US:BofA:Checking  USD
2000-05-28 pad Assets:US:BofA:Checking Equity:Opening-Balances
2024-07-01 balance Assets:US:BofA:Checking 12,345.67 USD

Beancountが自動的に調整取引を生成します。重要な注意点が1つあります:balanceアサーションは指定された日付の開始時点の残高をチェックします。そのため、1月2日にpadを設定した場合、balanceアサーションは1月3日以降に行う必要があります。

カスタムレポートのための勘定科目メタデータ

openディレクティブにメタデータを付加してカスタムレポートに活用できます:

2014-01-01 open Assets:US:BofA:Checking  USD
category: "liquid"
tax-status: "taxable"

2014-01-01 open Assets:US:Vanguard:401k USD
category: "retirement"
tax-status: "tax-deferred"

BQLでメタデータをクエリできます:

SELECT account, META("category") WHERE META("tax-status") = "taxable"

勘定科目履歴のためのメモ

任意の勘定科目の仕訳帳に日付付きのメモを添付できます:

2024-03-20 note Assets:US:BofA:Checking "不正利用について電話で問い合わせ、参照番号 #12345"
2024-06-01 note Liabilities:US:Chase:Sapphire "リテンション部門に電話後、年会費が免除された"

これらのメモはFavaの勘定科目の仕訳帳に表示され、監査証跡を提供します。

追跡勘定科目と資金の色分け

BeancountにはLedgerの仮想記帳はありませんが、サブ勘定科目を使って資金の色分けができます:

; 当座預金内の緊急資金を追跡
Assets:US:BofA:Checking:EmergencyFund USD
Assets:US:BofA:Checking:Operating USD

; 立替金を追跡
Assets:Receivables:Employer:Travel USD
Assets:Receivables:Friend:SharedDinner USD

税務に対応した費用カテゴリー

確定申告の準備が楽になるように費用勘定科目を構造化しましょう:

Expenses:Health:Medical:Deductible
Expenses:Charity:Deductible
Expenses:Business:Office
Expenses:Business:Equipment
Expenses:Education:Professional

クイックリファレンス早見表

タスク構文
勘定科目を開設する2024-01-01 open Assets:US:BofA:Checking USD
勘定科目をクローズする2024-12-31 close Assets:US:OldBank:Savings
残高を確認する2024-01-01 balance Assets:US:BofA:Checking 5,432.10 USD
残高をpadで合わせる2024-01-01 pad Assets:Cash Equity:Opening-Balances
メモを追加する2024-01-15 note Assets:US:BofA:Checking "月次照合完了"
ドキュメントを添付する2024-01-15 document Assets:US:BofA:Checking "/path/to/statement.pdf"
メタデータを追加するopenの次の行にインデントされたキーバリュー
自動open(開発用)plugin "beancount.plugins.auto_accounts"
通貨を制限する2024-01-01 open Assets:Cash USD,EUR
ブッキングメソッドを設定する2024-01-01 open Assets:US:ETrade:AAPL AAPL "FIFO"

まとめ

勘定科目をうまく管理することは、効果的なBeancount簿記の基盤です。主なポイントは以下の通りです:

  1. 常に明示的なopenディレクティブを使う ── タイプミスを検出し、規律を強制します
  2. 通貨制約を追加する ── 異なる通貨の混在を防ぎます
  3. 一貫した命名規則を使う ── 貸借対照表は金融機関別、収入・費用はカテゴリー別
  4. シンプルに始めて改善する ── レポートのニーズに応じて勘定科目を分割します
  5. 定期的に残高を確認する ── 月次の照合で早期にエラーを発見します
  6. 勘定科目を適切にクローズする ── 残高ゼロのアサーション付きで
  7. Favaの機能を活用する ── 最新状態インジケーター、折りたたみパターン、ドキュメント統合
  8. メタデータを活用する ── カスタムの分類とレポートのために

楽しい会計ライフを!

References: