SlideShare a Scribd company logo
1 of 26
2014/11/8 Developers.IO Meetup 10 
あなたのアプリ 
報・連・相できてますか? 
スマホアプリ開発あしたの為の環境と設計のアプローチ 
Copyright © Classmethod, Inc. 1 
横山U大
こんにちは 
横山U大(27) 
北海道釧路市出身 
Copyright © Classmethod, Inc. 2 
これまで 
• 建設業(設計・施工) 
• ミュージシャン気取り 
• 飲食業店長 
今のお仕事 
• Android エンジニア 
• デザイン 
• プロジェクトリーダー
今日のお話 
• MVPパターンについて 
• 実装例の解説 
• まとめ 
Copyright © Classmethod, Inc. 3
MVPパターンについて 
Copyright © Classmethod, Inc. 4
MVPパターンについて 
MVCって 
よく聞くよね 
もう少し柔軟に 
MVPパターン 
(Model – View – Presenter) 
Copyright © Classmethod, Inc. 5
MVPパターンについて 
Model 
View 
Presenter 
MVC のModel と同様にドメインロジックのみ 
を持つ。 
Model はView やPresenter に依存しない。 
画面の表示とユーザー入力の受付を担当する。 
ユーザー入力はPresenter に渡す。 
MVC のようなModel の監視は必須ではない。 
MVC のController とは違い、UI のビジネスロ 
ジックを含みインタフェースを通じてView を 
操作する。 
Copyright © Classmethod, Inc. 6
実装例の解説 
Copyright © Classmethod, Inc. 7
実装例の解説 
超 
ラッキー 
今日の運勢 
• 今日の運勢ボタンを押す 
• 今日の運勢を取得する 
• 今日の運勢を表示する 
楽勝だね 
Copyright © Classmethod, Inc. 8
MVPパターンを利用しない場合 
Copyright © Classmethod, Inc. 9
実装例の解説– MVPパターンを利用しない場合 
public class MainActivity extends Activity implements OnClickListener { 
private DivinationManager mDivinationManager; 
private Button mButton; 
private TextView mTextView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
mDivinationManager = new DivinationManager(); 
mTextView = (TextView)findViewById(R.id.textView); 
mButton = (Button)findViewById(R.id.button); 
mButton.setOnClickListener(this); 
} 
Copyright © Classmethod, Inc. 10
実装例の解説– MVPパターンを利用しない場合 
@Override 
public void onClick(View v) { 
showProgress(); 
mDivinationManager.get(new DivinationDelegate() { 
@Override 
public void completeDivination(String result) { 
mTextView.setText(result); 
dismissProgress(); 
} 
}); 
} 
private void showProgress() { ・・・} 
private void dismissProgress() { ・・・} 
} 
Copyright © Classmethod, Inc. 11
実装例の解説– MVPパターンを利用しない場合 
public class DivinationManager { 
public static interface DivinationDelegate { 
void completeDivination(String result); 
} 
public void get(DivinationDelegate delegate) { 
・・・ 
delegate.completeDivination("result"); 
} 
} 
Copyright © Classmethod, Inc. 12
実装例の解説– MVPパターンを利用しない場合 
機能が増えたらActivity が肥大化して 
いくよね 
UI ロジックのテストをするには 
Android 端末で実行する必要があるな 
Copyright © Classmethod, Inc. 13
MVPパターンを利用した場合 
Copyright © Classmethod, Inc. 14
実装例の解説 
ユーザーの入力を 
Presenter に渡す 
Copyright © Classmethod, Inc. 15 
Model に 
メッセージを送る 
Presenter に 
データを提供する 
Presenter が 
View を操作する
実装例の解説– MVPパターンを利用した場合 
public class MainActivity extends Activity implements IMainActivity, 
OnClickListener { 
private MainPresenter mMainPresenter; 
private Button mButton; 
private TextView mTextView; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_main); 
mPresenter = new MainPresenter(); 
mPresenter.setView(this); 
mTextView = (TextView)findViewById(R.id.textView); 
mButton = (Button)findViewById(R.id.button); 
mButton.setOnClickListener(this); 
} 
Copyright © Classmethod, Inc. 16
実装例の解説– MVPパターンを利用した場合 
@Override 
public void onClick(View v) { 
mPresenter.startDivination(); 
} 
@Override 
public void showProgress() { ・・・} 
@Override 
public void dismissProgress() { ・・・} 
@Override 
public void setResultText(String result) { 
mTextView.setText(result); 
} 
} 
Copyright © Classmethod, Inc. 17
実装例の解説– MVPパターンを利用した場合 
public interface IMainActivity { 
void showProgress(); 
void dismissProgress(); 
void setResultText(String result); 
} 
Copyright © Classmethod, Inc. 18
実装例の解説– MVPパターンを利用した場合 
public class MainPresenter { 
private IMainActivity mView; 
private IDivinationManager mDivinationManager; 
public MainPresenter() { 
mDivinationManager = new DivinationManager(); 
} 
public void setView(IMainActivity view) { 
mView = view; 
} 
public void startDivination() { 
mView.showProgress(); 
mDivinationManager.get(new DivinationDelegate() { 
@Override 
public void completeDivination(String result) { 
mView.setResultText(result); 
mView.dismissProgress(); 
} 
}); 
} 
} 
Copyright © Classmethod, Inc. 19
実装例の解説– MVPパターンを利用した場合 
public interface IDivinationManager { 
void get(DivinationDelegate divinationDelegate); 
} 
public class DivinationManager implements IDivinationManager { 
public static interface DivinationDelegate { 
void completeDivination(String result); 
} 
@Override 
public void get(DivinationDelegate delegate) { 
・・・ 
delegate.completeDivination("result"); 
} 
} 
Copyright © Classmethod, Inc. 20
実装例の解説 
ユーザーの入力を 
Presenter に 
報告する 
Copyright © Classmethod, Inc. 21 
報告の内容を 
Model に 
連絡する 
自分では解決できないことを 
データ層に相談する
実装例の解説– MVPパターンを利用した場合 
Presenter はView の実装に依存しない 
から、UI ロジックのテストが容易にな 
るね! 
少し強引だけど、MVPパターンは 
報・連・相パターンだね!! 
Copyright © Classmethod, Inc. 22
まとめ 
Copyright © Classmethod, Inc. 23
MVPパターンを利用すると 
• UIロジックのテストが実行しやすくな 
る(Viewが差し替えできる) 
• コードが役割毎に分離されてActivity 
が肥大化しずらくなる 
• 実装にルールができるので、いちいち 
迷わなくなる 
• 実装の説明が上手になる 
Copyright © Classmethod, Inc. 24
変更に強い 
読みやすいテストしやすい 
アプリの報・連・相が有効 
Copyright © Classmethod, Inc. 25
MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」

More Related Content

What's hot

【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しようUnity Technologies Japan K.K.
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてTatsuhiko Yamamura
 
UniTask入門
UniTask入門UniTask入門
UniTask入門torisoup
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理torisoup
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門torisoup
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移まべ☆てっく運営
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜Mikito Yoshiya
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]DeNA
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ信之 岩永
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化DeNA
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnity Technologies Japan K.K.
 
脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTaskEuglenaching
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~torisoup
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことBIGLOBE Inc.
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方Yoshifumi Kawai
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計sairoutine
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれNakanoYosuke1
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作るtorisoup
 

What's hot (20)

【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
 
Unity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成についてUnity ネイティブプラグインの作成について
Unity ネイティブプラグインの作成について
 
UniTask入門
UniTask入門UniTask入門
UniTask入門
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
うちではこうやっています UI構築のルールとPlaymakerを使った画面遷移
 
【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例【Unity】Scriptable object 入門と活用例
【Unity】Scriptable object 入門と活用例
 
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
文脈を操る美しきZenjectプロジェクトからの眺め 〜Contextの扱い方と活用方法〜
 
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
Unity 2018-2019を見据えたDeNAのUnity開発のこれから [DeNA TechCon 2019]
 
async/await のしくみ
async/await のしくみasync/await のしくみ
async/await のしくみ
 
大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化大規模ゲーム開発における build 高速化と安定化
大規模ゲーム開発における build 高速化と安定化
 
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTipsUnityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
 
脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask脱UniRx&Croutineから始めるUniTask
脱UniRx&Croutineから始めるUniTask
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
ドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したことドメイン駆動設計 失敗したことと成功したこと
ドメイン駆動設計 失敗したことと成功したこと
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
 
ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計ゲームエンジニアのためのデータベース設計
ゲームエンジニアのためのデータベース設計
 
Assembly Definition あれやこれ
Assembly Definition あれやこれAssembly Definition あれやこれ
Assembly Definition あれやこれ
 
オブジェクト指向できていますか?
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 

Viewers also liked

VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計Yuichi Adachi
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring増田 亨
 
スタートアップの戦略&ビジネスモデルの考え方
スタートアップの戦略&ビジネスモデルの考え方スタートアップの戦略&ビジネスモデルの考え方
スタートアップの戦略&ビジネスモデルの考え方Takaaki Umada
 
逆説のスタートアップ思考的「逆張りワークショップ」手順書
逆説のスタートアップ思考的「逆張りワークショップ」手順書逆説のスタートアップ思考的「逆張りワークショップ」手順書
逆説のスタートアップ思考的「逆張りワークショップ」手順書Takaaki Umada
 
リーンスタートアップにおける良い仮説、悪い仮説
リーンスタートアップにおける良い仮説、悪い仮説リーンスタートアップにおける良い仮説、悪い仮説
リーンスタートアップにおける良い仮説、悪い仮説Takaaki Umada
 
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創Itsuki Kuroda
 

Viewers also liked (6)

VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計VIPER アーキテクチャによる iOS アプリの設計
VIPER アーキテクチャによる iOS アプリの設計
 
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Springドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
 
スタートアップの戦略&ビジネスモデルの考え方
スタートアップの戦略&ビジネスモデルの考え方スタートアップの戦略&ビジネスモデルの考え方
スタートアップの戦略&ビジネスモデルの考え方
 
逆説のスタートアップ思考的「逆張りワークショップ」手順書
逆説のスタートアップ思考的「逆張りワークショップ」手順書逆説のスタートアップ思考的「逆張りワークショップ」手順書
逆説のスタートアップ思考的「逆張りワークショップ」手順書
 
リーンスタートアップにおける良い仮説、悪い仮説
リーンスタートアップにおける良い仮説、悪い仮説リーンスタートアップにおける良い仮説、悪い仮説
リーンスタートアップにおける良い仮説、悪い仮説
 
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創
社内スタートアップによる組織の成長に伴い発生する痛みとその解決策(スクラム&リーンスタートアップ導入)について #devlove #devlove創
 

Similar to MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」

iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 Eastirgaly
 
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revWindows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revShotaro Suzuki
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconDeNA
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」Hiroyuki Ohnaka
 
Android test tutorial
Android test tutorialAndroid test tutorial
Android test tutorialKazuaki Ueda
 
[DevSummit2013S]Android_Multi-Version_Multi-Device
[DevSummit2013S]Android_Multi-Version_Multi-Device[DevSummit2013S]Android_Multi-Version_Multi-Device
[DevSummit2013S]Android_Multi-Version_Multi-DeviceKenichi Kambara
 
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送Google Cloud Platform - Japan
 
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternMami Shiino
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツMasuda Tomoaki
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発Akira Inoue
 
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hackTry_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hackkimukou_26 Kimukou
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化Yukei Wachi
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向Tsutomu Ogasawara
 
Building Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVMBuilding Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVMShotaro Suzuki
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternAtsushi Kambara
 

Similar to MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」 (20)

iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 EastiOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
iOS の動画アプリ開発に Xamarin を使ってみた @JXUG #2 East
 
AndroidでDIxAOP
AndroidでDIxAOPAndroidでDIxAOP
AndroidでDIxAOP
 
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 revWindows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
Windows ストア lob アプリ開発のためのガイダンスとフレームワークのご紹介 rev
 
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechconアバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
アバター着せ替えアプリ開発におけるフロントエンド技術(Vue.js活用事例) #denatechcon
 
Vue入門
Vue入門Vue入門
Vue入門
 
MVVM入門
MVVM入門MVVM入門
MVVM入門
 
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
JavaOne 2015 報告会 @ 東京 「About MVC 1.0 & JSON-P」
 
Mvpvm pattern
Mvpvm patternMvpvm pattern
Mvpvm pattern
 
Android test tutorial
Android test tutorialAndroid test tutorial
Android test tutorial
 
[DevSummit2013S]Android_Multi-Version_Multi-Device
[DevSummit2013S]Android_Multi-Version_Multi-Device[DevSummit2013S]Android_Multi-Version_Multi-Device
[DevSummit2013S]Android_Multi-Version_Multi-Device
 
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
[Cloud OnAir] アプリケーションにフォーカス!ビジネスに直結する開発の極意をご紹介します。(e-Learning) 2018年3月15日 放送
 
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm patternRIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
RIAアーキテクチャー研究会 第3回 セッション4 Mvpvm pattern
 
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツXamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
 
jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発jQuery と MVC で実践する標準志向 Web 開発
jQuery と MVC で実践する標準志向 Web 開発
 
ScalaMatsuri 2016
ScalaMatsuri 2016ScalaMatsuri 2016
ScalaMatsuri 2016
 
Try_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hackTry_to_writecode_practicaltest #atest_hack
Try_to_writecode_practicaltest #atest_hack
 
テスト駆動開発の進化
テスト駆動開発の進化テスト駆動開発の進化
テスト駆動開発の進化
 
スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向スマートフォンアプリケーション開発の最新動向
スマートフォンアプリケーション開発の最新動向
 
Building Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVMBuilding Silverlight Large Scale Application Using MVVM
Building Silverlight Large Scale Application Using MVVM
 
Application Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD PatternApplication Architecture for Enterprise Win Store Apps with DDD Pattern
Application Architecture for Enterprise Win Store Apps with DDD Pattern
 

MVPパターンによる設計アプローチ「あなたのアプリ報連相できてますか」

Editor's Notes

  1. MVCパターンについては一度は耳にしたことがあるのではないでしょうか? MVCパターンと一口に言っても、様々な派生パターンがあって人それぞれ認識が違ったりします。 アプリをMVCで作れ!といわれても、実際はまらないしパターンの規則をいたるところで破ってMVCといっている意味がなくなる
  2. ビューがモデルを監視するものを「監視コントローラ」、 ビューがモデルを監視しないものを「パッシブ・ビュー」と呼んで区別することもある。