JavaScript/TypeScriptアプリ用オールインワンツールキット「Bun 1.0」が公開:高速JavaScriptランタイム、パッケージマネジャーなどを提供
JavaScriptおよびTypeScriptアプリケーション用オールインワンツールキット「Bun 1.0」が公開された。
JavaScriptおよびTypeScriptアプリケーション用オールインワンツールキットの正式版「Bun 1.0」が公開された。開発チームが2023年9月8日(米国時間)に公式ブログで発表した。
Bun 1.0は、単一の実行ファイルとして提供されており、単一ファイルからフルスタックアプリケーションまで、JavaScriptとTypeScriptの実行、ビルド、テスト、デバッグに使用できる。開発ワークフローをスピードアップしたり、リソースに制約がある環境でサーバレス関数のようなシンプルな本番コードを実行したりする目的での利用が想定されている。
Bunは、JavaScriptのツール群が遅く、複雑になってしまっているという認識から、JavaScriptの長所を全て維持しつつ、この問題を解消することを目指して開発された。
Bunの中核を担うBunランタイムは、サーバサイドJavaScript環境である「Node.js」の代替として設計された高速JavaScriptランタイムだ。プログラミング言語の「Zig」で作成されており、「V8」JavaScriptエンジンで動作するNode.jsとは異なり、WebKitのJavaScriptエンジンである「JavaScriptCore」で動作し、起動時間とメモリ使用量を大幅に削減する。
またBunは、パッケージマネジャー、テストランナー、バンドラも実装している。開発チームは、これらのビルトインツールは、既存のオプションよりもかなり高速で、既存のNode.jsプロジェクトでも、ほとんど変更を加えることなく使用できるとしている。
さらにBunでは、開発者が必要とする機能を満たす高度に最適化された標準ライブラリAPIが用意されている。開発チームは、「下位互換性維持のために存在するNode.js APIとは異なり、これらのBunネイティブAPIは、高速で使いやすいように設計されている」と述べている。
開発チームはBunランタイム、パッケージマネジャー、テストランナー、バンドラの特徴を次のように説明している。
Bunランタイム
Node.jsとの互換性
ほとんどのNode.jsアプリケーションやnpmパッケージがBunで動作する。
スピード
BunはNode.jsより最大4倍高速に起動する。。この差は、TypeScriptファイル(Node.jsで実行する前にトランスパイルが必要)を実行する際に、より大きくなる。
TypeScriptとJSXのサポート
Bunランタイムには、JavaScriptトランスパイラが組み込まれている。これにより、JavaScript、TypeScript、さらにはJSX/TSXファイルを、依存関係なしで実行できる。
ESMとCommonJSの互換性
Node.jsはESMのサポートに時間がかかったが、エコシステムではまだCommonJSも広く使われている。Bunは、CommonJSとESMのモジュールシステムを常にサポートしている。
Web API
Bunは、fetch、Request、Response、WebSocket、ReadableStreamなど、ブラウザで利用可能なWeb標準APIをビルトインでサポートしている。
ホットリロード
Bunを--hot付きで実行すると、ファイルの変更時にアプリケーションをリロードするホットリロードを有効にできる。Bunは古いプロセスを終了させずにコードをリロードするので、HTTPやWebSocketの接続が切断されたり、状態が失われたりすることはない。
プラグイン
Bunは高度にカスタマイズできるように設計されている。
パッケージマネジャー
Bunのビルトインパッケージマネジャーは、開発ワークフローをスピードアップする。
例えば、npm、yarn、pnpmよりもインストールが格段に高速だ。グローバルモジュールキャッシュや、各OSで最速のシステムコールを使用するからだ。
スクリプトの実行に関しても、「npm run」「yarn run」「pnpm run」を「bun run」に置き換えると、コマンドを実行するたびに120〜250ミリ秒節約できる。この差は体感では大きい。
テストランナー
BunのテストランナーはJestと完全な互換性があり、スナップショットテスト、モッキング、コードカバレッジをサポートしている。TypeScriptやJSXのサポートなど、Bunランタイムの全ての利点も得られる。JestやVitestからの移行も簡単だ。
zodのテストスイートに対するベンチマークでは、BunはJestより13倍速く、Vitestより8倍速かった。
バンドラ
Bunは、JavaScriptとTypeScriptのバンドルツールであり、ブラウザやNode.js、他のプラットフォーム用のコードをバンドルするのに使用できる。
esbuildに大きなヒントを得ており、互換性のあるプラグインAPIを提供している。BunのプラグインAPIはユニバーサルであり、バンドラとランタイムの両方で動作する。
esbuildのベンチマークを使うと、Bunはesbuildより1.75倍速く、Parcel 2より150倍速く、Rollup + Terserより180倍速く、Webpackより220倍速い。
WindowsネイティブビルドではJavaScriptラインタイムのみ利用可能
Bun 1.0は、macOSとLinux用のネイティブビルドが提供されている。Windows用のネイティブビルドはまだ実験的なものであり、JavaScriptランタイムのみがサポートされている。パッケージマネジャー、テストランナー、バンドラは、現時点では無効化されている。
従来は、BunをWindowsで使用するには、Windows Subsystem for Linux(WSL)をインストールする必要があった。Windows用のBunの実験的なネイティブビルドは、Bun 1.0で初めて提供された。
開発チームは、今後数週間でWindows対応を急ピッチで改善していると述べている。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
Node.jsの最新版「Node.js v20.6.0」が公開 「Node.js 16.x」はサポート終了へ
Googleの「V8」JavaScriptエンジンで動作するサーバサイドJavaScript環境の最新版「Node.js v20.6.0」が公開された。「JavaScript」や「PHP」の需要が引き続き高い ギークスが2023年4〜6月の案件倍率を発表
ギークスは、2023年4〜6月の案件倍率をまとめた「ITフリーランス案件倍率レポート」を発表した。フルテレワークやハイブリッドワークでの参画を受け入れる企業は、ITフリーランスからの人気が高い傾向にある。Kotlinは全ての面でJavaを追い越す――プログラミング言語の人気ランキングにコミュニティーの反応は
TIOBE Softwareが発表したプログラミング言語の人気ランキング「TIOBEインデックス」の2023月9月版では、「Kotlin」がトップ20に返り咲いた。