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
140
フロントエンドにおける「型」の責任分解に対する1つのアプローチ
kinocoboy2
5
2.3k
メタファーの使い方
kinocoboy2
0
440
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
5
1.4k
UIパフォーマンス最適化: AIを活用して100倍の速度向上を実現した事例
kinocoboy2
2
1.1k
【ScrumFestNiigata2024】a11yを起点とした組織横断を完了するためにアジャイルチームにとって大切だったこと100選
kinocoboy2
0
750
JSConfjp2023 Storybook駆動開発の再現性と効率化
kinocoboy2
2
4.3k
新卒だったころの僕へ向けて
kinocoboy2
0
250
スクラムマスターを目指すためにギャルになってみた話
kinocoboy2
10
12k
Featured
See All Featured
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
390
Building AI with AI
inesmontani
PRO
1
1.1k
Odyssey Design
rkendrick25
PRO
2
730
Paper Plane
katiecoart
PRO
2
52k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.6k
Statistics for Hackers
jakevdp
799
230k
It's Worth the Effort
3n
188
29k
Are puppies a ranking factor?
jonoalderson
1
3.7k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
220
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
390
KATA
mclloyd
PRO
35
15k
How to build a perfect <img>
jonoalderson
1
5.8k
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
ͱ͍͏σβ Πϯύλʔϯ༗ޮ ᶇ ͜ͷݟɺϞμϯͳઃܭΛਐΊΔͨΊͷجૅͰ͋Δɻ ·ͱΊ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ιϑτΣΞΞʔΩςΫνϟʮతʯൃ
࣭ٙԠ