Scalaは流行らないのか?ボンボン坂高校演劇部は面白いのか?きな粉棒は旨いのか?

Scalaを使い始めてだいぶたちました。

私が自分で得意だと思っている言語は長らくC#でしたが、もはやScalaの方が得意というか好きな感じです。何かプログラムを組むというときにまず最初にScalaを検討します。デスクトップアプリ組めと言われたらC#を選択しますが、サーバで動作するアプリならほぼ100%Scalaで書いています。社内では「Scalaを書ける人が居ないからメンテに困る」とよく言われましたが、「どうせメンテって言っても私しかやってなかったでしょ、これまでも」というと「なるほど」と納得してくれました。いや、納得すんなよ、と思うのですが、わたしはもはや会社の有るべき姿を考えてどうこうしようと思う熱意のある時期はとうに過ぎ、自分が組みたい言語でプログラムかければそれでいいや。保守メンテ?知らない言葉ですね…みたいな意識低い系になってるのでどうでもいいです。

そんな中、私はScalaの仕事を続けたいのでことあるたびに社内外の人たちに「Scalaってどうですか?」と聞いて回ってるのですけど、私の周りではあまり評判が良くないですね。「一部の人にしか流行らない」「難しすぎる」「すぐ廃れる技術の一つと判断してる」などなど…。

「Scala?へぇー。(知らん)」みたいな反応が自分の周囲では一番多いですが、次に良く聞くのが、「Java8があればScalaは不要かな」という言葉です。

これを聞いてScala使いはいろんなことを思うでしょう。いや、Java8に比べてScalaはこういうところが良いという冷静な反論とか。あとは逆に「Javaもめんどくさいけど悪い言語じゃないよ、俺はむしろJava好きだよ」という人も良く目にしますね。

ちなみに私は性格がねじりきな粉棒よりもねじれているので、Javaは大嫌いです。「Screen001」「Screen001Impl」みたいな意味不明なクラスが大量に入ってるようなプロジェクトに「人月」というよくわからない、見たこともない高貴なる器があって、それ人柱で充当させるためという理由で投入された事があるのですが、そこでさんざんに苦労しオブジェクト指向のオの字も知らないような人たちがオレオレ設計を語るのに心底嫌気が差し、最終的にJava嫌いになりました。だからJavaの言語機能が嫌いとかそういうわけじゃないんです。正確に言えば弊社のメンバースキルやオレオレ設計・実装にいら立ってるんです。でも私はねじりきな粉棒が好きですから、Javaに対する認識もねじれてしまってJavaそのものが嫌いになったんです。

こういうのって自分の場合だと本当に良くあって、たとえばワンピースとドラゴンボールですね。ワンピースとドラゴンボールってジャンプの代名詞みたいなところがある作品だと思うんです。でも私はどっちも見てませんでした。面白くないからです。私はボンボン坂高校演劇部とかカメレオンとか好きだったな。カメレオンはマガジンか。

で、大人になってから知人と飲んでたりするとワンピースとかドラゴンボールの話によくなるんです。でも全然知らないんですよ。知らないので知らないですって言うと、決まって「ジャンプ買ってなかったの!?」ってなるんですよ。いや、買ってたし読んでたよ、って言うと「じゃあなんでドラゴンボール見ていないの!?」って必ず聞かれるんですよ。だから「面白くないし暴力的じゃん」って言うと、こいつ…信じられない…。ジャンプ買ってたのにワンピースもドラゴンボールも読んでないなんて…。って言われるんですよ。

どうも、彼らの頭の中では「ワンピースやドラゴンボールに興味が無いという人種はそれらの作品に単に触れる機会がなかったというだけで、一度それらを読めばその面白さの虜になる。ワンピースとドラゴンボールを多少なりとも読んで、面白くないと判定する人間など居るわけがない」という論理らしいんですね。

じゃあ私は逆に聞きたいんだけど、お前らボンボン坂高校演劇部読んでたの?あの名作を読んでたの?って聞くと、大体「そんな漫画あったかなあ?」「あったとしても読んでないと思うよ、つまんないから」って言われるんですよ。同じなんすよ。俺だってドラゴンボールとワンピースはつまんねーから読んでなかったんだよ。でも俺はそういうのを面白いと思う人も居るんだなあと思うから、ボンボン坂高校演劇部を知らん人が居てもつまらんと思う人が居てもそれに対しては何も言わんし、ましてや「えっ、ボンボン坂高校演劇部読んでないの?あの名作を?」などとこいつ頭おかしいんじゃねえかな、みたいな目で人を見たりしないよ。でもお前らは何なの?ボンボン坂高校演劇部が面白いということも、ドラゴンボールとワンピースがつまらないということも認めてくれないの?どんだけ心狭いの?そんなに心狭くて大丈夫ですか?カルシウム取ってますか?みたいな感じになり議論は紛糾するのである。

で、そういう人がいたんですよー、だったら笑い話として処理できるのだけど、私がワンピースもしくはドラゴンボールの話を振られて見てないと応えるたび周囲の人間がこういう反応をするので、そういうことを何度も繰り返すうちに本当にワンピースとドラゴンボールそのものがが嫌いになってきたんですよ。もともとは興味ない、だったのが、嫌い、になったんですよ。

Javaが嫌いになったのと同じ原理なんですよ。

よく、車にワンピースのステッカーとか張ったり、ワンピースのキャラクターグッズとかいい年こいて付けてる人っているじゃないですか。スマホの待受画面がワンピースだったり、SNSのアイコンがワンピースだったりするじゃないですか。少年ジャンプのキャラクターなのに、お前は少年じゃなくてアラサーだろって感じだけど付けてる人居るじゃないですか。もうこの言い方にかなりの偏見が含まれてるんですけど、それが私のワンピース・ドラゴンボール嫌いを如実に表しているじゃないですか。で、私はそういうグッズを見るだけで「あ、この人と私は多分未来永劫分かり合えないな。喋ったことも無いけど」って思ってしまうんですよ。ねじり棒だから。

はっきり言って人がどんなキャラクターグッズを持ってようがその人の自由ではあるんですが、それを私が許せなくなったそもそもの理由が、奴らのドラゴンボールとワンピースを愛する一方でそれを愛せない人を認められない、また、ボンボン坂高校演劇部を愛する人を認められないという偏狭な心が原因なのです。つまり奴らが武器を持って向かってきたのであってこちらとしては応戦してるだけということですよ。スイスでは永世中立を貫くために兵役を終えた国民にはライフルが配られ、有事には国が実弾を配るんですよ。というか昔は実弾も平時から配ってたんですよ。つまり私もそういう気概だということですよ。

で輪をかけて腹立つのがこういう「ワンピースは好きだけどボンボン坂高校演劇部は認めない」みたいな人がSNSのアイコンをレインボーカラーにしてたりするんですよ。一時期あったじゃないですか。LGBTへの偏見をなくそうとかいう運動が。私に言わせたらもう全く矛盾してますよね。ボンボン坂高校演劇部すら認めてくれないような視野の狭い人たちがLGBTの世界に対して何をコミットできるんですか?LGBTもレインボーカラーもお前らの意識高い系をアピールするためのツールじゃないからね?そういや、サウスパークでも勘違いした奴らが「ゲイってクールだよな!」とか騒ぐ回があったわー。軟禁して30回くらい見せてやりたいわー。と思った。

で、話をプログラミング言語に戻すとJava、ですね。ここからはそのJavaという偏見を極力取り除いて冷静に話します。

「Java8があるからScalaはいらない(流行らない)」という意見、これは私は半分以上くらいは同意します。世界中どこの国・組織でもScalaは要らない、という文脈で言われるとそれは違うんじゃないかと思いますが、「Scalaが要らないような組織やコミュニティがある」という文脈ならば、それはもはや当たり前の話で全く異論ありません。私が車内外で聞いたときも答えてくれた人は「我々の組織内では」という言葉を含ませていたのだろうと思います。

しかしながら「Java8があるからScalaはいらない(流行らない)」と言われて色々思う人は居るでしょう。それに対して憤慨するかもしれません。憤慨するまで行かなくてもちょっとイラッとするかもしれません。でも実際、Scalaは今以上に流行らないかも知れません。長らくJavaを使ってきた人のほとんどはJava8で十分でScalaは要らないと思うかもしれません。

でも冷静に考えてみてください。ScalaはそもそもJavaを置き換えるために作られた言語だったのでしょうか。世の中の大多数のプログラマがJava8を使い、Scalaが少数派であることに何の問題があるのでしょうか。

Scalaのコミュニティはすでに十分に大きいと思います。大体の疑問はググれば解決します。使ってる人もたくさんいます。ということは、実用上「使う人が少なすぎて情報が無いから困る」という域はとっくに脱しているのです。であれば、それ以上コミュニティを大きくさせる必要ってあるのでしょうか?もちろん、Lightbendとその他ScalaやAkkaなどの技術サポートをしている会社的にはもっと使う人が増えてほしいと思っているでしょうが、我々は別にScalaを広める責務やそういうビジネスを行っているわけでは無いんです。好きな言語を適したシーンで使えばいいだけです。

ですから、JavaとScalaに限らずこのプログラミング言語が良いとか悪いとかいう記事や意見は沢山あり、それに対して色々思うところはみんなあるんでしょうけど、基本は自分が(自分が所属してる組織が)困らなければ何の言語が流行ろうが実害は無いっていう当たり前の話ですよ。

何度かこのブログでも書いてますが、プログラミング言語って結局は「世の中の問題を計算機で解くことが出来る問題に変換してあげる」ための道具なんで、良い道具を使った方がいいっていうのは間違いないけど道具にこだわりすぎると手段と目的が逆になってしまいますよ、って話です。

だからみんな気にせずJavaなりScalaなり好きな言語を使いましょう。ボンボン坂高校演劇部やドラゴンボールが好きな人間がいるように。ボンボン坂高校演劇部が好きな人も、ドラボンボールが好きな人も、お互いに認め合いましょう。