WinterTC

Ecma International TC55。サーバーサイド / Edge の JavaScript ランタイム間で Web Platform API の互換性を標準化する技術委員会。旧名 WinterCG (W3C Community Group, 2022年設立)。2024年12月に Ecma に移管され、正式な国際標準を発行できるようになった。2025年12月に ECMA-429 (Minimum Common Web Platform API) が採択。

経緯

時期出来事
2022年5月WinterCG を W3C Community Group として設立 (Deno + Cloudflare 主導)
2024年12月Ecma TC55 (WinterTC) として移管。W3C CG では標準を発行できないため
2025年1月10日WinterCG 正式閉鎖。全作業を WinterTC に移管
2025年12月10日ECMA-429 (Minimum Common Web API, 1st Edition) 採択

移管の本質: Community Group (議論の場) → Technical Committee (標準化組織) への昇格。TC39 (ECMAScript) と同じモデル。

ミッション

サーバー、Edge、ブラウザを問わず、JS 開発者が頼れる包括的で統一された API サーフェスを推進する。

何を標準化するか

何を標準化しないか

ECMA-429: Minimum Common Web Platform API

2025年12月に Ecma Standard として採択。ブラウザとサーバー双方に共通する最小限の API セット。

主要 API

カテゴリAPI
Fetch / ネットワークfetch(), Headers, Request, Response
URLURL, URLSearchParams, URLPattern
StreamsReadableStream, WritableStream, TransformStream + 関連コントローラ
EncodingTextEncoder, TextDecoder, TextEncoderStream, TextDecoderStream
Cryptocrypto, Crypto, CryptoKey, SubtleCrypto
DOM / EventsAbortController, AbortSignal, Event, EventTarget, CustomEvent
CompressionCompressionStream, DecompressionStream
Form / FileFormData, Blob, File
WebAssemblyWebAssembly.Module, Instance, Memory, compile(), instantiate() 等
グローバルsetTimeout, setInterval, queueMicrotask, atob, btoa, structuredClone, console
PerformancePerformance, performance

適合要件: 全 API を globalThis 上に W3C/WHATWG 定義通りに提供すること。

参加メンバー

組織役割
Deno共同議長 (Luca Casonato)。Web 標準互換性を競争優位とする
Igalia共同議長 (Andreu Botella)。ブラウザエンジン実装の専門企業
CloudflareWorkers の Web API 互換性を推進
BloombergDaniel Ehrenberg が Ecma President として移行を主導
Node.jsエコシステム代表。最大の JS ランタイム

InfoWorld の表現: 「Cloudflare, Vercel, Deno, Node.js コアチーム間の一種の平和条約」。

Edge Computing への影響

ポータビリティの実現

WinterTC 準拠のランタイムでは同一 JS コードが修正なしで動作する:

graph LR
    Code["共通コード<br/>(fetch, Streams, Crypto)"] --> CF["Cloudflare Workers"]
    Code --> Deno["Deno Deploy"]
    Code --> Node["Node.js"]
    Code --> Bun["Bun"]

実証例: Hono フレームワークが Node, Deno, Bun, Cloudflare Workers, Fastly で同一コードで動作。

ベンダーロックイン: 軽減される部分 / されない部分

軽減される軽減されない
Compute (計算)fetch(), Streams, Crypto 等の共通 API でビジネスロジックが移植可能—
Data (データ)—Cloudflare D1/R2/KV, Vercel KV, Deno KV 等は各社固有

「Write Once, Compute Anywhere」が正確な表現。完全な WORA にはデータ層の標準化が別途必要。

技術的詳細

ブラウザ API との差異

サーバーには存在しない概念への対処:

ブラウザ概念サーバーでの扱い
同一オリジンポリシー / CORS「現在のページ」がないため意味をなさない
Cookie jarサーバー側にはブラウザの cookie 管理機構がない
Referrerリクエストの referrer が存在しない
相対 URLベース URL がないため fetch("./api") の挙動がランタイム間で異なる

WinterTC はこれらを WHATWG Fetch 仕様への upstream 変更提案として対処する (フォークしない)。

Runtime Keys

各ランタイムを一意に識別する標準キー。package.json の exports フィールド等で使用:

{
  "exports": {
    "workerd": "./src/cloudflare.js",
    "deno": "./src/deno.js",
    "node": "./src/node.js",
    "default": "./src/index.js"
  }
}

Ecma Technical Report として策定中。

WinterTC と WASI の関係

観点WinterTCWASI
対象JavaScript ランタイムWebAssembly ランタイム
言語ECMAScript言語非依存 (Rust, C, Go → WASM)
API スタイルWeb Platform API (fetch, Streams)POSIX ライクなシステムインターフェース
標準化組織Ecma (TC55)W3C / Bytecode Alliance

競合ではなく補完的。JS ランタイムが WinterTC 準拠 API を提供しつつ、WASI 準拠 WASM モジュールをホスティングする構成が現実的。

進行中の作業

提案状態内容
Minimum Common API 2nd Ed継続開発2026年末の年次スナップショット
Sockets APIProposalTCP 接続。非ブラウザ環境向け
CLI APIProposalargv, 環境変数, ファイルアクセス
Runtime KeysDraft TRランタイム識別子の標準化
Test Suite開発中適合性テストスイート

課題

課題詳細
データ層の不在Compute のポータビリティは改善されるがストレージは標準化スコープ外
テストスイート未整備適合性は非強制。微妙な挙動差異の検出・是正が困難
Bun の不参加WinterTC に正式参加しておらず準拠姿勢が不透明
サーバー固有 API の遅れSockets API, CLI API はまだ Proposal 段階
相対 URL 等の差異fetch() の挙動差異が WHATWG への upstream 依存で解決が遅い

押さえどころ(カード化候補)

関連

Graph