SlideShare a Scribd company logo
1 of 49
Download to read offline
iOS  アプリのメンテナンス性を
⾼高めるための基本的な考え⽅方
ヤフー  vs  クラスメソッド
Battle  3
2014/2/25

Copylight  ©  Classmethod,  Inc.

クラスメソッド  掛川

1
iOS  アプリのメンテナンスが⼤大変

Copylight  ©  Classmethod,  Inc.

2
メンテナンスがしやすくなるよう
な設計をしたい

Copylight  ©  Classmethod,  Inc.

3
いろいろありますが、
今回お話するのは1つだけです

Copylight  ©  Classmethod,  Inc.

4
ViewController  から
本来記述すべきでない処理理を
切切り出す

Copylight  ©  Classmethod,  Inc.

5
なぜ?

Copylight  ©  Classmethod,  Inc.

6
⼤大量量の処理理を抱え込んで  Fat  に
なってしまった  ViewController  の
メンテナンスは⼤大変

Copylight  ©  Classmethod,  Inc.

7
Fat  な  ViewController  の問題点
•  責務が多すぎる
•  ⼤大量量のイベントハンド
リング
•  ロジックの再利利⽤用が難
しい

Copylight  ©  Classmethod,  Inc.

8
どの処理理を切切り出せばいいの?

Copylight  ©  Classmethod,  Inc.

9
ViewController  から切切り出すべき
であるのは、
情報の表⽰示に関連しない機能

Copylight  ©  Classmethod,  Inc.

10
情報の表⽰示に関連しない機能を
分離離する理理由

•  情報の表⽰示に関連しない機能を画⾯面に紐紐づく
クラスで管理理したくない

–  データや処理理、状態の共有や持ち運びができなく
なる

•  同じ関⼼心事に関する処理理はできるだけ1箇所にまと
めたい
–  画⾯面毎に実装すると処理理が分散してしまい、凝集
度度が低くなる
Copylight  ©  Classmethod,  Inc.

11
機能を画⾯面に紐紐づくクラスで
管理理したくない
ViewController
データ

処理理

Copylight  ©  Classmethod,  Inc.

ViewController
状態

12
機能を画⾯面に紐紐づくクラスで
管理理したくない
ViewController
データ

処理理

ViewController
状態
他の  
ViewController  の
中⾝身を直接参照

Copylight  ©  Classmethod,  Inc.

13
機能を画⾯面に紐紐づくクラスで
管理理したくない
ViewController
データ

×

ViewController

処理理

Copylight  ©  Classmethod,  Inc.

状態
他の  
ViewController  の
中⾝身を直接参照

共有しづらい

14
機能を画⾯面に紐紐づくクラスで
管理理したくない
ViewController

ViewController

利利⽤用

利利⽤用

委譲オブジェクト
データ

Copylight  ©  Classmethod,  Inc.

処理理

15

状態
機能を画⾯面に紐紐づくクラスで
管理理したくない
ViewController

ViewController

持ち運び可能

委譲オブジェクト
データ

Copylight  ©  Classmethod,  Inc.

処理理

16

状態
機能を画⾯面に紐紐づくクラスで
管理理したくない
ViewController

○

Copylight  ©  Classmethod,  Inc.

ViewController

持ち運び可能

委譲オブジェクト
データ

処理理

17

状態

共有しやすい
同じ関⼼心事に関する処理理を
1箇所にまとめたい
ViewController

ViewController

ユーザー名
更更新処理理

Copylight  ©  Classmethod,  Inc.

パスワード
更更新処理理

18
同じ関⼼心事に関する処理理を
1箇所にまとめたい
ViewController

ViewController

ユーザー名
更更新処理理

×

Copylight  ©  Classmethod,  Inc.

パスワード
更更新処理理

アカウント情報に
関する処理理が分散

19
同じ関⼼心事に関する処理理を
1箇所にまとめたい
ViewController

ViewController

利利⽤用

利利⽤用
アカウント情報管理理オブジェクト
ユーザー名
更更新処理理

Copylight  ©  Classmethod,  Inc.

パスワード
更更新処理理

20
同じ関⼼心事に関する処理理を
1箇所にまとめたい
ViewController

○

Copylight  ©  Classmethod,  Inc.

ViewController

アカウント情報管理理オブジェクト
ユーザー名
更更新処理理

パスワード
更更新処理理

21

アカウント
情報に関する
処理理が集約
切切り出した機能は、情報の表⽰示に
関連する機能に依存しない

Copylight  ©  Classmethod,  Inc.

22
情報の表⽰示に関連する機能に
依存しない理理由

•  情報の表⽰示に関連しない機能に特定の画⾯面の
実装を意識識させたくない

–  特定の画⾯面を意識識した実装になっていると再利利⽤用
が難しくなる

•  あくまで情報の表⽰示に関連しない機能に集中
させたい

–  モジュール内で考えなければいけないことを少な
くしたい

Copylight  ©  Classmethod,  Inc.

23
じゃあ、ViewController  には
どういった処理理を書けばいいの?

Copylight  ©  Classmethod,  Inc.

24
ViewController  の役割について  
Mediator  パターンの視点から
考えてみましょう

Copylight  ©  Classmethod,  Inc.

25
Mediator  パターン

Copylight  ©  Classmethod,  Inc.

26
Mediator  パターン
オブジェクト  A

オブジェクトの関係が
複雑

オブジェクト  C

オブジェクト  B

オブジェクト  D
オブジェクト  E

Copylight  ©  Classmethod,  Inc.

27
Mediator  パターン
仲介オブジェクト

オブジェクト  A

オブジェクト  E

オブジェクト  B

オブジェクト  D
オブジェクト  C

Copylight  ©  Classmethod,  Inc.

仲介オブジェクトが
とりまとめ

28
Mediator  パターン
仲介オブジェクト

オブジェクト  A

オブジェクト  E

オブジェクト  B
オブジェクト間では
やりとりをしない
Copylight  ©  Classmethod,  Inc.

仲介オブジェクトが
とりまとめ

×

オブジェクト  D
オブジェクト  C

29
Mediator  パターン
Mediator

仲介オブジェクト

オブジェクト  A

オブジェクト  E

オブジェクト  B

オブジェクト  D
オブジェクト  C

Copylight  ©  Classmethod,  Inc.

30
Mediator  パターン
Mediator

仲介オブジェクト

オブジェクト  A

オブジェクト  E

オブジェクト  B

オブジェクト  D
オブジェクト  C

Copylight  ©  Classmethod,  Inc.

31

Colleague
View  Controllerは、ビュー階層に
代わって中⼼心的な調整役として機
能し、ビューとコントローラまた
はデータオブジェクトの間のやり
取りに対処します。
「iOS  View  Controller  プログラミングガイド」より引⽤用

Copylight  ©  Classmethod,  Inc.

32
View  Controllerは、ビュー階層に
代わって中⼼心的な調整役として機
能し、ビューとコントローラまた
はデータオブジェクトの間のやり
取りに対処します。
「iOS  View  Controller  プログラミングガイド」より引⽤用

Copylight  ©  Classmethod,  Inc.

33
ViewController  は  Mediator  パ
ターンにおける  Mediator  とみな
すことができる

Copylight  ©  Classmethod,  Inc.

34
ViewController  が仲介する  
Colleague

Mediator

ViewController

UI
UI

Colleague
Copylight  ©  Classmethod,  Inc.

35
ViewController  が仲介する  
Colleague

Mediator

UI
UI

ViewController

ChildViewController
ChildViewController

Colleague
Copylight  ©  Classmethod,  Inc.

36
ViewController  が仲介する  
Colleague

Mediator

UI
UI

ViewController

ChildViewController
ChildViewController

Colleague
Copylight  ©  Classmethod,  Inc.

37

情報の表⽰示に関連し
ないモジュール
Model
ViewController  と  Colleague  の
間のやりとり

Mediator

ViewController

Colleague

UI

Copylight  ©  Classmethod,  Inc.

38
ViewController  と  Colleague  の
間のやりとり

Mediator

ViewController

Colleague

UI

状態が変化
Copylight  ©  Classmethod,  Inc.

39
ViewController  と  Colleague  の
間のやりとり

Mediator

ViewController

イベント通知

Colleague

UI

状態が変化
Copylight  ©  Classmethod,  Inc.

40
ViewController  と  Colleague  の
間のやりとり

Mediator

ViewController

イベント通知
•  Target-‐‑‒Action
•  Delegate  など

Colleague

UI

状態が変化
Copylight  ©  Classmethod,  Inc.

41
ViewController  と  Colleague  の
間のやりとり

Mediator

ViewController

UI

UI

Colleague
Copylight  ©  Classmethod,  Inc.

42
ViewController  と  Colleague  の
間のやりとり

Mediator

イベントを
受信

ViewController

UI

UI

Colleague
Copylight  ©  Classmethod,  Inc.

43
ViewController  と  Colleague  の
間のやりとり

Mediator

イベントを
受信

ViewController
適切切な指⽰示

UI

UI

Colleague
Copylight  ©  Classmethod,  Inc.

44
ViewController  と  Colleague  の
間のやりとり

Mediator

イベントを
受信

ViewController
適切切な指⽰示
•  プロパティにセット
•  メソッド呼び出し

UI

UI

Colleague
Copylight  ©  Classmethod,  Inc.

45
Colleague  間ではお互いの存在に
ついて直接意識識しない

Copylight  ©  Classmethod,  Inc.

46
まとめ
•  ViewController  から情報の表⽰示に関連しないモジュールを切切
り離離す
•  情報の表⽰示に関連しないモジュールは、ViewController  など
の情報の表⽰示に関連するモジュールに依存しない
•  ViewController  は⾃自⾝身が参照するオブジェクトの間の仲介役
を主な役割とする
•  ViewController  が仲介するオブジェクトは  ViewController  
経由で連携し、互いの存在について直接意識識しない

Copylight  ©  Classmethod,  Inc.

47
 ご静聴ありがとうございました

Copylight  ©  Classmethod,  Inc.

48
iOS アプリのメンテナンス性を高めるための基本的な考え方

More Related Content

What's hot

Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門一希 大田
 
Visual studio 2013 Overview
Visual studio 2013 OverviewVisual studio 2013 Overview
Visual studio 2013 Overview一希 大田
 
Xamarin.Mac をこれからはじめるあなたへ
Xamarin.Mac をこれからはじめるあなたへXamarin.Mac をこれからはじめるあなたへ
Xamarin.Mac をこれからはじめるあなたへTsubasa Hirano
 
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方一希 大田
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能一希 大田
 
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
Lightning Component公開への道  ~「Multi-View Calendar」開発で分かったこと~Lightning Component公開への道  ~「Multi-View Calendar」開発で分かったこと~
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~寛 吉田
 
AngularJSについて
AngularJSについてAngularJSについて
AngularJSについて昌生 高橋
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門minazou67
 
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Akihiro Iwaya
 
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編Daizen Ikehara
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 Eastirgaly
 
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIGHayashi Yuichi
 
ng-mtg#6 AngularJS ディレクティブ・パターン
ng-mtg#6 AngularJS ディレクティブ・パターン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-4Visual 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 アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメYoshito Tabuchi
 

What's hot (20)

MVVM入門
MVVM入門MVVM入門
MVVM入門
 
Android Architecture
Android ArchitectureAndroid Architecture
Android Architecture
 
WPF MVVM Review
WPF MVVM ReviewWPF MVVM Review
WPF MVVM Review
 
Prism + ReactiveProperty入門
Prism + ReactiveProperty入門Prism + ReactiveProperty入門
Prism + ReactiveProperty入門
 
Visual studio 2013 Overview
Visual studio 2013 OverviewVisual studio 2013 Overview
Visual studio 2013 Overview
 
Xamarin.Mac をこれからはじめるあなたへ
Xamarin.Mac をこれからはじめるあなたへXamarin.Mac をこれからはじめるあなたへ
Xamarin.Mac をこれからはじめるあなたへ
 
Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方Windows ストア アプリの上手な作り方
Windows ストア アプリの上手な作り方
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能XAML + C#で開発するときのVisual Studio 2013(とBlend)の便利機能
XAML + C#で開発するときの Visual Studio 2013(とBlend)の 便利機能
 
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
Lightning Component公開への道  ~「Multi-View Calendar」開発で分かったこと~Lightning Component公開への道  ~「Multi-View Calendar」開発で分かったこと~
Lightning Component公開への道 ~「Multi-View Calendar」開発で分かったこと~
 
AngularJSについて
AngularJSについてAngularJSについて
AngularJSについて
 
クロスプラットフォーム開発入門
クロスプラットフォーム開発入門クロスプラットフォーム開発入門
クロスプラットフォーム開発入門
 
Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発Lightingコンポーネントベーシック開発
Lightingコンポーネントベーシック開発
 
Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編Ignite ui 2012 最新情報 jQuery UI 編
Ignite ui 2012 最新情報 jQuery UI 編
 
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
 
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
受託開発でのAngularJS - 第1回AngularJS 勉強会 at LIG
 
ng-mtg#6 AngularJS ディレクティブ・パターン
ng-mtg#6 AngularJS ディレクティブ・パターン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-4Visual 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 アプリ同時開発のススメXamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
Xamarin de:code セッション:Windows Phone / iOS / Android アプリ同時開発のススメ
 
Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発Visual Studio + xamarin で始めるモバイル アプリ開発
Visual Studio + xamarin で始めるモバイル アプリ開発
 

Viewers also liked

IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針Ken Morishita
 
Yahoo vs classmethod-introduction
Yahoo vs classmethod-introductionYahoo vs classmethod-introduction
Yahoo vs classmethod-introductionRikitake Oohashi
 
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcmShingo Hiraya
 
Yahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeaconYahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeaconYasuhisa Arakawa
 
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7Takeshi Fukasawa
 
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗したユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗したYuichi Adachi
 
Xcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフをXcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフをYuki Hirai
 
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集yuki0211s
 
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm Hiramatsu Ryosuke
 
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介Kenji Kinukawa
 
1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境Yoichiro Sakurai
 
Vasily i os-20140403
Vasily i os-20140403Vasily i os-20140403
Vasily i os-20140403Yusuke Arai
 
あのパターンと仲良く付き合う 西磨翁 #yxcm
あのパターンと仲良く付き合う 西磨翁 #yxcmあのパターンと仲良く付き合う 西磨翁 #yxcm
あのパターンと仲良く付き合う 西磨翁 #yxcmMao Nishi
 
チームを加速させるRetty式開発術
チームを加速させるRetty式開発術チームを加速させるRetty式開発術
チームを加速させるRetty式開発術Yoichiro Sakurai
 
初めての単体テスト
初めての単体テスト初めての単体テスト
初めての単体テストBasuke Suzuki
 
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswiftプロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswiftTomohiro Kumagai
 
NS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバNS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバTomohiro Kumagai
 
snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証moko ist
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumTomohiro Kumagai
 
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れてはじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れてKenji Tanaka
 

Viewers also liked (20)

IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針IOS/Androidアプリの3つの大事な設計方針
IOS/Androidアプリの3つの大事な設計方針
 
Yahoo vs classmethod-introduction
Yahoo vs classmethod-introductionYahoo vs classmethod-introduction
Yahoo vs classmethod-introduction
 
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
"アプリデザインはじめの一歩" ヤフー VS クラスメソッド iOS炎の7番勝負 #4 #yxcm
 
Yahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeaconYahoo vs ClassMethod_battle5_iBeacon
Yahoo vs ClassMethod_battle5_iBeacon
 
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
”iOSアプリ開発の先に何があるのか” ヤフー VS クラスメソッド iOS炎の7番勝負 #7
 
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗したユニットテスト初学者がKiwiFramework非同期テストで失敗した
ユニットテスト初学者がKiwiFramework非同期テストで失敗した
 
Xcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフをXcodeプラグインで快適な開発ライフを
Xcodeプラグインで快適な開発ライフを
 
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
Xcode 5のAsset Catalogにまつわる今すぐ使えるTips集
 
Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm Xcodeを便利に使って爆速開発する #yxcm
Xcodeを便利に使って爆速開発する #yxcm
 
Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介Plannahのチーム開発とdeploy gateの紹介
Plannahのチーム開発とdeploy gateの紹介
 
1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境1人でも頑張れる!Retty式開発環境
1人でも頑張れる!Retty式開発環境
 
Vasily i os-20140403
Vasily i os-20140403Vasily i os-20140403
Vasily i os-20140403
 
あのパターンと仲良く付き合う 西磨翁 #yxcm
あのパターンと仲良く付き合う 西磨翁 #yxcmあのパターンと仲良く付き合う 西磨翁 #yxcm
あのパターンと仲良く付き合う 西磨翁 #yxcm
 
チームを加速させるRetty式開発術
チームを加速させるRetty式開発術チームを加速させるRetty式開発術
チームを加速させるRetty式開発術
 
初めての単体テスト
初めての単体テスト初めての単体テスト
初めての単体テスト
 
プロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswiftプロトコル指向 - 夢と現実の狭間 #cswift
プロトコル指向 - 夢と現実の狭間 #cswift
 
NS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバNS Prefix 外伝 … Copy-On-Write #関モバ
NS Prefix 外伝 … Copy-On-Write #関モバ
 
snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証snapshot ではじめる ローカライズ検証
snapshot ではじめる ローカライズ検証
 
Swift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposiumSwift 2.0 大域関数の行方から #swift2symposium
Swift 2.0 大域関数の行方から #swift2symposium
 
はじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れてはじめてのUnitTest XCTestに触れて
はじめてのUnitTest XCTestに触れて
 

Similar to iOS アプリのメンテナンス性を高めるための基本的な考え方

Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1Takeshi Hirosue
 
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方Yoshiki Takeoka
 
Amazon Mobile Analyticsのいろは
Amazon Mobile AnalyticsのいろはAmazon Mobile Analyticsのいろは
Amazon Mobile AnalyticsのいろはYasuhisa Arakawa
 
継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版Atsushi Nakamura
 
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】建築革命、更に更に進化!便利さ向上【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 SessionAdobe Symposium 2019 Analytics & Target Session
Adobe Symposium 2019 Analytics & Target SessionKeisuke Anzai
 
Adobe Analytics Tips & Tricks
Adobe Analytics Tips & TricksAdobe Analytics Tips & Tricks
Adobe Analytics Tips & TricksKeisuke Anzai
 
20150622 Adobe Analytics
20150622 Adobe Analytics20150622 Adobe Analytics
20150622 Adobe AnalyticsKeisuke Anzai
 
Google のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきことGoogle のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきことCompare GW
 
I phoneアプリ入門 第3回
I phoneアプリ入門 第3回I phoneアプリ入門 第3回
I phoneアプリ入門 第3回Sachiko Kajishima
 
夜子まま塾講義8(androidの画面デザイン2)
夜子まま塾講義8(androidの画面デザイン2)夜子まま塾講義8(androidの画面デザイン2)
夜子まま塾講義8(androidの画面デザイン2)Masafumi Terazono
 
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信Wataru Kimura
 
Possibility of my trailhead 20200718updated
Possibility of my trailhead 20200718updatedPossibility of my trailhead 20200718updated
Possibility of my trailhead 20200718updatedTakumiNiinuma
 
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)【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 JapaneseIntalio cloud development way in Japanese
Intalio cloud development way in JapaneseDaisuke Sugai
 
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdfAIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdftomokoitoda1
 
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdfAIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdftomokoitoda1
 

Similar to iOS アプリのメンテナンス性を高めるための基本的な考え方 (20)

23 tm1 performancemodeler
23 tm1 performancemodeler23 tm1 performancemodeler
23 tm1 performancemodeler
 
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1
Spring Fest 2017 「エンタープライズで利用するSpring Boot」#jsug #sf_h1Spring 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の作り方Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
Adobe XD Plugin「Scenegraph」の操作とDialogの作り方
 
Amazon Mobile Analyticsのいろは
Amazon Mobile AnalyticsのいろはAmazon Mobile Analyticsのいろは
Amazon Mobile Analyticsのいろは
 
継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版継続的にテスト可能な設計を考える ベータ版
継続的にテスト可能な設計を考える ベータ版
 
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
建築革命、更に更に進化!便利さ向上【Unity Reflect ver 3.0 】
 
Adobe Symposium 2019 Analytics & Target Session
Adobe Symposium 2019 Analytics & Target SessionAdobe Symposium 2019 Analytics & Target Session
Adobe Symposium 2019 Analytics & Target Session
 
Adobe Analytics Tips & Tricks
Adobe Analytics Tips & TricksAdobe Analytics Tips & Tricks
Adobe Analytics Tips & Tricks
 
20150622 Adobe Analytics
20150622 Adobe Analytics20150622 Adobe Analytics
20150622 Adobe Analytics
 
Google のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきことGoogle のクラウド サービスを利用する前に 注意すべきこと
Google のクラウド サービスを利用する前に 注意すべきこと
 
Intranet20
Intranet20Intranet20
Intranet20
 
I phoneアプリ入門 第3回
I phoneアプリ入門 第3回I phoneアプリ入門 第3回
I phoneアプリ入門 第3回
 
夜子まま塾講義8(androidの画面デザイン2)
夜子まま塾講義8(androidの画面デザイン2)夜子まま塾講義8(androidの画面デザイン2)
夜子まま塾講義8(androidの画面デザイン2)
 
Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信Quickcursorに見る、アプリケーション間通信
Quickcursorに見る、アプリケーション間通信
 
Possibility of my trailhead 20200718updated
Possibility of my trailhead 20200718updatedPossibility of my trailhead 20200718updated
Possibility of my trailhead 20200718updated
 
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
【IMJ】デジタルマーケティング基盤を駆使して『利益を産むサイト』adobe.com(I・CON2014)
 
α版 継続的にテスト可能な設計を考える
α版 継続的にテスト可能な設計を考えるα版 継続的にテスト可能な設計を考える
α版 継続的にテスト可能な設計を考える
 
Intalio cloud development way in Japanese
Intalio cloud development way in JapaneseIntalio cloud development way in Japanese
Intalio cloud development way in Japanese
 
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdfAIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdf
 
AIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdfAIP改め、MIP_20230128_it.pdf
AIP改め、MIP_20230128_it.pdf
 

iOS アプリのメンテナンス性を高めるための基本的な考え方