プログラミング基礎概念

関数 かんすう

関数引数戻り値再利用モジュール化サブルーチン
関数について教えて

簡単に言うとこんな感じ!

関数は「名前をつけた処理のまとまり」だよ!たとえばカフェのメニューみたいなもので、「ラテ」って頼むだけでミルクを温めて・エスプレッソを入れて・混ぜる…という手順が全部動く感じ。毎回レシピを読み上げなくていいのが最大の魅力なんだ!


関数とは

関数(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年代以降JavaScriptPythonで「ラムダ式(無名関数)」が普及し、関数をより柔軟に扱えるスタイルが一般化
  • 現在:どのプログラミング言語にも関数(またはそれに相当する概念)が存在する、最も基本的な構成要素のひとつ

関数・メソッド・クラスの関係

「関数」に似た言葉がいくつかあり、混乱しやすいポイントです。図で整理しましょう。

クラス(設計図) メソッド クラス内の関数 メソッド クラス内の関数 メソッド クラス内の関数 関数(function) 名前をつけた処理のまとまり 引数を受け取り 戻り値を返す ラムダ式 名前なしの 使い捨て関数 サブルーチン 戻り値がない 古い呼び名 ※メソッドは「クラスの中にある関数」 どれも「処理をまとめる」共通の目的を持つ
呼び名違い使われる文脈
関数汎用的な呼び名C言語、Python など
メソッドクラス(設計図)の中にある関数Java、C#、Python など
サブルーチン戻り値を返さない処理(古い言い方)BASIC、FORTRANなど古い言語
ラムダ式名前なしの使い捨て関数Python、JavaScript など

関連用語

  • 変数 — データを一時的に記憶しておく「名前のついた箱」
  • クラス — 関数(メソッド)とデータをひとまとめにしたオブジェクト指向の設計図
  • オブジェクト指向 — クラスと関数(メソッド)を組み合わせてプログラムを設計する考え方
  • アルゴリズム — 問題を解くための手順・処理の流れ。関数の中身に当たる
  • ライブラリ — よく使う関数をまとめて再利用できるようにしたパッケージ
  • API — 外部のシステムが提供する「呼び出せる関数の窓口」
  • 再帰 — 関数が自分自身を呼び出す特殊なテクニック