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
2024/09/05 omotesando.rb #101 株式会社タイミー 新谷哲平 いつか使えるObjectSpace @euglena1215
Slide 2
Slide 2 text
自己紹介 Shintani Teppei(@euglena1215) ● 株式会社タイミー ● バックエンド テックリード ● 最近は Ruby よりも日本語を 書いています
Slide 3
Slide 3 text
最初に質問 ObjectSpace 知ってる方
Slide 4
Slide 4 text
こんな方向け ● ObjectSpace 知らない・触ったことない → これまでできなかったことができるようになるかも?
Slide 5
Slide 5 text
ObjectSpaceってなに? ObjectSpace は Ruby の組み込みライブラリ https://docs.ruby-lang.org/ja/latest/class/ObjectSpace.html
Slide 6
Slide 6 text
ObjectSpaceってなに? ObjectSpace は Ruby の組み込みライブラリ https://docs.ruby-lang.org/ja/latest/class/ObjectSpace.html
Slide 7
Slide 7 text
ObjectSpaceってなに? ObjectSpace は Ruby の組み込みライブラリ https://docs.ruby-lang.org/ja/latest/class/ObjectSpace.html 🧙🔮🧙
Slide 8
Slide 8 text
ObjectSpaceってなに? 今回は ObjectSpace モジュールに定義されているメソッド3つを紹介 ● ObjectSpace._id2ref ● ObjectSpace.count_objects ● ObjectSpace.each_object
Slide 9
Slide 9 text
ObjectSpace._id2ref
Slide 10
Slide 10 text
ObjectSpace._id2ref オブジェクトIDからオブジェクトを取得する
Slide 11
Slide 11 text
ObjectSpace._id2ref Q. どんなときに使える?
Slide 12
Slide 12 text
ObjectSpace._id2ref Q. どんなときに使える? A. Rails 6より前の ActiveSupport Instrumentation API の sql.active_record では connection_id を受け取っていた。id から connection を取得するために必要。
Slide 13
Slide 13 text
ObjectSpace._id2ref Q. どんなときに使える? A. Rails 6より前の ActiveSupport Instrumentation API の sql.active_record では connection_id を受け取っていた。id から connection を取得するために必要。 おそらく現代において使うことはほとんどないのでは...?
Slide 14
Slide 14 text
ObjectSpace.count_objects
Slide 15
Slide 15 text
ObjectSpace.count_objects オブジェクトの種類ごとに現時点で生成されている個数を返す
Slide 16
Slide 16 text
ObjectSpace.count_objects 例:blockとして渡した処理で生成されたHashオブジェクトの個数を返すメソッド
Slide 17
Slide 17 text
ObjectSpace.count_objects 例:blockとして渡した処理で生成されたHashオブジェクトの個数を返すメソッド
Slide 18
Slide 18 text
ObjectSpace.count_objects Q. どんなときに使える?
Slide 19
Slide 19 text
ObjectSpace.count_objects Q. どんなときに使える? A. メモリを意識したコードを書きたくなったとき...?
Slide 20
Slide 20 text
ObjectSpace.count_objects Q. どんなときに使える? A. メモリを意識したコードを書きたくなったとき...? Model.where(...).map(&:user_id) と Model.where(...).pluck(:user_id) の 生成オブジェクト数の違いを見てみると面白いかも
Slide 21
Slide 21 text
ObjectSpace.each_object
Slide 22
Slide 22 text
ObjectSpace.each_object 全てのオブジェクトもしくは任意のクラスのオブジェクトに繰り返し処理を行う
Slide 23
Slide 23 text
メタプログラミング Ruby の時間です クラスは全て Class クラスのインスタンス(オブジェクト)
Slide 24
Slide 24 text
メタプログラミング Ruby の時間です クラスは全て Class クラスのインスタンス(オブジェクト) ObjectSpace.each_object(Class) を実行すると...
Slide 25
Slide 25 text
メタプログラミング Ruby の時間です クラスは全て Class クラスのインスタンス(オブジェクト) ObjectSpace.each_object(Class) を実行すると... 定義されている全クラスの一覧を取得できる 🔮
Slide 26
Slide 26 text
ObjectSpace.each_object 全クラスの一覧が取得できるなら、特定クラスを継承したクラス一覧も取得できる ApplicationRecord を継承したクラスの一覧、ApplicationJob を継承したクラスの 一覧とか出せると便利なことがたまにある
Slide 27
Slide 27 text
ObjectSpace知ってると便利なことが稀にある 良い Ruby プログラミングライフを!