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

Swiftのextensionでイニシャライザ・メソッド・計算プロパティを追加する方法!初心者向け完全ガイド

Swift extensionでイニシャライザ/メソッド/計算プロパティ追加
Swift extensionでイニシャライザ/メソッド/計算プロパティ追加

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

生徒

「先生、Swiftのextensionって何に使うんですか?よく便利って聞くんですが、どう便利なんですか?」

先生

「extensionは既存のクラスや構造体に新しい機能を追加する仕組みです。たとえば、あとからイニシャライザやメソッド、計算プロパティを加えることができます。」

生徒

「えっ、既に完成しているクラスに後から足せるんですか?」

先生

「そうです。元のコードを直接書き換えなくても、まるで便利なアプリに“拡張機能”をインストールするように、新しい機能を追加できるのです。」

1. extensionとは?

1. extensionとは?
1. extensionとは?

Swiftのextension(拡張)は、既存の型(クラス、構造体、列挙型など)に対して新しい機能を追加できる仕組みです。Appleの公式ドキュメントでも「既存の型を拡張して新しい振る舞いを定義できる」と説明されています。

例えば、家の冷蔵庫に後から「冷凍室を追加」するイメージです。冷蔵庫(元のクラスや構造体)はそのまま使えるし、さらに便利な機能をつけ足せます。

2. イニシャライザをextensionで追加する

2. イニシャライザをextensionで追加する
2. イニシャライザをextensionで追加する

イニシャライザとは「初期化処理」を行う特別なメソッドです。extensionを使うと、既存の型に新しい初期化方法を加えることができます。


struct User {
    var name: String
    var age: Int
}

// extensionで新しいイニシャライザを追加
extension User {
    init(name: String) {
        self.name = name
        self.age = 0
    }
}

これにより、User(name: "太郎")のように年齢を省略して初期化できるようになります。拡張で追加したイニシャライザは、元の構造体を壊さずに柔軟さを増やします。

3. メソッドをextensionで追加する

3. メソッドをextensionで追加する
3. メソッドをextensionで追加する

次に、extensionでメソッドを追加してみましょう。メソッドは「動作」を表す機能です。例えばUser構造体に「自己紹介するメソッド」を追加できます。


extension User {
    func introduce() {
        print("私は\(name)です。年齢は\(age)歳です。")
    }
}

let user = User(name: "花子", age: 20)
user.introduce()

私は花子です。年齢は20歳です。

このように、extensionを使うと既存の型に「新しいふるまい」を自然に追加できます。コードを分割して整理する目的にも使われます。

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

Swift実践入門をAmazonで見る

※ Amazon広告リンク

4. 計算プロパティをextensionで追加する

4. 計算プロパティをextensionで追加する
4. 計算プロパティをextensionで追加する

計算プロパティとは、値を保持せずに、その場で計算して返すプロパティのことです。例えば身長と体重から「BMI」を計算するプロパティを追加してみましょう。


struct Person {
    var height: Double // メートル
    var weight: Double // キログラム
}

extension Person {
    var bmi: Double {
        return weight / (height * height)
    }
}

let p = Person(height: 1.7, weight: 60)
print(p.bmi)

20.761245674740486

このように計算プロパティを追加すると、メソッドのように呼び出さずに「プロパティ」として自然にアクセスできます。実際のiOS開発でも便利に使われます。

5. extensionの注意点

5. extensionの注意点
5. extensionの注意点

便利なextensionですが、いくつか注意点があります。

  • 既存のストアドプロパティ(値を保持するプロパティ)は追加できない
  • 元の型に定義されているイニシャライザを完全に置き換えることはできない
  • 役割ごとにextensionを分けて整理すると可読性が上がる

つまり、「新しい振る舞いを追加する」のが得意で、「元からある設計を根本的に変えること」はできないのがextensionの特徴です。

6. extensionを日常に例えると

6. extensionを日常に例えると
6. extensionを日常に例えると

初心者にもイメージしやすいように、日常生活での例えを出してみます。たとえば、自転車に「ライトをつける」「カゴをつける」といった後付けの改造をするイメージです。自転車の基本機能(走る)は変わりませんが、ライトをつければ夜道でも安心、カゴをつければ荷物も運べるようになります。

extensionも同じで、既存の型を壊さずに「あとから便利な機能を足す」ことができるのです。

カテゴリの一覧へ
新着記事
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
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方

💻 作業効率アップに

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

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

※ Amazon広告リンク