Omotesando.rb #90 https://omotesandorb.connpass.com/event/296510/
© 2023 Wantedly, Inc.Rubyのコード削除したい時僕がやることOmotesando.rb #90Oct. 5 2023 - Hazumi Ichijo
View Slide
自己紹介© 2023 Wantedly, Inc.一條 端澄 @hazumirr/@rerost略歴:2018~ : ウォンテッドリー株式会社趣味: テトリス・旅行Omotesando.rb: 2回目
消せると何が嬉しいか1. 考慮することが減る● 機能追加・変更時● リファクタリング時● gem update● …2. 利用するリソースが減らせる● CPU/メモリ● CIでのテストにかかる時間● …© 2023 Wantedly, Inc.
デッドコードだけ削除すれば良いんでしょ?© 2023 Wantedly, Inc.
© 2023 Wantedly, Inc.https://docs.wantedly.dev/fields/dev-tools/code-coverage
oneshot coverage 便利!以上!© 2023 Wantedly, Inc.
完© 2023 Wantedly, Inc.
削除したいコード1. 実行されていないコード2. 実行されているが消せるコード● 利用されない関数を生成するコード○ メタプロのコード自体は実行されているので検知が難しい● 利用されないデータを書き込む© 2023 Wantedly, Inc.
© 2023 Wantedly, Inc.class Hoge < ActiveRecord::Baseas_enum :category CATEGORY, prefix: trueCATEGORY = {category_a: 0,category_b: 1,...}end利用されない関数を生成するコードhttps://github.com/lwe/simple_enum
© 2023 Wantedly, Inc.class Hoge < ActiveRecord::Baseas_enum :category CATEGORY, prefix: trueCATEGORY = {category_a: 0,category_b: 1,...}end利用されない関数を生成するコード要件が変わって、Categoryの一覧をDBで定義したいが...
© 2023 Wantedly, Inc.class Hoge < ActiveRecord::Baseas_enum :category CATEGORY, prefix: trueCATEGORY = {category_a: 0,category_b: 1,...}end利用されない関数を生成するコード# 生えてくるメソッド例hoge.category_was? # dirtyhoge.category_a? # attributeHoge.category_as # scope=>
利用されない関数を生成するコード1. 何が生成されているかを把握2. 利用箇所の把握● ひたすらgrep● ログを仕込む© 2023 Wantedly, Inc.
利用されない関数を生成するコード1. 何が生成されているかを把握2. 利用箇所の把握● ひたすらgrep● 早いが、確実とはいえない● 考慮漏れが無いか不安© 2023 Wantedly, Inc.
利用されない関数を生成するコード1. 何が生成されているかを把握2. 利用箇所の把握● 関数が呼ばれた際にログを投げる● ほぼ確実だが、集まるまで待ち時間が発生● 呼ばれたかどうか○ TracePoint, prepend, …● ログの投げ先○ 標準出力, BigQuery, TreasureData, …© 2023 Wantedly, Inc.
利用されないデータを書き込む1. BigQuery2. PostgreSQL3. Elasticsearch4. …© 2023 Wantedly, Inc.
利用されないデータを書き込むBigQueryの監査ログが便利誰がいつデータを参照したかがわかる© 2023 Wantedly, Inc.BigQuery編https://marketplace.looker.com/marketplace/detail/bigquery-information-schema を利用
© 2023 Wantedly, Inc.