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
15
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 すぎうり
AIコードアポカリプス
uproad3
0
29
負債解消という仕事は儲かる
uproad3
6
3.8k
RaspberryPi Picoの表現力の拡張 ~アナログコンピュータとの出会い~
uproad3
0
16
お前はまだRubyの 型の強さを知らない
uproad3
0
18
動的型解析器 Ethotrace
uproad3
0
9
お前はまだRubyの 型システムを知らない
uproad3
1
56
UdonRubyの実現可能性について
uproad3
0
25
RubyKaja 2026
uproad3
0
19
VRChatでスライドを 表示する技術
uproad3
0
38
Other Decks in Programming
See All in Programming
進化を続けるGo toolsの現在地 / The Current State of Ever-Evolving Go Tools
hond0413
0
160
【やさしく解説 設計編・中級 #6】良いアーキテクチャとは ~ 一本の登り道の、行き先 ~
panda728
PRO
0
210
OpenSpecのproposalにbrainstormingを持たせてみた
tigertora7571
1
210
20260722_microCMSで考える、AI時代のコンテンツ運用設計
yosh1
0
380
komatsuna「分散システムにおけるバグ分析手法」
komatsunaqa
0
240
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
370
Terraform標準の組織で AWS CDKをどう使うか
mu7889yoon
1
490
FDEが実現するAI駆動経営の現在地
gonta
2
270
AWS CDK を「作」ってみた 〜フルスクラッチで見えた CDK の裏側〜 / aws-cdk-from-scratch
gotok365
3
2.8k
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
190
What's New in Android 2026
veronikapj
0
250
TSX の <Hoge<Fuga>> という構文に驚いた話 / tsx-type-argument-syntax
kanaru0928
0
210
Featured
See All Featured
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
480
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
400
Skip the Path - Find Your Career Trail
mkilby
1
180
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
How to Ace a Technical Interview
jacobian
281
24k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
790
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
Color Theory Basics | Prateek | Gurzu
gurzu
0
410
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
990
Producing Creativity
orderedlist
PRO
348
40k
Building the Perfect Custom Keyboard
takai
2
830
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)