Home > XUL Apps > XUL/Migemo

XUL/Migemo Ver.0.14.9 for Mozilla Firefox & Thunderbird

An English version of this page is also available.

宣伝1。日経LinuxにてLinuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。 以下の特設サイトにて、単行本まんがでわかるLinux シス管系女子の試し読みが可能! シス管系女子って何!? - 「シス管系女子」特設サイト

宣伝2。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacks拡張機能開発チュートリアルと併せてどうぞ。

Firefox Hacks Rebooted ―Mozillaテクノロジ徹底活用テクニック
浅井 智也 池田 譲治 小山田 昌史 五味渕 大賀 下田 洋志 寺田 真 松澤 太郎
オライリージャパン

What's this? これは何?

Firefoxにおける日本語でのページ内検索生活を快適かつ高速にする拡張機能です。いちいち漢字に変換しなくても、ローマ字で「kanzi」と入力するだけでそのまま「感じ」とか「幹事」とか「漢字」とかを検索できるようになります。いまいちピンとこない方は、実際に動いてる様子の動画をご覧下さい。 また、ラテン文字の発音記号などを無視する機能もあります。例えば「frederic」で「Frédéric」がヒットするようになります。検索モードを切り替えることで、任意の正規表現でページ内検索を実行することもできます。

また、おまけの機能として、検索ツールバーのカスタマイズ機能もあります。「すべて強調表示」「大文字/小文字を区別」を自動的に有効にしたり、検索で見つかった単語を画面の中央に表示したりといったことができます。

Safari 3風のハイライト機能も含んでいます。「すべて強調表示」の時、内容領域が暗く表示されて、フォーカスされた単語がアニメーションで表示されるようになります。また、検索された語句がページ内のどこにあるのかを示すマークがスクロールバーの横に表示されます。

XUL/Migemoが利用できる場面は以下の通りです。

  • ページ内検索
  • スマートロケーションバー
  • 履歴とブックマークの検索ボックス
  • メッセージ内検索
  • スレッドペインでのクイック検索

※Ver.0.3.1から0.6.6までの間、本プロジェクトは本家XUL/Migemoとは別のプロジェクト「XUL/Migemo [Forked Edition]」として進行していました。0.7.0以降は本家の正式な後継「XUL/Migemo」プロジェクト(「[Forked Edition]」が付かない)として進行しています。詳しくはプロジェクトの経緯をご覧下さい。

類似の拡張機能、関連する拡張機能へのリンク

ローマ字検索とかはいらないから、検索ツールバーの表示や挙動だけ変えたい
Find Toolbar Tweaksを使うと、検索ツールバーの挙動を色々カスタマイズできます。
検索にヒットした箇所をスクロールバーの横に表示する機能だけ使いたい
Search Markerを使うと、当該機能だけを利用できます。
Safari風の強調表示だけ使いたい
userChrome.js用スクリプトのSafariHighlight.uc.jsを使うと、当該機能だけを利用できます。

Download ダウンロード

不具合に遭遇した場合は、まずよくある質問をご覧下さい。それでも解決方法が見つからない場合の障害報告はGitHubのイシュートラッカーにお願いします。

旧版

Tutorials 使い方解説

インストール

  1. XUL/Migemo本体をインストールします。
  2. Firefoxを再起動するとMigemoエンジン選択のダイアログが表示されるので、「日本語」を選択してください。
  3. Migemo辞書の初期設定のウィザードが表示されるので、指示に従って先に進むと、辞書が自動的にダウンロードされてインストールが完了します。

単語の検索(Migemo検索)の開始

とりあえずこのページを開いた状態で、「/」キーを押してから「nihongo」とローマ字で入力してみてください。検索バーが表示され、「日本語」という文字が検索されるはずです。このようにローマ字で入力するだけで日本語の単語を検索できるのが「Migemo検索」です。

また、このように検索バーが表示されていない状態から自動で検索が始まるモードを「クイックMigemo検索」と呼びます。

入力したローマ字に対応する日本語が辞書の中で複数見つかった場合は、その全てにヒットします。例えば「kanzi」と入力した場合は、「漢字」「感じ」「幹事」「かんじ」「カンジ」などのバリエーション全てが検索対象となります。

なお、コメント欄などの文字入力欄にフォーカスがある場合は、「/」キーではクイックMigemo検索を開始できません。このような時は代わりに「Ctrl-Shift-F」を押してください。

クイックMigemo検索の終了

検索中、検索バーの右端に「Migemo」と表示され、そこのプログレスバーがだんだん短くなっていっているのが見えましたか? (スクリーンショット) これはクイックMigemo検索モードを自動的に終了するまでの残り時間を示しています。一定時間が経過すると、Firefoxは自動的にMigemo検索を終了して、通常のWebブラウズの状態に戻ります。

なお、自動的に終了するのを待たなくても、クイックMigemo検索は「ESC」キーを押せばいつでも終了できます。

クイックMigemo検索を自動的に終了するまでの時間は、自由に設定できます(初期設定では4秒)。また、自動的に終了しないようにすることもできます。

長い文章の検索

今度は「nihongo deno pe-zi nai kensaku」と、スペースキーで言葉を句切りながらローマ字入力してみてください。「日本語でのページ内検索」という文章が検索されるはずです。このようにスペースキーで単語を区切ると、長い文章の検索を行うことができます。

また、大文字での文節区切り、いわゆるSKK方式での入力もサポートしています。「nihongoDenoPe-ziNaiKensaku」と、スペースキーを入力する代わりに文節区切りの位置で大文字で入力(Shiftキーを押しながら入力)してみてください。やはり先ほどと同様、長い文章を検索することができます。

ページ内を検索中にMigemo検索に切り替える

通常のページ内検索中に、Migemo検索に切り替えることもできます。「Ctrl-F」で検索を始めた状態で、検索バー右端の「Migemo」と書かれたボタンをクリックしてください。次の入力から、入力内容がMigemo検索されます。もう一度「Migemo」をクリックするか「通常」をクリックすると、通常の検索に戻ります。

また、ツールバー右端のボタンをクリックせずとも、検索を実行中にもう一度「Ctrl-F」を入力すると、キーボード操作だけで検索モードを切り替えることができます。

検索できない単語がある時は

Migemo検索は、辞書にある単語しか検索することができません。例えば「汎用人型決戦兵器」のような単語は辞書にないので、「hannyou hitogata kessen heiki」のように、文章として検索しないとヒットしません。また、そもそも辞書に読み方が登録されていない漢字は、いくら頑張っても検索できません。

辞書にない漢字や単語を検索できるようにするためには、ユーザ辞書に単語を登録してください。「Ctrl-Shift-F7」を押すか、XUL/Migemoの設定パネルの「辞書」タブで「辞書マネージャの起動」を選択すると、辞書を管理するためのダイアログが開かれます。

ページ内を任意の正規表現で検索する

バージョン0.8.0から、任意の正規表現でページ内を検索できるようになりました。検索バー右端の「正規表現」と書かれたボタンをクリックすると、入力した内容が正規表現として解釈されるようになります。 (スクリーンショット)

また、通常の検索またはMigemo検索の実行中であっても、「/検索(語句|キーワード)?/」のように前後にスラッシュを付けて正規表現リテラルの形で入力すると正規表現として検索されます。

他の場所でもMigemo検索する

Firefox 3では、スマートロケーションバー、履歴サイドバー、ブックマークサイドバー、履歴とブックマークの管理ウィンドウでMigemo検索が有効になります。これらの箇所でのMigemo検索を無効にする場合は、XUL/Migemoの設定ダイアログで設定を変更してください。

Thunderbird 2では、スレッドペインのクイック検索でMigemo検索が有効になります。ただしメッセージ本文の検索は負荷が高いため、初期状態では無効になっています。クイック検索でメッセージ本文もMigemo検索したい場合は設定を変更する必要があります。

API 他の拡張機能等からの機能の呼び出し方など

XUL/Migemoサービスの利用方法

XUL/Migemoサービスは、英数字の入力に対して正規表現を生成します。生成する正規表現の内容はエンジンによって異なり、初期状態で組み込まれている日本語用エンジンは、ローマ字の入力に対応する日本語の語句の正規表現を生成します。英語用エンジンは、与えられた文字列から始まる英単語のリストの正規表現を生成します。

XUL/Migemoの機能は、JavaScriptのグローバルな名前空間のmigemoオブジェクトから簡単に利用できます。このオブジェクトにはJavaScriptでいつでも・どこからでもアクセスすることができ、アドオンに限らずWebページ内のスクリプトからも利用できます。

migemoオブジェクトはユーザが現在選択している言語のエンジンを利用するサービスへの参照になっており、以下のメソッドとプロパティを備えています。

String migemo.provider
APIを提供しているモジュールの名前。例えばXUL/Migemo バージョン 0.12.0で日本語のエンジンを使っている場合であれば、"XUL/Migemo 0.12.0 (ja)"が返される。
String migemo.version
APIを提供しているモジュールのバージョン。例えばXUL/Migemo バージョン 0.12.0であれば、"0.12.0"が返される。
String migemo.lang
APIを提供しているモジュールの言語。例えばXUL/Migemoで日本語のエンジンを使っている場合であれば、"ja"が返される。
String migemo.query(in String aInput)
渡した文字列(英数字)に対応する正規表現を生成して返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
返り値
正規表現のソース文字列
使用例
文字列がinputで与えられた入力にマッチするかどうかを調べるメソッドをStringに追加する:
String.prototype.migemoMatches = function(input) {
  return new RegExp(migemo.query(input), 'i').test(this);
};

alert('日本語'.migemoMatches('nihongo')) // => "true"
alert('英語'.migemoMatches('nihongo')) // => "false"
改行区切りの単語のリストの中から、inputで与えられた入力にマッチする項目を抜き出す:
function getMatchedItems(list, input) {
  var regexp = new RegExp(migemo.query(input));
  return list.split('\n')
             .filter(function(aTerm) {
               return regexp.test(aTerm);
             });
}

var list = <[CDATA[
コーヒー
紅茶
緑茶
水
]]>.toString();
alert(getMatchedItems(list, 'cha')); // => ["紅茶", "緑茶"]
String Array migemo.queries(in String aInput)
渡した文字列(英数字)をホワイトスペース文字で区切った後、それぞれに対応する正規表現を生成して配列として返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
返り値
正規表現のソース文字列の配列
文字列が与えられたすべての入力にマッチするかどうかを調べるメソッドをStringに追加する:
String.prototype.migemoMatchesAll = function(input) {
  return migemo.queries(input)
           .map(function(aSource) {
             return new RegExp(aSource, 'i');
           })
           .every(function(aRegExp) {
             return aRegExp.test(this);
           }, this);
};

alert('日本語と英語'.migemoMatchesAll('nihongo eigo')) // => "true"
alert('日本語とフランス語'.migemoMatchesAll('nihongo eigo')) // => "false"
Object migemo.queryFunctional(in String aInput)
渡した文字列(英数字)をホワイトスペース区切りの複数語句の入力として解釈し、AND検索、OR検索、NOT検索のための正規表現を返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
返り値
regexptermsexceptionsの各プロパティを持ったオブジェクト。それぞれの内容は以下の通り。
regexpプロパティの内容
AND検索用の正規表現のソース文字列
termsプロパティの内容
OR検索用の正規表現のソース文字列
exceptionsプロパティの内容
NOT検索用の正規表現のソース文字列、またはnull
使用例
targetに列挙された内容から、inputで与えられた入力にマッチする項目を抽出する:
var target = [
      '日本で英語を話す',
      '英語を日本で話す',
      '日本語fooooo!!',
      '日本語hooooo!!'
    ];
var input = 'nihon go -foo';

var result = migemo.queryFunctional(input);
var regexp = new RegExp(result.regexp, 'i');
var terms = new RegExp(result.terms, 'gim');
var exceptions = result.exceptions ?
                   new RegExp(result.exceptions, 'gim') :
                   null ;

var matchedTerms = [];
var output = target.filter(function(aTarget) {
      if (exceptions && exceptions.test(aTarget))
        return false;
      if (regexp.test(aTarget)) {
        match = aTarget.match(terms);
        matchedTerms = matchedTerms.concat(match);
        return true;
      }
    });

alert(output.join('\n')+'\n---\n'+matchedTerms.join(', '));
// 結果:
//  日本で英語を話す
//  英語を日本で話す
//  日本語hooooo!!
//  ---
//  日本, 語, 語, 日本, 日本, 語
Object migemo.queriesFunctional(in String aInput)
渡した文字列(英数字)をホワイトスペース区切りの複数語句の入力として解釈し、AND検索、OR検索、NOT検索のための正規表現を返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
返り値
regexpstermsexceptionsの各プロパティを持ったオブジェクト。それぞれの内容は以下の通り。
regexpsプロパティの内容
マッチするべき単語の正規表現のソース文字列の配列
termsプロパティの内容
OR検索用の正規表現のソース文字列
exceptionsプロパティの内容
NOT検索用の正規表現のソース文字列、またはnull
使用例
targetに列挙された内容から、inputで与えられた入力にマッチする項目を抽出する:
var target = [
      '日本で英語を話す',
      '英語を日本で話す',
      '日本語fooooo!!',
      '日本語hooooo!!'
    ];
var input = 'nihon go -foo';

var result = migemo.queriesFunctional(input);
var regexps = result.regexps.map(function(aSource) {
                return new RegExp(aSource, 'i');
              });
var terms = new RegExp(result.terms, 'gim');
var exceptions = result.exceptions ?
                   new RegExp(result.exceptions, 'gim') :
                   null ;

var matchedTerms = [];
var output = target.filter(function(aTarget) {
      if (exceptions && exceptions.test(aTarget))
        return false;
      if (regexps.every(function(aRegExp) {
            return aRegExp.test(aTarget);
          })) {
        match = aTarget.match(terms);
        matchedTerms = matchedTerms.concat(match);
        return true;
      }
    });

alert(output.join('\n')+'\n---\n'+matchedTerms.join(', '));
// 結果:
//  日本で英語を話す
//  英語を日本で話す
//  日本語hooooo!!
//  ---
//  日本, 語, 語, 日本, 日本, 語

アドオン向けのAPI

また、アドオンからは以下のメソッドも利用できます。これらのメソッドは戻り値としてJavaScriptの正規表現オブジェクトを直接返します。

RegExp migemo.getRegExp(in String aInput, [in String aFlags])
渡した文字列(英数字)に対応する正規表現を生成して返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
aFlags(省略可能)
正規表現のフラグ。省略時は"im"として扱う。
返り値
正規表現オブジェクト
使用例
文字列がinputで与えられた入力にマッチするかどうかを調べるメソッドをStringに追加する:
String.prototype.migemoMatches = function(input) {
  return migemo.getRegExp(input, 'i').test(this);
};

alert('日本語'.migemoMatches('nihongo')) // => "true"
alert('英語'.migemoMatches('nihongo')) // => "false"
改行区切りの単語のリストの中から、inputで与えられた入力にマッチする項目を抜き出す:
function getMatchedItems(list, input) {
  var regexp = migemo.getRegExp(input);
  return list.split('\n')
             .filter(function(aTerm) {
               return regexp.test(aTerm);
             });
}

var list = <[CDATA[
コーヒー
紅茶
緑茶
水
]]>.toString();
alert(getMatchedItems(list, 'cha')); // => ["紅茶", "緑茶"]
RegExp Array migemo.getRegExps(in String aInput, [in String aFlags])
渡した文字列(英数字)をホワイトスペース文字で区切った後、それぞれに対応する正規表現を生成して配列として返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
aFlags(省略可能)
正規表現のフラグ。省略時は"im"として扱う。
返り値
正規表現オブジェクトの配列
文字列が与えられたすべての入力にマッチするかどうかを調べるメソッドをStringに追加する:
String.prototype.migemoMatchesAll = function(input) {
  return migemo.getRegExps(input, 'i')
           .every(function(aRegExp) {
             return aRegExp.test(this);
           }, this);
};

alert('日本語と英語'.migemoMatchesAll('nihongo eigo')) // => "true"
alert('日本語とフランス語'.migemoMatchesAll('nihongo eigo')) // => "false"
Object migemo.getRegExpFunctional(in String aInput, [in String aFlags])
渡した文字列(英数字)をホワイトスペース区切りの複数語句の入力として解釈し、AND検索、OR検索、NOT検索のための正規表現を返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
aFlags(省略可能)
正規表現のフラグ。省略時は"im"として扱う。
返り値
regexptermsexceptionsの各プロパティを持ったオブジェクト。それぞれの内容は以下の通り。
regexpプロパティの内容
AND検索用の正規表現
termsプロパティの内容
OR検索用の正規表現(常にフラグとして"gim"が指定された状態で返される)
exceptionsプロパティの内容
NOT検索用の正規表現(常にフラグとして"gim"が指定された状態で返される)、またはnull
使用例
targetに列挙された内容から、inputで与えられた入力にマッチする項目を抽出する:
var target = [
      '日本で英語を話す',
      '英語を日本で話す',
      '日本語fooooo!!',
      '日本語hooooo!!'
    ];
var input = 'nihon go -foo';

var result = migemo.getRegExpFunctional(input, 'i');

var matchedTerms = [];
var output = target.filter(function(aTarget) {
      if (result.exceptions &&
          result.exceptions.test(aTarget))
        return false;
      if (result.regexp.test(aTarget)) {
        match = aTarget.match(result.terms);
        matchedTerms = matchedTerms.concat(match);
        return true;
      }
    });

alert(output.join('\n')+'\n---\n'+matchedTerms.join(', '));
// 結果:
//  日本で英語を話す
//  英語を日本で話す
//  日本語hooooo!!
//  ---
//  日本, 語, 語, 日本, 日本, 語
Object migemo.getRegExpsFunctional(in String aInput, [in String aFlags])
渡した文字列(英数字)をホワイトスペース区切りの複数語句の入力として解釈し、AND検索、OR検索、NOT検索のための正規表現を返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
aFlags(省略可能)
正規表現のフラグ。省略時は"im"として扱う。
返り値
regexpstermsexceptionsの各プロパティを持ったオブジェクト。それぞれの内容は以下の通り。
regexpsプロパティの内容
マッチするべき単語の正規表現の配列
termsプロパティの内容
OR検索用の正規表現(常にフラグとして"gim"が指定された状態で返される)
exceptionsプロパティの内容
NOT検索用の正規表現(常にフラグとして"gim"が指定された状態で返される)、またはnull
使用例
targetに列挙された内容から、inputで与えられた入力にマッチする項目を抽出する:
var target = [
      '日本で英語を話す',
      '英語を日本で話す',
      '日本語fooooo!!',
      '日本語hooooo!!'
    ];
var input = 'nihon go -foo';

var result = migemo.getRegExpsFunctional(input, 'i');

var matchedTerms = [];
var output = target.filter(function(aTarget) {
      if (result.exceptions &&
          result.exceptions.test(aTarget))
        return false;
      if (result.regexps.every(function(aRegExp) {
            return aRegExp.test(aTarget);
          })) {
        match = aTarget.match(result.terms);
        matchedTerms = matchedTerms.concat(match);
        return true;
      }
    });

alert(output.join('\n')+'\n---\n'+matchedTerms.join(', '));
// 結果:
//  日本で英語を話す
//  英語を日本で話す
//  日本語hooooo!!
//  ---
//  日本, 語, 語, 日本, 日本, 語

他の言語に対応させる

XUL/Migemoの辞書アシスト検索機能は、辞書を作成するだけで、他の言語にも簡単に対応させる事ができます。

辞書の内容は、タブと改行で区切られた単語のリストです。以下に英語用辞書の一部を示します。

2	to	too	two
4	for
AA
AAA
Aachen
aardvark
Aaren
Aarhus
Aarika
Aaron
AB
aback
abacus
abaft
Abagael
Abagail
...

行頭にある単語がマッチングの対象となります。また、タブで区切ってその後に他の単語を記述すると、行頭にある単語が入力された際、その後に続く単語もマッチング対象になります。上記の例で言えば、「2」と入力した際には「to」や「too」もヒットするようになります。

このようにして作成した単語リストを「言語名.txt」という名前で、エンコーディングをUTF-8にして、辞書フォルダに設定されているフォルダの中に保存します。この状態で、文字列型の設定 xulmigemo.lang の値としてその言語名を指定すると、それ以後、XUL/Migemoの辞書アシスト検索にその辞書が利用されるようになります。

辞書ファイルをWeb上から自動的にダウンロードさせる

設定名を xulmigemo.dictionary.download.uri.言語名 とした文字列型の設定を作成し、値に辞書ファイルのダウンロードURIを設定しておくと、XUL/Migemoは辞書ファイルがローカルに存在しない場合に、自動的にそれをダウンロードします。

Web上に置いておく辞書ファイルは、フォルダ等に入れずにそのままZIP形式で圧縮して下さい。

他の言語用エンジンの開発方法

日本語のようにローマ字入力からひらがな・カタカナへの変換のような処理を行いたい場合は、エンジン部分そのものを再実装する必要があります。

XUL/Migemo用の他の言語のエンジンを追加する場合、xmIXMigemoEngine型のインターフェースを備えたエンジン部と、xmIXMigemoDictionary型のインターフェースを備えた辞書の両方を実装する必要があります。

簡単に開発したい場合は、以下のようにすると良いでしょう。

  1. ユーザープロファイル内の、XUL/Migemoがインストールされているフォルダを開く。
  2. componentsフォルダの中にあるxmXMigemoEngine.jsとxmXMigemoDictionary.jsをコピーして適当な名前に変更する。ここでは仮に、xmXMigemoEngineMyLang.jsとxmXMigemoDictionaryMyLang.jsとする。
  3. xmXMigemoEngineMyLang.jsとxmXMigemoDictionaryMyLang.jsそれぞれのファイル中にあるlangプロパティの定義を言語名に書き換える。ここでは仮にMyLangとする。
  4. xmXMigemoEngineMyLang.jsとxmXMigemoDictionaryMyLang.jsそれぞれのファイル中にあるclassIDプロパティの定義の箇所のUUIDを、UUID Generator on the Webなどで作成した新しい物に書き換える。
  5. xmXMigemoEngineMyLang.jsとxmXMigemoDictionaryMyLang.js内の実装を適当に書き換える。
  6. about:configでxulmigemo.langを、自分の作成したエンジンの言語名に変更する。ここでは仮にMyLangとする。
  7. Firefoxを終了して、ユーザープロファイル内にあるcompreg.datとxpti.datを削除し、Firefoxを起動し直す。

これで、XUL/Migemoのエンジンとして自作のエンジンを使えるようになります。

xmIXMigemoEngine

独自のエンジンを定義する際は、必ずコンポーネントのコントラクトIDを @piro.sakura.ne.jp/xmigemo/engine;1?lang=言語名 として下さい。例えば日本語なら言語名はjaです。xmIXMigemoEngine型は以下のメソッド・プロパティを実装する必要があります。

String getRegExpFor(in String aInput)
渡した文字列(英数字)に対応する正規表現を生成して返す。
引数
aInput
正規表現を取得したい文字列。ローマ字の日本語、英単語など。
返り値
正規表現の文字列(var regexp = new RegExp(XMigemoCore.getRegExp('romaji'), 'ig'); などのように使う)
nsIVariant gatherEntriesFor(in String aInput, in unsigned short aTargetDictionaryType)
渡した文字列(英数字)に対応する、辞書内のエントリの配列を返す。
引数
aInput
エントリを取得したい文字列。ローマ字の日本語、英単語など。
aTargetDictionaryType
検索対象の辞書の種類。以下の3通りを指定できる。
  • xmIXMigemoEngine.SYSTEM_DIC:システム辞書
  • xmIXMigemoEngine.USER_DIC:ユーザ登録単語の辞書
  • xmIXMigemoEngine.ALL_DIC:システム辞書とユーザ辞書の両方
返り値
辞書内のエントリの配列
nsIVariant splitInput(in String aInput)
渡した文字列(英数字)が複数の単語である場合に、単語ごとに分割して、文字列の配列として返す。
引数
aInput
単語ごとに分割したい文字列。ローマ字の日本語、英単語など。
返り値
分割された単語の文字列の配列。
readonly xmIXMigemoTextTransform textTransform
xmIXMigemoTextTransform型のインターフェースを備えた、このエンジン専用の文字列変換サービス(後述)。英語エンジンでも使用している汎用サービスのCc['@piro.sakura.ne.jp/xmigemo/text-transform;1?lang=*'].getService(Ci.xmIXMigemoTextTransform)を使ってもいいですし、日本語エンジンのように独自のサービスを実装して使ってもいいです。
readonly xmIXMigemoDictionary dictionary
xmIXMigemoDictionary型のインターフェースを備えた、このエンジン専用の辞書サービス(後述)。

なお、xmIXMigemoはxmIXMigemoEngineのインターフェースを継承しています。

xmIXMigemoTextTransform

xmIXMigemoTextTransform型のインターフェースは、辞書が受け入れ可能な文字列であるかどうかのチェックや、文字列を辞書やエンジンが受け入れ可能な形式に変換する機能を提供します。

Boolean isValidInput(in String aInput)
渡した文字列(英数字)を辞書がキーとして受け入れ可能かどうかを調べる。
引数
aInput
辞書に渡したい文字列。
返り値
受け入れ可能かどうかを示す真偽値。
String normalizeInput(in String aInput)
渡した文字列を辞書にキーとして登録できる形式に変換する。日本語エンジンであれば、ひらがなの文字列に変換する。
引数
aInput
辞書に登録させたい文字列。
返り値
変換後の文字列。
String normalizeKeyInput(in String aInput)
渡した文字列をエンジンが受け入れ可能な入力文字列の形式に変換する。日本語エンジンであれば、ローマ字の文字列に変換する。
引数
aInput
エンジンに渡したい文字列。
返り値
変換後の文字列。
String addLatinModifiers(in String aInput)
渡した文字列の中に含まれるラテン文字に対して、修飾記号が含まれるケースにマッチする正規表現を取得して返す。
引数
aInput
ラテン文字を含む文字列。
返り値
修飾記号付きのラテン文字にヒットする正規表現。
String removeLatinModifiers(in String aInput)
渡した文字列の中に含まれるラテン文字の修飾記号を削除して返す。
引数
aInput
修飾記号付きのラテン文字を含む文字列。
返り値
ラテン文字の修飾記号を削除した後の文字列。

日本語エンジン用の拡張インターフェース(xmIXMigemoTextTransformJa)では、ローマ字とひらがなの相互変換、ひらがなとカタカナの相互変換などの機能を実装しています。

xmIXMigemoDictionary

xmIXMigemoDictionary型のインターフェースは、そのエンジン専用の辞書ファイルの読み書きを行います。

String getDic()
システム辞書の内容を取得する。
引数
無し。
返り値
辞書の内容(タブと改行区切りのUnicodeテキスト)。
String getUserDic()
ユーザ辞書の内容を取得する。
引数
無し。
返り値
辞書の内容(タブと改行区切りのUnicodeテキスト)。
void saveUserDic()
ユーザ辞書の変更を保存する
引数
無し。
返り値
無し。
unsigned short addTerm(in String aInput, in String aTerm)
渡した語句をユーザ辞書に登録する。
引数
aInput
辞書のエントリのキーとなる語。日本語エンジンであれば、ひらがなによる「読み」。
aTerm
辞書のエントリのデータとなる語。日本語エンジンであれば、漢字での表記など。
返り値
以下のいずれかのステータスコード。
  • xmIXMigemoDictionary.RESULT_OK:正常終了。
  • xmIXMigemoDictionary.RESULT_ERROR_INVALID_INPUT:入力(読み)が不正。
  • xmIXMigemoDictionary.RESULT_ERROR_ALREADY_EXIST:登録しようとした語はすでに登録されている。
  • xmIXMigemoDictionary.RESULT_ERROR_NO_TARGET:登録するべき語が無い。
  • xmIXMigemoDictionary.RESULT_ERROR_INVALID_OPERATION:その他の無効な操作。
unsigned short removeTerm(in String aInput, in String aTerm)
渡した語句をユーザ辞書から削除する。
引数
aInput
データを削除したいエントリのキー。
aTerm
削除したいエントリのデータ。
返り値
以下のいずれかのステータスコード。
  • xmIXMigemoDictionary.RESULT_OK:正常終了。
  • xmIXMigemoDictionary.RESULT_ERROR_INVALID_INPUT:入力(読み)が不正。
  • xmIXMigemoDictionary.RESULT_ERROR_NOT_EXIST:削除しようとした語が登録されていない。
  • xmIXMigemoDictionary.RESULT_ERROR_INVALID_OPERATION:その他の無効な操作。
Boolean load()
辞書をディスクからメモリへ読み込む。
引数
無し。
返り値
辞書の読み込みに成功したかどうかを示す真偽値。
void reload()
辞書を再度読み込み直す。
引数
無し。
返り値
無し。
readonly Boolean initialized
辞書がメモリ上に読み込まれ、使用可能な状態になっているかどうかを示す真偽値。

独自のエンジンをXUL/Migemoで使用する

文字列型の設定 xulmigemo.lang の値として独自に実装したエンジンの言語名を設定しておくと、起動時にXUL/Migemoはその言語用の辞書とエンジンを使用するようになります。

辞書ファイルをWeb上から自動的にダウンロードさせる

設定名を xulmigemo.dictionary.download.uri.言語名 とした文字列型の設定を作成し、値に辞書ファイルのダウンロードURIを設定しておくと、xmIXMigemoDicManagerは辞書ファイルがローカルに存在しない場合に、自動的にそれをダウンロードします。

Web上に置いておく辞書ファイルは、フォルダ等に入れずにそのままZIP形式で圧縮して下さい。

Background 経緯

Firefoxでは、今までのブラウザでのページ内検索にありがちだった 「検索」機能を呼び出す→文字を入力する→「検索」ボタンを押す という操作がなくなり、その代わりに 文字を入力したらそのままそれが検索される というスムーズで快適な検索機能が実装されています。この機能は「インクリメンタル検索」「逐語検索」「Find As You Type」などと呼ばれています。

ただ、このような機能は、かな漢字変換が不要な英語圏での利用が前提になっています。例えば「firefox」と入力すればすぐにページ内で検索できてハッピーなのですが、日本語圏では、「にほんご」と入力する→「日本語」に変換する という風なステップが間に入るため(しかも漢字がどれが正しいか見て、候補を選んで変換しないといけない)に、検索実行までの間に入る手間が多くて、あんまりハッピーになれません。

この問題を解決するべく開発されたのが、plus7氏による本家XUL/Migemoです。これは、Emacsというテキストエディタ用の日本語文字列をローマ字入力で高速に検索するツールMigemo(Rubyによる実装)を、C/Migemo:MigemoのC言語による実装を使用したfub_netの動作を参考に、plus7氏がXULとJavaScriptでFirefox用に移植したものです。

本家XUL/Migemoは色々な事情から、バージョン0.3.0で更新が停止しています。しかしその間にも、Firefox 1.5が発表されたり、まだ残っていた問題が発覚したりと、事態は動いています。そこで、せめて本家の開発が再開されるまでの間くらいはなんとか使える状態を維持していきたいと考えて、ここでフォーク版として勝手改造版を公開するようになった次第です。

元々、本家XUL/Migemoが更新されこれらの問題が解消された暁には、このコンテンツは消去または更新を停止する予定でした。しかしバージョンアップの結果、既に中身は本家XUL/Migemoと全く異なるものになってしまっています。なので、開発はもうしばらく続きそうです。……というのが、XUL/Migemo [Forked Edition]の開発の経緯でした。

現在では、このプロジェクトはplus7氏の許可を得て、XUL/Migemoの正式な後継プロジェクトとして存続しています。

本家XUL/Migemo(0.3.0以前)誕生の経緯や内部的な動作の解説は、本家XUL/Migemoのページが詳しいので、そちらをご覧ください。

History 更新履歴

0.14.9 (2016.6.15)
  • 不要なreturnによる警告が表示されないようにした
  • 辞書のダウンロード中に進行状況のメッセージが重複して表示されないようにした
0.14.8 (2016.6.14)
  • e10s対応を明記
  • Nightly 50.0a1に対応
  • サブフレームを含むページで検索するとフリーズすることがあったのを修正
0.14.6 (2016.5.31)
  • 不要な「.gitignore」をパッケージに含めないようにした
  • Firefox 46およびそれ以前のバージョンで、ロケーションバーの検索エンジンに対する候補に表示される検索クエリがURLエンコードされたままになる問題を修正(Firefox 47以降ではFirefox側により修正されている
  • ロケーションバーでの検索処理において、未定義の結果へのアクセスに起因する例外が発生してしまっていたのを修正
0.14.5 (2016.5.29)
  • サブフレームを含むページで検索するとフリーズすることがあったのを修正
  • 設定を専用のネームスペース配下に保存するようにした
  • ブックマークサイドバーなどでのMigemo検索について、サイドバーやウィンドウが閉じられた後はバックグラウンドの処理が動き続けないようにした(終了時にこれが原因でクラッシュすることがあった)
0.14.4 (2016.5.28)
  • ラテン文字の修飾パターンについて、修飾をハイフンなどの一般的記号で代用したパターンにはマッチしないようにした(実用上、そのようなパターンは入力にのみ表れる傾向があるようなので)
  • textareaなどのフォーム要素があるときに検索の挙動が壊れていたのを修正(後退バグ)
  • ブックマークサイドバー、履歴サイドバー、Places Organizerの検索の挙動を乗っ取れていなかったのを修正(後退バグ)
0.14.3 (2016.5.28)
  • ページの構成によっては検索するとフリーズすることがあったのを修正
  • サブフレームを含むページでの後方検索で、サブフレームが検索対象にならなくなっていたのを修正
  • 長大な1つのテキストノード内の複数箇所に検索語句が含まれる場合に、後ろの方の箇所にヒットしない事があったのを修正
  • インクリメンタルサーチの途中で入力語句にヒットする箇所がなくなった時に、最後にヒットした検索結果の状態を残さずにヒット無しの状態に移るようにした
  • 初回起動時のセッション中に、新しいウィンドウを開く度に初期化ウィザードが表示されてしまっていたのを修正
0.14.2 (2016.5.20)
  • 辞書の管理ツールが機能していなかったのを修正
  • Places Organizerでの検索が機能しない問題を修正
  • インラインフレームやスクロール可能な要素があるページでも正しく検索できるようにした
0.14.1 (2016.5.19)
  • 英語モードで動作しなくなっていたのを修正
0.14.0 (2016.5.19)
  • Firefox 45,Nightly 49.0a1およびThunderbird 45に対応
  • 任意のモードで検索を開始するショートカットを自由に追加できるようにした
  • 自動強調表示など、本質的でない機能を削除した
  • jarファイルを含めない形のパッケージングに変更
0.13.6 (2010.7.13)
  • 初回起動時の初期化処理で検索ツールバーの初期モードがMigemo検索になってしまう問題を修正(※既にこの設定が適用されてしまっている環境では、XUL/Migemoの設定で「検索ツールバー」→「検索ツールバーの初期状態を変更…」→「検索モード」で「通常」を選択肢直す必要があります)
  • 検索モードを切り替える操作をしたにも関わらず内部的なモードが切り替わらないままになる問題を修正
0.13.5 (2010.7.12)
  • Safari風強調表示で強調表示された箇所に影を表示するようにした
0.13.4 (2010.7.9)
0.13.3 (2010.7.9)
  • 後退バグでロケーションバーの検索等が動かなくなっていたのを修正
0.13.2 (2010.7.9)
  • 無限ループで固まる事があったのを修正
0.13.1 (2010.7.8)
  • Firefoxのウィンドウを複数開いている時に、1つウィンドウを閉じると後のウィンドウでスマートロケーションバーが機能しなくなる問題を修正
0.13.0 (2010.7.8)
  • Minefield 4.0b2pre対応
  • Minefield 4.0b2preのスマートロケーションバーで、ヒットした候補が既にタブで開かれている場合はそのタブに切り替える機能に対応
  • Thunderbird 3.0およびThunderbird 3.1に対応(※検索用のインデックスが作成されていない場合はフォルダ内の絞り込み検索でのMigemo検索はできません)
  • 見えている範囲から検索を開始する処理を若干高速化した(Gecko 1.9.2以降のみ)
  • ページ内検索のヒット位置を画面の中央近くに表示する形でスクロールする時に、スムーズスクロールするようにした(スムーズスクロールを無効にする場合はabout:configで xulmigemo.scrollSelectionToCenter.smoothScroll.enabledfalse に変更して下さい)
  • ページ内検索のヒット位置を示すマーカーをクリックした時に、その位置までスムーズにスクロールするようにした(スムーズスクロールを無効にする場合はabout:configで xulmigemo.highlight.foundMarker.smoothScroll.enabledfalse に変更して下さい)
  • API経由でWeb上のスクリプトからアクセスする時はユーザ辞書の内容を返さないようにした
  • Firefox 3.6以降でキーカスタマイズができない問題を修正
  • 検索失敗時にフレームにフォーカスが移動してしまう問題を修正
  • スマートロケーションバーの動作を乗っ取っている時に browser.urlbar.autoFill が機能しない問題を修正
  • 前回の検索結果がハイライト表示された状態で別の検索を開始すると前回のハイライトが残ったままになってしまう問題を修正
  • keyupイベントでの警告が表示されないようにした
  • Firefox 2、Thunderbird 2への対応を終了
0.12.2 (2009.10.23)
  • 正規表現のソース文字列を返すAPIを追加
  • Bug 396392のため、2009年10月23日時点でのTrunkでは動作しません
0.12.1 (2009.10.21)
  • JavaScriptのグローバルオブジェクトからアクセス可能な新しいAPIを実装
  • 検索のヒット箇所を強調表示する際、大文字小文字の違いが常に無視されていたのを修正
  • 検索にヒットした箇所を画面中央までスクロールする処理が働かない場合があったのを修正
  • ロケーションバーにスマートキーワードを入力すると検索結果が出ない問題を修正
  • ロケーションバーの検索で、iフラグ無しの正規表現に対して大文字小文字が区別されていなかったのを修正
  • ロケーションバーの入力時にESCキーを押した時、入力中だった内容の復元や検索文字列の消去が正しく行われていなかったのを修正
  • Thunderbirdで、件名等にエンコードされた部分がない時にエラーになっていたのを修正
  • Bug 396392のため、2009年10月21日時点でのTrunkでは動作しません
0.11.16 (2009.6.8)
  • スマートロケーションバーに多数の単語を入力した時にフリーズしてしまっていた問題について改善したつもり
  • スマートロケーションバーの候補を選択した状態でHomeキーを押した時の挙動が、Mac OS X用とそれ以外のプラットフォーム用とで逆転していたのを修正
0.11.15 (2009.5.10)
  • 正規表現検索の際に大文字小文字を区別するようにした(正規表現リテラル形式でiフラグを付けて検索した場合、または「大文字/小文字を区別」のチェックボックスがOFFの場合は大文字小文字を区別しない)
  • Shiretokoでテキスト入力欄内のヒット箇所の強調表示に失敗するようになっていたのを修正
  • 前方検索・後方検索の違いに関わらず、前回の検索語句と異なる語句で検索する時は必ずドキュメントの端(またはビューポートの端)から検索するようにした
  • Download Statusbarが表示される時に検索モード切り替えボタンの表示位置がずれる問題に対処
  • 英語辞書のユーザ辞書機能が正常に働いていなかったのを修正
0.11.14 (2009.4.21)
  • 検索がヒットした位置のマーカーが強調表示のON/OFF切り替え時に消えなくなっていたのを修正(0.11.13でのregression)
  • 「連携」パネル内のチェックボックスについて、その環境で不要な物は隠すようにした
0.11.13 (2009.4.21)
  • 初回起動時の初期化に失敗することがあったのを修正
  • Gecko 1.8でテキストの表示・非表示の判別に失敗していたのを修正
  • すべて強調表示を有効にしたままの状態で、タブを切り替えてから検索を終了すると、切り替え前のタブに強調表示やヒット位置のマーカーが残ったままになってしまう問題を修正(検索終了ですべてのタブの強調表示を解除するようにした)
  • クイックMigemo検索でリンク内にヒットしてもステータスバーにリンク先が表示されなくなっていたのを修正(いつの頃からかのregression)
  • クイックMigemo検索でリンク内にヒットした時にフォーカスリングを表示するようにした(Firefox標準の検索の挙動と異なる状態になっていたのを修正)
  • Migemo検索終了時に、リンク内に検索がヒットしていた場合はリンクにフォーカスするようにした(Firefox標準の検索の挙動と異なる状態になっていたのを修正)
  • ブックマークサイドバー、履歴サイドバー、およびライブラリでの検索時に有効な検索結果が見つかっていない状態の時は、検索結果を空にし、クエリとしても保存できないようにした
  • ウィンドウの幅が極端に狭い時などに、検索ツールバーの内容自体のアップデートによって無限に再描画が発生してしまう場合があったのを修正(したつもり)
  • 強調表示を有効にしたままで検索モードを切り替えた時に、強調表示用の要素が無限に増殖する問題を修正
0.11.12 (2009.4.2)
  • Minefieldで動作しなくなっていたのを修正
  • 検索ツールバーを閉じる時、必ずハイライトのチェックを外すようにした
  • 通常検索ですべて強調表示が機能しない問題を修正
0.11.11 (2009.2.12)
  • 検索ツールバーを開いたまま検索モードを切り替えた際、強調表示の状態を維持するようにした
  • 検索ツールバーを開いた時、何もヒットしていないのにSafari風強調表示の薄暗い表示になる事があったのを修正
  • va、vi、vu、ve、voなどの入力でカタカナの「ヴ」にヒットしない問題を修正
0.11.10 (2009.2.10)
  • 英語版で設定ダイアログを開けなくなっていたのを修正
  • 検索ツールバーを開く度に検索モードをリセットする設定にしている時、Ctrl-Fで検索モードを切り替えられない問題を修正
0.11.9 (2009.2.7)
  • Firefox 3.1b3pre対応
  • Ctrl-Fの連打で通常検索→正規表現検索→Migemo検索→検索終了→通常検索→…と切り替えられるようにした
  • 検索ツールバーが表示されている状態でクイックMigemo検索を開始できなくなっていたのを修正
  • 非表示の要素がある時に、ヒット箇所の強調表示の結果がおかしくなっていたのを修正
  • pIMigemoのAPIで正規表現で検索する際、gフラグが指定されていると処理結果がおかしくなっていたのを修正
0.11.8 (2008.11.20)
  • 0.11.5以降でブックマークサイドバーなどでの検索が機能しなくなっていたのを修正
0.11.7 (2008.11.17)
  • 半角括弧を含む入力に対して正常な正規表現が返らない問題を修正
  • 画面内に見えている範囲から検索を始める処理について、意図せずページ先頭から検索が開始されることがあったのを改善
  • ロケーションバーでの検索について、Minefield 3.1b2preでの検索対象の指定に対応
0.11.6 (2008.11.10)
  • SearchWPと衝突していたのを修正
0.11.5 (2008.11.7)
  • スマートロケーションバーでの検索結果で、入力確定履歴から検索される項目の表示順がおかしかったのを修正
  • Firefox標準のクイック検索を開始する時は常に検索モードを通常の検索に戻すようにした
  • Firefox標準のクイック検索またはクイックMigemo検索を実行中に検索モードを切り替えた場合は常に検索を終了するようにした
  • 辞書の位置が未設定で、且つ、辞書の初期設定ウィザードを表示しない設定になっている時、初期化に失敗する問題を修正
  • 設定ダイアログから辞書の初期設定ウィザードを開けるようにした
  • Minefield 3.1b2preのタブ一覧の検索欄でMigemo検索できるようにした
0.11.4 (2008.9.26)
  • 検索ツールバーの検索モードの初期値や毎回リセットされる先のモードについて、設定ダイアログのUI上の表示と実際の挙動とが異なってしまっていたのを修正。
0.11.3 (2008.9.24)
  • 通常の検索についても、検索モードがMigemo検索に切り替えられている場合はIMEを自動的に無効化するようにした(Windows, Mac OS Xのみ)
  • ロケーションバーのドロップダウンマーカーをクリックした時に、最近訪問したページではなく直前のMigemo検索の結果が表示されてしまっていたのを修正
  • xulmigemo.scrollSelectionToCenter.paddingの値として0から100までの範囲を受け付けるようにした
0.11.2 (2008.9.12)
  • 新規インストールした環境で2度目以降の起動時に動作しなくなる問題を修正
0.11.1 (2008.9.12)
  • 検索がヒットした箇所のマーカーをより正確に描画するようにした
  • 辞書のパスをプロファイルフォルダを基準とした相対パスで記憶できるようにし、移動プロファイル環境での動作を改善した
0.11.0 (2008.9.7)
  • 検索がヒットした位置を表示する機能を追加
  • Firefox 3.1のスマートロケーションバーでの新機能(検索対象の絞り込みスマートキーワードとの連携タイトルやURIの先頭のみにマッチする隠し設定)に対応
  • フォーカスされた箇所を画面中央に表示する機能について、Migemo検索でない通常の検索時に機能しなくなっていたのを修正
  • フォーカスされた箇所を画面中央に表示する機能について、正確に画面中央ではなく、ある程度の余裕を持って表示するようにした(画面端から30%の範囲より外にある時はそれより内側に入る位置までスクロールするようにした。旧来の動作に戻す場合はabout:configでxulmigemo.scrollSelectionToCenter.paddingの値を50に変更すること)
  • Firefox 3.1の「すべて強調表示」の表示スタイルに対応
  • 常に「すべて強調表示」を有効にする状態の時、再検索時のパフォーマンスを改善
  • クイックMigemo検索中でも、ページをスクロールしている間はタイマーを停止するようにした
  • クイックMigemo検索で最後の文字を消した後にボタンの状態が更新されていなかったのを修正
  • 「すべて強調表示」のハイライトのON/OFF切り替えでフォーカス箇所の選択範囲が失われてしまうことがあったのを修正
  • 辞書を読み込めなかった時の初期化ウィザードについて、最後のページに「今後表示しない」のチェックボックスを追加した
0.10.6 (2008.7.7)
  • スマートロケーションバーでのMigemo検索で、ロケーションバーからの選択結果の履歴が結果の順位付けに反映されていなかったのを修正
  • スマートロケーションバーで左右キーのハンドリングが不十分だったのを修正
0.10.5 (2008.7.7)
  • ロケーションバーでNOT検索を可能にした(検索後の頭に「-」を付けると、その語を含まない結果が表示されます)
  • Migemo検索の入力中にポップアップの内容が意図せず更新されてしまうことがあったのを修正
  • フレームがあるページで後方検索に失敗する事があったのを修正
  • ロケーションバーでMigemo検索が行われていない時に上下キーによる項目の選択が正しく動いていなかったのを修正
0.10.4 (2008.7.6)
  • ツールバーのカスタマイズ後にスマートロケーションバーでMigemo検索できなくなる問題を修正
0.10.3 (2008.7.5)
  • スマートロケーションバーでMigemo検索できない入力内容の時は処理をスキップするようにした
  • スマートロケーションバーの項目をクリックした際に、表示された項目と異なる場所が読み込まれる問題を修正
  • スマートロケーションバーの項目を選択してDeleteキーを押した時に、表示された項目と異なる場所が削除される問題を修正
0.10.2 (2008.7.5)
  • ヒットした単語の中に全角スペース1文字だけの候補がある時、スマートロケーションバーの検索で固まる問題を修正
0.10.1 (2008.7.4)
  • スマートロケーションバーで候補が表示されている時、Tabキーで候補を選択できなくなっていたのを修正
  • ブックマークされている項目について、場所自体の名前が検索対象にならないようにした
0.10.0 (2008.7.3)
  • Firefox 3のスマートロケーションバー、履歴、ブックマークの検索に対応
  • 「thi」で「てぃ」にヒットするようにした
0.9.1 (2008.6.27)
  • 設定ダイアログの内容がはみ出していたのを修正
0.9.0 (2008.6.27)
  • 検索ツールバーの位置をウィンドウ上部やタブの下に移動する機能を追加
  • 検索ツールバーのクローズボックスを右端に表示する機能を追加
  • ウィンドウ幅が狭まった時に自動的にボタンのラベルを非表示にするようにした
  • 分割ブラウザとの連携を強化
  • 自動ハイライトの挙動を修正
  • アニメーション効果の設定UIが機能してなかったのを修正
  • Firefox 1.5のサポートを打ち切った
0.8.15 (2008.6.20)
  • アニメーション効果を設定ダイアログから変更できるようにした
  • 自動ハイライトを有効にしている時に、前の検索語がハイライトされたままになる問題を修正
  • LinuxでIMEが無効化されない問題を修正
0.8.14 (2008.6.16)
  • Mac OS Xでの表示を修正
0.8.13 (2008.5.16)
  • 検索語句が入力されていない時はハイライトを無効にするようにした
  • 起動直後に検索ツールバーを表示するかどうかの設定にかかわらず、起動直後の検索モードの内部的な切り替えによって検索ツールバーが有効化されてしまっていたのを修正
  • 複数のフレームがある時に検索がうまくいかない問題を修正
  • 検索を終了する時は常に強調表示を無効化するようにした
0.8.12 (2008.5.13)
  • Firefox 3で正常に動作しなくなっていたのを修正
  • クイックMigemo検索でリンク以外がヒットした時はEnterキーを押しても検索を終了しないようにした
  • Migemo検索の状態からクイックMigemo検索を開始するとクイックMigemo検索終了後に検索ツールバーが閉じない問題を修正
  • メニュー等を開いている時にまでクイックMigemo検索が起動してしまう問題を修正
  • XMLのページで正規表現検索時・Migemo検索が動作しない問題を修正
0.8.11 (2008.5.13)
  • クイックMigemo検索の時に検索ツールバーの表示を変えるようにした
  • クイックMigemo検索開始時にまで選択範囲の内容が検索窓に取り込まれてしまっていたのを修正
  • 画面のクリックなどでクイックMigemo検索を終了した時、フォーカスが失われてしまう問題を修正
0.8.10 (2008.5.12)
  • 検索窓への入力で意図せずクイックMigemo検索が開始されてしまっていたのを修正
  • プログレスバーが大きく表示されていたのを修正
0.8.9 (2008.5.12)
  • text/xmlの文書などでも「すべて強調表示」のハイライト表示を利用できるようにした
  • 検索を開始する時、選択範囲の内容が検索窓に自動的に挿入されない場合があったのを修正
  • 正規表現検索やMigemo検索の時に、検索窓でCtrl-A→文字入力としても、直前に入力されていた内容が消えない問題を修正
  • 正規表現検索やMigemo検索における、検索がヒットしなかった時の検索ツールバー上のボタンの有効無効や自動ハイライトについて、通常の検索の場合と挙動を合わせた
0.8.8 (2008.5.10)
  • クイックMigemo検索時に自動的にIMEを無効化するようにした(Firefox 3のみ)
  • クイックMigemo検索時にBSで検索バーを消すと同時に「戻る」が働いてしまっていたのを修正
  • ロケーションバー等で「/」を入力できなくなっていたのを修正
  • application/xhtml+xmlのページでSafari風ハイライト表示のスタイルが正しく適用されない問題を修正
  • Autocomplete Managerの仕様変更に追従
0.8.7 (2008.5.7)
  • 内容領域にフォーカスが無い時でもクイックMigemo検索を開始できるようにした
  • フルズームが有効になっているとクリックイベントの再送に失敗していたのを修正
  • 正規表現検索モードで、選択範囲の内容から検索を開始できなかったのを修正
  • リンクなどがない位置で半透明のスクリーン上でクリックすると、どんな操作であってもスクリーンが消えたままになっていたのを修正
  • 起動直後に読み込まれたページで強調表示のスタイルが適用されないことがある問題を修正
  • Safari風強調表示とオートスクロール、All-in-One Gestures、FireGestures、Optimoz Mouse Gesturesの競合を解消したつもり
  • 強調箇所の文字の下の方が切れることがあったのを修正
  • 検索に失敗することがあったのを修正
  • クイックMigemo検索時に入力欄の操作が乗っ取られてしまっていたのを修正
  • 通常の検索時にEnterキーで次候補にフォーカスできなくなっていたのを修正
0.8.6 (2008.5.7)
  • Safariのように、フォーカス箇所の強調表示を残すようにした
  • 「すべて強調表示」を常に有効にする設定の時でも最初の1回だけは強調表示されない場合があったのを修正
  • Webサイトのスタイル指定に上書きされて強調表示のスタイルが適用されない場合があったのを修正
  • ハイライト箇所をクリックしても半透明のスクリーンが消えなくなっていたのを修正
  • 強調表示を有効にした状態で通常の検索で次候補・前候補を検索するとテキストフィールド内に選択範囲が残ってしまう問題を解消
0.8.5 (2008.5.6)
  • 「すべて強調表示」の時のスクリーンを維持したままミドルクリックやCtrl-クリックなどの操作をできるようにした
  • 「すべて強調表示」を無効にしてもスクリーンが表示されてしまう場合があったのを修正
0.8.4 (2008.5.5)
  • 「すべて強調表示」の時のアニメーション効果をよりSafariに近づけた(xulmigemo.highlight.animationStyleを1にすると旧バージョンの動作に戻ります)
  • 検索モードがMigemo検索の時、常にクイック検索のタイムアウトが適用されてしまっていたのを修正
  • クイック検索時にBackSpaceキーでタイマーがリセットされなくなっていたのを修正
0.8.3 (2008.5.4)
  • 検索モードを切り替える度にエラーメッセージが表示される問題を修正
0.8.2 (2008.5.4)
  • Safari風のハイライト表示時において、クリックした箇所にイベントを発生させるようにした
  • テキスト入力欄内の強調箇所について、クリックしたら強調を解除するようにした
  • 検索ツールバーが非表示になる時にSafari風ハイライト表示が無効にならない場合があったのを修正
  • 表示されている範囲からの検索処理を改善したつもり
0.8.1 (2008.5.3)
  • Firefox 3のUIとの統合を改善
  • クイック検索時にWebページからフォーカスを外し、キーボード関係のイベントを発生させないようにした
  • クイック検索の終了時にすぐにリンク先に飛ぶようにした
  • 検索がヒットした箇所のリンク文字列をステータスバーに表示するようにした
  • テキスト入力欄にだけ含まれる単語も正しく検索できるようにした
  • テキスト入力欄の中の強調表示が解除されない問題を修正
0.8.0 (2008.5.2)
  • 正規表現で検索する機能を加えた(検索モードの明示的な切り替え、または「/正規表現/」のような正規表現リテラルの形で検索語句を入力することで実行)
  • 検索の実行中にもう一度Ctrl-Fを入力した時、検索モードを切り替えたり検索を終了したりできるようにした
  • 後方検索の処理方法を変更した
  • MIMEエンコードされたテキストのデコード処理をThunderbirdの機能で行うようにした(自前ライブラリを持たなくてよくなったのでファイルサイズが大幅に削減された)
0.7.14 (2008.3.12)
  • Migemo検索を実行した直後に通常の検索を実行すると次候補を検索できなくなる場合があったのを修正
  • 複数単語を入力した時に前方検索で正規表現の生成に失敗する問題を修正
  • Thunderbirdのクイック検索について、メール本文の検索でもXUL/Migemoを利用できるようにした
  • 設定ダイアログを再編
  • Minefield 3.0b5preでの動作を確認
0.7.13 (2008.1.30)
0.7.12 (2008.1.29)
  • Thunderbirdでメールの検索にXUL/Migemoを利用できるようにした(本文検索以外)
0.7.11 (2007.10.28)
0.7.10 (2007.10.24)
  • ソース表示タブとの衝突を解消
  • uwwu-で「うっうー」にヒットしない問題を修正
0.7.9 (2007.9.19)
  • 常に強調表示を有効にする設定の時、検索開始時にしばらく固まったようになってしまうことがある問題について改善したつもり
  • 現在見えている範囲から検索を開始する機能が働いていなかったのを修正
  • ssyoで「っしょ」にヒットしない問題を修正
0.7.8 (2007.8.3)
  • 英語などのエンジンでの検索において、入力文字列よりも辞書内のヒットした単語の方を優先して検索するようにした
  • 再検索の時にはハイライトを描画し直さないようにした(再検索を高速化した)
  • 検索がページの最後や最初に達した時のメッセージが正しく表示されていなかったのを修正
  • ハイライトのON/OFFを切り替えた時に、ヒット箇所の選択範囲が失われないようにした
  • 辞書の読み込みに失敗する場合があったのを修正
  • 「すべて強調表示」で大文字小文字が違うと強調表示されていなかったのを修正
  • 強調表示を手動で無効にできなくなっていたのを修正
  • 自動強調表示の最低文字数の判定において、検索欄への入力文字数も同時にチェックするようにした
0.7.7 (2007.7.21)
  • ラテン文字の発音記号の有無を無視して検索できるようにした
  • 英語専用のエンジンを廃止し、汎用エンジンとして実装し直した
  • 汎用辞書についてはUTF-8で読み書きするようにした
  • 不要な時にまですべて強調表示が有効になっていたのを修正
  • 不正な正規表現が生成されて検索に失敗する場合があったのを修正
  • SearchWP、Googlebar Liteのハイライトが常に有効になってしまっていたのを修正
0.7.6+ (2007.7.19)
  • ローマ字として解釈できないアルファベットの文字列に対して正しい正規表現を生成できなくなっていたのを修正
0.7.6 (2007.7.18)
  • 検索ツールバー内のボタンをコンパクト表示する機能を加えた
  • スクロールバー上でのイベントでは強調表示を解除しないようにした
  • 強調表示の半透明のスクリーンについて、正しくWebページ全体を覆うようにした
  • Migemo検索時の自動強調表示の最小文字数について、ヒット箇所の中で最長の文字列の長さと比較するようにした
  • ハイライト時にエラーが起こる場合があったのを修正
0.7.5+ (2007.7.18)
  • 初期状態でクイックMigemo検索の自動開始を無効にした
  • Firefox 1.5で「すべて強調表示」が機能しなくなっていたのを修正
0.7.5 (2007.7.17)
  • 「すべて強調表示」を常に有効に設定する時、強調表示を自動的に有効にする最小文字数を設定できるようにした
  • 「すべて強調表示」において、ローマ字に対応するすべての候補を強調するようにした
  • ローマ字に対応する正規表現の生成に失敗する場合があったのを修正
  • 検索ツールバーの状態に関する設定パネルから、わかりにくい設定を隠すようにした
0.7.4 (2007.7.15)
  • 「ペ」のように半角カナにすると2文字に別れるカタカナを含む単語や、半角スペースを含む単語を検索できなくなっていたのを修正
  • 「すべて強調表示」と「大文字/小文字を区別」を常に有効にできるようにした
  • クイックMigemo検索の自動開始と自動終了の設定を同期するようにした
0.7.3 (2007.7.1)
  • 選択範囲の復元処理が正しく機能しない場合があったのを修正
  • 初期状態で「すべて強調表示」にチェックを入れる設定の時、「すべて強調表示」が常にONになってしまっていたのを修正
  • 訓令式、ヘボン式のいずれにも定義されていないいくつかのローマ字規則に対応(we→うぇ、dhi→でぃ、など)
0.7.2 (2007.6.28)
  • 初期設定ファイルのエラーを修正
0.7.1 (2007.6.28)
  • Trunkで動かなくなっていたのを修正
  • 選択範囲を復元する処理( xulmigemo.rebuild_selection )、ヒットした語をアニメーションさせる処理( xulmigemo.highlight.animateFound )について個別にOFFにできるようにした
  • アニメーションの計算式の間違いを修正
0.7.0 (2007.6.28)
  • 名前から[Forked Edition]を外した。
  • ローマ字と平仮名の相互変換のコードを刷新した。
  • ライセンスを明記した。
0.6.6 (2007.6.27)
  • 「すべて強調表示」をより強調する設定の時、検索がヒットした箇所をアニメーションさせるようにした
  • 「すべて強調表示」の時に、検索後に選択範囲を復元するようにした
  • 検索対象のドキュメントに極力痕跡を残さないようにした
  • キャッシュに関する内部処理を変更
  • スクリーンの暗さを変えた
  • 検索ツールバーが表示された状態でタブを切り替え、その直後に「すべて強調」をクリックしても、Friefox 1.5系では何も起こらなかったの修正
  • ハイライト部がスクリーンよりも上に表示されるようにコードを変更(Dear Periwinkle氏による実装を反映)
  • 英語ロケールのミスを修正
0.6.5 (2007.6.22)
  • 分割ブラウザと同時に利用できるようにした
  • Googlebar LiteSearchWPのハイライトに対応(Dear Periwinkle氏による実装を反映)
  • ページをクリックしたら常にハイライトを解除するようにした
  • ハイライト中はembed要素を隠すようにした
0.6.4 (2007.6.22)
  • Dear Periwinkle氏による実装を取り込んで、Safari 3風の強調表示機能(検索がヒットした語句以外を暗く表示する)を加えた
  • Migemo検索がヒットしても「すべて強調表示」の結果が更新されない問題を修正
0.6.3 (2007.6.21)
  • APIを変更した
0.6.2 (2007.6.19)
  • APIのミスを修正
0.6.1 (2007.6.19)
  • 英語モードで辞書の一部しか参照されない問題を修正
0.6.0 (2007.6.19)
  • 他の言語用のエンジンを組み込めるようにした
  • 英語用のエンジンと辞書を実装した
0.5.5 (2007.6.5)
  • 辞書フォルダの位置をFirefoxのインストールフォルダに対する相対パスで指定できるようにした
0.5.4 (2007.6.4)
  • ソースの表示などで検索バーを開けない場合があったのを修正
  • ヘルプウィンドウ、選択範囲のソース表示ウィンドウでも利用できるようにした
0.5.3 (2007.3.24)
  • 検索でヒットした箇所を画面の中心に表示する設定が通常の検索に対して機能しなくなっていたのを修正
0.5.2 (2007.3.18)
  • 検索でヒットした箇所を画面の中心に表示する設定が機能しなくなっていたのを修正
0.5.1 (2007.3.16)
  • pIXMigemoの実装のミスを修正
0.5.0 (2007.3.14)
  • アイコン追加
  • 入力されたキーワードがすべて消去されたときに自動的にクイックMigemo検索を終了するかどうかを設定できるようにした
  • 主要な処理をXPCOMコンポーネント化した
0.4.16 (2007.3.9)
  • クイックMigemo検索を終了するショートカットを変更できるようにした
0.4.15 (2007.3.7)
  • Firefox Trunkにおいて「ソースの表示」ウィンドウでの検索が機能しない問題を修正
0.4.14 (2007.3.7)
  • Thunderbird 2に対応
  • 「ソースの表示」ウィンドウでも機能するようにした
  • 日本語ロケールのミスを修正
  • 検索でヒットした箇所を常に画面の中心に表示する処理について、うまく動かない場合があったのに対処
0.4.13 (2007.2.27)
  • Minefieldで「次を検索」「前を検索」が機能しない問題を修正
0.4.12 (2007.2.27)
  • 通常の検索中にMigemo検索に切り替わる際、クイック検索に移行してもタイマーが作動しなかったりしていたのを修正
  • 常にMigemo検索を有効にする設定が機能していなかったのを修正
  • 検索バーを開いた時に前回の検索モードがリセットされていなかったのを修正
  • 「.」から始まる入力などで異様に時間がかかる問題を修正
  • accessibility.typeaheadfind.linksonlyがtrueの時に検索バーで長い文字列で検索を開始すると常にリンク内の検索になってしまってしまう問題に対処
0.4.11 (2007.2.24)
0.4.10 (2007.2.15)
  • 「/」キーで開始したり自動で開始したりする検索モードを「クイックMigemo検索」と呼ぶようにした
  • クイックMigemo検索時、「次へ」「前へ」を実行する度にタイムアウトまでの残り時間をリセットするようにした
  • リンクのみ検索する設定はクイックMigemo検索でのみ反映するようにした
  • 検索ツールバーの初期状態を設定する機能を加えた
0.4.9 (2007.2.14)
  • リンクのみ検索するモード以外でリンクにフォーカスしなくなっていたのを修正
  • フォーカス周りの挙動をFirefoxの検索ツールバーの挙動に合わせた(Ctrl-Fで通常の検索を開始した時→ヒットしてもリンクにフォーカスしないで検索終了と同時にフォーカス、「/」キーで開始したり自動で始まったりした場合と検索バーが非表示の場合→常にリンクにフォーカス)
0.4.8 (2007.2.14)
  • 検索開始時に選択範囲の内容で自動的に検索を始める設定を追加
  • 検索ツールバーを開いたとき常にMigemo検索を有効にする機能を追加
  • テキスト入力欄の中も検索できるようにした
  • Migemo検索でヒットした語句を強調表示できるようにした
  • 検索ツールバーを表示したままタブを切り替えたりできるようにした
  • 手動でMigemo検索を開始したときに常に前回の入力内容をクリアするようにした
  • リンクのみ検索するモードがまともに動かなくなっていたのを修正
  • デフォルトのプログレスバーの高さを調整
0.4.7 (2006.12.7)
  • Migemo検索の切り替えチェックボックスが検索ツールバーにきちんと重なるようにした
  • Migemo検索が終了するまでの残り時間を表示するプログレスメーターの高さを設定できるようにした
  • 検索ツールバーを常に乗っ取るようにした
0.4.6 (2006.12.6)
  • 半角カナでの入力に対応
0.4.5 (2006.12.5)
  • 辞書を読み込めなかったときには初期設定ウィザードを表示して、インターネットから自動的に辞書をダウンロードするようにした
  • 半角カタカナも検索できるようにした
  • ひらがなとカタカナを区別しない設定を加えた
  • パスに日本語を含むフォルダに辞書を置いている場合に辞書が読み込まれない問題を修正(したつもり)
0.4.4 (2006.12.5)
  • 生成される正規表現がおかしかったのを修正
0.4.3 (2006.12.4)
  • ディスクキャッシュの設定について、MinefieldではGUIにスライダー(<xul:scale />)を使うようにした
  • テキストフィールド内でもショートカットが機能するようにした(通常の文字入力以外のキーに限定)
  • 起動のためのショートカットを2種類定義できるようにした(主にテキストフィールド内でも使える起動ショートカットを定義できるように)
0.4.2 (2006.12.3)
  • ディスクキャッシュを一括生成する処理を若干改善
0.4.1 (2006.12.2)
  • Minefield(Firefox 3.0 Alpha)に対応
  • 辞書から正規表現を生成する処理を高速化
  • ディスクキャッシュ生成の頻度を調整できるようにした
  • 辞書フォルダの設定を変えた後に辞書が再読み込みされなくなっていたのを修正
  • 検索バーの乗っ取りの方法を変更(Minefield対応が主な理由)
0.4.0 (2006.12.1)
  • 内部のコードを全面的にリファクタリング(Mozilla Suite、Seamonkey、Netscape 7では動かなくなった)
  • アルファベットや記号のキー1文字分だけのショートカットが機能しない問題を修正
  • SearchWPとの競合を解消
  • Migemo検索開始のキーボードショートカットを変更できるようにした
  • Migemo検索開始時に検索ツールバーの内容をクリアするようにした(表示を実際の動作に合わせた)
  • 設定GUIをFirefox 1.5移行用の形式で作り直した
  • ユーザ辞書に語句を登録する機能を加えた
  • 日本語ロケールを追加
0.3.11
  • Firefox 2.0 RC2で検索バーの状態が更新されない問題を修正
0.3.10
  • Firefox 2.0 Beta1で動かなくなっていたのを修正
0.3.9
  • Mac OS XでCommandキーが無視される場合があったのを修正
0.3.8
  • ビューポートからの検索を有効にした状態で、プレーンテキストのページなどで検索できなくなる事があったのを修正
  • 自動スタートを有効にした状態で「Ctrl-/」「Ctrl-\」などのキーボードショートカットが機能しなくなってしまう問題を修正
0.3.7
  • Gmailなどのリッチテキストエリアでまで反応してしまっていたのを修正
0.3.6
  • 検索バーが存在しない環境で正常に動作しなくなっていたのを修正
  • F3/Shift-F3キーでの動作を少し修正
0.3.5
  • 通常の検索の後でもF3/Shift-F3で常にXUL/Migemoによって検索されていたのを修正
  • 前方への検索時に正規表現の生成に失敗することがあった問題に対処したつもり
0.3.4
  • タイムアウトまでの時間をプログレスメーターで表示できるようにした
0.3.3
  • Firefox Trunkで動かない問題を修正
0.3.2
  • XUL/Migemoでの検索時に検索ツールバーを自動表示しない設定を加えた
  • 検索ツールバーを手動で表示して普通に検索した後で、F3キーでの再検索ができない問題を修正
0.3.1
  • 勝手に公開
  • 対応するFirefoxのmaxVersionを1.5.0.*にした
  • contributor欄に勝手に名前を追加
  • 初期化処理に変更を加えた(イベントハンドラの登録など、初期化に関する部分を全て window.addEVentListener('load', function() { ... }) の中に移動した)
  • Firefox 1.5RC1で再検索できない問題を修正
  • リンクのみを検索対象にしていると、無限ループに陥ることがあったのを修正
Last modified:2016/06/15 23:51:27