なぜ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つのことを期待しています。
- ブックエントリーの日付と名前を指定するタイトル行。この例では、2月16日にExpensesという項目を追加しています。
- お金がどこから来て、どこに行ったかを示す勘定科目群。この場合、私は現金資産を使用し、私はそれを経費勘定に移動しました。
- 移動させたお金の価値。ここでは、昼食代とおやつ代で2回現金資産を移動させました。しかし、一日の終わりに資産から一度に引き落とされた。
この3つの前提があれば、Ledgerをどんな状況にも簡単に適応させることができます。例えば、Ledgerは通貨も商品も扱うことができます。そのため、支出を記録するだけでなく、投資も追跡する人に便利です。
Ledger のアカウント・カテゴリーを定義する
注意すべき点は、Ledgerの各取引のカテゴリは完全に任意であることです。ただし、個人の財務を追跡する一般的な慣行は、5 つの部分に分けることができます。
- 資産勘定は、あなたが所有している商品と通貨です。これは、単一の通貨であるか、または通貨、株式、アイテムの在庫の混合物である可能性があります。
- 資産勘定は、あなたが資産で購入した商品です。 収入アカウントは、あなたの富の源からお金を引き出すことができる場所です。例えば、受け取った給与をこの口座に付けます。
- 負債(Liabilities)勘定は、現在あなたが借りているすべての商品を割り当てることができる場所です。
- The Equityアカウントは、現在の純資産を決定するために使用できる特別なアカウントです。これは、Ledgerで開始残高を作成する際によく使用されます。
これらの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のパッケージマネージャで既にインストールすることができます。
- そのためには、
Alt
+X
を押してpackage-install
とタイプしてください。そうすると、コマンドバッファが表示されますので、Emacsに追加したいパッケージを入力してください。ledger-mode` と入力します。 -
- そこから、Emacsがパッケージのソースコードをダウンロードして、コンパイルします。その後、Ledger Modeを通して、EmacsでLedgerを使えるようになります。
Emacsで最初のLedgerを作成する
デフォルトでは、Emacsが.ledgerで終わるファイルを開くと、Ledgerモードが自動的に有効になります。
-
そのため、
Control
+X
,Control
+F
を押すことで、Emacsで自分の元帳ファイルを作り始めることができます。 -
- 作成したいファイルの名前を入力するバッファが開きます。example.ledger`と入力します。
-
- 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があなたのファイルを正しく検知しているかどうかをテストしてみましょう。
-
- これを行うには、
Control
+C
,Control
+O
,Control
+R
を押します。これにより、Ledgerモードがレポートを作成するように促されます。
- これを行うには、
-
- 実行中の残高を表示するには、
bal
と入力します。
- 実行中の残高を表示するには、
3. 3. そうすると、Ledgerファイルに追加したすべての勘定科目の階層が表示されます。そして、最終行でこれらすべての合計がゼロになるはずです。
新しいトランザクションの追加
これで、元帳ファイルに新しい取引を追加できるようになりました。
-
- これを行うには、
Control
+C
とControl
+A
を押してください。これはLedger Modeに新しいトランザクションを作成することを知らせます。
- これを行うには、
-
- 次に、このトランザクションを作成する日付を尋ねられます。これは、ある日付以降にしか清算されない小切手を発行する場合に便利です。私の場合、現在の日付を使用したいので、ここで
Enter
を押します。
- 次に、このトランザクションを作成する日付を尋ねられます。これは、ある日付以降にしか清算されない小切手を発行する場合に便利です。私の場合、現在の日付を使用したいので、ここで
3. ここからLedger Modeは、以前に記録されたトランザクションの名前を尋ねます。この機能は、定期的な支払いを行っていて、以前の取引をコピーしたい場合に使用します。私の場合、新しい取引を作成したいので、ここでEnter
を押しました。
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
基本的なレポートの作成
- 上で説明したように、
Control
+C
、Control
+O
、Control
+R
を押すことでレポートを作成することができます。しかし、bal
以外にも、様々なコマンドを使って、帳簿から様々なレポートを生成することができます。 - 例えば、
account
と口座名を入力すると、特定のカテゴリーの口座明細を作成することができます。私の場合、“Assets “と入力し、Assetsカテゴリの明細を作成しました。
3. 一方、payee
と入力すると、入力した文字列をタイトルとする取引を全て表示することができます。例えば、“snack “と入力すると、snackという単語を含む取引だけを表示させることができます。
4. 最後に、reg
と入力すると、元帳全体のレジストリレポートが作成されます。これは、元帳が各商品を追跡し、それらがどのようにバランスをとっているかを示す、より詳細な残高報告書です。
よくある質問
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
を押すと順序を逆転させることができます。