Webサイト制作コースのお申し込みはこちら Webサイト制作コースのお申し込みはこちら

プログラムにおいて文字列と並んで大事なものは「数値」です。Rubyのプログラムではこの数値を何気なく使ってしまいますが、実は非常に奥深いものです。

また数値に関する多数のメソッドを使い、効率的に実装することも可能です。特に、数値に直接ドットとメソッド名をつなげて処理を書けるというのは、Rubyの世界ではすべてオブジェクトというのを実感できる使い方です。

この記事では、数値の基本と各種メソッド(一例としてtimesメソッド)について解説します。

数値とは何か

Rubyでは、数値ですらオブジェクト

数値とは?と聞かれても困るくらい、普通に使うものです。

ここでは数学的な意味ではなく、Rubyの仕組みの中での位置付けを探ります。

Rubyではすべてのモノが例外なくオブジェクトです。何らかのクラスを元に生成されたインスタンスだけではありません。

数値や文字列といった、他言語ではプリミティブ型と呼ばれているモノですら、Rubyの世界ではオブジェクトです。

他言語、例えばJavaの世界では数値はプリミティブ型と呼ばれる、いわゆる「オブジェクトではない原始的なモノ」です。オブジェクトとして扱いたいときは、Integerクラスというラッパークラスを使います。

Java以外でも一般的に開発言語においては、数値とオブジェクトは別扱いになります。

ところが、Rubyでは数値ですらオブジェクトなので、数値.メソッドという記述がありえます。

数値に関連するクラス

数値によって、どのクラスに属するのか変わります。以下は、数値に関するクラスの仲間たちです。

Numeric -+-- Integer -+-- Fixnum (整数)
         |            |
         |            +-- Bignum (整数かつ大きな整数)
         |
         +-- Rational(有理数)
         |
         +-- Float (浮動小数点数)
         |
         +-- Complex(複素数)

どのクラスに属しているか

数値がどのクラスに属しているかを調べるには、classメソッドを使います。

puts 5.class()
puts 3.14.class()
puts (1 + 3i).class()

[実行結果]

Integer
Float
Complex

数値がいずれかのクラスに属していることがお分かりいただけたと思います。余談ですが、複素数ですら普通に表現できるところが、Rubyのすごいところです。

数値と文字の変換

Rubyにおいて、数値から文字列、文字列から数値の変換は、とても簡単です。

p 3.to_s
p "3".to_i

[実行結果]

"3"
3

相互に変換できたことが分かりました。

数値を扱う演算子

数値を扱う演算子を解説します。

他の言語と変わらない四則演算、つまり加算(+)減算(-)、乗算(*)、除算(/)と剰余(%)は省略します。

それ以外に1つ、Rubyらしい演算子を解説します。

多重代入

複数の変数に、一気に代入する方法があります。多重代入です。

x, y, z = 3, 1, 2
puts x
puts y
puts z

[実行結果]

3
1
2

3つの変数に、一気に数値を代入することができました。Ruby独特の方法です。とても便利ですね。

Rubyにもやっぱりあった自己代入

開発言語でおなじみの自己代入もあります。

sum = 0

for i in 1..5 do 
    sum += i
end

puts sum

[実行結果]

15

「sum += i」は「sum = sum + i」と同じ意味です。

Rubyにはインクリメントがない!

残念なことに、Rubyにはインクリメントがありません

「i ++ 」といったおなじみの実装はできません。「i += 1」とする必要があります。

数値に関連する便利なメソッド

ここでは、Rubyの数値に関するメソッドを解説します。

超便利!繰り返しで使うtimesメソッド

5回、同じ数値を表示させたいときはtimesメソッドを使います。数値ドットtimesで記述します。

5.times do |i|
    puts i
end

5回数値を表示させることができました。

他の言語では、「インスタンス.メソッド名()」の形式でメソッドを実行します。上記のプログラムは、数値がオブジェクトと同じ扱いであることを如実に物語っています。

奇数か偶数か

奇数か偶数かを判断するには、even?またはodd?を使います。

puts 3.even?
puts 3.odd?

[実行結果]

false
true

英語で偶数?奇数?と聞いているようで、直感的で分かりやすいですね。また「数値 % 2 == 0」で偶数かどうかを判断させる方法もできますが、こちらの方が語りかけるようで分かりやすいです。

プラスかマイナスか

プラス、またはマイナスを判断するメソッドがあります。negative?とpositive?です。

plus = 3
minus = -3

puts plus.negative?
puts plus.positive?

puts minus.negative?
puts minus.positive?

[実行結果]

false
true
true
false

0以上か以下か、不等号の演算子で評価することも可能ですが、先ほどの例と同じく語りかけるようで分かりやすいです。

ゼロかどうか

比較演算子で==0とやっても良いのですが、これも一応メソッドがあります。zero?です

num = 0
puts num.zero?

[実行結果]

true

if文でこれを使うと、見た目上分かりやすいです。

num = 0

if num.zero?
    puts "ゼロです"
else 
    puts "ゼロではありません"
end

ゼロかどうかをzero?と聞いているようで、面白いですね。

特殊な演算子 <=>

Rubyには、<=>という珍しい比較演算子があります。

例えばaとbという2つの変数があり、演算子で比較すると、以下の結果を返します。

a < b の場合は -1
a = b  の場合は 0
a > b の場合は 1

実際に見てみましょう。

a = 3
b = 2

puts a <=> b

[実行結果]

1

a > b なので1が返ってきました。

まとめ

本記事では、Rubyにおける数値の扱いの基本を解説しました。

数値を自在に扱うには、本記事の内容だけではまだまだ知識がたりません。数値の応用編の記事も参考にしてくださいね!

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。