[ゲスト] 高林 哲 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 編集部の見解・意向を示すものではありません。
| 日 | 月 | 火 | 水 | 木 | 金 | 土 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
ネットワーク型産業構造への衣替え?
iPhonista Nightの事後報告
SoftBankは誰に好評なのか?
スパム
アフィリエイトの仕組みを知らない?技術者のITリテラシー
OSC2008Tokyo/Fallで勉強会大集合開催
月5000円を得るための代償
iPhone2.2では、絵文字に対応?
すでに土砂降りのIT業界みんなのお題では、ブロガー同士で質問を出し合いそれに対する回答や意見を集めています。今日はどんな話題が盛り上がっているでしょう?
CNET Japan ブログネットワークは、元はCNET Japanの一読者であった読者ブロガーと、編集部の依頼により執筆されているアルファブロガーたちが、ブログを通じてオンタイムに批評や意見を発信する場である「オピニオンプレイス」、また、オピニオンを交換するブロガーたちが集うソサエティです。
広い視野と鋭い目を持ったブロガーたちが、今日のIT業界や製品に対するビジョンや見解について日々熱く語っています。
CNET Japanやその他サイトが提供するITニュースやコンテンツへの意見や分析、 ビジネスやテクノロジーに対するビジョンや見解について語っていただける方を 募集しています。ご応募はこちらから
ブログの投稿はこちらから(※ブロガー専用)
今年最も活躍したブロガーを表彰します。詳細はこちらから
これは、CNET Japan 編集部の依頼に基づいて執筆されているCNET Japan アルファブロガーによるブログの印です。
CNET Japan ブログネットワーク内で拍手の代わりに使用する機能です。ブログを読んで、感激した・役に立ったなど、うれしいと思ったときにクリックしてください。多くGood!を獲得した記事は、より多くの人に読まれるように表示されます。
[レビュー]2011年画質を備えた高画質、多機能Blu-ray--ソニー「BDZ-X95」
今週の新製品総チェック:よりモバイルPCとして進化した「Let's note」が登場
今週の新製品総チェック:フルサイズCMOS搭載のキヤノン「EOS 5D Mark II」が登場
今週の新製品総チェック:第4世代iPod nano登場、ソニー「α」、松下「LUMIX」に新機種も