0Pricing
Swift Academy · レッスン

Optional Chaining ?. 演算子

クラッシュさせずにOptionalのメソッドを呼び出し、プロパティにアクセスします。

「Optional Chaining ?. 演算子」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

ようこそ

オプショナルチェーンを使うと、オプショナルの連鎖を通じてメソッドの呼び出し、プロパティへのアクセス、添字アクセスを安全に行えます。チェーン内のいずれかの要素が nil の場合、クラッシュせずに式全体が nil を返します。

?. 演算子

```swift struct Address { var city: String } struct Person { var address: Address? } let alice = Person(address: Address(city: "Istanbul")) let bob = Person(address: nil) print(alice.address?.city) // Optional("Istanbul") print(bob.address?.city) // nil ```

複数レベルの連結

チェーンは任意の深さまで連結できます: ```swift struct Company { var ceo: Person? } let company = Company(ceo: alice) let city = company.ceo?.address?.city print(city ?? "Unknown") // "Istanbul" ``` `ceo` または `address` が nil の場合、`city` は nil になります。

チェーンによるメソッド呼び出し

オプショナルチェーンを通じてメソッドを呼び出すこともできます: ```swift var name: String? = "alice" let upper = name?.uppercased() // Optional("ALICE") name = nil let upper2 = name?.uppercased() // nil ``` 戻り値の型もオプショナルになります。`String` は `String?` になります。

チェーンによる添字アクセス

```swift var dict: [String: [Int]]? = ["scores": [10, 20, 30]] let first = dict?["scores"]?[0] // Optional(10) dict = nil let none = dict?["scores"]?[0] // nil ``` チェーン内では、添字アクセスもプロパティやメソッドと同じように機能します。

チェーンはオプショナルを生成する

最終結果がオプショナルでない場合でも、チェーンによって Optional でラップされます: ```swift struct Cat { var lives: Int = 9 } var cat: Cat? = Cat() let lives = cat?.lives // Int? not Int ``` 必要に応じて、`??`、`if let`、または `guard let` でアンラップしてください。

チェーンによる値の設定

オプショナルチェーンを通じてプロパティを設定できます: ```swift var profile: UserProfile? = UserProfile() profile?.name = "Alice" ``` `profile` が nil の場合、代入は何もせず無視されます(クラッシュしません)。

チェーンによる Void メソッドの呼び出し

```swift var manager: SoundManager? manager?.play() // silently ignored if nil ``` この呼び出しは `Void?` を返します。nil でない場合は `()`、オプショナルが nil の場合は `nil` です。結果を確認すれば、呼び出しが実行されたかどうかを判断できます。

オプショナルチェーンと強制アンラップの比較

```swift // Forced unwrap — crashes if nil: let city = alice.address!.city // Optional chaining — safe: let city = alice.address?.city ``` 常にオプショナルチェーンを優先してください。`nil` が発生しないと確信できる場合にだけ `!` を使用します。

デフォルト値のための ?? との組み合わせ

オプショナルチェーンの後に `??` をつなげると、デフォルト値を簡潔に指定できます: ```swift let displayCity = user.profile?.address?.city ?? "Unknown City" let count = database?.records?.count ?? 0 ``` チェーン全体が値に解決されるか、デフォルト値にフォールバックします。

クイックチェック

オプショナルチェーン内のいずれかのリンクが `nil` の場合、式全体は何を返しますか?

まとめ

主なポイント: • `?.` はオプショナルのプロパティへの安全なアクセス、メソッド呼び出し、添字アクセスに使用します • いずれかのリンクが nil の場合、チェーン全体が nil を返します • 結果の型は常にオプショナルです(最後の値が通常はオプショナルでない場合も同様です) • `?.` と `??` を組み合わせると、安全なアクセスとデフォルト値を簡潔に指定できます • クラッシュを避けるため、`!` よりも `?.` を優先してください 次は、暗黙的アンラップオプショナルです。

よくある質問

「Optional Chaining ?. 演算子」レッスンは無料ですか?

はい。「Optional Chaining ?. 演算子」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「Optional Chaining ?. 演算子」で何を学びますか?

クラッシュさせずにOptionalのメソッドを呼び出し、プロパティにアクセスします。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「Optional Chaining ?. 演算子」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. if letとguard letによるバインディング
  2. OptionalのNil合体と三項演算子
  3. Optional Chaining ?. 演算子
  4. 暗黙的アンラップOptionalと避けるべき場面
← Swift Academyに戻る