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

UI機能

編集、クエリ、ドキュメントのアップロード、およびBeanCountワークフローのカスタマイズのためのbeancount.ioウェブインターフェースの主な機能を探索します。

エディタ、トランザクションフォーム、およびクエリレポートを使用して元帳を操作します。以下の実行可能なレシピは、標準のFava 1.30.16とBeancount 3.2.3およびbeanquery 0.2.0を対象としています。固定されたローカル設定に従ってください。

Beancount.ioは別のダッシュボードを使用します。その製品ソースは、レジャールート、クエリ、ドキュメント、および設定を確認し、さらにいくつかのFava表示オプションのコンシューマも確認します。これは、標準のFavaのキーボードショートカット、挿入ルール、プラグイン実行、またはURLパスがホストされた互換性を持つことを意味するものではありません。以下の画像は、ホストされたダッシュボードを示しており、標準のUIではありません。

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

ライブ元帳を探索する →

1. 編集とデータ入力

組み込みエディタ

標準のFavaのエディタは、勘定科目支払先、およびタグの補完を提供します。default-fileを使用して、その初期ソースファイルを選択します。insert-entryも、そのファイル内の最新の挿入マーカーにカーソルを配置します。これはコアのBeancountオプションではありません。

2000-01-01 custom "fava-option" "default-file"
2024-01-01 custom "fava-option" "insert-entry" "^Expenses:Food$"

このフラグメントは、その包含ファイルを選択します。2024年1月1日以降でExpenses:Foodに一致する新しいエントリは、後の適格なルールまたは後の転記の勘定科目が優先されない限り、マーカーの前に挿入されます。完全なマルチファイル挿入例を参照してください。

トランザクションの追加

標準のFavaでは、+をクリックするかnを押すと、トランザクションフォームが開きます。説明フィールドには、スペース区切りのタグとリンク(例:Lunch #food ^receipt-001)を受け付けます。勘定科目名には、すでにopenディレクティブが存在している必要があります。

この完全な元帳をui-demo.beancountとして保存し、以下のレポートを試してください。正の金額の費用は借方であり、負の金額の現金転記はその貸方です。

option "title" "UI Demo"
option "operating_currency" "USD"
2024-01-01 open Assets:Checking USD
  fava-uptodate-indication: TRUE
2024-01-01 open Income:Salary USD
2024-01-01 open Expenses:Food USD
 
2024-01-02 * "Salary"
  Assets:Checking    3000.00 USD
  Income:Salary     -3000.00 USD
 
2024-01-03 * "Groceries" #food
  Expenses:Food       400.00 USD
  Assets:Checking    -400.00 USD
 
2024-01-04 balance Assets:Checking 2600.00 USD

bean-check ui-demo.beancountを実行し、次にfava ui-demo.beancountを実行します。チェックは成功し、残高は2,600.00 USDを保持します。#templateタグが付いた将来日付のトランザクションは、それでも実際のトランザクションです。そのタグによって、不活性な再利用可能なフォームになるわけではありません。仮説的なトランザクションは、別のシナリオ元帳に保持してください。

2. ドキュメント管理

標準のFavaは、勘定科目行または仕訳行にドロップすることでドキュメントをアップロードできます。実際のドキュメントルートを設定し、開いている勘定科目と整合性のある勘定科目階層を維持してください。

このオプションのフラグメントは、ui-demo.beancountに追加できます。まずdocumentsディレクトリを元帳と同じ場所に作成します。検出を試すには、documents/Expenses/Food/の下に2024-01-03-receipt.pdfという名前の実際のファイルを配置します。

option "documents" "documents"
plugin "fava.plugins.link_documents"
plugin "fava.plugins.tag_discovered_documents"

これらはFava 1.30.16に同梱されている実際のモジュールです。Beancountは、勘定科目ディレクトリ内の日付付きファイルを検出します。tag_discovered_documents#discoveredタグを追加します。link_documentsは、documentメタデータをドキュメントエントリに一致させ、それらをリンクします。レシートの内容からトランザクションの関連付けを推測することはありません。このメタデータを、既存のGroceriesヘッダーのすぐ下、その転記の前に直接追加してください。

  document: "2024-01-03-receipt.pdf"

そのインデントされた行はメタデータフラグメントであり、独立した元帳ではありません。ファイルが存在する場合、ドキュメントは#linkedタグを受け取り、トランザクションと^dok-2024-01-03リンクを共有します。一致するドキュメントがない場合はエラーが発生します。正確な動作については、バージョン管理されたドキュメントリンクプラグインを参照してください。

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

標準のFavaのクエリページは、Beancountクエリ言語を実行します。これらの完全な元帳結果を再現する前に、グローバルな日付と勘定科目フィルターをクリアしてください。クエリを実行する前に、それらのUIフィルターがエントリを削除する可能性があります。

結果はCSVとしてダウンロードできます。チャートのサポートは結果のタイプによって異なります。標準のヘルプでは、日付または文字列の後にインベントリが続く、正確に2つの列について説明されています。数値列が任意に組み合わされても、チャートが保証されるわけではありません。

実用的なクエリ例

Favaのクエリページでui-demo.beancountに対してこれらのクエリを実行するか、各クエリをbean-query ui-demo.beancountに渡してください。

月次費用サマリー:

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

期待される結果: Expenses:Food, 400.00 USD

月次収入と費用の比較:

SELECT YEAR(date) AS year, MONTH(date) AS month,
       ROOT(account, 1) AS category, currency,
       SUM(number) AS signed_total
FROM postings
WHERE account ~ '^(Income|Expenses):'
GROUP BY year, month, category, currency
ORDER BY year, month, category, currency;
カテゴリ通貨符号付き合計
20241費用USD400.00
20241収入USD-3000.00

このクエリは、Beancountの符号規約を保持し、通貨ごとに単位をグループ化します。3,000.00 USDの収入から400.00 USDの費用を差し引くと、2,600.00 USDになります。これは単位レポートであり、換算や原価基準レポートではありません。IIF関数はbeanquery 0.2.0では利用できず、単項の-positionもサポートされていません。2つの勘定科目カテゴリをグループ化することで、両方の操作を回避できます。

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

表示のカスタマイズ

これらのFavaディレクティブをサンプル元帳に追加して、残高ゼロの勘定科目を非表示にし、投資ブランチを折りたたみます。

2000-01-01 custom "fava-option" "show-closed-accounts" "false"
2000-01-01 custom "fava-option" "show-accounts-with-zero-balance" "false"
2000-01-01 custom "fava-option" "collapse-pattern" "^Assets:Investments"

これらはレポートの勘定科目ツリーに影響します。残高がゼロでない勘定科目は表示されたままになります。option "show-closed-accounts" "false"などのコアフォームは、Beancountの検証に失敗します。

サンプルのfava-uptodate-indication: TRUEメタデータは、openディレクティブの下の独自のインデントされた行に配置してください。open行に置いたり、ブール値を引用符で囲んだりしないでください。最新のパスチェックは緑を生成し、失敗したチェックは赤を生成し、後続のトランザクションは黄色を生成します。1月4日のアサーションは緑です。これらの日付が古いため、別のグレーの鮮度インジケータが表示されることもあります。

サイドバーリンク

UI Demoというタイトルの標準的な例では、これらの完全なパスがそのレポートにつながります。

2024-01-01 custom "fava-sidebar-link" "January Expenses" "/ui-demo/income_statement/?time=2024-01"
2024-01-01 custom "fava-sidebar-link" "All Documents" "/ui-demo/documents/"

これらのパスは、標準のFavaがホストルートにマウントされていることを前提としています。/ui-demoを実際の元帳スラッグに置き換え、サーバーマウントプレフィックスを含めてください。テスト済みの/jump動作とホストされたルーティング境界については、カスタムサイドバーリンクを参照してください。

一般設定

標準のFavaを複数のメインファイルで開始すると、元帳スイッチャーに複数の元帳が作成されます。includeで取り込まれたファイルは、1つの元帳の一部として残り、編集可能なソースとして表示されます。これらは別々の元帳ではありません。

languagedefault-fileuse-external-editorには、Favaオプションを使用してください。外部エディタには、beancount://ハンドラとソースファイルへのアクセスが必要です。実際の標準拡張モジュールには、fava.ext.auto_commitfava.ext.portfolio_listも含まれます。拡張機能はcustom "fava-extension"を使用し、独自の前提条件があります。これらは、上記で使用したpluginディレクティブとは異なります。Favaのバージョン管理された拡張機能ヘルプを参照してください。

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

大きなファイルの処理

インクルードを使用して、元帳を勘定科目または期間ごとに整理します。Beancountは依然としてインクルードされたファイルをロードするため、1つの元帳を分割しても、レポートへの入力自体は削減されません。より小さなレポートが必要な場合は、表示する日付を制限し、負荷の高いクエリを簡素化してください。

一般的な問題と修正

  • 元帳エラー: bean-checkを実行し、Favaのエラーレポートを確認します。ローダーにエラーがあっても、ページはレンダリングされることがあります。
  • 予期しないオプションの動作: テスト済みのランタイムを確認し、日付付きのFavaカスタムディレクティブを使用してください。bean-checkは、それだけでは不明なFavaオプションを検出できません。
  • 予期しないクエリ合計: グローバルフィルターをクリアし、開始残高履歴を含め、通貨を別々に保ってください。
  • ドキュメントの欠落: ディレクトリが存在すること、勘定科目が開いていること、ファイル名が有効な日付で始まること、トランザクションのメタデータがドキュメントと一致することを確認してください。

対照的に、これらは意図的に無効な例です。これらを作業中の元帳にコピーしてはなりません。

option "insert-entry" "Expenses:Food"
custom "fava-sidebar-link" "Label" "/jump?time=month"

最初の例は不明なコアオプションを使用しています。2番目の例は必須の日付が欠落しています。標準機能リファレンスは、このリリースのUI動作を説明しています。

出典: https://beancount.io/ja/docs/Tips/ui-features