Swiftで開発を始めたばかりの方にとって、繰り返し処理(ループ処理)は必須のスキルです。この記事では、Swiftで使える6つの繰り返し処理の方法を、実際のコード例とともに初心者にもわかりやすく解説します。
Swiftの繰り返し処理とは?
繰り返し処理とは、同じ処理を何度も実行するためのプログラミング技法です。例えば、配列の全要素を表示したり、特定の条件を満たすまで処理を続けたりする場合に使用します。
Swiftでは主に以下の6つの方法があります。
- for-inループ
- whileループ
- repeat-whileループ
- strideを使った繰り返し
- forEachメソッド
- 制御文(continue/break)
それでは、それぞれの使い方を詳しく見ていきましょう。
1. for-inループ:最も基本的な繰り返し処理
for-inループは、Swiftで最もよく使われる繰り返し処理です。配列や範囲を簡単に繰り返し処理できます。
配列を繰り返し処理する
let fruits = ["りんご", "バナナ", "オレンジ"]
for fruit in fruits {
print(fruit)
}
// 出力結果:
// りんご
// バナナ
// オレンジ
数値の範囲を繰り返す
// 1から5まで(5を含む)
for i in 1...5 {
print(i)
}
// 出力:1, 2, 3, 4, 5
// 0から4まで(5を含まない)
for i in 0..<5 {
print(i)
}
// 出力:0, 1, 2, 3, 4
ポイント:...
は終了値を含み、..<
は終了値を含みません。
インデックスと値を同時に取得する
配列の要素と一緒に、そのインデックス(位置)も必要な場合はenumerated()
を使います。
let fruits = ["りんご", "バナナ", "オレンジ"]
for (index, fruit) in fruits.enumerated() {
print("\(index)番目: \(fruit)")
}
// 出力結果:
// 0番目: りんご
// 1番目: バナナ
// 2番目: オレンジ
2. whileループ:条件が満たされる間繰り返す
whileループは、指定した条件がtrue
の間、処理を繰り返します。繰り返し回数が事前にわからない場合に便利です。
var count = 0
while count < 5 {
print("カウント: \(count)")
count += 1
}
// 出力:
// カウント: 0
// カウント: 1
// カウント: 2
// カウント: 3
// カウント: 4
注意点:条件が最初からfalse
の場合、一度も実行されません。
var count = 10
while count < 5 {
print("この行は実行されません")
}
3. repeat-whileループ:最低1回は必ず実行される
repeat-whileループは、他のプログラミング言語のdo-while
に相当します。条件チェックの前に処理が実行されるため、最低1回は必ず実行されます。
var number = 0
repeat {
print("数値: \(number)")
number += 1
} while number < 3
// 出力:
// 数値: 0
// 数値: 1
// 数値: 2
whileとrepeat-whileの違い
// whileの場合:一度も実行されない
var count1 = 10
while count1 < 5 {
print("実行されない")
}
// repeat-whileの場合:1回は実行される
var count2 = 10
repeat {
print("1回は実行される")
} while count2 < 5
4. stride:特定の間隔で繰り返す
stride
関数を使うと、特定の間隔(ステップ)で数値を増減させながら繰り返し処理ができます。
2ずつ増やす
for i in stride(from: 0, to: 10, by: 2) {
print(i)
}
// 出力:0, 2, 4, 6, 8
逆順に処理する
for i in stride(from: 10, through: 0, by: -2) {
print(i)
}
// 出力:10, 8, 6, 4, 2, 0
ポイント:
to
: 終了値を含まないthrough
: 終了値を含む
5. 制御文:continue と break
繰り返し処理の流れを制御するための2つの重要なキーワードがあります。
continue:現在の繰り返しをスキップ
continue
を使うと、その回の処理をスキップして次の繰り返しに進みます。
for i in 1...5 {
if i == 3 {
continue // 3の時だけスキップ
}
print(i)
}
// 出力:1, 2, 4, 5(3がスキップされる)
break:ループを終了
break
を使うと、ループを完全に終了します。
for i in 1...10 {
if i == 5 {
break // 5になったらループ終了
}
print(i)
}
// 出力:1, 2, 3, 4
実践例:偶数だけを処理する
let numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers {
if number % 2 != 0 {
continue // 奇数はスキップ
}
print("\(number)は偶数です")
}
// 出力:2, 4, 6, 8, 10が偶数として表示される
6. forEachメソッド:関数型プログラミングスタイル
forEach
は、配列の各要素に対して処理を実行するメソッドです。関数型プログラミングのスタイルで記述できます。
let numbers = [1, 2, 3, 4, 5]
numbers.forEach { number in
print(number)
}
// 出力:1, 2, 3, 4, 5
省略記法
let numbers = [1, 2, 3, 4, 5]
numbers.forEach {
print($0) // $0は最初の引数を表す
}
forEachの注意点
重要:forEach
の中ではbreak
やcontinue
は使えません。これらを使いたい場合は通常のfor-in
ループを使用してください。
// これはエラーになる
numbers.forEach { number in
if number == 3 {
break // エラー:forEachではbreakは使えない
}
print(number)
}
Swiftの繰り返し処理の使い分け
どの繰り返し処理を使うべきか迷った時の選び方をまとめました。
状況 | おすすめの方法 |
---|---|
配列の全要素を処理したい | for-in |
範囲の数値を処理したい | for-in |
繰り返し回数が不明 | while |
最低1回は実行したい | repeat-while |
特定の間隔で処理したい | stride |
関数型スタイルで書きたい | forEach |
実践例:ユーザー入力を繰り返し受け取る
実際のアプリ開発でよくあるパターンとして、正しい入力があるまで繰り返すコードを書いてみましょう。
var userInput = ""
var isValidInput = false
repeat {
print("パスワードを入力してください(6文字以上):")
userInput = readLine() ?? ""
if userInput.count >= 6 {
isValidInput = true
print("パスワードが設定されました")
} else {
print("6文字以上で入力してください")
}
} while !isValidInput
まとめ:Swiftの繰り返し処理をマスターしよう
この記事では、Swiftで使える6つの繰り返し処理について解説しました。
- for-inループ:配列や範囲の処理に最適
- whileループ:条件が満たされる間繰り返す
- repeat-whileループ:最低1回は実行したい時に
- stride:特定の間隔で繰り返す
- 制御文:continueとbreakでループを制御
- forEach:関数型スタイルで記述
それぞれの特徴を理解して、状況に応じて使い分けることで、より読みやすく効率的なSwiftコードが書けるようになります。まずは基本的なfor-inループから始めて、徐々に他の方法も試してみてください。