【QUORA】Rubyは大規模開発に向いていますか?

答えるまでもない問いだと思うのだけど、それなりにちゃんと書いて消すにしのびないので。

かつてCOBOLで「大規模開発」をしていました。

その時の知見を使うとするなら、Rubyはもっとずっと楽勝で大規模開発出来るでしょう。

結局、ある程度以上の規模になってしまえば、言語の固有の機能がどうこうと言うよりは、「プロジェクト管理」の方が問題になって来ます。グローバルな名前(グローバル変数だけじゃなくて、たとえばDBのテーブルやフィールドの名前とか)をどう命名し、どう公開するか(しないか)。特定モジュールの障害や進捗をどう局所化するか。そういったことの方が重要になって来ます。

その上で、そういったものをどうコーディングに落とし込むか、それをアシストするためのツールをどうするか。その時に言語の機能がどれだけ使えるか。

たとえば、ローカルなスコープを持たない言語が存在したとして、そういった言語を使って大規模開発が出来るかと言えば、「ローカルスコープを持たない」ということを問題として「出来ない」ということにはなりません。命名規約で頑張ってやれば、「確かにグローバルなスコープに見えてはいるけど見ないフリをする」ということは可能になります。

でもそれはあくまでも「見ないフリ」をするだけですから、言語の機能として「見せない」ということにすれば、「こっそり見てしまう」ということが不可能になりますから、より確実に管理することが可能になります。

しばしば、「Rubyは動的な型の言語だから大規模開発には向かない」的なことを言う人がいます。確かに雑なことをやれば、そうでしょう。でも、仮にそれだけが問題なのであれば、いろんなルールで縛ることによって問題がないのと同じようにすることは可能です。

元の問いは「出来ますか」ではなくて「向いていますか」なわけですが、「大規模開発」というのはそれなりの予算や計画の下で行われるものですから、「雑にやった時には簡単に出来る(出来ない)」ということは、あまり考える必要はないでしょう。

別の見方として、大規模開発するだけの開発者が確保出来るかと言えば、現代では十分可能だなというのが、弊社での見方です。

ベトナムオフショアの企業紹介を見ていれば、「Ruby出来ます」「RoR出来ます」というところは沢山あります。あるいはフリーランスの求職サイトを見ていても、「Ruby出来ます」「RoR経験あります」という人は大勢います。単価もいろいろあります。十分安いところも沢山あります。

もちろんそれぞれの「質」が十分かと言えばぞれぞれでしょうが、とりあえず人は確保出来るようです。この点では、むしろ一般的に「大規模開発」に向いた機能を持っていると言われるモダンな言語(ScalaとかGoとか)よりも楽でしょう。てか、あの辺の言語は「大規模開発」が出来るだけの人を集めることが可能なんだろうか? そういった言語だと、需給バランスを考えたら単価も高めだと思うのですけど。

そんなわけで、弊社で大き目のウェブ系の案件を受ける時の第一選択はRubyです。次点はNodeですが、まだこれにはそれ程知見がありません。

いろんな点でRubyでシステム開発し続けることに不安がないわけではありません。一番嫌なのは、

言語もミドルウェアもどんどん変化する

ことです。規模の大きな開発(= 時間のかかる開発)をしていると、「開発の途中でバージョンアップが入る」ことが起きたりして、思わぬ工数がかかったりします。なので、いろいろ他の言語やミドルウェアを模索しているところですが、ここに挙げたような理由が勝るので少なくとも当面はRubyを使い続けるでしょう。