カテゴリ: Kotlin 更新日: 2026/01/28

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

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

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

生徒

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

先生

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

生徒

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

先生

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

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

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

Kotlinの型パラメータとは、関数やクラスで扱うデータの「型」をあとから自由に決められる仕組みです。ある処理を「数字だけ」「文字だけ」と決めつけず、どんな型でも同じ書き方で扱えるようになります。

たとえるなら、「中身の大きさは違っても入れ物は同じ箱」のようなイメージです。箱の形は変えずに、中に入れるデータ(型)だけを変えられます。

型を固定しないとどうなる?

型を固定した関数の場合、使えるデータが限られてしまいます。


// 型を固定した関数
fun printInt(item: Int) {
    println(item)
}

// Intしか渡せない
printInt(10)
// printInt("こんにちは") ← エラー

この関数は便利そうですが、数字以外を渡せません。

型パラメータを使うと…

同じ処理でも、どんな型でも受け取れる万能な関数になります。


// 型パラメータを使った関数
fun <T> printItem(item: T) {
    println(item)
}

printItem(10)
printItem("こんにちは")
printItem(true)

型を決めていないので、数字・文字・真偽値など何でも渡せます。初めて見ると難しそうに見えますが、実は「Tは好きな型が入ります」という意味だけです。

このように型パラメータは、ひとつの関数でいろいろなデータを扱える便利な仕組みです。毎回別の関数を書く必要がなくなるので、初心者でも扱いやすく、コードもスッキリします。

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

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

型パラメータを使った関数は、関数名の前に<T>と書きます。Tは「Type(型)」の略で、「好きな型をあとから入れます」という合図のようなものです。

まずは、どんな型でも受け取れるシンプルな関数を作ってみましょう。


// 型パラメータを使った関数
fun <T> printItem(item: T) {
    println("アイテムの値は:$item")
}

この関数は、数字でも文字でも、なんでも使える万能な関数です。実際に使うとどうなるか試してみます。


fun main() {
    printItem(123)            // 数字
    printItem("こんにちは")    // 文字
    printItem(true)           // 真偽値
}

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

たとえば、もし型パラメータを使わずに同じ仕組みを作ろうとすると、数字用、文字用、真偽値用…と関数を何個も書く必要があり、とても大変です。

しかし、型パラメータを使えば1つの関数で全部まとめられるので、コードが短く理解しやすくなります。「型が違っても同じ処理をしたいとき」に、とても役立つ基本的な書き方です。

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

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

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

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

Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。

基礎からわかるKotlinをAmazonで見る

※ Amazon広告リンク

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の型パラメータとは、関数やクラスで扱うデータの型を柔軟に指定できる仕組みです。ジェネリクスとも呼ばれ、さまざまな型に対応する共通の処理を実装するために使います。

Kotlinで<T>ってよく見ますが、Tって何のことですか?

TはType(型)の頭文字で、型パラメータを表す記号です。特に意味があるわけではなく、開発者が好きな文字を指定できますが、一般的にはTやEなどが使われます。
関連記事:
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の短絡評価(ショートサーキット)を使った条件式の工夫をやさしく解説!初心者でも理解できる基本知識
New2
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New3
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New4
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.8
Java&Spring記事人気No8
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク