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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Satomi Suyama
November 12, 2016
Programming
100
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSのプロジェクトをキレイにする為のいくつかの考え方
MVVM, MVC, MVP, DDD, Clean Architectureなどの考え方を紹介します。
Satomi Suyama
November 12, 2016
More Decks by Satomi Suyama
See All by Satomi Suyama
Some methods for who doesn't want to use Storyboard
satomix
0
46
RFIDを用いた通信とプラチナバンド
satomix
1
100
Introduction of Vimperator
satomix
0
130
リモートワークを中心とした札幌のスタートアップが幸せな開発をするためにRuby/Railsを選択してみて
satomix
0
300
Other Decks in Programming
See All in Programming
自サークルのIdPからログアウトできるようになるまで
taiseiue
1
140
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
APNsからLive Activityを開始する話
yumnumm
0
170
GemmaをJevのように使ってみる / Use Gemma like Jev
kishida
5
800
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
830
作って学ぶSpring BootのAuto Configuration / JJUG Night Seminar 2026-10-19
rshindo
0
180
When benchmarks go bad - what I learned from measuring performance wrong
hollycummins
0
220
パスワード再設定メールのURLについて知っておこう
uyuki234
0
160
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
0
110
Agents on Rails - Rails at Scale 2026
irinanazarova
0
570
Web Framework Benchmark Battle 2026, Any%
a_matsuda
2
2.5k
機械に任せるテスト、人が見るテスト ⽣成AIで引き直した、運⽤保守フェーズの線引き
dske104
0
190
Featured
See All Featured
Why Mistakes Are the Best Teachers: Turning Failure into a Pathway for Growth
auna
0
330
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.2k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
280
How to make the Groovebox
asonas
2
2.5k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.2k
Git: the NoSQL Database
bkeepers
PRO
433
67k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.6k
How to build a perfect <img>
jonoalderson
1
6.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
56
3.5k
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.7k
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
Transcript
ϓϩδΣΫτΛ͓আ Satomi Suyama
Ωπ͍ಈݓ͠ ͪΌ͍ͬͯ·ͤΜ͔ʁ
Ҿ༻:http://blog.aus-ryugaku.com/wp/wp-content/uploads/2016/06/Hadouken-01.jpg
Ҿ༻:http://blog.aus-ryugaku.com/wp/wp-content/uploads/2016/06/Hadouken-01.jpg ֯ ≒ (σΟϨΫτϦ)ͷωετͷਂ
ͪΐͬͱΩπΊ
ϓϩδΣΫτ͕ෳࡶʹͳΔͱ Ҿ༻: https://image.hackadoll.com/thumbs?h=480&of=png&u=http%3A%2F%2Fappget.com%2Fc%2Fwp-content%2Fuploads%2F2016%2F05%2F0ccad452b5c1ce91252f469b99912411-650x440.png&w=480&s=98fd86486c0c04b99013eec3a204c239&t=1464074911
ϓϩδΣΫτ͕ෳࡶʹͳΔͱ Ҿ༻: https://image.hackadoll.com/thumbs?h=480&of=png&u=http%3A%2F%2Fappget.com%2Fc%2Fwp-content%2Fuploads%2F2016%2F05%2F0ccad452b5c1ce91252f469b99912411-650x440.png&w=480&s=98fd86486c0c04b99013eec3a204c239&t=1464074911 ৽نࢀՃऀ͋Δ ͍কདྷͷࣗ
ͬͪ͜దʹͳͬ ͍ͯ·ͤΜ͔ʁ
ཧ ਓੜͷجຊ
ϓϩδΣΫτ͕៉ྷͩͱɺ ετϨεܰݮʂ Δؾ্ʂ อकੑ্ʂ ޮUP!
ϓϩδΣΫτ͕៉ྷͩͱɺ ετϨεܰݮʂ Δؾ্ʂ อकੑ্ʂ ޮUP! ྑ͍͜ͱ͔ͬΓʂ
៉ྷͷج४
͍͍͢ ݟ͕͍͍ͨ ͔Γ͍͢ ग़དྷΔ͚ͩීวత ׳Ε͍͢
͍͍͢ ݟ͕͍͍ͨ ͔Γ͍͢ ग़དྷΔ͚ͩීวత ׳Ε͍͢ ਓͦΕͧΕ
ઌਓͷஐܛ σβΠϯύλʔϯ
MVC Ҿ༻: https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.r0hcfykx9
MVC of iOS Ҿ༻: https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.r0hcfykx9
MVCΛҙࣝ͢Δͱ • OsushiProject +-AppDelegate.swift +-ViewControllers +-Views +-Models +-Info.plist +-Resources
Ͱ • ModelͬͯDTO? Entity? • APIClientͱ͔Ͳ͏ͨ͠Β?
MVVM Ҿ༻: https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.r0hcfykx9
MVVMΛҙࣝ͢Δͱ • OsushiProject +-AppDelegate.swift +-Views +-ViewModels(DTO) +-Models +-Info.plist +-Resources
Ͱ • ModelͬͯDAO? Entity? • APIClientͱ͔Ͳ͏ͨ͠Β? • StateཧͲ͜Ͱ?
ݱ࣮తʹཉ͍͠υϝΠϯ • APIClients • Presenters(แׅతͳViewϨΠϠʔ) • DataStore(DAO) • Entities •
UseCase • Managers • Services • Common • Config
• APIClients • Presenters(แׅతͳViewϨΠϠʔ) • DataStore(DAO) • Entities • UseCase
• Managers • Services • Common • Config ݱ࣮తʹཉ͍͠υϝΠϯ ৭Μͳׂͷ৭ΜͳҙຯΛ࣋ͬ ͨΫϥε͕͍ͬͺ͍
• APIClients • Presenters(แׅతͳViewϨΠϠʔ) • DataStore(DAO) • Entities • UseCase
• Managers • Services • Common • Config ݱ࣮తʹཉ͍͠υϝΠϯ ৭Μͳׂͷ৭ΜͳҙຯΛ࣋ͬ ͨΫϥε͕͍ͬͺ͍ ͬͱॊೈͳͷ͕΄͍͠
͓͢͢Ί
VIPER Ҿ༻: https://medium.com/ios-os-x-development/ios-architecture-patterns-ecba4c38de52#.r0hcfykx9
VIPERͳΒ • OsushiProject +-AppDelegate.swift +-Views +-Presenters +-Routers +-Interactors +-Entities +-Info.plist
+-Resources
WAFΈ͍ͨͩͶ
Reduxͷ༷ͳ
RailsΈ͍ͨͳͷ͕΄͠ ͍ͳΒ
Clean Architecture Ҿ༻: https://qiita-image-store.s3.amazonaws.com/0/19097/903dd9be-6941-3a04-2e31-1a804
Ҿ༻: http://qiita.com/koutalou/items/07a4f9cf51a2d13e4cdc
• OsushiProject +-AppDelegate.swift +-Configurator +-Presentation +-Interactors +-Presenters +-ViewControllers +-Views +-Domains
+-UseCases +-Translators +-ViewModels +-Data +DBManagers +DataStore +-Entities +-APIs +-APIManagers +-APIClients +-Info.plist +-Resources
͖͛ͬͨAngularΈ ͍ͨ
JavaײͨͬΓͰ͢Ͷ
JavaײͨͬΓͰ͢Ͷ Clean ArchitectureAndroidք۾͔Βීٴ
ͱ͍͑ɺ ͬͺΓਖ਼ղͳ͍͠ Silver Bulletͳ͍
Γ͍ͨΑ͏ʹΔͷ ͕Ұ൪!
࠷ޙʹ
ٯʹྑ͔ͬͨߏ
ViewجຊͰ·ͱΊͪΌ͏ • OsushiProject +-Itamae +-ItamaeViewController.swift +-ItamaeViewModel.swift +-ItamaeEntity.swift +-ItamaeAPIClients.swift +-Nigiri +-NigiriVC.swift
+-NigiriVM.swift +-NigiriE.swift . .
ViewجຊͰ·ͱΊͪΌ͏ • OsushiProject +-Itamae +-ItamaeViewController.swift +-ItamaeViewModel.swift +-ItamaeEntity.swift +-ItamaeAPIClients.swift +-Nigiri +-NigiriVC.swift
+-NigiriVM.swift +-NigiriE.swift . . ͜ͷ͘Β͍͕Ұ൪ීวతʹ͍ ͍͔͢͠Εͳ͍Ͱ͢Ͷ