数は重さではない:6.7 万リポジトリが語る言語エコシステムの実像
本記事は機械翻訳であり、ネイティブによる校正は行われていません。 原文を読む →
言語エコシステムを比較するとき、最もよくある問いは「どの言語のプロジェクトが一番多いか」です。答えやすい問いですが、行動につながりにくい問いでもあります。分かるのは数であって、重さではないからです。
私たちは 6.7 万を超える高スター GitHub リポジトリを追跡し、そのスター数の推移を毎日記録しています。この語彙を言語別に分解すると、単なる件数より有用なものが見えてきます。
まず生データ
この表はページを開くたびにデータベースから直接読み込まれます。スクリーンショットではありません:
| Language | Repos | Total stars | Median | Top repo |
|---|---|---|---|---|
| Python | 11,741 | 56.5M | 1,998 | public-apis/public-apis |
| JavaScript | 8,425 | 36.2M | 1,932 | react/react |
| TypeScript | 6,387 | 38.3M | 2,283 | freeCodeCamp/freeCodeCamp |
| Java | 4,168 | 15.4M | 1,913 | krahets/hello-algo |
| Go | 4,089 | 20.7M | 2,295 | avelino/awesome-go |
| C++ | 3,429 | 14.9M | 2,011 | tensorflow/tensorflow |
| C | 2,533 | 9.9M | 1,943 | torvalds/linux |
| Rust | 2,278 | 12.2M | 2,138 | ultraworkers/claw-code |
| C# | 1,899 | 6.7M | 1,997 | 2dust/v2rayN |
| PHP | 1,662 | 5.5M | 1,834 | danielmiessler/SecLists |
注目すべき 3 点
1. 件数の首位は中央値の首位ではない
Python はリポジトリ数で大きくリードしており、2 位のおよそ 1.4 倍です。しかし中央値——「その言語のプロジェクトを無作為に選んだら、どのくらい人気がありそうか」に答える指標——を見ると、Python は Go と TypeScript の後ろに位置します。
これは広さのシグナルです。Python は科学計算からスクレイピング、機械学習、自動化までほぼ全域をカバーします。広さの裏返しは非常に長いロングテールであり、多くのプロジェクトが追跡しきい値のすぐ上に留まります。
2. Go の「打率」が最も高い
Go のリポジトリ数は Python の約 3 分の 1 ですが、中央値はここに挙げたどの言語よりも高い値です。
妥当な説明は領域の集中です。Go の人気プロジェクトはクラウドネイティブ基盤、DevOps、CLI ツールに集中しています。これらの利用者自身が開発者であり、つまりスターを付ける人々です。Python のリーチの多くは、GitHub を開くことのない層に向いています。
3. 合計スターと中央値は別の物語を語る
JavaScript は合計スター数が高い一方で、中央値は相対的に低めです。合計の高さは、非常に大きく古いプロジェクト群を反映しています——それは歴史の蓄積です。中央値の低さは、近年のプロジェクトのうち突き抜けるものの割合が小さいことを示唆します。
TypeScript は逆です。リポジトリ数は JavaScript より少ないのに中央値は高く、新しいプロジェクトが初日から TypeScript を選ぶ傾向と整合します。
上位の顔ぶれ
構成は件数と同じくらい重要です。現在追跡している中で最もスターの多いリポジトリ:
- 1codecrafters-io/build-your-own-xMaster programming by recreating your favorite technologies from scratch.529.5k
- 2sindresorhus/awesome😎 Awesome lists about all kinds of interesting topics487.1k
- 3freeCodeCamp/freeCodeCampfreeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.452.2k
- 4public-apis/public-apisA collective list of free APIs451.7k
- 5EbookFoundation/free-programming-books:books: Freely available programming books392.6k
- 6openclaw/openclawYour own personal AI assistant. Any OS. Any Platform. The lobster way. 🦞 383.6k
- 7nilbuild/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.362k
- 8donnemartin/system-design-primerLearn how to design large-scale systems. Prep for the system design interview. Includes Anki flashcards.358.5k
- 9jwasham/coding-interview-universityA complete computer science study plan to become a software engineer.356.7k
- 10kamranahmedse/developer-roadmapInteractive roadmaps, guides and other educational content to help developers grow in their careers.310.1k
学習リソースやキュレーションされたリストが、実行可能なソフトウェアよりも多く含まれている点に注目してください。これらは膨大なスターを集めますが、言語のエンジニアリング的なエコシステムについてはほとんど語りません。フレームワークやランタイムと一緒くたにすると、比較は歪みます。
このデータで言えないこと
どんな分析も、自らの限界を明示すべきです:
- サンプルはすでに人気のあるプロジェクトであり、GitHub 全体ではありません。ここでの中央値はすでに基準を超えたプロジェクトの中での中央値で、サイト全体の実際の値よりはるかに高くなります。
- スターは品質ではなく、利用量でもありません。開発者の可視性の近似です。実際の重要性よりはるかに少ないスターしか持たない基幹ライブラリは数多くあります。
- 言語の判定は GitHub の主要言語検出に従います。 ファイルのバイト構成次第で、フロントエンドのフレームワークが予想外の言語に分類されることもあります。
- エコシステムの年齢が違います。 C と Java には数十年の蓄積があり、Rust にはずっと短い時間しかありません。合計値の直接比較は若い言語に不利です。
まとめ
技術選定をしているなら、「どの言語のプロジェクトが多いか」より良い問いは、自分が必要とする具体的な領域に成熟した選択肢がいくつあるかです。全体の件数はその問いには驚くほど役に立ちません。
上の表は日次クロールとともに自動更新されます。同じデータはランキングで言語やカテゴリごとに自分で切り分けられます。
本記事の数値はすべてデータベースからリアルタイムに読み込まれ、日次クロールで更新されます。