SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

特集記事

私がScalaを選んだ理由

JavaとRubyとScalaの比較

ScalaはJavaの後継のポジションに最適

 ScalaはRubyやJRuby、Python、Groovyといったスクリプト系言語と比較されがちですが目指しているものが違うことに気づきました。

 筆者が興味本位でScalaやLiftを趣味で触ったり、記事を読んだりして気がついたことは、Scalaというのは、RubyやJRubyの対抗馬ではなくて、Javaの後継のポジションに最適な位置づけのものであるということです。

 ちなみにScalaの開発の動機は、スケーラビリティを持った言語の開発だったようです。スケーラブルなアプリケーションつまり、エンタープライズ領域で使われるシビアなアプリでも対応できるように設計されているのです。そしてJavaの後継にふさわしく、JRubyやGroovyと同様、JavaのAPIをそのまま使うことが可能です。

 そのため、あくまで静的型の言語になっています。静的な言語なので、コンパイルで実行前に問題を発見できますし、多めの人数で開発する時にも問題ありません。IDEのサポートも期待できます。そして、ベンチマークを見ても確かに実行時間もJavaのそれとほぼ同等です。これはすごいことです。

 英語のサイトを見ていると、基本は静的な言語ですが、必要な時のみダックタイピングができるイメージだという記事もありました。

 確かにRubyに比べると楽ちんさや「よきにはからってくれる感じ」は負けますが、Javaと比べるともう比較にならないぐらい楽ちんにコードが書けます。また、動的な言語であるかのようなコーディングも簡単に可能です。つまり、Rubyに肉薄する楽ちんさで、エンタープライズアプリケーションが作れる言語ということが言えるわけです。

 さらに、Scalaは新しい言語ですので、Javaと比較すると純粋なオブジェクト指向言語ですし、関数型言語でもあるので関数型言語のメリットも享受できるようになっています。フレームワークのLiftもSeaside、Django、Erlyweb、Ruby on Railsといった新しいフレームワークのイノベーションをいいとこどりしたような設計になっています。そして、Javaの資産もそのまま使えるという素晴らしさです。

 そうなのです、ScalaはRubyの対抗馬ではなく、Javaの後のエンタープライズアプリケーションを継承するのに現時点で最適な言語なのです。

JavaとRubyとScalaの特徴の比較
Java Ruby Scala
多人数開発
コンパイラによるチェック 厳しい コンパイラによるチェック
IDEサポート
豊富に存在する 動的な性質があり、静的言語ほどのサポートは難しい 技術的にはJava並に可能。将来的には◎
パフォーマンス
研究が進み早い インタプリタなのでScalaと比べると一ケタぐらい遅い JavaVMで動作しJavaとほぼ同等だが、動的なことをするとJavaより遅くなる
並列処理のサポート
Ruby、Scalaに比べると弱い Fiber Actor
技術者の数 ×
これはダントツ! 現場で使えるレベル 今はまだマイナー
学習の容易さ ×
ダントツの情報量 たくさんの書籍が出ており、初心者にもとっつきやすい 英語のみ
生産性
気持ちいいレベル RubyほどではないがJavaよりずっとよく、静的型によりテスト工数はRubyの60%程度
柔軟性
動的な性質と強力なメタプログラミング RubyほどではないがJavaよりずっとよい
オブジェクト指向
一部プリミティブ型などあり 動的型かつ純粋なオブジェクト指向 純粋なオブジェクト指向
関数型 ×
なし 可能 関数型の強力なサポート

 比較表の上にある項目ほどエンタープライズアプリケーションの開発に関係の深いものです。一方、下の項目は言語の柔軟性や生産性などの項目になっています。現時点では、シビアさやレスポンス、大人数開発が要求されるエンタープライズアプリケーションはJava、そしてそれ以外はRubyという選択肢が「正解」と思います。

 今後、開発者が増え、書籍も多く発行されるようになり、Scalaがエンタープライズアプリケーションのプラットフォームとして存在感を増してくれば、俄然面白くなるのは間違いありません。私のように現場で使えることを重視する人間からすること、これはとてもわくわくすることです。

 私は今後もRubyを使うと思いますが、RubyとScalaでは目指している領域が違います。そのため、私は今まで「Rubyと、RubyでできないところはJava」という感覚でしたが、今後は、RubyとScalaという二本立てで言語を使っていこうと思います。

 言語の楽しさという意味でも、新しいトピックが満載で、とても学習しがいのある言語です(といっても、難しいという意味ではありません)。

 ぜひ皆さんもScalaの楽しさと実用性に触れてみるのはいかがでしょう?

参考

 Gentoo : Intel Pentium 4 Extra!のページより引用。

Scalaと他言語とのパフォーマンス比較
対 Ruby
対 Ruby
対 JRuby
対 JRuby
対 Java
対 Java
対 Groovy
対 Groovy
対 Python
対 Python
対 Erlang
対 Erlang

この記事は参考になりましたか?

連載通知を行うには会員登録(無料)が必要です。
既に会員の方はを行ってください。
特集記事連載記事一覧

もっと読む

この記事の著者

牛尾 剛(ウシオ ツヨシ)

株式会社豆蔵 BS事業部 エンタープライズチーム。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2464 2008/05/16 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー