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
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
ayumu mochizuki
November 28, 2024
Technology
0
2.7k
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
ayumu mochizuki
November 28, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
社内レビューは機能しているのか
matsuba
0
150
AI時代の「本当の」ハイブリッドクラウド — エージェントが実現した、あの頃の夢
ebibibi
0
150
【Oracle Cloud ウェビナー】【入門編】はじめてのOracle AI Data Platform - AIのためのデータ準備&自社用AIエージェントをワンストップで実現
oracle4engineer
PRO
1
150
WebアクセシビリティをCI/CDで担保する ― axe DevTools × Playwright C#実践ガイド
tomokusaba
2
160
複数クラスタ運用と検索の高度化:ビズリーチにおけるElastic活用事例 / ElasticON Tokyo2026
visional_engineering_and_design
0
170
Claude Code のコード品質がばらつくので AI に品質保証させる仕組みを作った話 / A story about building a mechanism to have AI ensure quality, because the code quality from Claude Code was inconsistent
nrslib
13
8.6k
組織全体で実現する標準監視設計
yuobayashi
3
490
品質を経営にどう語るか #jassttokyo / Communicating the Strategic Value of Quality to Executive Leadership
kyonmm
PRO
2
490
Keycloak を使った SSO で CockroachDB にログインする / CockroachDB SSO with Keycloak
kota2and3kan
0
160
AI駆動AI普及活動 ~ 社内AI活用の「何から始めれば?」をAIで突破する
oracle4engineer
PRO
1
110
20260311 ビジネスSWG活動報告(デジタルアイデンティティ人材育成推進WG Ph2 活動報告会)
oidfj
0
350
Agent ServerはWeb Serverではない。ADKで考えるAgentOps
akiratameto
0
120
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
150
Become a Pro
speakerdeck
PRO
31
5.8k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.2k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
180
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
92
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
140
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.1k
WENDY [Excerpt]
tessaabrams
9
36k
Writing Fast Ruby
sferik
630
63k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
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