歴史あるRuby on Railsでデッドコードを見つけ、 消す方法@yabaibuki.dev #3
by
ayumu mochizuki
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
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