スクラムマスダーの日記

アジャイル、スクラムに関連した内容が多めです。

勝又さんは関数型言語を経験するべきと言っているので、結局Scalaをおすすめするしかないと思う

エンジニアで、YouTubeで配信もされている勝又健太さんが、「Scalaが日本で衰退し始めている理由を説明します」という動画をアップされました。

僕は、過去、Scalaを少しだけ触ったことがあります。
そのため、以前から、勉強のために、日本でトップレベルのスキルをもつScalaエンジニアの方のTwitterをフォローさせていただいていました。

勝又さんが動画をアップされた日や翌日は、そのScalaエンジニアの方が、いつもとは異なるツイートをされていました。

僕は、少し違う感じ方をしたので、今回ブログに記します。

勝又さんの動画の要約

詳しくは、Youtubeにアップされている動画を確認いただければと思いますが、ざっくり要約すると以下の通りです。

  1. 学習コストの高さによる技術的負債の進行
    • 学習コストの高い、関数型言語が日本で普及していないから
    • 一度右肩下がりになった言語は、過去の例を鑑みると、右肩下がりのまま。数年以内にはWebサービス開発の言語としてはマイナーポジションになる。
  2. Scalaコミュニティがにわかファンの方達の心理的安全性の確保ができなかったこと
    • 一部のエンジニアが、入門者にマウンティングする、他の言語を悪く言うなどの問題行動をとっている
    • 初学者に「マサカリ」を投げる人がいるため、「Scalaコミュニティが怖い」というイメージがエンジニア内で定着している。その結果、新しい人が寄り付かなくなる。

Scala人気ってなんだろ?

勝又さんは、彼自身の観測範囲内で、Scalaの人気が衰退しているということをおっしゃっています。
動画冒頭でも、定量的に観測したわけではいともおっしゃいいますので、個人的に、「関わっている周囲との関係から、衰退していると感じることは、あるだろう」とは思います。

Twitterで、「Scalaに関する技術顧問業に相談件数は増えているので、人気は継続している」というツイートも見かけました。
もちろん、それ自身も事実だと、僕は思います。

これは、観察者バイアスがあるから、仕方がないことだと思っています。
観察している人が異なれば、違う結果がでるでしょう。
全ての個体を検査しているわけではないですし、何か両者の共通の基準を持って計測してるわけでもないためです。

「あんまりScala人気ないよねー。」と言ってる人の周りには、Scalaに関する仕事の話は少ないでしょう。
Scalaを盛り上げて行くぞ!」と言ってる人の周りには、Scalaに関する仕事の話が集まりやすいでしょう。

なので、Scalaの人気があるかどうか、衰退しているかどうかは、結局分からないのと、個人的に考えています。

Scalaの利用状況を定量的に観測してみる

プログラミング言語の利用ランキングを見ていると、関数型言語が上位に入ることが、そもそも難しいことは、現実としてあります。

japan.zdnet.com

octoverse.github.com

今回の動画の県で、「TwitterマイクロソフトFacebookScalaユーザー」というツイートも見かけました。
もちろんそれも真実だと思います。けれども、やっぱり絶対的な利用者数は、他の言語と比べると少ないのも事実です。

日本に限った場合、日経クロステックさんの記事によるとScalaは、22位になってます。

xtech.nikkei.com

世界ランキングが11位以降わからないので、絶対とは言えませんが、世界も日本も同じような状況だと、思っています。

勝又さんおすすめのキャリア形成におけるScalaの立ち位置

勝又さんは、エンジニアのキャリア形成においては、「Ruby→Go→Scala」の順で経験した方がよい、と言っています。

Scalaは、3つの言語の中で、唯一の関数型言語です。
動画においても、勝又さんは、「関数型言語の知見はプログラミング力を高める上で非常に有効」と言っています。

僕自身、関数型言語を通して、副作用やパターンマッチなど、多くのことを学んだので、一度は経験した方がよいと思っています。

結局、Scala以外選択肢ある?

プログラミング言語の利用状況を鑑みて、関数型言語を経験するために仕事を探すとなると、やっぱり関数型言語で選択するのはScalaになると思います。

関数型言語は、F#、Haskellなど、他にもあるけれど、上記のランキングには乗っていません。

勝又さんの動画を見て、Scalaを避けて通ろうとするエンジニアがいるのであれば、結局、勝又さんのおすすめするキャリア形成は、非常に難しくなると感じています。

Scala学びたいと思ったら

このブログを読んで、もしScalaに少しでも興味が出て、学びたいと思った方がいらっしゃれば、はてなさんの学生インターン向け教材や、ドワンゴさんのScala初学者向け学習テキストを読んでいただければと思います。

github.com

scala-text.github.io

もっと興味が出てきたという方には、『Scalaスケーラブルプログラミング』、『実践Scala入門』あたりがおすすめです。

Scalaスケーラブルプログラミング第3版

Scalaスケーラブルプログラミング第3版

実践Scala入門

実践Scala入門

おわりに

このブログでは、勝又さんおっしゃる衰退している理由の1つ目について、少しだけ考えてみました。

勝又さんのおっしゃる心理的安全性については、僕自身思うところもあるけれど、やっぱり解釈が難しい言葉には違いないので、あえて触れませんでした。

関数型言語の中で、日本語の資料が一番まとまっているのは、Scalaだと思うので、なんだかんだで、Scalaおすすめです。