フルスタックエンジニアのノウハウ
2021.01.27    2021.02.20

関数とは?サブルーチン、メソッドとの違いは?

関数とは?サブルーチン、メソッドとの違いは?

この記事の動画版はこちら

チャンネル登録お願いします!


今回は「関数」とは何か?ということについて、初心者向けに分かりやすく解説していきたいと思います。



今回の記事でわかること

・関数とは何か
・何のために使う?どんなメリットがある?
・サブルーチン、メソッドとの違いは?



結論から言うと


先に結論から言うと


関数とは、プログラムの「特定の処理」を、後から再利用できるように「部品化」したものです。


部品化して再利用することで、同じ処理を何度も書かなくて良くなり、結果、開発スピードがアップしたり、ソースコード全体の品質が上がるというメリットがあります。


そして、「関数」と「サブルーチン」は、ほぼ同じ意味であり、クラスの中に定義されている関数のことを「メソッド」と言います。


では、これらについて順番に解説していきます。



関数とは「機能部品」


関数とは、プログラムの「特定の処理」を、後から再利用できるように「部品化」したものです。


プログラムを作っていると、同じような処理が色々な場所で何回も出てくることがあります。


例えば、画面に何かの「数字」を表示しようとした時に、このままでは見づらいので、


1000000


このように、数字を3桁ずつカンマで区切って表示させる処理を入れたりします。


1,000,000


数字の桁数を数えて、カンマを挿入していくという処理ですが、このように数字を表示する箇所は、アプリの中に何十箇所とあるので、その全てに同じ処理を書いていくのはとても大変ですし、

ソースコードもゴチャゴチャしてしまいます。


そこで、この「カンマ区切りにする」という処理を「機能部品」として共通化しておくことで、必要になった時に、その部品を呼び出すだけでどこからでも使えるようにしておきます。


この共通化された機能部品のことを「関数」と言います。


一度、関数として部品化しておけば、使いたい時にその関数名を指定するだけで、いつでもその処理を呼び出すことができるという訳ですね。


シンプルな処理から複雑な処理まで、様々な処理を関数として部品化することが出来ます。


ちなみに、PHPなどのプログラミング言語には、あらかじめ便利な関数が多く用意されています。


実は、先ほどの例にあった、数字をカンマ区切りにしてくれる処理も「number_format」という関数があらかじめ用意されています。


ですので、自分で処理を書く必要はなく、数字をカンマ区切りにしたいなら「number_format」関数を呼び出すだけで良いということですね。




他にも、PHPには多くの関数が用意されており「関数リファレンス」というページで一覧を確認出来ます。

PHP関数リファレンス



関数を使うメリット


関数として機能部品化しておくことで、同じ処理を何度も書かなくて良くなるため、プログラミングは楽になります。


つまり、開発スピードが上がります


また、処理自体にバグや仕様変更があった場合


例えば、3桁ずつ「カンマ」で区切らなければいけないのに、間違えて「ドット」で区切ってしまっていた!


なんてことがあった場合、何十箇所にそれぞれ処理を書いていた場合は、その1つ1つを直していかなければなりません。


これでは、修正作業も膨大になりますし、どこかで直し漏れも発生してしまいそうです。


しかし、関数として1箇所に部品化していた場合は、直すのはその1箇所だけで済みます。


つまり、関数を活用することで、修正が発生した場合も、直すべきソースコードの量が少なくなり、品質の向上にもつながるということですね。


これらが、関数を使う主なメリットになります。



サブルーチン、メソッドとの違いは?


関数と同じような意味合いの用語として「サブルーチン」や「メソッド」というものがあります。


サブルーチンとは、メインの処理(ルーチン)から呼び出される別の処理という意味合いで、多くの場合、関数と同じ意味で使われます。


プログラミング言語によっては、「関数は処理を行った後、何らかのデータを返すもの」、逆に「サブルーチンはそれを返さないもの」という違いで使い分けられることもありますが、関数もサブルーチンも、基本的には同じものだと考えておいてOKです。


次に、メソッドですが、機能部品をより効率的に扱うための手法として「クラス」というものがあります。


クラスについては、こちらの記事で説明していますので、是非併せて学習してみてください。

関連記事

今日こそオブジェクト指向を理解する


クラスの中には関数を定義することが出来ます。


この、クラスの中に定義された関数のことを「メソッド」と呼びます。


つまり


「関数」と「サブルーチン」は同じもの。

クラスの中に定義された関数のことを「メソッド」と呼ぶ。


ということですね。



車輪の再発明


プログラミングでは「車輪の再発明」と表現されることがたまにあります。


これは、例えば、新しい「車」を作ろうと思った時に、車輪の仕組みから設計していたのでは、とても効率が悪いです。


車輪のような、すでに誰かが発明した部品はそれを活用し、新しく作る車の部分に注力していった方が効率的である、という例え話ですが、プログラミングの世界でも同じように、すでに関数として用意されている処理は、それを上手く活用していくことで、新しい機能の開発に、より多くの時間が使えるということですね。


もちろん、全てが全て既存のものを再利用すれば良いという訳ではなく、自分が作っているものにマッチすれば活用し、マッチしなければ再開発した方が良い場合もあります。


それを判断するためにも、どんな部品が用意されているのか?ということを知っておくことは、プログラマーにとって強い武器になります。


このようにあらかじめ備わっている便利な関数や、オリジナルの関数を上手く使ってアプリを組み立てていくのがプログラマーです。


自分のアプリで再利用出来そうな処理は、積極的に関数化していきましょう。


自分の関数資産が増えてくると、プログラミングはどんどん楽になっていきます。



まとめ


ということで、今回は「関数」について解説しましたが、いかがだったでしょうか?


まとめると


①関数とは「特定の処理」を後から再利用できるように「部品化」したもの。

②メリットは、部品化して再利用することで、同じ処理を何度も書かなくて良くなり、結果、開発スピードがアップしたり、ソースコード全体の品質が上がること。

③「関数」と「サブルーチン」は基本的に同じ意味。

④クラスの中に定義される関数のことを「メソッド」と呼ぶ。

⑤使える関数は再利用したり、新しく作った処理を関数化していくことで、プログラミングはどんどん楽になる。


ということでした。


是非参考にしてみてください。


おすすめ記事