Slide 1

Slide 1 text

ςετɺઃܭɺ ࣗಈԽͱɻ [email protected] ! author of dRuby, Rinda, ERB and Drip !

Slide 2

Slide 2 text

ͳͥࢲͷ࿩Λௌ͘ͱ͓ಘ͔ XP௕͍Α JaSST’04 ೜ऀࣜςετ ૊ΈࠐΈ/C/C++ ΋͏͙͢550ΠςϨʔγϣϯ ઙ͍୳ڀ৺ ఻આ্ͷଘࡏ

Slide 3

Slide 3 text

఻આ্ͷଘࡏ Learn from legendary Japanese Ruby hacker Masatoshi Seki in this first English-language book on his own Distributed Ruby library. You'll find out about distributed computing, advanced Ruby concepts and techniques, and the philosophy of the Ruby way---straight from the source.

Slide 4

Slide 4 text

The dRuby Book PragProgͰbuy now!

Slide 5

Slide 5 text

ͱͪ͗ςετͷձٞ3 ͍͔͢ςετఱࠃʢԾʣ 2014-10-04 ʢԾʣ ಢ໦ͷͲ͔͜ ΘΓͱ͍͔͢༧ఆ

Slide 6

Slide 6 text

ࠓ೔ͷ࿩ ઃܭͱςετ TDDͷ͓͞Β͍ ςετͷࣗಈԽɾܭࢉػࢧԉ TDDͷมܗͱ։ൃϥΠϒ

Slide 7

Slide 7 text

ઃܭͱςετ͸ผͳͷʁ چੈل͔Βͷڧ͍ٙ໰ Ͳ͔͜ΒͲ͜·Ͱ͕ઃܭͳͷ͔ ઃܭͱ͸اΈશͯ͡Όͳ͍ͷ͔ ࢒͢Ձ஋ͷ͋Δઃܭ৘ใ͸ͳʹ͔ ςετ͙Β͍͡Όͳ͍͔

Slide 8

Slide 8 text

ઃܭͱςετ ࠷ۙങ͍·ͨ͠!!! Զͷઃܭͱςετ ؾ͕߹͍ͦ͏

Slide 9

Slide 9 text

ιϑτ΢ΣΞͷ։ൃ ιϑτ΢ΣΞͷ։ൃ͸ɼ̎छྨͷ࡞ۀΛؚΜͰ͍Δɽ! ઃܭͱςετͰ͋Δɽ! ! (ιϑτ΢ΣΞͷ৴པੑ p.33)

Slide 10

Slide 10 text

ઃܭͱ͸ͳʹ͔ ʮܭըʹैͬͯܗΛ੔͑Δ͜ͱɽʯ! ͜ͷҙຯΛͱΕ͹ɼཁٻ΍໨తΛఆΊΔ͜ͱʹ࢝·Γɼ! ϓϩάϥϜΛॻ͘͜ͱʹࢸΔιϑτ΢ΣΞͷ࢓ࣄશମʹ! ΘͨΓɼͦΕͧΕͷ৔໘ʹԠͯ͡ɼઃܭ͕͋Δͱߟ͑Δ! ͜ͱ͕Ͱ͖Δɽ! ! (ιϑτ΢ΣΞͷ৴པੑ p.33)

Slide 11

Slide 11 text

ઃܭͱ͸ͳʹ͔ ͋ΒΏΔߦҝ͸ઃܭͰ͋Δ ཁٻɺ࢓༷ɺίʔσΟϯά…

Slide 12

Slide 12 text

ςετͱ͸ͳʹ͔ ΤϥʔΛൃݟ͢Δ໨తͰϓϩάϥϜΛ࣮ߦ͢Δաఔ͕! ςετͰ͋Δɽ! ! (ιϑτ΢ΣΞͷ৴པੑ p.194)

Slide 13

Slide 13 text

Α͍ςετ ΤϥʔΛൃݟͰ͖ͨΒ੒ޭ ΤϥʔΛൃݟ͢Δ֬཰ͷߴ͍΋ͷ͕ྑ͍

Slide 14

Slide 14 text

ςετͷ৺ཧֶ Τϥʔ͕͋Δ͜ͱΛࣔͦ͏ͱ͢Ε͹ɺΤϥʔ ͸ͨ͘͞ΜΈ͚ͭΒΕΔ Τϥʔ͕ͳ͍͜ͱΛࣔͦ͏ͱ͢Ε͹ɺΤϥʔ ͸͋·ΓΈ͔ͭΒͳ͍

Slide 15

Slide 15 text

ιϑτ΢ΣΞͷ։ൃ͸ ೋͭͷଶ౓ͰͰ͖͍ͯΔ ੔ཧ͠ੈքΛߏங͍ͯ͘͠ઃܭ ͦΕΛ͍ٙഁյ͢Δςετ

Slide 16

Slide 16 text

͓·͚ ͋ΔνʔϜͷ৺ཧ ✴ ཧ૝ͱݱঢ়ͱͷࠩΛຒΊΑ͏ ✴ όάͱ͔࢓༷ͱ͔͋Μ·Γؾʹ͠ͳ͍ ✴ (૝૾্ͷ) ΑΓΑ͍੡඼ͱͷࠩ ✴ ࢖͍΍͢͞ɺݟͨ໨ɺੑೳɺख৮Γ…શͯ ✴ ࠩΛ୳͢ߦҝ - ςετ͔ͳ͊ ✴ ࠩΛຒΊΔߦҝ - ͨͿΜઃܭ

Slide 17

Slide 17 text

Τϥʔͱ͸Կ͔ Τϥʔͱ͸Կ͔ ! Α͋͘ΔఆٛͷҰͭ͸ɼ࢓༷ͷ௨Γʹιϑτ΢ΣΞ͕ ࣮ߦ͞Εͳ͍࣌…! ! (ιϑτ΢ΣΞͷ৴པੑ p.5)

Slide 18

Slide 18 text

ࠜຊతͳ͕ܽؕ͋Δ Τϥʔͱ͸Կ͔ ! Α͋͘ΔఆٛͷҰͭ͸ɼ࢓༷ͷ௨Γʹιϑτ΢ΣΞ͕ ࣮ߦ͞Εͳ͍࣌ʹιϑτ΢ΣΞͷΤϥʔ͕ੜͨ͡ͱ͢ Δ΋ͷͰ͋Δɽ͜ͷఆٛʹ͸ࠜຊతͳ͕ܽؕ͋Δɽ! ! (ιϑτ΢ΣΞͷ৴པੑ p.5)

Slide 19

Slide 19 text

஌ͬͯͨ ࢓༷͕ৗʹਖ਼֬Ͱ͋Δ͜ͱΛલఏʹ͍ͯ͠Δɽ͜ͷલ ఏ͕ਖ਼͍͜͠ͱͷ΄͏͕ɼΉ͠ΖكͰ͋Δɻ! ! (ιϑτ΢ΣΞͷ৴པੑ p.5)

Slide 20

Slide 20 text

͜Μͳ࿩ҙຯ͋Μͷʁ ࣗ෼ͨͪͷߦಈ͕ͳΜͳͷ͔ཧղͯ͠ΈΔ ཧղͷ࿮૊Έ ΍ΓํΛม͑Δࢦ਑ʹ

Slide 21

Slide 21 text

͠͹Β͓͘଴͍ͪͩ͘͞ ✓ +10:00͗͢ ✓ ϚΠϠʔζͷઃܭͱςετΛࣗຫ ✓ ͭ͗͸ʮTDD͓͞Β͍ʯ

Slide 22

Slide 22 text

ςετͷࣗಈԽ ΩʔϊʔτͰ༩͑ΒΕͨςʔϚ ςετͷࣗಈԽΛ૝૾Ͱ͖·͔͢ʁ ઃܭͷࣗಈԽ͸Ͳ͏Ͱ͔͢ʁ ͦ΋ͦ΋ࣗಈͬͯͳʹʁ ࣗಈ࣮ߦ ܭࢉػʹΑΔࢧԉ

Slide 23

Slide 23 text

ςετͷࣗಈԽ ͯΏ͔ςετͷࣗಈԽ͕ΰʔϧͳͷʁ

Slide 24

Slide 24 text

TDDͷ͓͞Β͍ ςετͷࣗಈԽͷྫͱ͓ͯ͠͞Β͍͍ͨ͠ ςετۦಈ։ൃ ςετʹಋ͔Εͨϓϩάϥϛϯάͷٕ๏ ઃܭͷςΫχοΫ

Slide 25

Slide 25 text

TDDͷαΠΫϧ ࣍ͷ໨ඪΛߟ͑Δ ͦͷ໨ඪΛࣔ͢ςετέʔεΛॻ͘ ίʔυΛॻ͖ɺςετΛύεͤ͞Δ ςετ͕௨Δ··ͰɺϦϑΝΫλϦϯά ܁Γฦ͠

Slide 26

Slide 26 text

໨ඪΛߟ͑Δ ໨ඪ͜͜ʹ͢Δˠ ←͍·͜͜

Slide 27

Slide 27 text

Red ໨ඪΛςετͰදݱ͢Δˠ

Slide 28

Slide 28 text

Green ςετʹԊ࣮ͬͯ૷ˠ ←͜͜·ͰͷಓͷΓ͔Β΋֎Εͳ͍

Slide 29

Slide 29 text

Refactor ࣮૷Λચ࿅ͤ͞Δˠ ←͜͜·ͰͷಓͷΓ͔Β΋֎Εͳ͍

Slide 30

Slide 30 text

·ͨ͘Γ͔͑͢ ࣍ͷ໨ඪ͸͜͜ˠ

Slide 31

Slide 31 text

ঢ়ଶͷαΠΫϧ ໨ඪઃఆ ࣮૷ ચ࿅

Slide 32

Slide 32 text

ঢ়ଶͷαΠΫϧ Red Green Refactor

Slide 33

Slide 33 text

ؾ෼ ಈ͘ ͖Ε͍

Slide 34

Slide 34 text

TDDͷςετέʔε TDD͸ઃܭٕ๏ ΰʔϧΛςετέʔεͰදݱ ςετέʔεΛߟ͑Δ͜ͱࣗମ͕ઃܭ ઃܭͱςετͳΒઃܭʹ͍ۙ

Slide 35

Slide 35 text

TDDͷςετέʔε Α͍ςετ͔ʁʢΤϥʔΛൃੜ͢Δ֬཰ʣ Ұ౓໨͸Red 㱺 ͜Εͬͯ੒ޭͳͷʁ ೋ౓໨Ҏ߱͸௿֬཰ έΞϨεϛεΛ଴ͪ෬ͤ

Slide 36

Slide 36 text

ࣗಈςετͬΆ͍ʁ ܭࢉػ͕ςετΛ࣮ߦͯ͘͠ΕΔ ͜͜·Ͱḷ͖֤ͬͯͨεςοϓͷΰʔϧ ΛԿ౓Ͱ΋࣮ߦͰ͖Δ ࣗಈςετͬΆ͍

Slide 37

Slide 37 text

ίετͱ֬཰ ࡞੒ίετ͸ΘΓͱ͍҆ গͣͭ͠ॻ͘ͷͰ໘౗͡Όͳ͍ ࣮ߦίετ͸ͱͯ΋͍҆ ໰୊Λൃݟ͢Δ֬཰͸௿͍

Slide 38

Slide 38 text

Checking vs. Testing Checking ط஌ͷ৘ใͷ֬ೝ Testing ৽͍͠৘ใΛ୳͢ɻະ஌ͷ෺ɻ JaSST'11 TokyoɺLee Copeland͕ݴͬͯͨ୭͔ͷblog

Slide 39

Slide 39 text

Checking JaSST’11 Keynote ations 7 Checking vs. Testing • Checking is something that we do with the motivation of confirming existing beliefs • Checking is a process of confirmation, verification, and validation. When we already believe something to be true, we verify our belief by checking • Checking is a highly automatable process 8 Michael Bolton http://www.developsense.com/blog/2009/08/testing-vs-checking/ sting Trends and Innovations

Slide 40

Slide 40 text

Testing JaSST’11 Keynote Checking vs. Testing • Testing is something that we do with the motivation of finding new information • Testing is a process of exploration, discovery, investigation, and learning. When we configure, operate, and observe a product with the intention of evaluating it, or with the intention of recognizing a problem that we hadn’t anticipated, we’re testing • Testing is not automatable. It’s using our brain in real time, and it’s really fun 9 Trend • Process − Conte − Check − Crowd − The W − Explo Crowdsourced Testing Crow

Slide 41

Slide 41 text

ط஌ͱະ஌ ✴ ͦ͏͍͑͹

Slide 42

Slide 42 text

http://web.sfc.keio.ac.jp/~iba/sb/log/eid75.html IBALOG - Concept Walk ೔ຊޠ൛ | ʮݚڀʯͱʮษڧʯͷҧ͍

Slide 43

Slide 43 text

ςετέʔεͷࣗಈ࣮ߦ Checking ࣗಈԽ͠΍͍͢ ط஌ͷ৘ใͷ֬ೝ ଴ͪ෬ͤ

Slide 44

Slide 44 text

TDDҎ֎ͷࣗಈ࣮ߦ ࡞੒ίετߴͦ͏ʢTDDൺʣ Θ͟Θ͟࡞ΔͷΊΜͲ͍͘͞ؾ෼ WinRunnerͱ͔ ࣮ߦίετ͸͍͚҆Ͳ

Slide 45

Slide 45 text

Checkingͷࣗಈ࣮ߦ ςετέʔεͷࣗಈ࣮ߦ ૝૾͠΍͍͢ ͍͔ʹ΋Ͱ͖ͦ͏ͳؾ͕͢Δ ͡Ό͋ଞͷ΋ͷ͸Ͳ͏ͳͷʁ

Slide 46

Slide 46 text

͠͹Β͓͘଴͍ͪͩ͘͞ ✓ +20:00͗͢ ✓ TDD͓͞Β͍ ✓ ࣍͸Testing΍ͦͷଞͷܭࢉػࢧԉ

Slide 47

Slide 47 text

ͦΕҎ֎ͷྖҬ ະ஌ͷ໰୊ͷൃݟΛख఻ͬͯ΋Β͏ʹ͸.. ςετέʔεࣗಈ࣮ߦҎ֎ʹԿ͔ͳ͍ͷʁ

Slide 48

Slide 48 text

ωλ ෆ۩߹͔Βͷෆ۩߹ࣗಈੜ੒ ςετεΠʔτͷϦίϝϯυ ͖ͭͮ͸ΈΜͳ͕ߟ͑ͯ!

Slide 49

Slide 49 text

ෆ۩߹͔Βͷෆ۩߹ࣗಈੜ੒ ܭࢉػʹΑΔTestingͷࢧԉ Սۭͷෆ۩߹Λੜ੒͢Δπʔϧ ૝૾Ͱ͖ͳ͍໰୊Λ૝૾͢ΔͨΊʹ࢖͏ ෆ۩߹σʔλϕʔεͱϚϧίϑ࿈࠯

Slide 50

Slide 50 text

ෆ۩߹σʔλϕʔε ;ͭ͏ຖ೔ಡΈ߹ΘͤΛ͢Δ΋ͷ ෆ۩߹͔ΒةݥΛײ͡Δ೴಺഑ઢΛҭͯΔ ൓ࣹਆܦ ੸਷൓ࣹ

Slide 51

Slide 51 text

ෆ۩߹Λ૝૾ͯ͠ςετ͢Δ ͍ͭ΋ͷTestingΛࢥ͍ग़ͯ͠Έͯ! ແ͔Βੜ·ΕΔΘ͚Ͱ͸ͳ͍ ͜Ε·ͰͷֶशͰಘΒΕͨύλʔϯ ͔ͦ͜Β͋Γͦ͏ͳΠϠͳ͜ͱΛબ୒

Slide 52

Slide 52 text

೴಺Ͱ͸ ݱࡏͷঢ়گ͔Βແ਺ͷύλʔϯΛੜ੒͠ݟࠐ Έͷ͋Γͦ͏ͳ਺ݸΛબͿɺͱ͍͏܁Γฦ͠ ΛҰॠͰܭࢉ͍ͯ͠Δ ͪΐͬͱӕ͔΋

Slide 53

Slide 53 text

೴಺Ͱ͸ ঢ়گ

Slide 54

Slide 54 text

͍Ζ͍Ζࢥ͍ͭ͘ ঢ়گ ωλ ωλ ωλ ωλ ωλ ωλ ωλ ωλ

Slide 55

Slide 55 text

ݟࠐΈͷ͋Δͷ͸ͲΕ͔ͳ ঢ়گ ΞΠσΞ ΞΠσΞ ΞΠσΞ ΞΠσΞ ΞΠσΞ ΞΠσΞ ΞΠσΞ ΞΠσΞ

Slide 56

Slide 56 text

όάʹग़ձ͑ͦ͏ͳͷΛ࠾༻ ঢ়گ ωλ ωλ ωλ ωλ ποίϛ ωλ ωλ ποίϛ

Slide 57

Slide 57 text

࡞੒ͨ͠γεςϜ աڈෆ۩߹Λֶश͠ɺ͋Γͦ͏ͳෆ۩߹Λ ࣗಈੜ੒͢ΔϓϩάϥϜ ποίϛͷωλΛੜ੒͢Δ

Slide 58

Slide 58 text

࣮૷͸؆୯ ܗଶૉ෼ੳͱϚϧίϑ࿈࠯Λ༻͍Δ จষΛͨ͘͞Μֶशͤ͞ΔͱͦΕΒ͍͠จ ষΛੜ੒Ͱ͖Δ ཁ໿γεςϜ ِ࿦จੜ੒ͳͲ

Slide 59

Slide 59 text

ωλͷੜ੒Λػցʹ΍ΒͤΔ ঢ়گ ωλ ωλ ωλ ωλ ωλ ωλ ωλ ωλ

Slide 60

Slide 60 text

ςΩετ 実⾏行中にcloseͨ͠ΒϩοΫͨ͠ࡍͷڍಈ͕ม

Slide 61

Slide 61 text

ςΩετ で再⽣生表⽰示を⾏行うと変な残像が⾒見える

Slide 62

Slide 62 text

ςΩετ શ෦ফͨ͠ΒInsert΋Reset΋ग़དྷͳ͍

Slide 63

Slide 63 text

ςΩετ されず、ページ変更も⾏行なえなかった。

Slide 64

Slide 64 text

ςΩετ 3Dの1ຕ͚ͩҾ͖ܧ͙ͱμϝͳ৔߹͕͋Δ

Slide 65

Slide 65 text

! の設定が反映されない ! ☕ ️☕ ️☕ ️のボタンの下に表⽰示されていないときがある ! ͋Δ 名にマイナスが⼊入⼒力できない ! Save΅ͨΜ͕ͳΜ͔มɻ ! ฏۉΛٻΊΔ࣌ʹ の視点位置が変更すると原画の断⾯面線が出ない。 ! ಡΈࠐΈΛabort͢Δͱ͖Ε͍ʹฒ͹ͳ͍ ! のオブジェクト1だけを選んでもプリセット3͕ద༻͞ΕΔ৔߹͕͋Δɻ ! ページで読み込むと、 が閉じる。 ! ΦϒδΣΫτొ࿥/࡟আΛ࣮ߦͨ͠Βɺ が死んだ ! ෳ਺ બ୒ͯ͠΋ ϑΥʔϚοτΛมߋͨ͠Βɺ ウィンドーが消えた。 ! が最⼩小値と 値を加えるとエラーにならないときにマウスカーソル⭐ ️⭐ ️⭐ ️⭐ ️⭐ ️補し ͷʹ֯౓͕෇͘

Slide 66

Slide 66 text

ӕͰ΋ใࠂ͞ΕͨΒ ϓϩάϥϚ͸͙͢ʹ࠶ݱࢼݧ͠Α͏ͱͨ͠ Γൃੜ͢ΔՄೳੑΛߟ͑ͨΓ͢Δ... ӡ͕ྑ͚Ε͹͔ͦ͜Β৽͍͠ෆ۩߹Λൃ ݟ͢Δ͔΋!!!

Slide 67

Slide 67 text

ςετεΠʔτͷϦίϝϯυ खಈͰ΍Δςετͷ࿩ ݱࡏͷ։ൃঢ়گͰɺόάͷൃݟͰ͖Δ֬ ཰ɺൃੜͨ࣌͠ʹଛ֐ͷେ͖ͳ΋ͷΛਪન ͋ͱ1िؒͳΒͳʹΛ͢Δ΂͖͔ ϥΠτφʔγεςϜͷԠ༻

Slide 68

Slide 68 text

ϥΠτφʔγεςϜ ෮शִ͕ؒ࣍ୈʹԆͼΔִؒ൓෮ֶश ΦʔϓϯΫϥε޲͖

Slide 69

Slide 69 text

ͦͷଞͷܭࢉػࢧԉ ੩తղੳ ಈతղੳ ίϯίϦοΫςετ σόοάͱҧΘͳ͍ؾ΋͢Δ͚Ͳࡉ͔͍ ෼ྨ͸ؾʹ͠ͳ͍ ΋ͬͱ͍͍ͷ͕͋Δͱ͓΋͏ΑɺΈΜͳ!

Slide 70

Slide 70 text

தకΊ ϚΠϠʔζͷઃܭͱςετ TDDͷ͓͞Β͍ͱChecking TestingͷࣗಈԽ͸Έͳ͞ΜͰ ! ࣍͸։ൃϥΠϒͷલʹ…

Slide 71

Slide 71 text

͠͹Β͓͘଴͍ͪͩ͘͞ ✓ +30:00͗͢ ✓ தకΊ ✓ ͭ͗͸։ൃϥΠϒͷલ;Γɻ͕࣌ؒͳ͚Ε͹ඈ͹͢

Slide 72

Slide 72 text

TDDBCେࡕͰ΍ͬͨ͝ఏҊ Red Green Refactor ͪΐͬͱͣͭԾઆͷ্ʹԾઆΛॏͶͯੵ Έ͋͛Δؾ෼ + Destroy ͦ͏ݴ͏͚ͲͲ͔ͬؒҧͬͯΔΜ͡Όʁ ͜ͷ࣮૷ͳΒ͜͜Ͱcore dumpͩΖ

Slide 73

Slide 73 text

Destroy Red Green RefactorͷαΠΫϧʹͨ·ʹࠞͥ Δ ͜ͷ࣮૷ͳΒ͜ΕͰόά͕ग़ΔͩΖ!Έ͍ͨ ͳͷΛೋਓͰߟ͑ͯςετέʔεΛॻ͖࣮ߦ ͢Δ ౰ͨΕ͹Redɺ֎ΕΕ͹Green

Slide 74

Slide 74 text

Destroyͱ͸ ࣗ෼ͨͪͷίʔυΛഁյ͢Δ TDDͷαΠΫϧʹ࣋ͪࠐΉ όάΛݟ͚ͭΔ๧ࢠ

Slide 75

Slide 75 text

ٙͬͯյͯ͠ΈΔ ৽͍͠໰୊ͷൃݟ

Slide 76

Slide 76 text

ΑΓྑ͘ɺΑΓڧ͘ ڧ͘͢Δ

Slide 77

Slide 77 text

৽͍͠ࢦ਑ ಈ͘ ͖Ε͍ ڧ͍

Slide 78

Slide 78 text

Destroy Red Refactor Destroy Green Green

Slide 79

Slide 79 text

͜Ε͸TDD͔ ͍ͭ΋͸ݐઃతͳଶ౓ͰྟΉ ͨ·ʹഁյతͳࢥߟΛ࣋ͪࠐΉ CheckingͷதʹTestingΛ

Slide 80

Slide 80 text

ݟ͔ͭͬͨ໰୊͸ط஌͡ΌΜ ✴ Testingً͕͘ͷ͸Ұॠ ✴ Ұ౓ղ͍ͨ໰୊͸໌೔ͷChecking

Slide 81

Slide 81 text

࣍͸։ൃϥΠϒ +Destroy͢Δ͚ͲTDDͷTest First͠·ͤΜ ࢲ͕ίʔυΛॻ͖·͢ ΈΜͳͰόά͕ग़ͦ͏ͳςετέʔεΛఏ Ҋͯ͠Ͷ!