JavaScript実行環境「Bun」の特徴や導入方法を解説

普段のお仕事に役立つ普遍的なプログラミングTIPSや、業界で注目度が高い最新情報をお届けする「編集部ピックアップ」。
今回は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
MacまたはLinuxでのBunのバージョン確認

なお、Linuxの場合でunzipパッケージが入っていない場合は、下記のコマンドでインストールしておきましょう。unzipはZIP形式のファイルを解凍するパッケージで、シェルの実行に必要です。

sudo apt install unzip

また、PATHも自動で追加されるので、以下のコマンドで設定を反映させて下さい。

source /home/username/.bashrc 

Windowsの場合

Bunは本記事執筆時点ではWindowsを正式にサポートしておらず、WSL上での使用を推奨されています。

Supported Platforms

Future Platforms

  • Windows
  • Unix-like variants such as FreeBSD, OpenBSD, etc.
  • Android and iOS
https://www.npmjs.com/package/bun?activeTab=readme#supported-platforms

しかしながら、「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のスキャフォールディングのコマンド

コマンドが実行されると、該当ディレクトリ直下にファイルが作成されます。

Bunのスキャフォールディングで作成されたファイル一覧

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サーバが起動します。

Webアプリのコンソール出力結果


続いて、ブラウザで『http://localhost:3000』にアクセスしましょう。
ブラウザ上に「Bun!」と表示されればWebサーバへのアクセスは成功です。

Webアプリのブラウザ表示結果

さいごに

今回の記事では、高速なJavaScript実行環境であるBunの概要と導入方法を紹介しました。

メシウスでは様々なWebアプリケーションフレームワークと一緒に使えるJavaScriptライブラリを提供しています。

メシウスのJavaScriptライブラリ

無償のトライアル版や、ブラウザ上で手軽に試せるデモアプリケーションも公開しているので、こちらも是非ご覧ください。

\  この記事をシェアする  /