【エスダブリューシー】

SWC とは?

最終更新:
💡 Rustの力で爆速変換!Babelの10倍速いコンパイラ
📌 このページのポイント
Babel vs SWC コンパイル速度比較 Babel (JavaScript製) ████████████████ 10.2秒 SWC (Rust製) 0.5秒 約20倍高速! ※ 大規模プロジェクトでのトランスパイル時間(参考値) JS Rust Rustのネイティブ実行とマルチスレッドにより大幅な高速化を実現
Babel vs SWCの速度比較イメージ
ひよこ ひよこ
SWCってBabelの代わりになるの?
ペンギン先生 ペンギン先生
そうだよ!BabelはJavaScriptで書かれていて柔軟だけど遅いのが弱点だった。SWCはRustで書き直すことで同じ変換処理を10倍以上速くこなせるようになったんだ
ひよこ ひよこ
なんでRustだと速くなるの?
ペンギン先生 ペンギン先生
Rustメモリ管理を効率的に行えるシステム言語で、JavaScriptのようなガベージコレクションオーバーヘッドがないんだ。さらにマルチスレッド処理も得意だから、大量のファイルを並列で変換できるよ
ひよこ ひよこ
Next.jsでも使われてるんだよね?
ペンギン先生 ペンギン先生
Next.js 12からデフォルトコンパイラがBabelからSWCに切り替わったよ。これによってビルド時間が最大5倍速くなったケースもあるんだ。開発者は特に設定を変えなくても恩恵を受けられるよ
ひよこ ひよこ
Babelのプラグインはそのまま使えるの?
ペンギン先生 ペンギン先生
残念ながらBabelプラグインをそのまま使うことはできないんだ。ただ、よく使われるプラグインの機能はSWCに組み込まれているし、SWC独自のプラグインシステム(Wasmベース)も開発が進んでいるよ
ひよこ ひよこ
SWC以外にもRust製のツールって増えてるの?
ペンギン先生 ペンギン先生
めちゃくちゃ増えているよ!esbuild(Go製だけど同じ高速化の流れ)、TurbopackBiome、Oxcなど、フロントエンドツールチェーンの「Rust化」が一大トレンドになっているんだ。JavaScriptエコシステムが成熟して、パフォーマンスが次の差別化ポイントになった結果だね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「SWC」って出てきたら「Rustで作られた爆速のJavaScript/TypeScriptコンパイラ」と思えればだいたいOK!
📖 おまけ:英語の意味
「Speedy Web Compiler」 = 高速ウェブコンパイラ
💬 名前の通り「速さ」を最重要視して作られたコンパイラだよ。最初はSWCという名前だけだったけど、後からSpeedy Web Compilerの略だと公式に定義されたんだ
← 用語集にもどる