開発効率を上げる!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 { // 新たなメソッドやプロパティをここに記述します。 }
実際に書いてみよう
メソッドの追加
今回は以下のクラスを拡張していきながら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アプリ開発オンラインブートキャンプを開催しています。
期間中は現役エンジニアのメンターが毎日学習をサポートするので、独学よりも効率的に学ぶことができます。