Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Peacock#01 ソフトウェアアーキテクチャ的発想
Search
kinocoboy
November 30, 2021
310
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Peacock#01 ソフトウェアアーキテクチャ的発想
kinocoboy
November 30, 2021
More Decks by kinocoboy
See All by kinocoboy
その「common」ディレクトリ、腐っていませんか?
kinocoboy2
1
130
フロントエンドにおける「型」の責任分解に対する1つのアプローチ
kinocoboy2
5
2.3k
メタファーの使い方
kinocoboy2
0
420
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
5
1.4k
UIパフォーマンス最適化: AIを活用して100倍の速度向上を実現した事例
kinocoboy2
1
1.1k
【ScrumFestNiigata2024】a11yを起点とした組織横断を完了するためにアジャイルチームにとって大切だったこと100選
kinocoboy2
0
740
JSConfjp2023 Storybook駆動開発の再現性と効率化
kinocoboy2
2
4.2k
新卒だったころの僕へ向けて
kinocoboy2
0
240
スクラムマスターを目指すためにギャルになってみた話
kinocoboy2
10
12k
Featured
See All Featured
Agile that works and the tools we love
rasmusluckow
331
22k
Documentation Writing (for coders)
carmenintech
77
5.4k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.5k
Mind Mapping
helmedeiros
PRO
1
270
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
240
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
170
For a Future-Friendly Web
brad_frost
183
10k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
2.1k
The Pragmatic Product Professional
lauravandoore
37
7.3k
Building Adaptive Systems
keathley
44
3.1k
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.3k
Transcript
Peacock #01 ߈͑!! ιϑτΣΞΞʔΩςΫνϟతൃ
Self Introduction Hiroki.Kinoshita Peacock Engineer Group ( PEG ) Organizer
גࣜձࣾKUNO ਂֶशͱCloudΛۦ͢ΔDXਪਐاۀ Front Engineer / Designer Twitter: @kinocoboy2 Blog: Baboblog
Peacock Engineer Group ͷհ
Peacock Engineer Group • PEG ͷ త • ҬձࣾɾࣾձਓɾֶੜͳͲͷ֞ࠜΛӽ͑ͯɺ ࣗ༝ʹָٕ͘͠ज़ྗΛߴΊ߹͑ΔίϛϡχςΟ
ʹ!! • PEG ͕औΓѻ͏ςʔϚ • ʮ໌͔Β͑ΔTipsʯ • ӡӦελοϑਵ࣌ืूத!
Πϕϯτͷָ͠Έํ • Twitter ͱSpecialChat Λۦ • #PEACOCK • ͲΜͲΜᄁ͍͍͖ͯ·͠ΐʔ •
࣭ɺTwitter Ͱ͍͍͠ɺSpecialChat ͷ νϟοτཝ͔ΒͰOKͰ͢ɻ • ΦϯϥΠϯͳͷͰੵۃతʹͬͯΈ·͠ΐʔ • ࠙ձ༗ࢤͰߦ͍·͢ɻ • SpecialChat ͷ Ͱߦ͍·͢ɻ • ৭ʑަྲྀ͠·͠ΐʔ
߈͑!! ιϑτΣΞΞʔΩςΫνϟతൃ
PMBOK ୈࣣ൛
PMBOKͷվఆ PMBOK(ϐϯϘοΫ)ͱɺ ੈքதͷϓϩϚωͷ࣮Ո͔ΒҙݟΛूΊͯϓϩδΣΫτϚωδϝϯ τʹ͍ͭͯࣝମܥԽ͍ͯ͠Δް͍ຊɻ ࠷ۙɺ݁ߏۀք͕͟Θͭ͘มԽ͕!!
ʮՌͷఏڙʯ͔ΒʮՁͷఏڙʯ
ʮՌͷఏڙʯ͔ΒʮՁͷఏڙʯ ੈքతʹҊ݅ਐߦɺΥʔλʔϑΥʔϧܕ։ൃ͔ΒΞδϟΠϧ։ൃ ͷϐϘοτ͕ߦΘΕ༷ͨࢠɻ ͞ΒʹɺʮՁΛఏڙ͢ΔʯͨΊʹʮՁΛݟग़͞ͳ͚ΕͳΒͳ ͍ʯͱ͍͏͠͞ൃੜ͖ͯͨ͠ɻ
ՁΛݟग़ͨ͢Ίͷํ๏ ͦͷͨΊʹɺDDD(υϝΠϯۦಈઃܭ) ϞσϦϯάɾϢʔβʔετʔ ϦʔϚοϐϯάͳͲͷཁ݅ΛநԽͯ͠ཧ͢Δख๏͕Ұؾʹීٴ͠ ͍ͯΔɻ ͔͠͠ɺ͜ͷख๏֮͑Ε͙͢ʹॱԠͰ͖Δ͔ͱݴ͏ͱNOͩɻ
ՁఏڙܕͷਐΊํՁͷ୳ࡧʹɺࢼߦࡨޡ͠ͳ͕ΒϢʔβʔώ ΞϦϯάΛ܁Γฦ͢ඞཁ͕͋Δɻ ͦͷεϐʔυ͕͘ɺैདྷͷΥʔλʔϑΥʔϧܕʹ׳Ε͍ͯΔ ߹ɺϐϘοτʢେʹࣺͯͯɾ·ͨੜ͔ͯ͠ʣ͕͍͠ɻ ͳ͙ͥ͢ॱԠͰ͖ͳ͍ͷ͔
େͳ։ൃΛߦ͑ΔΑ͏ʹͳΔͨΊʹɺҎԼख๏͕༗ޮʹͳΔ - ෦తͳ҆શੑΛৗʹ୲อ͠ଓ͚Δςετۦಈઃܭ - ׂΛ໌֬ʹͯ͠ਐΊΔΠϕϯτۦಈઃܭɾΫϦʔϯΞʔΩςΫνϟ ͜ΕΛ࢝ΊΔͨΊʹɺൣғͷղϊϋ͕͍Δɻ େʹࣺͯͨΓɾੜ͔ͨ͠Γ͢ΔͨΊʹ
ٯʹ
ςετۦಈઃܭɾΠϕϯτۦಈઃܭɾΫϦʔϯΞʔΩςΫνϟͷೖΓ ޱʹཱͭ͜ͱ͕Ͱ͖Δɻ ͦͯ͜͠ΕΒΛར༻Ͱ͖ΔΑ͏ʹͳͬͯ͘ΔͱɺDDDϞσϦϯάͳ Ͳͷૉૣ͍ϐϘοτ͕ཁٻ͞ΕΔઃܭख๏ͰॊೈʹରԠͰ͖ΔΑ͏ ʹͳͬͯ͘Δɻ ࠓճɺൣғͷղʹྗ͍͖͍ͯͨ͠ͱࢥ͏ɻ ൣғͷղ͕Ͱ͖ΔΑ͏ʹͳΕ
ྫ • ൣғͷղΛΒͣ • ಈ͘ͷ͚ͩΛࢦͨ͠ͷͰςετ࣮ࡍʹಈ͔ ͯ͠ΈͨΓ͢Δײ͡ • ͔֬ʹಈ͕͘… • શͯ
main ʹ٧ΊࠐΜͰ͍ΔͷͰɺͲ͔͜Ͱτϥ ϒϧ͕ى͖ͨΒ main શମΛ debug ͠ͳ͚Ε … • Main ͷ ςετͬͯ݁ہԿΛνΣοΫ͢Ε… ͱ͋ΔώϤίʔυ🐥
ώϤίʔυͷղʹɺDI(Dependency Injection)ͷߟ͑ํ͕͑ ͦ͏ͩɻ DIͱɺʮґଘΦϒδΣΫτΛೖʯͱݺΕΔσβΠϯύλʔϯͷ ࣄɻ ͜ΕΛͬͯώϤίʔυΛόϥ͍ͯ͜͠͏ ղʹ
ྫ • ·ͣҰ൪ͪ͝Ό͍͍ͭͯΔdatabase ૄ௨पΓ͔Βɻ • Main Λಈ͔͢ͱ͖ɺdatabase instance ·Ͱཱͪ ্͔͛ͯΒquery
Λൃߦ͢ΔΈʹͳ͍ͬͯ Δɻ • ·ͣ query ͷ෦ͷൣғΛ֎ͯ͠ΈΔɻ • Query Λ࣮ߦ͢ΔͨΊʹɺ database instance ͱ query param ͕͋ΕղͰ͖ΔͷͰɺ model ͱ͍͏ྖҬΛ࡞ͬͯDBͱΓͱΓΛͤ͞ ͨɻ • ͜ΕʹΑͬͯɺDBपΓͰτϥϒϧ͕ى͖ͨ Βɺmodel ͚ͩΛݟΕྑ͘ͳͬͨ ͱ͋ΔώϤίʔυ🐥
ྫ • ࣍ʹmain Λىಈ͢Δͨͼʹຖճ database instance up ͍ͯ͠Δ෦ΛΊΑ͏ɻ • Main
Λಈ͔ͨ͢Ίʹɺ model ͕ඞཁͰ͋Γɺ model database instance Λཉ͕͠ΔͳΒɺ main ʹ database instance Λ֎͔Β༩͑ͯ͋͛ Εྑ͍ɻ • ͜ͷରԠͰɺdatabase instance γεςϜͰ୯ ҰͰ͋Δܗ͕ଋ͞ΕΔɻ͜Εsingleton ͱ͍͏ σβΠϯύλʔϯɻ • Main ͷςετΛ͢Δͱ͖ɺ database instance ͱ query parameter ΛೖΕͨΒಈ࡞֬ೝ͕औΕΔΑ ͏ʹͳͬͨɻ ͱ͋ΔώϤίʔυ🐥
ྫ • ࣍ʹbusiness logic Λmain ͔Β͠Α͏ɻ • ͜Εͷʹɺ query ͷ
result ͕͋Εlogic ճͤͦ͏ͩɻ • Main ؔͰͳ͘ɺ logic function ͱͯ͠ߟ͑ Δɻ • Logic Λͤ͞Δ͜ͱͰɺ main ͷಈ࡞֬ೝ Ͱඞཁͳ͜ͱ param parse ͱ param validate ͷΈ͞Ε͍ͯΔɻ • Logic model result ͕͋Εɺ୯ମͰςε τͰ͖Δ͔Βͩɻ ͱ͋ΔώϤίʔυ🐥
ᶃ ղʹɺDIԽ͕༗ޮɻ ᶄ DIʮґଘΦϒδΣΫτೖʯͱ͍͏σβΠϯύλʔϯɻ ᶅ ґଘΦϒδΣΫτΛೖΕΔͨΊʹɺin, out Λཧ͠Α͏ɻ ᶆ γεςϜͰ୯ҰͰ͋Δ͜ͱΛकΓ͍ͨͳΒɺsingleton
ͱ͍͏σβ Πϯύλʔϯ༗ޮ ᶇ ͜ͷݟɺϞμϯͳઃܭΛਐΊΔͨΊͷجૅͰ͋Δɻ ·ͱΊ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ιϑτΣΞΞʔΩςΫνϟʮతʯൃ
࣭ٙԠ