現代のコンピューティングは、コードとデータに分かれているとよく考えられます。機能的には、これは特定のアプリを見ると理にかなっています。しかし、標準的なマイクロサービス アーキテクチャを見ると、コード自体の幅と深さは、いくつかのテキスト ファイル以上のものであり、独自のデータセットになります。コードベースを管理する私たちの能力は、コードベースの理解によって制限されており、ビッグデータ用に構築されたツールを使用して、ビッグコードの時代に適用する時が来ました.
最も有名なビッグデータ ツールは検索です。検索の力により、貴重な時間を節約できます。 Sourcegraph の共同設立者で最高技術責任者の Beyang Liu は、開発者の世界にそれを紹介しようとしたときに、このことを理解していました。彼は、新しい会社に入り、新しいコードベースを学ぶことの苦痛を知っていました。
さまざまな人々の意見やコードのスタイルを理解することは非常に困難な場合があり、コードベースは時間の経過とともに予測不可能で紛らわしい方法で成長します。そこで Liu は、開発者の生産性を高めるツールであるSourcegraphを作成しました。基本的にコードの検索エンジンです。
ビッグ コードはビッグ データであるという洞察により、ナレッジ グラフの力を利用して、世界中のあらゆるコードベースを検索して理解することができます。
私は最近、Liu と Sourcegraph との歩みと長期的な目標について話しました (完全な会話を聞くには、 Open Source Data ポッドキャストを聞いてください)。
Sourcegraphは、コードベース全体を検索できる無料のオープン ソース テクノロジです。その主な目標は、ソフトウェア エンジニアの仕事の最も重要な部分である既存のコードの理解に取り組むのを支援することです。
これは、次の方法で行います。
「ほとんどのソフトウェア エンジニアにとって、仕事の最大の部分は新しいコードを書くことではありません。すでに存在するすべてのコードを理解することは理にかなっています」と Liu 氏は言います。
Sourcegraph には、検索コンポーネントとグローバル参照グラフの2 つの基本コンポーネントがあります。
ほとんどの検索エンジンと同様に、Sourcegraph の検索コンポーネントはクエリを受け取り、最良の結果を提示します。開発者が特定のリポジトリで To-Do を探しているとします。開発者は、このrepo:facebook/react content:TODO
のような検索クエリを入力すると、指定されたディレクトリ内の To-Do が検索されます。 Facebook React-native リポジトリを検索する実際の例は 、こちら で確認できます。これを可能にする重要な技術の 1 つが、コードの検索に最適化されたインデックス形式です。
Liu は 2010 年に Google Apps のバックエンド チームでエンジニアリングのインターンをしていましたが、 Google Code Searchの使用に触発され、インデックス形式を採用するようになりました。彼の目を引いたもう 1 つのことは、Google の内部コード検索の初期実装に関する Russ Cox の作業と、 Zoektと呼ばれるオープン ソース ライブラリの形での Han-Wen Nienhuys の再実装でした。
「その経験の中心となったのは、Google のすべてのコードにインデックスを付け、インターンであろうとジェフ ディーン レベルの非常に上級のエンジニアであろうと、すべての開発者がアクセスできるようにしたこのコード検索エンジンでした」と Liu 氏は言います。
グローバル参照グラフは、コードベースを理解し、「定義に移動」や参照を見つけるなどの機能を実行するのに役立ちます。これには、コードベース全体をマッピングして適切な場所に移動する必要があります。
Sourcegraph は、さまざまなコンパイラ ライブラリとオープン プロトコルを使用してこれを実現し、Sourcegraph の要件により適した Source Lib やSCIPなどの独自のプロトコルを備えています。
「言語にとらわれないインターフェイスを、コンパイラの知識を使用してグローバル参照グラフを構築する言語固有のインデクサーに提供することがすべてです」と Liu 氏は述べています。
Sourcegraph は、Liu が学校を卒業して初めて就職したときに、 Palantir Technologiesで始まりました。彼は、ソフトウェア エンジニアとして新しい仕事を始めるときに誰もが直面する問題の 1 つに直面しました。
「私は、複数の所有者を介して、この大規模で複雑なコードベースにドロップシップされました」と Liu 氏は回想します。 「それは少し面倒でした。最初の 1 か月ほどの終わりに、振り返って、『ここで何を成し遂げたのか?私は、このコードで何が起こっているのかを理解しようとすることと、なぜこのように書かれているのかを理解することにすべての時間を費やしてきました。私の仕事の多くは、既存のコードを調査し、追加しようとしている比較的小さな部分がその広い視野にどのように適合するかを理解することです。」
Liu は Google での勤務中に一連の社内開発者ツールに触れました。その 1 つが Google Code Search で、Google のすべてのコードにアクセスできるようになりました。この経験と、Palantir での新人研修の苦労が、Liu を他のソフトウェア エンジニアが同じ問題を回避するのに役立つものを作成するように駆り立てました。
Palantir での Liu の同僚であるQuinn Slackとの、ユニバーサル コード検索用のツールの作成についての会話が実行に移され、そこから SourceGraph が生まれました。
2011 年に、Marc Andreessen は、ソフトウェアがどのように世界を食べているかについて書いています。サインはどこにでもあります: 注文する食べ物から配車の予約、家の暖房の制御まで。
しかし Liu は、私たちが見ているのは氷山の一角にすぎないと考えています。彼は、コードを理解することは日常的なことになるだろうと言いました。
彼はそれを識字率と比較して、「私たちはかつて、読み書きができるのは社会の非常に少数のエリート層に限られており、人間の文明が進歩できる範囲を制限していた世界に住んでいました.」
コードが私たちの生活のほとんどすべてに力を与えるようになると、それを理解することが普遍的な要件になると Liu 氏は言います。この考えが、Sourcegraph の構築に対する Liu の情熱に火をつけました。コードの検索エンジンを作成すると、単純な検索クエリを使用して、膨大なオープン ソース エコシステムにアクセスできるようになります。
サム・ラムジ、DataStax
Sam Ramji は、DataStax の最高戦略責任者です。シリコン バレーとシアトルのテクノロジ シーンで 25 年の経験を持つ Sam は、2 つの数十億ドル規模の市場 (Apigee での API 管理と BEA Systems でのエンタープライズ サービス バス) の構築を支援し、Microsoft のオープン ソースと Linux の戦略を「消滅」から「採用」へと再定義しました。 ."彼は、オープン ソース、プラットフォームの経済学、ミドルウェア、およびクラウド コンピューティングについてオタクであり、開発者の経験とエンタープライズ ソフトウェアに重点を置いています。
こちらにも掲載