Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Yuichi Adachi
PDF, PPTX
12,411 views
VIPER アーキテクチャによる iOS アプリの設計
第二回 北海道勉強会「スマホアプリ開発、あしたのための環境と設計のアプローチ」 資料
Engineering
◦
Read more
20
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 35
2
/ 35
3
/ 35
4
/ 35
5
/ 35
6
/ 35
7
/ 35
8
/ 35
9
/ 35
10
/ 35
11
/ 35
12
/ 35
13
/ 35
14
/ 35
15
/ 35
16
/ 35
17
/ 35
18
/ 35
19
/ 35
20
/ 35
21
/ 35
22
/ 35
23
/ 35
24
/ 35
25
/ 35
26
/ 35
27
/ 35
28
/ 35
29
/ 35
30
/ 35
31
/ 35
32
/ 35
33
/ 35
34
/ 35
35
/ 35
More Related Content
PDF
次世代Webコンテナ Undertowについて
by
Yoshimasa Tanabe
PPT
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
PDF
"Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
by
Yahoo!デベロッパーネットワーク
PDF
ニワトリでもわかるECS入門
by
Yoshiki Kobayashi
PDF
MySQL負荷分散の方法
by
佐久本正太
PDF
20190514 AWS Black Belt Online Seminar Amazon API Gateway
by
Amazon Web Services Japan
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
PDF
TripleOの光と闇
by
Manabu Ori
次世代Webコンテナ Undertowについて
by
Yoshimasa Tanabe
ドメインロジックの実装方法とドメイン駆動設計
by
Tadayoshi Sato
"Yahoo! JAPAN の Kubernetes-as-a-Service" で加速するアプリケーション開発
by
Yahoo!デベロッパーネットワーク
ニワトリでもわかるECS入門
by
Yoshiki Kobayashi
MySQL負荷分散の方法
by
佐久本正太
20190514 AWS Black Belt Online Seminar Amazon API Gateway
by
Amazon Web Services Japan
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
TripleOの光と闇
by
Manabu Ori
What's hot
PDF
Junitを使ったjavaのテスト入門
by
Satoshi Kubo
PPTX
Metaspace
by
Yasumasa Suenaga
PDF
TLS, HTTP/2演習
by
shigeki_ohtsu
PDF
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
PDF
今日こそ理解するHot / Cold @社内RxSwift勉強会
by
Yuki Takahashi
PDF
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
by
Shuji Kikuchi
PDF
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
ODP
MVC の Model を考える
by
tomo_masakura
PPTX
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...
by
NTT DATA Technology & Innovation
PPTX
iOSでライブラリを提供する際に気をつけたいこと
by
asakahara
PDF
RESTful Web アプリの設計レビューの話
by
Takuto Wada
PDF
PHP の GC の話
by
y-uti
PDF
例外設計における大罪
by
Takuto Wada
PDF
TRICK 2022 Results
by
mametter
PDF
Kubernetesのワーカーノードを自動修復するために必要だったこと
by
h-otter
PPTX
S3 整合性モデルと Hadoop/Spark の話
by
Noritaka Sekiyama
PDF
日本語テストメソッドについて
by
kumake
PDF
async/awaitダークサイド is 何
by
Kouji Matsui
PDF
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
by
shinjiigarashi
PPTX
いまさら、AWSのネットワーク設計
by
Serverworks Co.,Ltd.
Junitを使ったjavaのテスト入門
by
Satoshi Kubo
Metaspace
by
Yasumasa Suenaga
TLS, HTTP/2演習
by
shigeki_ohtsu
コンテナの作り方「Dockerは裏方で何をしているのか?」
by
Masahito Zembutsu
今日こそ理解するHot / Cold @社内RxSwift勉強会
by
Yuki Takahashi
[AKIBA.AWS] EC2の基礎 - パフォーマンスを100%引き出すオプション設定 -
by
Shuji Kikuchi
Laravelでfacadeを使わない開発
by
Kenjiro Kubota
MVC の Model を考える
by
tomo_masakura
コロナ禍で挑んだ超高速アジャイル開発 ~最速1.5ヶ月でローンチしたおでかけ混雑マップの舞台裏 (技術編) ~(NTTデータ テクノロジーカンファレンス ...
by
NTT DATA Technology & Innovation
iOSでライブラリを提供する際に気をつけたいこと
by
asakahara
RESTful Web アプリの設計レビューの話
by
Takuto Wada
PHP の GC の話
by
y-uti
例外設計における大罪
by
Takuto Wada
TRICK 2022 Results
by
mametter
Kubernetesのワーカーノードを自動修復するために必要だったこと
by
h-otter
S3 整合性モデルと Hadoop/Spark の話
by
Noritaka Sekiyama
日本語テストメソッドについて
by
kumake
async/awaitダークサイド is 何
by
Kouji Matsui
モダン PHP テクニック 12 選 ―PsalmとPHP 8.1で今はこんなこともできる!―
by
shinjiigarashi
いまさら、AWSのネットワーク設計
by
Serverworks Co.,Ltd.
Similar to VIPER アーキテクチャによる iOS アプリの設計
PPTX
MVVM入門
by
Kazutoshi Urabe
PPTX
The Abstract Architecture of Applications
by
shundroidk
PDF
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
by
Shotaro Suzuki
PDF
iOSやAndroidアプリ開発のGoodPractice
by
Ken Morishita
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
PPTX
Mvpvm pattern
by
Mami Shiino
PDF
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
PPTX
Router module in VIPER Architecture
by
Keisuke Yamaguchi
PPTX
Blue monkey architecture overview
by
Atsushi Nakamura
PDF
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
by
Mami Shiino
PDF
iOS アプリのメンテナンス性を高めるための基本的な考え方
by
kakegawa-atsushi
PPTX
最近のiOS開発の現状と実状
by
クラスメソッド株式会社
PDF
エンジニア戦記 〜小さなチーム、大きな未来〜
by
Yuki Hirai
PDF
Android Architecture
by
shinnosuke kugimiya
PDF
Cocoa Pro5
by
hasegawa
PDF
DDD 20121106 SEA Forum November
by
増田 亨
PPTX
EMF勉強会
by
Norihito Ohshima
MVVM入門
by
Kazutoshi Urabe
The Abstract Architecture of Applications
by
shundroidk
MAF2013 Enterprise Windows 8 – Architecture for rapid development of WinRT apps
by
Shotaro Suzuki
iOSやAndroidアプリ開発のGoodPractice
by
Ken Morishita
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
Mvpvm pattern
by
Mami Shiino
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
Router module in VIPER Architecture
by
Keisuke Yamaguchi
Blue monkey architecture overview
by
Atsushi Nakamura
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
by
Mami Shiino
iOS アプリのメンテナンス性を高めるための基本的な考え方
by
kakegawa-atsushi
最近のiOS開発の現状と実状
by
クラスメソッド株式会社
エンジニア戦記 〜小さなチーム、大きな未来〜
by
Yuki Hirai
Android Architecture
by
shinnosuke kugimiya
Cocoa Pro5
by
hasegawa
DDD 20121106 SEA Forum November
by
増田 亨
EMF勉強会
by
Norihito Ohshima
More from Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part28
by
Yuichi Adachi
PDF
Swift2.x を Scala からみる
by
Yuichi Adachi
PDF
Swift2 の新機能 Protocol Extension
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part19
by
Yuichi Adachi
PDF
続・ゲンバのSwift
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part15
by
Yuichi Adachi
PDF
ゲンバのSwift
by
Yuichi Adachi
PDF
Seminar on Quantum Computation & Quantum Information part14
by
Yuichi Adachi
PDF
[iOS8] 新たな線形代数ライブラリ Linear Algebra
by
Yuichi Adachi
PDF
Swiftの新機能 Optional
by
Yuichi Adachi
PDF
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
KEY
Applicative functor
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part28
by
Yuichi Adachi
Swift2.x を Scala からみる
by
Yuichi Adachi
Swift2 の新機能 Protocol Extension
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part19
by
Yuichi Adachi
続・ゲンバのSwift
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part15
by
Yuichi Adachi
ゲンバのSwift
by
Yuichi Adachi
Seminar on Quantum Computation & Quantum Information part14
by
Yuichi Adachi
[iOS8] 新たな線形代数ライブラリ Linear Algebra
by
Yuichi Adachi
Swiftの新機能 Optional
by
Yuichi Adachi
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
Applicative functor
by
Yuichi Adachi
VIPER アーキテクチャによる iOS アプリの設計
1.
VIPER アーキテクチャ による
iOS アプリの設計 Copyright © Classmethod, Inc. Classmethod Inc 安達勇一 1
2.
Copyright © Classmethod,
Inc. 自己紹介 • iPhone アプリ・サービス事業部 • iOS 開発歴 2.5 年 • 最近は Swift で開発をしています 2
3.
Copyright © Classmethod,
Inc. 9月上旬… 3 F.T氏 私 北海道勉強会やるんだけど、なんか話さない? お題は未定ね そうすね…Swift かなんかで話しましょうか… F.T氏 Swift勉強会…いいよね…
4.
月日は流れ… Copyright ©
Classmethod, Inc. 4
5.
Swift勉強会改め、スマホアプリの設計的な話にしようかと思う んだけど、どう? Copyright
© Classmethod, Inc. 9月下旬… 5 F.T氏 私 設計の話すかwwwwwwwwww _人人人人人人人人人_ > 突然の仕様変更 < ‾Y^Y^Y^Y^Y^Y^Y^Y‾
6.
Copyright © Classmethod,
Inc. 6 ios mobile archtecture
7.
Copyright © Classmethod,
Inc. 7 ios mobile archtecture
8.
Copyright ©
Classmethod, Inc. 8
9.
VIPERアーキテクチャ • View
Interactor Presenter Entity Routing Copyright © Classmethod, Inc. 9
10.
Copyright © Classmethod,
Inc. 10
11.
その前に… Copyright ©
Classmethod, Inc. 11
12.
MVCアーキテクチャ • ModelとViewとControllerにコードを分割
• Model: ロジック • View: 表示 • Controller: Modelを制御 Copyright © Classmethod, Inc. 12 Controller View Model Event
13.
MVP on iOS
Application • Model View Presenter • ViewはModelを直接操作しない • Model : ロジック • Presenter : UIViewController • View : UIView Copyright © Classmethod, Inc. 13 View Presenter Model
14.
Massive ViewController •
ModelとViewに置けなかったロジックは ViewController(Presenter)へ • 扱うViewの量に合わせて コード量が増える • Mediatorとしては正解だが… Copyright © Classmethod, Inc. 14
15.
Massive ViewController •
ModelとViewに置けなかったロジックは ViewController(Presenter)へ • 扱うViewの量に合わせて コード量が増える • Mediatorとしては正解だが… Copyright © Classmethod, Inc. 15
16.
MVCで考えることの不満点 • Modelに様々な役割があるのにひとまとめ
にしてしまう • Massive ViewControllerになりやすい • テスト可能なModelへの移行に役割を与え たい Copyright © Classmethod, Inc. 16
17.
Copyright © Classmethod,
Inc. Before VIPER View Controller Model 17
18.
Controller(Over 1000lines!!) Copyright
© Classmethod, Inc. Before VIPER View Model 18
19.
VIPER 再び Copyright
© Classmethod, Inc. 19
20.
VIPERアーキテクチャ View Interactor
Presenter Entity Routing • フレームワークに依存しない • DB, APIに依存しない • UIに依存しない • テストしやすい Copyright © Classmethod, Inc. 20
21.
VIPERアーキテクチャ DataStore Interactor
Entity Copyright © Classmethod, Inc. • コアの静的モデル • 内部ビジネスロジック • 外界とビジネスロジッ クの仲介 • 外界 21 DB API View OSS Presenter Routing
22.
Copyright © Classmethod,
Inc. 22 View Presenter Routing Interactor Entity DataStore
23.
Copyright © Classmethod,
Inc. 23 View Presenter Routing Interactor Entity DataStore Protocolによって疎結合に、互いに知らない状態にする
24.
依存性を注入 DB,WebAPIを 仲介
UIView, UIViewController Copyright © Classmethod, Inc. 24 UIロジック Businessロジック 静的データ
25.
Copyright © Classmethod,
Inc. Interactor • 単一のユースケースを動的なモデルで表現 • ビジネスロジック部 • UIに全く依存しない • テストしやすい 25
26.
Copyright © Classmethod,
Inc. Entity • Presenter以降のレイヤに直接渡されない • 静的なモデル • VIPERでは動的でない 26
27.
Copyright © Classmethod,
Inc. Presenter • InteractorからのデータをView向けに送る • Viewからのインプットを受ける • Viewを直接知らない • Viewロジックに対する テストを書ける 27
28.
Copyright © Classmethod,
Inc. View • View, ViewController等 • 主体的にPresenterにデータを要求しない • Presenterからの指示 待ち 28
29.
Copyright © Classmethod,
Inc. Routing • UIWindowのインスタンスを保有 • WindowにViewController(VC)を注入 • VCにPresenterを注入 • VCの遷移表示も管理 29
30.
Copyright © Classmethod,
Inc. Before VIPER View Controller Model 30
31.
After VIPER Copyright
© Classmethod, Inc. 31 View Presenter Routing Interactor Entity DataStore
32.
After VIPER Copyright
© Classmethod, Inc. 32 View Presenter Routing Interactor Entity DataStore
33.
Copyright © Classmethod,
Inc. 33
34.
参考資料 objc-io 13
http://www.objc.io/issue-13/viper.html Clean Architecture http://blog.8thlight.com/uncle-bob/2012/08/13/the-clean- architecture.html Forked Sample Code https://github.com/UsrNameu1/VIPER-SWIFT Copyright © Classmethod, Inc. 34
Download