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

beancount.io ウェブインターフェースのガイド

beancount.io ウェブインターフェース (Fava を利用) は、財務データを管理、クエリ、視覚化するための包括的なツールスイートを提供します。このガイドでは、基本的なデータ入力から高度なカスタマイズやトラブルシューティングまで、その主な機能について説明します。

1. 編集とデータ入力

ビルトインエディタ

インターフェースには、Beancount ファイルを直接変更するための強力なテキストエディタが含まれています。主な機能は次のとおりです。

  • 自動補完: Tab キーを押して、勘定科目名、支払人、タグ、リンクを補完します。

  • キーボードショートカット:

    • Ctrl+Space: 自動補完をトリガーします。
    • Ctrl+/: 行をコメント化またはコメント解除します。
    • Ctrl+D: 現在の行を複製します。
    • Alt+Up/Down: 現在の行を上下に移動します。
  • スマートカーソル配置: ファイルで $insert-entry$ オプションを使用すると、エディタを開いたときに、特定の勘定科目の最新のエントリにカーソルが自動的に配置されます。

    option "insert-entry" "Expenses:Food:Dining-Out"

トランザクションの追加

+ ボタンをクリック (または n キーを押す) して、トランザクションフォームを開きます。

  • クイックエントリ: フォームは最近の勘定科目を提案し、支払人の一般的な金額を記憶します。

  • インラインタグ/リンク: ナレーションフィールドにタグとリンクを直接追加します (例: ランチ #food ^receipt-001)。

  • トランザクションテンプレート: #template タグを使用して、将来の日付のエントリを作成します。次に、フォームを使用してそれらを見つけて入力できます。

    2099-01-01 * "Monthly Rent Payment" #template
    Expenses:Housing:Rent 1500.00 USD
    Assets:Checking -1500.00 USD

2. ドキュメント管理

領収書、明細書、その他のファイルをトランザクションに効率的にリンクします。

  • ドラッグアンドドロップによるアップロード:

    • 勘定科目名 にファイルをドロップすると、その勘定科目のフォルダに保存されます。
    • ジャーナルの トランザクション にファイルをドロップすると、直接リンクされます。
  • ドキュメントストレージ: ファイルは、Beancount ファイルの $option "documents" "path/to/your/documents"$ ディレクティブで指定されたフォルダに保存されます。

  • 自動リンク: Beancount は、ドキュメントを自動的に検出してトランザクションにリンクできます。これを有効にするには、次のプラグインを使用します。

    plugin "fava.plugins.link_documents"
    plugin "fava.plugins.tag_discovered_documents"

3. BQL によるクエリと分析

クエリ ページでは、コマンドライン bean-query ツールと同様に、Beancount Query Language (BQL) クエリを実行できます。

  • 視覚化: クエリ結果は自動的にテーブルとしてレンダリングされます。クエリが 2 つの列 (日付/文字列と数値など) を返す場合、インターフェースは線、棒、またはツリーマップチャートも生成します。
  • エクスポート: クエリ結果を CSV ファイルとしてダウンロードします。

実用的なクエリの例

  • 月次費用サマリー:

    SELECT account, SUM(position) AS total
    FROM postings
    WHERE account ~ '^Expenses' AND date >= 2024-01-01 AND date < 2024-02-01
    GROUP BY account
    ORDER BY total DESC;
  • 月ごとの収入と支出:

    SELECT YEAR(date) as year, MONTH(date) as month,
    SUM(IIF(account ~ '^Income', -position, 0)) as income,
    SUM(IIF(account ~ '^Expenses', position, 0)) as expenses
    FROM postings
    GROUP BY year, month
    ORDER BY year, month;

4. カスタマイズとワークフロー

表示のカスタマイズ

Beancount ファイルで次のオプションを使用して、インターフェースの表示を調整します。

  • 勘定科目の表示/非表示: サイドバーに表示される勘定科目を制御します。

    option "show-closed-accounts" "false"
    option "show-accounts-with-zero-balance" "false"
    option "collapse-pattern" "Assets:Investments:.*"
  • 最新の状態のインジケーター: 勘定科目の横にある色付きのドットは、ステータスを示します (残高が通過した場合は緑、失敗した場合は赤、最近の残高チェックがない場合は黄色)。勘定科目の open ディレクティブでこれを有効にします。

    2020-01-01 open Assets:Checking   fava-uptodate-indication: "TRUE"

サイドバーリンク

頻繁に使用するレポートまたはフィルタリングされたビューへのカスタムリンクをサイドバーに追加します。

2024-01-01 custom "fava-sidebar-link" "This Month's Expenses" "/income_statement/?time=month"
2024-01-01 custom "fava-sidebar-link" "All Documents" "/journal/?show=document"

一般的な設定

  • 複数のファイル: 複数の .beancount ファイルをロードする場合、左上のドロップダウンを使用してファイルを切り替えることができます。
  • 外部エディタ: $use-external-editor$ オプションと URL ハンドラを使用して、ローカルエディタでファイルを直接開くように UI を設定します。
  • 言語: $language$ オプションを使用してインターフェースの言語を設定するか、ブラウザから自動検出させます。
  • エクスポート: エクスポート ボタンを使用して、フィルタリングされたジャーナルビューを Beancount 形式でエクスポートします。

5. パフォーマンスとトラブルシューティング

大きなファイルの処理

数千のトランザクションを含む台帳の場合、次の方法でパフォーマンスを向上させます。

  • インクルードの使用: 台帳を年または月ごとに複数のファイルに分割し、include ディレクティブを使用します。

    include "accounts.beancount"
    include "transactions/2023.beancount"
    include "transactions/2024.beancount"
  • フィルタリング: 時間およびフィルタオプションを使用して、一度に表示されるデータの量を制限します。

一般的な問題と修正

  • インターフェースがロードされない:

    1. bean-check コマンドラインツールを使用して、ファイルの構文エラーを確認します。
    2. Web ページの下部にあるエラーメッセージを探します。
    3. ブラウザのキャッシュをクリアします。
  • パフォーマンスが遅い:

    1. UI でアクティブな日付範囲を短縮します。
    2. 複雑な BQL クエリを簡略化します。
  • 設定ミス: オプション名とカスタムディレクティブタイプが引用符で囲まれていることを確認します。

    ; 正しい
    option "documents" "/path/to/docs"
    custom "fava-sidebar-link" "Label" "URL"

    ; 間違い (エラーが発生します)
    option documents "/path/to/docs"
    custom fava-sidebar-link "Label" "URL"