Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Peacock#01 ソフトウェアアーキテクチャ的発想
Search
kinocoboy
November 30, 2021
320
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
150
フロントエンドにおける「型」の責任分解に対する1つのアプローチ
kinocoboy2
5
2.4k
メタファーの使い方
kinocoboy2
0
470
LLMとPlaywright/reg-suitを活用した jQueryリファクタリングの実際
kinocoboy2
5
1.5k
UIパフォーマンス最適化: AIを活用して100倍の速度向上を実現した事例
kinocoboy2
2
1.2k
【ScrumFestNiigata2024】a11yを起点とした組織横断を完了するためにアジャイルチームにとって大切だったこと100選
kinocoboy2
0
780
JSConfjp2023 Storybook駆動開発の再現性と効率化
kinocoboy2
2
4.3k
新卒だったころの僕へ向けて
kinocoboy2
0
250
スクラムマスターを目指すためにギャルになってみた話
kinocoboy2
10
12k
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
450
Mind Mapping
helmedeiros
1
350
Utilizing Notion as your number one productivity tool
mfonobong
4
580
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Docker and Python
trallard
47
4.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.1k
Design in an AI World
tapps
1
310
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
510
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
310
Technical Leadership for Architectural Decision Making
baasie
3
560
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
ͱ͍͏σβ Πϯύλʔϯ༗ޮ ᶇ ͜ͷݟɺϞμϯͳઃܭΛਐΊΔͨΊͷجૅͰ͋Δɻ ·ͱΊ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ ιϑτΣΞΞʔΩςΫνϟʮతʯൃ
࣭ٙԠ