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
180
日本語: 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
190
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
900
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
生成AI時代のデータ基盤
shibuiwilliam
6
3.7k
Webブラウザ向け動画配信プレイヤーの 大規模リプレイスから得た知見と学び
yud0uhu
0
210
DDD集約とサービスコンテキスト境界との関係性
pandayumi
2
260
Nstockの一人目エンジニアが 3年間かけて向き合ってきた セキュリティのこととこれから〜あれから半年〜
yo41sawada
0
210
開発者を支える Internal Developer Portal のイマとコレカラ / To-day and To-morrow of Internal Developer Portals: Supporting Developers
aoto
PRO
1
360
現場で効くClaude Code ─ 最新動向と企業導入
takaakikakei
1
120
Flutterでキャッチしないエラーはどこに行く
taiju59
0
220
AI開発ツールCreateがAnythingになったよ
tendasato
0
110
バッチ処理で悩むバックエンドエンジニアに捧げるAWS Glue入門
diggymo
3
120
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
560
AIエージェントの活用に重要な「MCP (Model Context Protocol)」とは何か
masayamoriofficial
0
290
なぜスクラムはこうなったのか?歴史が教えてくれたこと/Shall we explore the roots of Scrum
sanogemaru
4
1k
Featured
See All Featured
Visualization
eitanlees
148
16k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
29
1.9k
Side Projects
sachag
455
43k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Stop Working from a Prison Cell
hatefulcrawdad
271
21k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Designing for Performance
lara
610
69k
Code Reviewing Like a Champion
maltzj
525
40k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
The Cost Of JavaScript in 2023
addyosmani
53
8.9k
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