【第9回】Ruby初心者向け!Rubyのメソッドの使い方
Rubyにおけるメソッドとは?
Rubyを勉強する上で外すことのできない「メソッド」について紹介します。
Rubyのメソッドとは?
Rubyにおけるメソッドとは、ある一連の流れをモジュール化し再利用するためにまとめ上げたものです。
JavaScriptなど他のプログラミング言語では「関数」と呼ばれたりもします。
例を取って説明してみましょう。
例えば、三角形の面積を求めるプログラムを書くとします。
そして、毎回計算に使う底辺や高さは異なります。
こういった場合にはシンプルな方法として、毎回式を入れれば目的の面積は求めることができます。
tri = 3 * 2 / 2 (底辺×高さ÷2)
p tri => 3
tri = 4 * 3 / 2 p tri => 6
これは三角形の面積を求めるだけのシンプルな公式ですが、底辺や高さの値は変わっても、底辺×高さ÷2という部分は公式なので変わりませんね。
例に使ったのは、三角形の面積を求めるシンプルなものですが、これが円を求める公式なら?さらに複雑な値を求める式なら?
記述は大きくなりますし、毎回違った値を求める度に公式を書いていては、手間がかかってしまいますよね。
何度も書くような部分、つまり一連の流れをまとめていつでも呼び出せるようにすれば、作業がぐっと楽になると思いませんか?
その時に活躍してくれるのが、メソッドとなります。
もう一度、冒頭で紹介したメソッドの定義を思い出してみましょう。
> Rubyにおけるメソッドとは、ある一連の流れをモジュール化し再利用するためにまとめ上げたものです。
Rubyでメソッドを使ってみる
メソッドを定義してみる
それではさっそく、Rubyでメソッドを使ってみます。
Rubyでメソッドを使うには以下の形でメソッドを定義します。
def メソッド名
処理の流れ
end
これがメソッド名の原型となります。それではシンプルに「hello!」と挨拶するだけのhelloメソッドを定義してみましょう。
def hello
puts "hello!"
end
非常にシンプルですが、これだけで動作するメソッドを作成しました。
メソッド名は「hello」
そして、処理の流れには”hello!”という文字列を出力するコードを書いています。
メソッドを呼び出してみる
せっかくメソッドを定義したので、さっそく呼び出してみましょう。
メソッドを呼び出す方法はとてもシンプルで、メソッドを名を記述するだけで呼び出すことが可能です。
hello => "hello!"と出力される
とても簡単ですね。
メソッドに引数を使ってみる
ここから冒頭で紹介したような、三角形の面積を求めるメソッドを書いていきたいと思いますが、ただ単に文字列を返すメソッドでは目的のものは作れそうにありません。
作りたいメソッドに求める機能は
・三角形の面積を算出してくれる
・毎回、違った数値で計算してくれる
この2点になります。
三角形の面積は公式を書けばいいのでなんとか実装できそうですが、毎回違った数値で面積を求めてくれるのはここまでの内容では厳しい気がします。
これには、定義したメソッドに毎回異なる値(この場合、数値)を渡す必要がありそうです。
定義したメソッドに値を渡すには引数というものが役立ってくれます。
それでは引数というものは何でしょうか?
例として、メソッドに引数を渡し、それを出力するだけのメソッドを書いてみます。
def num(i)
puts i
end
num(10) => 10 #出力結果
メソッドで引数を使う場合は、メソッド名の後ろに()を付けます。
この中に引数を受け取る変数を記載します。上記、例では変数をiと定義しています。
そして、実行の際にnum(10)といった形で引数に10を入れています。
これでメソッドを呼び出す際に、引数10を変数iに渡すという流れになります。
メソッドを使い三角形の面積を求めてみる
ここまで紹介したメソッドや引数を使えば三角形の面積を求めるコードが書けそうです。
ざっくり言葉で説明すると、
・三角形の公式をメソッドで定義する
・毎回、異なる値で計算できるよう引数として渡す
このような感じであれば作れそうです。
さっそく定義していきましょう。
まず、メソッドで三角形の公式を求めるメソッドを書いてみますメソッド名はtriangleということで、triにしてみます。
def tri(底辺,高さ)
puts 底辺 * 高さ / 2
end
・triメソッドを呼び出す
・tri(底辺,高さ)のように引数として底辺や高さの値を渡す
メソッド内に三角形の面積を求める公式を書き、メソッドを呼び出す時に底辺や高さの値を引数として渡します。
なお、複数の引数もカンマで区切れば渡すことができます。
もちろん、このコードだとエラーが出てきます。底辺や高さの部分を変数名に入れ替えたり、数字を入れる必要があるからです。
それでは、底辺をwidth 高さをheightと変数名を定義し、底辺が2 高さが4の三角形の面積を求めていきます。
メソッド定義後、出力される値が4になれば成功したと言えます。
def tri(width,height)
puts width * height / 2
end tri(2,4) =>4
問題なく、三角形の面積4が出力されたと思います。
これで三角形を求めるメソッドは定義できたので、いくらでも再利用が可能です。
tri(4,4) => 8
tri(3,4) => 6
このように一連の流れをモジュール化してメソッドと定義することで、コードを簡潔に、同じことを繰り返さずに書くことができます。
まとめ
今回、Rubyのメソッドの定義の仕方や使い方(呼び出し方法)を紹介しました。
一連の流れをモジュール化して、再利用可能な状態にするメソッドは他のプログラミング言語でも使われるので、しっかり抑えておきましょう。
▼関連記事
【第1回】Ruby初心者向け!ターミナルで動くコードを書いてみる