安藤幸央のランダウン[33]
見つけて得するソースコード専用の検索エンジン
安藤幸央(yukio-ando@exa-corp.co.jp)エクサ
2007/3/9
|
「Java News.jp(Javaに関する最新ニュース)」の安藤幸央氏が、CoolなプログラミングのためのノウハウやTIPS、筆者の経験などを「Rundown」(駆け足の要点説明)でお届けします。(編集部) |
■ プログラミングと検索エンジンは切っても切れない
プログラミングと検索エンジンの関係は切っても切り離せないものです。プログラミングに役立つドキュメントやノウハウを探したり、参考になるサンプルプログラムを見つけ出せます。
さらにバグの回避方法を見つけたり、エラーメッセージを検索エンジンで探して、解決方法が見つかることも多いでしょう。良質のソースコードから、的確なアルゴリズムや、思いもしなかったようなコード例を見いだすのも新たな楽しみです。
さて、ここではプログラミングの際に便利に利用できるソースコード専用の検索エンジンをいくつか紹介しましょう。ソースコード専用の検索エンジンを利用した検索には以下のような利点が考えられます。
ソースコード専用の検索エンジンを利用した検索の「利点」 |
|
一方、便利なばかりではありません。注意点としては、以下の項目が挙げられます。
ソースコード専用の検索エンジンを利用した検索の「注意点」 |
|
ソースコードを理解するうえでは、単独のソースコードを読み取ることも大切ですが、ソース全体のディレクトリ構造を読み、ファイル構成を読み取ることも大切です。より大きな範囲を読み取ることによって、コード設計の思想や、デザインパターンなどの活用方法をも知ることができます。
以下、数多くのソースコード専用検索エンジンを紹介しますので、目的や用途に合わせて、自分に合ったサイトと利用方法を見つけ出してください。
■ Google Code Search
| Google Code Search使用例(クリックすると画像が拡大します) |
Google Code SearchはGoogleが提供するソースコード専用の検索エンジン。キーワードの指定に正規表現が使える。また、単独のソースコードだけではなく圧縮されたファイルの中からもソースコードを抽出できるのが特徴。また、ライセンスを選択して検索できる。大文字小文字を分解して検索したり、大文字小文字を判別する・しないの指定が可能。さらに、パッケージ名やファイル名を指定し、検索範囲とすることもできる。Google Code Searchが対応していない言語でも、ファイルの拡張子で絞り込むという裏技も使える。
■ Koders
| Kodersのトップページ |
登録されている(検索対象となっている)ソースコードが膨大な検索エンジンで、言語別、ライセンス別に検索対照を絞ることができる。また、Eclipse、VidualStudio専用のプラグイン、Firefox用のプラグインや、ホームページに埋め込み可能な部品、企業内で利用できるエンタープライズバージョンも提供されている。
編集部注:Kodersについてさらに詳しく知りたい読者は、連載CoolなEclipseプラグインの第6回「サンプルコードの入手をサポートするプラグイン」の[Koders Searchプラグイン]をご参照ください
■ CodeFetch
| CodeFetchのトップページ |
検索対象となる言語が多い検索エンジン。プログラミング関連書籍の中のコードも検索対象となっている。
■ krugle
| krugleのトップページ |
ソースコード、プログラミングに関する情報、関連するオープンソースプロジェクトを探し出せるサイト。Ajaxを活用したユーザーインターフェイスが小気味よく動作する。
■ byteMyCode
| byteMyCodeのトップページ |
現在は主に、ソースコード共有サイト「byteMyCode 2.0」として進化している。有用なソースに投票することによって、ランキングが上下する。
■ 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の利用例検索。メソッドの使い方を検索する。Apache Jakarta projectなど、メジャーなソースコードを中心に探し出せるのが特徴。
■ 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のトップページ |
Javaの利用例検索サイト。あるオブジェクトから別のオブジェクトを生成するためのコード例を検索できる。Eclipseから直接利用できるプラグインも提供されている。
■ KickJava.com
| KickJava.comのトップページ |
Java API用の検索エンジン。クラスの継承の状態、関連するクラスやメソッドなど周辺情報を知ることができる。JavaDocの情報をABC順にブラウズすることもできる。利用しようとしているAPIがメジャーなプログラム内では、どのように使われているのかを知るには重宝するサイトである。
■ jarhoo
| jarhooのトップページ |
クラス名やインターフェイス名をキーワードに検索すると、そのクラスがどのjarファイルに含まれるか検索できる。サーバサイドのエラーログなどで出現したクラス名から、どのjarパッケージがエラーを起こしているのかを的確に知ることができる。
■ 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のトップページ |
O'Reilly出版本の中のサンプルコード限定で検索できる。書籍を読みながら活用できるサイト。
■ より良いソースコードを書くために
ソースコードの検索というソリューションは(プログラミング言語ではなく)言語の壁を越えて活用できます。また、世界中のソースコードを情報として活用するとともに、社内リソースや学内リソースを効果的に利用することにも使えます。ソースコードの再利用を促進するとともに、熟練プログラマーの技を知ることもできます。
ソースコード検索には、コツやカンといったことも大切になります。API、関数の名前が分かっているなら、その名前をそのままキーワードとして検索しましょう。また、関連分野でよく使われる単語・用語を検索してみるのも効果的です。
検索すると見つかるToDo、fixmeや「取りあえず」などのコメントを笑い飛ばしながら、より良いソースコードを書くための技を身に付けていきましょう!
次回以降は、Javaプログラマーが聞いて役立つポッドキャスト番組を取り上げたり、開発の際に活用できる便利なツールを紹介していく予定です。
■ @IT関連記事
- 連載 CoolなEclipseプラグイン 『サンプルコードの入手をサポートするプラグイン』
- Java TIPS 『コーディング規約に従わないコードを検索する』
- Java TIPS 『Eclipse上でGoogleの検索機能を利用する』
- 連載 プログラマーの常識をJavaで身につける 『プログラマーがAPIに向き合ううえでの常識』
■ 関連URL
- Top Coders (プログラミングコンテストサイト)
- The Code Project (フリーのソースコード貯蔵サイト)
- Source-Navigator IDE (ソースコードブラウズ専用ツール)
- Snipplr (タグ分類によるソースコード共有サイト)
- DZone Snippets (タグ分類によるソースコード共有サイト)
■ 関連書籍
- 『ソースコードリーディングから学ぶ Javaの設計と実装』 技術評論社
| プロフィール |
| 安藤幸央(あんどう ゆきお) ホームページ Java News.jp(Javaに関する最新ニュース) 所属団体 OpenGL_Japan (Member)、SIGGRAPH TOKYO (Vice Chairman) 主な著書 「VRML 60分ガイド」(監訳、ソフトバンク) 「これがJava だ! インターネットの新たな主役」(共著、日本経済新聞社) 「The Java3D API仕様」(監修、アスキー) |
安藤幸央のランダウン バックナンバー
- 第1回 Javaを速くするための心構え
- 第2回 サーバサイドで進化するグラフィックス
- 第3回 ユーザビリティ(使いやすさ)の大切さ
- 第4回 Javaプログラマのお役立ちサイト
- 第5回 伝説のイベントJava Night
- 第6回 次世代のインターネット言語curl登場!
- 第7回 次世代を予感させるグリッドコンピューティング
- 第8回 音声はコンピューティングを変える?
- 第9回 GoogleをWebサービスから利用するAPIの登場
- 第10回 これは使える!Java風スクリプト
- 第11回 PtoPはいよいよビジネスのステージに
- 第12回 ハリウッド映画並のCGがPCに到来する日
- 第13回 知的ゲーム「Robocode」でJavaのチャンピオンに
- 第14回 海の上のJava Night
- 第15回 Java版テラリウム? ただいま開催中
- 第16回 進化したアプレット、Viewletとは?
- 第17回 Eclipse:新しい開発環境モデルの誕生
- 第18回 Webサービス、どこまで実用になっている?
- 第19回 SWTは本当に高速なGUIを実現するのか?
- 第20回 JavaOne 2003の注目トピックを振り返る
- 第21回 SIGGRAPH 2003に見るJavaの進化
- 第22回 AmazonWebサービスの可能性
- 第23回 オープンソースの検索エンジン登場
- 第24回 技術者の祭典JTC BOFとJava Night
- 第25回 リッチクライアント時代の到来
- 第26回 Eclipse 3.0のリッチクライアントとは?
- 第27回 データ中心型、簡単リッチクライアントJDNC
- 第28回 浸透する新世代のシンクライアント
- 第29回 WebプログラマはRailsに乗るべきか?
- 第30回 Ruby On Railsのチームに学ぶ仕事術
- 第31回 JavaプログラマはAjaxに乗るべきか
- 第32回 Java SE 6へ移行する理由と移行をとどまる5つの理由
- 第33回 見つけて得するソースコード専用の検索エンジン
- 第34回 Podcastでプログラマーに必要な英語をStudyしよう!
- 第35回 人気のAPI/フレームワークを作るための39カ条
- 第36回 あなたのサイトはiPhoneで見られますか?
- 第37回 バッチ処理はJavaでバッチリ?その現状とこれから
- 第38回 Cometに代表されるサーバ・プッシュ技術の復権
- 第39回 ソースコードの宝石箱、●●Forgeを見逃すなかれ
- 第40回 Webアプリ開発環境としてのSafariを知ってますか?
- 第41回 夏休みに世界へ挑戦! プログラミングコンテスト
- 第42回 開発者が知っておくべきJavaと仮想マシンの歴史
- 第43回 あなたの知らないJDKの便利ツールたち
- 第44回 時を欠ける症状−うるう秒から考えるサステナビリティ
- 第45回 IT業界で楽しく仕事をするための10カ条
- 第46回 そのWebサービスで“対価”をもらえますか?
- 第47回 IT系でも活用しなければ損。論文を読んで広がる知見
- 第48回 Webからの知見、見つけた論文の読み解き方
- 第49回 Java技術者も知っておきたい「AR(拡張現実)」
- 第50回 クラウド活用「雲活」のために押さえるべき39のポイント
- 第51回 意外と知らないバージョン表記・数字の豆知識
- 第52回 グーグルは、○○おもいっきり、テレビ
- 第53回 いま購読するべき15の開発者ブログ
- 第54回 技術者なら知っておきたい「ソーシャルゲーム」とは
- 第55回 開発者は覚えておきたいアプリストア/マーケット大全
- 第56回 売れるスマホアプリを目指せ! テスト達人への道
- 第57回 プレゼン巨人の星となるためのツールと手法のまとめ
- 第58回 ぼくらの七ボタン戦争 - Social Buttons War
- 第59回 師走を楽しもう。技術系アドベントカレンダーの魅力とは
- 第60回 GitHubをもっとソーシャルに使いこなすための7つ道具
- 第61回 こんなに充実!Webで学べるIT系学習講座20選まとめ
- 第62回 スマホアプリ開発に超絶便利なBaaSとは、MEAPとは
- 第63回 世界的に使われている履歴書的Webサービス16選
- 第64回 勉強会主催/参加者が知らないと泣きを見る48のコト
- 第65回 +αでSNSが変わるGoogle+とTwitterの深イイ話
- 第66回 GNU30周年と開発環境、開発ツールの歴史を振り返る
- 第67回 プログラミング学習&開発環境Webサービス23選
| ご意見、ご感想は掲示板へどうぞ |
| JavaコラムINDEX |
TechTargetジャパン
- Java SE 8の肝となるラムダ式の基本文法 (2014/3/18)
基本文法の概要とさまざまな省略の仕方、匿名クラスとラムダ式の共通点と違い、応用的な使い方についてコード例を交えて解説 - Gradleのインストールと使い方、Jenkins/Git連携 (2014/3/14)
オープンソースビルドツールGradleの主な特長やLinux/Windowsでの環境構築方法、さまざまな使い方に加えCI/バージョン管理との連携を解説 - Javaラムダ式入門とJDKのインストール、環境構築 (2014/2/18)
ラムダ式の概要と利点、必要性、JDK 8のセットアップ、NetBeans、IntelliJ IDEA、Eclipseのe(fx)clipseプラグインの環境構築について - Play2プラグインのインストールと使用と新規開発 (2014/1/28)
Play framework 2.xを使ったアプリケーションを拡張させる仕組み、プラグインの使い方および開発方法を紹介します
|
|
キャリアアップ
- - PR -
イベントカレンダー
- - PR -
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
「ITmedia マーケティング」新着記事
第19回 商品名/企業名が詰め込まれた見出しはクリックされない!?
ニュースサイトパブリシティの際、見出しを重要視するPR担当者がいます。記事の見出しを...
Fortune500社の半数以上がマーケティングオートメーションを利用
「見込み顧客を案件に育てていく」「最適なタイミングで、最適な顧客に最適なキャンペー...
ニフティ、ISP事業部門の営業情報収集/集計用データ連携基盤に「DataSpider Servista」を採用
アシストは4月4日、インターネット接続サービス大手のニフティに、データ連携ツール「Dat...