ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
Swiftのif文は、指定した条件が成り立つかどうかで実行する処理を切り替えるための条件分岐構文である。条件が真(true)のときだけ特定の処理を実行したり、真偽に応じて別々の処理へ枝分かれさせたりする場面で用いられる。
| この記事の要点 |
|---|
|
if文の基本構文
もっとも基本的なif文は、条件が true のときだけ波括弧内の処理を実行する。Swiftでは条件式を囲む丸括弧(( ))は書く必要がなく、代わりに処理を囲む波括弧({ })が必須である点が特徴的である。
|
let score = 80 if score >= 60 { print("合格") } |
条件 score >= 60 が成り立つため「合格」が出力される。条件が成り立たない場合に別の処理を行いたいときは、else を続ける。
|
let score = 50 if score >= 60 { print("合格") } else { print("不合格") } |
このコードでは score が60未満なので、else 側の「不合格」が出力される。
else if による多段分岐
3通り以上に枝分かれさせたい場合は、else if を必要なだけ並べる。条件は上から順に評価され、最初に true になったブロックだけが実行される。それ以降の条件は評価されない。
|
let score = 85 if score >= 90 { print("優") } else if score >= 70 { print("良") } else { print("可") } |
score が85のとき、最初の score >= 90 は false、次の score >= 70 が true となるため「良」が出力される。条件の順序によって結果が変わるため、範囲の広い条件を後ろに書くなど並び順には注意が必要である。
条件に使う演算子
if文の条件には、値を比較する比較演算子と、複数の条件を組み合わせる論理演算子がよく使われる。いずれも結果はBool型になる。
| 演算子 | 種類 | 意味 | 例(trueになる場合) |
|---|---|---|---|
== |
比較 | 等しい | a == b |
!= |
比較 | 等しくない | a != b |
< / > |
比較 | より小さい / より大きい | a < b |
<= / >= |
比較 | 以下 / 以上 | a >= b |
&& |
論理(AND) | 両方が真なら真 | a && b |
|| |
論理(OR) | どちらかが真なら真 | a || b |
! |
論理(NOT) | 真偽を反転する | !a |
論理演算子を使うと、複数の条件をまとめて1つのif文で判定できる。
|
let age = 25 let hasTicket = true if age >= 20 && hasTicket { print("入場できます") } |
上記では age >= 20 と hasTicket の両方が true のときだけ処理が実行される。&& は左側が false なら右側を評価しない短絡評価が行われる。
if let / guard let によるOptionalの処理
Swiftには、値が存在しないかもしれないことを表すOptional型がある。Optionalは nil(値なし)の可能性があるため、そのまま中身を使うことはできない。値が入っているかを確認しつつ、入っていれば安全に取り出す仕組みがOptionalバインディングであり、if文と組み合わせた if let がその代表である。
|
let input: String? = "42" if let value = Int(input ?? "") { print("数値に変換できました: \(value)") } else { print("変換に失敗しました") } |
if let value = ... は、右辺が nil でなければ中身を定数 value に取り出して if ブロックを実行し、nil なら else ブロックへ進む。value はブロック内では非Optionalとして扱えるため、安全に利用できる。
一方、guard let は「条件を満たさなければ早期に抜ける」ことを明示する書き方で、主に関数の冒頭で前提条件をチェックする際に使われる。取り出した値はその後のコードで継続して使えるのが特徴である。
|
func show(_ input: String?) { guard let name = input else { print("名前がありません") return } print("ようこそ \(name) さん") } |
guard let は else ブロックが必須で、その中では return などで処理を抜ける必要がある。if let が「取り出せたときの処理」を中心に書くのに対し、guard let は「取り出せなかったときに抜ける」処理を先に書き、本筋のコードのネストを浅く保てる利点がある。
三項演算子による簡潔な分岐
真偽に応じて2つの値のどちらかを選ぶだけの単純な分岐であれば、三項演算子 条件 ? 真のときの値 : 偽のときの値 を使うと1行で書ける。
|
let score = 80 let result = score >= 60 ? "合格" : "不合格" print(result) // 合格 |
同じ処理をif文でも書けるが、値の代入だけが目的なら三項演算子のほうが簡潔になる。ただし条件や分岐が複雑になる場合は、可読性の面でif文を選ぶほうが分かりやすいことが多い。
switch文との使い分け
if文は任意の条件式で分岐できるため、範囲の判定や複数条件の組み合わせに向いている。一方、1つの値が「どの値に一致するか」で多方向に分岐する場合は、switch 文のほうが見通しがよくなることがある。値のパターンが多いときや、列挙型(enum)の全ケースを扱うときには switch が適している場面が多い。条件の性質に応じて、読みやすいほうを選ぶとよい。
| よくある落とし穴 |
|---|
|
よくある質問(FAQ)
Q. 条件式に丸括弧を付けてもよいですか。
A. if (score >= 60) { } のように丸括弧を付けても文法上は許容され、エラーにはならない。ただしSwiftでは丸括弧を付けないのが一般的な書き方であり、不要な括弧は省くスタイルが推奨されることが多い。
Q. if let と guard let はどちらを使えばよいですか。
A. 取り出した値をそのブロック内だけで使うなら if let、関数の前提条件を確認し、満たさなければ早期に抜けたうえで以降の処理で値を使い続けたいなら guard let が適している。guard let はネストが深くなりにくく、本筋のコードを読みやすく保てる利点がある。
Q. 複数のOptionalをまとめて取り出せますか。
A. if let a = optA, let b = optB { } のようにカンマで区切って複数のバインディングを並べられる。すべてが nil でない場合にのみブロックが実行される。さらに if let a = optA, a > 0 { } のように、取り出した値に対する追加条件を続けて書くこともできる。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページはありません
- print でデバッグ出力
- 変数の宣言
- 定数の宣言
- データ型
- 配列の宣言/追加/削除
- クラスとメソッドの作り方と呼び出し方
- 繰り返し制御
- if文による条件分岐
- エラー一覧
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?