UbuntuにBun・Denoをインストールする手順【次世代JSランタイム】

開発環境

JavaScriptを書いたことがあるなら、「Node.jsのインストールが面倒」「npm installが遅い」と感じた経験があるかもしれません。Bun と Deno は、そういったNode.js時代の不満を解消するために設計された次世代のJavaScriptランタイムです。TypeScript をそのまま実行でき、インストーラー1行で使い始められます。

本記事では、Ubuntu 24.04 LTS の Docker コンテナで実際にインストールを実行し、取得したバージョン・起動時間・動作結果をそのまま掲載します。

この記事のポイント

  • Bun・Denoはどちらも curl の1行コマンドでインストールできる
  • TypeScript ファイル(.ts)をコンパイルなしで直接実行できる
  • 実測した起動時間はBunが最速(Node.js比 約6倍速)
  • Ubuntu 22.04 LTS でも 24.04 LTS でも同じ手順でインストール可能
  • 前提パッケージは curl と unzip の2つだけ

BunとDenoとは何か

BunとDenoは、どちらもJavaScript・TypeScriptを実行するためのランタイムです。Node.jsの後継を目指して独自設計されており、それぞれ特徴が異なります。

①Bun ― 速さを追求した「全部入り」ランタイム

Bun(バン)はZig言語で書かれた高速なJavaScriptランタイムです。実行エンジンにはApple製のJavaScriptCoreを採用しており、Node.jsより起動が速く、npm互換のパッケージマネージャを内蔵しています。

Bunが「全部入り」と呼ばれるのは、ランタイム・パッケージマネージャ・バンドラー・テストランナーがすべて1つのバイナリに入っているためです。Node.js + npm + webpack + Jest を別々にインストールする必要がなくなります。

②Deno ― セキュリティとシンプルさを重視

Deno(ディーノ)はNode.jsの設計上の反省点を活かして作られたランタイムで、Node.jsの生みの親Ryan Dahlが開発に携わっています。Rust製のV8エンジンを使用しており、TypeScript 6.0.3 を内蔵しているため、tsconfig.json なしで .ts ファイルをそのまま実行できます。

Denoの大きな特徴はセキュリティモデルです。ファイル・ネットワーク・環境変数へのアクセスには明示的な許可フラグ(--allow-read / --allow-net 等)が必要で、デフォルトでは何もできません。

注意

本記事のコマンドは Ubuntu 24.04 LTS(Docker公式イメージ ubuntu:24.04)で検証しています。Ubuntu 22.04 LTS でも同じ手順で動作確認済みです。

前提パッケージのインストール

BunもDenoも、インストーラーの動作に curl と unzip が必要です。まず最初にこの2つをインストールしておきます。




ubuntu@linuxlab: ~
$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
…
$ sudo apt install -y curl unzip
curl 8.5.0 (x86_64-pc-linux-gnu) …
unzip 6.0-28ubuntu4 …
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.

インストールが終わったらバージョンを確認しておきましょう。




ubuntu@linuxlab: ~
$ curl –version | head -1
curl 8.5.0 (x86_64-pc-linux-gnu) libcurl/8.5.0 OpenSSL/3.0.13
$ unzip -v | head -1
UnZip 6.00 of 20 April 2009, by Debian.

BunをUbuntuにインストールする

Bunのインストールは公式インストーラーの1行コマンドで完了します。

手順1:インストーラーを実行する




ubuntu@linuxlab: ~
$ curl -fsSL https://bun.sh/install | bash
######################################################################## 100.0%
bun was installed successfully to ~/.bun/bin/bun
Added “~/.bun/bin” to $PATH in “~/.bashrc”

To get started, run:
source ~/.bashrc
bun –help

インストーラーが自動で ~/.bun/bin を ~/.bashrc に追加してくれます。すぐにコマンドを使えるよう、次のコマンドで設定を読み込みます。

手順2:パスを反映してバージョンを確認する




ubuntu@linuxlab: ~
$ source ~/.bashrc
$ bun –version
1.3.14
$ which bun
/home/user/.bun/bin/bun

Ubuntu 24.04 LTS の Docker コンテナで実測した結果、Bun 1.3.14 が正常にインストールされました。バイナリは約88MBの単一ファイルです。

Bun 1.3.14 インストールと動作確認(実測)
Bun 1.3.14 インストールと動作確認(実測)

手順3:TypeScriptファイルを実行して動作確認

BunはTypeScriptをそのまま実行できます。試しに簡単なスクリプトを書いて動かしてみましょう。




ubuntu@linuxlab: ~
$ echo ‘console.log(“Hello from Bun! Version: ” + Bun.version)’ > hello.ts
$ bun run hello.ts
Hello from Bun! Version: 1.3.14

tsc コンパイルや ts-node のインストールなしで、.tsファイルを直接実行できます。正直、これがBunの一番ありがたいところです。

bun initでTypeScriptプロジェクトを作る

プロジェクトの雛形を素早く作るには bun init を使います。

bun init でTypeScriptプロジェクトを初期化(実測)
bun init でTypeScriptプロジェクトを初期化(実測)



ubuntu@linuxlab: ~/myproject
$ mkdir myproject && cd myproject
$ bun init -y
+ .gitignore
+ index.ts
+ tsconfig.json (for editor autocomplete)
+ README.md
$ bun add is-even
installed is-even@1.0.0
5 packages installed [607.00ms]

npmパッケージを使いたいときは bun add コマンドを使います。node_modules に展開されるため、既存のNode.jsプロジェクトをそのままBunに移行できます。

DenoをUbuntuにインストールする

Denoのインストールも公式インストーラーの1行コマンドです。

手順1:インストーラーを実行する




ubuntu@linuxlab: ~
$ curl -fsSL https://deno.land/install.sh | sh
######################################################################## 100.0%
Archive: /root/.deno/bin/deno.zip
inflating: /root/.deno/bin/deno
Deno was installed successfully to /root/.deno/bin/deno
Run ‘/root/.deno/bin/deno –help’ to get started

手順2:パスを設定してバージョンを確認する

DenoはBunと違い、~/.bashrc への PATH 追加を自動で行いません。手動で設定します。




ubuntu@linuxlab: ~
$ echo ‘export DENO_INSTALL=”$HOME/.deno”‘ >> ~/.bashrc
$ echo ‘export PATH=”$DENO_INSTALL/bin:$PATH”‘ >> ~/.bashrc
$ source ~/.bashrc
$ deno –version
deno 2.8.3 (stable, release, x86_64-unknown-linux-gnu)
v8 14.9.207.2-rusty
typescript 6.0.3

Ubuntu 24.04 LTS の Docker コンテナで実測した結果、Deno 2.8.3 が正常にインストールされました。TypeScript 6.0.3 が内蔵されているため、追加インストールなしでTypeScriptが使えます。

Deno 2.8.3 インストールと動作確認(実測)
Deno 2.8.3 インストールと動作確認(実測)

手順3:TypeScriptファイルを実行して動作確認




ubuntu@linuxlab: ~
$ echo ‘console.log(“Hello from Deno!”);’ > hello.ts
$ deno run hello.ts
Hello from Deno!

Denoのパーミッションモデルについて

Denoの大きな特徴はデフォルトでサンドボックス化されていることです。ファイルの読み書きやネットワーク通信には明示的な許可フラグが必要です。




ubuntu@linuxlab: ~
— ファイル書き込みが必要なスクリプト —
$ deno run –allow-write write_test.ts
ファイルを書き込みました

— ネットワークアクセスが必要なスクリプト —
$ deno run –allow-net fetch_test.ts
レスポンスを取得しました

— フラグなしで実行するとエラー —
$ deno run write_test.ts
error: Uncaught (in promise) PermissionDenied: write access to
“/tmp/test.txt”, run again with the –allow-write flag

最初は少し戸惑うかもしれませんが、--allow-all フラグで全許可にすることもできます。本番環境では最小権限に絞るのがおすすめです。

Bun・Deno・Node.jsの比較

実際にUbuntu 24.04 LTSのDockerコンテナで計測した起動時間と各種比較です。

起動時間比較 Node.js vs Bun vs Deno(実測)
起動時間比較 Node.js vs Bun vs Deno(実測)

起動時間の計測は /usr/bin/time -f '%e' コマンドで行い、console.log("hello") を3回実行した平均値です。Bunが最速で平均0.013秒、Node.js(apt版)が0.077秒でした。BunはNode.jsの約6倍速く起動します。

比較項目 Node.js(apt) Bun Deno
バージョン(実測) v18.19.1 1.3.14 2.8.3
インストール方法 apt install nodejs curl | bash curl | sh
TypeScript サポート 別途 ts-node が必要 ネイティブ対応 ネイティブ(6.0.3内蔵)
パッケージ管理 npm(別インストール) bun add(内蔵) deno add / URL import
起動時間(実測平均) 0.077秒 0.013秒 0.030秒
npm互換性 完全互換 ほぼ互換 deno.json で設定
セキュリティモデル なし(全アクセス) なし(全アクセス) パーミッション制
バイナリサイズ(実測) – 約88MB 約94MB

Ubuntu 22.04と24.04でのバージョン比較

公式インストーラー経由でインストールするため、Ubuntuのバージョンに関係なく最新の Bun・Deno が入ります。

Ubuntu 22.04 vs 24.04 インストール比較(実測)
Ubuntu 22.04 vs 24.04 インストール比較(実測)

ubuntu:22.04 と ubuntu:24.04 の両コンテナで実際にインストールしたところ、どちらも Bun 1.3.14 / Deno 2.8.3 が入ることを確認しました。aptでインストールするNode.jsと違い、常に最新版が入るのがポイントです。

よくあるエラーと解決策

①「command not found: bun」が出る

インストール直後に出やすいエラーです。source ~/.bashrc でパスを再読み込みするか、ターミナルを開き直してください。




ubuntu@linuxlab: ~
$ bun –version
bash: bun: command not found

— 解決策 —
$ source ~/.bashrc
$ bun –version
1.3.14

②「command not found: deno」が出る

Denoは PATH 追加を自動で行わないため、インストール後に手動で設定が必要です。




ubuntu@linuxlab: ~
$ deno –version
bash: deno: command not found

— 解決策: ~/.bashrc に追記 —
$ echo ‘export DENO_INSTALL=”$HOME/.deno”‘ >> ~/.bashrc
$ echo ‘export PATH=”$DENO_INSTALL/bin:$PATH”‘ >> ~/.bashrc
$ source ~/.bashrc
$ deno –version
deno 2.8.3 (stable, release, x86_64-unknown-linux-gnu)

③curl がない環境でインストーラーが失敗する

最小構成のUbuntu(DockerやVPS)では curl がプリインストールされていない場合があります。




ubuntu@linuxlab: ~
bash: curl: command not found

— 解決策 —
$ sudo apt update && sudo apt install -y curl unzip
curl, unzip がインストールされました

④Deno で PermissionDenied エラーが出る

注意

Deno はデフォルトでサンドボックス動作します。ファイル・ネットワーク・環境変数へのアクセスには対応するフラグが必要です: --allow-read、--allow-write、--allow-net、--allow-env。すべて許可したい場合は --allow-all(または -A)を使います。

まとめ

Ubuntu への Bun・Deno のインストール手順と実測結果をまとめます。

  • Bun のインストール: curl -fsSL https://bun.sh/install | bash → source ~/.bashrc
  • Deno のインストール: curl -fsSL https://deno.land/install.sh | sh → PATH を手動追加
  • ubuntu:24.04 で実測: Bun 1.3.14、Deno 2.8.3 が正常にインストールされました
  • 起動時間は Bun が最速(平均0.013秒)で、Node.js(0.077秒)の約6倍高速
  • どちらも TypeScript をコンパイルなしで実行できる
  • Ubuntu 22.04 LTS でも同じ手順で動作確認済み

個人の開発環境や学習目的なら両方入れておいてまず損はありません。npmパッケージを使いたい・既存プロジェクトを試したいならBun、セキュリティを意識した開発やTypeScriptネイティブ環境を重視するならDenoが向いています。

著者アイコン
著者アイコン

実際に触ってみると、BunはNode.jsの使い勝手をほぼそのままに速さだけ改善した印象です。「Node.jsで動いているコードをとりあえずBunで試す」という使い方が自然です。Denoはゼロからプロジェクトを作るときに最初から選ぶと快適です。

本格的なサーバー運用やVPS上での開発環境構築に興味が出てきたら、VPS各社の比較記事も参考にしてみてください。

コメント

タイトルとURLをコピーしました