最近、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秒 |
| ピークメモリ | 207MB | 24MB |
| 起動時間 | 数秒 | 100ms未満 |
実行速度で 11倍、メモリ使用量で 約1/9 という差です。
これをインフラコストに換算すると、8GBメモリのサーバで同時に走らせられるエージェント数はChromeが約15台に対して、Lightpandaは約140台。9倍以上のエージェント密度を実現できます。AIエージェントを大量に並列稼働させるユースケースでは、この差はそのままコスト削減に直結します。
インストール
npm パッケージ(推奨)
Node.js がインストールされている環境であれば、npmパッケージから導入できます。
| |
バイナリダウンロード
Linux(x86_64/aarch64)と macOS(aarch64/x86_64)向けのナイトリービルドが GitHub リポジトリ から入手できます。Windows は WSL2 経由で利用可能です。
基本的な使い方
Lightpanda を起動する
npm パッケージを使う場合、以下のコードでLightpandaのCDPサーバを起動します。
| |
起動は一瞬です。Chromeヘッドレスだと起動に数秒かかることがありますが、Lightpandaは100ms未満で立ち上がります。
Puppeteer で接続してスクレイピング
LightpandaはCDPサーバを内蔵しているため、Puppeteerからそのまま接続できます。既存のPuppeteerスクリプトがあれば、接続先を変えるだけで動きます。
Puppeteerをインストールしたうえで、以下のように browserWSEndpoint を指定して接続します。
| |
ポイントは puppeteer-core を使うことです。通常の puppeteer パッケージはChromiumをバンドルしますが、Lightpandaを使う場合はブラウザ本体が不要なので puppeteer-core で十分です。
Playwright で接続する
Playwrightからも接続できます。ただし、Lightpandaの公式ブログでは、PuppeteerのほうがCDPをネイティブに扱うため相性が良いと述べています。
| |
Playwrightは内部でブラウザの対応APIを検出して実行戦略を切り替えるため、LightpandaがWeb APIを追加するとPlaywright側の挙動が変わる可能性があります。安定性を重視するならPuppeteerがおすすめです。
Puppeteer vs Playwright: Lightpandaと組み合わせるならどちらか
Lightpandaの公式ブログ「CDP vs Playwright vs Puppeteer 」では、以下のように整理されています。
| 観点 | Puppeteer | Playwright |
|---|---|---|
| CDPとの親和性 | ネイティブ対応 | 中間レイヤー経由 |
| WebSocket通信量 | 11KB | 326KB |
| クロスブラウザ対応 | 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エージェントにブラウジング能力を持たせたい、あるいはスクレイピングのインフラコストを下げたいと考えている方は、一度試してみる価値があると思います。