[android][scala] Scala で Android アプリを作成する環境を作る

Ubuntu 11.10 リリースということで思い切ってクリーンインストールした結果、Scala + sbt で Android アプリを作る環境も作り直すことになりましたので、その時のメモを公開します。

JDK をインストール

$ sudo apt-get install openjdk-6-jdk

Scala をインストール

$ cd /tmp
$ wget http://www.scala-lang.org/downloads/distrib/files/scala-2.9.1.final.tgz
$ sudo tar -C /opt -zxvf scala-2.9.1.final.tgz
$ cd /opt
$ ln -s scala-2.9.1.final scala
$ echo 'export SCALA_HOME=/opt/scala' >> ~/.zshrc
$ echo 'export PATH=$PATH:$SCALA_HOME/bin' >> ~/.zshrc
$ source ~/.zshrc
$ scala -version
Scala code runner version 2.9.1.final -- Copyright 2002-2011, LAMP/EPFL

Android SDK をインストール

$ cd /tmp
$ wget http://dl.google.com/android/android-sdk_r13-linux_x86.tgz
$ sudo tar -C /opt -zxvf android-sdk_r13-linux_x86.tgz
$ echo 'export ANDROID_SDK_HOME="/opt/android-sdk-linux_x86"' >> ~/.zshrc
$ echo 'export PATH="$PATH:$ANDROID_SDK_HOME/tools"' >> ~/.zshrc
$ source ~/.zshrc
$ sudo /opt/android-sdk-linux_x86/tools/android
[Available Packages] 
↓
[Android Repository] のすべてのSDK、[Third party Add-ons] のGoogle API をチェック
↓
[Install Selected]
↓
[All accept] 
↓
[Install] #だいぶ時間かかります
$ sudo mkdir -p /opt/android-sdk-linux_x86/.android/avd
$ sudo chmod 777 /opt/android-sdk-linux_x86/.android/avd
$ android avd
[Virtual devices]
↓
[New]でEmulatorを作成する。作成したEmulatorは[Start]で起動しておく

sbt のインストール

$ cd /usr/local/bin
$ sudo wget http://typesafe.artifactoryonline.com/typesafe/ivy-releases/org.scala-tools.sbt/sbt-launch/0.11.0/sbt-launch.jar
$ sudo vi /usr/local/bin/sbt
java -Xmx512M -jar `dirname $0`/sbt-launch.jar "$@" 
$ sudo chmod 755 /usr/local/bin/sbt
$ sbt about | grep This
[info] This is sbt 0.11.0

android-plugin のインストール

$  curl https://raw.github.com/n8han/conscript/master/setup.sh | sh
$ ~/bin/cs n8han/giter8
$ cd /tmp
$ git clone https://github.com/jberkel/android-plugin.git
$ cd android-plugin
$ sbt publish-local

sample アプリを作る

$ cd /tmp
$ ~/bin/g8 jberkel/android-app -b sbt-0_11
Template for Android apps in Scala

package [my.android.project]: com.android.test
name [My Android Project]: Test
main_activity [MainActivity]: #ブランクのままEnter
api_level [10]:                    #EmulatorのAPIレベルに合わせる
$ cd test
$ sbt
> android:package-debug
> android:start-emulator #Emulator 内で Hello world と表示するだけのアプリが立ち上がれば成功

Android アプリを Scala で作っててうれしい点というのはまず何といっても Scala が使える点でありEclipse を使わなくてもいい点です。
ただ、Android 端末はなんといってもモバイル端末でメモリもCPUもそれほど潤沢ではないので速度的な問題で関数型言語の恩恵はなかなか受けられません。Better Java として Scala を使っている感じです。

とはいえ数値化されにくい「書いていて気持ちいい」という点でJavaを使うより生産性が高いように思います。この辺は僕がrubyプログラマだからというのもあるでしょうけど。

あと emacs の ensime なんかが意外に強力ですし一度やってみられてはいかがでしょうか?