Hatena::ブログ(Diary)

sawatの日記 RSSフィード

2007-05-30 (水)

[][] インクリメンタルサーチJavadoc APIをさくさく参照するためのuser.jsなど 01:32  インクリメンタルサーチでJavadoc APIをさくさく参照するためのuser.jsなどを含むブックマーク

こんなの作りました。

f:id:sawat:20070530235023p:image
図1:検索フォームです。

f:id:sawat:20070531011333p:image
図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 - こせきの日記

Greasemonkey: Javadoc Incremental Search User Script

機能はかなり似通ってますが、使い勝手が多少違うので好みの方をお使いください。個人的にはうちの方が動きがさくさくしてるかなぁと思ってます。あと、Firefox以外でも使えるのが売りになるかな?

あと、上記のバグ修正にあわせて、アンカー検索をパクらせていただきました。m(_ _)m

#からはじめると、今開いてるページのアンカー(各メソッドの詳細箇所など)を検索できます。(例:java.util.Listを開いてから、#get でgetメソッドなど)


スクリーンショット

f:id:sawat:20070531001651p:image
図3:普通は前方一致。

f:id:sawat:20070531001650p:image
図4:*ではじめれば中間一致。

f:id:sawat:20070531001649p:image
図5:キャメルケース。らくだ式。

f:id:sawat:20070531001648p:image
図6:役に立つのか不明だが正規表現

f:id:sawat:20070531001647p:image
図7:パッケージのページも検索できるよ!

確認済み動作環境

OSはすべてWindow XP

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

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