カテゴリ: Kotlin 更新日: 2026/02/22

Kotlinのwhen式を使って複雑な条件分岐をすっきり整理する方法!初心者にもやさしく解説

Kotlinのwhen式で複雑な条件を整理するコツ
Kotlinのwhen式で複雑な条件を整理するコツ

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

生徒

「Kotlinで条件がたくさんあると、ifがいっぱい並んでしまって読みにくいです……」

先生

「そんなときは、when式を使うと見た目がスッキリしますよ。複雑な条件でもわかりやすく書けます。」

生徒

「whenって、前にちょっと見たことあります!でも詳しくは知らないです。」

先生

「では今回は、複雑な条件分岐を整理するwhen式の使い方を詳しく解説していきましょう!」

1. Kotlinのwhen式とは?

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

when式は、複数の条件に応じて処理を切り替えたいときに使う便利な構文です。例えば「値によってメッセージを変えたい」「状況ごとに違う動きをさせたい」といった場面で、コードをスッキリまとめてくれます。

Javaのswitch文に近い役割を持っていますが、Kotlinのwhenはより柔軟で、文字列・数値だけでなく、範囲や条件式まで扱えるのが大きな特徴です。そのため、初心者でも直感的にルールを整理しやすく、複雑な分岐を簡潔に表現できます。

たとえば、色の名前に応じてメッセージを変えるだけなら、whenを使うと次のように書けます。


fun main() {
    val color = "青"
    val result = when (color) {
        "赤" -> "止まる"
        "青" -> "進む"
        "黄" -> "注意する"
        else -> "不明な色"
    }
    println(result)
}

進む

このように、when式を使うだけで「条件ごとにどう振る舞うか」を視覚的に整理でき、if文が並びすぎて読みにくくなる問題を避けられます。Kotlinの中でも特に使いやすい機能なので、最初に覚えておくと後のコードがぐっと書きやすくなります。

2. シンプルな値分岐の書き方

2. シンプルな値分岐の書き方
2. シンプルな値分岐の書き方

まずは、Kotlinのwhen式でもっとも基本的な「値による分岐」の書き方を確認してみましょう。ここでは、信号の色に応じてメッセージを変える、とてもシンプルなサンプルを使っていきます。プログラミングに慣れていない方でも、日常のイメージと結びつけて考えられる題材です。


fun main() {
    val color = "赤"

    // color の値によってメッセージを切り替える
    val message = when (color) {
        "赤" -> "止まれ"
        "青" -> "進め"
        "黄" -> "注意して進め"
        else -> "不明な信号"
    }

    println(message)
}

止まれ

このコードでは、colorという変数に「赤」という文字列が入っています。when (color)のあとに並んでいる"赤" -> "止まれ"のような行は、「color がこの値だったら、この結果を使う」という対応関係を表しています。上から順番にチェックされていき、最初に一致した行の右側の値がmessageに代入されます。

最後のelseは、「どの条件にも当てはまらなかったとき」の予備の選択肢です。もしcolorに「青」や「黄」ではない別の文字列が入っていたとしても、else -> "不明な信号"のおかげで必ず何かしらのメッセージが決まるようになっています。

同じことをif文だけで書こうとすると、ifelse ifが縦にずらっと並んでしまいますが、when式なら「値」と「結果」が縦に整理されるため、条件分岐の意図が一目で分かる読みやすいコードになります。まずはこのような「1つの値に応じてメッセージを変える」というパターンから、Kotlinのwhen式に慣れていくと良いでしょう。

3. 複数の値をまとめて処理する

3. 複数の値をまとめて処理する
3. 複数の値をまとめて処理する

同じ結果にしたいケースがいくつかあるとき、ひとつひとつ条件を書くとコードが長くなってしまいます。そこで役立つのが、when式で複数の値を「まとめて」扱う書き方です。「この値のときも、この値のときも、やることは同じ」という場合にとても読みやすく整理できます。


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

    // day の値によって「平日」か「休日」かを判定する
    val type = when (day) {
        // 土曜か日曜ならどちらも「休日」
        "土曜日", "日曜日" -> "休日"

        // 平日はまとめて「平日」として扱う
        "月曜日", "火曜日", "水曜日", "木曜日", "金曜日" -> "平日"

        // どれにも当てはまらない場合のフォロー
        else -> "不明"
    }

    println(type)
}

休日

このサンプルでは、dayに曜日の文字列が入っています。when (day)のあとで、"土曜日", "日曜日" -> "休日"とカンマで値を並べることで、「土曜日または日曜日のどちらかなら結果は休日」という意味になります。同じように、平日も5つの曜日を1行にまとめて「平日」としています。

もしこれをif文で書こうとすると、if (day == "土曜日" || day == "日曜日") { ... } のように条件が長くなりがちです。when式を使えば、「どの値がどのグループに属しているか」が縦にきれいに並ぶので、ぱっと見てロジックが理解しやすいコードになります。曜日の判定以外にも、「1〜3は初級」「4〜6は中級」のように、複数の値を同じカテゴリとして扱いたい場面で活用できるテクニックです。

4. 条件式を使ったwhenの使い方

4. 条件式を使ったwhenの使い方
4. 条件式を使ったwhenの使い方

whenif文のように、数値や論理式も条件に使えます。かっこなしでwhenの中に直接条件を書きます。


fun main() {
    val score = 85
    val grade = when {
        score >= 90 -> "A"
        score >= 70 -> "B"
        score >= 50 -> "C"
        else -> "D"
    }
    println("成績は $grade です")
}

成績は B です

ifを何回も書くより、whenで上から順に整理した方が見やすいですね。

5. 範囲(range)を使って条件をまとめる

5. 範囲(range)を使って条件をまとめる
5. 範囲(range)を使って条件をまとめる

数値の範囲で条件を分けたいときは、inを使って〜から〜までを表すことができます。


fun main() {
    val age = 25
    val category = when (age) {
        in 0..12 -> "こども"
        in 13..19 -> "ティーン"
        in 20..64 -> "おとな"
        in 65..150 -> "シニア"
        else -> "不明"
    }
    println(category)
}

おとな

in 0..12のように書くと、「0から12まで」の範囲に含まれるかをチェックできます。

6. 型チェックにも使えるwhen

6. 型チェックにも使えるwhen
6. 型チェックにも使えるwhen

少し高度ですが、isを使えば、変数の「型」を条件に使うこともできます。これは他の言語にはあまりないKotlinの特徴です。


fun checkType(value: Any) {
    val result = when (value) {
        is Int -> "整数です"
        is String -> "文字列です"
        is Boolean -> "真偽値です"
        else -> "不明な型です"
    }
    println(result)
}

fun main() {
    checkType("こんにちは")
}

文字列です

型チェックのisは、Javaのinstanceofに似た機能です。

7. when式で整理されたコードを書くコツ

7. when式で整理されたコードを書くコツ
7. when式で整理されたコードを書くコツ
  • 複数の条件を整理したいときはwhenを使う
  • 同じ処理にまとめられる条件はカンマで並べる
  • 値ではなく条件を書くときはwhenのかっこを省略する
  • 範囲や型チェックも使えるので複雑な分岐も見やすい

Kotlinのwhen式は、複雑な条件分岐でもコードがぐちゃぐちゃにならず、読みやすさ書きやすさを両立できる便利な機能です。

まとめ

まとめ
まとめ

Kotlinのwhen式は、たくさんの条件をすっきり整理するときにとても役立つ構文でした。もしもという条件が増えるほど、ifが長く連なって読みづらくなることが多いのですが、when式なら上から順に読みやすい流れでまとめられます。値をそのまま使って分岐するときも、複数の値をひとつの処理にまとめたいときも、かんたんに並べるだけで書けるので、初心者でも扱いやすい特徴があります。さらに、if文のように条件そのものを書いたり、数の範囲をinで指定したり、値の型をisで判定したりと、柔軟な表現ができることも魅力でした。 とくに、コードを読む人の立場を考えて整理できる点が大きな利点です。条件が三つ、四つと増えても、whenのブロックのなかで、やさしく意味が伝わる形にまとめられるので、読み返したときの負担が小さくなります。プログラムは書くだけで終わりではなく、あとから読み直したり、別の人に見てもらったりしながら少しずつ修正していくものです。そのような場面で、読んだ瞬間に理解しやすいコードになっていると、作業がとても楽になります。読みやすいコードは、自分自身のためにも周りの人のためにも大切なものだといえるでしょう。 また、when式は単なる書き換えではありません。たとえば、曜日の判定をまとめて休日と平日に振り分けたり、年齢を範囲で区切って呼び名を変えたり、テストの点数から成績を判断したり、型チェックで受け取った値の種類を確認したりと、実際のアプリケーションによく登場する処理に応用できます。初心者がつまずきやすい部分ではありますが、一度ゆっくり取り組んで慣れていけば、自然と「こんな場面で使えそうだな」と思えるようになります。 もうひとつ大切なのは、処理が増えたときの整理しやすさです。もし後から条件が増えたとき、長くなったifの途中に処理を挟むのはうっかりミスのもとになります。ところが、when式ならブロックの中にひとつずつ追加していくだけで全体の流れを崩さずに済みます。きれいにそろった並びになるので、どこに何が書かれているか見つけやすく、人間の目で追いやすい整ったコードになります。このような書き方の工夫は、初心者が気づきにくい部分ですが、大きなプログラムを扱うほど大切な要素になります。 さらに、Kotlinのwhen式は単なる分岐ではなく、式として値を返せる便利な特徴があります。条件ごとに文字列や数値を返して変数に入れることができるので、きれいで読みやすい流れのまま処理を完結できます。特別な記号や複雑な書き方を覚えなくても、自然な文章のように書けるため、初心者でも扱いやすいと言えるでしょう。読みやすいプログラムは、理解のしやすさや保守のしやすさにつながり、あとから見ても安心できる形になります。 実際の場面では、成績判定、年齢区分、曜日の処理、型チェックなど、身近な例を思い浮かべながら学ぶと理解が深まりやすくなります。もし条件が複雑に見えたときは、ひとつずつ落ち着いて並べればよいだけなので、あわてる必要はありません。目の前の処理をわかりやすく整理し、次に読む人へやさしいコードを残せることこそが、when式の大きな価値です。こうした考え方を身につけると、Kotlinだけでなく他のプログラムでも応用しやすくなります。 ここで、実際にwhen式を使って値を返す例をもう一つ書いてみましょう。日常的な内容のほうが想像しやすいので、次の例では点数を元にメッセージを返す処理を書いています。

サンプルプログラム


fun main() {
    val score = 72
    val message = when {
        score >= 90 -> "とてもよい点数です"
        score >= 70 -> "よくできました"
        score >= 50 -> "もうすこしです"
        else -> "がんばりましょう"
    }
    println(message)
}

よくできました

このように、ひとつの値だけでなく、条件そのものを書いて表現できる柔軟さは、Kotlinの特徴のひとつです。とても簡潔で読みやすく、どれに当てはまったかが直感的に見えます。条件は上から順に判定されるため、複雑な場面でも整理しやすくなります。実際のアプリでも、点数や数値、状態によってメッセージを変える場面はよくあります。小さな例を積み重ねていくことで、自然と使いこなせるようになります。 when式は、初心者がプログラムの見通しを良くするための助けになり、学びを進めるほど便利さを実感できる構文です。複雑な条件をまとめて書いても、読み手の負担が少なくなることは、これから大きなプログラムに触れていくうえでも大切な力になります。繰り返し使っていけば、気づかないうちに自然と習得できるはずです。

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

生徒

「when式って便利なんですね。条件が多いときにすっきり見えました。」

先生

「そうですね。値ごとの分岐だけでなく、条件や範囲、型チェックまでまとめられるので、読みやすいコードにつながります。」

生徒

「ifをいっぱい重ねるより、when式のほうがぜんぜん読みやすいです。」

先生

「読みやすいコードは大切ですよ。自分も他の人も理解しやすくなるので、あとから修正するときにも役立ちます。」

生徒

「これからは複雑な条件のときに積極的に使ってみます。」

先生

「その調子です。たくさん練習すれば、自然に使いこなせるようになりますよ。」

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

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

※ Amazon広告リンク

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

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

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

Kotlinのwhen式とは何ですか?

Kotlinのwhen式は、複数の条件に応じて処理を分けるための構文で、Javaのswitch文に似ていますが、より柔軟に使えるのが特徴です。文字列や数値、範囲、条件式、型チェックなどさまざまな条件に対応でき、複雑な分岐も見やすく整理できます。
関連セミナーのご案内

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

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

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

具体的な体験内容と環境

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

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

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

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

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

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

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

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

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

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

セミナー画像

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

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説