TIOBE Indexというのがある。 ざっくりいうと、プログラミング言語の人気ランキングだ。 ここでの人気というのは利用度合いのことだ。
この人気表がどうやって作られてるのかはよくわからない。 しかし、人気企業ランキング、大学別年収ランキングなど、こういったものは往々にして 集計方法が謎なものであるが、それでいて実態と差がないものだ。
しかし今回のランキングで、おれの感覚とは差があり驚いたものがあった。 それがScalaのランキングの低さだ。 Scalaは32位。おれのお気に入りのRustは24位。 おれの実感では、ScalaはRustよりはまだまだ上で、 10位には入らないがそこらへんにはいるみたいな印象だった。 しかしもう随分と偏差値の低い言語になってしまっていたようだ。 この事実にはかなり驚いた。
おれはScalaを結構書いてきた。 Scalaに出会ったのは日立にいた頃だ。2013年とかそのくらいだろうか。 もともと本を読んだりして勉強はしていたのだが、 たまたまScalaで書かれたプロジェクトを引き継ぎ、 実務経験を得た。
それからも業務委託でも書いたし、 ベンチャー2社でもScalaを書いた。 1社は2015年当時、「Scalaで開発している」ということを売りにしていたくらいだし、 もう1社などは、なんでもかんでもScalaで書きたい邪教が作り出したScala.jsという闇の技術を使っていた。 そのくらい、ほんの5年前の世界ではなんでもかんでもScalaだった。
おれに関してはその後、なにかとJVMに足を引っ張られることへの嫌悪があり、 そういった余計なものが介在しないRustを使い始めた。 RustとScalaは文法的には似ていて、プログラミングのテイストは似たようなものになる。 所有権なども、システムプログラミングをするのであれば、当たり前の概念だ。 だから、Rustが難しいとは思わない。(Pinに関してはかなり難しいと思うが)
Rustには及ばないが、Scalaもかなり優れた言語だ。 もし、Rustがないならば、Scalaを書きたいくらいには今も好きな言語だ。 実際、Scalaを使ってる企業は少なくないと思っていた。 Findyの求人でも良くみるものだ。少なくともRustよりは明らかに多い。
ではこのランキングは何なのだろうか。 仮説を5つ立てた。
- JVMを使うことが煙たがられてる説。これは、さらに下の35位にKotlinがいることからそう思った
- コミュニティがあまりに関数型言語としてのScalaを重視しすぎた結果、きもすぎて毛嫌いされた。Scalazとかあの界隈は、きもいと思う人もいるだろう。おれはFP in Scalaも読んだが
- Javaが進化したため、もうJavaでええやんとなっている。もともとScalaは、Future Javaと呼ばれていたこともあるが、そのFutureにもうたどり着いてしまった説。ちなみにおれはJavaの知識は6で終了しているから実際のところは知らない
- 少しずつシェアを広げつつあったところにRustが来て、似たような言語のScalaが潰された
- 競技プログラミングで使いにくいから
たぶんどれかは合ってるだろう。
今後、虎の子のScala3が出るらしいから、なんとか挽回してほしい。 おれは今はRustジョブ(実質Rubyジョブ)をしているが、将来的には Scalaも流行ってくれると仕事の選択肢が増えていいと思っているので。