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
tomo_masakura
ODP, PPTX
22,293 views
MVC の Model を考える
MVC の Model を考える。Controller が太って困っている人向け。
Engineering
◦
Read more
7
Save
Share
Embed
Embed presentation
Download
Download as ODP, PPTX
1
/ 28
2
/ 28
Most read
3
/ 28
4
/ 28
5
/ 28
6
/ 28
7
/ 28
8
/ 28
9
/ 28
10
/ 28
11
/ 28
12
/ 28
13
/ 28
14
/ 28
15
/ 28
16
/ 28
17
/ 28
18
/ 28
19
/ 28
20
/ 28
Most read
21
/ 28
22
/ 28
23
/ 28
24
/ 28
25
/ 28
26
/ 28
27
/ 28
28
/ 28
Most read
More Related Content
KEY
やはりお前らのMVCは間違っている
by
Koichi Tanaka
PDF
あの日見たMVCを僕たちはまだ知らない for RoR
by
shinnosuke kugimiya
PDF
ブラック企業から学ぶMVCモデル
by
Yuta Hiroto
PDF
GUI アプリケーションにおける MVC
by
Yu Nobuoka
PDF
MvcのFatモデルに立ち向かう
by
Shun Hikita
PDF
ADRという考えを取り入れてみて
by
infinite_loop
PPTX
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
by
慎一 古賀
PDF
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
やはりお前らのMVCは間違っている
by
Koichi Tanaka
あの日見たMVCを僕たちはまだ知らない for RoR
by
shinnosuke kugimiya
ブラック企業から学ぶMVCモデル
by
Yuta Hiroto
GUI アプリケーションにおける MVC
by
Yu Nobuoka
MvcのFatモデルに立ち向かう
by
Shun Hikita
ADRという考えを取り入れてみて
by
infinite_loop
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
by
慎一 古賀
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
by
増田 亨
What's hot
PDF
オブジェクト指向できていますか?
by
Moriharu Ohzu
PDF
Tackling Complexity
by
Yoshitaka Kawashima
PDF
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
PDF
MySQLで論理削除と正しく付き合う方法
by
yoku0825
PDF
データベース設計徹底指南
by
Mikiya Okuno
PPTX
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
PDF
Marp for VS Code で作る PowerPoint スライド
by
Iosif Takakura
PDF
Webアプリを並行開発する際のマイグレーション戦略
by
Takayuki Shimizukawa
PDF
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
by
日本マイクロソフト株式会社
PDF
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
PDF
PostgreSQLアンチパターン
by
Soudai Sone
PDF
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
by
Ken Morishita
PDF
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
PDF
serviceクラスをやめようサブクラスを使おう
by
よしだ あつし
PPTX
MVCになぞらえて理解するReact
by
iPride Co., Ltd.
PDF
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
PDF
C#の強み、或いは何故PHPから乗り換えるのか
by
Yoshifumi Kawai
PDF
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
PDF
REST API のコツ
by
pospome
オブジェクト指向できていますか?
by
Moriharu Ohzu
Tackling Complexity
by
Yoshitaka Kawashima
オブジェクト指向プログラミングのためのモデリング入門
by
増田 亨
MySQLで論理削除と正しく付き合う方法
by
yoku0825
データベース設計徹底指南
by
Mikiya Okuno
世界一わかりやすいClean Architecture
by
Atsushi Nakamura
Marp for VS Code で作る PowerPoint スライド
by
Iosif Takakura
Webアプリを並行開発する際のマイグレーション戦略
by
Takayuki Shimizukawa
【BS4】時は来たれり。今こそ .NET 6 へ移行する時。
by
日本マイクロソフト株式会社
SpringBootTest入門
by
Yahoo!デベロッパーネットワーク
PostgreSQLアンチパターン
by
Soudai Sone
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
by
Ken Morishita
ドメイン駆動設計サンプルコードの徹底解説
by
増田 亨
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
by
Takuto Wada
serviceクラスをやめようサブクラスを使おう
by
よしだ あつし
MVCになぞらえて理解するReact
by
iPride Co., Ltd.
オブジェクト指向の設計と実装の学び方のコツ
by
増田 亨
C#の強み、或いは何故PHPから乗り換えるのか
by
Yoshifumi Kawai
デキるプログラマだけが知っているコードレビュー7つの秘訣
by
Masahiro Nishimi
REST API のコツ
by
pospome
Similar to MVC の Model を考える
PPTX
Mvc
by
Shutaro Anno
PPT
Spring mvc
by
Ryo Asai
PDF
人をだめにするMVCを求めて
by
meru_akimbo
PPT
T35 ASP.NET MVCを使ったTDD入門
by
normalian
PDF
TableViewAgent
by
Akura Pi
PDF
Slide
by
Akura Pi
PDF
ASP.NET MVC 2 ~新機能の紹介~
by
Yoshitaka Seo
PDF
Introduction for Browser Side MVC
by
Ryunosuke SATO
Mvc
by
Shutaro Anno
Spring mvc
by
Ryo Asai
人をだめにするMVCを求めて
by
meru_akimbo
T35 ASP.NET MVCを使ったTDD入門
by
normalian
TableViewAgent
by
Akura Pi
Slide
by
Akura Pi
ASP.NET MVC 2 ~新機能の紹介~
by
Yoshitaka Seo
Introduction for Browser Side MVC
by
Ryunosuke SATO
More from tomo_masakura
ODP
アダプターパターンを使って リリースブランチを排除
by
tomo_masakura
ODP
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
by
tomo_masakura
ODP
HTML5 開発環境の紹介
by
tomo_masakura
ODP
HTML5 アプリ開発
by
tomo_masakura
ODP
HTML5 のお話
by
tomo_masakura
ODP
Git トピックブランチと歴史の改ざん
by
tomo_masakura
ODP
今流行りのウェブアプリ開発環境Yeoman
by
tomo_masakura
アダプターパターンを使って リリースブランチを排除
by
tomo_masakura
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
by
tomo_masakura
HTML5 開発環境の紹介
by
tomo_masakura
HTML5 アプリ開発
by
tomo_masakura
HTML5 のお話
by
tomo_masakura
Git トピックブランチと歴史の改ざん
by
tomo_masakura
今流行りのウェブアプリ開発環境Yeoman
by
tomo_masakura
MVC の Model を考える
1.
MVC の Model について 考える codeArts
(株) 政倉 智
2.
MVC ってこんなの ModelModel ControllerController ViewView
3.
でも、こんなんなってません? ModelModel ControllerController ViewView
4.
Controller が太るんです ● MVC
って変更に強いはずなのに、なんかうまくいかない! ちょこっとしたことですぐ動かなくなる! ● こういう時はだいたい Controller にコードが集中していて 太っている時
5.
MVC と三層アーキテクチャの対比 ModelModel ControllerController ViewView データ層 ドメイン層 プレゼンテーション層
6.
Model はドメイン層 ● MVC
の Model はドメイン層 (ビジネスロジック) にあたる ● Controller が太るのは、このドメイン層のコードを Controller に書いているから!
7.
なんでそうなるのか? ● だって MVC
のチュートリアルがそうだもの! ● Model をデータストアにして処理は Controller に書かれて る
8.
なぜ Controller に書くとダメなの? ●
そもそもなぜ Controller に書いてはいけないのか
9.
MVC はだいたいこんな感じ ● 基本的に
Controller は View の設計に引きずられる ● Model はアプリの機能に引きずられる View A View B Controller A Controller B Model
10.
Controller にビジネスロジックを書 く ● ドメイン層
(ビジネスロジック) を Controller に書くとこ んな感じになる View A View B Controller A Controller B Model ビジネスロジック
11.
View A が必要なくなった! ●
View A が必要なくなったとする View A View B Controller A Controller B Model ビジネスロジック
12.
あっ! ● 連鎖的に Controller
A が要らなくなるけど、ビジネスロ ジックまで消えちゃう! View A View B Controller A Controller B Model ビジネスロジック
13.
しくしく... ● ビジネスロジックを Controller
B に移動するはめに... ● ちなみにこれ、テストコードも同時なので最悪のパター ン! View A View B Controller A Controller B Model ビジネスロジック ビジネスロジック
14.
Model に書いておけば ● Model
にビジネスロジックを書くと良いよ View A View B Controller A Controller B Model ビジネスロジック
15.
View A を消しても大丈夫 ●
View A を消しても大して影響がない ● 少なくとも View B には一切影響がないね! View A View B Controller A Controller B Model ビジネスロジック
16.
ビジネスロジックは Model に! ●
というわけでビジネスロジックは Model に書きましょう ● AngularJS の場合は Factory という便利なものがあって、 それを使いましょう
17.
Model がでかくなるだけじゃ? ModelModel ControllerController ViewView
18.
実際そうなんです ● 今度は Model
がでかくなってひーひー言います ● でも、Controller が太るよりマシです ● なぜマシかというと、Model は Controller と違って View の変更の余波を受けにくいからです
19.
小さく分割しましょう ● Model という一つのオブジェクトに色々させるのではな く、役割ごとに分割しましょう ●
Controller から見て Model が一つのオブジェクトに見えれ ば OK! その向こうにたくさんのオブジェクトがあっても 問題ない
20.
例) キャッシュ ● サーバーから
JSON データをも らって表示するだけの簡単なア プリ ● まずはキャッシュしないのを サッと作る ● View は割愛 Controller Model BaaS
21.
例) キャッシュ ● キャッシュ機能をつけてみる ●
肝はもともとある Model に キャッシュ機能をつけようとし ないこと ● まずは Model を BaaS に接続す るものと、それを呼び出す二つ に分ける Controller Model BaaS BaaS Client
22.
例) キャッシュ ● BaaS
Client と同じ API を持つ Cache System を作る ● BaaS Client と Model の間に Cache System を挿入する ● Controller から直接見える Model が変わっていないのがミ ソ ● ほとんどのコードは追加なの で、とても楽 Controller Model BaaS BaaS Client (Model) Cache
23.
例) 新着通知 ● Facebook
とかの新着通知です ● 投稿だったり、チャットだったり、いろいろあります 投稿 (Model) チャット (Model) 新着 (Controllerl) チャット (Controllerl)
24.
例) 新着通知 ● よく考えたら新着通知って何箇所かあったりするよね! ●
数付き数値アイコンと新着リストみたいな感じの 投稿 (Model) チャット (Model) 新着数表示 (Controllerl) 新着リスト表示 (Controllerl) チャット (Controllerl)
25.
例) 新着通知 ● 見ての通り似たような処理が
Controller に書かれている ● これがまた変更に弱くする 投稿 (Model) チャット (Model) 新着数表示 (Controllerl) 新着リスト表示 (Controllerl) 新着を抽出する 新着を抽出する チャット (Controllerl)
26.
例) 新着通知 ● こんな感じに新着情報を扱う
Model を作ると楽になる 投稿 (Model) チャット (Model) 新着数表示 (Controllerl) 新着リスト表示 (Controllerl) 新着 (Model) チャット (Controllerl)
27.
MVC の役割 ● Model/View/Controller
という役割のクラスがあるのではない ● クラスが Model/View/Controller のいずれかに分類される ● Controller がたくさんの Model を扱うとかはあんまよくない ● Model や Controller が複数のクラスから構成されていても全く問題 ない ● AngularJS で .controller で宣言したものだけが Controller っていう わけじゃないよ! ● Backbone.js で Backbone.Model を継承した型だけが Model ってい うわけじゃないよ!
28.
まとめ ● MVC のチュートリアルに惑わされないようにしよう! ●
MVC Framework の使い方よりも MVC の利点を理解しよ う! ● MVC Framework は大枠を提供するためのもの、その大枠 の中でさらにクラスを分割していくのはプログラマーのお 仕事 ● 余談だけど、似非 MVC で書くと、最悪は MVC Framework なんてない方が良かったんだ! ってなることも あるよ!
Download