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.5k
新規機能開発からモジュール分割を始めてみる
izumi
September 20, 2020
Tweet
Share
More Decks by izumi
See All by izumi
サーバーと同期してリアルタイムに更新する画面を実装する
rizumi
2
4k
5分でわかるMint
rizumi
1
840
Introducing SourceKit-LSP
rizumi
2
2.2k
レイアウト実装方法の比較ポイント
rizumi
0
2.2k
アプリ内の絵文字をカスタム絵文字化した話
rizumi
1
270
Other Decks in Programming
See All in Programming
The New Developer Workflow: How AI Transforms Ideas into Code
danielsogl
0
110
RuboCop: Modularity and AST Insights
koic
2
2.5k
Designing Your Organization's Test Pyramid ( #scrumniigata )
teyamagu
PRO
2
240
Empowering Developers with HTML-Aware ERB Tooling @ RubyKaigi 2025, Matsuyama, Ehime
marcoroth
2
960
インプロセスQAにおいて大事にしていること / In-process QA Meetup
medley
0
140
「理解」を重視したAI活用開発
fast_doctor
0
270
Browser and UI #2 HTML/ARIA
ken7253
2
170
Boost Your Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
770
Beyond_the_Prompt__Evaluating__Testing__and_Securing_LLM_Applications.pdf
meteatamel
0
110
カウシェで Four Keys の改善を試みた理由
ike002jp
1
120
Rubyの!メソッドをちゃんと理解する
alstrocrack
1
120
生成AIで知るお願いの仕方の難しさ
ohmori_yusuke
1
100
Featured
See All Featured
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
14
1.4k
For a Future-Friendly Web
brad_frost
177
9.7k
Navigating Team Friction
lara
185
15k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
45
9.5k
The Cult of Friendly URLs
andyhume
78
6.3k
Speed Design
sergeychernyshev
29
930
The Language of Interfaces
destraynor
158
25k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Build your cross-platform service in a week with App Engine
jlugia
230
18k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
41
2.3k
Optimizing for Happiness
mojombo
378
70k
Automating Front-end Workflow
addyosmani
1370
200k
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