memory-makers

韓国 メモリ品目別輸出に DRAM モジュールと SSD を追加

韓国関税庁の tradedata.go.kr から品目別月次輸出を取り、/memory-makers/korea-chip-exports の「品目別の内訳」セクションを 5 品目構成に拡張した。新規追加分は DRAM モジュール(HSK 8473.30.4060 디램 모듈、DIMM/RDIMM/UDIMM 系の完成品)SSD(HSK 8523.51 솔리드 스테이트 비휘발성 기억장치)。期間は既存3品目(DRAM・NAND・MCP)と揃えて 2018-01〜2026-05 の 101 ヶ月。

なぜ追加したか

既存 3 品目はチップ単体(HS 8542.32 系)に揃えていた。MCP には HBM が含まれるので「HBM の出荷強度」は MCP で代理できるが、HBM が積まれていく(DDR5 RDIMM などのモジュール製品)と、QLC NAND が回って完成する SSD の動きは、別の HS 区分で見ないと取れない。

  • DRAM モジュール(HS 8473.30.4060): AI サーバの DDR5 RDIMM・MRDIMM、データセンタ向けの大容量モジュールが乗ってくる枠。最新月 2026-05 で輸出 $7.19B(YoY +318.5%)、重量基準単価 $45,568/kg。MCP(HBM 含む)$9.62B に並ぶ規模で、しかも単価ベースで急騰している。
  • SSD(HS 8523.51): QLC NAND の応用先として PC・データセンタ向け SSD が積み上がる枠。2026-05 で $3.97B(YoY +338.5%)、単価 $22,383/kg。チップ単体の NAND($1.72B)より完成品 SSD のほうが大きい。

どちらも HS 8542(IC)の外側で、MOTIE が毎月1日に発表する「半導체」輸出には含まれない。なので「韓国半導体輸出」の総額(最上段の MOTIE チャート)と二重カウントにはならず、別カテゴリの動きとして読める。

tradedata.go.kr を叩くのが地獄だった

最初は agent-browser 経由で照会していたが、CDP タイムアウト(os error 10060)が頻発した。Bot 検出ではなく単に CDP の不安定さで、長時間セッションを保てない。

Chrome 拡張機能(content script)として組み込めば、ブラウザのタブの中で fetch を直接叩くだけで済む。Cookie・JSESSIONID は credentials: 'include' で勝手に乗るし、CDP を経由しないので落ちない。

拡張機能の構成(chrome-extension-tradedata-kr/

chrome-extension-tradedata-kr/
├── manifest.json          # v3、host_permissions: tradedata.go.kr
├── content.js             # retrieveTrade.do を fetch で叩く
├── background.js          # chrome.downloads で JSON 保存
├── popup.html / popup.js  # HSK + 期間入力 UI
└── scripts/import_to_ts.mjs  # JSON → ChipItemExportPoint[] スニペット生成

参考にしたのは chrome-extension-x/bookmark-exporter.js(X GraphQL API を CSRF トークン + credentials: 'include' で叩く構造)と chrome-extension-kofyin/(Koyfin テーブル DOM 抽出 + chrome.downloads.download で Downloads サブフォルダ保存)。

関税庁 API の仕様(DevTools で 1 回叩いて確定)

通常 Chrome の DevTools で 1 回 UI 経由の照会を走らせて Network パネルから拾った:

POST https://tradedata.go.kr/cts/hmpg/retrieveTrade.do
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-Requested-With: XMLHttpRequest
isajax: true

tradeKind=ETS_MNK_1020000A       # 품목별
&priodKind=MON                    # 월별
&priodFr=202401%20                # 末尾スペース必須
&priodTo=202406%20
&statsBase=acptDd                 # 수리일基準
&ttwgTpcd=1                       # 1=Kg, 1000=톤
&showPagingLine=100
&hsSgnGrpCol=HS10_SGN             # 10桁単位(6桁なら HS6_SGN)
&hsSgnWhrCol=HS10_SGN
&hsSgn=8542321010

レスポンスは JSON で、items[] の各行に priodTitle: "2024.01"expTtwg: " 128,871"(kg・左パディング+カンマ)・expUsdAmt: " 1,407,209"(千USD)・cmtrBlncAmt(무역수지)・korePrlstNm(品目名)。先頭は priodTitle: "총계" の総計行で、これは除外する。

注意点を 3 つ:

  1. 품목별は最大 5 年制限: 月別照会で 60 ヶ月を超えると cf_alertMessage で弾かれる。2018-01〜2026-05 は 101 ヶ月なので、2 バッチに分けて叩く(2018-01〜2022-12 と 2023-01〜2026-05)。
  2. searchresult: "FAIL" でも items は来る: 「잠시 후 다시 시도해 주십시오」(しばらくしてから再試行してください)の警告メッセージが付いてくるが、items 配列にはちゃんとデータが入っている。FAIL を厳格チェックすると取りこぼすので、items の長さで判定するほうが安全。
  3. HSK の桁数選択: 10 桁で照会したい品目(既存 3 品目)と、6 桁レベルでまとめたい品目(SSD = 852351)を混在させるなら、hsSgnGrpCol をリクエストごとに切り替える。8523510000(10 桁)では 0 件、852351(6 桁・HS6_SGN)で 7 件=韓国 HSK 体系で 8523.51 配下にサブコードがある構造になっている。

content script 本体(抜粋)

const ENDPOINT = "/cts/hmpg/retrieveTrade.do";
const MAX_MONTHS_PER_BATCH = 60;

const fetchBatch = async (hs, hsGrp, fromYm, toYm) => {
  const body = new URLSearchParams({
    tradeKind: "ETS_MNK_1020000A",
    priodKind: "MON",
    priodFr: `${fromYm} `,
    priodTo: `${toYm} `,
    statsBase: "acptDd",
    ttwgTpcd: "1",
    showPagingLine: "100",
    sortColumn: "",
    sortOrder: "",
    hsSgnGrpCol: hsGrp,
    hsSgnWhrCol: hsGrp,
    hsSgn: hs,
  });
  const res = await fetch(ENDPOINT, {
    method: "POST",
    credentials: "include",
    headers: {
      "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
      "X-Requested-With": "XMLHttpRequest",
      "isajax": "true",
    },
    body: body.toString(),
  });
  return await res.json();
};

Cookie ヘッダは何も指定していないが、credentials: 'include' でブラウザの JSESSIONID がそのまま乗る。これが拡張機能を使う最大のメリットで、CSRF トークンを別取得する必要もない。

データの所感

2026-05 時点のサマリ(YoY は前年同月比):

品目HSK2026-05 輸出YoY単価 ($/kg)
DRAM8542.32.1010$11.43B+409.0%$77,531
NAND8542.32.1030$1.72B+207.0%$56,832
MCP(HBM 含む)8542.32.3000$9.62B+140.1%$83,798
DRAM モジュール8473.30.4060$7.19B+318.5%$45,568
SSD8523.51$3.97B+338.5%$22,383

DRAM モジュールの伸びが MCP に並ぶ規模になっているのが目を引く。HBM 単体(MCP)が +140% の中で、その HBM が積まれた完成モジュールが +318% で抜き、しかも単価が 2024-01 の約 $6,065/kg から 2026-05 の $45,568/kg まで 7.5 倍になっている。データセンタ向け DDR5 RDIMM の単価が完成品レベルで急騰しているのが見える。

SSD は +338% で金額の絶対水準は SK Hynix/Samsung の NAND ビジネスのうち完成品側にあたる。チップ単体の NAND($1.72B)より完成品 SSD($3.97B)が大きいのは、Solidigm 買収後のデータセンタ SSD(Solidigm/SK hynix ブランド)と Samsung の PM9D3a 系がデータセンタ向けに本格出荷されている時期に当たる。

テストの調整

tests/korea-chip-item-exports.test.ts を 5 品目構成に拡張した。

  • 「3 品目(dram/nand/mcp)が揃っている」→ 「5 品目(dram/nand/mcp/dram_module/ssd)が揃っている」
  • HSK コードの検証に 2 行追加(8473.30.4060 と 8523.51)
  • 「HS 8542 全体は品目別 3 系列の合計を全月で上回る」テストは、DRAM モジュール・SSD が HS 8542 の外側にあるため、3 系列限定で集計するように修正
  • 「3 品目合計が MOTIE 半導体輸出合計の 35〜95% に収まる」テストは旧 3 品目で残す(DRAM モジュール・SSD は MOTIE「半導체」に含まれないため、合計対象から外す)

33 tests 全部 pass。

次に伸ばせる方向

  • 8473.30 配下の他コード: 8473.30.4060 以外の記憶モジュール系コード(8473.30.4020 等)を取って分解すると、DIMM 種別ごとの動きが見えるかもしれない
  • 8523 配下: 8523.51 が SSD だが、8523.52 の SD カード等も同じ枠で叩ける
  • 国別 + 品目別: tradeKind を ETS_MNK_1020000E(품목별 + 국가별)に変えれば、輸出先別に DRAM モジュール・SSD を出せる。HBM が乗ったモジュールが米国・中国・台湾のどこに流れているかが見えるはず。これは次の取り組み

関連

  • ページ: 韓国 半導体月次輸出の推移
  • 計画書: memo/2026-06-22/chrome-extension-tradedata-kr-plan.md
  • 拡張機能リポジトリ: C:/Users/numbe/Git_repo/chrome-extension-tradedata-kr/
  • 取得済み生 JSON: memo/2026-06-22/tradedata-raw.json