すでにメンバーの場合は

無料会員登録

GitHubアカウントで登録 Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

登録がまだの方はこちらから

Pikawakaにログイン

GitHubアカウントでログイン Pikawakaが許可なくTwitterやFacebookに投稿することはありません。

Rails

【Rails】 2.Rubyの基礎文法を学ぼう

ぴっかちゃん
ぴっかちゃん

この記事では、Rubyの重要な概念である「オブジェクト」や「メソッド」「演算子」について学んでいきます。

※ カリキュラムでは、Cloud9のターミナルを利用します。
まだ用意していない方は「AWS Cloud9を準備しよう」を参考に導入してください。

Rubyプログラムの実行方法を学ぼう

Rubyのプログラムを実行する方法には、「rubyコマンド」と「irbコマンド」があります。

rubyコマンドでプログラムを実行する方法は、前回の章で学びましたね。
Rubyファイルに書いたプログラムは、ruby Rubyのファイルで実行できます。

ターミナル | rubyコマンドでプログラムを実行する方法
1
2
# ruby 実行したいRubyのファイル
ruby sample.rb

実行結果

この章では「irbコマンド」でRubyのプログラムを実行していくよ!

ぴかわかさん

irbコマンド

irbコマンドを実行すると、直接プログラムを書いて実行できる環境が立ち上がります。そのため、rubyコマンドのようにRubyファイルを用意する必要がありません。

動画のようにターミナルにirbと打ち込むだけで、起動することができます。

irb

irbを起動させると、画像のように2.7.5 :001 >が表示されます。この後にプログラムを直接書いて実行することができます。

※ 左側にある2.7.5は、Rubyのバージョンです。一致している必要はありません。

irb起動画面

ぴっかちゃん

irbの方が手軽にプログラムを試すことができるね!

irbコマンドでプログラムを実行してみよう

それでは、実際にAWS Cloud9を使ってプログラムを実行してみましょう。

まずは、irbを起動させます。
ターミナルにirbと打ち込んで、Enterキー(returnキー)を押してください。

irb起動

続いて、2.7.5 :001 >の後に以下の内容を書いて、Enterキー(returnキー)を押してプログラムを実行してみましょう。

irb (2.7.5 :001 >)
1
puts "Hello"

実行すると、動画のように「Hello」とターミナルに出力されています。

puts "Hello"は「Helloを出力させる」という意味だったので、プログラム通りに実行することができましたね。

=>はプログラムの実行結果を示します。今の時点では理解する必要はありません。

irbの起動を終了させる

最後にirbの起動を終了させましょう。

irbを終了するには「exit」または「quit」と入力して、Enterキー(returnキー)を押します。

irbを終了

これでRubyプログラムの実行方法の説明は終わります。

ぴっかちゃん

結局どっちのコマンドでプログラムの実行をすれば良いんだろう

irbは手軽にプログラムを試せるけど、複数行あるプログラムの場合はRubyファイルに記述してrubyコマンドで実行しよう!

ぴかわかさん
ポイント
  1. irbコマンドを実行すると、直接プログラムを書いて実行できる環境になる
  2. rubyコマンドのようにRubyファイルにプログラムを記述する必要がない
  3. irbを終了するには「exit」または「quit」を入力する

オブジェクト

Rubyで文字列や数値を作る方法や「オブジェクト」の概念について学びましょう。

文字列

Rubyで文字列(文字を意味する一列に並んだデータ)を作るには、基本的にシングルクォート(')、もしくはダブルクォート()で囲みます。

文字列を作る方法
1
2
"ダブルクォートで囲ったデータは、文字列です。"
'シングルクォートで囲ったデータも文字列です。'

先ほどirbコマンドで試したputs "Hello""Hello"も文字列です。

文字列

このようにデータをシングルクォート、もしくはダブルクォートで囲むことによって文字列にすることができます。

ぴっかちゃん

文字をプログラムの中で表すには、文字列にすれば良いんだね

文字列を作ってみよう

それでは、irbを起動して文字列を作ってみましょう。

動画のようにirbで"Hello World"と打ち込んでみてください。
Enterキー(returnキー)を押すと、文字列として認識されます。

文字列2

続いて、ダブルクォートなしのHello Worldを打ち込んでみましょう。

文字列エラー

すると、上の動画のようにエラーが発生してしまいましたね。
このようにシングルクォート、もしくはダブルクォートで囲わない場合は、文字列として認識されないので注意しましょう。

ポイント
  1. 文字列とは、文字を意味する一列に並んだデータのこと
  2. シングルクォート(')かダブルクォート()で囲むと文字列になる

数値

Rubyで数値(計算に利用できる数を表すデータ)を作るには、「数字」をシングルクォートやダブルクォートで囲むことなく、そのまま記述します。

数値の作り方
1
1000 #数値

数字をシングルクォートやダブルクォートで囲むと文字列になるので注意してください。

数値ではなく文字列になる
1
"1000" #文字列
ぴっかちゃん

プログラムの中で数値を表すには、数字をそのまま記述すれば良いんだね

数値を作ってみよう

それでは、irbで数値を作ってみましょう。

動画のようにirbで12345と打ち込んでみてください。
Enterキー(returnキー)を押すと、エラーが発生することなく数値として認識されます。

数値

ポイント
  1. 数値とは、計算に利用できる数を表すデータのこと
  2. 「数字」をシングルクォートやダブルクォートで囲まずに記述する

オブジェクト指向

Rubyでは、「Rubyで扱うことができる全てのデータ(値)は、オブジェクトである」という特徴があります。

先ほどの文字列や数値もRubyで扱えるデータなので、「オブジェクト」として判断することができます。「文字列オブジェクト」「数値オブジェクト」と呼ばれたり、単に文字列、数値と省略して呼ばれることもあります。

現段階でオブジェクトを完全に理解することは難しいので「Rubyでは全ての値はオブジェクト」とだけ覚えておこう!

ぴかわかさん

オブジェクトはクラスに属する

クラスに属するオブジェクト1

全てのオブジェクトは、何かしらのクラス(同じ特性をまとめてグループ化)に属しています。属するクラスによって、オブジェクトの種類が分けられます。

例えば、先ほどの文字列オブジェクトは「String」、数値オブジェクトは「Numeric」というクラスに属しています。

クラスに属するオブジェクト2

数値オブジェクトの場合は、もう少し細かくクラスが分けられます。

10のような整数のオブジェクトは「Integerクラス」、10.5のような浮動小数点数のオブジェクトは「Floatクラス」に属します。

数値オブジェクトのクラス

ポイント
  1. Rubyで扱うことができる全てのデータ(値)は、オブジェクトである
  2. オブジェクトは何かしらのクラスに属する

オブジェクトのクラスを調べてみよう

オブジェクトがどのクラスに属しているのかは、classメソッドを使うことによって知ることができます。(※メソッドの使い方は、後述する「メソッド呼び出し」で説明します。)

それでは、文字列オブジェクトと数値オブジェクトのクラスを調べてみましょう。
irbを起動して、以下の内容を全て実行してください。

irb | 文字列オブジェクトのクラスを調べる
1
"Hello World".class
irb | 数値オブジェクト(整数)のクラスを調べる
1
1000.class
irb | 数値オブジェクト(浮動小数点数)のクラスを調べる
1
10.5.class

実行すると、動画のようにStringIntegerFloatが出力されますね。

クラスを調べる

このようにclassメソッドを使うと、文字列オブジェクトは「Stringクラス」、数値オブジェクトの整数は「Integerクラス」、浮動小数点数は「Floatクラス」に属すことがわかります。

Rubyに予め用意されているメソッド

Rubyには、メソッド(オブジェクトを操作する処理)と呼ばれる機能があります。

メソッドは、「Rubyに予め用意されているメソッド」と「ユーザが独自に定義できるメソッド」がありますが、ここでは前者の予め用意されているメソッドの使い方を説明します。

メソッド呼び出し

メソッドを利用するには、「対象のオブジェクト」と「実行したいメソッド名」をドット.)で繋ぎます。

メソッドの実行を開始する
1
オブジェクト.メソッド名

上記の指定によって、オブジェクトの操作が可能になります。

先ほど「classメソッド」を利用した際にも、対象のオブジェクトが属すクラスを調べることができました。

メソッドの実行を開始する

このようにメソッドを利用することで、対象のオブジェクトを操作することができます。

ポイント
  1. メソッドとは、オブジェクトを操作する処理のこと
  2. メソッドを利用するには、オブジェクトに対してメソッド名を.で繋ぐ

オブジェクトが利用できるメソッド

オブジェクトが利用できるメソッドは、オブジェクトが属すクラスによって決まります。

文字列オブジェクトは、Stringクラスに所属しています。そのため、Stringクラスで定義されるメソッドを利用することができます。数値オブジェクトも同様の考えです。

オブジェクトが利用できるメソッド

それでは、実際に手を動かしながら理解を深めていこう

ぴかわかさん

文字列オブジェクトが利用できるメソッドを呼び出してみよう

文字列オブジェクトが利用できる「lengthメソッド」を呼び出してみましょう。
lengthメソッドは、文字列オブジェクトの文字数を返すメソッドです。

irbで以下の内容を実行してください。

irb | lengthメソッドを呼び出す
1
"Hello World".length

実行すると、動画のように"Hello World"の文字数である11を返します。

lengthメソッドを呼び出し

lengthメソッドは、Stringクラスに定義されるメソッドなので、文字列オブジェクトで利用することができます。

しかし、Numericクラスには定義されてないメソッドなので、Numericクラスに属す数値オブジェクトで呼び出すとエラーが発生します。

試しにirbで10.lengthと実行してみましょう。

エラー

上の動画のように数値オブジェクト(10)に対して、lengthメソッドを呼び出すとエラーが発生します。

ポイント
  1. Stringクラスには、文字列オブジェクトを操作するメソッドが定義される
  2. Numericクラスには、数値オブジェクトを操作するメソッドが定義される
  3. オブジェクトは、所属するクラスで定義されるメソッドが利用できる

演算子

演算子と呼ばれる記号をプログラムで使うことで、基本的な計算をすることができます。

Rubyにはたくさんの種類の演算子がありますが、ここでは計算を行う算術演算子と値同士を比較できる比較演算子について学んでいきます。

算術演算子(四則演算と剰余演算)

Rubyも含めてプログラミング言語では、四則演算(足し算・引き算・掛け算・割り算)や剰余演算(割り算の余りを計算)などの基本的な計算を行うことができます。

Rubyでは、計算処理に以下の記号を使います。

記号(算術演算子) 名前 意味
+ 足し算 a + b aにbを足す
- 引き算 a - b aからbを引く
* 掛け算 a * b aにbを掛ける
/ 割り算 a / b aをbで割る
% 剰余 a % b aをbで割った余り

以下のように指定することで、数値を計算することができます。

算術演算の基本構文
1
数値オブジェクト 演算子 数値オブジェクト

足し算の場合

数値同士を計算してみよう

それでは、irbを起動して数値同士を計算してみましょう。

以下の内容を順番に実行して、どんな結果を得られるか試してみましょう。

irb | 足し算を行う
1
10 + 5
irb | 引き算を行う
1
10 - 5
irb | 掛け算を行う
1
10 * 5
irb | 割り算を行う
1
10 / 5
irb | 剰余を行う
1
10 % 5

実行すると、動画のように計算処理の結果が出力されます。

このように「+ -* /%」を使うことで、数値同士を計算することができます。

オブジェクト同士を「+」で連結してみよう

+は単に足し算だけではなく、オブジェクト同士を連結することができます。

次のように、irbで文字列同士を連結してみましょう。

irb | 文字列同士を連結させる
1
"abc" + "dfg"

実行すると、動画のように文字列同士が連結して"abcdfg"が返ります。

文字列同士の連結

それでは、文字列と数値も同じように+で連結してみましょう。
以下の内容をirbで実行してください。

irb | 文字列と数値を連結させる
1
"今年で" + 20 + "歳になります。"

実行すると、動画のようにエラーが発生します。

数値と文字列の連結エラー

オブジェクトの種類が違う場合は、単に+だけでは連結することができません。

文字列と数値を連結させるには、to_sメソッド」で数値を文字列オブジェクトに変換する必要があります。

動画のようにirbで20.to_sを実行してみましょう。

実行すると、文字列オブジェクトである"20"が返りますね。

それでは、先ほどのプログラムの2020.to_sに修正して再度試してみましょう。
以下の内容をirbで実行してください。

irb | 文字列と数値を連結させる
1
"今年で" + 20.to_s + "歳になります。"

実行すると、エラーが発生することなく連結することができましたね。

オブジェクトを連結する

ポイント
  1. 文字列同士は+で連結することができる
  2. 数値を文字列として連結するには、数値にto_sメソッドを使う
  3. to_sメソッドは、数値を文字列オブジェクトに変換する

比較演算子

2つの値の大小関係を表すには、><の不等号を使うと学校で習いましたよね。

Rubyでも以下の記号を使うことで、値同士を比較して結果を得ることができます。

記号(比較演算子) 条件
== a == b aとbが等しい
!= a != b aとbは等しくない
> a > b aはbより大きい
>= a >= b aはb以上
< a < b aはbより小さい
<= a <= b aはb以下

上記の比較演算子を使う場合は、条件が正しければtrue、条件が正しくなければfalseが返ります。

比較演算子

比較演算子を使ってみよう

それでは、irbで比較演算子を使って値同士を比較してみよう。

以下を順番に実行してみましょう。

irb | 10と10は等しいか
1
10 == 10
irb | 10と10は等しくないか
1
10 != 10
irb | 10は5より大きいか
1
10 > 5
irb | 10は5より小さいか
1
10 < 5

実行すると、画像のような結果を得ることができます。

実行結果

続いて、>>=の違いについて確認していきましょう。

a > bは「aはbより大きい」、a >= bは「aはb以上」という意味ですが、この2つの違いはbを含むか含まないかという点です。

「5より大きい」という表現では、5は含みません。「5以上」という表現は5を含みます。

irb | 5は「5より大きいか」
1
5 > 5
irb | 5は「5以上か」
1
5 >= 5

上記を実行すると、画像のようにそれぞれfalsetrueが返ります。

比較演算子の例

<<=も同様の考えで、その値が含まれるか含まれないかの違いがあります。

ぴっかちゃん

〇〇以上(>=)・〇〇以下(<=)は、〇〇が含まれるってことだね

あとは、〇〇より小さい(>)・〇〇より大きい(<)は、〇〇が含まれないことも覚えておこう!

ぴかわかさん

さいごに

この章では、オブジェクト、メソッド、演算子などのRubyの基礎文法を学ぶことができました。次の章では、変数について学んでいきます。

この記事のまとめ

  • irbコマンドを実行すると、直接プログラムを書いて実行できる環境になる
  • Rubyで扱うことができる全てのデータ(値)は、オブジェクトである
  • メソッドとは、オブジェクトを操作する処理のこと