Scala入門記012 sbt new
こんにちは。
北海道にも短い夏がやってきました。
暑いうちに海に行ってバーベキューしたいですね。
さて、「Scalaを書こうかな」と思ってsbtプロジェクトを作るとき、build.sbtを書きますよね。
新しくファイルを追加して基本的な設定をコピペして、いつも使うプラグインを追加してプロジェクトの設定をし、設定が済んだらやっとコードを書き始めたりしているかもしれません。
そんな決まりきったプロジェクトの形をテンプレートとして公開し、テンプレートから新規にプロジェクトを作れるためのgiter8という仕組みがあります。
JavaプログラマにとってはMavenのarchetypeと同様のものだと考えて良いと思います。
このgiter8の使い方を前から書こうと思っていたのですが、これがsbt0.13.13に公式に取り込まれてとても簡単に利用できるようになっていました。
今日はこの"sbt new"の使い方をまとめたいと思います。
Scala入門記の目次はこちらです。
sbt newについて
公式のドキュメントは http://www.scala-sbt.org/0.13/docs/ja/Hello.html です。
ドキュメントにある通り、sbt newはsbtの0.13.13以降が必要です。
新しく何かをインストール必要はなく、最新のsbtを使うだけで良くなったのはとっても楽ですね。
sbt newをまずは使う
何をするにもまずは使うことが大切です。
さっそくsbt newを使ってみます。
sbt newを呼ぶ
sbt newの使い方は簡単です。
コマンドラインで適当なディレクトリに移動し、
sbt new sbt/scala-seed.g8
と入力すると
name [My Something Project]:
プロジェクト名を聞かれます。
ここではこれに対して
name [My Something Project]: sbt-new-project
と入力してEnterを押すと以下のようなプロジェクトができました。
$ find sbt-new-project -type f sbt-new-project/build.sbt sbt-new-project/project/build.properties sbt-new-project/project/Dependencies.scala sbt-new-project/src/main/scala/example/Hello.scala sbt-new-project/src/test/scala/example/HelloSpec.scala
上の3が設定ファイル、Hello.scalaがサンプルの実装、HelloSpec.scalaがサンプルのユニットテストですね。
project/Dependencies.scalaに依存関係が書いてありますね。
もしかしたら、こうやって分けて書くのが推奨されているのかもしれません。
できたプロジェクトを実行してみる
実行は
cd sbt-new-project
でプロジェクトのディレクトリに入って
sbt run
ですね。
ログがそこそこ出て、helloと表示されました。
$ sbt run (省略) hello
あとは好きなようにプログラムを書けばokですね。
テンプレートについて
今回使った sbt/scala-seed.g8 のテンプレートはもっともシンプルなものなのでこれだと自分で作っても対して変わらないです。
実用的なテンプレートはどうしたら良いでしょう。
PlayFrameworkの場合
ScalaのフレームワークであるPlayFrameworkも以前はTypesafe Activatorというツールでプロジェクトを生成していたところが、今ではsbt newを使うようになっています。
※2.5系からみたいです。
詳しくはこちら。
https://www.playframework.com/documentation/2.6.x/NewApplication
他のテンプレートは?
まずは、使いたいプロダクトがテンプレーとを提供しているか確認ですね。
でも、githubでプロジェクトを探してみるのが早い気がしました。
https://github.com/search?l=Scala&q=.g8&type=Repositories
PlayFramworkのテンプレートもすぐ見つかります。
https://github.com/search?utf8=%E2%9C%93&q=.g8+playframework&type=Repositories
まとめ
sbt 0.13.13以降ではgiter8が取り込まれて、sbt newでテンプレートからプロジェクトが簡単に作れます。
テンプレートは探せば用意されているかもしれませんが、ない場合は自分で作ったりもできます。
ということで次回はsbt newのテンプレートについて記事にしようと思います。
Scala入門記の目次はこちらです。