• #日記
  • #tax-assistant
  • #リファクタリング
  • #Vue.js
  • #FastAPI
  • #Python
daily-log

2026年1月22日の開発日記

今日はtax-assistantプロジェクトに集中して取り組んだ。大規模なリファクタリング2件と、複数の機能実装・UI改善を完了。

今日やったこと

1. db.pyリファクタリング(2,602行→9モジュール分割)

2,602行・68関数の巨大なdb.pyを機能別モジュールに分割した。

主な成果:

  • 機能ごとに独立したモジュール(core, comments, validation, receipts, batches, csv_io, square, shiwake_rules, creditcard)
  • 後方互換性を維持する__init__.py
  • インポート確認のみでテスト完了(ロジック変更なし)

詳細: Python巨大ファイルを機能別モジュールに分割する実践ガイド


2. ocr_server.pyリファクタリング(1,075行→6モジュール分割)

db.pyと同じパターンでFastAPIサーバーファイルを分割した。

主な成果:

  • src/server/ディレクトリに機能別モジュールを配置
  • 起動方法をuvicorn server:app --port 8000 --reloadに変更
  • ホットリロード対応で開発効率向上

詳細: FastAPIサーバーをモジュール分割してホットリロード対応にする


3. 仕訳ルールマッチング機能

クレジットカード明細に対して仕訳ルール(CSV)を自動マッチングする機能を実装。

主な成果:

  • check_statusに「候補」(rule_matched)ステータス追加
  • マッチしたルールの詳細を右側パネルに表示
  • URLクエリパラメータでの状態管理(ccYear, ccMonth, ccIndex)
  • ImageNavigationPanelコンポーネントの共通化

詳細: クレジットカード明細に仕訳ルールを自動マッチングする機能を実装


4. 重複チェックUI改善

DuplicateView.vueをテーブル形式に刷新。

主な成果:

  • グループ単位の表示(同じhash_idを持つレシートをグループ化)
  • 画像プレビュー機能の追加
  • タブ切り替え時に自動で最初のグループを選択
  • 帳票リンクから読取一覧タブへの遷移

詳細: Vue.jsで重複チェック画面をテーブル形式に刷新


5. 実装計画管理ページ(/plans)

実装計画を一覧管理するカンバンボードUIを新規作成。

主な成果:

  • 5カラムレイアウト(pending, planned, in_progress, completed, archived)
  • memo/とプロジェクト内.claude/plans/の両方からMarkdownを読み取り
  • frontmatter形式でステータス管理
  • /api/plans APIエンドポイント追加

詳細: 実装計画管理ページの新規作成 - 5カラムカンバンボードUI


6. Chrome拡張機能の開発ガイド

マネーフォワードクラウド会計のホーム画面から広告やお知らせを非表示にするChrome拡張機能を作成。

主な成果:

  • Chrome拡張機能の基本構造(manifest.json + content.js)
  • MutationObserverによる動的要素への対応
  • SPA対応のURL変更監視パターン

詳細: Chrome拡張機能の開発ガイド:マネーフォワードの広告を消す


今日の学び

  • リファクタリングのパターン化: db.pyで成功したモジュール分割パターンをocr_server.pyにも適用。同じパターンを使うことで作業効率が上がり、コードの一貫性も保てる
  • 後方互換性の維持: __init__.pyで既存のインポートパスを維持することで、大規模リファクタリングでも他のファイルへの影響を最小限に抑えられる
  • URLクエリパラメータの重要性: SPAでの状態管理はURLクエリパラメータを活用することで、ブラウザバック対応やURL共有が可能になる

明日やること

  • 仕訳ルールDB移行計画の実装開始(shiwake-rules-db-plan.md)
  • クレカ明細の突き合わせボタン化(creditcard-check-button-trigger-plan.md)
  • duplicateステータスの実装(duplicate-status-implementation.md)

関連記事