英語チュートリアルを作成中。チュートリアルを作成していると、「あぁ、こういう機能も欲しいね」と思いつきます。自然言語を書くのも貴重なインスピレーションの元ですね。開発前のソフトウェアが形になっていないときの仕様書なんて、いくら書いても地に足が着かない状態だので効率は良くないとは思いますけどね。
今のところ考えているBDDの手順は以下の通り。
- 仕様を自然言語で書いてみる
- 仕様をpyspecを使って表現してみる
- pyspecを実行してみる→失敗
- pyspecが通るようにコードを書いてみる→パス
- 製品コードをリファクタリング→テスト
- 仕様コードをリファクタリング→テスト
基本はTDD。フィードバック回数、頻度が高ければ高いほどいいけど、そこはもうTDDでやり尽くされている領域なので、あえてそこを離れる必要はないしね。TDDとの違いで言えば、コンテキストと仕様を明確に分ける、ということ。最後に、仕様コードもリファクタリングしてから終わるということ。本当はHTMLでドキュメントが生成できれば、最後の段階でマニュアルもできるので、もうちょっと良くなると思うけど。