BeancountとFavaにおける勘定科目管理の完全ガイド
勘定科目体系はBeancount台帳の根幹です。よく設計された勘定科目の階層構造があれば、すべてのレポートがより明確になり、すべてのクエリがより速くなり、確定申告のシーズンもずっと楽になります。このガイドでは、BeancountとFavaにおける勘定科目の作成、参照、更新、クローズについて、基本から上級パターンまで、知っておくべきことをすべて解説します。
5つの勘定科目タイプ
Beancountは、5つのルート勘定科目タイプを持つ標準的な複式簿記モデルを採用しています:
| タイプ | 用途 | 通常の符号 | レポート |
|---|---|---|---|
| Assets | 所有する資産(現金、投資、不動産) | 正(借方) | 貸借対照表 |
| Liabilities | 負っている債務(クレジットカード、ローン、住宅ローン) | 負(貸方) | 貸借対照表 |
| Equity | 自己資本、利益剰余金、期首残高 | 負(貸方) | 貸借対照表 |
| Income | 収入源(給与、利息、配当金) | 負(貸方) | 損益計算書 |
| Expenses | 費用カテゴリー(食費、家賃、光熱費) | 正(借方) | 損益計算書 |
基本的な会計等式は常に成り立ちます:
Assets + Expenses + Equity + Income + Liabilities = 0
便利な判断基準があります:その金額が一定期間にのみ意味がある場合(例:「今月食費にいくら使った?」)はIncomeまたはExpensesを使います。継続的な残高を表す場合(例:「当座預金にいくら入っている?」)はAssetsまたはLiabilitiesを使います。
勘定科目の命名規則
Beancountの勘定科目名は、コロンで区切られた階層的な識別子です。ルールは以下の通りです:
- 5つのルートタイプのいずれかで始まる必要があります:
Assets、Liabilities、Equity、Income、Expenses - 各コンポーネントは大文字または数字で始まります
- コンポーネントには文字、数字、ハイフ ンを使用できます(スペースやアンダースコアは不可)
- 最低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:VTSAX や Liabilities: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)