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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ayumu mochizuki
November 28, 2024
Technology
2.8k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
ayumu mochizuki
November 28, 2024
Other Decks in Technology
See All in Technology
ヘルスケア領域における AI 活用と その安全性担保のための取り組み (Leveraging AI in Healthcare and Our Efforts to Ensure Its Safety) - Google I/O Extended Tokyo 2026, July 11, 2026
zettaittenani
0
410
公式ドキュメントの歩き方etc
coco_se
1
120
ガバナンスの「ちょうどいい落とし所」を探れ!開発スピードを妨げない運用判断の勘所 / SRE NEXT 2026
genda
1
230
SREとQA 二人三脚で進めるSLO運用/sre-qa-slo
sugitak
0
790
ソニー銀行におけるビジネスアジリティ向上のためのクラウドシフト戦略
srenext
0
660
AI、CDK と協働する Full TypeScript アプリケーション開発 / Full TypeScript Application with AI and CDK
geekplus_tech
2
340
“それは自分の仕事じゃない"を越えて行け
yuukiyo
1
450
AI時代の開発生産性は、個人技からチーム設計へ
moongift
PRO
4
2.3k
オブザーバビリティ、本当に活用できてる? 〜API連携×生成AIで成熟度を自動評価〜
dmmsre
1
3.5k
Data + AI Summit 2026 イベントレポート: 「AIがビジネスで意思決定するデータ基盤」へ
nek0128
0
250
「ちゃんとやっている」は独りよがりだった ― 不安に寄り添うインシデント対応へ / Towards incident response that addresses anxieties
chmikata
1
5.8k
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
320
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
460
How To Speak Unicorn (iThemes Webinar)
marktimemedia
1
510
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
590
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Speed Design
sergeychernyshev
33
1.9k
Color Theory Basics | Prateek | Gurzu
gurzu
0
390
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
Paper Plane (Part 1)
katiecoart
PRO
1
9.7k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
A Soul's Torment
seathinner
6
3.1k
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