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

Beancount 言語構文

これは、Beancount 言語構文の簡潔かつ包括的なリファレンスを提供し、実践的な構造、ルール、および例を組み合わせています。詳細については、チートシートを参照してください。

概要

Beancount は、プレーンテキストの複式簿記会計システムです。その言語は、3 つの主要な構成要素を中心に構成されています。

  • コモディティ (通貨、株式、ポイントなど)
  • アカウント (階層化されたカテゴリ別台帳)
  • ディレクティブ (イベントまたは構成を記録する日付付きエントリ)

コモディティ

コモディティは常に大文字で記述されます。例: USDEURAAPLBTCMILESHOURS

アカウント

アカウントは、コロンで区切られた大文字の階層名です。それらは、次の 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
; インラインコメントはセミコロンで始まります
* 有効なディレクティブで始まらない行もサイレントに無視されます