Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
kakegawa-atsushi
PDF, PPTX
13,852 views
iOS アプリのメンテナンス性を高めるための基本的な考え方
2014/2/25 に開催された、ヤフー vs クラスメソッド Battle 3 の発表資料です。
Technology
◦
Read more
23
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 49
2
/ 49
3
/ 49
4
/ 49
5
/ 49
6
/ 49
7
/ 49
8
/ 49
9
/ 49
10
/ 49
11
/ 49
12
/ 49
13
/ 49
14
/ 49
15
/ 49
16
/ 49
17
/ 49
18
/ 49
19
/ 49
20
/ 49
21
/ 49
22
/ 49
23
/ 49
24
/ 49
25
/ 49
26
/ 49
27
/ 49
28
/ 49
29
/ 49
30
/ 49
31
/ 49
32
/ 49
33
/ 49
34
/ 49
35
/ 49
36
/ 49
37
/ 49
38
/ 49
39
/ 49
40
/ 49
41
/ 49
42
/ 49
43
/ 49
44
/ 49
45
/ 49
46
/ 49
47
/ 49
48
/ 49
49
/ 49
More Related Content
PDF
iOSやAndroidアプリ開発のGoodPractice
by
Ken Morishita
PDF
VIPER アーキテクチャによる iOS アプリの設計
by
Yuichi Adachi
PDF
BaseViewControllerは作りたくない
by
今城 善矩
PPTX
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
PDF
Model View Presenter for Android
by
shinnosuke kugimiya
PPTX
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
by
Ken Morishita
PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
by
Ken Morishita
PPTX
MVVM入門
by
Kazutoshi Urabe
iOSやAndroidアプリ開発のGoodPractice
by
Ken Morishita
VIPER アーキテクチャによる iOS アプリの設計
by
Yuichi Adachi
BaseViewControllerは作りたくない
by
今城 善矩
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」
by
U-dai Yokoyama
Model View Presenter for Android
by
shinnosuke kugimiya
知らないと損するアプリ開発におけるStateMachineの活用法(full版)
by
Ken Morishita
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
by
Ken Morishita
MVVM入門
by
Kazutoshi Urabe
What's hot
PDF
Android Architecture
by
shinnosuke kugimiya
PPTX
WPF MVVM Review
by
Takayuki Kondou
PDF
Prism + ReactiveProperty入門
by
一希 大田
PPTX
Visual studio 2013 Overview
by
一希 大田
PDF
Xamarin.Mac をこれからはじめるあなたへ
by
Tsubasa Hirano
PPTX
Windows ストア アプリの上手な作り方
by
一希 大田
PPTX
Xamarin.formsでのmvvm利用のコツ
by
Masuda Tomoaki
PPTX
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
by
一希 大田
PDF
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
by
寛 吉田
PDF
AngularJSについて
by
昌生 高橋
PDF
クロスプラットフォーム開発入門
by
minazou67
PPTX
Lightingコンポーネントベーシック開発
by
Akihiro Iwaya
PDF
Ignite ui 2012 最新情報 jQuery UI 編
by
Daizen Ikehara
PDF
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
PDF
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
by
Hayashi Yuichi
PDF
ng-mtg#6 AngularJS ディレクティブ・パターン
by
Hayashi Yuichi
PPTX
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
by
慎一 古賀
PDF
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
by
Yoshito Tabuchi
PDF
Visual Studio + xamarin で始めるモバイル アプリ開発
by
インフラジスティックス・ジャパン株式会社
PDF
Xamarinの概要
by
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
Android Architecture
by
shinnosuke kugimiya
WPF MVVM Review
by
Takayuki Kondou
Prism + ReactiveProperty入門
by
一希 大田
Visual studio 2013 Overview
by
一希 大田
Xamarin.Mac をこれからはじめるあなたへ
by
Tsubasa Hirano
Windows ストア アプリの上手な作り方
by
一希 大田
Xamarin.formsでのmvvm利用のコツ
by
Masuda Tomoaki
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
by
一希 大田
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
by
寛 吉田
AngularJSについて
by
昌生 高橋
クロスプラットフォーム開発入門
by
minazou67
Lightingコンポーネントベーシック開発
by
Akihiro Iwaya
Ignite ui 2012 最新情報 jQuery UI 編
by
Daizen Ikehara
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
by
irgaly
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
by
Hayashi Yuichi
ng-mtg#6 AngularJS ディレクティブ・パターン
by
Hayashi Yuichi
Visual Studio Online BUILD を本気で使いこなして品質&効率を劇的に上げる! [ Comm Tech Festival ] C-4
by
慎一 古賀
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
by
Yoshito Tabuchi
Visual Studio + xamarin で始めるモバイル アプリ開発
by
インフラジスティックス・ジャパン株式会社
Xamarinの概要
by
Developer Solutions事業部 メシウス株式会社 (旧グレープシティ株式会社)
Viewers also liked
PDF
IOS/Androidアプリの3つの大事な設計方針
by
Ken Morishita
PDF
Yahoo vs classmethod-introduction
by
Rikitake Oohashi
PDF
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
by
Shingo Hiraya
PDF
Yahoo vs ClassMethod_battle5_iBeacon
by
Yasuhisa Arakawa
PDF
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
by
Takeshi Fukasawa
PDF
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
PDF
Xcodeプラグインで快適な開発ライフを
by
Yuki Hirai
PDF
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
by
yuki0211s
PDF
Xcodeを便利に使って爆速開発する #yxcm
by
Hiramatsu Ryosuke
PPTX
Plannahのチーム開発とdeploy gateの紹介
by
Kenji Kinukawa
PDF
1人でも頑張れる!Retty式開発環境
by
Yoichiro Sakurai
PDF
Vasily i os-20140403
by
Yusuke Arai
PDF
あのパターンと仲良く付き合う 西磨翁 #yxcm
by
Mao Nishi
PDF
チームを加速させるRetty式開発術
by
Yoichiro Sakurai
KEY
初めての単体テスト
by
Basuke Suzuki
PDF
プロトコル指向 - 夢と現実の狭間 #cswift
by
Tomohiro Kumagai
PDF
NS Prefix 外伝 … Copy-On-Write #関モバ
by
Tomohiro Kumagai
PDF
snapshot ではじめる ローカライズ検証
by
moko ist
PDF
Swift 2.0 大域関数の行方から #swift2symposium
by
Tomohiro Kumagai
PDF
はじめてのUnitTest XCTestに触れて
by
Kenji Tanaka
IOS/Androidアプリの3つの大事な設計方針
by
Ken Morishita
Yahoo vs classmethod-introduction
by
Rikitake Oohashi
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
by
Shingo Hiraya
Yahoo vs ClassMethod_battle5_iBeacon
by
Yasuhisa Arakawa
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
by
Takeshi Fukasawa
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
by
Yuichi Adachi
Xcodeプラグインで快適な開発ライフを
by
Yuki Hirai
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
by
yuki0211s
Xcodeを便利に使って爆速開発する #yxcm
by
Hiramatsu Ryosuke
Plannahのチーム開発とdeploy gateの紹介
by
Kenji Kinukawa
1人でも頑張れる!Retty式開発環境
by
Yoichiro Sakurai
Vasily i os-20140403
by
Yusuke Arai
あのパターンと仲良く付き合う 西磨翁 #yxcm
by
Mao Nishi
チームを加速させるRetty式開発術
by
Yoichiro Sakurai
初めての単体テスト
by
Basuke Suzuki
プロトコル指向 - 夢と現実の狭間 #cswift
by
Tomohiro Kumagai
NS Prefix 外伝 … Copy-On-Write #関モバ
by
Tomohiro Kumagai
snapshot ではじめる ローカライズ検証
by
moko ist
Swift 2.0 大域関数の行方から #swift2symposium
by
Tomohiro Kumagai
はじめてのUnitTest XCTestに触れて
by
Kenji Tanaka
Similar to iOS アプリのメンテナンス性を高めるための基本的な考え方
KEY
MVCもやもや話
by
Tetsuya Kaneuchi
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
PDF
I phoneアプリ入門 第4回
by
Sachiko Kajishima
PDF
Beginning iPhone Vol2
by
Sachiko Kajishima
PDF
I phoneアプリ入門 第3回
by
Sachiko Kajishima
PDF
Cocoa Pro5
by
hasegawa
KEY
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
by
Makoto Setoh
PDF
flasherがはじめてiOS開発をしてみて
by
佐藤 俊太郎
PDF
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
by
Masaru Gushiken
PDF
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
by
聡 中川
PPTX
最近のiOS開発の現状と実状
by
クラスメソッド株式会社
PPTX
2012 05-19第44回cocoa勉強会発表資料
by
OCHI Shuji
PDF
iPhone develop for Beginner
by
Sachiko Kajishima
PDF
エンジニア戦記 〜小さなチーム、大きな未来〜
by
Yuki Hirai
PDF
既存アプリのiOS8対応 #ios8yahoo
by
Yahoo!デベロッパーネットワーク
PDF
効率的なアプリ開発のベストプラクティス
by
yayugu
PDF
Swift入門
by
聡 中川
PDF
Storyboard
by
Hidetoshi Mori
PDF
DevIO Auto Layout 道場スライド
by
kakegawa-atsushi
PDF
iPhone UI勉強会資料
by
Mari Takahashi
MVCもやもや話
by
Tetsuya Kaneuchi
iPhoneアプリ開発の歩き方〜Swift編〜
by
Yusuke SAITO
I phoneアプリ入門 第4回
by
Sachiko Kajishima
Beginning iPhone Vol2
by
Sachiko Kajishima
I phoneアプリ入門 第3回
by
Sachiko Kajishima
Cocoa Pro5
by
hasegawa
軽量EvernoteクライアントSmartEverにおけるアプリ高速化の工夫と課題
by
Makoto Setoh
flasherがはじめてiOS開発をしてみて
by
佐藤 俊太郎
Apple審査を一発通過!iOS開発経験0でも出来るじげん流Swift開発のすべて
by
Masaru Gushiken
24時間でiOSアプリ-Twitterクライアント-の作成にチャレンジ
by
聡 中川
最近のiOS開発の現状と実状
by
クラスメソッド株式会社
2012 05-19第44回cocoa勉強会発表資料
by
OCHI Shuji
iPhone develop for Beginner
by
Sachiko Kajishima
エンジニア戦記 〜小さなチーム、大きな未来〜
by
Yuki Hirai
既存アプリのiOS8対応 #ios8yahoo
by
Yahoo!デベロッパーネットワーク
効率的なアプリ開発のベストプラクティス
by
yayugu
Swift入門
by
聡 中川
Storyboard
by
Hidetoshi Mori
DevIO Auto Layout 道場スライド
by
kakegawa-atsushi
iPhone UI勉強会資料
by
Mari Takahashi
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
Download