Emacsでのレジャーモードを使った財務管理方法

レジャーモードは、コマンドライン会計プログラムであるLedgerのためのEmacsのパッケージです。これにより、Emacsユーザーはお気に入りのテキストエディタからLedgerの強力な機能を利用することができます。
目次
- なぜEmacsでレジャーモードを使用して簿記を行うのか?
- Ledgerの動作
- Ledgerでのアカウントカテゴリの定義
- Ledgerのインストール
- Emacsでのレジャーモードの使用
- よくある質問
さらに読む: Doom Emacsとは何か、そしてそのインストール方法
なぜEmacsでレジャーモードを使用して簿記を行うのか?
レジャーモードはシンプルで直感的に使用できます。自動的に財務をバランスさせ、記録に問題がある場合は通知します。また、支出と収入源を分類することができ、これらはパッケージ自体からソートおよび分析できます。

簡単に言えば、レジャーモードはEmacsを生産性スイートとして使用する人にとって素晴らしい追加機能です。スプレッドシートの必要性を排除し、他のEmacsの体験の中でレジャーデータを使用することを可能にします。
Emacsは相互運用性の考え方で動作します。これは、Emacs内で生成されたデータは、他のパッケージに再利用できることを意味します。そのため、レジャーモードはユーザーがレジャーのために書いたデータをEmacs内の他のツールと作成および結合できるようにします。

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

さらに読む: Emacs内でのメールの使用方法
Ledgerユーティリティ
上記で説明したように、EmacsのレジャーモードはLedgerコマンドラインユーティリティにアクセスする方法に過ぎません。それに伴い、Ledgerプログラムが何であるか、そしてそれが何をできるのかを知ることが重要です。
さらに読む: Magitを使用してEmacsでGitを管理する方法
Ledgerの動作
Ledgerはプレーンテキストの元帳を読み取り、それから会計報告を作成するシンプルなプログラムです。従来の簿記プログラムとは異なり、データベースファイルを作成および変更しません。これにより、Ledgerは財務状況を把握するためのスリムで柔軟なソリューションとなります。

Ledgerがこれを可能にする方法は、ファイル内の各エントリが特定の形式に従うことを期待していることです。以下の例を考えてみましょう:
2022/02/16 Expenses
Expenses:Food:Lunch 140 PHP
Expenses:Food:Snack 50 PHP
Assets:Fiat:Cash -190 PHPここで、Ledgerはプレーンテキストファイルから3つのことを期待しています:
- 日付と帳簿エントリの名前を指定するタイトル行。この場合、2月16日にExpensesエントリを追加しました。
- お金がどこから来てどこに行ったかを示すアカウントのグループ。この場合、現金資産を使用し、それを費用アカウントに移動しました。
- 移動したお金の価値。ここでは、昼食とスナックのために現金資産を2回移動しました。ただし、これはすべて、1日の終わりに私の資産から一度に引き落とされました。
これらの3つの基本的な前提により、Ledgerをあらゆる状況に簡単に適応させることができます。たとえば、Ledgerは通貨と商品の両方を扱うことができます。これにより、支出習慣を追跡するだけでなく、投資を追跡する人々にも役立ちます。
さらに読む: Elfeedを使用してEmacsでRSSを使用する方法
Ledgerでのアカウントカテゴリの定義
レジャーの各取引のカテゴリは完全に任意であることに注意することが重要です。ただし、個人の財務を追跡する一般的な慣行は、5つの部分に分けることができます:
- 資産アカウントは、あなたが所有する商品や通貨です。これは単一の通貨または通貨、株式、アイテムの在庫の混合である可能性があります。
- 費用アカウントは、あなたが資産で購入した商品です。
- 収入アカウントは、あなたの富の源からお金を引き出す場所です。たとえば、受け取る給与をこのアカウントに添付できます。
- 負債アカウントは、現在あなたが負っているすべての商品を割り当てる場所です。
- 資本アカウントは、現在の純資産を決定するために使用できる特別なアカウントです。これは、Ledgerでのオープニングバランスを作成する際に一般的に使用されます。
各取引をさらに指定するには、これらの5つのカテゴリの後にコロン(:)を追加できます。たとえば、Expenses:Food:Lunchというラベルの取引は、3階層の階層で表すことができます。

さらに読む: Emacsを改善するために使用できる5つの隠れた機能
Ledgerのインストール
これを念頭に置いて、Ledgerのインストールは簡単です。ほとんどのLinuxディストリビューションのリポジトリにあります。たとえば、DebianやUbuntuではaptを使用してledgerをインストールできます:
sudo apt install ledgerFedoraではdnfを使用できます:
sudo dnf install ledgerArch Linuxではpacmanを使用できます:
sudo pacman -S ledger私の場合、Debianを使用しているので、aptを通じてledgerをインストールします。

さらに読む: EmacsでERCを使用してIRCを使用する方法
Emacsでのレジャーモードの使用
EmacsでLedgerプログラムを使用するには、そのコンパニオンパッケージであるレジャーモードをインストールする必要があります。このパッケージはデフォルトのELPAリポジトリにあります。そのため、Emacsのパッケージマネージャーを通じてすでにインストールできます。

- それを行うには、Alt + Xを押して
package-installと入力します。これにより、Emacsに追加したいパッケージを入力できるコマンドバッファが表示されます。ledger-modeと入力します。 - そこから、Emacsはパッケージのソースコードをダウンロードしてコンパイルします。その後、レジャーモードを通じてEmacsでLedgerを使用できるようになります。

Emacsでの最初のレジャーの作成
デフォルトでは、Emacsが.ledgerで終わるファイルを開くと、レジャーモードが自動的に有効になります。
そのため、Control + X、Control + Fを押してEmacsで独自のレジャーファイルを作成し始めることができます。
これにより、作成したいファイルの名前を入力できるバッファが開きます。
example.ledgerと入力します。その後、Emacsは現在のディレクトリに「example.ledger」ファイルを作成し、それを開きます。ここから、取引でレジャーファイルを埋め始めることができます。
さらに読む: Emacsで美しいBeamerスライドを作成する方法
Emacsでのオープニングバランスの作成
Ledgerで財務を追跡し始めるには、まず現在の残高を提供する必要があります。これは、現在の資産と負債を差し引くことで行えます。たとえば、これは資産と負債を持つ人のオープニングバランスです:
2022/02/10* Opening Balance
Assets:Bitcoin:Savings 0.045 BTC
Assets:Bitcoin:Checking 0.00050712 BTC
Assets:Fiat:Checking 15,000.00 PHP
Assets:Fiat:Savings 255,944.00 PHP
Liabilities:Fiat:Car Loan -450,000.00 PHP
Liabilities:Fiat:Credit Payable -5,000.00 PHP
Liabilities:Fiat:Home Loan -755,831.34 PHP
Equity:Opening Balanceオープニングレジャーエントリの構造は、上記の例と似ていますが、1つの重要な違いがあります。ここでは、Ledgerにこの取引がすでに「クリア」であることを伝えるために、エントリタイトルの前にアスタリスクを追加しました。これは、Ledgerがこれらのアカウントから追加および差し引くことができることを意味します。
現在の残高を確認する
完了したら、Ledgerがファイルを正しく検出するかどうかをテストできます。
- それを行うには、Control + C、Control + O、Control + Rを押します。これにより、Ledgerモードがレポートを生成します。
balと入力して、実行中の残高を表示します。

- これを行うと、Ledgerファイルに追加したすべてのアカウントの階層が生成されます。これらはすべて、最終行で合計がゼロになるはずです。
新しい取引を追加する
これが完了したら、レジャーファイルに新しい取引を追加できます。
- Control + C、Control + Aを押すことで、Ledgerモードに新しい取引を作成したいことを伝えます。
- その後、この取引の日付を尋ねられます。これは、特定の日付の後にクリアされる小切手を発行する場合に便利です。私の場合、現在の日付を使用したいので、ここでEnterを押します。

- そこから、Ledgerモードは以前に記録された取引の名前を尋ねます。この機能は、定期的な支払いを行っていて、以前の取引をコピーしたい場合に使用できます。私の場合、新しい取引を作成したいので、ここでもEnterを押しました。

- これにより、Ledgerモードは現在の日付で新しい空白行を作成します。ここから、実行したい取引を追加できます。たとえば、オープニングバランスの後に次の取引を追加しました:
2022/02/10* Opening Balance
Assets:PHP:Checking 5,000.00 PHP
Assets:PHP:Savings 10,000.00 PHP
Liabilities:PHP:Credit Payable -5,000.00 PHP
Equity:Opening Balance
2022/02/11 My First Transaction
Expenses:Food:Snack 250.00 PHP
Assets:PHP:Checking -250.00 PHP
さらに読む: Linux用の7つの優れたUSENETリーダー
基本レポートの生成
- 上記で説明したように、Control + C、Control + O、Control + Rを押してレポートを生成できます。ただし、
balの他にも、Ledger内で異なるレポートを生成するためのいくつかの他のコマンドを使用できます。 - たとえば、
accountとアカウント名を入力して、特定のカテゴリのアカウントステートメントを作成できます。私の場合、「Assets」と入力して、資産カテゴリのステートメントを作成しました。

- 一方、
payeeと入力して、提供した文字列でタイトル付けされたすべての取引を表示できます。たとえば、「snack」と入力して、スナックという単語を含むすべての取引を表示できます。

- 最後に、
regと入力して、全体のレジャーの登録レポートを生成できます。これは、Ledgerが各商品を追跡し、それらがどのようにバランスを取るかを示すより詳細な残高レポートです。

おめでとうございます!これで、Emacsを使用して財務を追跡する方法がわかりました。また、Ledgerプログラムについて学び、財務状況に関する詳細なレポートを作成する方法も学びました。
さらに読む: 生産性を向上させるための5つの便利なEmacsパッケージ
よくある質問
1. Ledgerが私のレジャーがバランスしていないというエラーを出しています。何が間違っていたのでしょうか?
これはいくつかの問題が原因である可能性があります。ただし、最も一般的なものは、Ledgerで取引を閉じるのを忘れたことです。これを修正する1つの方法は、負の値を持たない取引がないか確認することです。
Ledgerにおける負の値は、アカウントから金額を引き出すことを意味します。一方、正の値はそれに追加することを意味します。これらの2つの値は資産の流れを表し、Ledgerでアカウントのバランスを取るために必要です。
これにより、Ledgerで行うすべての取引には、正の値と負の値が必要です。
2. Ledgerは実世界の資産でのみ使用できますか?
まったくありません。上記で説明したように、Ledgerで使用されるすべてのアカウントは完全に任意です。これは、このガイドの例が実世界の資産を指している一方で、Ledgerを使用して仮想資産を追跡することもできることを意味します。
たとえば、これは人気のMMOゲームEVE Onlineで資産を追跡するレジャーの抜粋です:
2022/01/04 Venture Profits
Main:Assets:Liquid:ISK 150,000,000.00 ISK
Alt 1:Income:Ore Mining -10,000,000.00 ISK
Alt 1:Income:Station Trading -40,000,000.00 ISK
Alt 2:Income:Data Running (0.0)-100,000,000.00 ISK
2022/01/07 Upkeep Costs
Alt 1:Expenses:Ship Insurance 10,000.00 ISK
Alt 2:Expenses:New Ship 53,450,000.00 ISK
Main:Assets:Liquid:ISK -53,460,000.00 ISK3. 銀行明細書のように取引の順序を逆にすることは可能ですか?
はいといいえ。Ledgerが作成するレポート内で取引の順序を逆にすることはできます。ただし、Ledgerファイル内の取引の順序を逆にすることはできません。前者を行うには、レポートバッファ内でShift + Rを押してその順序を逆にします。
画像クレジット: Unsplash