ScalaとRubyどっちがいいの?
Posted on 2014-04-10 by takezoux2– PR –
芸者東京で隔週水曜にScalaの勉強会を開催しています。
上級者の方から、Scalaを使い始めた方、興味を持っている方などどなたでもウェルカムですのでふるってご参加下さい。
勉強会への参加登録は、DoorKeeperのほうで行っています。
第123回Scala勉強会で出た、
「Webサービスを作るにあたってScalaとRubyのどちらで作った方がいいのか?」
という質問に対する参加者の解答まとめです。
結論
その会社の目指すところ、状況によってかわってくるため、慎重に選びましょう!
ということです。選ぶポイントとしては次のような感じになっています。
1. 人材採用
Scala、Rubyを使える人数を比較すると、Rubyのほうが圧倒的に多いため人材確保を考えるとRubyのほうが良いだろう。
ただし、Scalaを使える人なら技術力が高い人が多いため、精鋭を集めたいならScalaのほうが良いかも。
2. パフォーマンス
サーバー単体の場合はScalaで書いたほうがだいたいの場合では速いが、
実際は、実装によって大きくかわるのと、通常はスケールアウトが前提となるためサーバー単体での速さはそこまでは重要ではない。
むしろ、スケールアウトを行うにあたって、インフラエンジニアのスキルにあっているほうが良いだろう。
3. 開発効率
やはり初期はRuby(もといRuby on Rails)の開発効率は非常に高いが、開発規模が大きくなり行数が増え、人数が増加してくると、リファクタリングやユニットテストの理由などによりScalaのほうが開発効率が良くなる。
3-1. リファクタリング
Scalaの場合は、コンパイラーによりチェックが入るためクラス、メソッド、変数名の変更を安心して行うことが出来る。
Rubyの場合は、テストがしっかり書かれていないと安心して行えない。
3-2. ユニットテスト
Rubyの場合はTypoでプログラムが死ぬ場合も多く、リファクタリングのことも考えるとしっかりとテストを書く必要がある。
Scalaの場合は、ロジックに関するテストだけを書けば良いため、Rubyよりはユニットテスト量は少なくて済む。
4. 好み
メインになるエンジニアが好むものを使ったほうが、モチベもあがるし良いだろう。
ちなみに弊社(芸者東京エンターテインメント)では、
- 優秀な人材を取りたい
- パフォーマンスが良さそうなほうがいいよね
- 最終的には大規模なプロジェクトになることが多い+ゲーム開発で、仕様変更が頻繁に発生してユニットテストを全部書いていられない
- 静的言語好き
なため、Scalaの採用は妥当かなっといった感じです。