カテゴリ: Swift 更新日: 2025/12/09

Swiftのprotocol(プロトコル)とは?初心者にもわかる基本と実装例

Swift プロトコル(protocol)の基本と実装例
Swift プロトコル(protocol)の基本と実装例

先生と生徒の会話形式で理解しよう

生徒

「Swiftのprotocolって何ですか?クラスとか構造体とは違うんですか?」

先生

「いい質問ですね。protocolは、簡単に言うと“やるべきことの約束”を定義する仕組みです。」

生徒

「約束?なんか抽象的で難しそう…」

先生

「大丈夫ですよ。たとえば“歌える”という機能を持った存在がいるとしましょう。動物でも人間でも、歌えるなら共通のprotocolを使えるんです。」

1. Swiftのprotocol(プロトコル)とは?

1. Swiftのprotocol(プロトコル)とは?
1. Swiftのprotocol(プロトコル)とは?

Swiftのprotocol(プロトコル)とは、「ある機能を持つことを約束する」ための型です。日本語では「規約」や「仕様」と訳されることもあります。

たとえば、「歩く」「走る」「歌う」といった機能を、クラスや構造体が持つべきだと指定するのがprotocolの役割です。これにより、コードを統一的に扱いやすくなります。

2. protocolの基本的な書き方

2. protocolの基本的な書き方
2. protocolの基本的な書き方

まずは、protocolの定義と、それを使うクラスの実装方法を見てみましょう。


protocol Singable {
    func sing()
}

class Person: Singable {
    func sing() {
        print("ラララ〜♪")
    }
}

この例では、Singableというプロトコルを作り、sing()というメソッドを定義しています。そしてPersonクラスがそれを実装しています。

3. プロトコルを使う意味は?

3. プロトコルを使う意味は?
3. プロトコルを使う意味は?

プロトコルを使うことで、「この型はこの機能を持っている」と明示的に示すことができます。

たとえば、いろいろな型(クラス・構造体)に共通の機能を持たせたいとき、プロトコルを使うと一貫したコードが書けます。

4. 構造体でも使えるSwiftのprotocol

4. 構造体でも使えるSwiftのprotocol
4. 構造体でも使えるSwiftのprotocol

Swiftの大きな特徴として、プロトコルはclass(クラス)だけでなく、struct(構造体)にも使えるという点があります。

次のコードは、構造体がプロトコルを実装する例です。


protocol Walkable {
    func walk()
}

struct Dog: Walkable {
    func walk() {
        print("テクテク歩くワン!")
    }
}

let dog = Dog()
dog.walk()

このように、Dog構造体でもプロトコルを使って機能を実装できます。

5. プロトコルを引数や配列に使う

5. プロトコルを引数や配列に使う
5. プロトコルを引数や配列に使う

プロトコルは、共通の機能を持ったオブジェクトをひとまとめに扱うときにも使えます。たとえば次のように書くと便利です。


protocol Drawable {
    func draw()
}

class Circle: Drawable {
    func draw() {
        print("円を描く")
    }
}

class Square: Drawable {
    func draw() {
        print("四角を描く")
    }
}

let shapes: [Drawable] = [Circle(), Square()]
for shape in shapes {
    shape.draw()
}

このコードでは、Drawableというプロトコルを使って、異なるクラスのインスタンス(CircleSquare)をDrawable型の配列にまとめています。

6. 複数のプロトコルを組み合わせて使う

6. 複数のプロトコルを組み合わせて使う
6. 複数のプロトコルを組み合わせて使う

Swiftでは、複数のプロトコルを同時に使うこともできます。次のようにコンマ区切りで記述します。


protocol Runnable {
    func run()
}

protocol Jumpable {
    func jump()
}

struct Athlete: Runnable, Jumpable {
    func run() {
        print("走る!")
    }

    func jump() {
        print("ジャンプ!")
    }
}

このようにして、1つの型が複数の機能を持っていることを明示できます。

7. protocolの命名のコツ

7. protocolの命名のコツ
7. protocolの命名のコツ

Swiftではプロトコルの名前をつけるとき、動作を表す言葉に「〜able」や「〜ing」をつけるのが一般的です。たとえば:

  • 歌う → Singable
  • 走る → Runnable
  • 描く → Drawable

これにより、そのプロトコルが何をするのか直感的に理解しやすくなります。

8. protocolはSwiftのオブジェクト指向でも重要な役割

8. protocolはSwiftのオブジェクト指向でも重要な役割
8. protocolはSwiftのオブジェクト指向でも重要な役割

Swiftのprotocolは、クラスや構造体の設計をシンプルにし、柔軟で再利用しやすいコードにするための重要な要素です。

クラス継承よりも柔軟に設計できるため、iOSアプリ開発でも頻繁に使われています。初心者の方も、まずはprotocolで「やるべきこと」を明確にする練習をすると、Swiftの理解が一気に深まります。

Swiftを基礎から実践レベルまで学びたい人や、 iOSアプリ開発を本格的に始めたい人には、 定番の入門+実践書がこちらです。

Swift実践入門をAmazonで見る

※ Amazon広告リンク

まとめ

まとめ
まとめ

Swiftのprotocol(プロトコル)は、クラスや構造体に「どのような機能を持つべきか」をあらかじめ示すための仕組みであり、柔軟な設計を可能にする大切な概念です。記事全体を振り返ると、プロトコルは単なる“決まりごと”ではなく、複数の型に共通のふるまいを与えることで、コードの見通しを良くし、再利用性や拡張性を高める重要な役割を果たしていることがわかります。特にSwiftの場合、struct(構造体)にもプロトコルを適用できる点は非常に魅力的で、柔軟な型設計を実現しやすくなっています。プロトコルを使いこなせるようになると、iOSアプリ開発で頻繁に登場するデリゲートパターンや画面同士の連携処理などにも自然と対応できるようになり、コード全体の構造も整い、メンテナンスしやすいアプリ設計が可能になります。 また、プロトコルを利用した配列操作や引数としての利用、複数のプロトコルの組み合わせなど、記事で紹介されている活用方法を振り返ると、プロトコルは単なる“型”ではなく、Swiftにおける多様な場面で利用できる非常に強力な考え方であることが理解できます。さまざまなクラスや構造体に共通機能を持たせたいとき、継承ではなくプロトコルを使うことで機能の整理がしやすくなり、複雑な処理でも柔軟に対応できます。特に動作を組み合わせるときに直感的でわかりやすく、アプリの設計全体が整理されていきます。Swiftの言語仕様におけるプロトコル中心の設計思想にも触れながら、プロトコルがアプリ開発においてどれほど価値があるかを自然に実感できたのではないでしょうか。 さらに、プロトコルの名前の付け方や実装のコツを理解すると、コードの意味がより明確になり、後から見たときの読みやすさも大きく向上します。「〜able」「〜ing」などの語尾で動作を示す命名方法は、初心者でもすぐに取り入れられる実践的な技法であり、プロトコルが担う役割を直感的に理解しやすくします。こうした命名の工夫により、プロトコルは単なる規約を超え、チーム開発でも大いに役立つ重要な設計要素となります。実際のSwift開発では、プロトコルは画面間通信、UIイベント処理、データ管理など幅広い場面で登場するため、早い段階でその考え方に慣れておくことで、より洗練されたアプリを作れるようになります。

サンプルプログラムでプロトコルの役割を再確認

下記は、記事の内容を踏まえ、プロトコルを使って複数の型に共通動作を与える例をさらに発展させたサンプルコードです。異なるクラスや構造体が同じプロトコルを採用することで、統一的に扱えることを改めて確認できます。


// 複数の動作をまとめて表現するプロトコル
protocol Performer {
    func act()
    func speak()
}

// クラスによる実装例
class Actor: Performer {
    func act() {
        print("劇で演じる")
    }
    func speak() {
        print("セリフを話す")
    }
}

// 構造体による実装例
struct Narrator: Performer {
    func act() {
        print("身振りで説明する")
    }
    func speak() {
        print("物語を語る")
    }
}

// 共通の配列で扱う例
let performers: [Performer] = [Actor(), Narrator()]
for p in performers {
    p.act()
    p.speak()
}

このサンプルでは、クラスと構造体の両方がPerformerプロトコルを採用し、それぞれが独自の動作を実装しています。プロトコルを用いることで、複数の異なる型をまとめて扱えるようになるため、アプリ全体の構造がシンプルになり、拡張にも対応しやすくなります。Swiftではこのようなプロトコル中心の設計が当たり前のように活用されているため、実践の中で繰り返し触れて理解を深めることが大切です。

先生と生徒の振り返り会話

生徒

「プロトコルって、クラスや構造体に“必要な機能を持たせる”ためのすごく便利な仕組みなんですね!」

先生

「そうです。プロトコルを理解すると、Swiftの設計がぐっと楽になりますし、複数の型をうまく統一して扱えるようになるんですよ。」

生徒

「クラスでも構造体でも共通の機能を使えるのが便利ですね。配列にまとめて処理できるのも、すごく使い道が多そうです!」

先生

「ええ、その通りです。プロトコルはSwift開発の核とも言える要素なので、ぜひどんどん練習してみてください。」

生徒

「今日の内容をしっかり復習して、実際のアプリづくりにも活かしていきます!」

関連セミナーのご案内

Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略

Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略

「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。

Windowsで実現する開発環境

【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。

【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。

この60分で得られる3つの理解

1. WindowsでのSwift実行環境の作り方

OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。

2. Swiftの基本構造(変数・型・定数)

iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。

3. アプリエンジニアとしてのロードマップ

将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。

※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。

セミナー画像

Windowsで始めるiPhoneアプリ開発入門

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語のwhile的なforループの使い方!条件式ループの基本を解説
New2
Go言語
Go言語プログラムの実行方法まとめ!VSCode・ターミナルでの実行手順を解説
New3
Swift
Swift意味とは?プログラミング言語・金融・鳥の違いを徹底解説
New4
Swift
Swift 戻り値の扱い方と複数戻り値の返し方|初心者でも分かる関数の基本
人気記事
No.1
Java&Spring記事人気No1
Go言語
Go言語でリダイレクト処理を行う方法(http.Redirect)を初心者向けに解説
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Go言語
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説