カテゴリ: 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を使うと既存の型に「新しいふるまい」を自然に追加できます。コードを分割して整理する目的にも使われます。

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の特徴です。

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

Swift実践入門をAmazonで見る

※ Amazon広告リンク

6. extensionを日常に例えると

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

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

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

関連セミナーのご案内

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のクラスドキュメントコメントの書き方ガイド|初心者でもわかるKDocの基本と書き方
New2
Go言語
Go言語の関数設計パターン集!可読性と再利用性を高めよう
New3
Go言語
Go言語のインターフェースと抽象化の考え方を初心者向けに解説
New4
Kotlin
Kotlinのsorted・sortedByでコレクションをソートする方法【初心者向け完全ガイド】
人気記事
No.1
Java&Spring記事人気No1
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.2
Java&Spring記事人気No2
Swift
Swift入門ガイド|基本構文と書き方をマスターしよう
No.3
Java&Spring記事人気No3
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.4
Java&Spring記事人気No4
Kotlin
Kotlinで画面遷移を実装しよう!初心者でもわかるIntentの使い方完全ガイド
No.5
Java&Spring記事人気No5
Go言語
Go言語のマルチステージビルド完全解説!Dockerで軽量なコンテナを作る方法
No.6
Java&Spring記事人気No6
Kotlin
Kotlinの可視性修飾子を完全ガイド!public・private・internalの意味と使い分けを初心者向けに解説
No.7
Java&Spring記事人気No7
Go言語
Go言語の構造体を使った設計パターン集(DTO・VOなど)
No.8
Java&Spring記事人気No8
Kotlin
Kotlinのインストール方法まとめ!Windows・Mac・Linux別にステップ解説