Submit Search
serviceクラスをやめようサブクラスを使おう
4 likes
12,695 views
よしだ あつし
https://ginza-rails.connpass.com/event/152498/ の発表資料です。
Engineering
Read more
1 of 26
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Most read
23
Most read
24
25
Most read
26
More Related Content
ODP
MVC の Model を考える
tomo_masakura
PDF
PHPで大規模ブラウザゲームを開発してわかったこと
Kentaro Matsui
PPTX
Redisの特徴と活用方法について
Yuji Otani
PDF
MongoDB〜その性質と利用場面〜
Naruhiko Ogasawara
PPTX
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
PDF
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
PDF
GUI アプリケーションにおける MVC
Yu Nobuoka
PDF
C#でわかる こわくないMonad
Kouji Matsui
MVC の Model を考える
tomo_masakura
PHPで大規模ブラウザゲームを開発してわかったこと
Kentaro Matsui
Redisの特徴と活用方法について
Yuji Otani
MongoDB〜その性質と利用場面〜
Naruhiko Ogasawara
初心者向けMongoDBのキホン!
Tetsutaro Watanabe
Docker Compose入門~今日から始めるComposeの初歩からswarm mode対応まで
Masahito Zembutsu
GUI アプリケーションにおける MVC
Yu Nobuoka
C#でわかる こわくないMonad
Kouji Matsui
What's hot
(20)
PDF
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
PDF
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
PDF
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
PDF
イミュータブルデータモデルの極意
Yoshitaka Kawashima
PDF
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
PPTX
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
PDF
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato
PDF
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
PPTX
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
PDF
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
PDF
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
KEY
やはりお前らのMVCは間違っている
Koichi Tanaka
PDF
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
ODP
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
PDF
async/awaitダークサイド is 何
Kouji Matsui
PDF
例外設計における大罪
Takuto Wada
PDF
Ormとの付き合い方
豊明 尾古
PDF
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
PDF
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
PDF
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
マルチテナントのアプリケーション実装〜実践編〜
Yoshiki Nakagawa
ドメイン駆動設計に15年取り組んでわかったこと
増田 亨
イミュータブルデータモデルの極意
Yoshitaka Kawashima
Test Yourself - テストを書くと何がどう変わるか
Takuto Wada
MongoDBが遅いときの切り分け方法
Tetsutaro Watanabe
Node.js Native ESM への道 〜最終章: Babel / TypeScript Modules との闘い〜
Teppei Sato
SQL大量発行処理をいかにして高速化するか
Shogo Wakayama
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
NTT DATA Technology & Innovation
Javaはどのように動くのか~スライドでわかるJVMの仕組み
Chihiro Ito
O/Rマッパーによるトラブルを未然に防ぐ
kwatch
やはりお前らのMVCは間違っている
Koichi Tanaka
SQLアンチパターン 幻の第26章「とりあえず削除フラグ」
Takuto Wada
Goのサーバサイド実装におけるレイヤ設計とレイヤ内実装について考える
pospome
async/awaitダークサイド is 何
Kouji Matsui
例外設計における大罪
Takuto Wada
Ormとの付き合い方
豊明 尾古
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
継承やめろマジやめろ。 なぜイケないのか 解説する
TaishiYamada1
プログラムの処方箋~健康なコードと病んだコード
Shigenori Sagawa
Ad
More from よしだ あつし
(20)
PDF
ruby で書く 脆弱なコード
よしだ あつし
PDF
CTOのおしごと
よしだ あつし
PDF
Selfを考える
よしだ あつし
PDF
Railsにコントリビュートしてきました
よしだ あつし
PDF
Rubyコードの最適化
よしだ あつし
PPTX
低レイヤから見たrubyプログラミング
よしだ あつし
PDF
まじょのおしごとの裏側
よしだ あつし
PDF
僕が勉強をする モチベーションと勉強法
よしだ あつし
PDF
Dockerプレゼン
よしだ あつし
PDF
Vue.js ハンズオン資料
よしだ あつし
PDF
よい名前を付けましょう リーダブルなんたらとか
よしだ あつし
PDF
Gitの使い方あれこれ
よしだ あつし
PDF
私はいかにしてpull request を行ったか - あるいは social development について
よしだ あつし
PDF
15分でできるSQLインジェクション
よしだ あつし
PDF
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
PDF
テスト駆動開発入門
よしだ あつし
PDF
Railsの今昔
よしだ あつし
PDF
デバッガでデバッグしない
よしだ あつし
ODP
Rails3使用雑感
よしだ あつし
ODP
Twitterでネットストーカーをしよう
よしだ あつし
ruby で書く 脆弱なコード
よしだ あつし
CTOのおしごと
よしだ あつし
Selfを考える
よしだ あつし
Railsにコントリビュートしてきました
よしだ あつし
Rubyコードの最適化
よしだ あつし
低レイヤから見たrubyプログラミング
よしだ あつし
まじょのおしごとの裏側
よしだ あつし
僕が勉強をする モチベーションと勉強法
よしだ あつし
Dockerプレゼン
よしだ あつし
Vue.js ハンズオン資料
よしだ あつし
よい名前を付けましょう リーダブルなんたらとか
よしだ あつし
Gitの使い方あれこれ
よしだ あつし
私はいかにしてpull request を行ったか - あるいは social development について
よしだ あつし
15分でできるSQLインジェクション
よしだ あつし
Next GAE Heroku を使って 3分でRailsアプリをリリース
よしだ あつし
テスト駆動開発入門
よしだ あつし
Railsの今昔
よしだ あつし
デバッガでデバッグしない
よしだ あつし
Rails3使用雑感
よしだ あつし
Twitterでネットストーカーをしよう
よしだ あつし
Ad
serviceクラスをやめようサブクラスを使おう
1.
serviceクラスをやめよう サブクラスを使おう よしだあつし@銀座Rails#15
2.
2 名前: よしだあつし SNS: @yalab 職業:
株式会社ジラフ CTO Ruby歴: since 1.6 Rails歴: since 0.8 趣味: 料理 自己紹介
3.
3 ジラフ社が運営しているサービス ヒカカク peing-質問箱 トレカ専用フリマアプリ
magi
4.
4 service クラスとは何か?
5.
5 わかりません
6.
6 service クラス ● PoEAA ●
DDD ● トランザクションスクリプト ● Decorator ● Command ● static メソッド
7.
7 曖昧な定義
8.
8 要は使いどころだよね
9.
9 要は使いどころだよね ダメ絶対
10.
10 MVC
11.
11 MVC M: ビジネスロジック V: 見た目 C:
ユーザーからの入力をモデルに伝える
12.
12 責務から考える
13.
13 MVCの責務 M: データの一貫性 V: 出力されたデータの整形 C:
データの入出力
14.
14 service クラスの責務?
15.
15 service クラスの責務? ● トランザクションスクリプトは
Model の役目とかぶる ● デコレーターパターンは view とかぶる
16.
16 そもそもなぜ我々は service クラスを使うよ うになったのか?
17.
17 声の大きい人 fat model
をなんとかするため
18.
18 model を分割して責任範囲を限定したい
19.
19 service クラスにするのって おかしくない?
20.
20 ということで吉田からの提案
21.
21 fat model を
サブクラスに分割する
22.
22 例) User ● 管理者は全てのデータを書き換えられる ●
ユーザー自身の生年月日は create 時だけ ● プレミアムユーザーと一般ユーザーがいる
23.
23 controller が分かれてる事は多い class Admin::Users
< ApplicationController end class Users < ApplicationController end class Me::Users < ApplicationController end
24.
24 model を責任範囲ごとに作る class User
< ApplicationController validates :birthday, presence: true end class User::General < User attr_readonly :birthday end
25.
25 まとめ(今回言いたかったこと) ● Service クラス止めろ ●
責務からコードの振る舞いを定義しましょう ● fat model 対策の一例としてサブクラスに分割す るとわりと上手くワークする ● 声が大きい人が言うからといって鵜呑みにしない
26.
26 ご清聴ありがとうございました。
Download