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

コミュニティショーケース : 実世界の Beancount セットアップ

実世界の Beancount セットアップ

イントロダクション

community-showcase

Beancount は汎用性の高いプレーンテキスト会計システムであり、ユーザーはそれをさまざまな実世界のニーズに合わせて形成してきました。このコミュニティショーケースでは、フリーランサーや中小企業の経営者から、個人のファイナンス愛好家まで、さまざまな人々が Beancount の会計ワークフローをどのように構築し、使用しているかを示す匿名化された例を紹介します。これらの例では、メタデータによるトランザクションのタグ付け、カスタムスクリプトによる台帳更新の自動化、複数通貨の処理、予算編成と予測、およびプラグインまたは統合(Fava Webインターフェイスなど)による Beancount の拡張などの創造的なプラクティスに焦点を当てています。目標は、Beancount の柔軟なシステムで何が可能かについて、会計士、開発者、および金融に精通したユーザーにインスピレーションを与え、情報を提供することです。

Fava インターフェイスの例 : 多くの Beancount ユーザーは、財務を可視化するために、オープンソースの Web ダッシュボードである Fava を利用しています。Fava は、Beancount の台帳をインタラクティブなレポートやチャートに変換できます。たとえば、上記のスクリーンショットは、カテゴリ別の収入と支出の内訳を示す 損益計算書 のツリーマップを示しており、お金がどこから来てどこに行くのかを簡単に把握できます。ユーザーは、時間、勘定科目、またはタグでこのビューをフィルタリングして、特定のプロジェクトまたは期間を掘り下げることができます。このような視覚化により、プレーンテキストデータへのアクセスが容易になり、ユーザーは傾向と異常を一目で把握できます。

各 Beancount セットアップは一意ですが、共通のテーマが浮かび上がってきます。以下では、フリーランサー、中小企業の経営者、個人のファイナンスパワーユーザーの 3 つのシナリオを掘り下げて、彼らがどのように勘定科目を整理し、Beancount の機能を活用しているかを見ていきます。個人的な詳細はすべて削除または一般化されており、テクニックと構成のみに焦点を当てています。

フリーランサー : プロジェクトのタグ付けと請求書追跡

最初の例は、フリーランスのコンサルタントで、Beancount をビジネスファイナンスのバックボーンとして使用しています。このフリーランサーの台帳は、プロジェクトごとの収入と支出を追跡し、複数のクライアントの請求書を管理するように構成されています。彼らは、クライアントごとに資産の売掛金 (A/R) のための専用の勘定科目を設定しており、誰が何をいくら借りているかを区別するのに役立っています。プロジェクトを完了してクライアントに請求書を発行すると、クライアントの A/R 勘定科目を借方記入し、収入勘定科目を貸方記入するトランザクションを記録します。たとえば、新しい請求書は次のように記録されます。

2025-08-01 * "プロジェクト X 完了" ^INV-0001
Assets:AccountsReceivable:ClientA 5,000 USD
Income:Consulting -5,000 USD

ここで ^INV-0001 の表記は、このトランザクションに請求書番号でタグを付けるために使用される リンク (組み込みの Beancount メタデータ機能)です。クライアントがその請求書の一部または全部を支払うと、支払いトランザクションには同じ ^INV-0001 リンクが含まれ、2 つのエントリが結び付けられます。このリンクにより、支払いを特定の請求書に割り当て、未払い残高を確認することが容易になります。あるコミュニティメンバーが説明したように、このようなタグまたはリンクを使用して、請求書エントリと支払いエントリの両方で、一部支払い(たとえば、30 ドルの請求書に対する 20 ドルの支払い)を示すことができます。その請求書リンクについて台帳をクエリすることにより、フリーランサーは請求書の支払いが完了した金額と未払い残高を即座に確認できます。

リンクに加えて、フリーランサーは分類に タグ を多用しています。Beancount のタグは、後でフィルタリングするためにトランザクションをマークできる # で始まるラベルです。このユーザーは、クライアントに請求可能な各経費にプロジェクトのコード(#ProjectX など)でタグを付け、払い戻し可能な経費に #Reimbursable でタグを付けます。たとえば、クライアントプロジェクトの航空券を購入する場合、経費エントリには #ProjectX #Reimbursable が含まれる場合があります。このプラクティスにより、タグでフィルタリングして、プロジェクトまたはクライアントごとにレポートを生成できます。プロジェクトの後、フリーランサーはクエリを実行して、そのプロジェクトのすべての #Reimbursable 経費を一覧表示し、それぞれについてクライアントに請求することを確認できます。ある Beancount ユーザーは、出張経費にタグを付けると、払い戻しされなかった経費を把握するのに役立ったと指摘しました。理想的には、クライアントからのすべての払い戻しを受け取ると、出張の経費は 0 ドルになります。これは、タグ付けが Beancount のクエリ機能と組み合わさることで、請求可能な経費を管理するフリーランサーに特別な監視レイヤーを提供する方法を示しています。

未払い残高の状態を管理するために、フリーランサーは 保留中の売掛金 の特別な規則を使用しています。まだ全額支払われていない請求書トランザクションには、#UNRESOLVED タグを適用します。Beancount (および Fava) はこのタグを強制しませんが、決済を待機しているトランザクションをマークするコミュニティによって確立されたパターンです。たとえば、クライアント A が 5,000 ドル全額を支払うまで、上記の請求書トランザクションには #UNRESOLVED が含まれます。そのタグでフィルタリングすることにより、フリーランサーはいつでもすべての未払い請求書を一覧表示できます。支払いを受領して適用すると (対応する A/R トランザクションが入力されます)、#UNRESOLVED タグを削除または無視すると、そのクライアントの売掛金勘定科目の残高はゼロになります。このシステムにより、請求書が「見過ごされる」ことがなくなります。これは基本的に、プレーンテキストで実行されるエージングレポートです。A/R がゼロ以外のままで、未解決のタグが付いている場合は、注意が必要です。

フリーランサーは複数の支払い方法や複数の通貨を扱うことが多いため、Beancount のセットアップはそれらをシームレスに対応しています。この例では、コンサルタントは一部のクライアントに USD で請求し、他のクライアントに EUR で請求する場合があります。複数通貨の処理 は Beancount では簡単です。どの勘定科目も複数のコモディティ (通貨はコモディティとして扱われます) を保持できます。フリーランサーは、通貨ごとに個別の補助勘定科目を保持するか (たとえば、Assets:AccountsReceivable:ClientA:EUR...:USD)、または同じ勘定科目で適切な通貨でトランザクションを転記することができます。Beancount は、通貨ごとの残高を自動的に追跡します。あるユーザーは、「Beancount は、USD であろうとティッカーシンボルであろうと、任意の通貨で数量を追跡できるのが素晴らしい」と強調しました。フリーランサーは、レポート用に通貨を換算する必要がある場合は常に、price ディレクティブで為替レートを記録することにより、これを利用しています。定期的な為替レートまたは市場価格を入力すると、自国通貨に換算された収入レポートを生成できます。

最後に、このフリーランサーは Beancount の台帳を実用的なツールと統合して、ワークフローを効率化しています。たとえば、各請求書の PDF コピーを ドキュメントメタデータ を使用して台帳に添付します。一般的な請求書支払いエントリは次のようになります。

2025-08-30 * "ClientA" "INV-0001 の支払い" ^INV-0001
Assets:Bank:Checking 5,000 USD
Assets:AccountsReceivable:ClientA -5,000 USD
document: "Invoices/ClientA/INV-0001.pdf"

Beancount の document ディレクティブまたはメタデータを使用すると、エントリにファイルを関連付けることができ、Fava はこれらの添付ファイルのハイパーリンクを表示します。これは、フリーランサー (またはその会計士) が台帳レポートから直接クリックして元の請求書 PDF を表示し、バックアップドキュメントへの簡単なアクセスを保証できることを意味します。フリーランサーは、Fava のレポートを使用してビジネスを監視します。損益計算書または貸借対照表をクライアントでフィルタリングすることにより、クライアントごとの収益性を確認し、すべてのプロジェクトが支払われていることを確認できます。要約すると、このフリーランサーの Beancount システムは、プロジェクトベースの会計を管理するためのタグ付けとリンクの多用を示しています。プレーンテキスト台帳を堅牢なフリーランス会計ツールに変え、プロジェクトの経費、複数通貨の収入、請求書のステータスを明確に可視化します。

フリーランサーのセットアップの主要なプラクティス : プロジェクトまたは目的ごとにトランザクションをグループ化するためにタグを使用する、請求書と支払いを一意の ID でリンクする、未払いの売掛金を #UNRESOLVED タグでマークする、参照用に請求書ドキュメントを台帳エントリに添付する、および Beancount の複数通貨サポートを活用して、手間をかけずに海外のクライアントに請求する。これらはすべて、プレーンテキストエントリといくつかのヘルパーツールで実現され、Beancount のメタデータの力を示しています。

中小企業 : 自動化と複数通貨会計

次に、中小企業の経営者(特にスタートアップの創業者)で、会社の帳簿を実行するために Beancount を採用した人を見ていきます。中小企業はフリーランサーと同様のニーズ (請求書、経費、複数通貨) を持っていますが、多くの場合、規模が大きく、自動化、一貫性、コラボレーションがより重視されます。この場合、創業者は技術に精通しており、手作業による簿記を最小限に抑えるために、高度に自動化された Beancount ワークフローを構築しました。QuickBooks などの従来の会計ソフトウェアを評価した後、データの完全な制御を維持するために Beancount のプレーンテキストアプローチを選択しました。数年にわたり、簿記プロセスの 95% を自動化するためのカスタムツールを反復的に開発しました。

自動インポートと調整 : 最初の課題の 1 つは、さまざまなソース (銀行口座、クレジットカード、決済処理業者) からのトランザクションを台帳にインポートすることでした。各トランザクションを入力する代わりに、このユーザーは インポートスクリプト を設定して、データを取得し、Beancount 形式に変換しました。各金融機関の CSV または API 形式用にカスタム Python インポーターを作成し、1 つのコマンドで新しいトランザクションをプルして台帳に追加できるようにしました。たとえば、Beancount の bean-extract フレームワークを使用すると、創業者はスクリプトを実行して、新しいステートメントのダウンロードフォルダをスキャンし、それらを Beancount エントリとして出力できます。別のユーザーである Rhyd Lewis は、各銀行に個別のインポーター スクリプトがあり、シンプルなコマンド (Justfile を使用) でそれらを呼び出して台帳を更新できる同様のセットアップについて説明しました。私たちの中小企業の経営者も同様のことを行っています。すべての銀行取引、クレジットカードの利用、さらには PayPal または Stripe のトランザクションまでが自動的に取得され、適切な勘定科目で分類されて帳簿に追加されます。

これらのエントリが自動的に追加された場合でもデータの整合性を確保するために、Beancount の検証ツールとプラグイン も使用します。たとえば、同じトランザクションを誤って 2 回インポートするのを防ぐために、beancount.plugins.noduplicates プラグインが有効になっており、beancount.plugins.nounused はエントリのない勘定科目にフラグを立てます (古い勘定科目をクリーンアップするのに役立ちます)。創業者はまた、フォーマッタ (bean-format やコミュニティツール beancount-black など) を使用して、台帳ファイルのスタイルを一貫して維持します。多くの自動編集を行う場合、統一されたスタイルを使用すると、差分と監査が容易になるため、これは重要です。実際、創業者は台帳を Git リポジトリに保持し、台帳の更新をコードの変更のように扱います。インポートされた新しいトランザクションの各バッチは Git コミットになり、差分を確認して何が変更されたかを確認できます。あるスクリーンショットでは、「Costco」のクレジットカードトランザクションが、手動操作なしで台帳内で保留状態からクリア状態に移行する Git 履歴を示しています。バージョン管理は監査証跡を提供します。トランザクションが追加または変更された正確な時期を確認し、何かが誤ってインポートされた場合は変更を元に戻すこともできます。これは、ソフトウェア開発のベストプラクティス (ソース管理など) を会計記録に取り入れた優れた例です。

複数通貨と国際取引 : 中小企業は、多くの場合、複数の通貨で取引を行います。たとえば、スタートアップは USD で経費が発生するだけでなく、EUR で支払いを受けたり、GBP の銀行口座を保持したりする場合があります。私たちのショーケース企業は、Beancount の複数通貨機能を使用して、これらすべてを 1 つの台帳に統合します。一般的なアプローチの 1 つとして、通貨ごとに個別の勘定科目 (たとえば、Assets:Bank:Checking:USDAssets:Bank:Checking:EUR) を開設しました。ただし、異なる通貨が勘定科目を共有している場合でも、Beancount は各通貨の残高を個別に追跡し、トランザクションが通貨ごとにバランスが取れていることを要求します。創業者は、定期的に評価レポートを実行して、会社の総残高を基本通貨に換算して確認します。Beancount は価格検索をサポートしているため、bean-price ツールまたはプラグインを使用して、為替レート (および投資の株価) の毎日の価格フィードを設定しました。その結果、いつでも最新のレートで換算された EUR 口座を含む USD で貸借対照表を生成できます。コミュニティメンバーは、台帳形式の会計で複数の通貨を処理するのは簡単だと指摘しています。必要な通貨でトランザクションを追加し、必要に応じて為替レートを記録するだけです。たとえば、あるユーザーは、Beancount で通貨換算を管理する方法として、USD から EUR、CAD への中間勘定科目による換算の例を共有しました。今回の場合、中小企業は必ずしもトランザクションで通貨を換算するわけではありません (元の通貨で保持します) が、レポートを使用して統合します。この柔軟性は、スタートアップがグローバルに拡大するにつれて非常に重要になっています。

カスタムスクリプトと拡張機能 : 創業者が求めるすべてのものがすぐに利用できるわけではなかったので、カスタムプラグインで Beancount を拡張しました。時間をかけて、パーサーライブラリ、フォーマットツール、およびルールベースのトランザクションインポーターを作成し、これらの多くをオープンソースパッケージとしてリリースしました。たとえば、YAML 構成を使用してトランザクションを自動的に分類する ルールベースのインポートエンジン を構築しました。この構成のスニペットは、特定の支払人または説明 (「Comcast」や「PG&E」など) が特定の経費勘定科目と説明にどのようにマッピングされるかを示しており、銀行フィードにそれらが表示されると、手動で編集することなく、正しい Beancount エントリが生成されます。これは基本的に、簿記ルール (公共料金、サブスクリプションなど) をその場で適用するカスタム自動化です。別のプラグインは、台帳が常にバランスが取れており、フォーマットされていることを保証します。これらのツールはすべて、新しいデータが取り込まれるたびに、創業者のワークフローの一部として実行されます。その結果、最小限の介入で「自動的に更新される」台帳が作成され、自動化に夢中な開発者として「純粋な喜び」をもたらすと創業者は言います。

セキュリティとアクセシビリティも懸念事項でした。創業者は、財務チーム (および監督者として機能する配偶者さえも) が帳簿を簡単に閲覧できるようにしたいと考えていました。このために、クラウドに Fava のプライベートデプロイメントを設定しました。新しい台帳コミットをプライベート Git リポジトリにプッシュするたびに、CI パイプライン (GitHub Actions と AWS Elastic Beanstalk を使用) は更新された Fava インスタンスをデプロイします。Web インターフェイスはパスワードで保護されているため (基本的な認証を備えた Nginx プロキシを使用)、承認された人だけが表示できます。これにより、最新の財務諸表は、ローカルに何もインストールしなくても、ブラウザダッシュボードから常に利用できます。以下のアーキテクチャ図は、このセットアップを示しています。Beancount ファイルと必要な構成は、Fava とともに Docker イメージにバンドルされ、AWS で提供され、Cloudflare がセキュリティのために前面に配置されます。

クラウドでの Beancount の自動化 : この図は、Beancount 台帳 + Fava のデプロイメントパイプラインを示しています。ユーザーは台帳ファイルをローカルで更新し、Git にプッシュします。Docker コンテナ (認証用の Fava と Nginx を含む) が構築され、AWS Beanstalk サーバーにデプロイされ、Cloudflare がプロキシとして機能します。その結果、中小企業の財務データにどこからでも (所有者またはチームによって) リアルタイムでアクセスできる安全な Web ポータル が実現します。この高度なセットアップは、中小企業が Beancount を最新のクラウドツールと統合して、データ所有権を放棄することなく利便性を実現する方法を示しています。

日常的な使用では、中小企業の経営者はデータ入力ではなく 例外処理 に重点を置いています。毎月、自動的にインポートされたトランザクション (Git の差分または Fava のジャーナルビューを使用) を簡単に確認して、未分類または誤ったエントリを把握します。また、Beancount の残高アサーション を使用して勘定科目を調整します。たとえば、6 月のすべてのトランザクションを入力した後、銀行口座の期末残高がステートメントと一致することを確認するために残高チェックを追加する場合があります。そうでない場合、Beancount はエラーを発生させ、何か不足しているか、誤って入力されていることを示します。これにより、帳簿の正確性が維持されます。

中小企業のセットアップの主要なプラクティス : カスタムインポーターとスクリプトによる高度な自動化 (台帳を「95% 自動」にする)、監査証跡とコラボレーションのためのバージョン管理の使用、評価のための価格フィードによる複数通貨会計、および財務レポートへの簡単で共有可能なアクセスのための Fava のデプロイメント。中小企業のシナリオは、エンジニアリングの努力によって Beancount がどこまで進むことができるかを示しています。透明性と柔軟性を維持しながら、会計をほぼ自動化されたパイプラインに変えています。プログラマーでなくても、コミュニティプラグイン (フォーマット、重複検出など) を使用し、頻繁なレビューとバックアップを推奨するプレーンテキストワークフローを採用することで、これらの利点の多くを実現できます。

個人のファイナンス愛好家 : 予算編成とカスタム分析

最後のショーケースは、個人のファイナンス愛好家で、Beancount を使用して家計と投資を非常に詳細に管理している人です。このユーザーは、会計士の厳密さとデータアナリストの好奇心を持って個人のファイナンスを扱います。その結果、すべてのペニーを追跡するだけでなく、予算編成、予測、および分析実験のベースとしても機能する Beancount 台帳が作成されます。

個人の台帳の整理 : 多くの個人は、すべての勘定科目に 1 つの Beancount ファイルから始めますが、この愛好家も例外ではありません。すべての勘定科目 (銀行口座、クレジットカード、ローン、投資ポートフォリオなど) とトランザクションを含む 1 つのマスター台帳 (たとえば、main.beancount) を保持します。時間をかけて、セクションを分割することでいくつかの構造を導入しました。たとえば、勘定科目の開設/閉鎖用のファイルと、年間のトランザクション用の別のファイルがあります。これらはメインファイルに含まれています。このモジュール式の編成により、論理的には 1 つの台帳でありながら、長年のデータをナビゲートしやすくなります (古い年を別のファイルにアーカイブできます)。コミュニティフォーラムの別の個人ユーザーは、カテゴリ別に他のファイルを含む同様のレイアウトについて説明しました (たとえば、Income.beancountExpenses.beancountInvestments.beancount)。私たちの愛好家は、当面の間、デバイス間で同期された 1 つのファイルとしてそれを単純に保ちます。

同期について言えば、個人のファイナンスであるため、このユーザーはどこにいてもトランザクションをキャプチャしたいと考えています。Beancount Mobile と呼ばれるモバイルアプリを使用して、外出先ですばやくエントリを追加します (たとえば、店舗で現金支出を記録します)。台帳ファイルはクラウド同期 (この場合は Syncthing) を介して共有されるため、携帯電話、ラップトップ、VPS (サーバー) のすべてに最新のコピーがあります。コンピューターでは、構文強調表示による快適な編集のために、beancount-mode を備えた Emacs を使用することを好みます。このセットアップにより、机にいても外出先でも、トランザクションをすぐに記録し、何かを忘れることを回避できます。これは、個人の便宜のためにテクノロジー ツールを適合させる優れた例であり、効果的に商用予算編成アプリのセルフホスト代替を構築します。

きめ細かい追跡のためのタグ付けとメタデータ : このユーザーは、勘定科目体系を超えて、データに 2 次元を追加するためにタグを利用しています。通常の予算編成カテゴリでは、勘定科目で十分です (彼らは Expenses:GroceriesExpenses:Rent などの勘定科目を持っています) が、イベント目標 などのクロス カッティングのテーマにはタグを使用します。たとえば、家の改築 プロジェクトに関連するすべてのトランザクションに #HomeReno でタグを付けます。ハードウェアストアで木材を購入する場合 (経費) であっても、メーカーからリベートを受け取る場合 (収入) であっても同様です。このようにして、これらの経費が異なる勘定科目にサイロ化されることなく、プロジェクトの総費用のレポートを簡単に生成できます。ある Reddit ユーザーは、家のプロジェクトの #garage-improvement#lighting-improvement などの経費にタグを付けることで、このアプローチを実証し、Beancount のクエリを使用してそれらをフィルタリングして合計することを簡単にしました。私たちの愛好家は、休暇 (#ItalyTrip2025)、主要な購入、および 1 回限りのイベントについても同様のことを行います。

メタデータ (トランザクションのキーと値のペア) も、いくつかの特定の目的に使用されます。たとえば、大きな経費が発生した場所を追跡するために、location: ... メタデータを追加したり、支払人および説明以外に追加のコンテキストを提供する note: ... を追加したりします。いくつかのケースでは、予測 に役立つカスタムメタデータフィールドも作成しました。1 つの例は、特定の定期的な経費に budget: Xfrequency: monthly を追加することです。これは、Beancount メーリングリストでの議論に触発されたアイデアで、ユーザーは各経費のメタデータに予算予測を保存していました。これらのメタデータフィールドは Beancount のコアには影響しませんが、熱狂者はそれらを読み取り、実際の支出を予測された予算と比較する小さな Python スクリプトを作成しました。これは、以下で説明する Fava の組み込み予算を使用する代わりに、メタデータをユーザーの意志に合わせて調整する方法を示しています。Beancount の作成者が指摘したように、メタデータは「あなた [がカスタムスクリプトで使用するためだけ] に存在します。Beancount はそれを解析しますが、それ自体では無視します」。つまり、このユーザーは、個人の分析を支援するために、追加情報で台帳を拡張することを恐れません。

Beancount を使用した予算編成 : このユーザーの主な目標の 1 つは、毎月の予算を守ることです。以前は予算編成アプリ (YNAB) を使用しており、その封筒予算編成の概念の一部を再現したいと考えていました。Beancount で予算編成を行うにはいくつかの方法がありますが、最も簡単な方法は Fava の 予算ディレクティブ を使用することです。私たちの愛好家は、次のように台帳に budget エントリを追加します。

2025-01-01 custom "budget" Expenses:Groceries   "monthly" 500 USD
2025-01-01 custom "budget" Expenses:DiningOut "monthly" 200 USD
2025-01-01 custom "budget" Expenses:Travel "yearly" 3000 USD

各行は、期間にわたって勘定科目 (カテゴリ) の予算を設定します。次に、Fava は Web インターフェイスに予算対実際のバーを表示し、たとえば、今月は食料品に 500 の予算のうち 480 USD を費やし、外食に 220 (予算を超過) を費やしたことを見ることができます。熱狂者は 損益計算書 レポートと 経費 レポートを定期的に確認します。これらには、月間の合計と予算目標の両方が表示されます。Fava は、毎日の/毎週の予算を適切な期間にまとめています。これに Fava UI を使用することにより、ユーザーは予算編成に別のスプレッドシートを必要としません。すべて統合されています。(また、フォーラムで提案されているように、各月の初めにダミー勘定科目に資金を移動して、より自動化された「封筒」システムを試してみましたが、カスタム予算ディレクティブの方が管理が簡単であることがわかりました。)

予算を超えた予測については、今後の請求書に注意を払っています。一部のコミュニティメンバーは、サブスクリプションまたはローン償却スケジュールのために将来のトランザクションを生成するプラグインを構築しましたが、このユーザーはよりシンプルなアプローチを選択しました。既知のアイテム (来月の家賃や今後の年間の保険料など) の将来の日付付きトランザクションを含む台帳の別のセクションを保持しています。これらは台帳に残りますが、今日の残高には影響しません。日付が到来してトランザクションが最新になると、リマインダーとして機能します (また、実際の料金と一致するように必要に応じて金額を調整します)。これは少しハックですが、複雑なツールを使用せずにキャッシュフローを予測するのに役立ちます。

投資追跡と複数コモディティ会計 : 金融愛好家として、このユーザーは Beancount を使用して、現金勘定科目とともに投資勘定科目 (株式、投資信託、暗号通貨) を統合します。彼らは、保有している証券会社口座 (たとえば、AAPL、GOOG などの株式) をコモディティとして Beancount に記録しています。たとえば、Apple の株式を 10 株購入することは、証券会社の現金を貸方記入し、10 AAPL をコモディティ金額として資産勘定科目を借方記入するエントリになります。Beancount の任意のコモディティを処理する機能は、ここで非常に役立ちます。通貨と株式を自由に混在させることができます。あるユーザーが指摘したように、「Beancount は、USD であろうとティッカーシンボルであろうと、任意の通貨で数量を追跡できる」ため、多くの場合株式ポジションをうまくサポートしていない個人ファイナンスアプリよりも大幅に改善されました。私たちの熱狂者は、毎晩の cron ジョブで bean-price ツールを使用して、すべての証券と外貨の最新の市場価格を取得します。毎晩午前 4 時に、スクリプトが bean-price を実行し、(Yahoo Finance または別のソースから) 価格をプルし、その日の価格レコードを台帳に追加します。このようにして、次に Fava を開いたり、レポートを実行したりすると、最新のポートフォリオの価値や、時間の経過に伴う投資パフォーマンスを確認できます。銀行口座、退職基金、暗号通貨ウォレット全体の純資産は、1 つの統一されたビューで利用できます。これは、データドリブンな投資家にとって夢です。全体像を見るために複数のプラットフォームにログインする必要はありません。彼らは基本的に、Beancount を搭載した個人の財務ダッシュボードを構築しました。

分析と統合 : この個人のファイナンスパワーユーザーを真に際立たせているのは、Beancount にデータを取り込んだ後のデータの 分析 方法です。すべてのトランザクションが SQLite データベースにあるため (Beancount は SQL のような組み込みのクエリ言語でデータをクエリできます)、ユーザーはカスタム分析を実行できます。彼らは、「食料品支出の 3 か月移動平均は何ですか?」や「今年の公共料金支出は昨年の支出とどのように比較されますか?」などの質問に答える Python スクリプトを作成しました。1 つのスクリプトは、特定のタグの台帳をクエリし、さらなる数値処理のために結果を Pandas データフレームに出力します。台帳はプレーンテキストであるため、(Fava が提供するもの以外に) さまざまな視覚化を試すために Jupyter ノートブックも使用しています。たとえば、Python で Beancount データを集計することにより、Matplotlib を使用して月間貯蓄率のカスタム棒グラフを作成しました。このようなアドホック分析は、Beancount がデータへのアクセスを可能にし、機械で読み取り可能にしている場合にのみ可能です。あるユーザーが述べたように、データの抽出は簡単 です。「クエリ言語を使用して Beancount からデータを抽出する Python スクリプトが 1 つあり、次に pandas データフレームを使用してレポートにデータを準備します」。私たちの熱狂者は、年間の財務レビューのために実行するこのような小さなスクリプトのリポジトリを持っています。

もちろん、すべてにコーディングが必要なわけではありません。ほとんどの場合、Fava の組み込みチャートに依存しています。Fava は、純資産の折れ線グラフ、収入対支出のトレンド、さらには (前に示したように) クリックするだけで利用できるツリーマップの内訳を提供します。ユーザーは、2018 年以降の財務の 全履歴 をクエリおよび監査できることを高く評価しています。たとえば、「過去 5 年間で車の修理にどれだけ費やしたのだろうか」と思っている場合は、領収書を掘り下げる代わりに、Fava で簡単なクエリを作成するか、フィルタリングして答えを得ることができます。このエンパワーメントこそが、まさに彼らを Beancount に惹きつけたものです。データの完全な所有権と分析における無限の柔軟性です。おまけとして、プレーンテキスト台帳は将来性があります。バージョン管理、移行、または必要に応じて他のツールで解析することもできます。クローズドソースアプリとは異なり、財務履歴へのアクセスを失うリスクはありません。

個人のセットアップの主要なプラクティス : 便利なデータ入力のためにモバイルツールとデスクトップツールを利用する、ライフイベントとカテゴリ間のグループを追跡するためにタグとカスタムメタデータを使用する、継続的な支出目標のために Fava の budget ディレクティブを通じて予算を実装する、同じ台帳で投資と複数の通貨を追跡する (自動化された価格更新を使用)、および台帳データを直接クエリすることにより、カスタム分析を実行する。このケースは、少しセットアップするだけで、個人のファイナンス愛好家でも、通常は企業向けに予約されているレベルの洞察と制御を実現できることを示しています。すべてをテクノロジーに精通したユーザーにとって楽しく魅力的なものに保ちながら。

結論

これらのコミュニティの例全体で、Beancount の柔軟性により、高度にパーソナライズされた会計システムが可能になる という明確なテーマがあります。コミュニティのパワーユーザーは、単純なテキストファイルを利用して、機能の面で商用ソフトウェアに匹敵するソリューションを構築しましたが、それらはワークフローに合わせてカスタマイズされています。フリーランサーは、タグとエントリをリンクして、クライアントのプロジェクトと請求書を簡単に管理します。中小企業の経営者は、退屈な簿記作業をスクリプト化し、常に最新の財務状況を得るために Beancount を最新のインフラストラクチャと統合します。個人のファイナンス愛好家は、予算編成、投資、および意思決定のための単一の真実のソースとして台帳を使用し、タグやツールで拡張して、自分のお金に関する事実上すべての質問に答えます。これらはすべて、プレーンテキスト会計のコアな利点 (透明性、監査可能性、およびデータに対する制御) を維持しながら実現されます。

Beancount のコミュニティは、豊富なプラグインと統合のエコシステムも生み出しています。入力用のエディターモードとモバイルアプリから、視覚化用の Fava Web インターフェイス、GitHub 上の無数のインポーターとユーティリティまで、ほぼすべてのニーズに対応できるリソースがあります。ユーザーはフォーラムやブログで自分の台帳のセットアップを頻繁に共有するため、他のユーザーはベストプラクティスを学び、採用できます。重要なことに、機密情報は、人間が読める形式のため、非公開に保つことができます (または共有するために簡単に修正できます)。これは、このショーケースで行ったとおりです。上記の例は、フリーランスの開発者、スタートアップの創業者、または個人のファイナンスオタクのいずれであっても、Beancount を自分の意志に合わせて調整できることを示しています。タグ付けとメタデータを創造的に使用し、可能な限り自動化し、複数通貨のトランザクションを処理し、予算を立て