[{"data":1,"prerenderedAt":465},["ShallowReactive",2],{"content-/2026-03-29-diary":3,"all-pages-for-dir":463,"og-image-/2026-03-29-diary":464},{"id":4,"title":5,"body":6,"category":446,"description":447,"extension":448,"meta":449,"navigation":397,"path":450,"project_name":451,"published":452,"publishedAt":453,"seo":454,"stem":455,"tags":456,"todo":461,"updatedAt":461,"__hash__":462},"pages/2026-03/2026-03-29/diary-2026-03-29.md","2026年3月29日の開発日記 - Chrome拡張の大規模リファクタリングとMF未登録明細調査",{"type":7,"value":8,"toc":431},"minimark",[9,14,18,22,27,30,33,39,55,66,69,73,76,80,94,102,104,108,111,115,134,142,144,148,151,153,156,362,364,367,381,383,386,412,414,417],[10,11,13],"h1",{"id":12},"_2026年3月29日の開発日記","2026年3月29日の開発日記",[15,16,17],"p",{},"会計ソフト連携Chrome拡張を朝から晩まで触り続けた一日。タブ構成の再編からバグ修正、新機能実装、未実装機能のAPI調査まで、拡張機能の守備範囲を一気に広げた。",[19,20,21],"h2",{"id":21},"今日やったこと",[23,24,26],"h3",{"id":25},"_1-自動仕訳ルールの独立タブ化とルールid照合バグ修正","1. 自動仕訳ルールの独立タブ化とルールID照合バグ修正",[15,28,29],{},"エクスポートタブの中に埋もれていた自動仕訳ルール機能を独立タブに引き出し、UIを全面的に作り直した。3タブ→5タブ構成への再編。レイアウトは3行→2カラム5行→カードスタイルと3パターン試して最終形に落ち着いた。",[15,31,32],{},"ルールID照合で29件が未特定だったバグを発見。マルチマップ化→前方15文字一致→NFKC正規化と段階的にアプローチし、最終的に全件解消した。",[15,34,35],{},[36,37,38],"strong",{},"主な成果:",[40,41,42,46,49,52],"ul",{},[43,44,45],"li",{},"タブ構成を5タブに再編（設定/エクスポート/インポート/自動仕訳ルール/ログ）",[43,47,48],{},"ルールID照合の29件未特定→0件（NFKC正規化で根本解決）",[43,50,51],{},"グローバルボタンロック（CTI競合防止）",[43,53,54],{},"タブ位置のlocalStorage記憶",[15,56,57,60,61],{},[36,58,59],{},"詳細:"," ",[62,63,65],"a",{"href":64},"/mf-journal-rule-tab-refactoring","Chrome拡張 自動仕訳ルールの独立タブ化とルールID照合バグ修正",[67,68],"hr",{},[23,70,72],{"id":71},"_2-事業者設定エクスポートインポート機能","2. 事業者設定エクスポート/インポート機能",[15,74,75],{},"Chrome拡張に「事業者設定」タブを新設し、全年度マトリクスのエクスポートとfetch POSTによるインポートを実装。当初はCLI経由のインポートを計画していたが、Chrome拡張UI上で完結するよう方針転換した。",[15,77,78],{},[36,79,38],{},[40,81,82,85,88,91],{},[43,83,84],{},"事業者設定の全年度マトリクスをスプレッドシートに出力（エクスポート+インポート用の2シート構成）",[43,86,87],{},"fetch APIによるページ遷移なしのフォームPOSTインポート",[43,89,90],{},"Codexレビュー3回実施→致命的指摘を事前に反映",[43,92,93],{},"ログタブへの記録統合（yearsプロパティ欠損バグ修正含む）",[15,95,96,60,98],{},[36,97,59],{},[62,99,101],{"href":100},"/mf-office-settings-export-import","Chrome拡張 事業者設定エクスポート/インポート機能",[67,103],{},[23,105,107],{"id":106},"_3-mf未登録明細の一括自動登録-調査","3. MF未登録明細の一括自動登録 調査",[15,109,110],{},"Chrome DevTools MCPでクラウド会計の連携明細画面を調査し、APIエンドポイント・DOM構造・ステータス遷移を一通り解明した。確認ダイアログを誤ってAcceptして実データを登録してしまったが、仕訳削除→対象外→未入力に戻すフローで復元できた。",[15,112,113],{},[36,114,38],{},[40,116,117,125,128,131],{},[43,118,119,120,124],{},"個別登録API（",[121,122,123],"code",{},"/api/v1/account_transactions/{id}/journalize","）の構造解明",[43,126,127],{},"明細ステータス遷移サイクル（未入力→取引完了→対象外→未入力）の実地確認",[43,129,130],{},"テスト時のリカバリ手順確立",[43,132,133],{},"次回セッション向けの実装計画メモ作成",[15,135,136,60,138],{},[36,137,59],{},[62,139,141],{"href":140},"/mf-auto-registration-investigation","クラウド会計 未登録明細の一括自動登録 調査記録",[67,143],{},[23,145,147],{"id":146},"_4-mdx-playground-make-diary改善軽微","4. mdx-playground make-diary改善（軽微）",[15,149,150],{},"make-diaryコマンドでsync-once.shの完了前にログを読み始める問題を修正。Bashツールのtimeoutを300秒に設定して完了を待つ方式に変更した。",[67,152],{},[19,154,155],{"id":155},"今日の試行錯誤",[157,158,159,181],"table",{},[160,161,162],"thead",{},[163,164,165,169,172,175,178],"tr",{},[166,167,168],"th",{},"#",[166,170,171],{},"テーマ",[166,173,174],{},"試したこと",[166,176,177],{},"結果",[166,179,180],{},"気づき",[182,183,184,202,217,233,250,265,281,297,314,330,346],"tbody",{},[163,185,186,190,193,196,199],{},[187,188,189],"td",{},"1",[187,191,192],{},"UIレイアウト",[187,194,195],{},"3行縦並びレイアウト",[187,197,198],{},"却下",[187,200,201],{},"エクスポートとインポートの区別がつかない",[163,203,204,207,209,212,214],{},[187,205,206],{},"2",[187,208,192],{},[187,210,211],{},"2カラム5行グリッド",[187,213,198],{},[187,215,216],{},"横スクロールが発生",[163,218,219,222,224,227,230],{},[187,220,221],{},"3",[187,223,192],{},[187,225,226],{},"カードスタイル+背景色分け",[187,228,229],{},"採用",[187,231,232],{},"設定画面と統一感が出た",[163,234,235,238,241,244,247],{},[187,236,237],{},"4",[187,239,240],{},"ID照合",[187,242,243],{},"マルチマップ（同一キー複数ID対応）",[187,245,246],{},"一部改善",[187,248,249],{},"29→17件に減少。別の原因がある",[163,251,252,255,257,260,262],{},[187,253,254],{},"5",[187,256,240],{},[187,258,259],{},"前方15文字一致",[187,261,246],{},[187,263,264],{},"CSVの途中切れに対応。まだ残る",[163,266,267,270,272,275,278],{},[187,268,269],{},"6",[187,271,240],{},[187,273,274],{},"3パスフォールバック（緩いマッチ）",[187,276,277],{},"効果薄",[187,279,280],{},"文字コード差異が根本原因だった",[163,282,283,286,288,291,294],{},[187,284,285],{},"7",[187,287,240],{},[187,289,290],{},"NFKC正規化",[187,292,293],{},"解決",[187,295,296],{},"全角/半角の揺れを吸収して0件達成",[163,298,299,302,305,308,311],{},[187,300,301],{},"8",[187,303,304],{},"シート1削除",[187,306,307],{},"SS作成直後に削除",[187,309,310],{},"失敗",[187,312,313],{},"シートが1枚しかない時点ではAPIが拒否",[163,315,316,319,321,324,327],{},[187,317,318],{},"9",[187,320,304],{},[187,322,323],{},"データシート追加後に削除",[187,325,326],{},"成功",[187,328,329],{},"順序を変えるだけで解決",[163,331,332,335,338,341,343],{},[187,333,334],{},"10",[187,336,337],{},"確認ダイアログ",[187,339,340],{},"DevTools MCPでAccept",[187,342,310],{},[187,344,345],{},"本番データに登録してしまった",[163,347,348,351,354,357,359],{},[187,349,350],{},"11",[187,352,353],{},"データ復元",[187,355,356],{},"仕訳削除→対象外→未入力に戻す",[187,358,326],{},[187,360,361],{},"リカバリフローが確立できた",[67,363],{},[19,365,366],{"id":366},"今日の学び",[40,368,369,372,375,378],{},[43,370,371],{},"NFKC正規化は文字コード差異の照合問題を一撃で解決する。フォールバックマッチを積み重ねるより、入力を正規化する方が根本的",[43,373,374],{},"Codexレビューはエラーハンドリングの抜けを実装前に拾える。3回投げるとさすがに致命的な見落としは消える",[43,376,377],{},"fetch POSTでフォーム送信するとページ遷移なしで連続更新できる。10項目が2秒で完了し、ページ遷移方式（30秒以上）と比べて体感が別物",[43,379,380],{},"DevTools MCPの確認ダイアログは自動Acceptしない。本番データへの操作は必ず手動確認を挟む",[67,382],{},[19,384,385],{"id":385},"明日やること",[40,387,390,400,406],{"className":388},[389],"contains-task-list",[43,391,394,399],{"className":392},[393],"task-list-item",[395,396],"input",{"disabled":397,"type":398},true,"checkbox"," 未登録明細の一括自動登録実装（API構造は判明済み）",[43,401,403,405],{"className":402},[393],[395,404],{"disabled":397,"type":398}," 補助科目の作成API調査",[43,407,409,411],{"className":408},[393],[395,410],{"disabled":397,"type":398}," 勘定科目マッピングルールの設定UI検討",[67,413],{},[19,415,416],{"id":416},"関連記事",[40,418,419,423,427],{},[43,420,421],{},[62,422,65],{"href":64},[43,424,425],{},[62,426,101],{"href":100},[43,428,429],{},[62,430,141],{"href":140},{"title":432,"searchDepth":433,"depth":433,"links":434},"",2,[435,442,443,444,445],{"id":21,"depth":433,"text":21,"children":436},[437,439,440,441],{"id":25,"depth":438,"text":26},3,{"id":71,"depth":438,"text":72},{"id":106,"depth":438,"text":107},{"id":146,"depth":438,"text":147},{"id":155,"depth":433,"text":155},{"id":366,"depth":433,"text":366},{"id":385,"depth":433,"text":385},{"id":416,"depth":433,"text":416},"diary","自動仕訳ルール独立タブ化・ルールID照合バグ修正(NFKC正規化)、事業者設定エクスポート/インポート機能の実装、MF未登録明細の一括自動登録API調査を一日で完了","md",{},"/2026-03-29-diary","daily-log",false,"2026-03-29T00:00:00.000Z",{"title":5,"description":447},"2026-03/2026-03-29/diary-2026-03-29",[457,458,459,290,460],"日記","Chrome拡張機能","クラウド会計","API解析",null,"n2u4ehzdyGso7WKmeZqL6IVqwQbsGfp6d7zn62qq67g",[],"https://log.eurekapu.com/favicon.svg",1778379978365]