Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
クラスメソッドでiOSアプリ 開発をする際に使われた技術の紹介
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Yamada Ryo
August 13, 2018
Programming
790
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
クラスメソッドでiOSアプリ 開発をする際に使われた技術の紹介
8/10(金)にクラスメソッド大阪オフィスで行われた勉強会で使用したスライドです。
Yamada Ryo
August 13, 2018
More Decks by Yamada Ryo
See All by Yamada Ryo
Apple PayとPassword AutoFillの実装方法と困った話
yamadaryo11
0
1.3k
iOSアプリ単体テスト入門
yamadaryo11
0
1.7k
Other Decks in Programming
See All in Programming
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
320
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
1
180
AWSに止められる覚悟してますか?
morizo_1984
2
540
Railsバージョンを4倍にした話
optim
0
450
Jetpack Compose Mechanisms
skydoves
3
820
外から家のPCの電源入れたい!をPHPで解決する
kawashimo0
1
140
Performance Optimization With LLMs
xleitix
0
140
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
現場と育てるRailsモデリング 〜Spreadsheetから始めたモデル設計〜
siroemk
2
630
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
re:Inventに行く前に知っておきたい現地参加のノウハウ
nokomoro3
0
440
APNsからLive Activityを開始する話
yumnumm
0
170
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
580
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
550
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3.8k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
480
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
640
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.3k
A better future with KSS
kneath
240
18k
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
2
410
Side Projects
sachag
456
43k
Transcript
ΫϥεϝιουͰJ04ΞϓϦ ։ൃΛ͢ΔࡍʹΘΕٕͨज़ ͷհ ϞόΠϧΞϓϦαʔϏε෦ɹࢁాɹྑ
ࣗݾհ w ϞόΠϧΞϓϦαʔϏε෦ɹࢁాɹྑ w ೖࣾ w J04ΞϓϦ։ൃܦݧɹશ෦Ͱ͙Β͍ʁ w ݩʑ4&4Ͱಇ͍ͯɺΞϓϦɺαʔόαΠυɺΈࠐΈ෯ ͘ܦݧ͖ͯ͠·ͨ͠
w Ͷ͖͜
ࠓճ͓͢Δ͜ͱ w ฐࣾͰJ04ΞϓϦ։ൃͰͲͷΑ͏ͳʮϞόΠϧΞʔΩςΫ νϟ͕࠾༻͞Ε͍ͯΔ͔ʯʮςΫχοΫ࣋ʯͷௐࠪ݁ Ռͱݸਓతݟղ w ୯ମςετʹ͍ͭͯͷݟղ w 'MVUUFSʹ͍ͭͯ
ϞόΠϧΞʔΩςΫνϟ w .7$ w .71 w .77. w ΫϦʔϯΞʔΩςΫνϟ w
7*1&3
.7$ 7JFX $POUSPMMFS .PEFM 'BUʹͳΓ͍͢ʁ
.7$ ※ʮObjective-C ϓϩάϥϛϯάͷ֓೦ʯΑΓൈਮ
.71 7JFX 7JFX$POUSPMMFSؚΉ 1SFTFOUFS .PEFM 6*,JUؚ·ͳ͍
.77. 7JFX 7JFX$POUSPMMFSؚΉ 7JFX.PEFM .PEFM มߋͷ௨
.77. w .71ͱେ͖͘ҧ͏ͱ͜Ζɺ7JFX.PEFMͷมߋΛݕ͠ ͯ7JFXʹ͑ΔʢCJOEJOHʣ w #JOEJOHͷํ๏ͱͯ͠ɺΫϩʔδϟ,70ɺ3Y4XJGUΛ ͏ͳͲɺ͍͔ͭ͘ํ๏͕͋Δ
ΫϦʔϯΞʔΩςΫνϟ
ΫϦʔϯΞʔΩςΫνϟ ※ࢀরݩ: ·ͩMVC,MVP,MVVMͰফͯ͠Δͷʁ iOS Clean Architectureʹ͍ͭͯ https://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc 1SFTFOUFS 7JFX 6TF$BTF
3FQPTJUPSZ %BUB4UPSF 5SBOTMBUFS .PEFM &OUJUZ 1SFTFOUBUJPO-BZFS %PNBJO-BZFS %BUB-BZFS
7*1&3 ※ࢀরݩ: iOS Project Architecture: Using VIPER https://cheesecakelabs.com/blog/ios-project-architecture-using-viper/
7*1&3 w 7JFX *OUFSBDUPS 1SFTFOUFS &OUJUZ 3PVUFSͷ಄จࣈΛ ͱͬͯ7*1&3ͱݺͿ w ୯Ұͷݪଇ
4JOHMF3FTQPOTJCJMJUZ1SJODJQMF ʹԊ͏ w 7JFXʹ6*7JFX$POUSPMMFSΛؚΉ w *OUFSBDUPS͕6TF$BTFʹ͋ͨΔ w 3PVUFSʹ/BWJHBUJPO-PHJDΛهड़͢Δ
ΞϯέʔτΛ ͱͬͯΈͨ
Ξϯέʔτͷ༰ w ࠓ·Ͱ࠾༻͖ͯͨ͠ϞόΠϧΞʔΩςΫνϟͷύλʔϯ w ্ه࣭ʹͯɺଞͷϞόΠϧΞʔΩςΫνϟΛ࠾༻͢Δ͔ߟ͔͑ͨ w ࣮ࡍʹͬͯΈͯɺྑ͔ͬͨͱ͜Ζɺվળ͔ͨͬͨ͠෦͔͋ͬͨ w ݱࡏɺझຯͰԿ͔࡞Δͱͨ͠ΒɺͲͷΞʔΩςΫνϟύλʔϯΛ࠾༻͢Δ ͔
w νʔϜͰҊ݅ΛਐΊΔͱͯ͠ɺͲͷΞʔΩςΫνϟύλʔϯΛબ͢Δ͔ w ࣋͋Ε w ͦͷଞɺπʔϧมΘͬͨςΫχοΫ͕͋Ε
࠾༻͞Εͨ w ୈ̍Ґɿ.71 w ୈ̎Ґɿ.7$ w ୈ̏Ґɿ.77. w ୈ̐ҐɿΫϦʔϯΞʔΩςΫνϟ w
ୈ̑Ґɿ7*1&3 w ୈ̑Ґɿ%%%
࠾༻ͯ͠ྑ͔ͬͨ w .71J04ͱ"OESPJEͰ౷Ұͨ͠ΠϯλʔϑΣʔεʹͯ͠ɺ ݁Ռతʹίʔυ্Ͱ༷͕ᘳͰͳ͍ʹ͠Ζ͑ΒΕΔ ͷ͕ྑ͔ͬͨ w ࢦ͕͋ΔͨΊɺࣗ৴Λ࣋ͬͯίʔυ͕ॻ͚ͨɻ w ίʔυʹ౷Ұੑ͕ੜ·ΕͯՄಡੑ্͕ͨ͠ w
.71J04ͷϑϨʔϜϫʔΫ͕.7$ɺ5BSHFU"DUJPOɺ %FMFHBUFͰग़དྷ͍ͯΔͷͰɺΫϦʔϯΞʔΩςΫνϟ Γ͗ͩ͢ͱೝࣝͰ͖ͨ
վળ͔ͨͬͨ͠ w .77.ͰTXJOKFDUΛ͍ͬͯͯɺॻ͘͜ͱ͕ଟͯ͘େมͩͬͨɻɻɻ w .7$Ͱ7$ʹॲཧ͕ͨ͘͞Μॻ͍ͯ͋ͬͯՄಡੑ͕ѱ͔ͬͨ w .71ͰͲΕʹଐ͞ͳ͍Α͏ͳͷ͕ग़͖ͯͯɺ໋໊ɺΫϥεͷѻ͍ ͕࣮ऀͦΕͧΕʹͳͬͯ͠·͏ɻ w ը໘ભҠ෦ޙʑෳࡶʹͳΓ͕ͪͳͷͰɺผͱͯ͠Γग़͠͠
͓͖͔ͯͨͬͨɻ w J04$MFBO"SDIJUFDUVSF෦͕ଟ͍͜ͱ͔Βɺগ։ൃʹ͍ ͯͳ͔ͬͨ
झຯͰΔͳΒͲΕʁ w ୈ̍Ґɿ.71 w ୈ̎Ґɿ.77. w ୈ̎Ґɿ.7$ w ୈ̏Ґɿ3FBDU 3FEVY
ࣄͰΔͳΒͲΕʁ w ୈ̍Ґɿ.71 w ୈ̎Ґɿ.77. w ୈ̏ҐɿΫϦʔϯΞʔΩςΫνϟ w νʔϜͰ͠߹ܾͬͯΊΔɺͱ͍͏ͷ͕Ұ൪ଟ͔ͬͨ
࣋ͳͲ w ಉ͡ΞʔΩςΫνϟͰॻ͔Εͨଞਓͷίʔυ༗ྗͳϕϯ μʔͷίʔυΛΑ͘ݟΔ͜ͱ w ଉͷ͍ΞϓϦͷ߹ɺͪΌΜͱઃܭ͠ͳ͍ͱ͡Θ͡Θͱ ഁ͢Δ w ࣗͰߟ͑ͯɺదͨ͠ΞʔΩςΫνϟΛબͨ͠Γɺվ ͨ͠Γ͢Δྗ͕ඞཁ
w ΞʔΩςΫνϟ͚ͩͰͳ͘ɺΫϥεͷதΛ៉ྷʹ͢Δͳ Ͳɺࡉ͔͍෦ͷѻ͍େࣄ
࣋ͳͲ w ྲྀߦͬͯΔ͔Βͱ͍ͬͯඈͼ͍ͭͯ͠·͏ͱ௧͍ʹ͋͏ͷͰɺ ʮϝϦοτʯΛ뱌͔ͯ͠Β࠾༻͍ͨ͠ w J04ͱ"OESPJE։ൃऀͰ։ൃʹೖΔલʹυΩϡϝϯτͰ༷ɾΠ ϯλʔϑΣʔεΛॻ͖ͨ͠ɻϏδωεϩδοΫͷೝ͕ࣝҰக͠ ͨɻ w σϦόϦʔ༏ઌͩͱ.71ɻઃܭΛߟ͑Δͷָ͍͠ɻͰͬ
ͱେ͖͍υϝΠϯͷઃܭʢαʔϏεશମʣΛߟ͑Δͱྑ͍ɻ w ՁΛૉૣ͘ఏڙ͢Δʢص্ͷۭ͡ΌΘ͔Βͳ͍෦Ϟο ΫͰྑ͍ͷͰސ٬ʹΠϝʔδΛ௫·ͤΔʣ
πʔϧςΫχοΫ w J04$MFBO"SDIJUFDUVSFࣗಈੜπʔϧʮ,VSJʯ w 4XJGU-JOUͰίʔυϨϏϡʔͷͭ·Βͳ͍ࢦఠΛগͳ͘͠ ͨ w $BSUIBHFΛ࠾༻ͯ͠ɺ#VJME࣌ؒΛॖͨ͠ɻʢ୯ମҊ݅ Ͱ࠾༻ͨ͠ʣ w
$*πʔϧͱͯ͠5SBWJT$*ɺ$JSDMF$*ɺCJUSJTFΛͬͨ
͔͜͜Βओ؍
ΞϯέʔτΛͱͬͯ Θ͔ͬͨ͜ͱ w ͦͦͦΜͳʹΞʔΩςΫνϟʹڧ͍ͩ͜ΘΓͳ͍ਓͷํ ͕ଟ͍ w νʔϜͰΛͯ͠ɺνʔϜʹͱͬͯҰ൪ྑ͍ͷΛબ͖͢ w ʮڞ௨ॲཧʯͳͲͲ͜ʹஔ͔͘໎ͬͪΌ͏߹͋Δ w
ϞόΠϧΞʔΩςΫνϟͷಋೖͰʮࣗ৴Λ࣋ͬͯίʔυ͕ॻ͚ Δʯͷྑ͍͜ͱ w ۜͷؙʮແ͍ʯ
ݸਓతͳײ w ϞόΠϧΞʔΩςΫνϟʮखஈʯͰ͋ͬͯʮతʯͰ ͳ͍ w ָ͠ΜͰઃܭ͠Α͏ɻͦͯ͠ਫ਼ਆతͳ҆શΛखʹೖΕΑ͏ w ݸਓతʹ.77. 3Y4XJGU ͕͖ɻΫϦʔϯΞʔΩς
ΫνϟͿ͔͞Ͱ͍͟͝·ͤΜɻ.7$ͩͱͪΐͬͱ ͭΒ͍͔ͳ͊ɻ w CJUSJTF͍͔ͬͨ͢
൪֎ฤ
5SZ4XJGUͰͷΞϯέʔτ w ୈ̍Ґɿ.7$ w ୈ̎Ґɿ.77. w ͦͷଞׂͱΒ ͚ͯΔ
͔͜͜Β ୯ମςετͷ͓
ܦҢ w ࢲ͕ࣗJ04ΞϓϦͷ୯ମςετΛॻ͍ͨܦݧ͕ແ͍ w ϓϩδΣΫτͰ୯ମςετΛॻ͘ػձ͕͋ͬͨ w ͜Ε͔Β୯ମςετͷཧղΛਂΊ͍͖͍ͯͨͱ͍͏Ϟν ϕʔγϣϯ
୯ମςετͷಋೖൣғ w ϏδωεϩδοΫʹద༻ w 6*ςετʹ͍ͭͯࠓޙͷ՝ͱ͍ͯ͠Δ w ࠾༻ͨ͠ϞόΠϧΞʔΩςΫνϟʮΫϦʔϯΞʔΩςΫ νϟʯ
ςετ͍͢͠ίʔυͱ w %FQFOEFODZ*OKFDUJPO %* ͠·͢ɻ w ґଘ͢ΔϞδϡʔϧΛ෦Ͱੜ͢ΔͷͰͳ͘ɺʮೖ ͢Δʯ w 4XJGUͰ%*͢ΔʹQSPUPDPMΛ্खʹ͏
w ࣗ࡞ΫϥεͰ͋ΕɺJOJUJBMJ[FͰґଘؔΛೖ͢Δ
۩ମྫ • ӈͷΑ͏ͳߏͷϓϩμΫτΛྫ ʹ͠·͢ɻ • ࠓճPresenterʹߜͬͯղઆ͠· ͢ ViewController Presenter DataStore
Viewͷૢ࡞ APIίʔϧ Viewͷඳը໋ྩ APIίʔϧ໋ྩ
۩ମతͳྫ ʢ7JFX$POUSPMMFSʣ
۩ମతͳྫʢ%*ʣ
۩ମతͳྫ1SFTFOUFS
۩ମతͳྫ1SFTFOUFS
۩ମతͳྫ.PDL
None
None
None
൪֎ฤɿ࣮"1*Λୟ͘ςετ Λॻ͖͔ͨͬͨ wຖճࢼ͍ͨ͠Θ͚Ͱͳ͍͕ɺ"1*ʢ֎෦γες Ϝʣ͕ਖ਼͍͠ϨεϙϯεΛฦ͍ͯ͠Δ͔ɺ࣌ʑ֬ ೝ͔ͨͬͨ͠ w4DIFNFΛ͚ͯɺ࣮"1*Λୟ͘ςετΛผ్࡞ ͨ͠ w$*πʔϧʹͯ୯ମςετΛΒ͍͕ͤͯͨɺ࣮ "1*Λୟ͘4DIFNFର֎ͱͨ͠
͔͜͜Β 'MVUUFS
࠷ۙɺ'MVUUFSʹ ϋϚͬͯ·͢ʢझຯʣ
'MVUUFSͬͯԿʁ w (PPHMF͕։ൃ͍ͯ͠ΔϞόΠϧΞϓϦ༻4%,ͰJ04ɺ "OESPJE྆ํͷΞϓϦ͕։ൃͰ͖ΔΫϩεϓϥοτϑΥʔ Ϝͳ4%,Ͱ͢ɻ w ϓϩάϥϜ%BSUͰॻ͖·͢ɻ w 7JTVBM4UVEJP$PEFͰॻ͚ΔΑ
ͬͯΈͨ
w ࣮ࡍʹΧʔυͷϨΠΞτΛ࡞ͬͯ ݟͨ w .BUFSJBM%FTJHOʢଞͷσβΠϯద ༻Մೳʣ w ϨΠΞτࣗମίʔυͰॻ͘ w ෭࡞༻ʁͰɺαϯϓϧΛʮίϐϖʯ͠
ͨΒجຊతʹಈ͘ w ϨΠΞτͷํJ04ͱ݁ߏҧ͏ ͷͰށͬͨ w 8FC'SPOU͔Βࢀೖ͢Δਓͱͬͭ ͖͍͔͢
None
ŋТŋA Ͷ͢ͱʜ
એ ϞόΠϧϝιουͱ͍͏ษڧ ձ͋ΔͷͰࢀՃɺొஃऀื ूதʂʂ 'MVUUFS༑ୡཉ͍͠ͳʂʂ
͝ਗ਼ௌ ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ