Ledger Modeは、コマンドライン会計プログラムLedgerのためのEmacsのパッケージである。これにより、EmacsユーザーはLedgerの強力な機能を、お気に入りのテキストエディタで快適に利用することができます。

なぜLedger Modeを使い、Emacsで帳簿をつけるのか?

Ledgerモードはシンプルで直感的に使用できます。自動的に財務のバランスをとり、記録に問題がある場合は通知してくれます。また、支出や収入源を分類して、パッケージから分類・分析することもできます。

簡単に言えば、Ledger Modeは、Emacsを生産性向上のために使う人にとって、素晴らしい追加機能です。スプレッドシートの必要性をなくし、同時に台帳データをEmacsの他の部分で使えるようにします。

Emacsは、相互運用性という考えで動いています。つまり、Emacsで作成されたデータは、その中の他のどのパッケージにも再利用することができます。その中で、Ledgerモードは、そのユーザーがledger用に書いたデータをEmacsの他のツールに作成・結合することを可能にしています。

これにより、例えば、アーカイブされたメールとledgerのファイルの両方にリンクするOrg Modeドキュメントを作成することができます。それだけでなく、元帳のエントリーをメールにコピーしたり、その逆も簡単にできます。これはすべて、台帳モードのエントリがプレーンテキストであり、Emacsがそれを簡単に任意のバッファに移動できるためです。

元帳ユーティリティ

上で述べたように、EmacsのLedgerモードはLedgerコマンドラインユーティリティにアクセスするための手段に過ぎません。そのため、Ledger プログラムがどのようなもので、何ができるのかを知っておくことが重要です。

Ledger の仕組み

Ledger は、プレーンテキストの元帳を読み込んで、会計レポートを作成するシンプルなプログラムです。従来の簿記プログラムとは異なり、データベースファイルを作成したり変更したりすることはありません。このため、Ledgerはあなたの財務状況を把握するための、無駄のない柔軟なソリューションとなっています。

Ledgerは、ファイル内の各エントリーが特定のフォーマットに従うことを想定しています。次のような例を考えてみましょう。

  2022/02/16 支出
    支出:食品:昼食 140 PHP
    支出:食品:スナック 50 PHP
    資産:フィアット:現金 -190 PHP

この中で、Ledgerはプレーンテキストファイルから3つのことを期待しています。

この3つの前提があれば、Ledgerをどんな状況にも簡単に適応させることができます。例えば、Ledgerは通貨も商品も扱うことができます。そのため、支出を記録するだけでなく、投資も追跡する人に便利です。

Ledger のアカウント・カテゴリーを定義する

注意すべき点は、Ledgerの各取引のカテゴリは完全に任意であることです。ただし、個人の財務を追跡する一般的な慣行は、5 つの部分に分けることができます。

これらの5つのカテゴリの後にコロン(:)を付けることで、さらに取引を指定することができます。例えば、Expenses:Food:Lunchというラベルのトランザクションは、3段階の階層で表現することができます。

Ledgerのインストール

これを踏まえて、Ledgerのインストールは簡単です。ほとんどのLinuxディストリビューションのレポジトリで見つけることができます。例えば、DebianやUbuntuでは、aptを使ってledgerをインストールできます。

sudo apt install ledger

Fedoraの場合は、dnfを使用します。

sudo dnf install ledger

Arch Linux では、pacman を使うことができます。

sudo pacman -S ledger

私の場合、Debianを使っているので、aptでledgerをインストールします。

EmacsでLedgerモードを使う

EmacsでLedgerプログラムを使うには、その付属パッケージであるLedger Modeをインストールする必要があります。このパッケージはデフォルトのELPAリポジトリで利用可能です。そのため、Emacsのパッケージマネージャで既にインストールすることができます。

  1. そのためには、Alt + X を押して package-install とタイプしてください。そうすると、コマンドバッファが表示されますので、Emacsに追加したいパッケージを入力してください。ledger-mode` と入力します。
    1. そこから、Emacsがパッケージのソースコードをダウンロードして、コンパイルします。その後、Ledger Modeを通して、EmacsでLedgerを使えるようになります。

Emacsで最初のLedgerを作成する

デフォルトでは、Emacsが.ledgerで終わるファイルを開くと、Ledgerモードが自動的に有効になります。

  1. そのため、Control + X, Control + F を押すことで、Emacsで自分の元帳ファイルを作り始めることができます。

    1. 作成したいファイルの名前を入力するバッファが開きます。example.ledger`と入力します。
    1. Emacs がカレントディレクトリに “example.ledger” ファイルを作成し、開いてくれます。ここから、元帳ファイルに取引を書き込んでいきます。

Emacsで開始残高を作成する

Ledger で財務の追跡を始めるには、まず現在の残高を提供する必要があります。そのためには、現在持っているものと借りているものを、資本勘定に差し引きます。たとえば、これは資産と負債をいくつも持っている人の開始残高です。

  2022/02/10 ◆開始残高
    資産:Bitcoin:Savings 0.045 BTC
    Assets:Bitcoin:Checking 0.00050712 BTC
    資産:Fiat:当座預金 15,000.00 PHP
    資産:Fiat:普通預金 255,944.00 PHP
    負債:Fiat:カーローン -450,000.00 PHP
    負債:Fiat:Credit Payable -5,000.00 PHP
    負債:フィアット ホームローン -755,831.34 PHP
    純資産:期首残高

元帳の開始エントリの構成は上の例とほぼ同じですが、ひとつだけ重要な違いがあります。ここでは、エントリーのタイトルの前にアスタリスクを追加して、このトランザクションがすでに「クリア」されていることをLedgerに伝えています。これは、Ledger がこれらの勘定科目に追加したり差し引いたりすることができることを意味します。

現在の残高を確認する

ここまでできたら、次はLedgerがあなたのファイルを正しく検知しているかどうかをテストしてみましょう。

    1. これを行うには、Control + C, Control + O, Control + R を押します。これにより、Ledgerモードがレポートを作成するように促されます。
    1. 実行中の残高を表示するには、balと入力します。

3. 3. そうすると、Ledgerファイルに追加したすべての勘定科目の階層が表示されます。そして、最終行でこれらすべての合計がゼロになるはずです。

新しいトランザクションの追加

これで、元帳ファイルに新しい取引を追加できるようになりました。

    1. これを行うには、Control + CControl + A を押してください。これはLedger Modeに新しいトランザクションを作成することを知らせます。
    1. 次に、このトランザクションを作成する日付を尋ねられます。これは、ある日付以降にしか清算されない小切手を発行する場合に便利です。私の場合、現在の日付を使用したいので、ここでEnterを押します。

3. ここからLedger Modeは、以前に記録されたトランザクションの名前を尋ねます。この機能は、定期的な支払いを行っていて、以前の取引をコピーしたい場合に使用します。私の場合、新しい取引を作成したいので、ここでEnterを押しました。

4. これで、Ledger Modeは現在の日付の入った新しい空白行を作成します。そして、ここからやりたい取引を追加することができます。例えば、私は以下のような取引を開始残高の後に追加しています。

  2022/02/10 ¦開始残高
   資産:PHP:当座預金 5,000.00 PHP
   資産:PHP:普通預金 10,000.00 PHP
   負債:PHP:支払クレジット -5,000.00 PHP
   純資産:期首残高
 
  2022/02/11 はじめてのおつかい
   支出:Food:Snack 250.00 PHP
   資産:PHP:当座預金 -250.00 PHP

基本的なレポートの作成

  1. 上で説明したように、Control + CControl + OControl + Rを押すことでレポートを作成することができます。しかし、bal 以外にも、様々なコマンドを使って、帳簿から様々なレポートを生成することができます。
  2. 例えば、accountと口座名を入力すると、特定のカテゴリーの口座明細を作成することができます。私の場合、“Assets “と入力し、Assetsカテゴリの明細を作成しました。

3. 一方、payeeと入力すると、入力した文字列をタイトルとする取引を全て表示することができます。例えば、“snack “と入力すると、snackという単語を含む取引だけを表示させることができます。

4. 最後に、regと入力すると、元帳全体のレジストリレポートが作成されます。これは、元帳が各商品を追跡し、それらがどのようにバランスをとっているかを示す、より詳細な残高報告書です。

おめでとうございます。あなたは今、Emacsを使用して財務を追跡する方法を知っています。また、Ledger プログラムについて、そしてそれを使ってあなたの財務状況についての詳細なレポートを作成する方法について学びました。

よくある質問

1. Ledger が、私の元帳はバランスが取れていないというエラーを出しています。何か悪いことをしたのでしょうか?

これは、いくつかの問題が原因である可能性があります。しかし、最も一般的なものは、元帳のトランザクションを閉じ忘れていることです。これを解決する一つの方法は、マイナスの値になっていない取引があるかどうかを確認することです。

元帳にマイナスの値があるということは、ある口座から金額を引き出していることを意味します。一方、正の値は、それに追加していることを意味します。この2つの値は資産の流れを表し、Ledgerの勘定科目のバランスを取るために必要です。

つまり、Ledgerで行うすべての取引には、正の値と負の値が必要なのです。プラスとマイナスの値が必要なのです。

2. Ledgerは現実世界の資産でしか使えないのですか?

そんなことはありません。上で述べたように、Ledgerで使われる勘定科目はすべて完全に恣意的なものです。つまり、このガイドの例では現実世界の資産を対象にしていますが、Ledgerを使って仮想の資産を追跡することも可能なのです。

たとえば、これは人気のMMOゲーム、EVE Onlineの資産を追跡する台帳からの抜粋です。

  2022/01/04 ベンチャー利益
      メイン:資産:液体:ISK 150,000,000.00 ISK
      Alt 1:収入:鉱石採掘 -10,000,000.00 ISK
      Alt 1:収入:ステーショントレード -40,000,000.00 ISK
      Alt 2:収入:データランニング(0.0) -100,000,000.00 ISK
 
  2022/01/07 アップキープコスト
      Alt 1:Expenses:船の保険 10,000.00 ISK
      Alt 2:Epenses:新造船 53,450,000.00 ISK
      メイン:資産:液体:ISK -53,460,000.00 ISK

3. 銀行取引明細のように、取引の順番を逆にすることはできますか?

はい、できません。Ledgerが作成するレポートでは、取引の順序を逆にすることができます。しかし、Ledgerのファイルにある取引の順番を逆にすることはできません。前者を行うには、レポートバッファの中で Shift + R を押すと順序を逆転させることができます。

画像クレジット:Unsplash

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。