seratch's weblog in Japanese

About Scala, Java and Ruby programming in Japaense. If you need English information, go to http://blog.seratch.net/

Scalaの開発環境入門

前提となるもの

ScalaJVM 上で動く言語なので JDK は必須です。

必須:JDK1.5以上

sbt を使おう

Java 経験者の方はとりあえずは慣れている maven ではじめてみるでもよいとは思います。

しかし、Scala では sbt がビルドだけでなく開発に関するデファクトな環境に成りつつあるので、ぜひ sbt を使ってみることをお勧めします。

SBT
https://github.com/harrah/xsbt/

始める sbt
http://eed3si9n.github.com/sbt-getting-started-guide-ja/

sbt

MacOS X の方は Homebrew でセットアップできます。

brew install sbt

Windows の場合は sbt-launch.jar をダウンロードして以下のような bat ファイルを作ってください。

@echo off
set SCRIPT_DIR=%~dp0
java -Xmx512M -jar "%SCRIPT_DIR%sbt-launch.jar" %*

conscript

conscript は GitHub 上でホストされていて、かつ conscript に対応しているScala のソフトウェアを簡単に install や update できる仕組みです。

https://github.com/n8han/conscript

先ほどやった sbt の setup を conscript で済ませることもできます。

conscript では ~/bin にコマンドのスクリプトが置かれるので、このディレクトリにパスを通しておきます。

# cs コマンドが使えるようになる
curl https://raw.github.com/n8han/conscript/master/setup.sh | sh 

cs harrah/xsbt
sbt # 起動できるはず

conscript で install された sbt は以下のようになっています。

#!/bin/sh
java $CONSCRIPT_OPTS -Xmx1G -jar /Users/seratch/.conscript/sbt-launch.jar @/Users/seratch/.conscript/harrah/xsbt/sbt/launchconfig "$@"

プロジェクトのテンプレートをダウンロードするための giter8 も conscript でセットアップできます。

cs n8han/giter8

Scalaでスクリプトを書く、REPLを使う

sbt のセットアップ済であればただこれだけです。REPL が立ち上がります。

sbt console

カレントディレクトリにscalaファイルがあるとコンパイルしようとするので注意してください。

scala スクリプトをつくって scala コマンドで実行したり scalac でコンパイルしたい場合、MacOS X なら Homebrew でダウンロードするだけです。

brew install scala

MacOS X でない場合は Scalaの公式サイトからzipやtarballをダウンロードしてきて解凍します。解凍したディレクトリのbin配下にscalaコマンドなどがあるので、ここにPATHを通します。

wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.zip
unzip scala-2.9.1.final.zip
# binにPATHを通します
# SCALA_HOME=/usr/lib/scala/scala-2.9.1.final
# PATH=${PATH}:${SCALA_HOME}/bin

これでREPLの起動やScalaスクリプトの実行ができるようになりました。

[user@host scala]$ scala
Welcome to Scala version 2.9.1.final (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_29).
Type in expressions to have them evaluated.
Type :help for more information.

scala> println("Hello World!")
Hello World!

scala> :q
[user@host scala]$ 

mavenを使う

maven でプロジェクト設定やビルド、テストなど一通り行うこともできます。

Scala をやるなら sbt を使った方が良いですが maven を普段使っている人がとりあえず Scala を始めてみる分には環境設定が不要なので手軽かもしれません。

以下の archetype で作ったプロジェクトは mavenScala の compile や test がそのまま実行できるサンプルになっています。ただし Scala のバージョンは 2.8.0 と相当古いです。

mvn archetype:generate
# 516: remote -> scala-archetype-simple (The maven-scala-plugin is used for compiling/testing/running/documenting scala code in maven.)
# scala-archetype-simple を試します
# この記事投稿時点での最新は 1.4 で Scala のバージョンは 2.8.0 になります
# scala-2.8.1 にするには specs のバージョンを 1.6.8 にすればOKです

cd scala-sample
mvn compile
# App.scalaがコンパイルできます

mvn test
# JUnit、ScalaTest、specs のテストが実行できることが確認できます
# ただし、これらは JUnitRunner で動かしているので、それぞれアノテーション指定が必要になります

mvn scala:console
# プロジェクトの classpath を解決し mvn compile を実行済の状態で scala の REPL を立ち上げることができます

maven-scala-pluginについては以下を参照して下さい。

maven-scala-plugin - Plugin Documentation

IntelliJ IDEA を使う

現状 IDE での開発は IntelliJ IDEA の Scala プラグインを利用するのが最も現実的な選択肢と思われます。Community Edition であれば無償で利用することができます。

IntelliJ IDEA :: Best Java IDE to do more high-quality code in less time

インストール完了後、Windowsの場合はFile>Settings*1>(IDE Settings)>Pluginsでavailableタブにしてから右上の検索窓で「scala」を検索、最新になっていないものを選択して、左上のFDから矢印が出ている感じのアイコンをクリックすると最新版に更新できます。

なお maven でプロジェクトをセットアップする場合は「mvn idea:idea」ではなく IntelliJ の画面上で pom.xml を右クリックでセットアップを実行する方がよいでしょう。

EclipseScala IDE を使う

EclipseScala IDE というプラグインを使うとエディタ上でハイライトやフォーマッタなどの機能を使うことができます。

http://scala-ide.org/download/current.html

2012/2 時点では Helios で 2.9.1 対応を使うのが一番良さそうです。

http://download.scala-ide.org/releases-29/stable/site

Vim で読み書きする

Scala をダウンロードすると ${SCALA_HOME}/misc/scala-tool-support/vim 配下に vim 設定が置いてあります。これを自分の vim 設定に放り込めば、シンタックスハイライトが有効になります。

fsc(Fast Scala Compiler) を使う

fsc は Scala に標準で付属するサーバ方式のコンパイラです。初回起動時にコンパイルに必要な情報をメモリ上にキャッシュして常駐することで、次回以降のコンパイル速度を向上しています。

fsc -verbose *.scala -d output
# 初回実行時にコンパイラサーバが起動します
# 2回目以降、クラスのロードがスキップされるのでコンパイルが速くなります

fsc -reset
# キャッシュ情報をクリアします(再ロードはしない)

fsc -shutdown
# サーバをシャットダウンします

より詳細な情報はマニュアルを参照下さい。

fsc man page

IntelliJ IDEA で fsc を使う

IntelliJ IDEA の Scala プラグインは fsc によるコンパイルに対応しています。以下の通りに設定を行えば fsc でコンパイルがされるようになり、コンパイルのストレスを軽減できます。

  • 「Use fsc(fast scalac)」にチェック

まず、File>Settings*2>(Project Settings)>Compiler>Scala Compiler で「Use fsc(fast scalac)」にチェックを入れます。

  • Run>Edit Configurations で fsc を作成

次に Run>Edit Configurations で左上の「+」のアイコンをクリックし「Scala Compilation Server」を選択、作られた fsc は「Name:Unnamed」となっているので適当に「fsc」などに変更します。

  • fsc を起動

設定が終わったらRunタブのすぐ下にある実行プルダウンで「fsc」が選択可能になるので、右にある三角の実行ボタンでfscを起動します。なお、この起動手順は毎回手動です。IntelliJの再起動時やfscが異常終了するようになった場合の再起動などは手動で行う必要があります。

JRebel を使う

JRebel を使うといわゆる Hot reloading(Hot deploy)ができるようになるので Web アプリなどの開発がスムーズになります。

JRebel は Scala の開発者は無償で利用することができます。以下のページの右エリアにある「Get JRebel for free」というところから「Scala Developers」として申請すると、ライセンスがメールで送られてきます。「jrebel.lic」をJRebelのインストールディレクトリ(jrebel.jarと同じディレクトリ)に配置すればOKです。
http://sales.zeroturnaround.com/

JRebelをインストールしたら、JAVA_OPTSやMAVEN_OPTSに「-javaagent:/usr/jrebel/home/jrebel.jar」のようにjrebel.jarのパスを指定します。また、IntelliJ IDEAから使う場合はJRebelプラグインをインストールしてSettingsからJRebelのインストール先のパス設定などを行います。

*1:Mac OS Xの場合は「File>Settings」ではなく「IntelliJ IDEA>Settings」

*2:Mac OS Xの場合は「File>Settings」ではなく「IntelliJ IDEA>Settings」