• #日記
  • #tax-assistant
  • #確定申告
  • #Nuxt3
  • #SSG
  • #Claude Code
  • #Codex
  • #仕訳ルール
  • #AI推測
  • #PDF変換
daily-log

2026年2月12日の開発日記

朝から確定申告資料の整理に始まり、tax-assistantのマルチクライアント運用を本格化させた一日。資料リネーム92件、クライアント切替機能の設計から実装完了、仕訳ルール自動推測・提案機能の構築、医療費明細OCR対応、PDF複数ページ変換、新規クライアント登録設計まで、9つのトピックを一気に進めた。

今日やったこと

1. 確定申告資料の一括リネームとスプレッドシート連携

Google共有ドライブ上の確定申告資料(PDF・画像・CSV)92件を命名規則に沿ってリネームした。ImageMagickでPDFを画像変換し、Claude Codeで中身を読み取ってファイル名を生成。リネーム手順をtax-doc-renameスキルとしてパッケージングし、Googleスプレッドシートにドライブリンクも登録した。

主な成果:

  • 92件 + 追加6件のリネーム完了
  • 命名規則: 2025_タイトル_金額 形式
  • tax-doc-renameスキルの作成(来年以降の再利用用)
  • Googleスプレッドシートにドライブリンク一括登録

詳細: 確定申告資料リネームとスプレッドシート連携


2. tax-assistant: 医療費明細対応と帳票設定改善

医療費明細の帳票タイプ追加、OcrSchemaEditorのバグ修正、帳票タイプの論理削除によるクライアント別管理、インポートスクリプトの改善、25件のレシートOCR処理を実施した。

主な成果:

  • OcrSchemaEditorのX-Client-Idヘッダー未送信バグ修正
  • 医療費明細のOCRスキーマ追加、確定申告帳票でのUI分岐
  • 帳票タイプの論理削除(is_activeフラグ)
  • 読取一覧の帳票種別をAPI動的取得に変更
  • 25件のレシートOCR処理と並列バリデーション

詳細: 医療費明細対応と帳票設定改善


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

新規クライアント(個人事業主)を登録し、マネーフォワードからエクスポートしたカード明細CSVをインポートした。さらにGoogleスプレッドシートで管理していた自動仕訳ルール85件をDBに取り込んだ。

主な成果:

  • 新規クライアント登録(client_003)
  • DBパスのハードコード問題を発見・修正
  • document_typesテーブルの初期化漏れを修正
  • 自動仕訳ルール85件をgogcli経由でインポート

詳細: CSV取込と仕訳ルールインポート


4. tax-assistant: クライアント切替機能の設計

複数クライアントのDBを運用し始めたため、UIからのクライアント切替機能が必要になった。1月末に作った計画書をベースに、Planエージェントで詳細設計を行い、Codex(GPT-5.3)にレビューしてもらった。

主な成果:

  • 既存計画書と現状実装の差分分析
  • 10タスク(バックエンド6 + フロントエンド3 + テスト1)に分割
  • Codexから7件の指摘(セキュリティ対策、profile API追加等)を反映

詳細: クライアント切替機能の設計


5. tax-assistant: クライアント切替機能の実装

設計済みの10タスクを一気に実装。dependencies.pyでクライアントパス管理を集約し、59のAPIエンドポイントをX-Client-Idヘッダー対応に移行した。フロントエンドではClientSelectorドロップダウンとPiniaストアを実装。2つ目のクライアント追加で表面化した5つのバグ(native fetchのヘッダー漏れ、勘定科目マスター未登録、税区分表示バグなど)も修正した。

主な成果:

  • 全10タスク(バックエンド6 + フロントエンド3 + テスト1)完了
  • 仕訳ルール関連5箇所のnative fetch()にX-Client-Idヘッダー追加
  • レシートなしでもルールマッチング実行するよう修正(534件中214件マッチ)
  • 勘定科目マスター174件をコピーして新クライアント初期化

詳細: クライアント切替機能の実装


6. tax-assistant: 仕訳ルール自動推測・提案機能

クレカ明細のうち仕訳ルールに未マッチの明細を分析し、AIが勘定科目・税区分を推測して登録を支援する機能を新規構築した。Miller Column Layoutで6カラムの段階的絞り込みUI、キーボードナビゲーション、マッチタイプ選択、Googleスプレッドシートでの顧客確認フローまで一気に実装した。

主な成果:

  • rule_suggestionsテーブル + 4エンドポイント新設
  • RuleSuggestionView: 帳票種別→帳票→勘定科目→税区分→補助科目→詳細の6カラム
  • /suggest-rulesコマンドで142件の摘要を分析、事業主貸64件は顧客確認シート自動作成
  • フロントエンド27テスト + バックエンド11テスト

詳細: 仕訳ルール自動推測・提案機能


7. tax-assistant: 新規クライアント登録フロー設計

クライアント切替機能完成後に必要になった新規登録フローを設計。Planエージェントで6タスク構成を作り、Codex(GPT-5.3)で4ラウンドのレビューを実施して設計を段階的に洗練した。

主な成果:

  • 6タスク構成の設計(バックエンドAPI → フロントエンドAPI → Store → モーダルUI)
  • Codex 4ラウンドで計20件以上の指摘を反映
  • INSERT-only関数でUPSERT回避、FK CASCADE、原子的トランザクション

詳細: 新規クライアント登録フロー設計


8. tax-assistant: PDF複数ページ変換と画像表示修正

領収書の裏表をスキャンしたPDFを1枚の画像に変換する機能を追加し、マルチクライアント環境での画像表示404問題も修正した。Codexレビュースキルの分割(doc/uncommitted)も行った。

主な成果:

  • pdf_converter.py新規作成(PyMuPDF + Pillow、25テスト)
  • 縦連結→横連結に修正(裏表が左右に並び視認性向上)
  • 画像URLにclient_idクエリパラメータを付与し404解消(7箇所統一)
  • Codexレビュースキルを /codex-review-doc/codex-review-uncommitted に分割

詳細: PDF複数ページ変換と画像表示修正


9. mdx-playground: 特定ページのSSGプリレンダリング除外

書籍の内容をそのまま載せているページ(tax-patterns配下)を、本番環境から除外し開発環境のみ閲覧可能にした。

主な成果:

  • nuxt.config.tsprerender.ignore/tax-patterns を追加
  • ホームページのリンクカードを v-if="isDev" で開発環境のみ表示
  • Cloudflare Pagesデプロイ後に除外を確認

詳細: SSGプリレンダリング除外の実装


今日の学び

  • 確定申告資料のリネームはスキル化しておくと来年以降が楽。年1回の作業こそ手順書化が効く
  • client_001だけで開発していると見えない問題が、2つ目のクライアントを追加した途端に噴出する。DBパスのハードコード、スキーマ初期化漏れ、native fetch()のヘッダー漏れなど
  • 論理削除(is_activeフラグ)を使えば、クライアントごとに帳票タイプの表示を柔軟に制御できる
  • Planエージェント設計 -> memo保存 -> Codexレビュー -> 指摘反映、という設計レビューフローが定着。4ラウンド回すと1回では拾えない構造的な指摘が出てくる
  • Miller Column Layoutは階層的なデータの絞り込みに有効。仕訳ルール提案では6カラムまで拡張した
  • AIの推測結果をそのまま登録せず、顧客確認フロー(Googleスプレッドシート)を挟むことで品質を担保
  • <img> タグからHTTPヘッダーは送れない。マルチテナント環境では画像URLにクライアントIDをクエリパラメータで渡す
  • .find()は最初の一致のみ返す。複数一致がありうる場面では.filter()を使う
  • Nuxt 3の prerender.ignoreimport.meta.dev を組み合わせると、SSGで特定ページを本番から除外しつつ開発環境では表示できる

明日やること

  • 新規クライアント登録フローの実装開始
  • 仕訳ルール提案のレビュー・登録作業
  • 事業主貸の顧客確認シートの回収と反映

関連記事