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

はじめに

Beancount.io は、株式や暗号通貨の投資追跡を簡素化し、エンジニアや財務ミニマリスト向けに設計されたユーザーフレンドリーなインターフェースと強力な機能を提供します。

このガイドは、強力なオープンソースのプレーンテキスト会計ツールである Beancount を使用したプレーンテキスト会計のベストプラクティスをまとめたものです。基礎となる哲学、基本から応用までの構文、複雑な資産の実践的なケーススタディ、そして長期的な台帳管理戦略を網羅しています。

パート1: 「なぜ」- スマートな簿記の基礎

「どのように」に飛び込む前に、「なぜ」を理解することが重要です。効果的な簿記は、個人の財務管理の基盤であり、財務的な明晰さと自由への必要なステップです。

支出追跡を超えて: 財務的な明晰さへの道

単純な支出追跡アプリは、お金がどこに行ったかを教えてくれます。堅牢な会計システムは、それをはるかに超えた情報を提供します: 純資産、キャッシュフロー、投資のパフォーマンスを含む、あなたの財務状況の完全な全体像です。主要な目標は可観測性です - データに基づいた明確な財務理解を得ることで、情報に基づいた意思決定、リスク評価、そして退職のような長期的な目標に向けた取り組みが可能になります。

なぜ複式簿記なのか? バランスの取れたシステムの力

単式簿記(単純な支出のリスト)とは異なり、複式簿記法はすべての取引を少なくとも2つの勘定科目間の価値の流れとして記録します。その中核となる原則は、基本的な会計等式です:

資産=負債+純資産\text{資産} = \text{負債} + \text{純資産}

このシステムにより、帳簿が常にバランスを保ち、エラーが劇的に減少します。貸借対照表(資産と負債)や損益計算書(収入と支出)などの主要なレポートを生成することで、完全な財務状況を把握できます。

パート2: Beancount を始めよう

Beancount は、プレーンテキスト会計のための強力な Python ベースのツールです。

Beancount.io で Fava を初めて見る

Beancount.io は、Beancount エンジンとモバイルアプリ(iOSAndroid)およびウェブアプリを組み合わせた強力な環境を提供します - Fava は、台帳を視覚化するための素晴らしいウェブベースのインターフェースです。インストールは不要です。プラットフォームを使用する際、あなたは台帳ファイル(例: main.bean)のテキストエディタと直接対話し、Fava が生成するレポートがリアルタイムで更新されるのを見ることになります。

Fava は、あなたが書いたプレーンテキストをインタラクティブなチャート、財務諸表、フィルタリング可能な取引リストに変換し、財務レポートの明確なビューを提供します。

または、beaでターミナルから始める

シェルでの作業を希望する場合、beaはBeancount.ioのコマンドラインです。アカウントは不要で、brew install bex-co/tap/beaまたはuv tool install beancount-ioでインストールすると、同じプレーンテキストファイルの作成、検証、クエリ、レポートを実行できます。CLIクイックスタートで数分以内に最初の台帳を作成でき、beaでの最初の1ヶ月で1ヶ月全体を最初から最後まで締められます。

5つの主要な勘定科目タイプ

Beancount は5つのトップレベルの勘定科目タイプを使用し、これらが台帳の構造を形成します:

勘定科目タイプ説明通常の残高
資産あなたが所有するもの(現金、銀行口座、投資、不動産)。借方
負債あなたが負っているもの(クレジットカード債務、ローン)。貸方
収入お金の源泉(給与、ボーナス、利息)。貸方
費用お金の使途(食費、家賃、旅行、税金)。借方
純資産あなたの純資産; 初期残高に使用。貸方

Beancount の等式

Beancount は、会計等式の独自バージョンを適用し、台帳全体のすべての posting の合計がゼロになることを要求します:

資産+費用+負債+収入+純資産=0\text{資産} + \text{費用} + \text{負債} + \text{収入} + \text{純資産} = 0

これが、慣例により、収入負債純資産 勘定がマイナスの値を保持する理由です - これらはあなたの 資産費用 を増加させる資金の_源泉_です。

パート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

商品は、現実世界の通貨(例: USDJPY)や、あなたが定義するカスタムユニット(例: 航空会社のマイル (MILES_UA) や株式ティッカー (HOOL))にすることができます。

最初の取引の記録 (*)

取引は最も一般的なエントリです。日付、フラグ(* は完了した取引、! は未完了の取引)、オプションの支払い先、説明で始まります。続く各行(2スペースでインデント)は、勘定科目への「posting」です。

; 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つの posting しかない場合、2行目の金額を省略でき、Beancount が自動的に計算します。

2024-07-28 * "Trader Joe's" "Weekly groceries"
  Expenses:Food:Groceries     125.50 USD
  Liabilities:CreditCard:US:Discover

取引レベルのバランス: 日々の使用でより重要なのは、個々の取引もバランスが取れている必要があることです - 単一の取引内のすべての posting の合計はゼロでなければなりません。取引のバランスが取れていない場合、Beancount は次のようなエラーを表示します:

Beancount エラーアラート

複数通貨取引の処理 (@@@)

Beancount は複数通貨の会計に優れています。

  • @ を使用して、単価での換算価格を指定します。
  • @@ を使用して、総額での換算コストを指定します。
; 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

パート4: 正確性の確保 - 調整の技術

正確な台帳を維持するための重要な実践は、定期的な調整です。これには、Beancount 台帳の残高を、あなたの金融機関からの公式な明細書と比較することが含まれます。

残高照合によるチェックの自動化 (balance)

balance ディレクティブは、自動チェックのための主要なツールです。特定の日付に、勘定科目が特定の残高であることを主張(assert)します。計算された残高が主張と一致しない場合、Beancount はエラーを発生させます。これは、エラーを迅速に特定するために非常に価値があります。

注記: 残高照合チェックは、指定された日の_開始時_(その日の取引の前)の勘定科目の状態をチェックします。

; From your monthly credit card statement
2024-08-01 balance Liabilities:CreditCard:US:Discover  -1432.78 USD

関連書類のリンク (document)

銀行明細書や領収書などの外部ファイルにリンクでき、監査可能な証跡を作成できます。Fava はこれらのリンクをクリック可能にします。

2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"

エラーの修正と残高の初期化

台帳を開始するときや、追跡できない差異を見つけたときは、調整を行う必要があります。標準的な方法は、特別な 純資産 勘定を使用することです。

; Initializing a cash account when starting your ledger
2020-01-01 * "Initial Balance" "Setting up cash account"
  Assets:Cash:Wallet           200.00 USD
  Equity:Opening-Balances     -200.00 USD

Equity:Opening-Balances 勘定は、不明または外部ソースから台帳に入る金額を保持します。

正確な差異が重要でない迅速な修正には、pad ディレクティブを使用して、後続の balance 主張に合わせて勘定科目の残高を自動的に調整し、その差額を純資産勘定に計上できます。これは注意して使用してください。より大きな問題を隠す可能性があります。明示的な調整が一般的により安全です。

パート5: 高度で現実的な取引パターン

債務の追跡: 売掛金と買掛金の管理

複式簿記は、あなたに支払われるべきお金(Assets:Receivables)や、あなたが支払うべきお金(Liabilities:Payable)の追跡に最適です。

例: あなたがグループディナーの $90 を支払い、友人のボブが彼の分の $45 をあなたに負っています。

  1. 初期費用と売掛金の記録:

    2024-08-05 * "Dinner Place" "Dinner with Bob"
      Expenses:Food:Restaurant          45.00 USD  ; Your share
      Assets:Receivables:Bob            45.00 USD  ; Bob owes you
      Assets:Bank:US:Chase:Checking    -90.00 USD
  2. ボブがあなたに返済したとき:

    2024-08-06 * "Bob" "Paid me back for dinner"
      Assets:Bank:US:Chase:Checking     45.00 USD
      Assets:Receivables:Bob           -45.00 USD

Assets:Receivables:Bob 勘定はゼロになり、帳簿は完全にバランスが取れています。

資産と費用: 自動車の購入と減価償却

車のような大きな買い物は単純な費用ではありません。それは、時間とともに価値が減少する資産(減価償却)の取得です。

  1. 購入を資産として記録:

    2023-01-15 * "Toyota Dealer" "Purchase of a new car"
      Assets:Car:ToyotaCamry         30000.00 USD
      Assets:Bank:US:Chase:Checking -30000.00 USD
  2. 年間減価償却の記録: 車が毎年 $3,000 の価値を失うと見積もったとします。年度末に、これを費用として記録します。

    2023-12-31 * "Depreciation" "Annual car value depreciation"
      Expenses:Depreciation:Car      3000.00 USD
      Assets:Car:ToyotaCamry        -3000.00 USD

このエントリの後、Assets:Car:ToyotaCamry 勘定は車の新しい価値($27,000)を正しく反映し、その年の使用コストを費用として適切に計上しました。

パート6: 詳細 - 複雑な現実世界の資産のモデリング

ケーススタディ1: 不動産の会計処理

住宅はしばしばあなたの最大の資産であり負債です。ここではそのモデリング方法を示します。

  1. 勘定科目とカスタム商品の作成:

    2022-01-01 commodity HOUSE_123MAIN
      name: "Property at 123 Main St"
    2022-01-01 open Assets:Property:Home:123Main        HOUSE_123MAIN
    2022-01-01 open Liabilities:Mortgage:HomeLoan       USD
    2022-01-01 open Expenses:Home:Interest
    2022-01-01 open Expenses:Home:PropertyTax
  2. 購入の記録: $500k の家を $100k の頭金と $400k のローンで購入したとします。

    2022-03-15 * "Settlement Company" "Purchase of 123 Main St"
      Assets:Property:Home:123Main          1 HOUSE_123MAIN {500000.00 USD}
      Assets:Bank:DownPayment          -100000.00 USD
      Liabilities:Mortgage:HomeLoan    -400000.00 USD
  3. 毎月の住宅ローン支払いの記録: 毎月の支払いは、元本(負債を減らす)と利息(費用)で構成されます。

    2022-04-01 * "Mortgage Bank" "Monthly Mortgage Payment"
      Liabilities:Mortgage:HomeLoan      800.00 USD   ; Principal
      Expenses:Home:Interest            1200.00 USD   ; Interest
      Assets:Bank:US:Chase:Checking    -2000.00 USD
  4. 価値上昇の追跡(未実現利益): 家の市場価値は変わります。公式の純資産に影響を与えずにこれを追跡するには(利益は売却するまで実現されないため)、「仮想」通貨で価格ディレクティブを使用できます。

    ; The purchase price is the real cost basis
    2022-03-15 price HOUSE_123MAIN   500000.00 USD
     
    ; An updated market estimate is an unrealized gain
    2024-01-01 price HOUSE_123MAIN   550000.00 USD.UNREALIZED

これにより、貸借対照表を不適切に膨らませることなく、Fava のチャートで推定価値を確認できます。

住宅ローン追跡、減価償却、不動産売却を含むライブの不動産サンプル台帳を探索:

新しいタブで 不動産サンプル台帳 を開く

ケーススタディ2: 譲渡制限付き株式ユニット (RSU) の追跡

RSU は一般的な株式報酬の形態です。その会計処理には、当初の付与、権利確定イベント、および税金源泉徴収の追跡が含まれます。

  1. 初期設定: 権利確定済み (HOOL) と未確定 (HOOL.UNVEST) の株式、および後続のエントリが触れるすべての勘定科目の商品を作成します。すべてを事前に宣言することが、以下の2つの取引が単独で読み込まれるための鍵です。

    2021-01-01 commodity HOOL
    2021-01-01 commodity HOOL.UNVEST
    2021-01-01 open Assets:Brokerage:Etrade:HOOL          HOOL
    2021-01-01 open Assets:Grant:Unvested                 HOOL.UNVEST
    2021-01-01 open Income:Grant:Awards                   HOOL.UNVEST
    2021-01-01 open Expenses:Grant:Vested                 HOOL.UNVEST
    2021-01-01 open Income:Salary:Hooli:RSU               USD
    2021-01-01 open Expenses:Taxes:Federal                USD
    2021-01-01 open Expenses:Taxes:State                  USD
  2. 当初付与の記録: この取引は、総付与額が未確定の資産勘定に移動することを示します。まだ課税対象ではないため、エントリ全体が追跡商品 HOOL.UNVEST で表示されます。

    2021-02-01 * "Hooli" "Initial RSU Grant"
      Assets:Grant:Unvested        1000 HOOL.UNVEST
      Income:Grant:Awards         -1000 HOOL.UNVEST
  3. 権利確定イベントの記録: これは主要な取引です。株式が権利確定すると収入を認識し、雇用主は税金を支払うために株式を源泉徴収し、あなたは残りを保持します。100 株が $150.00 で権利確定すると仮定します:

    • 総報酬: 100 × $150.00 = $15,000.00
    • 税金のために源泉徴収された株式: 40 × $150.00 = $6,000.00 (連邦 $4,800.00 + 州 $1,200.00)
    • あなたが保持する株式: 60 × $150.00 = $9,000.00 の原価基準
    • あなたへの現金: $0.00 — 源泉徴収全体が株式で支払われます

    これらの金額がエントリであり、それらは整合します: $6,000.00 の税金と $9,000.00 の留保株式は、正確に $15,000.00 の収入です。

    2022-02-01 * "Hooli" "RSU Vesting Event"
      ; Ordinary income: 100 shares * $150.00
      Income:Salary:Hooli:RSU                   -15000.00 USD
      ; Tax withheld, funded by 40 of the 100 shares (40 * $150.00 = $6,000.00)
      Expenses:Taxes:Federal                      4800.00 USD
      Expenses:Taxes:State                        1200.00 USD
      ; The 60 shares you keep, at their $150.00 vesting-day basis
      Assets:Brokerage:Etrade:HOOL                  60 HOOL {150.00 USD}
      ; Retire the 100 unvested units the grant was tracking
      Assets:Grant:Unvested                       -100 HOOL.UNVEST
      Expenses:Grant:Vested                        100 HOOL.UNVEST

この単一のバランスの取れた取引は、イベント全体をモデル化します: 未確定の付与が減少し、収入が認識され、税金が源泉徴収され、60 株の純権利確定株式が正しい原価基準で証券口座に表示され、将来のキャピタルゲイン計算に備えます。

あなた自身の台帳にコピーする価値のある2つの詳細があります。第一に、源泉徴収を勘定科目ごとに書きなさい - 包括的なバランス調整勘定に吸収させないでください - 連邦と州の posting が源泉徴収された株式の価値と合計されない場合、取引はバランスが取れず、Beancount がそれを知らせます。第二に、posting の間に空白行を入れないでください: 空白行は取引を終了させ、Beancount はそれに続く posting で構文エラーを報告します。

雇用主が権利確定価格で株式を取り戻す代わりに、公開市場で源泉徴収株式を売却する場合、その売却は別の取引です - Assets:Brokerage:Etrade:HOOL の現金に対する減少 - そして売却価格と $150.00 の基準との差額は、小さなキャピタルゲインまたは損失です。それを権利確定エントリから分離してください。

パート7: 台帳のプロジェクト管理

台帳が大きくなるにつれて、整理整頓が鍵となります。

バージョン管理 (Git) を使用したデータの保護

台帳はテキストファイルであるため、Git によるバージョン管理に最適です。これにより、すべての変更の完全な履歴が得られ、誤った削除やミスから保護されます。警告: あなたの財務データは非常に機密性が高いです。GitHub/GitLab などのサービスでプライベートリポジトリを使用するか、自分でホストしてください。

タグ (#) とリンク (^) による整理

Beancount は、勘定科目以外に取引をグループ化する2つの方法を提供します:

  • タグ (#): イベントやプロジェクトに使用します。例えば、特定の旅行に関連するすべての取引をフィルタリングできます。 2024-07-20 * "ホテル" "ウィーン" #trip-europe-2024
  • リンク (^): 現金引き出しと関連する銀行手数料など、異なる時期に発生する財務的に関連する取引を接続するために使用します。

ファイル構造化のためのスケーラブルな戦略 (include)

単一の巨大なファイルは管理が困難です。include ディレクティブを使用して、台帳を複数のファイルに分割します。 main.bean:

; Main ledger file
 
; Global options
option "title" "My Personal Ledger"
option "operating_currency" "USD"
 
; Include account declarations and other files
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"

優先順位に基づく堅牢な組織戦略:

  1. イベント別: 主要で自己完結型のイベント用に別のファイルを作成します(例: trip-europe-2024.bean)。
  2. カテゴリ/支払い先別: 公共料金や給与などの非常に定期的で反復的な取引については、それらを独自のファイルにグループ化します(例: recurring-rent.bean)。
  3. 勘定科目別: 特定の勘定科目に密接に関連する取引(利息、手数料、クレジットカード支払い)については、勘定科目固有のファイルを検討します。
  4. 日付別: その他のすべての一般的な取引については、年 (2024.bean) や月 (2024/07.bean) による単純な分割が効果的です。

パート8: 結論

Beancount は急な学習曲線を提供しますが、その努力に対して比類のないパワー、柔軟性、そして財務データへの管理を報います。複式簿記の原則と Beancount が提供する実用的なツールを受け入れることで、単純な支出追跡から、完全で正確かつ洞察に満ちた個人財務管理システムへと移行できます。あなたの台帳は、過去を理解し未来を計画するための、永続的でプライベートかつ貴重な資産になります。

Beancount.io を始めよう

Beancount.io は、テキストベースの取引記録を包括的な財務諸表(損益計算書、貸借対照表、試算表)に変換する、モダンなクラウドベースの財務管理プラットフォームです。プレーンテキストファイルの信頼性と強力な視覚化ツールを組み合わせることで、Beancount.io は投資パフォーマンスに関する貴重な洞察を得ながら、財務生活を正確に管理するのに役立ちます。

Beancount.io であなたの財務ジャーニーを開始現在のプランと価格で各ティアの内容をご覧ください。

beancount.io 台帳ダッシュボード: 純資産トレンドチャート、勘定残高、AI アシスタントバーを示す

ライブ台帳を探索 →

beancount.io 上の Apple の公開 Beancount 台帳の損益計算書。純利益チャートと収入・費用の内訳を示す

ライブ台帳を探索 →

beancount.io 上の Apple の公開 Beancount 台帳の貸借対照表。純資産チャートと資産・負債の詳細を示す

ライブ台帳を探索 →

出典: https://beancount.io/ja/docs/introduction-to-beancount