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のコード削除したい時 僕がやること
Search
Hazumi Ichijo
October 31, 2023
0
230
Rubyのコード削除したい時 僕がやること
Omotesando.rb #90
https://omotesandorb.connpass.com/event/296510/
Hazumi Ichijo
October 31, 2023
Tweet
Share
More Decks by Hazumi Ichijo
See All by Hazumi Ichijo
RailsとRidgepoleの マイグレを120倍早くする
hazumirr
0
190
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
1.2k
病院の情報フローを理解して、 予約〜会計の見え方が変わった話
hazumirr
0
1.6k
テーブル駆動テストと状態
hazumirr
4
2.1k
オンラインテストしようと思った その日に開始できる環境を目指して
hazumirr
0
1k
推薦によるプロダクト改善とマイクロサービスが噛み合った話
hazumirr
2
4.4k
ChatGPTで僕が知っていることまとめ
hazumirr
3
3.1k
プロダクトチームとどう 協業し分析環境を改善するか
hazumirr
2
1.6k
bqv速習会
hazumirr
6
7k
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
514
110k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
127
53k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
188
55k
The Power of CSS Pseudo Elements
geoffreycrofte
79
6k
Facilitating Awesome Meetings
lara
56
6.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
252
21k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.5k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
9
850
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Transcript
© 2023 Wantedly, Inc. Rubyのコード削除したい時 僕がやること Omotesando.rb #90 Oct. 5
2023 - Hazumi Ichijo
自己紹介 © 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.
削除したいコード 1. 実行されていないコード 2. 実行されているが消せるコード • 利用されない関数を生成するコード ◦ メタプロのコード自体は実行されているので検知が難 しい
• 利用されないデータを書き込む © 2023 Wantedly, Inc.
© 2023 Wantedly, Inc. class Hoge < ActiveRecord::Base as_enum :category
CATEGORY, prefix: true CATEGORY = { category_a: 0, category_b: 1, ... } end 利用されない関数を生成するコード https://github.com/lwe/simple_enum
© 2023 Wantedly, Inc. class Hoge < ActiveRecord::Base as_enum :category
CATEGORY, prefix: true CATEGORY = { category_a: 0, category_b: 1, ... } end 利用されない関数を生成するコード 要件が変わって、Categoryの一覧をDBで定義したいが...
© 2023 Wantedly, Inc. class Hoge < ActiveRecord::Base as_enum :category
CATEGORY, prefix: true CATEGORY = { category_a: 0, category_b: 1, ... } end 利用されない関数を生成するコード # 生えてくるメソッド例 hoge.category_was? # dirty hoge.category_a? # attribute Hoge.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. 実行されていないコード 2. 実行されているが消せるコード • 利用されない関数を生成するコード ◦ メタプロのコード自体は実行されているので検知が難 しい
• 利用されないデータを書き込む © 2023 Wantedly, Inc.
利用されないデータを書き込む 1. BigQuery 2. PostgreSQL 3. Elasticsearch 4. … ©
2023 Wantedly, Inc.
利用されないデータを書き込む 1. BigQuery 2. PostgreSQL 3. Elasticsearch 4. … ©
2023 Wantedly, Inc.
利用されないデータを書き込む BigQueryの監査ログが便利 誰がいつデータを参照したかがわかる © 2023 Wantedly, Inc. BigQuery編 https://marketplace.looker.com/marketplace/detail/bigquery-information-schema を利用
© 2023 Wantedly, Inc.