Sponsored Link

XUL/Migemo Project

Japanese | English

諸般の事情で、当分XULプログラミングをやる気力がありません。Firefox2以降に対応したXUL/MigemoをPiro氏が公開されていますので、そちらをお使いください。

XUL/Migemoとは何か

MigemoというのはEmacsで動くローマ字のまま 日本語をインクリメンタル検索するためのツールの名前です。MozillaにもFind As You Typeというインクリメンタルサーチ機能がありますが、残念ながらこれもごく普通のインクリメンタルサーチです。何度となく 「MozillaでMigemoがつかえたらなぁ」というつぶやきがネット上にはこの機能がMozillaに搭載されて以来観測さ れていま す(これ以前にもありました。観測できた最古の記録は2002 年4月2月で す)。某Firefox スレでも出ました。(dat落ちしているのでま とめサイトからご覧下さい)そしたらネ申出現の豫感。 作者もわくわくしてきました。そこでだましだましXULでMigemoっぽい動作をする拡張を作っています。

(ちなみに作者はEmacsを触ったことがありません。つまり本家をさわれないので、動作は違う可能性があります。このアプリの動作はfub_netC/Migemoを使用したインクリメンタルサーチができま す)が基準となる豫定です。)

※キーボード派の人にはCrossFireも同時に導入することをお勧めします。双 方のリリース版が出たら、まず間違い無く最強のWebブラウザになるだろうと思っています。

インストール

リリース版

テスト版

Beta

7月15日、辞書に不備があったことが分かりました。これ以前にダウンロードした方は、お手数ですが再度ダウンロードしてください。申し訳ございません。更新があったのはma2.txtza2.txtmigemocache.txtです。面倒くさい方はxulmigemodic.zipを再度ダウンロードして頂いても構いません。

入れ替えたら動かなくなったとの苦情が寄せられています。入れ替えはしばらく待ってください。原因不明ですが、解決したそうです。お騒がせしました。

念のためXUL/Migemoもバージョンを上げておいたほうがいいかもしれません。起動しなくなってしまったというかたは、とりあえずxulmigemodic_old1.zip(前の辞書)を落としていれなおしてみてください。

Alpha

Alpha8以前を使っている方は、アップデートする際には辞書とキャッシュもアップデートしてください。Alpha9からキャッ シュの形式が変っています。新しいXUL/Migemoをインストールの後、Firefox/Mozillaを再起動する前に 辞書とキャッシュを入れ替えてください。

使い方

インストール

拡張は上のリンクをクリックをすればインストールできます。インストールするかどうか、許可を求めるダイアログが出てきますので、許可してください。そのあと、Firefoxの再起動をしましょう。

初期設定

設定をする前に、辞書ファイルを落として、適当な場所に解凍しておいてください。

さあ、設定を始めましょう。Firefoxの場合はツール(Tools)->拡張(Extensions)から拡張 マネージャ(図1)を開いて、XUL/Migemoの項目をダブルクリックしてください。

図1

Mozillaの場合、編集(Edit)->設定(Preferences)->詳 細(Advanced)->XUL/Migemoを開いてください。図2の位置にあります。

図2

設定画面は出てきましたか?出てこなかったら多分こちらのミスですので掲示板にて知らせてください。

XUL/Migemoの設定画面には辞書ファイルまでのパス、自動スタート、タイムアウト、リンクのみ検索、などの設定項目があります。

まずDictionaries Folderで辞書のあるフォルダを指定してください。これがないと始まりません。

AutoStartでは、キーが押された際に自動的にインクリメンタルサーチを開始するか、それとも「/」 を押してからでないとインクリメンタルサーチを開始しないようにするかを設定します。なお、FindAsYouTypeの設定は一切いじっていないので、 FindAsYouTypeを解除するかどうかは別途設定してください。

Enable Timeoutは、何も入力しない状態が続いたらXUL/Migemoをストップするか、それともEscが押されたときやブラウザ画面内のクリックにより明示的にストップされるまで待機するかを設定します。タイムアウトまでの時間は下のTimeout after ???msecで、ミリ秒単位で指定してください。

Start From Viewportは、現在見えている範囲から検索を開始するかを設定します。

Search Only Linksはリンクのみを検索するかを設定します。

検索する

AutoStartの場合、普通にキーボードを叩けばOKです。IMEは切ってください。「次を検索」はF4F3またはCtrl+Gで、 後方検索はShift+F4Shift+F3またはShift+Ctrl+Gで す。

AutoStart設定ではない場合、/を押すと検索を開始します。また、\を押すと強制的にリンクのみの検索になります。

XULアプリ開発者向け情報

XUL/Migemoの正規表現生成機能は外部からも利用できます。window.xulMigemoCore.getRegExp("unko")と 書くだけで正規表現オブジェクトを得られます。(ただし、ブラウザのwindowからのみ。) 現在のところ文字列ではないので注意してください。不都合があるようでしたら仕様変更します。

既知の問題

注意点

作者は玄人ではありません

作者はうんこです。うんこ大好きです。おまけに工房です。よって実装にJavaScript厨的センスがふんだんに盛り込まれています。 Migemoを名乗るのが気恥ずかしいです。いまでも時々これでいいんだろうかとおもいます。

キャッシュしないと異常に遅い

キャッシュがないと作者の環境では「ka」の検索で14秒かかります。なのであらかじめこちらで用意したキャッシュを添付してあります。辞書を更新 した場合キャッシュを消して再構築しないといけませんがその際にはかなり待たされるでしょう。もしかしたら辞書からXUL/Migemo用キャッシュを生 成するプログラムを別途配布するかもしれませんが、もしもう作っちゃったよという場合は連絡していただけるとうれしいです。なにせもう JavaScript以外の言語はほとんど忘れてしまったもので。

落ちる可能性が潜在的にある

実は現在のMozillaはでかい正規表現を処理しようとすると強制終了します。なので辞書サイズが大きくなるとどこかで落ちて しまうかもしれません。まあデフォルトの辞書では大丈夫ですが。

しくみ

基本的にMigemoのページで 事足りると思いますけど、ここではページ内を正規表現で検索したように見せかけるために何をしているかを解説します。

まず、ページ内の検索しなければならない範囲をnsIDOMRangeとして取得します。通常はBody全域を、FindAgainのときは選択範 囲(nsISelection)の終わりからページの最後まで、後方検索のときは選択範囲のはじめからページのはじめまでを取得します。

次にRange.toString()としてRangeを文字列に変換します。そしてローマ字から生成した正規表現でもってこの文字列を検索しま す。

最後に、先ほどヒットしたキーワードでページ内を普通に検索(nsIWebBrowserFindではなくnsIFindを使う)します。

これでページ内検索に正規表現が使えなくともなんとかそれっぽく見せかけることができます。

更新履歴

  1. 2004-03-20:初公開。

Contents

作成者:plus7 メール最終更新:2007-06-22