daily-log
2026年3月28日の開発日記
朝6時から丸一日、会計サービス連携のChrome拡張を触り続けた。前日の積み残し5項目を片付けるところから始まり、ルール同期機能の全面改修、DevTools MCPで拡張なしにAPIを直接叩ける発見、Claude Codeフックのタイムスタンプ注入設定と、密度の濃い一日になった。
今日やったこと
1. Chrome拡張MFのルール同期機能を全面改修
前日の積み残しだった汚染ストレージ修復から着手し、そのままルール同期機能をほぼ丸ごと作り直した。
主な成果:
- 汚染ストレージの自動修復マイグレーションを実装
- DELETE APIのCSRFトークン対応(422エラー解消)
- ルール同期タブを単一URL→事業者別リストUIに改修
- 自動仕訳ルールインポートタブを廃止し、同期に統合
- ルールID照合バグ修正(口座未紐付けルールのaccount_id='0'フォールバック)
- スプレッドシート書式クリア問題の解決(deleteDimension方式)
- ログタブの新設(Codexレビュー3回)
- シート名キャッシュの実装
詳細: Chrome拡張 会計サービス連携 - 自動仕訳ルール同期機能の全面改修とバグ修正
2. DevTools MCPでクラウド会計APIを直接操作する実験
Chrome拡張の依存度を下げたいという議論から、「そもそも拡張なしでAPIを叩けるのでは」という仮説を検証した。
主な成果:
- CSRFトークン/OAuth/リフレッシュトークンの3種類を図解ドキュメント化(SVG5つ)
- evaluate_scriptでCSRFトークンを取得し、内部APIを直接叩いて全帳簿データを取得
- テスト事業者の仕訳帳・残高試算表・月次推移・年次推移・連携明細をスプレッドシートに転記
- 「拡張のコードは8割リファレンスとして使える」という気づき
- 次回すぐ再現できるランブックを整備
詳細: DevTools MCPでクラウド会計APIを直接操作 - Chrome拡張なしで全帳簿データを取得した実験記録
3. Claude Codeフックでタイムスタンプ注入
1Mコンテキストの長時間セッションで「何時頃の話だったか」を把握するためのTipsを導入。
主な成果:
- PreToolUseフックではstdoutがコンテキストに入らない仕様を発見
- UserPromptSubmitフックに切り替えて成功
- メッセージ送信のたびにsystem-reminderとしてタイムスタンプが記録される
- 別リポジトリ(mdx-playground)でも動作を確認。JSONLにタイムスタンプが残るため、/make-diaryの時間精度も向上
詳細: Claude Codeフックでタイムスタンプ注入 - 1Mコンテキスト長時間セッションの時刻把握
4. 事業者設定エクスポートの計画策定
会計サービスの事業者設定ページ(決算月、課税方式、端数処理等)をスクレイピングしてスプレッドシートに出力する実装計画を策定。Codexレビューで「CTI直fetchでは年度切替が効かない」という致命的な指摘を受けて修正。プランのみ作成し、実装は翌日に持ち越し。
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | DELETE API 422 | リクエストボディの形式変更 | 失敗 | DevToolsで正規リクエストと比較するのが最速 |
| 2 | DELETE API 422 | X-CSRF-Tokenヘッダー追加 | 成功 | POST/PUT/DELETEすべてにCSRFトークン必須 |
| 3 | CSVインポート 500 | FormDataフィールド名を確認 | 成功 | ブラウザの送信内容と比較して差分を発見 |
| 4 | ルールID照合 | CSV/JSON間のキー正規化 | 部分的成功 | 口座未紐付けルールが漏れる |
| 5 | ルールID照合 | account_id='0'でフォールバック検索 | 成功 | Search APIの仕様: 未紐付け=account_id 0 |
| 6 | 書式クリア | repeatCellで書式リセット | 失敗 | Sheets APIのrepeatCellが効かないケース |
| 7 | 書式クリア | データ行以降の行をdeleteDimension | 成功 | 値・書式・行構造は独立レイヤー |
| 8 | 残高試算表URL | URLパターンを推測 | 404 | 拡張のexport.jsに正解が書いてあった |
| 9 | 仕訳帳取得 | 1月〜12月でハードコード | 開始仕訳のみ | 事業者の決算月を確認してから期間を組み立てるべき |
| 10 | タイムスタンプhook | PreToolUseにdate追加 | 失敗 | PreToolUseのstdoutはコンテキストに入らない |
| 11 | タイムスタンプhook | UserPromptSubmitに変更 | 成功 | フックの種類でstdoutの扱いが異なる |
今日の学び
- DevToolsでブラウザの正規リクエストとコードのリクエストを並べて差分を取る――この基本動作が最速のデバッグ手段
- Sheets APIの
clearは値レイヤーのみ、deleteDimensionは値・書式・行構造をまとめて消す - Chrome拡張のコードベースはDevTools MCP操作時のリファレンスとして8割使える。推測で動く前にまず既存コードを読む
- Claude Codeフックの種類によってstdoutの行き先が違う。PreToolUseはUI表示のみ、UserPromptSubmitはコンテキスト注入
- Codexレビューは3回投げて致命的な指摘を潰すパターンが定着してきた
明日やること
- 事業者設定エクスポートの実装(
memo/2026-03-28/office-settings-export-plan.md) - サービス一覧のエクスポートJSON含有化(
memo/2026-03-28/plan-service-list-export.md) - 木村まやこ 2024年度の帳簿データ取得(ランブック:
runbook-mf-export.md)