カテゴリ: Kotlin 更新日: 2025/11/26

Kotlinで条件式をネストする方法!多段条件分岐の基本を解説

Kotlinで条件式をネストする方法!多段条件分岐の基本を解説
Kotlinで条件式をネストする方法!多段条件分岐の基本を解説

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

生徒

「先生、Kotlinで条件をいくつも組み合わせて判断したいときはどう書くんですか?」

先生

「それはifの中にifを入れる“ネスト”という書き方を使います。多段条件分岐とも呼ばれ、複数の条件を順番にチェックできます。」

生徒

「初心者の僕でも書けるようになりますか?」

先生

「もちろんです。わかりやすい手順と例で、一緒に見ていきましょう!」

1. 条件式をネストするとは?

1. 条件式をネストするとは?
1. 条件式をネストするとは?

条件式のネストとは、「もしAならこう、じゃなければBの中でもさらに判断して…」という、複数段階で判断をくわえる方法です。初心者の方にも、わかりやすく言えば、料理で「もし甘いなら砂糖を減らす、でも酸っぱいなら砂糖を増やす」ような手順をそのままプログラムにするイメージです。

if文は通常、if(条件){…} else {…}ですが、そのelseの中にまたifを書いて「ネスト(入れ子)」にします。

2. ネストの基本例

2. ネストの基本例
2. ネストの基本例

では、例を見てみましょう。年齢によって「子供」「成人」「高齢者」に分ける場合です。


fun main() {
    val age = 70
    if (age < 20) {
        println("子供")
    } else {
        if (age < 65) {
            println("成人")
        } else {
            println("高齢者")
        }
    }
}

このコードでは、最初に「20未満か」を調べ、違っていたらさらに「65未満か」で判断しています。3種類を分けられる「多段条件分岐」の典型的な使い方です。

3. else if を使ってスッキリ書く

3. else if を使ってスッキリ書く
3. else if を使ってスッキリ書く

Kotlinでは、elseの中にわざわざifと書かなくても、else ifを使えばもっとスッキリ書けます。


fun main() {
    val age = 70
    if (age < 20) {
        println("子供")
    } else if (age < 65) {
        println("成人")
    } else {
        println("高齢者")
    }
}

このようにすると、「ネストが浅くなって見やすい」「追加の条件も簡単に増やせる」というメリットがあります。

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

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

※ Amazon広告リンク

4. 複数条件をネストするときの注意点

4. 複数条件をネストするときの注意点
4. 複数条件をネストするときの注意点

ネストするときは、

  • 条件の順番:上から順にチェックされます。重要な条件は先に書きましょう。
  • インデント(字下げ):コードが深くなると見にくくなるので、インデントをきちんと整えることが大切です。
  • 評価の重複:同じ条件を何度も書かないように注意が必要です。

5. if式で値を返すパターン

5. if式で値を返すパターン
5. if式で値を返すパターン

さらに、if式は「値として使える」ので、ネストして値を返すこともできます。関数や変数の代入で使うときに便利です。


fun category(age: Int): String {
    return if (age < 20) {
        "子供"
    } else if (age < 65) {
        "成人"
    } else {
        "高齢者"
    }
}
println(category(70)) // 高齢者

このように書くと、「関数の返り値」を条件に応じて返す多段条件分岐になります。

6. when式でネストを簡単にする方法

6. when式でネストを簡単にする方法
6. when式でネストを簡単にする方法

Kotlinには、when式というswitchに似た構文があり、ネストを減らしてもっと分かりやすく書けます。


fun category2(age: Int): String {
    return when {
        age < 20 -> "子供"
        age < 65 -> "成人"
        else -> "高齢者"
    }
}
println(category2(70)) // 高齢者

この方法なら、else ifよりもさらにシンプルに条件分岐をまとめて扱えます。

7. ネスト条件分岐の書き方

7. ネスト条件分岐の書き方
7. ネスト条件分岐の書き方

多段条件分岐の基本としては、

  • if文でネストして段階的に判断
  • else ifを使ってスッキリ
  • when式でさらにわかりやすく

初心者でも「条件を順番に並べて判断する」流れがイメージできれば、ネストもすぐに使いこなせます。

まとめ

まとめ
まとめ

Kotlinの条件式をネストして多段条件分岐を書く方法を学ぶことで、ひとつのif文だけでは表現しきれない複雑なロジックを整理して書けるようになります。年齢から「子供」「成人」「高齢者」を判定するような分類処理、点数からランクを決める判定処理、フラグや状態の組み合わせで挙動を切り替える処理など、実際のアプリケーション開発では条件をいくつも組み合わせる場面がとても多くあります。今回の記事では、まずネストしたif文の基本から始めて、else ifを使った多段条件分岐、さらにKotlinらしいwhen式による条件分岐へと段階的に理解を深めてきました。

とくに、条件式をネストする最初のステップとして「ifの中にifを書く」という書き方を確認し、次にelseの中のifを整理してelse ifで書き直す流れを体験したことで、「最初はネストが深くても、あとから見通しの良い多段条件分岐に整理できる」という感覚をつかめたはずです。また、Kotlinでは条件式を式として扱えるため、関数の戻り値や変数の代入にそのまま使えることも重要なポイントです。単に「分岐するための命令」ではなく「値を返す式」として意識すると、ロジック全体をすっきりまとめる設計がしやすくなります。

さらに、同じ多段条件分岐でも、when式を使うことでネストをほとんど意識せずに書けることも確認しました。条件が増えてくると、ifelse ifの組み合わせだけではインデントが増え、上から下へ読むときにパッと頭に入りにくくなります。そこで、Kotlinのwhenを使うと「年齢がこの範囲ならこの結果」というように、条件と結果の対応を一覧表のように並べることができ、可読性の高い条件分岐になります。条件式をネストする力と、when式で見通しよく書き直す力の両方を身につけることで、Kotlinの条件分岐を自在に扱えるようになるでしょう。

また、多段条件分岐を書くときに忘れてはいけないのが条件の順番インデントです。記事でも触れたように、条件式は上から順番に評価されるため、最初にチェックしておきたい重要な条件は上側に書くのが定石です。先に範囲の広い条件を書いてしまうと、その下に続く条件が一度も評価されない場合があり、思わぬバグにつながります。インデントに関しても、ネストが深くなるほど読みにくくなるので、「これ以上深くなりそうならwhen式に変える」「関数を分けて責務を細かくする」といった工夫が大切です。

ここで、記事の内容を踏まえた少し発展的なサンプルとして、年齢と会員ランクを組み合わせてメッセージを出し分ける多段条件分岐のコードを掲載します。ネストしたifelse ifwhen式の使い分けを意識しながら眺めることで、Kotlinの条件式設計のイメージがより具体的になるはずです。

応用サンプルプログラム:年齢と会員ランクの多段条件分岐


fun memberMessage(age: Int, rank: String): String {
    return if (age < 20) {
        if (rank == "VIP") {
            "未成年の特別会員です"
        } else {
            "未成年の一般会員です"
        }
    } else if (age < 65) {
        if (rank == "VIP") {
            "成人のプレミアム会員です"
        } else {
            "成人の標準会員です"
        }
    } else {
        if (rank == "VIP") {
            "高齢の優待会員です"
        } else {
            "高齢の通常会員です"
        }
    }
}

fun memberMessageWhen(age: Int, rank: String): String {
    val ageCategory = when {
        age < 20 -> "未成年"
        age < 65 -> "成人"
        else -> "高齢"
    }
    val rankLabel = when (rank) {
        "VIP" -> "特別"
        "PREMIUM" -> "上位"
        else -> "一般"
    }
    return "${ageCategory}の${rankLabel}会員です"
}

最初のmemberMessage関数は、ネストしたifをそのまま使って多段条件分岐を書いた例です。年齢による分類の中に、さらに会員ランクの判定をネストしています。条件式のネストをそのまま表現しているため、「年齢とランクの組み合わせでどのメッセージになるか」を素直に追いかけることができます。一方で、ネストが深くなってきたときにどこまでがどの条件なのかを見失わないように、インデントの揃え方に注意する必要があります。

二つ目のmemberMessageWhen関数では、同じような判定をwhen式を使って整理し、年齢カテゴリーとランクラベルをそれぞれ別々の条件分岐に分解しています。まずwhenで年齢から「未成年」「成人」「高齢」を決め、次にランクから「特別」「上位」「一般」を決め、その二つを文字列として組み合わせることで最終的なメッセージを生成しています。このように条件を分けて考えると、処理の意図がよりはっきりし、条件式を後から変更したり追加したりするのも簡単になります。

条件式をネストして多段条件分岐を設計するときには、「ひとつのifの中に複数の役割を詰め込みすぎていないか」「else ifにまとめて書けないか」「when式に置き換えることで表が並んだように見せられないか」を意識することが大切です。Kotlinには、if文、else if、when式、さらには条件に応じた値の返却を組み合わせる豊富な表現力があります。今回のまとめで紹介した考え方とサンプルコードを手元で動かしながら、自分なりの分岐パターンを試してみると、条件式のネストへの苦手意識も自然と薄れていくでしょう。

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

生徒

「先生、きょうは条件式のネストと多段条件分岐をたくさん見て、頭の中のイメージがかなり整理されました。単にif文を増やすだけじゃなくて、どう並べるかが大事なんですね。」

先生

「その通りです。同じ結果を出すプログラムでも、条件の順番やネストの深さによって読みやすさが大きく変わります。Kotlinではif文だけでなくwhen式も使えるので、どの書き方がいちばん分かりやすいか考えながら組み立てていくと良いですよ。」

生徒

「年齢で子供と成人と高齢者を分ける例や、会員ランクを組み合わせる例を見て、実際のアプリでもそのまま使えそうだと感じました。特にwhen式の書き方は、表みたいに条件が並んでいて読みやすかったです。」

先生

「実務的なロジックほど、条件が増えていきますからね。最初はネストしたifで素直に書いてから、必要に応じてelse ifやwhen式にリファクタリングする流れを覚えておくと、後からコードを見直すときにとても助かります。」

生徒

「インデントも大事だという話も印象に残りました。ネストが深くなってくると、どのかっこがどのif文に対応しているのか分からなくなりがちなので、なるべく浅くしておくように心がけたいです。」

先生

「その意識はとても大切ですね。もしネストが深くなりそうなときは、処理を小さな関数に分けたり、when式に置き換えられないか検討してみてください。多段条件分岐をどう整理するかは、設計力を鍛える良い練習にもなります。」

生徒

「きょう学んだネストしたif文、else if、when式の三つの書き方を意識して、これから自分のコードでも積極的に試してみます。条件が増えても怖がらずに、順番と見やすさを考えながら組み立てていきたいです!」

先生

「とても良い心がけですね。Kotlinの条件式に慣れてくると、ロジックの整理も楽しくなってきますよ。これからも身近な例を思い浮かべながら、多段条件分岐の練習を続けていきましょう。」

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New2
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New3
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
New4
Swift
Swiftでエラー原因を可視化!ログとトレースのベストプラクティスを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.8
Java&Spring記事人気No8
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方

💻 作業効率アップに

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

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

※ Amazon広告リンク