Swiftのswitch文の使い方|初心者でもわかるパターンマッチング徹底解説
生徒
「Swiftでswitchっていうのを見かけたんですけど、これは何に使うんですか?」
先生
「switch文は、ある値に応じて実行する処理を切り替えたいときに使います。if文をたくさん書かなくても済む便利な方法なんですよ。」
生徒
「なるほど!具体的にどうやって書けばいいんでしょうか?」
先生
「それでは、switch文の基本の使い方から、便利な書き方まで一緒に見ていきましょう!」
1. switch文とは?
switch文(スイッチぶん)は、Swiftで値に応じて処理を切り替えるための制御構造です。
たとえば、「信号の色に応じて、進む・止まる・注意する」など、状況によって行動を変えたいときに使います。
2. switch文の基本構文
まずは、switch文の書き方を見てみましょう。これは信号の色によって動作を変える例です。
let signal = "赤"
switch signal {
case "赤":
print("止まってください")
case "青":
print("進んでください")
case "黄":
print("注意してください")
default:
print("不明な信号です")
}
case(ケース)は、それぞれの条件を表します。defaultは、どのcaseにも当てはまらなかったときに実行される部分です。
3. breakが不要なのがSwiftの特徴
Swiftのswitch文は、他の言語と違って、breakを書かなくても自動的に処理が終わります。
例えばJavaでは、各caseの最後にbreakが必要ですが、Swiftでは不要です。そのため、うっかり書き忘れて意図しない動作になる心配がありません。
4. 複数の値をまとめて書く方法
同じ処理を複数の値に対して行いたいときは、,(カンマ)で区切って書くことができます。
let animal = "犬"
switch animal {
case "犬", "猫":
print("ペットとして人気です")
case "馬":
print("走るのが得意です")
default:
print("未知の動物です")
}
このように複数の選択肢を1つのcaseにまとめることができるので、コードがすっきりします。
5. 数値の範囲を使ったパターンマッチング
Swiftのswitch文では、数値の範囲を条件にすることもできます。
let score = 85
switch score {
case 90...100:
print("とてもよくできました")
case 70..<90:
print("よくできました")
case 0..<70:
print("がんばりましょう")
default:
print("スコアが不正です")
}
90...100は「90から100までを含む」、70..<90は「70以上90未満」という意味です。
6. where句で条件を追加する
switch文では、whereを使って条件を細かく指定することができます。
let number = -5
switch number {
case let x where x < 0:
print("負の数です")
case let x where x == 0:
print("ゼロです")
case let x where x > 0:
print("正の数です")
default:
print("数値が不明です")
}
let xで変数に値を取り出して、whereで条件を付けることができます。
7. タプルを使ったswitch文の応用
Swiftでは、タプル(複数の値をまとめたもの)に対してもswitch文を使えます。
let point = (x: 0, y: 0)
switch point {
case (0, 0):
print("原点です")
case (_, 0):
print("X軸上です")
case (0, _):
print("Y軸上です")
case (-10...10, -10...10):
print("原点近くです")
default:
print("遠くの座標です")
}
_(アンダースコア)は、「どんな値でもよい」という意味のワイルドカードです。これを使えば、特定の値だけをチェックすることができます。
8. switch文の注意点とコツ
switch文を使うときの注意点と、覚えておくと便利なポイントを紹介します。
- 全てのパターンをカバーする必要がある(
defaultが推奨) - 範囲やパターンで条件を簡潔に書ける
- 複数の条件をまとめて扱えるので
if文より見やすい breakは不要なので書き忘れの心配がない
コードの分岐が多い場合や、読みやすく整理したいときには、switch文を積極的に使ってみましょう。
まとめ
Swiftのswitch文は、初心者が条件分岐を整理して理解しやすくするためにとても便利な構文であり、複雑な条件を視覚的にすっきりまとめられる強力な仕組みです。今回の記事で学んだように、値に応じて異なる処理を振り分ける場合、switchを使うことでコード全体の見通しが大きく改善されます。特に、複数条件をスマートに整理できる点や、不必要なbreakを記述しなくてもよいというSwift独自の特徴は、初心者にとって書きやすさと理解しやすさを同時に実現する大きなメリットになります。信号の色や数値評価、動物の種類、または文字列やタプルの組み合わせなど、日常的な例を通じて学ぶことで、switch文が「単なる条件分岐の手段」ではなく「複雑なルールを整理して読みやすくするツール」であるということが実感できるようになります。
さらに、Swiftではswitch文が非常に多機能であり、単純な値比較だけでなく、範囲指定・パターンマッチング・タプル分解・where句による条件追加など、多様な書き方が可能です。こうした柔軟な表現力のおかげで、if文では煩雑になりがちなロジックも、美しく簡潔なコードへと整理できます。たとえば、テストの点数を評価する処理では範囲を用いたパターン、座標判定ではタプルとワイルドカードを組み合わせることで、処理の意図が非常に明確になります。これは読み手にとっても大きな利点で、条件ごとにまとまりのある構造をそのまま読み進めることができ、誤読や書き間違いを防ぐ効果もあります。
また、Swiftのswitch文は必ず全てのパターンを網羅する必要があるため、漏れのない安全なコードを書くための強い味方にもなります。万が一どのcaseにも当てはまらない状況が発生しても、defaultを記述しておけば予期せぬエラーや処理落ちを防げます。実践的には、APIレスポンスの種類分岐、デバイス状態の判定、配列要素の分類など、多くの場面でswitchが役立つため、基本を早めに身につけておくと今後のプログラミング学習でも大きな力になります。
実際の開発では、条件が増えれば増えるほどswitch文の整理力が活きてきます。特に、複雑な条件が連続して続くコードは、初心者だけでなく経験者にとっても読みづらく、バグの温床になりがちです。そうした場面でswitch文を活用すれば、直感的に追えるロジックを保ちつつ、保守性の高いコードに仕上げることができます。学習の初期段階でswitchの基本と応用を身につけておけば、後々扱うAPIレスポンス判定、UI状態管理、ビジネスロジック分岐などにもスムーズに対応できるようになります。
switch文の応用サンプルコード
以下は複数の条件を組み合わせて判定する応用例で、Swiftのswitch文の柔軟さを実感できるコードです。
let userStatus = (isLogin: true, age: 20)
switch userStatus {
case (true, 18...100):
print("ログイン中・大人のユーザーです")
case (true, 0..<18):
print("ログイン中・未成年ユーザーです")
case (false, _):
print("ログインしていません")
default:
print("状態を判定できません")
}
タプルと範囲を組み合わせることで、読みやすく明確なロジックを実装できます。複雑な条件整理に役立つので、さまざまな場面で応用してみましょう。
生徒
「switch文って、ただ条件分岐するだけじゃなくて、いろんな書き方ができて便利なんですね!」
先生
「その通りです。特に範囲やタプルに対応しているところがSwiftのswitch文の魅力ですね。複雑な条件でもすっきり整理できますよ。」
生徒
「if文で書くと長くなる処理も、switch文なら見やすくまとめられるってわかりました!」
先生
「その気づきはとても大事です。プログラムは読みやすさが大切ですから、switch文を使いこなせるとコードの質がぐっと上がりますよ。」
生徒
「タプルやwhere句の使い方も面白かったです!もっと練習して慣れていきたいと思います!」
先生
「その意欲があれば大丈夫。これから書くコードでどんどんswitch文を試して、表現力を広げていきましょう。」