Rust製の高速なwebpack互換バンドラ「Rspack」登場。現時点で5倍から10倍の性能向上
TikTokの開発元で知られるByteDanceのWebインフラチームは、Rust製の高速なwebpack互換バンドラ「Rspack」(発音はɑrespæk、アールエスパックもしくはアールエスペックのように聞こえます)をオープンソースで公開しました。
アイコンは雷光のように素早いカニで、コンパイルの高速性を表しているとのことです。
Hello world! We are from ByteDance. https://t.co/8d7t2qga7o
— Rspack (@rspack_dev) March 10, 2023
バンドラとは、複数のJavaScriptやTypeScriptの依存関係などを解決し、コードやフォント、画像などのリソースなどをまとめるバンドルツール(あるいはモジュールバンドラやビルドツールなどとも呼ばれます)です。
多数のライブラリやコンポーネントなどを用いてチームで開発するWebアプリケーションの開発には欠かせないツールとなっています。
その代表的なツールがwebpackですが、webpackはJavaScriptで開発されNode.jsの上で実行するツールとして作られているため、複雑な処理の場合には実行時間がかかるという課題がありました。
ByteDanceにおいてもビルドにかかる時間が短くて10分、長いと30分以上になるとのことで、その解決策としてRustベースの高速なwebpack互換のRspackを開発したと説明されています。
社内プロジェクトでは5倍から10倍の改善
Rspackの開発は2022年4月から同社内でスタートし、今月(2023年3月)にオープンソースとして公開されました。
現時点でもRspackは開発の初期段階にあり、多くのwebpackの機能が未実装ではあるものの、現時点で実装されている主要な機能によって多くの事業におけるニーズに対応できていると説明しています。
実際にすでに同社内ではRspackへの移行が始まっており、いくつかのプロジェクトではwebpackと比較して5倍から10倍の性能向上が達成できているとのことです。
webpackのエコシステムと互換
Rspackはwebpackのエコシステムと互換があると表現されており、隅々までwebpackとの互換を目指しているわけではないようです。現時点でコンフィグレーションファイルにおいてwebpackとスキーマ互換とされ、less-loader、sass-loader、postcss-loader、json-loader、stylus-loaderなど多くのローダーとも互換性があります。デフォルトの状態でTypeScript、JSX、CSS、CSS Modules、Sassなどに対応しています。
Rustで書かれているおかげで高速に起動し、インクリメンタルコンパイルとHot Module Replacement(HMR)など、大規模なプロジェクトでも高速なビルドを可能にする機能なども搭載しています。
今後はコミュニティのフィードバックをもとに機能追加を行っていくとともに性能改善もしていくとしています。
Rust製の高速なバンドラとしては、webpackの主要な開発者がNext.jsに入社してwebpackの後継として開発している「Turbopack」もあります。
参考:Webpackの後継となる新バンドルツール「Turbopack」が登場。Rust製のネイティブアプリケーションでWebpackの700倍高速に。Next.js Conf 2022
現時点ではまだwebpackが抜きん出た人気を得ていますが、現時点で主要な開発者が抜けてしまったwebpack後継の座を狙った競争が始まったといえそうです。
追記(2023/3/15 14:00)
Rspackチームはwebpackの高速化にも取り組むことを表明していた点を、次の記事で補足しました。
Rspack正式版が登場
2024年8月、Rspack 1.0がリリースされました。
あわせて読みたい
Rspackチームはwebpackの性能向上にも取り組み、将来はwebpackの中にRspackを組み込んでいく試みも表明
≪前の記事
Yahoo! JAPANがパスワードレスの「Passkey」に対応したと発表。複数端末でのクレデンシャル同期で機種変更や紛失時も再設定不要に