ひつじのにっき

mhidakaのにっきです。たまに長文、気が向いたとき更新。

Geckoと仲良くなりたい人主催 Firefox OS Gecko勉強会いってきたよ

Geckoと仲良くなりたい人主催 FxOS Gecko勉強会の資料「 Gecko入門」です。
Firefox OSGecko部分の実装に興味があったのでいってきて話しました。

Firefox OSに限って書きますがGeckoはモバイル端末上でWebアプリを動かすための実装です。

Firefoxブラウザを支える技術をモバイル機器に生かした、ともいえるわけで新規に作るより動作には信頼が寄せられると思います。ただFirefox OSとして全てのコンポーネントが必要とは限らないのでコードを読むときは注意が必要かなぁ。

現状、Web上にもGeckoの情報が少ないので勉強会に来てMozillaの中の人に色々聞くのが一番手っ取り早い感があります。

もちろん何も知らなくてもコードは読めますが(資料作成中の私の状況)、idlが3種類(!)あるとか、XPCOMの役割など知った上でコードを読んだほうがスムーズなのは言うまでもないですね…。

GeckoのDOM、バインディングについて(piro_orさん)のメモ

JSバインディングの歴史:http://jstenback.wordpress.com/2012/04/07/history-of-mozillas-dom-bindings/

XPConnectを使うとJSとC++の世界をバインドできる。XPCOMWindowsコンポーネントオブジェクトモデルを参考に作られた。クロスプラットフォーム用のコンポーネントフレームワークXPCOMはXPConnectしか対象としない。たとえばXPConnectでファイル入出力を実装しておけば、デバイス依存を吸収できる。

XPCOMC++需要が強いとき(JSがまだ力不足でnativeを必要としていた時)に生まれた。DOM APIの実装(2年ぐらい前からWebIDLで置き換えられてる)、Webと関係がないオペレーションで利用してたようだ。

例外機構がなかったので引数[Out]で値を返して、returnでステータスを返してた。
最近はWebIDLではモダンにreturn で値を返して、例外機構でエラーを通知してる。

WebIDLの資料どこかにないかな…。

MozzilaのコードはC++の例外は遅いから使わない。例外をするコードでは戻り値で返しているだろう