自分は主に Ruby と Go と Typescript をサーバーサイド言語として利用してきた。
2022年3月現在のエンジニアの雰囲気だと、Rubyは若干勢いを無くしてきて、Goが勢いがあるとい認識をもっている。Typescript も Deno とかでてきてこれから勢いでてきそう? みたいな雰囲気ではあるのかなと思う。
個人的にそれぞれを触って良いところ悪いところを、自分の中の頭の整理のためにも書いてみようと思う。
Ruby
- 良いところ
- 初期フェーズ、少人数の開発が3つの中で一番はやい(自分がなれているのもある)
- 早い理由としては、ファイルの設置場所やファイルの命名で迷うことが少ない。
- ロジックを書く場所もそれほど迷わない(基本モデルに書けば良い)。
- 動的型付言語なので、データの詰め替え作業などがないし、そのようなものが発生した場合 gem で誰かが作ってくれていることも多い。
- ActiveRecord が強い。
- 悪いところ
- 型が無いので、大人数の開発だと向かない。
- 型が無いことは、力量によってコードの品質が大きく変わることに繋がる。
- 大規模になるにつれて、型が無いのはやはり辛い。どれくらいシステムのコードを触って来たかで開発効率が結構変わるイメージ。
- サーバーレス時代に、Railsはアプリケーションが大きすぎる。
- サーバーの起動が遅い。
Go
- 良いところ
- 型システムが良い。
- 学習コストがそこまで高くない。
- サーバーの立ち上がりが早い
- 記法がすくないので、コードは読みやすいし、追いやすい。
- 悪いところ
- コードを書く量が多くなる
- filter や map などが無いのは、シンプルで良い反面、小さいプロダクトを早く開発するという文脈だと辛い。
- デファクトスタンダート的なアーキテクチャがないので、Railsと比べてファイルの置き場などを迷いやすい
- デファクトスタンダートなORM がない。
Typescript
- 良いところ
- RubyとGoの間という感じで、表現力あるし、静的型システムもあるのが良い
- みんな使っているので発展が早い
- cloud function 的な感じで、1つの処理をするAPIサーバーくらいなら便利そう。
- webフロントエンドと言語を統一できるので、エンジニアを確保しやすい。
- 悪いところ
- 型システムがGoと比べてゆるいところもあり、物足りないことがある。
- サーバーの起動がGo と比べて遅い(しょうがないけど) Nestjs で検証。
総括
Rubyは勢いがないというものの、ActiveRecordの恩恵は大きく、コードの記述量をすくなくなる && ファイルの場所や名前を考えるコストが少くするなるため、小規模少人数開発では依然として開発スピードは早いと思う。
ただ、人数が多くなってくると型が欲しくなるため、そこまで見越しているのであれば Go を使いたい。
Typescript はGo とRubyの間のイメージ。表現の多さとある程度の静的型システム。また、フロントと言語を統一できるメリットは大きい。
Denoが発達して、Typescriptがそのまま動く世界線がくれば、立ち上がりの速度などが改善して更に良い感じになる気もする。