[{"data":1,"prerenderedAt":418},["ShallowReactive",2],{"content-/memory-makers-samsung-segments":3,"all-pages-for-dir":416,"og-image-/memory-makers-samsung-segments":417},{"id":4,"title":5,"body":6,"category":398,"description":399,"extension":400,"meta":401,"navigation":272,"ogImage":402,"path":403,"project_name":404,"published":405,"publishedAt":406,"seo":407,"stem":408,"tags":409,"todo":402,"unpublished":405,"updatedAt":402,"__hash__":415},"pages/2026-06/2026-06-01/memory-makers-samsung-segments.md","サムスンのセグメント別財務を8期分取得し、トップに「メモリーメーカー動向」カードを新設した開発記録",{"type":7,"value":8,"toc":391},"minimark",[9,14,23,26,29,34,37,40,44,47,50,62,65,69,76,83,90,94,97,112,119,122,133,247,253,256,259,307,314,375,382,384,387],[10,11,13],"h1",{"id":12},"サムスンのセグメント別財務を8期分取得しトップにメモリーメーカー動向カードを新設した","サムスンのセグメント別財務を8期分取得し、トップに「メモリーメーカー動向」カードを新設した",[15,16,17,18,22],"p",{},"メモリメーカーの業績を継続的に追える場所をサイトに作りたかった。第一弾はサムスン電子。直近8四半期（2Q24〜1Q26）のセグメント別の売上高・営業利益・営業利益率と、全社の粗利率を取得して、トップページに「メモリーメーカー動向」のカードを1枚足した。今後 SKハイニックスや台湾勢の月次売上を",[19,20,21],"strong",{},"データを足すだけ","で増やせる土台にするのが狙いだ。",[15,24,25],{},"1日では終わらなかった。データ取得とチャート部品まで固めて、ページ実装は翌日に持ち越した。その試行錯誤を記録しておく。",[27,28],"hr",{},[30,31,33],"h2",{"id":32},"なぜセグメント別をしかも8期分なのか","なぜセグメント別を、しかも8期分なのか",[15,35,36],{},"メモリ業界はサイクルが激しい。AIサーバー向けの高帯域メモリ（HBM）が効きはじめてから、半導体部門の利益が一気に振れる。1四半期のスナップショットでは何も読めない。底からどう戻したのかを並べて初めて意味が出る。だから時系列で8期分、しかもセグメント別に分けて取ることにした。",[15,38,39],{},"サムスンは家電・モバイルの DX、半導体の DS、ディスプレイの SDC、車載の Harman と部門が分かれている。メモリの動きを見たいなら、全社の数字を眺めていても DX の好不調に埋もれてしまう。DS だけを切り出して追える形にする必要があった。",[30,41,43],{"id":42},"agent-browser-での取得-csv検索でタイムアウトした","agent-browser での取得 — CSV検索でタイムアウトした",[15,45,46],{},"データの取り方を Claude Code に任せた。公式IRの四半期 Earnings Release（PDF）に「Results by Business Segment」というセグメント別の数表があり、ここが原典になる。ただし PDF からのテキスト抽出は、売上と営業利益が左右2カラムで交錯していて、数値がどの行に属するのか崩れた。テキスト抽出を信じると数字が1つずれる事故が起きる。",[15,48,49],{},"結局、該当ページを画像として視覚的に読み取らせるのが一番固かった。8本の PDF の「セグメント数表ページ」をそれぞれ特定して、当四半期の列から値を拾わせた。隣り合う四半期の PDF には重複する期があるので、その重複値が一致するかで整合性を確かめた。一致したので取得値は信用できる。",[15,51,52,53,57,58,61],{},"詰まりもあった。取得した値を一時 CSV にまとめる過程で、CSV を探索する処理がタイムアウトして止まった。原因と回避策は ",[54,55,56],"code",{},".claude/issues/"," に記録に残してある。揮発する一時ファイルに依存しないよう、確定値はそのままデータファイル（",[54,59,60],{},"samsungSegments.ts","）に直接書き込んで、CSV を後から参照しない構成にした。",[15,63,64],{},"WebFetch がペイウォールやボット対策で弾かれる場面も多かった。そういうときは agent-browser（自分のログイン済み Chrome を裏で操作するブラウザ自動化）にフォールバックする。これで「アクセスできませんでした」で止まらずに済む。",[30,66,68],{"id":67},"セグメント区分の変更には取れる分だけ取るで対応した","セグメント区分の変更には「取れる分だけ取る」で対応した",[15,70,71,72,75],{},"着手前から、HBM 周りでセグメント区分が変わっている可能性は読んでいた。実際、資料のフォーマットは年度で揺れていた。2Q24・3Q24 は数値が小数2桁、4Q24 以降は1桁に丸められている。区分が完全に揃わない期があるなら、無理に埋めず",[19,73,74],{},"取れる分だけ取る","方針にした。",[15,77,78,79,82],{},"具体的には、データ構造で欠損を ",[54,80,81],{},"null"," として許容した。セグメント別の粗利率はサムスンが開示していないので、粗利・粗利率は全社ベースだけにとどめた。DS 内のメモリは売上のみ開示で営業利益の内訳がないので、そこも欠損として扱う。無いものを推計でこしらえると、後で自分が嘘の数字に騙される。欠損は欠損のまま持つのが正しい。",[15,84,85,86,89],{},"数字の動き自体は鮮明だった。DS（半導体）の営業利益率は 2Q25 の 1.4%（メモリ不況の底）から、1Q26 に大きく跳ね上がった。全社の粗利率も同じ向きに戻している。AIメモリの超サイクルが効いているのだが、ここでは",[19,87,88],{},"投資判断はしない","。あくまでデータを取得して並べた、という作業の記録にとどめる。",[30,91,93],{"id":92},"インデックスのカード化-銘柄別にさらに分割する設計判断","インデックスのカード化 — 銘柄別にさらに分割する設計判断",[15,95,96],{},"可視化の入口をどう作るかで少し考えた。トップにいきなりサムスンの表を置くのは違う。今後 SKハイニックスや台湾メーカーが増えるからだ。",[15,98,99,100,103,104,107,108,111],{},"そこで2階層に分けた。トップ ",[54,101,102],{},"/"," には「メモリーメーカー動向」のカードを1枚だけ置く。その先の ",[54,105,106],{},"/memory-makers"," ハブでメーカーをカードでフラットに並べ、各メーカーの個別ページ ",[54,109,110],{},"/memory-makers/[maker]"," の中で、四半期業績・月次売上といったデータ種別ごとにセクションを分ける。",[15,113,114,115,118],{},"この分割の肝は、",[19,116,117],{},"メーカーを足す＝データファイルを1つ追加するだけ","で済むようにしたこと。データの種類（四半期セグメント／月次売上）を判別する型を切って、レジストリに登録すればハブにカードが生え、個別ページが生成される。SKハイニックスは「四半期」、台湾勢は「月次」と性質が違うが、同じ仕組みに乗せられる。",[15,120,121],{},"チャートは Chart.js を使わず SVG の自前描画にした。CDN 読み込みや初期化タイミングに依存すると、静的サイト生成（SSG）で中身が空のまま出力されることがある。SVG なら描画の実体がそのまま HTML に乗るので、SEO 面でも初回表示のちらつき面でも堅い。データも8四半期と少量なので、自前で十分だった。",[15,123,124,125,128,129,132],{},"営業利益率の計算など、数字を加工する部分は純粋関数に切り出して ",[54,126,127],{},"app/utils/memorySegments.ts"," に置いた。",[54,130,131],{},"opMargin","（営業利益÷売上、売上が0以下なら null を返す）のような小さな関数を組み合わせて、チャート用の系列やラベルを作る。副作用がないのでテストしやすく、Vitest の対象にできる。",[134,135,140],"pre",{"className":136,"code":137,"language":138,"meta":139,"style":139},"language-ts shiki shiki-themes vitesse-light vitesse-light","// 営業利益率(%) = 営業利益 / 売上 × 100。売上が 0 以下なら null。\nexport const opMargin = (op: number, sales: number): number | null =>\n  sales > 0 ? (op / sales) * 100 : null\n","ts","",[54,141,142,151,208],{"__ignoreMap":139},[143,144,147],"span",{"class":145,"line":146},"line",1,[143,148,150],{"class":149},"sxvE3","// 営業利益率(%) = 営業利益 / 売上 × 100。売上が 0 以下なら null。\n",[143,152,154,158,162,165,169,172,176,179,183,186,189,191,193,196,199,202,205],{"class":145,"line":153},2,[143,155,157],{"class":156},"sHkkW","export",[143,159,161],{"class":160},"stQ0i"," const ",[143,163,131],{"class":164},"senZ8",[143,166,168],{"class":167},"shFtX"," =",[143,170,171],{"class":167}," (",[143,173,175],{"class":174},"s4oTP","op",[143,177,178],{"class":167},": ",[143,180,182],{"class":181},"sSkh3","number",[143,184,185],{"class":167},",",[143,187,188],{"class":174}," sales",[143,190,178],{"class":167},[143,192,182],{"class":181},[143,194,195],{"class":167},"):",[143,197,198],{"class":181}," number",[143,200,201],{"class":167}," |",[143,203,204],{"class":160}," null ",[143,206,207],{"class":167},"=>\n",[143,209,211,214,217,221,224,227,229,232,235,238,241,244],{"class":145,"line":210},3,[143,212,213],{"class":174},"  sales",[143,215,216],{"class":167}," >",[143,218,220],{"class":219},"sM54T"," 0",[143,222,223],{"class":160}," ? ",[143,225,226],{"class":167},"(",[143,228,175],{"class":174},[143,230,231],{"class":160}," / ",[143,233,234],{"class":174},"sales",[143,236,237],{"class":167},")",[143,239,240],{"class":160}," * ",[143,242,243],{"class":219},"100",[143,245,246],{"class":160}," : null\n",[15,248,249,250,252],{},"欠損や赤字をそのまま ",[54,251,81],{}," や負値で扱うので、チャート側は点を飛ばしたり0基準線をまたいだりして描く。「無いものは無い」をデータからUIまで貫いた。",[30,254,255],{"id":255},"翌日への引き継ぎ",[15,257,258],{},"今日でデータ基盤とチャート部品まで固めた。実装済みは次の通り。",[260,261,264,279,287,297],"ul",{"className":262},[263],"contains-task-list",[265,266,269,274,275,278],"li",{"className":267},[268],"task-list-item",[270,271],"input",{"checked":272,"disabled":272,"type":273},true,"checkbox"," データ層 ",[54,276,277],{},"app/data/memory-makers/","（型・サムスン8四半期実データ・レジストリ・バレル）",[265,280,282,284,285],{"className":281},[268],[270,283],{"checked":272,"disabled":272,"type":273}," 純粋関数 ",[54,286,127],{},[265,288,290,292,293,296],{"className":289},[268],[270,291],{"checked":272,"disabled":272,"type":273}," Vitest ",[54,294,295],{},"tests/memorySegments.test.ts","（次回まず走らせて通す）",[265,298,300,302,303,306],{"className":299},[268],[270,301],{"checked":272,"disabled":272,"type":273}," SVG折れ線チャート ",[54,304,305],{},"app/components/memory-makers/SegmentLineChart.vue","（props駆動・副作用なし）",[15,308,309,310,313],{},"残りはページ実装と小改変だ。1日で全部やろうとして雑にページを作るより、土台を確かめてから組んだ方がいい。引き継ぎメモ（",[54,311,312],{},"memo/2026-06-01/memory-makers-handoff.md","）に、残タスクの実装方針まで詳しく書いて翌日へ回した。",[260,315,317,326,336,346,356,365],{"className":316},[263],[265,318,320,322,323],{"className":319},[268],[270,321],{"disabled":272,"type":273}," ハブページ ",[54,324,325],{},"app/pages/memory-makers/index.vue",[265,327,329,331,332,335],{"className":328},[268],[270,330],{"disabled":272,"type":273}," 個別ページ ",[54,333,334],{},"app/pages/memory-makers/[maker].vue","（未登録メーカーは404）",[265,337,339,341,342,345],{"className":338},[268],[270,340],{"disabled":272,"type":273}," トップ ",[54,343,344],{},"app/pages/index.vue"," にカード1枚追加",[265,347,349,351,352,355],{"className":348},[268],[270,350],{"disabled":272,"type":273}," パンくず ",[54,353,354],{},"app/utils/breadcrumbs.ts"," にラベル追加",[265,357,359,361,362,364],{"className":358},[268],[270,360],{"disabled":272,"type":273}," prerender seed に ",[54,363,106],{}," を追加",[265,366,368,370,371,374],{"className":367},[268],[270,369],{"disabled":272,"type":273}," 検証（",[54,372,373],{},"pnpm test:run"," → dev で3ページ目視）",[15,376,377,378,381],{},"SKハイニックスの方は別働で取得を進めたが、こちらは難所にぶつかった。メモリ専業ゆえに事実上「半導体」単一セグメントで、DRAM/NAND/HBM 別の粗利・営業利益は公式に開示されていない。さらに古い3期（2018〜2020）の確定粗利は無料サイトが軒並み直近5年止まりで届かず、監査済み財務（DART）の自動抽出を試みたが、会社選択のモーダルがヘッドレス操作を拒み続けて今回は完了できなかった。こちらも進捗を引き継ぎメモ（",[54,379,380],{},"memo/2026-06-01/sk-hynix-segment-financials-handoff.md","）に残して翌日へ持ち越した。",[27,383],{},[15,385,386],{},"メモリは数字が荒く振れる業界だから、点ではなく線で、しかも部門ごとに切って追える場所が欲しかった。今日できたのはサムスン1社分のデータと、それを継続的に並べていく器の半分。器が固まれば、あとは銘柄を足していくだけになる。明日はページを2本組んで、トップから実際にたどれる形にする。",[388,389,390],"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":139,"searchDepth":153,"depth":153,"links":392},[393,394,395,396,397],{"id":32,"depth":153,"text":33},{"id":42,"depth":153,"text":43},{"id":67,"depth":153,"text":68},{"id":92,"depth":153,"text":93},{"id":255,"depth":153,"text":255},"dev","サムスン電子の直近8四半期のセグメント別売上・営業利益・営業利益率＋全社粗利率を公式IRから取得。HBM起因のセグメント区分変更には取れる分だけ取る方針で対応し、トップにメモリーメーカー動向のハブカードを追加してSKハイニックスや台湾勢を後から足せる土台を作った作業ログ。","md",{},null,"/memory-makers-samsung-segments","financial-data",false,"2026-06-01T00:00:00.000Z",{"title":5,"description":399},"2026-06/2026-06-01/memory-makers-samsung-segments",[410,411,412,413,414],"半導体","メモリ","財務データ","agent-browser","データ可視化","g4wHnD32I0k5PtSVRGbh4gDc3xabze62-7mHnqRYmrg",[],"https://log.eurekapu.com/og/blog/memory-makers-samsung-segments.png?v=2026-06-01T00%3A00%3A00.000Z&title=%E3%82%B5%E3%83%A0%E3%82%B9%E3%83%B3%E3%81%AE%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E5%88%A5%E8%B2%A1%E5%8B%99%E3%82%928%E6%9C%9F%E5%88%86%E5%8F%96%E5%BE%97%E3%81%97%E3%80%81%E3%83%88%E3%83%83%E3%83%97%E3%81%AB%E3%80%8C%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%BC%E3%83%A1%E3%83%BC%E3%82%AB%E3%83%BC%E5%8B%95%E5%90%91%E3%80%8D%E3%82%AB%E3%83%BC%E3%83%89%E3%82%92%E6%96%B0%E8%A8%AD%E3%81%97%E3%81%9F%E9%96%8B%E7%99%BA%E8%A8%98%E9%8C%B2&author=Kei%20Komatsu&sig=cc22768d8840e0d2",1782528847288]