株式会社豆蔵 取締役・プロフェッショナルフェロー
はじめに
ここまでの牛尾さんのイントロを受けて,これから数回でScalaの文法的な特徴をミニツアーという形で探検していきたいと思います。初めての方は,第1回,第2回の記事の内容をざっと眺めてから本記事に進まれると,すんなり読めると思います。
クラス定義とコンストラクタ,Javaとの混在およびJavaとの文法上の違い,Traitと呼ばれるmixin型多重継承,関数定義と関数プログラミング,型階層とコレクション,パターンマッチング,XMLリテラルの操作,等のテーマに関して訪問する予定です。
まずは,復習として,Scalaの言語としてのポイントを整理しておきます。
■事実1:ScalaからすべてのJavaクラスを簡単に利用でき,JavaからScalaクラスを呼び出すことも自由です。既存のJavaクラスのサブクラスとしてScalaクラスを定義することも普通に可能です。つまり,膨大なJava,J2EE,Java ME CLDCの資産がすべて,より合理的でコンパクトな形で利用可能になります(現在のバージョンでは提供されないが,1.x版には.Net上のScalaが存在した。将来復活の予定有)。
■事実2:ScalaはJVM上で実行され,その実行性能はコンパイル後のJavaコードとほぼ同等です。結果として,ほとんどのスクリプト言語より1桁速いといえます。
■事実3:Scalaは純粋なオブジェクト指向言語でありながら,その枠組みの中で完全な関数型言語を提供します。Scalaのデータはすべてオブジェクトであり,関数もオブジェクトなので,データとして操作できます。
■事実4:ScalaはJavacやJava Genericsの開発貢献者でもあるMartin Odersky教授が率いる強力な開発体制の下で開発されており,研究室の実験言語ではなく,今後が期待できる実用的な汎用プログラミング言語です。かなり速いペースでリリースがなされ,ドキュメントも充実し,Scalaは2008年8月の時点でScala 2.7.1.finalが最新版です。
(注)なお,Scalaインタプリタで日本語の表示を行わせるためには,コマンドプロンプトで「scala -Xnojline」としてインタプリタを立ち上げる必要があります。