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

#phpconfuk ソフトウェア設計がプロジェクト管理にどのように影響を与えるか

#phpconfuk ソフトウェア設計がプロジェクト管理にどのように影響を与えるか

PHPカンファレンス福岡2023の発表資料です
https://fortee.jp/phpconfukuoka-2023/proposal/cf470954-7fba-4302-820f-ca21b0928045

hideki kinjyo
PRO

June 24, 2023
Tweet

More Decks by hideki kinjyo

Other Decks in Programming

Transcript

  1. PHP Conference FUKUOKA 2023


    Hideki Kinjyo


    GitHub: o0h / Twitter: @o0h_


    [഑෍൛]

    View Slide

  2. Ӿཡ࣌ͷ஫ҙ
    <>


    View Slide

  3. ࣗݾ঺հ
    /
    GitHub: @o0h / Twitter: @o0h_
    FW CakePHP
    from to
    #phpconfuk.2017


    View Slide

  4. View Slide

  5. ໨ࢦͤʂ͜Ε͕࠷ڧͷϓϩδΣΫτͩʂ


    View Slide

  6. ࠷ڧͷϓϩδΣΫτͳͷͰɺ೼ಓΛߦ͖·͢
    3 10 1 30
    OK


    View Slide

  7. View Slide

  8. ා͍ʂ͜Ε͕࠷ऑͷϓϩδΣΫτͩʂ


    View Slide

  9. ࠷ऑͷϓϩδΣΫτͳͷͰɺࣃΛ৯͍͠͹Γ·͢
    OK


    View Slide

  10. View Slide

  11. ຊ೔ͷςʔϚ


    View Slide

  12. ͓͠ͳ͕͖
    $1 -
    $2 -
    $3 -
    $4 -
    $5 -


    View Slide

  13. §1

    View Slide

  14. ͔ͩΒϓϩδΣΫτͬͯ೉͍͠Μͩ


    View Slide

  15. https://ja.wiktionary.org/wiki/ਆ࿩

    View Slide

  16. ϓϩδΣΫτͷਆ࿩ͱ(ෆ౎߹ͳ)ਅ࣮
    < > :
    < >


    View Slide

  17. ਓ݄ͷਆ࿩


    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Jr FrederickP.Brooks, ୌ୔ ప, ຀໺ ༞ࢠ, ෋ᖒ ঢ.

    ਓ݄ͷਆ࿩ ৽૷൛ P14, P17 ʰਓ݄ͷਆ࿩ʱ

    View Slide

  18. ιϑτ΢ΣΞΤϯδχΞϦϯάͷຊ࣭తͳࠔ೉
    1

    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Jr FrederickP.Brooks, ୌ୔ ప, ຀໺ ༞ࢠ, ෋ᖒ ঢ.

    ਓ݄ͷਆ࿩ ৽૷൛ P170, P188ʰۜͷ஄ͳͲͳ͍ᴷιϑτ΢ΣΞΤϯδχΞϦϯάͷຊ࣭ͱۮ༗తࣄ߲ʱ

    View Slide


  19. ( | )

    View Slide

  20. §2

    View Slide

  21. View Slide

  22. ϚΠϯυηοτ: ʮશͯ͸มΘΔɺͦΕ͚͕ͩෆมʯ
    etc


    View Slide

  23. ϚΠϯυηοτ: ʮશͯ͸มΘΔɺͦΕ͚͕ͩෆมʯ
    etc


    ʮԿ͔Λ্ख͘࡞ΔʯͨΊͷࠜຊతͳཁૉͷ֬ূ͕଍Γͳ͍

    View Slide

  24. ϚΠϯυηοτ: ʮશͯ͸มΘΔɺͦΕ͚͕ͩෆมʯ
    ( )


    View Slide

  25. ϚΠϯυηοτ: ʮશͯ͸มΘΔɺͦΕ͚͕ͩෆมʯ
    :


    View Slide

  26. ҙࢥܾఆΛͰ͖Δ͚ͩ஗ΒͤΔ

    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Mary Poppendieck, Tom Poppendieck, ఱ໺ উ, ฏು ݈ࣇ, ߴౢ ༏ࢠ

    Ϧʔϯ։ൃͷຊ࣭ : ιϑτ΢ΤΞ։ൃʹ׆͔͢7ͭͷݪଇ P39

    View Slide

  27. બ୒ࢶΛ(࠷ޙ·Ͱ)࢒͓ͯ͘͠

    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Mary Poppendieck, Tom Poppendieck, ఱ໺ উ, ฏು ݈ࣇ, ߴౢ ༏ࢠ

    Ϧʔϯ։ൃͷຊ࣭ : ιϑτ΢ΤΞ։ൃʹ׆͔͢7ͭͷݪଇ P39

    View Slide

  28. ֶशɺ઴ਐతͳઃܭ

    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Mary Poppendieck, Tom Poppendieck,ࠤ໺ ݐथ, ฏು ݈ࣇ, ߴౢ ༏ࢠ

    Ϧʔϯιϑτ΢ΤΞ։ൃ : ΞδϟΠϧ։ൃΛ࣮ફ͢Δ22ͷํ๏ P211, P212, P217

    View Slide

  29. ઴ਐతͳઃܭͷ࣮ફ: ந৅Խ΋just in timeʹ!
    Pet


    [ग़య] ※จࣈ৭ɺจࣈαΠζʹΑΔڧௐ͸εϥΠυஶऀ

    ᴷ ాத ͻͯ͞Δ

    ͪΐ͏ͥͭιϑτ΢ΣΞઃܭೖ໳ʕʕPHPͰཧղ͢ΔΦϒδΣΫτࢦ޲ͷ׆༻ P 57

    View Slide

  30. ઃܭͷѱष ─ ػಈੑɾదԠྗΛଛͳΘͤΔ
    1. 1

    2. 1
    5.
    7.

    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Robert Cecil Martin, ੉୩ ܒհ

    ΞδϟΠϧιϑτ΢ΣΞ։ൃͷԞٛ : ΦϒδΣΫτࢦ޲։ൃͷਆ਷ͱঊͷٕ P108 (Ұ෦ൈਮ)

    View Slide

  31. ΍Δ΂͖͜ͱ
    1.
    YAGNI KISS XP
    2.
    3. (= )


    View Slide

  32. §3

    View Slide

  33. ྫ୊: ͜ΜͳϓϩδΣΫτ΍Γ·͢
    er


    View Slide

  34. Ͱ͖Β͊ʂ


    View Slide

  35. ੲ͸ྑ͔ͬͨ
    [ ]
    [ ]
    [ 縮 ] DB(blob)
    [ ]
    [ 縮 ]



    View Slide

  36. ࣸਅΛෳ਺౤ߘͰ͖ΔΑ͏ʹͯ͠ཉ͍͠


    View Slide

  37. ࣸਅ͸Ϋϥ΢υετϨʔδʹೖΕ͍ͨ


    View Slide

  38. τοϓϖʔδͷද͕ࣔ஗͍͔ΒΩϟογϡ͠Α͏


    View Slide

  39. มߋίετ͕େ͖͍ = ͕࣌ؒ଍Γͳ͘ͳΔ



    View Slide

  40. ʮมΘͬͯ΋OKʯΛ࡞ΓࠐΉ

    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Juval Löwy, גࣜձࣾϩϯάςʔϧ ௕ඌ ߴ߂

    ϥΠςΟϯάιϑτ΢ΣΞ P29

    View Slide

  41. มಈੑΛᄿ͚͗ͭͯɺઃܭ͢Δ
    ( )
    Driver S3 Dropbox MySQL
    ( )

    ( )
    (IMO) :

    Interface


    View Slide

  42. ͬ͘͟Γந৅తʹ෼ղͯ͠ΈΔ

    [ ver.]

    form
    POST
    DB DB
    204
    [ ver.]

    HTTP

    View Slide

  43. ͬ͘͟Γந৅తʹ෼ղͯ͠ΈΔ

    ۩৅ͷهड़ ந৅తͳهड़ ڞ௨ ಈࢺ

    Ϣʔβʔ Ϣʔβʔ ͕͍ͯ
    ͓ͰΜΞΫςΟϏςΟ౤ߘϑΥʔϜ ΫϥΠΞϯτ ʹೖྗ͠
    ʮࣸਅɾ͓ళɾίϝϯτʯ )551
    ϦΫΤετ Λड৴͠
    %#ΧϥϜʹ߹Θͤͯ ΞϓϦέʔγϣϯ಺Ͱѻ͍΍͘͢ σʔλߏ଄Λม׵͠
    όϦσʔγϣϯ อଘલॲཧ Λֻ͚
    %#ͱΫϥ΢υετϨʔδ વΔ΂͖৔ॴ
    อଘ͠
    Ωϟογϡͷߋ৽ อଘޙॲཧ Λ͠
    Ϩεϙϯε વΔ΂͖Ϩεϙϯε Λฦ͢

    View Slide

  44. ந৅ԽʹΑΔɺ஌ࣝͷΧϓηϧԽ/੹຿ͷ෼཭

    UI
    form
    DB

    ( ) ۩৅ͷهड़
    Ϣʔβʔ
    ͓ͰΜΞΫςΟϏςΟ౤ߘϑΥʔϜ
    ʮࣸਅɾ͓ళɾίϝϯτʯ
    %#ΧϥϜʹ߹Θͤͯ
    όϦσʔγϣϯ
    %#ͱΫϥ΢υετϨʔδ
    Ωϟογϡͷߋ৽
    Ϩεϙϯε

    View Slide

  45. ந৅ԽʹΑΔɺ஌ࣝͷΧϓηϧԽ/੹຿ͷ෼཭

    DTO
    Controller
    $_POST DB
    ۩৅ͷهड़ ந৅తͳهड़ ڞ௨ ಈࢺ

    %#ΧϥϜʹ߹Θͤͯ ΞϓϦέʔγϣϯ಺Ͱѻ͍΍͘͢ σʔλߏ଄Λม׵͠

    View Slide

  46. ۩৅ͷهड़ ந৅తͳهड़ ڞ௨ ಈࢺ

    όϦσʔγϣϯ อଘલॲཧ Λֻ͚
    ந৅ԽʹΑΔɺ஌ࣝͷΧϓηϧԽ/੹຿ͷ෼཭

    Validator
    Controller

    View Slide

  47. ۩ମతͳهड़ ந৅తͳهड़ ڞ௨ ಈࢺ

    Ωϟογϡͷߋ৽ อଘޙॲཧ Λ͠
    ந৅ԽʹΑΔɺ஌ࣝͷΧϓηϧԽ/੹຿ͷ෼཭

    Pub/Sub
    Controller
    beforeSave afterSave

    View Slide

  48. ʮந৅Խʯʮৄࡉͷ෼཭ʯʹΑͬͯಘΒΕΔ΋ͷ
    1.
    2.


    View Slide

  49. ιϑτ΢ΣΞʹʮॊΒ͔͞ʯΛ
    Contorller
    ( )
    1


    View Slide

  50. มߋʹΑΔμϝʔδΛ๷ޚ͢Δ

    [ग़య]

    ᴷ Grady Booch, ੴ઒ ࠀݾ

    ΦϒδΣΫτιϦϡʔγϣϯʕΦϒδΣΫτࢦ޲ϓϩδΣΫτͷ؅ཧ P29

    View Slide

  51. ϓϩδΣΫτʹʮॊΒ͔͞ʯΛ
    Contorller

    =
    ex)
    (
    How )
    =


    View Slide

  52. ιϑτ΢ΣΞɺԼ͔Β࡞Δ͔ʁ্͔Β࡞Δ͔ʁ
    :
    DB form


    View Slide



  53. View Slide



  54. $input
    $input
    fi
    le_name
    shop
    null
    RDB
    etc

    View Slide

  55. ιϑτ΢ΣΞɺԼ͔Β࡞Δ͔ʁ্͔Β࡞Δ͔ʁ
    :
    request response
    ( )

    = JIT


    View Slide




  56. View Slide





  57. (
    )

    View Slide

  58. ੹຿Λ(૬ରతʹ)ଊ͑ɺՌͨ͢

    [ग़య] ※ڧௐ͸εϥΠυஶऀ

    ᴷ Steve Freeman, Nat Pryce, ࿨ஐ ӈܡ, ߴ໦ ਖ਼߂

    ࣮ફςετۦಈ։ൃ : ςετʹಋ͔ΕͯΦϒδΣΫτࢦ޲ιϑτ΢ΣΞΛҭͯΔ P15

    View Slide

  59. ιϑτ΢ΣΞɺ্͔Β࡞Βͳ͍ʁ
    ( )

    (& )
    ( ) UX ( )

    View Slide

  60. ιϑτ΢ΣΞɺ্͔Β࡞Βͳ͍ʁ

    View Slide

  61. ʮ੹຿ͷ෼཭ʯʹΑͬͯಘΒΕΔ΋ͷ
    1.
    2.

    View Slide

  62. ιϑτ΢ΣΞʹʮ஄ྗੑʯΛ
    Contorller
    =
    ( )

    View Slide

  63. ϓϩδΣΫτʹʮ஄ྗੑʯΛ


    View Slide

  64. ΫϦςΟΧϧύεΛ΄͙͢
    CriticalPath


    [ग़య]

    ᴷGoldratt, Eliyahu M, ࡾຊ໦ ྄, ௡ۂ ެೋ(ղઆ)

    ΫϦςΟΧϧνΣʔϯ : ͳͥɺϓϩδΣΫτ͸༧ఆͲ͓Γʹਐ·ͳ͍ͷ͔? (Kindle ൛)

    No.4862-4864, No.4253-4255

    View Slide

  65. ·ͱΊ
    Q.
    ?
    A. ( )


    View Slide

  66. ·ͱΊ
    ( )


    View Slide

  67. ·ͱΊ
    CI
    ( ) TDD


    View Slide

  68. §4

    View Slide

  69. ϓϩδΣΫτ͸ԿΛͨ͠Βૣ͘ͳΔ͔ʁ
    ( )
    ( )
    ( )

    View Slide

  70. ਓΛ૿΍ͯ͠΋ϓϩδΣΫτ͕ૣ͘ͳΒͳ͍ʁ
    3 3
    3 縮

    View Slide

  71. ਓΛ૿΍ͯ͠΋ϓϩδΣΫτ͕ૣ͘ͳΒͳ͍ʁ
    3 3 1.5
    : http://scrumbook.org/product-
    organization-pattern-language/development-team/
    swarming--one-piece-continuous-
    fl
    ow.html

    View Slide

  72. ਓΛ૿΍ͯ͠΋ϓϩδΣΫτ͕ૣ͘ͳΒͳ͍ʁ
    1
    1 ( )
    ( )

    View Slide

  73. ૊৫ϨϕϧͰͷΞϓϩʔν

    Team Topologies
    Platform team:
    Complicated sub-system team:

    View Slide

  74. View Slide

  75. େ·ͱΊ
    -
    lity
    XP
    SOLID


    View Slide

  76. View Slide

  77. ͓͠·͍ʂ
    ͓෇͖߹͍͍͖ͨͩ

    ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide

  78. §X Appendix

    View Slide

  79. ࢀߟจݙ

    View Slide

  80. ਓ݄ͷਆ࿩ ৽૷൛

    View Slide

  81. ϒϧοΫεͷ͍͏ۜͷ஄ؙͱ͸Կ͔?
    6/15
    kawasima

    TSD

    IUUQTXXXTMJEFTIBSFOFULBXBTJNBTT

    View Slide

  82. ϥΠςΟϯάιϑτ΢ΣΞ

    View Slide

  83. ΞδϟΠϧιϑτ΢ΣΞ։ൃͷԞٛ
    SOLID
    Clean Architecture (
    )
    (XP)
    TDD

    View Slide

  84. ͪΐ͏ͥͭιϑτ΢ΣΞઃܭೖ໳
    /

    View Slide

  85. ࣮ફςετۦಈ։ൃ
    ( )TDD

    View Slide

  86. ΦϒδΣΫτࢦ޲ઃܭ࣮ફΨΠυ
    ( )
    PHP Interface
    /

    View Slide

  87. ϓϩδΣΫτϚωδϝϯτ஌ࣝମܥΨΠυ ୈ7൛


    View Slide

  88. ʮք۾
    がざ
    Θͭ͘΄
    ど
    ௒ਐԽͨ͠PMBOKୈ7൛ʯʹࢲͨͪ
    ͸
    ど
    ͏औΓ૊Ή͔
    Developers summit 2022
    PMBOK 7th

    TSD

    IUUQTTQFBLFSEFDLDPNNJ[@LVTIJEBKJFXFJLBTBXBUVLVIPUPDIBPKJOIVB
    TJUBQNCPLEJCBOOJTJUBUJIBUPVRVSJ[VNVLB

    View Slide

  89. ΫϦςΟΧϧνΣʔϯ
    1
    1
    /

    View Slide

  90. Ϧʔϯιϑτ΢ΤΞ։ൃ
    1
    This is
    Lean

    View Slide

  91. Ϧʔϯ։ൃͷຊ࣭

    View Slide