言い訳
InfoQ: Scala Days 2012 リポート
ここを読んで思うところがあったので。
意見の要約
初学者にとって sbt は「どう便利なのか分かりにくいツール」だと思う。
メリットの見えないツールを使い始める、というのは心理的障壁が大きくてイヤだよねー、ということで、scalasの「ライブラリを自動で取ってきてくれる」という機能を餌にして推して、便利なところから使ってもらったら良いんじゃないかなーと思います。
やったこと
ScalaJP wiki の Scala 開発環境構築手順 (IntelliJ IDEA/Eclipse + Scala Plugin + sbt) の手順通りにscalaを導入した環境で、無理やり scalas が使えるようにした。
Mac OSX Lion, Ubuntu 12.04(32bit)で試してみたよ。
scalasって何?
初心者による初心者のためのScalaでhello world
ココの説明がイイ!!
使いたいライブラリをMaven Repositoryで調べてきて、コメントの中に書くとそれだけで導入してくれる優れもの。
ただし、「conscriptでsbtを導入したら自動で付いてくる」ということで、既にhomebrew等で導入している環境では二重にインストールされてしまいます
手順
と言っても、Scripts, REPL, and Dependencies — sbt Documentation コレのとおりに1行スクリプトを書くだけなんだけどね…
加えて言うと、typesafe-stackで導入されるsbt-launch.jarとは別に、自分でsbt-launch.jarを用意したほうが簡単そうです。
- 自分で勝手に変更できる、パスの通ったディレクトリを(まだ作ってない人は)作る(~/bin に設定している人が多い)
- Setup のページから、最新版の sbt-launch.jar をダウンロードして、↑で作ったディレクトリに入れる。
- ↑ディレクトリに"scalas" という名前のファイルを作る。中身はこんな感じにしてみた
java -Xmx512M -Dsbt.main.class=sbt.ScriptMain -Dsbt.boot.directory=$HOME/.sbt/boot -jar `dirname $0`/sbt-launch.jar "$@"
Mac の場合は -Dfile.encoding=UTF-8 を追加したほうが良いでしょうね(文字化け対策)
メモリが足りなくなった場合は、sbtのドキュメントに書いてある設定を追加したほうが良いでしょう。
- "chmod u+x scalas" で実行権限を付与する
これで一応導入できます。
実行してみましょう!
$ vim example.scala
#!/usr/bin/env scalas !# /*** scalaVersion := "2.9.2" libraryDependencies ++= Seq( "org.twitter4j" % "twitter4j-core" % "2.2.5" ) */ import twitter4j._ import scala.collection.JavaConversions._ val twitter = new TwitterFactory().getInstance val query = new Query() query.setQuery("#scalajp") val result = twitter.search(query) println("%d 件のツイートがあります" format result.getTweets.size) for(tweet <- result.getTweets) { println("-" * 20) println(tweet.getFromUser) println(tweet.getText) }
$ chmod u+x example.scala $ ./example.scala