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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Satomi Suyama
November 12, 2016
Programming
0
92
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
35
RFIDを用いた通信とプラチナバンド
satomix
1
100
Introduction of Vimperator
satomix
0
130
リモートワークを中心とした札幌のスタートアップが幸せな開発をするためにRuby/Railsを選択してみて
satomix
0
300
Other Decks in Programming
See All in Programming
AI巻き込み型コードレビューのススメ
nealle
2
1.3k
2026年 エンジニアリング自己学習法
yumechi
0
140
要求定義・仕様記述・設計・検証の手引き - 理論から学ぶ明確で統一された成果物定義
orgachem
PRO
1
230
AWS re:Invent 2025参加 直前 Seattle-Tacoma Airport(SEA)におけるハードウェア紛失インシデントLT
tetutetu214
2
120
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
7.5k
Oxlint JS plugins
kazupon
1
1k
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
210
Oxlintはいいぞ
yug1224
5
1.4k
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
990
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
プロダクトオーナーから見たSOC2 _SOC2ゆるミートアップ#2
kekekenta
0
220
カスタマーサクセス業務を変革したヘルススコアの実現と学び
_hummer0724
0
740
Featured
See All Featured
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
120
Building Applications with DynamoDB
mza
96
6.9k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
A Soul's Torment
seathinner
5
2.3k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
450
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
190
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.6k
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
290
Joys of Absence: A Defence of Solitary Play
codingconduct
1
290
30 Presentation Tips
portentint
PRO
1
220
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
0
260
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
52
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 . . ͜ͷ͘Β͍͕Ұ൪ීวతʹ͍ ͍͔͢͠Εͳ͍Ͱ͢Ͷ