Your SlideShare is downloading. ×
[Phpカンファレンス関西2014 lt]動けばいいじゃない
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

[Phpカンファレンス関西2014 lt]動けばいいじゃない

1,059

Published on

0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
1,059
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
1
Comments
0
Likes
2
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 動けばいいじゃない! PHPカンファレンス関西 2014 ウェブニウム株式会社 取締役CTO 田中康一 a.k.a MugeSo
  • 2. 自己紹介 • 職業: ウェブニウム株式会社 取締役 CTO • 名前: 田中 康一 • Twitter: @mugeso • 誰: 
 PHPカンファレンス2013 実行委員長
 「やはり、お前らのMVCは間違っている」の人
  • 3. 今日は割と • • 初心者向け
  • 4. まず、
  • 5. ソフトウェアの正義 について 言いたい事がある。
  • 6. すなわち!
  • 7. 動く事が正義
  • 8. さて、
  • 9. テストコードのあるコード • • VS テストコードの無いコード • •
  • 10. あなたはどちらで 書きますか。
  • 11. 「ある方!」
  • 12. と、答えたあなた!
  • 13. そう、あなた!
  • 14. 正解です!
  • 15. ……一般的にはね。
  • 16. 実は、 さっきの質問には
 背景が抜け落ちてる。 シチュエーション
  • 17. 例①
  • 18. お遊びのハッカソン
  • 19. 限られた時間で、 動くプロダクト を作る事が目的
  • 20. テストコードが 有っても
  • 21. 動かなければ 意味が無い!
  • 22. テストコード < 動く事
  • 23. 類例だと
  • 24. プロトタイピングが ある。
  • 25. 例②
  • 26. 保守しなくていい コード
  • 27. つまり
  • 28. 使い捨てのコード
  • 29. 保守しないなら
  • 30. 当然、
  • 31. コードが動くかぎり テストコードを書く
 コストが無駄
  • 32. Gistにあげる程度の
  • 33. 屁みたいなコードに
  • 34. テストコードは 不釣り合い
  • 35. テストコードなんて
  • 36. 窓から投げ捨てろ!
  • 37. テストコード・͡ ヾ(*́ー`) ポイ
  • 38. あっ。。。
  • 39. 睨まないで!
  • 40. 「今更そんな事」
  • 41. とか
  • 42. 「それでもテストは 必要だ!!!」
  • 43. とか
  • 44. 言いたそうに、 睨まないで!
  • 45. 話の途中で
 邪険にするなんて
  • 46. CakePHP以外に
 触れないで
  • 47. 「PHPを窓から投げ捨てる」 とか
 言う様なものですよ!
  • 48. 閑話休題
  • 49. コードが動作する と言う条件下で
  • 50. テストが いらない例を 出した訳ですが。。。
  • 51. コードの動作は 誰が保証するんだ?
  • 52. と、思われた方
  • 53. 鋭い!
  • 54. コードが動く保証が • • 必要
  • 55. つまり
  • 56. テストが必要。
  • 57. だからって、
 テストコードが • • • 必要なのでは無い • • • •
  • 58. 例えば
  • 59. /** * 足し算 * @param int $a 足す数 * @param int $b 足される数 */ function sum($a, $b) { return $a + $b; }
  • 60. 見りゃ分かる。
  • 61.
  • 62. 目視による脳内テストで • • • • • 動作を保証できる
  • 63. つまり、 先にあげた背景なら
  • 64. テストコードは • • • いらない。
  • 65. あと
  • 66. この規模なら
  • 67. 実際に動かして
 動作確認してもいい。
  • 68.
  • 69. 手動テスト • • •
  • 70. ただし、
  • 71. テストコードを書く時間 > 手動のテスト時間のトータル
  • 72. の場合
  • 73. に限ります。
  • 74. もちろん、
  • 75. 逆説的に
  • 76. 見て把握できない場合
  • 77. かつ
  • 78. テストコードを書く時間 < 手動のテスト時間のトータル
  • 79. ならば
  • 80. テストコードが必要
  • 81. ユニットテストでも
  • 82. 振る舞いテストでも
  • 83. なんでもいい。
  • 84. に角
  • 85. テストコードが必要。
  • 86. お前らは
  • 87. 超人じゃない。
  • 88. だから
  • 89. 見て把握できるのには 限度がある。
  • 90. 超高速で手動テスト できない。
  • 91. なので
  • 92. 多くのケースで テストコードが必要。
  • 93. 今一度、言いたい。
  • 94. 動く事が正義
  • 95. 動く事を 己で保証できぬなら
  • 96. テストコード書け。
  • 97. 以上。
  • 98. 以下、おまけ
  • 99. ここで朗報です。
  • 100. ちょっと複雑な コードでも
  • 101. 工夫一つで目視で • • • 動作を保証できる ようになります
  • 102. /** * 価格計算 * @param int $a 価格 * @param int $b 個数 * @return int */ function calc($a, $b) { return intval($a * $b * ( $b > 10 ? 0.9 : 1)); }
  • 103. $b > 10ってなんだ。
  • 104. 0.9ってなんだ?
  • 105. 意味分からん。
  • 106. /** * 価格計算 * @param int $price 価格 * @param int $quantity 個数 * @return int */ function calcAmount($price, $quantity) { $amount = $price * $quantity; if ($quantity < self::PRICE_DOWN_THRESHOLD) { return $amount; } ! return intval($amount * self::PRICE_DOWN_RATE); }
  • 107. 読める!
  • 108. 動くのが分かる!
  • 109. これが、 可読詩片 リーダブルコード
  • 110. ところで
  • 111. もし、あなたが
  • 112. プログラミング初心者 or その指導者なら
  • 113. TDDは有用です • •
  • 114. どんな背景でも シチュエーション
  • 115. まず、テストを書いて 実装を始めるといいよ。
  • 116. 学習には最適。

×