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

設計のための、問題の捉え方〜ドメイン知識の暗黙知を形式知に〜(まとめ版)

Magnolia.K
November 10, 2018

 設計のための、問題の捉え方〜ドメイン知識の暗黙知を形式知に〜(まとめ版)

「2018/11/8 設計Night2018 powered by Classi」で発表した資料です
当日の資料のページ数が多すぎた(140ページ)ので、2/3くらいにまとめました

Magnolia.K

November 10, 2018
Tweet

More Decks by Magnolia.K

Other Decks in Technology

Transcript

  1. ઃܭͷͨΊͷɺ໰୊ͷଊ͑ํ
    ઃܭφΠτQPXFSFECZ$MBTTJ
    .BHOPMJB,
    ʙυϝΠϯ஌ࣝͷ҉໧஌Λܗࣜ஌ʹʙ
    ʲ·ͱΊ൛ʳ

    View Slide

  2. ͜Ε·Ͱͷઃܭʹؔ͢Δٞ࿦
    w ઃܭͱ͸l໰୊Λ෼ׂ͠ɺߏ଄Խ͢Δ͜ͱz
    w ద੾ʹߏ଄Խ͢ΔͨΊʹ͸ʮύλʔϯʯͱʮઃܭݪଇʯ
    ͕༗ޮͰ͋Δ
    w ʮύλʔϯʯΛద༻͢Δࢦ਑͕ʮઃܭݪଇʯ
    w ʮઃܭݪଇʯͷద༻͸ɺlͲ͕͜มΘΓ΍͍͢ϙΠϯτͳ
    ͷ͔zΛݟۃΊΔͱ͜Ζ͔Β
    l࣮گதܧγϦʔζʮ։ൃݱ৔Ͱ໾ཱͨͤΔͨΊͷઃܭݪଇͱύλʔϯʯCVJMEFSTDPOzΑΓ
    https://nekogata.hatenablog.com/entry/2018/09/10/163206

    View Slide

  3. ʮ࿦఺໰୊Λ͍͔ʹଊ͑Δͷ͔ʹ͍ͭͯʯ
    ʮ҉໧஌ͷϘτϧωοΫ͕Ͳ͏΍ͬͯઃܭݪଇΛ࢖͏͔
    Ͱ͸ͳ͘ɺ໰୊ͦͷ΋ͷͷଊ͑ํʹҠಈͨ͠ʯͱ΋ݴ͑
    ΔͰ͠ΐ͏ɻ͜ͷʮ໰୊ͦͷ΋ͷͱͷ޲͖߹͍ํʯͱ͍͏
    ࢹ఺Λઃܭ࿦ʹରͯ͠ಋೖͯͩ͘͠͞Δͷ͸ɺ,JDIJKPKJQN
    ͷΦʔΨφΠβʔͰ΋͋Δ!NBHOPMJB@L@ࢯͰ͢ɻ

    View Slide

  4. ࣗݾ঺հ
    5XJUUFS!NBHOPMJB@L@
    1FSMͱ4DBMB͕޷͖
    ઃܭʹ͍ͭͯͣͬͱߟ͍͑ͯΔ
    ٢঵ࣉQNΦʔΨφΠβʔ
    https://kichijojipm.connpass.com
    https://twitter.com/magnolia_k_

    View Slide

  5. ࠓ೔͓͸ͳ͢͠Δ͜ͱ
    ͦ΋ͦ΋ʮ໰୊Λଊ͑Δʯͱ͸
    ʮυϝΠϯ஌ࣝʯͷʮ҉໧஌ʯΛݟ͚ͭΔ
    ʮ҉໧஌ʯ͔Βʮܗࣜ஌ʯ΁ม͍͑ͯ͘
    ܧଓతʹɺl໰୊Λଊ͑ΔzͨΊʹ

    View Slide

  6. ͦ΋ͦ΋ʮ໰୊Λଊ͑Δʯͱ͸ʁ

    View Slide

  7. ݹయʹཱͪฦͬͯΈΔ
    ͜ͷຊʹ͸਺ֶΛղͨ͘Ίͷͭͷ
    εςοϓ͕ॻ͔Ε͍ͯΔ
    ໰୊Λཧղ͢Δ͜ͱ
    ܭըΛͨͯΔ͜ͱ
    ܭըΛ࣮ߦ͢Δ͜ͱ
    ;ΓฦͬͯΈΔ͜ͱ
    ͜Ε͸ιϑτ΢ΣΞͷ։ൃͷखॱͱ
    ಉ͡ͱݴ͑ΔͷͰ͸ͳ͍͔ʁ
    (ϙϦΞஶ
    ʮ͍͔ʹͯ͠໰୊Λͱ͔͘ʯ


    View Slide

  8. ͭͷεςοϓͷɺͭ໨ʮ໰୊Λཧղ͢Δ͜ͱʯʹ͸ɺ
    ·͞ʹʮ໰୊Λଊ͑Δ͜ͱʯͦͷ΋ͷ͕ॻ͔Ε͍ͯΔ
    ໰୊Λཧղ͢Δ͜ͱ ཁ໿

    㾎 ະ஌ͷ΋ͷɺσʔλɺ৚݅͸Կ͔ʁ
    㾎 ৚݅͸े෼͔ʁໃ६͍ͯ͠ͳ͍͔ʁ
    㾎 ৚݅͸͔͖ද͢͜ͱ͕Ͱ͖Δ͔ʁ

    View Slide

  9. ৚݅͸
    ͔͖ද͢͜ͱ͕
    Ͱ͖Δ͔ʁ

    View Slide

  10. έʔεελσΟ

    View Slide

  11. έʔεελσΟͱͯ͠ɺ༩͑ΒΕͨ೥ྸʹ

    ͳΔ೔෇Λࢉग़͢Δίʔυʹ͍ͭͯߟ͑Δ
    l͋Δ೥ྸʹͳΔ೔zΛٻΊΔܭࢉํ๏͸ɺҎԼͷ௨Γ
    ೥ྸ͕Ճࢉ͞ΕΔͷ͸ɺىࢉ೔ʹԠ౰͢Δ೔ͷલ೔ͷ
    ຬྃ࣌ ޕޙ࣌ʣ
    ͭ·Γɺ๏཯্͸஀ੜ೔ͷલ೔ʹ೥ྸ͕Ճࢉ͞ΕΔ
    ྫɿ೥݄೔ੜ·Εͷਓ͸೥݄೔ʹ
    ࡀʹ౸ୡ͢Δ ࠜڌ๏ɿ೥ྸܭࢉχؔεϧ๏཯
    w ೥ྸ͸ग़ੜͷ೔ΑΓ೭Λىࢉ͢
    w ຽ๏ୈ৚ͷنఆ͸೥ྸͷܭࢉʹ೭Λ४༻͢

    View Slide

  12. ͱΓ࣮͋͑ͣ૷ͯ͠Έͨ
    ೔෇ͷࢉग़ʹ͸3VCZͷ%BUFϞδϡʔϧΛར༻
    require "date"
    def calc_arrival_day(b_year, b_month , b_day, age)
    birthday = Date.new(b_year, b_month, b_day)
    arrival_day = birthday.next_year(age).prev_day(1)
    arrival_day.to_s
    end
    p calc_arrival_day(2000, 11, 8, 18) # “2018-11-07”
    ਖ਼͍͠೔͕ࢉग़͞Ε͍ͯΔ

    View Slide

  13. ೔෇ͷॲཧͳΜ͔ͩΒ
    ஀ੜ೔͕݄೔ͷਓΛ
    ߟྀͯ͠ΔΑͶʁ
    ͱΓ͋͑ͣಈ͍ͨʜͰ΋ϨϏϡΞʔ͔Βͷࢦఠ

    View Slide

  14. p calc_arrival_day(2000, 2, 29, 18)
    ʊਓਓਓਓਓਓਓਓਓʊ
    ʼɹ"2018-02-27"ɹʻ
    ʉY^Y^Y^Y^Y^Y^Y^Yʉ
    ͔֬ʹɺ݄೔͕஀ੜ೔ͷ৔߹ɺਖ਼͘͠ͳ͍
    ݁Ռ͕ܭࢉ͞ΕΔ
    ʜͳ͔ͥʁ

    View Slide

  15. OFYU@ZFBS͸ܭࢉͨ͠೔෇͕ଘࡏ͠ͳ͍೔ͷ
    ৔߹ɺଘࡏ͢Δ೔·Ͱ೔Λݮࢉ͠·͢
    https://docs.ruby-lang.org/ja/latest/method/Date/i/next_year.html
    ͭ·Γɺ೥ʹ݄೔͸ͳ͍ͷͰɺ೥݄೔
    ͕ࢉग़͞ΕɺQSFW@EBZͰߋʹͦͷ೔લ͕ࢉग़͞Εͨ

    View Slide

  16. ͍΍ɺ๏཯ͷͲ͜ʹ΋
    ͦΜͳ৚݅͸ॻ͍ͯͳ͍͠ʜ
    ࢥΘͣɺ͜͏ݴ͍ͨ͘ͳΓ·͢Ͷ

    View Slide

  17. ݄೔ੜ·ΕΛߟྀ࣮ͨ͠૷ʹม͑ͯΈͨ
    require "date"
    def calc_arrival_day(b_year, b_month , b_day, age)
    birthday = Date.new(b_year, b_month, b_day)
    arrival_day = birthday.prev_day(1).next_year(age)
    arrival_day.to_s
    end
    p calc_arrival_day(2000, 2, 29, 18) # “2018-2-28”
    ݄೔ੜ·Ε΋ਖ਼͘͠ͳͬͨ

    View Slide

  18. ৚݅͸ɺl͔͖ද͞Εͯz͍͔ͨʁ
    ʮ೥ྸܭࢉχؔεϧ๏཯ʯ͕ࣔ͢ܭࢉํ๏͸ɺγϯϓϧ
    ͳϧʔϧͰʮ݄೔ੜ·Εʯͱ͍͏ಛҟͳ৚݅΁lରԠ
    Ͱ͖ͯ͠·͍ͬͯΔzʜ͔͠͠ɺٯʹͦͷ͜ͱ͕lಛҟͳ
    ৚݅ͷଘࡏΛ෼͔Γʹ͘͘z͍ͯ͠Δɺͱ΋ݴ͑Δ
    Ծʹɺޙऀͷ࣮૷͕࠷ॳ͔Β༗ͬͨͱͯ͠ɺίʔυ্ʹ
    ͸Ͳ͜ʹ΋݄೔͸ग़ͯ͜ͳ͍͜ͱʹ͸มΘΒͳ͍

    View Slide

  19. ৚݅Λl͔͖ද͢zͨΊʹɺͳʹΛ͢Δ͔ʁ
    ݱঢ়͸ʮ͏Δ͏೥Ҏ֎ͷ݄೔Λߟྀ͢Δʯͱ
    ͍͏ઃܭͷҙਤ͕ίʔυ্͸ӅΕͯ͠·͍ͬͯΔ
    ޙੈͷਓʹɺ͜ͷҙਤΛ࢒͢΂͖Ͱ͸ʁ

    View Slide

  20. ྫ͑͹ɺςετΛॻ͍ͯҙਤΛ࢒͢
    require 'test/unit'
    class TestArrivalDay < Test::Unit::TestCase
    def test_calc_arrival_day
    assert_equal '2018-11-07', calc_arrival_day(2000, 11, 8, 18)
    assert_equal '2018-02-28', calc_arrival_day(2000, 2, 29, 18)
    assert_equal '2017-12-31', calc_arrival_day(2000, 1, 1, 18)
    end
    end
    ·ͨɺ݄೔ʹର͢ΔϩδοΫΛ͋͑ͯ໌ࣔతʹೖΕɺ
    ҙਤͷ෼͔Γ΍͢͞Λ༏ઌ͢Δํ๏΋ʜ͋Δ͔΋͠Εͳ͍

    View Slide

  21. ৚݅Λl͔͖ද͢zͷ͸ɺ೉͍͠
    ೔෇ͷܭࢉͰ͏Δ͏೥ͷ݄೔Λߟྀ͢Δͱ͍͏ͷ͸
    ൺֱత෼͔Γ΍͍͢ࣄྫʜ
    ݱ࣮ʹ͸ɺ౸ୡ͢Δͷ͕೉͍͠৚͕݅͋Γɺ໰୊Λղ͘
    ʹ͋ͨͬͯɺඞཁͳ৚݅Λl͔͖ද͢zͷ͸༰қͰ͸ͳ͍

    View Slide

  22. ʮ໰୊Λଊ͑Δʯͱ͸ɺ(ϙϦΞͷݴ༿ΛआΓΕ͹ɺ
    ໰୊Λߏ੒͢Δͭͷཁૉ
    ʮະ஌ͷ΋ͷʯʮσʔλʯʮ৚݅ʯΛ

    lద੾ʹἧ͑Δz͜ͱɺͱݴ͑ΔͷͰ͸ͳ͍͔

    View Slide

  23. ݱ࣮ʹ͸͜ͷͭͷཁૉͷ͏ͪɺ
    ʮ৚݅ʯΛlద੾ʹἧ͑Δ͜ͱz͸೉͍͠
    ͳ͔ͥʁ
    ͦ͜Ͱग़ͯ͘ΔΩʔϫʔυ͕ʜ

    View Slide

  24. ʮυϝΠϯ஌ࣝʯͷʮ҉໧஌ʯ

    View Slide

  25. ʮυϝΠϯ஌ࣝʯͱɺʮ҉໧஌ʯ
    w υϝΠϯͱ͸ɺl ׆ಈŋؔ৺ŋ஌ࣝͳͲͷ
    ෼໺ ྖҬ ൣғz
    ͷ͜ͱ
    w ͭ·ΓɺʮυϝΠϯ஌ࣝʯͱ͸ɺ͍·औΓ૊ΜͰ͍Δ໰୊
    ͷ෼໺ɺྖҬʹؔ࿈͢Δ஌ࣝ
    w ʮ҉໧஌ʯͱ͸ɺݴޠԽɾه߸Խ͞Ε͍ͯͳ͍஌

    ˰ͭ·Γɺॻ͔Ε͍ͯͳ͍͜ͱ

    View Slide

  26. ͭ·ΓʮυϝΠϯ஌ࣝʯͷʮ҉໧஌ʯͱ͸ɺ

    ໰୊ʹؔ͢Δl͔͖ද͞Ε͍ͯͳ͍z஌ࣝ

    View Slide

  27. ઌ΄Ͳͷ೥ྸͷ౸ୡ೔ͷྫͰ͍͑͹ʜ
    ʲະ஌ͷ͜ͱʳ
    ɹ೥ྸ౸ୡ೔Λࢉग़͢ΔϓϩάϥϜͱ͸ʁ
    ɹbirthday.prev_day(1).next_year(age)
    ʲσʔλʳ
    ɹੜ·Ε͸ɺʹࡀʹ౸ୡ
    ʲ৚݅ʳ
    ɹ݄೔ੜ·ΕΛߟྀ͢Δ
    ɹʢ͏Δ͏೥Ҏ֎ʹ͸݄೔͸ଘࡏ͠ͳ͍ʣ

    View Slide

  28. ๏཯ͷ৚จ͚ͩͰ͸ɺ໰୊Λద੾ʹཧղ͢ΔͨΊ
    ʹඞཁͳʮ৚݅ʯ͕lυϝΠϯ஌ࣝͷ҉໧஌zͱͯ͠
    ӅΕͯ͠·͍ͬͯͨ
    ҰํͰɺ೔෇Λѻ͏ϓϩάϥϜΛॻ͍ͨܦݧͷ༗ΔਓͰ͋Ε͹ɺ݄೔Λߟྀ
    ͢Δ͜ͱʹ͸ൺֱత༰қʹࢸΔʜͱࢥΘΕΔ͕ʜ୯ͳΔܦݧ͸҉໧஌ʹͳΔқ͍
    ʢ%BUFϞδϡʔϧͷυΩϡϝϯτʹ΋ͪΌΜͱॻ͔Ε͍ͯͨʣ

    View Slide

  29. Ͱ͸ɺͲ͏͢Ε͹Α͍͔ʁ
    ஌͍ͬͯΔਓʹฉ͚͹ղܾ͢Δ͔ʁ

    View Slide

  30. ͸͊ʜͳʹΛݴ͑͹͍͍ͷʁ
    ͋ͳͨͷ஌͍ͬͯΔ҉໧஌Λڭ͍͑ͯͩ͘͞
    ίϨ͡Όͳ͍ײ

    View Slide

  31. ʮ҉໧஌ʯ͕જΜͰ͍ͦ͏ͳ৔ॴΛߟ͑ͯΈΔ

    View Slide

  32. ࣄ࣮
    ؔ܎
    ݪଇ

    View Slide

  33. ʮखॱʯʮྺ࢙ࠜڌʯͱ͍ͬͨlࣄ࣮z͸ɺ

    ҉໧஌ʹͳΓ͕ͪ
    㾎 ඞཁͳखॱ͕ɺखॱॻʹॻ͔Ε͍ͯͳ͍
    㾎 ࣮ࢪ͍ͯ͠Δਓ΋ҙࣝ͠ͳ͍࡞ۀͷ֬ೝ؍఺
    㾎 ཤྺ ϩά
    ͷ࢒͞Ε͍ͯͳ͍มߋͷ਺ʑ
    㾎 ઃܭࠜڌͷ෼͔Βͳ͍ػೳͷ਺ʑ
    ࣄ࣮͕l͔͖ද͞Ε͍ͯͳ͍z͜ͱͰɺޙੈͷਓ͕ػೳΛཧղվम͢ΔͨΊ
    ͷʮ৚݅ʯ͕༰қʹἧΘͳ͘ͳͬͯ͠·͏
    ͳͲͳͲʜ

    View Slide

  34. ஌͍ͬͯΔਓ͸ɺॻ͔Εͯͳͯ͘΋ࠔΒͳ͍͔Β

    View Slide

  35. lؔ܎z͸ɺlࣄ࣮zҎ্ʹ҉໧஌ʹͳΓ͕ͪ
    㾎 ૬ޓʹؔ࿈͢ΔෳࡶͳϏδωεཁٻͱɺγεςϜͷؔ܎
    㾎 άϩʔόϧม਺͕ଟ༻͞ΕͨϞδϡʔϧߏ଄
    㾎 ࢀরͷͨΊʹ৚݅ͷଟ͍ςʔϒϧઃܭ

    औফ͸আ͘ɺ࣮͸࠶ܝɺॳظ஋͚ͩҧ͏ʜ౳

    ͳͲͳͲʜ
    ؔ܎͕l͔͖ද͞Ε͍ͯͳ͍z͜ͱͰɺͲ͏ḷ͍͚ͬͯ͹෼͔Βͣ༰қʹ
    ʮ৚݅ʯʹͨͲΓண͚ͳ͘ͳͬͯ͠·͏

    View Slide

  36. ʮؔ܎ʯ͸ɺl໰୊ʹର͢Δࢹ఺zʜ
    ࣄ࣮͚ͩΛฒ΂ͯ΋ݟ͑ͯ͜ͳ͍

    View Slide

  37. Ճ͑ͯɺؔ܎Λݴ༿͚ͩͰ
    ਖ਼֬ʹදݱ͢Δͷ͸೉͍͠

    View Slide

  38. ʮنଇʯͱҧͬͯɺlݪଇz͸҉໧஌ʹͳΓ͕ͪ
    㾎 ໋໊͕౷Ұ͞Ε͍ͯͳ͍͕ɺͦͷ๏ଇ͕෼͔Βͳ͍

    ΄ͱΜͲϩʔϚࣈͰɺҰ෦ӳޠͱ͔ʣ
    㾎 ػೳ෼ׂͷ୯ҐϞδϡʔϧཻ౓͕ಛఆͷػೳ͚ͩҟͳΔ
    ͕ɺͦͷࢦ਑͕෼͔Βͳ͍

    ʢ໌Β͔ʹಛఆͷ୲౰ऀͷ͚࣌ͩ࡞Γ͕ҧ͏ͱ͔ʣ
    ͳͲͳͲʜ
    ݪଇ͕l͔͖ද͞Ε͍ͯͳ͍z͜ͱͰɺͦΕ·ͰकΒΕ͖ͯͨ͸ͣͷ
    ʮ৚݅ʯ͕ݟ͑ͳ͘ͳͬͯ͠·͏

    View Slide

  39. ιϑτ΢ΣΞʹ͓͍ͯlҰ؏ੑz͸ඇৗʹॏཁͳཁૉ
    lҰ؏ੑz͸ɺʮنଇʯ΍ʮݪଇʯʹΑͬͯ΋ͨΒ͞ΕΔ
    Ұ؏ੑ͕ܽ೗ͨ͠ͱ͜Ζʹ͸όά͕જΈ΍͍͢ʜօ͞Μࢥ͍౰ͨΓ·͢ΑͶʁ

    View Slide

  40. ʮنଇʯͱɺʮݪଇʯ
    w ʮنଇʯ͸໌จԽ͞Ε͍ͯΔ΋ͷʢ͞Ε͍ͯΔΑͶʁʣ
    w ʮݪଇʯ͸ඞͣ͠΋໌จԽ͞Ε͍ͯΔͱ͸ݶΒͳ͍
    w ແҙࣝʹܾΊͨݪଇʹैͬͯઃܭ͠ɺຊਓ͕͍֮ࣗͯ͠ͳ
    ͍ͱ͖ͩͬͯ͋ΔʢͳΜͱͳܾ͘Ίͨʜͱ͍͏΍ͭʣ
    w ʮݪଇʯΛܾΊͯ΋ྫ֎΋ؚΊͯશͯ໢ཏ͢Δͷ͸೉͍͠
    w ͦ΋ͦ΋ʮݪଇʯΛܾΊΔΑ͏ͳॳظͷஈ֊Ͱ͸ɺͦ͜·
    Ͱߟ͍͑ͯͳ͍ɺߟ͑ΒΕͳ͍

    View Slide

  41. ʮݪଇʯͷlྫ֎zΛɺ
    ࠷ॳ͔Β໢ཏతʹڍ͛Δͷ͸೉͍͠

    View Slide

  42. ͋ΒΏΔʮݪଇʯΛॻ͖ग़ͦ͏ͱ͢Δͱɺ
    lࣗ෼ͷର࿩zΈ͍ͨʹͳͬͯɺ໘౗͍͘͞

    View Slide

  43. ࣄ࣮ʜ෼͔ͬͯΔ͜ͱ͸ॻ͔Εͳ͍
    ؔ܎ʜԿ͕ඞཁ͔ɺ༧Ί෼͔Βͳ͍
    ݪଇʜྫ֎΋ؚΊͯॻ͖͖Εͳ͍
    ɹɹɹͦ΋ͦ΋ҙࣝͯ͠ͳ͍
    ͳͥ҉໧஌ʹͳͬͯ͠·͏ͷ͔ʁ

    View Slide

  44. Ͱ͸ɺڭ͑ͯ΋ΒͬͨΓɺ
    ࣗ෼ͷதʹ͋Δ҉໧஌͸
    Ͳ͏͢Ε͹͍͍͔ʁ

    View Slide

  45. ʮ҉໧஌ʯ͔Βʮܗࣜ஌ʯ΁

    View Slide

  46. ʮܗࣜ஌ʯʹ͍ͯ͘͠
    w ʮܗࣜ஌ʯͱ͸ɺݴޠԽɾه߸Խ͞Ε͍ͯΔ஌

    ˰ͭ·Γɺॻ͔Ε͍ͯΔ͜ͱ

    View Slide

  47. ʮࣄ࣮ʯΛlܗࣜ஌zʹ

    View Slide

  48. 8)Ͱɺ͔͖ද͢

    View Slide

  49. 8)
    w 8IFO ͍ͭ

    w 8IFSF Ͳ͜Ͱ

    w 8IP ͩΕ͕

    w 8IBU ͳʹΛ

    w 8IZ ͳͥ

    w )PX Ͳ͏΍ͬͯ

    View Slide

  50. Ͳ͜ʹॻ͔͘ʁ
    ͍͞Θ͍ɺϓϩάϥϜ͸ʮखॱʯɺͭ·ΓIPXͦͷ΋ͷ
    ͔͠͠ɺίʔυࣗମʹIPX͸༗ͬͯ΋ɺXIZΛॻ͘৔ॴ
    Ͱ͸ͳ͍
    Ͱ͸ɺͲ͜ʹॻ͘΂͖͔ʁ

    View Slide

  51. https://twitter.com/t_wada/status/904916106153828352
    ͦΕͧΕɺॻ͘ͷʹ;͞Θ͍͠৔ॴ΋ߟ͑Δ

    View Slide

  52. ࢒͢৔ॴ͸ɺະདྷΛߟܾ͑ͯΊ͍ͯ͘
    ςετίʔυɺίϛοτϩάɺίʔυίϝϯτɺ
    3&"%.&ɺ(JU)VCɺ2JJUBɺ4MBDLɺXJLJɺ
    ݴޠͷυΩϡϝϯτػೳ +BWBEPDͱ͔
    ʜ
    ͱʹ͔ͪ͘ΌΜͱݕࡧͰ͖ɺޙੈͷਓ͕౸ୡͰ͖Δ৔ॴɺ
    ࢀরͰ͖ΔܗࣜͰ࢒͢

    View Slide

  53. ݸਓͷ1$ͷϩʔΧϧ
    ΞʔΧΠϒ͞Εͳ͍.-
    μϝɺઈର!

    View Slide

  54. lؔ܎zΛܗࣜ஌ʹ

    View Slide

  55. ਤ΍දͰɺ͔͖ද͢

    View Slide

  56. ਤ΍දͰɺ͔͖ද͢
    w ͞·͟·ͳਤ๏ɾه๏͸ɺूΊΒΕͨࣄ࣮͔Βؔ܎Λಋ
    ग़͢ΔͨΊͷʮࢹ఺ʯΛఏڙ͢Δ
    w ΑΓϏδωεཁٻʹ͍ۙϨΠϠʔΛ͔͖ද͢ʹ͸దͨ͠
    ʮϏδωεϑϨʔϜϫʔΫʯ͕ࢀߟʹͳΔ
    ‎ ྫ͑͹ʮ"T*T5P#FϞσϧʯʮϩδοΫπϦʔʯ౳
    w ΑΓίʔυʹ͍ۙϨΠϠʔΛ͔͖ද͢ʹ͸ඪ४Խ͞Εͨ

    lϞσϦϯάਤ๏zΛ࢖͏
    ‎ ྫ͑͹ʮ&3ਤʯʮ6.- $MBTTਤ4FRVFODFਤʜ
    ʯ౳

    View Slide

  57. ͳͥؔ܎Λ͔͖ද͔͢ʁ
    Ϋϥεܧঝ΍ςʔϒϧͷϦϨʔγϣϯΛఆٛ͠ͳͯ͘΋ɺ
    ಈ͘ίʔυ͸ॻ͚Δ
    ͔͠͠ɺͦΕͰ͸ઃܭऀͷҙਤ͸఻ΘΒͳ͍ͷͰɺະདྷ
    ͷͨΊʹɺҙਤͨ͠lؔ܎zΛه๏ɾਤ๏Ͱ఻͑Δ

    View Slide

  58. lؔ܎zΛίʔυʹຒΊࠐΉ
    lؔ܎z͸ίʔυʹຒΊࠐ·ΕΕ͹ɺΑΓ໌֬ͳʮ੍໿ʯ
    ͱͳΓɺʮlΑΓڧ͍zܗࣜ஌ʯͱͳΔ
    ʢݴޠػೳͰΫϥεܧঝΛఆٛ͢Δɺ%#.4ͷεΩʔϚ
    ʹϦϨʔγϣϯΛషΔ౳ʣ

    View Slide

  59. طଘͷਤ๏ɾه๏͸͋͘·ͰϕετϓϥΫςΟεʜ

    ࢀߟʹ͸ͳΔ͕ɺ߆Γա͗ͣɺ؆қͰ΋ΞυϗοΫͰ΋
    ͍͍ͷͰɺ·ͣ͸ඳ͍ͯΈΔ

    View Slide

  60. ܁Γฦ͚͢Ͳɺʮؔ܎ʯ͸l໰୊ʹର͢Δࢹ఺zɺ
    ͭ·Γlઃܭऀͷҙਤz͕࢒Γɺ఻ΘΔ͜ͱ͕େࣄ

    View Slide

  61. ʮݪଇʯΛlܗࣜ஌zʹ

    View Slide

  62. ࢒೦ͳ͕ΒɺʮݪଇʯΛܗࣜ஌ʹ͢Δఆܕతͳ
    ख๏͸·ͩແͦ͞͏ʜݴ༿จষͰॻ͍͍ͯ͜͏

    ʢ༗ͬͨΒڭ͍͑ͯͩ͘͞ʣ

    View Slide

  63. ݫີʹߟ͑͗ͣ͢ɺlݪଇ͸ΏΔ΍͔ͳҰ؏ੑΛ
    ΋Βͨ͢΋ͷz͘Β͍ʹଊ͑ͯɺ͔͖ද͍ͯ͘͠

    View Slide

  64. ʮઃܭݪଇʯʮ։ൃํ਑ʯʮઃܭࢥ૝ʯͳͲɺ
    ࠷ॳ͸ࢄʑٞ࿦͢Δͷʹɺ๨ΕڈΒΕ͕ͪ

    View Slide

  65. ܧଓతʹɺ
    l໰୊Λଊ͑ΔzͨΊʹ

    View Slide

  66. Ұ൪େࣄͳ࿦఺

    View Slide

  67. lͲ͜·Ͱ΍Ε͹͍͍ͷ͔ʁz

    View Slide

  68. έʔεόΠέʔεͬͯ
    ݴ͍ͨ͘ͳͬͯ͘Δ΍ͭ

    View Slide

  69. ಛʹʮؔ܎ʯ͸ɺͭ·Γlࢹ఺zͳͷͰɺ༨ܭͳlࢹ఺z͸
    ٯʹࠞཚΛট͖ɺ޻਺΋͔͔Δ
    ͭ·Γʮૣ͗͢Δ࠷దԽ͸ѱʯͱ͍͏ɺ͍ͭ΋ͷ࿩ʹܨ
    ͕͍ͬͯ͘

    View Slide

  70. ๲େ͗͢Δʮܗࣜ஌ʯ͸ɺlܗࣜ஌ͷಡΈऔΓํz
    ͱ͍͏ʮ҉໧஌ʯΛੜΈग़͢
    ͓ͳ͡Έͷྫɿ
    EnterpriseQualityCoding/FizzBuzzEnterpriseEdition

    View Slide

  71. ׬ᘳΛ໨ࢦ͗͢͠ͳ͍ͨΊͷɺͭͷج४
    ʮޙ೚ʹ·ͬͨ͘ɺಉۤ͡࿑Λͤ͞ͳ͍ʯ
    ʮมߋ͞Ε΍͍͢ͱ͜Ζ͸Ͳ͔͜ʁʯ
    ಛʹޙऀ͸ɺ֎ΕΔՄೳੑ͸౰વ༗Δ͚Ͳ

    ʮมߋ͞Ε΍͍͢ʯΠίʔϧʮՁ஋͕ߴ͍Օॴʯ

    Մೳੑ͕ߴ͍ͷͰɺগͳ͘ͱ΋ͦͷٞ࿦͸ແବʹͳΒͳ͍

    View Slide

  72. ͜Ε·Ͱͷ࿩Λ·ͱΊ·͢

    View Slide

  73. l໰୊Λଊ͑Δzͱ͸ɺl໰୊Λཧղ͢Δz͜ͱ
    ͦͷͨΊʹ͸ɺ͜Ε·ͰੵΈॏͶΒΕͨʮࣄ࣮ʯͱɺͦ
    ͷؒʹ͋Δʮؔ܎ʯΛఆٛ͠ɺͦΕΒ͕ಋ͔Ε͖ͯͨʮݪ
    ଇʯΛݴ༿ʹॻ͖දͯ͠ΈΔ
    ͦ͏͢Δ͜ͱͰ໰୊Λཧղ͢ΔͨΊʹඞཁͳʮ৚݅ʯ͕
    ἧͬͯ͘Δ

    View Slide

  74. ࠓ೔͓͸ͳͨ͜͠͠ͱ ·ͱΊ

    w ͦ΋ͦ΋ʮ໰୊Λଊ͑Δʯͱ͸
    w ʮυϝΠϯ஌ࣝʯͷʮ҉໧஌ʯΛݟ͚ͭΔ
    w ʮ҉໧஌ʯ͔Βʮܗࣜ஌ʯ΁ม͍͑ͯ͘
    w ܧଓతʹɺl໰୊Λଊ͑ΔzͨΊʹ

    View Slide

  75. w ͦ΋ͦ΋ʮ໰୊Λଊ͑Δʯͱ͸
    㾎 ໰୊ʹؔ͢Δʮະ஌ͷ͜ͱʯʮσʔλʯʮ৚݅ʯͷ

    ཁૉΛἧ͑Δ͜ͱ
    㾎 ͔͠͠ɺͦͷதͰʮ৚݅ʯΛἧ͑Δͷ͸೉͍͠

    View Slide

  76. w ʮυϝΠϯ஌ࣝʯͷʮ҉໧஌ʯΛݟ͚ͭΔ
    㾎 ʮ৚݅ʯΛἧ͑Δͷ͕೉͍͠ͷ͸ɺ໰୊ʹؔ͢Δ

    ʮυϝΠϯ஌ࣝʯ͕ʮ҉໧஌ʯʹͳ͍ͬͯΔ͔Β
    㾎 l҉໧஌zʹͳ͍ͬͯΔʮ৚݅ʯΛ୳ͨ͢Ίʹ͸

    ʮࣄ࣮ʯʮؔ܎ʯʮݪଇʯʹண໨͢ΔͱΑ͍

    View Slide

  77. w ʮ҉໧஌ʯΛʮܗࣜ஌ʯʹม͍͑ͯ͘
    㾎 ʮࣄ࣮ʯ͸ɺl8)zΛ໌Β͔ʹ͢Δ
    㾎 ʮؔ܎ʯ͸ɺlࢹ఺zΛ༩͑Δਤ๏ɾه๏Λ࢖͏
    㾎 ʮݪଇʯ͸ɺlΏΔ΍͔ͳҰ؏ੑzͱଊ͑ɺ࠷ॳʹ

    ߟ͑ͨ͜ͱΛॻ͖ग़ͯ͠ΈΔ

    View Slide

  78. w ܧଓతʹɺl໰୊Λଊ͑ΔzͨΊʹ
    㾎 lܗࣜ஌zʹ׬શ͸ແ͍ͷͰɺ׬શΛ໨ࢦ͞ͳ͍
    㾎 ଞͷਓʹlಉۤ͡࿑͸ͤ͞ͳ͍zͱɺ͜ͷઌ

    lมΘΓͦ͏ͳͱ͜Ζzͱ͍͏؍఺ʹ஫ྗ͢Δ

    View Slide

  79. ࠓ೔࿩͞ͳ͔ͬͨ͜ͱ
    w ࣮͸ɺʮج४ʯ΋҉໧஌ʹͳΓ͕ͪ
    w ࣮͸ɺʮσʔλʯ΋ἧ͑Δͷ΋೉͍͠
    w ʮ෼ੳʯʹΑͬͯʮະ஌ͷ͜ͱʯ͸มΘΔ͜ͱ͕͋Δ
    w ݁ہɺἧ͑ͨཁૉΛʮ෼ੳʯ͠ɺͦͷ݁ՌΛͲ͏΍ͬͯ
    ʮઃܭʯʹܨ͍Ͱ͍͔͘ʁ

    View Slide

  80. ࠷ޙʹઃܭʹ͍ͭͯ޷͖ͳ
    ݴ༿Λ঺հͯ͠కΊ·͢

    View Slide

  81. Dick Hamming
    ʮޡͬͨ໰୊Λਖ਼͘͠ղ͘ΑΓ΋ɺ
    ਖ਼͍͠໰୊Λޡͬͨํ๏Ͱղ͘ํ͕Α͍ʯ

    View Slide

  82. ޚਗ਼ௌ#
    ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide

  83. ڞಉԽ දग़Խ
    ࿈݁Խ
    ಺໘Խ
    ҉໧஌
    ܗࣜ஌ ܗࣜ஌
    ҉໧஌
    ܗ


    ܗ


    ҉


    ҉


    ໺தҮ࣍࿠ஶ
    ʮ஌ࣝ૑଄اۀʯ
    ʮ҉໧஌ʯ˰ʮܗࣜ஌Խʯͱ͍͑͹ɺ4&$*Ϟσϧ͕஌ΒΕ͍ͯΔ
    ྫ͑͹ϖΞϓϩ͸ɺʮڞಉԽʯͷϓϩηεͦͷ΋ͷͱݴ͑Δ
    ʲࢀߟจݙʳ

    View Slide