日向夏特殊応援部隊

俺様向けメモ

Firefox Developer Conference Summer 2007 Report

と言う訳でリアルタイムレポートしちゃうぞー!*1

FUEL & Chrome JavaScript Libraries

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.2APIを見を見ましょう。

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のビルドシステムを使う事が出来るそうです。

プラットフォーム別のインストールシステムは、

Windows
SetupまたはMSI Installer
Linux
ArchiveまたはPackage Installer
Mac
Install package or DMG

です。で、もし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)
MacDMG作成が難しいみたい。

XULRunnerで革新的な技術が生まれた場合にFirefoxにコミットするにはどうしたらよい?

Mozillaが余りXULRunnerを重視してない事に、ヨーロッパでは不満が大きいみたい。

http://www.mozpad.org/

どういうfutureがいいのかーってのを話したりしてるみたい。
Songbirdがやっぱり代表的らしい。


XULIEで表示出来たらいいなー。

Firefox3の段階では自動的にXULを表示するActiveX Controlが梱包されてるらしいです。
ActiveXObjectからホゲホゲするとXULIEで表示できたりするっぽぃです。
あと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を記述してオーバーレイも出来る。

E4Xスタイルシートも追加出来ちゃう。E4Xウマー。

新バージョン0.8の話。

あらゆるchromeウィンドウにフック可能。
ブックマークサイドバーやアドオンマネージャとか。
内部処理は独自XPCOMでやってる。

0.7相当にしたいなら、

if (location != "chrome://global/content/browser.xul") {
  throw "stop";
}

って事。

userChrome.jsに望まれるのはスクリプト管理用の拡張機能
chrome権限で動くから、サイトからコピペには注意して使おう。

拡張機能開発者による大ライトニングトーク

株式会社ゴーガ

赤塚大典さん「わくらわ

わくらわは偶然の出会いを実現する仕組み。WEBページを場所とみなしてたまたま同じ時間に同じページを見ていた人の出会いを提供するソフト。

soramimi portableは閲覧中の動画を連続的に再生する。

非公開の物がブロック崩しファイヤ、これ本当に公開して欲しい!w

あとハイライトを当てるとそこが英語になると言う拡張も作ってる。


あかつかさん面白いなぁ。

池田譲治さん「Find Toolbar Tweaks」

プレゼンテーションツールは自作でFirefoxで動く奴。
JSがそのまま動くみたい。

タイプライター風の表示とか。(ルパン三世のアレに似た奴)

Find Toolbar Tweaksは詳しくはWEBで。

歌を歌い始めたw

奥一穂さん(サイボウズ・ラボ)「Japanize

プレゼン中のトラブルに動じない事で有名id:kazuhookuさんの登場!w
KeyNoteでのプレゼン。

Japanizeはウェブアプリのローカライズ機構で、拡張機能が表示サイトをローカライズする。
ユーザーが翻訳データを投稿することによって、いろんなサイトがどんどんローカライズされていく。

twitterも既にローカライズされてます。

  • 正規表現による翻訳(日時とか)
  • DOM classで適用範囲を絞ったり出来る

語順の入れ替えは難しい。

MylingualJapanizeを国際化した物。

柴田諭さん(ユミルリンク)「紙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

山本和彦さん「Firemacs」

Firefox + Emacsな拡張。僕も確か入れてた。

山本和彦のホームページ
Redirect

elisperの人でmewで有名。

URL履歴もC-nとかで移動できたりする。v2.1が未だに承認されてない。w

プレゼンはGobyってので出来てる。Emacsの制約を受ける。
それのFirefox拡張で今日初公開の「Firefly」と言う物。

JSを使った発表ツールを目指す。当然WYSIWYGで書ける。
「検索するよりプログラムを書くほうが楽しい。」すげー名言!
コード書かないでグダグダ言う奴は死ねば良いと思うw

インターフェースはパワポのような感じ。
テキスト領域のリサイズにも対応している。

  • メニューバーとタイトルバーが消せない
  • WindowsFirefoxでは出来るのに。。。
  • PDF化は1ページ1スライドにしたい、改ページの制御が分からない

改行はOperaから持ってきたCSSの改行プロパティ、名前忘れたけど、それでhackすれば出来るんじゃないかと。

MDCの案内(takenさん、Shimonoさん)

誰でも参加できるのでどんどん更新して欲しい。
普段良く見てるから何か協力したい。

*1:後で多分再編集しちゃうぞ

*2:ここは知らなかった!