第84回ブログ|Bun v1.4.4 を初心者向けにやさしく解説 ─ コード整形ツール「bun fmt」が組み込まれました

Bun v1.4.4 の新機能 bun fmt をやさしく解説

2026年10月22日、JavaScriptの実行環境「Bun(バン)」の新しいバージョン v1.4.4 が公開されました。第82回でご紹介したv1.4.3から、わずか12日後の更新です。

今回の目玉は、プログラムの見た目をきれいに整える「コード整形」の機能 bun fmt が組み込まれたことです。よく使われている整形ツール「Prettier(プリティア)」と同じ結果を出しながら、Prettierの開発元自身のプロジェクトで約286倍速かったと発表されています。

前回に続き、「Bunを使ったことがない」という方にもわかるように、基本からお話しします。

この記事の内容
  1. 前回のおさらい:Bunとは?
  2. v1.4.4 の3つのポイント
  3. 目玉機能「bun fmt」をくわしく
  4. bun check がさらに速くなりました
  5. bun install が大幅に改善されました
  6. その他の改善(中級者向け)
  7. アップデートするときの注意点
  8. 実際に試してみましょう(Windows編)
  9. まとめ

前回のおさらい:Bunとは?

Bunは、JavaScriptやTypeScriptで書いたプログラムを、パソコンやサーバーの上で動かすための実行環境(ランタイム)です。同じ役割をもつNode.jsの新しい仲間で、Node.js向けのプログラムの多くがそのまま動くように作られています。

Bunの大きな特長は、開発に使う道具がbunという1つのコマンドにまとまっていることです。前回の記事では、これを「よく使う道具がひととおり入った、軽くて速い工具セット」にたとえました。

今回のv1.4.4で、この工具セットに「コード整形」という道具が新しく加わりました。


v1.4.4 の3つのポイント

v1.4.4も変更点がとても多いのですが、初めての方に押さえていただきたいのは次の3つです。

  1. コード整形ツール「bun fmt」が加わりました: Prettierと同じ整形を、Bunだけで、しかも非常に速く行えるようになりました
  2. 型チェックのbun checkが、さらに速くなりました: 大きなプロジェクトでは、v1.4.3より1.4〜7.8倍速くなっています
  3. bun installが大幅に改善されました: パッケージ管理まわりの課題133件が解決され、通信の一時的な失敗にも強くなりました

このほかにも、データベース機能の高速化、WebSocketの互換性向上、セキュリティの修正などが含まれています。順番に見ていきましょう。


目玉機能「bun fmt」をくわしく

そもそも「コード整形」とは?

プログラムは、書く人によって見た目のクセが出ます。スペースの入れ方、改行の位置、文字列を"で囲むか'で囲むか、などです。動きは同じでも、見た目がバラバラだと読みにくく、チームで作業するときに「どこを変えたのか」がわかりにくくなります。

そこで使われるのが、決まったルールで見た目を自動的にそろえてくれる「フォーマッタ」です。たとえば、次のように詰めて書いたコードがあったとします。

// 整形する前
const user={name:"Taro",age:20}
function greet(u){return "こんにちは、"+u.name+"さん"}

フォーマッタにかけると、次のように読みやすい形にそろえてくれます(Prettierの標準設定の場合のイメージです)。

// 整形した後
const user = { name: "Taro", age: 20 };
function greet(u) {
  return "こんにちは、" + u.name + "さん";
}

プログラムの動きは一切変わらず、見た目だけが整います。文章でいえば、「書いた内容はそのままに、句読点や段落を整えてくれる校正係」のような存在です。

用語メモ
フォーマッタ(コード整形ツール)
プログラムの見た目(スペース・改行・インデントなど)を、決まったルールで自動的にそろえる道具です。動きは変えません。
Prettier(プリティア)
JavaScriptの世界で広く使われているフォーマッタです。多くのプロジェクトが、Prettierの設定ファイル(.prettierrcなど)でルールを決めています。
oxfmt(オックスフォーマット)
Prettierと互換性があり、Rustという言語で書かれた高速なフォーマッタです。今回の比較相手の1つになっています。

とにかく速い

フォーマッタは、ファイルを保存するたびや、変更を記録(コミット)するたびに動かすことが多い道具です。そのため、速さがそのまま使い心地に直結します。

Bunの発表によると、Prettier自身のプロジェクト(2,616ファイル)で「整形が必要なファイルがあるか」を確かめた結果は次のとおりです。

ツールかかった時間最大メモリ使用量
bun fmt0.06秒(59.7ミリ秒)48MB
Prettier 3.9.1017.1秒459MB

17秒かかっていた作業が、まばたきする間に終わる計算です。約286倍の速さで、ほかのプロジェクト(vitest、date-fnsなど)でもPrettierより234〜425倍速かったと報告されています。

すでに高速なoxfmtと比べても、すべてのプロジェクトで速いという結果でした。

プロジェクトファイル数bun fmtoxfmt 0.74.0速さ
RSSHub7,12197.3ミリ秒298.5ミリ秒3.0倍
redocly-cli3,39762.4ミリ秒217.5ミリ秒3.4倍
vite2,53765.2ミリ秒406.7ミリ秒6.2倍
fumadocs2,45244.6ミリ秒1,395ミリ秒31倍

※viteは16コアのM4 Max搭載MacBook Pro、それ以外は8コアに固定したIntel XeonのLinuxマシンで計測された値です。数値はBun開発元の発表で、当社では計測していません。

たくさんの言語に対応

bun fmtは、JavaScriptやTypeScriptだけでなく、Web開発でよく使うファイルをまとめて整形できます。

HTMLの中に書かれた<style>や、Markdownの中のコード例など、ファイルの中に埋め込まれたコードも整形してくれます。

今のPrettierの設定がそのまま使えます

すでにPrettierを使っているプロジェクトでも、乗り換えはかんたんです。bun fmtは、Prettierの設定ファイル(.prettierrcなど)や、整形しないファイルを指定する.prettierignoreを、そのまま読み込みます。oxfmtの設定ファイルにも対応しています。

たとえばpackage.jsonの整形用スクリプトは、次のように書き換えるだけです。

"scripts": {
  "format": "bun fmt"
}

さらに、Prettierでは追加のプラグイン(拡張機能)が必要だった次のような機能も、最初から入っています。

bun fmt --doctorを実行すると、Bunが設定をどう読み取ったか、そして「もうアンインストールしてよいパッケージ」はどれかを教えてくれます。

チーム開発で便利なオプション

# プロジェクト全体を整形する
bun fmt

# 整形が必要なファイルを一覧表示するだけ(ファイルは書き換えない)
bun fmt --check

# コミットしようとしているファイルだけを整形する
bun fmt --staged

# メインのブランチから変更したファイルだけを整形する
bun fmt --changed

--checkは、整形が必要なファイルがあると「失敗」として終わります。そのため、GitHub Actionsなどの自動チェック(CI)に組み込めば、「見た目がそろっていないコードが紛れ込むこと」を防げます。

--stagedは、コミットの直前に自動で動く仕組み(Gitのフック)と組み合わせるのに向いています。これまではlint-stagedという別の道具を入れて実現するのが一般的でしたが、その必要がなくなります。

速いだけでなく、結果もPrettierとほぼ同じ

「速いけれど、Prettierと結果が変わってしまうのでは?」と心配になるかもしれません。Bunの発表によると、bun fmtはPrettierを移植したもので、Prettier自身のテスト9,731件のうち9,648件(99.1%)で、1文字も違わない同じ結果になったそうです。

残りの違いの多くはわざとそうしているものです。Prettierには、ごくまれな書き方で整形によってプログラムの意味が変わってしまうケースがあり、bun fmtではそうした場合に元の意味を守るようにしています。

知っておきたい注意点


bun check がさらに速くなりました

前回ご紹介した型チェッカーbun checkも、さっそく改良されています。大きなプロジェクトでの比較結果は次のとおりです(Linux x64、8スレッドで計測)。

プロジェクトv1.4.4v1.4.3速さ
MUI(docs)1.31秒10.28秒7.8倍
t3code(server)1.62秒4.59秒2.8倍
Supabase(studio)1.27秒2.84秒2.2倍
mikro-orm1.82秒3.30秒1.8倍
VS Code2.82秒4.09秒1.4倍

MUIでは、使うメモリも11.2GBから1.3GBへと大きく減りました。どちらのバージョンも、見つけたエラーの数は同じだったそうです。

また、たくさんのプロジェクトをまとめてチェックするbun check -bは、4,000個のプロジェクトを含む例で13.65秒から0.87秒(15.7倍)に短縮されました。

※ほかに比べた76のリポジトリのうち69件で10%以上速くなった一方、Bun自身のコードの一部(src/js)では0.11秒から0.20秒へ遅くなったことも、正直に報告されています。


bun install が大幅に改善されました

今回は、パッケージを集めてくるbun installまわりの改善がとても多く、課題(issue)133件が解決されました。寄せられていた改善提案597件のうち、464件がそのまま、40件が一部取り込まれたそうです。初めての方にも関係しそうなものを中心にご紹介します。

通信の一時的な失敗に強くなりました

パッケージのダウンロード先(レジストリ)が一瞬だけ混み合うことは、よくあります。これまでのBunも失敗したら5回までやり直していましたが、その5回がわずか5ミリ秒の間に終わってしまい、ほんの短い障害でもインストールが失敗していました。

v1.4.4では、やり直す間隔を50、100、200、400、800ミリ秒と、少しずつ広げるようになりました。電話がつながらないときに、すぐ5回連続でかけ直すのではなく、少し間をおいてかけ直すイメージです。これにより、1秒程度の障害なら乗り切れるようになっています。

打ち間違いを見逃さなくなりました

これまでは、知らないオプションを付けても黙って無視されていました。たとえば--frozen-lockfile(ロックファイルを変更しない)を打ち間違えると、エラーにならずに通常のインストールが行われてしまい、自動チェック(CI)で気づけないことがありました。

> bun install --frozen-lockfil
error: bun install has no --frozen-lockfil flag.
(訳:bun install に --frozen-lockfil というオプションはありません)

あわせて、npm・Yarn・pnpmで使うオプションも読み替えてくれるようになりました。たとえばbun add --save-dev zod(npm流の書き方)は、これまで開発用ではない依存関係として保存されていましたが、今後は正しく開発用(devDependencies)に入ります。

そのほかの主な改善


その他の改善(中級者向け)

ここからは、すでにBunをお使いの方向けに、主な改善点をかいつまんでご紹介します。

このほかにも、Node.js互換、テストランナー、Windows固有の問題など、非常に多くの不具合が修正されています。すべての変更点は、末尾の参考資料の公式リリースノートをご覧ください。


アップデートするときの注意点

v1.4.4では、いくつかの動きが、より正しい(ブラウザやNode.jsと同じ)方向に変わりました。該当する機能を使っている場合は、念のためご確認ください。

業務で使っているシステムをアップデートするときは、いきなり本番に入れるのではなく、開発環境でテストを一通り流してから切り替えるのが安心です。


実際に試してみましょう(Windows編)

最後に、Windowsのパソコンでbun fmtを試す手順をご紹介します。

1. Bunをインストール(またはアップデート)する

PowerShellを開いて、次のコマンドを実行します。

# 初めてインストールする場合
powershell -c "irm bun.sh/install.ps1|iex"

# すでにBunが入っている場合は、最新版に更新する
bun upgrade

# バージョンを確認する(1.4.4 と表示されればOK)
bun --version

※macOSやLinuxではcurl -fsSL https://bun.sh/install | bashでインストールできます。npm(npm install -g bun)やHomebrew、Scoop、Dockerイメージ(oven/bun)も用意されています。

2. 練習用のプロジェクトを作る

mkdir bun-fmt-test
cd bun-fmt-test
bun init -y

3. わざと見た目を崩して、整形してみる

index.tsを開いて、中身を先ほどの「整形する前」のコードに書き換えて保存します。そのうえで、まずは確認だけを行ってみましょう。

bun fmt --check

整形が必要なファイルとしてindex.tsが表示されるはずです。続けて、実際に整形してみます。

bun fmt

もう一度index.tsを開くと、スペースや改行が整った形に書き換わっているはずです。前回ご紹介したbun checkと組み合わせれば、「見た目をそろえる」「型の間違いを見つける」の2つを、どちらもBunだけで行えます。


まとめ

コード整形は地味に見えますが、チームで開発するうえではとても大切な「お作法」です。見た目のそろえ方を道具に任せてしまえば、レビューでは「中身」の話に集中できます。生成AIにコードを書いてもらう機会が増えた今、AIが書いたコードも人が書いたコードも、同じルールで一瞬でそろえられるのは心強いことだと私たちは考えています。

BunやTypeScriptを使った開発、既存のNode.jsプロジェクトの見直しなどでお困りのことがあれば、どうぞお気軽にご相談ください。


参考資料(2026年10月28日時点で確認)


本記事は2026年10月28日時点の公開情報に基づきます。速度・メモリ・CPU使用量・互換性の数値はBun開発元の発表によるもので、当社で計測したものではありません。導入前には公式情報と自社環境での検証をお願いします。