edX で受けた プログラミングパラダイム の講義のなかで,
" これからは, Scala と Erlang だ!C++ と Java はレガシーになりつつある!"
とのことだったので, ちょっと scala をいじってみようと思います.
Environment
- Linux Mint 16 64bit
- Scala 2.9
Installing Scalas
Installing the JDK
Scala は JVM 上で動作する. まずは JDK をインストール.
sudo apt-get install openjdk-7-jdk
Installing sbt
Scala のビルドツールである sbt を入れる. 以下から Download して, 解凍. なかにある bin ディレクトリにパスを通す.
日本語のドキュメントがあった.
Installing Scala
sudo apt-get install scala
以下から最新版をダウンロードしてもよい.
ダウンロードしたら bin ディレクトリにパスを通す.
# Scala
export PATH=$HOME/app/sbt/bin:$PATH
export PATH=$HOME/app/scala/bin:$PATH
Hello Scala
それでは, お決まりの儀式から.
object Hello extends App {
println ("Hello, Scala!")
}
以下で実行.
% scalac Hello.scala
% scala Hello
Hello, Scala!
Installing Emacs
Emacs 自体のインストール方法は省略.
Installing scala-mode
scala-mode と scala-mode2 がある. 2 を入れた.
Installing Ensime
Scala 用の統合開発環境. インストールはは github にしたがえばよい.
Ensime Server をダウンロードしてロードパスの通った場所におく.
(ハマリメモ. github から落としてきたやつではなくて, Dropbox から落とした Reliese 番でないとダメなんだね. めちゃくちゃハマった)
.ensime を作成
ensime を利用するには, .ensime という設定ファイルが必要.
- ensime の設定方法 - masaaki1001 の日記
- Emacs での Scala 開発には Ensime というプラグインらしい -q 趣味プログラマがまれになんかしたことの記録
- https://github.com/ensime/ensime-sbt-cmd
上記を参考に~/.sbt/plugins/plugins.sbt を作成し, 以下を記入.
resolvers += Resolver.sonatypeRepo ("snapshots")
addSbtPlugin ("org.ensime" % "ensime-sbt" % "0.1.5-SNAPSHOT")
M-x ensime-config-gen というコマンドでも対話的に設定ファイルが作成できるらしい.
Hello.scala を開いたディレクトリで以下を実行.
sbt "ensime generate"
emsime 実行
これで, .ensime が生成される.
Emacs 上で M-x ensime を実行. 先ほど生成した.ensime の場所を教える.
今日はこんなところで. 逐次, 追記予定.
Special Thanks
- Scala 2.10.1 | hirooka.pro
- Emacs でつくる Scala 開発環境 前編 (scala-mode) - tototoshi の日記
- Emacs でつくる Scala 開発環境 後編 (ENSIME) - tototoshi の日記
- Scala + Emacs + ctags - tototoshi の日記
- memo: Emacs での Scala 用の設定を公開してみる
- Emacs での Scala 開発には Ensime というプラグインらしい - 趣味プログラマがまれになんかしたことの記録
- ensime で補完生活 - papamitra
Emacs Scala Youtube Video Tutorials
追記 2014-06-21
sbt-mode というものもある.
機能的には ensime とおなじようなことができるし, ensime ファイルを作成しなくてもいいので導入が楽.
ensime よりよいところは, M-x sbt-send-region で Scala REPL にリージョンを送信することができるところ. これは便利そう.
また, repl を autoload する方法もあるようだ.