カテゴリ: 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は独自の実装を持っているので、そのコードが優先されます。

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

Swift実践入門をAmazonで見る

※ Amazon広告リンク

4. default implementationのメリット

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

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

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

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

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

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

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

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

6. 補足として

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

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

カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の短絡評価(ショートサーキット)を使った条件式の工夫をやさしく解説!初心者でも理解できる基本知識
New2
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New3
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New4
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Kotlin
Kotlin DSLとGroovy DSLの違いをやさしく解説!初心者でもわかるGradleスクリプトの使い分け
No.8
Java&Spring記事人気No8
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク