たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
XUL Runnerを使うと、FirefoxやThunderbird等に依存しないXULアプリケーションを作れるってことで、そのうち構造化エディタの構造化テキスト形式を扱える簡易エディタでも作ってみようかなー。StedSidebarはあくまで拡張機能だし。
まあ、思ってるだけで具体的なアクションは何も起こしてないんだけど。
Firefox 2.0に向けて、Trunkでネイティブのタブブラウズ機能が強化されたそうで。
変更点を見てみると、かなり広範囲に渡って改変が加えられてる。別に変えなくても良さそうな……というか、美学や分かりやすさ的には変えたり統一したりした方がいいんだけど過去との互換性のためにそのまま置いとかれてたような部分にも。
ここまで来ちゃうと、1.x系向けと2.x系向けを両立できるようなものを一つの拡張機能で実現するというのはかなり厳しくなってくるなあ。ていうかTBEは確実にブランチせざるを得ない。しかし僕の場合、行動原理が「その環境を常用するのに必要だと思ったものを片っ端から入れてったらこうなった、せっかくだからそれを公開してしまおう」というものなので、今の常用環境でない環境のために頑張る気にはなかなかなれない。困った。
うわ、やべっ。家の常用環境がnightlyのmozilla-1.8ブランチで、Trunkじゃないから互換性あるだろうって安心しきってたら、Firefox 1.5リリース版でTBEがメタメタになってしまってた。
原因究明は骨が折れそうだ……
TBEでサブツリーを展開したとき、Windowsのエクスプローラのフォルダツリーのように、以下の挙動を行うようにした。
なんか単独の拡張機能を期待されてる風な気もするんだけど、iRider風の動作を実現しようというのは、ウンコ拡張と名高い(←なんかウンコを拡張してるみたいでアレな形容ですね)TBEの新機能として実装しようという話ですよ。ごめんなさいね。
というわけで公開しました、TBE 2.1.2006011301。iRider風にする場合は、設定ダイアログのツリーで「タブブラウザ拡張」を選択して「プリセット設定を呼び出す」で「iRider互換設定」を選べばOK。初めてインストールした場合も同じ要領で。
ドラッグによるタブの選択を実装した。
あと、リンクまわりとか細かい不具合も修正。すべてのリンクを常にタブで開く設定は今まで自分でも使ったことがなかった(ぉぃ)ので、フレームを使ったページで困るということに気付いてなかったよ。
設定GUIをもう少し練り込んだら公開しよう。
malaさんの「2005年もパクられてこなかったもの私的まとめベスト3」に挙げられている「iRider」。ただのサムネイル表示型タブブラウザ?と思ってたんだけど、デモをよーく見てみると、これはタブブラウザというよりは、履歴のサムネイル&ツリー表示機能を持ったブラウザという感じのような挙動を示すようで。
良く出来たものはパクるべきです
という教え(?)に従って、パクってみることにした。
ツリー表示についてはTBEですでに実装済みだったので、とりあえず、タブにサムネイルを表示する所から取り掛かってみた。色々悩んだ末、サムネイルの位置などタブの外観はiRiderを丸パクりすることに(ぉぃ)。
そういえば、サムネイル式のタブを実現するものとしてはTab Sidebarがあるけど、今見たら、それぞれのタブ(のようなもの)に小さなナビゲーションバーが付いてて、また違った方向に進化してってるようですね。閑話休題。
「戻る」「進む」で「現在のタブを開いたタブ」「現在のタブから開いたタブ」に移動する挙動については、戻る・進む用の履歴が無いときにはタブの親子関係を走査する、という形で実現してみた。
ツリー表示といい、このあたりの機能の根幹となる「タブの親子関係の保持」は2年くらい前にはTBEに実装済みだったんで、今回の変更も、表面的な所をちょこっといじるだけで済んでしまった。当時の自分の先見性には感動するね。嘘です。単に浅い考えでオーバースペックの機能を実装してしまったのを今になってようやく有効利用できるようになってきただけです。
なでるインターフェースについては、タブのドラッグ&ドロップとの兼ね合いがあるので、どうしたものかと思案中。
デバッグよりも新機能追加の方がはかどってしまうために要らん機能ばかりが増えていく「Piro拡張化」がまた加速してますよ。
課題は山積み。
――×ボタンドラッグでまとめて閉じる、を実装した。クローズボックスの上でドラッグ開始で「閉じるタブ」の選択操作が始まり、他のタブのクローズボックス上を通過するとそのタブが「閉じるタブ」として選択される。もう一度通過すると選択が解除される。
フォーカス切り替えについては設定でON/OFFという風にするしかないかな?
英語圏の人?が、高橋メソッド in XULを紹介してくれてる。しかも高橋メソッド in XULによる高橋メソッド in XULの説明 in English(ややこしい)なんてものまで作ってくれてる。スゴイ情熱だ!
ところで、確か以前、高橋メソッド in XULのページを英訳してくれた方がいたと思うんだけど。メールで連絡を貰ったのかそれ以外の方法だったのか、反応するのを忘れたまま放置してしまって、すっかり分からなくなってしまいました……申し訳ないです。
分離したサイドバーのウィンドウ内でidがreporterItemsBroadcasterなbroadcaster要素が破棄されると、タブを切り替えてもタイトルバーの内容が変わらないという問題が起こる、ということが判明した。ここが原因のようだ。
調べてみたら、これはFirefox 1.5で正しく表示できないサイトを報告するための「Reporter」が使用している要素らしい。処理が記述されている reporterOverlay.jsの中を見たら、一発だった。
Reporterはウィンドウを開いた時にプログレスリスナをgBrowserに対して設定する。このプログレスリスナはページ読み込みのタイミングで「ブラウザに読み込まれたURI」を調べ、Reporterでレポート可能な種類のページかどうかを判別し、先のbroadcasterにdisabled属性として指定する。これによってReporterのメニュー項目が必要に応じて有効化・無効化されるという寸法だ。
問題は、ウィンドウを閉じるときにこのリスナが登録解除されないところにあった。サイドバーのウィンドウが閉じて、broadcasterが消滅しても、このリスナは生存し続ける。ページが読み込まれると、存在しないbroadcasterを参照しようとしてエラーになる。その結果、他のプログレスリスナの処理までもがこいつのせいで中断されてしまって、ウィンドウのタイトルバーの内容が更新されないという問題につながる。