Beancount.io のご紹介
このガイドでは、強力なオープンソースのプレーンテキスト会計ツールである Beancount を使用したプレーンテキスト会計のベストプラクティスをまとめています。基礎となる哲学、基本から高度な構文、複雑な資産の実践的なケーススタディ、長期的な台帳管理戦略について説明します。
パート 1: 「なぜ」 - スマート簿記の基礎
「どのように」を掘り下げる前に、「なぜ」を理解することが重要です。効果的な簿記は、個人の財務管理の基盤であり、財務の明確性と自由への必要なステップです。
経費追跡を超えて:財務の明確さへの道
シンプルな経費追跡アプリは、お金が どこに行ったかを教えてくれます。堅牢な会計システムは、それ以上のことを教えてくれます。それは、純資産、キャッシュフロー、投資のパフォーマンスなど、あなたの財務状況の全体像を提供します。主な目標は可観測性です。つまり、財務生活を明確なデータ主導で理解し、情報に基づいた意思決定を行い、リスクを評価し、退職などの長期的な目標に向けて取り組むことができるようにすることです。
なぜ複式簿記なのか?バランスの取れたシステムの力
単式簿記(経費の簡単なリスト)とは異なり、複式簿記方式では、すべての取引を少なくとも 2 つの勘定間の価値の流れとして記録します。その核心となる原則は、基本的な会計方程式です。
このシステムにより、帳簿が常にバランスが取れ、エラーが大幅に削減されます。貸借対照表(あなたが所有するものと負っているもの)や損益計算書(あなたが稼いだものと費やしたもの)などの必須レポートを生成することにより、完全な財務状況を提供します。
パート 2: Beancount を始める
Beancount は、プレーンテキスト会計用の強力な Python ベースのツールです。
Beancount.io での Fava による最初の外観
Beancount.io は、Beancount エンジンとモバイルアプリ (iOS, Android) および web アプリ - Fava を組み合わせた強力な環境を提供します。Fava は、台帳を視覚化するための素晴らしい Web ベースのインターフェースです。インストールは不要です。プラットフォームを使用すると、台帳ファイル(例:main.bean)用のテキストエディタを直接操作し、Fava が生成したレポートがリアルタイムで更新されるのを確認できます。
Fava は、あなたが書いたプレーンテキストをインタラクティブなチャート、財務諸表、およびフィルタリング可能なトランザクションリストに変え、財務レポートを明確に表示します。
5 つのコアアカウントタイプ
Beancount は、台帳の構造を形成する 5 つのトップレベルのアカウントタイプを使用します。
| アカウントタイプ | 説明 | 一般的な残高 |
|---|---|---|
Assets | あなたが所有するもの(現金、銀行口座、投資、不動産)。 | プラス |
Liabilities | あなたが借りているもの(クレジットカードの借金、ローン、住宅ローン)。 | マイナス |
Income | お金の出所(給与、ボーナス、利息)。 | マイナス |
Expenses | お金の行き先(食料、家賃、旅行、税金)。 | プラス |
Equity | あなたの純資産。初期残高に使用されます。 | マイナス |
Beancount の方程式
Beancount は、台帳全体のすべての転記の合計がゼロになる独自の会計方程式を適用します。
これは、慣例により、Income、Liabilities、および Equity アカウントが負の値を保持する理由です。これらは、Assets と Expenses を増加させる資金の源泉です。
パート 3: Beancount の言語 - コア構文
Beancount のすべてのエントリは、日付で始まるディレクティブです。
アカウント(open)と商品の定義
アカウントを使用する前に、open ディレクティブで宣言する必要があります。また、通貨または「商品」をオプションで指定することもできます。
; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:Google
商品は、現実世界の通貨(例:USD、JPY)または、航空会社のマイレージ(MILES_UA)や株式ティッカー(HOOL)のように、定義するカスタムユニットにすることができます。
最初のトランザクションの記録(*)
トランザクションは最も一般的なエントリです。日付、フラグ(完全なトランザクションの場合は *、不完全なトランザクションの場合は !)、オプションの受取人、および説明で始まります。続く各行(2 つのスペースでインデント)は、アカウントへの「転記」です。
; YYYY-MM-DD * "Payee" "Description"
; Account1 Amount Commodity
; Account2 -Amount Commodity
2024-07-28 * "Trader Joe's" "Weekly groceries"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover -125.50 USD
便宜上、トランザクションに 2 つの転記しかない場合は、2 行目の金額を省略できます。Beancount が自動的に計算します。
2024-07-28 * "Trader Joe's" "Weekly groceries"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover
トランザクションレベルのバランス: 日常の使用でより重要なのは、個々のトランザクションもバランスが取れている必要があることです。1 つのトランザクション内のすべての転記の合計はゼロでなければなりません。トランザクションがバランスが取れていない場合、Beancount は次のようなエラーを表示します。

複数通貨トランザクションの処理(@ および @@)
Beancount は、複数通貨会計に優れています。
@を使用して、1 ユニットあたりの換算価格を指定します。@@を使用して、換算の総コストを指定します。
; Buying a flight in EUR with a USD card
2024-08-01 * "Lufthansa" "Flight to Berlin"
Expenses:Travel:Flights 500.00 EUR @@ 545.00 USD ; 500 EUR cost me 545 USD in total
Liabilities:CreditCard:US:Discover -545.00 USD