【2/17】今年は「濃厚」技術トーク!@ITメールセミナー スラッシュドット    はてなブックマーク  Yahoo!ブックマークに登録  印刷

安藤幸央のランダウン[33]

見つけて得するソースコード専用の検索エンジン

安藤幸央(yukio-ando@exa-corp.co.jp
エクサ
2007/3/9

Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集部)


プログラミングと検索エンジンは切っても切れない

 プログラミングと検索エンジンの関係は切っても切り離せないものです。プログラミングに役立つドキュメントノウハウを探したり、参考になるサンプルプログラムを見つけ出せます。

 さらにバグの回避方法を見つけたり、エラーメッセージを検索エンジンで探して、解決方法が見つかることも多いでしょう。良質のソースコードから、的確なアルゴリズムや、思いもしなかったようなコード例を見いだすのも新たな楽しみです。

 さて、ここではプログラミングの際に便利に利用できるソースコード専用の検索エンジンをいくつか紹介しましょう。ソースコード専用の検索エンジンを利用した検索には以下のような利点が考えられます。

ソースコード専用の検索エンジンを利用した検索の「利点

  • 雑多な情報の中から、サンプルコードのみを的確に見つけ出すことができる
  • API関数フレームワーク使い方の凡例を知ることができる
  • 一般的に説明の少ないマイナーな関数・メソッドの利用法を知ることができる
  • バグの例、脆弱なコードの例を探すことができる
  • バグに対する的確な対処例を知ることができる
  • 書籍の公式サポートサイトのサンプルコードを見つけることができる

 一方、便利なばかりではありません。注意点としては、以下の項目が挙げられます。

ソースコード専用の検索エンジンを利用した検索の「注意点

  • ソースコードのライセンスを配慮する。再利用、改変の際には特に注意する
  • 必ずしもバグのない、正しい例とは限らないことを認識する
  • コメント文が不十分だったり、なかったりする場合もある
  • 目的のコードを見つけ出すコツを身に付ける必要がある

 ソースコードを理解するうえでは、単独のソースコードを読み取ることも大切ですが、ソース全体のディレクトリ構造を読み、ファイル構成を読み取ることも大切です。より大きな範囲を読み取ることによって、コード設計の思想や、デザインパターンなどの活用方法をも知ることができます。

 以下、数多くのソースコード専用検索エンジンを紹介しますので、目的や用途に合わせて、自分に合ったサイトと利用方法を見つけ出してください。

Google Code Search


Google Code Search使用例(クリックすると画像が拡大します)

 Google Code SearchはGoogleが提供するソースコード専用の検索エンジン。キーワードの指定に正規表現が使える。また、単独のソースコードだけではなく圧縮されたファイルの中からもソースコードを抽出できるのが特徴。また、ライセンスを選択して検索できる。大文字小文字を分解して検索したり、大文字小文字を判別する・しないの指定が可能。さらに、パッケージ名やファイル名を指定し、検索範囲とすることもできる。Google Code Searchが対応していない言語でも、ファイルの拡張子で絞り込むという裏技も使える。

Koders


Kodersのトップページ
Kodersのトップページ

 登録されている(検索対象となっている)ソースコードが膨大な検索エンジンで、言語別、ライセンス別に検索対照を絞ることができる。また、Eclipse、VidualStudio専用のプラグインFirefox用のプラグインや、ホームページに埋め込み可能な部品企業内で利用できるエンタープライズバージョンも提供されている。

編集部注Kodersについてさらに詳しく知りたい読者は、連載CoolなEclipseプラグイン第6回「サンプルコードの入手をサポートするプラグイン」の[Koders Searchプラグイン]をご参照ください

CodeFetch


CodeFetchのトップページ
CodeFetchのトップページ

 検索対象となる言語が多い検索エンジン。プログラミング関連書籍の中のコードも検索対象となっている。

krugle


krugleのトップページ
krugleのトップページ

 ソースコード、プログラミングに関する情報、関連するオープンソースプロジェクトを探し出せるサイト。Ajaxを活用したユーザーインターフェイスが小気味よく動作する。

byteMyCode


byteMyCodeのトップページ
byteMyCodeのトップページ

 現在は主に、ソースコード共有サイト「byteMyCode 2.0」として進化している。有用なソースに投票することによって、ランキングが上下する。

Codase - Source Code Search Engine


Codase - Source Code Search Engineのトップページ
Codase - Source Code Search Engineのトップページ

 Java、C/C++専用。多彩な検索オプションが利用できる。プログラミング言語ごとに検索できるとともに、Linux、Windowsといった OSを限定してソースコード検索が可能。

Java Examples - JExamples.com


Java Examples - JExamples.comのトップページ
Java Examples - JExamples.comのトップページ

 Javaの利用例検索。メソッドの使い方を検索する。Apache Jakarta projectなど、メジャーなソースコードを中心に探し出せるのが特徴。

DocJar:Search Open Source Java API


DocJar:Search Open Source Java APIのトップページ
DocJar:Search Open Source Java APIのトップページ

 JavaDoc専用検索エンジン。クラス名検索を得意とする。Eclipse用プラグインもあり。NoClassDefFoundError対処用に各種jarファイルの在りかを知ることができる。

編集部注Kodersについてさらに詳しく知りたい読者は、連載CoolなEclipseプラグイン第6回「サンプルコードの入手をサポートするプラグイン」の[DocJarプラグイン]をご参照ください

Prospector Demo


Prospector Demoのトップページ
Prospector Demoのトップページ

 Javaの利用例検索サイト。あるオブジェクトから別のオブジェクトを生成するためのコード例を検索できる。Eclipseから直接利用できるプラグインも提供されている。

KickJava.com


KickJava.comのトップページ
KickJava.comのトップページ

 Java API用の検索エンジン。クラスの継承の状態、関連するクラスやメソッドなど周辺情報を知ることができる。JavaDocの情報をABC順にブラウズすることもできる。利用しようとしているAPIがメジャーなプログラム内では、どのように使われているのかを知るには重宝するサイトである。

jarhoo


jarhooのトップページ
jarhooのトップページ

 クラス名やインターフェイス名をキーワードに検索すると、そのクラスがどのjarファイルに含まれるか検索できる。サーバサイドのエラーログなどで出現したクラス名から、どのjarパッケージがエラーを起こしているのかを的確に知ることができる。

All The Code - Source Code Search Engine


All The Code - Source Code Search Engineのトップページ
All The Code - Source Code Search Engineのトップページ

 Java専用のソースコード検索エンジン。あいまいなキーワードからも検索が可能。ライブラリやフレームワークを開発する際の指針として使えるだろう。

Code Search - O’Reilly Labs


Code Search - O’Reilly Labsのトップページ
Code Search - O’Reilly Labsのトップページ

 O'Reilly出版本の中のサンプルコード限定で検索できる。書籍を読みながら活用できるサイト。

より良いソースコードを書くために

 ソースコードの検索というソリューションは(プログラミング言語ではなく)言語の壁を越えて活用できます。また、世界中のソースコードを情報として活用するとともに、社内リソース学内リソースを効果的に利用することにも使えます。ソースコードの再利用を促進するとともに、熟練プログラマーの技を知ることもできます。

 ソースコード検索には、コツやカンといったことも大切になります。API、関数の名前が分かっているなら、その名前をそのままキーワードとして検索しましょう。また、関連分野でよく使われる単語・用語を検索してみるのも効果的です。

 検索すると見つかるToDofixmeや「取りあえず」などのコメントを笑い飛ばしながら、より良いソースコードを書くための技を身に付けていきましょう!

 次回以降は、Javaプログラマーが聞いて役立つポッドキャスト番組を取り上げたり、開発の際に活用できる便利なツールを紹介していく予定です。

@IT関連記事

関連URL

  • Top Coders (プログラミングコンテストサイト)
  • The Code Project (フリーのソースコード貯蔵サイト)
  • Source-Navigator IDE (ソースコードブラウズ専用ツール)
  • Snipplr (タグ分類によるソースコード共有サイト)
  • DZone Snippets (タグ分類によるソースコード共有サイト)

関連書籍

プロフィール
安藤幸央(あんどう ゆきお)

1970年北海道生まれ。現在、株式会社エクサ マルチメディアソリューションセンター所属。フォトリアリスティック3次元コンピュータグラフィックス、リアルタイムグラフィックスやネットワークを利用した各種開発業務に携わる。コンピュータ自動彩色システムや3次元イメージ検索システム大規模データ可視化システム、リアルタイムCG投影システム、建築業界、エンターテインメント向け3次元 CG ソフトの開発、インターネットベースのコンピュータグラフィックスシステムなどを手掛ける。また、Java、Web3D、OpenGL、3DCG の情報源となるWebページをまとめている。

ホームページ
Java News.jp(Javaに関する最新ニュース)

所属団体
OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman)

主な著書
「VRML 60分ガイド」(監訳、ソフトバンク)
これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社)
The Java3D API仕様」(監修、アスキー)

安藤幸央のランダウン バックナンバー



ご意見、ご感想は掲示板へどうぞ


JavaコラムINDEX


ホワイトペーパーTechTargetジャパン

Java Solution フォーラム 新着記事

@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

RSSフィード

スキルアップ/キャリアアップ(JOB@IT)

- PR -
- PR -

お勧め求人情報

キャリアアップ 〜JOB@IT
@IT Special -PR-
  企業の仮想化に足りない“発想”とは?
仮想化運用管理のキモは意外なところに!

New!
  操作もマニュアルも分かりやすい!
ユーザー視点で開発されたPC管理ツール

New!
  仮想化すればコストは削減できるか?
仮想化に必要な「3つの視点」を解説する

  セキュリティを知り尽くす上野氏が登壇!
@ITメールソリューションLive! in Tokyo

  運用管理の課題を“2つの観点”から分析
ユーザー満足度の高い「仮想環境」とは?

  世界に通用するストレージの作り方とは?
製品に込めた思いを富士通の開発者に聞く

  OSSで手間も時間も、障害も減った――
「マピオンの事例」オープンソース活用法

  「ノートPCの持ち出し禁止」で大丈夫?
情報漏えいを防ぐ管理手法とインフラは?

  1日の処理を1秒に――MySQLの達人が語る
「コスト削減」できるチューニング

  ドキュメント作成を自動化して、SEの作業
効率を大幅アップ! Visio 2007の魅力

  急速に広がるHyper-Vでのサーバ仮想化
そのベストプラクティスをデルが解説

  @IT主催セミナーで語られた、「担当者に
求められるセキュリティ対策」をレポート

  @IT「Windows 7」 特設サイトオープン!
最新情報・移行ノウハウを公開しています