2026年3月31日の開発日記
朝から晩までフル回転の一日。Chrome拡張の仕訳管理タブを新設して実機テストまで完走し、CF計算書教材はSVGスライド70枚を一気に制作した。合間にaxiosのサプライチェーン攻撃が飛び込んできてPC全体スキャンに追われ、Chrome DevTools MCPのautoConnect設定を通してSearch Consoleの404を一掃した。
今日やったこと
1. Chrome拡張 仕訳管理タブの新設と実機テスト
会計ソフトA連携のChrome拡張に「仕訳管理」タブを新設した。仕訳帳エクスポート・仕訳一括削除・対象外明細エクスポート・対象外一括復帰の4セクション構成。
API調査では journalizing_suggestions の status=ignored パラメータが無視されることを発見し、trans_list のfetchでtbodyが空になる問題はiframe方式で突破した。フルサイクル検証(登録→削除→対象外→復帰)を完了し、confirm() 18箇所をカスタムモーダルに一括置換。Playwright MF API連携PoCではHttpOnlyセッションCookieの壁に当たり、page.evaluate() 必須という結論を得た。
主な成果:
- 仕訳管理タブ新設(4セクション × 13事業者)
- 実機テスト全項目パス(Chrome DevTools MCP経由)
- confirm()→カスタムモーダル置換(18箇所)
- Playwright PoC完了(Pattern A成功、Pattern B不可の結論)
2. CF計算書教材コンテンツの一気通貫制作
簿記3級編(Ch0-5+総合演習)と2級編のCF計算書教材を一日で制作した。目次HTMLの取り込みからトピックカード追加、Miller Viewer対応の講義ノートページ構築、全チャプターのテキスト拡充+数値例の品質ゲート検算、SVGスライド70枚の一括生成まで走り切った。
全チャプターが1配列にまとまっていてセクション選択が壊れる問題や、TOC名とmillerデータ名の不一致でチャプター切り替えが動かない問題をデバッグで解決。Git LFSでpush拒否された際は git lfs push で2,882個(188MB)をアップロードして対処。
主な成果:
- SVGスライド70枚(プレースホルダー+教材スライド)
- 全チャプターのテキスト拡充+検算完了
- コンテンツ一覧ページ(index.vue)新設
- 次セッション用制作計画書をCodexレビュー付きで作成
3. Chrome DevTools MCP autoConnectとSearch Console改善
Chrome 146(M144以上)で使える --autoConnect オプションの設定に取り組んだ。--browserUrl での接続失敗を経て --autoConnect で成功し、普段使いのGWSプロファイルでChrome拡張(SSボタン)の操作にまで到達。プロジェクトレベル設定がグローバルを上書きする落とし穴も解消した。
Search Consoleでは404が317件積み上がっていたことを発見。_redirects が2026年1月から更新されていなかったのが原因で、1,567件のリダイレクトを再生成してビルドプロセスに組み込んだ。ソフト404修正、TODOページ99件のnoindex設定、canonical実装も実施。
主な成果:
- autoConnect設定完了、グローバルMCP設定に追加
- リダイレクト1,567件再生成+postgenerateに組み込み
- ソフト404修正、noindex設定、canonical実装
- Google Calendarに確認リマインダー登録(4/14, 5/1)
詳細: Chrome DevTools MCP autoConnectとSearch Console改善
4. axiosサプライチェーン攻撃への対応
npm axios v1.14.1 が悪意あるパッケージ plain-crypto-js を取り込んでいた事件が発覚。最初はプロンプトインジェクションと疑ったが、ニュース調査で本物と確認。PC全体をスキャンして plain-crypto-js が見つからないことを確認し、2025年以前の不要プロジェクト6件を削除して環境をクリーンアップした。
主な成果:
- PC全体スキャン→感染なし確認
- 不要プロジェクト6件削除
- npm側で悪意あるバージョン削除済みを確認
5. その他の作業
- 蔵書OCRプロジェクト: yomitoku OCRで421ページの書籍を取り込み、Nuxtフロントエンドの存在を再確認してCLAUDE.mdを更新
- Codexプラグイン設定: 公式codexプラグインをインストール、旧レビュースキルを削除して統合
- LSP導入: TypeScript Language Serverをグローバルインストール。Vue/Volar LSPは公式未対応
- 3/27・3/30の日記生成: make-diaryコマンドで過去日記を生成、匿名化ルールを追加
- 本番環境payload修正: SSGビルドでpayloadがnullになりブログ記事が消えた問題を再ビルドで解消
- Google Tasks取得テスト: gogcli経由でタスク一覧取得を確認
- session-envファイル整理:
.claude/.gitignoreにsession-env/追加、不要セッション24件削除
今日の試行錯誤
| # | テーマ | 試したこと | 結果 | 気づき |
|---|---|---|---|---|
| 1 | 対象外明細取得 | journalizing_suggestions に status=ignored | 無視された(200件同一データ) | APIパラメータは実際にフィルタされるか要検証 |
| 2 | trans_list fetch | Node.js fetchでHTML取得 | tbodyが空(Ajax読み込み) | X-Frame-Options: SAMEORIGIN なのでiframeで読める |
| 3 | MCP接続 | --browserUrl http://127.0.0.1:9222 | 接続エラー | Chrome 144+は --autoConnect を使うべき |
| 4 | autoConnect競合 | プロジェクト設定残存 | グローバル設定を上書き | MCP設定の優先順位に注意 |
| 5 | Miller Viewer | 全チャプター1配列 | セクション選択で他トピック表示 | セクションごとに配列分割が必要 |
| 6 | チャプター切替 | TOC name ≠ miller name | 切替が動かない | 完全一致マッチングなので名前統一が必須 |
| 7 | Git LFS push | 通常の git push | 132 unknown LFS objects | git lfs push で先にLFSオブジェクトをアップロード |
| 8 | axios攻撃 | プロンプトインジェクション疑い | ニュース調査で本物と確認 | LLMの警告でも裏取りは必須 |
今日の学び
- iframe方式はfetchで取れない動的コンテンツの取得に使える。
X-Frame-Options: SAMEORIGINを確認すれば同一オリジン内で動く - Chrome DevTools MCP の
--autoConnectは M144以上で有効。普段のプロファイルで拡張操作まで可能になった _redirectsのような生成物はビルドプロセスに組み込まないと陳腐化する。手動運用は必ず忘れる- サプライチェーン攻撃は他人事ではない。不要な依存プロジェクトを放置するとリスクが積み上がる