Beancount v3: 새로운 기능은?
Beancount 버전 3은 2024년 중반에 출시되어 인기 있는 플레인 텍스트 회계 도구의 아키텍처가 크게 진화했습니다. 사용자 원장 파일에 대한 이전 버전 호환성을 유지하면서도, 내부 구조와 부수적인 도구들이 크게 변경되었습니다. 아래는 Beancount v3에서 새롭게 추가된 내용의 요약입니다.
보다 모듈식이고 간소화된 아키텍처
Beancount v3에서 가장 큰 변화는 보다 모듈식 생태계로 전환한 것입니다. 이전에 코어와 함께 번들되어 있던 여러 핵심 기능이 별도의 독립 프로젝트로 분리되었습니다. 이를 통해 Beancount 코어는 가벼워지고, 개별 구성 요소에 대한 집중적인 개발이 가능해졌습니다.
현재 별도 패키지로 제공되는 주요 구성 요소는 다음과 같습니다:
- beanquery: 원장 파일을 대상으로 하는 강력한 SQL‑유사 쿼리 도구가 이제 별도 패키지로 제공됩니다.
- beangulp: 기존
beancount.ingest
모듈을 대체하는 데이터 가져오기 프레임워크의 새로운 홈입니다. - beanprice: 상품 및 주식 가격을 가져오는 전용 도구입니다.
이러한 분리로 인해 사용자는 기존 버전 2에서 사용하던 전체 기능을 유지하려면 beancount
자체와 함께 위 패키지들을 추가로 설치해야 합니다.
명령줄 도구 및 워크플로우 변경
새로운 모듈식 아키텍처를 반영하여 명령줄 도구에도 몇 가지 눈에 띄는 변화가 있습니다:
bean-report
가 사라짐: 이 도구는 제거되었습니다. 이제 보고서 작성을 위해bean-query
(beanquery
패키지 제공) 를 사용하도록 권장합니다.- 새로운 Importer 워크플로우:
bean-extract
와bean-identify
명령이 코어에서 삭제되었습니다.beangulp
를 활용한 스크립트 기반 접근 방식으로 전환되었습니다. 사용자는 은행 명세서와 같은 외부 데이터 소스를 가져오기 위해 자체 Python 스크립트를 작성해야 합니다.
구문 및 기능 향상
코어 회계 원칙은 그대로 유지되지만, Beancount v3에서는 구문에 몇 가지 유연성이 추가되었습니다:
- 통화 코드 유연성 확대: 이전에 통화 이름의 길이와 문자에 제한이 있었으나, 이제는 단일 문자 통화 기호도 지원됩니다.
- 거래 플래그 확장: 거래에 대해 A부터 Z까지의 대문자를 자유롭게 플래그로 사용할 수 있어 보다 세분화된 분류가 가능합니다.
이러한 변경 사항은 모두 이전 버전과 호환되므로, 기존 Beancount v2 원장 파일은 그대로 사용할 수 있습니다.
C++ 재작성 및 성능
Beancount의 장기 목표 중 하나는 성능에 민감한 구성 요소를 C++ 로 재작성하는 것이었습니다. 현재 진행 중인 작업이지만, Beancount v3 최초 릴리스에는 C++ 기반 코어가 포함되지 않습니다. 따라서 현재 v3의 성능은 v2와 비슷합니다. C++ 코드는 향후 통합을 위해 별도 개발 브랜치에 유지됩니다.
v2 에서 v3 로의 마이그레이션
대부분의 사용자에게는 Beancount v2 에서 v3 로의 마이그레이션이 비교적 간단합니다:
- 원장 파일:
.beancount
파일에 별도의 변경이 필요 없습니다. - 설치:
beanquery
,beangulp
와 같은 새로운 별도 패키지를pip
로 설치해야 합니다. - Importer 스크립트: 사용자 정의 Importer 가 있다면 새로운
beangulp
API 로 업데이트해야 합니다. 주로 상속받는 기본 클래스를 교체하고 메서드 시그니처를 조정하면 됩니다. - Fava: Beancount 의 인기 웹 인터페이스인 Fava 가 v3 와 호환되도록 업데이트되었습니다. 원활한 사용을 위해 최신 버전의 Fava 를 설치하세요.
요약하면, Beancount v3 은 프로젝트 아키텍처를 보다 모듈화하고 유지·확장이 쉬운 기반 릴리스입니다. 데이터 가져오기와 같은 워크플로우에 약간의 조정이 필요하지만, 향후 강력한 회계 도구 개발을 위한 토대를 마련합니다.