Googleがソースコード検索Google Code Searchを公開を見て、面白いサービスがあることを知りました。
インターネット上で公開されたソースコードを検索します。
完全にソースコード検索に特化されたサービスで、参考になるソースコードを探してインターネットを検索する手間が大幅に低くなりそうです。
以下のような特徴があります。
正規表現が使える §
ソースコード使えればそれぐらい出来るだろうということでしょうね。
キャメルスタイルを分解する §
helloWorldに対して、"World"でヒットするということです。
これは一般の検索ではできない機能。
いろいろなソースから抜き出してくれる §
アーカイブされたファイルからも抜き出してくれます(.tar.gz, .tar.bz2, .tar, and .zip)。
更に、CVS repositoriesとSubversion repositoriesも対象にするといいます。
言語が指定できる §
lang:で以下の言語を指定できます。C#で探せば本当にC#のコードだけ出てきます。
- Ada
- ASP
- Assembly
- Basic
- C
- C++
- C#
- Eiffel
- Erlang
- Fortran
- Java
- JavaScript
- JSP
- Lex
- Limbo
- Lisp
- Lua
- Makefile
- Mathematica
- Matlab
- Objective
- perl
- php
- postscript
- python
- ruby
- scheme
- shell
- smalltalk
- sql
- tcl
- troff
- Yacc
ライセンスが指定できる §
これはある意味で凶悪な機能です。商用ソースに持ってきて良いライセンスを指定して、見つかったらもらってしまう……という使い方もできるわですから。ちなみに、否定条件が付けられるので、GPLは除外……ということも可能です。それを汚いと見るか合理的と見るかは人それぞれでしょうが。
ちなみに、私は参考ソースを見るためにこの検索に期待しているだけで、見つけたソースをもらってくる予定は(今のところ)皆無です。
- Aladdin Public License
- Artistic License
- Apache License
- Apple Public Source License
- BSD License
- Common Public License
- GNU General Public License
- GNU Lesser General Public License
- Historical Permission Notice and Disclaimer
- IBM Public License
- Lucent Public License
- MIT License
- Mozilla Public License
- NASA Open Source Agreement
- Python Software Foundation License
- Q Public License
- Sleepycat License
- Zope Public License<
Case-sensitiveを指定できる §
これは大文字小文字を使い分ける言語と、使い分けない言語を分けて扱うのに必須の機能ですね。
既に相当量の蓄積がある §
これは重要!
たとえば"lang:C#"とだけ指定すると113,000という数が出てきます。
明らかにアンチMS派であり、Javaに肩入れしているGoogleですが、C#のソースだけで11万ファイルを既に検索対象として持っているわけですね。
ちなみに、Cは4,560,000、C++は652,000、Javaは798,000でした。
しかし、VBも対象としているとおぼしきBasicが500しかないのは謎です。
というわけで…… §
これだ! というわけで、速攻でブックマークしました。
そこまで素早く登録してしまった理由の遠因はMSDN Library(ローカルで動く昔ながらのあれ)の弱体化にあるという気がします。
調べても、記述不足で良く分からない項目が珍しくありません。(いやまあ、昔もMFC関係はそういう項目が多かったのですが)
そこで、APIの利用例などを検索して調べたりするわけですが、MSDN Libraryの検索機能は使い勝手が落ちる一方です。要らないサイトもまとめて検索する割に、検索結果を順番に見ていく使い勝手はよくありません。
しょうがないので、インターネットを検索して利用例などのサンプルソースを探すわけですが、これも効率の良い作業にはなりません。
それが改善できれば、素晴らしいことです。
特に言語が指定できるのが良いですね。たとえばC#プログラミング中に、全く参考にならないJavaやC++のコードが「たまたま同じキーワードを使っている」というだけで引っかかってくるのはノイズ以外の何者でもありません。しかし、排除するには結構な手間を要します。その手間から解放されるだけでも、助かります。