今回はJavaScript実行環境「Bun」をご紹介します。
目次
はじめに
サーバーサイド開発でJavaScriptが利用されるようになり、Node.jsをはじめとした統合的なツールキットの重要性が高まっています。なかでも「Bun(バン)」は、高速なJavaScript実行環境(ラインタイム)を備えたツールキットです。この記事では、Bunの特徴や導入方法を紹介していきます。
Bunとは
Bunは、JavaScriptやTypeScriptのアプリケーション開発向けのサポートツールが詰め込まれた統合型のツールキットです。JavaScriptのエコシステムの中で成熟してきた、バンドラー、テストランナー、パッケージマネージャーなどの様々なサポートツールから構成されています。
Bunの設計思想は次の3つです。
- 高いパフォーマンスで動作
- Web開発を支えるAPIを提供
- 開発効率を上げるツールキットを提供
Bunは2022年7月にベータ版がリリースされ、2023年9月に正式版である「Bun 1.0」がリリースされています。
Bunの特徴
Bunは、Node.jsよりも高速な実行環境を備えたJavaScript用のツールキットです。
Node.js互換
BunはNode.jsと互換性があり、既存のJavaScriptアプリケーションから簡単に移行可能です。またNode.jsのように、package.jsonによるモジュールの依存関係の解消、npmやpnpmによるモジュールのバージョン管理が可能です。なお、Bunではモジュールやその依存関係をバイナリで管理することで読み込み速度が向上し、Node.jsよりも高いパフォーマンスを発揮します。
高速処理
Bunで採用されているJavaScriptCoreは高速なJITコンパイラです。Bunの公式サイトによると、レンダリング速度はNode.jsの約4.7倍、Denoの約2倍で、JavaScript実行環境の中では最速です。また、前述のバイナリによるパッケージ管理やバンドラーによってJavaScriptの実行パフォーマンスを向上させています。
統合ツールキット
Bunは、JavaScriptやTypeScriptのアプリケーション開発を支援する様々な機能を提供します。
- npm、pnpmなどのパッケージマネージャー
- HTTPサーバーやファイル読み書きなどの標準API
- JavaScriptモジュールをまとめるバンドラー
- .jsx、.tsxなどを実行可能なトランスパイラ
- Jest互換の高速なテストフレームワーク
開発に必要な機能に止まらず、パフォーマンス向上につながるJavaScriptエンジン、バンドラーを含みます。
他のJavaScript実行環境との違い
Bunと類似のJavaScript実行環境として、Node.jsやDenoがあります。Bunの大きな特徴はJavaScript実行速度の速さにあり、その思想の元に各機能が構成されています。
- パッケージやそれらの依存関係のバイナリ化による読み込み速度向上
- 重複パッケージを減らすグローバルキャッシュ
- パフォーマンス重視のエンジンJavaScriptCoreの採用
- バンドラーによるJavaScriptリクエスト数の削減
Bunのインストール
Bunはコマンドラインから簡単にインストールできます。インストール手順はプラットフォームによって異なります。
MacまたはLinuxの場合
MacまたはLinuxにBunをインストールするには、下記のコマンドを実行します。
curl -fsSL https://bun.sh/install | bash
Bunの公式サイトからシェルファイルがダウンロードされ、インストールが実行されます。
インストールが完了したらバージョン確認のコマンドが実行できるか確認してみましょう
bun -v
なお、Linuxの場合でunzipパッケージが入っていない場合は、下記のコマンドでインストールしておきましょう。unzipはZIP形式のファイルを解凍するパッケージで、シェルの実行に必要です。
sudo apt install unzip
また、PATHも自動で追加されるので、以下のコマンドで設定を反映させて下さい。
source /home/username/.bashrc
Windowsの場合
Bunは本記事執筆時点ではWindowsを正式にサポートしておらず、WSL上での使用を推奨されています。
Supported Platforms
- macOS, arm64 (Apple Silicon)
- macOS, x64
- macOS, x64 (without AVX2 instructions)
- Linux, arm64
- Linux, x64
- Linux, x64 (without AVX2 instructions)
- Windows (using Windows Subsystem for Linux, aka. “WSL”)
Future Platforms
https://www.npmjs.com/package/bun?activeTab=readme#supported-platforms
- Windows
- Unix-like variants such as FreeBSD, OpenBSD, etc.
- Android and iOS
しかしながら、「Bun 1.0」よりWindows用の実験的なネイティブビルドが提供されており。以下のコマンドをPowerShellのコンソールから実行することでWindows環境でも実行可能なEXEファイルをインストールできます。
powershell -c "iwr bun.sh/install.ps1 | iex"
Bunの実行方法
Bunを実行する前に、まずはアプリケーション用のディレクトリを準備します。
mkdir bun-test
cd bun-test
Bunにはアプリケーションのテンプレートファイルを作成するスキャフォールディングのコマンドが用意されています。
bun init -y
コマンドが実行されると、該当ディレクトリ直下にファイルが作成されます。
Bunの動作確認
アプリケーションの準備ができたら、デフォルトで用意された「index.ts」を実行するコマンドを入力しましょう。
bun run index.ts
コンソールに次のテキストが表示されれば成功です。
簡単なWebアプリの作成
Bunの動作確認ができたら、簡単なWebアプリケーションを作ってみましょう。
同じディレクトリ内で、Webサーバを起動する「http.ts」を新しく作成してください。
const server = Bun.serve({
port: 3000,
fetch(req) {
return new Response("Bun!");
},
});
console.log(`Listening on http://localhost:${server.port} ...`);
作成したファイルを次のコマンドで実行しましょう。
bun run http.ts
コンソールに下記のような出力結果が表示されれば成功で、ポート3000番でWebサーバが起動します。
続いて、ブラウザで『http://localhost:3000』にアクセスしましょう。
ブラウザ上に「Bun!」と表示されればWebサーバへのアクセスは成功です。
さいごに
今回の記事では、高速なJavaScript実行環境であるBunの概要と導入方法を紹介しました。
メシウスでは様々なWebアプリケーションフレームワークと一緒に使えるJavaScriptライブラリを提供しています。
無償のトライアル版や、ブラウザ上で手軽に試せるデモアプリケーションも公開しているので、こちらも是非ご覧ください。