SlideShare a Scribd company logo
Rubyのメソッド探索
今回使うメソッド 
ハンズオン 
# インスタンスのクラスを取得 
<インスタンス>.class 
! 
# 継承ツリーを取得 
<クラス>.ancestors 
! 
# メソッドのオーナーを取得 
<インスタンス>.method(:<メソッド名>).owner
右に一歩いって、上へ
クラスはメソッドの置き場所
instance FirstClass 
class FirstClass 
def hanako 
end 
end 
instance = FirstClass.new 
instance.hanako 
インスタンスは 
自分のクラスにメソッドを 
探索しにいく
class FirstClass 
def hanako 
end 
end 
クラスは 
インスタンス間で共通 
instance FirstClass 
instance2 
instance = FirstClass.new 
instance.hanako 
! 
instance2 = FirstClass.new 
instance2.hanako
class FirstClass 
def hanako 
“tarou” 
end 
end 
instance FirstClass 
instance2 
モンキーパッチで 
クラスのメソッド書き換える 
instance.hanako 
instance2.hanako
自分のクラスにメソッドが 
見つからなければ 
継承元を探索  
Sub 
継承 
class Super 
def hanako 
“super” 
end 
end 
! 
class Sub < Super 
end Sub.new.hanako 
#<Sub> 
Super
MixInも継承ツリーに 
差し込まれる  
MyClass 
module Mix 
def hanako 
“mix” 
end 
end 
! 
class Mixed 
include Mix 
end 
Mix-In 
Mixed.new.hanako 
#<Mixed> 
Mix
module Mix1 
def hanako 
“1” 
end 
end 
! 
module Mix2 
def hanako 
“2” 
end 
end 
! 
class Mixed2 
include Mix1 
include Mix2 
end 
どうなるかためしてみよう! 
継承ツリーをみてみよう! 
Mix-In × 2 
Mixed2.new.hanako
includeはincludeされる 
クラスのすぐ上に差し込む 
Mix2の方が後によばれるので 
Mix2のメソッドが呼ばれる 
Mixed2 
module Mix1 
def hanako 
“1” 
end 
end 
! 
module Mix2 
def hanako 
“2” 
end 
end 
! 
class Mixed2 
include Mix1 
include Mix2 
end 
Mix-In × 2 
Mixed2.new.hanako 
#<Mixed2> 
Mix1 
Mix2
Blank 
class Blank 
end 
Blank.new.to_s 
#<Blank> 
ownerを確かめよう!
BasicObject 
Kernel 
Blank 
class Blank 
end 
スーパークラスを指定 
されなかったクラスは暗黙的に 
Objectクラスを継承する 
Blank.new.to_s Object 
#<Blank>
モンキーパッチで 
to_sメソッドの探索を 
途中で止めてみよう! 
BasicObject 
Kernel 
モンキーパッチsuper 
Blank 
class Blank 
end 
class Object 
def to_s 
“obj: [#{super}]” 
end 
end 
Blank.new.to_s Object 
#<Blank>
BasicObject 
Kernel 
MyClass 
class Super 
def hanako 
end 
end 
! 
module Mix 
def hanako 
end 
end 
! 
class Sub < Super 
include Mix 
end 
継承+MixIn 
MyClass.new.hanako 
Object 
#<MyClass> 
Super 
Mix
Ruby 2.0 ~ 
BasicObject 
Kernel 
Mix 
Prepend 
module Mix 
def hanako 
log.info ( “call #{__method__}” ) 
super 
end 
end 
! 
class MyClass 
prepend Mix 
end 
MyClass.new.hanako 
Object 
#<MyClass> 
MyClass
クラス自体も 
Classクラスの 
インスタンス
classキーワードを使った 
クラス定義はClass.newに置き換えられる 
class NewClass 
end NewClass = Class.new 
NewClassという定数に 
Classクラスのインスタンスを 
代入しているだけ
newはClassクラスのメソッド 
BasicObject 
Kernel 
Class 
class MyClass 
end 
MyClass.new 
Object 
MyClass#<Class> 
Module
インスタンスのメソッドの 
置き場所がクラスのように 
! 
クラスのメソッドの 
置き場所はClassクラス
えっ(°д°) 
RSS.parse 
見たいなクラス特有の 
クラスメソッド 
どうするの?
Class Classに足してみる 
class Class 
def hanako 
"Class#hanako" 
end 
end 
! 
class MyClass; end 
MyClass.hanako # => 
String.hanako # => 
ためしてみよう!
Class Classに足してみる 
class Class 
def hanako 
"Class#hanako" 
end 
end 
! 
class MyClass; end 
無関係のクラスにまで 
(°д°lll) 
MyClass.hanako # => "Class#hanako" 
String.hanako
オブジェクト固有の 
メソッドを置く場所が必要!
特異クラス 
val = “a” 
def val.hanako 
“#{self} hanako” 
end 
! 
val.hanako #=> “a hanako” 
“a”.hanako #=> No Method Error 
BasicObject 
Kernel 
Object 
#Instance 
Comparable 
#<String String
Classもオブジェクト
クラスも特異クラスがある 
BasicObject 
Kernel 
class MyClass; end 
! 
def MyClass.hanako 
“hanako” 
end 
MyClass.hanako Object 
Class 
MyClass#<Class> 
Module 
#MyClass
class ~ endまでのselfはクラス自身なので 
self.メソッドに書き換えれる 
BasicObject 
Kernel 
class MyClass 
def self.hanako 
end 
end 
MyClass.hanako Object 
Class 
MyClass#<Class> 
Module 
#MyClass
クラスメソッドは実現できた 
だがまだ不十分
Superクラスの 
クラスメソッド継承したい! 
(°д°)
クラスの特異クラスのスーパークラスは 
クラス自身のスーパークラスの特異クラス 
#BasicObject 
#Object 
Object 
class Super 
def self.hanako 
end 
end 
! 
class Sub < Super 
end 
Sub#<Class> 
BasicObject 
#Sub 
Super 
#Super
特異クラスをたどり終わると 
クラスの探索に戻る 
new をSuperでとめてみようModule 
#BasicObject Class 
#Object 
Object 
class Super 
def self.new 
end 
end 
! 
class Sub 
end 
Sub#<Class> 
BasicObject 
#Sub 
Super 
#Super
include 
と 
extend
includeはクラスの継承ツリーに差し込まれる 
BasicObject 
module Mix 
end 
! 
Kernel 
class MyClass 
include Mix 
end Object 
MyClass 
#<MyClass 
Mix
extendはクラスの特異クラスの 
継承ツリーに差し込まれる 
module Mix 
def hanako 
end 
end 
! 
class MyClass 
extend Mix 
end 
MyClass#<Class 
Object 
#Object 
#MyClass #Mix
右に一歩いって、上へ 
(オブジェクトは 
自分のクラスから 
継承ツリーを上にたどる)
ご清聴ありがとうございました

More Related Content

Featured

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
Marius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
Expeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
Pixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
ThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
marketingartwork
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
Skeleton Technologies
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
Kurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
SpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Lily Ray
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
Rajiv Jayarajah, MAppComm, ACC
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
Christy Abraham Joy
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
Vit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
MindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
RachelPearson36
 

Featured (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

Rubyメソッド探索