インクリメンタルサーチでJavadoc APIをさくさく参照するためのuser.jsなど

こんなの作りました。


図1:検索フォームです。

図2:"js"と打ってみたところ。
Javadoc API用のインクリメンタル・サーチです。

以下のような検索ができます。

  • 通常はクラス名を前方一致で検索します。大文字小文字は区別しません。
  • 一文字目を"*"にすると中間一致で検索します。大文字小文字は区別しません。
  • 一文字目を大文字にするとキャメルケース検索になります。大文字小文字を区別して前方一致。
  • 一文字目を"/"をにすると正規表現検索になります。後ろに"/i"をつけると大文字小文字を区別しません。
  • 一文字目を"."にすればパッケージのサマリページも検索できます。".*"からはじめればパッケージを中間一致です。

(ページ末尾のスクリーンショットも参考にしてください)

操作方法

  • フレームありでjavadocを開いてください。右上に検索フォームが表示されます。
  • フォームに文字を入力すると、インクリメンタルな感じで検索されます。
  • 目的のクラスが表示されたらTabでフォーカスして、Enterで表示します。
  • 入力欄でEnterを打つと候補の一番目を開きます。
  • 入力欄でEscを打つと検索フォームを非表示にします。Ctrl+Spaceで再表示+フォーカスです。

インストール

http://sawat.jf.land.to/javadoc_isearch/IncrementalSearch4Javadoc.user.js
対象ページは "*/allclasses-frame.html" ですので、標準ライブラリーに限らず、任意のJavadocに対してインクリメンタルサーチが可能になります。

javascript:(function()%20{var%20script%20=%20top.document.createElement("script");script.type="text/javascript";script.charset="UTF-8";script.src="http://sawat.jf.land.to/javadoc_isearch/javadoc_isearch.js";window.top.document.getElementsByTagName("head")[0].appendChild(script);setTimeout(function(){if(top.window.javadoc_search)top.window.javadoc_search.showSearchForm();},1000)})();

検索したくなったときに実行してください。

以下のスクリプト本体をダウンロードして保存し、ローカル保存しているJavadocのindex.htmlファイルを開いて、scriptタグで埋め込むとよいでしょう。
http://sawat.jf.land.to/javadoc_isearch/javadoc_isearch.js

なお、user.jsもブックマークレットも上記スクリプトを読み込ませているだけです。


試してみたい人は、 http://java.sun.com/javase/ja/6/docs/ja/api/ を開いて、上記のブックマークレットを実行してみるとよいでしょう。


ちなみに

昨日のエントリーの「3777個のリンク」というのは最新版のJavadocの「すべてのクラス」のクラス数でした。Javadocを開くたびに数秒ブラウザがフリーズするのは嫌だったので処理速度を気にしていたわけです。
さらに余談ですが、標準ライブラリーのJavadocはオンラインではなく、ローカルにダウンロードしてオフラインで見るべきだ*1と思っているので、ローカルでのXMLHttpRequestの挙動とかが重要だったわけです。

追記(5/31)

パッケージ検索のバグを修正しました。

あと、brazilさんにブックマークで指摘されてしまいましたが、これは「車輪の再発明」ですね。*2
2006-05-31 - こせきの日記
http://www.teria.com/~koseki/tools/gm/javadoc_isearch/

機能はかなり似通ってますが、使い勝手が多少違うので好みの方をお使いください。個人的にはうちの方が動きがさくさくしてるかなぁと思ってます。あと、Firefox以外でも使えるのが売りになるかな?
あと、上記のバグ修正にあわせて、アンカー検索をパクらせていただきました。m(_ _)m
#からはじめると、今開いてるページのアンカー(各メソッドの詳細箇所など)を検索できます。(例:java.util.Listを開いてから、#get でgetメソッドなど)

スクリーンショット


図3:普通は前方一致。


図4:*ではじめれば中間一致。


図5:キャメルケース。らくだ式。


図6:役に立つのか不明だが正規表現


図7:パッケージのページも検索できるよ!

確認済み動作環境

OSはすべてWindow XP

*1:そのくらい頻繁に見るべきだということ

*2:基本的にスクリプトを書く動機が「使いたい」よりも「作りたい」なので、作ってから既出であることに気づくことはよくあります。