はじめに
Bun のメジャーバージョンが 2023年にリリースされ、1年以上が経過しました。
タイトルの通り、そろそろ使ってみたいな、ということで入門してみます。
Bunとは?
Bun は、JavaScript/TypeScript/Node.jsプロジェクト向けのランタイムです。Node.js の置き換えとして注目されており、2023年にメジャーバージョンがリリースされました。
以前は Deno が人気でしたが、着々と勢力を伸ばし、State Of Javascript 2023 では、Deno を抜き、Node.js に次ぐ注目度となっています。
2024年の結果が楽しみですね。
特徴
- 高パフォーマンス: Zigというプログラミング言語で書かれており、JavaScriptやTypeScriptの実行速度が非常に高速
- オールインワン: パッケージマネージャー、バンドラー、トランスパイラーなどの機能を一つのツールで提供
- Node.js 互換性: 多くのNode.jsモジュールをサポート (この辺りはまだ弱い部分もあるようですが、日々対応中とのこと)
あと、アイコンがめちゃくちゃ可愛いので応援したくなりますね。
速度とオールインワンの部分が際立っていますね。
公式のベンチマークによれば、React の SSR が Node.js の4倍以上と驚異的な結果になっています。(ただし、利用状況や条件によるため、参考程度に)
ReactのSSRにおけるBunとNode.jsのパフォーマンス比較(公式ベンチマークより)
環境構築
では、早速試していきます。
前提環境
- MacOS(M2)
※ 基本自身の環境ベースで記載しますので、環境差分は適宜読み替えて下さい
手順
インストール
- 公式サイトのインストールコマンドを実行
curl -fsSL https://bun.sh/install | bash
- Terminalを再起動するか以下のコマンドを実行し、Pathを反映する
source ~/.zshrc
- 確認
bun --version # 1.1.38 のようにバージョンが出ればOK
Hello World を実行してみる
公式の QuickStart に沿って進めていきます。
- プロジェクトフォルダを作成
mkdir bun-sample && cd bun-sample
- プロジェクトの初期化
bun init # 全てデフォルトを選択
-
index.ts
を以下のように修正const server = Bun.serve({ port: 3000, fetch(req) { return new Response("Hello Bun World!"); }, }) console.log(`Listening on http://localhost:${server.port} ...`);
- サーバーを起動
bun run index.ts
- ブラウザで
http://localhost:3000
にアクセス
無事に起動しました!
最後に
まだ、Hello World!
しただけですが、Node.js
と比べてとてもお手軽な印象を受けました。
今後さらに触りながら、色々試してみたいと思います!