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

質とスピード / Quality and Speed

質とスピード / Quality and Speed

質とスピード
初演: 2019/10/31 @ EOF2019

Takuto Wada
PRO

October 31, 2019
Tweet

More Decks by Takuto Wada

Other Decks in Programming

Transcript

  1. ࣭ͱεϐʔυ
    ࿨ా୎ਓ [email protected]

    0DU !&0'

    View Slide

  2. UXBEB
    [email protected]
    UXBEB
    ࿨ా୎ਓ

    View Slide

  3. ۀքͰͷཱͪҐஔಠΓา͖͢Δελϯυ

    View Slide

  4. " $
    ΑΖ͓͘͠ئ͍͠·͢
    "

    View Slide

  5. ༩͑ΒΕͨ࣌ؒʹରͯ͠΍Δ΂͖͜ͱ͕ଟ͗͢Δ৔߹ɺ
    Ͳ͏͢΂͖͔ ʢ˞ͪͳΈʹਖ਼ղ͸Bʣ
    B
    είʔϓΛ࡟Δ
    C
    ΋ͬͱਓΛ૿΍͢
    D
    ϦϦʔε೔ΛԆظ͢Δ
    E
    ඼࣭Λ٘ਜ਼ʹ͢Δ
    ʰΞδϟΠϧαϜϥΠʱQ
    ߥͿΔ࢛ఱԦ͕͋ΒΘΕͨʂ

    View Slide

  6. ඼࣭Λ٘ਜ਼ʹ͢Ε͹εϐʔυ͸ಘΒΕΔʁ
    w୹ظతʹ͸ಘΒΕΔ
    wதظతʹ͸ٯޮՌʹͳΔ
    w௕ظతʹ͸க໋ইʹͳΔ

    View Slide

  7. ͦ΋ͦ΋
    ͜͜Ͱ͍͏
    ʮ඼࣭ʯͱ͸ʁ

    View Slide

  8. ඼࣭ͱ͸Կ͔

    View Slide

  9. l඼࣭ͱ͸୭͔ʹ
    ͱͬͯͷՁ஋Ͱ͋Δz
    (FSBME8FJOCFSH

    View Slide

  10. Accessibility
    Adaptability
    Administrability
    Analyzability
    Auditability
    Availability
    Calibrability
    Changeability
    Compatibility
    Configurability
    Exploitability
    Extensibility
    Flexibility
    Functionality
    Installability
    Integrability
    Internationalizability
    Interoperability
    Learnability
    Maintainability
    Marketability
    Maturity
    Modifiability
    Operability
    Personalizability
    Portability
    Recoverability
    Reliability
    Replaceability
    Reusability
    Scalability
    Security
    Sensitivity
    Stability
    Suitability
    Supportability
    Testability
    Traceability
    Transactionality
    Understandability
    Upgradeability
    Usability
    ... and lots more!

    View Slide

  11. ʮ඼࣭ʯ͸
    ͳʹ΍Β೉ͦ͠͏Ͱɺ
    ͪΐͬͱාͦ͏ʹݟ͕͑ͪ

    View Slide

  12. lʮ඼࣭ʯͬͪΎ͏͔
    Β೉͘͠ฉ͑ͯ͜·͏
    Μ΍ɻʮ࣭ʯͱݴ͑͹
    օΘ͔ͬͯ͘ΕΔɻz
    ग़యࣦ೦ɻςϨϏ͔ϥδΦͷΠϯλϏϡʔ൪૊ΑΓ

    View Slide

  13. ඼࣭

    View Slide

  14. ඼࣭

    View Slide

  15. lࢲͨͪͷମʹ͸ɺԿ͔ʮྑ
    ͍΋ͷʯΛݟൈ͘ೳྗ͕ͦ
    ͳΘ͍ͬͯΔz
    IUUQTUNUNTIBUFOBCMPHDPNFOUSZ

    View Slide

  16. 28"/
    2VBMJUZXJUIPVUBOBNF

    View Slide

  17. XXXJUNFEJBDPKQJNBSUJDMFTOFXTIUNM

    View Slide

  18. IUUQTXXXKVTFPSKQEFQBSUNFOUBMQPJOUIUNM
    ङ໺Ϟσϧ

    View Slide

  19. ʢ͓٬༷͔Βʣݟ͑Δ඼࣭ͱݟ͑ͳ͍඼࣭
    w֎෦඼࣭ͱ಺෦඼࣭
    wར༻࣌ͷ඼࣭ͱ੡඼඼࣭
    wػೳཁ݅ͱඇػೳཁ݅

    View Slide

  20. External Quality:
    Correctness, Usability, Efficiency,
    Reliability, Integrity, Adaptability,
    Accuracy, Robustness
    Internal Quality:
    Maintainability, Flexibility, Portability,
    Re-usability, Readability, Testability,
    Understandability
    ֎෦඼࣭ͱ಺෦඼࣭

    View Slide

  21. ιϑτ΢ΣΞͷ඼࣭Λ֎෦ࢦඪͰಛ௃͚ͮΔਓ͸ଟ
    ͍ɻਖ਼͍͜͠ͱΛ͢Δɺόά͕ͳ͍ɺ଎͍ɺͳͲͩɻ
    ͕ͩɺͦΕΒ͸ΑΓਂ͍ݪҼͷ঱ঢ়ʹ͗͢ͳ͍ɻ
    ຊॻͰઆ໌͢Διϑτ΢ΣΞͷ඼࣭͸಺෦඼࣭Ͱ͋
    Δɻ಺෦඼࣭Λ࡞ΓࠐΜͩ݁Ռͱͯ͠ɺ֎෦඼࣭ͱ͠
    ͯఆٛ͞ΕΔಛੑͷ࣮ݱʹۙͮ͘͜ͱ͕Ͱ͖Δɻ಺෦
    ඼࣭͸݁ՌͰ͸ͳ͘ݪҼͰ͋Γɺྑ͍ιϑτ΢ΣΞ͕
    උ͍͑ͯΔ΂͖΋ͷͩɻ
    ʰϨΨγʔίʔυ͔Βͷ୤٫ʱQ

    View Slide

  22. Ͱ͸ͲͷΑ͏ͳ
    ɹ಺෦඼࣭Λ
    ٘ਜ਼ʹ๋͛ͨͷ͔

    View Slide

  23. อकੑ
    Maintainability

    View Slide

  24. Joseph P. Cavano and James A. McCall. A framework for the measurement of software quality. In
    software quality assurance workshop on Functional and performance issues, pages 133–139, 1978.
    IUUQTXXXUIPNBTBMTQBVHIPSHQVCGOEJMJUZIUNM
    $BWBOPBOE.D$BMM`T2VBMJUZ'BDUPST

    View Slide

  25. #PFIN #SPXO BOE-JQPXT2VBMJUZ$IBSBDUFSJTUJDT

    IUUQTXXXUIPNBTBMTQBVHIPSHQVCGOEJMJUZIUNM

    View Slide

  26. #PFIN #SPXO BOE-JQPXT2VBMJUZ$IBSBDUFSJTUJDT

    IUUQTXXXUIPNBTBMTQBVHIPSHQVCGOEJMJUZIUNM

    View Slide

  27. .BJOUBJOBCJMJUZʢอकੑʣΛߏ੒͢Δ΋ͷ
    w5FTUBCJMJUZςετ༰қੑ
    w6OEFSTUBOEBCJMJUZཧղ༰қੑ
    w.PEJpBCJMJUZมߋ༰қੑ

    View Slide

  28. อकੑΛ
    ٘ਜ਼ʹ๋͛Δͱ
    Ͳ͏ͳΔ͔

    View Slide

  29. ݱ৔͔ΒͷதܧͰ͢

    View Slide

  30. ർฐ͖ͬͨ͠ݱ৔

    View Slide

  31. IUUQTXXXqJDLSDPNQIPUPTPLJOBXBTPCB
    ߥΈ͖ͬͨίʔυ

    View Slide

  32. ര஄ॲཧͷΑ͏ͳϦϦʔε

    View Slide

  33. IUUQTUXJUUFSDPNOFLPZBTUBUVT

    View Slide

  34. View Slide

  35. อकੑΛ٘ਜ਼ʹ͢Ε͹εϐʔυ͸ಘΒΕΔʁ
    w୹ظతʹ͸ಘΒΕΔ
    wதظతʹ͸ٯޮՌʹͳΔ
    w௕ظతʹ͸க໋ইʹͳΔ

    View Slide

  36. ੈͷதʹ͸ɺ࣌ؒΛ༏ઌ͢ΔͨΊͳΒ඼࣭Λ٘ਜ਼ʹͰ͖Δͱ
    ৴͓ͯ͡Δഐ΋͍ΔΑ͏͕ͩɺͦΕ͸ؒҧ͍ͩɻ
    ͨͱ͑ͲΜͳʹ୹ظతʹ։ൃ଎౓Λ޲্ͤͨ͞ͱͯ͠΋ɺ඼
    ࣭Λ٘ਜ਼ʹ͢Δ͜ͱͰ੒ཱ͍ͯ͠ΔऔΓ૊ΈͳͷͰ͋Ε͹ɺ
    ͦΕ͸·΍͔͠Ͱ͔͠ͳ͍ɻҰ࣌తͳࡨ֮ʹऴΘΔͩΖ͏ɻ
    ඼࣭Λམͱ͢͜ͱ͸ɺౙͷפ͕͞ݫ͍͔͠Βͱ͍ͬͯ೩͑͞
    ͔Δ౛ͰδϟάϦϯά͢ΔΑ͏ͳ΋ͷͩɻ͔֬ʹ΄ΜͷҰॠ
    ख͸Թ·Δ͔΋͠ΕΜɻ͕ͩɺ͍ͣΕ੾Γই΍ͻͲ͍ՐইΛ
    ෛ͏͜ͱʹͳΔͰ͋Ζ͏ɻ
    ʰΞδϟΠϧαϜϥΠʱQ
    ϚελʔηϯηΠᐌ͘

    View Slide

  37. IUUQTNBSUJOGPXMFSDPNBSUJDMFTJTRVBMJUZXPSUIDPTUIUNM
    อकੑͷ௿͕͞΋ͨΒ͢΋ͷ
    ͻͱͭͻͱͭͷมߋʹ
    ༨ܭͳ͕͔͔࣌ؒΔ

    View Slide

  38. Ͱ͸
    εϐʔυΛམͱͤ͹
    อकੑ͸্͕Δʁ

    View Slide

  39. IUUQTUXJUUFSDPNESJMMCJUTTUBUVT

    View Slide

  40. IUUQTUXJUUFSDPNWPMVOUBTTUBUVT

    View Slide

  41. IUUQTPTBIBUFOBCMPHDPNFOUSZ

    View Slide

  42. ͭ·Γ
    τϨʔυΦϑͰ͸
    ͳ͍

    View Slide

  43. IUUQTUXJUUFSDPNLBU[DIBOHTUBUVT

    View Slide

  44. 2VBMJUZJT'SFF඼࣭Ξοϓ͸ίετΞοϓ͔μ΢ϯ͔
    ίετΞοϓઆ ίετμ΢ϯઆ

    View Slide

  45. IUUQTTQFBLFSEFDLDPNTIJNBTIJNBTUBSURVBMJUZSFBMGSFFDBNQBJHO
    2VBMJUZJT'SFF㲈඼࣭࣮࣭ແྉ

    View Slide


  46. εϐʔυ
    యܕతͳޡղ
    നؙ෇͖໼ҹෛͷ઀ଓࠜݩ͕૿͑Ε͹ઌ͸ݮΔɻࠜݩ͕ݮΕ͹ઌ͸૿͑Δ

    View Slide

  47. ܦӦతͳཁٻʹ߹Θͤͯɺ༩͑ΒΕͨ։ൃظ͔ؒΒॊೈʹԚ͞ͱ
    ଎͞Λબ୒͢Δͱ͍͏Α͏ͳث༻ͳܳ౰͸΄ͱΜͲෆՄೳͩͱ͍
    ͑·͢ɻ͜Ε͸ɺۃΊͯجૅతͳͱ͜ΖͰ͋Ε͹ଟগ͸Ͱ͖Δ͔΋
    ͠Ε·ͤΜ͕ɺ࣮ࡍʹ͸ɺιʔείʔυ͕Ԛͯ͘஗͍ਓ΋͍Ε
    ͹ɺ៉ྷͰ଎͍ਓ΋ଟ͍͘·͢ɻ
    ʰΤϯδχΞϦϯά૊৫࿦΁ͷট଴ʱQ
    ΫΠοΫμʔςΟͷਆ࿩

    View Slide

  48. ඼࣭Λ٘ਜ਼ʹ͢Δͷ͸ɺޮՌతͳίϯτϩʔϧํ๏Ͱ͸ͳ
    ͍ɻ඼࣭͸੍ޚม਺Ͱ͸ͳ͍ɻ
    ௿඼࣭Λड͚ೖΕΔ͜ͱͰɺϓϩδΣΫτ͕଎͘ͳΔ͜ͱ
    ͸ͳ͍ɻߴ඼࣭Λཁٻ͢Δ͜ͱͰɺϓϩδΣΫτ͕஗͘ͳ
    Δ͜ͱ΋ͳ͍ɻ
    Ή͠Ζ඼࣭ΛߴΊΔ͜ͱͰɺσϦόϦʔ͕ߴ଎ʹͳΔ͜ͱ
    ͕ଟ͍ɻ඼࣭ج४ΛԼ͛ͯ͠·͏ͱɺσϦόϦʔ͕஗͘
    ͳΓɺ༧ଌͰ͖ͳ͘ͳͬͯ͠·͏ɻ
    ʰΤΫετϦʔϜϓϩάϥϛϯάʱQ

    View Slide

  49. ࠷ߴͷ։ൃऀ͕͍ͪ͹Μ͖Ε͍޷͖ͳ։ൃऀͰ͋Δ͜ͱ
    ʹؾ͍ͮͨͱ͖ɺࢲ͸ͼͬ͘Γͨ͠ɻ଎͍ϓϩάϥϚʔ
    ͸ࡶͳϓϩάϥϚʔͩͱࢥ͍͔ͬͯͨΒͩɻ
    ͕ͩɺ࣮ࡍ͸ਖ਼൓ରͩͬͨɻࢲ͕ձͬͨதͰ࠷଎ͷϓϩ
    άϥϚʔ͸ɺίʔυΛѻ͍΍͍͢Α͏ʹอͭ͜ͱʹಛʹ
    ஫ҙΛ෷͍ͬͯͨɻ
    ʰϨΨγʔίʔυ͔Βͷ୤٫ʱQ

    View Slide

  50. ίʔυΛॻ͘଎͞ͱίʔυͷ͖Ε͍͞ʹؔ࿈͕͋Δͱೝ
    ࣝͨ͋͠ͱͰ΋ɺࢲ͸ͦͷͭͷ͍͋ͩͷҼՌؔ܎Λݟͭ
    ͚Δͷʹ࣌ؒΛཁͨ͠ɻ
    ίʔυͷ඼࣭Λߴ͘อ͍ͬͯͨʮʹ΋ؔΘΒͣʯ଎͍ͷͰ
    ͸ͳ͍ɻίʔυͷ඼࣭Λߴ͘อ͍ͬͯͨʮ͔Βͦ͜ʯ଎͍
    ͷͩɻ
    ͜ͷ͜ͱΛཧղͨ͠Βɺιϑτ΢ΣΞ։ൃʹର͢Δݟํ͕
    มΘͬͨɻ
    ʰϨΨγʔίʔυ͔Βͷ୤٫ʱQQ

    View Slide


  51. εϐʔυ
    ίʔυͷ඼࣭Λ٘ਜ਼ʹ͔ͨ͠Β଎͍ͷͰ͸ͳ͘
    നؙ෇͖໼ҹෛͷ઀ଓࠜݩ͕૿͑Ε͹ઌ͸ݮΔɻࠜݩ͕ݮΕ͹ઌ͸૿͑Δ

    View Slide


  52. εϐʔυ
    ίʔυͷ඼࣭Λߴ͘อ͍ͬͯͨʮ͔Βͦ͜ʯ଎͍
    ໼ҹਖ਼ͷ઀ଓࠜݩ͕૿͑Ε͹ઌ΋૿͑Δɻࠜݩ͕ݮΕ͹ઌ΋ݮΔ

    View Slide

  53. Ͱ͸
    εϐʔυ͔Β࣭΁
    ͷӨڹ͸Ͳ͏͔

    View Slide


  54. εϐʔυ
    Ͱ͸εϐʔυ͔Β࣭΁ͷӨڹ͸Ͳ͏͔

    View Slide

  55. ϓϩηε඼࣭Լ͛Δͱखॱϛε౳ʹΑΓख໭Γ͕ൃੜ͠σϦόϦ΁ͷϦʔυ
    λΠϜ͕௕͘ͳΔ
    ಺෦඼࣭͛͞ΔͱόάͷൃੜɺίʔυϨϏϡʔͷࢦఠɺٕज़తෛ࠴ʹΑΔ࣮
    ૷ͷෳࡶ͞ͳͲʹΑΓख໭Γ΍଎౓௿ԼΛট͖ɺσϦόϦ΁ͷϦʔυλΠϜ
    ͕௕͘ͳΔ
    ֎෦඼࣭͛͞Δͱ69όάΛ͏Έɺຊདྷݕূ͍ͨ͜͠ͱ͕ݕূͰֶ͖ͣͼ·
    ͰͷϦʔυλΠϜ͕௕͘ͳΔɻো֐ൃੜʹΑΓɺͦΕͷରԠʹऴΘΕϦιʔ
    ε͕ރׇ͠ຊདྷ΍Δ΂͖͜ͱͷ଍͔ͤʹͳΓɺϦʔυλΠϜ͕௕͘ͳΔ
    ར༻࣌ͷ඼࣭͛͞ΔͱɺΧελϚʔαϙʔτ͕සൃͦ͠ͷରԠʹ૊৫ͷύ
    ϫʔ͕࣋ͬͯߦ͔ΕϦʔυλΠϜ͕௕͘ͳΔ
    2$%ͷτϨʔυΦϑͳΜͯຊ౰͸ແ͔ͬͨΜͩ
    IUUQJLFZIBUFCMPKQFOUSZ

    View Slide

  56. IUUQJLFZIBUFCMPKQFOUSZ
    εϐʔυΛམͱ͢ͱԾઆݕূϓϩηε͕ճΒͳ͍

    View Slide

  57. ඼࣭͸ѱ͍ͱجຊతʹख໭ΓΛੜΉͷͰ଎౓ʹ௓Ͷ
    ฦΔɻख໭ͬͯΔ࣌ؒ͸ֶͼΛ͏·ͳ͍࣌ؒɻ඼࣭
    ΛԼ͛Δͱ͍͏൑அ͸ֶͼͷ଎౓௿ԼΛڐ༰͢Δͱ
    ͜ͱɻ
    ैདྷͷమ൘ ͩͱޡղ͞Ε͍ͯͨ
    ͩͬͨ඼࣭ͯͯ͢
    ଎౓͋͛Α͏͸඼࣭͸ྼԽ͢Ε͹ख໭Γ͕ൃੜ͢Δ
    ͚ͩͰɺ݁ہ͸ϦʔυλΠϜͷ૿Ճʹ௓ͶฦΔͷͰ
    ΍Ί·͠ΐ͏ɻ
    2$%ͷτϨʔυΦϑͳΜͯຊ౰͸ແ͔ͬͨΜͩ
    IUUQJLFZIBUFCMPKQFOUSZ

    View Slide

  58. ͭͷΩʔϝτϦΫε
    wϦʔυλΠϜ
    wσϓϩΠස౓
    w.553 ฏۉम෮࣌ؒ

    wมߋࣦഊ཰
    IUUQTXXXBNB[PODPKQEQ

    View Slide


  59. εϐʔυ
    ຊ౰ͷؔ܎ɹ
    ໼ҹਖ਼ͷ઀ଓࠜݩ͕૿͑Ε͹ઌ΋૿͑Δɻࠜݩ͕ݮΕ͹ઌ΋ݮΔ

    View Slide

  60. ຊ౰ͷؔ܎ɹ
    w಺෦඼࣭͕εϐʔυΛੜΈ
    wεϐʔυֶ͕ͼͷϧʔϓΛੜΈ
    wֶͼͷϧʔϓ͕֎෦඼࣭ʢҰݩత඼࣭
    ͱັྗ඼࣭ʣΛੜΈ
    w֎෦඼࣭͕ڝ૪ྗΛੜΈ
    wڝ૪ྗ͕ച্ΛੜΈ
    wച্͕಺෦඼࣭ΛҭΉ

    View Slide

  61. ʮ࣭WTεϐʔυʯͱ͍͏֓೦͸ࠜຊతʹؒҧ͍ͬͯΔͱࢥ͏ɻ
    ͩͬͯૉૣ͘։ൃΛ͠ͳͯ͘͸؀ڥɺ͋Δ͍͸ࣗ෼ͷ؀ڥͷཧղ
    ͷมԽʹιϑτ΢ΣΞ͕͍ͭͯ͜Εͣɺιϑτ΢ΣΞ͕ղܾ͢΂
    ͖໰୊͕ղܾͰ͖ͳ͘ͳΓɺඞવతʹ࣭͕མͪͯ͠·͏ɻ
    ٯʹɺ࣭ͷߴ͍ιϑτ΢ΣΞΛॻ͔ͳͯ͘͸ɺͳʹ͔͋Δ౓ʹΠ
    ϯϑϥ่͕յ͠ɺૉૣ͘։ൃΛ͢Δ͜ͱ͕Ͱ͖ͳ͘ͳͬͯ͠·
    ͏ɻΠϯϑϥͷ่յ͸ɺ΍ΔؾΛ࡟͙ͷͰಛʹ͕ͨͪѱ͍ɻ
    IUUQTLOPIKQBOTXFSTEDB

    View Slide

  62. View Slide

  63. View Slide

  64. lQFSGFDUzJTBWFSC
    OPUBOBEKFDUJWF
    ,FOU#FDL

    View Slide

  65. ࣭WTεϐʔυͱ͍͏ೋ཯എ൓ͷؔ܎͸ɺ
    ہॴతͳ΋ͷͰ͔͠ͳ͍ɻ
    େҬతʹ͸ɺยํΛ٘ਜ਼ʹͨ͠৔߹ɺ஌Β
    ͵͏ͪʹ΋͏Ұͭ΋٘ਜ਼ʹ͍ͯ͠Δͱ͍͏
    ͜ͱΛ͓๨Εͳ͘ɻ
    IUUQTLOPIKQBOTXFSTEDB

    View Slide

  66. Ͳ͏΍ͬͯݸਓͷ
    ࣭Λ্͛Δͷ͔

    View Slide

  67. ιϑτ΢ΣΞͷ։ൃʹ࠷ॳ͔Β࠷ޙ·ͰؔΘΔͱ͍͏ܦݧ͸ͱͯ
    ΋وॏͩͬͨΜ͡Όͳ͍ͩΖ͏͔ɻͳͥͳΒɺϓϩδΣΫτ։࢝
    ࣌ͷμϝͳσβΠϯͷͬ͠΃ฦ͠ΛɺޙͰࣗ෼ͰϞϩʹड͚Δ͔
    Βͩɻ
    ౰ॳ΅͘͸ɺ΄ͱΜͲߟ͑ͣίʔυΛʮΞϯμʔΤϯδχΞϦϯ
    άʯ͍ͯͨ͠ɻޙʑ͜ΕΛա౓ʹमਖ਼ͯ͠͠·͍ɺશͯΛʮΦʔ
    όʔΤϯδχΞϦϯάʯ͠࡞ΓࠐΈ͗ͯ͢͠·ͬͨɻ
    IUUQTLOPIKQBOTXFSTEDB

    View Slide

  68. ϑΣΠεϒοΫͰಇ͖ͩͨ͜͠Ζʹ͸طʹͦΕͳΓͷܦݧ͕͋ͬ
    ͨͷͰɺ΅͕͘σβΠϯͨ͠γεςϜ͸֓Ͷγϯϓϧ͞ͱચ࿅͞
    Λஸ౓Α݉͘Ͷඋ͍͑ͯͨͱࢥ͏͠ɺଞͷΤϯδχΞͷσβΠϯ
    ͷ໰୊఺΋ɺൺֱత͙͢ʹؾͮ͘͜ͱ͕Ͱ͖ͨɻ͜Ε΋࠷ॳͷ਺
    ೥ͰഓΘΕͨ൑அྗͷ͓͔͛ͩɻ
    ͜ͷʮ൑அྗʯ͸ɺϓϩάϥϚʔʹͱͬͯඇৗʹॏཁͳͷ͕ͩɺ
    ͦ͏؆୯ʹڭ͑ΒΕΔ΋ͷͰ΋ͳ͍ɻ΅͕͘஌ΔݶΓɺ൑அྗΛ
    ͚ͭΔҰ൪ͷํ๏͸ɺࣗ෼Ͱઃܭͨ͠γεςϜΛ௕͍ؒϝϯς͢
    Δ͜ͱͩͱࢥ͏ɻ
    IUUQTLOPIKQBOTXFSTEDB

    View Slide

  69. Ұ൪ॏཁͰҰ൪΍͔͍ͬͳεΩϧ͸γεςϜΛઃܭ
    ͢ΔͨΊͷ൑அྗͩɻ
    ݶΓͳ͘γϯϓϧͳσβΠϯ BTTJNQMFBT
    QPTTJCMFCVUOPUTJNQMFS
    ͱ͍͏ͷ͸ͳ͔ͳ͔ڭ͑
    ΒΕΔ΋ͷͰ͸ͳ͘ɺେํܦݧΛॏͶ֮ͯ͑Δ΋ͷ
    ͩɻ
    IUUQTLOPIKQBOTXFSTEDB

    View Slide

  70. ଛӹ෼ذ఺͸
    ͍ͭདྷΔͷ͔

    View Slide

  71. ςετࣗಈԽͷଛӹ෼ذ఺͸ʮճʯ
    IUUQTXXXBNB[PODPKQEQ
    ͓ΑͦճͰखಈςετͱࣗಈԽ͞Εͨ
    ςετͷίετ͕ٯస͢Δ

    View Slide

  72. "1IJMPTPQIZPG4PGUXBSF%FTJHO
    IUUQTXXXBNB[PODPKQEQ

    View Slide

  73. once a code base turns to spaghetti, it
    is nearly impossible to fix.
    the payoff for good (or bad) design
    comes pretty quickly, so there's a good
    chance that the tactical approach won't
    even speed up your first release.
    good design eventually pays for itself,
    and sooner than you might think.
    IUUQTXXXBNB[PODPKQEQ
    "1IJMPTPQIZPG4PGUXBSF%FTJHO

    View Slide

  74. ಺෦඼࣭΁ͷ౤ࢿͷଛӹ෼ذ఺͸
    ೥ޙͱ͔Ͱ͸ͳ͘
    ϲ݄Ҏ಺ʹݱΕΔ
    IUUQTNBSUJOGPXMFSDPNBSUJDMFTJTRVBMJUZXPSUIDPTUIUNM
    ಺෦඼࣭΁ͷ౤ࢿͷଛӹ෼ذ఺͸ϲ݄Ҏ಺ʹݱΕΔ

    View Slide

  75. อकੑΛ٘ਜ਼ʹ͢Ε͹εϐʔυ͸ಘΒΕΔʁ
    w୹ظతʹ͸ಘΒΕΔ
    wϲ݄ޙʹ͸ٯޮՌʹͳΔ
    w௕ظతʹ͸க໋ইʹͳΔ

    View Slide

  76. ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
    w ʮ඼࣭ͱεϐʔυ͸τϨʔυΦϑͷؔ܎ʹ͋Δʯ͸େ͖
    ͳޡղ
    w ʮ඼࣭ʯͷ໊ͷ΋ͱʹ٘ਜ਼ʹ͞ΕΔͷ͸಺෦඼࣭ͷಛʹ
    อकੑʢςετ༰қੑɺཧղ༰қੑɺมߋ༰қੑʣ
    w ࣮ࡍʹ͸อकੑΛߴΊΕ͹εϐʔυ͸্͕Δ͠ɺอकੑ
    Λམͱͤ͹εϐʔυ͸Լ͕Δɻ
    w εϐʔυΛམͱͯ͠΋อकੑ͸্͕Βͳ͍͠ɺϦʔυλ
    ΠϜ͕௕͘ͳΕ͹Ծઆݕূϓϩηε͕ճΒͳ͍
    w ಺෦඼࣭΁ͷ౤ࢿͷଛӹ෼ذ఺͸ҙ֎ͱૣ͘ ϲ݄Ҏ

    ΍ͬͯ͘Δ

    View Slide