Hatena::ブログ(Diary)

by edvakf in hatena

2010-02-08

Migemoでページ内検索するためのGoogle Chrome Extension

f:id:edvakf:20100209031832p:image:w700


一応完成したので公開します。

前に作った ChromeMigemo Extension に依存します。これがインストールされてないと動きません。


ページ内検索で、いつも「今自分はどこにいるの?」という感覚になるのが嫌いなので、驚きを少くするようにこだわりました。

  • 見つかった語が現在見えてる画面外にあった場合、強制的にスクロールしない。
  • スクロールする場合はスムーズにスクロールさせる。

あとパフォーマンスはけっこうチューニングしたので、けっこう軽いと思います。標準のページ内検索だと「次の結果」(Mac だと Command+g) をずーっと押してるとものすごく重くなりますが、そういうことはありません。


キーバインドの変更はゆくゆく考えていきます。とりあえず当たり障りのなさそうなところを使うようにしました。

  • / (スラッシュ) : 検索欄の表示
  • Ctrl+. (ピリオド) : 次をハイライト
  • Ctrl+, (コンマ) : 前をハイライト
  • Ctrl+m : 決定 (検索欄を隠し、ハイライトされている単語がリンクならフォーカスする)

id:zyxwv さんの作っている Google Chrome で migemo 検索では、リンクのみから検索ですが、これはページ内検索です。キーバインドが競合するので同時にインストールできませんが…

単語が要素をまたがっている場合ではヒットしない (例えば「東京<span>特許</span>許可局」だと「toukyou tokkyo kyoka kyoku」と打ってもヒットしない) のが難点ですが、おおむね良好に動いていると思います。


ソースコードはこちら。

ライセンスパブリックドメインとしました。

os0xos0x 2010/02/08 16:48 tween2.jsはライブラリではなくコードスニペットなので、実質パブリックドメインです。

edvakfedvakf 2010/02/08 17:02 ありがとうございます。では気兼ねなくパブリックドメインでいきます。

HowManyFilesHowManyFiles 2010/02/21 01:38 カタカナ語←→英単語 のあいまい検索が行われないのは仕様でしょうか。
「Olympic」で「オリンピック」にヒットしたりすると嬉しいです。

edvakfedvakf 2010/02/21 03:09 ChromeMigemo (サーバー側) のほうのオプションで、Japanese (alphabet to katakana) というのがそれです。それにチェックを入れて Save ボタンを押すと辞書を再構築します。
http://f.hatena.ne.jp/edvakf/20100221030746
サーバー側の負荷低減のためにデフォルトではオフになっています。

HowManyFilesHowManyFiles 2010/02/22 09:39 おお、見落としていました。ありがとうございます!

edvakfedvakf 2010/02/23 15:57 いえいえ。僕もその機能のことをすっかり忘れてました。よい辞書があったら教えてくださいと最初書いてましたから。。。

だ 2010/06/19 20:53 普通のページ検索(ctrl F)となにがちがうんですか???

edvakfedvakf 2010/06/19 21:51 Migemo というのが大好きな人もいるのです。http://0xcc.net/migemo/

makkomakko 2010/10/10 17:18 複数語句(OR)検索はできないでしょうか?

edvakfedvakf 2010/10/11 00:32 必要性を感じないので実装していませんが、できないことは無いと思います。負荷が高いので進んでやりたいものではありません。
例えばどういう時に使われるのでしょうか。

makkomakko 2010/10/11 05:16 一番よく使うのは通常のWEB検索後、入力した複数の検索語句を追いかけるときです。

実はこれはword highlightエクステンションで解決できてしまっていますが、WEB検索を経ないと使用できないので、例えばブックマークしてたページ内を再検索したいときなどは不便だなと思っていました。

他にはMSDN onlineを漁って調べ物をしているときも、複数語句で追いかけることが多いです。

検索の仕方というか使い方というか、他の工夫でなんとかすべきなのかも知れませんけどね・・・。

いずれにせよ、頻度としてはそれほど多いものではないので、機能的に反って足かせとなるようでしたら不採用の方向で^^;

edvakfedvakf 2010/10/11 09:09 とりあえず保留ということで、考えてみます。懸念はいくつかあって、
1. データベースの負荷。たぶんうまくすれば大丈夫かな。
2. ページ側の負荷。今でも非常に大きなページで一語で検索すると固まるので、そこは何とかしたいと思ってます。
3. 良いインターフェイス。"OR"って打つの面倒じゃないですか?
ですね。
正規表現にこだわらないのであれば word highlight のほうでやるのが簡単かと思いますので、os0x さんに尋ねてみます。

makkomakko 2010/10/11 22:40 お返事ありがとうございます。
1.、2.についてはレスポンスに関わる大事なところ。座して判断をお待ちします。
3.については割り切ってORを入力させるか、tabを押すたびに検索語句入力ボックスが一つ増えるとか・・・良案を持ち合わせていません。申し訳ありません。

個人的にはこの場合、正規表現にこだわらないでほぼ問題はありません。
お手数をおかけしまして申し訳ありません。

edvakfedvakf 2010/10/12 04:30 はっきりとしたことが言えずにすいません。OR じゃなくてスラッシュで区切るのが良さそうですね。
近々これのソースは弄ろうと思ってたところなので、そのときにでも考えてみます。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証