バックエンド開発ではキャリアのほとんどがRubyで補助的にJava使うくらいだったが5月からGoをメインで使うようになりました。
ここまで使ってみてのRubyと比較したメリットを書いてみます。
感じたGoのメリット
- 型やインターフェイスがあることでコードの行数は多くなるし初期開発コストはRubyよりも大きくなるが他人の書いたコードを読む時はRubyよりも理解しやすい
- Ruby on Railsのような巨大なフレームワークやライブラリを使って開発する文化がない。便利なメソッドやDSLがRubyほどないがその分ライブラリの依存関係が原因で起こるバグやバージョンアップの困難さを避けられる
- 言語そのものの進化がRubyほどない。2023年現在まだ1系のまま。これは言語の進化がない一方で年数が経っても大きな変化が起こらないのでバージョンアップに伴う不具合を避けやすい
- Rubyのような柔軟なメタプログラミングはできないがその分書き方がばらけないので大人数で長期にわたって一つのシステムを開発、メンテナンスしていく場合は混乱が起きず都合が良い
- コンパイルしてバイナリを作って配布するだけなのでシンプルでDockerとの相性がいい
というので一人でサクッと作るシステムやプロトタイプ的に作るシステムであればRubyの方が快適だし正直楽しいんですがマイクロサービス化するほど大規模なシステムをチームで開発する場合Goの方が向いているのかなという印象です。
今まで参画したRails案件だとRailsのバージョンアップで謎のエラーが起きたりライブラリのバージョンに引きづられて謎バグが起きたりRubyのメタプログラミングを覚えた人が黒魔術的な謎コードを書いて引き継ぎが辛くなったり。。
そういった辛みは避けられそうな気がしています。