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
iOSのプロジェクトをキレイにする為のいくつかの考え方
Search
Satomi Suyama
November 12, 2016
Programming
0
83
iOSのプロジェクトをキレイにする為のいくつかの考え方
MVVM, MVC, MVP, DDD, Clean Architectureなどの考え方を紹介します。
Satomi Suyama
November 12, 2016
Tweet
Share
More Decks by Satomi Suyama
See All by Satomi Suyama
Some methods for who doesn't want to use Storyboard
satomix
0
31
RFIDを用いた通信とプラチナバンド
satomix
1
85
Introduction of Vimperator
satomix
0
110
リモートワークを中心とした札幌のスタートアップが幸せな開発をするためにRuby/Railsを選択してみて
satomix
0
280
Other Decks in Programming
See All in Programming
AppRouter Panel Talk
yosuke_furukawa
PRO
1
520
ソースコードを美しくたもつために ~コードレビューの認知限界を突破し、年間400リリースを達成する~
kotauchisunsun
1
660
仕様と実装で学ぶOpenTelemetry
drumato
2
710
WebGLで始める コンピュータグラフィックス入門
heller77
0
370
Fast JSX: Don't clone props object #28768
yossydev
1
230
TSKaigi 2024 - 新サービス Progate Path の演習で TypeScript を採用して見えた教材観点からの利点と課題
makotoshimazu
1
220
哲学史とモデリング
tanakahisateru
2
390
TypeScriptから始める VR生活
tamagokakeg
2
110
Timeline エディター拡張入門
yucchiy
0
450
RailsConf 2024: Riffing on Rails: sketch your way to better designed code
kaspth
0
210
RaaP
ksss
0
150
TypeScriptのパフォーマンス改善
yajihum
14
5k
Featured
See All Featured
Code Review Best Practice
trishagee
56
15k
Writing Fast Ruby
sferik
622
60k
Mobile First: as difficult as doing things right
swwweet
217
8.6k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
242
1.2M
The Pragmatic Product Professional
lauravandoore
26
5.9k
Docker and Python
trallard
35
2.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
25
2k
Atom: Resistance is Futile
akmur
260
25k
The Language of Interfaces
destraynor
151
23k
No one is an island. Learnings from fostering a developers community.
thoeni
16
2.1k
The Invisible Customer
myddelton
114
12k
Producing Creativity
orderedlist
PRO
338
39k
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 . . ͜ͷ͘Β͍͕Ұ൪ීวతʹ͍ ͍͔͢͠Εͳ͍Ͱ͢Ͷ