最終更新時刻:2008年10月8日(水) 7時34分

-

ソースコード検索エンジンがもたらす価値とは

公開日時:
2004/11/17 09:29
著者:
umeda

[ゲスト] 高林 哲 Satoru Takabayashi
11月15日(月)〜11月18日(木)までの間、梅田望夫さんの代わりに高林哲さんがゲストブロガーとして登板します。

高林さんのプロフィール:産業技術総合研究所研究員。2004年 IPA未踏ソフトウェア創造事業開発者。1997年に全文検索システムNamazuを開発。以来、多数のフリーソフトウェアを開発している。趣味はバッドノウハウ

 ・高林哲のWebサイト
 ・いやなブログ

昨日はソースコード検索エンジンがなぜ必要かという背景と、現在私が開発に取り組んでいるgonzuiというプロジェクトの概要を紹介した。今日は、ソースコード検索エンジンがもたらす価値と、ソースコード検索エンジンが通常の検索エンジンと異なる点について述べ、このテーマをまとめたい。

ソースコード検索エンジンがもたらす価値

昨日の記事では、「プログラムを書いていると、他の人が書いたソースコードを参考にしたいときがよくある」ゆえにソースコード検索エンジンが必要であると述べた。この説明は、プログラマには通じやすいが、他の人にはなかなか伝わりにくい。理屈抜きで豪快に言ってしまえば、 Googleがウェブの利用者にもたらしたのと同様の価値をオープンソースの開発者にもたらすのがソースコード検索エンジンである。

と、はたしてそこまで言い切ってしまっていいものか疑問が残るが、ともあれ、ここではソースコード検索エンジンがもたらす価値について考えてみたい。

私のプロジェクトのゴールは、世界中のオープンソースのソフトウェアのソースコードを検索可能にし、求めているソースコードをすばやく見つけ出せるようにすることである。この目標が達成されると、他人のソースコードを参考にしながらプログラミングするのが容易になり、生産性の向上がもたらされる。それと同時に、他人のソースコードからノウハウを学ぶ機会が増える点も重要である。

ビル・ゲイツも

「You've got to be willing to read other people's code, then
write your own, then have other people review your code.」

と言っているように、他人のコードを読むことはプログラミングに上達する秘訣である。しかしながら、これを実践している人はあまり多くない。私も大切だ大切だと思っているほどには実践していない。実践が難しい大きな理由のひとつは、参考にしたいソースコードを探すのが非常に大変ということである。ソースコード検索エンジンはこの問題を解決する。

インターネット上には莫大な量のオープンソースのソースコードが公開されている。これらをノウハウの宝庫として活用できれば、オープンソース開発の生産性を大幅に向上できる。また、コードを読むことによる学習効果によって、オープンソース開発者全体の技術レベルの底上げにもつながると考えている。

ここまでの説明ではオープンソースに焦点を当ててきたが、gonzuiをローカルに設置すれば、企業や大学内などのクローズドなソースコードを対象とした検索エンジンとして使うこともできる。gonzuiは、スタンドアロンのソフトウェアとして低い導入コストで設置できることをひとつの設計目標としている。Unixベースのサーバがあれば簡単に動かせる。将来的にはWindowsへの移植も予定している。

gonzuiはこれまで私が開発してきたソフトウェアと同様に、オープンソースのソフトウェアとして公開する予定である。

ソースコード検索エンジンと通常の検索エンジンの違い

さて、ここからちょっとテクニカルな内容に移り、ソースコード検索エンジンが通常の検索エンジンとどのように異なるかについて述べたい。

ソースコードとは、 ソフトウェアの原形のようなもので、C言語やJavaといったプログラミング言語によって記述される。たとえば、 hello, worldと表示するC言語のプログラムは次のようになる。

/*
* hello, world と表示するプログラム
*/
#include
int
main ()
{
printf("hello, world\n");
}

上の例を見るとわかるように、ソースコードは通常の文書とはずいぶん異なる見た目を持っている。具体的には次のような特徴がある。

  • 記号が多い。一見して気が付くのは、 / * # < > ( ) { } " \ ; などの記号が多用されていることである。
  • 文法が特殊。日本語や英語などの自然言語と異なり、プログラ ミング言語では上記のような記号を多用した文法が用いられる。

このように、ソースコードは特殊な文法によって記述されているため、ソースコード内の構成要素を明確な種類に分けることができる。上の例では /* 〜 */ の部分はコメント、 int main () { 〜 } の部分は関数定義、printf(〜) の部分は関数呼び出し、 "hello, world\n" の部分は文字列と分類できる。

このようなソースコードの特徴を解析して検索に役立てるところがソースコード検索エンジンのミソだ。たとえば、printfという関数の定義を知りたいときに、 printfの関数呼び出しばかり見つかっても嬉しくないが、関数定義と関数呼び出しを区別できれば、こうした問題は解消できる。

ソースコード検索エンジンが通常の文書を対象とした検索エンジンと異なる点は、主にこの辺りの特徴をどう扱うかにある。検索結果のランキングも文書の重要度ではなく、コードの重要度に基づいて行う必要がある。gonzuiでは、オープンソースのソフトウェアのプロジェクト間の関連性を元にランキングを行う方法を検討している。他にも、検索結果の表示方法など、ソースコードの特徴を念頭に検討しなければならない点は多い。

昨日から2日間に渡って、現在私が取り組んでいるソースコード検索エンジンのプロジェクトについて紹介した。ゲストブログ最終日である明日はソースコード検索エンジンから離れて、もっと気楽な話題を取り上げたい。

※このエントリは CNET Japan ブロガーにより投稿されたものです。シーネットネットワークスジャパン および CNET Japan 編集部の見解・意向を示すものではありません。

このエントリーへのコメント

ブログにコメントするにはCNET_IDにログインしてください。

この記事に対するTrackBackのURL: 

このブログについて

ブロガープロフィール

アーカイブ

カテゴリ

  • 未分類

ブログネットワーク

アルファブロガー

外資系エグゼクティブの日々I am Jamming!
外資系エグゼクティブの日々
村上敬亮 情報産業の未来図ネットワーク型産業構造への衣替え?
村上敬亮 情報産業の未来図
クロサカタツヤの情報通信インサイトグッバイ、レバレッジ!(1)
クロサカタツヤの情報通信インサイト
末吉隆彦 ロケーションウェアの「空」と「実」9月イベントお知らせ
末吉隆彦 ロケーションウェアの「空」と「実」
ケータイ時代のスタンダードiPhonista Nightの事後報告
ケータイ時代のスタンダード
江島健太郎 / Kenn's Clairvoyance新サービスをローンチしました
江島健太郎 / Kenn's Clairvoyance
鈴木健の天命反転生活日記パラレルワールドとしての電脳コイル
鈴木健の天命反転生活日記

読者ブロガー

WEB製作者の為のSEO対策スパム
WEB製作者の為のSEO対策
オープンソースCMS GeeklogがWEBの標準になる日OSC2008Tokyo/Fallで勉強会大集合開催
オープンソースCMS GeeklogがWEBの標準になる日
インターネットの裏側を探しましょ月5000円を得るための代償
インターネットの裏側を探しましょ
ネットのニュース.logiPhone2.2では、絵文字に対応?
ネットのニュース.log
それでも開発は続くよすでに土砂降りのIT業界
それでも開発は続くよ

企画特集

KDDI「SaaSソリューション」KDDI「SaaSソリューション」
〜社内コミュニケーションの課題への解決策とは〜
エンタメCGM「gooメーカー☆メーカー」エンタメCGM「gooメーカー☆メーカー」
【第1回】開発者に訊く!各機能と開発の狙いとは

新着コメント

Kaburagiさん、こんにちは。 > 何にも価値の無いサイトを上位表示する事。 主......
SEOの流行
投稿者:AsukaC
> 完全な「食の安全」社会は、大変高価な食料品の世界である。 現代は、とい......
「食の安全」の幻想
投稿者:shin-ya
>日本でセカンドライフブームが起きたことは、ある種当然である。そして、そ......
本当にセカンドライフは「過去の思い出」になったのだろうか(2)
投稿者:he
なに、iPhone? いらねーよ。 ベンダー・ロックインされて喜ぶなよ。...
PCがメインだって?だったらiPhone買ってみな!
投稿者:アロン
Eatta さんのような、詳しい方のご意見をぜひ伺いたいと思っておりました。 ......
車の両輪が私有地に接地した状態でないと走行できない公道(架空の例)
投稿者:sumimotoshohei

ブログネットワークとは?

CNET Japan ブログネットワークは、元はCNET Japanの一読者であった読者ブロガーと、編集部の依頼により執筆されているアルファブロガーたちが、ブログを通じてオンタイムに批評や意見を発信する場である「オピニオンプレイス」、また、オピニオンを交換するブロガーたちが集うソサエティです。

広い視野と鋭い目を持ったブロガーたちが、今日のIT業界や製品に対するビジョンや見解について日々熱く語っています。

あなたもブログを書いてみませんか?

CNET Japanやその他サイトが提供するITニュースやコンテンツへの意見や分析、 ビジネスやテクノロジーに対するビジョンや見解について語っていただける方を 募集しています。ご応募はこちらから

ブログの投稿・管理

ブログの投稿はこちらから(※ブロガー専用)

ブログアワード2007開催決定!

今年最も活躍したブロガーを表彰します。詳細はこちらから

αマークって?

これは、CNET Japan 編集部の依頼に基づいて執筆されているCNET Japan アルファブロガーによるブログの印です。

Good!って?

CNET Japan ブログネットワーク内で拍手の代わりに使用する機能です。ブログを読んで、感激した・役に立ったなど、うれしいと思ったときにクリックしてください。多くGood!を獲得した記事は、より多くの人に読まれるように表示されます。

レビュー

[レビュー]2011年画質を備えた高画質、多機能Blu-ray--ソニー「BDZ-X95」
ソニーのBlu-ray Discレコーダー新製品が登場した。2007年から引き継がれる「やりたいことから選ぶ」シリー
今週の新製品総チェック:よりモバイルPCとして進化した「Let's note」が登場
松下電器産業の「Let's note」、デルのデスクトップPCとPC新製品が数多く登場した。Let's noteは9時間駆動
今週の新製品総チェック:フルサイズCMOS搭載のキヤノン「EOS 5D Mark II」が登場
キヤノンからもフルサイズCMOSセンサを搭載した「EOS 5D Mark II」が登場した。合わせてコンパクトデジカメ
今週の新製品総チェック:第4世代iPod nano登場、ソニー「α」、松下「LUMIX」に新機種も
デザインを一新したiPod nano、容量増されたiPod touchなど、新iPodファミリーが登場した。その後を追うよ