ジェネリクス 【generics】 総称型 / generic type / ジェネリックプログラミング / generic programming
概要
ジェネリクス(generics)とは、プログラミング言語の機能・仕様の一つで、同じコードで様々な異なるデータ型のデータを処理できるようにする仕組み。C++言語などでは、ほぼ同様の機能を「テンプレート」(template)という。コンパイル時に変数などのデータ型が決定される静的型付け言語では、関数やメソッドを定義する際に受け取る引数のデータ型を決めて記述しておかなければならない。異なるデータ型に同じ処理を行う関数が必要な場合は、内容がほとんど同じで引数の型だけが異なる関数を必要な型の数だけ用意して呼び分けなくてはならない。
ジェネリクスを用いると、引数の型の情報を引数として渡すなどの方法で、あらかじめ特定のデータ型に決め打ちせずに処理内容を記述することができる。詳細な仕様や実装は言語により異なるが、多くの言語では、ジェネリクスを利用して定義されたクラスやメソッドが必要になったときに、型を指定するパラメータを与えてインスタンス化することで、その型を受け取るクラスやメソッドを生成して利用できるようにする。
ジェネリックな関数などを定義する際には、受け取る可能性のあるデータ型のすべてで有効な処理しか記述できない。例えば、比較演算子(<や>)による大小比較が数値でしかできない言語では、文字列を受け取る可能性がある関数内で比較演算子を使うことはできない。
「整数でも浮動小数点数でも同じように計算したいが文字列の処理は必要ない」といった状況もよくあるため、多くの言語ではどのデータ型を受け取ることができるかをあらかじめ指定したり制限することができるようになっている。言語によっては配列などのコレクションは引数に取れないといった制約がある場合もある。
(2023.4.20更新)