[{"data":1,"prerenderedAt":545},["ShallowReactive",2],{"content-/2026-09-21-diary":3,"all-pages-for-dir":525,"related-/2026-09-21-diary":526,"og-image-/2026-09-21-diary":544},{"id":4,"title":5,"body":6,"category":506,"concepts":507,"description":508,"extension":509,"meta":510,"navigation":457,"ogImage":507,"path":511,"project_name":512,"published":513,"publishedAt":514,"seo":515,"source":516,"stem":517,"tags":518,"todo":507,"unpublished":513,"updatedAt":507,"__hash__":524},"pages/2026-09/2026-09-21/diary-2026-09-21.md","2026年9月21日の開発日記 - Excel講座のナレーションを本人の声に、連結シミュレーターは紙面照合とExcel化へ",{"type":7,"value":8,"toc":490},"minimark",[9,14,18,22,29,32,37,40,43,49,62,73,76,80,88,91,95,117,125,127,131,138,153,157,171,179,181,185,208,210,213,422,424,427,441,443,446,466,468,471],[10,11,13],"h1",{"id":12},"_2026年9月21日の開発日記","2026年9月21日の開発日記",[15,16,17],"p",{},"9月21日は、Excel講座のナレーションと連結会計シミュレーターを、朝6時台から並行して進めた。\nどちらの作業でも、機械のチェックだけでは足りず、別の手段で確かめる場面があった。\nナレーションでは、通しの秒数は機械で照合できても、音の良し悪しは自分の耳で聞いて決めるしかない。\nシミュレーターでは、テストが全部通っているのに、参考書の紙面と照らす作業がまだ残っていた。",[19,20,21],"h2",{"id":21},"今日のタイムライン",[15,23,24],{},[25,26],"img",{"alt":27,"src":28},"タイムライン","/2026-09/2026-09-21/timeline-2026-09-21.png",[19,30,31],{"id":31},"今日やったこと",[33,34,36],"h3",{"id":35},"_1-excel講座のナレーションを本人の声にする","1. Excel講座のナレーションを本人の声にする",[15,38,39],{},"6時7分からのセッションでは、講座動画の画面が変わる時刻を機械検出させて拍を割り出し、区間ごとの語りをまず VOICEVOX で合成させた。\n途中で、自分の声を写す Irodori-TTS に切り替えた。\n合成に渡す台本では、誤読しそうな語を Claude Code が先回りしてひらがなやカタカナに書き換えていた。\nところが、ひらがなの「しさんひょう」は変に聞こえ、カタカナにした「W」も素の W より不自然だった。\nそこで、台本の文字はそのまま渡すと決めた。\n例外は、素のままだと「E スリー」「Bつー」と英語読みになるセル番地の数字だけで、その数字は漢数字（E三）にして渡す。",[15,41,42],{},"9時18分からのセッションでは、章1の23区間すべてを本人の声にした。\n通しの時間が合成の合計と一致すること（1:30＝90.0秒、3:28＝208秒）は、Chrome DevTools で確かめさせた。\n最後に、R2 への音声アップロードと本番デプロイを指示した。",[15,44,45],{},[46,47,48],"strong",{},"主な成果:",[50,51,52,56,59],"ul",{},[53,54,55],"li",{},"読み替えのルールを「台本の文字はそのまま、セル番地の数字だけ漢数字」の1本にまとめた",[53,57,58],{},"6時7分のセッションで BPM120 のビートグリッドに載せて作り直させ、通しは126.0秒ちょうど（63小節）になった",[53,60,61],{},"R2 へ23区間、120本、295.7MB の音声をアップロードし、本番デプロイ（3分2秒）まで済ませた",[15,63,64,67,68],{},[46,65,66],{},"詳細:"," ",[69,70,72],"a",{"href":71},"/excel-course-narration-reading-dictionary","Irodori-TTSでExcel講座のナレーションを本人の声に：読み替え辞書を削ったら、残ったのはセル番地の数字だけ",[74,75],"hr",{},[33,77,79],{"id":78},"_2-連結会計シミュレーターの計算バグをテスト先行で直し参考書と照合する","2. 連結会計シミュレーターの計算バグをテスト先行で直し、参考書と照合する",[15,81,82,83,87],{},"朝いちばんに、前日に直した経路別の関数を部品として残し、その上に状態モデルの入口（",[84,85,86],"code",{},"executeCapitalTransition","）をかぶせる進め方を決めた。\n80→10 のように投資が一部残るケースの売却益（F18）は、先にテストを書かせた。\n3,500 を期待したところに 3,000、10,500 を期待したところに 12,000 が返って落ちたのを確かめてから、仕訳と持分計算表が共有する関数に寄せて直させた。\nF15 の原因は、同じ金額を経路ごとに別の式で丸めていたことで、整数の入力でも貸借が 0.5〜2 円ずれていた。",[15,89,90],{},"9時8分からは、参考書のスキャンを Claude Code に読ませ、7つの設例で事例データと紙面の差異が0件だと確かめた。\n照らしてみると、整合性テストが比べていたのは最終残高の3行だけで、80→10 はテストの対象にも入っていなかった。\nこれを整合性テストに加えさせた。",[15,92,93],{},[46,94,48],{},[50,96,97,104,107,114],{},[53,98,99,100,103],{},"F18 と F15 を直し、",[84,101,102],{},"it.fails"," は0件になった",[53,105,106],{},"設例4-2、4-3、4-4、4-5、5-1①、5-2、5-3 の7つで差異0件",[53,108,109,110,113],{},"整合性テストに 80→10 を加えた（904件→907件、",[84,111,112],{},"54c5990b","）",[53,115,116],{},"精算表で 10→30 の 1,500 と 80→10 の 670 が利益剰余金の期首残高に入る件は、いったん issue にした（同じ日の Excel 化の作業で直した）",[15,118,119,67,121],{},[46,120,66],{},[69,122,124],{"href":123},"/consolidation-simulator-test-first-fix","連結会計シミュレーターの計算バグをテスト先行で直し、参考書の設例7つと照合した",[74,126],{},[33,128,130],{"id":129},"_3-連結会計シミュレーターの結果を-excel-の連結精算表ブックにする","3. 連結会計シミュレーターの結果を Excel の連結精算表ブックにする",[15,132,133,134,137],{},"10時25分からは、シミュレーターの結果を Excel の連結精算表ブックに書き出す計画を立てた。\n計画書を書く前に、エンジンで年度をつなげるかを確かめさせた。\n13区間はどれも単発なら計算できるのに、前の年度の ",[84,135,136],{},"nextState"," を次の年度の期首に渡すと、2区間目（10% → 15%）で拒否された。\nこの手当てを Phase 1 に置いた。",[15,139,140,141,144,145,148,149,152],{},"既存の Excel 化のスキルを探させ、",[84,142,143],{},"xlsx_helpers.py"," と ",[84,146,147],{},"verify_cfws_excel.py"," を読ませたうえで、再利用する範囲を決めた。\nCodex のレビューは3回目で「計画として妥当」になり、決裁5件にはすべて推奨の A で答えた。\n最初に上がってきたブックは、持分計算表を値で並べただけだった。\n計算式が無い、罫線が無い、個別 TB へのリンクが無い、の3点を指摘した。\nあわせて ",[84,150,151],{},"=G15-S社_TB!$F$20"," を貼って並び順のルールを伝え、ブックを数式で組み直させた。",[15,154,155],{},[46,156,48],{},[50,158,159,162,165,168],{},[53,160,161],{},"エンジンでは、持分法の適用開始と中止による増減を、期首残高から当期変動の行へ移させた（上の 1,500 と 670 の件）",[53,163,164],{},"照合で8,736セル（13年度 × 42行 × 16列）が全部一致した",[53,166,167],{},"連結AJE の金額132個も数式に組み替えた",[53,169,170],{},"続きは add-task で翌日のタスクに登録した（コミットはまだしていない）",[15,172,173,67,175],{},[46,174,66],{},[69,176,178],{"href":177},"/consolidation-simulator-excel-export-plan","連結会計シミュレーターの結果をExcelの連結精算表ブックに書き出す計画：13年つなぐとエンジンは2年目で止まった",[74,180],{},[33,182,184],{"id":183},"_4-そのほか","4. そのほか",[50,186,187,194,201],{},[53,188,189,190,193],{},"本番デプロイのログを貼って、Claude Code に裏を取らせた。配信中の buildId は今回のビルド（",[84,191,192],{},"f86c7376-…","）と一致し、赤字や失敗に見える3箇所はいずれも無害だった。ただし、未コミットの変更が本番に出ていた",[53,195,196,197,113],{},"パランティアCEOの運動配分と自分の現状を並べた記事を書かせた。差分は「高強度の本数」と「ぶら下がり時間」の2点で、歩く量はすでに足りていた。あとからファーマーズウォークの基準も書き足させた（",[69,198,200],{"href":199},"/karp-exercise-portfolio-my-gap","記事",[53,202,203,204,207],{},"朝に ",[84,205,206],{},"/make-diary"," で9月20日分の日記を生成した",[74,209],{},[19,211,212],{"id":212},"今日の試行錯誤",[214,215,216,238],"table",{},[217,218,219],"thead",{},[220,221,222,226,229,232,235],"tr",{},[223,224,225],"th",{},"#",[223,227,228],{},"テーマ",[223,230,231],{},"試したこと",[223,233,234],{},"結果",[223,236,237],{},"気づき",[239,240,241,259,276,293,310,330,347,368,388,405],"tbody",{},[220,242,243,247,250,253,256],{},[244,245,246],"td",{},"1",[244,248,249],{},"読み替え辞書（06:07）",[244,251,252],{},"漢字をひらがな（しさんひょう）に、W をカタカナ（ダブリュー）に書き換えて Irodori-TTS に渡した",[244,254,255],{},"失敗。どちらも不自然に聞こえた",[244,257,258],{},"書き換えは、誤読を聞いて確かめる前に入れていた",[220,260,261,264,267,270,273],{},[244,262,263],{},"2",[244,265,266],{},"セル番地の読み（06:07）",[244,268,269],{},"セル番地を素のまま渡した",[244,271,272],{},"E3 が「E スリー」、B2 が「Bつー」になった。漢数字（E三）で確定",[244,274,275],{},"書き換えが要るのはセル番地の数字だけだった",[220,277,278,281,284,287,290],{},[244,279,280],{},"3",[244,282,283],{},"本人の声での合成（09:18）",[244,285,286],{},"概要と新しいウィンドウを本人の声で合成し直させ、残りの区間も台本を入れて合成させた",[244,288,289],{},"成功。通しの時間が合成の合計と一致した（1:30＝90.0秒、3:28＝208秒）",[244,291,292],{},"時間の一致は Claude Code に、音の良し悪しは自分の耳に任せた",[220,294,295,298,301,304,307],{},[244,296,297],{},"4",[244,299,300],{},"F18 の売却益（06:33）",[244,302,303],{},"修正前にテストを書かせ、落ちる理由を確かめてから共通の関数に寄せさせた",[244,305,306],{},"3,500 の期待に 3,000、10,500 の期待に 12,000 が返って落ち、修正後に通った。コミットは1回で通らなかった",[244,308,309],{},"修正を一度外し、テストがバグを捕まえるのを確かめてからコミットした",[220,311,312,315,318,321,327],{},[244,313,314],{},"5",[244,316,317],{},"F15 の端数（06:33）",[244,319,320],{},"一時的な確認用テストで、小数の単価のずれを洗い出させた（確認後に削除）",[244,322,323,324,326],{},"整数の入力でも 0.5〜2 円ずれていた。丸めを一度にそろえ、",[84,325,102],{}," は0件",[244,328,329],{},"円に丸めるのは一度だけにし、もう片方は差額で出す",[220,331,332,335,338,341,344],{},[244,333,334],{},"6",[244,336,337],{},"参考書スキャンの読み込み（09:08）",[244,339,340],{},"ローカルの Dropbox フォルダからスキャンを開こうとした",[244,342,343],{},"失敗。オンライン専用で開けず、Web 版のプレビューで読ませた",[244,345,346],{},"原因は Windows 側ではなく、Dropbox の「同期を一時停止」だった",[220,348,349,352,355,358,365],{},[244,350,351],{},"7",[244,353,354],{},"デプロイログの裏取り（09:16）",[244,356,357],{},"生ログの ERROR、404、WARN の件数を数えさせた",[244,359,360,361,364],{},"生ログがバイナリ扱いになり、件数が不正確だった。",[84,362,363],{},"-a"," を付けて数え直した",[244,366,367],{},"数え直しても、デプロイ自体は成功していた",[220,369,370,373,376,382,385],{},[244,371,372],{},"8",[244,374,375],{},"年度のつなぎ（10:25）",[244,377,378,379,381],{},"13区間を、前の年度の ",[84,380,136],{}," でつながせた",[244,383,384],{},"2区間目（10% → 15%）で拒否された",[244,386,387],{},"計画の前に実測したので、エンジンの手当てを Phase 1 に置けた",[220,389,390,393,396,399,402],{},[244,391,392],{},"9",[244,394,395],{},"計画書のレビュー（10:25）",[244,397,398],{},"Codex に計画書を3回レビューさせた",[244,400,401],{},"初回は「要修正」で指摘3件、3回目で「計画として妥当」",[244,403,404],{},"手当ては合わせて4つになった",[220,406,407,410,413,416,419],{},[244,408,409],{},"10",[244,411,412],{},"最初のブック（10:25）",[244,414,415],{},"持分計算表を値で並べたブックを作らせた",[244,417,418],{},"3点を指摘し、数式で組み直させた。連結AJE の金額132個も数式にした",[244,420,421],{},"他シートの参照を式の先頭に置くと、Ctrl+[ で確かめたいセルへ飛べる",[74,423],{},[19,425,426],{"id":426},"今日の学び",[50,428,429,432,435,438],{},[53,430,431],{},"台本の文字を先回りして書き換えると、かえって発音が崩れた。書き換えとして残ったのは、素のまま渡して実際に「E スリー」と聞こえたセル番地の数字だけだった。",[53,433,434],{},"同じ金額を経路ごとに別の式で丸めると、整数の入力でも貸借が 0.5〜2 円ずれる。円に丸めるのは一度だけにして、もう片方は差額で出す。",[53,436,437],{},"テストが全部通っていても、紙面との照合は別の作業だった。整合性テストが比べていたのは3行だけで、80→10 は対象にも入っていなかった。",[53,439,440],{},"計画書を書く前に年度の受け渡しを実測させたから、エンジンの手当てを Phase 1 に組み込めた。",[74,442],{},[19,444,445],{"id":445},"明日やること",[50,447,450,460],{"className":448},[449],"contains-task-list",[53,451,454,459],{"className":452},[453],"task-list-item",[455,456],"input",{"disabled":457,"type":458},true,"checkbox"," 最新の連結精算表ブックを見て、レビュー結果を返す",[53,461,463,465],{"className":462},[453],[455,464],{"disabled":457,"type":458}," エンジンの修正とブックの書き出し（スクリプトと計画書）をコミットし、続きを進める",[74,467],{},[19,469,470],{"id":470},"関連記事",[50,472,473,477,481,485],{},[53,474,475],{},[69,476,72],{"href":71},[53,478,479],{},[69,480,124],{"href":123},[53,482,483],{},[69,484,178],{"href":177},[53,486,487],{},[69,488,489],{"href":199},"パランティアCEOカープの運動配分と自分の現状を並べた：足りないのは歩数ではなく、4分走の本数とぶら下がり時間",{"title":491,"searchDepth":492,"depth":492,"links":493},"",2,[494,495,502,503,504,505],{"id":21,"depth":492,"text":21},{"id":31,"depth":492,"text":31,"children":496},[497,499,500,501],{"id":35,"depth":498,"text":36},3,{"id":78,"depth":498,"text":79},{"id":129,"depth":498,"text":130},{"id":183,"depth":498,"text":184},{"id":212,"depth":492,"text":212},{"id":426,"depth":492,"text":426},{"id":445,"depth":492,"text":445},{"id":470,"depth":492,"text":470},"diary",null,"Excel講座のナレーションを Irodori-TTS で本人の声にし、読み替えはセル番地の数字だけ漢数字にするルールに絞った。連結会計シミュレーターは計算バグをテスト先行で直して参考書の7設例と照合し、結果を Excel の連結精算表ブックに書き出す計画を立てた。","md",{},"/2026-09-21-diary","daily-log",false,"2026-09-21T00:00:00.000Z",{"title":5,"description":508},"make-diary","2026-09/2026-09-21/diary-2026-09-21",[519,520,521,522,523],"日記","Irodori-TTS","連結会計","Excel","テスト","tLTf1XgOiZocQBYgwNB5LWzCfUKNDcRJemSLBkL2BV4",[],[527,528,532,536,540],{"title":178,"path":177,"publishedAt":514},{"title":529,"path":530,"publishedAt":531},"2026年9月20日の開発日記 - 数字が合っても、正しいとは限らなかった","/2026-09-20-diary","2026-09-20T00:00:00.000Z",{"title":533,"path":534,"publishedAt":535},"2026年7月13日の開発日記 - 行きたい国リストの費用シミュレーションとテスト34件の切り分け","/2026-07-13-diary","2026-07-13T00:00:00.000Z",{"title":537,"path":538,"publishedAt":539},"会計学習ノート全26章の抜本見直しと連結精算表コンテンツの総点検","/accounting-notes-overhaul","2026-06-10T00:00:00.000Z",{"title":541,"path":542,"publishedAt":543},"2026年5月3日の開発日記 - case100書籍を1日で79論点パイプライン化、Vue移植まで完走","/2026-05-03-diary","2026-05-03T00:00:00.000Z","https://log.eurekapu.com/og/blog/2026-09-21-diary.png?v=2026-09-21T00%3A00%3A00.000Z&title=2026%E5%B9%B49%E6%9C%8821%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20Excel%E8%AC%9B%E5%BA%A7%E3%81%AE%E3%83%8A%E3%83%AC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E6%9C%AC%E4%BA%BA%E3%81%AE%E5%A3%B0%E3%81%AB%E3%80%81%E9%80%A3%E7%B5%90%E3%82%B7%E3%83%9F%E3%83%A5%E3%83%AC%E3%83%BC%E3%82%BF%E3%83%BC%E3%81%AF%E7%B4%99%E9%9D%A2%E7%85%A7%E5%90%88%E3%81%A8Excel%E5%8C%96%E3%81%B8&author=Kei%20Komatsu&sig=475dcf3e5bb8ea2d",1790033551813]