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
220
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
160
CIを整備してメンテナンスを生成AIに任せる
hazumirr
0
900
病院の情報フローを理解して、 予約〜会計の見え方が変わった話
hazumirr
0
1.5k
テーブル駆動テストと状態
hazumirr
4
2.1k
オンラインテストしようと思った その日に開始できる環境を目指して
hazumirr
0
990
推薦によるプロダクト改善とマイクロサービスが噛み合った話
hazumirr
2
4.3k
ChatGPTで僕が知っていることまとめ
hazumirr
3
3k
プロダクトチームとどう 協業し分析環境を改善するか
hazumirr
2
1.5k
bqv速習会
hazumirr
6
7k
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
The Invisible Side of Design
smashingmag
301
51k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
131
19k
Testing 201, or: Great Expectations
jmmastey
45
7.6k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
10
1k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
229
22k
[RailsConf 2023] Rails as a piece of cake
palkan
56
5.8k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
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.