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
How GitHub (no longer) Works
holman
316
150k
Ruling the World: When Life Gets Gamed
codingconduct
0
290
Amusing Abliteration
ianozsvald
1
240
Are puppies a ranking factor?
jonoalderson
1
3.7k
Optimizing for Happiness
mojombo
378
71k
Docker and Python
trallard
47
4k
Ethics towards AI in product and experience design
skipperchong
2
330
Game over? The fight for quality and originality in the time of robots
wayneb77
1
230
Abbi's Birthday
coloredviolet
3
8.9k
Stewardship and Sustainability of Urban and Community Forests
pwiseman
0
400
Practical Orchestrator
shlominoach
191
11k
Embracing the Ebb and Flow
colly
88
5.1k
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
ͱ͍͏σβ Πϯύλʔϯ༗ޮ ᶇ ͜ͷݟɺϞμϯͳઃܭΛਐΊΔͨΊͷجૅͰ͋Δɻ ·ͱΊ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ιϑτΣΞΞʔΩςΫνϟʮతʯൃ
࣭ٙԠ