カテゴリ: Kotlin 更新日: 2026/09/03

Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方

Kotlinのパターンマッチング的なwhen式の活用例
Kotlinのパターンマッチング的なwhen式の活用例

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

生徒

「Kotlinでたくさんの条件を分けたいとき、どう書けば見やすくできますか?」

先生

「Kotlinではwhen式という便利な書き方がありますよ。複数の条件をすっきり書けるんです。」

生徒

「if文とどう違うんですか?」

先生

「良い質問です!違いを説明しながら、使い方も具体的に見ていきましょう。」

1. Kotlinのwhen式とは?

1. Kotlinのwhen式とは?
1. Kotlinのwhen式とは?

when式(うぇんしき)とは、1つの値に対して「この場合はこうする」「別の場合はこう動く」といった振る舞いを分けたいときに使うKotlinの便利な構文です。英語の “when(〜のとき)” がそのまま名前になっていることからもわかるように、「〜のときに実行する処理」を順番に書ける仕組みになっています。

たとえば「1なら大吉、2なら中吉、3なら凶、それ以外なら不明」といった複数の条件をまとめたいとき、if文をいくつも重ねると読みにくくなりますが、when式を使えばすっきり書けます。初心者でも視覚的に理解しやすく、どの条件に対応しているのかが一目でわかるのが大きな特徴です。

また、Kotlinのwhen式は、他の言語にある「switch文」に似ているものの、値の一致だけでなく条件式にも使えるなど柔軟性が高い構文です。まずはシンプルな例を見ながら、when式がどのように振る舞うのかイメージを掴んでみましょう。


fun main() {
    val number = 1
    val result = when (number) {
        1 -> "大吉"
        2 -> "中吉"
        else -> "その他"
    }
    println(result)  // 大吉
}

このように、変数の値に応じて処理を切り替えるのがwhen式の基本です。まずは、「条件をきれいに整理するための道具」として覚えるとよいでしょう。

2. 基本的なwhen式の使い方

2. 基本的なwhen式の使い方
2. 基本的なwhen式の使い方

when式の一番シンプルな使い方は、「1つの値を見て、その値ごとにやることを変える」という書き方です。イメージとしては、「おみくじの番号を見て結果を決める表」をコードで書くような感覚です。同じ変数に対して条件を分けたいときは、if文を何個も重ねるより、when式でまとめたほうがスッキリ読みやすくなります。

基本の形は次のようになります。

when (調べたい値) { パターン -> 実行する処理 } という形で、「この値のときはこの処理」という対応関係を縦に並べていきます。


fun main() {
    val number = 2

    val result = when (number) {
        1 -> "大吉"
        2 -> "中吉"
        3 -> "凶"
        else -> "不明"
    }

    println(result)
}

このコードでは、まずnumberという変数に2を入れています。when (number)のあとのブロックで、1 のときは "大吉"2 のときは "中吉"3 のときは "凶"というように、値ごとの結果を矢印(->)を使って書いています。

elseは「どの条件にも当てはまらなかったとき」の受け皿です。たとえばnumber4だった場合は、どの行にも一致しないので"不明"が選ばれます。このwhen式全体の結果がresultに入るので、最後のprintln(result)でその文字が表示されます。


中吉

このように、when式を使うと「どの値のときに何をするか」が縦にきれいに並ぶため、プログラミング初心者でも流れを追いやすくなります。同じ変数に対して分岐したいときは、まずwhen (値) { ... }という書き方を思い出してみてください。

3. when式は「式」なので値を返す

3. when式は「式」なので値を返す
3. when式は「式」なので値を返す

Kotlinのwhenは、名前のとおり「when式」と呼ばれます。ここでいう「式(しき)」とは、計算した結果として値を1つ返すもののことです。たとえば1 + 2と書けば結果として3という値が返ってきますが、whenも同じように「結果を1つ決めて返す」ことができます。

先ほどの「おみくじ」の例では、whenの結果として「大吉」「中吉」「凶」などの文字列が選ばれ、それが丸ごとresultという変数に代入されていました。もう一度、少しだけ書き方を整理して見てみましょう。


fun main() {
    val number = 2

    // when式が1つの値(文字列)を返して result に入る
    val result = when (number) {
        1 -> "大吉"
        2 -> "中吉"
        3 -> "凶"
        else -> "不明"
    }

    println("結果は $result です")
}

ここでは、when (number) { ... }全体が1つの「式」として評価され、「中吉」などの文字列が返ってきます。その返ってきた値をresultに入れ、最後にprintlnでまとめて表示しています。

式として使えるおかげで、変数に代入するだけでなく、次のようにprintlnの中に直接書くこともできます。


fun main() {
    val number = 3

    println(
        when (number) {
            1 -> "大吉"
            2 -> "中吉"
            3 -> "凶"
            else -> "不明"
        }
    )
}

このサンプルでは、when式が返した文字列を、そのままprintlnに渡しています。whenが「式」でなければ、このように関数の引数として直接書くことはできません。プログラミング初心者の方は、「when式は結果を1つ決めて返してくれる便利な仕組み」とイメージしておくと、ほかのサンプルコードを読んだときにも理解しやすくなります。

4. 値だけでなく条件も使える!

4. 値だけでなく条件も使える!
4. 値だけでなく条件も使える!

ここまでの例では「番号が1なら大吉」のように“値が一致したとき”の処理を見てきましたが、Kotlinのwhen式はそれだけではありません。同じ形のまま、条件そのものを書くことができるため、数値の範囲や状況に応じて柔軟に分岐を作ることができます。これはif文をいくつも重ねた場合よりも読みやすく、コードの意図も伝わりやすくなります。

たとえば学校のテストの点数によって評価を決めたいとき、score が 90点以上ならA、70点以上ならBというように条件を並べて書くことができます。次のサンプルは、その流れをwhen式でまとめたものです。


fun main() {
    val score = 85

    // when( ) を空にすることで条件式をそのまま書ける
    val grade = when {
        score >= 90 -> "A"
        score >= 70 -> "B"
        score >= 50 -> "C"
        else -> "D"
    }

    println("評価は $grade です")
}

評価は B です

このサンプルのポイントは、whenのかっこを空にしていることです。こうすることで、「score がどの条件を満たしているか」を上から順番に判定し、一番最初に当てはまった結果を返します。if → else if → elseと書くよりも形がすっきりし、条件が増えても読みやすさが保たれるのが大きなメリットです。

また、条件式をそのまま書けるので、「温度が一定以上なら警告を出す」「残高が少なければ通知する」といった日常的な判断ロジックにも応用できます。状況に応じて柔軟に処理を分岐できる点が、when式の強みです。

5. 複数の値をまとめて分岐できる

5. 複数の値をまとめて分岐できる
5. 複数の値をまとめて分岐できる

同じ処理をしたいケースが複数あるとき、ひとつずつ条件を書くのは手間ですし、コードも長くなってしまいます。そんなときに便利なのが、when式で「複数の値をまとめて扱える」という特徴です。Kotlinでは、カンマ区切りで値を並べるだけで、「これらに当てはまるときは同じ処理を実行する」という読みやすい書き方ができます。


fun main() {
    val day = "土曜日"

    val type = when (day) {
        // 土日が来たらどちらも「休日」という結果にする
        "土曜日", "日曜日" -> "休日"

        // 平日をまとめて扱う
        "月曜日", "火曜日", "水曜日", "木曜日", "金曜日" -> "平日"

        else -> "不明"
    }

    println(type)
}

休日

この仕組みのおかげで、「土曜日なら休日」「日曜日なら休日」といったように似た条件を何度も書かずにすみ、コードの意図もひと目で伝わりやすくなります。特に“分類”を行いたい場面──たとえば「赤・青・黄なら基本色」「猫・犬ならペット」など──にも応用でき、プログラミング初心者でも自然に読み解ける形に整理できます。

6. when式と変数の型(たとえば文字列)

6. when式と変数の型(たとえば文字列)
6. when式と変数の型(たとえば文字列)

when式は、数値だけでなく文字列やその他の型(たとえばCharBooleanなど)にも使えます。

次の例は、文字列に対して反応するwhenです。


fun main() {
    val input = "こんにちは"
    val response = when (input) {
        "こんにちは" -> "やあ!"
        "おはよう" -> "おはようございます!"
        "こんばんは" -> "こんばんは〜"
        else -> "なんと言ったの?"
    }
    println(response)
}

やあ!

このように、文字列でもwhenは自由自在に使えます。入力に応じた返答を作るプログラムにも向いています。

7. when式を使うとコードが読みやすくなる理由

7. when式を使うとコードが読みやすくなる理由
7. when式を使うとコードが読みやすくなる理由

初心者のうちはif文をたくさん書いてしまいがちですが、条件が多くなると見づらくなります。

when式を使うことで、条件をスッキリ整理して、誰が見ても読みやすいコードにできます。

特に、同じ変数の値によって処理を分けたいときには、when式が最適です。

まとめ

まとめ
まとめ

ここまで、Kotlinのwhen式を中心にさまざまな条件分岐の書き方を学んできましたが、振り返ってみると、when式がいかに柔軟で読みやすい構文であるかがよく分かります。複数の条件を整理しながらまとめて記述できるため、初心者でもスムーズに扱える点が魅力です。また、値だけでなく条件式そのものを利用して分岐できる特性は、点数評価や文字列による振る舞いの変化など、日常的な処理にも応用しやすいでしょう。さらにwhen式は「式」として値を返すため、プログラムの記述が簡潔になり、結果を変数に直接代入するスタイルが自然に身につきます。

たとえば休日と平日を判定する処理でも、複数の文字列をカンマでまとめて一行に整理することで、コード全体の見通しが非常によくなります。こうした書き方は条件分岐が多くなるアプリケーション開発において役立ち、読み手が迷わず理解できる設計へとつながります。特にスマートフォンアプリやデータ処理で入力パターンが増える場合、when式を活用して分岐のルールを視覚的に整理することが重要です。

また、文字列や数値だけでなく、型ごとに適した分岐を行うことで、ユーザー入力に応じたメッセージ表示や機能切り替えといった処理を柔軟に作成できます。条件の粒度を丁寧に分け、読みやすい構造に仕上げることはプログラムの品質を高める第一歩であり、Kotlinのwhen式はその基礎を身につけるために最適な構文と言えるでしょう。学習を進めるうちに、さまざまな分岐パターンを扱えるようになり、より高度なロジックへ応用できるようになるはずです。

サンプルプログラムでもう一度整理しよう

ここでは、あらためて複数のパターンをまとめて処理できるwhen式の利点を確認してみましょう。次のコードは、ユーザーが入力した値に応じて画面表示を切り替えるシンプルな例です。


fun main() {
    val command = "start"

    val message = when (command) {
        "start", "run", "go" -> "アプリを起動します"
        "stop", "end" -> "アプリを終了します"
        "help" -> "ヘルプを表示します"
        else -> "不明なコマンドです"
    }

    println(message)
}

このように、複数の文字列をまとめて同じ分岐に整理することで、読みやすさと拡張性を両立できます。現場でよく見るコマンド処理やユーザー操作の分岐にも応用しやすいので、自分のアプリケーションでもぜひ活用してみてください。

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

生徒

「今日の学習で、when式ってただの条件分岐じゃなくて柔軟な構文だと分かりました!」

先生

「そうですね。値の一致だけでなく、条件を directly 書けたり、複数のパターンをまとめて整理できるところが魅力です。」

生徒

「確かに、文字列を使った返答の例とか、評価の例とか、とても分かりやすかったです。」

先生

「実際のアプリ開発でも、ユーザー入力や状態に応じた処理を分ける場面はよくあります。when式が自然と使えるようになると、コードもすっきりして読みやすくなりますよ。」

生徒

「if文より視覚的に整理されるのが良いですね。これからすぐ使ってみます!」

先生

「ぜひ実際のコードの中で活用して、さらに使いこなしてください。慣れてくるともっと自然に書けるようになりますよ。」

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

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

※ Amazon広告リンク

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

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

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

Kotlinのwhen式とif文の違いは何ですか?どちらを使えば読みやすいコードになりますか?

Kotlinのwhen式は、複数の条件をすっきり整理できる構文で、if文よりも条件分岐が多い場合に読みやすくなります。同じ変数の値に応じて処理を分けたいときはwhen式、複雑な一つの条件をチェックしたいときはif文が向いています。

Kotlinのwhen式はswitch文と同じですか?どんな点が違いますか?

switch文に似ていますが、Kotlinのwhen式はより柔軟で高機能です。複数の値をまとめて処理できたり、値だけでなく条件式も使えたり、式として値を返せる点が違いです。

when式は「式」とされていますが、式として値を返すメリットは何ですか?

when式が値を返すことで、その結果をそのまま変数に代入したり、関数の戻り値として利用できるため、コードが短く整理されて読みやすくなります。
関連セミナーのご案内

【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分

「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。

本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。

具体的な体験内容と環境

【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。

【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。

この60分で得られる3つの体験

1. 自分のパソコンが「開発基地」に

プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。

2. プログラミングの「仕組み」がスッキリ

「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。

3. 「読みやすい」から「直せる」へ

Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。

※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。

セミナー画像

Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験

カテゴリの一覧へ
新着記事
New1
Swift
Swiftの可変長引数(Variadic Parameters)とは?初心者向けにやさしく解説!
New2
Go言語
Go言語の配列の基本!定義・初期化・アクセス方法をやさしく解説
New3
Swift
Swift変数と定数の使い方|varとletの違いを初心者向けに解説
New4
Swift
Swift正規表現入門!Regex BuilderとNSRegularExpressionを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.3
Java&Spring記事人気No3
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Swift
Swift入門ガイド|基本構文と書き方をマスターしよう
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Go言語
Go言語のビルドの基本!go buildコマンドの使い方を初心者向けに解説
No.7
Java&Spring記事人気No7
TypeScript
TypeScriptで絶対値を求める方法!Math.absの使い方を初心者向けにわかりやすく解説
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの可視性修飾子を完全ガイド!public・private・internalの意味と使い分けを初心者向けに解説

💻 作業効率アップに

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

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

※ Amazon広告リンク