GitHub、膨大なコードに対応する検索エンジン「Blackbird」を解説
今回は「GitHub、膨大なコードに対応する検索エンジン「Blackbird」を解説」についてご紹介します。
関連ワード (ソフトウェア等) についても参考にしながら、ぜひ本記事について議論していってくださいね。
本記事は、ZDNet Japan様で掲載されている内容を参考にしておりますので、より詳しく内容を知りたい方は、ページ下の元記事リンクより参照ください。
プログラミング言語「Rust」の人気は高まり続けている。そんな中、開発者プラットフォームを手掛けるGitHubは米国時間2月6日、Rustで一から記述したコード検索エンジン「Blackbird」の開発動機などについて解説した。
GitHubは、ユーザーがさまざまなフォーラムを探し回って求めている答えを得るのではなく、現時点でベータ段階のBlackbirdを利用するようになってほしいと考えている。
開発者向けの知識共有サイトを運営するStack Overflowによると、Rustは多くの開発者が最も愛している(ただし最も普及しているというわけではない)プログラミング言語だという。
Rustは通常の場合、CやC++で記述されている既存プロジェクトに新機能を追加する際や、アプリの構築時よりシステムプログラミングに採用されることが多いため、新たなプロジェクトでRustが採用されるというのは興味深い。ただ、Microsoft Azureの最高技術責任者(CTO)Mark Russinovich氏は2022年に、Rustはメモリー安全性を備えているため、全ての新規プロジェクトはCやC++ではなくRustを採用すべきだと明言していた。
しかし、GitHubは「Apache Cassandra」や「Apache Solr」「Elasticsearch」といった数々のオープンソースソリューションを利用できるにもかかわらず、なぜ検索エンジンを一から構築するのだろうか。
GitHubのTimothy Clem氏は「何もない状態から検索エンジンを構築するというのは、一見すると疑問符の付く意思決定に感じられる。なぜそのような道に進むのだろうか?出来合いのオープンソースソリューションが既にたくさんあるのではないだろうか?なぜ新しいものを構築するのだろうか?」と記している。
同氏の手短な答えは、コードの検索に利用できる一般的なテキスト検索製品が見つからなかったというものだ。
同氏は「(既存製品の)ユーザーエクスペリエンスは貧弱であり、インデックス作成は遅く、ホストするにも多大なコストがかかる。より先進的でコード(の検索)に特化したオープンソースプロジェクトも存在しているが、GitHubの規模にはまったく対応できない」と記している。
GitHubは2011年にElasticsearchをデプロイしてみたが、当時に収容していたおよそ800万件のリポジトリーのインデックスを作成するのに「数カ月」もかかったと同氏は記している。GitHubは今日、2億件を超える動的なコードのリポジトリーをサポートしている。
Blackbirdは現在、ほぼ4500万件のリポジトリーに対する検索をサポートしている。そのカバレージは部分的だが、それでも115TB分のコードと、PythonやJava、JavaScriptで記述されたプログラムに関する155億件のドキュメントを検索できる。
GitHubのソフトウェアエンジニアリング担当バイスプレジデントであるPavel Avgustinov氏によると、Rustで記述されたカスタム検索エンジンであるBlackbirdは、より効率的に動作し、「重複データの排除によってストレージを大幅に節約するとともに、シャード間の均質な負荷分散を保証するようになっている」という。