メインコンテンツへスキップ

Beancount構文リファレンス:ディレクティブ、勘定科目、金額

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 <directive> <arguments...>

一般的なディレクティブと例​

勘定科目の開設と閉鎖​

2023-01-01 open Assets:Checking USD,EUR  ; Optionally specify allowed currencies
2023-12-31 close Assets:Checking

商品の宣言​

2020-07-22 commodity AAPL
  name: "Apple Inc."

価格の宣言​

2022-04-30 price AAPL 150.00 USD

ホストされた元帳で自動評価のクォートを行うには、ライブ価格を設定します。管理されたフィードは通常の日付付き price ディレクティブを提供します。それらは取引価格 (@、@@) やロットコスト ({}) を置き換えるものではありません。

メモと文書​

2022-03-20 note Assets:Checking "Asked about refund"
2022-03-20 document Assets:Checking "statements/2022-03.pdf"

取引​

2024-01-05 * "Coffee Shop" "Morning coffee"
  Expenses:Food         4.50 USD
  Assets:Cash         -4.50 USD
 
2024-01-06 ! "Phone Bill" "Monthly payment" #utilities ^phone
  id: "INV12345"              ; Metadata
  Expenses:Utilities  60.00 USD
  Assets:Checking

転記の機能​

; With cost basis
  Assets:Stocks    1 AAPL {150.00 USD}
; With price annotation
  Assets:Cash   -100 USD @ 1.25 CAD
; With total price
  Assets:Cash   -100 USD @@ 125.00 CAD
; Implicit balance
  Assets:Cash   -100 USD
  Assets:Bank

残高照合とパディング​

pad は、それが供給する balance より前の日付でなければなりません。アサーションはその日の開始時点でチェックされるためです。

2024-06-01 pad Assets:Checking Equity:Opening-Balances
2024-06-02 balance Assets:Checking 1000.00 USD

イベント​

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

ホストされたBeancount.ioは、サポートされている管理価格URLのインクルードも解決します。これはアップストリームのBeancountに対する拡張です。ホスト環境とローカル環境の互換性については、ライブ価格の設定ガイドを使用してください。

重要なルール​

  • すべての取引はバランスが取れていなければなりません。すべての記入のウェイトの合計がゼロになります。記入のウェイトは、その金額、またはコスト ({}) や価格 (@) が存在する場合はもう一方の通貨に換算した値です。
  • 勘定科目は使用前に開設する必要があり、閉鎖された勘定科目は記入を受け付けられません。
  • 残高アサーションは指定された通貨のみをチェックし、親勘定科目にも使用でき、その日付の開始時点で評価されます (したがって、同日の取引は除外されます)。
  • 価格注釈 (@ は単価、@@ は合計) はバランスに影響します。それらはもう一方の通貨での記入のウェイトを設定します。-100 USD @ 1.25 CAD は 125 CAD のウェイトを持ち、125 CAD の記入を相殺します。価格を削除すると、その取引はもはやバランスが取れなくなります。

一般的なパターン​

初期残高で勘定科目を開設する​

両方の勘定科目を開設し、開始日に pad を行い、翌日に残高をアサートします (アサーションはその日付の開始時点でチェックされます)。

2024-01-01 open Assets:Checking USD
2024-01-01 open Equity:Opening-Balances
2024-01-01 pad Assets:Checking Equity:Opening-Balances
2024-01-02 balance Assets:Checking 1000.00 USD

投資取引​

2024-01-01 * "Buy stock"
  Assets:Broker:Stock   10 AAPL {150.00 USD}
  Assets:Broker:Cash -1500.00 USD

複数通貨取引​

2024-01-01 * "Currency exchange"
  Assets:USD   -100.00 USD @ 1.25 CAD
  Assets:CAD    125.00 CAD

コメント​

poptag  #trip-to-peru
; inline comments begin with a semi-colon
* any line not starting with a valid directive is also ignored silently

出典: https://beancount.io/ja/docs/Basics/syntax