Opera’s newest Web browser introduces a new technology platform.

Opera Softwareは2月22日(ノルウェー時間)、15年ぶりに新しく開発したHTMLパーサを搭載したOpera 11.50開発版を公開した。Windows版、Mac OS X版、Linux/FreeBSD版が提供されている。Operaテストで99.9%のHTML5テストをクリアしているほか、HTML5Test.comでも優れた結果を示している。

Opera Softwareの説明によれば、WebのHTMLの95%はなんらかの形で不正なマークアップになっているという。HTML4は不正なマークアップだった場合にどのようなDOMツリーを生成すればいいかを規定していない。記事では次のHTMLをパースした場合、IE9とSafari5、Opera・Firefox・Chromeで別の解釈をする例を示してその事実を説明している。

<b><i>Yo!</b></i>

IE9とSafari5では次のように解釈する。

<B><I>Yo!</I></B><I></I>

Opera・Firefox・Chromeでは次のように解釈する。

<B><I>Yo!</I></B>

どちらの解釈もHTML4的には問題ないが、JavaScriptでDOMを操作する場合にはこれはなかなか面倒だ。ブラウザごとに違うDOMオブジェクトツリーが生成されることを前提にしてコーディングする必要がある。しかし、これはHTML5で大きく改善されることになる。HTML5では不正なマークアップをパースした場合にどういった解釈をするべきかの規則が策定されているため、どのブラウザも同じDOMオブジェクトを生成できるようになると期待されている。

ラグナロクを実装したOpera 11.50-24581 / FreeBSD 9

Opera 11.50-24581 HTML5Test.comの閲覧結果

現在のリリース版であるOpera 11.01 / FreeBSD 9

Opera 11.01 HTML5Test.comの閲覧結果

Operaはこれまで、Operaが登場した当初から使っているHTMLパーサを使い続けてきた。今回、HTML5対応を進めるにあたってちょうどいいタイミングということで、HTMLパーサを新しく開発しなおすことにしたという。この新しいパーサは「Ragnarok (ラグナロク)」と呼ばれている。既存のHTMLパーサは繰り返しパッチを当て続けたことで複雑化しており、開発しなおすタイミングと判断されたという。

Operaが15年間に渡って既存のHTMLをパーサを使い続けてきた大きな理由は、そのメモリ使用量の少なさに理由があるという。HTML5で説明があるように、不正なマークアップを見つけた場合、ノードをコピーして処理を進める方がアルゴリズムとしては簡単になる。Operaではここでノードをコピーする代わりに、複製すべきノードに対するポインタを保持することで処理をしていたという。この方法であればメモリの消費量を抑えることができる。ただし反面、構造が複雑になりコーディングも入り組んでくるという問題がある。当初は組み込みデバイスでの利用や低スペックPCでの利用もあって、メモリ使用量を優先してきたということになる。

ラグナロクではHTML5に説明があるようにノードをコピーする方法を採用している。結果的にメモリの使用量は増えることになるが、リリースまでに最適化をして使用量を下げるという。パフォーマンスについてはまだ最適化を実施していないためわからないとしているが、状況から考えるとパフォーマンスは向上しているだろうと説明がある。

ラグナロクは古ノルド語。北欧神話において世界の終末を意味する言葉。Opera Softwareは開発コード名にこうした古い言葉をベースにした単語を採用する傾向にある。