3 ポイント 投稿者 GN⁺ 2024-09-17 | 1件のコメント | WhatsAppで共有
  • Plain Text Accounting(PTA) は、プレーンテキストファイルに会計データを記録し、Ledger、hledger、Beancount のようなコマンドライン志向のツールで処理する方式であり、このサイトは関連資料を一か所に集めたポータル
  • コミュニティ活動は Matrix/IRC、フォーラム、Reddit、Lemmy、Hacker News、Mastodon、X、Bluesky などに分かれており、質問・ニュース・プロジェクト別の会話を複数の経路で追うことができる
  • 学習資料は、アプリ比較、公式ドキュメント、会計の基礎、入門書、チートシート、クックブック、FAQ、スライド、動画として整理されており、PTA を初めて使う人でも段階的に取り組める
  • アプリのエコシステムは Ledger、Beancount、hledger を中心に複数の実装と機能マトリクスを提供しており、代表的な 3 つのツールはそれぞれ C++/Python/Haskell ベースで、2025〜2026 年のリリース記録がある
  • インポート・変換、エディタープラグイン、請求書、価格取得、レポーティング、時間記録、UI、ワークフロー、ライブラリまでつながっており、プレーンテキスト会計データをさまざまな作業環境に組み込める

PTA の概念と plaintextaccounting.org の役割

  • Plain Text Accounting は、プレーンテキストファイルと Ledger、hledger、Beancount のような効率的でコマンドライン志向のソフトウェアを使って簿記と会計を行う方式
  • plaintextaccounting.org は PTA コミュニティの ツール、ドキュメント、実践例 へのポータルの役割を果たす
  • サイトのリポジトリアップデートを受け取ることができ、財務レポートと支援案内もあわせて提供される

コミュニティと議論チャンネル

  • リアルタイム会話は Matrix の #plaintextaccounting、plaintextaccounting Matrix space、Libera Chat の #plaintextaccounting IRC チャンネルへとつながっている
  • 議論とニュースは複数の公開チャンネルに分散している
  • Stack Exchange では ledger-clihledger のタグおよび検索リンクが提供されている
  • プロジェクト別メーリングリストとチャット、This Week In Hledger もリンクされている

ドキュメントと学習資料

  • アプリ比較 資料には、PTA アプリ一覧、機能マトリクス、「どの PTA アプリを選ぶべきか」という FAQ、Syntax Quick Reference が含まれる
  • アプリ公式ドキュメントとして LedgerhledgerBeancount、rustledger、Ledger(Go)、Tackler、pta のドキュメントがリンクされている
  • 会計の基礎 資料には、PTA FAQ、hledger の Accounting basics/links、Beancount の Double-Entry Counting Method、「Accounting for Computer Scientists」などが含まれる
  • 入門資料は出発点ごとに分かれている
  • チートシート、クックブック、FAQ、スライド、動画資料も別セクションとして整理されており、動画セクションには YouTube で PTA 動画を見つけにくいというメモがある

主要 PTA アプリと機能比較

  • PTA を始める際には、サイトに列挙されたアプリのうち 1 つ以上を試すことができ、一般的にアプリ間での データ移行 が可能
  • 現在の主要アプリ一覧には複数のプロジェクトがまとめられている
    • Ledger: C++、2003 年開始、2025 年最終リリース、約 245 人のコミッター、約 5.9k stars
    • Beancount: Python、2008 年開始、2026 年最終リリース、約 103 人のコミッター、約 5.5k stars
    • hledger: Haskell、2007 年開始、2026 年最終リリース、約 194 人のコミッター、約 4.4k stars
    • Transity、Ledger(Go)、Abandon、zhang、Tackler、rustledger、knut、acc、ledg なども現在の一覧に含まれる
  • 過去または非アクティブなプロジェクトは、placc、budget-cli、mynt、awk-pta、pta、blossom、.Net Ledger、monescript、Penny、UMM、cl-ledger などとして別に整理されている
  • Ledger、hledger、Beancount の 機能マトリクス は 2024-09 時点で更新されており、ユーザーインターフェース・インストール・ヘルプ・入出力形式・コマンド・設定・拡張性・勘定科目名・予算・チャート・価格取得・クエリ・検証などを比較している
  • 代表的な違いは、ツール選定にすぐ影響する項目に集中している
    • CLI は Ledger の ledger、hledger の hledger、Beancount の beanquery がリンクされている
    • 容易なインストールと設定は Ledger/hledger では yes、Beancount では no と表示される
    • hledger は text/html/csv/tsv/fods/beancount/sql/json の出力形式を提供する
    • Beancount の検証は常に厳格と表示され、Ledger と hledger は設定可能とされている

ソフトウェアエコシステム

  • AI セクションには、hledger を使うローカルファーストのマルチモデル AI エージェント accountant24、hledger と Obsidian vault で Claude Code をエージェント層として使う設定記事が含まれる
  • 代替ディストリビューション・設定として Full-fledged hledger、hledger-flow、Lazy Beancount、hledger-youtube-business、rtrLEDGER、docker-finance が整理されている
  • データ変換・インポート は大きな比重を占め、Ledger と hledger の組み込み CSV 変換のほか、Beancount v2 の import ツール、banks2ledgerbeancount-importbeancount2ledgerhledger2beancountledger2beancountplaid2text などが列挙されている
    • GnuCash、Intuit/QuickBooks/QIF、KMyMoney、YNAB から *ledger または Beancount へ移行するツールも別のサブセクションに整理されている
  • データ生成ツールは、価格トランザクション、減価償却、利息、定期取引、キャピタルゲイン/ロス postings などを作る作業に使われる
  • エディタープラグインは Emacs、JetBrains IDE、Nano、Sublime、TextMate、Vim、VS Code 向けに分かれている
    • 例: ledger-modebeancount-modehledger-modevim-ledgervim-beancounthledger-vscodevscode-beancount
  • フォーマットツールとして beancount-blackbeancount-black web apphledger-fmt が列挙されている
  • 請求書ツールとしては、hledger timedot ファイルから請求書を生成する Go ツール kairos が紹介されている

UI、レポーティング、ワークフロー、ライブラリ

  • 価格取得 ツールには、Beancount の bean-pricehledger-stockquotesledger-get-pricespricehist、Yahoo Finance ベースの株価・為替取得ツールなどが含まれる
  • レポーティングツールは、予算、資産分析、差分レポート、内部収益率、チャート、Sankey、PDF 出力、キャピタルゲイン計算などへ広がっている
  • 時間記録ツールは、org、Taskwarrior hook、Toggl CSV、timeclock 変換および hledger ベースの時間記録例を含む
  • ターミナル UI は hledger addhledger-uihledger-iaddbean-addledger xactpuffinregdel などにより取引の入力・照会・編集を支援する
  • GUI、Web、モバイル UI も個別ツールとしてリンクされている
    • Web: favahledger-webPaisaBeanHub
    • モバイル: Beancount Mobile CE、beancount-mobile、NanoLedger、cashier、cone、MoLe
    • GUI: fruit-credits、Ledgera、Prudent、Surebeans など
  • ワークフローセクションでは、CSV から hledger journal を生成したり、Docker ベースで伝統的金融・暗号資産の財務を追跡・レポートしたりする構成を扱う
  • ライブラリセクションには、Beancount パーサー、BeanHub API、hledger-lib、hledger-web JSON API、node-hledger、pyhledger など、PTA ファイルをパース・照会・レポート・連携するための開発用コンポーネントがまとめられている

1件のコメント

 
GN⁺ 2024-09-17
Hacker Newsの意見
  • 即時の厳密な分類を求めるシステムは、人によっては合わない。以前働いていた会社では、まず iPhoneのメモに -50 Alice tools+20 Bob returned loan のように短く書き、あとでスクリプトが日付・キーワード・相手・内部分析項目をパースして複式簿記のテンプレートに変換する2段階方式を使っていた
    スクリプトが解釈できなかった項目は手動で分類し、必要ならルール一覧に追加していた。また、Alice と Bob が同じ語彙を合わせる必要がないように、人ごとの対応表も用意していた
    お金が動くたびに、列に並んでいたり運転中だったり会話中だったりする人が Cat1:cat2:cat3 のような形式を毎回埋めるとは想像しにくい。結局また短いメモやチャットに戻るか、1日の終わりではなくおそらく週末に「思い出して」埋めようとする可能性が高い

    • そのやり方も結局 プレーンテキスト会計のように聞こえる。元帳ファイルに直接入力せず KMyMoney に入れてからスクリプトで ledger ファイルに変換する形で、自分もほぼ同じように使っている
      テキストベースのツールなら、iPhoneのメモを受け取って ledger 形式に変換するスクリプトをつなぐなど、望むワークフローを自由に作れるので、不満として見るのは少し不思議に感じる
    • うちでも ledger ファイルを直接打つことはなく、自由形式メモを変換する代わりに、銀行アプリと Zoho の経費報告アプリの メモ欄 に適用する勘定科目を書いている
      四半期ごとに銀行口座、クレジットカード、Zoho から CSV をダウンロードし、Ruby スクリプトがメモ欄を見て ledger ファイルに変換する。スクリプトと結果は少しずつ手直しが必要だが、95% 以上は自動化されている
      おまけに、銀行から受け取った残高と一致するか、項目が現在期間内にあるかといった 整合性チェック も ledger ファイルに追加している
  • 自営業を始めた瞬間からほぼ20年間 ledger-cli を使ってきたが、完璧ではないにせよ非常に満足している。すべてがプレーンテキストなのでスクリプトで処理でき、VIM で読めて、データも簡単に取り出せる
    現在運営中の会社の1つの ledger ファイルは、2016年以降の取引を含む 2MB のプレーンテキストだ。勘定科目や分類を非常に細かくすることには大きな価値を感じなかったが、全体を追跡するにはなくてはならない道具だった
    ledger のようなツールが使う 複式簿記 を学ぶのも楽しく、振り返れば難しくはなく、一生役立つ技能のように感じる

    • まだこうしたツールは使っていないが、QuickBooks と銀行がいくつかの取引を取りこぼしていて整理中なので、この記事はちょうどいいタイミングで目に入った
      勘定科目・分類戦略としては、カナダ歳入庁が税務申告書で求める費用分類に合わせる方法を使っている。最初はホスティング費用、試作・製造費用のような論理的分類を作っていたが、数年間 CRA 分類に再マッピングしていくうちに、最初から税務分類に合わせておくほうが年末申告をずっと簡単にすると気づいた
    • 家を売ったとき、エスクロー会社が締めの精算として約 3,000 ドルの払い戻し小切手を送ってきたが、その小切手を受け取った覚えがなかった。5年後に ledger-cli を使い始めて、ようやくその事実に気づいた
    • ledger に一票。これまで使った中で最高で、スクリプト化できる点が非常に大きい。使い始めてから2年以上、税務処理が正確になった
    • さらに考えると、最大の不満はプレーンテキスト全般の限界である 添付ファイルの欠如 だと思う。特定のファイルを参照する個人システムを作り、取引にファイルをドロップすると指定フォルダにコピーし、取引にタグを付ける Mac アプリも作った
      データが SQLite ならはるかに簡単に実装できただろうが、そうするとテキストエディタで直接修正する利点は失われる
  • LLM のおかげで、プレーンテキスト会計を継続するのがずっと楽になった。特に銀行明細を hledger に取り込む際、手入力を避けるのに役立っている
    銀行取引を hledger の勘定科目にマッピングする JSON ファイルを使っていて、新しいマッピングのない取引があると Python スクリプトが Claude 用のプロンプトを生成する。Claude は勘定科目一覧を見て新規取引のマッピングを提案し、それに基づいて hledger の仕訳を返す
    その後、別のスクリプトがその月の銀行取引の hledger 仕訳をきれいに出力し、数分手直しして確定する。以前なら脆い正規表現と条件分岐の塊になっていたはずのマッピング指示も、自然言語 で書ける

    • LLM が脆弱ではないと考えているのか? それに銀行情報を Anthropic に送るのもかなり大胆だ
  • Beancount を使いながら学ぶ過程、データ取り込みツールを書くこと、会計を自分で触る体験を楽しんだ。ただ、最後にデータを取り込んでからほぼ1年が経っていて、毎月やろうと思っていても、自動化がかなり進んでいてさえ 30〜60分かかるので面倒だ

    • 銀行が データのエクスポート を積極的に妨害しなければいいのにと思う。以前はログイン手順を OCR でリバースエンジニアリングし、誤った項目を整理するスクリプトを作っていたが、保守コストが高すぎた
      モバイル確認まで必要になって、結局あきらめた
    • GnuCash でもまったく同じ経験をした。毎週やるなら大丈夫だが、1〜3週間抜けるのはまだ耐えられても、それ以上過ぎると追いつく負担が雪だるま式に大きくなる
      自分も取り込みをしなくなって1年ほど経っていて、復活させるには数日に分けて1か月分ずつ上げていくように細かく区切る方法しか思いつかない
    • 少し気持ち悪さを許容できるなら Plaid は見てみる価値がある。個人用途には十分なテストティアがあり、接続口座も100件まで可能だった
      https://plaid.com/
    • teller.io を使うと Plaid より設定がずっと簡単だ。Chase銀行とクレジットカードの明細を Google Sheets に同期するのに使っている
  • 個人と複数の LLC の記帳・会計に ledger を使っている。ターミナルに慣れていて CLI を使いこなし、vim や emacs、sed/awk の基本、bash/python/perl/ruby でのスクリプティングをよくするなら、ledger と 複式簿記 を学んで移行したほうが、今のやり方よりずっと満足できる可能性が高い
    取引をすばやく取り込むには reckon が便利: https://github.com/cantino/reckon
    include で問題を分割するのもよい。bal --dc は米国の会計士には少しなじみがあるかもしれないが、ledger の負数の扱い方を正しく理解していないことが多く、むしろ DR/CR スタイルに変換するスクリプトをいくつか書くほうが簡単だった。相手にした会計士たちがどれほど抽象化を扱えないのか見て驚いた

    • 最初の 2 つのヒントには同意する。3 つ目もよさそうだが、必要になったことはない
      1 つだけ付け加えるなら、Makefile か似たもので全部まとめておけということ。アカウントごとに取引ファイルが多く分かれていて、正しいファイルを include するコマンドは長くなりがちだ
      各種グラフや要約スクリプトも、正確な構文を毎回覚えていられないが、make を使えば make cashflow, make balance 'A=Checking', make balance-plot 'A=retirement' のように呼び出せる
  • Ledger を基本チュートリアル以上の、より複雑な状況で効果的に使うための 実践レシピ を何本も書いた: https://felixcrux.com/blog/ledger-practices

    • ledger を多用している立場からすると、あのレシピは素晴らしい。顧客と仕入先を細かく追跡し、支払いや受取を特定のプロジェクトとその中の分類に割り当てるパターンを使っている
      銀行取引を取り込むときは、まず相手先名義の勘定に割り当て、スクリプトが ledger print で相手先ごとの第 2 の仕訳ファイルを作り、元取引を反転させたうえで Unknown プロジェクトと Unknown 分類のサブアカウントに一時的に入れる
      その後、帳簿担当者が取引を特定の請求書に対応付けて Project:Category 勘定に割り当て、必要なら 1 回の支払いを複数のプロジェクト/分類に分割する。すべての銀行取引ジャーナルと相手先ジャーナルを含めれば、ledger bal で記帳処理が完了したか確認できる
  • プレーンテキスト会計はすばらしいが、多くの人にとって最大の障壁は銀行データを 標準形式 でダウンロードすることだと思う
    銀行は CSV や Excel を超えるものを積極的にはサポートしないだろうし、Yodlee や Plaid のようなデータ集約プラットフォームはオープンソースや趣味ユーザーにやさしくない
    以前、Wesabe(https://en.wikipedia.org/wiki/Wesabe) という会社が、デスクトップで銀行同期を行うソフトウェアを作っていた。Mint.com に事実上押し負けたが、そのアプローチはいまでも印象に残っており、オープンソースでも実現できそうに思える

    • hledger には、かなり任意な CSV を取引に変換 するツールがある: https://hledger.org/1.40/hledger.html#csv
      まだ使ったことはないが、SaaS の記帳会社の銀行連携の問題を数日にわたって 4 時間も手伝わされたあとなら、喜んで時間をかけてみる気になる
      取引を照合するたびに、中身も見られず自分でも直せないシステムと格闘することになる。もう、払った労力に見合う価値があるのか疑わしくなってきたし、まともな道具さえあれば CSV を自分で扱うほうがよさそうだ。ちなみにその会社は「よくあること」だとして返金もしなかった
    • 最近 Paisa を見つけたが、基本的には ledger-cli の上に載った、なかなか良い UI だ。取り込みがとても楽で、CSV のようなファイルをアップロードしてプレビューを見たあと、各行を ledger のテキスト形式に変換するスクリプトを書けばよい
      lint もあり、結果が気に入ればスクリプトを保存していつでも再取り込みできる。株式のようなものを追跡するときには商品価格のダウンロードにも対応している
      チャートは自分の好みには十分汎用的ではないのでデータを別の場所に出力しているが、データ入力用としては優秀だ
    • 銀行が法的に提供しなければならない PDF 明細と CSV が一致しない ケースを経験した。しかも CSV には残高データがほとんどない
      そのため PDF をダウンロードしてデータを抽出しているが、必要以上に苦痛だ。機械が読みやすい PDF を提供するには、取引フィールド 3〜4 個と、日付・残高のような明細フィールド数個を、脆いヒューリスティクスなしに抜き出せるような簡単な規則に従うだけでよい
      ブランド入りで人間に読みやすい PDF と、機械に読みやすい PDF は両立する
    • 英国には、銀行データアクセスのための標準 API である Open Banking がある: https://www.openbanking.org.uk/
    • 私の国ではすべての取引が SMS で届くので、Tasker で SMS を拾って CSV ファイルに保存する仕組みを作った。その CSV は SyncThing でデスクトップに同期されるフォルダに入れていた
      そのデータを処理して会計システムに入れるつもりだったが実行できず、その後スマートフォンが壊れて Tasker のアクションも失ってしまった。もう一度実装する気力は残っていない
  • 関連ドメインはまだそのまま残っている。2023 年の記事: https://news.ycombinator.com/item?id=36022005、2021 年の記事: https://news.ycombinator.com/item?id=28420797、2016 年の記事: https://news.ycombinator.com/item?id=11164330
    この概念へのほかの言及は https://hn.algolia.com/?q=Plain+Text+Accounting でも見られる

  • 他の人たちがプレーンテキスト会計ツールを実際にどう使っているのか気になる。支出習慣を把握して行動を変えるために使っているのか、費用・収益・純資産の追跡用なのか、あるいは整然としたプロセスそのものに魅力を感じているのか知りたい
    この話題を見るたびに、完全に没頭したい衝動と、以前の試みを継続できなかった後ろめたさが同時に湧く。今は個人元帳を1か月半更新しておらず、後ろめたさのほうが大きい
    結局、自分がなぜこれを使うのか確信がないので、時間がたつと取引を記録するためだけに記録している感じになる

    • 私は即席のグループ精算にいつも使っている。3人で旅行するような状況では、その日かその週の後半に費用を分けるほうがずっと簡単で、債権債務関係をためておいて必要なときに精算すればいい。こうした雑然とした支出は、ほかの方法では追跡するのがとても難しい
      業務経費も似たようなものだ。機材やサービスの費用を自分のカードで支払い、あとで報告して現金や振込で返してもらう。ただし、一部の国や事業体では通用しない
      個人的な日常支出は、銀行記録と経験ですでに分かるので、会計までやる必要はない。感情的な動機ではなく、金銭的な動機が必要だ。会計をやめると友人が酒代で数百ドル無駄にしたり、会社がHDMIケーブル1本をただで持っていってしまったりすると分かっていれば、ためらわず金額を入力できる。個人会計がうまく続かないのは、失うものがお金ではなく分析だけだからだ
    • 自営業なので、Beancountを事業口座と株式ポートフォリオに使っている。より厳格なアプローチが気に入っているし、Web UIのFavaはレポートや可視化に便利だ
      Wiseの取引取り込みや為替レート追跡のような工程を自動化するスクリプトもいくつかある。ただ、日々の個人的な支出や予算管理に使うほどの規律はない
    • 支出習慣を変えるための動機づけツールとしては使っていないが、すべての口座と資産の記録を維持するのは好きだ。全体の財務状況をよりよく理解できるし、現金性の貯蓄口座の中に仮想口座を作って、自動車整備や保険のように償却していく項目ごとに残高を分けている
    • hledgerを複数の用途に使っている。顧客売掛金、食費・外食・本・雑誌購読のような支出分類、複数通貨口座の現在残高、他人に貸したお金や贈り物、旅行・贈り物・投資目標のような貯蓄用仮想封筒を追跡している
      毎日、外食にどれだけ無駄遣いしたかを確認し、その金額をインデックスファンドに入れていた場合の複利効果を計算してみることで、外食習慣を減らすのに大いに役立っている。顧客売掛金と実際のキャッシュフロー、予想収入ベースのキャッシュフローも区別して見られる
      貯蓄口座残高を「投資目標40%、贈り物1%」のように頭の中で分けて見るようにしたら、大きな残高を見て衝動的に使ってしまうことが減った。資産増加、分類別支出の増減をチャート化し、その変化が生活にとって純効果があったかどうかをメモしてWebページにダンプするプログラムもあり、毎年次の計画を立てるときに使っている
      ledgerファイルをExcelに変換して会計士に年間の税務申告用として送るPythonスクリプトもある。事業用のledgerファイルは別にしていて、自分で直接手作業管理はせず、会計士ソフトウェアからデータを書き出して自宅で独自に計算している
      事業では、売上増加に応じて支出がどう増えるかを予測するキャッシュフロー予測、部門別支出の外れ値検知、採用を増やすべきかマーケティング支出を増やすべきか、ROICのような指標計算に使っている
      複式簿記は、銀行明細を取り込んでledgerを生成したあと、会計上の不一致を見つけるのに役立つ。裁量支出、従業員福利厚生、事業投入費のように用途別の勘定を分け、主口座から毎週入金されるようにして異常がないか確認している
      以前、会計士が透明性のある説明をせず、架空経費を帳簿に載せて税金を大きく節約したように見せかけた結果、法廷に行くことになり、多額の罰金と延滞加算金を払ったことがある。今では会計士を鵜呑みにせず、必ず再確認している
      Stripe、銀行明細、会計士の帳簿などを取り込む自動化スクリプトが多くあり、Pythonで突き合わせて不一致を探している。プログラマーの自分にはプレーンテキスト会計がよく合っていて、hledgerの上に何年もかけて自分専用のシステムを積み上げてきた