[from now] 2013/05/07 18:18:44

diff --git a/build.gradle b/build.gradle
index 75fc5cd..eccd1c3 100644
--- a/build.gradle
+++ b/build.gradle
@@ -8,10 +8,18 @@ repositories {

 dependencies {
     groovy 'org.codehaus.groovy:groovy-all:2.1.3'
+
+    // Groovyのバージョンにより使用するアーティファクトが異なる
+    // 参考: https://code.google.com/p/spock/wiki/SpockVersionsAndDependencies
     testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
+
+    // モック機能を使う場合(正確にはクラスをモックする場合)は
+    // cglib-nodep-2.2以上、objenesis-1.2以上が必要
+    testCompile 'cglib:cglib-nodep:2.2'
+    testCompile 'org.objenesis:objenesis:1.2'
 }

-task makeDirs(description:'make all dirs for project setup') << {
+task makeDirs(description: 'make all dirs for project setup') << {
     def sources = [sourceSets.main, sourceSets.test]
     sources*.allSource*.srcDirs.flatten().each { File srcDir ->
         println "making $srcDir"
@@ -19,6 +27,6 @@ task makeDirs(description:'make all dirs for project setup') << {
     }
 }

-task wrap(type:Wrapper, description:"create a gradlew") {
+task wrap(type: Wrapper, description: "create a gradlew") {
     gradleVersion = '1.5'
 }
[from now] 2013/05/07 18:19:07

diff --git a/docs/01_introduction.md b/docs/01_introduction.md
new file mode 100644
index 0000000..c282d27
--- /dev/null
+++ b/docs/01_introduction.md
@@ -0,0 +1,48 @@
+
+おしながき
+----------
+
+* Spockとは
+* Spockの基礎
+* データ駆動テスト
+* モックサポート
+* 拡張機能
+
+Spockとは
+---------
+
+* JUnit互換で動作するJava/Groovy対応のテストツール
+    * IDE、ビルドツール、CIツール
+* 効率的なパラメライズテスト
+    * データ駆動テストで詳しく説明
+* パワフルなモックサポート
+    * モックサポートで詳しく説明
+* BDDツール
+    * 美しく表現力の高いDSL
+    * 非常に可読性が高い
+
+使用プロジェクト
+----------------
+
+* Asgard
+* Geb
+* GPars
+* Gradle
+* Grails
+* Grails Plugin Collective
+* Grasp
+* Griffon
+* Spock (eating our own dog food)
+* Apache Tapestry
+
+参考: https://code.google.com/p/spock/wiki/WhoIsUsingSpock
+
+リソース
+--------
+
+* GitHub - https://github.com/spockframework/spock
+* リファレンス - https://spock-framework.readthedocs.org/ja/latest/
+* Wiki(旧ドキュメント) - https://code.google.com/p/spock/w/list
+
+
+
diff --git a/docs/02_introduction.md b/docs/02_introduction.md
new file mode 100644
index 0000000..5322a8d
--- /dev/null
+++ b/docs/02_introduction.md
@@ -0,0 +1,194 @@
+
+インストール
+------------
+
+build.gradleの例
+
+```groovy
+// Groovyのバージョンによって使用するアーティファクトが異なる
+// 参考: https://code.google.com/p/spock/wiki/SpockVersionsAndDependencies
+testCompile 'org.spockframework:spock-core:0.7-groovy-2.0'
+
+// モック機能を使う場合(正確にはクラスをモックする場合)は
+// cglib-nodep-2.2以上、objenesis-1.2以上が必要
+testCompile 'cglib:cglib-nodep:2.2'
+testCompile 'org.objenesis:objenesis:1.2'
+```
+
+スペッククラス
+--------------
+
+スペッククラスはJUnitのテストクラスに相当
+
+```groovy
+class HelloSpec extends Specification {
+    ...
+}
+```
+
+* 慣例的にクラス名のサフィックスを`Spec`にする
+* `spock.lang.Specification`を継承する
+
+
+フィーチャメソッド
+------------------
+
+フィーチャメソッドはJUnitのテストメソッドに相当
+
+```groovy
+class HelloSpec extends Specification {
+
+    // 慣例的に文字列を使用
+    def "これがフィーチャメソッド"() { ... }
+
+}
+```
+
+フェーズとブロック
+------------------
+
+フィーチャメソッドの中身はブロックで構成される
+ブロックはフェーズに合わせて使用する
+
+### フェーズ
+
+フィーチャメソッドは4つのフェーズから構成される
+
+```groovy
+def "何かのフィーチャメソッド"() {
+    // Setup(省略可能)
+    ...
+    // Stimulus
+    ...
+    // Response
+    ...
+    // Cleanup(省略可能)
+    ...
+}
+```
+
+### ブロック
+
+フェーズに合わせてブロックが定義されている
+
+| ブロック    | フェーズ          |
+| ----------- | ----------------- |
+| setup/given | Setup             |
+| when        | Stimulus          |
+| then        | Response          |
+| expect      | Stimulus+Response |
+| cleanup     | Cleanup           |
+| and         | -                 |
+| where       | -                 |
+
+`where`はデータ駆動テストで説明する
+
+基本的な使い方
+
+```groovy
+def "when-thenパターン"() {
+    setup: ...    // Setup
+    when: ...     // Stimulus
+    then: ...     // Response
+    cleanup: ...  // Cleanup
+}
+
+def "expectパターン"() {
+    setup: ...    // Setup
+    expect: ...   // Stimulus+Response
+    cleanup: ...  // Cleanup
+}
+
+def "setup/cleanupは省略できる"() {
+    when: ...     // Stimulus
+    then: ...     // Response
+}
+
+def "setup/cleanupは省略できる"() {
+    expect: ...   // Stimulus+Response
+}
+```
+
+特殊な使い方
+
+```groovy
+// StimulusとResponseのセットは繰り返して使用できる
+def "StimulusとResponseの繰り返し"() {
+    when: ...     // Stimulus
+    then: ...     // Response
+    expect: ...   // Stimulus+Response
+    when: ...     // Stimulus
+    then: ...     // Response
+    when: ...     // Stimulus
+    then: ...     // Response
+    expect: ...   // Stimulus+Response
+}
+
+// 特殊パターンでthenを繰り返して使用できる
+// 詳細はモックサポートで説明
+def "thenの繰り返し"() {
+    when: ...     // Stimulus
+    then: ...     // Response
+    then: ...     // Response
+    then: ...     // Response
+}
+
+// ただしexpectを繰り返すことはできない
+// 以下はNG
+def "expectの繰り返しはNG"() {
+    expect: ...   // Stimulus+Response
+    expect: ...   // Stimulus+Response
+}
+```
+
+### ブロックとドキュメント
+
+各ブロックにドキュメントを設定できる
+
+```groovy
+setup: "ユーザテーブルにレコードが1件"
+...
+when: "ユーザの一覧を取得"
+...
+then: "1件取得できている"
+...
+```
+
+#### and
+
+`and:`を使用すると直前のブロックを連続して使用できる
+
+```groovy
+setup: ...
+and: ...   // ここはsetupブロック
+and: ...   // ここはsetupブロック
+
+when: ...
+and: ...   // ここはwhenブロック
+and: ...   // ここはwhenブロック
+
+then: ...
+and: ...   // ここはandブロック
+and: ...   // ここはandブロック
+
+expect: ...
+and: ...   // ここはexpectブロック
+and: ...   // ここはexpectブロック
+```
+
+`and:`の目的はドキュメンテーション
+
+```groovy
+setup: "データベースの接続を開く"
+...
+and: "ユーザテーブルに須藤くんを追加"
+...
+when: "ユーザの一覧を取得"
+...
+then: "取得件数が1件"
+...
+and: "取得したユーザの名前が須藤くん"
+...
+```
+
+