関数

出典: 謎の百科事典もどき『エンペディア(Enpedia)』
ナビゲーションに移動 検索に移動

関数(かんすう)、あるいは函数(かんすう)とは、数学やプログラミング言語において、数を他の数に関連付ける手段のことを指す。

名称[編集]

由来は「機能」「機関」を意味する「ファンクション(function)」であった。それを元に漢語的に命名したのが「函数」であった。しかし、函の字が戦後当用漢字に入っていなかったために「関数」という表記が正しいとされた。その後、遠山啓銀林浩矢野健太郎など初等教育に関心のある数学者などから「関数は、一種の『ブラックボックス』と指導したほうがいい」という意見があり、「『関数』と書くのは、教育上望ましくない」と主張する人もいる[1]
たとえば、個々の編集者が自由に書き換え可能なウィキペディア日本語版においては、古くから激しい論争が繰り広げられてきた歴史があり[2]、最終的に有志の編集者が集まる場所であるプロジェクト:数学に議論のまとめ文書[3]が作成され、不毛な議論や編集合戦を抑止する方向に進んだ。

意味[編集]

数学[編集]

関数は、事実上写像と同じ意味である。写像の中で、定義域・値域とも数であるものを関数と呼ぶ。

特に、定義域が実数(多変数関数の場合は実ベクトル空間)で、値域も実数である場合、実関数と呼ばれる。定義域が複素数(多変数関数の場合は複素ベクトル空間)で、値域も複素数である場合、複素関数と呼ばれる。関数には三角関数指数関数対数関数など様々な種類があるが、これらは実関数としても複素関数としても定義できる。

ある関数の値域が、別の関数の定義域に含まれる場合、という関数を定義することができる。これを合成関数と呼ぶ。また、関数が単射、即ち引数が異なれば像も異なる場合、となる関数、即ち像から定義域へ引き戻す関数を定義することが可能である。これを逆関数と呼ぶ。

プログラミング言語[編集]

プログラミング言語において、関数はサブルーチンの一種である。引数が定義されていて、返り値を返すサブルーチンのことを関数と呼ぶ。前述の、数学で使う関数と、本質的には同じである。引数、返り値の型定義が、数学における定義域、値域に相当する。
関数を呼び出す際は、必要な引数を指定して呼び出す。この引数がどの型を要求しているかは事前に確認しておかなければならない。関数は、呼び出した際に指定した引数を用いて、プログラムされた通りに演算し、最後に返り値を呼び出し元のプログラムに返す。ここでも、どの型の返り値が戻ってくるかは要確認である。
関数は、多くのプログラミング言語で、使用頻度の高い関数がライブラリとして予め定義されている。定義されていない関数については、新たにコードを書いて定義することも可能である。
なお、近年ではオブジェクト指向のプログラミング言語の普及により、「サブルーチン」「関数」ではなく、静的に定義されたオブジェクトの「メソッド」捉える向きがあり、「演算パッケージ」(基本的にパッケージングされているのでブラックボックス化されている)ではなく「クラス・ライブラリ」(ライブラリなので、ソースコードも公開されていることもある)と呼ばれることも多い。代表的なものとしてはiTextがあり、PDF生成用の Java によるソースコードが公開されている。

脚注[編集]

  1. GHQ も「函館」を「箱館」にしようとは主張しなかった。
  2. 代表的なものが2007年2009年の2つの井戸端トピック
  3. jawp:プロジェクト:数学/函数と関数。要点は、1. 「関数」と「函数」のどちらも間違いではない。 2. しかし「関数」のほうが広く用いられており、初心者や数学専門ではない読者には親切かもしれない。 3. カテゴリ名や記事名は「関数」を採用するが、本文中は混在していて構わない。 4. 両者を互いに書き換える編集は原則として推奨されない。