LoginSignup
3
0

More than 1 year has passed since last update.

Node.jsから乗り換え?JavaScriptランタイム「Bun」触ってみた

Posted at

この記事は ハンズラボ Advent Calendar 2022 9日目の記事です。

Bunとは

JavascriptランタイムにはNode.jsやDenoがある中、最近Bunが注目を浴びている…?!ということで気になったので触ってみます。

元々Jarred Sumnerさんがほぼ個人で開発されていたようですが(すごい)、2022年8月にOven社として起業しました。

Bunとはざっくりいうと、高速でJavascript開発に必要なものが全て揃っているオールインワンなJavascriptランタイムです。

Node.jsにないもの、あります

Node.jsでは必要だったものがBunにははじめから備わっています。

  • TypeScript & JSXからJavaScriptへトランスパイル
    • tscやBabelがいらない
  • JavaScript & CSSのバンドル化
    • webpackもいらない
  • npmと互換性を持つパッケージマネージャー
    • npmと同じような感じでpackage.jsonが使える
    • npmと比べてインストールがとても速い
  • タスクランナー
    • npmと同じような感じで使える
    • npmと比べてクライアント起動がとても速い

このあたりはDenoと被る部分もありますね。

余談ですが、Denoも今後npmに対応する予定みたい。

とにかく速い

公式サイトTwitterでも速さをめちゃアピールしています。

公式より引用した、色々なツールでのパッケージインストール時間を比較した画像です。
147004342-571b6123-17a9-49a2-8bfd-dcfc5204047e.png
Linux環境の場合なんとnpmより20倍〜100倍速いらしいです。

公式のHTTPサーバーの処理比較ですが

Requests per second Runtime
~64,000 Node 16
~160,000 Bun

BunはNode.jsよりも1秒あたり約2.5倍のリクエストを処理しています。

WebSocketも速い!
Linux x64上でチャットルーム(たぶんLINEみたいなやつ)をつくった場合の公式比較です。

Messages sent per second Runtime Clients
~700,000 ( Bun.serve) Bun v0.2.1 (x64) 16
~100,000 ( ws) ノード v18.10.0 (x64) 16

ただ、こちらで検証されているように、必ずしもBunが最速ではなさそうです。

なぜBunは速いのか?というと

JavaScriptエンジンはWebKitやSafariと同じJavaScriptCoreを採用していて、ChromeやNode.jsなどで使用されているV8より少し速く起動する傾向があること、
Zigというコンパイラ言語で実装されていて、メモリに対する低レベルの制御などの実現により、高いパフォーマンスになるみたい。

実際に触ってみよう

環境構築

mac OS Monterey 12.6(Intel)にインストールします。

brew tap oven-sh/bun
brew install bun

動かしてみる

http.ts
export default {
  port: 3000,
  fetch(request: Request) {
    return new Response("Hello World");
  },
};

アプリケーションを起動します。

bun ./http.ts

http://localhost:3000/をブラウザで開くと

Untitled.png

TypeScript動いた!

Next.jsプロジェクトを作ってみる

bun create next ./app
cd app
bun dev

Untitled (1).png

なんと6秒でプロジェクトが作成できて、起動も一瞬でした。Linux環境だともっと速いのかな。

簡単なAPIを作ってみる

Express.jsのようなAPIを作りたいところでしたが、こちらを拝見して決して簡単ではなさそうだったので今回は諦めました。

おわりに

社内でNode.jsはサイクルが速すぎて置き換えたい!という話がちらほらと出ているので
それを上回るNode.jsに替わるものはないかなと思い、今回Bunを触ってみました。

Node.js or Deno or Bunのどれかを会社として導入するなら
まだBunには不安要素も多いので(ベータ版ですし)Node.jsかDenoになりそうですが、パフォーマンスの高さは飛び抜けていそうだな〜と思ったので今後の活動が楽しみです。

参考

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0