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式の使い方
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は「どの条件にも当てはまらなかったとき」の受け皿です。たとえばnumberが4だった場合は、どの行にも一致しないので"不明"が選ばれます。このwhen式全体の結果がresultに入るので、最後のprintln(result)でその文字が表示されます。
中吉
このように、when式を使うと「どの値のときに何をするか」が縦にきれいに並ぶため、プログラミング初心者でも流れを追いやすくなります。同じ変数に対して分岐したいときは、まずwhen (値) { ... }という書き方を思い出してみてください。
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文より視覚的に整理されるのが良いですね。これからすぐ使ってみます!」
先生
「ぜひ実際のコードの中で活用して、さらに使いこなしてください。慣れてくるともっと自然に書けるようになりますよ。」
Kotlinを基礎からしっかり学びたい人や、 Java経験を活かしてモダンな言語にステップアップしたい人には、 定番の入門書がこちらです。
基礎からわかるKotlinをAmazonで見る※ Amazon広告リンク
この記事を読んだ人からの質問
プログラミング初心者からのよくある疑問/質問を解決します
Kotlinのwhen式とif文の違いは何ですか?どちらを使えば読みやすいコードになりますか?
Kotlinのwhen式は、複数の条件をすっきり整理できる構文で、if文よりも条件分岐が多い場合に読みやすくなります。同じ変数の値に応じて処理を分けたいときはwhen式、複雑な一つの条件をチェックしたいときはif文が向いています。
【未経験OK】Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験する60分
「プログラミングを始めたい」を形にする。最新言語Kotlinで楽しむ、ものづくりの第一歩。
本講座は、プログラミング経験が全くない方のためのエントリー講座です。「コードを書くってどういうこと?」という基本から、世界中で使われている最新言語Kotlin(コトリン)を使って、実際にプログラムを動かすまでを体験します。難しい理屈よりも、まずは「自分の手で動かす楽しさ」を最短距離で実感していただきます。
具体的な体験内容と環境
【つくるもの】
簡単な言葉を入力すると自動で返答してくれる「対話型ミニプログラム」や、計算を自動化する「便利ツール」をゼロから作成します。黒い画面に自分の書いた文字が表示される瞬間は、最高の感動体験です。
【開発環境】
プロのエンジニアが実際に使っている開発ツールIntelliJ IDEA(インテリジェイ)をインストールします。ボタン一つで日本語化し、初心者でも迷わず操作できる「魔法の設定」を一緒に行います。
この60分で得られる3つの体験
プロと同じ道具を揃えることで、明日から一人でもプログラミングを続けられる環境が整います。
「変数」や「型」といった難しい言葉も、身近な例え話で解説。モヤモヤをゼロにします。
Kotlinは英語に近くて読みやすいのが特徴。自分でコードを読んで、間違いを見つけるコツも伝授します。
※本講座は、パソコン操作が不安な方でも安心して受講いただける完全マンツーマンです。あなたのペースに合わせて、一つずつ丁寧に進めていきます。
Kotlinで始めるプログラミング入門|ゼロから「動く喜び」を体験