会計を関数にする
limの核心的な設計思想は Accounting = fn(events) です。会計処理をイベントの純粋関数として定義することで、リアルタイム・再現可能・テスト可能な会計システムを実現します。
従来の会計ソフトとの違い
従来の会計ソフト(freee、MFなど)は「画面に入力する」ことが前提です。人間がUIを操作し、勘定科目を選び、金額を入力します。
limは違います:
| 従来の会計ソフト | lim |
|---|
| 人間が画面に入力 | イベントが自動で流入 |
| バッチ処理(月次・年次) | リアルタイム処理 |
| 仕訳 = 手入力データ | 仕訳 = fn(event) |
| 状態を直接変更 | イベントから状態を導出 |
| AIはオプション | AIが標準 |
純粋関数としての会計
journal_entry = judgment_engine(event, rules, history)
同じイベント、同じルール、同じ履歴を入力すれば、常に同じ仕訳が出力されます。この性質により:
- 再現性: いつでも過去のイベントを再処理できる
- テスト可能性: 仕訳生成ロジックをユニットテストできる
- 監査可能性: 仕訳の根拠(どのイベントから生成されたか)を常に追跡できる
シナリオ分析
純粋関数の最大の利点はシナリオ分析です。仮想イベントを入力すれば、財務への影響を即座にシミュレーションできます:
# 「エンジニア2人採用したら?」
lim scenario create --name "hire-2-engineers"
lim scenario add-event "月給500000円の従業員を2人追加"
lim scenario diff
Scenario: hire-2-engineers vs. current
────────────────────────────────────────
Current Scenario Diff
Monthly burn ¥360,000 ¥1,360,000 +¥1,000,000
Runway 7.1 mo 2.6 mo -4.5 mo
Annual payroll cost ¥4.3M ¥16.3M +¥12.0M
イベントの種類
limが処理するイベントの主な種類です:
| イベント | ソース | 例 |
|---|
| 銀行取引 | Bank API | 入出金の検知 |
| 請求書受領 | Webhook | 請求書PDFの受信 |
| 経費申請 | MCP Tool | AI Agentからの経費登録 |
| 売上計上 | API | 販売システムからの通知 |
| 給与確定 | 内部 | 給与計算の完了 |
イベントソーシングとの関係
limはイベントソーシングの考え方を採用しています。仕訳はイベントから導出されるものであり、イベントが真のソースです。
events → judgment_engine → journal_entries → financial_statements
イベントを保持しているので、ルールを更新して過去の仕訳を再計算することも可能です。
会計の本質は「ビジネスイベントを数値で記録すること」です。limはこの本質を fn(events) として表現しています。
次のステップ