たまに18歳未満の人や心臓の弱い人にはお勧めできない情報が含まれることもあるかもしれない、甘くなくて酸っぱくてしょっぱいチラシの裏。RSSによる簡単な更新情報を利用したりすると、ハッピーになるかも知れませんしそうでないかも知れません。
の動向はもえじら組ブログで。
宣伝。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能!
AMOにアップしたけどダウンロードが0のままなので公開申請できずにいる。やはりレビュアーのほとんどが英語圏なのに「ローマ字で日本語検索」という日本べったりなコンセプトだから仕方ないのか。
というわけで釣り文句として、Safari風ハイライトのことを概要と説明に書いてみた。これで検索にヒットするようになればレビューが付くだろうか。
ダウンロード数上位を狙うとかそういうのはどうでもよくて、このサイト内のXUL/Migemoのページから「セキュアなダウンロード」で飛ばした先がログイン必須という状態をどうにかしたいだけなんですよ。マジで。
……とボヤいていたら、検索結果を画面の中央に表示する処理をパクらせていただいたalice0775氏がレビューを付けて下さった。大感謝!!
AMOに置いてもレビューする人が意味ワカランのじゃないかと思ってビデオ作ってみた。おまけで日本語版も。
なんかピントのずれた方向に頑張りすぎてる気がするよ……
表題の通り。AMOにうpした。
レビューがついたら公開申請するつもり。これが契機になって中国語エンジンとか韓国語エンジンとか実装する人が出てきたら面白いんだけどなぁ。
XUL/Migemo 0.7.0公開した。このバージョンから「Forked Edition」を外して、おこがましくも本家XUL/Migemoの後継とさせていただくことにした。
前のバージョンからの最大の変更点は、ローマ字と平仮名の相互変換処理部分にRuby/Romkanを移植して採用したこと。これはMigemoの大本であるRuby/Migemoが使用しているライブラリでもある。今までは元の処理に増築に増築を重ねたみたいなややこしい物になってたけど、これで、平仮名からローマ字への逆変換も含めて大部分のコードを共通化できて見通しが良くなった、と思う。ただ、速度面で若干遅くなってないかどうか心配ではある。体感できる程の差は無いと思うんだけど。
Ruby/Romkanのコードって無駄がない感じですごいなーと思った。Ruby自体、エレガントにそういう物を作れる言語なんだな、とも。Rubyでたった7KBちょいの物がJavaScriptへの移植で30KB近くにまで膨れ上がってしまうとは……いや、これは単に僕の技術力がヘボいだけか。
あと、Ruby/Romkan自体はRubyのライセンスに準拠していて、RubyはGPL2ということで、XUL/Migemo全体もこの際だからGPL2にしてみた。
XUL/Migemo勝手改造版0.6.6にて、Safari風ハイライトのもう一つの要の、ヒット箇所のアニメーションを実装してみた。アニメーション処理そのものはたいしたことなかった(そして動作はかなり不格好)んだけど、別の所でだいぶ手こずった。
というのも、Firefoxではページ内のすべてのヒット箇所を強調表示する際に、WebページのDOMツリーをかなり激しく切った貼ったするせいで、せっかく検索でヒットした箇所が選択範囲になっても、その選択が吹っ飛んでしまうんだな。
というわけで、仕方がないから、ヒット箇所の強調表示を行う処理の前後に割り込んで、選択範囲があった場合はそれを自動的に復元するようにした。
ヒット箇所が要素ノードの子のテキストノード全体なら簡単なんだけど、テキストノードの一部だけがヒットしたといった場合に選択範囲を復元できないということで、だいぶ悩んだ。色々試してみた結果分かったのは、選択範囲が含まれているテキストノード(を含む要素ノード)に対してElementNode.normalize()
を実行すると、選択範囲が消えてしまうという事実。これもまた仕方がないので、テキストノードが連続している時などはノーマライズされた後の位置を割り出すようにしておいた。
という風な事を何時間もかけてやっていたんだけれども、そのうちすぐに陳腐化しちゃうのかなーと思うと切ないものだ。
- Name: plus7
- Date: 2007/06/22 08:42
多分もうXUL/Migemoを改良することはない(するにしても別物を一から作り直すかPiroさんにパッチ投げる方向で)ので、これはPiroさんの気分しだいですけれども、正当な後継を名乗っていただいても結構ですよ。
とのことなので、そのうち [Forked Edition] ではなくNext GenerationとかLesser VersionとかFuture Xとかに名前を変えようかなと思います。あとライセンスの明記とかも。
Safariのアレは実装されないの?とか訊いた直後でアレなんだけど、Dear Periwinkle氏という方がSafariのアレをuserChrome.js用に実装したスクリプトを公開されていることを知ったので、XUL/Migemo勝手改造版 0.6.4に速攻で組み込んで、XUL/Migemo勝手改造版単体でもSafari 3風のインライン検索のアレを使えるようにしてみた。
XUL/Migemoの設定で検索ツールバーの「すべてを強調」を初期状態で有効にするようにしておくと、Safariっぽい体験が少しはできるかもしれない。
件の機能の部分の処理は基本的にいじってないので、元のバージョンにある問題もそのまま引き継いでる。よって、このページのようにz-indexを指定されたボックスがあるページではうまく機能してくれないという……
うあああやっちまった。既にAPI使ってくれてる人がいたにもかかわらずAPIを予告なしに変更するという愚を…… 一応、本家XUL/Migemoと互換のAPI(xulMigemoCore
オブジェクト)も備えていて、そちらは動作を変えないようにしているので、XPCOMを叩かずにそっちを使ってもらっていれば今回の変更の影響は受けなかったと思うんだけど、そんなことを言っても後の祭りというやつで。
なぜこうもグダグダになってしまっているかというと、どうすれば国際化を楽にできるか、サービス同士の絡みを最小限に抑えられるか、という点で自分の中で考えが固まっていなかったからだ。
XUL/Migemo勝手改造版のXPCOMコンポーネントの機能のうち、日本語の検索に特化した部分とそれ以外とを分割して、国際化というか多言語対応できるようにしてみた。……まぁ、一番メンドクサイ所(入力から正規表現を作る部分)は実質的に日本語専用なので、あんまり意味が無いと言われればその通りなんだけど。
それだけじゃ何なので、おまけとしてやっつけ仕事で英語用のエンジンを作ってみた。「fx a-o」で「Firefox Add-ons」にヒットするようになったりしてちょっと面白いけど、あんまり役に立たないね……
独自エンジンの作り方も書いたので、暇な人が中国語(ピーイン)入力用エンジンとか作ってみてくれることに期待しておきます。
※21日追記。他人(Mozilla)のことには文句言うくせに性凝りもなくAPIをかなり大幅に変更した。誰もまだ手を付けてないことを祈ろう。
※21日追記(2)。APIの使い方とかエンジンの開発の仕方を英訳した。
掲示板で、XUL/Migemo勝手改造版の辞書フォルダの置き場所について相対パスでの指定もできるようにならないか、という要望が出てたのでがんばってみたよ。
以下、解説。