icon
icon

開発効率を上げる!Swiftでextensionを使って機能を拡張する方法

初心者向けにSwiftでextensionを使って機能を追加する方法について解説しています。クラスを拡張する際に便利で、継承との違いについても説明しています。実際にコードを書いて解説しているので、参考にしてみてください。

テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日  調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名  調査手法:インターネット調査

Swiftでextensionを使う方法について解説しています。

extensionを使うことで、クラスを拡張することができ、効率よく開発を行うことができます。プロジェクトが大きくなればなるほど役に立つはずです。

継承との違いについても理解しておきましょう。

 

なお本記事は、TechAcademyのiPhoneアプリ開発オンラインブートキャンプの内容をもとに紹介しています。

 

extensionとは

extensionとは「拡張」という意味です。

その意味の通り、extensionを使うと既存のクラスや構造体、列挙型に新たにメソッドやプロパティを追加することができます。

メソッドやプロパティを追加する機能として「継承」をイメージされる方が多いですが、クラスのメソッドやプロパティを引き継いで新たなクラスを別名で作るのに対し、extentionは名前はそのままでメソッドやプロパティを追加できることが特徴です。

 

extensionの書き方

extensionを使う場合は、次の様に型名の前にextensionをつけます。

extension SampleType {
  // 新たなメソッドやプロパティをここに記述します。
}

 

[PR] iPhoneアプリの開発で挫折しない学習方法を動画で公開中

実際に書いてみよう

メソッドの追加

今回は以下のクラスを拡張していきながらextensionを説明していきます。

//学生クラス
class Student {
    var name = "John Smith"  //学生の名前

    //名前出力メソッド
    func printName() {
        print(name)  //学生の名前を出力
    }
}

学生の名前をプロパティとして、学生の名前を出力するメソッドを持っています。

では、ここから学生クラスを拡張していきます。

次の例では、Studentというクラスに名前を更新するメソッドを追加しています。

extension Student {
    func updateName(newName:String) {
        name = newName  //引数で受け取った新しい名前でnameを上書き
        print(name)  //更新した名前を出力
    }
}

 

では、実際にこのメソッドを実行します。

//Studentクラスのインスタンスを作成
var student = Student()
//名前を出力
student.printName()  //結果:John Smith

//名前を更新して出力
student.updateName(newName:"Mario Rossi")  //結果:Mario Rossi

 

プロパティの追加

次の例では、先ほどと同じStudentというクラスに名前の文字数をカウントするプロパティを追加しています。

//学生クラスを拡張
extension Student {
    //学生ID
    var nameCount:Int {
        get {
            return name.characters.count
        }
    }
}
//Studentクラスのインスタンスを作成
var student = Student()

//名前の初期値である「John Smith」の文字数をカウント
print(student.nameCount) // 結果: 9

 

extensionの使い方について解説しました。複数人での開発、大規模な開発作業で便利なので、使い方を知っておくと良いでしょう。

また、TechAcademyでは初心者でもオリジナルアプリが作れるiPhoneアプリ開発オンラインブートキャンプを開催しています。

期間中は現役エンジニアのメンターが毎日学習をサポートするので、独学よりも効率的に学ぶことができます。

初心者・未経験でもできる。まずはテックアカデミーに相談しよう

プログラミングを独学で学習していて、このように感じた経験はないでしょうか?

  • ・調べてもほしい情報が見つからない
  • ・独学のスキルが実際の業務で通用するのか不安
  • ・目標への学習プランがわからず、迷子になりそう

テックアカデミーでは、このような 学習に不安を抱えている方へ、マンツーマンで相談できる機会を無料で提供 しています。
30分間、オンラインでどんなことでも質問し放題です。

「受けてよかった」と感じていただけるよう カウンセラーやエンジニア・デザイナー があなたの相談に真摯に向き合います。

「自分に合っているか診断してほしい」
「漠然としているが話を聞いてみたい」

こんなささいな悩みでも大丈夫です。

無理な勧誘は一切ありません ので、まずはお気軽にご参加ください。
※体験用のカリキュラムも無料で配布いたします。(1週間限定)

今なら参加者限定の割引特典付き! 無料相談を予約する