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
すぎうり
June 23, 2026
Programming
21
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rubyのメソッド解決チェーン
すぎうり
June 23, 2026
More Decks by すぎうり
See All by すぎうり
BareRuby ~組み込み向けRubyAOTコンパイラ~
uproad3
0
21
AIコードアポカリプス
uproad3
0
44
負債解消という仕事は儲かる
uproad3
6
4k
RaspberryPi Picoの表現力の拡張 ~アナログコンピュータとの出会い~
uproad3
0
32
お前はまだRubyの 型の強さを知らない
uproad3
0
29
動的型解析器 Ethotrace
uproad3
0
16
お前はまだRubyの 型システムを知らない
uproad3
1
64
UdonRubyの実現可能性について
uproad3
0
32
RubyKaja 2026
uproad3
0
26
Other Decks in Programming
See All in Programming
DynamoDBの基礎を振り返りながらベクトル検索機能を理解する
musan
3
240
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.3k
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
670
Go を使い始めて 2 ヶ月の学び / My first two months with Go
contour_gara
0
390
バグを直したら useEffect が消えた
colorful12
3
770
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
460
業務時間外もAIに働いてもらう話
colorful12
2
8.7k
ドリフトを絶対に許さない(?)CDK運用 / CDK Ops with Zero Tolerance for Drifts (?)
akihisaikeda
1
240
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
1.2k
「つくるAI」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
200
<title><a id="</title>君はこのHTMLをパースできるか"></a></title> #雑LT_study
pizzacat83
0
180
Go 1.27からのGODEBUG / Go 1.27 リリースパーティ #go127party
mazrean
0
260
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
400
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.5k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
970
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
420
Code Review Best Practice
trishagee
74
20k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
3k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.8k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Into the Great Unknown - MozCon
thekraken
41
2.7k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
560
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
300
Transcript
Rubyのメソッド解決チェーン すぎうり
メソッド解決チェーンとは Rubyがメソッドを呼ぶとき、どこを探しに行くか MyClass 呼ばれたクラス SuperClass 継承元クラス Object BasicObject ← 先に探す
後で探す → obj.greet # MyClass に greet があれば → 使う # なければ → SuperClass を探す → Object → BasicObject この探索順序がメソッド解決チェーン( Method Resolution Order)
include するとチェーンの後ろに入る module Greetable def greet; 'Hello!'; end end class
MyClass include Greetable end 解決チェーン MyClass Greetable Object MyClass の後ろ(継承元の手前)に差し込まれる MyClass.ancestors # => [MyClass, Greetable, Object, ...] MyClass.new.greet # => 'Hello!' クラス自身にメソッドがなければ、 includeしたモジュールに委ねる
prepend するとチェーンの先頭に入る module Greetable def greet puts 'called!' super end
end class MyClass prepend Greetable end MyClass.ancestors # => [Logger, MyClass, Object, ...] MyClass.new.greet # => 'called!' include の場合(参考) MyClass Greetable Object prepend の場合 Greetable MyClass Object MyClass より前(先頭)に割り込む どのメソッドを呼んでも、必ず prependのGreetableを通る
元のメソッドを変えずに、呼び出しを横取りできる 呼び出しの流れ 呼び出し元 prepend モジュール ← 先に通る 元のメソッド super で呼ばれる
戻り値 引数を記録する module Tracer def greet(name) # 引数を記録する $log << { method: :greet, args: [name], class: name.class } super # 元のメソッドを呼ぶ end end MyClass.prepend(Tracer)