Firefox Developer Conference Summer 2007 Report
と言う訳でリアルタイムレポートしちゃうぞー!*1
FUEL & Chrome JavaScript Libraries
Mark Finkleさん
gomitaさん
実は途中から見た訳ですが、FUELと言うFirefox3からの拡張マネージャの話でした。
FUEL (Firefox User Extension Library) is a JavaScript Library designed to help developers build extensions using terminology and interfaces that are familiar to them. It will be usable in Firefox 1.5-3.0.
gomitaさんのプレゼンの途中からでしたが、どう見てもFirefox内部を弄るにはFUELはとても便利になってます。
FUELはそのままだと使いづらいXPCOMのwrapperのような位置づけで、より簡単なインターフェースで使いやすい物になっているようです。
基本的にはApplicationと言う名前のオブジェクト経由で諸々アクセス出来るようになるみたいです。
詳しくはversion 0.1, 0.2のAPIを見を見ましょう。
Building Applications with XULRunner
Mark Finkleさん
Building Applications with XULRunner
XULRunnerはデスクトップアプリケーションのruntimeで、その紹介です。
世の中Apollo改めAIR祭りになってますが、同種の物と考えて差し支えないと思います。
拡張はFirefoxなどと同じようなメカニズムを持っており、現状はRDFを利用していますが、将来的にはRDFを超えた存在になりたいとの事です。
ComponentsはC++だとかpythonで記述する事が出来ます。
XULRunnerはaccessibilityが非常に高く、またクロスプラットフォームになっています。
UIは基本的にOSの基本的なインターフェースを踏襲しますが、CSSを使えばカスタマイズ可能ですし、またupgradeはOSのアップグレードと同等の機能を持っています。
またFirefox/Thunderbirdと基本的に同等の事が出来ますので、Overlayも当然使えます。
まぁと言うかここまではFirefox/Thunderbirdと同じ話です。
XULRunnderを使ってアプリケーションを作る際は拡張開発とほぼ同等で、好きなエディタでテキストファイルを弄るだけで簡単に機能やlook & feelを変更することが出来ます。
DesignerがXULを弄るなんてのも簡単に出来るようになるので、分業可能だと思います。
またXBLをcomponentsを使って新しいXUL上の要素を追加したりも出来ます。
またビルドシステムをMozillaのビルドシステムを使う事が出来るそうです。
プラットフォーム別のインストールシステムは、
です。で、もしXULRunnerを使ったデスクトップアプリケーションを配布する際は、XULRunnerを個別に含める形を推奨しています。
もじら組組長 (d:id:smellman)
国際化対応についてのお話です。
localeは基本的に英語のlocaleが利用されます。
拡張機能のlocaleは整備されてますが、XULRunner自体はその仕組みを期待できないそう。
locale選択方法としてはprefs.jsを直接弄るという古典的方法がまずあります。
user_pref("general.useragent.locale", "ja-JP");
今更感があるので、あまり使わないほうがいいみたいです。
あるいはアプリケーションから設定画面を作ると言う方法があって一番現実的。
Songbirdなどがそう。
Locale-Switcher Extensionのコードが参考になる。
ちなみにデモではlocale設定を変更したら、再起動を要求されてました。
現在の言語設定はpref.jsをまず読み込んでします。(nsiPrefBranchを使う)
- getCharPref('general.useragent.locale')
- nsUserSetting.jsを使ってもいい。
読み込めない場合のデフォ言語を決めうちで決める。エラー処理もする。
locale一覧はnsIToolkitChromeRegistryを利用する。
var locales = chromeRegistry.getLocalesForPackage("hoge");
みたいな感じ。
locale情報の保存はnsiPrefBranchを使ってsetCharPrefを使えばよい。nsUserSetting.jsを使っても良いです。
XULRunnerはアドオンマネージャでの設定呼び出しが出来ないそうです。
(
んー、それは確かに不便かも。
拡張機能と同じアプリを作る場合はUIを若干変更する必要があるそうです。
別個にUIを用意すればいい。
Songbird凄い。localeは全部アドオン。初回起動時はlocale選択を含む設定画面。
localeを選択するとその場でlocaleをダウンロード&インストール。
XULRunnerの凄さを味わうにはSongbirdお勧め。
ちなみにアイコンかわゆす。
質問
Dashboard, Google Desktopに対して対抗意識はある?
ないみたい。
Widgetを一個のXULRunnerで動かすんじゃなくて、XULRunnerのエンジンを共有するような方法で、Widget/DashBoardシステムを作って行く予定。共有ランタイムを作る予定は無いようですが。。。
透過性やメニューの部分でWidget化は全然可能。
まだMacではちょっとバグがあるらしいです。
XULRunnerのランタイム配布に対するインストーラーサンプルはあるのか?
今今は無いらしいっす。
アプリケーション別にユニークになるし、特にSongbirdを例に取ればなかなか難しい。
公開してみんなのサンプルになればいいと思ってる。(公開して!w)
MacのDMG作成が難しいみたい。
XULRunnerで革新的な技術が生まれた場合にFirefoxにコミットするにはどうしたらよい?
Mozillaが余りXULRunnerを重視してない事に、ヨーロッパでは不満が大きいみたい。
どういうfutureがいいのかーってのを話したりしてるみたい。
Songbirdがやっぱり代表的らしい。
Firefox3の段階では自動的にXULを表示するActiveX Controlが梱包されてるらしいです。
ActiveXObjectからホゲホゲするとXULをIEで表示できたりするっぽぃです。
あとSVGの問題があったりするみたい。
XULRunnerのデプロイは同じフォルダにXULRunnerを含めるのがいいのか、--register-global, --install-appを使った方が良いのかどっち?
現在推奨されてるのはpackageと言う形でアプリケーションと共にXULRunnerを含めるのが良い。
-
- register-globalは初期から実装された実験的に導入された仕組み。
OSにどこにXUL Runnerが既にインストールされているかどうか問い合わせたりする。
問題としては信頼性がまだ微妙だったらしい。
バージョン違いだとかで動かなくなるケースがいっぱいあった。
-
- install-appはMacのみで効力を発揮するそう。
Macはアプリケーションの取り扱いがちょっと異なる。
このフラグはXUL Runnerのソースコードからバンドルを作ってくれるみたい。
Win/Linuxはそういうのを使う必要は無いらしい。
で、今後は計画としてはまだどれだけリソースをかけてsharedシステムを構築したらよいか構想が決まってないらしい。
Firefox/Thunderbirdに注力してるから余りリソースを掛けられない見通し。
近い将来取り組みことはshared systemに関しては無いっぽぃ。
Firefox3のXUL Runner対応って?
Firefox3をXUL Runnerで起動するって言う試み?
Firefox3の下にあるXULRunnerを他のXUL Applicationにも使って欲しいって言う所までは行ってないらしい。
その上でshared systemを構築する事になると思う。
Firefox3の下のXULRunnerはプライベートバージョンのXULRunnerと言う計画で進んでいく。
Firefox/Thunderbird間でもXUL Runnerを共有しないみたい。
拡張機能を解体しよう!
あかつかさん
わくらわの解体。
あふれだすはchrome://global/skinを外すと非矩形に出来る。
Canvas使ってimage乗っけたり線書いたり出来る。
ながらみはhtml中にある動画を流して見れる。ちょっと使ってみたい。
Webページ自体がプレイリストになる。
ブロック崩しファイヤ。
中のhtml内でFirefoxロゴが動いて要素をどんどん崩して行くw
非矩形を応用して破れたWindowを実現。おお、凄い面白いw
gomitaさん
ここから真面目な拡張機能の話し。
拡張を捨てuserChrome.js化すると言う話。
ちょっとした拡張機能であればuserChrome.jsで十分。Firefoxを軽量化出来る。
自分好みにカスタマイズ出来る。
ちなみに新しいウインドウを開くで変更が反映される。(そういえばあかつかさもそうやってた)
多分、拡張も直接弄れば同じっぽぃ。
スクリプトが増えるとuserChrome.jsが増えちゃうので、UCJS Loaderを使ってロードする形式に変更する。
SubScript Loaderの改良版みたい。
userChrome.js 用スクリプト: Days on the Moonに詳しいみたい。日本語も化けないのがいいところ。
再起動メニューを追加するスクリプトなんかもuserChrome.jsで簡単に出来るよと。
普通に変数宣言するとbrowser.xulのグローバルになっちゃうので、スクリプト全体をクロージャにするのがいい。
E4Xでスクリプト内に直接XULを記述してオーバーレイも出来る。
新バージョン0.8の話。
あらゆるchromeウィンドウにフック可能。
ブックマークサイドバーやアドオンマネージャとか。
内部処理は独自XPCOMでやってる。
0.7相当にしたいなら、
if (location != "chrome://global/content/browser.xul") { throw "stop"; }
って事。
userChrome.jsに望まれるのはスクリプト管理用の拡張機能。
chrome権限で動くから、サイトからコピペには注意して使おう。
拡張機能開発者による大ライトニングトーク
赤塚大典さん「わくらわ」
- わくらわ
- soramimi portable
わくらわは偶然の出会いを実現する仕組み。WEBページを場所とみなしてたまたま同じ時間に同じページを見ていた人の出会いを提供するソフト。
soramimi portableは閲覧中の動画を連続的に再生する。
非公開の物がブロック崩しファイヤ、これ本当に公開して欲しい!w
あとハイライトを当てるとそこが英語になると言う拡張も作ってる。
あかつかさん面白いなぁ。
池田譲治さん「Find Toolbar Tweaks」
プレゼンテーションツールは自作でFirefoxで動く奴。
JSがそのまま動くみたい。
タイプライター風の表示とか。(ルパン三世のアレに似た奴)
Find Toolbar Tweaksは詳しくはWEBで。
歌を歌い始めたw
奥一穂さん(サイボウズ・ラボ)「Japanize」
プレゼン中のトラブルに動じない事で有名なid:kazuhookuさんの登場!w
KeyNoteでのプレゼン。
Japanizeはウェブアプリのローカライズ機構で、拡張機能が表示サイトをローカライズする。
ユーザーが翻訳データを投稿することによって、いろんなサイトがどんどんローカライズされていく。
- 正規表現による翻訳(日時とか)
- DOM classで適用範囲を絞ったり出来る
語順の入れ替えは難しい。
柴田諭さん(ユミルリンク)「紙copi」
WEBページやニュース・ブログの保存なら「紙copi」の紹介。
範囲選択してドラッグ&ドロップするとWebページをそのまま保存できる。
IEのみだったけどFirefoxも対応した。addon化した。
寺田真さん「Tag Dialog」
id:teramakoさん。
Thunderbirdをフィードリーダー化する拡張Tag Dialogの話。
LDRとの比較では、Greasemonkeyとの組み合わせやWebサービスとの組み合わせ、キーバインド辺りは全部拡張で実現した。
Thunderbirdの拡張はまだ少ないので是非他の方にも作って欲しいとの事。
外山真さん "nato_vi" 「Enhanced Feed Preview」
Enhanced Feed Preview - On the Moon
XPCOM作成の話が始まったw
idlをxpidlコマンドでxptファイルを生成して、普通にjs使ってクラス作る。
ファクトリを生成してさっき作ったクラスを生成するcreateInstanceを実装する。
毎回newしないで同じオブジェクトを返すコンポーネントにすると、
いわゆるサービスになる。*2
新たなインターフェースは不要だったので、同じcontractIdを使ってregisterSelfで登録してる。
これは一通りやったので理解しやすかった。
Atom feedを変換したのがあのスライドらしい。凄い。
Norahさん 拡張機能のローカライズ
軽くググると色んな活動されてる方っぽぃですね。
norah'#がブログの模様。
twitterクライアント作ってるみたいです。
メニューバーにテキストエリアが開いてそこから投稿できる。
松井さん「Bookmark Permissions」
気づいたら終わってた。。。
と思ったら続きがあった。w
最近まで日本語でバグってたので日本人のユーザーいないんじゃないかとの事。
http://minkaku.goga.co.jp/comment.php?ext_id=2375&ver=&lang=ja