Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

Javaの限界を超えて実用化を目指す
新開発言語「Scala」のメリットとは~後編

キーワードは手軽さと拡張性

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

 Scala(スカーラ)というプログラム開発言語をご存知でしょうか。ScalaはJavaの良さを継承し、かつスクリプト言語や関数型言語のメリットを吸収した言語で、Javaの後継を担うものとして注目されています。本稿では、シリーズ前編に引き続き、Scalaのメリットや文法の基礎を押さえながら、その実体を探っていきます。

目次

 本稿は『月刊DBマガジン 2009/09月号』の記事「Javaの限界を超えて実用化を目指す、新開発言語「Scala」のメリットとは」を転載し、一部修正したものです。

はじめに

 前回に引き続き、Javaの後継候補として注目されているプログラム開発言語「Scala」について説明していきます。今回は、ScalaがJavaの代替として使える点(「ベターJava」として使える点)に注目します。

 シリーズ前編として、前回はScalaのメリットや、基礎的な文法について説明しました。シリーズ後編となる今回は、プログラムのコンパイルや、データベース接続について扱っていきます。

これまでの連載

コンパイルとデータベース接続

 ここからはプログラムのコンパイルとデータベース接続を扱います。なお、以降すべてのプログラムを実行するためにはエディタの文字コードを、UTF-8に設定する必要があります(UTF-8以外の文字コードでは、日本語などの取り扱いに失敗します)。

 Scalaでのソースコードの記述方法には次の特徴があります。

  • ファイル名とそのファイル中に定義してあるクラス名を一致させる必要はない(見やすさを考えると一致させておくほうが好ましい)
  • 1ファイル中に複数のclassとobjectを定義できる
  • 文字コードはUTF-8を推奨(日本語を含む場合は必須)
  • main関数が含まれるクラスはobjectとして定義

 では、MainApplication.scalaというファイルを作成し、LIST21に示すコードを記述したら、コンパイルして実行してみましょう。ビルドコマンドは次のとおりです。

scalac ビルドしたいファイル名
LIST21:コンパイルして実行
object MainApplication { 
	def main(args:Array[String]){
		println(">>>start application")
		
		val second = new SecondClass
		second.printArray(args)

		println("end application>>>")
	}
}

class SecondClass {
	
	def printArray(array:Array[String]) = {
		array.foreach(item => println(item))
	}
}

 コマンドラインから上記ファイルを保存したフォルダに移動し、下記コマンドを入力すると、.classファイルが作成されます。

(scalaコードが置かれたフォルダ)> scalac MainApplication.scala

 なお、.classファイルは、Javaのclassファイルと互換しています。例えばjavapコマンドなどを実行できます。実行コマンドは、次のとおりです。

scala 実行したいクラス名

 続けて、LIST22のコマンドを入力して実行してみましょう(Scalaコマンドのオプション)。すると、main関数が呼び出され、SecondClassのprintArray関数が呼び出されていることが確認できます。

LIST22
C:¥scala> scala MainApplication
>>>start application
end application>>>

●続けて、以下を入力してみましょう
C:¥scala> scala MainApplication 1 2 3
>>>start application
1
2
3
end application>>>

Javaのビルド環境Maven2の使用

 コマンドラインからのビルドを紹介しましたが、ある程度以上の規模のアプリケーション開発では、Javaのビルド環境であるApache Ant/IvyやMaven2(あるいは、scala独自のビルド環境であるsbt)の使用を推奨します。ここでは、後述のWebフレームワークLiftwebで用いられるMaven2の使用について解説します。

 Mavenは、必要な情報を設定ファイルに記述すると、必要なファイルを自動でダウンロードし、適切なコンパイルオプションを設定してビルドしてくれる便利なツールです(Mavenダウンロードページ)。

Mavenのインストール

 Mavenはダウンロードページより圧縮ファイルをダウンロードし、任意の場所に解凍するとインストールできます(ここでは、C:¥Program Files¥Apache Group¥apache-maven-2.1.0に解凍したとします)。次に、環境変数を設定します(表3は設定例です)。環境によっては、設定後にログオフや再起動が必要になることがあります。

 コマンドプロンプトまたはターミナルから、LIST23のコマンドを入力して、同じように表示されればインストールの完了です。

表3:Mavenの環境変数一覧
Windowsでの環境変数の設定
JAVA_HOME C:¥Program Files¥Java¥jdk1.6.0_14
M2_HOME C:¥Program Files¥Apache Group¥apache-maven-2.1.0
M2 %M2_HOME%¥bin
PATH %JAVA_HOME%¥bin;%M2%
Linux(Unix)での環境変数の設定
JAVA_HOME /usr/java/default
M2_HOME /usr/local/src/apache-maven-2.1.0
M2 $M2_HOME/bin
PATH $PATH:$HOME/bin:$JAVA_HOME/bin:$M2
LIST23:Mavenのインストール
C:¥>mvn --version
Apache Maven 2.1.0 (r755702; 2009-03-19 04:10:27+0900)
Java version: 1.6.0_14
Java home: C:¥Program Files¥Java¥jdk1.6.0_14¥jre
Default locale: ja_JP, platform encoding: MS932
OS name: "windows xp" version: "5.1" arch: "x86" Family: "windows"

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 株式会社パテントビューロ 三木隆史(ミキ タカフミ)

    株式会社パテントビューロ所属。マネージャー業務と平行して、Webアプリケーション開発、自然言語系の研究開発を行なう。以前はC言語による組込開発。違和感なくScalaへ移行できたことや、ロジック部分に注力できる生産性の高さに驚いている。

  • 株式会社パテントビューロ 木村吉博(キムラ ヨシヒロ)

    政府系研究機関での研究開発を経て、現在、株式会社パテントビューロにて、プログラミング(知財関連文書(SGML/XML)の変換バッチ処理のScalaでの記述など)を担当している。 複雑でイレギュラーな記述も多々見られる大量の文書を相手にする際に、Scalaの書きやすさと高速性とに大いに助けられている...

バックナンバー

連載:新開発言語「Scala」の実体
All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5