Kotlinのwhen式を完全ガイド!初心者でもわかるパターンマッチング的な使い方
生徒
「Kotlinでたくさんの条件を分けたいとき、どう書けば見やすくできますか?」
先生
「Kotlinではwhen式という便利な書き方がありますよ。複数の条件をすっきり書けるんです。」
生徒
「if文とどう違うんですか?」
先生
「良い質問です!違いを説明しながら、使い方も具体的に見ていきましょう。」
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式の使い方
たとえば、数字に応じて「大吉」「中吉」「凶」などと表示したい場合、if文でも書けますが、when式ならもっとシンプルにできます。
fun main() {
val number = 2
val result = when (number) {
1 -> "大吉"
2 -> "中吉"
3 -> "凶"
else -> "不明"
}
println(result)
}
このコードでは、変数numberの値によって、対応する文字列がresultに代入されます。「それ以外」のときはelseが使われます。
中吉
3. when式は「式」なので値を返す
重要なポイントは、whenは「文(ぶん)」ではなく「式(しき)」だということです。
式というのは、何かしらの値を返すものです。上の例では、when式全体が「中吉」という文字列を返して、resultに代入されています。
これにより、コードを短く、読みやすく書くことができます。
4. 値だけでなく条件も使える!
Kotlinのwhen式では、値の一致だけでなく、条件を指定して使うこともできます。
たとえば点数に応じて評価をつけたいとき、次のように書けます:
fun main() {
val score = 85
val grade = when {
score >= 90 -> "A"
score >= 70 -> "B"
score >= 50 -> "C"
else -> "D"
}
println("評価は $grade です")
}
評価は B です
このように、whenのかっこ内を省略して、条件式だけを書くこともできます。複雑な条件分岐も、きれいにまとめられます。
5. 複数の値をまとめて分岐できる
when式では、複数の値をまとめて同じ処理にすることもできます。
fun main() {
val day = "土曜日"
val type = when (day) {
"土曜日", "日曜日" -> "休日"
"月曜日", "火曜日", "水曜日", "木曜日", "金曜日" -> "平日"
else -> "不明"
}
println(type)
}
休日
このように、カンマで区切ることで複数の値を一度に処理できます。非常に便利な書き方です。
6. when式と変数の型(たとえば文字列)
when式は、数値だけでなく文字列やその他の型(たとえばCharやBooleanなど)にも使えます。
次の例は、文字列に対して反応するwhenです。
fun main() {
val input = "こんにちは"
val response = when (input) {
"こんにちは" -> "やあ!"
"おはよう" -> "おはようございます!"
"こんばんは" -> "こんばんは〜"
else -> "なんと言ったの?"
}
println(response)
}
やあ!
このように、文字列でも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文より視覚的に整理されるのが良いですね。これからすぐ使ってみます!」
先生
「ぜひ実際のコードの中で活用して、さらに使いこなしてください。慣れてくるともっと自然に書けるようになりますよ。」