「これからプログラミングを学ぼうとしてるんだけど、『関数』というのがよくわからない」
「関数を使うメリットは? わかりやすく解説してほしい」
エンジニアを目指して勉強を始めたばかりの方の中には、「関数」がどういうものなのか、利用する上でどういったメリットがあるのか、といった点についてよくわからないという方も多いでしょう。
しかし、関数はプログラミングを行う上で必須の概念です。
どんな言語においても、関数を用いないプログラミングなどあり得ませんので、関数についてよくわからないという方は、この機会に是非理解を深めてください。
この記事では、プログラミングにおける「関数」の概念について、初心者向けにわかりやすく解説していきます。
プログラミングにおける「関数」とは何かわかりやすく解説
プログラミングにおいて、「関数」という概念は非常に重要なものとなります。
この項目では、プログラミング初心者向けに、関数がどういったものであるかをわかりやすく解説していきます。
関数とは?
プログラミングの「関数」とは、一言で表すと「特定の処理をまとめたプログラム」のことです。
例えば、「ライトが5回点滅する」という処理を作るとします。
この場合、コードとしては以下のような流れで書いていくことになります。
- ライトを点ける
- 点灯している時間を指定
- ライトを消す
- 消灯している時間を指定
- 以上の処理をループ文で囲み、5回点滅したらループを抜けるようにする
1~4までで1回の点滅処理ができるので、1~4をループ文で囲み、同じ処理を5回繰り返したらループを抜けて関数終了、という形にすれば、ライトが5回点滅する関数が作れます。
一度こうした処理を作っておけば、再びライトを5回点滅させたい時に、こちらの関数を呼び出す一文を記述するだけで簡単に5回点滅を実現できます。
このように、何か特定の処理についてひとまとめにして、繰り返し利用することができる便利なプログラムことを「関数」と呼びます。
引数と戻り値
上記の「ライトを5回点滅させる関数」の場合、ただ関数を呼び出すだけで処理を実行できますが、「引数」と「戻り値(返り値)」を使うことでさらに幅広い処理を実現できます。
関数での処理に必要な値のこと。
関数で行った処理の結果のこと。
わかりやすい例としては、電卓のような計算機能です。
計算するわけですから、元となる数字が必要となるので、引数として数字を関数へ渡さなければなりません。
仮に、2つの数字を足した結果を返してくれる「計算関数」があったとすると、以下のような形で関数を呼び出すことになります。
こうして関数を呼び出すことで、引数1と引数2を足した結果を、戻り値として返してくれます。
そして、返ってきた戻り値をその後の処理に活かす、という流れになります。
これが、引数と戻り値の役割です。
関数名の付け方
関数名を付ける際は、自分の好きなように名付けていいというわけではありません。
一定の命名規則というものがあり、それに沿った形で関数名を付ける必要があります。
また、開発現場によっては厳格に命名規則が設けられているケースもあります。
関数名を付ける際には、特に以下のような点を意識するようにしてください。
- 英単語を用いているか
- 動詞+名詞(目的語)の形になっているか
- 関数名を見ただけで、どんな処理が行われる関数か推測できるようになっているか
例えば、データベースから特定の顧客情報を引っ張ってくる関数名ならば、「get_user」のように、動詞と名詞(目的語)の英単語をアンダーバーで繋ぐ形になるのが一般的です。
計算をする関数だからといって、「keisan」といったような名付け方はしません。
関数名を付ける際には、一定の命名規則があることを覚えておきましょう。
関数を使うメリット
プログラミングの際に関数を活用する主なメリットとしては、以下のようなものがあります。
- コードがすっきりして見やすくなる
- 同じ処理を繰り返し書かずに済む
- バグやエラーを減らせる
コードがすっきりして見やすくなる
プログラミングの基本として、プログラム本体はすっきりと見やすくなっている形が理想となります。
もし関数を使わなければ、すべての処理をプログラム本体に記述しなければならず、非常に長くなってしまう上、冗長な記述も増えてしまいます。
こうなると、コードの可読性は著しく低下することでしょう。
コードは、自分だけが見るものではありません。
途中で担当が変われば他の人が開発作業を引き継ぐこともありますし、システム完成後も運用・保守は続くため、第三者に伝わりやすいコードを書く必要があるのです。
そのためには、適切な関数化を行ってコードの無駄を省きつつ、可読性も高めるという工夫が重要となります。
同じ処理を繰り返し書かずに済む
プログラミングの際には、何度も同じ処理が必要となることも珍しくありません。
しかし、その都度まったく同じコードを書いていては手間がかかりますし、プログラム自体も読みにくいものになってしまうでしょう。
そこで、繰り返し使う処理については関数として作成することで、コーディングにかかる時間を短縮しつつ、コードを簡潔なものにすることが可能となります。
例えば、家電製品を使っている時に、通常の状態ではないことを知らせるエラー音を鳴らす処理を実装するとします。
- 利用者が誤った操作をした
- 電池が少なくなってきた
- システムエラーが発生した
このような状況の時に同じエラー音を鳴らす場合、エラー音を関数化しておけば、エラー処理の際に都度鳴らす音をコーディングすることなく、関数を呼び出すだけで完結します。
開発の効率化を図りつつ、可読性の高いコードを実現できるというのも、関数を用いるメリットです。
バグやエラーを減らせる
よく用いる処理を関数化してしまえば、同じ処理を繰り返し書く必要がなくなるため、結果的にバグやエラーを減らすことができます。
人間がコードを書く以上、どうしてもミスは生まれやすくなってしまいます。
ミスをしない人間など存在しないため、入力作業が増えれば増えるほど、バグやエラーの可能性が高まることになります。
しかし、正しい処理を実行できる関数を一度しっかりと作っておくことで、今後はその関数をそのまま呼び出せばよいだけとなります。
正常に動作することが確認できている関数を呼び出すだけなので、バグやエラーが発生する可能性を限りなく下げることができるでしょう。
関数を使うデメリット
関数を使うデメリットについてはほぼありませんが、唯一、「なんでもかんでも関数化してしまうことでコードの可読性や処理速度を下げることがある」という点が挙げられます。
関数化する処理は、基本的に「プログラム内で複数回使用する」ということが前提です。
繰り返し利用することのない細かい処理まで関数にしてしまうと、他のエンジニアがコードを読む場合に、関数の内容を確認しにいかなければならない機会が増え、時間的なロスが生まれます。
関数化されている意味があるのならば問題ないですが、特に関数化する意味のない処理まで関数になっていると、他のエンジニアとコードを共有する際に混乱が生まれてしまうかもしれません。
また、無駄な関数化が異常に多いと、処理速度の低下を招いてしまう可能性もあるでしょう。
関数化する必要のない処理については、関数にせずプログラム本体に記述するようにすべきです。
関数の種類
関数の種類としては、主に以下の2つに大別されます。
- 組み込み関数
- ユーザー定義関数
組み込み関数
組み込み関数とは、各プログラミング言語の仕様としてあらかじめ組み込まれている関数のことです。
一般的なプログラミングにおいてよく使われるであろう処理については、最初から組み込まれていることが多いです。
例えば、以下のような関数です。
- 計算関連
- 乱数の取得
- 文字列の長さを数える
- 文字列に変換する
- 引数で渡された値を画面に表示する
こういった頻繁に使われる処理については、組み込み関数として搭載されていることが多いです。
ユーザー定義関数
ユーザー定義関数とは、エンジニア自身が自由に作成することができる関数のことです。
組み込み関数と違い、エンジニアが独自に作成する関数であるため、バグが発生してしまうというデメリットもありますが、開発目的に合わせて柔軟に様々な関数を自作できるという大きなメリットもあります。
開発内容は案件によって多岐に渡り、組み込み関数だけでは足りなくなることがほとんどなるため、コーディング作業の際にユーザー定義関数の作成は必須となります。
まとめ
以上、プログラミングにおける「関数」の概念についてわかりやすく解説してきました。
これからプログラミングを学ぼうという方の場合、「関数」という名前の響きから、数学的なことを思い浮かべていた方もいらっしゃるかもしれません。
しかし実際そうではなく、「プログラミング作業を効率化するための手段」であることが伝わったかと思います。
プログラミングの際に、関数の利用や作成は欠かせませんので、是非理解を深めるようにしてください。
- 関数とは、特定の処理をまとめたもの
- 関数を活用することにより、「コードの可読性を上げる」「コーディングの効率を上げる」「バグやエラーを減らせる」といったメリットが得られる
- 関数には主に、「組み込み関数」と「ユーザー定義関数」の2種類がある
なお、弊社が運営するプログラミングスクール「RUNTEQ(ランテック)」は、未経験からのエンジニア転職に強いスクールで、特にWebエンジニアの育成に力を入れています。
未経験から学習を始めた多くの卒業生が、Web系開発企業へのエンジニア転職を成功させています。
今でも需要の高いWebエンジニアですが、今後はさらに需要が高まっていくと言われていますので、これからWebエンジニアを目指したいという方は、是非一度無料キャリア相談会へお越しください。