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
3
690
DMM.swift#1 Mergeable Libraryを試した
yuki tamazawa
January 29, 2024
Tweet
Share
More Decks by yuki tamazawa
See All by yuki tamazawa
アラートなどの割り込み表示を制御する
srea
2
560
DMM 次世代SDK開発チーム
srea
0
440
mablりましょう。
srea
0
1k
OSSと私
srea
1
530
ソフトウェア品質を支える E2Eテストのパイプライン作り
srea
3
3.3k
Other Decks in Technology
See All in Technology
データモデリング通り #2オンライン勉強会 ~方法論の話をしよう~
datayokocho
0
150
Kiroでインフラ要件定義~テスト を実施してみた
nagisa53
3
340
Jamf Connect ZTNAとMDMで実現! 金融ベンチャーにおける「デバイストラスト」実例と軌跡 / Kyash Device Trust
rela1470
1
190
風が吹けばWHOISが使えなくなる~なぜWHOIS・RDAPはサーバー証明書のメール認証に使えなくなったのか~
orangemorishita
15
5.6k
20250807_Kiroと私の反省会
riz3f7
0
200
LLMをツールからプラットフォームへ〜Ai Workforceの戦略〜 #BetAIDay
layerx
PRO
1
940
【CEDEC2025】大規模言語モデルを活用したゲーム内会話パートのスクリプト作成支援への取り組み
cygames
PRO
2
820
金融サービスにおける高速な価値提供とAIの役割 #BetAIDay
layerx
PRO
1
800
Claude Codeが働くAI中心の業務システム構築の挑戦―AIエージェント中心の働き方を目指して
os1ma
9
2.4k
AIのグローバルトレンド 2025 / ai global trend 2025
kyonmm
PRO
1
130
プロダクトエンジニアリングで開発の楽しさを拡張する話
barometrica
0
130
いかにして命令の入れ替わりについて心配するのをやめ、メモリモデルを愛するようになったか(改)
nullpo_head
7
2.5k
Featured
See All Featured
Navigating Team Friction
lara
188
15k
A designer walks into a library…
pauljervisheath
207
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Optimising Largest Contentful Paint
csswizardry
37
3.4k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
53
2.9k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
Embracing the Ebb and Flow
colly
86
4.8k
Designing for Performance
lara
610
69k
Balancing Empowerment & Direction
lara
1
530
How STYLIGHT went responsive
nonsquared
100
5.7k
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
͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ