Beancount v3: 新機能は何ですか?
Beancount バージョン3は2024年中頃にリリースされ、人気のプレーンテキスト会計ツールにとって重要なアーキテクチャの進化を示します。ユーザーの元帳ファイルとの下位互換性は維持しつつ、基盤となる構造と付随するツールは大幅に変更されました。以下に Beancount v3 の新機能をまとめます。
よりモジュラーでスリムなアーキテクチャ
Beancount v3 で最も重要な変更は、よりモジュラーなエコシステムへの移行です。以前はコアに統合されていた主要な機能が、別々の独立したプロジェクトとして分離されました。これにより Beancount のコアは軽量化され、個々のコンポーネントに対する開発がより集中できるようになりました。
現在は別パッケージとして提供されている主要コンポーネントは次のとおりです:
- beanquery: 元帳ファイル用の強力な SQL ライクなクエリツールが、現在は独立したパッケージとなっています。
- beangulp: データインポートフレームワークの新しい拠点で、従来の
beancount.ingest
モジュールに代わります。 - beanprice: 商品や株式の価格取得専用ツールです。
この分離により、ユーザーは従来のバージョン2で使用していたフル機能を維持するために、beancount
本体に加えてこれらのパッケージをインストールする必要があります。
コマンドラインツールとワークフローの変更
新しいモジュラーアーキテクチャを反映し、コマンドラインツールにいくつか顕著な変更があります:
bean-report
は廃止: このツールは削除されました。ユーザーはレポート作成にbean-query
(beanquery
パッケージ)を使用することが推奨されます。- 新しいインポーター・ワークフロー:
bean-extract
とbean-identify
コマンドはコアから削除されました。beangulp
を用いた新しいアプローチはスクリプトベースです。ユーザーは銀行明細など外部ソースからのデータインポートを処理するために、独自の Python スクリプトを作成します。
構文と機能の強化
コアとなる会計原則は変わりませんが、Beancount v3 は構文にいくつかの柔軟性を導入しています:
- 通貨コードの柔軟化: 以前は通貨名の長さや文字種に制限がありましたが、これが緩和され、1文字の通貨シンボルもサポートされるようになりました。
- 取引フラグの拡張: 取引のフラグとして A から Z までの任意の大文字を使用でき、より細かい分類が可能になりました。
重要なのは、これらの変更は下位互換性があるため、既存の Beancount v2 の元帳ファイルは変更なしでそのまま使用できます。
C++ リライトとパフォーマンス
Beancount の長期的な目標の一つは、パフォーマンスクリティカルなコンポーネントを C++ でリライトすることでした。この作業は進行中ですが、Beancount v3 の最初のリリースには C++ ベースのコアは 含まれていません。したがって現時点では v3 のパフォーマンスは v2 と同等です。C++ のコードは将来の統合に向けて別の開発ブランチに残されています。
v2 から v3 への移行
ほとんどのユーザーにとって、Beancount v2 から v3 への移行は比較的簡単です: