2022年第一四半期 プログラミング言語ランキング

業界アナリスト企業である[RedMonk](https://redmonk.com/)が、先日2022年第一四半期のプログラミング言語ランキングを発表していました。
ということで以下は[The RedMonk Programming Language Rankings: January 2022](https://redmonk.com/sogrady/2022/03/28/language-rankings-1-22/)の紹介です。


# The RedMonk Programming Language Rankings: January 2022

今回のランキングは[MongoDB](https://www.mongodb.com/languages?utm_campaign=prismaga&utm_source=redmonk&utm_medium=website&utm_term=partner&utm_content=ranking)がお届けしています。
今すぐ[コミュニティ](https://mongodb.com/community/forums)に参加して、あらゆるクラウド上でMongoDB Atlasを使ってアプリケーションを構築しよう。
30以上の言語がサポートされているよ。

第二四半期も残すところ数日となり、そろそろ第一四半期の言語ランキングを掲載する時期になりました。
この数か月我々は非常に忙しかったのですが、どうにか必要なクエリを実行して結果を分析するだけの時間を捻出することができたので、以下に紹介していきます。

なお、本ランキングは、[2010年に](http://www.dataists.com/2010/12/ranking-the-popularity-of-programming-langauges/)Drew ConwayおよびJohn Myles Whiteによって作られたランキングが元になっていることを記しておきます。
具体的な情報収集手段は変わりましたが、基本的なプロセスは当時と変わっていません。
GitHubとStack Overflowからデータを収集し、GitHubのコードと、Stack Overflowの質問の両方をランキングに反映しています。
すなわち、現在の言語の使用割合を正確に算出するものではなく、ディスカッションと利用状況を組み合わせることで、今後のトレンドの推移のヒントを導くことを目的としています。


## Our Current Process

GitHubの分析に使うデータソースはGitHub Archiveです。

Githubが[State of the Octoverse](https://octoverse.github.com/)を作るのに使ったのと同じ方法で、プルリクエストを照会します。
このクエリは、昔使っていたプロセスとなるべく同じロジックになるように設計されています。

・言語ごとの区切りは、リポジトリ毎のベース言語に基づきます。この方法の注意点は下のほうに記載します。
・forkされたリポジトリは除外されます。
・ランキングを作るために、集約された履歴を使います。
・Stack Overflowについては単純にData Explorerを使うだけです。

以上の概要と、以下の注意事項に気を付けてください。

・GitHubとStack Overflowの両方に存在する言語がランキング対象になります。
・このランキングは、使用状況を厳密に主張するものではありません。将来の予測に使えるであろう2集団の相関関係を示したものであり、それ以上のものでもそれ以下のものでもありません。
・他にもこのような分析を行えるコミュニティはあるでしょうが、規模の大きさと、分析に必要なデータを公開しているからという理由でGitHubとStack Overflowが選ばれています。興味のある人は、他の情報源を使って独自の分析をしてみましょう。
・全てのランキングは、大目に見てください。ランキングの順位付けは興味本位で行っているものです。相対的な人気度の違いがわかりますが、1・2位程度の差は見分けがつきません。リストの下位になるほど情報量が少なくなるので、信頼性も低くなります。
・MathematicaのようにStack Overflow以外の主要コミュニティを持つ言語はランキングが低くなります。それらのコミュニティサイトはデータが公開されてないことが多く、互いに比較することもできないため、ランキングに反映されません。

ということで、こちらが2022年第1四半期のランキングです。

| ![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/ad28f2a9-34ce-1c85-70a5-4544c5a45314.png) |
|--|
|縦軸はStackOverflowの活発度、横軸はGitHubの活発度|

1 JavaScript
2 Python
3 Java
4 PHP
5 CSS
5 C#
7 C++
8 TypeScript
9 Ruby
10 C
11 Swift
12 R
13 Objective-C
14 Shell
14 Scala
16 Go
17 PowerShell
18 Kotlin
19 Rust
19 Dart


今回のランキングは、安定性をテーマにしています。
これまでもですが。

幾つかの例外を除き、近年はランキングの変動はほとんどありません。
ここに挙げた20言語のうち17言語が3四半期続けて一定しています。
これは、本当に業界の動向が安定しているということなのでしょうか。
それとも分析方法の不備による人工的な静寂なのでしょうか？

我々は、このランキングが業界における実際のシェアと完全に対応しているわけではないと常々公言しています。
しかし同時に、開発者の活動に関する大きな集団の動向を分析することは有益であり、予測できる可能性があるとも考えています。
実際、何度もそれに成功してきました。

ランキングの動きが少なくなっているということは、このまま停滞の時代に入っていくのではないかと考えるのも面白いかもしれません。
もちろんこれからも新しい言語は生まれますし、新機能の追加や外的要因で急に順位が上がる可能性もあります。
しかし、業界全体においては、ある程度の均衡が形成されつつあるかもしれません。
各言語はそれぞれのニッチに根を張り、同じニッチに住む特定の相手と競争している状態です。

あと、これが原因だと決めるにはまだ早いですが、分析方法によるものでも業界の固定化でもなく、外的要因、すなわち現在進行中のパンデミックが広く影響を及ぼしている、という可能性によるものかもしれません。
いずれにせよ、今後も注視していく必要があるでしょう。


### Python (0) / Java (-1)

Javaは一時的にPythonと同率の総合2位になっていましたが、今回単独3位に後退しました。
はっきり言っておきますが、3位というのは非常に素晴らしい結果です。
かつてケーブルテレビのために作られた言語が、数ある真のプログラミング言語を押しのけてこの順位にいるのです。

それにしてもPythonは2年続けてランキング2位を保っており、その継続的な強さは目を見張るものがあります。
エンタープライズでは最も人気のある言語のひとつであり、世界の2大モバイルエコシステムのひとつです。
一部では「ただのグルー言語に過ぎない」などと囁かれている言語にしては、とんでもない快挙といえるでしょう。


### PHP (0)

PHPの順位には、全く変動がありません。
これは珍しいことでもなく、近年はずっと安定しています。

実は2017年にはPythonに抜かれて4位になったことがありました。

ここでPHPに注目している理由は、いまだにPHPが見下されているからです。

Pythonには、時折そのような中傷が寄せられることがあります。
しかしPHPは、ずっとその暗闇の中で生きているようなものです。

しかし、世界中のWebサイトのほとんどはPHPで動いています。
人々がどう思っていようが、PHPは大きな力を持ち続けているのです。


### C++ (-2)

前回、C++はC#・CSSと同率5位でしたが、今回は2ランク下がっての7位となりました。
これは一時的なものである可能性もありますが、むしろ先人と同じ道を辿っているのではないかと考えています。

すなわち、このランキングが始まった当初C言語は8位でしたが、徐々に後退して現在は10位です。
一方C++が7位まで落ちたのは2013年に続いての2回目です。
これが前回同様単なる一時的なものなのか、それともさらなる低下が待っているのか、興味深いところです。


### TypeScript (0)

C++のすぐ真後ろにつけているのがTypeScriptです。

近年に急成長した言語としてはSwift以来であり、トップ10入りを果たした言語としては唯一です。
そして、この3四半期は8位を保っています。
注目すべきは、これがTypeScriptの限界なのか、それとも更なる伸びしろがあるかというところです。

C++は今回落ちたとはいえ、TypeScriptがそれを超えることは容易ではないでしょう。
C++にはこれまでに積み重ねられてきた莫大な量のコードとコミュニティが存在します。
TypeScriptが上を目指すには、その歴史を背負っていく必要があります。


### Dart (+1) / Rust (0) / Kotlin (0)

Kotlinの18位、Rustの19位の順位が変わらなかったのは、特に驚くようなことではありません。
両言語はいずれも最近ホットな言語であり、それぞれがかなりの興味と関心を集めていますが、しかしこのランキングの上位に入るのは相当な努力が必要だからです。
そんな中で意外だったのは、Dartが順位をひとつ上げてRustと同率19位になったことです。

Kotlinは2回前、Rustは一回前の調査でようやく順位を上げています。
ところがDartは、一年半前には30位台と低迷していたにもかかわらず、今回は開発者の憧れであるRustと肩を並べたのです。

さて注目すべきところは、これが一時的なものであるのか、それとも更に上昇するかという点です。
次回・次々回の調査で、この3言語についてより多くのことがわかるでしょう。


# 感想

ところで[TIOBE Index](https://www.tiobe.com/tiobe-index/)では、全く異なる結果になっています。

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/547ee0e2-2580-d79c-178a-c89be08fbc1d.png)


RedMonkで1位のJavaScriptはTIOBE Indexでは7位ですし、逆にRedMonkで10位のCはTIOBE Indexで2位です。
どうしてこんなに違うのでしょう。

これは別に何らかの力が働いているとかそういうわけではなく、単に計算方法が異なるだけです。
RedMonkはGitHubとStack Overflowにおける活動の度合いから、TIOBE Indexは[検索エンジンの検索結果](https://www.tiobe.com/tiobe-index/programming-languages-definition/)から算出されています。
見てのとおり、いずれも必ずしも現実のシェアを表しているわけではなく、何らかの指標で切り取った結果というわけです。

ですので、ひとつの結果だけを見てそれが全てだと思い込まず、様々な観点から認識することが必要でしょう。
言語を選ぶときは、マイナーなものは避けつつ(単に解決策を見付け辛いから)目的に応じて都合のいい言語を選択するのがよいでしょう。


まあ私はなんでもPHPでやりますけどね。