“すべてはオブジェクト”を体感!初心者向けRubyのオブジェクト指向入門【irbで学ぶ】
生徒
「Rubyの本を読んでいたら“すべてはオブジェクト”って書いてありましたけど、どういう意味ですか?」
先生
「Rubyでは数字や文字列、配列やハッシュなど、あらゆるデータが“オブジェクト”として扱われます。」
生徒
「数字や文字もオブジェクトなんですか?それってどうやって確認できるんでしょう?」
先生
「irb(アイアールビー)というRubyの対話ツールを使えば、実際に確認することができますよ。では、実際にやってみましょう!」
1. “すべてはオブジェクト”とは?
Rubyは純粋なオブジェクト指向言語です。つまり、数値、文字列、配列、ハッシュ、trueやfalseといった値、さらにはnil(何もない値)でさえも、すべてがオブジェクトとして扱われます。 ここでいうオブジェクトとは、「データ」と、そのデータに対してできる「操作(メソッド)」がセットになったものだと考えるとイメージしやすいです。
例えば、人を例にすると「名前」や「年齢」がデータで、「歩く」「話す」といった動きがメソッドにあたります。同じように、数字の「1」や文字列の「こんにちは」も、それぞれ性質(データ)とできること(メソッド)を持っているひとつの「モノ=オブジェクト」だと考えます。 プログラミング未経験の方は、まずは「Rubyに出てくるものは、ほとんど全部“モノ(オブジェクト)”だ」とざっくり捉えておけば十分です。
実際に、数値や文字列がオブジェクトであることを確認する簡単なサンプルを見てみましょう。Rubyでは、オブジェクトがどの種類(クラス)に属しているかをclassというメソッドで調べることができます。
1.class
"こんにちは".class
[1, 2, 3].class
Integer
String
Array
この結果から、1はInteger(整数)クラス、"こんにちは"はString(文字列)クラス、[1, 2, 3]はArray(配列)クラスのオブジェクトだと分かります。
同じように、trueやfalse、nilなどもそれぞれ専用のクラスを持ったオブジェクトです。どの値も、ただの「バラバラな記号の集まり」ではなく、クラスという設計図から作られた、機能付きの「モノ」として扱われている、というのがRubyの「すべてはオブジェクト」という考え方です。
この仕組みのおかげで、Rubyでは「オブジェクト.メソッド」という同じ形でさまざまなデータを扱えます。詳しいメソッドの使い方や、数値・文字列ごとの具体的な活用例は、次のセクション以降で順番に見ていきます。
2. irbでRubyのオブジェクトを確認してみよう
Rubyにはirb(Interactive Ruby)という対話式コンソールが用意されています。 これは、Rubyのコードを一行ずつ入力してすぐに結果を確認できる便利なツールです。
ターミナルを開いて、次のように入力してください。
irb
これで、Rubyを直接試せる環境が準備できました。
3. 数字もオブジェクト
まずは数字を確認してみましょう。数字にclassメソッドを呼び出すことで、その数字がどのクラス(設計図)から作られているかが分かります。
1.class
Integer
「Integer(整数)」というクラスのオブジェクトだとわかります。 さらに、数字には計算以外のメソッドもたくさん用意されています。
5.even? # 偶数かどうかを確認
7.next # 次の数を取得
true
8
このように、ただの数字に見えるものもRubyでは立派なオブジェクトで、便利なメソッドを呼び出せます。
4. 文字列もオブジェクト
文字列もオブジェクトです。試しに文字列のクラスを確認してみましょう。
"こんにちは".class
String
「String(文字列)」というクラスのオブジェクトだと分かります。 文字列にもさまざまなメソッドがあり、簡単に操作できます。
"ruby".upcase # 大文字に変換
"Ruby".downcase # 小文字に変換
"Ruby".length # 文字数を数える
RUBY
ruby
4
こうして、文字列を加工したり、情報を取り出したりできるのも、文字列がオブジェクトだからです。
5. true・false・nilもオブジェクト
プログラムでは条件分岐などで使うtrueやfalse、値がないことを示すnilも、Rubyではすべてオブジェクトです。
true.class
false.class
nil.class
TrueClass
FalseClass
NilClass
それぞれに専用のクラスがあり、条件式で使う以外の機能も備えています。 これにより、Rubyのコードは非常に柔軟でわかりやすくなります。
6. メソッドを呼び出すということ
オブジェクトに「メソッド」を呼び出すというのは、「そのオブジェクトが持っている機能を使う」ということです。
たとえば数字の.nextや文字列の.upcaseのように、オブジェクト.メソッド名の形で書きます。
この仕組みを理解すると、Rubyでのデータ操作が直感的にできるようになります。
7. irbで体感するのが一番の近道
Rubyを学ぶときに「オブジェクト指向」という言葉に難しさを感じる人は多いですが、まずは深く考えず、すべてのデータがオブジェクトであることを体験することが大切です。 irbで数字や文字列をいじってみると、「オブジェクトってこういうことか!」と自然に理解できるようになります。
まとめ
Rubyの学習において重要な考え方である「すべてはオブジェクト」という概念は、数字や文字列、配列やハッシュといった基本的なデータだけでなく、trueやfalse、nilまでもがオブジェクトとして扱われるという特徴から成り立っています。Rubyの世界では、あらゆる値がそれぞれ専用のクラスを持ち、そのクラスから生成されたひとつの「モノ」として振る舞います。この「モノ」が持つ機能をメソッドとして呼び出し、さまざまな操作を行うことができます。たとえば数字の.nextや文字列の.upcaseなど、普段はただの値として見ているものが実際には多くの機能を備えたオブジェクトであることが分かると、Rubyの表現力豊かな書き方が一段と理解しやすくなります。
とくにirbを使って確認することで、Rubyがどのようにデータを扱っているのかを実際に体験できる点が大きな利点です。irbは一行ずつ入力してすぐに結果が返ってくるため、Rubyのメソッドの動きやオブジェクトの性質を素早く試すことができ、初心者には非常に適した学習方法となります。数字のクラスを確認して「Integer」、文字列なら「String」、trueなら「TrueClass」というように、ひとつひとつ目で見て理解できるのはirbならではの魅力です。
また、Rubyのオブジェクト指向の特徴を理解することで、今後の学習にも大きく役立ちます。新しいメソッドを覚えるときも、「このメソッドはどのオブジェクトに対して呼び出すのか」という視点で考えると理解しやすくなります。Rubyのコードが直感的で読みやすい理由も「オブジェクト.メソッド」という統一された書き方があるからこそであり、自然な文章のようにスラスラ書けるのもそのおかげです。
実際にRubyのオブジェクトに触れる際には、次のようなクラスを自分で作り、オブジェクトを生成してメソッドを呼び出す流れを体験すると、理解がより深まります。
class SampleObject
def initialize(name)
@name = name
end
def greet
"こんにちは、#{@name}さん。Rubyのオブジェクトを楽しんでいますか?"
end
end
sample = SampleObject.new("たろう")
puts sample.greet
このコードではSampleObjectというクラスを自分で作り、そのクラスからオブジェクトを生成しています。オブジェクトに対してgreetメソッドを呼び出せば、Rubyでオブジェクト指向がどのように働いているのかが実感できるでしょう。数字や文字列と同じように、自分で作ったクラスからもオブジェクトが生まれるという仕組みは、Rubyの柔軟でわかりやすい構造を理解するうえで重要なポイントになります。
さらに、Rubyの「すべてがオブジェクト」という概念に慣れていくと、コード全体をオブジェクトのメッセージのやり取りとして捉える習慣が身につき、複雑な処理でも自然と構造が見えてくるようになります。配列のメソッドである.mapや.select、文字列の.split、数値の.timesなども、オブジェクトが持つ機能を活用しているだけだと理解できるようになり、Rubyの使いやすさをさらに感じるはずです。
学習を進めるうえでは、難しく考えすぎず、まずは実際に手を動かして試しながら理解していくことが何よりも大切です。特にirbは「とりあえず試してみる」ための最高のツールなので、気になったメソッドやオブジェクトはどんどんその場で確認していくと、自然とRubyの仕組みが体に染みついていきます。数字、文字列、配列、ハッシュ、true、false、nilといったさまざまな値がすべてオブジェクトだと分かれば、Rubyのコードを見る目が大きく変わり、より高度な書き方も理解しやすくなります。
生徒
「今日の内容で、“すべてはオブジェクト”という言葉の意味がやっと分かりました!数字も文字もオブジェクトなんて驚きでした!」
先生
「そうでしょう。Rubyではどんな値にもクラスがあり、そのクラスから作られたオブジェクトとして扱えるんですよ。irbで実際に確認するとより理解が深まります。」
生徒
「はい!1.classがIntegerになったり、文字列がStringになったり、確かに全部オブジェクトだって確認できました。自分でクラスを作ってメソッドを呼ぶのも楽しかったです。」
先生
「その調子ですよ。Rubyの魅力は、オブジェクトどうしがメッセージをやり取りするようにコードを書くことができるところです。これからもっと複雑なクラスを作れるようになりますから、どんどん挑戦してくださいね。」