[{"data":1,"prerenderedAt":825},["ShallowReactive",2],{"content-/2026-08-14-diary":3,"all-pages-for-dir":802,"related-/2026-08-14-diary":803,"og-image-/2026-08-14-diary":824},{"id":4,"title":5,"body":6,"category":783,"concepts":784,"description":785,"extension":786,"meta":787,"navigation":668,"ogImage":784,"path":788,"project_name":789,"published":790,"publishedAt":791,"seo":792,"source":793,"stem":794,"tags":795,"todo":784,"unpublished":790,"updatedAt":784,"__hash__":801},"pages/2026-08/2026-08-14/diary-2026-08-14.md","2026年8月14日の開発日記 - 積み残しに番号を振って潰し、デプロイ25分の内訳を割った",{"type":7,"value":8,"toc":763},"minimark",[9,14,27,30,34,41,44,47,52,55,60,66,81,92,94,98,101,107,111,122,130,132,136,139,142,145,149,160,168,170,174,177,180,184,195,203,205,209,216,219,223,234,242,244,248,251,254,258,269,274,276,280,283,286,290,301,309,311,314,627,629,632,652,654,657,689,691,694,697,729,732,734,737],[10,11,13],"h1",{"id":12},"_2026年8月14日の開発日記","2026年8月14日の開発日記",[15,16,17,18,22,23,26],"p",{},"朝いちで「積み残しをリストにしてください」と頼んだ。返ってきた項目に A-1 / A-2 / A-3 と番号が付いて、その番号順に一日が動いた。git の分岐、未コミットの53ファイル、本番 ",[19,20,21],"code",{},"/search"," の廃止。3つ目まで片付けたところで話がデプロイの所要時間に移り、",[19,24,25],{},"postgenerate"," に213.7秒かかっているという数字が画面に出た。",[15,28,29],{},"そこから先は、削れる場所と削れない場所を分ける作業になった。同じ日に、図解カタログの移行、税大講本のOCR、ナレーションの話速をBPMで決める試み、動画教材で何を売るかのリサーチも並んで走っている。セッションは18本。1本ずつ別々のことをやらせて、自分は違和感を拾う側に回った。",[31,32,33],"h2",{"id":33},"今日のタイムライン",[15,35,36],{},[37,38],"img",{"alt":39,"src":40},"タイムライン","/2026-08/2026-08-14/timeline-2026-08-14.png",[42,43],"hr",{},[31,45,46],{"id":46},"今日やったこと",[48,49,51],"h3",{"id":50},"_1-積み残しの棚卸しと消化a-1-a-2-a-3","1. 積み残しの棚卸しと消化（A-1 / A-2 / A-3）",[15,53,54],{},"朝の時点で「何が残っているか」を機械に数えさせた。人の記憶ではなく計画書の状態ブロックとgitの差分から引かせたので、リストが1分で出る。出た3件に番号を振り、それぞれ別セッションへ配った。",[15,56,57,59],{},[19,58,21],{}," の廃止（A-3）は、本番でページを開くたびに11.3MBのSQLダンプを取得していた問題の根治。リンクを外すだけで済ませるか迷ったが、404経由でもダンプを引いていたので、そちらまで塞いだ。",[15,61,62],{},[63,64,65],"strong",{},"主な成果:",[67,68,69,73,76],"ul",{},[70,71,72],"li",{},"origin と分岐していたローカルを、origin 側へ寄せて解消",[70,74,75],{},"未コミット53ファイル（未追跡44）を機能単位で分割コミット",[70,77,78,80],{},[19,79,21],{}," を廃止し、404ページの転送量を558KBまで縮小",[15,82,83,86,87],{},[63,84,85],{},"詳細:"," ",[88,89,91],"a",{"href":90},"/carryover-triage-and-search-retirement","積み残しを機械で数えてから、A-1 から順に潰した一日",[42,93],{},[48,95,97],{"id":96},"_2-デプロイ所要時間の計測と短縮","2. デプロイ所要時間の計測と短縮",[15,99,100],{},"「このままだとデプロイできないのか」という不安から入って、実測で否定するところから始めた。途中でcookieが消えたという診断が間違いだったことも分かった。1回目のデプロイは自分の変更と関係ない理由で落ちている。",[15,102,103,104,106],{},"内訳を出せるようにしてから、",[19,105,25],{}," が213.7秒を占めていると特定した。その大半は、非公開記事が本番のダンプに漏れていないかを検査する1本だった。展開後の文字列に対して記事202本を最大3回ずつ、およそ600回も全文走査していたのが理由で、これを1パスに置き換えた。スクリプト単体の計測では277秒が40秒になり、出力は旧実装と完全に一致した。一方でタグページのオンデマンド生成は、外部リンクと検索流入を失う割に合わないと判断して見送っている。",[15,108,109],{},[63,110,65],{},[67,112,113,116,119],{},[70,114,115],{},"フェーズごとの所要時間を計測できるランナーを挟んだ",[70,117,118],{},"非公開記事のダンプ検査を1回の走査にまとめ、277秒→40秒",[70,120,121],{},"走りっぱなしのプロセスを掃除し、最後の計測は15分55秒",[15,123,124,86,126],{},[63,125,85],{},[88,127,129],{"href":128},"/deploy-time-breakdown-measurement","デプロイ25分の内訳を計測して、削れる場所と削れない場所を分けた",[42,131],{},[48,133,135],{"id":134},"_3-図解60型カタログの統一キャンバス移行","3. 図解60型カタログの統一キャンバス移行",[15,137,138],{},"プロセスフロー11型と時間軸4型を、1024×576の統一キャンバスへ移した。移行の前にBeforeを凍結しておかないと後から比較できなくなるので、そこを先にやらせている。",[15,140,141],{},"移行後に見て気づいたのは、フローチャートの判断ノードだった。Beforeでは三角形だったひし形が、横に間延びした形に変わっている。差し戻して直させた。カテゴリCではフォントもサイズもBeforeのまま持っていくよう指示した。余計に整えようとすると、元の良さが消える。",[15,143,144],{},"ガントチャートを27系と33系のどちらに寄せるかは、デザインの良い27系を残す方向で決めた。方針がページのどこにも書かれていなかったので、上部に明示させた。",[15,146,147],{},[63,148,65],{},[67,150,151,154,157],{},[70,152,153],{},"移行前のBeforeを凍結してから、プロセスフロー11型と時間軸4型を移行",[70,155,156],{},"横に伸びた判断ノードを差し戻して修正",[70,158,159],{},"「33系は27系に統合する」方針をカタログページの上部に明示",[15,161,162,86,164],{},[63,163,85],{},[88,165,167],{"href":166},"/diagram-catalog-process-and-time-migration","図解カタログをBefore付きで移した日。プロセスフロー11型と時間軸4型、横に伸びた判断ノード",[42,169],{},[48,171,173],{"id":172},"_4-税大講本のpdf取り込みとocr","4. 税大講本のPDF取り込みとOCR",[15,175,176],{},"ダウンロードフォルダに置いたままだった税大講本を、いつもの連番フォルダへ移した。8冊のつもりが3年分24冊、3,846ページあった。",[15,178,179],{},"途中で「これ、もともと検索可能なPDFなんじゃないですか」と気づいて確認させた。テキスト層は実際に入っていて品質も高い。それでも、表がMarkdownのテーブルとして残ることと図が抽出できることを取って、OCRをそのまま完走させる判断にした。ページの柱の除去は理由を変えながら何度も空振りしている。",[15,181,182],{},[63,183,65],{},[67,185,186,189,192],{},[70,187,188],{},"3年分24冊・3,846ページを連番フォルダへ整理し、OCRから全文検索まで通した",[70,190,191],{},"年度版は流用が効かないと確認",[70,193,194],{},"OCR検算を1冊だけ試して、やり方の当たりを付けた",[15,196,197,86,199],{},[63,198,85],{},[88,200,202],{"href":201},"/zeidai-kohon-pdf-ocr-pipeline","税大講本3年分24冊をPDFから全文検索できる形にするまで",[42,204],{},[48,206,208],{"id":207},"_5-ナレーション音声のテンポをbpmで決める","5. ナレーション音声のテンポをBPMで決める",[15,210,211,212,215],{},"手元のナレーションがいま何拍で喋っているのかを ",[19,213,214],{},"ffprobe"," で実測させたら、BPM98相当だった。遅い。BPM120との聞き比べページを作らせて並べて聴いたら、1.2倍くらいの感覚で、こちらの方が耳になじむ。",[15,217,218],{},"面白かったのは、4つ打ちを重ねて確かめたときだ。文と文のあいだの「間」も拍のグリッドに乗せた方がいい、と分かった。会計期間の説明で1.1秒空いていた箇所は、4拍目から始まっていて拍の頭とずれていた。ついでに、停止ボタンを押してもバックグラウンドのビートが鳴り続けるバグも直させた。",[15,220,221],{},[63,222,65],{},[67,224,225,228,231],{},[70,226,227],{},"既存音声の話速をBPM98相当と実測",[70,229,230],{},"BPM120ベースとの聞き比べページを作り、4つ打ちを重ねて確認",[70,232,233],{},"文の間を拍のグリッドに置き直し、手順をスキルに落とした",[15,235,236,86,238],{},[63,237,85],{},[88,239,241],{"href":240},"/narration-bpm-beat-grid","ナレーションの話速をBPMで設計する。実測BPM98と、間をビートに乗せる試み",[42,243],{},[48,245,247],{"id":246},"_6-動画教材で何を売るかのリサーチ","6. 動画教材で何を売るかのリサーチ",[15,249,250],{},"手持ちのリポジトリから出せる講座を調べさせたら、前提が二度ひっくり返った。自分が受ける側の話になっていたり、プラットフォーム前提で組まれていたりして、そのたびに軸を戻している。",[15,252,253],{},"うまくいかない原因は毎回こちら側にあった。前提を言い直させると出力が一段まともになる。制約として書かせていた条件も、実際には数えずに書いていただけで、材料を渡したら消えた。",[15,255,256],{},[63,257,65],{},[67,259,260,263,266],{},[70,261,262],{},"「出す側」の前提に置き直して候補を再抽出",[70,264,265],{},"選別の軸を先に決めてから候補を絞る形に変えた",[70,267,268],{},"具体的な着地は非公開の記録に残した",[15,270,271,273],{},[63,272,85],{}," 記録は残したが、未launchの方針をそのまま書いているので非公開にした。",[42,275],{},[48,277,279],{"id":278},"_7-行政手続の調査データmcpを試す","7. 行政手続の調査データMCPを試す",[15,281,282],{},"公開記事で見かけたMCPを、中身を知らないままスキルに登録しかけた。手を止めて「これ、何が使えるんですか」と聞き直したところから、実物を引かせにいくことになった。",[15,284,285],{},"応答が返らない時間があって、落ちているのか、間違えたのか、まだ走っているだけなのかが切り分けられなかった。最終的に、1行が1つの行政手続で38項目、条文単位で辿れるところまでは見えた。提出書面まで出るのかは確かめる前に止めている。",[15,287,288],{},[63,289,65],{},[67,291,292,295,298],{},[70,293,294],{},"登録前にMCPの中身をドキュメント化させた",[70,296,297],{},"1行=1手続き・38項目、条文から手続きを辿れることを確認",[70,299,300],{},"手元のDBに入れてある教材データと突き合わせる案まで到達",[15,302,303,86,305],{},[63,304,85],{},[88,306,308],{"href":307},"/admin-procedure-mcp-trial","行政手続の調査データを扱う MCP は何が引けるのか、スキルにする前に確かめた",[42,310],{},[31,312,313],{"id":313},"今日の試行錯誤",[315,316,317,339],"table",{},[318,319,320],"thead",{},[321,322,323,327,330,333,336],"tr",{},[324,325,326],"th",{},"#",[324,328,329],{},"テーマ",[324,331,332],{},"試したこと",[324,334,335],{},"結果",[324,337,338],{},"気づき",[340,341,342,360,376,395,412,428,444,460,477,493,510,527,544,561,577,593,610],"tbody",{},[321,343,344,348,351,354,357],{},[345,346,347],"td",{},"1",[345,349,350],{},"積み残しの把握",[345,352,353],{},"記憶ではなく計画書の状態ブロックとgit差分から機械集計させた",[345,355,356],{},"成功",[345,358,359],{},"リストが1分で出る。番号を振ると分配できる",[321,361,362,365,368,371,373],{},[345,363,364],{},"2",[345,366,367],{},"git の分岐",[345,369,370],{},"origin 側へ寄せるか手元を残すかを判断",[345,372,356],{},[345,374,375],{},"分割で寄せた。バイナリも含めて取り込む方向で決着",[321,377,378,381,386,389,392],{},[345,379,380],{},"3",[345,382,383,385],{},[19,384,21],{}," の廃止",[345,387,388],{},"リンクを外すだけで済ませようとした",[345,390,391],{},"不十分",[345,393,394],{},"404経由でもSQLダンプを引いていた。そちらも塞いで558KBまで縮小",[321,396,397,400,403,406,409],{},[345,398,399],{},"4",[345,401,402],{},"デプロイの可否",[345,404,405],{},"cookie が消えたせいだと診断した",[345,407,408],{},"失敗",[345,410,411],{},"診断が間違い。実測で否定できた",[321,413,414,417,420,423,425],{},[345,415,416],{},"5",[345,418,419],{},"デプロイ1回目",[345,421,422],{},"そのまま流した",[345,424,408],{},[345,426,427],{},"自分の変更と関係ない理由で落ちた",[321,429,430,433,436,439,441],{},[345,431,432],{},"6",[345,434,435],{},"デプロイ時間の短縮",[345,437,438],{},"フェーズ内訳を計測できるランナーを挟んだ",[345,440,356],{},[345,442,443],{},"postgenerate 213.7秒が最大の詰まりだと分かった",[321,445,446,449,452,455,457],{},[345,447,448],{},"7",[345,450,451],{},"非公開記事の検査",[345,453,454],{},"約600回の全文走査を1パスに置き換えた",[345,456,356],{},[345,458,459],{},"単体計測で277秒→40秒。遅い理由をgunzipだと思い込んでいた",[321,461,462,465,468,471,474],{},[345,463,464],{},"8",[345,466,467],{},"タグページ",[345,469,470],{},"オンデマンド生成で削れないか検討した",[345,472,473],{},"見送り",[345,475,476],{},"外部リンクと検索流入を失う。割に合わない",[321,478,479,482,485,488,490],{},[345,480,481],{},"9",[345,483,484],{},"図解カタログ",[345,486,487],{},"Before を凍結してから移行させた",[345,489,356],{},[345,491,492],{},"凍結は移行の前にしかできない",[321,494,495,498,501,504,507],{},[345,496,497],{},"10",[345,499,500],{},"判断ノード",[345,502,503],{},"移行後の形をそのまま受け入れかけた",[345,505,506],{},"差し戻し",[345,508,509],{},"ひし形が横に間延びしていた。目視で気づけた",[321,511,512,515,518,521,524],{},[345,513,514],{},"11",[345,516,517],{},"カテゴリCの移行",[345,519,520],{},"余計に整えようとしていた",[345,522,523],{},"修正",[345,525,526],{},"Before のフォントとサイズをそのまま持っていくよう指示",[321,528,529,532,535,538,541],{},[345,530,531],{},"12",[345,533,534],{},"税大講本のOCR",[345,536,537],{},"テキスト層がある前提で全文抽出に切り替えるか迷った",[345,539,540],{},"継続",[345,542,543],{},"表と図を取るためOCRを完走させる判断",[321,545,546,549,552,555,558],{},[345,547,548],{},"13",[345,550,551],{},"柱の除去",[345,553,554],{},"理由を変えて何度か試した",[345,556,557],{},"空振り",[345,559,560],{},"落としきれない箇所が残った",[321,562,563,566,569,572,574],{},[345,564,565],{},"14",[345,567,568],{},"ナレーション話速",[345,570,571],{},"ffprobe で実測",[345,573,356],{},[345,575,576],{},"BPM98相当。遅いという体感の裏が取れた",[321,578,579,582,585,588,590],{},[345,580,581],{},"15",[345,583,584],{},"間の置き方",[345,586,587],{},"4つ打ちを重ねて拍とのずれを見た",[345,589,356],{},[345,591,592],{},"1.1秒の間が4拍目から始まっていた",[321,594,595,598,601,604,607],{},[345,596,597],{},"16",[345,599,600],{},"講座テーマ",[345,602,603],{},"手持ちから候補を出させた",[345,605,606],{},"二度やり直し",[345,608,609],{},"「受ける側」「プラットフォーム前提」で前提がずれていた",[321,611,612,615,618,621,624],{},[345,613,614],{},"17",[345,616,617],{},"行政手続MCP",[345,619,620],{},"中身を知らないまま登録しかけた",[345,622,623],{},"中断",[345,625,626],{},"何が引けるか確かめてからにした",[42,628],{},[31,630,631],{"id":631},"今日の学び",[67,633,634,637,640,643,646,649],{},[70,635,636],{},"積み残しは、思い出すのではなく数える。計画書の状態ブロックとgitの差分から引けば、朝いちで1分でリストになる",[70,638,639],{},"遅い場所は勘では当たらない。デプロイ25分のうち213.7秒が1箇所に固まっていたのは、内訳を出すまで見えなかった",[70,641,642],{},"Before は移行の前にしか撮れない。凍結を後回しにすると、何が変わったのかを比べる手段そのものが消える",[70,644,645],{},"移行の質は目視でしか拾えない部分が残る。判断ノードのひし形が横に伸びていたのは、数値のチェックには引っかからなかった",[70,647,648],{},"体感は実測すると数字になる。「なんとなく遅い」ナレーションはBPM98で、BPM120と並べたら差がはっきりした",[70,650,651],{},"前提がずれたリサーチは、やり直すより先に前提を1行で言い直させた方が早い",[42,653],{},[31,655,656],{"id":656},"明日やること",[67,658,661,671,677,683],{"className":659},[660],"contains-task-list",[70,662,665,670],{"className":663},[664],"task-list-item",[666,667],"input",{"disabled":668,"type":669},true,"checkbox"," 図解カタログの残り34型のうち、カテゴリDから移行を続ける",[70,672,674,676],{"className":673},[664],[666,675],{"disabled":668,"type":669}," 行政手続MCPで、条文から提出書面まで辿れるかを1件で確かめる",[70,678,680,682],{"className":679},[664],[666,681],{"disabled":668,"type":669}," OCR検算の残りを、1冊試した手順のまま他の年度版へ広げる",[70,684,686,688],{"className":685},[664],[666,687],{"disabled":668,"type":669}," ナレーションのBPM設計を、既存の音声コンテンツへ適用し直す",[42,690],{},[31,692,693],{"id":693},"同じ日に書いた記事",[15,695,696],{},"日記チェーンの外で、その日のうちに書いた記事。",[67,698,699,705,711,717,723],{},[70,700,701],{},[88,702,704],{"href":703},"/memory-makers-five-year-capacity-plans","メモリ3社は5年で生産能力をどれだけ増やすのか｜数字で倍増を約束しているのはSK hynixだけである",[70,706,707],{},[88,708,710],{"href":709},"/sandisk-investor-day-2026-fact-check","Sandisk Investor Day 2026を読む――X連投のファクトと予測を98ページの資料・公開データで検証する",[70,712,713],{},[88,714,716],{"href":715},"/a100-gpu-economic-life-debate","A100は2029年まで稼げるのか――AI GPUの寿命をめぐる議論を分解する",[70,718,719],{},[88,720,722],{"href":721},"/japan-ai-adoption-incentive-gap","日本でAI活用が進まないのは、社員に得がないからだ",[70,724,725],{},[88,726,728],{"href":727},"/earnings-beats-2026-08-13","24h決算ビートスキャン（2026-08-13）",[15,730,731],{},"このほかに、税大講本を基にした教材の利用条件を整理した調査記録も書いた（非公開）。",[42,733],{},[31,735,736],{"id":736},"関連記事",[67,738,739,743,747,751,755,759],{},[70,740,741],{},[88,742,91],{"href":90},[70,744,745],{},[88,746,129],{"href":128},[70,748,749],{},[88,750,167],{"href":166},[70,752,753],{},[88,754,202],{"href":201},[70,756,757],{},[88,758,241],{"href":240},[70,760,761],{},[88,762,308],{"href":307},{"title":764,"searchDepth":765,"depth":765,"links":766},"",2,[767,768,778,779,780,781,782],{"id":33,"depth":765,"text":33},{"id":46,"depth":765,"text":46,"children":769},[770,772,773,774,775,776,777],{"id":50,"depth":771,"text":51},3,{"id":96,"depth":771,"text":97},{"id":134,"depth":771,"text":135},{"id":172,"depth":771,"text":173},{"id":207,"depth":771,"text":208},{"id":246,"depth":771,"text":247},{"id":278,"depth":771,"text":279},{"id":313,"depth":765,"text":313},{"id":631,"depth":765,"text":631},{"id":656,"depth":765,"text":656},{"id":693,"depth":765,"text":693},{"id":736,"depth":765,"text":736},"diary",null,"朝いちで積み残しを機械集計させ、A-1からA-3まで番号順に処理した一日。デプロイのフェーズ内訳を計測してpostgenerateの277秒を40秒に縮め、図解カタログの移行、税大講本のOCR、ナレーションのBPM設計まで並走させた記録。","md",{},"/2026-08-14-diary","daily-log",false,"2026-08-14T00:00:00.000Z",{"title":5,"description":785},"make-diary","2026-08/2026-08-14/diary-2026-08-14",[796,797,798,799,484,800],"日記","積み残し管理","デプロイ","OCR","BPM","08vHDADMi6vdsFgrUMx4Cd9zsAHKldOAeIBbvOFoguE",[],[804,808,812,816,820],{"title":805,"path":806,"publishedAt":807},"2026年8月15日の開発日記 - 60型を1枚に乗せ切り、父のMacをGitHubにつないだ","/2026-08-15-diary","2026-08-15T00:00:00.000Z",{"title":809,"path":810,"publishedAt":811},"2026年8月13日の開発日記 - 本番検索の伏兵とCodex CLI復旧、開発環境の総点検","/2026-08-13-diary","2026-08-13T00:00:00.000Z",{"title":813,"path":814,"publishedAt":815},"2026年8月7日の開発日記 - 緩めたルールを、元に戻した日","/2026-08-07-diary","2026-08-07T00:00:00.000Z",{"title":817,"path":818,"publishedAt":819},"2026年8月6日の開発日記 - 「取り込み済み」が使えるとは限らなかった","/2026-08-06-diary","2026-08-06T00:00:00.000Z",{"title":821,"path":822,"publishedAt":823},"2026年8月2日の開発日記 - WindowsからMacへ環境を移した一日","/2026-08-02-diary","2026-08-02T00:00:00.000Z","https://log.eurekapu.com/favicon.svg",1787053849199]