コマンドラインからJavaScriptを実行できる「PhantomJS」が面白そうです。WebKitベースのツールのようです。ページのキャプチャ、SVGのレンダリング、PDFの変換など、ブラウザで出来るタスクを自動化できるそうです。

http://aoikujira.com/demo/sozai/20110402-jT-PhantomJS.jpg

サイトにあるサンプルを見てみると、いろいろなことが簡単にできそうだと分かります。

ブラウザの画面を簡単にキャプチャして、PNGファイルに落とすことができるので、Webアプリのテスト結果をレポートとして出力したり、いろいろ使えそうです。

試しに、サンプルについていた、rasterize.js を実行してみました。以下のコマンドを打ち込んだら、Webサイトの全体をキャプチャすることができました。

> phantomjs examples\rasterize.js http://oto.chu.jp test.png

rasterize.js

if (phantom.state.length === 0) {
    if (phantom.args.length !== 2) {
        console.log('Usage: rasterize.js URL filename');
        phantom.exit();
    } else {
        var address = phantom.args[0];
        phantom.state = 'rasterize';
        phantom.viewportSize = { width: 600, height: 600 };
        phantom.open(address);
    }
} else {
    var output = phantom.args[1];
    phantom.sleep(200);
    phantom.render(output);
    phantom.exit();
}

phantom.open() で、URLを開くと、たぶん、繰り返しこのスクリプトが呼ばれるんだろうと思うのですが、ページのレンダリングが完了したら、phantom.render()を使って画面を保存するという仕組みと思います。

APIの一覧が、以下に書かれています。

ver.1.0.0現在で、APIをみると、sleep()とかopen()、render()とそれほど大したものは用意されていませんが、次のバージョンの予告を見ると

  • Coffee Scriptのサポート
  • ファイルのアップロードなどのサポート
  • 画像の読み込みや、プラグインの実装

と、楽しみです。