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는 훌륭한 보조 도구입니다. 스프레드시트 없이도 장부를 관리할 수 있으며, 작성한 장부 데이터를 Emacs의 다른 기능들과 함께 활용할 수도 있습니다.

Emacs는 상호 운용성(interoperability)이라는 개념 위에서 동작합니다. 즉, Emacs 안에서 만든 데이터는 다른 어떤 패키지에서도 재활용할 수 있습니다. Ledger Mode 역시 마찬가지로, 사용자가 장부에 작성한 데이터를 Emacs의 다른 도구들과 결합해 사용할 수 있게 해줍니다.

Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법

예를 들어, 보관된 이메일과 장부 파일을 함께 연결하는 Org Mode 문서를 만들 수 있습니다. 뿐만 아니라 장부 항목을 이메일에 복사하거나 그 반대로 옮기는 것도 손쉽게 가능합니다. 이것이 가능한 이유는 Ledger Mode의 모든 항목이 일반 텍스트이기 때문이며, Emacs는 텍스트를 어떤 버퍼로든 쉽게 이동시킬 수 있습니다.

Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법

Ledger 유틸리티란 무엇인가

앞서 언급했듯이, Emacs의 Ledger Mode는 단지 Ledger 명령줄 유틸리티에 접근하기 위한 인터페이스입니다. 따라서 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가 일반 텍스트 파일에서 확인하는 세 가지 요소는 다음과 같습니다:

  • 제목 줄: 거래 날짜와 이름을 지정합니다. 위 예시에서는 2월 16일에 'Expenses' 항목을 추가했습니다.
  • 계정 목록: 돈이 어디에서 왔고 어디로 갔는지 보여줍니다. 여기서는 현금 자산을 사용해 지출 계정으로 이동시켰습니다.
  • 금액: 이동한 금액입니다. 점심과 간식으로 두 번 지출했지만, 하루가 끝날 때 자산 계정에서 한 번에 차감됩니다.

이 세 가지 기본 전제 덕분에 Ledger는 어떤 상황에도 유연하게 대응할 수 있습니다. 예를 들어 Ledger는 통화와 상품(코모디티)을 모두 처리할 수 있으므로, 소비 습관뿐 아니라 투자까지 추적하려는 사람에게도 유용합니다.

Ledger에서 계정 카테고리 정의하기

주목할 점은 Ledger에서 각 거래의 카테고리는 완전히 임의적으로 정할 수 있다는 것입니다. 다만 개인 재정을 추적하는 일반적인 관행은 다음 다섯 가지로 나눌 수 있습니다:

  • Assets(자산): 본인이 보유한 통화와 상품입니다. 단일 통화일 수도 있고, 여러 통화·주식·물품 재고가 섞여 있을 수도 있습니다.
  • Expenses(지출): 자산으로 구매한 상품들이 기록되는 계정입니다.
  • Income(수입): 재원에서 돈을 끌어오는 곳입니다. 예를 들어 받은 급여를 이 계정에 기록할 수 있습니다.
  • Liabilities(부채): 현재 갚아야 하는 상품들을 배정하는 계정입니다.
  • Equity(자본): 현재 순자산을 산정하는 데 사용하는 특수 계정입니다. 주로 Ledger에서 초기 잔액(opening balance)을 설정할 때 활용됩니다.

각 카테고리 뒤에 콜론(:)을 붙여 거래를 더 세분화할 수 있습니다. 예를 들어 Expenses:Food:Lunch라는 라벨의 거래는 3단계 계층 구조로 표현됩니다.

Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법

Ledger 설치하기

설치는 매우 간단합니다. 대부분의 리눅스 배포판 저장소에서 찾을 수 있습니다. 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 프로그램을 사용하려면 companion 패키지인 Ledger Mode를 설치해야 합니다. 이 패키지는 기본 ELPA 저장소에서 제공되므로, Emacs의 패키지 관리자를 통해 바로 설치할 수 있습니다.

Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법
  1. Alt + X를 누른 후 package-install을 입력합니다. 그러면 명령 버퍼가 열리고, 추가할 패키지 이름을 입력할 수 있습니다. ledger-mode를 입력하세요.
  2. 그러면 Emacs가 패키지 소스 코드를 다운로드하고 컴파일합니다. 완료되면 Ledger Mode를 통해 Emacs 안에서 Ledger를 사용할 수 있습니다.
Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법

Emacs에서 첫 장부 파일 만들기

기본적으로 Ledger Mode는 Emacs가 .ledger 확장자로 끝나는 파일을 열면 자동으로 활성화됩니다.

  1. 따라서 Control + X, Control + F를 눌러 새 장부 파일을 만들 수 있습니다.
  2. 버퍼가 열리면 생성할 파일 이름을 입력합니다. example.ledger라고 입력하세요.
  1. 그러면 Emacs가 현재 디렉터리에 "example.ledger" 파일을 생성하고 열어줍니다. 이제 이 파일에 거래 내역을 채워 넣기 시작하면 됩니다.

Emacs에서 초기 잔액 설정하기

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. 그러면 장부 파일에 추가한 모든 계정의 계층 구조가 출력됩니다. 마지막 줄에서 모든 합계가 0이 되어야 합니다.

새 거래 추가하기

이제 장부 파일에 새 거래를 추가할 수 있습니다.

  1. Control + C, Control + A를 누릅니다. 그러면 Ledger Mode에 새 거래를 만들고 싶다고 알려줍니다.
  2. 거래 날짜를 묻는 메시지가 나타납니다. 특정 날짜 이후에만 처리되는 수표를 발행하는 경우 유용합니다. 필자는 현재 날짜를 사용할 것이므로 Enter를 눌렀습니다.
Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법
  1. 다음으로 Ledger Mode는 이전에 기록된 거래의 이름을 물어봅니다. 반복 결제처럼 이전 거래를 그대로 복사하고 싶을 때 이 기능을 활용할 수 있습니다. 필자는 새 거래를 만들 것이므로 여기서도 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 외에도 ledger 내부에서 다양한 보고서를 만드는 여러 명령을 사용할 수 있습니다.
  2. 예를 들어 account와 계정 이름을 입력하면 특정 카테고리에 대한 계정 명세서를 만들 수 있습니다. 필자는 "Assets"을 입력해 자산 카테고리의 명세서를 생성했습니다.
Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법
  1. 반면 payee를 입력하면 지정한 문자열이 포함된 제목의 모든 거래를 표시합니다. 예를 들어 "snack"을 입력하면 snack이라는 단어가 들어간 거래만 출력됩니다.
Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법
  1. 마지막으로 reg를 입력하면 전체 장부에 대한 등록부(register) 보고서가 생성됩니다. 이는 더 상세한 잔액 보고서로, Ledger가 각 상품별로 어떻게 수지가 맞는지 추적해 보여줍니다.
Emacs에서 Ledger Mode로 재정을 체계적으로 관리하는 방법

축하합니다! 이제 Emacs를 활용해 재정을 추적하는 방법을 알게 되었습니다. 또한 Ledger 프로그램에 대해 배우고, 이를 통해 재정 상태에 대한 상세한 보고서를 만드는 방법도 익혔습니다.

자주 묻는 질문

1. Ledger에서 장부 균형이 맞지 않는다는 오류가 발생합니다. 무엇이 잘못된 건가요?

여러 가지 원인이 있을 수 있지만, 가장 흔한 원인은 거래를 닫지 않은 것입니다. 해결 방법 중 하나는 음수 값이 없는 거래가 있는지 확인하는 것입니다.

Ledger에서 음수 값은 계정에서 금액을 꺼내는 것을 의미하고, 양수 값은 계정에 금액을 더하는 것을 의미합니다. 이 두 값은 자산 흐름을 나타내며, 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을 누르면 보고서의 순서를 반대로 정렬할 수 있습니다.