次世代Web BandlerのFarmが熱そう
はじめに
昨今、ビルドツールは様々なものが開発され、いかに高速化するか、開発者体験を上げられるかが注目されているように思います。2024年6月にState of JSが公開され、その中でBuild Toolsはwebpackが最も使用されており、次いでViteがランキングしています。
Viteの伸びがすごいですね...🔥
ビルドツールも様々ありますが、2024年4月にFarmというWeb Bandlerのv1.0がリリースされました。
気になってドキュメントサイトを覗いてみるとなんだか良さげな雰囲気を感じたので、Farmの特長と推せるポイントをまとめてみようと思います。
やること、やらないこと
やること
- Farmの紹介
- Farmの特長とおすすめポイントの紹介
やらないこと
- Farmの導入方法や詳細について
(ドキュメントがわかりやすい)
Farmとは?
Farmは、webpackやViteと並列に位置するツールで、モダンなWeb開発環境に最適化された高速なWeb Bandlerです。Rustで書かれており、高パフォーマンスと低メモリ使用量が特長で、JavaScriptやTypeScriptなどの主要な言語に対応しており、Viteとの互換性も保たれているため導入のしやすいツールとなっています。
webpackではビルド時間に時間がかかることがストレスで、その後Viteなどのツールが出てきましたが、大規模プロジェクトになると読み込む必要のあるモジュールが数千個におよびブラウザが停止したりクラッシュする問題が生じていました。それらのストレスや問題を解決するためにFarmが作られたという背景があるようです。
Farmの特長とおすすめポイント
1. 高速なビルド速度
パフォーマンスの優位性
FarmはRustで実装されているため、他のJavaScriptベースのバンドラーに比べてビルド速度が非常に高速です。webpackやVite、Rspackなどと比べても、コールドスタート、ホットスタートなどあらゆるビルドモードと比較して高いパフォーマンスを記録しており、webpackより20倍、Viteより10倍高速だったというベンチマークテストの結果が出ています🚀
2. 低メモリ消費
リソース効率
こちらもRustで書かれているため、低メモリ消費を実現しており、大規模なプロジェクトでも効率的に動作するのが特長です。メモリ使用量が低いため、他のプロセスに影響を与えずにビルドを実行できるのは嬉しいポイントですね🙌🏻
3. モダンな言語サポート
幅広い対応言語
JavaScript、TypeScript、HTML、CSS、JSON、静的アセットなどのコンパイルをサポートしており、公式プラグインによってReact、Vue、Solid、Svelte、sass、less、postcssにも対応しています。そのため、現在プロジェクトで使用している技術スタックを気にせず導入できるのもメリットの一つになりそうです。
4. プラグインエコシステム
柔軟な拡張性
豊富なプラグインエコシステムがあり、必要に応じてカスタムプラグインを作成することができます。そのため、プロジェクトのニーズに合わせた機能を簡単に追加することができるみたいです。
RustプラグインとJavaScriptプラグインの両方がサポートされているのでRustが書けなくても大丈夫そうです🔥
また、コミュニティの活動も活発でたくさんの便利なプラグインが公開されています。
5. 開発者体験の向上
ユーザーフレンドリーなインターフェース
Farmは使いやすさに重点を置いて設計されていて、設定がシンプルで直感的なインターフェースが提供されています。ドキュメントもしっかりまとめられており、読みやすいのもありがたい。また、サンプルコードも豊富に用意されているため、初めて使用する方でも比較的すぐに使用できるのではないかと思います🙌🏻
6. ブラウザ互換性の確保
クロスブラウザ対応
Farmではモダンブラウザもレガシーブラウザも両方をサポートしているため、ブラウザ間の互換性が保たれています。そのため、ブラウザ間の違い意識せずに実装が可能という点も嬉しいポイントですね!
まとめ
上記のように、Farmは高速かつドキュメントやプラグインエコシステムも豊富なビルドツールになっています。
現時点ではとても魅力的に見えますが、Farmもまだ現時点(2024年6月)ではv1.2.4とまだまだ出たばかりのツールです。GitHub Starも3.9kと順調に伸びていますが、今後使用者が増えていくのか、Viteなど他のビルドツールに取って代わる存在となれそうかは追ってウォッチしていく必要がありそうです。
気になる存在、Farm
引き続きチェックしていこうと思います✊🏻
Discussion