[{"data":1,"prerenderedAt":678},["ShallowReactive",2],{"content-/2026-04-30-diary":3,"all-pages-for-dir":676,"og-image-/2026-04-30-diary":677},{"id":4,"title":5,"body":6,"category":657,"description":658,"extension":659,"meta":660,"navigation":592,"path":661,"project_name":662,"published":663,"publishedAt":664,"seo":665,"stem":666,"tags":667,"todo":674,"updatedAt":674,"__hash__":675},"pages/2026-04/2026-04-30/diary-2026-04-30.md","2026年4月30日の開発日記 - 連結会計レッスンをVue化し、TAC公認会計士テキスト11冊を取り込んだ日",{"type":7,"value":8,"toc":638},"minimark",[9,14,18,22,29,32,37,40,46,65,76,79,83,95,99,113,121,123,127,130,134,149,157,159,163,170,174,191,199,201,205,216,220,235,243,245,249,252,256,267,275,277,281,296,298,301,550,552,555,576,578,581,607,609,612],[10,11,13],"h1",{"id":12},"_2026年4月30日の開発日記","2026年4月30日の開発日記",[15,16,17],"p",{},"朝から夜まで、連結会計レッスンと書籍ナレッジベースの2本立てで動いた1日。連結会計はHTMLプロトタイプを Vue + データ駆動に置き換え、設例6本を実装してCodex GPT-5.5の再帰レビューで仕上げた。書籍ナレッジベースは TAC公認会計士テキスト【計算】シリーズ11冊（3,488ページ）を yomitoku で取り込み、章節整理まで通した。Chrome拡張のX検索エクスポーターは GraphQL 直叩きを半日かけて潰した結果、DOMスクロール版で決着した。",[19,20,21],"h2",{"id":21},"今日のタイムライン",[15,23,24],{},[25,26],"img",{"alt":27,"src":28},"タイムライン","/2026-04/2026-04-30/timeline-2026-04-30.png",[19,30,31],{"id":31},"今日やったこと",[33,34,36],"h3",{"id":35},"_1-連結精算表のexcel風htmlプロトタイプ","1. 連結精算表のExcel風HTMLプロトタイプ",[15,38,39],{},"ゲシュタルト6法則のExcel活用例を全部HTMLテーブル化したついでに、連結精算表のプロトタイプを作る話に発展した。シートタブ案を捨ててオーバーレイモーダル方式に転換、補助科目あり版とセルクリック→モーダル内ハイライトまで踏み込んだ。最後にハードコード問題が浮上し、Codex 4回再帰レビューで Vue 化の計画書を確定させた。",[15,41,42],{},[43,44,45],"strong",{},"主な成果:",[47,48,49,53,56,59,62],"ul",{},[50,51,52],"li",{},"ScrollArticle に Excel 風スタイル（A列スペーサー、F列スペーサー、列ヘッダー縦線のみ）",[50,54,55],{},"設例 I-2-1〜I-2-3 を網羅したハンドブック形式",[50,57,58],{},"補助科目あり版テーブル（売掛金_外部向け / 売掛金_内部向け）で連結ロジックを可視化",[50,60,61],{},"セルクリックでモーダル内の対応する科目をオレンジハイライト",[50,63,64],{},"consolidated-worksheet-howto.md に1,084行のドキュメント化",[15,66,67,70,71],{},[43,68,69],{},"詳細:"," ",[72,73,75],"a",{"href":74},"/2026-04-30-consolidated-worksheet-html-prototype","連結精算表のExcel風HTMLプロトタイプを試作する",[77,78],"hr",{},[33,80,82],{"id":81},"_2-連結会計レッスンの-vue-データ駆動化","2. 連結会計レッスンの Vue + データ駆動化",[15,84,85,86,90,91,94],{},"午前に I-2-1〜I-2-3、午後に I-3-1〜I-3-3 の合計6本を Vue コンポーネント + 型付きデータに置き換えた。Codex GPT-5.5 が ",[87,88,89],"code",{},"modifyColumns"," に ",[87,92,93],{},"individual-modify"," を含めると二重計上される致命点を指摘してきて、計画書を v1 → v2 → v3 まで書き直した。最終的に「列単位集約モーダル：マーカーはセル単位、クリック時のモーダルは列単位の全仕訳を集約、ハイライトはクリックしたセルの科目だけ」という設計に落ち着いた。",[15,96,97],{},[43,98,45],{},[47,100,101,104,107,110],{},[50,102,103],{},"types.ts / format.ts / compute.ts / WorksheetTable.vue / JournalEntryModal.vue を新設",[50,105,106],{},"設例6本で全99テストパス（既存31 + 新規 I-3-X 39 + 補助 I-3-X 29）",[50,108,109],{},"HMRキャッシュで dev 再起動が必要だった事故も含めて整理",[50,111,112],{},"feature-slidesスキルで実装内容のスライド65枚生成",[15,114,115,70,117],{},[43,116,69],{},[72,118,120],{"href":119},"/2026-04-30-consolidated-accounting-vue-implementation","連結会計レッスンを Vue + データ駆動でフルスクラッチ実装",[77,122],{},[33,124,126],{"id":125},"_3-ゲシュタルトの法則ページmp4置換とsvg縦組み化","3. ゲシュタルトの法則ページ：MP4置換とSVG縦組み化",[15,128,129],{},"旧WordPress プロジェクトから自作MP4を10本回収してR2へ載せ替え、ScrollArticle の2カラムレイアウトを縦組みに作り直した。SVG の左半分（紫の原理エリア）が動画と被る問題は、Pythonスクリプトで4つのSVGを一括処理して解決した。拡大モーダルはプラグイン側で対象クラスを広げて、データファイル側の class 指定を不要化した。",[15,131,132],{},[43,133,45],{},[47,135,136,143,146],{},[50,137,138,139,142],{},"MP4 10本（合計4.3MB）を ",[87,140,141],{},"assets.info-accounting.com/images/excel/gestalt/"," にアップロード",[50,144,145],{},"SVG 4枚を Python + lxml で左半分削除",[50,147,148],{},"動画のビューポート内自動再生（Chrome のリソース節約）を確認",[15,150,151,70,153],{},[43,152,69],{},[72,154,156],{"href":155},"/2026-04-30-gestalt-page-mp4-and-svg-cleanup","ゲシュタルトの法則ページに自作MP4を埋め込み、SVGも縦組みに修正",[77,158],{},[33,160,162],{"id":161},"_4-書籍ナレッジベースtac公認会計士テキスト11冊一括取り込み","4. 書籍ナレッジベース：TAC公認会計士テキスト11冊一括取り込み",[15,164,165,166,169],{},"朝イチに昨日の積み残し（著者取得444件）を ",[87,167,168],{},"--missing-author"," フラグで回しきり、350件追加で取得した。続いて TAC公認会計士テキスト【計算】シリーズ11冊（合計3,488ページ）を yomitoku で OCR 化して Turso DB に格納。さらに章節整理（restructure）を11冊全部に流して、3,167チャンクを約1,000セクションに統合した。途中で4つのトラブルに当たった。",[15,171,172],{},[43,173,45],{},[47,175,176,179,182,185,188],{},[50,177,178],{},"Windows cp932 クラッシュ → UTF-8/unbuffered 対応",[50,180,181],{},"DB の idle timeout（38分超でstream切れ）→ reconnect() を各冊冒頭で呼ぶ",[50,183,184],{},"Embedded Replica の WAL ロック頻発 → HTTP 直接接続に切り替え",[50,186,187],{},"shelf 0冊問題 → fetch_status='manual_register' で NULL 値フィルタ免除",[50,189,190],{},"「連結」タグの集計確認、M&A/組織再編タグを追加（10件/7件）",[15,192,193,70,195],{},[43,194,69],{},[72,196,198],{"href":197},"/2026-04-30-tac-cpa-textbooks-batch-import","TAC公認会計士テキスト11冊を書籍ナレッジベースに一括取り込み",[77,200],{},[33,202,204],{"id":203},"_5-chrome拡張x検索エクスポーターの実装試行錯誤","5. Chrome拡張：X検索エクスポーターの実装試行錯誤",[15,206,207,208,211,212,215],{},"ブックマークと同じく ",[87,209,210],{},"SearchTimeline"," GraphQL を直接叩く方針で書き始めて、半日かけて崩壊した。404 → features 不足 → ヘッダー不足 → 200成功までは行ったが、content script の fetch hook が空。XHR hook を足してもダメ、document_start で先に走らせてもダメ。X本物が ServiceWorker (",[87,213,214],{},"/sw.js",") で GraphQL を処理していることが決定的原因と判明した。Codex GPT-5.5 に相談して規約観点も整理し、最終的に DOMスクロール版に書き換えた。",[15,217,218],{},[43,219,45],{},[47,221,222,225,228],{},[50,223,224],{},"DOMスクロール版（1.5秒間隔、新規追加0が4回連続+scrollHeight変化なし4回連続で終端判定）で動作確認",[50,226,227],{},"icon.svg が manifest で正しく表示されない問題 → @resvg/resvg-js（WASM）で PNG化",[50,229,230,231,234],{},"ドキュメント ",[87,232,233],{},"memo/2026-04-30/search-export-feature.md"," 作成",[15,236,237,70,239],{},[43,238,69],{},[72,240,242],{"href":241},"/2026-04-30-x-search-exporter-graphql-to-dom","Chrome拡張のX検索エクスポーター：GraphQL直叩きを断念してDOMスクロールに切り替えた経緯",[77,244],{},[33,246,248],{"id":247},"_6-x投稿400件から連結会計の難しい論点を抽出","6. X投稿400件から連結会計の「難しい」論点を抽出",[15,250,251],{},"自作のX検索エクスポーターで「連結 難しい」776行（約400ツイート）を取得して、簿記2級・1級の連結会計の難所を論点別に整理した。Grok結果と実務者の声を段階的に統合し、最終的に「ダウンストリーム＋NCI調整」のメンタルモデルや、簿記学習と実務（Excel中心）のギャップまで言語化した。このレポートが翌日の連結精算表Vue化のコンテンツ方針につながる。",[15,253,254],{},[43,255,45],{},[47,257,258,261,264],{},[50,259,260],{},"5.7節「未実現利益の消去パターン別の難所」",[50,262,263],{},"5.7.5「腹落ちさせる4つのメンタルモデル」",[50,265,266],{},"5.7.6「二刀流コンテンツ仕様の更新版」",[15,268,269,70,271],{},[43,270,69],{},[72,272,274],{"href":273},"/2026-04-30-x-search-renketsu-pain-points-report","X投稿400件から連結会計の「難しい」論点を抽出してレポート化",[77,276],{},[33,278,280],{"id":279},"_7-codex-cli-を-01250-に上げて-gpt-55-へ","7. Codex CLI を 0.125.0 に上げて GPT-5.5 へ",[15,282,283,284,287,288,291,292,295],{},"mise で codex を 0.125.0 にアップデートして GPT-5.5 を有効化した。",[87,285,286],{},"~/.claude/rules/plan-codex-review.md"," の初回・再レビュー両方を ",[87,289,290],{},"gpt-5.4"," → ",[87,293,294],{},"gpt-5.5"," に差し替え。今日の連結会計レッスンの計画書レビューはすべて GPT-5.5 で回した。",[77,297],{},[19,299,300],{"id":300},"今日の試行錯誤",[302,303,304,326],"table",{},[305,306,307],"thead",{},[308,309,310,314,317,320,323],"tr",{},[311,312,313],"th",{},"#",[311,315,316],{},"テーマ",[311,318,319],{},"試したこと",[311,321,322],{},"結果",[311,324,325],{},"気づき",[327,328,329,349,370,389,406,430,453,472,488,509,526],"tbody",{},[308,330,331,335,338,341,344],{},[332,333,334],"td",{},"1",[332,336,337],{},"著者取得444件",[332,339,340],{},"file_no 順で全788件再処理",[332,342,343],{},"失敗（既取得領域を走査）",[332,345,346,348],{},[87,347,168],{}," フラグ追加で未取得のみ対象に切替",[308,350,351,354,357,360,367],{},[332,352,353],{},"2",[332,355,356],{},"TAC11冊バッチ",[332,358,359],{},"普通に Python print",[332,361,362,363,366],{},"Windows cp932 で ",[87,364,365],{},"✓"," クラッシュ",[332,368,369],{},"UTF-8/unbuffered 対応版（PYTHONIOENCODING + sys.stdout.reconfigure）",[308,371,372,375,377,380,383],{},[332,373,374],{},"3",[332,376,356],{},[332,378,379],{},"DBコネクション使い回し",[332,381,382],{},"38分超でstream切れ",[332,384,385,388],{},[87,386,387],{},"reconnect()"," を各冊冒頭で呼ぶ",[308,390,391,394,397,400,403],{},[332,392,393],{},"4",[332,395,396],{},"restructure 11冊",[332,398,399],{},"subagent 並列起動",[332,401,402],{},"Embedded Replica WALロック頻発",[332,404,405],{},"HTTP直接接続に切り替えて9冊を順次処理",[308,407,408,411,414,417,420],{},[332,409,410],{},"5",[332,412,413],{},"shelf 表示",[332,415,416],{},"TAC教材を登録後に確認",[332,418,419],{},"0冊表示",[332,421,422,425,426,429],{},[87,423,424],{},"★4.0以上/レビュー5件以上"," フィルタが NULL 除外、",[87,427,428],{},"fetch_status='manual_register'"," で免除",[308,431,432,435,438,441,444],{},[332,433,434],{},"6",[332,436,437],{},"X検索エクスポーター",[332,439,440],{},"SearchTimeline GraphQL を直叩き",[332,442,443],{},"404",[332,445,446,90,449,452],{},[87,447,448],{},"features",[87,450,451],{},"rweb_cashtags_enabled"," 追加で 200",[308,454,455,458,460,463,466],{},[332,456,457],{},"7",[332,459,437],{},[332,461,462],{},"content script で fetch hook",[332,464,465],{},"空",[332,467,468,469,471],{},"XHR hook も足してもダメ、ServiceWorker (",[87,470,214],{},") が真因",[308,473,474,477,479,482,485],{},[332,475,476],{},"8",[332,478,437],{},[332,480,481],{},"Codex に規約観点で相談",[332,483,484],{},"DOMスクロールが現実的",[332,486,487],{},"1.5秒間隔・終端判定で書き直し",[308,489,490,493,496,503,506],{},[332,491,492],{},"9",[332,494,495],{},"連結会計 Vue 化 v2",[332,497,498,90,500,502],{},[87,499,89],{},[87,501,93],{}," を含める",[332,504,505],{},"二重計上で finalTotal が崩れる致命点",[332,507,508],{},"Codex GPT-5.5 が即指摘、検証ロジック追加",[308,510,511,514,517,520,523],{},[332,512,513],{},"10",[332,515,516],{},"I-3-1〜I-3-3 表示",[332,518,519],{},"dev サーバー継続でデータ更新",[332,521,522],{},"HMR キャッシュで反映されない",[332,524,525],{},"dev 再起動でクリア、列ヘッダ「未実現損益調整」が表示",[308,527,528,531,534,544,547],{},[332,529,530],{},"11",[332,532,533],{},"I-3-1 モーダル",[332,535,536,539,540,543],{},[87,537,538],{},"*A"," セルと ",[87,541,542],{},"*B"," セルで別モーダル",[332,545,546],{},"連結ロジックの本質が見えない",[332,548,549],{},"列単位集約モーダルに変更（マーカーはセル単位、モーダルは列単位）",[77,551],{},[19,553,554],{"id":554},"今日の学び",[47,556,557,560,567,570,573],{},[50,558,559],{},"Embedded Replica は subagent との相性が悪い（WAL ロックが残る）。restructure のような長時間処理は HTTP 直接接続に振った方が安定する。",[50,561,562,563,566],{},"Windows でのバッチ実行は ",[87,564,565],{},"PYTHONIOENCODING=utf-8 python -u"," を最初から指定する。後から修正すると進捗ログが遅れて見えなくて、ハングと区別できなくなる。",[50,568,569],{},"Codex 再帰レビューは「致命点なし」を取得するまで4回かかることもある。途中で打ち切らずに最後まで回した方がよい設計判断ほど、ユーザー指摘ではなく構造的な不整合（二重計上など）に化ける。",[50,571,572],{},"列単位集約モーダルの設計思想：「マーカーは何が属しているかを示す（セル単位）」「モーダルは何のために統合されたかを示す（列単位）」「ハイライトはクリックの起点を示す（科目単位）」。3つの粒度を分けるとUIの意味が定まる。",[50,574,575],{},"受験生コミュニティの「難しい」発言は教材設計の宝庫。X分析→Grok統合→実務者の声、と層を増やすほどメンタルモデルが言語化される。",[77,577],{},[19,579,580],{"id":580},"明日やること",[47,582,585,595,601],{"className":583},[584],"contains-task-list",[50,586,589,594],{"className":587},[588],"task-list-item",[590,591],"input",{"disabled":592,"type":593},true,"checkbox"," 連結精算表ハードコードのCompute関数化（Vue 化計画書 v3 の Phase 4 以降）",[50,596,598,600],{"className":597},[588],[590,599],{"disabled":592,"type":593}," 日商簿記3級の Deepgram 文字起こし計画（明日 15:00 のカレンダー予定）",[50,602,604,606],{"className":603},[588],[590,605],{"disabled":592,"type":593}," 書籍ナレッジベースに残った27冊（理論シリーズなど）の取り込み判断",[77,608],{},[19,610,611],{"id":611},"関連記事",[47,613,614,618,622,626,630,634],{},[50,615,616],{},[72,617,75],{"href":74},[50,619,620],{},[72,621,120],{"href":119},[50,623,624],{},[72,625,156],{"href":155},[50,627,628],{},[72,629,198],{"href":197},[50,631,632],{},[72,633,242],{"href":241},[50,635,636],{},[72,637,274],{"href":273},{"title":639,"searchDepth":640,"depth":640,"links":641},"",2,[642,643,653,654,655,656],{"id":21,"depth":640,"text":21},{"id":31,"depth":640,"text":31,"children":644},[645,647,648,649,650,651,652],{"id":35,"depth":646,"text":36},3,{"id":81,"depth":646,"text":82},{"id":125,"depth":646,"text":126},{"id":161,"depth":646,"text":162},{"id":203,"depth":646,"text":204},{"id":247,"depth":646,"text":248},{"id":279,"depth":646,"text":280},{"id":300,"depth":640,"text":300},{"id":554,"depth":640,"text":554},{"id":580,"depth":640,"text":580},{"id":611,"depth":640,"text":611},"diary","連結会計レッスンをHTMLプロトタイプからVue+データ駆動に置き換え、設例I-2-1〜I-3-3の6本を実装。並行してTAC公認会計士テキスト11冊をyomitokuでDB格納。Chrome拡張のX検索エクスポーターはGraphQL断念→DOMスクロールで決着。","md",{},"/2026-04-30-diary","daily-log",false,"2026-04-30T00:00:00.000Z",{"title":5,"description":658},"2026-04/2026-04-30/diary-2026-04-30",[668,669,670,671,672,673],"日記","連結会計","Vue","書籍デジタル化","Chrome拡張","Codexレビュー",null,"8FICI0TEphpbG2Cul6PvEyM4bV3XbYw6gaTaCVZuI8c",[],"https://log.eurekapu.com/favicon.svg",1777617050443]