Jake Archibald氏は最近、Webアプリケーションバンドラーを比較する詳細なベンチマークのリリースを発表した。最初のリリースでは、browserify、parcel、rollup、webpackバンドラーを6つのディメンションと61の機能テストでテストする。ベンチマークは、バンドラーを選択するための関連性のある構造化されたデータを開発者に提供することを目的としている。将来のリリースでは、機能テストの拡張と、ベンチマークに参加するバンドラーの追加の両方が必要である。
プロジェクトを支えるweb.devチームは、新しいベンチマークページ(bundlers.tooling.report)のモチベーションを次のように要約した。
web.devは、tooling.reportと呼ばれる新しいイニシアチブを開始しています。
これは、選択された一般的なビルドツール群を全体にわたってサポートする機能の概要をWeb開発者に提供するWebサイトです。このサイトを構築した目的は、次のプロジェクトに適したビルドツールを選択したり、あるツールから別のツールに移行する価値があるかどうかを判断したり、ツール構成とコードベースにベストプラクティスを取り入れる方法を見つけ出したりする助けとなることです。
[…]
[…]トレードオフを説明し、指定されたビルドツールで、どのようにベストプラクティスに従うかを文書化することを目的としています。
最初のベンチマークリリースでは、Browserify、Parcel、Rollup、Webpackの4つのバンドラーを提供できた。ベンチマークの方法論には、ユーザ中心のテスト基準を選択することが含まれる。その基準は、テスト対象のバンドラーが高速で応答性が高く、スムーズなユーザエクスペリエンスを提供する能力を評価することである。開発者の経験、学習曲線、その他の主観的な基準はベンチマークの一部ではないが、開発者は各スコアリングテストのコードを確認することで自身の感覚を得ることができる。たとえば、Splitting Modules Between Dynamic Imports基準は、評価された各バンドラーの4つのサンプルのコードとともに基準の説明にリンクしている。
最初のベンチマークリリースは、6つの次元の分析と、全ての次元を通して評価される合計61の機能テストを備えている。6つの次元は、コード分割、ハッシュ化、モジュールのインポート、JavaScript以外のリソース処理、出力モジュールの形式および変換である。
ベンチマークの実際の値とは別に、開発者は、各次元と機能テストに提供されている教訓のような説明を読むことを興味深く感じるかもしれない。バンドラーで何ができるか、あるいはサポートしないのかについて正確なビジョンを持つことで、開発者は将来の問題点を最小限に抑えることができる。リリースノートに正式に記載されれている。
私たちのチームは、ユーザに最高のWebエクスペリエンスを提供することに重点を置いています。[…]たとえば、メインスレッドスクリプトとWebワーカースクリプトが依存関係を共有している場合、スクリプトごとに2回バンドルするのではなく、依存関係を1回ダウンロードしたいでしょう。これをデフォルトでサポートするツールもあれば、デフォルトの動作を変更するために大幅なカスタマイズ作業が必要なツールもありますし、まったく不可能なツールもあります。
[…]
次回新しいプロジェクトを開始するときに、プロジェクトに最適なツールを評価して選択できるように、機能のチェックリストを作成することを望んでいました。
すべての基準がすべての開発者にとって同じように重要である場合、Rollupは、機能テストの65%に合格し、総合的なベンチマークの勝者になる。ただし、Archibald氏はTwitterで、各バンドラーにはそれぞれの長所があると説明している。
ビルドツール全体の長所:
- Parcel: HTMLファーストに移行できることは、「Web」を対象とするバンドラーにとって最適な設計です。
- Rollup: よりシンプルなAPIとデザインにより、プラグインの作成が簡単になります。ドキュメントが豊富。小さいアウトプット。
- Webpack: コミュニティプラグインは素晴らしいです。優れたCSSサポート。
Archibald氏とSurma氏は、昨年のJSConf Budapestでの講演で、Proxxアプリ用にRollupビルドツールを選択することになった経緯を説明した。Rollupは、この固有の経緯の中で、Proxxがフィーチャーフォンで実行するために必要な追加のパフォーマンスをサポートするカスタムプラグインを作成するときに最高のエクスペリエンスを提供するものであった。
Twitterの熱心な開発者の1人は、ベンチマークからのビルド速度基準の省略について次のように述べている。
このプロジェクトは素晴らしいアイデアです。おめでとうございます!ただ、バンドリング速度の比較を見逃しています。これはいくつかのツールのセールスポイントであり、バンドルツールを選択する際に考慮すべき点です。将来的に追加する予定はありますか。
Archibald氏は答えた。
最初のリリースでは、「機能する」ものと「機能しない」ものに注力しようとしました。
サイトのFAQセクションでは、方法論についてさらに説明し、他にも詳細を提供している。ベンチマークサイトは、そのコードアーティファクトとともにオープンソース化されており、GitHubで入手できる。開発者には、既存のバンドラーまたは追加のバンドラーに対して追加のテストをすることで貢献することをお勧めする。