Kotlinのwhen式を使って複雑な条件分岐をすっきり整理する方法!初心者にもやさしく解説
生徒
「Kotlinで条件がたくさんあると、ifがいっぱい並んでしまって読みにくいです……」
先生
「そんなときは、when式を使うと見た目がスッキリしますよ。複雑な条件でもわかりやすく書けます。」
生徒
「whenって、前にちょっと見たことあります!でも詳しくは知らないです。」
先生
「では今回は、複雑な条件分岐を整理する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. シンプルな値分岐の書き方
fun main() {
val color = "赤"
val message = when (color) {
"赤" -> "止まれ"
"青" -> "進め"
"黄" -> "注意して進め"
else -> "不明な信号"
}
println(message)
}
止まれ
このように、when(値)のあとに条件ごとの処理を書くだけで、スッキリと分岐処理ができます。
3. 複数の値をまとめて処理する
whenでは、複数の値をカンマで並べて、同じ処理にまとめることができます。
fun main() {
val day = "土曜日"
val type = when (day) {
"土曜日", "日曜日" -> "休日"
"月曜日", "火曜日", "水曜日", "木曜日", "金曜日" -> "平日"
else -> "不明"
}
println(type)
}
休日
条件が増えても、コードが見やすく整理できるのがwhenの強みです。
4. 条件式を使ったwhenの使い方
whenはif文のように、数値や論理式も条件に使えます。かっこなしで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)を使って条件をまとめる
数値の範囲で条件を分けたいときは、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
少し高度ですが、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式で整理されたコードを書くコツ
- 複数の条件を整理したいときは
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式のほうがぜんぜん読みやすいです。」
先生
「読みやすいコードは大切ですよ。自分も他の人も理解しやすくなるので、あとから修正するときにも役立ちます。」
生徒
「これからは複雑な条件のときに積極的に使ってみます。」
先生
「その調子です。たくさん練習すれば、自然に使いこなせるようになりますよ。」