- プロジェクトマネージャ(大阪)
- Webエンジニア(大阪PHP)
- ★東京・大阪/CS/MG
- 他64件の職種
-
開発
- Webエンジニア(大阪PHP)
- エンジニアリングマネージャ
- ブリッジSE/オフショア開発
- PM(楽楽シリーズ)
- テックリード(大阪/PHP)
- フロントエンドエンジニア
- ブリッジSE(大阪)
- エンジニアオープンポジション
- Javaエンジニア(楽楽明細)
- Webエンジニア
- Webエンジニア
- フロントエンド(リーダー)
- モバイルエンジニア
- Android/iOSアプリ
- 社内SE(大阪/セキュリティ)
- 社内SE(大阪/インフラ)
- 社内SE(大阪/クラウド)
- インフラエンジニア
- 品質管理/技術支援チーム
- QAリーダー/マネージャー
- 戦略企画・データマネジメント
- システム企画
- AI/機械学習エンジニア
- データマネジメント・戦略企画
- 社内SE(データエンジニア)
- UIデザイナー(リーダー)
- UI/UXマネージャー
- UIデザイナー
-
ビジネス
- プロジェクトマネージャ(大阪)
- 導入支援/導入コンサルタント
- PdM(楽楽シリーズ)
- 開発マネージャー
- プロダクトセキュリティ
- PMMプロダクトマーケティング
- アシスタントマネージャー
- 経営企画
- データマネジメント・マーケ戦略
- 法務
- 経営企画/事業分析
- 内部監査(業務監査)
- 法人営業
- ITセールス
- 営業企画オープンポジション
- ITセールス(福岡)
- ITセールス(名古屋)
- ITセールス(大阪)
- 法人営業/カスタマーサクセス
- フィールドセールス
- セールスマネージャー
- ビジネスオープン
- ITセールス経験者
- 製品企画/法要件(楽楽明細)
- オンラインマーケティング
- 営業推進リーダー(楽楽精算)
- ブランド企画・ブランディング
- ブランド企画
- マーケティングリーダー
- マーケティング担当
- オフラインマーケティング
- 製品企画/プロダクトマーケ
- CSマーケティング
- 企画マーケティング
- その他
Swiftのextensionとprotocolについて
はじめに
ラクスエンジニアのstrongWhiteです。今回はSwiftのextensionとprotocolについて書きます。
私がSwiftを勉強し始めたころは、この2つの概念がよくわかっていませんでした。
2つとも似ているようで全く違うので、両者について簡単にまとめてみます。
extensionとは
extension(拡張)とは、特定のクラスや構造体、データ型など、名前はそのままにプロパティやメソッドを追加する機能です。
Javaでいうと「継承」と似ています。Javaの「継承」はクラスのプロパティやメソッドを引き継いだ別名のクラスを作るのに対し、Swiftの「拡張」は名前はそのままになるのが特徴です。
extensionの使い方
それではextensionを使った簡単なプログラムを書いてみましょう。今回はデータ型
の拡張を行ってみます。
extensionを使って、Swiftに標準で備わっているデータ型(例.Int、String)を拡張してみます。
サンプルプログラムでは、String型を拡張し、文字数が20文字以上かどうかを判別する簡単な関数を定義しています。
このように、extensionを使えば、変数の値の比較や加工処理を、既存のデータ型にメソッドを追加することで実現できます。
私は今まで「データ型の定義を拡張できる」ような言語に出会ったことがなかったので、この辺りはとても新鮮な感覚でした。
protocolとは
お次はprotocolです。protocolとは、クラスの挙動や振る舞いを決めたものです。クラスでは、プロパティや挙動を細かく記述していきますが、protocolでは、インタフェースのみを定義します。実際の挙動はprotocolを採用するクラス側で記述します。
protocolの使い方
ではprotocolを使った簡単なプログラムを書いてみます。今回は列挙型
にprotocolを適用してみます。
サンプルプログラムでは、血液型を列挙型で定義してみました。また、ベースとなるprotocolとして、BaseProtocol
(そのままですが)を採用しています。
また、列挙型のほうで、BaseProtocol
に定義してあるtype
変数を宣言しないとコンパイルエラーになります。
最後に
Swiftのextensionとprotocolについて、違いがよくわかっていなかったので勉強してみました。
それぞれ身近なJavaを例に挙げて、extension→継承、protocol→インタフェースであると解説しましたが、Swiftを知らない人でも少しはイメージができたのではないでしょうか。
皆さんもこの辺りを勉強してみるとよりSwiftが面白いと感じるかと思います。