[{"data":1,"prerenderedAt":429},["ShallowReactive",2],{"content-/2026-03-24-diary":3,"all-pages-for-dir":427,"og-image-/2026-03-24-diary":428},{"id":4,"title":5,"body":6,"category":409,"description":410,"extension":411,"meta":412,"navigation":413,"path":414,"project_name":415,"published":416,"publishedAt":417,"seo":418,"stem":419,"tags":420,"todo":425,"updatedAt":425,"__hash__":426},"pages/2026-03/2026-03-24/diary-2026-03-24.md","2026年3月24日の開発日記 - 会計Chrome拡張を一日で大改修",{"type":7,"value":8,"toc":396},"minimark",[9,14,18,22,27,30,36,55,66,69,73,76,80,100,108,110,114,117,121,146,154,156,159,350,352,355,377,379,382],[10,11,13],"h1",{"id":12},"_2026年3月24日の開発日記","2026年3月24日の開発日記",[15,16,17],"p",{},"朝5時、PRレビューコメントの確認から始まった一日。終わってみれば、Chrome拡張の会計サービス連携をエクスポート機能・ログ機能・UI構造・ドキュメントの4軸で一気に押し進めていた。金額の型変換が3度裏切り、CTI切替の仕様がサービスリスト取得を阻み、公式APIの壁がビジネスモデルの構造を浮き彫りにした。",[19,20,21],"h2",{"id":21},"今日やったこと",[23,24,26],"h3",{"id":25},"_1-エクスポート機能の強化","1. エクスポート機能の強化",[15,28,29],{},"PR #1のマージから始まり、6件の機能追加・修正を積み重ねた。",[15,31,32],{},[33,34,35],"strong",{},"主な成果:",[37,38,39,43,46,49,52],"ul",{},[40,41,42],"li",{},"スプレッドシートURL分離（仕訳帳用 / 連携明細用）",[40,44,45],{},"金額を数値型に変換 + カンマ区切り書式設定",[40,47,48],{},"残高試算表エクスポート（HTMLスクレイピング方式、BS+PL統合シート）",[40,50,51],{},"年度フィルタバグ修正（全年度展開 → 選択年度のみ）",[40,53,54],{},"重複チェックの型不一致問題3パターンを修正",[15,56,57,60,61],{},[33,58,59],{},"詳細:"," ",[62,63,65],"a",{"href":64},"/mf-extension-export-enhancements","Chrome拡張エクスポート機能強化",[67,68],"hr",{},[23,70,72],{"id":71},"_2-エクスポートログ機能とuiリファクタリング","2. エクスポートログ機能とUIリファクタリング",[15,74,75],{},"エクスポート結果を事業者×サービス×年度のマトリクスで可視化し、UI構造をミラーカラム3列に刷新した。",[15,77,78],{},[33,79,35],{},[37,81,82,85,88,91,94,97],{},[40,83,84],{},"エクスポートログ機能（chrome.storageに保存、マトリクス表示）",[40,86,87],{},"リアルタイム進捗表示（マスがポコポコ埋まるアニメーション）",[40,89,90],{},"モーダル → ミラーカラム3列目への移行",[40,92,93],{},"タブ構造再構成（設定 / エクスポート / インポート）",[40,95,96],{},"事業者×年度×サービスの2段ネスト表示",[40,98,99],{},"デッドコード削除、resolveJournalToRowsのlib.js分離",[15,101,102,60,104],{},[33,103,59],{},[62,105,107],{"href":106},"/mf-extension-log-and-ui-refactoring","エクスポートログ機能とUIリファクタリング",[67,109],{},[23,111,113],{"id":112},"_3-会計サービスのビジネスモデル調査とapiドキュメンテーション","3. 会計サービスのビジネスモデル調査とAPIドキュメンテーション",[15,115,116],{},"Chrome拡張で蓄積したAPI知識を包括的リファレンスにまとめ、会計サービスのビジネスモデル構造を掘り下げた。",[15,118,119],{},[33,120,35],{},[37,122,123,131,134,137,140,143],{},[40,124,125,126,130],{},"内部APIリファレンス（全13セクション）を ",[127,128,129],"code",{},"memo/"," に作成",[40,132,133],{},"勘定科目マスタのAPI取得 → エクスポート形式でスプレッドシートに書き出し",[40,135,136],{},"年度切替の仕様検証（日付パラメータでは跨げない → PATCH必須）",[40,138,139],{},"配布リスク評価 + ZIP配布の法的整理",[40,141,142],{},"公式v3 API制限の調査（仕訳APIは上位プラン限定）",[40,144,145],{},"競合サービスのプラン比較調査",[15,147,148,60,150],{},[33,149,59],{},[62,151,153],{"href":152},"/mf-business-model-and-api-docs","会計サービスのビジネスモデル調査とAPIドキュメンテーション",[67,155],{},[19,157,158],{"id":158},"今日の試行錯誤",[160,161,162,184],"table",{},[163,164,165],"thead",{},[166,167,168,172,175,178,181],"tr",{},[169,170,171],"th",{},"#",[169,173,174],{},"テーマ",[169,176,177],{},"試したこと",[169,179,180],{},"結果",[169,182,183],{},"気づき",[185,186,187,208,235,252,272,292,309,330],"tbody",{},[166,188,189,193,196,202,205],{},[190,191,192],"td",{},"1",[190,194,195],{},"金額の数値化",[190,197,198,201],{},[127,199,200],{},"String(d.totalValue)"," を数値のまま渡す",[190,203,204],{},"成功",[190,206,207],{},"Sheets API RAWモードはJSON型を反映する",[166,209,210,213,216,226,232],{},[190,211,212],{},"2",[190,214,215],{},"カンマ区切り",[190,217,218,221,222,225],{},[127,219,220],{},"formatSheetColumns"," で ",[127,223,224],{},"#,##0"," 設定",[190,227,228,231],{},[127,229,230],{},"fmt.columns is not iterable"," エラー",[190,233,234],{},"ヘッダー背景色エントリにcolumnsがない → ガード追加",[166,236,237,240,243,246,249],{},[190,238,239],{},"3",[190,241,242],{},"重複チェック①",[190,244,245],{},"数値 vs 文字列",[190,247,248],{},"重複追記された",[190,250,251],{},"normalizeRowでString()統一が必要",[166,253,254,257,260,263,266],{},[190,255,256],{},"4",[190,258,259],{},"重複チェック②",[190,261,262],{},"カンマ付きFORMATTED_VALUE vs 素の数値",[190,264,265],{},"再び重複追記",[190,267,268,271],{},[127,269,270],{},"replace(/,/g, '')"," で除去してから比較",[166,273,274,277,280,286,289],{},[190,275,276],{},"5",[190,278,279],{},"サービスリスト",[190,281,282,285],{},[127,283,284],{},"accounts?cti=XXX"," のGETで取得",[190,287,288],{},"全事業者が同じサービスになった",[190,290,291],{},"GETではセッション切替されない → CTI切替POST必須",[166,293,294,297,300,303,306],{},[190,295,296],{},"6",[190,298,299],{},"年度切替",[190,301,302],{},"日付パラメータで跨年度取得",[190,304,305],{},"2024年度指定なのに2025年度データが返る",[190,307,308],{},"セッション年度に依存 → PATCH必須",[166,310,311,314,317,324,327],{},[190,312,313],{},"7",[190,315,316],{},"残高試算表indent",[190,318,319,320,323],{},"CSS ",[127,321,322],{},"label-indent-*"," をそのまま使用",[190,325,326],{},"勘定科目のインデントが不統一",[190,328,329],{},"補助科目あり(indent=1) vs なし(indent=3) → 論理階層で固定",[166,331,332,335,338,344,347],{},[190,333,334],{},"8",[190,336,337],{},"インポートの事業者名",[190,339,340,343],{},[127,341,342],{},"getEntityName()"," でDOM検索",[190,345,346],{},"「不明」と表示された",[190,348,349],{},"ポップアップと会計ページでDOMコンテキストが違う → レジストリから取得",[67,351],{},[19,353,354],{"id":354},"今日の学び",[37,356,357,368,371,374],{},[40,358,359,360,363,364,367],{},"Sheets APIの",[127,361,362],{},"FORMATTED_VALUE","は書式適用後の文字列を返すため、数値比較には使えない。",[127,365,366],{},"UNFORMATTED_VALUE","か、比較時にカンマ除去が必要",[40,369,370],{},"内部APIは年度パラメータを無視してセッション年度のデータを返す。年度切替はPATCH必須",[40,372,373],{},"HTMLのCSSクラスに埋め込まれたメタ情報（indent level）は便利だが、値の統一性は保証されていない",[40,375,376],{},"公式仕訳APIは上位プラン限定。通常プランでは使えない",[67,378],{},[19,380,381],{"id":381},"関連記事",[37,383,384,388,392],{},[40,385,386],{},[62,387,65],{"href":64},[40,389,390],{},[62,391,107],{"href":106},[40,393,394],{},[62,395,153],{"href":152},{"title":397,"searchDepth":398,"depth":398,"links":399},"",2,[400,406,407,408],{"id":21,"depth":398,"text":21,"children":401},[402,404,405],{"id":25,"depth":403,"text":26},3,{"id":71,"depth":403,"text":72},{"id":112,"depth":403,"text":113},{"id":158,"depth":398,"text":158},{"id":354,"depth":398,"text":354},{"id":381,"depth":398,"text":381},"diary","会計サービス連携Chrome拡張に残高試算表エクスポート・ログ機能・ミラーカラムUI・ビジネスモデル調査を詰め込んだ一日。型不一致バグとの格闘、CTI切替の罠、公式APIの壁など試行錯誤の連続","md",{},true,"/2026-03-24-diary","daily-log",false,"2026-03-24T00:00:00.000Z",{"title":5,"description":410},"2026-03/2026-03-24/diary-2026-03-24",[421,422,423,424],"日記","Chrome拡張機能","会計サービス","Google Sheets API",null,"FNgOL6gl_z4KNYkdebFKovh4xrp8Fsl17RCAIaIOA5s",[],"https://log.eurekapu.com/favicon.svg",1778379976583]