[{"data":1,"prerenderedAt":583},["ShallowReactive",2],{"content-/2026-09-23-diary":3,"all-pages-for-dir":568,"related-/2026-09-23-diary":569,"og-image-/2026-09-23-diary":582},{"id":4,"title":5,"body":6,"category":546,"concepts":547,"description":548,"extension":549,"meta":550,"navigation":551,"ogImage":547,"path":552,"project_name":553,"published":554,"publishedAt":555,"seo":556,"source":557,"stem":558,"tags":559,"todo":547,"unpublished":554,"updatedAt":547,"__hash__":567},"pages/2026-09/2026-09-23/diary-2026-09-23.md","2026年9月23日の開発日記 - Excel講座の台本を耳でレビューし、円換算のずれをウォンのレートまでたどる",{"type":7,"value":8,"toc":527},"minimark",[9,14,18,21,25,32,35,38,43,46,52,68,85,88,92,95,99,107,115,117,121,124,128,145,153,155,159,162,166,174,187,189,193,204,208,216,224,226,230,233,241,243,247,250,258,260,264,271,279,281,284,469,471,474,488,490,493],[10,11,13],"h1",{"id":12},"_2026年9月23日の開発日記","2026年9月23日の開発日記",[15,16,17],"p",{},"朝、ポートフォリオの自動集計を証券会社の画面と見比べたら、数字が合わなかった。\n細かい銘柄のずれだろうと思っていた。\n検算してもらうと、計算は1円まで合っていて、差の大半は通貨1つの換算レートから来ていた。",[15,19,20],{},"この日は、同じ形の食い違いに何度も出くわした。\nExcel講座の音声では、私が「スクリプト」と言ったとき、Claude Code は生成スクリプトのコードを思い浮かべていた。\n韓国の輸出単価は遅れているように見えたが、元の PDF から行そのものが消えていた。\n思い込みを1枚ずつめくる日だった、と書くと大げさだろうか。",[22,23,24],"h2",{"id":24},"今日のタイムライン",[15,26,27],{},[28,29],"img",{"alt":30,"src":31},"タイムライン","/2026-09/2026-09-23/timeline-2026-09-23.png",[15,33,34],{},"Excel講座のリポジトリで約5時間、このサイトのリポジトリで約5時間、Chrome 拡張で約30分作業した。",[22,36,37],{"id":37},"今日やったこと",[39,40,42],"h3",{"id":41},"_1-excel講座の本人音声を全編再合成し台本を耳でレビューした","1. Excel講座の本人音声を全編再合成し、台本を耳でレビューした",[15,44,45],{},"講座の全編を章ごとの本人音声で合成し直すため、計画書どおり Windows と Mac で分けた。\nWindows 単体だと合成だけで約8時間半〜9時間かかる見込みで、全体は188ジョブになった。\nClaude Code は生成スクリプトのコードレビューを走らせたまま、確認なしに合成を先へ進めていた。\n私が見てほしかったのは読み上げ台本の文字列で、基準は「ポッドキャストのように耳だけで分かるか」だった。",[15,47,48],{},[49,50,51],"strong",{},"主な成果:",[53,54,55,59,62,65],"ul",{},[56,57,58],"li",{},"Opus 5.5 の fork エージェント5体に台本を読ませ、出てきた136件の判断に私が全部答え、TTS スキルの references に記録させた",[56,60,61],{},"制作画面に完了チェックとフィードバック欄を作らせ、D1 に保存するようにした",[56,63,64],{},"最初のフィードバック（番号の読み上げ）は、101ジョブ中その1ジョブだけを72秒で作り直して差し替えた",[56,66,67],{},"別セッションで、R2 に上がっていなかった124ファイルを上げ、CI を 07-28 以来初めて全ステップ通した",[15,69,70,73,74,79,80,84],{},[49,71,72],{},"詳細:"," ",[75,76,78],"a",{"href":77},"/excel-course-narration-ear-review-feedback","Excel講座の本人音声を全編再合成した日","（前日の分担設計は ",[75,81,83],{"href":82},"/excel-course-narration-mac-windows-split","Mac と Windows の分担","）",[86,87],"hr",{},[39,89,91],{"id":90},"_2-ポートフォリオの円換算のずれをウォンのレートまでたどった","2. ポートフォリオの円換算のずれを、ウォンのレートまでたどった",[15,93,94],{},"朝の自動集計の評価額が、証券会社Aの画面の円換算額と合わなかった。\nスクリーンショットを渡して検算してもらうと、集計はスプレッドシートの10行の合計と1円まで一致した。\n保有数量のずれは2か所あったが、差の一部にとどまった。\n残りのほぼ全部は、ウォンのレート（100ウォンあたり 11.15円と 11.60円）の違いから来ていた。",[15,96,97],{},[49,98,51],{},[53,100,101,104],{},[56,102,103],{},"シートの数量と取得単価を画面と一致させた",[56,105,106],{},"修正版を LINE に流す前に、米国株の価格日付が 9/21 に戻る不具合を、テストを先に足す形で直してもらった（全68件通過）",[15,108,109,73,111],{},[49,110,72],{},[75,112,114],{"href":113},"/portfolio-krwjpy-rate-gap-check","ポートフォリオ自動集計と証券会社の円換算額が合わない理由",[86,116],{},[39,118,120],{"id":119},"_3-韓国の月次輸出-pdf-から単価の行が消えていた","3. 韓国の月次輸出 PDF から単価の行が消えていた",[15,122,123],{},"輸出単価の先行値（DRAM と NAND）が 2026-06 のまま止まり、ほかの輸出統計より2か月遅れていた。\n7月号と8月号の PDF を取り直させると、どちらにも単価の行が無かった。\n取り込みが遅れていたのではなく、取り込む値が PDF の側に無かった。\n手順書の「毎月取れる」という一文を直し、単価の先行値を掲載終了として扱うことにした。",[15,125,126],{},[49,127,51],{},[53,129,130,142],{},[56,131,132,133,137,138,141],{},"手順書と統計チェーンの委譲文を直し、",[134,135,136],"code",{},"6f29ab8f"," と ",[134,139,140],{},"4cd4c9a4"," の2コミットにしてプッシュした",[56,143,144],{},"KDI の検索語は、パーセントエンコードした URL で直接叩く形にした（Git Bash で引数が化けるため）",[15,146,147,73,149],{},[49,148,72],{},[75,150,152],{"href":151},"/motie-pdf-unit-price-discontinued","韓国 MOTIE の月次輸出 PDF から単価の行が消えていた",[86,154],{},[39,156,158],{"id":157},"_4-ローカルllm用の-gpu-換装を検討した","4. ローカルLLM用の GPU 換装を検討した",[15,160,161],{},"BTO ショップの構成にメモリ128GBを積む案を相談すると、DGX Spark と比べる選択肢のなかでいちばん中途半端だと返ってきた。\n私が「8GB しかない」と言っていたのは、メインメモリではなく VRAM だった。\n5060 Ti と 5070 Ti はどちらも VRAM 16GB で、差額は約10万円。\n説明を聞いて 5070 Ti に傾いたが、電源の交換が要る。",[15,163,164],{},[49,165,51],{},[53,167,168,171],{},[56,169,170],{},"電源ケーブルの形は画像からも仕様からも分からず、ケースを開けて確かめるしかないと分かった",[56,172,173],{},"Mac Studio M5 Ultra も比べた。「512GB なら 4bit で余裕」は誤りで、DeepSeek V4.1 Flash の派生版は 4bit でも 554GB あると訂正された",[15,175,176,73,178,182,183,84],{},[49,177,72],{},[75,179,181],{"href":180},"/gpu-upgrade-rtx-5070ti-vs-5060ti-local-llm","ローカルLLM用のGPU換装を検討した","（前日の検討は ",[75,184,186],{"href":185},"/local-ai-gpu-slot-and-dgx-spark-recheck","GPU スロットと DGX Spark の再確認",[86,188],{},[39,190,192],{"id":191},"_5-codex-のモデル更新ステータスライン動画ダウンロード拡張","5. Codex のモデル更新、ステータスライン、動画ダウンロード拡張",[15,194,195,196,199,200,203],{},"Codex のモデル一覧に GPT-6 Sol が出ていた。\nコミット前レビューのフックだけが ",[134,197,198],{},"gpt-5.6-sol"," のまま残っていたので、",[134,201,202],{},"gpt-6-sol"," に切り替えてもらった。\nClaude Code のステータスラインにはエフォートのレベルを足してもらった。\n自作の動画ダウンロード用 Chrome 拡張では、yt-dlp が JS ランタイム無しの警告を出していた。\ndeno を上げて native host から絶対パスで渡すと決め、同じ動画で mp4 を保存できた。",[15,205,206],{},[49,207,51],{},[53,209,210,213],{},[56,211,212],{},"フック、ステータスライン、拡張の修正をそれぞれコミットした",[56,214,215],{},"2台運用では、deno のように手元へ入れたものは Mac 側で別に入れる必要があると確かめた",[15,217,218,73,220],{},[49,219,72],{},[75,221,223],{"href":222},"/codex-gpt6-sol-statusline-effort-ytdlp-deno","Codex を GPT-6 Sol へ上げ、yt-dlp の警告を deno で直した",[86,225],{},[39,227,229],{"id":228},"_6-ニュースや長文記事の元ネタを一次情報までたどった","6. ニュースや長文記事の元ネタを一次情報までたどった",[15,231,232],{},"ある長文の解説記事を要約して非公開で保存し、Web の裏取り17件と Codex レビューにかけた。\n裏取りは誤り0件で、Codex の指摘で本文を7か所直させた。\nそれでも、「8層化」を構造的な方向と読み替えた箇所は、私が「供給不足からの妥協では」と指摘するまで残っていた。\nほかに、SNS の数字入りニュースを、転載、Bloomberg の報道、社内プレゼン資料の順にたどらせた。\n画像生成モデルの GGUF 版を試せる Space は、app.py まで読ませて中身を確かめた。",[15,234,235,73,237],{},[49,236,72],{},[75,238,240],{"href":239},"/tracing-ai-news-to-primary-sources","AIニュースの転載や要約を一次情報までたどる",[86,242],{},[39,244,246],{"id":245},"_7-独自ドメインのメール送信を-cloudflare-に寄せられるか調べた","7. 独自ドメインのメール送信を Cloudflare に寄せられるか調べた",[15,248,249],{},"メール送信サービスAの SMTP キーの画面を見ても、自分で登録したのかを覚えていなかった。\n確かめてもらうと、キーは 2026-02-21 に私が作ったもので、一度も使われていなかった。\n「全部 Cloudflare で完結できるはず」という記憶は当たっていたが、Workers の有料プランが条件のひとつだった。\n今回は現状維持に決め、判断記録を残した。",[15,251,252,73,254],{},[49,253,72],{},[75,255,257],{"href":256},"/email-sending-cloudflare-vs-smtp-relay","独自ドメインのメール送信は Cloudflare だけで完結できるか",[86,259],{},[39,261,263],{"id":262},"_8-x-のツイート内でスライドをめくる実験","8. X のツイート内でスライドをめくる実験",[15,265,266,267,270],{},"SlideShare のリンクは、X のツイート内でスライドをページ送りできる。\n仕組みは ",[134,268,269],{},"twitter:card=player"," のメタタグと iframe だった。\n同じメタタグを自サイトに出してデプロイし、X に投稿した。\n埋め込みにはならず、小さなリンクカードで表示されたので、結果ごと公開記事にまとめた。",[15,272,273,73,275],{},[49,274,72],{},[75,276,278],{"href":277},"/x-player-card-slide-embed-test","X のツイート内でスライドをめくる Player Card を自サイトで試した",[86,280],{},[22,282,283],{"id":283},"今日の試行錯誤",[285,286,287,309],"table",{},[288,289,290],"thead",{},[291,292,293,297,300,303,306],"tr",{},[294,295,296],"th",{},"#",[294,298,299],{},"テーマ",[294,301,302],{},"試したこと",[294,304,305],{},"結果",[294,307,308],{},"気づき",[310,311,312,330,347,364,384,401,418,435,452],"tbody",{},[291,313,314,318,321,324,327],{},[315,316,317],"td",{},"1",[315,319,320],{},"台本レビュー（10:49）",[315,322,323],{},"合成と並行して、生成スクリプトのコードレビューを回した",[315,325,326],{},"見てほしいのは台本の文字列だったので止め、fork 型5体でレビューし直した（判断136件）",[315,328,329],{},"「スクリプト」の一語で、指すものが食い違っていた",[291,331,332,335,338,341,344],{},[315,333,334],{},"2",[315,336,337],{},"音声チェックの保存（10:49）",[315,339,340],{},"制作画面の完了チェックを D1 に保存する実装",[315,342,343],{},"権限エラー（7403）とテンプレートの閉じタグ不正で止まったが、直してテスト13件が通った",[315,345,346],{},"失敗は2つとも別の原因だった",[291,348,349,352,355,358,361],{},[315,350,351],{},"3",[315,353,354],{},"CI の修正（10:59）",[315,356,357],{},"インストール失敗（lockfile の設定不一致）を直した",[315,359,360],{},"後ろに Build、Unit tests、E2E の問題が隠れており、5コミットで全ステップが通った",[315,362,363],{},"最初の失敗が後続の失敗を隠していた",[291,365,366,369,372,375,381],{},[315,367,368],{},"4",[315,370,371],{},"表の No. 列（16:00）",[315,373,374],{},"No. 列を足した表を画面で確認した",[315,376,377,378],{},"No. 列が表の約3分の1を占めた。原因は ",[134,379,380],{},"th:first-child{width:45%}",[315,382,383],{},"列を足すと、先頭列用の CSS が別の列に当たる",[291,385,386,389,392,395,398],{},[315,387,388],{},"5",[315,390,391],{},"円換算の差（07:51）",[315,393,394],{},"保有数量の修正で差を埋めようとした",[315,396,397],{},"差の一部しか縮まず、大半はウォンのレートの違いだった",[315,399,400],{},"計算、数量、レートの順に切り分ける",[291,402,403,406,409,412,415],{},[315,404,405],{},"6",[315,407,408],{},"修正版の配信（07:51）",[315,410,411],{},"LINE に流す前に dry-run を回した",[315,413,414],{},"価格日付が 9/21 に戻っていたため、テストを先に足して直してから流した（全68件）",[315,416,417],{},"流す前の試し実行で不具合を拾えた",[291,419,420,423,426,429,432],{},[315,421,422],{},"7",[315,424,425],{},"単価の取り直し（06:47）",[315,427,428],{},"7月号と8月号の PDF から単価の行を探させた",[315,430,431],{},"どちらにも行が無く、掲載終了として手順書と委譲文を直した",[315,433,434],{},"古くなっていたのは手順書の前提だった",[291,436,437,440,443,446,449],{},[315,438,439],{},"8",[315,441,442],{},"GPU の選定（09:13）",[315,444,445],{},"写真なしで電源ケーブルを判定できないか聞き直した",[315,447,448],{},"画像からも仕様からも分からず、ケースを開けるしかない",[315,450,451],{},"足りないのがどのメモリかを先に確かめる",[291,453,454,457,460,463,466],{},[315,455,456],{},"9",[315,458,459],{},"拡張の修正（14:44）",[315,461,462],{},"deno を 2.9.7 に上げ、native host から絶対パスで渡した",[315,464,465],{},"ボタンが消えたが、原因フォルダを消して手動でリロードし復旧",[315,467,468],{},"手元に入れたツールは機体ごとに入れ直す",[86,470],{},[22,472,473],{"id":473},"今日の学び",[53,475,476,479,482,485],{},[56,477,478],{},"自動集計と証券会社の円換算額がずれたら、計算、入力の数量、換算レートの順に切り分ける。今回は計算が1円まで合い、残りの大半はウォンのレートだった",[56,480,481],{},"系列が止まって見えたとき、原因は取り込みの遅れとは限らない。元の PDF から行が消えていて、古くなっていたのは手順書の前提のほうだった",[56,483,484],{},"事実の正誤を照合する裏取りと、原文の解釈を問う読みは別の作業だった。17件の裏取りで誤りが0件でも、読み替えは指摘するまで残っていた",[56,486,487],{},"実行スクリプトが台本の文で完成済みを判定するので、フィードバック1件の修正は101ジョブ中1ジョブ、72秒の作り直しで済んだ",[86,489],{},[22,491,492],{"id":492},"関連記事",[53,494,495,499,503,507,511,515,519,523],{},[56,496,497],{},[75,498,78],{"href":77},[56,500,501],{},[75,502,114],{"href":113},[56,504,505],{},[75,506,152],{"href":151},[56,508,509],{},[75,510,181],{"href":180},[56,512,513],{},[75,514,223],{"href":222},[56,516,517],{},[75,518,240],{"href":239},[56,520,521],{},[75,522,257],{"href":256},[56,524,525],{},[75,526,278],{"href":277},{"title":528,"searchDepth":529,"depth":529,"links":530},"",2,[531,532,543,544,545],{"id":24,"depth":529,"text":24},{"id":37,"depth":529,"text":37,"children":533},[534,536,537,538,539,540,541,542],{"id":41,"depth":535,"text":42},3,{"id":90,"depth":535,"text":91},{"id":119,"depth":535,"text":120},{"id":157,"depth":535,"text":158},{"id":191,"depth":535,"text":192},{"id":228,"depth":535,"text":229},{"id":245,"depth":535,"text":246},{"id":262,"depth":535,"text":263},{"id":283,"depth":529,"text":283},{"id":473,"depth":529,"text":473},{"id":492,"depth":529,"text":492},"diary",null,"Excel講座の本人音声を Mac と Windows で分けて再合成し、読み上げ台本を136件の判断で直した日。ポートフォリオの円換算のずれはウォンのレート、止まって見えた韓国の単価は掲載終了だった。GPU 換装やメール送信の構成も検討した。","md",{},true,"/2026-09-23-diary","daily-log",false,"2026-09-23T00:00:00.000Z",{"title":5,"description":548},"make-diary","2026-09/2026-09-23/diary-2026-09-23",[560,561,562,563,564,565,566],"日記","Excel講座","TTS","ポートフォリオ","ローカルLLM","Codex","ファクトチェック","6mRmMx0gJoeWNHHKtCuxBAYJG67paiPpyV7vK_7eBtc",[],[570,572,574,576,580],{"title":571,"path":222,"publishedAt":555},"Codex を GPT-6 Sol へ上げ、ステータスラインにエフォートを出し、yt-dlp の JS ランタイム警告を deno で直した",{"title":573,"path":180,"publishedAt":555},"ローカルLLM用のGPU換装を検討した：RTX 5070 Ti と 5060 Ti の違い、電源交換、Mac Studio との比較",{"title":575,"path":239,"publishedAt":555},"AIニュースの転載や要約を一次情報までたどる：長文解説の裏取り17件、数字の出どころ、GGUF版Spaceの中身",{"title":577,"path":578,"publishedAt":579},"2026年9月22日の開発日記 - Excel講座のナレーションをWindowsとMacで分担して合成した日","/2026-09-22-diary","2026-09-22T00:00:00.000Z",{"title":581,"path":185,"publishedAt":579},"今のPCにGPUを2枚目として挿せるか実機で確かめ、DGX Sparkの必要台数も調べ直した","https://log.eurekapu.com/og/blog/2026-09-23-diary.png?v=2026-09-23T00%3A00%3A00.000Z&title=2026%E5%B9%B49%E6%9C%8823%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%E5%8F%B0%E6%9C%AC%E3%82%92%E8%80%B3%E3%81%A7%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%81%97%E3%80%81%E5%86%86%E6%8F%9B%E7%AE%97%E3%81%AE%E3%81%9A%E3%82%8C%E3%82%92%E3%82%A6%E3%82%A9%E3%83%B3%E3%81%AE%E3%83%AC%E3%83%BC%E3%83%88%E3%81%BE%E3%81%A7%E3%81%9F%E3%81%A9%E3%82%8B&author=Kei%20Komatsu&sig=aae55355ece765bc",1790216068502]