Submit Search
MVCもやもや話
Download as KEY, PDF
35 likes
9,381 views
Tetsuya Kaneuchi
iOS アプリ開発でのMVCについて。すべてを View Controller に書いてしまいがちなのを避けたい。
Technology
Related topics:
Object-Oriented Programming
Read more
1 of 54
Download now
Downloaded 35 times
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
More Related Content
PDF
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
PDF
ブラック企業から学ぶMVCモデル
Yuta Hiroto
ODP
MVC の Model を考える
tomo_masakura
PDF
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
PDF
GUI アプリケーションにおける MVC
Yu Nobuoka
PDF
ドメイン駆動設計(DDD)の実践Part2
増田 亨
PDF
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
PDF
ドメイン駆動設計入門
増田 亨
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
ブラック企業から学ぶMVCモデル
Yuta Hiroto
MVC の Model を考える
tomo_masakura
SQLアンチパターン - ジェイウォーク
ke-m kamekoopa
GUI アプリケーションにおける MVC
Yu Nobuoka
ドメイン駆動設計(DDD)の実践Part2
増田 亨
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
ドメイン駆動設計入門
増田 亨
What's hot
(20)
KEY
やはりお前らのMVCは間違っている
Koichi Tanaka
PDF
MvcのFatモデルに立ち向かう
Shun Hikita
PPTX
GraphQLのsubscriptionで出来ること
Shingo Fukui
PDF
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
PDF
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
PDF
オブジェクト指向できていますか?
Moriharu Ohzu
PPTX
Aws amplify studioが変えるフロントエンド開発の未来とは v2
Koitabashi Yoshitaka
PDF
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
PDF
DevOps with Database on AWS
Amazon Web Services Japan
PDF
今さら聞けないDiとspring
土岐 孝平
PDF
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
PDF
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
PDF
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
PDF
実践に向けたドメイン駆動設計のエッセンス
増田 亨
PDF
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
PDF
実装して理解するLINE LoginとOpenID Connect入門
Naohiro Fujie
PDF
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
PDF
「情報」を「書く」ということ(仮) #RedmineJapan
Kazuhito Miura
PPTX
今だから!Amazon CloudFront 徹底活用
Yasuhiro Araki, Ph.D
PDF
データベース設計徹底指南
Mikiya Okuno
やはりお前らのMVCは間違っている
Koichi Tanaka
MvcのFatモデルに立ち向かう
Shun Hikita
GraphQLのsubscriptionで出来ること
Shingo Fukui
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
オブジェクト指向できていますか?
Moriharu Ohzu
Aws amplify studioが変えるフロントエンド開発の未来とは v2
Koitabashi Yoshitaka
SQLアンチパターン - 開発者を待ち受ける25の落とし穴 (拡大版)
Takuto Wada
DevOps with Database on AWS
Amazon Web Services Japan
今さら聞けないDiとspring
土岐 孝平
ドメインオブジェクトの見つけ方・作り方・育て方
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
GoによるWebアプリ開発のキホン
Akihiko Horiuchi
実践に向けたドメイン駆動設計のエッセンス
増田 亨
ASP.NETの進化とASP.NET Core Blazorの凄さ
Sho Okada
実装して理解するLINE LoginとOpenID Connect入門
Naohiro Fujie
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
Amazon Web Services Japan
「情報」を「書く」ということ(仮) #RedmineJapan
Kazuhito Miura
今だから!Amazon CloudFront 徹底活用
Yasuhiro Araki, Ph.D
データベース設計徹底指南
Mikiya Okuno
Ad
Viewers also liked
(20)
PDF
MVC 03
Satoshi Shoda
PDF
Container view活用術とポイントになる部分
Fumiya Sakai
PDF
MVC 01
Satoshi Shoda
PDF
MVC 02
Satoshi Shoda
PPTX
1 2 neo revolution
ssclasstorremar
PDF
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
Al Baha University
PDF
شرح رساله افسس القس ابراهيم سعيد
Ibrahimia Church Ftriends
PPTX
Athens
ssclasstorremar
PDF
France
sutoiku
PDF
No hiv aids no hcv
Ibrahimia Church Ftriends
PPTX
Forum
Syafiq Nordin Own Artist
PDF
فن الحياة الناجحة أبونا متى المسكين
Ibrahimia Church Ftriends
PDF
Mobile Computing IEEE 2014 Projects
Vijay Karan
PPTX
Byzantium
ssclasstorremar
PPT
數位時代的直接民主可能
Louk Chi
PPTX
INTERNET I EINES 2.0 PER FACILITAR LA TASCA DE COMANDAMENT Sessió 2
Neus Burch Suñer
PDF
Cenário Botafogo, Lançamento Mozak, Apartamentos no Rio, 2 quartos em Botafog...
Suely Maia
PDF
Michel Foucault - Discipline and Punish
Tales Américo
PDF
IoMT - Technological Environment of Personalized Medicine and New Era of Heal...
Alexandre Prozoroff
PPTX
1 1 clues and sources
ssclasstorremar
MVC 03
Satoshi Shoda
Container view活用術とポイントになる部分
Fumiya Sakai
MVC 01
Satoshi Shoda
MVC 02
Satoshi Shoda
1 2 neo revolution
ssclasstorremar
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
Al Baha University
شرح رساله افسس القس ابراهيم سعيد
Ibrahimia Church Ftriends
Athens
ssclasstorremar
France
sutoiku
No hiv aids no hcv
Ibrahimia Church Ftriends
Forum
Syafiq Nordin Own Artist
فن الحياة الناجحة أبونا متى المسكين
Ibrahimia Church Ftriends
Mobile Computing IEEE 2014 Projects
Vijay Karan
Byzantium
ssclasstorremar
數位時代的直接民主可能
Louk Chi
INTERNET I EINES 2.0 PER FACILITAR LA TASCA DE COMANDAMENT Sessió 2
Neus Burch Suñer
Cenário Botafogo, Lançamento Mozak, Apartamentos no Rio, 2 quartos em Botafog...
Suely Maia
Michel Foucault - Discipline and Punish
Tales Américo
IoMT - Technological Environment of Personalized Medicine and New Era of Heal...
Alexandre Prozoroff
1 1 clues and sources
ssclasstorremar
Ad
Similar to MVCもやもや話
(20)
PDF
iOSハンズオントレーニング observer編 (delegate,notification,KVO)
聡 大久保
PDF
I phoneアプリ入門 第3回
Sachiko Kajishima
PDF
Beginning iPhone Vol2
Sachiko Kajishima
PDF
iOS アプリのメンテナンス性を高めるための基本的な考え方
kakegawa-atsushi
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
聡 中川
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
聡 中川
PDF
Storyboard
Hidetoshi Mori
PDF
I phoneアプリ入門 第5回
Sachiko Kajishima
PDF
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
PPTX
MVVM入門
Kazutoshi Urabe
PDF
flasherがはじめてiOS開発をしてみて
佐藤 俊太郎
PDF
I phoneアプリ入門 第4回
Sachiko Kajishima
PPTX
20130316 mix cpp-yuo
OKUBO_Yusuke
PDF
iPhone UI勉強会資料
Mari Takahashi
PDF
Cocoa Pro5
hasegawa
PPTX
2012 05-19第44回cocoa勉強会発表資料
OCHI Shuji
KEY
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
PPTX
デザインパターン
幸雄 村上
PPTX
関数型言語&形式的手法セミナー(3)
啓 小笠原
iOSハンズオントレーニング observer編 (delegate,notification,KVO)
聡 大久保
I phoneアプリ入門 第3回
Sachiko Kajishima
Beginning iPhone Vol2
Sachiko Kajishima
iOS アプリのメンテナンス性を高めるための基本的な考え方
kakegawa-atsushi
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
聡 中川
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ ver1.1
聡 中川
Storyboard
Hidetoshi Mori
I phoneアプリ入門 第5回
Sachiko Kajishima
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
MVVM入門
Kazutoshi Urabe
flasherがはじめてiOS開発をしてみて
佐藤 俊太郎
I phoneアプリ入門 第4回
Sachiko Kajishima
20130316 mix cpp-yuo
OKUBO_Yusuke
iPhone UI勉強会資料
Mari Takahashi
Cocoa Pro5
hasegawa
2012 05-19第44回cocoa勉強会発表資料
OCHI Shuji
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
Makoto Setoh
デザインパターン
幸雄 村上
関数型言語&形式的手法セミナー(3)
啓 小笠原
More from Tetsuya Kaneuchi
(7)
PDF
いま OS X アプリがアツい
Tetsuya Kaneuchi
PDF
いまさら NSArray
Tetsuya Kaneuchi
PDF
Dependency Injection FAQ
Tetsuya Kaneuchi
PDF
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
PDF
Core Animation と View
Tetsuya Kaneuchi
PDF
Core Data の概要と NSIncrementalStore
Tetsuya Kaneuchi
KEY
WebViewでエラーページを表示する話
Tetsuya Kaneuchi
いま OS X アプリがアツい
Tetsuya Kaneuchi
いまさら NSArray
Tetsuya Kaneuchi
Dependency Injection FAQ
Tetsuya Kaneuchi
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
Core Animation と View
Tetsuya Kaneuchi
Core Data の概要と NSIncrementalStore
Tetsuya Kaneuchi
WebViewでエラーページを表示する話
Tetsuya Kaneuchi
MVCもやもや話
1.
MVCもやもや話 かねうちてつや @kaniza 2012.05.19 Cocoa勉強会関西
2.
自己紹介
4.
•かねうちてつや (@kaniza, id:kaniza)
5.
•かねうちてつや (@kaniza, id:kaniza) •Cocoa勉強会関西代表(2代目)
6.
•かねうちてつや (@kaniza, id:kaniza) •Cocoa勉強会関西代表(2代目)
•KOF2012 11/9-10 で開催予定
7.
•かねうちてつや (@kaniza, id:kaniza) •Cocoa勉強会関西代表(2代目)
•KOF2012 11/9-10 で開催予定 •最近わりと開発モード
8.
•かねうちてつや (@kaniza, id:kaniza) •Cocoa勉強会関西代表(2代目)
•KOF2012 11/9-10 で開催予定 •最近わりと開発モード •ARCとかStoryboardとかPush Notificationとか
9.
•かねうちてつや (@kaniza, id:kaniza) •Cocoa勉強会関西代表(2代目)
•KOF2012 11/9-10 で開催予定 •最近わりと開発モード •ARCとかStoryboardとかPush Notificationとか •相変わらずEmacsでObjective-C
10.
•かねうちてつや (@kaniza, id:kaniza) •Cocoa勉強会関西代表(2代目)
•KOF2012 11/9-10 で開催予定 •最近わりと開発モード •ARCとかStoryboardとかPush Notificationとか •相変わらずEmacsでObjective-C •自炊モード
11.
•かねうちてつや (@kaniza, id:kaniza) •Cocoa勉強会関西代表(2代目)
•KOF2012 11/9-10 で開催予定 •最近わりと開発モード •ARCとかStoryboardとかPush Notificationとか •相変わらずEmacsでObjective-C •自炊モード •大型断裁機をレンタルして本バラしまくり
12.
自炊 (雑談です)
13.
これまでのカッター
14.
レンタルした断裁機:20kg
15.
レンタルした断裁機:20kg
16.
O社の分厚い本も一撃!
17.
本題の前置き
18.
よい設計とは: 疎結合・高凝集 •疎結合 •構成する部分どうしの関連性が最小限 •具体的結合よりは抽象的結合 •相互依存は悪 •高凝集 •関連性の高いものが一カ所にまとまっている •変更する時はそこだけいじればいい
19.
本題
20.
Model-View-Controller
21.
Model
View Controller ソフトウェアのデザイン(設計)パターンの1つ
22.
Model-View-Controller
23.
Model-View-Controller • オブジェクト指向のGUIアプリ向け
24.
Model-View-Controller • オブジェクト指向のGUIアプリ向け • Appleが基本パターンとして採用
25.
Model-View-Controller • オブジェクト指向のGUIアプリ向け • Appleが基本パターンとして採用 •
Smalltalk由来の歴史ある考え方
26.
Model-View-Controller • オブジェクト指向のGUIアプリ向け • Appleが基本パターンとして採用 •
Smalltalk由来の歴史ある考え方 • (オブジェクト指向と同じく)人に よって言うことが違う
27.
意義 •役割分担させることで構造がわかりやすくなる •分離したM-V-Cを(理想的には)それぞれ取り 替えて再利用できる •ひとつのMで複数のVを持つなどの設計が容易 になる •ModelロジックとViewロジックが分類できる •Modelのテストを自動化しやすい
28.
Model • そのアプリ、画面の存在意義の部分 • データ保持、特殊な処理
• ビジネスロジック • GUIとは分離している • ViewやControllerのことは知らない
29.
View • ソフトウェアを人間に知覚させ、操作
させる • データの表示 • コマンドの入力 • Modelのことを知っているが、Controller のことは知らない
30.
Controller • ModelとViewをつなぐ • Viewからの入力をModelに反映 •
Modelの変化をViewに反映 • ModelのこともViewのことも知っている • なくても済めば要らない部分(だけど ないと動かない)
31.
Model View
Controller
32.
イメージ •Model: ないと意味がない •View: ないと使えない •Controller:
ないと動かない
33.
iOS開発ありがちパターン •とりあえずnibで画面を作る •動きをView Controllerに実装 •さらにView Controllerに実装 •View
Controllerバンザイ!! •MVCなにそれ?
34.
ViewControllerばっかり ABCViewController
XYZViewController Other Classes
35.
View Controllerとは •Viewではない •MVCではControllerに属する •ViewのController •ModelのControllerがあってもいい •NSDocumentとか
36.
考える順番をかえてみる •画面をまず考えるのはOK •その画面のModelは何か? •どんな情報があるか? •どんな機能、ロジックがあるか? •Modelを作る
•データ取得やキモとなるロジック •View ControllerにはModelとViewを仲介する 部分を実装
37.
実際やってみようとすると
38.
Modelが勝手に変わったのを Viewはどうやって知るの?
Model View Controller Viewが受けとった入力を Controllerはどうやって知るの?
39.
通知 Model
View 監視 相互依存は悪!!
40.
必要なもの
41.
ModelがViewを知らなくても 変更が通知できるようにする
42.
Observerパターン (GoFのデザインパターン参照)
43.
通知 Model
Observer 実現 監視 View Modelは抽象的・間接的にViewを参照
44.
CocoaでのObserverパターン
45.
Key-Value Observing
46.
NSKeyValueObserving // 監視する - (void)addObserver:(NSObject *)anObserver forKeyPath:(NSString
*)keyPath options: (NSKeyValueObservingOptions)options context:(void *)context; // 通知する - (void)willChangeValueForKey:(NSString *)key; - (void)didChangeValueForKey:(NSString *)key; // 通知を受けとる - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context
47.
NSKeyValueObserving •NSObjectで対応 •通知は @synthesize したプロパティを変更し
たら自動で発動 •self.foo = @”newVal”; •とーっても簡単!!
48.
このパターンは他にも使える
Model Observer 実現 View
49.
たとえばDelegateの場合
Model ModelDelegate 実現 ViewController
50.
こういうアプリよりも ABCViewController
XYZViewController Other Classes
51.
こういうアプリを目指したい ABCViewController
XYZViewController ABCModel XYZModel Other Classes
52.
Appleのドキュメント Your Second iOS
App: Storyboards https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/ SecondiOSAppTutorial/Introduction/Introduction.html 単純だけどあえてModelレイヤを分離した設計を採用
53.
まとめ •View Controllerにすべてを書くのはやめよう •Modelが何なのかを考えて作ってみよう •オブジェクト間の連携にはObserverや Delegateを使って疎結合を保とう •Singletonは避けよう!(これはまたいつか)
54.
Q&A
Editor's Notes
#2:
\n
#3:
\n
#4:
\n
#5:
\n
#6:
\n
#7:
\n
#8:
\n
#9:
\n
#10:
\n
#11:
\n
#12:
\n
#13:
\n
#14:
\n
#15:
\n
#16:
\n
#17:
\n
#18:
\n
#19:
\n
#20:
\n
#21:
\n
#22:
\n
#23:
\n
#24:
\n
#25:
\n
#26:
\n
#27:
\n
#28:
\n
#29:
\n
#30:
\n
#31:
\n
#32:
\n
#33:
\n
#34:
\n
#35:
\n
#36:
\n
#37:
\n
#38:
\n
#39:
\n
#40:
\n
#41:
\n
#42:
\n
#43:
\n
#44:
\n
#45:
\n
#46:
\n
#47:
\n
#48:
\n
#49:
\n
#50:
\n
#51:
\n
#52:
\n
#53:
\n
Download