SlideShare a Scribd company logo
iOSでMVVM 入門
第二十七回岡山モバイルアプリ開発もくもく会
7/22 石川 諒
自己紹介
• 名前 : 石川諒 (イシカワ アキラ)
• 中国職業能力開発大学校 4年生
• twitter : ishikawa__pro
• GitHub : ishikawa-pro
• 好きな言語 : Swift
• 最近はRailsが多め💦
MVVM + RxSwiftに
入門した話
MVVMとは?
• アーキテクチャの一つ
• Model-View-ViewModel の略
• MVC(Model-View-Controller)の派生パターン
• iOSはMVCパターンが基本
iOSの基本的なアーキテクチャ
• iOSにはUIViewControllerという内部構造の基盤と
なるクラスが必ず1つある
• 1つのViewControllerで管理するもの
• ビューの管理
• イベントの処理
• Modelとのデータのやりとり
• 別の View Controller への移行etc…
1つのViewController
iOSのMVC
• ほぼどんな作業もVCが起点
ViewController
つまり
MVC =
Model View Controller
Massive View Controller
そこでMVVM
MVVMの各レイヤの役割
• Viewの役割
• ViewModel の持つ状態を UI に反映する
• UIイベントをViewModelに通知
• MVVMではUIViewControllerがViewの役割を
担う
View ViewModel
UI Event
Data
BindingViewController
を使う
MVVMの各レイヤの役割
• ViewModelの役割
• Viewの状態を持つ
• UI イベントに応じて処理を行う
• 状態が更新されたら View に伝える
View ViewModel
UI Event
Data
Binding
MVVMの各レイヤの役割
• Modelの役割
• ViewModelからRequestされたらデータを返
す
• 基本的にはMVCとあまり変わらない
ViewModel Model
Request
Data
MVVM
View
ViewModel
Model
UI Event
Data
Binding
RequestData
ViewControllerを使う
MVCとMVVMの比較
MVC MVVM
ViewController View
ViewModel
Model
ViewController
MVCとMVVMでVCの責務の比較
• ビューの管理
• イベントの処理
• Modelとのデータの
やりとり
• 別の
ViewController へ
の移行 etc…
• ViewModel の持つ
状態を UI に反映
する
• UIイベントを
ViewModelに通知
MVC MVVM
MVVMメリット
• 各レイヤの責務がMVCよりはっきりする
• レイヤ間のデータフローが分かりやすい
• レイヤ間が疎結合になり、テストも書きやす
い
• Massive ViewControllerが改善される
MVVMデメリット
• iOSのMVVMには,RxSwiftが不可欠だがRxSwift
の学習コストが高い(RxSwiftの話はまた今度)
• RxSwiftでのUITableViewや
UICollectionViewの管理はさらに学習コス
トが高い
• ViewModelが肥大化する
MVCからMVVMへ移行した理由
• バックエンドをFirebaseを使って、MVCで
PodcastPlayerを作っていた
• 1画面実装するのに何個もFirestoreからデー
タを取りにいかなくてはならず、コールバッ
ク地獄になるし、且つViewの状態管理をする
のでMVCの限界を感じた
非同期で3つのデータを
とりにいって、Viewに反映
購読管理もFirestoreなの
で
ボタンを押すたびに通信し
て状態を反映させる必要が
ある
Podcastの詳細画面
移行してみて感じたこと
• MVCの限界を感じてMVVMに移ると、アーキテク
チャの違いとかメリットがよくわかった
• RxSwiftは確かに難しいけど楽しい
• 今は超MassiveVCな所と新しい画面は、MVVMで
実装して、その他は少しずつMVVMへ移行予定

More Related Content

What's hot (20)

PDF
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
PDF
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
PPTX
え!?データがオンプレにあるけどPower BI で BI したいの?
Yugo Shimizu
 
PDF
Unityでオンラインゲーム作った話
torisoup
 
PPTX
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
PDF
Tackling Complexity
Yoshitaka Kawashima
 
PPTX
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
 
PDF
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
 
PDF
UniRx完全に理解した
torisoup
 
PPTX
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
PPTX
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
 
PPTX
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
Deep Learning JP
 
PDF
【DL輪読会】How Much Can CLIP Benefit Vision-and-Language Tasks?
Deep Learning JP
 
PDF
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
 
PDF
7. Vertex AI Model Registryで BigQuery MLのモデルを管理する
幸太朗 岩澤
 
PDF
(修正)機械学習デザインパターン(ML Design Patterns)の解説
Hironori Washizaki
 
PDF
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
 
PDF
MagicOnion入門
torisoup
 
PPTX
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...
Kazuyuki Miyazawa
 
PDF
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨
 
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
 
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
 
え!?データがオンプレにあるけどPower BI で BI したいの?
Yugo Shimizu
 
Unityでオンラインゲーム作った話
torisoup
 
モノリスからマイクロサービスへの移行 ~ストラングラーパターンの検証~(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
 
Tackling Complexity
Yoshitaka Kawashima
 
どうやって決める?kubernetesでのシークレット管理方法(Cloud Native Days 2020 発表資料)
NTT DATA Technology & Innovation
 
世界でいちばんわかりやすいドメイン駆動設計
増田 亨
 
UniRx完全に理解した
torisoup
 
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
 
画像処理ライブラリ OpenCV で 出来ること・出来ないこと
Norishige Fukushima
 
[DL輪読会]Depth Prediction Without the Sensors: Leveraging Structure for Unsuper...
Deep Learning JP
 
【DL輪読会】How Much Can CLIP Benefit Vision-and-Language Tasks?
Deep Learning JP
 
文字コードに起因する脆弱性とその対策(増補版)
Hiroshi Tokumaru
 
7. Vertex AI Model Registryで BigQuery MLのモデルを管理する
幸太朗 岩澤
 
(修正)機械学習デザインパターン(ML Design Patterns)の解説
Hironori Washizaki
 
「GraphDB徹底入門」〜構造や仕組み理解から使いどころ・種々のGraphDBの比較まで幅広く〜
Takahiro Inoue
 
MagicOnion入門
torisoup
 
Depth from Videos in the Wild: Unsupervised Monocular Depth Learning from Unk...
Kazuyuki Miyazawa
 
ドメイン駆動設計の基礎知識:設計のスタイル、開発のスタイル
増田 亨
 

Similar to iOSでMVVM入門 (11)

PPTX
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
Seki Yousuke
 
PDF
Model View Presenter for Android
shinnosuke kugimiya
 
PPTX
いまさら学ぶMVVMパターン
Yuta Matsumura
 
PDF
GUI アプリケーションにおける MVC
Yu Nobuoka
 
PDF
MvvmCross 入門
jz5 MATSUE
 
PDF
20140322 mvvm crossforwindowsstoreapps-pdf
Takayoshi Tanaka
 
PPTX
Xamarin.formsでのmvvm利用のコツ
Masuda Tomoaki
 
KEY
MVCもやもや話
Tetsuya Kaneuchi
 
PDF
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
 
PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
 
PPTX
MVVM入門
Kazutoshi Urabe
 
クライアントサイドMVVMアーキテクチャとVue.jsをまとめたよ
Seki Yousuke
 
Model View Presenter for Android
shinnosuke kugimiya
 
いまさら学ぶMVVMパターン
Yuta Matsumura
 
GUI アプリケーションにおける MVC
Yu Nobuoka
 
MvvmCross 入門
jz5 MATSUE
 
20140322 mvvm crossforwindowsstoreapps-pdf
Takayoshi Tanaka
 
Xamarin.formsでのmvvm利用のコツ
Masuda Tomoaki
 
MVCもやもや話
Tetsuya Kaneuchi
 
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
 
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
 
MVVM入門
Kazutoshi Urabe
 
Ad

Recently uploaded (9)

PPTX
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
PDF
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
PDF
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
PDF
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
PPTX
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
PDF
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
PDF
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
PDF
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
PDF
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
2025_7_25_吉祥寺_設計ナイト_ADR運用におけるデータ利活用の考え方.pptx
ssuserfcafd1
 
LoRaWAN ウェザーステーションキット v3 -WSC3-L 日本語ユーザーマニュアル
CRI Japan, Inc.
 
【学会聴講報告】CVPR2025からみるVision最先端トレンド / CVPR2025 report
Sony - Neural Network Libraries
 
MahiroYoshida_セリフに着目したキャラクタロール推定に関する基礎検討_sigcc12th2025
Matsushita Laboratory
 
baserCMS『カスタムコンテンツ』徹底活用術〜あなただけの管理画面を自由自在に〜
Ryuji Egashira
 
第三世代 ウェザーステーションキット v3 ー WSC3-L 日本語カタログ
CRI Japan, Inc.
 
20250726_Devinで変えるエンプラシステム開発の未来
Masaki Yamakawa
 
TaketoFujikawa_ComicComputing12th_inKumamoto
Matsushita Laboratory
 
VMUG Japan book vsan 20250515 CPU/Memory vSAN
Kazuhiro Sota
 
Ad

iOSでMVVM入門