PHPカンファレンス福岡2023の発表資料です https://fortee.jp/phpconfukuoka-2023/proposal/cf470954-7fba-4302-820f-ca21b0928045
PHP Conference FUKUOKA 2023Hideki KinjyoGitHub: o0h / Twitter: @o0h_ [൛]
View Slide
Ӿཡ࣌ͷҙ<>
ࣗݾհ/GitHub: @o0h / Twitter: @o0h_FW CakePHPfrom to#phpconfuk.2017
ࢦͤʂ͜Ε͕࠷ڧͷϓϩδΣΫτͩʂ
࠷ڧͷϓϩδΣΫτͳͷͰɺಓΛߦ͖·͢3 10 1 30OK
ා͍ʂ͜Ε͕࠷ऑͷϓϩδΣΫτͩʂ
࠷ऑͷϓϩδΣΫτͳͷͰɺࣃΛ৯͍͠Γ·͢OK
ຊͷςʔϚ
͓͠ͳ͕͖$1 -$2 -$3 -$4 -$5 -
§1
͔ͩΒϓϩδΣΫτ͍ͬͯ͠Μͩ
https://ja.wiktionary.org/wiki/ਆ
ϓϩδΣΫτͷਆͱ(ෆ߹ͳ)ਅ࣮< > :< >
ਓ݄ͷਆ装[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Jr FrederickP.Brooks, ୌ ప, ༞ࢠ, ᖒ ঢ. ਓ݄ͷਆ ৽൛ P14, P17 ʰਓ݄ͷਆʱ
ιϑτΣΞΤϯδχΞϦϯάͷຊ࣭తͳࠔ1[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Jr FrederickP.Brooks, ୌ ప, ༞ࢠ, ᖒ ঢ. ਓ݄ͷਆ ৽൛ P170, P188ʰۜͷͳͲͳ͍ᴷιϑτΣΞΤϯδχΞϦϯάͷຊ࣭ͱۮ༗తࣄ߲ʱ
( | )
§2
ϚΠϯυηοτ: ʮશͯมΘΔɺͦΕ͚͕ͩෆมʯetc
ϚΠϯυηοτ: ʮશͯมΘΔɺͦΕ͚͕ͩෆมʯetc ʮԿ͔Λ্ख͘࡞ΔʯͨΊͷࠜຊతͳཁૉͷ֬ূ͕Γͳ͍
ϚΠϯυηοτ: ʮશͯมΘΔɺͦΕ͚͕ͩෆมʯ( )
ϚΠϯυηοτ: ʮશͯมΘΔɺͦΕ͚͕ͩෆมʯ:
ҙࢥܾఆΛͰ͖Δ͚ͩΒͤΔ[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Mary Poppendieck, Tom Poppendieck, ఱ উ, ฏು ݈ࣇ, ߴౢ ༏ࢠ Ϧʔϯ։ൃͷຊ࣭ : ιϑτΤΞ։ൃʹ׆͔͢7ͭͷݪଇ P39
બࢶΛ(࠷ޙ·Ͱ)͓ͯ͘͠[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Mary Poppendieck, Tom Poppendieck, ఱ উ, ฏು ݈ࣇ, ߴౢ ༏ࢠ Ϧʔϯ։ൃͷຊ࣭ : ιϑτΤΞ։ൃʹ׆͔͢7ͭͷݪଇ P39
ֶशɺਐతͳઃܭ[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Mary Poppendieck, Tom Poppendieck,ࠤ ݐथ, ฏು ݈ࣇ, ߴౢ ༏ࢠ ϦʔϯιϑτΤΞ։ൃ : ΞδϟΠϧ։ൃΛ࣮ફ͢Δ22ͷํ๏ P211, P212, P217
ਐతͳઃܭͷ࣮ફ: நԽjust in timeʹ!Pet [ग़య] ※จࣈ৭ɺจࣈαΠζʹΑΔڧௐεϥΠυஶऀ ᴷ ాத ͻͯ͞Δ ͪΐ͏ͥͭιϑτΣΞઃܭೖʕʕPHPͰཧղ͢ΔΦϒδΣΫτࢦͷ׆༻ P 57
ઃܭͷѱष ─ ػಈੑɾదԠྗΛଛͳΘͤΔ1. 1美2. 15.7.[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Robert Cecil Martin, ୩ ܒհ ΞδϟΠϧιϑτΣΞ։ൃͷԞٛ : ΦϒδΣΫτࢦ։ൃͷਆͱঊͷٕ P108 (Ұ෦ൈਮ)
Δ͖͜ͱ1.YAGNI KISS XP2.3. (= )
§3
ྫ: ͜ΜͳϓϩδΣΫτΓ·͢er
Ͱ͖Β͊ʂ
ੲྑ͔ͬͨ[ ][ ][ 縮 ] DB(blob)[ ][ 縮 ]
ࣸਅΛෳߘͰ͖ΔΑ͏ʹͯ͠ཉ͍͠
ࣸਅΫϥυετϨʔδʹೖΕ͍ͨ
τοϓϖʔδͷද͕͍͔ࣔΒΩϟογϡ͠Α͏
มߋίετ͕େ͖͍ = ͕࣌ؒΓͳ͘ͳΔ縮
ʮมΘͬͯOKʯΛ࡞ΓࠐΉ[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Juval Löwy, גࣜձࣾϩϯάςʔϧ ඌ ߴ߂ ϥΠςΟϯάιϑτΣΞ P29
มಈੑΛᄿ͚͗ͭͯɺઃܭ͢Δ( )Driver S3 Dropbox MySQL( ) ( )(IMO) : Interface
ͬ͘͟Γநతʹղͯ͠ΈΔ[ ver.] formPOSTDB DB204[ ver.] HTTP
ͬ͘͟Γநతʹղͯ͠ΈΔ۩ͷهड़ நతͳهड़ ڞ௨ ಈࢺϢʔβʔ Ϣʔβʔ ͕͍͓ͯͰΜΞΫςΟϏςΟߘϑΥʔϜ ΫϥΠΞϯτ ʹೖྗ͠ʮࣸਅɾ͓ళɾίϝϯτʯ )551ϦΫΤετ Λड৴͠%#ΧϥϜʹ߹Θͤͯ ΞϓϦέʔγϣϯͰѻ͍͘͢ σʔλߏΛม͠όϦσʔγϣϯ อଘલॲཧ Λֻ͚%#ͱΫϥυετϨʔδ વΔ͖ॴ อଘ͠Ωϟογϡͷߋ৽ อଘޙॲཧ Λ͠Ϩεϙϯε વΔ͖Ϩεϙϯε Λฦ͢
நԽʹΑΔɺࣝͷΧϓηϧԽ/ͷUIformDB ( ) ۩ͷهड़Ϣʔβʔ͓ͰΜΞΫςΟϏςΟߘϑΥʔϜʮࣸਅɾ͓ళɾίϝϯτʯ%#ΧϥϜʹ߹ΘͤͯόϦσʔγϣϯ%#ͱΫϥυετϨʔδΩϟογϡͷߋ৽Ϩεϙϯε
நԽʹΑΔɺࣝͷΧϓηϧԽ/ͷDTOController$_POST DB۩ͷهड़ நతͳهड़ ڞ௨ ಈࢺ%#ΧϥϜʹ߹Θͤͯ ΞϓϦέʔγϣϯͰѻ͍͘͢ σʔλߏΛม͠
۩ͷهड़ நతͳهड़ ڞ௨ ಈࢺόϦσʔγϣϯ อଘલॲཧ Λֻ͚நԽʹΑΔɺࣝͷΧϓηϧԽ/ͷValidatorController
۩ମతͳهड़ நతͳهड़ ڞ௨ ಈࢺΩϟογϡͷߋ৽ อଘޙॲཧ Λ͠நԽʹΑΔɺࣝͷΧϓηϧԽ/ͷPub/SubControllerbeforeSave afterSave
ʮநԽʯʮৄࡉͷʯʹΑͬͯಘΒΕΔͷ1.2.
ιϑτΣΞʹʮॊΒ͔͞ʯΛContorller( )1
มߋʹΑΔμϝʔδΛޚ͢Δ[ग़య] ᴷ Grady Booch, ੴ ࠀݾ ΦϒδΣΫτιϦϡʔγϣϯʕΦϒδΣΫτࢦϓϩδΣΫτͷཧ P29
ϓϩδΣΫτʹʮॊΒ͔͞ʯΛContorller =ex)(How )=
ιϑτΣΞɺԼ͔Β࡞Δ͔ʁ্͔Β࡞Δ͔ʁ:DB form
$input$inputfile_nameshopnullRDBetc…
ιϑτΣΞɺԼ͔Β࡞Δ͔ʁ্͔Β࡞Δ͔ʁ:request response( ) = JIT
縮縮()
Λ(૬ରతʹ)ଊ͑ɺՌͨ͢[ग़య] ※ڧௐεϥΠυஶऀ ᴷ Steve Freeman, Nat Pryce, ஐ ӈܡ, ߴ ਖ਼߂ ࣮ફςετۦಈ։ൃ : ςετʹಋ͔ΕͯΦϒδΣΫτࢦιϑτΣΞΛҭͯΔ P15
ιϑτΣΞɺ্͔Β࡞Βͳ͍ʁ( )縮(& )( ) UX ( )
ιϑτΣΞɺ্͔Β࡞Βͳ͍ʁ
ʮͷʯʹΑͬͯಘΒΕΔͷ1.2.
ιϑτΣΞʹʮྗੑʯΛContorller=( )
ϓϩδΣΫτʹʮྗੑʯΛ
ΫϦςΟΧϧύεΛ΄͙͢CriticalPath [ग़య] ᴷGoldratt, Eliyahu M, ࡾຊ ྄, ۂ ެೋ(ղઆ) ΫϦςΟΧϧνΣʔϯ : ͳͥɺϓϩδΣΫτ༧ఆͲ͓Γʹਐ·ͳ͍ͷ͔? (Kindle ൛) No.4862-4864, No.4253-4255
·ͱΊQ.?A. ( )
·ͱΊ( )
·ͱΊCI( ) TDD
§4
ϓϩδΣΫτԿΛͨ͠Βૣ͘ͳΔ͔ʁ( )( )( )
ਓΛ૿ͯ͠ϓϩδΣΫτ͕ૣ͘ͳΒͳ͍ʁ3 33 縮
ਓΛ૿ͯ͠ϓϩδΣΫτ͕ૣ͘ͳΒͳ͍ʁ3 3 1.5: http://scrumbook.org/product-organization-pattern-language/development-team/swarming--one-piece-continuous-flow.html
ਓΛ૿ͯ͠ϓϩδΣΫτ͕ૣ͘ͳΒͳ͍ʁ11 ( )( )
৫ϨϕϧͰͷΞϓϩʔν縮Team TopologiesPlatform team:Complicated sub-system team:
େ·ͱΊ-lityXPSOLID
͓͠·͍ʂ͓͖߹͍͍͖ͨͩ ͋Γ͕ͱ͏͍͟͝·ͨ͠
§X Appendix
ࢀߟจݙ
ਓ݄ͷਆ ৽൛
ϒϧοΫεͷ͍͏ۜͷؙͱԿ͔?6/15kawasimaTSD IUUQTXXXTMJEFTIBSFOFULBXBTJNBTT
ϥΠςΟϯάιϑτΣΞ
ΞδϟΠϧιϑτΣΞ։ൃͷԞٛSOLIDClean Architecture ()(XP)TDD
ͪΐ͏ͥͭιϑτΣΞઃܭೖ/
࣮ફςετۦಈ։ൃ( )TDD
ΦϒδΣΫτࢦઃܭ࣮ફΨΠυ( )PHP Interface/
ϓϩδΣΫτϚωδϝϯτࣝମܥΨΠυ ୈ7൛駄
ʮք۾がざΘͭ͘΄どਐԽͨ͠PMBOKୈ7൛ʯʹࢲͨͪど͏औΓΉ͔Developers summit 2022PMBOK 7thTSD IUUQTTQFBLFSEFDLDPNNJ[@LVTIJEBKJFXFJLBTBXBUVLVIPUPDIBPKJOIVBTJUBQNCPLEJCBOOJTJUBUJIBUPVRVSJ[VNVLB
ΫϦςΟΧϧνΣʔϯ11/
ϦʔϯιϑτΤΞ։ൃ1This isLean
Ϧʔϯ։ൃͷຊ࣭