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
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.de...
Search
ayumu mochizuki
November 28, 2024
Technology
0
2.6k
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
ayumu mochizuki
November 28, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
20251014_Pythonを実務で徹底的に使いこなした話
ippei0923
0
210
AWS Control Tower に学ぶ! IAM Identity Center 権限設計の第一歩 / IAM Identity Center with Control Tower
y___u
1
200
Claude Code Subagents 再入門 ~cc-sddの実装で学んだこと~
gotalab555
10
16k
能登半島災害現場エンジニアクロストーク 【JAWS FESTA 2025 in 金沢】
ditccsugii
0
900
20251010_HCCJP_AdaptiveCloudUpdates
sdosamut
0
140
カンファレンスに託児サポートがあるということ / Having Childcare Support at Conferences
nobu09
1
620
WEBサービスを成り立たせるAWSサービス
takano0131
1
180
それでも私が品質保証プロセスを作り続ける理由 #テストラジオ / Why I still continue to create QA process
pineapplecandy
0
130
コンテキストエンジニアリング入門〜AI Coding Agent作りで学ぶ文脈設計〜
kworkdev
PRO
3
1.8k
Introduction to Sansan for Engineers / エンジニア向け会社紹介
sansan33
PRO
5
43k
Introduction to Sansan, inc / Sansan Global Development Center, Inc.
sansan33
PRO
0
2.8k
Click A, Buy B: Rethinking Conversion Attribution in ECommerce Recommendations
lycorptech_jp
PRO
0
100
Featured
See All Featured
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.7k
YesSQL, Process and Tooling at Scale
rocio
173
14k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
54k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
61k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
The Cult of Friendly URLs
andyhume
79
6.6k
Being A Developer After 40
akosma
91
590k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
34
2.3k
Transcript
歴史あるRuby on Railsで デッドコードを⾒つけ、 消す⽅法 2024.11.28 リブセンス アルバイト事業部 望⽉歩 Copyright
© Livesense Inc.
株式会社リブセンス アルバイト事業部開発グループ 2018年新卒で⼊社 マッハバイトの開発をしています 望⽉ 歩(ayumu838) Copyright © Livesense Inc.
• 2006年にジョブセンスとしてリリース • 2017年にマッハバイトと改名 • リリース当時はPHPだったが • 2014年からRuby on Railsにリプレイスを開始
• 2022年に完了 について Copyright © Livesense Inc.
• 2006年にジョブセンスとしてリリース • 2017年にマッハバイトと改名 • リリース当時はPHPだったが • 2014年からRuby on Railsにリプレイスを開始
• 2022年に完了 について Copyright © Livesense Inc.
• 2006年にジョブセンスとしてリリース • 2017年にマッハバイトと改名 • リリース当時はPHPだったが • 2014年からRuby on Railsにリプレイスを開始
• 2022年に完了 リプレイス開始から10年 について Copyright © Livesense Inc.
不要なコードを削除したい Copyright © Livesense Inc.
• 不要なコードを検知する • 検知したコードを継続的に消していけるようにする 何をしたらいいのか Copyright © Livesense Inc.
• 不要なコードを検知する • 検知したコードを継続的に消していけるようにする←こっちが本題 何をしたらいいのか Copyright © Livesense Inc.
不要なコードを検知する Copyright © Livesense Inc. • oneshot coverageで動的に検知 • coverbandを導⼊することにしました
• いい感じに保存や可視化をしてくれるツール https://github.com/danmayer/coverband/tree/main
不要なコードを検知する Copyright © Livesense Inc. • 実⾏されていない⾏
不要なコードを検知する Copyright © Livesense Inc. • 描画されていないView
不要なコードを検知する Copyright © Livesense Inc. • 使われていないRoute
検知はできるようになった あとは関連したコードをどう継続して消せるようにするか Copyright © Livesense Inc.
仕組み作って、CI化しよう Copyright © Livesense Inc.
消したい対象 • routesにあるが、存在しないcontroller • routesにあるが、存在しないaction • controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright ©
Livesense Inc.
消したい対象 • routesにあるが、存在しないcontroller • routesにあるが、存在しないaction • controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright ©
Livesense Inc.
理想はRouting ErrorのController#Actionを取得したい routesを取得したい Copyright © Livesense Inc.
Rails.application.routes.routesとすると ActionDispatch::Journey::Routesとなって Rails.application.routes.routes.frist.defaultsでcontrollerとactionが取れる routesを取得したい Copyright © Livesense Inc.
消したい対象 • routesにあるが、存在しないcontroller • routesにあるが、存在しないaction • controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright ©
Livesense Inc.
先ほど取得した結果のcontrollerを app/controllers/{controller}_controller.rbにしてファイル検索ができる controllerやactionを取得したい Copyright © Livesense Inc.
先ほど取得した結果のcontrollerを app/controllers/{controller}_controller.rbにしてファイル検索ができる actionも def {action}がファイルにあるかどうかで判断できる controllerやactionを取得したい Copyright © Livesense Inc.
消したい対象 • routesにあるが、存在しないcontroller • routesにあるが、存在しないaction • controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright ©
Livesense Inc.
先ほど取得した結果のcontrollerを app/controllers/{controller}_controller.rbにしてファイル検索ができる ↓ app/controllers/**/*.rb から app/controllers/ _controller.rb を消したものがcontrollerになる controllerだけあるものを取得したい Copyright ©
Livesense Inc.
仕組み作って、CI化しよう Copyright © Livesense Inc.
• GitHub Actions上で動かす • GitHub Actionsの形式に沿ったエラーメッセージを出す 検知したコードに関連するものも消すことを継続させる Copyright © Livesense
Inc.
• GitHub Actions上で動かす • GitHub Actionsの形式に沿ったエラーメッセージを出す 検知したコードに関連するものも消すことを継続させる Copyright © Livesense
Inc.
• 不要なコードを検知し、消す • controllerやaction,routesを消せばCIが落ちるように仕組み化 まとめ Copyright © Livesense Inc.
None
詳しくはアドベントカレンダーに書きます! 12/1予定です Copyright © Livesense Inc.
None
None