Linux
 Computer >> コンピューター >  >> システム >> Linux

EmacsのLedger Modeを使って財務を効率的に管理する方法

EmacsのLedger Modeを使って財務を効率的に管理する方法

Ledger Modeは、コマンドライン会計ツール「Ledger」のためのEmacsパッケージです。これにより、Emacsユーザーは普段使い慣れたテキストエディタから、Ledgerの強力な機能を快適に活用できるようになります。

なぜEmacsでLedger Modeを使って帳簿付けをするのか?

Ledger Modeはシンプルかつ直感的に使えるのが特徴です。財務の収支を自動的にバランスチェックし、記録に問題があれば通知してくれます。さらに、支出や収入源をカテゴリ分けでき、そのデータをパッケージ自体から並べ替えたり分析したりすることも可能です。

EmacsのLedger Modeを使って財務を効率的に管理する方法

端的に言えば、Emacsを生産性向上ツールとして使っている人にとって、Ledger Modeは素晴らしい追加機能となります。スプレッドシートが不要になるだけでなく、LedgerのデータをEmacsの他の機能と組み合わせて活用することもできます。

Emacsは相互運用性を重視した設計思想を持っています。つまり、Emacs上で作成されたあらゆるデータは、他のパッケージでも再利用できるのです。Ledger Modeも同様に、帳簿用に書いたデータをEmacs内の他のツールと組み合わせて利用できます。

EmacsのLedger Modeを使って財務を効率的に管理する方法

たとえば、アーカイブ済みのメールやLedgerファイルへのリンクを含むOrg Modeドキュメントを作成できます。さらに、Ledgerのエントリをメールにコピーしたり、その逆を行ったりすることも簡単です。これは、Ledger Modeのエントリがすべてプレーンテキストであり、Emacsならどのバッファにも簡単に移動できるためです。

EmacsのLedger Modeを使って財務を効率的に管理する方法

Ledgerユーティリティとは

前述のとおり、EmacsのLedger Modeは、Ledgerというコマンドラインユーティリティへアクセスするための手段にすぎません。そのため、Ledgerプログラムが何者で、デフォルトで何ができるのかを理解しておくことが重要です。

Ledgerの仕組み

Ledgerは、プレーンテキスト形式の帳簿を読み込み、そこから会計レポートを生成するシンプルなプログラムです。従来の会計ソフトウェアとは異なり、データベースファイルの作成や変更を行いません。このため、財務状況を把握するための軽量かつ柔軟なソリューションとなっています。

EmacsのLedger Modeを使って財務を効率的に管理する方法

この仕組みを実現するために、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回に分けて移動していますが、最終的には資産から一度に引き落とされています。

この3つの基本原則があるおかげで、Ledgerはあらゆる状況に柔軟に対応できます。たとえば、通貨だけでなく商品(コモディティ)も扱えるため、支出傾向の追跡だけでなく、投資の管理にも役立ちます。

Ledgerにおける勘定カテゴリの定義

重要なポイントとして、Ledgerにおける取引のカテゴリは完全に自由に定義できます。ただし、個人の財務管理では一般的に以下の5つに分類されます。

  • Assets(資産):自分が所有している通貨や商品の勘定です。単一の通貨でも、複数の通貨・株式・物品在庫の組み合わせでも構いません。
  • Expenses(支出):資産を使って購入した商品を記録する勘定です。
  • Income(収入):収入源からお金を受け取る際に使用する勘定です。たとえば、受け取った給与をこの勘定に紐づけます。
  • Liabilities(負債):現在負っている債務を割り当てる勘定です。
  • Equity(純資産):現在の純資産額を算出するために使う特別な勘定です。Ledgerで期首残高を作成する際によく使用されます。

これら5つのカテゴリの後にコロン(:)を付けることで、取引をさらに細分化できます。たとえばExpenses:Food:Lunchというラベルの取引は、3階層のヒエラルキーとして表現できます。

EmacsのLedger Modeを使って財務を効率的に管理する方法

Ledgerのインストール

それを踏まえたうえで、Ledgerのインストールは非常に簡単です。ほとんどのLinuxディストリビューションのリポジトリで入手できます。たとえばDebianやUbuntuでは、aptを使って次のようにインストールします。

sudo apt install ledger

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

sudo dnf install ledger

Arch Linuxの場合はpacmanを使用します。

sudo pacman -S ledger

筆者の環境はDebianなので、apt経由でledgerをインストールします。

EmacsのLedger Modeを使って財務を効率的に管理する方法

EmacsでのLedger Modeの使い方

EmacsでLedgerプログラムを使用するには、専用パッケージのLedger Modeをインストールする必要があります。このパッケージはデフォルトのELPAリポジトリで提供されているため、Emacsのパッケージマネージャーから直接インストールできます。

EmacsのLedger Modeを使って財務を効率的に管理する方法
  1. Alt+Xを押してpackage-installと入力します。するとコマンドバッファが開くので、追加したいパッケージ名を入力します。ここではledger-modeと入力します。
  2. するとEmacsがパッケージのソースコードをダウンロードしてコンパイルします。完了後、Ledger Modeを通じてEmacs上でLedgerを使用できるようになります。
EmacsのLedger Modeを使って財務を効率的に管理する方法

Emacsで最初の帳簿ファイルを作成する

デフォルト設定では、Emacsが拡張子「.ledger」のファイルを開くと、Ledger Modeが自動的に有効になります。

  1. そのため、Control+X、続けてControl+Fを押すことで、Emacs上で独自の帳簿ファイルを作成し始められます。
  2. ファイル名を入力するバッファが開くので、example.ledgerと入力します。
  1. すると、Emacsが現在のディレクトリに「example.ledger」ファイルを作成して開きます。ここから取引内容を帳簿ファイルに入力していきましょう。

期首残高を登録する

Ledgerで財務の追跡を始めるには、まず現在の残高を登録する必要があります。これは、現在有しているものと負っているものをEquity(純資産)勘定に振り分けることで行います。以下は、複数の資産と負債を持つ人の期首残高の例です。

  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

期首残高エントリの構造は前述の例と似ていますが、重要な違いが一つあります。エントリタイトルの前にアスタリスク(*)を付けることで、この取引がすでに「確定(clear)」していることをLedgerに伝えています。これにより、Ledgerはこれらの勘定に対して加算・減算を行えるようになります。

現在の残高を確認する

登録が完了したら、Ledgerがファイルを正しく認識しているかテストしてみましょう。

  1. Control+C、Control+O、Control+Rを押します。これによりLedger Modeがレポート生成を促します。
  2. balと入力すると、残高の一覧が表示されます。
EmacsのLedger Modeを使って財務を効率的に管理する方法
  1. 実行すると、帳簿ファイルに登録したすべての勘定の階層構造が表示されます。最終行で合計がゼロになっているはずです。

新しい取引を追加する

これで準備が整いました。次は新しい取引を帳簿ファイルに追加しましょう。

  1. Control+C、Control+Aを押します。これにより、新しい取引を作成したいことをLedger Modeに伝えます。
  2. 次に、取引の日付を尋ねられます。一定日数後に決済される小切手などを発行する場合に便利な機能です。筆者は当日の日付を使いたいので、ここではEnterを押します。
EmacsのLedger Modeを使って財務を効率的に管理する方法
  1. 続いて、過去に記録した取引の名前を尋ねられます。定期的な支払いなどで、以前の取引をコピーして流用したい場合に便利な機能です。筆者は新しい取引を作りたいので、ここでもEnterを押しました。
EmacsのLedger Modeを使って財務を効率的に管理する方法
  1. すると、Ledger Modeが当日の日付付きの空白行を作成します。ここから目的の取引を入力できます。たとえば筆者は、期首残高の後に次のような取引を追加しました。
  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
EmacsのLedger Modeを使って財務を効率的に管理する方法

基本的なレポートを生成する

  1. 前述のとおり、Control+C、Control+O、Control+Rを押せばレポートを生成できます。bal以外にも、さまざまなコマンドを使って異なる種類のレポートを生成できます。
  2. たとえばaccountに続けて勘定名を入力すると、特定のカテゴリの明細書を作成できます。筆者は「Assets」と入力して、資産カテゴリの明細書を作成しました。
EmacsのLedger Modeを使って財務を効率的に管理する方法
  1. 一方、payeeと入力すると、指定した文字列をタイトルに含むすべての取引が表示されます。たとえば「snack」と入力すれば、「snack」という単語を含む取引だけを表示できます。
EmacsのLedger Modeを使って財務を効率的に管理する方法
  1. 最後に、regと入力すると、帳簿全体のレジスターレポートが生成されます。これはより詳細な残高レポートで、Ledgerが各商品(コモディティ)を追跡しながら、それらがどのように収支バランスしているかを確認できます。
EmacsのLedger Modeを使って財務を効率的に管理する方法

おめでとうございます!これであなたも、Emacsを使って財務を追跡できるようになりました。さらに、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 ISK

3. 銀行明細のように取引の順序を逆に表示できますか?

答えは「はい」であり「いいえ」です。Ledgerが生成するレポート内の取引順序は逆にできますが、帳簿ファイル自体の取引順序を逆にすることはできません。前者を行うには、レポートバッファ上でShift+Rを押すと、表示順序が反転します。


  1. Windows 10 PCでアプリを管理・最適化する方法

    パソコン上で動作するソフトウェアは、大きく分けて「OS(オペレーティングシステム)」と「アプリケーション」の2種類があります。多くのユーザーのPCには、効率性の高いOSとしてMicrosoft Windowsが搭載されていますが、必要なアプリがすべて標準で組み込まれているわけではありません。そのため、目的に応じてサードパーティ製アプリをインストールすることになります。 本記事では、PCにインストール済みのアプリを管理する方法を解説します。アプリ管理には、不要になったアプリのアンインストールや、スタートアップメニューからの除外などが含まれます。これらを実現するために活用したいのが、最適化ツール「

  2. Microsoft OneDriveでファイルを管理・同期・共有する方法【初心者向けガイド】

    Googleが「Google Drive」を、Appleが「iCloud」を提供しているように、Microsoftも「OneDrive(旧称:SkyDrive)」というクラウドストレージサービスを展開しています。近年、個人ユーザーや企業の間では、高価なハードウェアへの依存を減らし、ファイルやドキュメントをクラウド上で管理するスタイルが主流になりつつあります。 クラウドサービスへの需要が高まる中、OneDriveも機能拡張を続けています。最新版では、ドラッグ&ドロップによるファイルや写真の簡単な転送、リアルタイムでの共同編集(共同オーサリング)、ファイルのプレビュー機能、より多くのファイル形式へ