Beancount 言語構文
これは、Beancount 言語構文の簡潔かつ包括的なリファレンスを提供し、実践的な構造、ルール、および例を組み合わせています。詳細については、チートシートを参照してください。
概要
Beancount は、プレーンテキストの複式簿記会計システムです。その言語は、3 つの主要な構成要素を中心に構成されています。
- コモディティ (通貨、株式、ポイントなど)
- アカウント (階層化されたカテゴリ別台帳)
- ディレクティブ (イ ベントまたは構成を記録する日付付きエントリ)
コモディティ
コモディティは常に大文字で記述されます。例: USD
、EUR
、AAPL
、BTC
、MILES
、HOURS
。
アカウント
アカウントは、コロンで区切られた大文字の階層名です。それらは、次の 5 つのルートアカウントタイプのいずれかで始まる必要があります。
名前 | タイプ | 一般的な内容 | 例 |
---|---|---|---|
Assets | + | 現金、銀行、投資 | Assets:Checking |
Liabilities | - | クレジットカード、ローン | Liabilities:CreditCard |
Income | - | 給与、利息 | Income:EmployerA |
Expenses | + | 購入、請求書 | Expenses:Food:Dining |
Equity | - | 開始/終了残高 | Equity:Opening-Balances |
- コンポーネントは大文字で始め、コロン(
:
)で区切り、スペースは含めません。 - 数字とダッシュをコンポーネントで使用できます。
- ルートアカウント名はオプションでカスタマイズできます(下記参照)。
ディレクティブ
ディレクティブは、Beancount ファイルの中核となるステートメントです。ほとんどは日付で始まり、その後にディレクティブタイプと引数が続きます。これらは、ファイル順ではなく、時系列順(日付順)で処理されます。
一般的な形式:
YYYY-MM-DD <ディレクティブ> <引数...>
一般的なディレクティブと例
アカウントの開設と閉鎖
2023-01-01 open Assets:Checking USD,EUR ; オプションで許可される通貨を指定
2023-12-31 close Assets:Checking
コモディティの宣言
2020-07-22 commodity AAPL
name: "Apple Inc."
価格の宣言
2022-04-30 price AAPL 150.00 USD
注釈とドキュメント
2022-03-20 note Assets:Checking "払い戻しについて質問"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"
トランザクション
2024-01-05 * "コーヒーショップ" "モーニングコーヒー"
Expenses:Food 4.50 USD
Assets:Cash -4.50 USD
2024-01-06 ! "電話料金" "月額支払い" #utilities ^phone
id: "INV12345" ; メタデータ
Expenses:Utilities 60.00 USD
Assets:Checking
転記機能
; 取得原価ベース付き
Assets:Stocks 1 AAPL {150.00 USD}
; 価格アノテーション付き
Assets:Cash -100 USD @ 1.25 CAD
; 合計金額付き
Assets:Cash -100 USD @@ 125.00 CAD
; 暗黙の残高
Assets:Cash -100 USD
Assets:Bank
残高アサーションとパディング
2024-06-01 balance Assets:Checking 1000.00 USD
2024-06-01 pad Assets:Checking Equity:Opening-Balances
イベント
2024-06-01 event "location" "San Francisco, CA"
オプション
ファイル全体の構成を設定します。
option "title" "My Ledger"
option "operating_currency" "USD"
option "documents" "docs/"
option "name_assets" "Vermoegen"
詳細については、オプションのリファレンスを参照してください。
プラグインとファイルの構成
plugin "beancount.plugins.module_name"
plugin "beancount.plugins.module_name" "config-string"
include "other/file.beancount"
pushtag #project
; ...
poptag #project
重要なルール
- すべてのトランザクションはバランスが取れている必要があります (すべての転記の合計がゼロである必要があります。取得原価ベースが存在する場合は使用されます)。
- アカウントは使用前に開設する必要があります。閉鎖されたアカウントは転記を受け入れることができません。
- 残高アサーションは、指定された通貨のみをチェックし、親アカウントで使用できます。
- 価格アノテーション (
@
) は情報提供のみを目的としており、バランスには影響しません。
一般的なパターン
初期残高を持つ口座開設
2024-01-01 open Assets:Checking USD
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-01 balance Assets:Checking 1000.00 USD
投資取引
2024-01-01 * "株式の購入"
Assets:Broker:Stock 10 AAPL {150.00 USD}
Assets:Broker:Cash -1500.00 USD
多通貨取引
2024-01-01 * "通貨交換"
Assets:USD -100.00 USD @ 1.25 CAD
Assets:CAD 125.00 CAD
コメント
poptag #trip-to-peru
; インラインコメントはセミコロンで始まります
* 有効なディレクティブで始まらない行もサイレントに無視されます