Enviar búsqueda
Cargar
MVCもやもや話
•
Descargar como KEY, PDF
•
35 recomendaciones
•
9,310 vistas
Tetsuya Kaneuchi
Seguir
iOS アプリ開発でのMVCについて。すべてを View Controller に書いてしまいがちなのを避けたい。
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 54
Descargar ahora
Recomendados
MVC の Model を考える
MVC の Model を考える
tomo_masakura
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
ブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデル
Yuta Hiroto
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
Shun Hikita
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
Recomendados
MVC の Model を考える
MVC の Model を考える
tomo_masakura
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
ブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデル
Yuta Hiroto
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
Shun Hikita
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
Taketo Sano
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
Yuichi Adachi
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Visual studio 2013 Overview
Visual studio 2013 Overview
一希 大田
Model View Presenter for Android
Model View Presenter for Android
shinnosuke kugimiya
serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おう
よしだ あつし
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
一希 大田
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
Masuda Tomoaki
AngularJSを浅めに紹介します
AngularJSを浅めに紹介します
nkazuki
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
Hiroshi Maekawa
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
AngularJSについて
AngularJSについて
昌生 高橋
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
一希 大田
iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方
kakegawa-atsushi
Spring mvc
Spring mvc
Ryo Asai
MVVM入門
MVVM入門
Kazutoshi Urabe
React.js + Flux
React.js + Flux
dsuke Takaoka
angular X designer - デザイナからみたAngularJS #ten1club
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
マジックビーンズ
マジックビーンズ
Akira Suenami
MVC 03
MVC 03
Satoshi Shoda
Container view活用術とポイントになる部分
Container view活用術とポイントになる部分
Fumiya Sakai
Más contenido relacionado
La actualidad más candente
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
Taketo Sano
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
Yuichi Adachi
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Visual studio 2013 Overview
Visual studio 2013 Overview
一希 大田
Model View Presenter for Android
Model View Presenter for Android
shinnosuke kugimiya
serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おう
よしだ あつし
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
一希 大田
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
Masuda Tomoaki
AngularJSを浅めに紹介します
AngularJSを浅めに紹介します
nkazuki
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
Hiroshi Maekawa
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
AngularJSについて
AngularJSについて
昌生 高橋
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
一希 大田
iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方
kakegawa-atsushi
Spring mvc
Spring mvc
Ryo Asai
MVVM入門
MVVM入門
Kazutoshi Urabe
React.js + Flux
React.js + Flux
dsuke Takaoka
angular X designer - デザイナからみたAngularJS #ten1club
angular X designer - デザイナからみたAngularJS #ten1club
silvers ofsilvers
マジックビーンズ
マジックビーンズ
Akira Suenami
La actualidad más candente
(20)
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
Visual studio 2013 Overview
Visual studio 2013 Overview
Model View Presenter for Android
Model View Presenter for Android
serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おう
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
AngularJSを浅めに紹介します
AngularJSを浅めに紹介します
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
AngularJSについて
AngularJSについて
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
iOS アプリのメンテナンス性を高めるための基本的な考え方
iOS アプリのメンテナンス性を高めるための基本的な考え方
Spring mvc
Spring mvc
MVVM入門
MVVM入門
React.js + Flux
React.js + Flux
angular X designer - デザイナからみたAngularJS #ten1club
angular X designer - デザイナからみたAngularJS #ten1club
マジックビーンズ
マジックビーンズ
Destacado
MVC 03
MVC 03
Satoshi Shoda
Container view活用術とポイントになる部分
Container view活用術とポイントになる部分
Fumiya Sakai
MVC 01
MVC 01
Satoshi Shoda
MVC 02
MVC 02
Satoshi Shoda
1 2 neo revolution
1 2 neo revolution
ssclasstorremar
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
Al Baha University
شرح رساله افسس القس ابراهيم سعيد
شرح رساله افسس القس ابراهيم سعيد
Ibrahimia Church Ftriends
Inteligo valuation report bvn
Inteligo valuation report bvn
gro77
Athens
Athens
ssclasstorremar
France
France
sutoiku
No hiv aids no hcv
No hiv aids no hcv
Ibrahimia Church Ftriends
Forum
Forum
Syafiq Nordin Own Artist
فن الحياة الناجحة أبونا متى المسكين
فن الحياة الناجحة أبونا متى المسكين
Ibrahimia Church Ftriends
Mobile Computing IEEE 2014 Projects
Mobile Computing IEEE 2014 Projects
Vijay Karan
Byzantium
Byzantium
ssclasstorremar
數位時代的直接民主可能
數位時代的直接民主可能
Louk Chi
INTERNET I EINES 2.0 PER FACILITAR LA TASCA DE COMANDAMENT Sessió 2
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...
Cenário Botafogo, Lançamento Mozak, Apartamentos no Rio, 2 quartos em Botafog...
Suely Maia
Michel Foucault - Discipline and Punish
Michel Foucault - Discipline and Punish
Tales Américo
IoMT - Technological Environment of Personalized Medicine and New Era of Heal...
IoMT - Technological Environment of Personalized Medicine and New Era of Heal...
Alexandre Prozoroff
Destacado
(20)
MVC 03
MVC 03
Container view活用術とポイントになる部分
Container view活用術とポイントになる部分
MVC 01
MVC 01
MVC 02
MVC 02
1 2 neo revolution
1 2 neo revolution
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
Spectroscopy Letters Volume 26 issue 3 1993 [doi 10.1080_00387019308011552] S...
شرح رساله افسس القس ابراهيم سعيد
شرح رساله افسس القس ابراهيم سعيد
Inteligo valuation report bvn
Inteligo valuation report bvn
Athens
Athens
France
France
No hiv aids no hcv
No hiv aids no hcv
Forum
Forum
فن الحياة الناجحة أبونا متى المسكين
فن الحياة الناجحة أبونا متى المسكين
Mobile Computing IEEE 2014 Projects
Mobile Computing IEEE 2014 Projects
Byzantium
Byzantium
數位時代的直接民主可能
數位時代的直接民主可能
INTERNET I EINES 2.0 PER FACILITAR LA TASCA DE COMANDAMENT Sessió 2
INTERNET I EINES 2.0 PER FACILITAR LA TASCA DE COMANDAMENT Sessió 2
Cenário Botafogo, Lançamento Mozak, Apartamentos no Rio, 2 quartos em Botafog...
Cenário Botafogo, Lançamento Mozak, Apartamentos no Rio, 2 quartos em Botafog...
Michel Foucault - Discipline and Punish
Michel Foucault - Discipline and Punish
IoMT - Technological Environment of Personalized Medicine and New Era of Heal...
IoMT - Technological Environment of Personalized Medicine and New Era of Heal...
Similar a MVCもやもや話
iOSでMVVM入門
iOSでMVVM入門
ishikawa akira
はじめよう Backbone.js
はじめよう Backbone.js
Hiroki Toyokawa
AngularJSの高速化
AngularJSの高速化
Kon Yuichi
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
WKWebViewとUIWebView
WKWebViewとUIWebView
Yuki Hirai
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
tomotoshi
20120616
20120616
小野 修司
try!swift必見5選
try!swift必見5選
Kenta Kudo
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
miso- soup3
Swift入門
Swift入門
聡 中川
Slide
Slide
Akura Pi
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発!
Koji Shiraishi
OpenGLプログラミング
OpenGLプログラミング
幸雄 村上
Mvc conf session_1_osada
Mvc conf session_1_osada
Hiroshi Okunushi
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
niwatako
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
Tomoki Oyamatsu
MvvmCross 入門
MvvmCross 入門
jz5 MATSUE
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
はじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE
Similar a MVCもやもや話
(20)
iOSでMVVM入門
iOSでMVVM入門
はじめよう Backbone.js
はじめよう Backbone.js
AngularJSの高速化
AngularJSの高速化
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
WKWebViewとUIWebView
WKWebViewとUIWebView
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
VSUGDAY2012 - ASP.NET MVC 4 Deveoper Preview による モバイルWEBアプリケーション開発
20120616
20120616
try!swift必見5選
try!swift必見5選
ASP.NET WEB API 開発体験
ASP.NET WEB API 開発体験
Swift入門
Swift入門
Slide
Slide
SwiftとCocoaPodsで始めるサクサクiOS開発!
SwiftとCocoaPodsで始めるサクサクiOS開発!
OpenGLプログラミング
OpenGLプログラミング
Mvc conf session_1_osada
Mvc conf session_1_osada
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
CocoaPoderと賢者の宝石 〜 まだ bundle exec で消耗してるの? 〜
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
[出張!雲勉 in Tokyo] Swagger で簡単APIドキュメント作成
MvvmCross 入門
MvvmCross 入門
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
はじめての ASP.NET MVC
はじめての ASP.NET MVC
Más de Tetsuya Kaneuchi
いま OS X アプリがアツい
いま OS X アプリがアツい
Tetsuya Kaneuchi
いまさら NSArray
いまさら NSArray
Tetsuya Kaneuchi
Dependency Injection FAQ
Dependency Injection FAQ
Tetsuya Kaneuchi
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Tetsuya Kaneuchi
Core Animation と View
Core Animation と View
Tetsuya Kaneuchi
Core Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStore
Tetsuya Kaneuchi
WebViewでエラーページを表示する話
WebViewでエラーページを表示する話
Tetsuya Kaneuchi
Más de Tetsuya Kaneuchi
(7)
いま OS X アプリがアツい
いま OS X アプリがアツい
いまさら NSArray
いまさら NSArray
Dependency Injection FAQ
Dependency Injection FAQ
ワタシはSingletonがキライだ
ワタシはSingletonがキライだ
Core Animation と View
Core Animation と View
Core Data の概要と NSIncrementalStore
Core Data の概要と NSIncrementalStore
WebViewでエラーページを表示する話
WebViewでエラーページを表示する話
Último
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
Último
(9)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
MVCもやもや話
1.
MVCもやもや話 かねうちてつや @kaniza 2012.05.19 Cocoa勉強会関西
2.
自己紹介
3.
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
Notas del editor
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
Descargar ahora