|
本連載では,次世代のエンタープライズ・プラットフォームを支える言語として,このところ最も注目を集めている言語「Scala」の魅力をお伝えしていきたいと思います。Scalaは,技術的にもかなり刺激的で,楽しい言語に仕上がっています。最初の一歩から刺激的な技術解説まで,幅広くScalaのおもしろさ,楽しさをお伝えしたいと思います。
Scalarはじめの一歩
Scalaは,純粋なオブジェクト指向言語であり,かつ本格的な関数型言語の性質を持ったハイブリッド言語です。しかし,最近人気のRubyやPythonを始めとするLL(Lightweight Language)系の動的言語と異なり,静的型付けの言語です。したがって,コンパイルした時点で型や文法に関する問題点はすべて抽出されます。
一般的に,静的型付け言語は生産性や柔軟性があまりよくないのですが,Scalaに限っては,簡潔に考慮された文法とimplicit conversionや型推論の仕組みを用いて,動的言語のRubyほどではないにしろ,それに近い柔軟性と生産性を可能にしています。
さらに,ScalaはJavaVM上で動作し,Javaとほぼ同等の実行速度を誇ります。この実行速度は,たいていのスクリプト言語より一桁早いぐらいの差があります。
現在Rubyを始めとして生産性が高く,開発が楽しい言語がメジャーになりつつあります。しかし,それらは動的型ということもあり,ある程度の人数で開発するような大きめのプロジェクトには向いていません。
そのようなプロジェクトでは,現在JavaやC#ぐらいしか選択肢がないのですが,Scalaがメジャーになれば,この領域のアプリケーション開発プラットフォームの最右翼になる可能性があります。
Scalaの魅力はまだあります。近年のソフトウエアの開発技術の多くは,Ajaxやマッシュアップなどように,従来からある技術がより使いやすくなるといった方向性で進んできました。そのため,技術者としてはやや刺激が足りない面があったのではないでしょうか?
Scalaは違います。とりあえずオブジェクト指向に慣れていれば使えることは使えます。でも,Scala的にクールなコードを書くためには,関数型言語の感覚を理解して,自分の中である意味パラダイム・シフトを起こす必要があります。
もう一つ,Scalaは,生みの親であるMartin Odersky教授がJava Genericsの開発貢献者だったこともあり,大変強力な型システムを備えています。これがまた刺激的です。加えて,implicit conversionなどの新しい考え方やモナド,パーシャル・ファンクションなど非常に「悪魔的」な特徴を持っています。
このようにScalaは,将来的な実益と知的好奇心の刺激の両方を兼ね備えた楽しい言語なのです。ぜひ,この連載で私と一緒にScalaの魅力に触れていきましょう。
今回は初回なので,Scalaのプログラムの作り方と実行方法について説明したいと思います。
インストールと実行
最初に,Scalaをインストールしてみましょう。
なお,前述の通り,ScalaはJavaVMで動作します。JDK 1.4以上の環境が事前にインストールされている必要があるので,ご注意ください。
では,Scalaのダウンロード・ページから,お使いのOSに合わせて,適切なリリースをダウンロードしてください。
Windowsの例で説明すると「ZIP Archive(Windows)」をダウンロードして展開(解凍)します。展開した後,binディレクトリにパスを通せばセットアップは完了です。
例えば,筆者の環境では,執筆時点でのScalaのバージョンが2.7.1なので,アーカイブを展開したディレクトリは,c:\app\scala-2.7.1.finalとなっています。この場合,c:\app\scala-2.7.1.final\binディレクトリにパスを通せばOKです。
パスを通したらコマンドプロンプトを起動して,動作確認をしてください。
C:\>scala -version
Scala code runner version 2.7.1.final -- (c) 2002-2008 LAMP/EPFL
コマンド実行後,上記のような表示が出れば,セットアップは正しくできています。
Scalaのプログラムを実行する方法は,下記の三つのやり方があります。
- 対話形式で実行
- プログラムをスクリプトとして実行(インタプリタ)
- プログラムをコンパイルして実行
順に説明していきましょう。
◆対話形式で実行
コマンドプロンプトで,単純にscalaとタイプしてください。それだけで,scalaのプログラミングを対話形式で体験することができます。
C:\>scala -version
Scala code runner version 2.7.1.final -- (c) 2002-2008 LAMP/EPFL
C:\>scala
Welcome to Scala version 2.7.1.final (Java HotSpot(TM) Client VM, Java 1.5.0_14)
.
Type in expressions to have them evaluated.
Type :help for more information.
scala> 1 + 1
res0: Int = 2
終了するためにはexitコマンドで終了します。
scala> exit
C:\>
◆スクリプトとして実行
スクリプトの場合,ファイル名は慣習として,スクリプトに含まれるクラス名の先頭が小文字になるラクダ式のネーミングになるようです(Scalaの書籍などに明記されているわけではありませんが,多くのサンプル・プログラムがそうなっています)。拡張子は.scalaにします。
よくありがちな「hello world」を表示するスクリプトを作成してみましょう。ここではまだクラスを使っていないので,プログラム内容からhelloWorld.scalaという名前で作成します。コードは,以下の1行です。
println("hello, world!")
インタプリタとして実行させる方法は,下記の通り。
C:\>scala helloWorld.scala
hello, world!
うまく実行できましたね。