たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。
以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
一旦は実装完了したと思ったんだけど実はまるっきり仕様を読み違えてた事が判明してから直さなきゃと思ってるうちに夏コミがあったりFirefox 3 Hacksの校正があったりですっかり放置してた、Firefox 3.1からの新機能への対応をぼちぼちと。
ていうかこの絞り込み機能、めっさ使いにくい気が……せめて初期状態のキーワードはもうちょっとわかりやすい物にした方がいいと思うんだ。こんなそこいらの使われてない記号を適当に当てはめただけのものなんて、とても憶えられんよ。
しかも複数指定可能とかで頭がこんがらがってきたので、手戻りを防ぐために自動テスト書いたりもしてみた。こういう時ほんとにUxUがあって良かったと思う。
あとlevelさんのエントリの後半で触れられてるスマートキーワードとの連携についても、パッチを見ながら実装してみた。でもこれって実装を見る限りPOSTメソッドのスマートキーワードには非対応ですよねぇ……どうすんだ?
他に、すでに開かれてるタブにマッチした時はどうこうするという話も出てるみたいだけど、僕としては本家の実装が出てきてからその動作を真似る形を取らざるを得ないので、現状は様子見です。
ああ、あとすべて強調表示が選択範囲になったことへの対応もしなきゃなあ。見た目の問題だけじゃなく、今のXUL/Migemoは選択範囲の位置で現在の検索のフォーカスを判断してるから、何もかもが動かなくなる予感。
textboxのsearch型というのは何か影響するんだろうか? 影響有りならこれも対応しないと……
Second Search 0.5.2008090101公開。表題の通り、ロケーションバーから検索できるようにしました。
(スクリーンショット)
ツールバーのカスタマイズでWeb検索バーを外してロケーションバーだけ残している状態だと、ロケーションバーでWeb検索できるようになります。狭い画面を有効活用したい人にオススメ。
将来のFirefoxで検索バーが消滅するかもとどっかで聞いたので「おいおいそれじゃ全然使えなくなっちまうじゃねえか」と思って実装してみたんですが、よく考えたら検索バーが消滅するならこういう機能も標準で付いてしかるべきですよね。ああ無駄な努力。
あと、外観や動作には全く関係ないですが、Firefox 1.5を切り捨てて内部処理を大幅にリファクタリングしました。特にスマートキーワードを検索エンジンとしてリストアップするための機能をだいぶ書き直してます。ブックマークを追加したり削除したりした時の怪しい挙動がだいぶ無くなったと思う。多分。バージョンを0.1上げたのはそれによるところが大きいです。
というわけでXUL/Migemoの方でも対応する事にしました。Trunkではすでに組み込んでありますが、リリースはまだです(やる気がないので)。ちなみに上記エントリで紹介されている隠し設定の値を直接見に行ってるので、設定さえしてあればFirefox 3.0でも動作しますっていうか手元で動作してます。
ロケーションバーまわりの自動テストができるようになってからリリースしたいなあ。
UxUの自己テストを(現実逃避に)ようやく書き始めてみている。今まで無かったのかよって怒られそうだけど……
アサーションのモジュールのテストとかテストケースのテストとか、書いてて頭がこんがらがってくる。
試してみた。
SeleniumはWebアプリケーション用のクロスブラウザな自動テストツールで、独自の書式または好みの開発言語でテストケースを書いて、Webアプリケーションの機能テストを行える。Selenium IDEを使うとFirefox上での操作を記録して(何もないところでクリックするという風な操作も記録される)、Selenium用のテストケース(の雛形)まで生成してくれる。
あーこれはいいわー。Webアプリ開発やるなら絶対お勧めだと思う。FirefoxでSelenium IDE使ってテストケース作って、それをエクスポートして他のブラウザでも自動テスト、ということもできるようだし。
ちゃんとドキュメント見てないからよく分かってないけど、ユニットテスト(単体テスト)より機能テスト(結合テスト)に特化してるような気がした。単体テストには別のツールを組み合わせることになるんだろうか。あと当然だけどFirefoxのアドオンの自動テストには使えない。
19日のShibuya.js in KyotoでUxUの事を話そうと思ってとりあえずその前に他のツールの現状を調べとこうと思ってUxUの元になったMozLabを見てみたら、ライセンスがMPL/GPL/LGPLのトリプルライセンスになってた。フォーク前のMozLabはGPLだけだったのでUxUもGPLなんだけど、こういう場合ってUxUもトリプルライセンスにできたりするんだろうか、それともあくまでフォーク時点でのライセンスに従う事になるんだろうか。
とりあえず中身見てみたけど、スタックトレースをマトモに辿れないっぽいとことかその辺はあまり変わってなかった。先方はMozReplの開発の方に注力してるってことみたいだなあ。対するUxUはサーバソケットの方はほとんど放置(僕が触れないので)でGUIのテストランナーの方に注力してる。まだ返信できてないけどこないだ会社の代表アドレス宛にMozLab作者の人から「英語版ドキュメント無いの?」的メールが届いてたので、このあたりの事を話してマージの方向を目指してみるべきだろうか?
表題の通り、XUL/Migemo 0.10.5からロケーションバーでNOT検索を可能にしました。「mozilla -firefox」という風に入力すると、「Mozillaという単語は含むがFirefoxという単語は含まない」候補だけがヒットするようになります。当然Migemo検索との併用も可能。いらん候補が大量にヒットするのがウゼーと常々思っていたので、バグ修正のついでにサクッと実装してみました。
残念ながら、履歴とブックマークの管理、履歴サイドバー、ブックマークサイドバーでの検索については非対応です。これらの検索機能はPlacesのクエリ機能に依存していて、そのクエリ機能にNOT検索の機能がないためです。クエリにNOT検索の機能が付いたら対応できるかも。
ということでXUL/Migemo 0.10.0やっとリリース。
スクリーンショットを見ると分かるとおり、なにげにAND検索にも対応してます。仕掛けは単純といえば単純で、入力された文字列をスペースで区切ってそれぞれについて正規表現を生成した後に、それらの順列組み合わせを全展開した正規表現をさらに生成する(これを使ってマッチングするので、各単語の順番が入れ替わってもマッチする)という、ものすんごい力業。単語数が増えると組み合わせの数が爆発的に増えて正規表現がクソ長くなってマッチングがクソ重くなるので、実用的な速度が出るのはだいたい3語くらいまでが限界だと思います……
ちなみに順列組み合わせの展開には無駄にMozStorageを使ってます。JavaScriptで一体どーいうアルゴリズムでやりゃぁいいのかちっとも分からんかったのでググってみたら、順列組み合わせの総数を求める方法ばっかり引っかかる中で一つだけSQLの自己結合を使った解き方が見つかったので、それをそのまま使わしてもらいました。pIXMigemoTextUtilsのgetANDFindRegExpFromTermsというメソッドがそれなので、興味ある人は見てみてください。
しかしまあ、今回のこれはFirefox 3 HacksのためにPlacesのことを詳しく調べてたからやっと実現できたようなもんで、つまりFirefox 3 Hacksを読めばこんなことは楽勝でできるようになるかもねということで、皆さんゼヒ買って下さい、と宣伝しておきます。オライリーから8月発売予定です(再掲)。
5日追記。ページ内検索では考慮しなくてもよかった問題が表面化してフリーズする(全角スペース1文字だけにヒットした場合に無限ループに陥ってしまう)という現象が起こってしまっていて焦った。対策を入れて早速更新した。
会社のサイトのコンテンツが一新され、コンテンツにブログが加わりました。何をやってる会社なのか(何ができるのか)分からんと言われがちなようなので、みんながちまちまやってる内容をここに書いていって、「当社ではこういうことができます」的な宣伝材料にする、というのが一応の目的のようです。
で、自分もアドオン開発者向けの自動テストツールであるUxUの使い方の解説なんかを書いてみました。ツールの使い方というよりは、「はじめての自動テスト」みたいな感じになってしまってますが。自分自身がまだ自動テストのことをよく分かってなくて須藤さんとかにしょっちゅう「何考えてんだ(全然分かってねえな)……」的な指摘を受けてばかりなので、自分の理解レベルに合わせるとこんな感じになってしまいました。技術力とか実績とかのアピールの場のはずなのに、こんな低レベルな記事を載せてしまうと却って会社の印象に泥を塗ってしまうんじゃなかろうか、ということをamachangのエントリとか見て思いもしましたが、もう後の祭りです。
UxUのマニュアルのつもりで、またそのうちXUL/Migemoのテストでの利用例の解説の続きを書くかもしれません。
あと、サービス→Mozillaサポート 実績紹介→Thunderbird用アドオンと辿ったページでThunderbird用の地味なパッチもいくつか公開しています。中にはもしかしたら同種のアドオンがすでに世の中にある車輪の再発明な物もあるのかもしれませんが、探すより作った方が早かったんで……