Submit Search
Upload
iOSでMVVM入門
•
0 likes
•
576 views
I
ishikawa akira
Follow
第二十七回岡山モバイルアプリ開発もくもく会
Read less
Read more
Technology
Report
Share
Report
Share
1 of 20
Download now
Download to read offline
Recommended
UMLモデルを使った自動生成
UMLモデルを使った自動生成
Norihito Ohshima
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
Marp Tutorial
Marp Tutorial
Rui Watanabe
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
Akira Inoue
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
Recommended
UMLモデルを使った自動生成
UMLモデルを使った自動生成
Norihito Ohshima
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
なぜ、いま リレーショナルモデルなのか(理論から学ぶデータベース実践入門読書会スペシャル)
Mikiya Okuno
Marp Tutorial
Marp Tutorial
Rui Watanabe
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
レガシー Web からの脱却 ~ 開発者が次に目指すべき Web アプリの姿とは?
Akira Inoue
世界最強のソフトウェアアーキテクト
世界最強のソフトウェアアーキテクト
Yahoo!デベロッパーネットワーク
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII2018TS: 3D物体検出とロボットビジョンへの応用
SSII
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
第1回ROS勉強会発表資料 ROS+Gazeboではじめるロボットシミュレーション
akio19937
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Anomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめた
ぱんいち すみもと
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
Masaya Kaneko
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
リアルタイムレイトレーシング時代を生き抜くためのデノイザー開発入門
リアルタイムレイトレーシング時代を生き抜くためのデノイザー開発入門
Silicon Studio Corporation
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
Toru Tamaki
物理ベースレンダラedupt解説
物理ベースレンダラedupt解説
h013
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
More Related Content
What's hot
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Anomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめた
ぱんいち すみもと
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
Takuya Kawabe
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
Masaya Kaneko
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
kyon mm
リアルタイムレイトレーシング時代を生き抜くためのデノイザー開発入門
リアルタイムレイトレーシング時代を生き抜くためのデノイザー開発入門
Silicon Studio Corporation
async/awaitダークサイド is 何
async/awaitダークサイド is 何
Kouji Matsui
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
Yoshiki Hayama
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
Atsushi Nakamura
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
Toru Tamaki
物理ベースレンダラedupt解説
物理ベースレンダラedupt解説
h013
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
Atsushi Nakada
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Yoshitaka Kawashima
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Hiro H.
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
Yoshitaka Kawashima
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
infinite_loop
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
torisoup
What's hot
(20)
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Anomaly detection 系の論文を一言でまとめた
Anomaly detection 系の論文を一言でまとめた
C#実装から見るDDD(ドメイン駆動設計)
C#実装から見るDDD(ドメイン駆動設計)
SLAM勉強会(PTAM)
SLAM勉強会(PTAM)
テストとリファクタリングに関する深い方法論 #wewlc_jp
テストとリファクタリングに関する深い方法論 #wewlc_jp
リアルタイムレイトレーシング時代を生き抜くためのデノイザー開発入門
リアルタイムレイトレーシング時代を生き抜くためのデノイザー開発入門
async/awaitダークサイド is 何
async/awaitダークサイド is 何
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
C#メタプログラミング概略 in 2021
C#メタプログラミング概略 in 2021
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
3次元レジストレーションの基礎とOpen3Dを用いた3次元点群処理
物理ベースレンダラedupt解説
物理ベースレンダラedupt解説
シリコンバレーの「何が」凄いのか
シリコンバレーの「何が」凄いのか
イミュータブルデータモデル(世代編)
イミュータブルデータモデル(世代編)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
Linuxにて複数のコマンドを並列実行(同時実行数の制限付き)
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
ソフトウェア開発における『知の高速道路』
ソフトウェア開発における『知の高速道路』
ソーシャルゲーム案件におけるDB分割のPHP実装
ソーシャルゲーム案件におけるDB分割のPHP実装
【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
Similar to iOSでMVVM入門
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
MvvmCross 入門
MvvmCross 入門
jz5 MATSUE
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
Shun Hikita
MVCもやもや話
MVCもやもや話
Tetsuya Kaneuchi
いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターン
Yuta Matsumura
MVVM入門
MVVM入門
Kazutoshi Urabe
Xamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれ
ShinichiAoyagi
javascript を Xcode でテスト
javascript を Xcode でテスト
Yoichiro Sakurai
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
Hironori Suzuki
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
Hideaki Aoyagi
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
Kazuki Shibata
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
Akira Hayashi
Slide
Slide
Akura Pi
Reactive programming with Apache Wicket
Reactive programming with Apache Wicket
Ryuhei Ishibashi
KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例
masakazusegawa
SpringBoot開発の基本
SpringBoot開発の基本
iPride Co., Ltd.
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
はじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
Similar to iOSでMVVM入門
(20)
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
MvvmCross 入門
MvvmCross 入門
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
MVCもやもや話
MVCもやもや話
いまさら学ぶMVVMパターン
いまさら学ぶMVVMパターン
MVVM入門
MVVM入門
Xamarin+MVVMCross のあれこれ
Xamarin+MVVMCross のあれこれ
javascript を Xcode でテスト
javascript を Xcode でテスト
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
ReactiveUI を使った表計算っぽいWPFアプリケーションで Reactiveプログラミング の練習をした話
Visual Studio 2017 事はじめ
Visual Studio 2017 事はじめ
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
Macアプリのインストーラ作成ツールSwift版
Macアプリのインストーラ作成ツールSwift版
Slide
Slide
Reactive programming with Apache Wicket
Reactive programming with Apache Wicket
KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例
SpringBoot開発の基本
SpringBoot開発の基本
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
はじめよう Backbone.js
はじめよう Backbone.js
Recently uploaded
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Recently uploaded
(12)
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
iOSでMVVM入門
1.
iOSでMVVM 入門 第二十七回岡山モバイルアプリ開発もくもく会 7/22 石川
諒
2.
自己紹介 • 名前 :
石川諒 (イシカワ アキラ) • 中国職業能力開発大学校 4年生 • twitter : ishikawa__pro • GitHub : ishikawa-pro • 好きな言語 : Swift • 最近はRailsが多め💦
3.
MVVM + RxSwiftに 入門した話
4.
MVVMとは? • アーキテクチャの一つ • Model-View-ViewModel の略 •
MVC(Model-View-Controller)の派生パターン • iOSはMVCパターンが基本
5.
iOSの基本的なアーキテクチャ • iOSにはUIViewControllerという内部構造の基盤と なるクラスが必ず1つある • 1つのViewControllerで管理するもの •
ビューの管理 • イベントの処理 • Modelとのデータのやりとり • 別の View Controller への移行etc… 1つのViewController
6.
iOSのMVC • ほぼどんな作業もVCが起点 ViewController
7.
つまり
8.
MVC = Model View
Controller Massive View Controller
9.
そこでMVVM
10.
MVVMの各レイヤの役割 • Viewの役割 • ViewModel
の持つ状態を UI に反映する • UIイベントをViewModelに通知 • MVVMではUIViewControllerがViewの役割を 担う View ViewModel UI Event Data BindingViewController を使う
11.
MVVMの各レイヤの役割 • ViewModelの役割 • Viewの状態を持つ •
UI イベントに応じて処理を行う • 状態が更新されたら View に伝える View ViewModel UI Event Data Binding
12.
MVVMの各レイヤの役割 • Modelの役割 • ViewModelからRequestされたらデータを返 す •
基本的にはMVCとあまり変わらない ViewModel Model Request Data
13.
MVVM View ViewModel Model UI Event Data Binding RequestData ViewControllerを使う
14.
MVCとMVVMの比較 MVC MVVM ViewController View ViewModel Model ViewController
15.
MVCとMVVMでVCの責務の比較 • ビューの管理 • イベントの処理 •
Modelとのデータの やりとり • 別の ViewController へ の移行 etc… • ViewModel の持つ 状態を UI に反映 する • UIイベントを ViewModelに通知 MVC MVVM
16.
MVVMメリット • 各レイヤの責務がMVCよりはっきりする • レイヤ間のデータフローが分かりやすい •
レイヤ間が疎結合になり、テストも書きやす い • Massive ViewControllerが改善される
17.
MVVMデメリット • iOSのMVVMには,RxSwiftが不可欠だがRxSwift の学習コストが高い(RxSwiftの話はまた今度) • RxSwiftでのUITableViewや UICollectionViewの管理はさらに学習コス トが高い •
ViewModelが肥大化する
18.
MVCからMVVMへ移行した理由 • バックエンドをFirebaseを使って、MVCで PodcastPlayerを作っていた • 1画面実装するのに何個もFirestoreからデー タを取りにいかなくてはならず、コールバッ ク地獄になるし、且つViewの状態管理をする のでMVCの限界を感じた
19.
非同期で3つのデータを とりにいって、Viewに反映 購読管理もFirestoreなの で ボタンを押すたびに通信し て状態を反映させる必要が ある Podcastの詳細画面
20.
移行してみて感じたこと • MVCの限界を感じてMVVMに移ると、アーキテク チャの違いとかメリットがよくわかった • RxSwiftは確かに難しいけど楽しい •
今は超MassiveVCな所と新しい画面は、MVVMで 実装して、その他は少しずつMVVMへ移行予定
Download now