GitHubは現在、同サービスで使用するために独自のコード検索エンジンの開発に取り組んでいる。この検索エンジンはコード検索に特化してRustで開発されており、「Blackbird」という名称で呼ばれているという。公式ブログでは2月6日、「The technology behind GitHub’s new code search」において、GitHubのコード検索エンジンとして必要な要件や、それをクリアするためにBlackbirdで使用されている技術などに関する詳しい解説が行われている。

  • The technology behind GitHub’s new code search|The GitHub Blog

    The technology behind GitHub’s new code search|The GitHub Blog

GitHubが独自の検索エンジンを開発した大きな理由として、次の3つの項目が挙げられている。

  • GitHubでは、コード検索に関するまったく新しいユーザーエクスペリエンスのビジョンを持っている
  • プログラムのコードはすでに機械が理解できるように設計されていることから、その構造と関連性を検索に利用できる可能性が高く、一般的なテキスト検索とは一線を画している。ピリオドや括弧も検索に含めるなど、コード検索独自の要件もある
  • 115TBのコードと4,500万のリポジトリを対象に検索しなければならない

115TBのデータ量は、単純にブルートフォースで検索するのは現実的ではない。そのためインデックスを利用した高速化を行う必要があるが、次に問題になるのは4,500万のリポジトリのインデックス構築をどのようにして妥当な時間で完了させるかだ。GitHubのデータの場合、Gitが使用するContent Addressable Hash(コンテンツアドレス可能ハッシュ)がインデックス化に利用できることと、GitHubには多数の重複コンテンツがあるということの2つの特性があり、この特性を利用することで現実的な時間でのインデックス構築を可能にしているという。

公式ブログでは、このインデックス構築の具体的な手順も含めて、Blackbird内部で使用されている技術が詳しく解説されている。この新しいコード検索は、現在テクノロジープレビューが行われており、ベータプログラムに参加することで試ることができる。