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
180
1
Share
日本語: Skinny Controllers, Skinny Models #m3dev
7 つの実装パターンと Code Climate を使った実際のリファクタリング実践の紹介です。
Kazuhiro Sera
July 05, 2013
More Decks by Kazuhiro Sera
See All by Kazuhiro Sera
5 tips to build long-lasting Scala OSS (cont’d)
seratch
0
150
5 tips to build long-lasting Scala OSS
seratch
1
230
ScalikeJDBC / Skinny ORM Beginners' Guide
seratch
5
140k
All I learned while working on a Scala OSS project for over six years #ScalaMatsuri
seratch
1
940
What I learned by creating 'Scala on Rails' #trbmeetup
seratch
0
240
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
160
Future on Servlet #scala_ks
seratch
0
560
Other Decks in Technology
See All in Technology
個人の発見を、組織の知恵に 〜生成AI活用を"探索"から"組織の仕組み"へ〜
kintotechdev
2
560
Oracle Cloud Infrastructure IaaS 新機能アップデート 2026/3 - 2026/5
oracle4engineer
PRO
1
130
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.8k
APIテストとは?
nagix
0
170
マーケットプレイス版Oracle WebCenter Content For OCI
oracle4engineer
PRO
5
1.8k
Mastering Ruby Box
tagomoris
3
130
製造業のクラウド活用最適解〜AI,DXを加速するデータ基盤の作り方〜
hamadakoji
0
300
AIガバナンス実践 - 生成AIコネクタのデータ漏洩リスクと実務対策
knishioka
0
160
ルールやカスタム機能、どう使う?理想の出力を引き出すために今知りたいIBM Bob 5つの機能
muehara
0
270
TypeScript Compiler APIとPHP-Parserを活用し、TypeScriptとPHPで型を共有する
shuta13
0
320
ITエンジニアを取り巻く環境とキャリアパス / A career path for Japanese IT engineers
takatama
4
1.8k
「速く作る」から「正しく作る」へ ─ 生成AI時代の開発フロー改革の ロードマップと実行 ─
starfish719
0
3.3k
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
698
190k
AI: The stuff that nobody shows you
jnunemaker
PRO
8
680
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
310
Tell your own story through comics
letsgokoyo
1
940
The agentic SEO stack - context over prompts
schlessera
0
790
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
Visualization
eitanlees
152
17k
Thoughts on Productivity
jonyablonski
76
5.2k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
65
55k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.3k
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