メインコンテンツへスキップ
Beancount.io Logo

言語構文

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 <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

メモと文書

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

重要なルール

  • すべての取引はバランスが取れている必要があります:すべての転記のウェイトの合計がゼロになる必要があります。転記のウェイトはその金額、またはコスト({})や価格(@)が他の通貨に変換されたもの(存在する場合)です。
  • 勘定科目は使用する前に開設されている必要があります。閉鎖された勘定科目は転記を受け付けることができません。
  • 残高照合は指定された通貨のみをチェックし、親勘定科目にも使用でき、その日付の開始時に評価されます(つまり、同日の取引は除外されます)。
  • 価格注記(@は単価、@@は合計)はバランスに影響します:これらは転記のウェイトを他方の通貨で設定します。-100 USD @ 1.25 CAD125 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