関数 かんすう
関数引数戻り値再利用モジュール化サブルーチン
関数について教えて
簡単に言うとこんな感じ!
関数は「名前をつけた処理のまとまり」だよ!たとえばカフェのメニューみたいなもので、「ラテ」って頼むだけでミルクを温めて・エスプレッソを入れて・混ぜる…という手順が全部動く感じ。毎回レシピを読み上げなくていいのが最大の魅力なんだ!
関数とは
関数(function)とは、プログラムの中でよく使う処理に名前をつけて、何度でも呼び出せるようにまとめた「処理のカタマリ」です。数学の関数と同じように、何かを受け取って(引数)、何かを返す(戻り値)という仕組みを持っています。
たとえば「消費税を計算する」という処理を10か所に書いていたとします。もし税率が変わったとき、10か所すべてを修正しなければなりません。しかし関数にしておけば、その1か所を直すだけでOK。これが再利用性と呼ばれる関数の大きなメリットです。
関数はプログラムを小さなパーツに分割する「モジュール化」の基本単位でもあります。大きなプログラムを関数に分けることで、読みやすく・テストしやすく・修正しやすいコードが生まれます。
関数の構造と仕組み
関数は基本的に4つの要素で成り立っています。
| 要素 | 役割 | 例(消費税計算) |
|---|---|---|
| 関数名 | 処理に付けた名前。呼び出すときに使う | calcTax |
| 引数(ひきすう) | 関数に渡すデータ(材料) | price(税抜き価格) |
| 処理本体 | 実際に行う計算・操作 | price × 1.1 |
| 戻り値(もどりち) | 処理の結果として返すデータ | 税込み価格 |
【呼び出しのイメージ】
引数(材料)
↓
┌─────────────┐
│ calcTax │ ← 関数名
│ price×1.1 │ ← 処理本体
└─────────────┘
↓
戻り値(結果)
覚え方:「自動販売機」で覚えよう
関数は自動販売機そのもの!
お金を入れて(引数を渡す)→ ボタンを押すと(関数を呼び出す)→ 飲み物が出てくる(戻り値が返る)。
中でどうやって缶を取り出しているかは知らなくていい、それが「関数に処理をまかせる」ということです。
引数と戻り値のパターン
関数は引数・戻り値の有無によって4パターンに分類できます。
| パターン | 引数 | 戻り値 | 用途の例 |
|---|---|---|---|
| 両方あり | ○ | ○ | 計算・変換処理 |
| 引数のみ | ○ | なし | データの保存・画面表示 |
| 戻り値のみ | なし | ○ | 現在時刻の取得など |
| 両方なし | なし | なし | 画面クリアなど副作用だけ |
歴史と背景
- 1950年代前半:初期のプログラミング言語FORTRANで「サブルーチン」という形で処理の再利用が始まる
- 1958年:LISPが登場し、関数を値として扱う「第一級関数」の概念が誕生。関数型プログラミングの源流に
- 1970年代:C言語が普及し、「関数」という呼称と現在の書き方スタイルが広く定着
- 1980〜90年代:オブジェクト指向言語(C++、Java)が登場し、クラスの中の関数を「メソッド」と呼ぶようになる
- 2000年代以降:JavaScriptやPythonで「ラムダ式(無名関数)」が普及し、関数をより柔軟に扱えるスタイルが一般化
- 現在:どのプログラミング言語にも関数(またはそれに相当する概念)が存在する、最も基本的な構成要素のひとつ
関数・メソッド・クラスの関係
「関数」に似た言葉がいくつかあり、混乱しやすいポイントです。図で整理しましょう。
| 呼び名 | 違い | 使われる文脈 |
|---|---|---|
| 関数 | 汎用的な呼び名 | C言語、Python など |
| メソッド | クラス(設計図)の中にある関数 | Java、C#、Python など |
| サブルーチン | 戻り値を返さない処理(古い言い方) | BASIC、FORTRANなど古い言語 |
| ラムダ式 | 名前なしの使い捨て関数 | Python、JavaScript など |