【Ruby】とても大事!メソッドの基本的な使い方を復習しておこう

プログラミングを始めた時に混乱するのがメソッドだと思います。

僕は会社の研修でC#の勉強を始めた時にメソッドの使い方がよく分からず、色々と先輩に教えてもらいました。実際のところ、引数とか戻り値とかよくわらなくないですか?っていうのが当時の本音でした。

しかしながら数をこなすにつれて、徐々に理解し使えるようなってきたのです。そんな今日は、僕が理解しているメソッドについて復習の意味も込めて解説したいと思います。

メソッドの存在意義ってなんだ

そもそもメソッドって何者?っていう根本的な疑問を持つかもしれません。

メソッドとは英語でmethodと書きます。意味としては「方法」と理解しておいてもらえれば良いでしょう。最近はカタカナ語でメソッドとして知られ、〇〇式メソッドなど意識高い系の人々が多く使う印象ですね。

さて、そんなメソッドですが、プログラミング世界では常識的な存在であり、日常的に触れ合うお友達みたいなものです。メソッドの種類も様々で、使う場所や空間によって色々と定義があります。ざっくばらんにまとめると「いくつかの処理をまとめたもと」ということができるでしょう。

厳密な話は置いておくとして、さっそく例を用いながら説明していきます。

 

メソッドの例

例えば、何か数字を計算してくれるメソッドを作るとしましょう。今回はC#ではなく、さいきんになって勉強を始め、早速ハマり気味なRubyのメソッドで説明します。とはいえ言語によるメソッドの違いはあまりないのですが・・・。

 

ざっと書いてみました。プログラミングの大まかな流れとしては、キーボードで打ち込んだ数字を引数として、その数に5を掛けた数値を戻り値として画面に表示させるプログラミングです。

この簡単なメソッドのソースコードはこちらからダウンロードできるます。何に活用するか分かりませんが、コードを書くのが面倒くさい方ぜひどうぞ!

 

メソッドの詳細解説

aec-1782427_640

まずはRubyにおいてのメソッドの書き方についておさらいします。Rubyでメソッドを書く場合はdef~endで囲むことによって定義することができます。他の言語、例えばC#だとメソッド部分は{}で囲みますがRubyは違います。

他の言語と一緒に勉強すると、このへんで頭が混乱するんですよね。もちろん書く前にググって確認するのがベストなんでしょうけど・・・

 

メソッドについての解説と補足

一番始めに理解する必要があるのは、メソッドはあくまでも呼び出されて機能するということです。またRubyでは、メソッドは呼び出す位置よりも前で定義する必要があります。そして、呼び出されるまで処理も行われないということも合わせて理解しておきましょう。

続いてメソッドの中を解説していきます。

Rubyでメソッドを定義するにはdefの後に続いてメソッド名を明記します。上記の場合のメソッド名はCalcですね。それでは横にあるカッコとその内部に書かれているinputNumberはなんでしょうか。これらはプログラミング界では「引数」と呼ばれるものです。

 

引数

引数は「引かれてくる数」と書きます。意味合いはメソッドの呼び出し側から渡ってくる値。メソッドへと引っ張られる値を意味しています。カッコの中に、その引っ張られた数を代入して、メソッド内で使用しますよ!ということが書かれています。その証拠にdef内には同じinpitNumberが利用されています。

def内部は数式そのままなので、特に解説は加えません。簡単な計算式(処理)がまとめて書かれているとだけ押さえておけば十分です。上記の説明の通りdefで定義されたメソッドはendで終了です。利用するプログラミング言語によって閉じ方は様々ですが、Rubyの場合はendでメソッドを閉じます。

この方法はRubyを学ぶ上で覚える必要のある事項なので、ちゃんと理解しておきましょう。

 

画面上でのプログラミングの動き

それではメソッドから進んで画面側での処理について考えていきます。

Rubyにおいてputsは、後に続く値を表示させるメソッドです。現在の例では、ダブルコーテーションで囲まれた箇所の中身を画面に表示します。この場合は「何か数字を入力して下さい」ですね。これでRubyの基礎であるputsについて理解できたでしょうか。

 

続いておこなうべき処理は、画面を通して受け取った値に対する処理です。その値を受け取るためにNumberという変数を用意します。そしてその中身に、getsメソッド(キーボードで入力された値を受け取るメソッド)で受け取った値を代入すると書かれています。

例えばあなたが5のキーボードを押したとしましょう。その場合はプログラミング内で5という数字もしくは文字列を、そのまま入力されたとおりに受け取ります。

そして続くto_iメソッドは文字列を数値に変換するメソッドです。詳しい説明はデータ型についての記事で確認してみてください。

 

Rubyのputsメソッド

さて、ここの次の行(11行目)からがメソッドの呼び出す側になります。

式の自体は「puts Calc(Number)」のようになっていますが、なんだか理解しづらいですね。こういう時は1つづつ進みましょう。まず初めに見るのはputsメソッドです。これは先ほどと同様に後に続く値を画面に表示させるメソッドなので良いでしょう。ではputsの後のCalc(Number)はなんでしょうか。

これこそがメソッドの呼び出し方であり、基本的なメソッドの呼び出し方になります。

 

メソッドを呼び出そう

メソッドをコード上で呼び出す倍の押さえて置くべきポイントは「名指しで指定する必要がある」ということです。自分が定義したメソッドを使用する時で、かつメソッドの外から数を渡す必要な数値がある場合は、メソッドを呼び出すと同時にカッコの中に数を示して値を引き渡す必要があります。

この例の場合はgetsで受け取った値を変数Numberに代入して、その値を引数としてCalcメソッドに渡しています。

 

Calcメソッド内をよく見ると、受け取った値に対して5を掛け算するという処理内容が書かれていて、「何かの数字を引き付いて計算をおこなう」と大まかに予想することができます。私達プログラミングに関わる僕たちはこうした値のやり取りを「引数」と呼びます。

 

戻り値

メソッドを呼び出す時に引数を渡しましたと、ここまでは理解できたと思います。この呼び出された時に初めて読み込まれたメソッドが処理されます。引数として渡ってきたNumberをinputNumberとして受け取り計算を行います。

この時、NumberとinputNumberの値は同じになっています。

Calcメソッド内で処理された値である変数totalには式が示す通り、getsで受け取って5倍された値が代入されています。この次の行にあるreturnは、メソッド内で処理された値を、呼び出し側に返すことを意味しています。この場合はtotalに入っている値を返します。この返される値を戻り値と呼んでいます。

 

さて、戻り値として返ってきた値は呼び出し側ではどのように扱われるのでしょうか。

今回はメソッドが呼び出される前にputsメソッドが記されています。このメソッドにより、Calcメソッドに返ってきた値を画面に表示させることが出来るのです。今回のプログラミングの流れを簡単に説明しますので、確認してみてください。

 

始めに5を入力した想定で一連の流れを確認します。

5を入力するとgetsメソッドから変数であるNumberに値が渡り、Calcメソッドが呼び出されれます。Calcメソッド内ではinputNumberとして扱われ、計算が施されて25となります。この値がreturn の効果により、メソッドが呼び出された場所へ「数値:25」として返ってきます。そして最後にputsメソッドを通すことで画面へと表示されるのです。

こうした値の動きがプログラミングの真髄といえます。キーボードで入力さた値が変数へ代入され、メソッドを通して加工され、あちらこちらへと動き回って表示されたりするの、そういう値のやり取りや動きが、まさにプログラミングなのです。

 

まとめ

メソッドやプログラミングの動きについて解説してきました。いかがでしたでしょうか。

難しくて分からない部分も、バッチリ分かった部分もあることでしょう。プログラミングにおいてメソッドについて理解を深めることは絶対必要なので、この記事を通してメソッドについて理解して貰えたなら嬉しいです。

これからもプログラミングにまつわる話題をたくさん出していきます。一緒に勉強していきましょう!

この記事が気に入ったら
いいね ! しよう

Twitter で
SPONSORED LINK

ABOUTこの記事をかいた人

旅・音楽・プログラミング・ブログを愛するコンテンツ・クリエーター。フィリピンで就業、カナダで語学留学を経験しニュージーランドで大学を卒業。 TECH::CAMPの二十九期生としてRuby / Ruby on Railsを勉強しました。記事の執筆・広告は「お問い合わせ」からお願いします。