[{"data":1,"prerenderedAt":555},["ShallowReactive",2],{"content-/2026-03-31-diary":3,"all-pages-for-dir":553,"og-image-/2026-03-31-diary":554},{"id":4,"title":5,"body":6,"category":532,"description":533,"extension":534,"meta":535,"navigation":536,"path":537,"project_name":538,"published":539,"publishedAt":540,"seo":541,"stem":542,"tags":543,"todo":551,"updatedAt":551,"__hash__":552},"pages/2026-04/2026-03-31/diary-2026-03-31.md","2026年3月31日の開発日記 - 仕訳管理タブ新設とCF計算書教材70枚一気通貫制作",{"type":7,"value":8,"toc":517},"minimark",[9,14,18,22,27,30,54,60,76,87,90,94,97,104,108,122,130,132,136,150,157,161,175,183,185,189,199,203,214,222,224,228,280,282,285,467,469,472,494,496,499],[10,11,13],"h1",{"id":12},"_2026年3月31日の開発日記","2026年3月31日の開発日記",[15,16,17],"p",{},"朝から晩までフル回転の一日。Chrome拡張の仕訳管理タブを新設して実機テストまで完走し、CF計算書教材はSVGスライド70枚を一気に制作した。合間にaxiosのサプライチェーン攻撃が飛び込んできてPC全体スキャンに追われ、Chrome DevTools MCPのautoConnect設定を通してSearch Consoleの404を一掃した。",[19,20,21],"h2",{"id":21},"今日やったこと",[23,24,26],"h3",{"id":25},"_1-chrome拡張-仕訳管理タブの新設と実機テスト","1. Chrome拡張 仕訳管理タブの新設と実機テスト",[15,28,29],{},"会計ソフトA連携のChrome拡張に「仕訳管理」タブを新設した。仕訳帳エクスポート・仕訳一括削除・対象外明細エクスポート・対象外一括復帰の4セクション構成。",[15,31,32,33,37,38,41,42,45,46,49,50,53],{},"API調査では ",[34,35,36],"code",{},"journalizing_suggestions"," の ",[34,39,40],{},"status=ignored"," パラメータが無視されることを発見し、",[34,43,44],{},"trans_list"," のfetchでtbodyが空になる問題はiframe方式で突破した。フルサイクル検証（登録→削除→対象外→復帰）を完了し、",[34,47,48],{},"confirm()"," 18箇所をカスタムモーダルに一括置換。Playwright MF API連携PoCではHttpOnlyセッションCookieの壁に当たり、",[34,51,52],{},"page.evaluate()"," 必須という結論を得た。",[15,55,56],{},[57,58,59],"strong",{},"主な成果:",[61,62,63,67,70,73],"ul",{},[64,65,66],"li",{},"仕訳管理タブ新設（4セクション × 13事業者）",[64,68,69],{},"実機テスト全項目パス（Chrome DevTools MCP経由）",[64,71,72],{},"confirm()→カスタムモーダル置換（18箇所）",[64,74,75],{},"Playwright PoC完了（Pattern A成功、Pattern B不可の結論）",[15,77,78,81,82],{},[57,79,80],{},"詳細:"," ",[83,84,86],"a",{"href":85},"/chrome-extension-journal-management","Chrome拡張 仕訳管理タブの新設",[88,89],"hr",{},[23,91,93],{"id":92},"_2-cf計算書教材コンテンツの一気通貫制作","2. CF計算書教材コンテンツの一気通貫制作",[15,95,96],{},"簿記3級編（Ch0-5＋総合演習）と2級編のCF計算書教材を一日で制作した。目次HTMLの取り込みからトピックカード追加、Miller Viewer対応の講義ノートページ構築、全チャプターのテキスト拡充＋数値例の品質ゲート検算、SVGスライド70枚の一括生成まで走り切った。",[15,98,99,100,103],{},"全チャプターが1配列にまとまっていてセクション選択が壊れる問題や、TOC名とmillerデータ名の不一致でチャプター切り替えが動かない問題をデバッグで解決。Git LFSでpush拒否された際は ",[34,101,102],{},"git lfs push"," で2,882個（188MB）をアップロードして対処。",[15,105,106],{},[57,107,59],{},[61,109,110,113,116,119],{},[64,111,112],{},"SVGスライド70枚（プレースホルダー＋教材スライド）",[64,114,115],{},"全チャプターのテキスト拡充＋検算完了",[64,117,118],{},"コンテンツ一覧ページ（index.vue）新設",[64,120,121],{},"次セッション用制作計画書をCodexレビュー付きで作成",[15,123,124,81,126],{},[57,125,80],{},[83,127,129],{"href":128},"/cashflow-statement-content-production","CF計算書教材コンテンツの一気通貫制作",[88,131],{},[23,133,135],{"id":134},"_3-chrome-devtools-mcp-autoconnectとsearch-console改善","3. Chrome DevTools MCP autoConnectとSearch Console改善",[15,137,138,139,142,143,146,147,149],{},"Chrome 146（M144以上）で使える ",[34,140,141],{},"--autoConnect"," オプションの設定に取り組んだ。",[34,144,145],{},"--browserUrl"," での接続失敗を経て ",[34,148,141],{}," で成功し、普段使いのGWSプロファイルでChrome拡張（SSボタン）の操作にまで到達。プロジェクトレベル設定がグローバルを上書きする落とし穴も解消した。",[15,151,152,153,156],{},"Search Consoleでは404が317件積み上がっていたことを発見。",[34,154,155],{},"_redirects"," が2026年1月から更新されていなかったのが原因で、1,567件のリダイレクトを再生成してビルドプロセスに組み込んだ。ソフト404修正、TODOページ99件のnoindex設定、canonical実装も実施。",[15,158,159],{},[57,160,59],{},[61,162,163,166,169,172],{},[64,164,165],{},"autoConnect設定完了、グローバルMCP設定に追加",[64,167,168],{},"リダイレクト1,567件再生成＋postgenerateに組み込み",[64,170,171],{},"ソフト404修正、noindex設定、canonical実装",[64,173,174],{},"Google Calendarに確認リマインダー登録（4/14, 5/1）",[15,176,177,81,179],{},[57,178,80],{},[83,180,182],{"href":181},"/chrome-devtools-autoconnect-search-console","Chrome DevTools MCP autoConnectとSearch Console改善",[88,184],{},[23,186,188],{"id":187},"_4-axiosサプライチェーン攻撃への対応","4. axiosサプライチェーン攻撃への対応",[15,190,191,192,195,196,198],{},"npm axios v1.14.1 が悪意あるパッケージ ",[34,193,194],{},"plain-crypto-js"," を取り込んでいた事件が発覚。最初はプロンプトインジェクションと疑ったが、ニュース調査で本物と確認。PC全体をスキャンして ",[34,197,194],{}," が見つからないことを確認し、2025年以前の不要プロジェクト6件を削除して環境をクリーンアップした。",[15,200,201],{},[57,202,59],{},[61,204,205,208,211],{},[64,206,207],{},"PC全体スキャン→感染なし確認",[64,209,210],{},"不要プロジェクト6件削除",[64,212,213],{},"npm側で悪意あるバージョン削除済みを確認",[15,215,216,81,218],{},[57,217,80],{},[83,219,221],{"href":220},"/axios-supply-chain-attack-response","axiosサプライチェーン攻撃への対応",[88,223],{},[23,225,227],{"id":226},"_5-その他の作業","5. その他の作業",[61,229,230,236,242,248,254,260,266],{},[64,231,232,235],{},[57,233,234],{},"蔵書OCRプロジェクト",": yomitoku OCRで421ページの書籍を取り込み、Nuxtフロントエンドの存在を再確認してCLAUDE.mdを更新",[64,237,238,241],{},[57,239,240],{},"Codexプラグイン設定",": 公式codexプラグインをインストール、旧レビュースキルを削除して統合",[64,243,244,247],{},[57,245,246],{},"LSP導入",": TypeScript Language Serverをグローバルインストール。Vue/Volar LSPは公式未対応",[64,249,250,253],{},[57,251,252],{},"3/27・3/30の日記生成",": make-diaryコマンドで過去日記を生成、匿名化ルールを追加",[64,255,256,259],{},[57,257,258],{},"本番環境payload修正",": SSGビルドでpayloadがnullになりブログ記事が消えた問題を再ビルドで解消",[64,261,262,265],{},[57,263,264],{},"Google Tasks取得テスト",": gogcli経由でタスク一覧取得を確認",[64,267,268,271,272,275,276,279],{},[57,269,270],{},"session-envファイル整理",": ",[34,273,274],{},".claude/.gitignore","に",[34,277,278],{},"session-env/","追加、不要セッション24件削除",[88,281],{},[19,283,284],{"id":284},"今日の試行錯誤",[286,287,288,310],"table",{},[289,290,291],"thead",{},[292,293,294,298,301,304,307],"tr",{},[295,296,297],"th",{},"#",[295,299,300],{},"テーマ",[295,302,303],{},"試したこと",[295,305,306],{},"結果",[295,308,309],{},"気づき",[311,312,313,335,355,377,394,411,428,450],"tbody",{},[292,314,315,319,322,329,332],{},[316,317,318],"td",{},"1",[316,320,321],{},"対象外明細取得",[316,323,324,326,327],{},[34,325,36],{}," に ",[34,328,40],{},[316,330,331],{},"無視された（200件同一データ）",[316,333,334],{},"APIパラメータは実際にフィルタされるか要検証",[292,336,337,340,343,346,349],{},[316,338,339],{},"2",[316,341,342],{},"trans_list fetch",[316,344,345],{},"Node.js fetchでHTML取得",[316,347,348],{},"tbodyが空（Ajax読み込み）",[316,350,351,354],{},[34,352,353],{},"X-Frame-Options: SAMEORIGIN"," なのでiframeで読める",[292,356,357,360,363,368,371],{},[316,358,359],{},"3",[316,361,362],{},"MCP接続",[316,364,365],{},[34,366,367],{},"--browserUrl http://127.0.0.1:9222",[316,369,370],{},"接続エラー",[316,372,373,374,376],{},"Chrome 144+は ",[34,375,141],{}," を使うべき",[292,378,379,382,385,388,391],{},[316,380,381],{},"4",[316,383,384],{},"autoConnect競合",[316,386,387],{},"プロジェクト設定残存",[316,389,390],{},"グローバル設定を上書き",[316,392,393],{},"MCP設定の優先順位に注意",[292,395,396,399,402,405,408],{},[316,397,398],{},"5",[316,400,401],{},"Miller Viewer",[316,403,404],{},"全チャプター1配列",[316,406,407],{},"セクション選択で他トピック表示",[316,409,410],{},"セクションごとに配列分割が必要",[292,412,413,416,419,422,425],{},[316,414,415],{},"6",[316,417,418],{},"チャプター切替",[316,420,421],{},"TOC name ≠ miller name",[316,423,424],{},"切替が動かない",[316,426,427],{},"完全一致マッチングなので名前統一が必須",[292,429,430,433,436,442,445],{},[316,431,432],{},"7",[316,434,435],{},"Git LFS push",[316,437,438,439],{},"通常の ",[34,440,441],{},"git push",[316,443,444],{},"132 unknown LFS objects",[316,446,447,449],{},[34,448,102],{}," で先にLFSオブジェクトをアップロード",[292,451,452,455,458,461,464],{},[316,453,454],{},"8",[316,456,457],{},"axios攻撃",[316,459,460],{},"プロンプトインジェクション疑い",[316,462,463],{},"ニュース調査で本物と確認",[316,465,466],{},"LLMの警告でも裏取りは必須",[88,468],{},[19,470,471],{"id":471},"今日の学び",[61,473,474,480,486,491],{},[64,475,476,477,479],{},"iframe方式はfetchで取れない動的コンテンツの取得に使える。",[34,478,353],{}," を確認すれば同一オリジン内で動く",[64,481,482,483,485],{},"Chrome DevTools MCP の ",[34,484,141],{}," は M144以上で有効。普段のプロファイルで拡張操作まで可能になった",[64,487,488,490],{},[34,489,155],{}," のような生成物はビルドプロセスに組み込まないと陳腐化する。手動運用は必ず忘れる",[64,492,493],{},"サプライチェーン攻撃は他人事ではない。不要な依存プロジェクトを放置するとリスクが積み上がる",[88,495],{},[19,497,498],{"id":498},"関連記事",[61,500,501,505,509,513],{},[64,502,503],{},[83,504,86],{"href":85},[64,506,507],{},[83,508,129],{"href":128},[64,510,511],{},[83,512,182],{"href":181},[64,514,515],{},[83,516,221],{"href":220},{"title":518,"searchDepth":519,"depth":519,"links":520},"",2,[521,529,530,531],{"id":21,"depth":519,"text":21,"children":522},[523,525,526,527,528],{"id":25,"depth":524,"text":26},3,{"id":92,"depth":524,"text":93},{"id":134,"depth":524,"text":135},{"id":187,"depth":524,"text":188},{"id":226,"depth":524,"text":227},{"id":284,"depth":519,"text":284},{"id":471,"depth":519,"text":471},{"id":498,"depth":519,"text":498},"diary","Chrome拡張に仕訳管理タブを新設し実機テストまで完走。CF計算書教材はSVGスライド70枚を一日で制作。Chrome DevTools MCP autoConnectでSearch Console改善、axiosサプライチェーン攻撃への対応も。","md",{},true,"/2026-03-31-diary","daily-log",false,"2026-03-31T00:00:00.000Z",{"title":5,"description":533},"2026-04/2026-03-31/diary-2026-03-31",[544,545,546,547,548,549,550],"日記","Chrome拡張機能","CF計算書","Chrome DevTools MCP","Search Console","axios","サプライチェーン攻撃",null,"uXwrFjAGUrrnI15bADbwT8VhOjIW20-ejUDlHchB7fA",[],"https://log.eurekapu.com/favicon.svg",1778379979238]