たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
Bugzillaの方のコメントにも書かれてるけど、テキストシャドウを公開した後で、2年以上前に同じようなことをやってた人がいたことを知った。いやぁ、薄々「既出なんじゃね?」とは思ってはいたんですけどね。
一応、対応してる機能(CSSのセレクタをかなりまじめに解釈してる)や使い勝手(XBLを使ってるので影付きテキストのコピペで困らない、アドオンだから自動アップデートできる、など)の面でアドバンテージはあると思うけど……まあ追加のコメントにも書いたように、頑張ればそれもGreasemonkeyスクリプトで実現は可能そうではあるわけで、アドオン嫌いグリモン好きというタイプの人は頑張ってみるのもいいかもね。
テキストシャドウは原理上、影付きのテキストをコピーしようとした時に、影のために使っているダミーテキストまでコピーされてしまうのが大きな問題だった。フォーカスできなくしたり選択できなくしたりすることはできても、コピーの対象から外すということは、普通にやる限りはどう頑張ってもできない。
で、これをどうやって解決したのかという話なんだけど。
以前XHTMLルビサポートを作った時に、略語のフルスペルをルビで表示するという機能も持たせていて、そうやって表示したフルスペルはどう頑張ってもコピーできないという現象が起こっていたんだけれども、これがヒントになった。
略語のフルスペルの表示のためにルビサポートではバインディングを使っていて、どうやらバインディングで埋め込まれた匿名内容の中のテキストノードは、触れることもコピーすることもできないようだった。そして、XBLの<children/>
要素の位置に配置された元々の子要素や子のテキストノードについては、通常通りアクセスできる。
ということは、逆に言えば、コピーの対象にさせたくないテキストはバインディングを使って匿名内容の中に入れてやればよいというわけだ。
ダイナミック疑似クラスの問題はまだ残っているとはいえ、もっとも致命的な問題はこうして解決できたので、やっと胸を張って「Firefoxをtext-shadowに対応させました」と言えるようになったと思う。
テキストシャドウを地道に改良し続けている。
Geckoもtext-shadowに対応してくれ!というバグにこれを貼り付けて煽ってみようかと思ったら、貼られていたテストケースで::first-line疑似要素が使われてて表示できなくてこりゃまずいと思ったんで、元々対応する気の無かった疑似要素と疑似クラスにまで頑張って対応してみた。疑似クラスについてはGeckoすら対応してない物にまで対応してたりして。
Text Shadow。名前の通り、CSS3のtext-shadowを無理矢理再現するインチキ拡張機能。
以下は原理的にどうしようもない問題。
以下はめんどくさいから実装をさぼってる部分。そのうちどうにかするかもしれないし、しないかもしれない。
セレクタから要素ノードを選択する処理は、selector.jsを丸パクリ。でも組み込んでみたら予想以上にまともに動いてくれなかったので、半泣きになりながら修正してやっとちゃんと使えるようにした。
前のエントリへのコメントを受けて、ラテン文字の修飾記号を無視して検索できるようにしてみた。身近な例で言うと、「Exposé」を「expose」で検索できるとか、そんな感じ。
変換テーブルはATOKの文字パレットとにらめっこしながら手動で作った物なんで、精度の方はいまいち怪しい。いちおう気がついた範囲で、字形として含まれてるものと、それに相当する「アルファベットの文字+修飾記号用の文字」のパターンを網羅したつもりなんだけど、それ以外のパターンには対応してないし、抜けもありそう。ネイティブの人が手を入れてくれると大変助かるんだけどなあ。
Lifehacker.com(英語)でとりあげられたからだろう、日本語以外のページでちょっとだけXUL/Migemoが紹介されてる。スペイン語やトルコ語のエントリもあった。AMO効果はすごいな。
でも残念なことに、注目されてるのはSafari 3風のインライン検索ハイライト機能だけ……しかも「他の機能イラネ」とか書かれてるし。いやいやむしろこの機能の方がオマケなんですけど。まあメインの機能がCJK以外じゃ大してメリットなさそうだから、そりゃ、こうなることは当り前なんだけど。
立て続けにアップデート。
Find Toolbar Tweaksのボタンのラベルを消す機能とかいいなーと思ったんだけど、同時に入れたらXUL/Migemoが使えなくなってしまったんで、XUL/Migemoの方に似た機能を実装してみた。仕事でメインのUbuntuが今時1024×768で普通に使ってるとメッセージ欄がMigemoのチェックボックスに重なるから、地味に重宝する。
入力されたローマ字の方の文字数でなく、それを元に生成された正規表現にマッチしたページ内の文字列の最大の長さを、自動強調表示のトリガーにするようにした。余計な処理がいっこ挟まったので実行速度の低下が心配だったんだけど、実際に動かしてみたら大して変わらなかったので、採用に踏み切った。でも実際の所あんまり便利になった実感はなかったりして……
特定の入力パターンに対してちゃんと正規表現を生成できなくてエラーになることがあるみたいなんだけど、どういう場合にそうなるのか見当が付かなくて困る。
0.7.5からのプチ更新……
クイックMigemo検索の自動開始を初期状態では無効にするようにした。Firefox本体のFind As You Typeも初期状態じゃ無効になってるし、最近では1キーショートカットのあるWebサービスが多くなってきたみたいだし、自分自身この機能は速攻で無効にしてるしで、前々から変えよう変えようと思ってたんだけれども、変える機会を逸してて、先日ついに変える決心をして配布ページの説明もそれに合わせて書き換えたのに、肝心のコードの方を書き換え忘れていた。自動開始と自動終了の設定を同期させるようなコードを加えたのはこの初期設定を変えるための変更だったんだけど、ほんと、一番大事な所をスコーンと忘れていた……
※0.7.5+にしたら動かなくなった! という人は、設定で「キー入力でクイックMigemo検索を自動的に始める」にチェックを入れてみてください。今回変更したのはここの初期値(以前:初期状態で有効、現在:初期状態で無効)です。
0.7.5では、今までずっと懸案事項だった、「kanzi」で「感じ」とか「漢字」とか色々な候補がヒットした時の強調表示が一つの候補しか強調できないという点を、改善してみた。元々のハイライト処理が普通の検索機能をベースに作られてたんで、その部分をそっくりそのままMigemo検索に置き換えたらできてしまった。
あと、強調表示の最小文字数を指定できるようにしてみた。これはFind Toolbar Tweaksからのパクリ。隠し設定にするもしくは詳細設定の方に追いやっても良かったんだけど、今の所はなんとなく表に出してある。これに伴って、実質的には強調表示の常時有効化も初期状態からONにしといてもほとんど問題無さそうなレベルにはなってると思うんだけど、多分それやるとまた叩かれるんだろうなーと思って、直前になってやはり初期状態では無効にするように戻した。というエピソードもあったりする。
初期設定のチューニングの仕方が一番悩みどころ、と言っても過言ではない気がする。
Mozilla Firefox Thunderbirdの拡張あれこれで指摘されている問題を修正した。あとどこかのブログで「pe-zi」で「ページ」を検索できないという問題も指摘されていたので、それも直した。前者は国際化を前提にしてAPIを色々変えた時のregression、後者はローマ字と日本語の相互変換処理を入れ換えた時のregressionだった。
「膨大な設定」と評されていたのに凹んで、少しでも分かりやすくならんものだろうかと思って少し設定まわりをいじってみたけど、効果の程は分からない。
せっかくAlice0775氏がレビューしてくれたんだけれども、「もっとちゃんとしたレビューじゃなきゃ承認できねえよ(意訳)」と言われてしまったショボーン。「以下のリンク先も読みやがれ」と、2つのページを紹介された。
これ見て初めて知ったけど、Web上のブログとかでちゃんとしたレビューがある場合はそれへのリンクを書いてもいいのか。でもXUL/Migemoのレビューは多分日本語圏のサイトにしかないよ……