0Pricing
Swift Academy · レッスン

ResultのmapとflatMap

ネストしたswitch文を使わず、成功値に対する変換を連鎖させます。

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

ようこそ

`Result` の `map` と `flatMap` を使うと、switch文を何重にも書かずに成功値を変換でき、コードを平坦で読みやすく保てます。

Resultのmap

```swift let r: Result = .success(5) let doubled = r.map { $0 * 2 } // .success(10) let failed: Result = .failure(MyError.bad) let same = failed.map { $0 * 2 } // .failure(MyError.bad) ```

ResultのmapError

```swift let r: Result = .failure(URLError(.notConnectedToInternet)) let mapped = r.mapError { AppError.network($0) } // Result ```

flatMap — 失敗する可能性のある処理を連結する

```swift func parseJSON(_ data: Data) -> Result { ... } func validate(_ user: User) -> Result { ... } let result: Result = fetchResult .flatMap { parseJSON($0) } .flatMap { validate($0).mapError { $0 as Error } } ```

flatMapError

```swift func recover(_ e: NetworkError) -> Result { .success(cachedData) } let result = networkResult.flatMapError { recover($0) } ```

ResultにおけるmapとflatMapの違い

• `map`: 成功値を変換します。変換結果が `T` の場合、結果は `Result` になります • `flatMap`: 変換結果が `Result` になります。`Result,E>` のような入れ子を防ぎます

3つの処理を連結する

```swift fetchData(url) .map { parse($0) } .flatMap { validate($0) } .map { transform($0) } // Each step only runs if previous succeeded ```

Optionalチェーンとの比較

Resultのチェーンは、エラーを扱うOptionalチェーンのようなものです。 ```swift // Optional chain: name?.uppercased()?.prefix(5) // Result chain: result.map { $0.uppercased() }.map { $0.prefix(5) } ```

Optionalに変換する

```swift let opt = result.success // Value? — nil on failure let val = try? result.get() // Value? — nil on failure ```

??に似たパターンで復旧する

```swift let value = (try? result.get()) ?? defaultValue ```

確認問題

`result` が `.failure` のとき、`result.flatMap { transform($0) }` は何をしますか?

まとめ

重要なポイント: • `map` は成功値を変換し、失敗はそのまま渡します • `mapError` は失敗の型を変換します • `flatMap` は、それ自体がResultを返す処理を連結します • switch文を何重にも書かずに済みます • エラーを伝播するパイプラインをきれいに連結できます 次はカスタムエラー型です。

よくある質問

「ResultのmapとflatMap」レッスンは無料ですか?

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

「ResultのmapとflatMap」で何を学びますか?

ネストしたswitch文を使わず、成功値に対する変換を連鎖させます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「ResultのmapとflatMap」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. Result の基礎
  2. ResultのmapとflatMap
  3. LocalizedErrorによるカスタムエラー型
  4. Resultからasync/awaitへの橋渡し
← Swift Academyに戻る