Home > Latest topics

Latest topics > 拡張性や互換性を高く保つ設計とか

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

拡張性や互換性を高く保つ設計とか - Apr 25, 2007

AiO GesturesSplit Browserの連携を試みてみよう、と思って挫折した。基本的にSplit Browserは、Firefoxの初期状態の構造であることを前提にして開発されている拡張機能とは、とても相性が悪い。ハック用のコードを書いてみようと思っても、変更箇所が膨大になりすぎて、とてもやる気が起こらない。FireBugとの連携が結局中途半端な状態で止まってしまってるのもそのせいだ。

Split Browserが連携しやすいのは、Firefox全体に渡ってではなく、tabbrowserというウィジェットに対してだけ拡張を行うように設計されている物だ。マルチプルタブハンドラ情報化タブやなんかは最初からそういう風に設計したので、わりかし簡単に連携がとれるようになった。

たとえば僕の場合は、マルチプルタブハンドラの実装が代表的な例なんだけど、tabbrowserウィジェットに対する拡張はできる限りinitTabBrowser()destroyTabBrowser()というメソッドにまとめておいて、極端な話、tabbrowser要素の動的な増減にも対応できるようにしてある。こういう風な構造になっている拡張機能なら、Split Browser側で簡単に対応できる。実際、マルチプルタブハンドラとの連携のためにSplit Browserに加えたコードは以下の内容だけで済んだ。

if ('MultipleTabService' in window &&
  SplitBrowser.tabbedBrowsingEnabled) {
  var appcontent = document.getElementById('appcontent');
  MultipleTabService.__defineGetter__('browser', function() {
    return SplitBrowser.activeBrowser;
  });
  var initMTS = function(aEvent) {
    MultipleTabService.initTabBrowser(aEvent.originalTarget.browser);
  };
  var destroyMTS = function(aEvent) {
    MultipleTabService.destroyTabBrowser(aEvent.originalTarget.browser);
  };
  appcontent.addEventListener('SubBrowserAdded', initMTS, false);
  appcontent.addEventListener('SubBrowserRemoveRequest', destroyMTS, false);
  window.addEventListener('unload', function() {
    appcontent.removeEventListener('SubBrowserAdded', initMTS, false);
    appcontent.removeEventListener('SubBrowserRemoveRequest', destroyMTS, false);
    window.removeEventListener('unload', arguments.callee, false);
  }, false);
}

まあちゃんとプログラミングの勉強をした人から見たら、これでもまだまだ無駄が多いんだろうとは思うけど……

自分自身がそうなんだけど、他の拡張機能と同時に使われるかもしれない、ってことを敢えて意識していないと、ついついFirefoxべったりの書き方で作ってしまう。その結果、スケーラビリティとかそういうものが低くなってしまって、後で色々と泣きを見ることになる。これは自分にとって一種の保身術でもあると言えるのかもしれない。

分類:Mozilla > XUL, , , , , , 時刻:15:36 | Comments/Trackbacks (0) | Edit

Comments/Trackbacks

TrackBack ping me at


の末尾に2014年1月19日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「noda」なら、「2007-04-25_compatibility.trackbacknoda」です。これは機械的なトラックバックスパムを防止するための措置です。

Post a comment

writeback message: Ready to post a comment.

2014年1月19日時点の日本の首相のファミリーネーム(ひらがなで回答)

Powered by blosxom 2.0 + starter kit
Home

カテゴリ一覧

過去の記事

1999.2~2005.8

最近のつぶやき

オススメ

Mozilla Firefox ブラウザ無料ダウンロード