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
リファクタリングチャンスを探せ
Search
Kaoru Hotate
November 27, 2019
Programming
2
490
リファクタリングチャンスを探せ
Classi Rails Night #1 2019/11/27 登壇資料
https://connpass.com/event/152405/
Kaoru Hotate
November 27, 2019
Tweet
Share
More Decks by Kaoru Hotate
See All by Kaoru Hotate
20240607_人を動かし続ける力_ピープルマネジメントへの内発的動機づけの工夫
hotatekaoru
2
400
20210528_MedPeer_事業成長を加速させたエンジニアリングのウラ側
hotatekaoru
0
1.3k
費用対効果の高いテストコードを書くために意識したこと.pdf
hotatekaoru
3
4.9k
新規プロジェクトのリードエンジニアになるために
hotatekaoru
6
2.6k
Dependabotからの脱却
hotatekaoru
0
460
Fat Modelに対処する 6つのリファクタリングパターン
hotatekaoru
13
4.3k
MobPro2Points
hotatekaoru
0
110
ViewModelをプロダクトに導入した🤖
hotatekaoru
1
220
僕らのリファクタリングは裏切らない
hotatekaoru
2
2.7k
Other Decks in Programming
See All in Programming
Google I/O recap web編 大分Web祭り2025
kponda
0
2.9k
なぜ今、Terraformの本を書いたのか? - 著者陣に聞く!『Terraformではじめる実践IaC』登壇資料
fufuhu
4
620
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
380
AIエージェント開発、DevOps and LLMOps
ymd65536
1
170
あのころの iPod を どうにか再生させたい
orumin
2
2.5k
Terraform やるなら公式スタイルガイドを読もう 〜重要項目 10選〜
hiyanger
13
3.1k
Claude Codeで実装以外の開発フロー、どこまで自動化できるか?失敗と成功
ndadayo
2
210
バイブコーディングの正体——AIエージェントはソフトウェア開発を変えるか?
stakaya
5
960
兎に角、コードレビュー
mitohato14
0
140
画像コンペでのベースラインモデルの育て方
tattaka
3
1.7k
管你要 trace 什麼、bpftrace 用下去就對了 — COSCUP 2025
shunghsiyu
0
420
生成AI、実際どう? - ニーリーの場合
nealle
0
130
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
45
7.6k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
GraphQLとの向き合い方2022年版
quramy
49
14k
KATA
mclloyd
32
14k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.4k
Documentation Writing (for coders)
carmenintech
73
5k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Building a Modern Day E-commerce SEO Strategy
aleyda
43
7.4k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
A designer walks into a library…
pauljervisheath
207
24k
The Invisible Side of Design
smashingmag
301
51k
Transcript
ϦϑΝΫλϦϯάνϟϯεΛ୳ͤʂ ,BPSV)PUBUF!QVSVOLBPSV $SBTTJ3BJMT/JHIU DMBTTJ@SBJMT@OJHIU 1
อཱ֜ ,BPSV)PUBUF 5XJUUFS!QVSVOLBPSV ϝυϐΞͱ͍͏ձࣾͷ ΤϯδχΞͰ͢ 3VCZྺ͘Β͍ ΤϯδχΞྺ ࣗݾհ 2
ࠓϦϑΝΫλϦϯάͷΛ͠·͢ʂ 3
ϦϑΝΫλϦϯάͷͷલʹɾɾɾ ࠷ۙͷΈࣄʢআʣΛ͠·͢ 4
5
‣ झຯɾޘָͷਓ͍Δ ͷͨΊʹΔਓ͍Δ Β͞ΕͯΔਓ͍Δ ݟͯݟ͵ৼΓΛ͢Δਓ͍Δ ‣ ϦϑΝΫλϦϯά Γ͍ͨਓɾզຫͰ͖ͳ͍ਓ͕Δʁ ‣ ༷ʑͳਓ͕͍ΔதͰɺϦϑΝΫλϦϯάΛ
৫ϨϕϧͰߦ͏ͷ͔ͳΓͦ͠͏ ϦϑΝΫλϦϯάҰॹʁ 6
‣ ࠓɺϦϑΝΫλϦϯάΛ৫Ͱߦ͏ࡍͷ ಈػ͚ͱࢦʹযΛͯͯ͠·͢ ‣ ʮͳͥʯʮͲ͏ͬͯʯͰͳ͘ɺ ʮԿΛʯϦϑΝΫλϦϯά͢Δ͔ʹ͍ͭͯ͠·͢ ‣ ࣮ફ͍ͯ͠Δํ࠶֬ೝͰ͖ΔʹͳΕͱࢥ͍·͢ ࠓͷ͓ͳ͠ 7
1BSU ΤϯδχΞνʔϜͰͷ ϦϑΝΫλϦϯάͷϞνϕʔγϣϯΛ্͛Δ 8
ϦϑΝΫλϦϯάΛΔཧ༝ͷେ෦ɺҎԼͷͭͰ͢ ‣ ʮ໘നͦ͏ʂʯ ྑ͍ઃܭΛҙࣝ͢ΔͷͰɺʹͭͳ͕Δ ‣ ʮզຫͰ͖ͳ͍ʂʯ ྑ͘ͳ͍ίʔυΛ໓ͯ͠ɺਫ਼ਆతॆײΛಘΔ ଞͷਓʹݟΒΕͨ͘ͳ͍ίʔυΛͬͦ͜Γྑ͓ͯ͘͘͠ ϦϑΝΫλϦϯά͕తʹͳΓ͕ͪɾɾɾ
ϦϑΝΫλϦϯάΛ͕Δཧ༝ 9
ϦϑΝΫλϦϯά͚ͩͷ࣌ؒΛͱΔ͜ͱͰ ʮྑ͍ઃܭʯΛҙࣝͯ͠ίʔυΛॻ͘Α͏ʹͳΔ ϦϑΝΫλϦϯάʹͭͳ͕Δ 10 ϦϑΝΫλϦϯά͕ಘҙʹͳΔͱɺʢதུʣѱ͍ίʔυΛॻ͘ͷΛΊɺ ѱ͍׳शʹै͏ͷΛΊɺϓϨϑΝΫλϦϯάΛ࢝ΊΔͷͩɻʢதུʣ ίʔυͷϦϑΝΫλϦϯάɺίʔυΛॻ͘ͱ͖ʹ͍͚ͯ͠ͳ͍͜ͱɺ ΘΓʹ͖͢͜ͱΛֶͿ্Ͱ࠷ͷํ๏ͷͭͳͷͩɻ %BWJE4DPUU#FSOTUFJOஶʮϨΨγʔίʔυ͔Βͷ٫ʯΑΓ
ྑ͍ઃܭΛ࣮ײ͢ΔΈ͕ඞཁ 11 ‣ ڠྗ͠߹͏ ‣ ϖΞϓϩɾϞϒϓϩ ‣ ٕज़ސ ‣ ϧʔϧʹଇΔ
‣ 40-*%ݪଇ ‣ ˓˓ύλʔϯ
‣ 'BU.PEFMͷղফύλʔϯΛ ͭͷࣄྫʹ͚ͯհ͍ͯ͠·͢ IUUQTTQFBLFSEFDLDPNIPUBUFLBPSVGBUNPEFMOJEVJDIVTVSVUVGBMTFSJIVBLVUBSJOHVQBUBO 'BU.PEFMͷղফύλʔϯ 12
‣ ϦϑΝΫλϦϯάظతʹ͓ۚΛੜΈग़ͮ͠Β͍ͷ ‣ Γͨͯ͘ඇΤϯδχΞ͔Βཧղ͕ಘΒΕͳ͍ ݁ՌΕ͍ͯͳ͍ਓ͕ଟ͍ͷͰʁ ࣮ࡍɾɾɾ 13
1BSU ඇΤϯδχΞʹ ϦϑΝΫλϦϯάΛཧղͯ͠Β͏ 14
͚ͩ͜͜ͷͰ͕͢ɺ ؆୯ͳํ๏Λݟ͚ͭ·ͨ͠ 15
ΠϯύΫτͷ͋ΔʮΒ͔͠ʯΛ͢Ε0, ˞औΓ·ͤΜ 16
‣ ϦϑΝΫλϦϯάͱ͍͏ɺ ظతʹपΓʹධՁ͞ΕͮΒ͍ ཧղΛಘͮΒ͍ ‣ ධՁɾཧղΛಘΔͨΊʹɺࣈ͕ඞཁ ‣ ඇΤϯδχΞͷཧղΛಘΔͨΊʹ ఆྔతʹՌΛग़ͤΔՕॴ͔Β ϦϑΝΫλϦϯά͠·͠ΐ͏
ϦϑΝΫλϦϯάͷՌΛ໌֬ʹ͠Α͏ 17
‣ ϨεϙϯελΠϜ ‣ ςετͷ࣮ߦ ‣ ίʔυͷ࣭ ‣ $PEF$MJNJBUF ‣ SVCZDSJUJD
‣ ίʔυͷՄಡੑ ‣ $POUSPMMFSͷߦ ‣ 3VCPDPQͷEJTBCMF ϦϑΝΫλϦϯάͷఆྔతͳՌ 18
‣ /FX3FMJD4LZMJHIUͰ ϨεϙϯελΠϜ͕͍ॲཧΛௐࠪ ‣ मਖ਼ྫ ‣ / Λແ͘͢ ‣ ൃߦ͞ΕΔΫΤϦΛνϡʔχϯά͢Δ
‣ ඇಉظʹͰ͖Δॲཧඇಉظʹ͢Δ ‣ ͍ॲཧΛݺͼग़͢ճΛݮΒ͢ ‣ SFEJTNFNDBDIFE ϦϑΝΫλϦϯάͷ,1*ྫʢϨεϙϯελΠϜʣ 19
‣ ѹతʹ͍ͷɺKTUSVFͳ&&ͷςετ ‣ KTଆͷϩδοΫΛKFTUͳͲͷKTςετʹدͤΔ ‣ $POUSPMMFSͷϩδοΫΛ.PEFMଆʹدͤΔ ‣ ͨ·ʹམͪΔςετͷআ ϦϑΝΫλϦϯάͷ,1*ྫʢςετͷ࣮ߦʣ 20
‣ ෳՕॴͷڞ௨ϩδοΫʢίϐϖʣΛݮΒ͢ ‣ ෳࡶͳ࣮ΛݮΒ͢ मਖ਼ྫ ‣ $PEF$MJNBUFͷධՁΛ্͛Δ ‣ SVCZDSJUJDͷධՁΛ্͛Δ ϦϑΝΫλϦϯάͷ,1*ྫʢίʔυͷ࣭ΛߴΊΔʣ
21
https://codeclimate.com/ ‣ Φʔϓϯιʔεແྉ ‣ ؒͷτϥΠΞϧظؒ͋Γ ͦͷ͋ͱ༗ྉ ‣ ࣌ؒʹ༨༟͕͋Εը໘ݟͤΔ $PEF$MJNBUF 22
https://github.com/whitesmith/rubycritic ‣ ࣌ؒʹ༨༟͕͋Εը໘ݟͤΔ SVCZDSJUJD 23
‣ ʮඞཁʹഭΒΕΔલʹʯՄಡੑΛߴΊΔमਖ਼Λߦ͏ ‣ ඇΤϯδχΞͷཧղඞཁ मਖ਼ྫ ‣ $POUSPMMFSͷߦΛݮΒ͢ ‣ 3VCPDPQͷEJTBCMFΛݮΒ͢ ‣
.PEFMͷॲཧΛผΫϥεʹҕৡ͢Δ ϦϑΝΫλϦϯάͷ,1*ྫʢՄಡੑΛߴΊΔʣ 24
‣ ϦϑΝΫλϦϯάΤϯδχΞͱͯ͠ͷʹͭͳ͕Δ ‣ ΤϯδχΞ͕ࣗൃతʹϦϑΝΫλϦϯά͢ΔͨΊʹɺ Λ࣮ײͰ͖ΔΈ͕ඞཁ ‣ ඇΤϯδχΞʹϦϑΝΫλϦϯάΛ ཧղͯ͠Β͏ͨΊʹɺ ͰՌΛใࠂͰ͖ΔϦϑΝΫλϦϯά͕ඞཁ ·ͱΊ
25
ࢀߟจݙ 26 ‣ ϨΨγʔίʔυ͔Βͷ٫ ʕιϑτΣΞͷण໋ΛԆ͠ ՁΛߴΊΔͭͷϓϥΫςΟε %BWJE4DPUU#FSOTUFJOஶ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ 27