【レビュー】

JavaでWebページをレンダリング! - WebRendererを試す

 

WebRendererとは?

JadeLiquid Softwareが販売しているWebRendererは、JavaでHTMLレンダリングを行うためのライブラリである。WebRendererは、ページのレンダリングのみならず、HTTPに則ったキャッシュ、「戻る」「進む」などのページナビゲーション、Webページの印刷などの機能も備えた、Webブラウザコンポーネントとも言えるものに仕上がっている。20日には、新しいエディションとして「Swingエディション」を発表している。

ところで、HTMLをJavaでレンダリングすることの利点は何であろうか。

まず思いつくのは、テキストデータやDOMとしてのHTMLではなく、レンダリングされた後のイメージをプログラムで取り扱うことができるという点である。これはつまり、最近はやりのWebページのサムネイル作成などが簡単に行えるということだ。

他にも、例えばJavaで作ったクライアントアプリにWebブラウザ機能をシームレスに統合できるという利点もすぐに思いつく。これにより、デスクトップアプリケーションの一部をHTML+Ajaxアプリケーションにすることも可能になる。例えば、Google Mapsとマッシュアップするクライアントアプリケーションの作成なども容易に行える。

ただし、不安もある。不安の中で最も大きなものは、HTMLレンダリング自体だろう。ご存じの通り、標準から著しく逸脱したHTMLリソースは世界中に多数あり、現在のWebブラウザはそうした「行儀の悪い」HTMLでも、エラーを発生させることなく、それほど表示を崩さずにレンダリングできるように作られている。こうした機能を新しいプロダクトがフォローできているのかと心配になる読者は少なくないはずだ。また、HTMLやCSSの解釈も重要だ。明示的な指定がない場合のフォントプロパティやマージンの幅などが一般的なブラウザとは全く異なっていたら、やはり敬遠されてしまうだろう。

しかし、WebRendererではそうした心配は一切無用だ。なぜかと言えば、WebRendererはMozilla(Firefox)、Internet Explorer、Safariといった現在主流となっているブラウザのレンダリングエンジンを透過的に扱うよう設計されているからだ。WebRendererはデフォルトでMozillaのレンダリングエンジンを内包している。

では、実際にWebRendererを動かしてみることとしよう。

ダウンロードできるエディション

WebRendererは、こちらのサイトからダウンロードすることができる。有償のプロダクトであるが、30日間のトライアル版を無償で利用可能だ。

ダウンロードできるのはzipやtar.gzといったアーカイブファイルなので、入手後に展開するだけで利用可能だ。

トライアル版で利用できるエディションは以下の3種類だ。

  • Desktop Edition: AWTベースのライブラリで、IEやSafariといったネイティブブラウザとも統合できる
  • Swing Edition: Swingベースのライブラリで、DOMレベル1と2をフルサポートする。他のアプリケーションへの組み込みも容易だ
  • Server Edition: サーバで行う処理に比重を置いたエディションで、サムネイル画像の保存、ヘッドレスモード(グラフィックカードがない状態でのイメージ処理)がサポートされる

WebRendererを用いたプログラミング

今回は、わかりやすい例として、Webページのサムネイル画像をファイルとして保存するサンプルを作ろう。こうした用途に最適なのはServer Editionである。今回は、同エディションをJDK 1.6.0_01、Windows XP上で動作させた。

Server Editionのアーカイブを展開したら、トップディレクトリに3つのJARファイルを確認できるはずだ(webrendererse.jar、webrendererse-win.jar、corecomponentsse-win.jar)。それらにクラスパスを通してコンパイル/実行を行うことでWebRendererを使用することができる。

サンプルのソースコードは以下のようになる(import文は省略)。

リスト1: クラスPageThumbnailFactory

public class PageThumbnailFactory {
    public static void main(String[] args) throws Exception {

        // ライセンスのセット   ……(1)
        BrowserFactory.setLicenseData( "30dtrial" , "BST04I0TB9031HJJ56RGECOS" );

        // レンダリングを行うキャンバスを取得   ……(2)
        final IBrowserCanvas browser = BrowserFactory.spawnMozilla();

        // イベントリスナを追加   ……(3)
        browser.addNetworkListener(new NetworkAdapter() {

            // ドキュメントの読み込みとレンダリングが完了したら呼び出される
            @Override
            public void onDocumentComplete(NetworkEvent e) {
                try {
                    System.out.println("ドキュメント読み込み完了");

                    // "thumbnail.jpg"というファイル名でJPEGイメージを保存   ……(4)
                    browser.savePageImageToDisk(new File("thumbnail.jpg"), IBrowserCanvas.IMAGE_FORMAT_JPEG);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
            }
        });
        // Webページの読み込み   ……(5)
        browser.loadURL("www.google.com");
    }
}

上のプログラムの中で括弧書きの数字を付けた部分は以下のようになる。

(1) com.webrenderer.se.BrowserFactory#setLicenseDataメソッドに、ライセンスキーを渡す。30日トライアル版のライセンスキーは、展開後のルートディレクトリにあるTestBrowser.javaファイル内に記載されている内容を参照のこと

(2) HTMLレンダリング用のキャンバスを取得する。spawnMozilla()メソッドにより、Mozillaレンダリングエンジンを使用するキャンバスを取得している。ここで取得できるIBrowserCanvasオブジェクトは、WebRendererの最も中心的なインタフェースだ。Desktop Editionであれば、ここでIEやSafari用のレンダリングエンジンを指定することもできる

(3) キャンバスにイベントリスナをセットしている。ここで指定しているのはネットワーク操作に関するリスナであるが、他にもマウスイベント、キーイベント、Javascriptイベントなど、多数のイベントをハンドリングすることが可能

(4) レンダリングしたイメージをJPEGで保存している。このメソッド(savePageImageToDisk)は、Server Editionにしか存在しないメソッドである

(5) IBrowserCanvas#loadURL()メソッドを使用し、インターネットからWebページをロードする。なんと、たった1行だけだ

このプログラムを実行すると、"thumbnail.jpg"というファイル名でWebページのイメージを保存できる。今回は使用していないが、イメージの最大サイズを指定するメソッドもあるので手軽にサムネイルを作ることが可能だ。ネットワークからHTMLやイメージファイルをダウンロードしてレンダリングしたうえ、さらにイメージをファイルに保存するという複雑なことをしている割には、コードは非常に単純である。

以上で見てきたように、WebRendererを使用すると非常に簡単にHTMLのレンダリングとそのイメージを処理することができる。

有償のプロダクトなのが多少残念なところではある。現在のところ、価格に関しては企業に対して直接メールでコンタクトをとる必要があるとのことだ。

とはいえ、これほどの複雑な処理をたった数行のコードで実現できるという生産性の高さはなかなか捨てがたい。Javaでブラウザ相当の処理が必要になった場合には、試してもよいだろう。



転職ノウハウ

あなたが本領発揮できる仕事を診断
あなたの仕事適性診断

シゴト性格・弱点が20の質問でサクッと分かる!

「仕事辞めたい……」その理由は?
「仕事辞めたい……」その理由は?

71%の人が仕事を辞めたいと思った経験あり。その理由と対処法は?

3年後の年収どうなる? 年収予報
3年後の年収どうなる? 年収予報

今の年収は適正? 3年後は? あなたの年収をデータに基づき予報します。

激務な職場を辞めたいが、美女が邪魔して辞められない
激務な職場を辞めたいが、美女が邪魔して辞められない

美人上司と可愛い過ぎる後輩に挟まれるエンジニアの悩み

人気記事

一覧

イチオシ記事

新着記事

『星のカービィ』一番くじに、ドットやゲーム画面デザインのアイテムが登場
[19:00 9/30] ホビー
シャープ、有機ELディスプレイのパイロットラインに574億円を投資
[18:49 9/30] テクノロジー
[注目アニメ紹介]「タイガーマスクW」 34年ぶりの新作アニメ 2人のタイガーに注目
[18:44 9/30] ホビー
[カノン]比嘉愛未、佐々木希、ミムラが3姉妹役で共演 親子の絆を硬軟織り交ぜ描く
[18:43 9/30] エンタメ
[フジテレビ亀山社長]古舘伊知郎の新番組 日曜2時間枠で「サラリーマン層取り込む」
[18:43 9/30] エンタメ

求人情報