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
6.2k
7
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
新規機能開発からモジュール分割を始めてみる
izumi
September 20, 2020
More Decks by izumi
See All by izumi
サーバーと同期してリアルタイムに更新する画面を実装する
rizumi
2
4.7k
5分でわかるMint
rizumi
1
890
Introducing SourceKit-LSP
rizumi
2
2.4k
レイアウト実装方法の比較ポイント
rizumi
0
2.4k
アプリ内の絵文字をカスタム絵文字化した話
rizumi
1
320
Other Decks in Programming
See All in Programming
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
490
その問い、本当に正しいですか?AI時代のエンジニアに必要な哲学と認知科学 / ai-philosophy-cognitive-science
minodriven
14
6.8k
どこまでゆるくて許されるのか
tk3fftk
0
480
act1-costs.pdf
sumedhbala
0
210
AIエージェントで 変わるAndroid開発環境
takahirom
2
580
Haskell/Servantを通してWebミドルウェアを捉え直す
pizzacat83
1
520
SREの積み重ねがAI駆動開発のガードレールになった ― 7つの実践/SRE Guardrails The 7
tomoyakitaura
8
4k
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
9k
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
150
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
120
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.4k
Creating Composable Callables in Contemporary C++
rollbear
0
200
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
3.9M
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
BBQ
matthewcrist
89
10k
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
330
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.3k
Designing for Performance
lara
611
70k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.4k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
230
Making Projects Easy
brettharned
120
6.7k
Google's AI Overviews - The New Search
badams
0
1.1k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
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