1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

Bun のメジャーバージョンが 2023年にリリースされ、1年以上が経過しました。
タイトルの通り、そろそろ使ってみたいな、ということで入門してみます。

Bunとは?

Bun は、JavaScript/TypeScript/Node.jsプロジェクト向けのランタイムです。Node.js の置き換えとして注目されており、2023年にメジャーバージョンがリリースされました。

以前は Deno が人気でしたが、着々と勢力を伸ばし、State Of Javascript 2023 では、Deno を抜き、Node.js に次ぐ注目度となっています。
2024年の結果が楽しみですね。

image.png

特徴

  • 高パフォーマンス: Zigというプログラミング言語で書かれており、JavaScriptやTypeScriptの実行速度が非常に高速
  • オールインワン: パッケージマネージャー、バンドラー、トランスパイラーなどの機能を一つのツールで提供
  • Node.js 互換性: 多くのNode.jsモジュールをサポート (この辺りはまだ弱い部分もあるようですが、日々対応中とのこと)

あと、アイコンがめちゃくちゃ可愛いので応援したくなりますね。

速度とオールインワンの部分が際立っていますね。
公式のベンチマークによれば、React の SSR が Node.js の4倍以上と驚異的な結果になっています。(ただし、利用状況や条件によるため、参考程度に)

image.png
ReactのSSRにおけるBunとNode.jsのパフォーマンス比較(公式ベンチマークより)

環境構築

では、早速試していきます。

前提環境

  • MacOS(M2)

※ 基本自身の環境ベースで記載しますので、環境差分は適宜読み替えて下さい

手順

インストール

  1. 公式サイトのインストールコマンドを実行
    curl -fsSL https://bun.sh/install | bash
    
  2. Terminalを再起動するか以下のコマンドを実行し、Pathを反映する
    source ~/.zshrc
    
  3. 確認
    bun --version
    # 1.1.38 のようにバージョンが出ればOK
    

Hello World を実行してみる

公式の QuickStart に沿って進めていきます。

  1. プロジェクトフォルダを作成
    mkdir bun-sample && cd bun-sample
    
  2. プロジェクトの初期化
    bun init
    # 全てデフォルトを選択
    
  3. index.ts を以下のように修正
    const server = Bun.serve({
        port: 3000,
        fetch(req) {
            return new Response("Hello Bun World!");
        },
    })
    
    console.log(`Listening on http://localhost:${server.port} ...`);
    
  4. サーバーを起動
    bun run index.ts
    
  5. ブラウザで http://localhost:3000 にアクセス
    image.png

無事に起動しました!

最後に

まだ、Hello World! しただけですが、Node.js と比べてとてもお手軽な印象を受けました。

今後さらに触りながら、色々試してみたいと思います!

1
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?