[{"data":1,"prerenderedAt":717},["ShallowReactive",2],{"content-/2026-06-23-diary":3,"all-pages-for-dir":715,"og-image-/2026-06-23-diary":716},{"id":4,"title":5,"body":6,"category":690,"description":691,"extension":692,"meta":693,"navigation":694,"ogImage":695,"path":696,"project_name":697,"published":698,"publishedAt":699,"seo":700,"stem":701,"tags":702,"todo":695,"unpublished":698,"updatedAt":695,"__hash__":714},"pages/2026-06/2026-06-23/diary-2026-06-23.md","2026年6月23日の開発日記 - Micron×Anthropic記事、Nanya追加、Kindle for PC撮影アプリ、blog payload null再発",{"type":7,"value":8,"toc":671},"minimark",[9,14,23,27,34,37,42,45,51,64,75,78,82,85,89,97,105,107,111,114,118,156,164,166,170,184,188,199,207,209,213,224,228,242,250,252,256,271,275,286,294,296,300,310,314,334,342,344,348,358,362,379,387,389,392,582,584,587,631,633,636],[10,11,13],"h1",{"id":12},"_2026年6月23日の開発日記","2026年6月23日の開発日記",[15,16,17,18,22],"p",{},"朝5時台から走り出した日。Micron が Anthropic と組んだプレスリリースを起点に、メモリ業界の循環の薄れを記事化したあと、台湾の DRAM メーカー Nanya を /memory-makers に追加し、ASP/Bit のチャートを切り出した。並行して、earnings-dynamics の NTM 集計欄を実装し、デプロイした /blog が再び一瞬で空になる payload null 化を踏み抜いて修正。夕方は Kindle for PC のデスクトップアプリから本文を直接拾う試みが Electron の壁に阻まれて OCR 路線に確定し、矢印キー送信で自動ページ送りを実装した。途中、",[19,20,21],"code",{},"C:\\Users\\numbe\\.git"," を作ってしまって1万件のファイルが Git に追跡される事故と、OpenAI APIキーが LINE 経由で漏れた可能性に気付いてリボークするくだりがあった。",[24,25,26],"h2",{"id":26},"今日のタイムライン",[15,28,29],{},[30,31],"img",{"alt":32,"src":33},"タイムライン","/2026-06/2026-06-23/timeline-2026-06-23.png",[24,35,36],{"id":36},"今日やったこと",[38,39,41],"h3",{"id":40},"_1-micron-が-anthropic-と戦略提携-記事化","1. Micron が Anthropic と戦略提携 — 記事化",[15,43,44],{},"Micron Technology が Anthropic と4本柱の戦略提携を発表した。①メモリ・ストレージのアーキテクチャ共同設計、②HBM/DRAM/SSDの複数年供給契約、③Micron 社内での Claude 採用、④Anthropic Series H への Micron の出資。DRAM 価格が前年比 700% 水準のこの局面で、Anthropic が「メモリ層」を直接押さえに来た構図を整理した。",[15,46,47],{},[48,49,50],"strong",{},"主な成果:",[52,53,54,58,61],"ul",{},[55,56,57],"li",{},"4本柱を分解して記事化",[55,59,60],{},"「値段の高騰の次は、需要そのものを契約で押さえにいく」のトーンを織り込む",[55,62,63],{},"Anthropic→Micron の物理フロー SVG を同記事に添付",[15,65,66,69,70],{},[48,67,68],{},"詳細:"," ",[71,72,74],"a",{"href":73},"/micron-anthropic-strategic-agreement","Anthropic が Micron と戦略提携",[76,77],"hr",{},[38,79,81],{"id":80},"_2-半導体地政学-2030-turso-蔵書-db-から読書まとめ","2. 半導体地政学 2030 — Turso 蔵書 DB から読書まとめ",[15,83,84],{},"Turso の book-knowledge-base に蓄積した蔵書から、太田泰彦『2030 半導体の地政学』のセクション群を Claude Code に横断検索させて、序章と終章を軸にサマリー記事を書いた。ホワイトハウス司令塔の CEO サミット、Quad とデジタル TPP、「描く・つくる・使う」の3類型、シリコンサイクルとムーアの法則の壁、3D 実装で挑むグリーンチップまで。",[15,86,87],{},[48,88,50],{},[52,90,91,94],{},[55,92,93],{},"Turso スキル経由で章節を引いて要約",[55,95,96],{},"2030 年の展開を本書の構図に沿って再構成",[15,98,99,69,101],{},[48,100,68],{},[71,102,104],{"href":103},"/semiconductor-geopolitics-2030-summary","2030年、半導体の地政学はどう展開するか",[76,106],{},[38,108,110],{"id":109},"_3-memory-makers-に-nanya-を追加-dram-チャートのトーン統一","3. /memory-makers に Nanya を追加 + DRAM チャートのトーン統一",[15,112,113],{},"「南亞科技の1-3月期は売上前年比 +582.9%、粗利率 67.9%、ASP 前期比 +70% なのにビット出荷は微減だった」という IR 記述が起点。数量ではなく値段だけで稼いだ四半期、というメッセージをチャートに乗せるところまで進めた。",[15,115,116],{},[48,117,50],{},[52,119,120,123,130,141],{},[55,121,122],{},"/memory-makers/makers に Nanya (2408.TW) を追加",[55,124,125,126,129],{},"ASP/Bit 出荷量チャート ",[19,127,128],{},"NanyaAspBitChart.vue"," を新規切り出し",[55,131,132,133,136,137,140],{},"IR 開示がレンジ表記（",[19,134,135],{},">+70%"," / ",[19,138,139],{},"mid-single digit","）だったので、勝手に中央値を当てず原文記号で見せる方針",[55,142,143,136,146,136,149,136,152,155],{},[19,144,145],{},"GroupedBarChart",[19,147,148],{},"StackedBarChart",[19,150,151],{},"QuarterlyEpsChart",[19,153,154],{},"SegmentLineChart"," のトーン統一",[15,157,158,69,160],{},[48,159,68],{},[71,161,163],{"href":162},"/memory-makers-nanya-dram-charts","memory-makers に Nanya を追加、DRAM チャートのトーンを統一",[76,165],{},[38,167,169],{"id":168},"_4-earnings-dynamics-に-ntm-集計バッジを追加-koyfin-取得スコープを修正","4. earnings-dynamics に NTM 集計バッジを追加 + Koyfin 取得スコープを修正",[15,171,172,175,176,179,180,183],{},[19,173,174],{},"/earnings-dynamics/MU"," のチャート上に「focusQuarter + 3先の合計予測（NTM）」のバッジを足した。決算が近づくほど数字が日次で削れていく動きを目で追えるようにする。並行して、日次 Koyfin 取り込みが MU 系に偏っていて NVDA/SNDK が止まっていた問題を直し、",[19,177,178],{},"--env-file"," で turso-replicas の ",[19,181,182],{},".env"," を直接読ませる経路に揃えた。",[15,185,186],{},[48,187,50],{},[52,189,190,193,196],{},[55,191,192],{},"NTM 合計を売上 / EPS 両方で表示",[55,194,195],{},"取得スコープを koyfin_kid 登録済み全銘柄に拡張",[55,197,198],{},"earnings-dynamics の TS データを当日まで反映",[15,200,201,69,203],{},[48,202,68],{},[71,204,206],{"href":205},"/earnings-dynamics-ntm-aggregation","earnings-dynamics に NTM 集計を表示、Koyfin 取得スコープを直す",[76,208],{},[38,210,212],{"id":211},"_5-デプロイ後の-blog-が再び一瞬で空になるpayload-null-再発","5. デプロイ後の /blog が再び一瞬で空になる（payload null 再発）",[15,214,215,216,219,220,223],{},"朝、",[19,217,218],{},"https://log.eurekapu.com/blog/"," を開くと記事一覧が一瞬だけ映って空っぽになった。2026-06-04 と同じ症状。",[19,221,222],{},".claude/rules/nuxt-content-payload-null.md"," の対策ルールがあるはずなのに、なぜ再び踏み抜いたかを掘った。",[15,225,226],{},[48,227,50],{},[52,229,230,233,239],{},[55,231,232],{},"SSR と CSR を別々に観察して payload が null に化けている層を特定",[55,234,235,238],{},[19,236,237],{},"useBlogArticles.ts"," で plain POJO 詰め替えが効いていなかった経路を直す",[55,240,241],{},"「対策ルールが守られない構造」をメタ反省",[15,243,244,69,246],{},[48,245,68],{},[71,247,249],{"href":248},"/blog-payload-null-rerun","/blog の payload null 化が再発した",[76,251],{},[38,253,255],{"id":254},"_6-portfolio-最高値通知のブレを直す","6. portfolio 最高値通知のブレを直す",[15,257,258,259,262,263,266,267,270],{},"LINE に届く最高値通知の数字が、日によってブレる。過去通知を見返してバグだとわかったので、Stooq の ",[19,260,261],{},"priceDate"," が前営業日に固定される性質と、同日再実行時の「常に上書き」が組み合わさって履歴が安値で塗り潰されていた点を直した。",[19,264,265],{},"decideHistoryUpsertAction"," を純粋関数に切り出し、",[19,268,269],{},"skip-lower"," 分岐を入れた。",[15,272,273],{},[48,274,50],{},[52,276,277,280],{},[55,278,279],{},"純粋関数化 + Vitest 31 件通過",[55,281,282,285],{},[19,283,284],{},"peakByPersonUpTo"," の当日除外も解消",[15,287,288,69,290],{},[48,289,68],{},[71,291,293],{"href":292},"/portfolio-highest-value-bug","楽天証券ポートフォリオ最高値通知のブレを直す",[76,295],{},[38,297,299],{"id":298},"_7-make-diary-に自動コミットと一時ファイル掃除を組み込み","7. /make-diary に自動コミットと一時ファイル掃除を組み込み",[15,301,302,303,136,306,309],{},"毎朝の日記生成のあと、生成物を手で ",[19,304,305],{},"git add",[19,307,308],{},"git commit"," していた手間を消した。スクショやログの一時ファイルも、次回実行までに掃除する。",[15,311,312],{},[48,313,50],{},[52,315,316,319,331],{},[55,317,318],{},"Step 13（コミット）と Step 14（掃除）をワークフロー末尾に追加",[55,320,321,323,324,136,327,330],{},[19,322,305],{}," はファイル名明示のみ。",[19,325,326],{},"git add -A",[19,328,329],{},"git add ."," 禁止",[55,332,333],{},"スクショ削除も glob 禁止（正規 PNG が同居するため）",[15,335,336,69,338],{},[48,337,68],{},[71,339,341],{"href":340},"/make-diary-auto-commit-cleanup","/make-diary に自動コミットと掃除を組み込む",[76,343],{},[38,345,347],{"id":346},"_8-kindle-for-pc-からの一括キャプチャアプリ-git-事故-apiキー漏洩","8. Kindle for PC からの一括キャプチャアプリ + .git 事故 + APIキー漏洩",[15,349,350,351,353,354,357],{},"Kindle for PC のデスクトップアプリから本文 DOM を直接抜く試みは、Electron の中に手が届かず諦めた。OCR 路線に確定し、矢印キー送信で自動ページ送りを実装（1.5 秒→1 秒）。途中で ",[19,352,21],{}," を作ってしまい、Git にホーム配下の 1 万件が追跡対象になる事故。",[19,355,356],{},"mv .git .git.bak"," で抜けたあと、OpenAI APIキーが LINE 経由で外に出た可能性に気付いてリボーク。",[15,359,360],{},[48,361,50],{},[52,363,364,367,370,376],{},[55,365,366],{},"DOM 抽出は不可と確定、OCR 路線で固める",[55,368,369],{},"矢印キー自動送信 + 書籍切り替えは人間が担当する役割分担",[55,371,372,375],{},[19,373,374],{},".git"," 事故をリネームで脱出",[55,377,378],{},"OpenAI APIキーをリボーク",[15,380,381,69,383],{},[48,382,68],{},[71,384,386],{"href":385},"/kindle-pc-capture-app","Kindle for PC からの一括キャプチャアプリと、その途中の事故",[76,388],{},[24,390,391],{"id":391},"今日の試行錯誤",[393,394,395,417],"table",{},[396,397,398],"thead",{},[399,400,401,405,408,411,414],"tr",{},[402,403,404],"th",{},"#",[402,406,407],{},"テーマ",[402,409,410],{},"試したこと",[402,412,413],{},"結果",[402,415,416],{},"気づき",[418,419,420,441,463,480,497,521,541,560],"tbody",{},[399,421,422,426,429,432,435],{},[423,424,425],"td",{},"1",[423,427,428],{},"Nanya ASP/Bit の数値表現",[423,430,431],{},"中央値で勝手に数値化してチャート化",[423,433,434],{},"却下",[423,436,437,438,440],{},"IR レンジ表記は原文記号 (",[19,439,135],{},") で見せる",[399,442,443,446,449,454,460],{},[423,444,445],{},"2",[423,447,448],{},"Nanya チャートの実装場所",[423,450,451,453],{},[19,452,154],{}," を改造して兼用",[423,455,456,457,459],{},"副作用大、専用 ",[19,458,128],{}," に切り出し",[423,461,462],{},"既存チャートを壊さない判断が必要",[399,464,465,468,471,474,477],{},[423,466,467],{},"3",[423,469,470],{},"Kindle for PC の本文 DOM 抽出",[423,472,473],{},"UIA で Electron に内部アクセス",[423,475,476],{},"不可（Hermes bytecode で読めない）",[423,478,479],{},"OCR 路線に確定",[399,481,482,485,488,491,494],{},[423,483,484],{},"4",[423,486,487],{},"キャプチャ間隔",[423,489,490],{},"1.5 秒 → 1 秒に短縮",[423,492,493],{},"OK",[423,495,496],{},"短すぎるとページ送り取りこぼし、1 秒で安定",[399,498,499,502,507,513,516],{},[423,500,501],{},"5",[423,503,504,506],{},[19,505,374],{}," がホーム配下に発生",[423,508,509,512],{},[19,510,511],{},"rm -rf .git"," (PowerShell)",[423,514,515],{},"パラメータエラー",[423,517,518,520],{},[19,519,356],{}," で脱出",[399,522,523,526,529,532,535],{},[423,524,525],{},"6",[423,527,528],{},"Koyfin 取得が MU 以外で動かない",[423,530,531],{},"スクリプトの対象引数を調査",[423,533,534],{},"デフォルトが MU 偏重だった",[423,536,537,538,540],{},"koyfin_kid 全銘柄を ",[19,539,178],{}," で読ませる",[399,542,543,546,549,552,555],{},[423,544,545],{},"7",[423,547,548],{},"blog payload null 再発",[423,550,551],{},"dist の payload を直接覗く",[423,553,554],{},"slot が null",[423,556,557,559],{},[19,558,237],{}," の詰め替えが効いていない経路を特定",[399,561,562,565,568,574,577],{},[423,563,564],{},"8",[423,566,567],{},"portfolio 最高値通知の値ブレ",[423,569,570,571,573],{},"Stooq の ",[19,572,261],{}," を追う",[423,575,576],{},"前営業日固定で同日再実行が安値上書き",[423,578,579,581],{},[19,580,269],{}," 分岐で純粋関数化",[76,583],{},[24,585,586],{"id":586},"今日の学び",[52,588,589,602,608,614,625],{},[55,590,591,594,595,597,598,601],{},[48,592,593],{},"対策ルールは「守られる構造」になっていないと再発する","。",[19,596,222],{}," を作っただけでは、",[19,599,600],{},"useAsyncData"," の戻り値の形が毎回 plain POJO に揃わない。チェックがレビュー時に必ず走る経路に落とし込む必要がある",[55,603,604,607],{},[48,605,606],{},"IR の数値レンジは原文記号で見せる","。中央値で勝手に数値化すると、情報の確からしさが嘘になる",[55,609,610,613],{},[48,611,612],{},"Electron 製アプリの内部 DOM は外から取れない","。Hermes bytecode + UIA 不透明という壁を体で覚えた",[55,615,616,594,621,624],{},[48,617,618,620],{},[19,619,374],{}," がホーム配下に居着くと、Git が 1 万件追跡しに行く",[19,622,623],{},"mv"," でリネームすれば一発で抜けられる",[55,626,627,630],{},[48,628,629],{},"API キーの漏洩はすぐ気付いてリボーク","。流出経路の特定より先に止血",[76,632],{},[24,634,635],{"id":635},"関連記事",[52,637,638,643,647,651,655,659,663,667],{},[55,639,640],{},[71,641,642],{"href":73},"Anthropic が Micron と戦略提携 — メモリ供給を直接ロックイン",[55,644,645],{},[71,646,104],{"href":103},[55,648,649],{},[71,650,163],{"href":162},[55,652,653],{},[71,654,206],{"href":205},[55,656,657],{},[71,658,249],{"href":248},[55,660,661],{},[71,662,293],{"href":292},[55,664,665],{},[71,666,341],{"href":340},[55,668,669],{},[71,670,386],{"href":385},{"title":672,"searchDepth":673,"depth":673,"links":674},"",2,[675,676,687,688,689],{"id":26,"depth":673,"text":26},{"id":36,"depth":673,"text":36,"children":677},[678,680,681,682,683,684,685,686],{"id":40,"depth":679,"text":41},3,{"id":80,"depth":679,"text":81},{"id":109,"depth":679,"text":110},{"id":168,"depth":679,"text":169},{"id":211,"depth":679,"text":212},{"id":254,"depth":679,"text":255},{"id":298,"depth":679,"text":299},{"id":346,"depth":679,"text":347},{"id":391,"depth":673,"text":391},{"id":586,"depth":673,"text":586},{"id":635,"depth":673,"text":635},"diary","Micron×Anthropic 戦略提携の記事化、半導体地政学2030の読書まとめ、/memory-makers への Nanya 追加と DRAM チャートのトーン統一、earnings-dynamics の NTM 集計表示、blog payload null 化の再発と修正、portfolio 最高値通知バグの調査、/make-diary の自動コミット拡張、Kindle for PC からの一括キャプチャアプリ実装と .git 事故・APIキー漏洩リボーク。","md",{},true,null,"/2026-06-23-diary","daily-log",false,"2026-06-23T00:00:00.000Z",{"title":5,"description":691},"2026-06/2026-06-23/diary-2026-06-23",[703,704,705,706,707,708,709,710,711,712,713],"日記","memory-makers","earnings-dynamics","Kindle","OCR","Nanya","Micron","Anthropic","blog","payload","portfolio","CtLTha7rlJQMQpLW3ICnr_e3-GF64NJ_ARQGF0gOi10",[],"https://log.eurekapu.com/og/blog/2026-06-23-diary.png?v=2026-06-23T00%3A00%3A00.000Z&title=2026%E5%B9%B46%E6%9C%8823%E6%97%A5%E3%81%AE%E9%96%8B%E7%99%BA%E6%97%A5%E8%A8%98%20-%20Micron%C3%97Anthropic%E8%A8%98%E4%BA%8B%E3%80%81Nanya%E8%BF%BD%E5%8A%A0%E3%80%81Kindle%20for%20PC%E6%92%AE%E5%BD%B1%E3%82%A2%E3%83%97%E3%83%AA%E3%80%81blog%20payload%20null%E5%86%8D%E7%99%BA&author=Kei%20Komatsu&sig=a7310eab295500ed",1782364625347]