Ruby と Go と Typescript

自分は主に 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がそのまま動く世界線がくれば、立ち上がりの速度などが改善して更に良い感じになる気もする。

    ← Go home