エンタープライズアプリでRubyを使えるケースはまだ少ない
しかし、自分の主戦場であるエンタープライズアプリケーションでは、とても便利なRubyを使えるケースはまだまだ多くありません。
現時点ではエンタープライズのアプリケーションでも、今PHPで作っているWebサイトや、あまりトランザクション量の多くない、レスポンスに対してもそんなにシビアでないシステムだと今すぐ使えると思います。動的な性質があるのは利点でもあるのですが、例えば1つのメソッド呼び出しでも、静的な言語と比べると5倍程度かかるとのことです。ただし、レスポンスがもっとシビアなシステムでも、構築事例もあるため、今後はハードウェアの発達などで対応可能かもしれません。
それでも動的型付の言語は、多めの人数で開発することに向かない面があります。
言語が「動的」なので、実行するまでコードに問題がないか分かりません。多めの人数で開発するときは、優秀ではない人も混じっていると思いますが、その人が他の人のコードに影響を与えるおかしなコードを書いたとしても、あくまで「実行時」にしか見つけることができないことになります。これはたくさん人数で開発するときに問題となってきます。
この点が、JavaやC#といった「静的型付け」の言語が持っている「メリット」です。Javaなら、実行する前にコンパイラやIDEがやツールがコードの問題を発見してくれますので、多めの人数でプログラムを作る時は動的言語に比べて圧倒的に有利ですし、レスポンスの面でも先にコンパイルをしてしまうために、動的な言語よりずっと速く動作します。
これは、動的な言語と静的な言語のどちらがいいか? ということではなくて「使い分け」だと思います。迅速な変化への対応や高い生産性を達成する少人数での開発でレスポンスもそんなにシビアなレベルが要求されなければ、動的な言語が最適ですし、多めの人数で開発して、データ量も多く、シビアのレスポンスが要求されるといった言語であれば、静的な型付けの言語を選んだ方が、少なくとも現時点では良さそうです。
「だからといって、JavaやC#を使い続けるのは面倒くさいなぁ…Rubyだとあんなに楽ちんなのに…」
と筆者は思っていました。Rubyでもある程度の人数で作るようなエンタープライズアプリ開発できればいいのになぁ…と。
Scala
そんな時に、豆蔵のフェローである羽生田さんが、ちりとてちんと共にScalaに熱中しはじめて講演をしたり記事を書いたりするようになっていました。
Scalaはスクリプト言語ですが、静的型付けで、事前にコンパイルもできます。そして下記のような特徴を持っています。
- 静的型の言語だが、型推論によってRubyに近い柔軟さを得ている
- ScalaからすべてのJavaクラスを利用可能(逆も可能)
- JavaVM上で実行されて、実行速度は、Javaコードとほぼ同等(ほとんどのスクリプト言語より一ケタ早い)
- Scalaは純粋なオブジェクト指向言語
- しかも本格的な関数型言語
- 作者Martin Odersky教授(JavacやJava Genericsの開発貢献者)
- LiftというRuby on Railsのようなフルスタックのフレームワークがあり、JavaのWebコンテナ上で動作する