Scala&Liftを採用した理由

おかげさまでScalaとLiftを使ったプロジェクトが着々と進行中ですが、何も「Scala使ってみたかった」という新しモノ好きの理由で採用したわけではないです。零細SIerの立場で、Scalaを使う理由を書いておきます。

Java/JavaEE、Ruby/Rails、PHP/Akelosで実プロジェクトを負荷試験・運用まで含めて経験してきて、自分の中では「JavaとLLではパフォーマンスは1桁違う」という認識です。これが話の大前提。

経験上、LL(特にRuby on Rails)での開発は確かにストレスが少なくて楽しいのですが、動的言語で客先に納品するというのは、なんか、なんか気持ち悪い、というかなんか、不誠実な感じがします。
(自社サービスではなく納品する立場、というのも大前提)

開発が楽しいからという理由でLL使っても、コンピューターがひと手間もふた手間も多くかけて処理を実行するわけで、お客さんに時限爆弾を抱えさせるような気がしてならない。
実際PHPで作ったサービスでは、1000ユーザー超えたあたりからだいぶ良い感じに爆発しています。

弊社がターゲットにしているお客さんは、サーバ増強とか簡単ではなく、できる限り1~2台のマシンリソースで、なるべく多くのトランザクションを捌かなければなりません。

そこでJavaVMが必要になるのですが、Ruby/Railsを経験してしまった以上、Javaのget/setの世界には戻れなくなってしまった。。。
というプログラマとしてのエゴはやっぱりあります。
じゃあGroovyやJRubyかというと、動的言語としてひと手間多いという点は変わらないので、やはりなんか、お客さんに申し訳ない。


このような背景なので、Scalaを知ったときは「コレだっ」と思いました。「LL並の表現力で、静的にコンパイルできて、JVMで動く」ことが大事。

Scalaはいろんな仕様があって勉強するの大変ですが、Scalaの威力を端的に示すコードは、

val xml:XML =
<products>
{ Product.findAll.map( p => <product>{p.name}</product>) }
</products>

↑この程度のものではないでしょうか。
これが書けるからScalaを使っていると言っても過言ではないっ。

Javaで同じことやろうと思ったら・・・と考えると、
もうJavaには戻れません。


有名な記事に、「CodeZine:私がScalaを選んだ理由」があります。
改めて読んでみると言ってることは同じかもしれないですが、大規模・エンタープライズだからScala、という話ではないと思っています。
(規模で言語を選ぶという話はナンセンスだと最近感じている。)

自分としては、お金がかけられないプロジェクトだからこそScala。
開発も運用もコンパクトに、という認識です。



※あとでLiftにした理由も書く


コメント

コメントしてください
お名前:
入力しなければ「匿名さん」。20字以内。

メール:
入力しても表示しません

URL:
入力すればリンクが貼れます


コメント: