カテゴリ: Kotlin 更新日: 2025/09/29

Kotlinの型パラメータ(ジェネリクス)の使い方を初心者向けに解説!

Kotlinの型パラメータ(ジェネリクス)の使い方を初心者向けに解説
Kotlinの型パラメータ(ジェネリクス)の使い方を初心者向けに解説

先生と生徒の会話形式で理解しよう

生徒

「Kotlinのコードで<T>っていう記号を見たことがあるんですが、あれは何ですか?」

先生

「あれは『型パラメータ』、あるいは『ジェネリクス』と呼ばれる機能です。同じコードでいろんな型(データの種類)を扱えるようにする仕組みなんですよ。」

生徒

「同じコードでってどういうことですか?」

先生

「じゃあ、Kotlinの型パラメータの使い方を、身近な例でわかりやすく説明していきましょう!」

1. 型パラメータ(ジェネリクス)とは?

1. 型パラメータ(ジェネリクス)とは?
1. 型パラメータ(ジェネリクス)とは?

Kotlinの型パラメータとは、関数やクラスで扱うデータの「型」をあとで決められるようにする仕組みです。

普通の関数では、たとえば「Int型の数」や「String型の文字列」など、使う型が決まっています。

でも型パラメータを使えば、型を固定せずに、いろいろな型で同じ処理ができるようになります。

2. 型パラメータの基本的な書き方

2. 型パラメータの基本的な書き方
2. 型パラメータの基本的な書き方

型パラメータを使った関数は、<T>のように記述します。Tは「Type(型)」の頭文字です。


fun <T> printItem(item: T) {
    println("アイテムの値は:$item")
}

この関数は、IntでもStringでもBooleanでも、どんな型でも使えます。


fun main() {
    printItem(123)
    printItem("こんにちは")
    printItem(true)
}

アイテムの値は:123
アイテムの値は:こんにちは
アイテムの値は:true

3. 型パラメータの「T」は好きな文字でOK

3. 型パラメータの「T」は好きな文字でOK
3. 型パラメータの「T」は好きな文字でOK

実は<T>のTは、どんな文字でも使えます。ただし、意味が分かりやすいように、TE(Elementの略)などがよく使われます。

複数の型を使うときは<K, V>のように、Key(鍵)とValue(値)という意味で書いたりします。

4. 複数の型パラメータを使う例

4. 複数の型パラメータを使う例
4. 複数の型パラメータを使う例

複数の型を扱うと、もっと柔軟な関数が作れます。たとえば、キーと値のペアを出力する関数を作ってみましょう。


fun <K, V> printKeyValue(key: K, value: V) {
    println("キー:$key / 値:$value")
}

fun main() {
    printKeyValue("名前", "太郎")
    printKeyValue(1, true)
}

キー:名前 / 値:太郎
キー:1 / 値:true

5. 型パラメータを使ったクラスの定義

5. 型パラメータを使ったクラスの定義
5. 型パラメータを使ったクラスの定義

関数だけでなく、クラスでも型パラメータは使えます

たとえば、どんな型でもデータを1つだけ持てる「ボックスクラス」を作るとこうなります。


class Box<T>(val item: T) {
    fun getItem(): T {
        return item
    }
}

fun main() {
    val intBox = Box(100)
    val strBox = Box("りんご")

    println(intBox.getItem())
    println(strBox.getItem())
}

100
りんご

このように、BoxクラスはIntでもStringでも同じように使えます。

6. なぜ型パラメータを使うのか?

6. なぜ型パラメータを使うのか?
6. なぜ型パラメータを使うのか?

型パラメータを使うと、同じ処理を何度も書かなくてすむので、コードが短くなり、ミスも減ります。

たとえば、printIntprintStringなど、型ごとに関数を作ると大変ですが、printItemなら1つで済みます。

また、型が決まっていることで、Kotlinのコンパイラがミスを教えてくれるのもメリットです。

7. コレクションと型パラメータの関係

7. コレクションと型パラメータの関係
7. コレクションと型パラメータの関係

KotlinのListMapなどのコレクション(データの集まり)も、実は内部で型パラメータを使っています。

たとえば、次のような書き方をよく見ますよね?


val names: List<String> = listOf("佐藤", "鈴木", "田中")
val scores: Map<String, Int> = mapOf("国語" to 90, "数学" to 80)

この<String><String, Int>がまさに「型パラメータ」です。

8. 型パラメータのまとめと使いどころ

8. 型パラメータのまとめと使いどころ
8. 型パラメータのまとめと使いどころ

Kotlinの型パラメータ(ジェネリクス)を使うことで、安全で柔軟な関数やクラスが書けるようになります。

最初は記号の多さにびっくりするかもしれませんが、仕組みを理解すればとても便利です。

型に依存しない共通の処理をしたいときに、ぜひ使ってみましょう。

まとめ

まとめ
まとめ

Kotlinの型パラメータ(ジェネリクス)は、プログラムをより柔軟に、そして安全に設計するために欠かせない機能です。この記事では、関数やクラスにおける型パラメータの使い方を、初心者にもわかりやすい形で紹介しました。特に、<T><K, V>といった記法は、コードの中で頻繁に登場するものですので、その意味と使い方を正しく理解することが重要です。

型パラメータを使えば、IntやStringなど特定の型に縛られることなく、共通の処理を一つの関数やクラスで実現できます。これにより、コードの再利用性が高まり、保守性も向上します。たとえば、printItem関数のように、どんな型でも出力できる関数を1つだけ定義することで、冗長なコードを書く必要がなくなります。

また、型パラメータは、Kotlinのコレクション型(ListやMapなど)にも深く関係しています。これらはすべて型パラメータを使って内部的に動作しており、List<String>Map<String, Int>といった型指定は、実はジェネリクスによって成り立っています。こうした仕組みを理解することで、Kotlinの標準ライブラリやフレームワークの構造も自然に見えてくるでしょう。

クラスへの応用として紹介したBox<T>のような設計は、汎用的なデータ構造を作りたいときに役立ちます。複数の型パラメータを扱うケースでは、printKeyValueのように、複数の異なる型を引数として受け取れる関数を簡単に作成できます。これにより、プログラムの拡張性が高まり、将来的な変更にも強くなります。

Kotlinにおける型パラメータは、最初は記号や構文が難しく見えるかもしれません。しかし、「いろいろな型に対応できる汎用的な処理が書ける仕組み」と理解すれば、きっとその便利さに気づくはずです。実際の開発現場では、APIの設計やライブラリの実装において、型パラメータは頻繁に使われており、その理解は必須です。

最後に、この記事で紹介したような基本的なジェネリクスの使い方をしっかりマスターすることで、今後のプログラミングの幅は確実に広がります。型パラメータは、ただの記号ではなく、「コードの自由度を高める魔法のカギ」とも言える存在です。Kotlinでの開発をより効率的に、そして安全に進めるためにも、ぜひ型パラメータの活用を意識してみてください。

実践的な応用例:Listに任意の型を追加して出力

以下のコードは、どんな型のリストでも出力できる関数の例です。


fun <T> printList(items: List<T>) {
    for (item in items) {
        println("リストの要素:$item")
    }
}

fun main() {
    printList(listOf(1, 2, 3))
    printList(listOf("赤", "青", "緑"))
}

このように、ジェネリクスを使うことで、型に依存せず安全に処理を行う関数を簡単に作成できます。

先生と生徒の振り返り会話

生徒

「型パラメータって、最初は難しそうだったけど、使い方が分かるとすごく便利ですね!」

先生

「そうですね。特に、どんな型でも同じ処理をしたいときにジェネリクスはとても強力です。」

生徒

「ListやMapも内部で型パラメータを使ってるなんて知らなかったです。」

先生

「それを知っておくと、標準ライブラリのコードも読みやすくなるし、オリジナルのクラスを作るときにも役立ちますよ。」

生徒

「これからは、コードを書くときに型パラメータもどんどん使ってみます!」

先生

「その調子です。型にとらわれない汎用的な設計を目指していきましょう!」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Kotlinの型パラメータとは何ですか?ジェネリクスってどういう意味ですか?

Kotlinの型パラメータとは、関数やクラスで扱うデータの型を柔軟に指定できる仕組みです。ジェネリクスとも呼ばれ、さまざまな型に対応する共通の処理を実装するために使います。
関連記事:
カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!