Hatena::Groupsubtech

#生存戦略 、それは

-> 09 { 04 / 02 }

Firefox 拡張開発にあたり、使った拡張や参考になった拡張など

17:40 | はてなブックマーク - Firefox 拡張開発にあたり、使った拡張や参考になった拡張など - #生存戦略 、それは

いろいろな方の書かれた Firefox 拡張のドキュメント・ソースコードが大変参考になったため、自分も書いておく。誰かの Firefox 拡張開発の参考になれば。

入れた拡張開発用拡張

いろいろ使ってみたけど、最後まで残っていた開発用拡張

  • DOM Inspector
    • 基本というか、これだけで割と事足りるかというか。Chrome の Inspect の方法や、その他基本的な使い方を覚えると大変便利
  • QuickRestart :: Firefox Add-ons
    • Ctrl+Alt+R で再起動で多用。Ctrl+N の別ウィンドウで開くでは、キャッシュによって挙動が意図しなくなったり、jsm がリロードされなかったりするので。マシンがそれなりでメモリが結構あると再起動がすぐ終わるので特に苦にならない。
  • Console2 :: Firefox Add-ons
  • SQLite Manager :: Firefox Add-ons
    • 最初のころはかなりお世話に。最後の方は sqlite3 入れてコマンドから直接使うようになってしまった。SQLite 扱う拡張や、Places のデータを使う拡張なら入れておけ的。
  • UxU - UnitTest.XUL - ClearCode Inc.
    • 拡張用のテストツール。xUnit 互換だし、非同期テストを yield を利用してうまく行えたり使いやすい。はてブ拡張のテストカバレッジ率は10%ぐらいな気がするけど(というかどう実装しても良いのかよくわからないものテストなんて書けるか!)、Pure JS 実装の単体テストではめちゃくちゃお世話になった。

ドキュメント

基本 MDCgooglemdc keyword / mdc xul keyword / mdc xpcom keyword / site:developer.mozilla.org keyword で検索、日本語のページ無かったら英語ページを見る。JS のメソッド名, インターフェイス名からとりあえず検索。

グリモン使ってた。

あとインターフェイスについては http://www.oxymoronical.com/experiments/apidocs/ を時々参照。xulplanet はなんかちょうど良い(悪い)タイミングで落ちていたので見れなかった。

参考になった拡張・ソース

  • なにはともあれ Firefox 本体
    • 3.1 beta2 時点のソースコードhg で落として、mozilla-central/browser を git に突っ込んでた。git に突っ込むのは git grep しまくるため。
    • DOMInspector で要素や実装を調べて、ソースレベルで調べたければ git grep する、という流れ
    • utilityOverlay.js ( chrome://browser/content/utilityOverlay.js ) は browser.js ぐらい重要だと思うので読むべき。getTopWin / openUILink とか知らなくて実装しようとしてしまった。
  • Piro たんの XUL 全般 ( 特に XUL/Migemo を参考にした )
    • http://piro.sakura.ne.jp/xul/xul.html
    • https://www.cozmixng.org/repos/piro/
    • コード的にトリッキーなことをしておらず、とても読みやすい。さすが長年拡張を作っているだけあってポイントを押さえている。またどうしてもバットノウハウで回避しなくてはならない場合などの対策もてんこ盛りで大変参考に!しかもほとんどの拡張をメンテし続けるのは尊敬。
  • Tombloo
    • いろいろなテクニックを特にローダー周りで行っているため、してるため最初はどう読んで良いか解らなかった
    • Database.js は自分が見たコードの中では、一番 chrome 権限でうまく SQLite を ORM として抽象的に扱えるライブラリだと思う。SQLite を拡張で使うなら利用しない手はない。
    • getter/setter もきちんとコピる extend 周り、utility 周りも必読

よく初心者向けドキュメントに書いてあるけど全然使わない関数

dump()。コンソール見るのめんどいし、Fx 3 以降なら Application.console.log() が大体のコンテキストですぐ使えるし…。


その他・開発にあったら便利な参考にならない事柄

  • Firefox に詳しい人
    • となりに座っていた nanto_terapad さんと一緒に実装進めてたので、解らないことをききまくれた。超幸運というか、nanto_terapad さんがいなかったらどうなっていたことやら…。

piro_orpiro_or2009/04/02 20:37>dump()
Firefox 3以降だとほんと使わなくなっちゃいましたねぇ。FUELさまさまです。

secondlifesecondlife2009/04/03 11:03FUEL は(一部)とても便利ですよねぇ。

otsuneotsune2009/06/15 09:38:hbと:hbtの使い分けですけど。vimp流儀だと
「:hbでそのタブに開く。:hb!でタブで開く」というほうが直感的かなぁと思います。
(args.bangを見れば良いです)
:hbtに慣れた人は:hb!にmapすることで使い続けられますし。

secondlifesecondlife2009/06/15 10:37確かに vimp だとそういうマッピングは多いんですが、bang をつけると似てるけど別の挙動、という意味だと思ってるので、entry ページを開く今の挙動でいいかなぁ、と思ってます。

otsuneotsune2009/06/15 17:16だとすると
:hbと:hb!
:hbtと:hbt!
の挙動が欲しいかなぁ。

otsuneotsune2009/06/15 17:20↑意図が伝わらないかもと思ったので追記。
要するにvimp流儀だとNEW_TABとCURRENT_TABが「似てるけど別の挙動」だよね。ってことです。

secondlifesecondlife2009/06/15 17:28vimp 標準の :open が :open! で NEW_TAB になるんだったら、そう実装したと思うんですけどねぇ。

もうすでに :hb! / :hbt! で args.bang を使ってるため、今から変更するのは個人的にも混乱しますし、あっても設定による切り替えかなぁ、と思います。