というか、さすがマルチパラダイム言語を名乗るだけあって、サーバサイドであればほぼ全方面、柔軟な書き方ができるので、一番重宝している、というのが正確だろう。
もちろん、Javaも書くけど。
Pythonも書くけど、わざわざサーバサイドで使いたいとは思わない。
書かなきゃならないなら、仕方ないから書く。
ただ、テストを多めに書くから、時間が余計にかかる。
ツールには、まぁまぁ使ってる。
Rubyは、……個人的にRuby使いに好きになれない人が大量にいた(好きになれる人が一人もいなかった)ので、Rubyのプロジェクト、というだけで「うげぇ……」となるので遠慮したい。
やっぱり、根本的に思想というか、考え方が違うので、分かり合える気がしないのだ。
GoLangは、小さいシステム確定なら構わないけど、成長前提とか試行錯誤するプロジェクトなら、遠慮したい。
知らない間に、誰かがどこかを壊していても、気付きにくいから。
それを防ぐためにテスト書いても、試行錯誤でテストがどんどんObsolateになっていくし。
マージがしんどいイメージが強くなった。
と書いたけど、どの言語使っても、ある固定化された切り口(interfaceとか、traitとかprotocolとかいう感じの。もう少し広めに見ればAPI)をさっと見つけて、そこを起点にシステムを構築する、Topを見つつMiddleUpして、下(詳細)に展開していくしかなくて、Object指向とかUMLとかいう考える時の道具を、使い方の解説、事例をなぞるのではなく、なぜそれを使うことになったのかという原因を考えて使うしかない。
その上で、一人でささっとプログラムを組みたければ、動的言語を使えばいいだろうけど、三人を超えてきて、サービスが複数連携するようになったら(なりそうなら)、JavaかScalaを使いたい。
といいつつ、今、Scala技術者が本当にいない。
Scalaといえば関数型プログラミングでしょ、とかいうノリで、何も考えずにScalazとかCatsをフルに使って、最初はうぇいうぇいやってたのに、追加要件が増えるに従って徐々に首が締まっていって、最後はScalaなんて2度と触りたくないとかいってプロジェクトから離脱していく、という技術者を複数見ている。
君が触りたくなくなったのは、ScalazとかCatsなんだよ、と言いたい。
Scalaは関数型プログラミングではないし、ScalazもCatsもScalaではない。
Scala使っていて、ある部分が関数型で書ききると具合がいい、という時にだけ、使うものだ。
と思ってる。
ただ、今からScalaのプロジェクトを立ち上げる、というのは経営的にはかなり危険な判断だと思う。
だって、技術者いないし、2度とやらねぇって技術者が多そうだから。
ではどうするか?
まだ環境が完備されてないイメージはあるけど、サーバサイドはRustの一択になるのかな?と思っている(メタプログラミングをするなら、まだJava/Scalaも、という気はする)。
大企業がコミットしてるから(まぁ、IBMがサーバサイドSwift、ってどうなったんだっけ?w)。
うん。
サーバサイドRustプロジェクトなら、手をあげたい。
けど、募集がないんだよね。