Fragments of verbose memory

冗長な記憶の断片 - Web技術のメモをほぼ毎日更新

Mar 16, 2026 - 日記

Lightpanda: AIエージェント時代のヘッドレスブラウザ — Chromeの11倍速・メモリ1/9で動く

Lightpanda: AIエージェント時代のヘッドレスブラウザ — Chromeの11倍速・メモリ1/9で動く

最近、AI エージェントにWebブラウジング能力を持たせる場面が増えてきました。スクレイピング、フォーム操作、ページの検証——エージェントがブラウザを使うたびにChromeのヘッドレスモードを立ち上げるわけですが、これがまあ重い。1エージェントあたり200MB超のメモリを食うので、同時に10台も走らせるとサーバがヒーヒー言います。

Lightpanda は、まさにこの問題を解決するために一から設計されたヘッドレスブラウザです。Zig言語で書かれていて、CSSレンダリングやGPU合成を一切省略し、DOMツリーとJavaScript実行だけに特化しています。本記事ではLightpandaの特徴、導入方法、実際の使い方を紹介します。

Lightpanda とは

Lightpanda は、Web自動化・スクレイピング・AIエージェント向けに設計されたオープンソースのヘッドレスブラウザです。

従来のChromeヘッドレスは、もともとデスクトップ向けに作られたブラウザから画面表示を省略したものです。CSS計算、レイアウト、GPU合成といった「人間が見るための処理」がそのまま残っていて、自動化タスクにとっては無駄が多い。

Lightpandaは発想が逆です。自動化に必要な機能——DOMツリー構築、JavaScript 実行(V8エンジン)、ネットワーク処理——だけをZig言語でゼロから実装しています。

主な特徴:

  • V8エンジンによるJavaScript実行
  • Chrome DevTools Protocol(CDP)サーバ内蔵
  • Puppeteer・Playwright・chromedp との互換性
  • robots.txt の尊重(--obey_robots フラグ)
  • リクエストインターセプト(ブロック・変更・モック)
  • AGPL-3.0ライセンス

ベンチマーク: Chrome との比較

公式ベンチマーク(AWS EC2 m5.large上でPuppeteerから100ページをリクエスト)の結果は以下の通りです。

指標Chrome ヘッドレスLightpanda
実行時間25.2秒2.3秒
ピークメモリ207MB24MB
起動時間数秒100ms未満

実行速度で 11倍、メモリ使用量で 約1/9 という差です。

これをインフラコストに換算すると、8GBメモリのサーバで同時に走らせられるエージェント数はChromeが約15台に対して、Lightpandaは約140台。9倍以上のエージェント密度を実現できます。AIエージェントを大量に並列稼働させるユースケースでは、この差はそのままコスト削減に直結します。

インストール

npm パッケージ(推奨)

Node.js がインストールされている環境であれば、npmパッケージから導入できます。

1
npm install --save @lightpanda/browser

バイナリダウンロード

Linux(x86_64/aarch64)と macOS(aarch64/x86_64)向けのナイトリービルドが GitHub リポジトリ から入手できます。Windows は WSL2 経由で利用可能です。

基本的な使い方

Lightpanda を起動する

npm パッケージを使う場合、以下のコードでLightpandaのCDPサーバを起動します。

1
2
3
4
5
6
import { lightpanda } from '@lightpanda/browser';

const proc = await lightpanda.serve({
  host: '127.0.0.1',
  port: 9222,
});

起動は一瞬です。Chromeヘッドレスだと起動に数秒かかることがありますが、Lightpandaは100ms未満で立ち上がります。

Puppeteer で接続してスクレイピング

LightpandaはCDPサーバを内蔵しているため、Puppeteerからそのまま接続できます。既存のPuppeteerスクリプトがあれば、接続先を変えるだけで動きます。

Puppeteerをインストールしたうえで、以下のように browserWSEndpoint を指定して接続します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import puppeteer from 'puppeteer-core';

const browser = await puppeteer.connect({
  browserWSEndpoint: 'ws://127.0.0.1:9222',
});

const page = await browser.newPage();
await page.goto('https://news.ycombinator.com');

const title = await page.title();
console.log(`ページタイトル: ${title}`);

const headlines = await page.$$eval('.titleline > a', links =>
  links.map(link => ({
    title: link.textContent,
    url: link.href,
  }))
);

console.log(`${headlines.length} 件の記事を取得`);
headlines.slice(0, 5).forEach(h => console.log(`- ${h.title}`));

await page.close();
await browser.disconnect();

ポイントは puppeteer-core を使うことです。通常の puppeteer パッケージはChromiumをバンドルしますが、Lightpandaを使う場合はブラウザ本体が不要なので puppeteer-core で十分です。

Playwright で接続する

Playwrightからも接続できます。ただし、Lightpandaの公式ブログでは、PuppeteerのほうがCDPをネイティブに扱うため相性が良いと述べています。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import { chromium } from 'playwright';

const browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
const context = browser.contexts()[0];
const page = await context.newPage();

await page.goto('https://example.com');
const title = await page.title();
console.log(title);

await page.close();
await browser.close();

Playwrightは内部でブラウザの対応APIを検出して実行戦略を切り替えるため、LightpandaがWeb APIを追加するとPlaywright側の挙動が変わる可能性があります。安定性を重視するならPuppeteerがおすすめです。

Puppeteer vs Playwright: Lightpandaと組み合わせるならどちらか

Lightpandaの公式ブログ「CDP vs Playwright vs Puppeteer 」では、以下のように整理されています。

観点PuppeteerPlaywright
CDPとの親和性ネイティブ対応中間レイヤー経由
WebSocket通信量11KB326KB
クロスブラウザ対応ChromiumのみFirefox・WebKit対応
Lightpandaとの相性良好動作するが注意が必要

AIエージェントの自動化用途で、Lightpandaの性能を最大限に引き出すならPuppeteerとの組み合わせが現時点ではベターです。

注意点・現在の制限

Lightpandaは現在Beta版です。以下の点に注意が必要です。

  • Web API のカバレッジが発展途上: すべてのWeb APIに対応しているわけではありません。複雑なSPAやWeb Components多用のサイトでは動作しない場合があります
  • CSSの評価なし: CSSセレクタによるDOM操作は可能ですが、getComputedStyle のような見た目に依存するAPIは動作しません
  • 画像・PDFレンダリングなし: スクリーンショット撮影やPDF生成が必要な用途には向きません
  • AGPL-3.0ライセンス: 商用利用時はライセンス条件を確認してください。マネージドクラウド版も提供されています

正直なところ、「ChromeヘッドレスをそのままLightpandaに置き換えれば全部動く」という段階ではまだありません。自分の用途でちゃんと動くか、事前にテストすることをおすすめします。

AIエージェントでの活用シナリオ

Lightpandaが特に力を発揮するのは以下のようなケースです。

  • 大量ページの並列スクレイピング: メモリ1/9なので、同じサーバで9倍のエージェントを走らせられる
  • エージェントのWeb検索・情報収集: 起動100ms未満なので、必要なときだけブラウザを立ち上げて即座に捨てられる
  • CI/CDでのリンクチェック・E2Eテスト: 軽量なので、テスト環境のリソースを圧迫しない
  • MCPサーバとの連携: CDPを通じてブラウザ操作をエージェントに公開する基盤として(関連: Vibium はAIエージェント向けブラウザ自動化を別アプローチで実現)

まとめ

Lightpandaは「AIエージェントのためのブラウザ」という、ありそうでなかったポジションを狙ったプロダクトです。Chromeヘッドレスの11倍速・メモリ1/9という数字は、エージェントを大量に並列稼働させる場面で直接的なコスト削減につながります。

まだBeta版なのでWeb APIのカバレッジには限界がありますが、Puppeteer互換のCDPで接続できるため、既存のスクリプトを少ない変更で試せるのは大きなメリットです。

AIエージェントにブラウジング能力を持たせたい、あるいはスクレイピングのインフラコストを下げたいと考えている方は、一度試してみる価値があると思います。

参考リンク