0Pricing
Swift Academy · レッスン

&によるプロトコル合成

複数のプロトコルを1つの型要件にまとめます。

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

ようこそ

プロトコル合成を使うと、`&`によって複数のプロトコルを1つの型要件にまとめられます。これはSwiftにおける多重継承への答えです。

基本的な合成

```swift protocol Named { var name: String { get } } protocol Aged { var age: Int { get } } func describe(_ entity: Named & Aged) { print("\(entity.name) is \(entity.age)") } ``` `Named & Aged`は一時的な型要件であり、新しいプロトコルではありません。

関数パラメーターでの使用

```swift protocol Drawable { func draw() } protocol Animatable { func animate() } func render(_ view: Drawable & Animatable) { view.draw() view.animate() } ```

合成した型の格納

```swift var entity: Named & Aged = makePerson() entity.name // accessible entity.age // accessible ``` 変数の型によって、アクセスできるプロトコルのメンバーが制限されます。

クラスとの合成

```swift protocol Configurable { func configure() } func setup(_ vc: T) { vc.configure() present(vc, animated: true) } ``` ジェネリクスで`&`を使うと、クラス要件とプロトコルを合成できます。

プロトコル合成と新しいプロトコルの比較

```swift // Don't create a new protocol just to combine: protocol NamedAndAged: Named, Aged {} // often unnecessary // Prefer inline composition at use sites: func describe(_ e: Named & Aged) { } ``` 新しいプロトコルを作るのは、その組み合わせに拡張メソッドが必要な場合だけ意味があります。

長い合成のためのtypealias

```swift typealias Service = Authenticable & Cacheable & Loggable func process(service: Service) { service.authenticate() service.log("processing") } ``` よく使う合成には、`typealias`を使って名前を付けます。

ジェネリック制約での合成

```swift func fetchAndCache(_ resource: T) async throws { let data = try await resource.fetch() resource.cache(data) } ```

プロトコル継承と合成の比較

• 継承: `protocol C: A, B {}` — CはAとBのすべての要件を継承します • 合成: `A & B` — インラインで指定し、新しい型は作りません 適合するすべての型に両方を満たすことを必須にする場合は継承を、呼び出し箇所では合成を使用します。

実例: デリゲート+データソース

```swift func setup(_ vc: UITableViewDelegate & UITableViewDataSource) { tableView.delegate = vc tableView.dataSource = vc } ``` 1つのビューコントローラーが両方を満たすことはよくあります。合成を使うと、この関係を簡潔に表現できます。

クイックチェック

複数のプロトコルを1つの型要件にまとめる演算子はどれですか?

まとめ

重要なポイント: • `Protocol1 & Protocol2` — インラインで合成します • パラメーター、戻り値の型、ジェネリック制約で使用します • よく使う合成には`typealias`で名前を付けます • 空の本体を持つ新しいプロトコルを作るより、合成を優先します • クラス要件も組み合わせられます: `UIViewController & MyProtocol` 次は、条件付き適合です。

よくある質問

「&によるプロトコル合成」レッスンは無料ですか?

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

「&によるプロトコル合成」で何を学びますか?

複数のプロトコルを1つの型要件にまとめます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

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

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

「&によるプロトコル合成」レッスンにはどのくらい時間がかかりますか?

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

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

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

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

  1. &によるプロトコル合成
  2. 条件付き適合
  3. Self要件とEquatableの設計
  4. プロトコル指向設計の原則
← Swift Academyに戻る