0Pricing
Swift Academy · レッスン

関数合成とパイプライン

小さな関数を組み合わせて大きな変換を作り、データパイプラインを構築します。

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

ようこそ

関数合成は、小さく目的を絞った関数を組み合わせて、より大きな変換処理を作ります。これは関数型プログラミングの本質であり、単純な部品から複雑な動作を組み立てます。

手動での関数合成

```swift func double(_ n: Int) -> Int { n * 2 } func addOne(_ n: Int) -> Int { n + 1 } let result = addOne(double(5)) // 11 ```

ヘルパーを使った関数合成

```swift func compose(_ f: @escaping (B)->C, _ g: @escaping (A)->B) -> (A)->C { { f(g($0)) } } let doubleAndAdd = compose(addOne, double) print(doubleAndAdd(5)) // 11 ```

カスタム>>>演算子

```swift infixop precedencegroup CompositionPrecedence { ... } func >>> (f: @escaping (A)->B, g: @escaping (B)->C) -> (A)->C { { g(f($0)) } } let pipeline = double >>> addOne >>> String.init print(pipeline(5)) // "11" ```

map/filterチェーンによるパイプライン

```swift let process: ([Int]) -> [String] = { nums in nums.filter { $0 > 3 }.map { String($0 * 2) } } print(process([1,2,3,4,5])) // ["8","10"] ```

ポイントフリースタイル

ポイントフリースタイルでは、中間引数に名前を付けません: ```swift let words = ["hello","WORLD","Swift"] let lower = words.map { $0.lowercased() } // named let lower2 = words.map(\.description) // point-free where applicable ```

KeyPathを関数として利用

Swiftのキーパスは関数として使用できます: ```swift struct User { var name: String } let users = [User(name:"Alice"),User(name:"Bob")] let names = users.map(\.name) // ["Alice","Bob"] ```

データパイプラインの構築

```swift let pipeline: (String) -> Int? = { s in let trimmed = s.trimmingCharacters(in:.whitespaces) guard !trimmed.isEmpty else { return nil } return Int(trimmed) } [" 42 "," ","7"].compactMap(pipeline) // [42,7] ```

部分適用

```swift func add(_ a: Int) -> (Int) -> Int { { a + $0 } } let add5 = add(5) print([1,2,3].map(add5)) // [6,7,8] ```

合成が重要な理由

利点: • 各関数が小さく、テストしやすくなります • パイプラインを上から下へ読みやすくなります • 再利用できます:`double`は単独でも、どのパイプラインでも使用できます • 遅延評価できます:`.lazy`と組み合わせると、中間的な割り当てを避けられます

確認問題

キーパスを`map`で変換関数として直接使用できるSwiftの機能はどれですか?

まとめ

重要なポイント: • 小さな関数を合成して、より大きな変換を作成します • 再利用可能なパイプラインには、`>>>`または手動の合成を使用します • プロパティをすっきり抽出するには、キーパスを関数として使用します • 部分適用によって、特化した関数を作成できます • `.lazy`と組み合わせると、コピーのないパイプラインを作成できます 次は、遅延シーケンスです。

よくある質問

「関数合成とパイプライン」レッスンは無料ですか?

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

「関数合成とパイプライン」で何を学びますか?

小さな関数を組み合わせて大きな変換を作り、データパイプラインを構築します。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「関数合成とパイプライン」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. 純粋関数と副作用のない設計
  2. 高階関数:map、flatMap、compactMap
  3. 関数合成とパイプライン
  4. 効率化のための遅延シーケンス
← Swift Academyに戻る