$30 off During Our Annual Pro Sale. View Details »

Introduction to Entering Test Design (Japanese)

Introduction to Entering Test Design (Japanese)

Takuya Matsumoto

February 17, 2017
Tweet

More Decks by Takuya Matsumoto

Other Decks in Programming

Transcript

  1. Introduc)on to Entering
    Test Design
    Takuya Matsumoto
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 1

    View Slide


  2. • @upinetree (twi-er, github, qiita)
    • גࣜձࣾສ༿
    • h-ps:/
    /www.wantedly.com/projects/10005 ʹࣸͬͯΔਓ
    • We are hiring !
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 2

    View Slide

  3. ·͕͖͑
    • ؆୯ʹ࢖͑Δςετٕ๏ͷ঺հͰ͢
    • ࣾ಺Ͱͷൃදࢿྉ͔Βࣾ಺޲͚৘ใΛ࡟আͨ͠΋ͷͰ͢
    • ಠֶͰษڧͨ͠಺༰ʹج͍͍ͮͯΔͨΊࣗݾղऍؚ͕·Ε·͢
    • ؒҧ͍౳͋Γ·ͨ͠ΒTwi%ert౳Ͱ͓஌Β͍͚ͤͨͩΔͱॿ͔Γ
    ·͢
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 3

    View Slide

  4. ࠓ೔͸ςετʹ͍ͭͯ࿩͠·͢
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 4

    View Slide

  5. όάͷͳ͍ϓϩάϥϜ͸ͳ͍
    • όάͷͳ͍࢓༷΋ͳ͍
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 5

    View Slide

  6. Ͱ΋Կ΋͠ͳͯ͘ྑ͍Θ͚Ͱ͸ͳ͘
    • ૣ͘ؾ͚ͮΔ͔ʢ༧๷ʣ
    • ؾ͍ͮͨͱ͖ʹͲ͏͢Δ͔ʢ෼ੳɺରࡦʣ
    • ࠶ൃ๷ࢭͰ͖Δ͔ʢࣃࢭΊʣ
    ͪͳΈʹ͜ͷ͋ͨΓ͸޻ۀ෼໺ͷQCʢ඼࣭؅ཧʣͷߟ͑ํ͕݁ߏ
    ໘ന͍
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 6

    View Slide

  7. ͍Ζ͍Ζͳํ๏͕͋Δ
    • ސ٬ͱର࿩͢Δ
    • ઃܭΛ޻෉͢Δ
    • ϨϏϡʔ͢Δ
    • ϋϚΓͲ͜ΖΛWikify͢Δ
    ςετ͸ͦͷ͏ͪͷҰͭͷํ๏
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 7

    View Slide

  8. ͔͠͠ɺςετΛॻ͘ͷ͸Ή͔͍ͣ͠
    • ͜ͷςετͰຊ౰ʹେৎ෉ͳͷͩΖ͏͔ʁ
    • ςετέʔε͸଍Γ͍ͯΔͩΖ͏͔ʁ
    • ॻ͖͗ͯ͢͸͍ͳ͍ͩΖ͏͔ʁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 8

    View Slide

  9. ෆ҆ͩΒ͚
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 9

    View Slide

  10. ͦΜͳܦݧ͋Γ·ͤΜ͔
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 10

    View Slide

  11. ςετʹ͸஫ҙ͢΂͖͜ͱ͕ͨ͘͞Μ͋Δ
    • ϩδοΫͷਖ਼͠͞ΛอূͰ͖Δ͔ʁ
    • ܽؕΛݕग़͠΍͍͔͢ʁ
    • ςετํ๏͸ޮՌత͔ʁ
    • ςετέʔε͸ඞཁे෼͔ʁ
    • ࣮ࢪ࣌ؒ͸ݱ࣮త͔ʁʢࣗಈʗखಈͲͪΒ΋ʣ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 11

    View Slide

  12. ʹ΋ؔΘΒͣɺ͖ͪΜͱ࿩͠߹ΘΕΔ͜ͱ͕গͳ͍
    • ܦݧͰॻ͔ΕΔ͜ͱ͕ଟ͍
    • ҆৺͢ΔͨΊ͚ͩʹॻ͔ΕΔ͜ͱ͕ଟ͍1
    • ޙ෇͚ɺ͓·͚ʹ͞Ε͕ͪ
    1 ҆৺͸ςετͷॏཁͳཁૉͷͻͱͭͰ͕͢ɺ඼࣭͸อূͯ͘͠Ε·ͤΜ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 12

    View Slide

  13. ࠓ͔ͦͬ͜͠ΓجຊΛԡ͑͞Δ͍ͧ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 13

    View Slide

  14. ςετ͸͢Ε͹ྑ͍ͱ͍͏΋ͷͰ΋ͳ͍
    • Ϧιʔεʹ͸੍໿͕͋Γɺ͢΂ͯΛςετ͢Δ͜ͱ͸Ͱ͖ͳ͍
    • Ͳ͜·Ͱςετ͢Δ͔ɺϓϩμΫτ͕ෛ͑ΔϦεΫͱηοτͰ
    ݕ౼͢Δඞཁ͕͋Δ
    • ܽؕΛݕग़͢ΔՄೳੑ͕ߴ͘ͳΔΑ͏ͳςετ͕๬·͍͠
    • ͦͷͨΊʹ͸ɺద੾ʹςετΛઃܭ͢Δඞཁ͕͋Δ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 14

    View Slide

  15. ςετΛઃܭ͢Δ
    Test Design
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 15

    View Slide

  16. Ͳ͏ઃܭ͢Δʁ
    • ςετέʔεʹ͸ແݶͷબ୒ࢶ͕͋ΓɺͦΕΒΛ෼ੳ͠ɺܾఆ
    ͢Δ͜ͱʹͳΔ
    • Ͳ͏΍ͬͯϦιʔεͷ੍໿͕͋ΔதͰޮՌతͳબ୒͕Ͱ͖Δ͔
    Λߟ͑Δ
    • ޮՌతͱ͸ɺগͳ͍ςετέʔεͰܽؕΛݟ͚ͭ΍͍͢͜ͱͱ
    Ծఆ͢Δ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 16

    View Slide

  17. ઃܭʹඞཁͳ΋ͷ͸Կʁ
    • ର৅ιϑτ΢ΣΞ΍ɺͦͷϏδωεྖҬͷ஌ࣝ
    • ςετର৅ػೳͷ໌֬ͳ࢓༷
    • ςετέʔεΛ࡞ΔͨΊͷςΫχοΫ
    • → ͜ΕΛҰൠతʹςετٕ๏ͱݺͿ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 17

    View Slide

  18. ͓࿩͢Δ͜ͱ
    • ໌೔͔Β࢖͑Δ؆୯ͳςετٕ๏ͷ঺հ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 18

    View Slide

  19. ͓࿩͠ͳ͍͜ͱ
    • WebΞϓϦͷద੾ͳςετ۠෼ʢControllerςετͷੋඇͱ͔ʣ
    • ςετۦಈ։ൃͷΑ͏ͳ։ൃϑϩʔ
    • ςετܭըͷࡦఆํ๏
    • ςετΛ͢Δ࣌ؒͷ೧ग़ํ๏
    • ;Θͬͱͨ͠࢓༷Λ͸͖ͬΓͤ͞Δํ๏
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 19

    View Slide

  20. ໨࣍
    1. ୈҰ෦ ਺஋Λѻ͏ςετٕ๏
    2. ୈೋ෦ ૊Έ߹ΘͤΛѻ͏ςετٕ๏
    3. ·ͱΊ
    ͦΕͳΓʹར༻ස౓͕ߴͦ͏ͳ΋ͷΛબΜͰΈ·ͨ͠
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 20

    View Slide

  21. ୈҰ෦
    ਺஋Λѻ͏ςετٕ๏
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 21

    View Slide

  22. ਺஋
    • ೥ྸ
    • ֹۚ
    • ೔࣌
    • จࣈ
    σʔλ্࿈ଓతʹදͤΔ΋ͷɻ௨ৗ͸཭ࢄ஋ͱͯ͠ѻ͏ɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 22

    View Slide

  23. ਅཧ஋ʢࢀߟʣ
    true ͔ false ͔ɻ
    ࿦ཧԋࢉࢠɺ੍ޚߏจʹΑΓදݱ͞ΕΔ΋ͷɻ
    • or, and
    • if, else, unless
    ୈҰ෦Ͱ͸਺஋͕ओ໾ͳͷͰࠓճऔΓѻ͍·ͤΜɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 23

    View Slide

  24. ಉ஋Ϋϥεςετ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 24

    View Slide

  25. ಉ஋Ϋϥεςετ
    ࠷΋جຊͷςετٕ๏Ͱɺ͍͍ͩͨͷέʔεͰςετΛ؅ཧՄೳ
    ͳ਺ʹ཈͑Δ͜ͱͷͰ͖ΔςΫχοΫɻ
    ΄ͱΜͲͷϓϩάϥϚ͕ແҙࣝʹߦ͍ͬͯΔ໛༷ɻ
    ਺஋Ҏ֎ʹ΋ద༻Ͱ͖Δ͕ɺࠓճ͸਺஋ʹϑΥʔΧεͯ͠঺հɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 25

    View Slide

  26. ಉ஋Ϋϥεςετ
    ͨͱ͑͹࣍ͷΑ͏ͳ࢓༷͕͋ͬͨͱ͢Δɻ
    0ࡀ ʙ 18ࡀ : ޏ༻͠ͳ͍
    19ࡀ ʙ 55ࡀ : ޏ༻͢Δ
    56ࡀ ʙ : ޏ༻͠ͳ͍
    0, 1, 2, 3, ... ͷશͯͷ೥ྸʹ͓͍ͯςετ͢Δඞཁ͕͋Δ͔ʁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 26

    View Slide

  27. ಉ஋Ϋϥεςετ
    • ௚ײతʹNOͱ౴͑Δਓ͕ଟ͍
    • ಉ݁͡ՌΛฦ͢σʔλͷू߹ʮಉ஋Ϋϥεʯ
    ಉ஋ΫϥεͷதͰ͸ςετ͕ඞཁͳͷ͸Ұ͚ͭͩͰɺͲͷ஋Λબ
    ΜͰ΋ಉ͘͡Β͍༗ޮɻ
    ઌͷྫͩͱ {10ࡀ, 30ࡀ, 80ࡀ} ΛબΜͰ΋ {15ࡀ, 40ࡀ, 60
    ࡀ} ΛબΜͰ΋ಉ͡ɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 27

    View Slide

  28. ಉ஋Ϋϥεςετ
    ͱ͸͍͑ɺ࣍ͷΑ͏ʹ࣮૷͞Ε͍ͯͨ৔߹ʹ͸΋ͪΖΜແޮɻ
    def hirable?
    if age == 0; return false; end
    if age == 1; return false; end
    if age == 2; return false; end
    # ...
    if age == 19; return true; end
    if age == 20; return true; end
    # ...
    end
    ͦΜͳ͜ͱ͸ͳ͍ͱئ͍͍ͨ !
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 28

    View Slide

  29. ਺஋ͷ༗ޮ஋Ϋϥεɺແޮ஋Ϋϥε
    ༗ޮ஋Ϋϥε1ͭʹରͯ͠ແޮ஋Ϋϥε2ͭɻ๨Εͣʹςετ͢Δ
    ʢԼਤ͸ʮޏ༻͢ΔʯΛ༗ޮ஋ͱͨ͠ͱ͖ʣ
    19歳 55歳
    有効値クラス
    無効値クラス 無効値クラス
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 29

    View Slide

  30. Ͱ͸ɺಉ஋Ϋϥε͔Βબ୒͢Δ஋͸
    Կ͕ྑ͍ʁ
    10 Ͱ΋ 11 Ͱ΋ 12 Ͱ΋͍͍ͷ͔ʁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 30

    View Slide

  31. Ͱ͖Ε͹Ұ൪͕ܽؕݟ͔ͭΓ΍͍͢
    ஋Ͱ͋ͬͯ΄͍͠
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 31

    View Slide

  32. Ͱ͸਺஋ʹ͓͍ͯɺҰ൪͕ܽؕݟͭ
    ͔Γ΍͍͢஋ͱ͸ʁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 32

    View Slide

  33. ڥք஋ςετ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 33

    View Slide

  34. ڥք஋ςετ
    ͨͱ͑͹ɺ࢓༷ͷڥքʹฆΕΔόά…
    0ࡀ ʙ 19ࡀ : ޏ༻͠ͳ͍
    19ࡀ ʙ 55ࡀ : ޏ༻͢Δ
    56ࡀ ʙ : ޏ༻͠ͳ͍
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 34

    View Slide

  35. ڥք஋ςετ
    ·ͨɺίʔυʹજΉຌϛε…
    case age
    when 0...19
    false
    when 19..56 # <= missing dot
    true
    else
    false
    end
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 35

    View Slide

  36. ڥք஋ςετ
    ͜͏ͨ͠όά͸݁ߏ͋Δ͋Δɻڥքʹ͸ͨ͘͞Μͷ͕ܽؕજΜͰ
    ͍Δɻ
    ͋Δಉ஋Ϋϥεͱଞͷಉ஋ΫϥεͷڥքΛʮڥք஋ʯͱ͍͏ɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 36

    View Slide

  37. ڥք஋ςετ
    ͔ͩΒڥք஋ͱɺͦͷ্͙͢ɺ΋͘͠͸͙͢Լͷ஋ʹண໨͢Δɻ
    • ڥք஋͕19ࡀͷͱ͖ɺண໨͢΂͖͸ {18, 19, 20}
    • ڥք஋͕55ࡀͷͱ͖ɺண໨͢΂͖͸ {54, 55, 56}
    ҰํͰಉ஋ΫϥεςετΛࢥ͍ग़ͤ͹ɺςετ͢΂͖஋͸ಉ஋Ϋ
    ϥε಺Ͱͻͱ͚ͭͩͰྑ͍ɻ
    ͭ·Γ {18, 19, 55, 56} Ͱྑ͍ɺͱͳΔɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 37

    View Slide

  38. ڥք஋ςετ
    19 55
    有効値クラス
    無効値クラス 無効値クラス
    18 56
    ؆୯ͩͱࢥ͍ͬͯͯ΋ਤʹॻ͍ͯΈΔͱؾ෇͖͕ಘΒΕΔ͜ͱ͕
    ͋ΔͷͰ͓͢͢Ίɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 38

    View Slide

  39. ❔ ڥք஋ςετΫΠζʂ
    ۈ຿࣌ؒͷڥք஋ 8.00hɺখ਺ୈ2Ґ·Ͱѻ͍͍ͨɻ
    ண໨͢΂͖஋͸ʁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 39

    View Slide

  40. ❔ ڥք஋ςετΫΠζʂ
    ۈ຿࣌ؒͷڥք஋ 8.00hɺখ਺ୈ2Ґ·Ͱѻ͍͍ͨɻ
    ண໨͢΂͖஋͸ʁ
    {7.99, 8.00, 8.01}
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 40

    View Slide

  41. ❔ ڥք஋ςετΫΠζʂʂ
    ग़ۈ࣌ؒͷڥք஋͕ 10:30:00ɺඵ୯ҐͰѻ͍͍ͨɻ
    ண໨͢΂͖஋͸ʁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 41

    View Slide

  42. ❔ ڥք஋ςετΫΠζʂʂ
    ग़ۈ࣌ؒͷڥք஋͕ 10:30:00ɺඵ୯ҐͰѻ͍͍ͨɻ
    ண໨͢΂͖஋͸ʁ
    {10:29:59, 10:30:00, 10:30:01}
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 42

    View Slide

  43. ର৅ͷ஋ͷ୯Ґ͕େࣄ
    • ۈ຿࣌ؒͷڥք஋ 8.00hɺখ਺ୈ2Ґ·Ͱ
    => {7.99, 8.00, 8.01}
    • ग़ۈ࣌ؒͷڥք஋͕ 10:30:00ɺඵ୯Ґ
    => {10:29:59, 10:30:00, 10:30:01}
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 43

    View Slide

  44. ͪͳΈʹ: ظؒͷڥք͸΍΍͍͜͠
    ΧϨϯμʔΞϓϦͰɺ࣍ͷ2ͭͰσʔλ͸Ͳ͏࣋ͨͤΔʁ
    • 2/10 ʙ 2/12 ͱͨ͠ͱ͖ɺ2/12 ͸ऴ೔ؚΊ͍ͨ
    • 10:00 ʙ 12:00 ͱͨ͠ͱ͖ɺ12:00:00 ͸ؚΊͨ͘ͳ͍
    ೔෇ࢦఆͷ৔߹͸಺෦දݱͰ 2/10 ʙ 2/13 ͱ͢Δ౳ɺऴ୺ΛͲͪ
    Β͔ʹ౷Ұ͢Δ΄͏͕ѻ͍΍ͦ͢͏ɻ2
    2 RFC 2445 iCalender Ͱ͸ऴ୺ΛؚΊͳ͍ํʹ౗͍ͯ͠Δ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 44

    View Slide

  45. 2࣠ͷڥք஋ςετ
    ݱ࣮ʹ͸ɺෳ਺ͷ࣠ͷڥքΛѻ͏έʔε͕΄ͱΜͲɻ
    ࣍ͷ࢓༷͸Ͳ͏ςετͨ͠Βྑ͍ͩΖ͏ʁ
    • ෦໳ίʔυ͸ ΞϧϑΝϕοτ[a-c] + ਺ࣈ[1-5] Ͱ͋Δ͜ͱ
    • ্هΛຬͨͨ͠Β trueɺຬͨ͞ͳ͔ͬͨΒ false Λฦ͢͜ͱ
    • ͨͱ͑͹ a1 ͸ trueɺd5 ͸ false
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 45

    View Slide

  46. 2࣠ͷڥք஋ςετ
    ڥք஋ͷ૊Έ߹Θͤ͸άϥϑʹϓϩοτ͢Δͱ෼͔Γ΍͍͢
    1 5
    a
    c
    0 6
    `
    d
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 46

    View Slide

  47. 2࣠ͷڥք஋ςετ
    ϓϩοτ͢΂ͯͰςετΛ͠ͳ͚Ε͹͍͚ͳ͍Θ͚Ͱ͸ͳ͍ɻ
    ਖ਼ৗܥͷڥք஋͸·ͱΊͯςετͰ͖Δɻ
    1 5
    a
    c
    0 6
    `
    d code valid?
    a1 ⭕
    c5 ⭕
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 47

    View Slide

  48. code valid?
    `1 ❌
    d1 ❌
    a0 ❌
    a6 ❌
    2࣠ͷڥք஋ςετ
    ҟৗܥͷڥք஋͸ʁ
    → ਖ਼ৗܥ΄Ͳ͸·ͱΊͯςετͰ͖ͳ͍
    1 5
    a
    c
    0 6
    `
    d
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 48

    View Slide

  49. 2࣠ͷڥք஋ςετ
    ϙΠϯτ: ແޮ஋͸ଞͷແޮ஋ΛӅ͢
    ྫʣ d6 ͱ͍͏ςετσʔλ
    false ʹͳΔͷ͸ d ͕ݪҼ͔ 6 ͔͕෼͔Βͳ͍ɻ
    ΞϧϑΝϕοτͷνΣοΫͱ਺ࣈͷνΣοΫͲͪΒ͕ઌʹߦΘΕ
    Δ͔͸࣮૷࣍ୈɻ
    ࣮૷ґଘͷյΕ΍͍͢ςετʹͳΔ͏͑ɺยํͷਖ਼͔͠͞͠อূ
    Ͱ͖ͳ͍ɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 49

    View Slide

  50. 2࣠ͷڥք஋ςετͷ·ͱΊ
    • ਖ਼ৗܥ͸ෳ਺ͷ༗ޮڥք஋Λಉ࣌ʹ֬ೝͰ͖Δ
    • ҟৗܥ͸༗ޮ஋ͱແޮ஋ͷ૊Έ߹ΘͤΛҰͭͣͭ֬ೝ͢Δ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 50

    View Slide

  51. ࣮૷ํ๏͕࣮֬ʹ૝ఆͰ͖Δ΋ͷ͸ྫ֎΋͋Γ
    RailsͷόϦσʔγϣϯ (ActiveModel::Varidations) ʹݶͬͯ
    ͸ errors ͔ΒݪҼ͕෼͔ΔͷͰແޮ஋͸ӅΕͳ͍ɻ
    ͨͩ͠ͻͱͭͷఆٛͰෳ਺ͷແޮ஋͕ݱΕΔ΋ͷ͸আ͘ɻ
    validates :code, format: { with: /[a-c][1-5]/ }
    # ਺஋ͱਅཧ஋ͷ૊Έ߹Θͤ
    validates :name, length: { maximum: 30 }, on: :create
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 51

    View Slide

  52. Ͱ΋ςετέʔεΛߜΓࠐΉࢦ਑͕
    ΠϚΠνΘ͔ΒΜ
    ʢ͔͠΋͕࣠͞Βʹ૿͑ͨΒ΋͏ѻ͍͖Εͳ
    ͦ͞͏…ʣ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 52

    View Slide

  53. υϝΠϯ෼ੳςετ
    ؔ࿈ͷ͋Δෳ਺ͷ࣠Λಉ࣌ʹςετ͢Δͱ͖ɺςετ͢΂͖஋ͷ
    ૊Έ߹ΘͤΛޮ཰Α͘෼ੳ͢Δํ๏
    ಉ஋Ϋϥεςετɺڥք஋ςετΛn࣍ͷଟ࣍ݩʹ֦ுɾҰൠԽ͠
    ͯߟ͑Δ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 53

    View Slide

  54. υϝΠϯ෼ੳςετ: ༻ޠͷ੔ཧ
    10
    7
    in
    out
    9 13
    on
    off
    x >= 10
    on: ڥք্ͷ஋
    in: ڥք৚݅Λຬ͕ͨ͢ڥք্ʹͳ͍஋
    off: ڥք৚݅Λຬͨ͞ͳ͍ɺڥքʹྡ઀͢Δ஋
    out: ڥք৚݅Λຬͨ͞ͳ͍஋
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 54

    View Slide

  55. υϝΠϯ෼ੳςετ
    લड़ͷ෦໳ίʔυΛྫʹ෼ੳͯ͠ΈΔɻ
    • ෦໳ίʔυ͸ ΞϧϑΝϕοτ[a-c] + ਺ࣈ[1-5] Ͱ͋Δ͜ͱ
    • ্هΛຬͨͨ͠Β trueɺຬͨ͞ͳ͔ͬͨΒ false Λฦ͢͜ͱ
    ʮυϝΠϯςετϚτϦΫεʯͱ͍͏ͷΛॻ͍ͯ෼ੳ͢Δɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 55

    View Slide

  56. 1 2 3 4 5 6 7 8
    [a-c] x >= ‘a’ on v
    off v
    x <= ‘c’ on v
    off v
    代表値 (in | on) v v v v
    [1-5] x >= ‘1’ on v
    off v
    x <= ‘5’ on v
    off v
    代表値 (in | on) v v v v
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 56

    View Slide

  57. 1 2 3 4 5 6 7 8
    [a-c] x >= ‘a’ on v
    off v
    x <= ‘c’ on v
    off v
    代表値 (in | on) v v v v
    [1-5] x >= ‘1’ on v
    off v
    x <= ‘5’ on v
    off v
    代表値 (in | on) v v v v
    υϝΠϯ෼ੳςετ
    • ແޮ஋͸ଞͷແޮ஋ΛӅ͢
    • ແޮ஋Λಉ࣌ʹςετ͠ͳ͍Α͏ʹɺ
    ยํͷม਺Λ୅ද஋ʹݻఆ͠ɺ΋͏ย
    ํΛมԽͤ͞Δ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 57

    View Slide

  58. 1 2 3 4 5 6 7 8
    [a-c] x >= ‘a’ on v
    off v
    x <= ‘c’ on v
    off v
    代表値 (in | on) v v v v
    [1-5] x >= ‘1’ on v
    off v
    x <= ‘5’ on v
    off v
    代表値 (in | on) v v v v
    লུͰ͖Δςετέʔε
    • ಉ͡૊Έ߹Θͤ͸΍Δඞཁ͕ͳ͍
    • ਖ਼ৗܥ͸޻෉࣍ୈͰҰ౓ʹςετՄೳ
    ୅ද஋Λ on ͱ͢Ε͹ɺ1, 3, 5, 7 ͸·ͱΊ
    ͯલड़ͷදͷΑ͏ʹͳΔɻ
    code valid?
    a1 ⭕
    c5 ⭕
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 58

    View Slide

  59. ͜͜·Ͱ͕਺஋Λѻ͏ςετٕ๏Ͱ
    ͨ͠
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 59

    View Slide

  60. ͜͏ͯ͠ߟ͑ͯΈΔͱҎ֎ͱԞ͕ਂ
    ͍
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 60

    View Slide

  61. ٳܜ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 61

    View Slide

  62. ୈχ෦
    ૊Έ߹ΘͤΛѻ͏ςετٕ๏
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 62

    View Slide

  63. ૊Έ߹Θͤςετ
    • OSXͱWindowsɺFirefoxͱChromeͱSafariɺ͜ΕΒΛ૊Έ߹Θ
    ͤͯ΋ͪΌΜͱಈ͘ͷ͔ʁ
    • Ұཡը໘ʹ৽ͨʹιʔτػೳΛ௥Ճͨ͠ɻطଘͷߜࠐػೳʹӨ
    ڹΛٴ΅͍ͯ͠ͳ͍͔ʁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 63

    View Slide

  64. ૊Έ߹Θͤςετ
    Ұݟؔ܎ͳ͍ͩΖ͏ͱࢥΘΕΔ૊߹ͤʹόά͸જΉ΋ͷɻ
    ͦΕΒΛ૊Έ߹Θͤͨͱ͖ʹɺຊ౰ʹ໰୊͕ى͜Βͳ͍͔Λ֬ೝ
    ͢Δςετɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 64

    View Slide

  65. ૊Έ߹Θͤςετ
    ͔͠͠૊Έ߹Θͤͷύϥϝʔλ͕૿͍͑ͯ͘ͱɺ૯౰ΓͰ͸๲େ
    ͳྔʹͳΔɻԿΒ͔ͷ߹ཧతͳϧʔϧͷ΋ͱʹ૊Έ߹ΘͤͷҰ෦
    Λςετ͍ͨ͠΋ͷɻ
    ֤ػೳ͕ʢ࢓্༷ʣ௚ߦ͓ͯ͠Γɺަޓ࡞༻͕গͳ͍͜ͱΛલఏ
    ʹͰ͖Ε͹ɺʮϖΞߏ੒ςετʯ͕ར༻Ͱ͖Δɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 65

    View Slide

  66. ϖΞߏ੒ςετ
    • શͯͷ૊Έ߹ΘͤͰ͸ͳ͘ɺύϥϝʔλؒͷϖΞͰςετ
    • {Android + Chrome + DoCoMo}
    • {iOS + Chrome + SoftBank}
    • ͜ΕͰ6ͭͷϖΞΛςετͨ͜͠ͱʹͳΔ
    • ଟ͘ͷόά͸ɺൺֱతগ਺ͷύϥϝʔλؒͷ૬ޓ࡞༻ʹΑΓҾ
    ͖ى͜͞ΕΔɺͱ͍͏ܦݧଇ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 66

    View Slide

  67. ୅දతͳϖΞߏ੒ςετ
    • ௚ަද
    • ϖΞϫΠζ๏
    ࠓճ͸͜ͷ2ͭΛ͞Βͬͱ঺հ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 67

    View Slide

  68. ͦͷલʹ: ૊Έ߹Θͤςετͷ஫ҙ఺
    ֤ػೳͷؔ࿈ੑ͕ʢ࢓্༷ʣ௿͍͜ͱ͕લఏͷςΫχοΫɻͦ͏
    Ͱͳ͍ػೳؒͰ͸ద༻Ͱ͖ͳ͍ɻ
    ʢ͜ͷલఏ͕ࡌͬͯͳ͍هࣄ͕ͨ·ʹ͋Δʣ
    ୯ମςετͳͲͰे෼ςετͨ͠͏͑ͰɺͦΕͧΕ͕૊Έ߹Θͤ
    ͯݺͼग़͍ͤͯΔ͔Λ݁߹ςετʢfeature spec ౳ʣͰ֬ೝ͢Δ
    ͷ͕ྑͦ͞͏ɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 68

    View Slide

  69. ௚ަද
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 69

    View Slide

  70. 1 2 3
    1 1 1 1
    2 1 2 2
    3 2 1 2
    4 2 2 1
    ௚ަද
    ΦΠϥʔͷ࣌୅ͷϥςϯํ֨Λɺ඼࣭޻
    ֶͱͯ͠ൃలͤͨ͞΋ͷɻ
    Ͳͷ2ྻΛͱͬͯ΋ɺͦͷ஋ͷશͯͷϖΞ
    ͕ಉ͡਺͚ͩݱΕΔΑ͏ʹ࡞ͬͨදɻ
    ӈਤ͸ ௚ަදͱݺ͹ΕΔ΋ͷͰɺ3ύ
    ϥϝʔλ2ਫ४ʹରԠɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 70

    View Slide

  71. ௚ަද͔ΒςετέʔεΛ࡞Δ
    1 2 3
    1 1 1 1
    2 1 2 2
    3 2 1 2
    4 2 2 1
    OS ブラウザ キャリア
    1 Android Chrome DoCoMo
    2 Android Firefox SB
    3 iOS Chrome SB
    4 iOS Firefox DoCoMo
    1ߦ໨͸ඞͣ1͕ฒͿɻ1ΛσϑΥϧτͱ͢Δͷ͕ྑ͍ɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 71

    View Slide

  72. ௚ަදͷಛ௃
    • ۉߧੑͷ੍໿
    • ΋͠ϖΞ͕ॏෳͯ͠ෳ਺ճݱΕΔͳΒɺͲͷϖΞ΋ಉ͡ճ਺ͩ
    ͚ݱΕΔ
    • 3ύϥϝʔλҎ্ͷؒͷ૊Έ߹Θͤ΋όϥϯεΑ͘ݱΕΔ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 72

    View Slide

  73. ௚ަදͷ೉఺
    • දͷ࡞੒ίετ͕ߴ͍
    • ؾܰʹ࡞Γ௚ͤͳ͍ɻදͷαΠζʹറΒΕɺطଘͷςετͷྲྀ
    ༻΍ςετͷলུ͕ى͜Γͦ͏
    • ௚ަදΛվྑ࣮͠༻తʹͨ͠HAYST๏͕͋Δ͕ɺπʔϧ͸༗ঈ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 73

    View Slide

  74. ϖΞϫΠζ๏ʢΦʔϧϖΞ๏ʣ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 74

    View Slide

  75. ϖΞϫΠζ๏
    2ύϥϝʔλؒͷ࠷খݶͷ૊Έ߹ΘͤʢϖΞʣ͚ͩΛอূɻ
    ௚ަදͷۉߧੑͷ੍໿ΛऔΓআ͘͜ͱͰɺ͞ΒʹςετέʔεΛ
    ݮΒ͢͜ͱ͕Ͱ͖Δɻ
    πʔϧ͕ଟ͘ެ։͞Ε͍ͯΔɻPICT3 ΍ CIT-BACH4 ͕༗໊
    4 h$p:/
    /www-ise4.ist.osaka-u.ac.jp/~t-tu6ya/CIT
    3 h$ps:/
    /github.com/Microso4/pict
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 75

    View Slide

  76. ϖΞϫΠζ๏: PICT
    Microso'͕OSSͰެ։͍ͯ͠Δςετέʔεੜ੒πʔϧɻϖΞͷ
    ੜ੒ʹରԠ͍ͯ͠Δɻ
    $ cat model.txt
    Role: Admin, General, Student, Guest
    Theme: Black, White, Red
    Login method: Google, ID/PW
    ૯౰ΓͳΒ 4 * 3 * 2 = 24 ௨Γ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 76

    View Slide

  77. $ pict model.txt
    Role Theme Login method
    Student White Google
    Student Black ID/PW
    Guest Black Google
    Student Red Google
    Admin White ID/PW
    General White ID/PW
    General Black Google
    Guest Red ID/PW
    Admin Red Google
    Admin Black ID/PW
    General Red ID/PW
    Guest White Google
    12௨Γ (50%) ʹ཈͑ΒΕͨʂ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 77

    View Slide

  78. ࠓճ͸3ύϥϝʔλ͕ͩͬͨɺ૯౰Γͱͷࠩ͸ύϥϝʔλ͕૿͑Δ
    ΄Ͳଟ͘ͳΔ5
    5 h$ps:/
    /msdn.microso1.com/en-us/library/cc150619.aspx
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 78

    View Slide

  79. ϖΞϫΠζ๏ͷ೉఺
    • 3ύϥϝʔλҎ্ͷؒͷ໢ཏ཰͸ߟྀ͞Εͳ͍
    • πʔϧʹΑͬͯ໢ཏͰ͖Δ͕100%໢ཏɻςετέʔε͸૿͑
    Δ
    • ܦݧతʹ10ʙ40%ͷόάΛݟಀͯ͠͠·͏ͱओு͢Δ࿦จ΋͋
    Δ6
    6 h$p:/
    /csrc.nist.gov/groups/SNS/acts/index.html
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 79

    View Slide

  80. ݁ہͲͬͪͷํ๏Λ࢖͏ͷ͕͍͍ͷ
    • ௚ަද͸૊Έ߹Θͤͷόϥϯε͕ྑ͍͕ɺύϥϝʔλ΍ਫ४ͷ
    ਺ɺදͷେ͖͞ͷ੍໿͋Γ
    • ઴ਐతʹίʔυΛҭ͍ͯͨͱ͖ɺ࢓༷มߋ͕ଟ͍ͱ͖͸޲͔ͳ
    ͍
    • ΑͬͯࣗಈςετΛॻ͖ͮΒ͍
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 80

    View Slide

  81. ීஈ࢖͍͸ϖΞϫΠζ๏͕͓͢͢Ί
    • ίϚϯυϥΠϯπʔϧ΋͋Δ
    • ௚ަද͸ෆ҆ఆͳର৅ͷ܏޲Λ෼ੳ͢Δͱ͖΍ɺड͚ೖΕςε
    τΛ͢Δͱ͖ʹ࢖͑ͦ͏
    • ͲͪΒͷํ๏΋ϛογϣϯΫϦςΟΧϧͳର৅ʹద༻͢Δ͔Ͳ
    ͏͔͸ݕ౼͕ඞཁ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 81

    View Slide

  82. େࣄͳͷ͸
    • ͲͷػೳͱҰॹʹ࢖ΘΕͦ͏͔ʁ
    • Ͳͷػೳͱ૊Έ߹ΘͤͨΒόά͕ग़ͦ͏͔ʁ
    • ͦΕͧΕͷػೳʹ͸ͲΜͳਫ४͕͋ΓಘΔ͔ʁ
    ͱ͍͏ߟ͑ํɺ࢓༷ͷཧղɺצɻ
    ͋΍͍͠ػೳɺਫ४Λݟ͚ͭଛͳͬͨΒɺͲΜͳʹ૊Έ߹ΘͤΑ
    ͏͕όά͸ݟ͚ͭΒΕͳ͍ɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 82

    View Slide

  83. ͪͳΈʹ
    ϖΞߏ੒ςετ͸ɺՊֶతʹ৴པੑΛূ໌ͨ͠࿦จ͕ࠓͷͱ͜Ζ
    ͳ͍ɻ
    ౷ܭɾ࣮੷͔Β࿦ͨ͡΋ͷ͸ଟ͘ग़͓ͯΓɺݱ৔Ͱ޿͘࢖ΘΕͯ
    ͍Δɻ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 83

    View Slide

  84. ·ͱΊ
    • ςετΛઃܭ͢Δ͜ͱͷେ੾͞Λ࿩ͨ͠
    • ໌೔͔Β࢖͑Δςετٕ๏Λ঺հͨ͠
    • ਺஋ͷςετ
    • ૊Έ߹Θͤͷςετ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 84

    View Slide

  85. ٕ๏ʹͱΒΘΕͳ͍͜ͱ
    ໨త͸ɺແݶͷςετέʔεͷத͔ΒޮՌతͳςετέʔεΛબ
    ͼग़͢͜ͱͰ͋ͬͯɺςετٕ๏Λ࣮ફ͢Δ͜ͱͰ͸ͳ͍
    • ո͍͠ͱࢥͬͨ͜ͱ͸ςετͯ͠ΈΔɻ௚ײΛ৴͡Δ
    • ͨͱ͑͹ɺԿ΋͠ͳ͔ͬͨΒͲ͏ͳΔͩΖ͏ʁͱࢥͬͨΒԿ΋
    ͠ͳ͍͜ͱΛςετͯ͠ΈΔ
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 85

    View Slide

  86. ໌೔͔ΒτϥΠ !
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 86

    View Slide

  87. Copyrights
    h"ps:/
    /flic.kr/p/gDqtze
    h"ps:/
    /flic.kr/p/9Sgawd
    h"ps:/
    /flic.kr/p/QFzL4S
    h"ps:/
    /flic.kr/p/9P1ebv
    h"ps:/
    /flic.kr/p/x1qSv
    h"ps:/
    /flic.kr/p/baoynZ
    h"ps:/
    /flic.kr/p/aDPTFx
    2017-02-17 גࣜձࣾສ༿ ؼࣾ೔ 87

    View Slide