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
2k
歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
ayumu mochizuki
November 28, 2024
Tweet
Share
Other Decks in Technology
See All in Technology
Kotlin Multiplatformのポテンシャル
recruitengineers
PRO
1
120
Fabric 移行時の躓きポイントと対応策
ohata_ds
1
140
AWSの生成AIサービス Amazon Bedrock入門!(2025年1月版)
minorun365
PRO
7
430
FODにおけるホーム画面編成のレコメンド
watarukudo
PRO
2
130
ネットワーク可視化の世界
likr
7
5.7k
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
120
AWS Community Builderのススメ - みんなもCommunity Builderに応募しよう! -
smt7174
0
140
デジタルアイデンティティ技術 認可・ID連携・認証 応用 / 20250114-OIDF-J-EduWG-TechSWG
oidfj
2
490
ドメイン駆動設計の実践により事業の成長スピードと保守性を両立するショッピングクーポン
lycorptech_jp
PRO
4
660
20241125 - AI 繪圖實戰魔法工作坊 @ 實踐大學
dpys
1
460
完全自律型AIエージェントとAgentic Workflow〜ワークフロー構築という現実解
pharma_x_tech
0
280
0→1事業こそPMは営業すべし / pmconf #落選お披露目 / PM should do sales in zero to one
roki_n_
PRO
1
290
Featured
See All Featured
Practical Orchestrator
shlominoach
186
10k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
6
500
Embracing the Ebb and Flow
colly
84
4.5k
Documentation Writing (for coders)
carmenintech
67
4.5k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Speed Design
sergeychernyshev
25
730
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
Into the Great Unknown - MozCon
thekraken
34
1.6k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
33
2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
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