Bun 1.4は、PlaywrightやPuppeteerで通常必要とされるRAMの約3分の1でヘッドレスなChromiumまたはWebKitを実行できる、組み込みのWebView APIを搭載しており、AI駆動のスクレイピングやブラウザ自動化のための軽量な選択肢を開発者に提供します。

Bun 1.4による追加機能

このリリースの目玉機能は Bun.WebView です。これはBunランタイムからChrome DevTools Protocolを直接公開するため、開発者は外部のnpmパッケージやドライバーバイナリをインストールすることなく、ヘッドレスブラウザを立ち上げることができます。また、このAPIはmacOS上でWebKitバックエンドも提供しており、ユーザーはワークロードに最適なエンジンを選択できます。

メモリ節約の仕組み

PlaywrightやPuppeteerを通じて起動されるフル機能のChromiumインスタンスは、たとえ控えめなページであっても、通常500MBを超える常駐メモリを消費します。一方、Bun.WebViewは「複雑なページ」でも192MB〜256MBの範囲の使用量に収まります。この削減は、ランタイムとのより緊密な統合と、一般的な自動化ツールがロードし続ける多くの重量級コンポーネントをスキップするヘッドレスモードでのブラウザ実行能力によって実現されています。

実用テスト:Claude Code向けの極小JSON API

Simon Willison氏は、Claude Code(コード生成は可能だが、クリックやJavaScriptのレンダリングはできないLLM)が、ページをスクレイピングして任意のスクリプトを実行できるようにする概念実証(PoC)を構築しました。セットアップは、以下の機能を持つ最小限のTypeScriptサーバーで構成されています:

  1. ターゲットURLとオプションのJavaScriptを含むリクエストを受信します。
  2. new WebView({ url }) をインスタンス化します。
  3. evaluate(script) を呼び出して、ページ内でコードを実行します。
  4. 結果をJSONとして返します。

サービス全体は、単純なスクレイピングタスクでよく使われる1GBのコンテナよりもはるかに小さい、余裕を持って収まるサイズのコンテナで動作します。以下のコードスニペットは、そのコアロジックを捉えたものです:

import { WebView } from "bun";

const server = Bun.serve({
  port: 3000,
  async fetch(req) {
    const url = new URL(req.url);
    if (url.pathname === "/scrape") {
      const target = url.searchParams.get("url");
      const script = url.searchParams.get("script") || "return document.title";
      const wv = new WebView({ url: target });
      const result = await wv.evaluate(script);
      return Response.json({ result });
    }
    return new Response("Not found", { status: 404 });
  },
});

Claude Codeは、/scrape?url=…&script=… をリクエストしてレンダリングされたデータを受け取ることができ、フルスタックのブラウザを導入するオーバーヘッドなしに、その機能を効果的に拡張できます。

Bun.WebViewが適しているケース

  • 低メモリ環境 – RAMが貴重なエッジやサーバーレスプラットフォームに最適です。
  • コストに敏感なパイプライン – LLMエージェントの隣で軽量なコンテナを実行することで、インフラコストを抑えられます。
  • シンプルな自動化 – タイトル抽出、スクリーンショットのキャプチャ、単一ページのフォーム送信などのタスクが、そのまま実行可能です。

また、このAPIはビジュアルテスト(スクリーンショットのキャプチャと差分比較)や、複数ステップのフォーム入力もサポートしており、重量級のフレームワークを導入することなく、必要最小限のブラウザ機能だけを求める開発者にとって多用途なツールとなります。

注意点

Bun.WebViewは追加されたばかりであるため、その機能セットはPlaywrightやPuppeteerのような成熟したエコシステムには及びません。ネットワークのインターセプト、マルチブラウザのオーケストレーション、広範なプラグインサポートなどの高度なユースケースでは、依然として従来のツールが必要になる場合があります。また、組み込みAPIは、大規模なフレームワークが同梱しているようなリッチなインスペクターUIをまだ提供していないため、デバッグはより手動で行う必要があります。

今後の注目点

コミュニティの反応が、Bun.WebViewがどれほど迅速に機能を拡張していくかを左右するでしょう。初期のアダプターは、既存の自動化スイートとの差を埋めるようなラッパー、テストユーティリティ、統合ガイドなどを公開する可能性があります。APIの利用が広がるにつれて必要となる、パフォーマンスの微調整、追加のブラウザエンジンオプション、およびセキュリティの強化について、Bunのリリースノートに注目してください。

結論: Bun 1.4のWebViewは、開発者にヘッドレスブラウジングへの軽量で低メモリな道を提供し、ワークロードが現在の機能範囲内に収まるのであれば、安価でコンテナフレンドリーなAI駆動のスクレイピングと自動化への扉を開きます。