• #tax-assistant
  • #CSV
  • #仕訳ルール
  • #マネーフォワード
  • #SQLite
  • #Claude Code
開発tax-assistantメモ

tax-assistant: CSV取込 & 仕訳ルールインポート

マネーフォワードからエクスポートしたカード明細CSVのインポートと、Googleスプレッドシートに蓄積していた自動仕訳ルールのDB取込を行った。途中、DBパスのハードコード問題やdocument_typesテーブルの未初期化など、クライアント追加時に踏む地雷をいくつか踏んだ。

やったこと

1. 新規クライアントの登録

新しいクライアント(個人事業主)をclient_003として登録した。tax-assistantはクライアントごとにSQLiteのDBファイルを分離する設計になっていて、クライアント登録時にDBファイルの生成とスキーマ初期化が走る。

登録自体はスムーズに完了。ただし後続の作業でDBパスの問題が発覚した。

2. DBパスのハードコード問題

CSV取込を実行したところ、新規クライアントのDBではなくclient_001のDBに書き込まれる事象が発生した。調べてみると、一部の処理でDBパスが client_001 にハードコードされていた。

元々client_001のみで開発していたため気づかなかったパターン。クライアントIDからDBパスを動的に解決するよう修正した。複数クライアントを扱い始めると出てくる典型的な問題だった。

3. document_typesテーブルの初期化

CSV取込時に「document_typesテーブルが存在しない」エラーが出た。クライアントDB作成時のスキーマ初期化で、document_typesテーブルの初期データ投入が漏れていた。

マスターデータ(カード明細、銀行明細、レシートなど)のINSERTをスキーマ初期化処理に追加して解決。

4. マネーフォワードCSVの取込

マネーフォワードからエクスポートした楽天カード明細CSVをインポートした。CSVのカラムマッピングはtax-assistant側で定義済みのフォーマットに合わせる形で処理。

取込自体は特に問題なく完了。日付・金額・摘要のパースも正常に動作した。

5. Googleスプレッドシートから仕訳ルールのインポート

これまでGoogleスプレッドシートで管理していた自動仕訳ルール(85件)をtax-assistantのDBにインポートした。

スプレッドシートへのアクセスには gogcli スキル を使った。gogcliはGoogle Sheets APIをCLIから叩けるツールで、Claude Codeのスキルとして登録してある。スプレッドシートのシートIDとレンジを指定してJSON形式でデータを取得し、それをtax-assistantの仕訳ルールテーブルに流し込んだ。

仕訳ルールの構造:

  • 摘要のパターンマッチ(部分一致)で対象取引を特定
  • マッチした取引に借方勘定科目・貸方勘定科目を自動設定
  • 例: 摘要に「AMAZON」を含む → 消耗品費 / 事業主借

85件のルールで、カード明細の大半が自動仕訳される状態になった。残りは手動で仕訳を割り当てていく。

つまずいたポイント

問題原因対処
CSV取込先が別クライアントDBパスがclient_001にハードコードクライアントIDからの動的解決に修正
document_typesテーブル不在スキーマ初期化でマスターデータ未投入初期化処理にINSERT追加

どちらもclient_001だけで開発していた時期には見えなかった問題で、2つ目のクライアントを追加して初めて表面化した。マルチクライアント対応のテストケースとして良い経験になった。

現在の状態

  • 新規クライアントのDB作成・初期化が正常動作
  • マネーフォワードCSVの取込パイプラインが稼働
  • 自動仕訳ルール85件がDBに登録済み
  • カード明細の自動仕訳が機能している

次のステップとしては、自動仕訳で拾えなかった取引の手動分類と、仕訳ルールの追加・調整を進めていく。