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
360
リファクタリングチャンスを探せ
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
1
240
20210528_MedPeer_事業成長を加速させたエンジニアリングのウラ側
hotatekaoru
0
1.1k
費用対効果の高いテストコードを書くために意識したこと.pdf
hotatekaoru
3
4.5k
新規プロジェクトのリードエンジニアになるために
hotatekaoru
6
2.4k
Dependabotからの脱却
hotatekaoru
0
360
Fat Modelに対処する 6つのリファクタリングパターン
hotatekaoru
13
3.6k
MobPro2Points
hotatekaoru
0
86
ViewModelをプロダクトに導入した🤖
hotatekaoru
1
190
僕らのリファクタリングは裏切らない
hotatekaoru
2
2.5k
Other Decks in Programming
See All in Programming
Cloudless Computingの論文紹介
yuukit
1
250
Kotlin/Androidでテスト駆動開発をはじめよう
hiroaki404
1
250
#KotlinFest 2024 : Kotlin sealed classを用いた、ユーザーターゲティングDSL(専用言語)と実環境で秒間1,000万評価を行う処理系の事例紹介
kazukima
0
460
ビルドツールとはなにか?からはじめるGradle超入門 / JJUG CCC 2024 Spring
nhayato
1
180
俺たちのPHPの型システムはすごいぞっ!
suguruooki
1
220
技術サポートでよく見かけるパターンと便利な活用方法
tamai_63
0
440
スクラムフェスを支える配信の仕組み
murabayashi
1
150
フレームワークを10年以上開発する中で培ってきた単体テストのプラクティス / JJUG CCC 2024 Spring
kiwasaki
1
120
The Hotwire Landscape After Turbo 8 @ Brighton Ruby 2024
marcoroth
1
200
宇宙一早くAmazon Bedrock 生成AIアプリ開発入門の献本が届いたので 感想をしみじみ語る
ymd65536
1
200
プログラミングスクールのつながりがキャリアにつながるのかもしれない話 / Connections at programming schools may lead to a career
aiandrox
0
290
「ナントカLR」を整理する / Clarifying LR Algorithms
junk0612
1
160
Featured
See All Featured
Typedesign – Prime Four
hannesfritz
36
2.2k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
143
43k
Creatively Recalculating Your Daily Design Routine
revolveconf
213
11k
Ruby is Unlike a Banana
tanoku
96
10k
The Cult of Friendly URLs
andyhume
74
5.8k
GraphQLの誤解/rethinking-graphql
sonatard
58
9.5k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
128
32k
StorybookのUI Testing Handbookを読んだ
zakiyama
14
4.8k
How to train your dragon (web standard)
notwaldorf
78
5.4k
Adopting Sorbet at Scale
ufuk
69
8.7k
RailsConf 2023
tenderlove
11
660
WebSockets: Embracing the real-time Web
robhawkes
59
7.1k
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