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に登録済み
- カード明細の自動仕訳が機能している
次のステップとしては、自動仕訳で拾えなかった取引の手動分類と、仕訳ルールの追加・調整を進めていく。