お使いのブラウザは最新版ではありません。最新のブラウザでご覧ください。

CNET Japan ブログ

「Google Code Search」は圧縮ファイルの中身まで探す

2007/12/24 22:27
  • このエントリーをはてなブックマークに追加

プロフィール

寺本由美子

本名とタイトルのペンネームが異なっているのはご愛敬(話せば長~い物語あり)。IT系の話題からゲームのレビューまで、自由気ままに発信します。iPadやiPhoneなど、大好きな電脳小物についても熱く語りたいですね。Twitterにも出没中。ブログへのコメントも、@kirifue へどうぞ。
ブログ管理

最近のエントリー

オタクな面ばかりが表に出るので誤解が多いのだが、本職はIT系技術屋だ。なので、日々コードと格闘している。今はPHPから離れ、かと言ってRubyまではたどり着けず、Perl辺りを使ってちょいとした仕事をこなしたり、JavaやJavascriptをいじくりまわしてWebアプリを開発したりしている。

なまじHTMLを平打ちするのが好きなばっかりに、このCNETブログではひどい目にあった。11月のリニューアル前に手入力したHTMLファイルが、リニューアル後軒並みレイアウト崩れ。と言っても、再編集しなければ崩れないのだが、カテゴリ分けするためには、どうしても編集画面を呼び出さなければならず。すると行末の<br>が勝手に外されてしまい、グチャグチャ状態に(泣)。調べたところ、<br>でなく<br />でないと認識されないようだ。そんなこんなで、いろいろな問題が噴出..まあ、間借りしている身としてはあまり文句は言えないのだが、CNET編集部さんにはしっかり要望は伝えておいた(具体案としては、エディタの仕様変更は置いといて、編集時に「WYSIWYG画面」か「コード編集画面」かを選択可にするだけ)。というわけで、チリポリと気長にカテゴリ分けを続けているのだが、未だに50もの過去記事が未分類のままである(半分は言い訳だけども)。

あ、いやいや、愚痴を言おうとしたのではなかった。
そんなゴリゴリとプログラムを書いている私のオススメのコード検索サービスが「Google Code Search」だ。何か調べたいコードがあるとする。その一部(インクルードファイル名とか関数名とか)を入力して検索すればOK。世界中の膨大な数のソースコードの中から、マッチしたコードを探し出してくれる。最近では「Apache FOP」の関数の使い方を調べるのに役立ったので、この例を紹介してみたい。

簡単な検索例

Google Code Search

PDFTranscoderクラスを使用して SVGファイルをPDFファイルに変換したいのだが、使用方法がよく分からない。そこで「Google Code Search」を一発。

  1. 「Google Code Search」で語句を入力して[ソースコードを検索]。
    "PDFTranscoder"と入力。

  2. 「ソースコード」一覧から目的のコードを見つける。
    最初のコードは「PDFTranscoderクラス」自体を記述しているので目的のコードではない。
    一番下の"government-grants.org/.../xmlgraphics/fop/fop-current-src.tar.gz - Apache - Java"が、Apacheのソースファイルなので適当かもしれない。
    Google Code Search1

  3. 「fop-current-src.tar.gz をさらに検索 ≫」のリンクをクリック。
    ファイル名を見ると、"fop-0.93/examples/embedding/java/embedding/ExampleSVG2PDF.java"が求めているコードのようなのでクリック。
    Google Code Search2

  4. コードが見つかった。
    Google Code Search2

コードの内容はともかくとして、このExampleファイルのある場所に注目したい。「fop-current-src.tar.gz」とある。つまり、圧縮ファイルの中にあるコードだ。Googleによると、アーカイブ (.tar.gz、.tar.bz2、.tar、.zip)、CVS リポジトリ、サブバージョン リポジトリなどから探し出してくれるという。もちろん、非公開のサイト(robots.txtの設定が必要)はクロールしない。

もっと便利な使用方法

2007/12/25追記
トップページの[ソースコード検索オプション]のリンクをクリックすると、詳細なオプションの設定が可能。

詳しくは「Google ソースコード検索よくある質問」へ。

  1. 正規表現
    POSIX 拡張正規表現をサポートしている。ただし、後方参照、照合要素、照合クラスはサポートされない。空白文字はバックスラッシュでエスケープするか、文字列を引用符で囲む。
    例えば関数名がはっきりと分からないといった場合でも、正規表現を使用することで「あたり」をつけることが可能となっている。

  2. 言語、ライセンス、パッケージ URL、ファイル名で絞り込める
    lang: 演算子 プログラミング言語で検索を絞り込む
    (例) lang:"c++"、-lang:java、lang:^(c|c#|c\+\+)$
    license: 演算子 ソフトウェア ライセンスで検索を絞り込む
    (例) license:apache、-license:gpl、license:bsd|mit
    package: 演算子 パッケージ URL で検索を絞り込む
    (例) package:"www.kernel.org"、package:\.tgz$
    file: 演算子 ファイル名で検索を絞り込む
    (例) file:include/linux/$、-file:\.cc$

検索できるコードの多くがオープンソースであり再利用が可能となっているが、中にはライセンスを明記していないものもある。利用時には気をつけたい。

CNETの記事によると、このサービスに関してのGoogleのスタンスは以下の通りだ。

Stocky氏は「検索できるコードの多くはオープンソースであり、再利用が可能だ。しかし、それが主要な使い方だとは思わない。むしろ、プログラミングの方法を習得するためのツールであり、オープンソースのソフトウェアを作成する際に、やり方が正しいかどうかを確認するためのツールだと考えている」と語った。

たとえ丸々コードを再利用しないにしても、プログラミング例があると無いのとでは開発スピードに雲泥の差がつく。あえて言うなら、これはインターネット上のfind、あるいは、grepコマンドのようなものだ。一度使うと病みつきになる「超便利な」ツールなのである。

CNET Japan 2006/10/05
グーグル、コード検索の新サービス「Google Code Search」を発表

※このエントリは CNET Japan ブロガーにより投稿されたものです。朝日インタラクティブ および CNET Japan 編集部の見解・意向を示すものではありません。
運営事務局に問題を報告

最新ブログエントリー

個人情報保護方針
利用規約
訂正
広告について
運営会社