歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
by
ayumu mochizuki
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
歴史あるRuby on Railsで デッドコードを⾒つけ、 消す⽅法 2024.11.28 リブセンス アルバイト事業部 望⽉歩 Copyright © Livesense Inc.
Slide 2
Slide 2 text
株式会社リブセンス アルバイト事業部開発グループ 2018年新卒で⼊社 マッハバイトの開発をしています 望⽉ 歩(ayumu838) Copyright © Livesense Inc.
Slide 3
Slide 3 text
● 2006年にジョブセンスとしてリリース ● 2017年にマッハバイトと改名 ● リリース当時はPHPだったが ● 2014年からRuby on Railsにリプレイスを開始 ● 2022年に完了 について Copyright © Livesense Inc.
Slide 4
Slide 4 text
● 2006年にジョブセンスとしてリリース ● 2017年にマッハバイトと改名 ● リリース当時はPHPだったが ● 2014年からRuby on Railsにリプレイスを開始 ● 2022年に完了 について Copyright © Livesense Inc.
Slide 5
Slide 5 text
● 2006年にジョブセンスとしてリリース ● 2017年にマッハバイトと改名 ● リリース当時はPHPだったが ● 2014年からRuby on Railsにリプレイスを開始 ● 2022年に完了 リプレイス開始から10年 について Copyright © Livesense Inc.
Slide 6
Slide 6 text
不要なコードを削除したい Copyright © Livesense Inc.
Slide 7
Slide 7 text
● 不要なコードを検知する ● 検知したコードを継続的に消していけるようにする 何をしたらいいのか Copyright © Livesense Inc.
Slide 8
Slide 8 text
● 不要なコードを検知する ● 検知したコードを継続的に消していけるようにする←こっちが本題 何をしたらいいのか Copyright © Livesense Inc.
Slide 9
Slide 9 text
不要なコードを検知する Copyright © Livesense Inc. ● oneshot coverageで動的に検知 ● coverbandを導⼊することにしました ● いい感じに保存や可視化をしてくれるツール https://github.com/danmayer/coverband/tree/main
Slide 10
Slide 10 text
不要なコードを検知する Copyright © Livesense Inc. ● 実⾏されていない⾏
Slide 11
Slide 11 text
不要なコードを検知する Copyright © Livesense Inc. ● 描画されていないView
Slide 12
Slide 12 text
不要なコードを検知する Copyright © Livesense Inc. ● 使われていないRoute
Slide 13
Slide 13 text
検知はできるようになった あとは関連したコードをどう継続して消せるようにするか Copyright © Livesense Inc.
Slide 14
Slide 14 text
仕組み作って、CI化しよう Copyright © Livesense Inc.
Slide 15
Slide 15 text
消したい対象 ● routesにあるが、存在しないcontroller ● routesにあるが、存在しないaction ● controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright © Livesense Inc.
Slide 16
Slide 16 text
消したい対象 ● routesにあるが、存在しないcontroller ● routesにあるが、存在しないaction ● controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright © Livesense Inc.
Slide 17
Slide 17 text
理想はRouting ErrorのController#Actionを取得したい routesを取得したい Copyright © Livesense Inc.
Slide 18
Slide 18 text
Rails.application.routes.routesとすると ActionDispatch::Journey::Routesとなって Rails.application.routes.routes.frist.defaultsでcontrollerとactionが取れる routesを取得したい Copyright © Livesense Inc.
Slide 19
Slide 19 text
消したい対象 ● routesにあるが、存在しないcontroller ● routesにあるが、存在しないaction ● controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright © Livesense Inc.
Slide 20
Slide 20 text
先ほど取得した結果のcontrollerを app/controllers/{controller}_controller.rbにしてファイル検索ができる controllerやactionを取得したい Copyright © Livesense Inc.
Slide 21
Slide 21 text
先ほど取得した結果のcontrollerを app/controllers/{controller}_controller.rbにしてファイル検索ができる actionも def {action}がファイルにあるかどうかで判断できる controllerやactionを取得したい Copyright © Livesense Inc.
Slide 22
Slide 22 text
消したい対象 ● routesにあるが、存在しないcontroller ● routesにあるが、存在しないaction ● controllerはあるが、存在しないroutes 検知したコードに関連するものも消すことを継続させる Copyright © Livesense Inc.
Slide 23
Slide 23 text
先ほど取得した結果のcontrollerを app/controllers/{controller}_controller.rbにしてファイル検索ができる ↓ app/controllers/**/*.rb から app/controllers/ _controller.rb を消したものがcontrollerになる controllerだけあるものを取得したい Copyright © Livesense Inc.
Slide 24
Slide 24 text
仕組み作って、CI化しよう Copyright © Livesense Inc.
Slide 25
Slide 25 text
● GitHub Actions上で動かす ● GitHub Actionsの形式に沿ったエラーメッセージを出す 検知したコードに関連するものも消すことを継続させる Copyright © Livesense Inc.
Slide 26
Slide 26 text
● GitHub Actions上で動かす ● GitHub Actionsの形式に沿ったエラーメッセージを出す 検知したコードに関連するものも消すことを継続させる Copyright © Livesense Inc.
Slide 27
Slide 27 text
● 不要なコードを検知し、消す ● controllerやaction,routesを消せばCIが落ちるように仕組み化 まとめ Copyright © Livesense Inc.
Slide 28
Slide 28 text
No content
Slide 29
Slide 29 text
詳しくはアドベントカレンダーに書きます! 12/1予定です Copyright © Livesense Inc.
Slide 30
Slide 30 text
No content
Slide 31
Slide 31 text
No content