8月17日、海外のエンジニア向けメディアInfoQが「es-toolkit, a Modern Lodash Alternative」と題した記事を公開した。
この記事では、JavaScriptのモダンなユーティリティライブラリであるes-toolkitについて詳しく紹介されている。es-toolkitは、Lodashに代わるライブラリとして注目されている。
![](https://res.cloudinary.com/techfeed/image/upload/v1724016570/entries/loxuf0jxbhbdqp458mlj.png)
es-toolkitの特徴
es-toolkitは新たに登場したJavaScriptライブラリであり、LodashやUnderscore.jsの直接的な競合であり、以下のような特徴を持つ。
- es-toolkitは、 debounce、delay、chunk、sum、pickなど、日常的に使用するユーティリティ関数を提供する
- es-toolkitは、最新の JavaScript 環境で2~3倍のパフォーマンスを実現する
- es-toolkitは、デフォルトでツリーシェイキングをサポートし、他のライブラリと比較してJavaScript コードを最大 97% 削減する
- es-toolkitには、TypeScriptサポートが組み込まれており、単純かつ堅牢な型定義が行われている。また、 isNotNilなどの便利な型ガードも提供されている
バンドルサイズの比較
Lodashとのバンドルサイズの比較においては、最大で97%のサイズ削減を実現している。
es-toolkit@0.0.1 | lodash-es@4.17.21 | 差分 | |
---|---|---|---|
sample | 88バイト | 2000バイト | -95.6% |
difference | 91バイト | 3190バイト | -97.2% |
sum | 152バイト | 413バイト | -63.2% |
debounce | 144バイト | 1400バイト | -89.7% |
throttle | 110バイト | 1460バイト | -92.5% |
pick | 657バイト | 3860バイト | -83.0% |
zip | 797バイト | 1790バイト | -55.5% |
パフォーマンスの比較
パフォーマンスに関しては、平均で2倍、最大で11倍以上の高速化が実現されている。
(編注: 以下のテストはvitestのbench()メソッドを用いて、500ms中の呼び出し回数で比較)
es-toolkit@0.0.1 | lodash-es@4.17.21 | 差分 | |
---|---|---|---|
omit | 4,767,360回 | 403,624回 | 11.8倍 |
pick | 9,121,839回 | 2,663,072回 | 3.43倍 |
differenceWith | 9,291,897回 | 4,275,222回 | 2.17倍 |
difference | 10,436,101回 | 5,155,631回 | 2.02倍 |
intersectionWith | 8,074,722回 | 3,814,479回 | 2.12倍 |
intersection | 9,999,571回 | 4,630,316回 | 2.15倍 |
unionBy | 6,435,983回 | 3,794,899回 | 1.69倍 |
union | 5,059,209回 | 4,771,400回 | 1.06倍 |
dropRightWhile | 7,529,559回 | 5,606,439回 | 1.34倍 |
groupBy | 5,000,235回 | 5,206,286回 | 0.96倍 |
互換レイヤー
またes-toolkitは、Lodashとの互換レイヤーを提供している。
互換レイヤーの利用は簡単で、インポート先を切り替えるだけで利用可能だ(例えば'es-toolkit/array'から'chunk'をインポートする代わりに、'es-toolkit/compat'からインポートする )。ただし、互換レイヤーの使用は、サイズやパフォーマンスにわずかな影響を与える可能性がある。
es-toolkitは、Tossによって開発され、MITライセンスのもとで公開されている。
詳細はEs-Toolkit, a Modern Lodash Alternativeを参照していただきたい。