こんにちは、Heywaです。
最近、Seleniumの共同開発者がリリースしたAIエージェント向けブラウザ自動化ツール「Vibium」が話題ですね。私もClaude Codeと組み合わせて使っていますが、新しいツールゆえに環境構築や初期設定でつまずくことも少なくありません。
今回は、Vibiumのインストールから初期起動(特にMac M1環境やClaude Code連携)で発生しやすいエラーとその解決策を、トラブルシューティングとしてまとめました。
Vibium インストール エラーの代表例と解決策
Vibiumは npm install vibium だけでChrome for Testingも自動ダウンロードされる「ゼロセットアップ」が売りですが、環境によってはエラーが出ます。
1. Mac M1環境でのバイナリ実行エラー
【症状】
Mac M1(Apple Silicon)環境でインストール後、Vibiumを実行しようとすると Bad CPU type in executable や killed: 9 といったエラーで落ちる。
【原因と対策】
VibiumのGoバイナリがARM64アーキテクチャとして正しく認識されていない、またはmacOSのセキュリティ機能(Gatekeeper)にブロックされている可能性があります。
以下のコマンドでセキュリティブロックを解除(Quarantine属性を削除)することで解決します。
xattr -d com.apple.quarantine $(which vibium)
2. Claude Code連携時のMCPサーバー接続エラー
【症状】
claude mcp add vibium -- npx -y vibium を実行しても、Claude Code側で「Vibium MCP server not found」や「Connection refused」というエラーが出る。
【原因と対策】
Node.jsのバージョンが古い、または npx のキャッシュが壊れていることが原因です。Vibiumは最新のNode.js環境を推奨しています。
Node.jsをv20以上にアップデートした上で、以下のコマンドでキャッシュをクリアして再試行してください。
npx clear-npx-cache
claude mcp add vibium -- npx -y vibium
Vibium headless 起動とゾンビプロセスの問題
サーバー環境やバックグラウンドでVibiumを動かす際によくあるトラブルです。
Vibium headless 起動時のクラッシュ
【症状】
ヘッドレスモード(画面なし)で起動しようとすると、ブラウザが立ち上がらずにタイムアウトする。
【対策】
Vibium(WebDriver BiDi)は、Seleniumとは少し異なる起動オプションを要求する場合があります。Linux環境などでヘッドレス起動する場合は、以下のオプションを明示的に渡す必要があります。
import { browser } from "vibium";
const bro = browser.launch({
headless: true,
args: ["--no-sandbox", "--disable-dev-shm-usage"]
});
Vibium zombie process(ゾンビプロセス)の発生
【症状】
スクリプトがエラーで異常終了した後、メモリ上にChromeのプロセスが残り続け(ゾンビプロセス)、次回起動時にポート競合などのエラー(Address already in use)が起きる。
【対策】
これはSelenium時代からおなじみの問題ですが、Vibiumでも発生します。スクリプト側で必ず try...finally ブロックを使ってブラウザを閉じる処理を実装してください。
let bro;
try {
bro = browser.launch();
// 処理...
} finally {
if (bro) bro.close();
}
もしゾンビプロセスが残ってしまった場合は、ターミナルから pkill -f "chrome"(Mac/Linux)で強制終了させましょう。
まとめ:Vibium vs Selenium の移行判断
Vibiumは「AIエージェントとの連携」においてはSeleniumを凌駕する手軽さを持っていますが、まだV1ということもあり、今回紹介したような環境依存のエラーやトラブルシューティングが必要です。
「Vibium vs Selenium」で迷っている方は、「探索的テストやClaude Codeを使った即席の自動化ならVibium」「CI/CDで毎日安定稼働させるならSelenium(またはPlaywright)」という使い分けをおすすめします。
次回は、Vibiumの「要素取得エラー」や「Auto-wait timeout」など、スクリプト実行中のトラブルシューティングについて解説します。
