カテゴリ: Swift 更新日: 2026/01/04

Swiftのguard文の使い方|早期リターンでコードを綺麗に

Swift guard文の使い方|早期リターンでコードを綺麗に
Swift guard文の使い方|早期リターンでコードを綺麗に

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

生徒

「Swiftでコードを書いていると、ネストが深くなって読みにくくなっちゃいます。何かいい方法ってありますか?」

先生

「それなら、guard文を使うのがオススメだよ。条件に合わないときに早めに抜ける“早期リターン”という考え方で、コードがすっきりするんだ。」

生徒

「それってif文とはどう違うんですか?」

先生

「いい質問だね!それじゃ、guard文の使い方や特徴を、分かりやすく解説していこう。」

1. guard文とは?

1. guard文とは?
1. guard文とは?

guard文は、Swift(スウィフト)というプログラミング言語で使われる、条件分岐のための構文(こうぶん)です。条件に合わない場合に、その場で処理を中断(ちゅうだん)できるので、コードを読みやすく整理するのに便利です。

通常のif文では、条件が「合っているとき」の処理を書きますが、guard文はその逆で、「合っていないとき」に早めに抜けます。これを早期リターン(そうきリターン)と呼びます。

2. guard文の基本的な書き方

2. guard文の基本的な書き方
2. guard文の基本的な書き方

guard文の基本形は、次のようになります。


func greet(name: String?) {
    guard let unwrappedName = name else {
        print("名前がありません")
        return
    }
    print("こんにちは、\(unwrappedName)さん!")
}

この例では、namenil(値がない状態)のときに、「名前がありません」と表示して関数から抜けます。値がある場合だけ、その後の処理に進むことができます。

3. if文との違い

3. if文との違い
3. if文との違い

同じことをif文で書くと、ネスト(入れ子構造)が深くなって、コードが読みにくくなります。


func greet(name: String?) {
    if let unwrappedName = name {
        print("こんにちは、\(unwrappedName)さん!")
    } else {
        print("名前がありません")
    }
}

上のようにif文を使うと、条件に合っているときの処理が中に入り込むため、コードが深くなっていきます。guard文はそれを防ぎ、処理の流れをすっきり見せてくれるのです。

4. guard文の特徴と注意点

4. guard文の特徴と注意点
4. guard文の特徴と注意点
  • 早めにリターンすることで、不要なネストを避けられます。
  • 関数の冒頭で条件チェックを行いやすく、コードの流れが明確になります。
  • guard文の中では、elseブロックを必ず書く必要があります。
  • ブロック内では、returnbreakなどで処理を終了しないとエラーになります。

5. guard letを使った値の取り出し

5. guard letを使った値の取り出し
5. guard letを使った値の取り出し

guard letは、Optional(オプショナル)という「値があるかもしれないし、ないかもしれない型」から、安全に値を取り出す方法です。

たとえば、ユーザー名を入力してもらった場合に、名前がちゃんとあるか確認してから使いたいときに便利です。


func login(userName: String?) {
    guard let name = userName else {
        print("ユーザー名が未入力です")
        return
    }
    print("ようこそ、\(name)さん!")
}

6. guard文を複数使うこともできる

6. guard文を複数使うこともできる
6. guard文を複数使うこともできる

guard文は、1つの関数の中で何度でも使うことができます。複数の条件を順番にチェックしたいときに、とても便利です。


func register(userName: String?, age: Int?) {
    guard let name = userName else {
        print("ユーザー名がありません")
        return
    }
    guard let userAge = age else {
        print("年齢が入力されていません")
        return
    }
    print("\(name)さん(\(userAge)歳)で登録しました!")
}

このように、1つ1つの条件を分けて書くことで、どこに問題があるのかが分かりやすくなります。

7. guard文でBool型の条件チェックもできる

7. guard文でBool型の条件チェックもできる
7. guard文でBool型の条件チェックもできる

guard文は、letでの値の取り出しだけでなく、Bool(ブール型)の真偽チェックにも使えます。


func validate(isLoggedIn: Bool) {
    guard isLoggedIn else {
        print("ログインしてください")
        return
    }
    print("ログイン済みです")
}

isLoggedInfalse(偽)のときには、関数を途中で終了し、true(真)のときだけ、先の処理に進みます。

8. guard文を使うメリット

8. guard文を使うメリット
8. guard文を使うメリット

Swiftのguard文は、コードを読みやすく・安全に・簡潔にするために、とても重要な制御構造です。

  • 条件に合わないときに早く抜けられる
  • コードのネストを減らしてスッキリ書ける
  • Optional(オプショナル)の値を安全に扱える
  • 複数の条件チェックにも向いている

プログラムの読みやすさや保守性(ほしゅせい)を高めるためにも、guard文の使い方をマスターしておくと便利です。

まとめ

まとめ
まとめ

Swiftのguard文は、条件に合わない場合に早期リターンするという仕組みにより、コードを読みやすく整理するための非常に強力な構文です。特に、関数の冒頭で入力値や前提条件を確認するときに効果を発揮し、処理の流れをすっきりさせることができます。今回の記事では、guard文の基本的な使い方、if文との違い、guard letによるオプショナルの安全な取り扱い、複数条件のチェック、Bool型の条件評価など、実際のプログラミング場面で頻繁に遭遇する例を通して考え方を深めました。Swiftのコードは、安全性と明確さを重視した設計思想を持ち、Optionalやguard文などの仕組みを上手に使いこなすことで、アプリの動作もより確実で予測しやすいものになります。また、guard文は読み手にとっても負担を減らし、コードの構造を素直に理解できるように整えてくれるため、保守性や拡張性を高めるためにも必須のテクニックと言えます。 たとえば、ユーザー名が入力されていないケースや、年齢がnilになっているようなケースでは、guard文を使ってまず早めに処理を抜けることで、後続の処理が想定外の状態で進むのを防ぐことができます。複雑なアプリでは複数のチェックが必要になる場面も多いため、guard文を積み重ねることで「どこで」「何が」欠けているのかが明確になり、バグの予防にもつながります。さらに、Bool型による条件チェックもguardを使うことで簡潔になり、特定の状態がtrueでなければ続行しないという流れを誰の目にもわかりやすく示せます。 Swiftを学び始めた初心者にとって、guard文は難しそうに見えるかもしれませんが、実際にはif文よりもシンプルで直感的に扱える場面が多く、ネストが深くなりがちなコードをリファクタリングするときにも役立ちます。今回の内容を踏まえ、実際にアプリ開発でguard文を使ってみることで、その便利さや読みやすさを実感できるはずです。下記にはguard文の特徴を確認できるサンプルコードをまとめていますので、違いを比較しながら練習するとより理解が深まります。

サンプルプログラム(guard文で整理したコード)


// ユーザー情報を登録する関数
func registerUser(name: String?, age: Int?, isMember: Bool) {

    // guardで名前のチェック
    guard let userName = name else {
        print("名前が入力されていません")
        return
    }

    // guardで年齢のチェック
    guard let userAge = age else {
        print("年齢が入力されていません")
        return
    }

    // guardで会員状態の確認
    guard isMember else {
        print("会員登録が必要です")
        return
    }

    print("\(userName)さん(\(userAge)歳)として登録が完了しました")
}

// 不正なデータ
registerUser(name: nil, age: 20, isMember: true)

// 正しいデータ
registerUser(name: "さくら", age: 25, isMember: true)

guard文を使うことで、条件に合わないケースを先につぶし、後続の処理をシンプルに書けることがよくわかります。ネストがなくなることで関数の流れが明確になり、読み手が迷わないコードになります。Swiftの開発現場でも「複雑になりそうな処理の最初にはguard」を合言葉のように使うことがあるほど、guardはわかりやすいコードを書くための基本となっています。これから実際にプログラミングを進めていく中で、guardを自然に使えるようになると、コードの品質や保守性は格段に上がっていくでしょう。

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

生徒

「guard文を使うと早めに抜けることで、コードがすごく読みやすくなるのがよく分かりました!」

先生

「そうだね。特にOptionalの取り出しや条件チェックが続く場合には、guard文の方が流れを素直に書けるんだ。」

生徒

「if文よりもネストが浅くなるから、関数の内容が見通しやすくなるって感じですね。」

先生

「その通り。複数のguardを並べても読みやすさが損なわれにくいのも大きなメリットだよ。」

生徒

「実際のアプリでもOptionalがたくさん出てくるって聞いたので、今回の内容はすごく役に立ちそうです!」

先生

「ぜひどんどん使ってみて、guard文に慣れていこう。読みやすいコードは、自分にも周囲にも優しいからね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Swiftのguard文とは何ですか?初心者にもわかる意味を教えてください

Swiftのguard文とは、条件に合わない場合に早めに処理を中断するための構文です。早期リターンによってコードのネストを減らし、見通しの良い綺麗なコードを書けるのが大きな特徴です。
カテゴリの一覧へ
新着記事
New1
Kotlin
Kotlinのforループの基本!範囲・配列・コレクションの繰り返し処理
New2
Go言語
Go言語のスライスでappend時のメモリの仕組みを理解しよう!初心者でもわかる基礎解説
New3
Go言語
Go言語のスコープとは?ローカル変数・グローバル変数の違いと使い分け
New4
Go言語
Go言語のhttp.ResponseWriterとhttp.Requestの仕組みを理解しよう
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語の関数パラメータ!値渡しと参照渡しの違いを理解しよう
No.2
Java&Spring記事人気No2
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.3
Java&Spring記事人気No3
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.4
Java&Spring記事人気No4
Swift
Swiftで数値と文字列を相互変換!NumberFormatterで桁区切りや通貨表示をわかりやすく解説
No.5
Java&Spring記事人気No5
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.6
Java&Spring記事人気No6
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.7
Java&Spring記事人気No7
Kotlin
Kotlinで画面遷移を実装しよう!初心者でもわかるIntentの使い方完全ガイド
No.8
Java&Spring記事人気No8
Swift
SwiftPMでのバージョン指定と互換性の考え方を初心者向けに徹底解説