【Ruby超入門コース】07.オブジェクト|オブジェクトは直訳するとモノです。オブジェクトってなんだ!?

Ruby超入門コース

この記事の執筆・監修

キノコード
キノコード

テクノロジーアンドデザインカンパニー合同会社のCEO。
日本最大級のプログラミング教育のYouTubeチャンネル「キノコード」や、プログラミング学習サービス「キノクエスト」を運営。
著書「あなたの仕事が一瞬で片付くPythonによる自動化仕事術」や、雑誌「日経ソフトウエア」や「シェルスクリプトマガジン」への寄稿など実績多数。

はじめに

こんにちは。キノコードです。
「【5分レッスン】Ruby超入門コース#07 オブジェクト」について説明します。

オブジェクトとは

まず最初に、オブジェクトとはなんでしょうか?
Rubyでは、すべての値がオブジェクトです。
例えば、3や8などの数値はオブジェクトですし、
「hello」という文字列もオブジェクトです。
次のレッスンで紹介する配列も、オブジェクトになります。
このオブジェクトは、メソッドと呼ばれるもので操作することができます。
このメソッドを使うことにより、1.23という数値の小数点以下を四捨五入したり、helloという文字列の文字数をカウントできたりします。
また、オブジェクトは、何らかのクラスというものに所属しています。
3や8いうオブジェクトは、Integerクラスというクラスに所属していますし、"hello"というオブジェクトはStringクラスというクラスに所属しています。
また、このオブジェクトは、クラスから作ることができます。
クラスやメソッドについては、のちのレッスンで詳しく解説しますが、
今は、オブジェクトは何らかのクラスに所属していて、オブジェクトはメソッドで操作できると理解していればよいです。

数値オブジェクト

まず、数値オブジェクトからみていきましょう。
数値オブジェクトの代表的なものとして、整数の「Integerオブジェクト」、小数の「Floatオブジェクト」があります。
コードを書いていきましょう。

p 10

10という数値もオブジェクトです。
これは整数なのでIntegerオブジェクトです。
こう書くと10が表示できるはずです。
実行してみます。10が表示されました。

p 10.div(5)
p 10.remainder(3)

最初に、このオブジェクトは、メソッドと呼ばれるもので操作することができるといいました。
割り算メソッドはdivです。丸括弧の中に割る数値を記述しましょう。
5を記述してみます。10 ÷ 5は2です。
また、割った余りを算出するメソッドもあります。
remainderメソッドです。
丸括弧の中に割る数値を記述しましょう。
3を記述してみます。10 ÷ 3は3あまり1なので、1が表示されるはずです。
実行してみましょう。
2と1が表示れされました。
このようにオブジェクトには、オブジェクトを操作するメソッドがあります。

p 10.class
p 10.0.class

オブジェクトが所属しているクラスを調べるには、classメソッドで調べることができます。
10と10.0という数値にドットclassをつけてみましょう。
10は整数、10.0は小数点数です。整数のintergerと小数のfloatが表示されるはずです。
実行してみましょう。予想通りの結果です。

文字列オブジェクト

puts "Good morning".index("d")
puts "Good Morning".length

次に、文字列オブジェクトについてみていきたいと思います。
文字列オブジェクトはStringクラスです。
文字列オブジェクトは、レッスン5でもみたように、ダブルクオテーションで括れば良いです。
この文字列オブジェクトにも、メソッドがあります。
例えば、文字を探すindexというメソッドがあります。
dという文字を探してみましょう。
プログラミングでは、基本的には0からカウントします。したがって、1番目は0、2番目は1、3番目は2です。
dは4番目にあるので、3と表示されるはずです。
他にも、文字列の長さをカウントするlengthというメソッドもあります。
こちらは引数はいりません。半角スペースも含めて12文字あるので12と表示されるはずです。
クラスも調べてみましょう。先ほどみたように、ドットclassでオッケーです。Stringと表示されるはずです。
実行してみましょう。
5と12、Stringが表示されました。

trueとfalse

最後に、trueとfalseについてです。
まず、trueとfalseとはなんでしょうか?
trueとは正しい、falseは誤りという意味です。
例えば、10と1では10の方が大きいです。
つまり、「10>1」は正しいです。
正しいので「true」となります。
10>1を表示させるとtrueが表示されます。
また、Trueは、Trueクラスに所属します。
逆に「10<1」は誤りです。これはfalseとなります。falseはFlaseクラスに所属します。
コードを書いていきましょう。

p (10>1)
p (10>1).class

p (10<1)
p (10<1).class

10大なり1を表示させてみましょう。
また、これのクラスを表示させてみましょう。
trueの場合は「TrueClass」falseの場合は「falseClass」となります。
trueとTrueClassと表示されるはずです。
実行してみます。
予想通りの結果となりました。

p (10>1)
p (10>1).class

また同様に不等号を逆にしたものをやってみましょう。
実行してみます。
今後は反対に、falseとFalseClassが表示されました。

p (10<1)
p (10<1).class

aという変数に10を代入。bという変数に1を代入しましょう。
a>bは正しいです。
結果をbool01に代入してみましょう。
Trueが代入されいるはずです。
bool01のデータ型も確認してみましょう。
実行してみます。
「True」と、ブール型である「boolean」が表示されました。