PHPで FizzBuzz問題をやってみよう #ゆるWeb札幌
by
Kihara, Takuya
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
PHPͰ FizzBuzzΛ ͬͯΈΑ͏ 2019/03/30 tacck ゆるWeb勉強会@札幌 #4 #ゆるWeb札幌
Slide 2
Slide 2 text
୭ UBDDL ໊લ ࠷ۙݹͷ+BWBͷ͓कΓ ͓ࣄ εϓϨουɾΠʔάϧ ͖ͳϑΟΪϡΞεέʔτͷٕ ΏΔ8FCࡳຈ
Slide 3
Slide 3 text
ࠓ͓͢͠Δ͜ͱ • FizzBuzz • ͬͯΈΑ͏ • റΓϓϨΠ ΏΔ8FCࡳຈ
Slide 4
Slide 4 text
FizzBuzz ΏΔ8FCࡳຈ
Slide 5
Slide 5 text
FizzBuzz • ϓϩάϥϚʔͷᅂΈ ΏΔ8FCࡳຈ
Slide 6
Slide 6 text
FizzBuzz • 3ͷഒͰ “Fizz” ͱग़ྗ • 5ͷഒͰ “Buzz” ͱग़ྗ • 3ͷഒ ͔ͭ 5ͷഒͰ “FizzBuzz” ͱग़ྗ (ͭ·Γ15ͷഒ) • ͦΕҎ֎ࣗମΛจࣈͱͯ͠ग़ྗ ΏΔ8FCࡳຈ
Slide 7
Slide 7 text
FizzBuzz • ࠓճɺ • 1ʙ100·ͰͷΛ༩͑Δɻ • લͷϖʔδͷنଇʹैͬͯग़ྗ͢Δɻ • ͱ͍͏ϓϩάϥϜΛ࡞͍ͯ͘͠ɻ ΏΔ8FCࡳຈ
Slide 8
Slide 8 text
ͬͯΈΑ͏ ΏΔ8FCࡳຈ
Slide 9
Slide 9 text
Step1: ૉͳ࣮ ΏΔ8FCࡳຈ
Slide 10
Slide 10 text
ૉͳ࣮ • ࡉ͔͍͜ͱؾʹͤͣʹɻ https://github.com/tacck/PHPFizzBuzzTraining/tree/Step1 ΏΔ8FCࡳຈ
Slide 11
Slide 11 text
Slide 12
Slide 12 text
Step2: ॳ৺ऀ͚ ΏΔ8FCࡳຈ
Slide 13
Slide 13 text
ॳ৺ऀ͚ • FizzBuzzͷఆΛؔ(ϝιου)Խɻ https://github.com/tacck/PHPFizzBuzzTraining/tree/Step2 ΏΔ8FCࡳຈ
Slide 14
Slide 14 text
Slide 15
Slide 15 text
Step3: ॳ৺ऀΑΓ্Λࢦ͢ ΫϥεΛ͏ ΏΔ8FCࡳຈ
Slide 16
Slide 16 text
ΫϥεΛ͏ • ׂͷ୲ΛΫϥεͰදݱ͢Δɻ • 1ʙ100ͷʹରԠ͢ΔจࣈྻΛදࣔ • ͱจࣈͷରԠؔΛఆ͠ฦ٫ https://github.com/tacck/PHPFizzBuzzTraining/tree/Step3 ΏΔ8FCࡳຈ
Slide 17
Slide 17 text
getFizzBuzz($num) . PHP_EOL; }
Slide 18
Slide 18 text
Slide 19
Slide 19 text
Step4: தڃऀ͚ ΫϥεͷΛ͚Δ ΏΔ8FCࡳຈ
Slide 20
Slide 20 text
Ϋϥεͷ? • ͦͷΫϥε͕ʮҰͭͷʯʹด͍ͯ͡Δ͔ • ؔ৺ͷɺૄ݁߹ɺͱ͍ͬͨΩʔϫʔυɻ • 1ʙ100ͷʹରԠ͢ΔจࣈྻΛදࣔ • ͱจࣈͷରԠؔͷఆ • ରԠ͢Δจࣈྻͷฦ٫ https://github.com/tacck/PHPFizzBuzzTraining/tree/Step4 ΏΔ8FCࡳຈ
Slide 21
Slide 21 text
ؔ৺ • ಛఆͷΛ༩͑ɺจࣈྻΛग़ྗ͍ͨ͠ɻ • ͱจࣈྻͷରԠΛอূ͍ͨ͠ɻ • จࣈྻΛ֬ఆ͍ͤͨ͞ɻ ΏΔ8FCࡳຈ
Slide 22
Slide 22 text
ؔ৺ͱ • ಛఆͷΛ༩͑ɺจࣈྻΛग़ྗ͍ͨ͠ɻ ˠ ϝιουͷݺͼग़͠ͱ݁Ռͷग़ྗ • ͱจࣈྻͷରԠΛอূ͍ͨ͠ɻ ˠ Λड͚औΓɺରԠ͢Δදࣔ༰ͷฦ٫ • දࣔ༰Λ֬ఆ͍ͤͨ͞ɻ ˠ ͕ࣗར༻͞ΕΔ߹ʹදࣔ༰Λฦ٫ ΏΔ8FCࡳຈ
Slide 23
Slide 23 text
ؔ৺ͱ • ಛఆͷΛ༩͑ɺจࣈྻΛग़ྗ͍ͨ͠ɻ ˠ ϝιουͷݺͼग़͠ͱग़ྗ • ͱจࣈྻͷରԠΛอূ͍ͨ͠ɻ ˠ Λड͚औΓɺରԠ͢Δදࣔ༰ͷฦ٫ • දࣔ༰Λ֬ఆ͍ͤͨ͞ɻ ˠ ͕ࣗར༻͞ΕΔ߹ʹදࣔ༰Λฦ٫ ݺͼग़ͯ͠͏ ݺͼग़ͯ͠͏ ΏΔ8FCࡳຈ
Slide 24
Slide 24 text
ؔ৺ͱ ΏΔ8FCࡳຈ ΠϯλϑΣʔε ೖग़ྗ ͷ ਖ਼͍͠σʔλΛड͚͢ ਖ਼͍͠σʔλͰ͋Δ ґଘؔ Ұํ ґଘؔ Ұํ
Slide 25
Slide 25 text
Slide 26
Slide 26 text
Slide 27
Slide 27 text
num = $num; } public function __toString(): string { return 'Fizz'; } public function isAvailable(): bool { return true; } }
Slide 28
Slide 28 text
Step5: റΓϓϨΠ ifจΛΘͳ͍Ͱ࣮͢Δ ΏΔ8FCࡳຈ
Slide 29
Slide 29 text
ifจΛΘͳ͍Ͱ࣮͢Δ • ಄ͷମૢ ΏΔ8FCࡳຈ
Slide 30
Slide 30 text
ifจΛΘͳ͍Ͱ࣮͢Δ • ಄ͷମૢ • ݱ࣮ͱͯ͠ɺ ଟͷ݅ذόάΛੜΈ͍͢ɻ ˠ ʮଟʯͷ෦Λղ͖΄͙͢ https://github.com/tacck/PHPFizzBuzzTraining/tree/Step5 ΏΔ8FCࡳຈ
Slide 31
Slide 31 text
ؔ৺ͱ • ಛఆͷΛ༩͑ɺจࣈྻΛग़ྗ͍ͨ͠ɻ ˠ ϝιουͷݺͼग़͠ͱग़ྗ • ͱจࣈྻͷରԠΛอূ͍ͨ͠ɻ ˠ Λड͚औΓɺରԠ͢Δදࣔ༰ͷฦ٫ • දࣔ༰Λ֬ఆ͍ͤͨ͞ɻ ˠ ͕ࣗར༻͞ΕΔ߹ʹදࣔ༰Λฦ٫ ΏΔ8FCࡳຈ ͜͜ʹ݅ذ
Slide 32
Slide 32 text
ؔ৺ͱ • ಛఆͷΛ༩͑ɺจࣈྻΛग़ྗ͍ͨ͠ɻ ˠ ϝιουͷݺͼग़͠ͱग़ྗ • ͱจࣈྻͷରԠΛอূ͍ͨ͠ɻ ˠ Λड͚औΓɺରԠ͢Δදࣔ༰ͷฦ٫ • දࣔ༰Λ֬ఆ͍ͤͨ͞ɻ ˠ ͕ࣗར༻͞ΕΔ߹ʹදࣔ༰Λฦ٫ ΏΔ8FCࡳຈ ͜͜ʹ
Slide 33
Slide 33 text
ؔ৺ͱ • ಛఆͷΛ༩͑ɺจࣈྻΛग़ྗ͍ͨ͠ɻ ˠ ϝιουͷݺͼग़͠ͱग़ྗ • ͱจࣈྻͷରԠΛอূ͍ͨ͠ɻ ˠ Λड͚औΓɺରԠ͢Δදࣔ༰ͷฦ٫ • දࣔ༰Λ֬ఆ͍ͤͨ͞ɻ ˠ ͕ࣗར༻͞ΕΔ߹ʹදࣔ༰Λฦ٫ ΏΔ8FCࡳຈ ͑Δ͔Ͳ͏͔ ʮදࣔ༰ʯ͕ࣗΔ͖
Slide 34
Slide 34 text
ؔ৺ͱ ΏΔ8FCࡳຈ ΠϯλϑΣʔε ೖग़ྗ ͷ ਖ਼͍͠σʔλΛड͚͢ ਖ਼͍͠σʔλͰ͋Δ
Slide 35
Slide 35 text
Slide 36
Slide 36 text
isAvailable(); return $presenter; } catch (\ParseError $e) { // none } } return new \App\FizzBuzz\Presenter\NumberPresenter($num); } }
Slide 37
Slide 37 text
num = $num; } public function __toString(): string { return 'Fizz'; } public function isAvailable(): bool { return ($this->num % 3 === 0 && $this->num % 5 !== 0) ? true : eval('invalid'); } }
Slide 38
Slide 38 text
ifจΛΘͳ͍Ͱ࣮͢Δ • Ԡ༻ྫ • ݩ߸ • ৽ݩ߸͕ൃද͞ΕͨΒɺ PresenterΫϥεΛՃ͢Δ͚ͩɻ https://github.com/tacck/PHPJapaneseEraTraining ΏΔ8FCࡳຈ
Slide 39
Slide 39 text
·ͱΊ ΏΔ8FCࡳຈ
Slide 40
Slide 40 text
·ͱΊ • FizzBuzzΛɺ ͍͔ͭ͘ͷܗͰղ͍ͯΈͨɻ • ΦϒδΣΫτࢦͷߟ͑ํΛ͏·͘͏ͱɺ ҆શ͔֦ͭுੑΛߴ͘Ͱ͖Δɻ ˠ ࠓճͬͨͷ ɹ ʮΦʔϓϯɾΫϩʔζυͷݪଇʯ • ಄ͷମૢΛ݉ͶͯɺറΓϓϨΠΛͯ͠ΈΑ͏! ΏΔ8FCࡳຈ
Slide 41
Slide 41 text
·ͱΊ • ͷ͚ํɺؔ৺ͷɺ ࠷ॳ͍͠ɻ • ʮ͜ͷਓ(Ϋϥε)ԿΛ͍ͬͯΔ͖͔ʯ ʮ͜ͷਓ(Ϋϥε)ʹԿΛͬͯཉ͍͔͠ʯ ਓ(Ϋϥε)ͷؾ࣋ͪʹͳͬͯߟ͑Δɻ • TDD (ςετۦಈ։ൃ) ΛΔͱɺ ʮΫϥεʹ͍͔͚ͳ͕Βʯ։ൃͰ͖Δɻ ΏΔ8FCࡳຈ
Slide 42
Slide 42 text
࣍ճ༧ࠂ? • (PHPͰ)TDDΛͬͯΈΔ? ΏΔ8FCࡳຈ
Slide 43
Slide 43 text
end ΏΔ8FCࡳຈ