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
新規機能開発からモジュール分割を始めてみる
Search
izumi
September 20, 2020
Programming
7
5.6k
新規機能開発からモジュール分割を始めてみる
izumi
September 20, 2020
Tweet
Share
More Decks by izumi
See All by izumi
サーバーと同期してリアルタイムに更新する画面を実装する
rizumi
2
4.2k
5分でわかるMint
rizumi
1
850
Introducing SourceKit-LSP
rizumi
2
2.3k
レイアウト実装方法の比較ポイント
rizumi
0
2.2k
アプリ内の絵文字をカスタム絵文字化した話
rizumi
1
270
Other Decks in Programming
See All in Programming
AI Ramen Fight
yusukebe
0
120
Google I/O Extended Incheon 2025 ~ What's new in Android development tools
pluu
1
220
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
3
390
Flutterと Vibe Coding で個人開発!
hyshu
1
220
No Install CMS戦略 〜 5年先を見据えたフロントエンド開発を考える / no_install_cms
rdlabo
0
430
AIコーディングエージェント全社導入とセキュリティ対策
hikaruegashira
15
9.3k
構造化・自動化・ガードレール - Vibe Coding実践記 -
tonegawa07
0
170
Jakarta EE Meets AI
ivargrimstad
0
570
Android 15以上でPDFのテキスト検索を爆速開発!
tonionagauzzi
0
180
QA x AIエコシステム段階構築作戦
osu
0
240
PHPUnitの限界をPlaywrightで補完するテストアプローチ
yuzneri
0
370
0から始めるモジュラーモノリス-クリーンなモノリスを目指して
sushi0120
0
250
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
What's in a price? How to price your products and services
michaelherold
246
12k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.5k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
Statistics for Hackers
jakevdp
799
220k
Being A Developer After 40
akosma
90
590k
Visualization
eitanlees
146
16k
Gamification - CAS2011
davidbonilla
81
5.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.4k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Transcript
৽نػೳ։ൃ͔Β ϞδϡʔϧׂΛ࢝ΊͯΈΔ 3ZP*[VNJ J04%$+BQBO
3ZP*[VNJ OPIBOB *OD 5XJUUFS!J[N (JU)VC!SJ[VNJ
None
ࠓ͢ࣄ w ػೳ։ൃͱฒߦͯ͠ϞδϡʔϧׂΛߦͬͨ w ࣮ࡍʹײͨ͡ϝϦοτσϝϦοτମݧஊ
ϚϧνϞδϡʔϧ
࠷ۙͷΞϓϦ w ͭͷΞϓϦ͕ଟػೳԽ͍ͯ͠Δ w FYεʔύʔΞϓϦ
ϊϋφྫ֎Ͱͳ͘ w ϑΥτϒοΫΛ࡞Δ͚ͩͷػೳ͔Β w ϓϨϛΞϜϑΥτϒοΫͳͲࡐͷՃ w (PPHMFϑΥτͱͷ࿈ܞͳͲ w εʔύʔΞϓϦ΄ͲͰͳ͍͕
ػೳ͕૿͍͑ͯΔ
ػೳ͕૿͑Δͱ w ίʔυϕʔεڊେʹͳΔ w ઃܭͷෳࡶԽ w Ϗϧυ࣌ؒͷ૿Ճ w ˠ։ൃޮͷԼ
ϚϧνϞδϡʔϧ w ΞϓϦΛෳϞδϡʔϧʹׂ͢Δ͜ͱͰ w ʹΑΔӨڹൣғͷॖখ w ࠩϏϧυʹΑΔϏϧυ࣌ؒͷॖ
طଘΞϓϦʹऔΓೖΕ͍͕ͨ 997JFX$POUSPMMFS 997JFX.PEFM 99.PEFM 99"1*$MJFOU ػೳ" ::7JFX$POUSPMMFS
::7JFX.PEFM ::.PEFM ::"1*$MJFOU ػೳ# ;;7JFX$POUSPMMFS ;;7JFX.PEFM ;;.PEFM ;;"1*$MJFOU ػೳ$
طଘΞϓϦʹऔΓೖΕ͍͕ͨ 99.BOBHFSͱ͔ͷਆΫϥε 997JFX$POUSPMMFS 997JFX.PEFM 99.PEFM 99"1*$MJFOU ػೳ"
::7JFX$POUSPMMFS ::7JFX.PEFM 99.PEFM ::"1*$MJFOU ػೳ# 'BU7JFX$POUSPMMFS ػೳ$ ґଘ ґଘ ڞ௨Ϋϥε ֎෦Ϧιʔε ґଘ ґଘ 4IBSFE*OTUBODF
طଘΞϓϦʹऔΓೖΕ͍͕ͨ 99.BOBHFSͱ͔ͷਆΫϥε 997JFX$POUSPMMFS 997JFX.PEFM 99.PEFM 99"1*$MJFOU ػೳ"
::7JFX$POUSPMMFS ::7JFX.PEFM 99.PEFM ::"1*$MJFOU ػೳ# 'BU7JFX$POUSPMMFS ػೳ$ ґଘ ґଘ ڞ௨Ϋϥε ֎෦Ϧιʔε ґଘ ґଘ 4IBSFE*OTUBODF Ͳ͔͜ΒΓग़͍͍͔ͯ͠ ͔Βͳ͍
طଘΞϓϦʹऔΓೖΕ͍͕ͨ 99.BOBHFSͱ͔ͷਆΫϥε 997JFX$POUSPMMFS 997JFX.PEFM 99.PEFM 99"1*$MJFOU ػೳ"
::7JFX$POUSPMMFS ::7JFX.PEFM 99.PEFM ::"1*$MJFOU ػೳ# 'BU7JFX$POUSPMMFS ػೳ$ ґଘ ґଘ ڞ௨Ϋϥε ֎෦Ϧιʔε ґଘ ґଘ 4IBSFE*OTUBODF େنϦϑΝΫλ͕ඞཁͦ͏ ৽نػೳ։ൃࢭΊΒΕͳ͍
৽نػೳ͔ΒϞδϡʔϧׂ
৽نػೳ͔ΒϞδϡʔϧׂ w ৽͍͠ࢪࡦͷػೳΛϞδϡʔϧʹׂ͢Δ લఏͰઃܭ͢Δ w ྫ (PPHMFϑΥτͷ࿈ܞ
खॱ w ཁ݅ ༷ͷཧ w ΛܾΊΔ w JOQVUPVUQVUΛఆٛ w GSBNFXPSLͷ࡞
w ։ൃ
खॱཁ݅ ༷ͷཧ w ཁ݅ ྫ w (PPHMFΞΧϯτͱ࿈ܞ͕Ͱ͖Δ w ࣸਅ͕ҰཡͰ͖Δ
w ࣸਅΛબͯ͠ΞϓϦͰར༻Ͱ͖Δ
Ϟδϡʔϧׂ͍༷͢͠ w ಠཱͨ͠৽نը໘ w طଘͷυϝΠϯ༷ͷґଘ͕গͳ͍ w ϊϋφͰطଘͷ*NBHF1JDLFSաڈʹϥΠϒϥϦͱͯ͠Γग़͠ ͍ͯͨ w IUUQTHJUIVCDPNOPIBOB/PIBOB*NBHF1JDLFS
w ٯʹطଘը໘υϝΠϯͷґଘ͕ߴׂ͍༷ͮ͠Β͍
खॱΛܾΊΔ w (PPHMFΞΧϯτϩάΠϯ w (PPHMFΞΧϯτϩάΞτ w (PPHMFϑΥτͷࣸਅऔಘ w ࣸਅબ
ϑϨʔϜϫʔΫଆͷϧʔϧ w 4XJGU w ݹ͍࣮࣋ͪࠐ·ͳ͍
ϑϨʔϜϫʔΫଆͷϧʔϧ w Ͳ͏ͯ͠ݹ͍࣮Λ͍͍ͨ߹ 1SPUPDPM͚ͩఆ࣮ٛͯ͠"QQଆ͔Βೖ͢Δ
खॱJOQVUPVUQVUΛఆٛ w "QQͱϞδϡʔϧؒͰͷJOQVUPVUQVUΛఆٛ͢Δ
खॱJOQVUPVUQVUΛఆٛ w "QQͱϞδϡʔϧؒͰͷJOQVUPVUQVUΛఆٛ͢Δ "1*5PLFO બͨࣸ͠ਅͷϦετ
खॱGSBNFXPSLͷ࡞
खॱ։ൃ w جຊతʹීஈͷ։ൃͱมΘΒͳ͍ w ΞϓϦଆʹެ։͢Δͷ໌ࣔతʹQVCMJDPQFOʹ͢Δ w αʔυύʔςΟͷϥΠϒϥϦΛ͏߹͚ͩগ͠ҙ͕ඞཁ
5JQTϑϨʔϜϫʔΫଆͰϥΠϒϥϦΛ͏ w $PDPB1PET w $BSUIBHF w 4XJGU1BDLBHF.BOBHFS
$PDPB1PET w ϝΠϯλʔήοτʹ ϥΠϒϥϦΛؚΊΔ
$BSUIBHF w ϝΠϯλʔήοτʹ ϦϯΫ͢Δ ϝΠϯλʔήοτ ϑϨʔϜϫʔΫ
$BSUIBHF w DPQZGSBNFXPSLTϝΠϯλʔήοτ͚ͩͰߦ͏
4XJGU1BDLBHF.BOBHFS w Ϟδϡʔϧଆ͚ͩʹೖΕΕ0,ͬΆ͍ w ˞ΞʔΧΠϒ·Ͱ֬ೝ͠·͕ͨ͠ετΞϦϦʔεະ֬ೝͰ͢
4XJGU1BDLBHF.BOBHFS w ෳϞδϡʔϧͰѻ͍͍ͨ߹ w %ZOBNJD-JCSBSZෳʹϦϯΫՄೳ w 4UBUJD-JCSBSZෳϞδϡʔϧʹೖΕΑ͏ͱ͢ΔͱΤϥʔʹͳΔ w ෳϞδϡʔϧͰѻ͍͍ͨ߹ڞ௨Ϟδϡʔϧʹಋೖ͠ɺ ͦͷϞδϡʔϧΛհͯ͠͏ͳͲ͢Δͱྑͦ͞͏
खॱ։ൃ w جຊతʹීஈͷ։ൃͱมΘΒͳ͍ w ΞϓϦଆʹެ։͢Δͷ໌ࣔతʹQVCMJDPQFOʹ͢Δ w αʔυύʔςΟͷϥΠϒϥϦΛ͏߹͚ͩগ͠ҙ͕ඞཁ
ϦϦʔε
ϝϦοτ
ڞ௨Խ͖͢෦͕ݟ͑ͯ͘Δ w ࣮ࡍʹϞδϡʔϧଆͷ։ൃΛ͍ͯͯ͠ w ΞϓϦଆͷ&YUFOTJPOΛ͍͍ͨέʔεͳͲ͕͋ͬͨ Ϟδϡʔϧͷ૬ޓࢀরͰ͖ͳ͍ͷͰͦͷ··Ͱ͑ͳ͍ &YUFOTJPOͳͲ ͍͍ͨ
ڞ௨Խ͖͢෦͕ݟ͑ͯ͘Δ w ڞ௨ϞδϡʔϧͳͲ ࠓޙͷϞδϡʔϧ͚ͷ ώϯτ͕ಘΒΕΔ &YUFOTJPOͳͲ ڞ௨Ϟδϡʔϧ
طଘίʔυʹनΘΕͳ͘ͳΔ w طଘͷԚ͍෦ͳͲΛൃݟ͢ΔͱϞνϕʔγϣϯԼ ˠ৽ن։ൃͯ͠ΔͷʹӬԕʹϦϑΝΫλΛ࢝Ίͯ͠·ͬͨΓ w ৽نϞδϡʔϧΛΔ͜ͱͰطଘͷߏίʔυΛࢀর͢Δػձ͕ ݮΓɺ্هͷΑ͏ͳΈ͕গ͠ղফ͞Εͨ
Өڹൣғͷॖখ w جຊతʹϞδϡʔϧ෦Ͱ݁Ͱ͖Δ w ӨڹൣғݶΒΕΔͷͰ։ൃޮϦϦʔε࣌ͷ҆৺Ξοϓ w 2"Ϣʔβʔ͍߹ΘͤௐࠪͳͲϞδϡʔϧͰ݁
ϝϦοτ w ڞ௨Խ͖͢෦͕ݟ͑ͯ͘Δ w طଘίʔυʹनΘΕͳ͘ͳΔ w Өڹൣғͷॖখ
σϝϦοτ
ϓϩδΣΫτϑΝΠϧͷίϯϑϦΫτ w λʔήοτͷՃͰൃੜͨ͠ίϯϑϦΫτͷղফࠔ w Ұ෦$BQBCJMJUZͷઃఆΛਧ͖ඈ͠·ͨ͠
9DPEF(FO w IUUQTHJUIVCDPNZPOBTLPMC9DPEF(FO w σΟϨΫτϦߏͱ:".-ϑΝΠϧ͔Β ϓϩδΣΫτϑΝΠϧΛ࡞ΕΔπʔϧ w ϓϩδΣΫτϑΝΠϧͷ(JUཧ͔Βղ์͞ΕΔ w ઌʹಋೖ͖ͩͬͨ͢
Ϟδϡʔϧׂͷ୯Ґ͕ػೳ୯ҐʹͳΔ BQQ ػೳ" ػೳ# ػೳ$ ڞ௨Ϟδϡʔϧ BQQ 1SFTFOUBUJPO %PNBJO *OGSBTUSVDUVSF
ػೳ୯Ґ ϨΠϠʔ୯Ґ
Ϟδϡʔϧׂͷ୯Ґ͕ػೳ୯ҐʹͳΔ BQQ ػೳ" ػೳ# ػೳ$ ڞ௨Ϟδϡʔϧ BQQ 1SFTFOUBUJPO %PNBJO *OGSBTUSVDUVSF
ͬͪ͜ͷ͚ํʹ͢Δͷ͕͘͠ͳΔ
σϝϦοτ w ϓϩδΣΫτϑΝΠϧͷίϯϑϦΫτ w Ϟδϡʔϧׂͷ୯Ґ͕ػೳ୯Ґʹͳͬͯ͠·͏ w ந্͕͕ΔͷͰ࣮͕Ͳ͜ʹ͋Δ͔͔Γʹ͘͘ͳΔՄೳੑ
ࠓޙͷల w 9DPEF(FOͷಋೖ w طଘػೳͷϞδϡʔϧׂ w 0CKFDUJWF$ͳͲݹ͍ίʔυͷӅṭ w ࠓޙͷ৽ػೳͷϞδϡʔϧׂ w
EZOBNJDGSBNFXPSL͕૿͑ͨ߹ͷରࡦ w ͳͲͳͲ
·ͱΊ w ৽نػೳ͔ΒϞδϡʔϧΛ͚Δͱ͍͏ࣄΛͬͯΈͯ w ڞ௨Խ͖͢෦ͳͲࠓޙͷϞδϡʔϧׂͷώϯτ͕ಘΒΕͨ w ػೳ͕૿͑ͯӨڹൣғΛ͢Δ͜ͱ͕Ͱ͖ͨ
·ͱΊ w ϞδϡʔϧΛׂ͢Δ͜ͱࣗମͦ͜·Ͱେม͡Όͳ͍ w ໖ີͳܭըେ͕ͩखΛಈ͔ͯ͠ΈΔ͜ͱେ w ಠཱͨ͠৽ػೳΛ࡞ΔࡍϞδϡʔϧׂΛ࢝ΊΔνϟϯε w ίʔυن͕૿͑ͯ։ൃޮΛམͱ͞ͳ͍Α͏Λ͠Α͏ʂ
5IBOL:PV