メインコンテンツへスキップ

Beancount v3: 新機能のご紹介

公開日 最終更新 約2分Mike ThriftMike Thrift
Beancount v3: 新機能のご紹介
このページの見出し

2026年9月15日時点の情報です。

2024年半ばにリリースされた Beancount バージョン3 は、この人気のあるプレーンテキスト会計ツールにとって重要なアーキテクチャ進化を示しています。ユーザーの台帳ファイルに対する後方互換性は維持されていますが、基盤となる構造と付随ツールには大幅な変更が加えられています。ここでは、Beancount v3 の新機能と、このガイドが初めて公開されて以来にリリースされた 3.1~3.2 系の変更点について詳しく説明します。

構文と最初の台帳については、Beancount 構文リファレンス と はじめに を参照してください。check、query、import、reports をラップするホスト型CLIについては、Beancount CLI リファレンス を参照してください。

よりモジュール化され、合理化されたアーキテクチャ​

Beancount v3 で最も重要な変更点は、よりモジュール化されたエコシステムへの移行です。以前はコアにバンドルされていたいくつかの主要機能が、独立した別々のプロジェクトに分離されました。これにより、Beancount のコアはより軽量になり、個々のコンポーネントに集中した開発が可能になります。

現在、別パッケージとなっている主要コンポーネントは以下の通りです:

  • beanquery: 台帳ファイルのための強力なSQLライクなクエリツールが、独自のパッケージになりました。
  • beangulp: データインポートフレームワークの新しい場所で、従来の beancount.ingest モジュールに取って代わります。
  • beanprice: 商品や株式の価格を取得するための専用ツールです。

この分離により、ユーザーはバージョン2で慣れ親しんだ完全な機能を維持するために、beancount 自体に加えてこれらのパッケージをインストールする必要があります。

コマンドラインツールとワークフローの変更​

新しいモジュラーアーキテクチャを反映して、コマンドラインツールにはいくつかの注目すべき変更があります:

  • bean-report は廃止: このツールは削除されました。レポートのニーズには、beanquery パッケージの bean-query を使用することをお勧めします。
  • 新しいインポーター・ワークフロー: bean-extract と bean-identify コマンドがコアから削除されました。beangulp を使用した新しいアプローチはスクリプトベースです。ユーザーは、銀行取引明細書などの外部ソースからのデータインポートを処理する独自のPythonスクリプトを作成することになります。

構文と機能の拡張​

コアの会計原則は同じですが、Beancount v3 では構文にいくつかの歓迎すべき柔軟性が導入されています:

  • より柔軟な通貨コード: 通貨名の長さと文字に関する従来の制限が緩和されました。1文字の通貨記号がサポートされるようになりました。
  • トランザクションフラグの拡張: トランザクションのフラグとして A から Z までの任意の大文字を使用できるようになり、より詳細な分類が可能になりました。

重要なのは、これらの変更は後方互換性があるため、既存の Beancount v2 台帳ファイルは変更なしで動作することです。

C++ による書き換えとパフォーマンス​

Beancount の長期的な目標の1つは、パフォーマンスに重要なコンポーネントを C++ で書き換えることでした。Beancount v3 の初期リリースには C++ コアは含まれておらず、2026年9月15日現在もその状況は変わりません。公開されている PyPI ライン(3.2.3 まで)は、依然としてモジュール化された Python v3 ブランチです。歴史的な C++/Bazel の作業は別の cpp ブランチにあり、ユーザーが PyPI からインストールするパッケージの一部ではありません。したがって、現在の v3 リリースの日常的なパフォーマンスは v2 後期と同じクラスであり、桁違いの C++ 書き換えではなく、パーサーとツールの段階的な改善が行われています。

この記事の執筆以降(v3.1 → v3.2.x)​

主な情報源: プロジェクトの CHANGES ファイル、3.1.0…3.2.0 の GitHub compare ビュー、および PyPI beancount(2026年9月15日時点の最新版は 3.2.3)。

  • 3.1.x 系 — 3.0 のモジュール分割(beanquery、beangulp、beanprice は別インストールのまま)後のパッケージングと API クリーンアップを継続。
  • 3.2.0(2025年9月14日) — beancount/beancount のリリースコミット。この期間のユーザー向けの注目すべき作業には、複数ファイル対応の bean-format、許容誤差/精度の改良、wheel/CI のメンテナンスが含まれます(上記の compare リンクを参照)。
  • 3.2.1–3.2.3(2026年) — その後のバイナリおよびパッケージングリリース(3.2.1 の概要でメーリングリストに記載された Python 3.14 のテストカバレッジとドキュメントの足場を含む)。pip install -U beancount でインストールし、アップグレード時にはコンパニオンパッケージ(beanquery、beangulp)をメジャーバージョンに合わせて固定してください。

Fava: Fava 1.30 で Beancount 3 サポートが追加されました(2024年12月29日)。Fava 1.30.13(2026年5月19日) で Beancount 2 のサポートが終了し、インポーターには beangulp が必要です。2026年9月15日時点の現在の PyPI ラインは 1.30.16 です。Fava のアップグレードは Beancount 3 の台帳と組み合わせてください。

v2 から v3 への移行​

ほとんどのユーザーにとって、Beancount v2 から v3 への移行は比較的簡単です:

  1. 台帳ファイル: .beancount ファイルの変更は必要ありません。
  2. インストール: pip を使用して、beanquery や beangulp などの新しい独立したパッケージをインストールする必要があります。
  3. インポータースクリプト: カスタムインポーターがある場合は、新しい beangulp API を使用するように更新する必要があります。これは主に、インポーターが継承する基本クラスの変更と、いくつかのメソッドシグネチャの調整を意味します。
  4. Fava: Beancount 用の人気の Web インターフェースである Fava は、v3 と互換性があるように更新されています。シームレスなエクスペリエンスのために、最新バージョンの Fava を確実に使用してください。

要するに、Beancount v3 は、プロジェクトのアーキテクチャを合理化し、よりモジュール化して、長期的に保守と拡張を容易にする基礎的なリリースです。特にデータインポートに関して、ユーザーのワークフローにいくつかの調整が必要ですが、この強力な会計ツールの将来の開発の基盤を築きます。

参考資料​

この記事を共有

このトピックをフォロー

出典: https://beancount.io/ja/blog/2025/06/06/whats-new-in-beancount-v3

公開日: 2025年6月6日

最終更新: 2026年9月15日