Soumettre la recherche
Mettre en ligne
iOS アプリのメンテナンス性を高めるための基本的な考え方
•
23 j'aime
•
13,805 vues
K
kakegawa-atsushi
Suivre
2014/2/25 に開催された、ヤフー vs クラスメソッド Battle 3 の発表資料です。
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 49
Télécharger maintenant
Télécharger pour lire hors ligne
Recommandé
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
Yuichi Adachi
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
今城 善矩
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Model View Presenter for Android
Model View Presenter for Android
shinnosuke kugimiya
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
Taketo Sano
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Ken Morishita
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
Recommandé
iOSやAndroidアプリ開発のGoodPractice
iOSやAndroidアプリ開発のGoodPractice
Ken Morishita
VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
Yuichi Adachi
BaseViewControllerは作りたくない
BaseViewControllerは作りたくない
今城 善矩
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
U-dai Yokoyama
Model View Presenter for Android
Model View Presenter for Android
shinnosuke kugimiya
さらに上を目指すための iOS アプリ設計
さらに上を目指すための iOS アプリ設計
Taketo Sano
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
Ken Morishita
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
MVVM入門
MVVM入門
Kazutoshi Urabe
Android Architecture
Android Architecture
shinnosuke kugimiya
WPF MVVM Review
WPF MVVM Review
Takayuki Kondou
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
一希 大田
Visual studio 2013 Overview
Visual studio 2013 Overview
一希 大田
Xamarin.Mac をこれからはじめるあなたへ
Xamarin.Mac をこれからはじめるあなたへ
Tsubasa Hirano
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
一希 大田
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
Masuda Tomoaki
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
一希 大田
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
寛 吉田
AngularJSについて
AngularJSについて
昌生 高橋
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
minazou67
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発
Akihiro Iwaya
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
Daizen Ikehara
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
irgaly
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
ng-mtg#6 AngularJS ディレクティブ・パターン
ng-mtg#6 AngularJS ディレクティブ・パターン
Hayashi Yuichi
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
慎一 古賀
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Yoshito Tabuchi
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
インフラジスティックス・ジャパン株式会社
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
Ken Morishita
Yahoo vs classmethod-introduction
Yahoo vs classmethod-introduction
Rikitake Oohashi
Contenu connexe
Tendances
MVVM入門
MVVM入門
Kazutoshi Urabe
Android Architecture
Android Architecture
shinnosuke kugimiya
WPF MVVM Review
WPF MVVM Review
Takayuki Kondou
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
一希 大田
Visual studio 2013 Overview
Visual studio 2013 Overview
一希 大田
Xamarin.Mac をこれからはじめるあなたへ
Xamarin.Mac をこれからはじめるあなたへ
Tsubasa Hirano
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
一希 大田
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
Masuda Tomoaki
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
一希 大田
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
寛 吉田
AngularJSについて
AngularJSについて
昌生 高橋
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
minazou67
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発
Akihiro Iwaya
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
Daizen Ikehara
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
irgaly
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
Hayashi Yuichi
ng-mtg#6 AngularJS ディレクティブ・パターン
ng-mtg#6 AngularJS ディレクティブ・パターン
Hayashi Yuichi
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
慎一 古賀
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Yoshito Tabuchi
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
インフラジスティックス・ジャパン株式会社
Tendances
(20)
MVVM入門
MVVM入門
Android Architecture
Android Architecture
WPF MVVM Review
WPF MVVM Review
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
Visual studio 2013 Overview
Visual studio 2013 Overview
Xamarin.Mac をこれからはじめるあなたへ
Xamarin.Mac をこれからはじめるあなたへ
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
AngularJSについて
AngularJSについて
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
ng-mtg#6 AngularJS ディレクティブ・パターン
ng-mtg#6 AngularJS ディレクティブ・パターン
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
En vedette
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
Ken Morishita
Yahoo vs classmethod-introduction
Yahoo vs classmethod-introduction
Rikitake Oohashi
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
Shingo Hiraya
Yahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeacon
Yasuhisa Arakawa
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
Takeshi Fukasawa
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
Yuichi Adachi
Xcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフを
Yuki Hirai
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
yuki0211s
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Hiramatsu Ryosuke
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介
Kenji Kinukawa
1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境
Yoichiro Sakurai
Vasily i os-20140403
Vasily i os-20140403
Yusuke Arai
あのパターンと仲良く付き合う 西磨翁 #yxcm
あのパターンと仲良く付き合う 西磨翁 #yxcm
Mao Nishi
チームを加速させるRetty式開発術
チームを加速させるRetty式開発術
Yoichiro Sakurai
初めての単体テスト
初めての単体テスト
Basuke Suzuki
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
Tomohiro Kumagai
NS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバ
Tomohiro Kumagai
snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証
moko ist
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
Tomohiro Kumagai
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
Kenji Tanaka
En vedette
(20)
IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
Yahoo vs classmethod-introduction
Yahoo vs classmethod-introduction
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
Yahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeacon
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
Xcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフを
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介
1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境
Vasily i os-20140403
Vasily i os-20140403
あのパターンと仲良く付き合う 西磨翁 #yxcm
あのパターンと仲良く付き合う 西磨翁 #yxcm
チームを加速させるRetty式開発術
チームを加速させるRetty式開発術
初めての単体テスト
初めての単体テスト
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
NS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバ
snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
Similaire à iOS アプリのメンテナンス性を高めるための基本的な考え方
23 tm1 performancemodeler
23 tm1 performancemodeler
Shinsuke Yamamoto
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Takeshi Hirosue
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Yoshiki Takeoka
Amazon Mobile Analyticsのいろは
Amazon Mobile Analyticsのいろは
Yasuhisa Arakawa
継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版
Atsushi Nakamura
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
Unity Technologies Japan K.K.
Adobe Symposium 2019 Analytics & Target Session
Adobe Symposium 2019 Analytics & Target Session
Keisuke Anzai
Adobe Analytics Tips & Tricks
Adobe Analytics Tips & Tricks
Keisuke Anzai
20150622 Adobe Analytics
20150622 Adobe Analytics
Keisuke Anzai
Google のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきこと
Compare GW
Intranet20
Intranet20
Kamoshita Yoshihiro
I phoneアプリ入門 第3回
I phoneアプリ入門 第3回
Sachiko Kajishima
夜子まま塾講義8(androidの画面デザイン2)
夜子まま塾講義8(androidの画面デザイン2)
Masafumi Terazono
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
Wataru Kimura
Possibility of my trailhead 20200718updated
Possibility of my trailhead 20200718updated
TakumiNiinuma
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
IMJ Corporation
α版 継続的にテスト可能な設計を考える
α版 継続的にテスト可能な設計を考える
Atsushi Nakamura
Intalio cloud development way in Japanese
Intalio cloud development way in Japanese
Daisuke Sugai
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdf
tomokoitoda1
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdf
tomokoitoda1
Similaire à iOS アプリのメンテナンス性を高めるための基本的な考え方
(20)
23 tm1 performancemodeler
23 tm1 performancemodeler
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Amazon Mobile Analyticsのいろは
Amazon Mobile Analyticsのいろは
継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
Adobe Symposium 2019 Analytics & Target Session
Adobe Symposium 2019 Analytics & Target Session
Adobe Analytics Tips & Tricks
Adobe Analytics Tips & Tricks
20150622 Adobe Analytics
20150622 Adobe Analytics
Google のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきこと
Intranet20
Intranet20
I phoneアプリ入門 第3回
I phoneアプリ入門 第3回
夜子まま塾講義8(androidの画面デザイン2)
夜子まま塾講義8(androidの画面デザイン2)
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
Possibility of my trailhead 20200718updated
Possibility of my trailhead 20200718updated
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
α版 継続的にテスト可能な設計を考える
α版 継続的にテスト可能な設計を考える
Intalio cloud development way in Japanese
Intalio cloud development way in Japanese
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdf
iOS アプリのメンテナンス性を高めるための基本的な考え方
1.
iOS アプリのメンテナンス性を ⾼高めるための基本的な考え⽅方 ヤフー vs
クラスメソッド Battle 3 2014/2/25 Copylight © Classmethod, Inc. クラスメソッド 掛川 1
2.
iOS アプリのメンテナンスが⼤大変 Copylight ©
Classmethod, Inc. 2
3.
メンテナンスがしやすくなるよう な設計をしたい Copylight © Classmethod,
Inc. 3
4.
いろいろありますが、 今回お話するのは1つだけです Copylight © Classmethod,
Inc. 4
5.
ViewController から 本来記述すべきでない処理理を 切切り出す Copylight ©
Classmethod, Inc. 5
6.
なぜ? Copylight © Classmethod,
Inc. 6
7.
⼤大量量の処理理を抱え込んで Fat に なってしまった
ViewController の メンテナンスは⼤大変 Copylight © Classmethod, Inc. 7
8.
Fat な ViewController
の問題点 • 責務が多すぎる • ⼤大量量のイベントハンド リング • ロジックの再利利⽤用が難 しい Copylight © Classmethod, Inc. 8
9.
どの処理理を切切り出せばいいの? Copylight © Classmethod,
Inc. 9
10.
ViewController から切切り出すべき であるのは、 情報の表⽰示に関連しない機能 Copylight ©
Classmethod, Inc. 10
11.
情報の表⽰示に関連しない機能を 分離離する理理由 • 情報の表⽰示に関連しない機能を画⾯面に紐紐づく クラスで管理理したくない – データや処理理、状態の共有や持ち運びができなく なる •
同じ関⼼心事に関する処理理はできるだけ1箇所にまと めたい – 画⾯面毎に実装すると処理理が分散してしまい、凝集 度度が低くなる Copylight © Classmethod, Inc. 11
12.
機能を画⾯面に紐紐づくクラスで 管理理したくない ViewController データ 処理理 Copylight © Classmethod,
Inc. ViewController 状態 12
13.
機能を画⾯面に紐紐づくクラスで 管理理したくない ViewController データ 処理理 ViewController 状態 他の ViewController の 中⾝身を直接参照 Copylight
© Classmethod, Inc. 13
14.
機能を画⾯面に紐紐づくクラスで 管理理したくない ViewController データ × ViewController 処理理 Copylight © Classmethod,
Inc. 状態 他の ViewController の 中⾝身を直接参照 共有しづらい 14
15.
機能を画⾯面に紐紐づくクラスで 管理理したくない ViewController ViewController 利利⽤用 利利⽤用 委譲オブジェクト データ Copylight © Classmethod,
Inc. 処理理 15 状態
16.
機能を画⾯面に紐紐づくクラスで 管理理したくない ViewController ViewController 持ち運び可能 委譲オブジェクト データ Copylight © Classmethod,
Inc. 処理理 16 状態
17.
機能を画⾯面に紐紐づくクラスで 管理理したくない ViewController ○ Copylight © Classmethod,
Inc. ViewController 持ち運び可能 委譲オブジェクト データ 処理理 17 状態 共有しやすい
18.
同じ関⼼心事に関する処理理を 1箇所にまとめたい ViewController ViewController ユーザー名 更更新処理理 Copylight © Classmethod,
Inc. パスワード 更更新処理理 18
19.
同じ関⼼心事に関する処理理を 1箇所にまとめたい ViewController ViewController ユーザー名 更更新処理理 × Copylight © Classmethod,
Inc. パスワード 更更新処理理 アカウント情報に 関する処理理が分散 19
20.
同じ関⼼心事に関する処理理を 1箇所にまとめたい ViewController ViewController 利利⽤用 利利⽤用 アカウント情報管理理オブジェクト ユーザー名 更更新処理理 Copylight © Classmethod,
Inc. パスワード 更更新処理理 20
21.
同じ関⼼心事に関する処理理を 1箇所にまとめたい ViewController ○ Copylight © Classmethod,
Inc. ViewController アカウント情報管理理オブジェクト ユーザー名 更更新処理理 パスワード 更更新処理理 21 アカウント 情報に関する 処理理が集約
22.
切切り出した機能は、情報の表⽰示に 関連する機能に依存しない Copylight © Classmethod,
Inc. 22
23.
情報の表⽰示に関連する機能に 依存しない理理由 • 情報の表⽰示に関連しない機能に特定の画⾯面の 実装を意識識させたくない – 特定の画⾯面を意識識した実装になっていると再利利⽤用 が難しくなる •
あくまで情報の表⽰示に関連しない機能に集中 させたい – モジュール内で考えなければいけないことを少な くしたい Copylight © Classmethod, Inc. 23
24.
じゃあ、ViewController には どういった処理理を書けばいいの? Copylight ©
Classmethod, Inc. 24
25.
ViewController の役割について Mediator
パターンの視点から 考えてみましょう Copylight © Classmethod, Inc. 25
26.
Mediator パターン Copylight ©
Classmethod, Inc. 26
27.
Mediator パターン オブジェクト A オブジェクトの関係が 複雑 オブジェクト
C オブジェクト B オブジェクト D オブジェクト E Copylight © Classmethod, Inc. 27
28.
Mediator パターン 仲介オブジェクト オブジェクト A オブジェクト
E オブジェクト B オブジェクト D オブジェクト C Copylight © Classmethod, Inc. 仲介オブジェクトが とりまとめ 28
29.
Mediator パターン 仲介オブジェクト オブジェクト A オブジェクト
E オブジェクト B オブジェクト間では やりとりをしない Copylight © Classmethod, Inc. 仲介オブジェクトが とりまとめ × オブジェクト D オブジェクト C 29
30.
Mediator パターン Mediator 仲介オブジェクト オブジェクト A オブジェクト
E オブジェクト B オブジェクト D オブジェクト C Copylight © Classmethod, Inc. 30
31.
Mediator パターン Mediator 仲介オブジェクト オブジェクト A オブジェクト
E オブジェクト B オブジェクト D オブジェクト C Copylight © Classmethod, Inc. 31 Colleague
32.
View Controllerは、ビュー階層に 代わって中⼼心的な調整役として機 能し、ビューとコントローラまた はデータオブジェクトの間のやり 取りに対処します。 「iOS View
Controller プログラミングガイド」より引⽤用 Copylight © Classmethod, Inc. 32
33.
View Controllerは、ビュー階層に 代わって中⼼心的な調整役として機 能し、ビューとコントローラまた はデータオブジェクトの間のやり 取りに対処します。 「iOS View
Controller プログラミングガイド」より引⽤用 Copylight © Classmethod, Inc. 33
34.
ViewController は Mediator
パ ターンにおける Mediator とみな すことができる Copylight © Classmethod, Inc. 34
35.
ViewController が仲介する Colleague Mediator ViewController UI UI Colleague Copylight
© Classmethod, Inc. 35
36.
ViewController が仲介する Colleague Mediator UI UI ViewController ChildViewController ChildViewController Colleague Copylight
© Classmethod, Inc. 36
37.
ViewController が仲介する Colleague Mediator UI UI ViewController ChildViewController ChildViewController Colleague Copylight
© Classmethod, Inc. 37 情報の表⽰示に関連し ないモジュール Model
38.
ViewController と Colleague
の 間のやりとり Mediator ViewController Colleague UI Copylight © Classmethod, Inc. 38
39.
ViewController と Colleague
の 間のやりとり Mediator ViewController Colleague UI 状態が変化 Copylight © Classmethod, Inc. 39
40.
ViewController と Colleague
の 間のやりとり Mediator ViewController イベント通知 Colleague UI 状態が変化 Copylight © Classmethod, Inc. 40
41.
ViewController と Colleague
の 間のやりとり Mediator ViewController イベント通知 • Target-‐‑‒Action • Delegate など Colleague UI 状態が変化 Copylight © Classmethod, Inc. 41
42.
ViewController と Colleague
の 間のやりとり Mediator ViewController UI UI Colleague Copylight © Classmethod, Inc. 42
43.
ViewController と Colleague
の 間のやりとり Mediator イベントを 受信 ViewController UI UI Colleague Copylight © Classmethod, Inc. 43
44.
ViewController と Colleague
の 間のやりとり Mediator イベントを 受信 ViewController 適切切な指⽰示 UI UI Colleague Copylight © Classmethod, Inc. 44
45.
ViewController と Colleague
の 間のやりとり Mediator イベントを 受信 ViewController 適切切な指⽰示 • プロパティにセット • メソッド呼び出し UI UI Colleague Copylight © Classmethod, Inc. 45
46.
Colleague 間ではお互いの存在に ついて直接意識識しない Copylight ©
Classmethod, Inc. 46
47.
まとめ • ViewController から情報の表⽰示に関連しないモジュールを切切 り離離す •
情報の表⽰示に関連しないモジュールは、ViewController など の情報の表⽰示に関連するモジュールに依存しない • ViewController は⾃自⾝身が参照するオブジェクトの間の仲介役 を主な役割とする • ViewController が仲介するオブジェクトは ViewController 経由で連携し、互いの存在について直接意識識しない Copylight © Classmethod, Inc. 47
48.
ご静聴ありがとうございました Copylight © Classmethod,
Inc. 48
Télécharger maintenant