2019年にわざわざ学ばなくてもいいプログラミング言語

以下は[Study of Programming Languages Not to Learn in 2019](https://www.codementor.io/blog/worst-languages-2019-6mvbfg3w9x)の日本語訳です。

日本語紹介記事としては[2019年にわざわざ学ばなくてもいいプログラミング言語](https://japan.zdnet.com/article/35135732/)というのがありますが、概要だけしか書いてないので、具体的にどういう理由で選択されたかが全くわかりません。

調査対象は以下の20言語で、それ以外は調査対象外です。

・C
・C#
・Clojure
・CoffeeScript
・Dart
・Elixir
・Elm
・Erlang
・Go
・Haskell
・Kotlin
・Lua
・Objective-C
・Perl
・R
・Ruby
・Rust
・Scala
・Swift
・TypeScript

Python、JavaScript、Javaは除外と明記されているのですが、なぜ`C++`やPHP、Visual Basicあたりが入ってないのかはよくわかりませんね。
どういう基準で選ばれた言語なのかをどこかに書いてほしかったところです。

なお、以下におけるランキングは1位がワーストで、`順位を上げる`=`評価が低くなる`です。


# Study of Programming Languages Not to Learn in 2019

2018年に[Worst Programming Languages to Learn in 2018](https://www.codementor.io/blog/worst-languages-to-learn-3phycr98zk)を発表したときは、GoogleがFlutterを発表することなど予想していませんでした。
前回から一年が経過し、これらの言語がどのように変化したかを確認するためにランキングを更新したいと思います。

前回と同じく、コミュニティエンゲージメント、成長度、雇用市場という観点から、最近うまくいっていない言語のリストを作成します。
C#など一部の言語はその優位性が支持されて順位が下がりました(=よくなった)が、他の言語は順位が上がっています。

ランキングがこの一年でどのように変化したかを見て、『最初に学ぶプログラミング言語として』どの言語を学ぶべきではないかを紹介します。
Python、JavaScript、Javaはリストに含まれていません。
それらは一般的によく使用されている有名な言語であるためです。
ここではあまり人気のない言語を取り上げて、それら同士の評価を行いたいと考えました。

いつものことですが、我々は決してこれら言語の有用性を否定したり、価値を疑問視したりしているわけではありません。
全てのプログラミング言語は、何らかの目的を満たすために作られているものです。
そして、それを言語を横断して評価するのは難しいでしょう。
このランキングの評価をどのように行ったかについては、Methodologyのセクションを参照してください。

結果から言うと、2019年に学ぶ必要のない言語トップ5は、Elm・CoffeeScript・Erlang・Lua・Perlです。

![01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/9463c828-ce9a-b6a2-aa28-abe28093f8d2.png)

## Programming Languages that Improved, Worsened, or Stayed Consistent

リストは2018年から2019年にかけてどのように変化したでしょうか。
多少前後しただけでしょうか？それとも大きな入れ替わりがあったでしょうか？
答えは・・・・・・イエス！

最成長選手賞を取得したのはDartとRubyで、これらは大きな進歩を遂げました。
一方KotlinとRは順調に順位を上げています。
最後にClojureとHaskellは極めて安定しており、ランキングに変動はほとんどありません。

![02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/bc209d09-6289-a8aa-ebc4-a522a9883f6b.png)

## Most Improved Programming Languages

### Dart

Dartは2018年に学ぶべきではない言語堂々の1位から、2019年には13位まで下がったことで、最大の更新を果たしました。
言い換えるのであれば、最初に学ぶべきプログラミング言語の7位になったということです。

どうしてたった一年でこんなに評価が変わったのですか？

昨年のランキング発表後に行われた、GoogleによるFlutterの発表によって、Dartに新たな命が吹き込まれ、Googleトレンドによる評価は20位まで暴騰しました。
求人市場におけるDartの需要はまだかなり低いですが、コミュニティエンゲージメントの評価は急上昇しています。
開発者達がDartとFlutterについて活発に議論や実験を行ってきた結果です。
Flutterの発表と、小規模ながら活発なDartiansによるコミュニティ活動が、Dart復活の最大の要因になりました。

### Ruby

Rubyのランキング変動はDartほど劇的ではありませんが、14位から17位まで順調にランキングを下げました。
すなわち、最初に学ぶべきプログラミング言語3位であり、Swiftの次に位置しています。

2019年のRubyランキングは、コミュニティエンゲージメントと求人の評価でランキング下位5位以内に入っており、Swiftよりもよい評価になっています。
Rubyの弱点は成長度のカテゴリでランキング10位となっており、Swiftの16位に比べて大幅に評価が低くなっています。
RubyはSwiftを2カテゴリで上回っていましたが、成長度が足を引っ張ったため、Swiftの次の地位に甘んじることになりました。


## Least Improved Programming Languages

### Kotlin

2018年の18位から2019年の11位まで、学ぶべきではない言語ランキングを7ポイントも上げました。
成長度は19位と非常に高い評価を得ており、コミュニティエンゲージメントと求人も、中央付近ながら昨年より少し順位を下げています。
全体的に評価そのものはほとんど変わらなかったににもかかわらず、成長度が20位から19位に上がったことで、総合ランキングという点では一気に不利になりました。

### R

Kotlin同様、Rは昨年の19位から今年の12位まで一気に上昇しました。
この原因は何でしょうか。

成長率の低下が原因だと思われます。
2018年の成長率ランキングは18位でしたが、今年は11位になったため、全体順位を上げています。
求人スコアは下がりましたが、コミュニティエンゲージメントも15位から13位に上昇しました。
Rは求人スコアこそ改善しましたが、成長率とコミュニティエンゲージメントの評価によってランキングが大幅上昇となりました。

## Programming Languages that Stayed Consistent

### Clojure / Haskell

ClojureとHaskellはほとんど動きがありませんでした。
Clojureは6位のままで、Haskellは10位から9位になりました。

2018年のClojureは、コミュニティエンゲージメント、求人、成長度全てで6位を取得しました。
今年は求人ランキングを3位に上げたものの、コミュニティエンゲージメントと成長度のランキングを下げ、総合評価は6位のままになりました。

2018年のHaskellは、コミュニティエンゲージメントで13位、求人と成長度で11位でした。
今年はコミュニティエンゲージメントが14位、成長度が9位となっています。
求人は6位になりましたが、これは需要は変わっていないものの開発者の供給が減少したためです。
つまり、Haskell開発者になるのであれば今年が大きなチャンスかもしれません。


## Worst Programming Languages in 2019

### 1位：Elm

#### Elm Community Engagement
![11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/f3a34d99-4cff-b7df-5c01-dee7ae197810.png)

コミュニティエンゲージメントは5位から4位へと、ひとつ順位を上げています。
GitHub、Reddit、Twitter、IRC、そしてFacebookのコミュニティはそれなりに強力ですが、StackOverflowにおいてElmタグの付いた話題がほぼ無いため、順位が引き上げられました。
Elmが最もよく話題に出るのはFacebookで16位、次いでTwitterで8位でした。
全体的に見て、Elmについては話をしているだけでは足りません。

#### Elm’s Growth
![12.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/fe7b2d0f-a0e3-e48b-8073-a5b244e843fb.png)

成長度は2013年から2018年にかけて上昇していましたが、2019年にかけては減少しました。
従って、昨年は成長度13位でしたが、今年は3位と急上昇しました。
Elmの検索量は3番目に大きく減少しており、それ以上に減少したのはObjective-CとCoffeeScriptだけです。

#### Elm Job Market
![13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/3ef1d391-cf4b-d9bc-5ab4-b864fb3edf6c.png)

Elmの求人市場スコアは、2018年から2019年にかけて上昇しています。
2018年は3位でしたが、今年は5位にまで下がっています。
開発者需要は4位、供給は6位になっています。

Lua、Clojure、Dartなどの求人ランキングは悪化していますが、Elm開発者がそれを祝うのは時期尚早です。
Elm開発者の供給が需要を上回っていることを心に留めておいてください。
すなわち、Elmがあなたの第一言語だとしたら、Elmの仕事を得ることは、他の言語と比べて競争が激しくなるでしょう。

### 2位：CoffeeScript

#### CoffeeScript Community Engagement
![21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/70178206-9326-2d4f-56e6-35ba5305a69e.png)

コミュニティエンゲージメントは死んでいます。
Facebookコミュニティは今年は存在しておらず、IRC、Twitter、GitHub、Stack Overflowいずれも1位かそれに近い評価です。
CoffeeScriptは我々の言語リストにおいて最も人気の無い言語であることを、残念に思います。
CoffeeScriptが非常に有用な言語だと言うことは間違いありませんが、流行に取り残された言語であることも間違いありません。

#### CoffeeScript’s Growth
![22.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/363bd505-fa4f-8f89-651a-137bec358688.png)

成長度は2013年から2018年にかけて大きく低下してきましたが、2019年はさらに急激に減少しました。
リストにある全言語の中で、Google Trendsでは最も大きく減少し、Stack Overflowでも2番目に減少し、総合で1位の評価を得ることになりました。
ほとんどの言語では今年の検索数が減少していましたが、その軌跡から判断すると、CoffeeScriptの全盛期は他言語のそれよりもずっと後れを取っているようです。

#### CoffeeScript Job Market
![23.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/23d54291-c7a3-c2fb-22c7-7ccd744a704f.png)

求人ランキングは12位から9位に上昇しました。
コミュニティエンゲージメントと成長度では非常に悪い結果でしたが、開発者の需要は9位、供給では8位とそこまで悪い値ではありません。
コミュニティと成長の見込みが低下していることは、CoffeeScriptにこれから開発者が参入するためにはよい環境ではありませんが、現在のCoffeeScript開発者にとっては、他の言語と比較するとまだ仕事が残っています。

### 3位：Erlang

#### Erlang Community Engagement
![31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/cc03c53f-99c8-f18f-6643-a93d5f5e27ed.png)

2018年の8位から今年の2位まで、Erlangはコミュニティエンゲージメントにおいて最大の伸び幅を記録しました。
Elmと同様、ErlangはStack Overflowに話題がないことが大きく足を引っ張っています。
さらにGitHubとRedditでトップ5にランクインし、コミュニティエンゲージメントスコアをさらに引き上げています。
Erlangが最もよく語られたのはIRCで11位となっていますが、これも実際は前回より順位が上がっています。
FacebookとTwitterは変化がありませんでしたが、他が上がったぶんが結果の上昇に繋がりました。

#### Erlang’s Growth
![32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/bd24be40-1456-c8c9-4c54-f7b1b0e48922.png)

2013年に始まったErlangの右肩下がりは、2019年も継続しました。
注目すべき点として、2018年には「純粋関数型言語は全体的に右肩下がりで、Erlangと同じようにHaskellも下向いている」と述べましたが、2019年においてはこの指摘はもはや当てはまりません。
Erlangへの関心は引き続き低下しましたが、Haskellについては、ほんの少しですが昨年より増加しました。
すなわち、Erlangは純粋関数型言語であるから衰退している、というわけではないということです。

#### Erlang Job Market
![33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/3f1fed3d-22a3-9938-b291-bf25881219d2.png)

昨年の雇用市場では4位でしたが、今年は順位を下げて5位となりました。
Erlangは需要で5位、供給で4位です。
しかしながら、これは良くも悪くもあります。
他言語に比べると、Erlangの開発者にはまだ仕事はありますが、今年の需要は昨年よりも少なくなっています。
昨年はErlangの仕事の数は増えましたが、需要は他言語ほど増えていません。

### 4位：Lua

#### Lua Community Engagement
![41.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/d78a1afd-5a3e-9f5f-bc6f-87c13565bfde.png)

トップ5の他言語とは異なり、Luaのコミュニティエンゲージメントは向上しています。
総合ランキングは2018年と2019年でかわっていませんが、コミュニティエンゲージメントは4位から7位に低下しました。
GitHubやStackOverflowでの話題が大幅に増え、さらにFacebookやIRCでもランキングが下降しています。
これは、2019年には2018年よりも多くLuaについて語られているということです。

#### Lua’s Growth
![42.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/3c4e3dc0-6883-9da2-89a1-517dba0b3956.png)

2013年から2018年までは横ばいでしたが、2019年には減少し始めました。
まだPerl・CoffeeScript・Elm・Erlangほどの減少ではありませんが、決して明るい話ではありません。
といっても、減少割合が他言語よりはるかに少なかったという事実は、Luaへの希望を示しています。
データサイエンスやゲーム開発からの需要が、その救済になるかもしれません。

#### Lua Job Market

※ここ元記事の画像が間違ってる

求人ランキングは、昨年の4位から2位にまで悪化しています。
Luaの開発者は、それを欲しがっている会社よりも多いということです。

Luaの需要は2位、供給は3位です。
Lua開発者の供給は、まだまだ需要より多くいます。
これは、Luaの開発者が他の言語に転換する(もしくはリタイアする)ことができなかったことを意味します。

### 4位：Perl

#### Perl Community Engagement
![51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/1041d4bd-fcc8-21bd-f9ff-e96d36cb767d.png)

2019年、Elmに加えてPerlが『Worst Programming Languages to Learn』に加わりました。
これはコミュニティエンゲージメントが3ポイント下がったから、というのが理由の全てではありません。
Reddit、Twitter、FacebookでPerlの人気が衰えています。
逆にFreenode、Stack Overflow、GitHubではランキングが下がりましたが、ソーシャルプラットフォームでの上昇に対抗するには十分ではありませんでした。
もっとも、2019年のコミュニティエンゲージメントは9位であり、2018年より下がっているとはいえそこまで悪くない数値です。

#### Perl’s Growth
![52.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/16884de2-6107-e020-d347-6fa8f45aad7a.png)

Perlは2013年から一直線に衰退し続けています。
同時期に登場した`C#`同様、昨年の検索量は減少しました。
2018年4月、TIOBE Indexは[Perl is having a hard time](https://www.i-programmer.info/news/98-languages/11732-an-update-on-language-popularity.html)という見出しを付けてPerlが衰退していることを示しました。

> Perlコミュニティは明確な未来を示していません。その結果、それはゆっくりと消滅しつつあります。

TIOBE IndexがPerlコミュニティに影響を与えたかどうかは疑わしいですが、実際に開発者の関心はPerlから離れ続けています。

#### Perl Job Market
![53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/26088/ab752bb5-85c1-be7c-f7c3-aeeba28269da.png)

Perlの求人ランキングは、2ポイント上昇して総合6位となりました。
供給は10位、需要は7位です。
SendGrid、DuckDuckGO、Shutterstock、InfoshareなどはPerlを使用していますが、同時期に登場したC#、Ruby、Rなどと比べてもPerl開発者の需要は大きく減少しています。
Perlを学ぼうと考えているのであれば、その供給が需要を上回っていることを覚えておいてください。
あなたがPerlを第一言語として学ぶことに決めたのであれば、あなたはより少ないパイを選んだのかもしれません。


## Methodology

このリストは、20のプログラミング言語を以下の3つの指標でランク付けしたものです。

### Community

GitHub、Twitter、Stack Overflow、Facebook、Freenode、Redditにおいて人気のある言語を調べました。
fork、リポジトリ、フォロアーが多い言語は、コミュニティエンゲージメントが高得点になります。

### Growth

Google TrendsおよびStack Overflow Trendsにおける言語の上昇傾向(もしくは下降傾向)を2013年から2019年まで調べています。

### Job Market

[stackshare.io](https://stackshare.io/stacks)、[techstacks.io](https://techstacks.io/stacks/)、CodementorXで、スタートアップや企業が募集している言語の需要を調査しました。
供給については[Stack Overflow’s 2018 survey](https://qiita.com/rana_kualu/items/85f39a35b1bc46433dbc)、およびCodementorXの独自データからの結果を集計しました。


## Conclusion

ソフトウェア開発の分野は常に流動的であることがわかります。
CoffeeScript、Erlang、Luaは、現在の我々の調査方法においては最初に学ぶべきではない言語として上位に君臨し続けていますが、DartとObjective-Cは過去一年間でランキングを改善しました。

`C#`は依然として最初に学ぶべきプログラミング言語として頂点にありますが、今年はSwiftが猛追してもう一歩まで追い詰めました。
RubyとSwiftはほぼ互角でしたが、今年はGoが4位まで上昇してきました。

最後に、今年ランキング上位に現れた言語は、それぞれの分野では非常に有用で強力であるということを繰り返しておきたいと思います。
我々が選んだ選定基準のせいで、不当に低く評価されているだけであるかもしれません。
従って、あなたが本当にErlang、Elm、Luaを学びたいのであれば、是非とも挑戦してください。
それらの言語が2020年には復活していないとは言い切れません。


# コメント欄

「Elixirコミュニティはまだ小さいから順位に異存は無いけど、ElixirフォーラムやSlack、elixirstatus.comなんかの測定範囲外で活発に活動してるよ！」
「Rubyが復活してるだと！」
「この記事は間違ってる。Haskellを学ぶべき！Haskellは学術的に最重要言語！Haskellマンセー」
「C++どこ？」
「C#が最も学ぶべきではない言語に見える。あとPythonはどこ？」「記事読め」


# 感想

きちんと読めば、適当に恣意的に順位を決めたようなものではなく、評価基準に従って機械的に求めたものであることがわかります。
この評価基準はあくまで『コミュニティでの言及数』『Googleトレンドの傾き』『求人件数』についてのランキングでしかなく、言語自体の性能や優劣、言語の学びやすさや学習環境等といった要素は一切考慮されていません。

しかし、[日本語記事しか読んでないっぽい人](https://qiita.com/ababup1192/items/4c39ff981642aded5d8e)だけならまだしも、母国語であるだろう元記事ですら、そのあたりを全く読んでいないような脊髄反射コメントが散見されました。
評価基準そのものについての異議や、言語選択の基準についてのコメント等であれば有用でしょうが、そういう話をしている人は全然いませんでした。

もっとも『Languages Not to Learn』と少々挑発的、かつ評価基準から考えられるよりも風呂敷を広げすぎたようなタイトルなので、感情的になるのもわからないでもないですが、しかししょうもないコメントを書き込む前に[10数えて](https://qiita.com/rana_kualu/items/379eefb3a40c6b44cb92#1-%E8%A8%AD%E8%A8%88%E3%81%9B%E3%81%9A%E3%81%AB%E5%AE%9F%E8%A3%85%E3%81%99%E3%82%8B)ほしいところですね。
ちなみに[2018年の同記事](https://www.codementor.io/blog/worst-languages-to-learn-3phycr98zk)は『Worst Programming Languages to Learn』とド直球なタイトルでした。