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
DMM.swift#1 Mergeable Libraryを試した
Search
yuki tamazawa
January 29, 2024
Technology
1
570
DMM.swift#1 Mergeable Libraryを試した
yuki tamazawa
January 29, 2024
Tweet
Share
More Decks by yuki tamazawa
See All by yuki tamazawa
アラートなどの割り込み表示を制御する
srea
1
510
DMM 次世代SDK開発チーム
srea
0
400
mablりましょう。
srea
0
910
OSSと私
srea
1
500
ソフトウェア品質を支える E2Eテストのパイプライン作り
srea
3
3.2k
Other Decks in Technology
See All in Technology
カップ麺の待ち時間(3分)でわかるPartyRockアップデート
ryutakondo
0
140
実践! ソフトウェアエンジニアリングの価値の計測 ── Effort、Output、Outcome、Impact
nomuson
0
2.1k
embedパッケージを深掘りする / Deep Dive into embed Package in Go
task4233
1
210
I could be Wrong!! - Learning from Agile Experts
kawaguti
PRO
8
3.4k
Docker Desktop で Docker を始めよう
zembutsu
PRO
0
170
re:Invent2024 KeynoteのAmazon Q Developer考察
yusukeshimizu
1
150
.NET 最新アップデート ~ AI とクラウド時代のアプリモダナイゼーション
chack411
0
200
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
190
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
コロプラのオンボーディングを採用から語りたい
colopl
5
1.2k
メールヘッダーを見てみよう
hinono
0
100
三菱電機で社内コミュニティを立ち上げた話
kurebayashi
1
360
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
41
7.2k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.2k
Producing Creativity
orderedlist
PRO
343
39k
Facilitating Awesome Meetings
lara
51
6.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
Making Projects Easy
brettharned
116
6k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
26
1.9k
Transcript
%..TXJGU .FSHFBCMF-JCSBSZΛࢼͨ͠
w ۄᖒ༟و w ϓϥοτϑΥʔϜࣄۀຊ෦ w %..ϙΠϯτΫϥϒͷ։ൃ w ೝূ4%,ͷ։ൃ w (JU)VCTSFB
ൃදऀ
w .FSHFBCMF-JCSBSZͱ w Ϛʔδͨ͠ΞϓϦ͕ಈ͘·Ͱ w ֤छσʔλൺֱ w ·ͱΊ
.FSHFBCMF-JCSBSZͱ
.FSHFBCMF-JCSBSZͱ w 88%$Ͱൃද͞Εɺ9DPEF͔Βར༻Մೳ w ։ൃ࣌ͷϏϧυͱΞϓϦىಈΛߴԽΛཱ྆͢Δػೳ w ༻ʹ.FSHFBCMFͳ9$'SBNFXPSL࡞Մೳ
ϦϯΫͷछྨ ੩తϦϯΫ ಈతϦϯΫ ΞϓϦىಈ Ϗϧυ࣌ؒ ͍ ͍ ͍ ͍
Feature B App UI Feature A App .FSHFE 'FBUVSF" 'FBUVSF#
6* App Merged Feature A Feature B σόοάϏϧυ ϦϦʔεϏϧυ ϑΝΠϧαΠζ͔ᷮʹେ͖͘ͳΔΒ͍͠
.FSHFBCMF-JCSBSZͷར༻ํ๏ 9DPEFͰઃఆ͢Δ߹
.FSHFBCMF-JCSBSZͷར༻ํ๏ 9DPEF(FOͷ߹ w 4FUUJOHTͰԼهը૾ͷΑ͏ʹهࡌ͢Δ
ɹɹϚʔδͨ͠ΞϓϦ͕ಈ͘·Ͱ
%..ϙΠϯτΫϥϒͷϓϩδΣΫτߏ w ɹ9DPEF(FO w .VMUJ.PEVMF ׂػೳͰׂ͠ݸ΄Ͳ w 4XJGU1. 'JSFCBTFͳͲʜ w
$PDPB1PET 4XJGU1.ʹରԠ͍ͯ͠ͳ͍ϥΠϒϥϦ
͍͔͕ͭ͘ൃੜ
Feature B App Common Feature A ̍Ұ෦ΛϚʔδ͢Δέʔε &NCFE4JHO %P/PU&NCFE
Feature B App Library missing. Feature A Common 😱
None
Feature B App Common Feature A Merged Framework ղܾํ๏
Feature B App Feature A Merged Framework Common
Feature B App Common Feature A Merged Framework API UI
Domain
Feature B App Feature A Merged Framework Domain UI API
Common
̎MJOLFSΤϥʔ 9DPEFdͰൃੜɻ9DPEFͰൃੜͤͣɻ
̏#VOEMF͕ਖ਼͘͠ಡΈࠐΊͳ͍ #VOEMF GPS"OZ$MBTT Ͱ.BJO#VOEMFʹ͍ͯ͠·͏ɻ
̏#VOEMF͕ਖ਼͘͠ಡΈࠐΊͳ͍ Ϟδϡʔϧ໊Λͱʹ1BUIΛߏஙͯ͠ɺ#VOEMFΛੜ͢Δ͜ͱͰରԠ
̐9DPEF(FOͰͷࢦఆϛε QSPKFDUZNMʹl.BOVBMzͰͳ͘lNBOVBMzͱهࡌ͢Δ
̑(FOFSJDT %FCVHϏϧυʹݶΓɺ(FOFSJDTΛͬͨΫϥεͷ4ZNCPMղܾ͕Ͱ͖ͳ͍
̑(FOFSJDT &OBCMF5FTUBCJMJUZΛ/Pʹ͢Δ͜ͱͰճආՄೳ !UFTUBCMFJNQPSU999͕ར༻Ͱ͖ͳ͘ͳΔ
None
֤छσʔλൺֱ
σʔλൺֱʹ͍ͭͯ w શʹಉҰͷڥͰࢼ͍ͤͯ·ͤΜɻ w ϏϧυͰ͖ͳ͍ͳͲͷରॲʹΑΔӨڹؚ͕·Ε·͢ɻ
Ϗϧυͷൺֱ w Ϗϧυ࣌ؒͷࠩ w Ωϟογϡߏͷࠩ
Ϗϧυͷൺֱ %FCVH 0'' .BOVBM $MFBO#VJME *ODSFNFOUBM#VJME EJ ff T
T T T ܭଌϚγϯɿ.BD#PPL1SP()[ίΞ*OUFM$PSFJ(#4POPNB9DPEF Ϛʔδ͢ΔϑϨʔϜϫʔΫͷ $PEF4JHO$PQZॲཧ͕૿Ճ $SFBUF.FSHFE#JOBSZ
Ϗϧυͷൺֱ 3FMFBTF 0'' .BOVBM $MFBO#VJME T T ܭଌϚγϯɿ.BD#PPL1SP()[ίΞ*OUFM$PSFJ(#4POPNB9DPEF $SFBUF.FSHFE#JOBSZ
Mergeable OFF Mergeable ON
Ϗϧυͷൺֱ .FSHFE'SBNFXPSLͷߏࠩ σόοά ϦϦʔε
ΞϓϦىಈͷൺֱ *OTUSVNFOUTBQQ"QQ-BVODI ܭଌɿJ1IPOFNJOJJ04
ΞϓϦىಈͷൺֱ *OTUSVNFOUTBQQ"QQ-BVODI
ΞϓϦىಈͷൺֱ *OTUSVNFOUTBQQ"QQ-BVODI"QQ-JGFDZDMF w *OJUJBMJ[JOH w 1SPDFTT$SFBUJPO w 4ZTUFN*OUFSGBDF*OJUJBMJ[BUJPO w -BVODIJOH
w 6*,JU*OJUJBMJ[BUJPO w EJE'JOJTI-BVODIJOH8JUI0QUJPOT w 6*,JU4DFOF$SFBUJPO w TDFOF8JMM$POOFDU5P w 'PSFHSPVOE w "DUJWF
ΞϓϦىಈͷൺֱ 🥶$PME-BVODI ☺8BSN-BVODI ϝϞϦ্ ϓϩηε ଘࡏ͠ͳ͍ ଘࡏ͠ͳ͍ γεςϜαʔϏεͷ Ұ෦͕ଘࡏ ଘࡏ͠ͳ͍
ॳճىಈ εϚϗ࠶ىಈޙ ̍ىಈ͞Εͯ ͦͷޙڧ੍ऴྃ ঢ়ଶ
ΞϓϦىಈͷൺֱ .FSHFBCMF-JCSBSZ0'' NT 🥶$PME-BVODI ☺8BSN-BVODI T
ΞϓϦىಈͷൺֱ .FSHFBCMF-JCSBSZ0/ NT NT 🥶$PME-BVODI ☺8BSN-BVODI
ΞϓϦىಈͷൺֱ 🥶$PME-BVODI.FSHF0/ 🥶$PME-BVODI.FSHF0'' T Կ͔͕͋Δ NT ࠩNT
ΞϓϦىಈͷൺֱ .FSHFBCMF-JCSBSZ0'' ֤ϞδϡʔϧͷಈతϦϯΫॲཧ
ΞϓϦىಈͷൺֱ .FSHFBCMF-JCSBSZ0/ "VUPNBUJD ಈతϦϯΫॲཧ͕ແ͘ͳΔ
όΠφϦʔͷൺֱ w ϑΝΠϧαΠζͷҧ͍ w γϯϘϧͷҧ͍ w ϥΠϒϥϦࢀরͷҧ͍
ϑΝΠϧαΠζͷൺֱ 0'' "VUPNBUJD "QQ#JOBSZ 'SBNFXPSLT .# .# $SFBUF.FSHFE#JOBSZ .# .#
.# .# OTHER_LDFLAGS = -Wl,-no_exported_symbols .# .BOVBM .# .# .# .# .#
γϯϘϧͷൺֱ ONίϚϯυ 0'' "VUPNBUJD "QQ#JOBSZ 4ZNCPM $SFBUF.FSHFE#JOBSZ
.BOVBM
ϥΠϒϥϦࢀরͷൺֱ PUPPM-BQQ#JOBSZ 0'' 0/ 🈳
·ͱΊ w ։ൃମݧΛଛͳΘͣϢʔβʔମݧΛվળͰ͖ΔՄೳੑ͋Γ w ϦιʔεपΓͷѻ͏ํ๏ʹ՝ײ͋Γ w *OTUSVNFOUTͷ"QQ-BVODIͰɺݱঢ়ͷѲ͔Β࢝ΊΔͱྑ͍
ͦͷଞ ࠓճऔΓ্͛ΒΕͳ͔ͬͨͷ w J04͚ͷ#VOEMFݕࡧαϙʔτΛແޮԽ OTHER_LDFLAGS = -Wl,-no_merged_libraries_hook
ࢀߟࢿྉ w .FSHFBCMF-JCSBSZ w 88%$.FFUNFSHFBCMFMJCSBSJFT w $POGJHVSJOHZPVSQSPKFDUUPVTFNFSHFBCMFMJCSBSJFT w *OTUSVNFOUT"QQ-BVODI w
88%$0QUJNJ[JOH"QQ-BVODI w 3FEVDJOHZPVSBQQ`TMBVODIUJNF
͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ