まとめ

始める sbt 14/14 ページ

このページで、このガイドを総括してみよう。

sbt を使うのに、理解しなければいけない概念は少しの数しかない。 確かに、これらには多少の学習曲線があるが、 sbt にはこれらの概念以外のことは特にないとも考えることもできる。 sbt は、強力なコア・コンセプトだけを用いて全てを実現している。

もし、この「始める sbt」シリーズをここまで読破したなら、何を知るべきかはもう分かっていると思う。

sbt: コア・コンセプト

  • Scala の基本。Scala の構文に慣れていると役立つのは言うまでもない。 Scala の設計者自身による Scalaスケーラブルプログラミング原著)は、素晴らしい入門書だ。
  • .sbt ビルド定義
    • ビルド定義は、Setting オブジェクトが入った一つの大きなリストであり、  Setting は、sbt がタスクを実行するのに使うキー・値のペアを変換する。
    • Setting を作成するには、キーに定義されているメソッドを呼び出す (特に、:=<<= メソッドが大切だ)。
    • 可変の内部状態は無く、変換があるだけだ。例えば、Setting は、 sbt のキー・値のペアのコレクションを新たなコレクションへと変換され、上書き更新はされない。
    • 全てのセッティングは、キーにより決定された特定の型の値を持つ。
    • タスクは、特殊なセッティングで、タスクを実行するたびに、 キーの値を生成する計算が再実行される。 非タスクのセッティングは、ビルド定義の読み込み時に値が一度だけ計算される。
  • スコープ

    • それぞれのキーは、異なるスコープごとに別の値を取ることができる。
    • スコープ付けには、コンフィギュレーション、プロジェクト、タスクの三つの軸を用いることができる。
    • スコープ付けにより、プロジェクトごと、タスクごと、またはコンフィギュレーションごとに、異なる振る舞いを持たせることができる。
    • コンフィギュレーションは、メインのもの(Compile)や、テスト用のもの(Test)のようなビルドの種類だ。
    • プロジェクト軸は、「ビルド全体」を指すスコープにも設定することができる。
    • スコープは、より一般的なスコープにフォールバックし、これを委譲(delegate)という。
  • .sbt.scala ビルド定義

    • build.sbt にセッティングのほとんどを置き、 .scala ビルドファイルは、複数のサブプロジェクトの定義と 共通の値、オブジェクト、メソッドなどをくくり出すのに使う。
    • ビルド定義そのものも、れっきとした sbt プロジェクトで、project ディレクトリを基とする。
  • プラグインはビルド定義の拡張だ。
    • プラグインは、addSbtPlugin メソッドを用いて project/build.sbt に追加する。 (プロジェクトのベースディレクトリにある build.sbt ではないことに注意)

以上のうち、一つでも分からないことがあれば、メーリングリスト(英語)で質問してみるか、 もう一度再読してみるか、 sbt のインタラクティブモードで実験してみよう。

じゃ、頑張って!

上級者への注意

sbt はオープンソースであるため、いつでもソースを見れることも忘れずに!