Opera Dragonflyで使われているScope Protocolが公開された

Opera の開発ツール Dragonfly は、内部的には Scope というプロトコルを使って通信するサーバーとクライアントになっていて、普通はその両端を Opera が担当する。

このサーバー、クライアントシステムの利点は、Dragonfly を搭載してないモバイル版 Opera なんかも、Scope プロトコルにさえ対応していればデバッグできるというもの。

その他、例えば100%ブラウザがクラッシュすると分かっているコードをデバッグするときなんかも、Opera を2つ立ち上げて一方をサーバーにしてもう一つの Opera と通信するといい。


で、この Scope プロトコルは将来的には規格を公開すると言っていたのだけど、Dragonfly の発表から1年経った今日やっと公開された。

これを使って出来ることは、例えば Scope サーバーとなるデバッグアプリケーションを作って Dragonfly に頼らずに Opera や他のブラウザ (がもし対応すれば) をデバッグしたり、OperaJavaScript を送って実行させることができる。

Opera の中では、RubyWatir というブラウザ自動化スクリプトで使われる API を Scope プロトコルの上に実装して、自動テストをしてるらしい。(それも公開される?)


公開された仕様がけっこう大きいのでまだ試していないが、前に Dragonfly の通信を傍受しようとした (結局失敗した) 時は、こんな感じで通信してた。

22 *enable window-manager
57 window-manager <?xml version="1.0"?><get-active-window />
52 window-manager <?xml version="1.0"?><list-windows />
22 *enable console-logger
27 *enable ecmascript-debugger
95 ecmascript-debugger <?xml version="1.0"?><runtimes><tag></tag><create-all-runtimes/></runtimes>
19 *enable http-logger
57 window-manager <?xml version="1.0"?><get-active-window />
52 window-manager <?xml version="1.0"?><list-windows />
57 window-manager <?xml version="1.0"?><get-active-window />


セキュリティはどうなの? と思うが、Opera が Scope プロトコルを使うためにポートを開けるときはちゃんとダイアログが出るので、(そこに穴が無ければ) 勝手に使われることはないだろう。

アドオンみたいなのを作るのに使えそうと思っていろいろ調べたけど、これのせいで足踏みしてたとこ。今なら Opera Unite を使ったほうが簡単に色んなアドオンが作れそう。


ところで、最近は Opera 関係の話は別のブログに書いているので、そちらもどうぞ。