羽生田栄一(はにゅうだ えいいち)
株式会社豆蔵 取締役・プロフェッショナルフェロー
 モデリングやソフトウエア工学の実践適用に関するコンサル・教育を通じて後進の育成にあたる。現在,アジャイルプロセス協議会会長,SEC要求設計技術部会委員,パターンワーキンググループ主査,情報処理学会ソフトウェア工学研究会主査,IPA ITアーキテクト・コミュニティ委員などを務める。路地・トマソン物件・神社・富士塚・古書店等を巡る街歩きが趣味。オブジェクト指向技術関連の著書・訳書多数。技術士(情報工学部門)。

はじめに

 ここまでの牛尾さんのイントロを受けて,これから数回で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」としてインタプリタを立ち上げる必要があります。