[{"data":1,"prerenderedAt":608},["ShallowReactive",2],{"content-/memory-makers-network-expansion":3,"all-pages-for-dir":606,"og-image-/memory-makers-network-expansion":607},{"id":4,"title":5,"body":6,"category":586,"description":587,"extension":588,"meta":589,"navigation":590,"path":591,"project_name":592,"published":593,"publishedAt":594,"seo":595,"stem":596,"tags":597,"todo":604,"unpublished":593,"updatedAt":604,"__hash__":605},"pages/2026-06/2026-06-04/memory-makers-network-expansion.md","/memory-makers を半導体サプライチェーン観測ページに作り変える（Foxconn月次・Nanya追加・DRAM分類マトリックス）",{"type":7,"value":8,"toc":573},"minimark",[9,22,26,29,61,86,89,96,120,127,130,133,138,145,159,344,347,351,362,380,383,387,398,405,409,427,431,442,445,467,482,486,496,499,506,509,512,560,569],[10,11,12,16,17,21],"p",{},[13,14,15],"code",{},"/memory-makers"," を「メモリーメーカー一覧」から「半導体サプライチェーン動向」に作り変えた1日の記録。Foxconn の月次売上カードを足したら、ネットワーク陣営の月次売上ページが要るとなり、最後に DRAM 分類マトリックスまで作った。",[18,19,20],"strong",{},"NVIDIA陣営 vs Broadcom陣営のスケールアウト/スケールアップ構造を月次売上で観測する","基盤になる。",[23,24,25],"h2",{"id":25},"何を作ったか",[10,27,28],{},"朝の Foxconn 1社追加から始まり、夕方には DRAM 分類マトリックスまで広がった。",[30,31,32,39,45,51],"ul",{},[33,34,35,38],"li",{},[18,36,37],{},"Foxconn 月次売上カード",": バーチャート（月次売上、億NT$）＋折れ線（前年同月比YoY%）。24ヶ月分。",[33,40,41,44],{},[18,42,43],{},"ネットワーク陣営の月次売上ページ",": Foxconn(2317) / Wistron(3231) / Quanta(2382) / Wiwynn(6669) / Accton(2345) の5社。",[33,46,47,50],{},[18,48,49],{},"Nanya Technology(2408) の追加",": 汎用DRAM専業の台湾メーカー。あわせて Winbond(2344) と PSMC(6770) も入れた。",[33,52,53,56,57,60],{},[18,54,55],{},"DRAM分類マトリックス",": ",[13,58,59],{},"/memory-makers/dram-taxonomy"," 配下に、4ファミリー（汎用/グラフィックス/モバイル/HBM）× 世代の格子図、バブル分布、ツリー、表の4種類。",[10,62,63,64,67,68,85],{},"データは既存の Turso ",[13,65,66],{},"tw-monthly-revenue.db","（FinMind 由来）にすべて揃っていたので、新規取得は不要。",[18,69,70,73,74,77,78,77,81,84],{},[13,71,72],{},"generate-tw-monthly-revenue.mjs"," で TS データを再生成 → ",[13,75,76],{},"makers.ts"," / ",[13,79,80],{},"registry.ts",[13,82,83],{},"index.ts"," の3箇所に登録するだけ","で1社追加できる構成になった。",[23,87,88],{"id":88},"なぜそうしたか",[10,90,91,92,95],{},"きっかけは光通信記事の流れで「Foxconn の月次売上を見ると NVIDIA の出荷タイミングが読める」と気づいたこと。途中で「Accton は完全に Broadcom 陣営」「NVIDIA はラック内のスケールアップ層、Broadcom はラック間のスケールアウト層、階層が違う」とファクトチェックで自分の認識が誤っていたことが判明し、",[18,93,94],{},"月次売上を陣営別に並べる意味がはっきりした","。",[30,97,98,104,110],{},[33,99,100,103],{},[18,101,102],{},"スケールアップ層（ラック内 NVLink）",": NVIDIA Spectrum-X / Quantum InfiniBand。組み立てる Foxconn / Wistron / Quanta / Wiwynn の月次が出荷の先行指標になる。",[33,105,106,109],{},[18,107,108],{},"スケールアウト層（ラック間 Ethernet）",": Broadcom Tomahawk / Jericho。スイッチを作る Accton の月次が陣営の伸びを映す。",[33,111,112,115,116,119],{},[18,113,114],{},"DRAM 層",": Samsung / SK Hynix / Micron は四半期、Nanya / Winbond / PSMC は ",[18,117,118],{},"翌月3〜9日に月次開示","。Nanya は業界最速（翌月3〜5日）で、汎用DRAM需給の先行シグナルになる。",[10,121,122,123,126],{},"NVIDIA だけ持っていれば足りる時代は終わり、",[18,124,125],{},"陣営の構造を月次で見続ける","ためのページに作り変えた。",[23,128,129],{"id":129},"どう試行錯誤したか",[10,131,132],{},"形にする過程で4回詰まって、4回直した。",[134,135,137],"h3",{"id":136},"_1-バーチャートの-max-値が大きすぎて変化が見えなかった","1. バーチャートの max 値が大きすぎて変化が見えなかった",[10,139,140,141,144],{},"最初のチャートは Accton や Wiwynn の Y軸が 1000 まで伸びていて、実値が 274 程度しかない月の棒が",[18,142,143],{},"ほんの少ししか立たない","。月次の変化が目で追えなかった。",[10,146,147,150,151,154,155,158],{},[13,148,149],{},"monthlyRevenue.ts"," の ",[13,152,153],{},"revenueAxisTop"," を「",[18,156,157],{},"実値の最大 × 1.15 を nice 値に丸める","」純粋関数に書き直した。",[160,161,166],"pre",{"className":162,"code":163,"language":164,"meta":165,"style":165},"language-typescript shiki shiki-themes vitesse-light vitesse-light","// 純粋関数で Y 軸上限を計算\nexport const calcRevenueAxisTop = (max: number): number => {\n  const padded = max * 1.15\n  const order = Math.pow(10, Math.floor(Math.log10(padded)))\n  return Math.ceil(padded / (order / 2)) * (order / 2)\n}\n","typescript","",[13,167,168,177,221,242,294,338],{"__ignoreMap":165},[169,170,173],"span",{"class":171,"line":172},"line",1,[169,174,176],{"class":175},"sxvE3","// 純粋関数で Y 軸上限を計算\n",[169,178,180,184,188,192,196,199,203,205,209,212,215,218],{"class":171,"line":179},2,[169,181,183],{"class":182},"sHkkW","export",[169,185,187],{"class":186},"stQ0i"," const ",[169,189,191],{"class":190},"senZ8","calcRevenueAxisTop",[169,193,195],{"class":194},"shFtX"," =",[169,197,198],{"class":194}," (",[169,200,202],{"class":201},"s4oTP","max",[169,204,56],{"class":194},[169,206,208],{"class":207},"sSkh3","number",[169,210,211],{"class":194},"):",[169,213,214],{"class":207}," number",[169,216,217],{"class":194}," =>",[169,219,220],{"class":194}," {\n",[169,222,224,227,230,232,235,238],{"class":171,"line":223},3,[169,225,226],{"class":186},"  const ",[169,228,229],{"class":201},"padded",[169,231,195],{"class":194},[169,233,234],{"class":201}," max",[169,236,237],{"class":186}," * ",[169,239,241],{"class":240},"sM54T","1.15\n",[169,243,245,247,250,252,255,258,261,264,267,270,272,274,277,279,282,284,287,289,291],{"class":171,"line":244},4,[169,246,226],{"class":186},[169,248,249],{"class":201},"order",[169,251,195],{"class":194},[169,253,254],{"class":201}," Math",[169,256,257],{"class":194},".",[169,259,260],{"class":190},"pow",[169,262,263],{"class":194},"(",[169,265,266],{"class":240},"10",[169,268,269],{"class":194},",",[169,271,254],{"class":201},[169,273,257],{"class":194},[169,275,276],{"class":190},"floor",[169,278,263],{"class":194},[169,280,281],{"class":201},"Math",[169,283,257],{"class":194},[169,285,286],{"class":190},"log10",[169,288,263],{"class":194},[169,290,229],{"class":201},[169,292,293],{"class":194},")))\n",[169,295,297,300,302,304,307,309,311,313,315,317,319,322,325,327,329,331,333,335],{"class":171,"line":296},5,[169,298,299],{"class":182},"  return",[169,301,254],{"class":201},[169,303,257],{"class":194},[169,305,306],{"class":190},"ceil",[169,308,263],{"class":194},[169,310,229],{"class":201},[169,312,77],{"class":186},[169,314,263],{"class":194},[169,316,249],{"class":201},[169,318,77],{"class":186},[169,320,321],{"class":240},"2",[169,323,324],{"class":194},"))",[169,326,237],{"class":186},[169,328,263],{"class":194},[169,330,249],{"class":201},[169,332,77],{"class":186},[169,334,321],{"class":240},[169,336,337],{"class":194},")\n",[169,339,341],{"class":171,"line":340},6,[169,342,343],{"class":194},"}\n",[10,345,346],{},"これで Accton なら Y軸が 1000 → 400 まで詰まり、月次の凹凸が読めるようになった。",[134,348,350],{"id":349},"_2-マゼンタの折れ線が背景と重なって数字が読めなかった","2. マゼンタの折れ線が背景と重なって数字が読めなかった",[10,352,353,354,357,358,361],{},"YoY折れ線をアクセントカラーのマゼンタ（",[13,355,356],{},"#d6336c"," 系）で描いていたが、バーチャートと重なる部分で数字ラベルが滲んで読めない。",[18,359,360],{},"SVGダイアグラムスキルのグレー8段階","に合わせて配色を統一した。",[30,363,364,371,377],{},[33,365,366,367,370],{},"バー: 薄いグレー（",[13,368,369],{},"gray-300"," 系）",[33,372,373,374,370],{},"YoY折れ線: 濃いグレー（",[13,375,376],{},"gray-700",[33,378,379],{},"数字ラベル: 黒",[10,381,382],{},"色情報を減らしたら、形状の違いだけで意味が伝わるようになった。",[134,384,386],{"id":385},"_3-それでも重なって見づらかった-チャートを上下に分割した","3. それでも重なって見づらかった → チャートを上下に分割した",[10,388,389,390,393,394,397],{},"濃淡を整えても、棒とラインを同じ SVG に重ねる以上、数字の被りは消えない。「",[18,391,392],{},"チャートを2つに分けましょう。上がバー、下が折れ線","」とユーザーから提案があって、",[13,395,396],{},"MonthlyRevenueChart.vue"," を上下2段構成に書き直した。バーチャートに割ける高さも増えて、変化がはっきり見えるようになった。",[10,399,400,401,404],{},"ついでに",[18,402,403],{},"12月と1月の間に縦点線","を入れて年度境界を明示。前年同月比を眼で追うときに区切りが要る、という指摘で気づいた細部だった。",[134,406,408],{"id":407},"_4-矢印キーで隣の銘柄に移動するショートカット","4. 矢印キーで隣の銘柄に移動するショートカット",[10,410,411,412,415,416,77,419,422,423,426],{},"メーカーが7社、市場系ページが3〜4枚と増えてきたら、index に戻って次の銘柄を開くのが面倒になった。",[13,413,414],{},"MakerPagination.vue"," を作って ",[13,417,418],{},"←",[13,420,421],{},"→"," で隣のページに飛べるようにした。",[13,424,425],{},"use-memory-maker-nav"," composable がページ順を一元管理して、4ページに同じコンポーネントを差し込むだけで動く。",[23,428,430],{"id":429},"nanya-の5月分が取れなかった話","Nanya の5月分が取れなかった話",[10,432,433,434,437,438,441],{},"Nanya を追加した直後、ユーザーから「5月分発表あるらしい」と聞いて FinMind を叩いたら、",[18,435,436],{},"Foxconn(2317) の 2026-05 はまだ FinMind に入っていない","（最新 2026-04, create_time 2026-05-06）。一方 ",[18,439,440],{},"Nanya(2408) は 2026-05 が既に入っていた","（create_time 2026-06-03）。",[10,443,444],{},"FinMind は台湾各社の IR 発表から1〜数日のタイムラグで取り込んでいて、銘柄ごとに開示日が違う。",[30,446,447,454,461],{},[33,448,449,450,453],{},"Nanya(2408): 翌月",[18,451,452],{},"3〜5日","（業界最速）",[33,455,456,457,460],{},"Foxconn(2317): 翌月",[18,458,459],{},"6日","前後",[33,462,463,464],{},"Winbond(2344) / PSMC(6770): 翌月",[18,465,466],{},"8〜9日",[10,468,469,470,473,474,477,478,481],{},"このタイミングのズレを毎日キャッチアップしたいので、",[13,471,472],{},"/update-tw-monthly-revenue"," スラッシュコマンドを作って ",[13,475,476],{},"/make-diary"," の末尾ステップに組み込んだ。",[18,479,480],{},"毎朝の日記生成パイプラインの中で、変更があった銘柄だけ更新する","。5月分が揃わなかった残りの銘柄は翌日以降に持ち越し、自動で取り込まれる。",[23,483,485],{"id":484},"dram分類マトリックスの追加","DRAM分類マトリックスの追加",[10,487,488,489,492,493,495],{},"夕方に「",[18,490,491],{},"汎用DRAM、HBM、DDR が階層的に分かれる構造を1枚で俯瞰したい","」と要望が来て、",[13,494,59],{}," を新設した。",[10,497,498],{},"4ファミリー × 5世代のマトリックス、ファミリー別バブル分布、世代ツリー、規格名と用途の表の4種類を1ページに並べた。current 世代をファミリー色でハイライトし、next 世代を薄色で示すことで、「今どこにいて次に何が来るか」が一目で見える。",[10,500,501,502,505],{},"実装の最後でテストが落ちて、",[13,503,504],{},"memoryMakerNav.test.ts"," が市場ページ3件を順序固定で検証していたことに気づいた。Codex レビューで事前に指摘されていた箇所で、4件前提に書き直したら通った。",[23,507,508],{"id":508},"学び",[10,510,511],{},"形容詞でなく動詞で残す。",[30,513,514,524,534,544],{},[33,515,516,519,520,523],{},[18,517,518],{},"AIに任せても画面で違和感を拾うのは人間係",": バーチャートの max が 1000 で実値が 274 のとき、数字としては正しいが",[18,521,522],{},"目で見て凹凸が読めない","。これは Claude Code には分からない。画面を出して人間が「変化が見えない」と言うまで、コードは正しく動いているように見える。",[33,525,526,529,530,533],{},[18,527,528],{},"色情報を減らすと形状が語り出す",": マゼンタを外してグレー濃淡に揃えただけで、バーと折れ線の意味の違いが",[18,531,532],{},"形だけで","伝わるようになった。SVG ダイアグラムスキルのグレー8段階は強い。",[33,535,536,539,540,543],{},[18,537,538],{},"データ取得のタイムラグは銘柄ごとに違う",": Nanya は翌月3日、Foxconn は翌月6日と、台湾各社の IR 開示パターンを ",[18,541,542],{},"DB から自動集計","するワークフローに組み込んだ。1日の差が先行指標としての価値を決める。",[33,545,546,56,549,77,551,77,553,555,556,559],{},[18,547,548],{},"1社追加が3ファイル編集で済む構造",[13,550,76],{},[13,552,80],{},[13,554,83],{}," の3点に登録するだけで、データ生成からチャート描画、パンくず、ページネーションまで自動で繋がる。",[18,557,558],{},"追加コストを 30 分に圧縮","できたのが、Nanya → Winbond → PSMC と一気に広げられた理由。",[10,561,562,563,565,566,568],{},"明日以降、Foxconn / Wistron / Quanta / Wiwynn の 2026-05 分が FinMind に入ったら、",[13,564,472],{}," が拾って自動更新する。それを ",[13,567,476],{}," の中で毎朝確認する流れに乗せた。",[570,571,572],"style",{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .s4oTP, html code.shiki .s4oTP{--shiki-default:#B07D48;--shiki-dark:#B07D48}html pre.shiki code .sSkh3, html code.shiki .sSkh3{--shiki-default:#2E8F82;--shiki-dark:#2E8F82}html pre.shiki code .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":165,"searchDepth":179,"depth":179,"links":574},[575,576,577,583,584,585],{"id":25,"depth":179,"text":25},{"id":88,"depth":179,"text":88},{"id":129,"depth":179,"text":129,"children":578},[579,580,581,582],{"id":136,"depth":223,"text":137},{"id":349,"depth":223,"text":350},{"id":385,"depth":223,"text":386},{"id":407,"depth":223,"text":408},{"id":429,"depth":179,"text":430},{"id":484,"depth":179,"text":485},{"id":508,"depth":179,"text":508},"dev","Foxconn の月次売上カードを起点に、台湾ODM/ネットワーク陣営の月次売上ページ、Nanya Technology の追加と DRAM 分類マトリックスまで作った1日のログ。NVIDIA陣営 vs Broadcom陣営のスケールアウト/スケールアップ構造を月次で観測する基盤にする。","md",{},true,"/memory-makers-network-expansion","mdx-playground",false,"2026-06-04T00:00:00.000Z",{"title":5,"description":587},"2026-06/2026-06-04/memory-makers-network-expansion",[598,599,600,601,602,603],"memory-makers","Foxconn","Nanya","DRAM","台湾月次売上","Vue3",null,"M4i2FAjXYsU7KmJjnFFhaQmZF0kQXTgAmuwklFAmUbw",[],"https://log.eurekapu.com/og/blog/memory-makers-network-expansion.png?v=2026-06-04T00%3A00%3A00.000Z&title=%2Fmemory-makers%20%E3%82%92%E5%8D%8A%E5%B0%8E%E4%BD%93%E3%82%B5%E3%83%97%E3%83%A9%E3%82%A4%E3%83%81%E3%82%A7%E3%83%BC%E3%83%B3%E8%A6%B3%E6%B8%AC%E3%83%9A%E3%83%BC%E3%82%B8%E3%81%AB%E4%BD%9C%E3%82%8A%E5%A4%89%E3%81%88%E3%82%8B%EF%BC%88Foxconn%E6%9C%88%E6%AC%A1%E3%83%BBNanya%E8%BF%BD%E5%8A%A0%E3%83%BBDRAM%E5%88%86%E9%A1%9E%E3%83%9E%E3%83%88%E3%83%AA%E3%83%83%E3%82%AF%E3%82%B9%EF%BC%89&author=Kei%20Komatsu&sig=d292e8f1b0bd3606",1780619854249]