• #git
  • #windows
  • #git-worktree
  • #gemini-api
  • #tax-assistant
tax-assistantメモ

Git分割ステージングとWindows予約デバイス名の削除

tax-assistantリポジトリで溜まっていた変更を整理した。未ステージの変更が複数の機能にまたがっていたため、修正内容ごとに分割してステージングした。その過程でWindowsの予約デバイス名 nul ファイルの問題にも対処した。

変更内容の5グループ分割ステージング

未コミットの変更を確認したところ、ステージ済みのものはゼロで全て未ステージだった。差分を確認して以下の5グループに分類し、それぞれ個別にステージングした。

グループ1: inboxサブディレクトリ対応

受信データの取り込み先をサブディレクトリに対応させた。ファイルの格納パスの柔軟性が上がる。

グループ2: PDF連結方向の変更

PDF連結の方向を縦から横に変更した。帳票の閲覧性を考慮した修正。

グループ3: 画像URL client_id対応

外部APIから取得する画像URLに client_id パラメータを付与するようにした。認証付き画像取得への対応。

グループ4: subagent_reads account_category追加

サブエージェントの読み取り結果に account_category(勘定科目カテゴリ)のフィールドを追加した。

グループ5: 帳票種別API取得 + 医療費明細UI対応

帳票の種別をAPIから動的に取得する仕組みを導入し、医療費明細のUI表示にも対応した。

Windowsの予約デバイス名 nul ファイルの削除

ステージング作業中、リポジトリ内に nul という名前のファイルが存在していることに気づいた。これはWindowsの予約デバイス名(NUL, CON, PRN, AUX などと同じ系統)で、通常のファイル操作では削除できない。

問題

Windowsでは nul はヌルデバイスとして予約されているため、rm nuldel nul を実行しても削除がブロックされる。47バイトの実ファイルが存在しているが、OSがデバイス名として解釈してしまう。

解決策

Git Bashの mv コマンドでリネームしてから削除する方法で対処した。

# リネームしてから削除
mv nul nul_tmp
rm nul_tmp

\\?\ プレフィックスを使う方法もあるが、Git Bashの mv が手っ取り早かった。

再発防止

.gitignorenul を追加して、今後同じファイルが作成されても追跡対象にならないようにした。

git-wt(git worktree ラッパー)の技術調査

k1LoW/git-wt という、Git worktreeのラッパーツールについて調べた。

Git worktreeとは

git worktree はGit本体に組み込まれた機能で、1つのリポジトリから複数の作業ディレクトリを作成できる。ブランチの切り替えなしに、別のブランチの作業を並行して進められる。

git-wtが提供するもの

git-wtは git worktree の操作を簡略化するCLIラッパーで、worktreeの作成・一覧・削除を少ないキーストロークで実行できるようにしている。koicさんの紹介記事ではその使い勝手が解説されていた。

所感

Claude Codeで複数プロジェクトを同時に扱う場面が増えており、worktreeとの相性は調べておく価値がある。ただし現状の開発フローでは即座に導入する必要性は薄い。

Gemini APIモデル設定の確認

tax-assistantのOCR処理で使用しているGemini APIのモデル設定を確認した。src/ocr.py の2箇所(157行目と330行目)で gemini-3-flash-preview が設定されていることを確認。gitの変更履歴にもモデル変更のコミットはなく、意図した設定のままだった。

まとめ

作業内容
分割ステージング5グループに分けて個別コミット可能な状態にした
nul ファイル削除mv でリネーム後に削除、.gitignore で再発防止
git-wt調査Git worktreeラッパーの概要把握。導入は保留
Gemini API確認gemini-3-flash-preview で変更なしを確認