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にした理由も書く


同じカテゴリのエントリ
1.Lift再入門 / 8.javascriptからsubmitできない / 7.Ajax Form / 6.Radio、Checkboxについて / 5.行列型の編集FORM / 4.サーバーサイドバリデーションとサーバサイド関数 / 3.ログインFORM - S.param使ったら負け / 2.Snippetメソッドとして許される型 / sbt0.12.xで依存jar抽出タスク / scala2.10+lift2.5+NetBeans7.2 / Scalaで入門関数プログラミング / reactive-webを試してみました / Lift2.2M1のテンプレート機能 / Scala Compiler Plugin / View Bound/Context Bound / ScalaZa01参加してきました / Akka Frameworkチュートリアルの次 / Akka Frameworkチュートリアルその2 / Akka Frameworkチュートリアル / LiftでJCaptcha / Url Rewrite Filter / sbt-android-plugin / Android SDK for Scala / 祝Lift2.0リリース / Liftの携帯対応まとめ / Scala2.8への移行 / Lift 2.0-scala280-SNAPSHOT/sbt0.7.1 / Scalaお絵かき環境 - Kojo / Lift+Quartzでバッチ / Scala&Liftを採用した理由 / Liftでdate_select系ヘルパーを作る / LiftでAjax / LiftのSubmitかしこい / lift-mapperのpaginateを使う / snippetをspecする / Lift Mapperを拡張する / LiftのDBをMySQLに / Liftプロジェクト環境を整える / Scala本読み比べてみました / NetBeans6.7&scala / じつはScalaはライトな言語 / Scalaバザ~ル / lift1.0所感 / specsを読む / implicit def / ScalaならNetBeansがサイコー / scala勉強会@東北がスタート / それでも俺はLiftをやるってのか / Scala&Liftセットアップ / ブログリニューアル /
コメント

コメントしてください

closed.