Upgrade to Pro — share decks privately, control downloads, hide ads and more …

JaSST Tohoku 2014 Keynote

JaSST Tohoku 2014 Keynote

40f4d1f2e77078955bd01e9fb4a503ba?s=128

seki at druby.org

May 23, 2014
Tweet

Transcript

  1. ςετɺઃܭɺ ࣗಈԽͱɻ seki@ruby-lang.org ! author of dRuby, Rinda, ERB and

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

  3. ఻આ্ͷଘࡏ 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.
  4. The dRuby Book PragProgͰbuy now!

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

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

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

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

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

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

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

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

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

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

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

  16. ͓·͚ ͋ΔνʔϜͷ৺ཧ ✴ ཧ૝ͱݱঢ়ͱͷࠩΛຒΊΑ͏ ✴ όάͱ͔࢓༷ͱ͔͋Μ·Γؾʹ͠ͳ͍ ✴ (૝૾্ͷ) ΑΓΑ͍੡඼ͱͷࠩ ✴

    ࢖͍΍͢͞ɺݟͨ໨ɺੑೳɺख৮Γ…શͯ ✴ ࠩΛ୳͢ߦҝ - ςετ͔ͳ͊ ✴ ࠩΛຒΊΔߦҝ - ͨͿΜઃܭ
  17. Τϥʔͱ͸Կ͔ Τϥʔͱ͸Կ͔ ! Α͋͘ΔఆٛͷҰͭ͸ɼ࢓༷ͷ௨Γʹιϑτ΢ΣΞ͕ ࣮ߦ͞Εͳ͍࣌…! ! (ιϑτ΢ΣΞͷ৴པੑ p.5)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  32. ঢ়ଶͷαΠΫϧ Red Green Refactor

  33. ؾ෼ ಈ͘ ͖Ε͍

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

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

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

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

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

  39. 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
  40. 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
  41. ط஌ͱະ஌ ✴ ͦ͏͍͑͹

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

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

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

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

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

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

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

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

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

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

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

  53. ೴಺Ͱ͸ ঢ়گ

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

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

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

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

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

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

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

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

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

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

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

  65. ! の設定が反映されない ! ☕ ️☕ ️☕ ️のボタンの下に表⽰示されていないときがある ! ͋Δ 名にマイナスが⼊入⼒力できない

    ! Save΅ͨΜ͕ͳΜ͔มɻ ! ฏۉΛٻΊΔ࣌ʹ の視点位置が変更すると原画の断⾯面線が出ない。 ! ಡΈࠐΈΛabort͢Δͱ͖Ε͍ʹฒ͹ͳ͍ ! のオブジェクト1だけを選んでもプリセット3͕ద༻͞ΕΔ৔߹͕͋Δɻ ! ページで読み込むと、 が閉じる。 ! ΦϒδΣΫτొ࿥/࡟আΛ࣮ߦͨ͠Βɺ が死んだ ! ෳ਺ બ୒ͯ͠΋ ϑΥʔϚοτΛมߋͨ͠Βɺ ウィンドーが消えた。 ! が最⼩小値と 値を加えるとエラーにならないときにマウスカーソル⭐ ️⭐ ️⭐ ️⭐ ️⭐ ️補し ͷʹ֯౓͕෇͘
  66. ӕͰ΋ใࠂ͞ΕͨΒ ϓϩάϥϚ͸͙͢ʹ࠶ݱࢼݧ͠Α͏ͱͨ͠ Γൃੜ͢ΔՄೳੑΛߟ͑ͨΓ͢Δ... ӡ͕ྑ͚Ε͹͔ͦ͜Β৽͍͠ෆ۩߹Λൃ ݟ͢Δ͔΋!!!

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

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

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

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

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

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

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

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

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

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

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

  78. Destroy Red Refactor Destroy Green Green

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

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

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