[{"data":1,"prerenderedAt":421},["ShallowReactive",2],{"content-/2026-04-15-diary":3,"all-pages-for-dir":419,"og-image-/2026-04-15-diary":420},{"id":4,"title":5,"body":6,"category":400,"description":401,"extension":402,"meta":403,"navigation":345,"path":404,"project_name":405,"published":406,"publishedAt":407,"seo":408,"stem":409,"tags":410,"todo":417,"updatedAt":417,"__hash__":418},"pages/2026-04/2026-04-15/diary-2026-04-15.md","2026年4月15日の開発日記 - CF精算表42論点を一括生成しHTMLビューアまで構築",{"type":7,"value":8,"toc":385},"minimark",[9,14,18,22,29,32,37,40,46,62,73,76,80,83,87,98,106,108,112,115,119,130,138,140,143,307,309,312,329,331,334,366,368,371],[10,11,13],"h1",{"id":12},"_2026年4月15日の開発日記","2026年4月15日の開発日記",[15,16,17],"p",{},"朝5時半から夜まで、CF精算表（CFWS）の自動生成パイプラインに没頭した1日。1ファイルのプロトタイプから始めて、42論点の一括生成、書籍PDFのスクリーンショット撮影、HTMLテーブルへの構造化、Excelビューア構築まで一気に通した。",[19,20,21],"h2",{"id":21},"今日のタイムライン",[15,23,24],{},[25,26],"img",{"alt":27,"src":28},"タイムライン","/2026-04/2026-04-15/timeline-2026-04-15.png",[19,30,31],{"id":31},"今日やったこと",[33,34,36],"h3",{"id":35},"_1-cf精算表の独立excel自動生成phase-14","1. CF精算表の独立Excel自動生成（Phase 1〜4）",[15,38,39],{},"仮説検証用Excelをパースして、MF仕訳シート・年次推移表・CFWSの3シート構成Excelを自動生成するスクリプトを構築した。Q3-9（有形固定資産）のプロトタイプから始めて、42論点の一括生成まで到達。",[15,41,42],{},[43,44,45],"strong",{},"主な成果:",[47,48,49,53,56,59],"ul",{},[50,51,52],"li",{},"上半分check行 42/42 全てゼロ達成",[50,54,55],{},"Codexレビュー3回で致命的指摘を全て反映（数式ベース化、開始残高SUMIFS混入防止）",[50,57,58],{},"Turso DBから書籍解説テキストを自動挿入するパイプライン完成",[50,60,61],{},"cfws_registryテーブルで次セッションへのコンテキストブリッジ構築",[15,63,64,67,68],{},[43,65,66],{},"詳細:"," ",[69,70,72],"a",{"href":71},"/cfws-excel-automation","CF精算表の独立Excel自動生成",[74,75],"hr",{},[33,77,79],{"id":78},"_2-書籍スクリーンショット撮影とhtmlテーブル構造化","2. 書籍スクリーンショット撮影とHTMLテーブル構造化",[15,81,82],{},"Chrome DevToolsで参考書PDFを開き、全37論点の精算表スクリーンショットを撮影。ImageMagickでクロップし、HTMLテーブルに構造化データ変換した。",[15,84,85],{},[43,86,45],{},[47,88,89,92,95],{},[50,90,91],{},"全39枚のスクリーンショット撮影完了（縦モニター200%ズームで品質向上）",[50,93,94],{},"37タブ構成のindex.htmlに全Q統合（タブ切替UI + 矢印キー移動）",[50,96,97],{},"全Qの数値照合レビュー完了（1セルずつスクショとHTMLを突合）",[15,99,100,67,102],{},[43,101,66],{},[69,103,105],{"href":104},"/cfws-screenshot-structuring","CF精算表スクリーンショット撮影からHTMLテーブル構造化まで",[74,107],{},[33,109,111],{"id":110},"_3-excel-cfwsのhtmlビューア構築","3. Excel CFWSのHTMLビューア構築",[15,113,114],{},"ExcelのCFWSシートをHTMLテーブルに変換するビューアを構築。iframeの高さ自動調整やcheck検証の可視化機能を実装した。",[15,116,117],{},[43,118,45],{},[47,120,121,124,127],{},[50,122,123],{},"Excel COM経由で数式計算済みファイルを生成→HTML変換のパイプライン確立",[50,125,126],{},"postMessageベースのiframe高さ自動調整で、タブ切替時の表示崩れを解消",[50,128,129],{},"check≠0のタブを赤色表示する可視化機能で、5件のバグを検出→4件修正完了",[15,131,132,67,134],{},[43,133,66],{},[69,135,137],{"href":136},"/cfws-html-viewer","CF精算表HTMLビューア構築",[74,139],{},[19,141,142],{"id":142},"今日の試行錯誤",[144,145,146,168],"table",{},[147,148,149],"thead",{},[150,151,152,156,159,162,165],"tr",{},[153,154,155],"th",{},"#",[153,157,158],{},"テーマ",[153,160,161],{},"試したこと",[153,163,164],{},"結果",[153,166,167],{},"気づき",[169,170,171,189,205,222,239,256,273,290],"tbody",{},[150,172,173,177,180,183,186],{},[174,175,176],"td",{},"1",[174,178,179],{},"SUMIFSの日付不一致",[174,181,182],{},"取引日をテキスト文字列で保存",[174,184,185],{},"失敗",[174,187,188],{},"Excelの日付比較はdate型でないとマッチしない",[150,190,191,194,197,200,202],{},[174,192,193],{},"2",[174,195,196],{},"科目名の不一致",[174,198,199],{},"「備品」でACCOUNT_DBを検索",[174,201,185],{},[174,203,204],{},"正式名「工具器具備品」とのエイリアス対応が必要",[150,206,207,210,213,216,219],{},[174,208,209],{},"3",[174,211,212],{},"繰越利益剰余金のPL未反映",[174,214,215],{},"SUMIFSだけでBS残高を計算",[174,217,218],{},"check≠0",[174,220,221],{},"PL利益を加算する数式を別途追加する必要がある",[150,223,224,227,230,233,236],{},[174,225,226],{},"4",[174,228,229],{},"CFラベル名の不一致",[174,231,232],{},"短縮ラベル「売上債権の増減」で配賦",[174,234,235],{},"未配賦",[174,237,238],{},"正式名「売上債権の増減額（△は増加）」との正規化関数が必要",[150,240,241,244,247,250,253],{},[174,242,243],{},"5",[174,245,246],{},"iframeの高さ不足",[174,248,249],{},"onloadでcontentDocument.scrollHeight",[174,251,252],{},"取得不可",[174,254,255],{},"file://のクロスオリジン制限。postMessage方式で迂回",[150,257,258,261,264,267,270],{},[174,259,260],{},"6",[174,262,263],{},"非表示タブのscrollHeight",[174,265,266],{},"display:none時にpostMessage",[174,268,269],{},"高さ0",[174,271,272],{},"タブ切替時にcfws-request-heightメッセージを送信",[150,274,275,278,281,284,287],{},[174,276,277],{},"7",[174,279,280],{},"スクショのズーム",[174,282,283],{},"75%で1ページ全体を撮影",[174,285,286],{},"文字が潰れる",[174,288,289],{},"縦モニター200%ズームで品質が大幅に向上",[150,291,292,295,298,301,304],{},[174,293,294],{},"8",[174,296,297],{},"クロップ座標の注記切れ",[174,299,300],{},"bottomを控えめに設定",[174,302,303],{},"＜＊C＞以降が消える",[174,305,306],{},"注記は＜＊A＞〜最後まで余裕を持って含める",[74,308],{},[19,310,311],{"id":311},"今日の学び",[47,313,314,317,320,323,326],{},[50,315,316],{},"SUMIFSは日付型に厳格で、文字列と日付が混在するとサイレントに0を返す",[50,318,319],{},"Codexレビューを3回回すと、致命的な設計ミス（値vs数式、開始残高汚染）を事前に潰せる",[50,321,322],{},"iframeのpostMessageリサイズは、file://プロトコルでもクロスオリジン制限を回避できる実用的なパターン",[50,324,325],{},"スクリーンショット撮影は、モニターの向き（縦横）とズーム倍率で品質が劇的に変わる",[50,327,328],{},"check≠0のタブを視覚的に赤くすると、37タブの中から問題箇所が一瞬で目に飛び込む",[74,330],{},[19,332,333],{"id":333},"明日やること",[47,335,338,348,354,360],{"className":336},[337],"contains-task-list",[50,339,342,347],{"className":340},[341],"task-list-item",[343,344],"input",{"disabled":345,"type":346},true,"checkbox"," Q4-2（連結仕訳）のcheck≠0バグ修正",[50,349,351,353],{"className":350},[341],[343,352],{"disabled":345,"type":346}," 残りのクロップ画像の仕上げ（Q5-23〜Q5-26）",[50,355,357,359],{"className":356},[341],[343,358],{"disabled":345,"type":346}," 全Q一括Excel→HTML変換の自動化スクリプト完成",[50,361,363,365],{"className":362},[341],[343,364],{"disabled":345,"type":346}," Phase 3: 書籍スクリーンショットとExcelの対応確認",[74,367],{},[19,369,370],{"id":370},"関連記事",[47,372,373,377,381],{},[50,374,375],{},[69,376,72],{"href":71},[50,378,379],{},[69,380,105],{"href":104},[50,382,383],{},[69,384,137],{"href":136},{"title":386,"searchDepth":387,"depth":387,"links":388},"",2,[389,390,396,397,398,399],{"id":21,"depth":387,"text":21},{"id":31,"depth":387,"text":31,"children":391},[392,394,395],{"id":35,"depth":393,"text":36},3,{"id":78,"depth":393,"text":79},{"id":110,"depth":393,"text":111},{"id":142,"depth":387,"text":142},{"id":311,"depth":387,"text":311},{"id":333,"depth":387,"text":333},{"id":370,"depth":387,"text":370},"diary","キャッシュフロー精算表のExcel自動生成をPhase 1プロトタイプからPhase 4 DB連携まで1日で駆け抜け、書籍PDF全37論点のスクリーンショット撮影・HTMLテーブル化・Excelビューア構築まで完了した記録","md",{},"/2026-04-15-diary","daily-log",false,"2026-04-15T00:00:00.000Z",{"title":5,"description":401},"2026-04/2026-04-15/diary-2026-04-15",[411,412,413,414,415,416],"日記","cashflow","excel","python","automation","turso",null,"YuwoCixlvgY17P_2oW8mnVPvNrh4cILJK9_31EDl0tU",[],"https://log.eurekapu.com/favicon.svg",1776326292700]