戦略 Scala 日記

素人プログラマの思考のセンス

ライブラリや自分のコードの動きを確認したいときに"sbt console"が便利

自分のプロジェクトで使っているライブラリや、書いているコードをちょっとだけテストしたい場合などに、sbt consoleを利用する。 本稿では、sbt.version = 0.13.5を想定している。

今回は、Scalaの非同期HTTP通信用ライブラリのDispatchを例に、 このライブラリをsbt consoleから利用する方法をまとめた。

まずは、build.sbtの依存ライブラリにDispatchを追加しておく。

// build.sbt

name := "sbt-sample"

version := "1.0"

scalaVersion := "2.11.6"

libraryDependencies +=
  "net.databinder.dispatch" %% "dispatch-core" % "0.11.2"

build.sbtを用意したら、プロジェクトのディレクトリに移動して次のコマンドを実行。

$ sbt console

すると、ライブラリの依存解決と、src以下のコンパイルが始まり、終わるとScalaREPL(対話式実行環境)が立ち上がる。 これは通常のScalaREPL(対話式シェル)と同じように見えるが、build.sbtに記述しているライブラリ及び、プロジェクト内のパッケージを利用できる。

まずは、Dispatchのパッケージをインポートしてみる。

scala> import dispatch._, Defaults._
import dispatch._
import Defaults._

このように、インポートが実行される。 すると次のように、REPLでDispatchを利用したプログラムが実行できる。

scala> val svc = url("http://api.hostip.info/country.php")
svc: dispatch.Req = Req(<function1>,Properties(NoBody))

scala> val country = Http(svc OK as.String)
country: dispatch.Future[String] = scala.concurrent.impl.Promise$DefaultPromise@33304f78

scala> country.foreach(println)
XX

同じように、自身で定義したObjectや、Classも実行できるので、簡易な動作確認には役に立つ機能である。