SlideShare a Scribd company logo
Throw away
your unit-test code
ユニットテストを窓から投げ捨てろ
13年6月2日日曜日
Hello! :D
13年6月2日日曜日
Who am I?
13年6月2日日曜日
Name:
Shin Semiya
瀬宮 新
@shin_semiya
Job:Home Guards
 Hyper Legacy Code Creator
13年6月2日日曜日
Code in private?
家でコード書いてますか?
13年6月2日日曜日
So,
13年6月2日日曜日
Code test ,too?
家でテストコード書いてますか?
13年6月2日日曜日
I coded a App
as a night project.
この前家でコード書いてたんですよ
13年6月2日日曜日
The App is
a BookShelf one.
本棚管理アプリなんですけど
13年6月2日日曜日
I wanna publish it.
アプリを一般公開したい
13年6月2日日曜日
enhance Auth func
そのためにユーザ認証機能を追加したい
13年6月2日日曜日
But code is F ing
Test code is worse.
そしたらコードが汚かった。
テストなんか言わずもがな。
13年6月2日日曜日
という話をしたい
13年6月2日日曜日
ここからは日本語で
失礼します
sorry, Japanese Only
13年6月2日日曜日
コードが汚い
13年6月2日日曜日
リファクタしよう
13年6月2日日曜日
テストも変更
13年6月2日日曜日
テストもひどい
13年6月2日日曜日
質の低いテストが大量
13年6月2日日曜日
メッシュもバラバラ
13年6月2日日曜日
正直激おこ
13年6月2日日曜日
13年6月2日日曜日
ということで
13年6月2日日曜日
総入替
13年6月2日日曜日
コードもテストも
13年6月2日日曜日
あのときとは違う
13年6月2日日曜日
もっとうまくやれる
13年6月2日日曜日
あれだけ書いた
テストが無駄に
13年6月2日日曜日
MOTTAINAI
13年6月2日日曜日
13年6月2日日曜日
ところで諸君
13年6月2日日曜日
ユニットテストコード
は滅ぼすべきだ
13年6月2日日曜日
!?
13年6月2日日曜日
13年6月2日日曜日
そうじゃないんだ
13年6月2日日曜日
@t_wada も
言っている
13年6月2日日曜日
実装が明白な場合は
テストコードは
書かなくてもよい
13年6月2日日曜日
つまり
実装が明白=簡単な実装
13年6月2日日曜日
簡単な実装=テスト書かない
複雑な実装=テスト書く
13年6月2日日曜日
・・・
13年6月2日日曜日
お前が思うのなら
そうなんだろ
お前の中では(ry
13年6月2日日曜日
そうじゃない
13年6月2日日曜日
そもそも
13年6月2日日曜日
簡単な実装=テスト書かない
複雑な実装=テスト書く
13年6月2日日曜日
この話の問題点
13年6月2日日曜日
境界があいまい
13年6月2日日曜日
簡単と複雑の境界は?
13年6月2日日曜日
さらに
13年6月2日日曜日
悪魔のささやき
13年6月2日日曜日
「締め切りが近い」
「最近徹夜続きで」
13年6月2日日曜日
「別にこのコード、
  テスト書かなくても、
いいよね?」
「だって簡単な実装だし」
13年6月2日日曜日
そして、炎上へ
13年6月2日日曜日
13年6月2日日曜日
テストの目的って何か
13年6月2日日曜日
不安をなくすこと
13年6月2日日曜日
(開発者目線)
13年6月2日日曜日
ではテストを
書かなくても
不安を感じない
実装とは?
13年6月2日日曜日
こんなの
13年6月2日日曜日
# 円の面積を計算する
def 円の半径を計算(半径)
return 半径 * 半径 / 2
end
13年6月2日日曜日
あるいはこんなの
13年6月2日日曜日
# 宅配便の荷物の高さを計算する
def 荷物の高さを計算する
return 箱の高さ
end
13年6月2日日曜日
このレベルまでは大丈夫
# 宅配便の荷物の3辺の合計を計算する
def 荷物の辺の合計を計算する
return 高さ + 幅 + 奥行
end
13年6月2日日曜日
ここからは必要
def 荷物のサイズを判定する
return サイズ表と比較(3辺の合計)
end
13年6月2日日曜日
13年6月2日日曜日
ユーザのやりたいこと
 ・宅配便のサイズが知りたい
 ・料金が知りたい
 ・料金を払いたい
・
・
・
13年6月2日日曜日
テストは
ミニユーザシナリオ
のレベルで行う
13年6月2日日曜日
ユニットテストコード
は書かない
13年6月2日日曜日
そのためにメソッドは
超シンプルに
13年6月2日日曜日
テストを書く量が減る
13年6月2日日曜日
開発早くなる
13年6月2日日曜日
ウマー
13年6月2日日曜日
13年6月2日日曜日
ミニユーザシナリオの
なにがおいしい?
13年6月2日日曜日
説明タイム
13年6月2日日曜日
ユーザの言葉で
ミニユーザシナリオ
13年6月2日日曜日
その単位で
ミニユーザ
シナリオテスト
13年6月2日日曜日
ミニユーザ
シナリオテスト
なにがおいしい?
13年6月2日日曜日
コードの構造と
ドメインの構造の
差異が小さい
13年6月2日日曜日
ミニユーザシナリオ
 =ユーザのやること
 =コードの構造
 =テストシナリオ
13年6月2日日曜日
機能の変更
=
ミニユーザシナリオの
変更
13年6月2日日曜日
ミニユーザシナリオに
あわせて変更される
コードが明らか
テストも明らか
13年6月2日日曜日
変更負荷の軽減
13年6月2日日曜日
テスト量も低下する
13年6月2日日曜日
スローテストの回避
13年6月2日日曜日
13年6月2日日曜日
なにより
13年6月2日日曜日
変更の
コスト
不安
もなくなる
13年6月2日日曜日
スピードが低下しない
13年6月2日日曜日
アイディアの実装
開発を妨げない
13年6月2日日曜日
開発=楽しい
13年6月2日日曜日
楽しい開発で
充実した
ハッカーライフを
13年6月2日日曜日

More Related Content

More from Shin Semiya

小説ブラウザ作ってみた
小説ブラウザ作ってみた小説ブラウザ作ってみた
小説ブラウザ作ってみた
Shin Semiya
 
Grave of my_app
Grave of my_appGrave of my_app
Grave of my_app
Shin Semiya
 
ユーザーの時間軸を含めたプロダクトデザイン
ユーザーの時間軸を含めたプロダクトデザインユーザーの時間軸を含めたプロダクトデザイン
ユーザーの時間軸を含めたプロダクトデザイン
Shin Semiya
 
データ分析しながらゲームの施策打ってみた
データ分析しながらゲームの施策打ってみたデータ分析しながらゲームの施策打ってみた
データ分析しながらゲームの施策打ってみた
Shin Semiya
 
心理学的に見る体験によるユーザーフェーズの変化
心理学的に見る体験によるユーザーフェーズの変化心理学的に見る体験によるユーザーフェーズの変化
心理学的に見る体験によるユーザーフェーズの変化
Shin Semiya
 
サービスを使うユーザーを モデリングしてみた(同人漫画家編)
サービスを使うユーザーを モデリングしてみた(同人漫画家編)サービスを使うユーザーを モデリングしてみた(同人漫画家編)
サービスを使うユーザーを モデリングしてみた(同人漫画家編)
Shin Semiya
 
僕たちのゲーム開発戦記in プライベート編
僕たちのゲーム開発戦記in プライベート編僕たちのゲーム開発戦記in プライベート編
僕たちのゲーム開発戦記in プライベート編
Shin Semiya
 
開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと
開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと
開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと
Shin Semiya
 
たのしいイベントの作り方
たのしいイベントの作り方たのしいイベントの作り方
たのしいイベントの作り方
Shin Semiya
 
Narrative
NarrativeNarrative
Narrative
Shin Semiya
 
Exercise Backlog 1
Exercise Backlog 1Exercise Backlog 1
Exercise Backlog 1
Shin Semiya
 

More from Shin Semiya (12)

小説ブラウザ作ってみた
小説ブラウザ作ってみた小説ブラウザ作ってみた
小説ブラウザ作ってみた
 
Grave of my_app
Grave of my_appGrave of my_app
Grave of my_app
 
ユーザーの時間軸を含めたプロダクトデザイン
ユーザーの時間軸を含めたプロダクトデザインユーザーの時間軸を含めたプロダクトデザイン
ユーザーの時間軸を含めたプロダクトデザイン
 
データ分析しながらゲームの施策打ってみた
データ分析しながらゲームの施策打ってみたデータ分析しながらゲームの施策打ってみた
データ分析しながらゲームの施策打ってみた
 
心理学的に見る体験によるユーザーフェーズの変化
心理学的に見る体験によるユーザーフェーズの変化心理学的に見る体験によるユーザーフェーズの変化
心理学的に見る体験によるユーザーフェーズの変化
 
サービスを使うユーザーを モデリングしてみた(同人漫画家編)
サービスを使うユーザーを モデリングしてみた(同人漫画家編)サービスを使うユーザーを モデリングしてみた(同人漫画家編)
サービスを使うユーザーを モデリングしてみた(同人漫画家編)
 
僕たちのゲーム開発戦記in プライベート編
僕たちのゲーム開発戦記in プライベート編僕たちのゲーム開発戦記in プライベート編
僕たちのゲーム開発戦記in プライベート編
 
開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと
開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと
開発効率とゲームの面白さをあげるために、私が同人ゲームのチーム開発でがんばった10個くらいのこと
 
たのしいイベントの作り方
たのしいイベントの作り方たのしいイベントの作り方
たのしいイベントの作り方
 
Narrative
NarrativeNarrative
Narrative
 
Backlog 2
Backlog 2Backlog 2
Backlog 2
 
Exercise Backlog 1
Exercise Backlog 1Exercise Backlog 1
Exercise Backlog 1
 

Ruby hiroba20130602