Programming-language

TIOBE Indexはあまり参考にすべきでない

More than 1 year has passed since last update.

プログラミング言語の人気度に関するランキングで著名なものに、TIOBE Programming Community Index(以下、TIOBE Indexと表記)があります。これについて完全に信用する程ナイーヴな人はそうそう居ないかと思いますが、それでもある程度参考になると思っている人はそれなりに居るように思います。

しかし、はっきり言うと、参考にするとしても極めて弱い(ここで弱い、というのは、ちょっとしたノイズで順位が変動するといった意味です)ですし、特定の言語のランクが(選択したキーワードの都合で)異様に低かったり高かったりといった事が容易に起きます。以下で、参考にすべきでない理由について説明します。

まず、TIOBE INDEXは公式に算出方法が公開されています。

それによると、検索エンジンに対して、クエリ

+"<language> programming"

を発行した結果を元にランキングを付けています。この、 <language> を任意の言語に置き換えることが可能で、たとえば、Haskellなら

+"Haskell programming"

Scalaなら

+"Scala programming"

Kotlinなら

+"Kotlin programming"

といった具合です。 Basically と書かれているので、他の検索ワードも使われている可能性は0ではないですが。

さて、当該ページを見ればわかるように、偽陽性(たとえば、その言語に関係のないページがヒットしてしまうこと)やその他、検索結果を不正確にする様々な要因にどう対処するかについて書かれていますが、根本的な問題として、その言語に関してどのくらいの職の募集があるかとか、(現在なら)GitHubでどの程度その言語のコードがあるか、StackOverflowにどのくらい質問があるかといった、重要そうな指標に関してはほとんど反映されていない可能性が高いということです。

また、検索ワードの選び方も問題です。"<language> programming"でより多くヒットする言語もあれば、より少なくヒットする言語もあります。

実際、InfoQの記事によると、Crystalのランキングが、1ヶ月で60位から32位に変動したようですが、これは言語の人気ランキングとして極めて弱い側面を表していると言えそうです(1ヶ月でそんなに変動するのはおかしい)。

では、他に何を参考にするのが良いかという疑問がありそうなので、候補をいくつか紹介しておきます。

GitHubにおける人気度やStackOverflowにおける質問数などに着目したランキングです。昨今、OSSのコードをホスティングするサービスとしてはGitHub一強であるのと、質問としてStackOverflowが非常に多く使われることを考えると、言語の人気度の近似としては悪くないと思います。

IEEEが作成したプログラミング言語に関するランキングです。2017より前に作られたバージョンがあるのかわからないので、今年のものへのリンクになります。

算出基準はここに書かれています。TIOBE Indexと似ている部分もありますが(検索ワードの選択が)、

  • GitHubのアクティブリポジトリ数
  • StackOverflowで、当該言語に関してどれだけの質問が行われたか、また、注意が払われたか
  • Redditにおける当該言語に関する投稿数
  • 求職サイトDiceにおける、当該言語をスキルとして要求する募集の数
    • この辺は、indeed.com辺りの方がメジャーだと思っていたので、その点は意外ですが
  • その他

のデータを使って、総合的に算出したものになっています。

その他にもいくつかあるようですが、何はともあれ、TIOBE Indexが言語の人気度の近似として機能しているのか極めて疑問ですし、先程述べたCrystalの例のように、実際におかしな結果になっていることもあります。

結論としては検索エンジンに対する単一クエリ(クエリ自体は複数のエンジンに投げています。念のため)の結果のみから近似しているTIOBE Indexは、言語の人気度の実態を表していない可能性が高いので、参照するにしても、せめて複数のランキングサイトを併用した方が良い、ということになるでしょうか。