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
4.9k
新規機能開発からモジュール分割を始めてみる
izumi
September 20, 2020
Tweet
Share
More Decks by izumi
See All by izumi
サーバーと同期してリアルタイムに更新する画面を実装する
rizumi
2
2.9k
5分でわかるMint
rizumi
1
760
Introducing SourceKit-LSP
rizumi
2
2k
レイアウト実装方法の比較ポイント
rizumi
0
2k
アプリ内の絵文字をカスタム絵文字化した話
rizumi
1
210
Other Decks in Programming
See All in Programming
Changed Rules: Architectures with Lightweight Stores
manfredsteyer
PRO
0
240
Snowflakeで眠ったデータを起こそう!
estie
0
120
Amazon SQSコンシューマー疎結合への旅 - 出張! #DevelopersIO IT技術ブログの中の人が語る勉強会 #3
quiver
0
260
エンターテイメント業界で利用されるAWS
demuyan
0
210
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
530
MicrosoftのPlatform Engineeringガイドを読んで実際になにかやってみた
ymd65536
1
320
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
690
코틀린으로 멀티플랫폼 만들기
pangmoo
0
150
Behind VS Code Extensions for JavaScript / TypeScript Linnting and Formatting
unvalley
5
910
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
26
8.2k
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
270
Goのmultiple errorsについて (2024年4月版)
syumai
3
670
Featured
See All Featured
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
2
1.3k
Rebuilding a faster, lazier Slack
samanthasiow
73
8.2k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
357
22k
The Language of Interfaces
destraynor
151
23k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
25
2.3k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
352
28k
The Art of Programming - Codeland 2020
erikaheidi
42
12k
For a Future-Friendly Web
brad_frost
172
9k
Practical Orchestrator
shlominoach
182
9.7k
Reflections from 52 weeks, 52 projects
jeffersonlam
345
19k
Building Adaptive Systems
keathley
31
1.9k
Writing Fast Ruby
sferik
621
60k
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