カテゴリ: Swift 更新日: 2026/01/27

Swiftのdefault implementationを徹底解説!ExtensionとProtocolで実装重複を解消する方法

Swift default implementationで実装重複を解消
Swift default implementationで実装重複を解消

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

生徒

「先生、Swiftのプログラムを書いていると、同じようなメソッドを何度も書くことになってしまうんですが、もっと簡単にする方法はありますか?」

先生

「とてもいいポイントに気づいたね。Swiftにはprotocolextensionを使って、同じ処理を一度だけ書いて使い回す仕組みがあるんだ。その仕組みをdefault implementationと呼ぶよ。」

生徒

「default implementationってなんですか?」

先生

「直訳すると『標準の実装』という意味だね。protocolに対してextensionを使って共通処理を実装しておくと、それを自動的に使えるようになるんだよ。」

1. ProtocolとExtensionの基本

1. ProtocolとExtensionの基本
1. ProtocolとExtensionの基本

まずは基礎をおさらいしましょう。protocol(プロトコル)は「設計図」や「ルールブック」のようなものです。例えば、「走ることができる」というルールを定義するならprotocol Runnableを作れます。そして、クラスや構造体がそのルールに従うと宣言すると、その機能を実装する必要があります。

しかし、毎回同じような実装を繰り返すのは非効率です。そこで役立つのがextension(拡張機能)です。extensionを使えば、protocolに対してあらかじめ「共通の実装」を追加することができ、それがdefault implementationになります。

2. default implementationの仕組み

2. default implementationの仕組み
2. default implementationの仕組み

default implementationとは、protocolの機能を拡張して「デフォルトの動作」を提供する仕組みです。これにより、同じ処理を何度も書く必要がなくなり、コードがすっきりします。


protocol Runnable {
    func run()
}

extension Runnable {
    func run() {
        print("とりあえず走ります!")
    }
}

この例では、Runnableというprotocolに対して「走る」という動作をデフォルトで定義しました。これにより、実装側はrun()を省略できます。

3. 実際に使ってみよう

3. 実際に使ってみよう
3. 実際に使ってみよう

それでは、クラスで実際にdefault implementationを利用してみましょう。


struct Dog: Runnable { }
struct Cat: Runnable {
    func run() {
        print("猫は静かに走ります")
    }
}

let dog = Dog()
dog.run()  // デフォルトの「とりあえず走ります!」

let cat = Cat()
cat.run()  // 「猫は静かに走ります」

とりあえず走ります!
猫は静かに走ります

Dogは自分でrun()を定義していないので、デフォルトの実装が使われます。一方Catは独自の実装を持っているので、そのコードが優先されます。

4. default implementationのメリット

4. default implementationのメリット
4. default implementationのメリット

default implementationを使うと以下のようなメリットがあります。

  • コードの重複を減らせる
  • 共通処理を一か所にまとめられる
  • 必要に応じて独自の実装に上書きできる

特に、大規模なアプリや複数の構造体・クラスで同じ処理を使いたい場合に効果を発揮します。初心者の方にとっても、シンプルなコードで全体像を理解しやすくなるという利点があります。

5. 現実世界の例えで理解する

5. 現実世界の例えで理解する
5. 現実世界の例えで理解する

学校のクラブ活動を例に考えてみましょう。すべての部活は「活動をする」というルールがあります。もし一つひとつの部活が「活動の挨拶」を毎回違う先生に書いてもらっていたら大変ですよね。そこで、「全員で最初に『よろしくお願いします!』と言う」という共通ルールを決めておけば、各クラブはそのまま使えます。でも、ダンス部だけは特別な挨拶をしたいと思ったら、自分たちで別の挨拶を作っても構いません。

この仕組みがSwiftのdefault implementationと同じです。基本は共通ルールに従いつつ、必要に応じて独自のやり方も認められるのです。

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

Swift実践入門をAmazonで見る

※ Amazon広告リンク

6. 補足として

6. 補足として
6. 補足として

Swiftでのprotocolextensionの組み合わせは、現場でもよく使われるテクニックです。特にdefault implementationを知っていると、同じ処理を繰り返し書かずに済むため、開発が効率的になります。また、初心者がプロの書いたコードを読んだときにも「なぜ同じ処理が省略されているのか」を理解できるようになります。

関連セミナーのご案内

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
Kotlin
Kotlinで依存関係管理を始めよう!Gradle/Mavenの基本設定と導入手順
New2
Kotlin
Kotlinのreturnラベルを完全解説!初心者でもわかるクロスラインreturnの基本
New3
Kotlin
Kotlinでファイルアクセスを安全に管理する方法を徹底解説 初心者でも理解できるファイル読み書きとセキュリティ対策
New4
Go言語
Go言語の構造体を使った設計パターン集(DTO・VOなど)
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.2
Java&Spring記事人気No2
Swift
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.3
Java&Spring記事人気No3
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.4
Java&Spring記事人気No4
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.5
Java&Spring記事人気No5
Kotlin
KotlinのRoomでコルーチン対応!suspend関数とFlowの使い方をやさしく解説
No.6
Java&Spring記事人気No6
Kotlin
Kotlinの文字列の部分取得!substring・take・dropの基本
No.7
Java&Spring記事人気No7
Kotlin
Kotlinの演算子一覧と使い方!算術・比較・論理演算子の基本を解説
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説