sbtを使ったことがある人なら、たいていSettingKeyやTaskKeyという言葉を聞いたことがあるはずです。もし聞いたことがなくても、1度でもsbtを使ったことがあるなら、すでに知らないうちにそれらに触れているはずでしょう。 それらSettingKeyやTaskKeyを含んだsbtの内部DSLについては、その独特さゆえに、好みが分かれることが多いと思います。 そもそも なぜSettingKeyやTaskKeyという概念が必要なのか? それらは一体何なのか? ということに関して、少し別の視点から考察や解説をしてみることによって、sbt自体の理解の手助けとなることを目的として、このエントリを書いてみます。 なんだか、少しばかり堅苦しい始まり(?)にしてみましたが、つまり 「sbtのKeyは有向非巡回グラフにおけるNodeであり、build.sbtは有向非巡回グラフを組み立てるDSLである