たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
ここ最近のツリー型タブの状況まとめ。
先週末くらいから現実逃避度合いが加速して、それがそのまま頻繁なバージョンアップに繋がっています。この1週間くらいでやったことのうち大きなトピックは以下のような感じか。
他、細々とした改善が多数。だいたいAMOの配布ページのディスカッションに寄せられてた障害報告や要望への対応が多い。
以前TBEをやってた頃は、あまりに規模がでかかったこともあって、とてもじゃないけど他の拡張機能のために配慮するなんて事はできなかった。その点ツリー型タブとかの最近作った物は、なるべく機能を絞り込むように・見通しがよくなるように気をつけている(つもり)ので、あの頃よりもずっと楽にコードを書けてると思う。具体的に名前が挙がったアドオンについて、わりと片っ端から対応用のコードを書いていけてるのも、そういう事情があってこそだ。
しかしいくらサンドボックスから出られたからとはいえやたらたくさんコメントが付いて、正直追いかけるのだけで大変だ。何でだ?と思ってたら、数日前にlifehackerで紹介されてた。コメント欄を見てみると、おおむね好評なようで嬉しい。Firefoxのユーザ全体のうちこの拡張機能を使ってくれてる人の割合は物凄く小さいものだとは思うけど、英語圏はなにぶん人の数が桁違いに多い。英語でリリースしておくと日本語だけでリリースするより多くの人に誉めて貰える&喜んで貰えるので、僕のような構ってちゃんで誉めてもらえないとロクに動けない人間にとっては、その点では都合がいいと言えるかもしれない。
マルチプルタブハンドラによる複数タブのドラッグ&ドロップに対応するためのAPIの説明を書いた。拡張機能作者の人は、なんかおもしろい使い方を考えてください。
なお、このAPIはバージョン0.2.2008022701以降で利用可能です。
goo辞書 1.0.1から、about:configあたりでextensions.goodictionary.context.shortcut.enabledをtrueにすると、キーボードショートカットが使える。ページ中の文字列を選択した状態でCtrl-Shift-Eで英和、Ctrl-Shift-Jで和英、Ctrl-Shift-Nで国語・新語辞書の検索を実行。
という、小ネタ。
自分はセカンドサーチを入れた状態で選択語句を検索バーまでドラッグ→ポップアップから検索エンジンを選択してドロップ、という操作の方をよく使うので、キーボードショートカットはあまり使わないんですけどね。文字列のドラッグ&ドロップを「検索を実行する」という用途にだけ使うんだったら、ブラウズ領域全体を使って検索エンジンを選べるWeb Search Proの方が便利かもだけど、僕はテキストエリア内で文字列のドラッグ&ドロップで移動するという編集の仕方も時々やるので、それができなくなってしまうのは嫌だった。敢えて検索バーまでドラッグすることで明示的に「これからこの言葉を検索したいです」って指示してやるというスタイルの方が性に合ってる。自己主張しすぎない控えめなのが好きなんですよ。
まーこんな記事誰も読みたがらんだろうとは思いますが。ここ数日取り組んでたマルチプルタブハンドラでの複数タブの同時ドラッグ&ドロップ処理について一段落付いたので、やったことのまとめを文章で残しておこうかなと。
さて。タブのドラッグ&ドロップの処理になんかの機能や処理を加えようと思ったら、まず思いつくのは、gBrowser(tabbrowser要素)をnsDragAndDropのオブザーバとして利用するために定義されているonDragStart、onDragOver、onDragExit、canDrop、onDrop、getSupportedFlavoursあたりのメソッドを上書きするというやり方。実際、ツリー型タブではそうしてる。Tab Mix Plusの場合はもいっこ上のレベル、ondraggestureなどのイベントハンドラを書き換えてnsDragAndDropに渡すオブザーバそのものを入れ換えるという事をやってるけど、まあ、これも要するに同じことですね。
ただ、マルチプルタブハンドラの場合はその方法は使いたくなかった、というか、使えなかった。自分の使い方ではツリー型タブとの組み合わせが必須なんだけど、そうなると、もしマルチプルタブハンドラの実装を同様の方法でやってしまったら、組み合わせて使うと二つの拡張機能が同じ場所(nsDragAndDrop用のメソッド)を互いに上書きしようとするわけで、これはもう衝突すること間違いなしなワケですよ。だから何としても別の方法を考えなきゃならんかった。
ソース表示タブの新版をAMOにアップロードしたら、レビューの結果サンドボックスに留め置かれることになってしまった。理由は二つあって、一つはページのタイトルが表示されない問題があるということ(直したはずなのに何故レビューをした人の環境ではまだ起こってるのか、原因不明。詳しい情報を聞いてみたいと思ってる)。もう一つは、AMOのアドオンのページでレビューが付いてないこと。
って、一つ目はさておき、二つ目は「そりゃないだろ」って思った。前々から気にはなってたんだけど、AMOでは、公開申請される前のサンドボックス時代に付けられたレビューは公開された後は見えなくなってしまう。それを理由に「レビューが付いてないからサンドボックスね」って、システムの問題をこっちのせいにされちゃたまらんよ。
今回のことで改めて詳しく調べて分かったんだけど、AMOのシステムはサンドボックス時代に付けられたレビューに関して以下のような問題があるようだ。
念のため試験運用中の次バージョンAMOを見てみたら、全く同じ問題が起こっていた。Source Viewer Tabのページを見れば分かるけど、見出し部分や検索結果には「2 reviews」と表示されているのに、ページの中には肝心のレビュー本文が表示されていない。他のアドオン、例えばDelicious Bookmarksあたりではちゃんとレビューが表示されているが、これらはアドオンが公開された後に付けられた物なんだろう。
――という風なことを書いたメールをエディタ用MLのアドレスに投げてみたけど、こういう問題って本来はどこに投げるべき物なんでしょうね。
以下は実際に送ったメール。
表題の通り。Multiple Tab Handlerではタブを選択して操作する機能があるけど、選択後のタブをドラッグ&ドロップしたら全部一緒に移動するようにしてみた。
というのはわりとすぐにできたんだけど、ツリー型タブとの組み合わせが少し大変だった。ツリー型タブがある状態のタブの移動は、単にタブの位置を変えるだけじゃなく、ツリー構造の変更も伴うから。故にツリー型タブではタブのドロップ時の処理をほとんど丸ごと置き換えるようにしていて、そっちの方でMultiple Tab HandlerのAPIを使って対応する(つまりMultiple Tab Handlerはツリー型タブがあるときは、タブのドロップ時は特に何もしない)ようにした。
あと、Firefox 3ではCtrl-ドラッグでタブを複製できるようになってるんだけど、ツリー型タブをこれに対応させるのにも手間取った。というか、今まで適当な処理でそれなりに動いてた部分について潜在していたバグが一気に表面化したという感じ。丸1日くらい使って地道に直した。
ツリー化された複数タブの選択→ドラッグ&ドロップの挙動については、例によってAdobe Illustratorのレイヤ/オブジェクトツリーの挙動を参考にしてる。
以下は未実装の項目。
Firefox 3でタブまわりの拡張機能の作りやすさが深刻なまでに低下した問題について、バグを立ててみたものの、余裕で放置食らってて、もう気づいてもらえることに期待するのが間違いなんだなとようやく悟ったので、諦めてFirefox 3のタブの中の要素構造をFirefox 2互換にするライブラリを作った。
上記3つのファイルを拡張機能の中に放り込んで、オーバーレイでtabFx2Compatible.xulを読み込ませるだけで使える。ツリー型タブや情報化タブのようにloadイベントのタイミングで初期化をするアドオンであれば、それ以外何も手を加えなくても、Firefox 2のタブを前提にしたコードのままでFirefox 3上で動くようになる。はず。あと、複数のアドオンで異なるバージョンのライブラリが読み込まれた場合は、その中で最新の物を有効にするようにしてある。
Windows用のMinefield Beta3でしか動作確認してない。
というわけでこれを組み込んでツリー型タブと情報化タブを更新した。
Firefox 3では更新情報の通知で具体的な説明文を配信できるということで、実験というか実践というか練習というかともかくそういう目的もあって、自前で公開してる方でもこの機能を使うようにしてみた。
問題は更新情報をどこに置くかということ。Firefox 3の新機能は、指定されたURLのXHTML文書をXSLTでサニタイズしてから表示するという物なので、既存のHTMLをそのまま参照させることは残念ながらできない。そこで、幸いというかなんというか、Rewind/Fastforward Buttons用に勝手SITEINFOを提供しようと思ってBlosxomで簡単なWikiっぽいものを作ったばかりだったので、これを流用して解決することにした。ここに更新情報を置いてflavourでapplication/xhtml+xmlで出力するようにしたあと、RewriteRuleで日本語版は日本語版・それ以外の言語は全部英語版に飛ばしている。早速戻る/進むサムネイルをアップデートしてみたところ、ちゃんと情報が表示されることが確認できた。
ところで、今までは更新情報のHTMLからupdate.rdfを生成するのに秀丸マクロを使ってたんだけど、このWikiっぽいものに更新情報を載せるというステップが加わるとさすがに秀丸マクロじゃ辛い。ということで、思い切ってMozilla用のJavaScriptに移植してみた。自作の偽DOM風サブルーチンじゃなくて本物のDOM、それもXPathとかバリバリ使いまくれるので、非常に楽だった。こんなだったらもっと早くにやっときゃ良かった。
McCoy用のアドオンにすればMcCoyだけで一連の作業を半自動で行えるようになるけど、今のところはまだそこまでたどり着けてない。そこは今後の課題ということで……
昨年11月にエントリーして([1]、[2])たFirefox 2アドオンコンテストの結果がやっと発表されたよ。ずいぶん遅かったなあ……
結論から言うと、かすりもしませんでしたイヤッホー!
というわけでMozillaのえらい人にはやっぱりなれそうもないので今後はもえじらのエロイ人としてアイデンティティを確立していこうかなと思います。迷惑ですかそうですか。
しかしグランプリには選ばれなかったとはいえ、15人中3人は日本人か。国内シェアのわりには健闘してるよね。
Second Search更新した。Firefox 3(Beta3)とThunderbird 2に対応。
Thunderbird対応にあたって、全体的にコードに手を入れた。Firefoxだけでしか使わない部分とThunderbirdでしか使わない部分と両方で使う部分の3つにファイルを分割している。似たような構造の物に対してはこれで比較的楽に対応できるようになったんじゃないかと思う。
Firefox 3については、Placesへの対応がメイン。キーワードを設定されたブックマークを検索エンジンと同等に扱うという機能がSecond Searchにはあるんだけど、僕以外にどれだけの人が使ってるんだろう。
あと、「他の検索エンジン」サブメニューのあたりのコードもだいぶ書き直した。この辺はほんとは特に触る予定はなかったんだけど、Organize Search Enginesとの競合の解消も兼ねて、なるべく汎用的になるように変更している。っていうかテストしててなーんかうまく動かないなーと思って不思議だったんだけど、よく調べてみたらOSEの側にSecond Search用のハックが入っててそれが干渉していた。僕のアドオンのためにわざわざハック用のコードを書いてくれるなんて……よくあんなスパゲッティもスパゲッティなコードを解読してくれたもんだなぁ……と嬉しく思ったりもしたけど、このままだとせっかく修正したのがきちんと動いてくれないので、動くようにするパッチを作者の人に送りつけてみたり。