Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
日本語: Skinny Controllers, Skinny Models #m3dev
Search
Kazuhiro Sera
July 05, 2013
Technology
1
170
日本語: Skinny Controllers, Skinny Models #m3dev
7 つの実装パターンと Code Climate を使った実際のリファクタリング実践の紹介です。
Kazuhiro Sera
July 05, 2013
Tweet
Share
More Decks by Kazuhiro Sera
See All by Kazuhiro Sera
5 tips to build long-lasting Scala OSS (cont’d)
seratch
0
120
5 tips to build long-lasting Scala OSS
seratch
1
180
ScalikeJDBC / Skinny ORM Beginners' Guide
seratch
5
130k
All I learned while working on a Scala OSS project for over six years #ScalaMatsuri
seratch
1
890
What I learned by creating 'Scala on Rails' #trbmeetup
seratch
0
190
Scala on Rails @ Scalae by the Bay 2016 #scalae
seratch
1
1.1k
Contributing to Scala OSS from East Asia #ScalaMatsuri
seratch
0
1.2k
Skinny 2 Update
seratch
0
120
Future on Servlet #scala_ks
seratch
0
540
Other Decks in Technology
See All in Technology
登壇ネタの見つけ方 / How to find talk topics
pinkumohikan
3
330
Oracle Audit Vault and Database Firewall 20 概要
oracle4engineer
PRO
3
1.7k
LinkX_GitHubを基点にした_AI時代のプロジェクトマネジメント.pdf
iotcomjpadmin
0
160
生成AIでwebアプリケーションを作ってみた
tajimon
2
140
Snowflake Summit 2025 データエンジニアリング関連新機能紹介 / Snowflake Summit 2025 What's New about Data Engineering
tiltmax3
0
280
SalesforceArchitectGroupOsaka#20_CNX'25_Report
atomica7sei
0
110
Microsoft Build 2025 技術/製品動向 for Microsoft Startup Tech Community
torumakabe
2
230
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
2
240
OAuth/OpenID Connectで実現するMCPのセキュアなアクセス管理
kuralab
5
930
AWS Summit Japan 2025 Community Stage - App workflow automation by AWS Step Functions
matsuihidetoshi
1
170
Абьюзим random_bytes(). Фёдор Кулаков, разработчик Lamoda Tech
lamodatech
0
310
Oracle Cloud Infrastructure:2025年6月度サービス・アップデート
oracle4engineer
PRO
2
160
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
2.8k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
44
2.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Statistics for Hackers
jakevdp
799
220k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
181
53k
A Modern Web Designer's Workflow
chriscoyier
693
190k
The Art of Programming - Codeland 2020
erikaheidi
54
13k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Transcript
4LJOOZ$POUSPMMFST 4LJOOZ.PEFMT .5FDI5BMLNEFW ,B[VIJSP4FSB!TFSBUDI
3VCZ,BJHJ • -5͠·ͨ͠ʢSTQFDLJDLTUBSUFSʣ • ੮ʹͬͨΒ(FNpMFʹՃʂ • ࠓl3FGBDUPSJOH'BU.PEFMTXJUI 1BUUFSOTzͱ͍͏ߨԋͷ༰ͱͦͷ࣮ફʹ ͍ͭͯհ͠·͢ •
ڵຯΛ࣋ͬͨํɺಈը͕ެ։͞Ε͍ͯΔ ͷͰޙͰ؍ͯΈ͍ͯͩ͘͞ IUUQTWJNFPDPN
None
!CSZOBSZ • #SZBO)FMNLBNQ • $PEF$MJNBUFۀऀ • ސ٬ͷ3VCZίʔυΛղੳ࣭ͯ͠ɾη ΩϡϦςΟվળΛࢧԉ͢ΔαʔϏε • 044ͳΒແྉɺҎԼ(JTUVCͷྫ
• IUUQTDPEFDMJNBUFDPNHJUIVC TFSBUDIHJTUVC
$PEF$MJNBUF3BUJOH
$PEF$MJNBUF$PEF4NFMM
$PEF$MJNBUF$MBTTFT
ϒϩάΤϯτϦ • 1BUUFSOTUP3FGBDUPS'BU"DUJWF3FDPSE .PEFMT • IUUQCMPHDPEFDMJNBUFDPNCMPH XBZTUPEFDPNQPTFGBU BDUJWFSFDPSENPEFMT • ͞Βʹվળ͞ΕͨίʔυྫΛ(JU)VCͰެ։
͍ͯ͠Δʢ3VCZ,BJHJͰͷൃදͰ༻ʣ • IUUQTHJUIVCDPNDPEFDMJNBUF SFGBDUPSJOHGBUNPEFMT
3BJMT"DUJWF3FDPSE • 1SPγϯϓϧ͞ • $PO%#ͷςʔϒϧͱΛڧ͍ΒΕΔ
3BJMTΞϓϦͰͷࣦഊྫ • దʹσβΠϯ͞ΕͨΦϒδΣΫτࢦͷ ίʔυϥϏΦϦʹྫ͑ΒΕΔ • ࣌ંɺΧϧκʔωΈ͍ͨʹҰΧॴʹ٧Ίࠐ Μͩ3BJMTίʔυΛݟ͔͚Δɾɾ
4LJOOZ.PEFMT • 'BU.PEFMTͱΑ͘ݴΘΕΔ͕.PEFM 4LJOOZͰ͋Δ͖ͳΜͰʁ
'BU.PEFMTͱͷઓ͍ • $POUSPMMFS͕ංେԽ͢ΔΑΓϚγʁ • طଘͷ"3 "DUJWF3FDPSE NPEFMʹ Λ͍࣋ͨͤͯ͘ͱͲΜͲΜංେԽ • ࠷ѱͷέʔεਆΦϒδΣΫτ͕ੜ
• !CSZOBSZɺఆ൪ͷ࣮ύλʔϯΛ͏· ͘3BJMTͷNPEFMͷϦϑΝΫλϦϯάʹ ద༻͢Δํ๏ΛఏҊ͍ͯ͠Δ
Ξϯνύλʔϯ • ͨͩ͠ɺ҆қʹNJYJOͱͯ͠NPEVMFʹ Γग़͢ͷΞϯνύλʔϯ • NJYJOܗΛม͑ͨܧঝ • ͕Βͨ͘ΛಥͬࠐΉҾ͖ग़͠ʢίʔυΛ NPEVMFʹҠͯ͠JODMVEF͢Δ͚ͩʣ •
ͨ͘͞ΜNJYJO͞ΕͨDMBTTͩͱͲΜͳ ΦϒδΣΫτ͔Ѳ͢Δͷ͕େมʹͳΔ
ͭͷ࣮ύλʔϯ • 7BMVF0CKFDUT • 4FSWJDF0CKFDUT • 'PSN0CKFDUT • 2VFSZ0CKFDUT •
7JFX0CKFDUT • 1PMJDZ0CKFDUT • %FDPSBUPST
7BMVF0CKFDUT • ͓ͳ͡Έ7BMVF0CKFDU • JNNVUBCMFͳΛอ࣋͢ΔΫϥε • อ࣋͢ΔʹΑͬͯൺֱՄೳ • ԿΒ͔ͷϩδοΫΛ࣋ͭBUUSJCVUFʢ·ͨ ͦͷখ͞ͳू߹ʣ͕ద͍ͯ͠Δ
• ۩ମྫɿ1IPOF/VNCFSɺ.POFZɺ 3BUJOHͳͲ
4FSWJDF0CKFDUT • ෳͷNPEFMΛར༻͢Δ߹ • ֎෦ͷαʔϏεɺ"1*ͱ࿈ܞ͢Δ߹ • ෳࡶͳϩδοΫΛ࣮͢Δ߹ • طଘͷNPEFMͷओͨΔͰͳ͍߹ •
4USBUFHZύλʔϯΛద༻͍ͨ͠߹ • ී௨"DUJWF.PEFMͰͳ͍
'PSN0CKFDUT • ҰͭͷϑΥʔϜͰෳͷ"3NPEFMΛߋ ৽͍ͨ͠߹ʹ༗ޮ • "DUJWF.PEFMʹ͢Δ • 'PSNͷTBWFͷ෦Ͱෳͷ"3NPEFM ͷTBWFΛݺͼग़͢ •
ඪ४ͷBDDFQUT@OFTUFE@BUUSJCVUFT@GPS !CSZOBSZతʹඇਪ • ෳࡶʹͳͬͨΒӬଓԽॲཧΛ4FSWJDFʹ
2VFSZ0CKFDUT • όον༻PSෳࡶͳ݅ͷ42-Λ"3ͷ TDPQFΫϥεϝιουʹͤͣ2VFSZ 0CKFDUͱͯ͠ • ॳظԽ࣌ʹ"33FMBUJPOΦϒδΣΫτΛ ͢Α͏ʹ͢Δͱ߹ՄೳʹͳΔ • 5SJBM2VFSZOFX
"DDPVOUXIFSF ʜ pO E@FBDIEPcFcʜFOE
7JFX0CKFDUT • 7JFXͷͨΊͷϩδοΫΛ"3NPEFMʹ ॻ͔ͳ͍ʢΤϥʔϝοηʔδੜͳͲʣ • "3NPEFMΛอ࣋͢ΔΫϥεΛఆٛ͠ SFOEFSʹͪ͜ΒΛ͢Α͏ʹ͢Δ • IFMQFSʹ"3NPEFMΛ࣮͢ΑΓɺ ϦϑΝΫλϦϯά͕ଅਐ͞ΕΔ
• ଟ༷ͳ6*ʹରԠ͢Δ߹ʹ༗ޮ
1PMJDZ0CKFDUT • "3NPEFMΛࢀর͢Δ͕ओͨΔυϝΠ ϯͰͳ͍ϩδοΫʢੳͷͨΊͷఆ ͳͲʣΛ͢Δ • ྫɿϝʔϧ৴ରʁΞΫςΟϒϢʔβʁ • "3NPEFMΛอ࣋͢ΔΫϥεͱͯ͠ఆٛ •
ଞͱͷҧ͍ɿ1PMJDZSFBEͳॲཧ͚ͩ 4FSWJDFXSJUFؚΉɺ2VFSZ42- ࣮ߦͱSFTVMUTFUΛZJFMEʹ͚ͩ͢
%FDPSBUPST • %FDPSBUPSύλʔϯΛద༻ͯ͠DBMMCBDL ࠈΛճආ͢Δ • ྫɿTBWFϝιουΛचͭͳ͗ʹ͢Δ ʢ"3ͷ0SEFSTBWFͰPSEFSTςʔϒϧ ʹJOTFSU%)8ʹ௨डྃ ϝʔϧΛૹ৴ʣ
࣮ફͯ͠Έͨ • ࣮ࡍʹύλʔϯΛͬͯ(JTUVCͷϦϑΝ ΫλϦϯάΛͯ͠Έͨ
ύλʔϯΛ࣮ફ͢Δલ
ύλʔϯΛ࣮ફͨ͠ޙ
ͬͨ͜ͱ • ͬͨύλʔϯ4FSWJDF0CKFDUT͚ͩ • ୯ʹ$POUSPMMFS͔Β4FSWJDFʹΓग़͠ ͚ͨͩͩͱɺࠓͦͷ৽͍͠4FSWJDF ͷείΞ͕ѱ͔ͬͨʢͨΓલʣ • ෳࡶͷߴ͗͢ΔϝιουΛ໊લΛ͚ ΒΕΔ୯Ґʹׂ
• ίʔυͷॏෳΛڞ௨Խ
վળͷաఔ
ࠓ͔Βग़དྷΔ͜ͱ • తʹ"3ͷΫϥεϝιουʹ͠ͳ͍ • "3Ͱͳ͍ϞσϧͲΜͲΜͭ͘Δ • $POUSPMMFSʹ"3NPEFMݺͼग़͠Λζϥ ζϥॻ͘ΑΓ4FSWJDFʹ͢Δ • ෳࡶͳϑΥʔϜ'PSNΛಋೖ͢Δ
• "3ʹදࣔ༻ϩδοΫΛ࣋ͨͣ7JFX 0CKFDUͰϥοϓͯ͠දࣔॲཧʹ͢
·ͱΊ • طʹ࣮ફ͞Ε͍ͯΔͷଟ͍͕ɺύλʔ ϯʹ໊લ͕͍ͭͯݴޠԽ͞ΕΔ͜ͱେࣄ • ࠷ॳγϯϓϧͰΑ͍ʢύλʔϯͷΓ͢ ͗PWFSFOHJOFFSJOHʣ • ΞϓϦ͕ҭ͍ͬͯ͘தͰنʹԠͨ͡Ϧ ϑΝΫλϦϯάඞཁʹͳ͍ͬͯ͘
• ͨͩ͠ɺेͳίʔυΧόϨοδඞਢ
ΞϓϦنͱΞʔΩςΫνϟ
2" .5FDI5BMLNEFW ,B[VIJSP4FSB!TFSBUDI "OZ2VFTUJPO