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 nul や del nul を実行しても削除がブロックされる。47バイトの実ファイルが存在しているが、OSがデバイス名として解釈してしまう。
解決策
Git Bashの mv コマンドでリネームしてから削除する方法で対処した。
# リネームしてから削除
mv nul nul_tmp
rm nul_tmp
\\?\ プレフィックスを使う方法もあるが、Git Bashの mv が手っ取り早かった。
再発防止
.gitignore に nul を追加して、今後同じファイルが作成されても追跡対象にならないようにした。
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 で変更なしを確認 |