テスト駆動開発
実装を行うより先に、テストを作成
テストをパスすることを目標に実装を行なう
求める機能が明確化され、シンプルな設計が可能になる