Rubyのkind_of?メソッドの使い方を現役エンジニアが解説【初心者向け】

初心者向けにRubyのkind_of?メソッドの使い方について解説しています。kind_of?はインスタンスがクラスに属しているかどうかを判定します。kind_of?はインスタンスのクラスと親クラスを含めますが、instance_of?はインスタンスのクラスのみになります。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Rubyのkind_of?メソッドの使い方について解説します。Rubyについてそもそもよく分からないという方は、Rubyとは何なのか解説した記事をまずご覧ください。

 

なお本記事は、TechAcademyのWebアプリケーションオンラインブートキャンプの内容をもとに紹介しています。

田島悠介

今回は、Rubyに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

kind_of?メソッドの使い方について詳しく説明していくね!

大石ゆかり

お願いします!

 

kind_of?メソッドとは?

kind_of?メソッドとは、クラスを調べるためのメソッドです。引数にクラスを取り、そのクラスに属するならtrue、属さないのならfalseを返します。

よく似たメソッドとして、instance_of?があります。

instance_of?は、親クラスやインクルードしているモジュールを引数としたときfalseを返しますがkind_of?は、親クラスやインクルードしているモジュールを引数とした時もtrueを返します。

 

kind_of?の使い方

kind_of?は、以下のように使用します。

オブジェクト.kind_of?(クラス)

例えば、str = “test”がString型かどうかを調べる場合は

str.kind_of?(String)

と記載します。この場合は、strはstring型なのでtrueを返します。

[PR] Rubyのプログラミングで挫折しない学習方法を動画で公開中

実際に書いてみよう

それでは、実際にコードを書いてみましょう。

今回はstring型で検証します。まず確認のために、classメソッド・superclassメソッドでstring型の持つクラスを確認しそのあとで、kind_of?メソッドを使用します。

また、比較のためinstance_of?メソッドの使用例もみてみましょう。

# string型の変数を用意
str = "test"

puts '---classの確認---'
puts str.class
puts str.class.superclass
puts str.class.superclass.superclass

puts '---kind_of---'
puts str.kind_of?(String)
puts str.kind_of?(Object)
puts str.kind_of?(BasicObject)

puts '---instance_of---'
puts str.instance_of?(String)
puts str.instance_of?(Object)
puts str.instance_of?(BasicObject)

 

実行結果は以下の通りになります。

---classの確認---
String
Object
BasicObject
---kind_of---
true
true
true
---instance_of---
true
false
false

 

冒頭で説明した通り、kind_of?が親クラスであってもtrueを返す所に注意してください。
以上になります。使う頻度は多くはないですが、instance_of?と合わせて、クラスを調べる際に使用してください。

 

筆者プロフィール

メンター金成さん

フリーランスエンジニア。
Railsの案件を中心に、様々なアプリケーションを開発してます。

使える言語は、ruby python go 。最近はgoにハマってます。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

TechAcademyでは初心者でも最短4週間でエンジニアになれるRuby on Railsオンラインブートキャンプを開催しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

また、現役エンジニアから学べる無料のプログラミング体験会も実施しているので、ぜひ参加してみてください。