$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOSのプロジェクトをキレイにする為のいくつかの考え方
Search
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
Jetpack XR SDKから紐解くAndroid XR開発と技術選定のヒント / about-androidxr-and-jetpack-xr-sdk
drumath2237
1
190
從冷知識到漏洞,你不懂的 Web,駭客懂 - Huli @ WebConf Taiwan 2025
aszx87410
2
3.1k
TerraformとStrands AgentsでAmazon Bedrock AgentCoreのSSO認証付きエージェントを量産しよう!
neruneruo
4
1.8k
AI 駆動開発ライフサイクル(AI-DLC):ソフトウェアエンジニアリングの再構築 / AI-DLC Introduction
kanamasa
11
4k
AI Agent Dojo #4: watsonx Orchestrate ADK体験
oniak3ibm
PRO
0
110
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
新卒エンジニアのプルリクエスト with AI駆動
fukunaga2025
0
230
Navigation 3: 적응형 UI를 위한 앱 탐색
fornewid
1
460
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
370
re:Invent 2025 トレンドからみる製品開発への AI Agent 活用
yoskoh
0
430
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
160
ゲームの物理 剛体編
fadis
0
370
Featured
See All Featured
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
The Curious Case for Waylosing
cassininazir
0
190
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
The Pragmatic Product Professional
lauravandoore
37
7.1k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
30
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
286
14k
Site-Speed That Sticks
csswizardry
13
1k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.5k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
410
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 . . ͜ͷ͘Β͍͕Ұ൪ීวతʹ͍ ͍͔͢͠Εͳ͍Ͱ͢Ͷ