Enviar pesquisa
Carregar
MVC の Model を考える
•
Transferir como ODP, PDF
•
7 gostaram
•
21,655 visualizações
T
tomo_masakura
Seguir
MVC の Model を考える。Controller が太って困っている人向け。
Leia menos
Leia mais
Engenharia
Denunciar
Compartilhar
Denunciar
Compartilhar
1 de 28
Baixar agora
Recomendados
ブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデル
Yuta Hiroto
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
Shun Hikita
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
Hiroshi Maekawa
serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おう
よしだ あつし
Recomendados
ブラック企業から学ぶMVCモデル
ブラック企業から学ぶMVCモデル
Yuta Hiroto
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
shinnosuke kugimiya
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
Koichi Tanaka
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
Yu Nobuoka
MvcのFatモデルに立ち向かう
MvcのFatモデルに立ち向かう
Shun Hikita
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
塹壕よりLivetとMVVM
塹壕よりLivetとMVVM
Hiroshi Maekawa
serviceクラスをやめようサブクラスを使おう
serviceクラスをやめようサブクラスを使おう
よしだ あつし
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
例外設計における大罪
例外設計における大罪
Takuto Wada
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
Sho Okada
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
ゲームエンジンとMVC
ゲームエンジンとMVC
AimingStudy
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
3層アーキテクチャとMVCモデル -LaravelにおけるMVCモデルの流れ-
3層アーキテクチャとMVCモデル -LaravelにおけるMVCモデルの流れ-
yoshitaro yoyo
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
MVCのつぎは・・・
MVCのつぎは・・・
Net Penguin
Mais conteúdo relacionado
Mais procurados
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
Ken Morishita
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
慎一 古賀
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
増田 亨
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
増田 亨
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
例外設計における大罪
例外設計における大罪
Takuto Wada
オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
Sho Okada
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
pospome
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
増田 亨
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Shuto Suzuki
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
ゲームエンジンとMVC
ゲームエンジンとMVC
AimingStudy
データベース設計徹底指南
データベース設計徹底指南
Mikiya Okuno
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
Koichiro Matsuoka
3層アーキテクチャとMVCモデル -LaravelにおけるMVCモデルの流れ-
3層アーキテクチャとMVCモデル -LaravelにおけるMVCモデルの流れ-
yoshitaro yoyo
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
増田 亨
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
Masatoshi Tada
ドメイン駆動設計入門
ドメイン駆動設計入門
増田 亨
Mais procurados
(20)
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
iOS/Androidアプリエンジニアが理解すべき「Model」の振る舞い
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメインロジックに集中せよ 〜ドメイン駆動設計 powered by Spring
ドメイン駆動設計 ( DDD ) をやってみよう
ドメイン駆動設計 ( DDD ) をやってみよう
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
例外設計における大罪
例外設計における大罪
オブジェクト指向できていますか?
オブジェクト指向できていますか?
WPF開発での陥りやすい罠
WPF開発での陥りやすい罠
トランザクションスクリプトのすすめ
トランザクションスクリプトのすすめ
オブジェクト指向の設計と実装の学び方のコツ
オブジェクト指向の設計と実装の学び方のコツ
Cognitive Complexity でコードの複雑さを定量的に計測しよう
Cognitive Complexity でコードの複雑さを定量的に計測しよう
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
ゲームエンジンとMVC
ゲームエンジンとMVC
データベース設計徹底指南
データベース設計徹底指南
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
DDDのモデリングとは何なのか、 そしてどうコードに落とすのか
3層アーキテクチャとMVCモデル -LaravelにおけるMVCモデルの流れ-
3層アーキテクチャとMVCモデル -LaravelにおけるMVCモデルの流れ-
オブジェクト指向プログラミングのためのモデリング入門
オブジェクト指向プログラミングのためのモデリング入門
Java ORマッパー選定のポイント #jsug
Java ORマッパー選定のポイント #jsug
ドメイン駆動設計入門
ドメイン駆動設計入門
Semelhante a MVC の Model を考える
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
normalian
MVCのつぎは・・・
MVCのつぎは・・・
Net Penguin
MVCになぞらえて理解するReact
MVCになぞらえて理解するReact
iPride Co., Ltd.
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
Yoshitaka Seo
20130316 mix cpp-yuo
20130316 mix cpp-yuo
OKUBO_Yusuke
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
Kazuki Shibata
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
Yoshitaka Seo
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
Tomoki Maeda
SpringBoot開発の基本
SpringBoot開発の基本
iPride Co., Ltd.
はじめての ASP.NET MVC
はじめての ASP.NET MVC
jz5 MATSUE
Separate Model from Catalyst
Separate Model from Catalyst
techmemo
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
david9142
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門
Masuda Tomoaki
Slide
Slide
Akura Pi
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
Akira Inoue
TableViewAgent
TableViewAgent
Akura Pi
Fuel php勉強会 1
Fuel php勉強会 1
Kazuya Igari
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
Hironori Miura
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
Masuda Tomoaki
MVVM入門
MVVM入門
Kazutoshi Urabe
Semelhante a MVC の Model を考える
(20)
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
MVCのつぎは・・・
MVCのつぎは・・・
MVCになぞらえて理解するReact
MVCになぞらえて理解するReact
Asp Net Mvc 基礎のキソ
Asp Net Mvc 基礎のキソ
20130316 mix cpp-yuo
20130316 mix cpp-yuo
MVCフレームワークとの付き合い方
MVCフレームワークとの付き合い方
ASP.NET MVC 2 ~新機能の紹介~
ASP.NET MVC 2 ~新機能の紹介~
090821 Ruby Sapporo Night Ruby Cocoa
090821 Ruby Sapporo Night Ruby Cocoa
SpringBoot開発の基本
SpringBoot開発の基本
はじめての ASP.NET MVC
はじめての ASP.NET MVC
Separate Model from Catalyst
Separate Model from Catalyst
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
[公開用]Netラボ2012年2月勉強会 asp.netmvc4 beta新機能の紹介
ASP.NET MVC プログラミング入門の入門
ASP.NET MVC プログラミング入門の入門
Slide
Slide
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
TableViewAgent
TableViewAgent
Fuel php勉強会 1
Fuel php勉強会 1
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
理論から学ぶデータベース実践入門Night(mvccでちょっとハマった話)
Xamarin.formsでのmvvm利用のコツ
Xamarin.formsでのmvvm利用のコツ
MVVM入門
MVVM入門
Mais de tomo_masakura
アダプターパターンを使って リリースブランチを排除
アダプターパターンを使って リリースブランチを排除
tomo_masakura
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
tomo_masakura
HTML5 開発環境の紹介
HTML5 開発環境の紹介
tomo_masakura
HTML5 アプリ開発
HTML5 アプリ開発
tomo_masakura
HTML5 のお話
HTML5 のお話
tomo_masakura
Git トピックブランチと歴史の改ざん
Git トピックブランチと歴史の改ざん
tomo_masakura
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
tomo_masakura
Mais de tomo_masakura
(7)
アダプターパターンを使って リリースブランチを排除
アダプターパターンを使って リリースブランチを排除
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
Strategy パターンと開放/閉鎖原則に見るデザインパターンの有用性
HTML5 開発環境の紹介
HTML5 開発環境の紹介
HTML5 アプリ開発
HTML5 アプリ開発
HTML5 のお話
HTML5 のお話
Git トピックブランチと歴史の改ざん
Git トピックブランチと歴史の改ざん
今流行りのウェブアプリ開発環境Yeoman
今流行りのウェブアプリ開発環境Yeoman
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 なんてない方が良かったんだ! ってなることも あるよ!
Baixar agora