【徹底解説】関数(メソッド)の理解の仕方

 

プログラミングの入門をする上で最も大事と言っても過言ではない

「関数またはメソッド」(以下、どちらも関数と呼びます)

 

皆さんは関数と聞くと何を思い浮かべますか?

一般的には、数学の授業で聞く言葉だと思います。

ではどうして、プログラミングの世界でメソッドの事を関数と呼ぶことになったのでしょうか?

それは数学の関数とプログラミングの関数が非常に似ているからです。

そこで、まずは数学的な関数を見てみましょう。

難しい話はしませんので、数学アレルギーの人も拒絶せずに

読み進めてもらえると嬉しいです。

 

まず、関数とは何でしょう?

関数とはある任意のxを与えると必ず1つのy(解)を返してくれるものです。

ちょっと言葉だけでは難しいですね。

それでは、数学的な関数とは代表的なものに何があるでしょうか?

私が一番はじめに思い浮かべる関数は

y = ax + b

です。これは一次関数と呼ばれるものですがaとbは定数(任意で数を決めれる)ので具体的に

y = 2x + 3

を見てみましょう。

この関数はxを指定するとある数字が答えを出してくれます。例えば、x = 3であれば yの値は9になります。これはいろんな数字に当てはめれますよね。

なので、関数とは特定のXを与えると1つのYを返してくれるものです。

 

 

この関数のような考え方はは数学に限られていません。

 

例えば、食材を与えると美味しい料理を作るシェフがいるとします。このシェフはある意味、関数のような働きをしていると言えましょう。

具体的にはこのシェフに「人参、じゃがいも、牛肉、カレー粉」をXとして、渡してあげると、このシェフはカレーというYの値を返してくれます。

 

 

このようなXを与えるとYを返すというのが、一般的な関数の概要です。

なので、プログラミング的な関数(メソッド)も同じだと言えます。

 

ただ、プログラミングでは上記のXを引数と呼び、Yを戻り値のといいます。

 

 

それでは実際のコードを見ていきましょう。

今回はRubyコードを使用していますが、主要なプログラミング言語ではこの概念は変わりません。

それでは与えられた2つの数字(引数)を足し算をするメソッドを作成しましょう

# メソッド名はadd
# 引数はa, b

# どんなメソッドを作るか、どんな引数を引き受けるかは自分で決めるので、
# メソッド名と引数の名前は自由に名前を決めることが出来ます。

# メソッドの定義(作成
def add(a, b)
  return a + b
end

# メソッドの呼び出し(使用)
add(3, 2)
# =>戻り値は5になる

このコードを図式化すると以下のようになります

 

この図で追加されているものですが、

「呼び出しのコードそのものが戻り値に変わる」

これは非常に大事な概念なのでしっかりと理解してください。

 

つまり、

result = add(2, 3)

というコードは

result = 5

というコードとしているのと全く同じです。

 

ここで、どうして 5 と直接書くのではなく add(2,3) と書くのかというといくつか理由があります

まず、この例題では足し算をするメソッドを使用しているので

頭の中で5とすぐに戻り値を予想できますがこれがすごく複雑な処理だと

戻り値が予想できないのでメソッドを使用しないといけません。

次に、今回の場合では引数(a, b)が予め決められていますが

これは実際には変数になっていたりしますのでメソッドを使用する前に答えを予想することができなくなります。

 

お疲れさまでした。

ここまでで、メソッドの基本的な概念は終わりです。

プログラミングではたくさんの関数(メソッド)を使用します。

書いているもののほとんどが関数と言っても過言ではありません。

関数を定義することも多々ありますが、大きくは他人が作成した関数をしようするということがほとんどです。

その際に、引数として何が必要でどのような戻り値をくれるのかという概念で関数をみると

簡単に理解して関数の詳細を理解しなくても使用することが出来ます。

 

なので、関数(メソッド)を使用または定義する際は引数と戻り値に注目してみましょう。 

 


 

Naggi Club(ナギ倶楽部)ではプログラミング学習をサポートしております。

現役のシリコンバレーエンジニアが豊富な経験と知識により、挫折しないプログラミング学習を全力で提供します。

プログラミングに関する技術的な質問からスケジュール管理やモチベーション維持まで精一杯サポートさせていただきます。

詳しい情報はこちらからよろしくおねがいします。

 

もし興味があり、ご登録の頂ける場合はこちらのリンクから登録いただけると500円の割引がございます!

 

大阪桐蔭高校中退。TECH::CAMP梅田でプログラミングを学習する。 同じくTECH::CAMPでメンターを経験する。 その後、渡米しカリフォルニアの大学に行きながら シリコンバレーで現役のエンジニアとして働いている。 同時にTECHACADEMYのメンターをしている
投稿を作成しました 16

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

関連する投稿

検索語を上に入力し、 Enter キーを押して検索します。キャンセルするには ESC を押してください。

トップに戻る
%d人のブロガーが「いいね」をつけました。