「動く仕様」は可能か? - Scala & specs

  • 投稿日:
  • 更新日:2015/03/06
  • by
  • カテゴリ:

Scalaを使ったフレームワークにspecsというのがあります。 Behaviour-Driven Design frameworkといっています。

乱暴な言い方をすれば、Test driven developmentと、Domain driven designを融合したもの、という感じです。 Test drivenといえばJUnitなどですっかりおなじみですが、specsはScalaの特徴を生かして、仕様がより自然に(ノイズが少なく)書けることが特徴でしょう。

Domain driven designは、特定の技術を表すものではなく、設計の考え方です。複雑なソフトウェアの設計をドメイン知識をうまく使いながら行おうといういうものと思われます。 比較的新しい考え方のようで、OOPSLA 2007でBoFが開かれたそうです。

そんな感じなので、specsにはドメイン知識としての仕様を記述して、それをチェックする機能が備わっています。

specsはScalaをベース言語としているので、当然普通にJavaとして動作するのですが、DSLのコンテキストで考えたときに、テストだけではなく純粋に動作する仕様としてどのように考えられているのか、という点についてはまだよくわかっていません。 もともと仕様をデザインするためのもの(design framework)なので、そのままの形で実稼動するソフトウェアにするのは本来の目的ではないのかもしれません。

でも、これをJUnitのように純粋なテストのためのフレームワークと考えるのもまた違うような気がします。 Scalaの言語機能を考えると、もっとポテンシャルがあるように思います。

というわけで、まだまだ勉強中なのですが、specsのソースコードはScalaの勉強にはいいですね。

こちらもよく読まれています