Successfully reported this slideshow.

More Related Content

Related Audiobooks

Free with a 14 day trial from Scribd

See all

Mvcのすすめ

  1. 1. MVCのすすめ @akuraru
  2. 2. 今回の目的 • バグを減らしたい • テストがしたい • テストの仕方がわからない • テストしやすい構造で作る
  3. 3. アクティビティ レイアウト 画面
  4. 4. ありがちのこと • レイアウトを作る • とりあえずアクティビティに実装する • さらにアクティビティに実装する • できたバンザイ • MVCなにそれ!?
  5. 5. テストできない • 操作→情報処理→状態変化→表示 テストできる • 情報処理 • 情報処理→状態変化
  6. 6. アクティビティ レイアウト 画面
  7. 7. ←テストできる モデル アクティビティ レイアウト 画面
  8. 8. MVC • Model-View-Controllerの略 • モデルからプレゼンテーションの分離 • ビューとコントローラーの分離
  9. 9. モデルからプレゼンテーションの分離 テストしやすい部分 と テストしにくい部分
  10. 10. テストしやすい部分 • 単純な変換 (文字列処理とか) • DBアクセス • 状態変化
  11. 11. テストしにくい部分 • 見た目 • ボタンを押す • 画面遷移 • 機種依存
  12. 12. ビューとコントローラーの分離 見た目 と 操作
  13. 13. 見た目 • ボタン • 画像 • テキスト • その他いろいろ
  14. 14. 操作 • テキストを入力→文字列処理 • ボタンを押す→状態が変わる • セーブボタン→DBアクセス
  15. 15. テストしやすい テストしにくい 操作 見た目
  16. 16. Model プレゼンテーション Controller View
  17. 17. Model 操作 状態参照 通知 プレゼンテーション Controller 変更 View 入力・操作 表示 ユーザー
  18. 18. 今回は ViewとControllerの分離を がんばらない
  19. 19. 分離しても テストしやすくならないし
  20. 20. Model 操作 状態参照 通知 プレゼンテーション Controller 変更 View 入力・操作 表示 ユーザー
  21. 21. Model 操作 状態参照 プレゼンテーション 入力・操作 表示 ユーザー
  22. 22. モデル アクティビティ レイアウト 画面
  23. 23. 今まで インテント インテント アクティビティ アクティビティ アクティビティ レイアウト レイアウト レイアウト
  24. 24. DB 一時保存 インテント インテント アクティビティ アクティビティ アクティビティ レイアウト レイアウト レイアウト
  25. 25. DB 一時保存 テストできる ↑ インテント インテント アクティビティ ↓ アクティビティ アクティビティ テストできない レイアウト レイアウト レイアウト
  26. 26. DB 一時保存 モデル モデル モデル インテント インテント アクティビティ アクティビティ アクティビティ レイアウト レイアウト レイアウト
  27. 27. Model • DBアクセス • 状態を持つ • 情報処理 • CUIでもGUIでも同じものを使えるようにしようと書いてあるけど, テストしやすければよい
  28. 28. プレゼンテーション • 操作 • →モデルに通知 • →必要に応じて遷移 • →モデルに状態に応じて再描画
  29. 29. まとめ • アクティビティにすべてを書かない • テストしやすい構造を意識する • できたらViewとControllerを分けて考え る

×