プログラミングに出てくる関数の意味がよくわかりません。
関数を使うと何かいいことはあるの?
実際どうやって使えばいいか、具体例なども交えわかりやすく教えて欲しい。
本記事の内容
プログラミングで「関数」を理解できるようになると、誰でも見やすく、品質の高いソースコードになります。
とはいえ「関数」と聞いて、ちょっと難しそうだなと思ってしまいますよね。
大丈夫です。
この記事では「関数」について具体例を挙げつつ、図解しながら初心者にやさしく解説していきます。
1.関数とは?
まず、プログラミングで使う「関数」の前提知識をここで解説します。
プログラミングの「関数」とは一言でいうと、
一連の処理をひとまとめにし、「関数名」を指定するだけで結果が得られるようにした命令のこと。
このように捉えておいてください(図解)。
例えていうなら「銀行ATM」を使ってお金を下ろすことが、ちょうど「関数」を使うことに似ています。
ちょっとここで、銀行ATMでお金を下ろすことを考えてみましょう。
「銀行ATM」を使ってお金を下ろす ≒ 「関数」を使う
銀行ATMでお金を下ろす際には、まず以下のような手続きを行いますよね。
- カードを入れる
- 暗証番号を入れる
- 引き出す金額を指定する
そのあと銀行ATM内では以下のような様々な処理が行われます。
- カード情報を読み込む
- 誰の口座か特定する
- 口座残金チェック
- 口座残高から引き出す金額を差し引く...
上記の銀行ATM内で行われる処理が、お金を引き出すための「一連の処理をひとまとめ」にしたものです(下図)。
そして最後に現金が出てきます。
現金を得るために「銀行ATM」という関数を使うイメージですね。
「関数」は2種類ある
下記のとおり「関数」は2種類あります。
- 標準関数
- ユーザー定義関数
「標準関数」とはプログラム言語に既に用意されている(組み込まれている)「関数」のこと。
PHPでいえば、以下のような関数が標準関数と呼ばれるものです。
- round():数値を四捨五入する関数
- strren():文字列の長さを得る関数
- str_replace():文字列を別の文字列に置き換える関数
- file_exists():ファイルやディレクトリの存在有無を確認する関数など
一方、「ユーザ定義関数」は、「標準関数」にない機能を自分で作るオリジナル関数のことです。
記事後半では、「ユーザ定義関数」の書き方や、作った「関数」の使い方について解説しますね。
2.関数を使うメリット
それでは、「関数」を使うメリットについて解説していきます。
順番に解説します
1.使いたい機能が簡単に使える
プログラマーにとって「関数」があることは非常に便利です。
必要な情報を「関数」に渡してあげるだけで、得たい情報がすぐに手に入ります。
複雑な内部処理は意識しなくていい
普段僕たちは「銀行ATM」を使う時、ATMの内部処理なんて意識しませんよね。
- キャッシュカード
- 暗証番号
- 引き出し金額
上記をATMに入力することで現金が出てくる、ということだけ知っているはずです。
プログラマーも同じように「関数」がやってくれること(目的)さえ知っておけばいいだけ。
「関数」内の様々な処理は意識しなくても、簡単に結果を得ることができるんです。
2.同じ処理を何度も記述する必要がない(可読性や保守性が向上)
プログラムを書く時、同じような機能を使いたいことって多いです。
しかし、そのたびに同じ処理を記述することは、コードが長くなりデメリットとなります。
- ソースコードが読みづらい
- バグが混入しやすくなるなど
可読性や保守性が向上
「銀行ATM」の内部で行われている様々な処理を、銀行窓口でやっていると窓口の担当者はかなりの労力ですよね。
お客さんが来るたびに、口座チェックなどやって現金を引き出さないといけません。
また、作業中にミスをしてしまう可能性もあります。
しかし、現金引き落としの一連の処理を「銀行ATM」にまとめておくことで、担当者の労力やミスはかなり軽減されます。
これはプログラムにも同じようなことが言えるんです。
「関数」にしておくことで無駄な作業も減るし、コードミスも防ぐことができます。
関数にしておくことで、無駄な記述がない。メンテナンスもしやすい。
関数にしないでおくと、同じ処理が複数存在する。メンテナンスしずらいし、コードも長くなって読みづらい。
3.関数の書き方(定義)・使い方(呼び出し)
では実際に「関数」の書き方(定義)や使い方(呼び出し)を解説していきます。
プログラムで「関数」を書くことを「定義する」と言い、使うことを「呼び出す」と言います。
以降、このように言い回していきます。
順に解説します。
1.関数を定義する方法|ユーザー定義関数
「関数」の定義の仕方は以下の通りです。
function 関数名(引数) {
処理...
...
return 戻り値
}
まず、「function」というキーワードがあります。
「function」はオリジナル関数であることを宣言するもので、「ユーザー定義関数」であることを示します。
「ユーザー定義関数」を書く上でお決まりだと思ってください。
「function」に続けて「関数名」を書き、()内に引数、{}内に処理を記述します。
また、関数が何らかの値を返すのであれば、returnのあとに戻り値(変数や値など)を記述します。
ユーザ定義関数は「function」「引数」と「戻り値」がポイント!
これから「引数」と、returnのあとに記述する「戻り値」について解説していきます。
具体例として「ドルを円に換算する関数」を使って解説していきます。
まずは「ドルを円に換算する関数」の仕様を見ていきましょう。
例)ドルを円に換算する関数
以下、ドルを円に換算するユーザ定義関数です。
PHP function DollarYenConversion($doll, $rate) { $yen = $doll * $rate; return $yen; }
関数の仕様は以下の通り
説明 | ||
関数名 | DollarYenConversion | ドルを円に換算する関数 |
引数 | doll | ドル |
rate | レート | |
戻り値 | yen | 換算後の円 |
機能 | 入力されたドルを円に換算する |
引数
function 関数名(引数) {
処理...
...
return 戻り値
}
「引数」とは関数内の処理で必要となるデータ(値)のことです。
「ドルを円に換算する関数」ではdoll(ドル)とrate(レート)が引数となります。
PHP function DollarYenConversion($doll, $rate) { $yen = $doll * $rate; return $yen; }
戻り値
function 関数名(引数) {
処理...
...
return 戻り値
}
戻り値とは、関数内で処理された結果のことです。
「return」のあとに結果を記述するだけです。
実際には、処理した結果を変数などに入れて記述します。
「ドルを円に換算する関数」では、ドルとレートをもとに円に換算された値($yen)が戻り値となります。
PHP function DollarYenConversion($doll, $rate) { $yen = $doll * $rate; return $yen; }
では「関数」の呼び出し方について解説してきます。
2.「関数」を呼び出す方法(使い方)
関数の呼び出し方は以下のとおりです。
関数名 (引数)
実際の呼び出し方は次の青文字ように記述します。
PHP //ユーザ定義関数 function DollarYenConversion($doll, $rate) { $yen = doll * rate; return $yen; } $yen = DollarYenConversion(10, 105); echo $yen;
10ドルを円に換算にする関数を呼び出しています。
「echo $yen;」を記述することで、以下のように実行結果が表示されます。
1050
まとめ
最後に要点をまとめます。
「関数」とは「銀行ATM」と似ていて、一連の処理をひとまとめにした命令のこと。
繰り返し使う機能を「関数」にすることで、コード量が減り「保守性」「可読性」が向上します。
「関数」がやってくれること(目的)さえ知っておけば、「関数」の処理内部は意識せずに簡単に使えます。
「関数」の定義の仕方は以下の通りです。
function 関数名(引数) {
処理...
...
return 戻り値
}
関数の呼び出し方は以下のとおり。
関数名 (引数)
「関数」を理解しておくことで、誰もが見やすく、品質の高いソースコードに仕上がりますよ。