たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
Firefox 3 Hacks にあるSQLがあまりに長い件 - hogehogeでツッコミを入れられてしまいました……SQLむずい><わけわかんない><
SQLといえば、Firefox 3.5でも機能に影響を与えない範囲で内部的なSQL文がいくつか修正されたそうでるかもしれないそうだ。
でもTrunkにチェックインされたパッチを見ても、どうしてこれで速くなるのか、何が良くなかったのかが、さっぱりわかんない。
XUL/Migemoのロケーションバー周りの機能でもSQLをがんがん使いまくってるけど、Firefox 3 Hacksの件で明らかなように僕のSQL知識不足は深刻なので、きっと物凄いオーバーヘッドがあると思う。誰か改善してくれないかなあー。
次の版をリリースする前にやっとかなきゃ、と毎回毎回思いながら放置してた、ロケーションバーまわりの自動テストを昨日の晩からちょっとずつ作り始めてる。
どっちもUxU用のテストケースです。Firefox 3.1で導入されたキーワードによる絞り込みのテストは以前書いてたので、それ以外の、SQL文を生成したりとかデータベースから結果を取り出したりとかの部分のテストを今作ってる。
何故ずっと後回しにしてしまってたかというと、Placesのデータベースが絡んでくるから、Railsのfixtureみたいなのを上手くやれる仕組みができないことにはどうにもならないと思ってたせい。プロファイルを指定してテストを実行する機能を使えば問題ないんだけど、これはテストの実行がめちゃんこ遅くなるからなるべく使いたくないわけで……(←ひどい)
でもそれを言い訳にしていつまでも放置してる方が良くないよなと思ったので、一念発起して、Placesデータベースとの間でべったりだった所とかメソッド間の依存でシッチャカメッチャカになってた所とかを整理して、純粋にロジックだけの単体テストをしやすいように修正を進めてる。千里の道も一歩から……ちょっとずつ切り崩して、ゴールに近づいていこう。
最近ずっと仕事でまたRuby on Railsやってて、前は既に動いてたプロジェクトのお手伝いという立場だったんだけど今回はゼロからのスクラッチだったから、何か作ってはすぐテスト書いて……みたいなサイクルで作業してて、その影響だと思う。テスト書かなきゃ気持ち悪い、みたいな。
しかしずっとRubyばっか書いてたから、ついつい普通のハッシュでhash.each
とか書きそうになってしまったり、メソッドの最後のreturnを書かずに値だけ書いてしまいそうになったり、行末のセミコロンを書き忘れそうになったり、ハッシュの前後を囲うブラケットを書き忘れそうになったり、メソッドを呼び出す時に括弧を書き忘れそうになったり、function
と書くべき所をdef
と書きそうになってしまったり、だんだん思考が侵食されてきてて困る。Ruby脳の恐怖だ。
5日追記。
ダミーのデータだけを登録したplaces.sqliteを用意して、それを使って検索のテストを行うようにしてみた。SQLite Managerを使ったけど、結構めんどかった。fixtureをCSVかなんかで用意してテスト実行時に自動でSQLiteデータベースを作成する、みたいな機能がUxUに欲しくなってくる……
というわけでXUL/Migemoの方でも対応する事にしました。Trunkではすでに組み込んでありますが、リリースはまだです(やる気がないので)。ちなみに上記エントリで紹介されている隠し設定の値を直接見に行ってるので、設定さえしてあればFirefox 3.0でも動作しますっていうか手元で動作してます。
ロケーションバーまわりの自動テストができるようになってからリリースしたいなあ。
今のXUL/Migemoでは
という改造を施しているので、その点で検索結果に差異が出ると思う。わりとどうでもいいと言えばどうでもいいことなんだけど。与える辞書、ローマ字の変換テーブルとかをDLLの外に置けるになってればいいんだけどなあ。まあ、中国語やハングルや発音記号のある他の言語にも対応できるとは言っても、実際にそれらの言語用のエンジンを開発してくれる人がいない現状では、日本語決め打ちでいいのかもだけど。
ページ内検索の速度の改善はもちろん重要なんだけど、それ以外の部分でもXUL/Migemoを使えるようにしてみると、そもそも正規表現でのマッチング自体が凄く重いということに気がつく。これはAutocomplete Managerとの組み合わせで特に感じられる。Thunderbirdのクイック検索に対応した時のように、なるべくマッチングの回数自体も減らすようにロジックを変更しないと、この問題は解決できないっぽい……
前のエントリへのコメントを受けて、ラテン文字の修飾記号を無視して検索できるようにしてみた。身近な例で言うと、「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のレビューは多分日本語圏のサイトにしかないよ……