開発メモ
2026年1月14日の開発日記
今日は2つのプロジェクトで大きな進捗があった。
今日やったこと
1. Claude Code × Codex CLI 連携の実装
Claude Code(Opus 4.5)とCodex CLI(GPT-5.2)を連携させ、異なるAI間でクロスレビューできる仕組みを構築した。
主な成果:
/codex-reviewスラッシュコマンドの作成- Windows Terminalでtmuxの代替を実現(
start powershellで別ウィンドウ起動) codex execによる非インタラクティブ実行- レビュー結果を
.claude/codex-review/にタイムスタンプ付きで保存 - モデル指定オプション(
max/mini)の実装
詳細: Claude CodeとCodex CLIの連携ガイド
2. 税務アシスタント: 手書き売上伝票OCR対応
美容室クライアント向けに、手書きの売上伝票をOCRで読み取る機能を設計・実装した。
主な成果:
- ドキュメントタイプのDB管理(
client_document_typesテーブル) - クライアント別スキーマのJSON管理(
clients/client_001/schemas/sales_slip.json) - インポートコマンドの粒度分離
/import-receipts- 領収書・レシート/import-sales-slip- 売上伝票/import-csv- CSV取込
- スクエア明細CSVとのマッチングフロー設計(借方勘定科目の自動判定)
- テーブル分離の設計判断(Codexレビューを活用)
3. 税務アシスタント: フロントエンドUIリファクタリング
売上伝票対応に伴い、UIの大規模リファクタリングを実施した。
主な成果:
- Miller Columns 4列構成への拡張(帳票種別→バッチ一覧→ファイル→内容)
BatchDocumentTypeList.vueコンポーネントの新規作成- ラベルの汎用化(「レシート内容」→「帳票内容」)
useReceipts.tsの状態管理改善(3値状態の排除、派生stateへの集約)- 複合キーによるlocalStorage保存(帳票種別ごとに位置を記憶)
詳細: UIの大規模リファクタリング
今日の学び
対話ベースの設計が有効
GUIフォームで入力させるより、Claude Codeとの対話でスクリーンショットやJSONを渡す方が柔軟で効率的だった。クライアント管理やスキーマ設定など、従来ならWebフォームを作っていた部分を対話ベースに置き換えることで、開発工数を大幅に削減できた。
異なるAIのクロスレビュー
Claude CodeとCodexの両方を使うことで、単一AIでは気づきにくい設計上の問題を発見できた。特にテーブル分離の判断など、客観的な視点が必要な場面で有効だった。
teeコマンドの罠
Codex CLIの出力を | tee でファイルに保存しようとすると、パイプが詰まって空ファイルになることがある。リダイレクト(>)と cat の組み合わせが確実。
# NG: パイプが詰まる
codex exec "..." | tee output.md
# OK: リダイレクト + cat
codex exec "..." > output.md && cat output.md
明日やること
-
/import-csvコマンドの実装(スクエア明細CSV取込) -
/match-salesコマンドの実装(売上伝票とスクエア明細のマッチング) - 年月フィルターに進捗表示を追加
- 請求書(invoice)対応の検討