Ledger について
Ledger はコマンドラインベースの会計ツールで、財務データをプレーンテキスト形式で管理します。シンプルなジャーナル形式から balance や register などのコマンドを使用して、貸借対照表や取引記録、予算レポートなどの財務諸表を生成できます。
主な機能
- 01バージョン管理に適したプレーンテキスト形式で財務記録を管理
- 02balance や register などのコマンドで口座と取引を照会
- 03スクリプト化可能なコマンドで自動化された財務レポートを生成
活用シーン
- 01個人またはプロジェクトの財務を複式簿記で追跡管理
- 02定期的な決算報告と照合業務の自動化
- 03会計データをバージョン管理システムと統合
インストール
OS またはパッケージマネージャーを選び、コマンドをターミナルで実行します。
インストール後にledger --versionを実行して確認します。
コマンド例
よく使うコマンドを使う順に並べています。
詳細
Ledger:コマンドライン会計
Ledger は、UNIX コマンドラインから利用する強力な複式簿記システムです。 派手な UI がないため敬遠するユーザーもいるかもしれませんが、 データに対して比類のないレポート機能を求める人にとって、これに代わるものはほとんどありません。
Ledger は入力にテキストファイルを使用します。ファイルを読み込んでレポートを生成し、 それ以外のデータベースや保存された状態はありません。Ledger を使うには、 勘定科目名と取引を記載したファイルを作成し、コマンドラインから 入力と求めるレポートを指定するオプションを付けて実行すると、結果が出力されます。 出力は通常プレーンテキストですが、グラフや HTML を生成することもできます。 Ledger は概念としてはシンプルで、驚くほど多機能であり、使いやすいソフトウェアです。
すぐに試したい方へ
そうですよね。すぐにビルドして試したいだけですよね。依存関係 がすべてインストールされているなら、次のコマンドを実行するだけです。
$ git clone [email protected]:ledger/ledger.git
$ cd ledger && ./acprep update # 最新版に更新し、設定してビルド
まずは次の Ledger コマンドを試してみましょう。
$ ./ledger -f test/input/sample.dat reg
仕訳帳の管理方法については、[ドキュメント]、Wiki、 このファイル末尾のリソースセクションをご覧ください。 Ledger ファイル用の Emacs モードは [ledger/ledger-mode リポジトリ]にあり、vim プラグインは [ledger/vim-ledger リポジトリ]にあります。
Docker 版
お使いのコンピューターまたはサーバーに Docker がインストールされている場合は、追加の依存関係をインストールせずに、このソフトウェアの Docker 版を利用できます。
$ docker run --rm -v "$PWD"/test/input:/data dcycle/ledger:1 -f /data/sample.dat reg
依存関係
この作業を進めるには、いくつかの依存関係が必要です。
--import などの一部の機能を使うには、Python サポートを有効にして Ledger をビルドする必要があります。
お使いのプラットフォームに必要なものを簡単に揃えるには、次の便利な Python スクリプトを実行してください。
$ ./acprep dependencies
これで問題がすべて解決しない場合は、現在の main ブランチをビルドするための依存関係を以下に示します。
| 依存関係 | バージョン(またはそれ以上) |
|---|---|
| CMake | 3.16.2 |
| Boost | 1.72 |
| Gmp | 6.1.2 |
| Mpfr | 4.0.2 |
| utfcpp | 3.2.3 |
| ICU | 63 任意 |
| gettext | 0.17 任意 |
| libedit | 20090111-3.0 任意 |
| Python | 3.10 任意 |
| Gpgmepp | 1.13.1 任意 |
| doxygen | 1.9.5 任意、make docs 用 |
| graphviz | 2.20.3 任意、make docs 用 |
| texinfo | 4.13 任意、make docs 用 |
| lcov | 1.6 任意、make report 用。./acprep gcov と併用 |
| sloccount | 2.26 任意、make sloc 用 |
macOS
macOS で Ledger のビルド依存関係を簡単にインストールするには、 Homebrew または MacPorts を利用できます。
1. Homebrew
Homebrew を使う場合、依存関係をインストールするには次のコマンドを実行します。
$ brew install cmake boost boost-python3 gmp mpfr
2. MacPorts
私と同じように macOS で MacPorts を使ってビルドする場合は、次のコマンドを実行します。
$ sudo port install -f cmake python37 \
libiconv zlib gmp \
mpfr ncurses ncursesw \
gettext libedit boost-jam \
boost +st+python37+icu texlive doxygen graphviz \
texinfo lcov sloccount
Conda
Ledger のビルドに必要な依存関係は、特定のプラットフォーム(例:linux-64)向けにconda-forgeから入手でき、Condaまたはmambaで使用できます。
Conda を使う場合は、次のコマンドを実行します。
$ conda install -c conda-forge python=3 cmake boost gmp mpfr \
gettext libedit texinfo doxygen graphviz
Ubuntu
Ubuntu でビルドする場合は、次のパッケージを sudo apt-get install ... でインストールします(Ubuntu 18.04 時点の情報です)。
$ sudo apt-get install build-essential cmake doxygen \
libboost-system-dev libboost-dev python3-dev gettext git \
libboost-date-time-dev libboost-filesystem-dev \
libboost-iostreams-dev libboost-python-dev libboost-regex-dev \
libboost-test-dev libedit-dev libgmp3-dev libmpfr-dev texinfo tzdata
Debian
Debian 10(bullseye)、Debian 11(「bullseye」)、Debian testing、Debian unstable(sid)には、ledger のビルドに必要なすべてのコンポーネントが含まれています。次のコマンドで、ビルドに必要な依存関係をすべてインストールできます。
$ sudo apt-get install build-essential cmake autopoint texinfo python3-dev \
zlib1g-dev libbz2-dev libgmp3-dev gettext libmpfr-dev \
libboost-date-time-dev libboost-filesystem-dev \
libboost-graph-dev libboost-iostreams-dev \
libboost-python-dev libboost-regex-dev libboost-test-dev
Fedora
Fedora では、次のコマンドですべてのビルド依存関係をインストールできます(Fedora 32 でテスト済みです)。
$ sudo dnf install boost-date-time boost-devel boost-filesystem \
boost-iostreams boost-python3-devel boost-regex boost-system \
boost-test cmake doxygen gettext git gmp-devel libedit-devel \
mpfr-devel python3-devel texinfo tzdata
ビルド
次の手順では、ビルド用の環境を準備します。cmake . と make を使用することもできますが、より多くの作業を自動で行うスクリプトを用意しています。
$ ./acprep update
# または、接尾辞 -mt の Boost ライブラリを使い、$HOME/local にインストールして
# 2 つのプロセスで並列ビルドする場合
$ ./acprep update --boost-suffix=-mt --prefix=$HOME/local -j2
configure ステップが失敗した場合は、CMakeFiles/CMakeOutput.log と
CMakeFiles/CMakeError.log の内容を確認してください。また、acprep の
help サブコマンドでは、多数あるオプションの一部について説明しています。
Ledger の設定、ビルド、テストで私が実行するコマンドは、ほぼこれだけです。
結果を確認するには make check を実行し、インストールするには make install を実行します。
Python バインディング
Ledger には、Boost.Python を使ってビルドするオプションの Python バインディングが含まれています。Python のサポートはデフォルトでは無効になっており、明示的に有効にする必要があります。
前提条件
標準の依存関係に加えて、次が必要です。
- Python 3.10 以降(開発用ヘッダーを含む)
- Boost.Python(Boost および Python のバージョンに対応するもの)
パッケージ名については、上記のプラットフォーム別の依存関係のセクションを参照してください(例:Homebrew では boost-python3、Ubuntu では libboost-python-dev)。
Python サポートを有効にしたビルド
acprep を使う場合:
$ ./acprep --python update --output=build
または、CMake を直接使う場合:
$ mkdir build && cd build
$ cmake -DUSE_PYTHON=ON ..
$ make -j$(nproc)
Python モジュールのインストール
make install(または cmake --install build)を実行すると、ledger.so(Windows では ledger.pyd)が Python インストール先の site-packages ディレクトリにコピーされます。インストール後:
$ python -c "import ledger; print(ledger)"
インストールせずに使用する
インストールせずにビルドツリーから直接モジュールを使用するには、
PYTHONPATH にビルドディレクトリを指定します。
$ PYTHONPATH=build python -c "import ledger; print(ledger)"
Linux では LD_LIBRARY_PATH=build、macOS では
DYLD_LIBRARY_PATH=build も設定する必要がある場合があります。
デモスクリプトは python/demo.py にあります。
$ PYTHONPATH=build python python/demo.py
Python API の詳細なドキュメントについては、Ledger マニュアルの「Python による拡張」の章をご覧ください。
リソース
これで準備が整いました。参考になるリソースをいくつかご紹介します。
- [ホームページ]
- [ドキュメント]
- IRC チャンネル:Libera Chat の #ledger チャンネル
- メーリングリスト/フォーラム
- GitHub プロジェクトページ
- コード分析
共有したいアイデアがある場合は、パッチをメールで送るか(貼り付けたテキストより添付ファイルを好みます)、GitHub アカウントを取得するのが最適です。 アカウントを取得したら、Ledger プロジェクトをフォークして、 自由に変更を加えたうえで、GitHub でプルリクエストを作成してください。