Swiftにおける拡張(Extensions)は、既存の型(クラス、構造体、列挙型、プロトコル)に新たな機能を追加するための機能です。これにより、元のソースコードを修正せずに型の振る舞いを拡張することができます。Objective-Cのカテゴリ(Category)に似た機能ですが、Swiftの拡張はより強力で柔軟です。
1. 基本構文
2. 主な用途と機能
a. メソッドの追加
既存の型に新しいインスタンスメソッドや型メソッドを追加できます。
b. コンピューテッドプロパティの追加
ストアドプロパティ(保存プロパティ)は追加できませんが、計算プロパティは追加可能です。
c. イニシャライザの追加
構造体やクラスに新しい初期化方法を提供できます。ただし、既存の型のすべてのプロパティが初期化されている必要があります。
d. プロトコルの準拠を追加
拡張を使って型がプロトコルに準拠するようにすることもできます。
e. ネスト型、サブスクリプト、型プロパティなどの追加も可能
3. 注意点
-
拡張ではストアドプロパティ(var a = 0のような保存型プロパティ)を追加することはできません。
-
拡張で追加したメソッドは、オーバーライドや動的ディスパッチ(
overrideやdynamic)には利用できません(ただし、@objcと併用すれば一部可能です)。
4. 実践的な活用例
ユーティリティ関数の追加
Viewのスタイルをまとめる(UI系)
まとめ
Swiftの拡張は、既存の型に対して以下のような機能追加を柔軟に行える強力な機能です。
-
新しいメソッド、計算プロパティの追加
-
イニシャライザの追加
-
プロトコル準拠の追加
-
型の振る舞いを整理・再利用しやすくする設計手法の一つ
コードの再利用性を高め、型の責務を分離する上でも非常に有用です。
生成日:2025/05/04