[{"data":1,"prerenderedAt":766},["ShallowReactive",2],{"content-/2026-08-19-diary":3,"all-pages-for-dir":743,"related-/2026-08-19-diary":744,"og-image-/2026-08-19-diary":765},{"id":4,"title":5,"body":6,"category":724,"concepts":725,"description":726,"extension":727,"meta":728,"navigation":653,"ogImage":725,"path":729,"project_name":730,"published":731,"publishedAt":732,"seo":733,"source":734,"stem":735,"tags":736,"todo":725,"unpublished":731,"updatedAt":725,"__hash__":742},"pages/2026-08/2026-08-19/diary-2026-08-19.md","2026年8月19日の開発日記 - やり直しの単位を小さくした一日",{"type":7,"value":8,"toc":705},"minimark",[9,14,18,21,25,32,88,91,96,99,102,105,111,124,135,138,142,145,148,151,154,157,161,175,183,185,189,192,195,198,202,216,224,226,230,233,241,244,248,262,273,275,279,286,289,292,296,307,315,317,321,324,327,331,342,350,352,356,359,367,369,372,615,617,620,637,639,642,668,670,673],[10,11,13],"h1",{"id":12},"_2026年8月19日の開発日記","2026年8月19日の開発日記",[15,16,17],"p",{},"図を1枚直しただけでも、アップロード用のスクリプトは全部を上げ直しているのではないか。\nそう疑ったのが朝の9時台だった。\n夕方には、生成スクリプトの残っていない図127枚を作り直させ、ビルド時間を半分に削る設定を見つけていた。",[15,19,20],{},"並べてみると、この日に触った問題はどれも形が似ている。\n直したいのは一箇所なのに、やり直しの単位が全体になっている。\n14のセッションを開いて、そのうちの何度かは、その単位を小さくする作業に費やした。",[22,23,24],"h2",{"id":24},"今日のタイムライン",[15,26,27],{},[28,29],"img",{"alt":30,"src":31},"タイムライン","/2026-08/2026-08-19/timeline-2026-08-19.png",[33,34,35,51],"table",{},[36,37,38],"thead",{},[39,40,41,45,48],"tr",{},[42,43,44],"th",{},"区分",[42,46,47],{},"時間",[42,49,50],{},"セッション数",[52,53,54,66,77],"tbody",{},[39,55,56,60,63],{},[57,58,59],"td",{},"アプリ開発（eurekapu）",[57,61,62],{},"14時間06分",[57,64,65],{},"8",[39,67,68,71,74],{},[57,69,70],{},"ログ管理",[57,72,73],{},"6時間18分",[57,75,76],{},"5",[39,78,79,82,85],{},[57,80,81],{},"Chrome拡張",[57,83,84],{},"27分",[57,86,87],{},"1",[22,89,90],{"id":90},"今日やったこと",[92,93,95],"h3",{"id":94},"_1-画像のアップロードを全件から差分へ変える","1. 画像のアップロードを、全件から差分へ変える",[15,97,98],{},"朝いちばんに前日の積み残しを一覧させ、未コミット分のコミットとデプロイから片づけた。\nその途中で、本番の図がリンク切れしているのを見つけた。\n前日のアップロード漏れと、エッジに残った404のキャッシュが重なっていた。",[15,100,101],{},"再アップロード用のスクリプトを見せてもらって、手が止まった。\n図を1枚直すたびに全件を上げ直す作りなら、無料枠の中で回すには重い。\nGitの履歴から変更のあったファイル名を拾えば済む話ではないか。\nそう投げたところから検討が始まり、最終的にはETagを比べて差分だけ上げる形になった。",[15,103,104],{},"配信側の設定はコマンドではなく、ログイン済みのブラウザから操作させた。\n第三者に権利のある図は、本番から下ろすと決めた。",[15,106,107],{},[108,109,110],"strong",{},"主な成果:",[112,113,114,118,121],"ul",{},[115,116,117],"li",{},"本番のリンク切れの原因を、アップロード漏れとエッジキャッシュの2つに切り分け",[115,119,120],{},"全件アップロードから、ETag比較による差分アップロードへ変更",[115,122,123],{},"第三者に権利のある図を本番から下ろす方針を確定",[15,125,126,129,130],{},[108,127,128],{},"詳細:"," ",[131,132,134],"a",{"href":133},"/image-r2-diff-upload-and-rights","Cloudflare R2の画像を差分アップロードに変え、第三者権利のある図を本番から下ろす",[136,137],"hr",{},[92,139,141],{"id":140},"_2-図の直し方を1枚ずつから規約へ移す","2. 図の直し方を、1枚ずつから規約へ移す",[15,143,144],{},"前日に続けて図のレビューを再開した。\n1ページ前の図には入っている余白が、次の図には入っていない。\n一括で直させたはずなのに、直っていない図が残っていた。",[15,146,147],{},"修正のログは時系列で並べてもらっていたが、それだと同じ規約が何度も顔を出す。\n規約の単位で並べ直させた。\nそのうえで、列見出しは白抜きと下線だけにすると決め、全図へまとめて適用させた。",[15,149,150],{},"株主名と持ち株数のようなテーブル型の図では、1件のレコードを列ごとに割る形へ直させた。",[15,152,153],{},"そして127枚。\n生成スクリプトの残っていない図がそれだけあった。\nピクセル単位で座標を置いている以上、スクリプトがなければ微修正もできない。\n作り直しは規模が大きいものの、スクリプトから全部作り直してもらうことにして、その作業は別のセッションへ切り出した。",[15,155,156],{},"消費税の図では事業区分のボックスどうしの距離を広げさせ、相続税の図では点線のつなぎ先が違っていたので直させた。\n徴収法はざっと目を通して、気になる箇所がなかったのでそこで終わりにした。",[15,158,159],{},[108,160,110],{},[112,162,163,166,169,172],{},[115,164,165],{},"列見出しの規約を決めて全図へ一括適用（修正ログを時系列から規約単位へ並べ替え）",[115,167,168],{},"テーブル型の図で、レコードを列ごとに割る形へ修正",[115,170,171],{},"生成スクリプトの残っていない127枚を、スクリプトからの作り直しへ回す判断",[115,173,174],{},"本番へのアップロード漏れの有無を確認",[15,176,177,129,179],{},[108,178,128],{},[131,180,182],{"href":181},"/zeimu-figure-header-rule-and-script-rebuild","列見出しは白抜きと下線だけ。SVG図解の規約を番号で管理し、生成スクリプトの無い127枚を作り直した日",[136,184],{},[92,186,188],{"id":187},"_3-設問200問の出どころを確かめてから記事化へ入る","3. 設問200問の出どころを確かめてから記事化へ入る",[15,190,191],{},"設問が200問に絞られたと聞いて、まずその数の出どころを確かめた。\nまだ抽出していない本が残っていないか。\n返ってきたのは、2,500問規模を抽出して386問へ束ね、そこから200問という経路で、未割り当ては0だった。\nそれが確認できればよかった。",[15,193,194],{},"一覧に「系統」という列があって、何の分け方なのか読み取れなかった。\n重要度の代わりに使っているのなら、出典書籍数と書いたほうが早い。\nそう言い換えさせた。",[15,196,197],{},"重要度が高く出典書籍数の多い上位5問を、試しに記事にしてもらった。\n執筆方針を読んでいて引っかかったのは、事実確認の順序だった。\n執筆時は書籍本文を読まず、書いたあとに該当箇所だけ確認するとある。\nそれでは書いた内容に合う箇所を探しにいくことになる。\n先に出典を全部読んでから書く順序へ直させた。\n夕方には、2本目から5本目までを1セッションで続けて書かせた。",[15,199,200],{},[108,201,110],{},[112,203,204,207,210,213],{},[115,205,206],{},"設問数の経路（2,500問規模 → 386問 → 200問）と未割り当て0を確認",[115,208,209],{},"一覧の「系統」列を出典書籍数へ差し替え",[115,211,212],{},"執筆と事実確認の順序を入れ替え（出典を読んでから書く）",[115,214,215],{},"パイロット記事を5本まで作成",[15,217,218,129,220],{},[108,219,128],{},[131,221,223],{"href":222},"/finance-qa-pilot-articles","設問200問の出自を確かめてから記事化に入った日。指標の列名を直し、執筆と事実確認の順序を入れ替えた記録",[136,225],{},[92,227,229],{"id":228},"_4-クリック領域を直したらボタンが消えた","4. クリック領域を直したら、ボタンが消えた",[15,231,232],{},"動画のついた投稿でリポストを押すと、動画のダウンロードが走る。\nダウンロードボタンの当たり判定が広がりすぎているのだろうと当たりをつけ、クリック領域を実測させた。\n原因は投稿側のクラス名の変更で、判定はボタン本体だけに限定させた。",[15,234,235,236,240],{},"直した直後に、今度はボタンごと画面から消えた。\n同じ修正の副作用かと思ったが、そうではなかった。\n拡張がエラー状態で無効化されていて、原因は拡張フォルダの直下に落ちていた ",[237,238,239],"code",{},"__pycache__"," だった。\nChromeはアンダースコアで始まるディレクトリを拡張の中に置けない。",[15,242,243],{},"再発防止として、リロード用の手順に注意を書き足させ、issueを1本残させた。\n拡張のリポジトリに元からあった未コミット分は、内容を見て3つに分けてコミットさせた。",[15,245,246],{},[108,247,110],{},[112,249,250,253,259],{},[115,251,252],{},"クリック判定をボタン本体だけに限定（原因は投稿側のクラス名変更）",[115,254,255,256,258],{},"拡張が無効化される原因を ",[237,257,239],{}," と特定し、手順書とissueに記録",[115,260,261],{},"未コミット分を内容ごとに3コミットへ分割",[15,263,264,129,266],{},[108,265,128],{},[131,267,269,270,272],{"href":268},"/chrome-extension-click-area-and-pycache","Chrome拡張のクリック領域が行全体に広がるバグと、",[237,271,239],{}," で拡張が無効化される罠",[136,274],{},[92,276,278],{"id":277},"_5-ビルドは半分になったが縮まなかった工程が残った","5. ビルドは半分になったが、縮まなかった工程が残った",[15,280,281,282,285],{},"タスクに積んでいた「Defenderの除外を入れて2回目を測る」に着手した。\n除外の設定だけを変えて ",[237,283,284],{},"pnpm generate"," を測り直すと、21分44秒が11分30秒になった。",[15,287,288],{},"ただし縮んだのは、ファイルを大量に開く工程のほうだった。\n記事のプリレンダーは16%しか縮まず、Macとの差はそのまま残っている。\n切り分けのために、プリレンダー用バンドルの localFetch で記事のSSRだけを単体で測るハーネスを作らせた。\nMac側の計測はまだ回していない。",[15,290,291],{},"夕方は、直近1か月で変更したリポジトリを全部走査させ、リモートへ未反映のものをコミットしてプッシュさせた。\nその途中でGitの資格情報を飛ばした。",[15,293,294],{},[108,295,110],{},[112,297,298,301,304],{},[115,299,300],{},"Defenderの除外による2回目の計測（21分44秒 → 11分30秒）と、工程別の内訳の記録",[115,302,303],{},"記事のSSRを単体で計測するハーネスを追加",[115,305,306],{},"直近1か月に変更したリポジトリのプッシュ漏れを解消",[15,308,309,129,311],{},[108,310,128],{},[131,312,314],{"href":313},"/deploy-speed-defender-and-repo-push-audit","Windows Defenderの除外でNuxtのビルドは半分になったが、記事のプリレンダーは16%しか縮まなかった",[136,316],{},[92,318,320],{"id":319},"_6-日本語は丁寧語で終わると韻が止まる","6. 日本語は、丁寧語で終わると韻が止まる",[15,322,323],{},"ビート整列を検証するページを、ずんだもんの声でも作らせた。\n文末の母音を2文ずつそろえた12文を読ませてみて分かったのは、日本語の制約のほうだった。\n「ます」「です」で終わる限り、そろうのは語尾であって韻ではない。",[15,325,326],{},"英語なら音がつながるぶん楽なのではないかと思って、そちらも作らせた。\n聞いてみたら何を言っているか聞き取れない。\n英語版だけ削除させた。",[15,328,329],{},[108,330,110],{},[112,332,333,336,339],{},[115,334,335],{},"ずんだもんの声によるビート整列の検証（母音をそろえた12文）",[115,337,338],{},"日本語の文末表現がライムに与える制約を確認",[115,340,341],{},"英語版は聞き取れず削除",[15,343,344,129,346],{},[108,345,128],{},[131,347,349],{"href":348},"/tts-beat-alignment-japanese-rap","ずんだもんの声をBPM120に乗せる。日本語ラップの制約と、削除した英語版",[136,351],{},[92,353,355],{"id":354},"_7-1か月前の疑問を公開記事に落とす","7. 1か月前の疑問を、公開記事に落とす",[15,357,358],{},"別のセッションでは、子どもが自由研究に立てた「なぜプロペラを回すと電気が起こるのか」という一行の経過を、公開記事にまとめさせた。\nチャットの履歴を全部読ませ、SVGの図を足し、磁石のS極とN極がプラスとマイナスのどちらへ対応するのかを書き加えた。\n同じセッションに紛れ込んでいた別件は、記事から落とさせた。\nスマホの幅で図が小さく見えるのは左右の余白のせいだったので、そこも外させた。\n実験道具の買い物リストも足した。",[15,360,361,129,363],{},[108,362,128],{},[131,364,366],{"href":365},"/propeller-electricity-summer-research","「なぜプロペラを回すと電気が起こるのか」— 自由研究の一行が、ファラデーの日誌に届くまで",[136,368],{},[22,370,371],{"id":371},"今日の試行錯誤",[33,373,374,393],{},[36,375,376],{},[39,377,378,381,384,387,390],{},[42,379,380],{},"#",[42,382,383],{},"テーマ",[42,385,386],{},"試したこと",[42,388,389],{},"結果",[42,391,392],{},"気づき",[52,394,395,411,428,445,462,478,495,511,527,547,564,581,598],{},[39,396,397,399,402,405,408],{},[57,398,87],{},[57,400,401],{},"本番の図のリンク切れ",[57,403,404],{},"前日のアップロード漏れを疑って本番を確認",[57,406,407],{},"原因を特定",[57,409,410],{},"アップロード漏れとエッジの404キャッシュが重なっていた",[39,412,413,416,419,422,425],{},[57,414,415],{},"2",[57,417,418],{},"画像の再アップロード",[57,420,421],{},"全件を上げ直す作りを疑い、Gitの履歴から変更ファイルを拾う案を出す",[57,423,424],{},"差分アップロードへ変更",[57,426,427],{},"ETagを比べれば、履歴に頼らず変わったファイルだけ上げられる",[39,429,430,433,436,439,442],{},[57,431,432],{},"3",[57,434,435],{},"図の列見出し",[57,437,438],{},"1枚ずつ指摘していたものを、規約にして全図へ一括適用",[57,440,441],{},"成功",[57,443,444],{},"修正ログは時系列より規約単位で並べたほうが横展開できる",[39,446,447,450,453,456,459],{},[57,448,449],{},"4",[57,451,452],{},"生成スクリプトの無い127枚",[57,454,455],{},"手直しで済ませるか、作り直すかを検討",[57,457,458],{},"作り直しを選択",[57,460,461],{},"ピクセル単位で座標を置く図は、スクリプトがないと微修正ができない",[39,463,464,466,469,472,475],{},[57,465,76],{},[57,467,468],{},"設問200問",[57,470,471],{},"数の出どころと、抽出漏れの本の有無を質す",[57,473,474],{},"経路を確認",[57,476,477],{},"未割り当てが0なら、絞り込みの過程は追える",[39,479,480,483,486,489,492],{},[57,481,482],{},"6",[57,484,485],{},"「系統」という列名",[57,487,488],{},"何の分類かを聞き、出典書籍数へ言い換えさせる",[57,490,491],{},"変更",[57,493,494],{},"代理指標を出すより、元の数をそのまま出したほうが読める",[39,496,497,500,503,506,508],{},[57,498,499],{},"7",[57,501,502],{},"記事の事実確認の順序",[57,504,505],{},"執筆後に確認する方針を、執筆前に読む方針へ差し替え",[57,507,491],{},[57,509,510],{},"あとから確認すると、書いた内容に合う箇所を探しにいく",[39,512,513,515,518,521,524],{},[57,514,65],{},[57,516,517],{},"拡張のクリック領域",[57,519,520],{},"クリック領域を実測させる",[57,522,523],{},"ボタン本体だけに限定",[57,525,526],{},"原因は投稿側のクラス名の変更だった",[39,528,529,532,535,538,541],{},[57,530,531],{},"9",[57,533,534],{},"拡張のボタンが消えた",[57,536,537],{},"直前の修正の副作用を疑う",[57,539,540],{},"別の原因",[57,542,543,544,546],{},"拡張フォルダ直下の ",[237,545,239],{}," でChromeが拡張を無効化する",[39,548,549,552,555,558,561],{},[57,550,551],{},"10",[57,553,554],{},"デプロイ速度",[57,556,557],{},"Defenderの除外を入れて2回目を計測",[57,559,560],{},"21分44秒 → 11分30秒",[57,562,563],{},"縮んだのはファイルを大量に開く工程。記事のプリレンダーは16%止まり",[39,565,566,569,572,575,578],{},[57,567,568],{},"11",[57,570,571],{},"記事SSRの単体計測",[57,573,574],{},"プリレンダー用バンドルの localFetch でハーネスを作らせる",[57,576,577],{},"作成",[57,579,580],{},"Mac側が未計測で、残る差はまだ説明できていない",[39,582,583,586,589,592,595],{},[57,584,585],{},"12",[57,587,588],{},"日本語ラップ",[57,590,591],{},"母音を2文ずつそろえた12文を読ませる",[57,593,594],{},"制約を確認",[57,596,597],{},"丁寧語で終わる限り、そろうのは語尾であって韻ではない",[39,599,600,603,606,609,612],{},[57,601,602],{},"13",[57,604,605],{},"英語版のラップ",[57,607,608],{},"音のつながる発音で作らせる",[57,610,611],{},"削除",[57,613,614],{},"聞き取れないものは残さない",[136,616],{},[22,618,619],{"id":619},"今日の学び",[112,621,622,625,628,634],{},[115,623,624],{},"やり直しの単位が全体になっている箇所は、直したい単位まで小さくできることが多い。全件アップロードはETagの比較へ、1枚ずつ直していた図は規約の一括適用へ、それぞれ移せた",[115,626,627],{},"単位を小さくできない場所もある。生成スクリプトの残っていない図は、127枚まとめて作り直すしかなかった。出力だけをコミットして生成元を置き去りにすると、支払いはこの形で来る",[115,629,630,631,633],{},"直した直後に別の症状が出ると、直前の修正を疑うのは自然だが、そこで止まると原因にたどり着かない。ボタンが消えた原因は、クリック領域とは無関係の ",[237,632,239],{}," だった",[115,635,636],{},"計測は、全体の数字が動いたところで止めない。半分になっても、内訳を見れば縮んだ工程と縮まなかった工程に分かれる",[136,638],{},[22,640,641],{"id":641},"明日やること",[112,643,646,656,662],{"className":644},[645],"contains-task-list",[115,647,650,655],{"className":648},[649],"task-list-item",[651,652],"input",{"disabled":653,"type":654},true,"checkbox"," Mac側でも記事SSRのハーネスを回し、残っている差がどの工程から来ているかを突き止める",[115,657,659,661],{"className":658},[649],[651,660],{"disabled":653,"type":654}," 消えたままのGitの資格情報を入れ直す",[115,663,665,667],{"className":664},[649],[651,666],{"disabled":653,"type":654}," 127枚の作り直しの進捗を、比較用のビューアで確認する",[136,669],{},[22,671,672],{"id":672},"関連記事",[112,674,675,679,683,687,693,697,701],{},[115,676,677],{},[131,678,134],{"href":133},[115,680,681],{},[131,682,182],{"href":181},[115,684,685],{},[131,686,223],{"href":222},[115,688,689],{},[131,690,269,691,272],{"href":268},[237,692,239],{},[115,694,695],{},[131,696,314],{"href":313},[115,698,699],{},[131,700,349],{"href":348},[115,702,703],{},[131,704,366],{"href":365},{"title":706,"searchDepth":707,"depth":707,"links":708},"",2,[709,710,720,721,722,723],{"id":24,"depth":707,"text":24},{"id":90,"depth":707,"text":90,"children":711},[712,714,715,716,717,718,719],{"id":94,"depth":713,"text":95},3,{"id":140,"depth":713,"text":141},{"id":187,"depth":713,"text":188},{"id":228,"depth":713,"text":229},{"id":277,"depth":713,"text":278},{"id":319,"depth":713,"text":320},{"id":354,"depth":713,"text":355},{"id":371,"depth":707,"text":371},{"id":619,"depth":707,"text":619},{"id":641,"depth":707,"text":641},{"id":672,"depth":707,"text":672},"diary",null,"画像を1枚直すたびに全件を上げ直していた運用を、ETag比較の差分アップロードへ変えた。図の列見出しは規約にして一括適用し、生成スクリプトの残っていない127枚は作り直させた。Defenderの除外でビルドは21分44秒から11分30秒になった、14セッションの記録。","md",{},"/2026-08-19-diary","daily-log",false,"2026-08-19T00:00:00.000Z",{"title":5,"description":726},"make-diary","2026-08/2026-08-19/diary-2026-08-19",[737,738,739,81,740,741],"日記","SVG","Cloudflare R2","ビルド速度","Claude Code","7fbh4ok8eJF5TXCU1RukMpYlscQToqI--zc_RjJZWDo",[],[745,749,753,757,761],{"title":746,"path":747,"publishedAt":748},"2026年8月18日の開発日記 - 止めどきを決め続けた一日","/2026-08-18-diary","2026-08-18T00:00:00.000Z",{"title":750,"path":751,"publishedAt":752},"2026年8月10日の開発日記 - 図解カタログ27型をグリッドに載せ直した","/2026-08-10-diary","2026-08-10T00:00:00.000Z",{"title":754,"path":755,"publishedAt":756},"2026年6月22日の開発日記 - 韓国半導体旬報の品目別Chrome拡張とロングフォーム2本","/2026-06-22-diary","2026-06-22T00:00:00.000Z",{"title":758,"path":759,"publishedAt":760},"2026年5月15日の開発日記 - 都道府県クイズ12ページ完成・地図クイズ4種・eurekapu 77ページ2カラム化・yomitoku 0.13.0 まで","/2026-05-15-diary","2026-05-15T00:00:00.000Z",{"title":762,"path":763,"publishedAt":764},"2026年4月28日の開発日記 - feature-slidesスキル新設、書籍OCR1181ページ、Amazon書棚UIまで1日で組み上げた","/2026-04-28-diary","2026-04-28T00:00:00.000Z","https://log.eurekapu.com/og/blog/2026-08-19-diary.png?v=2026-08-19T00%3A00%3A00.000Z&title=2026%E5%B9%B48%E6%9C%8819%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20%E3%82%84%E3%82%8A%E7%9B%B4%E3%81%97%E3%81%AE%E5%8D%98%E4%BD%8D%E3%82%92%E5%B0%8F%E3%81%95%E3%81%8F%E3%81%97%E3%81%9F%E4%B8%80%E6%97%A5&author=Kei%20Komatsu&sig=be309926ac557a55",1787187401145]