Swiftのプロパティを完全ガイド!stored・computed・lazyの違いと使い分けを初心者向けに解説
生徒
「Swiftでよく見るプロパティって、storedとかcomputedとかあってよく分かりません…」
先生
「プロパティはデータを管理するためのものだけど、種類によって使い方が変わるんですよ。基本から順番に覚えていきましょう!」
生徒
「お願いします!できれば簡単な例もつけて教えてほしいです。」
先生
「もちろんです!Swiftのプロパティの種類と特徴を、やさしく丁寧に説明していきますね。」
1. Swiftのプロパティとは?
Swift(スウィフト)におけるプロパティとは、「変数」や「定数」のようなもので、クラスや構造体の中でデータを保存しておく仕組みのことです。
たとえば、人の名前や年齢を保存しておくnameやageなどがプロパティにあたります。
Swiftには3つの代表的なプロパティがあります:
- Stored Property(保存プロパティ)
- Computed Property(計算プロパティ)
- Lazy Stored Property(遅延保存プロパティ)
2. Stored Property(保存プロパティ)とは?
保存プロパティ(stored property)は、値を保存するもっとも基本的なプロパティです。
初期値を設定しておくか、イニシャライザinitで値をセットします。
struct User {
var name: String
var age: Int
}
let user = User(name: "花子", age: 25)
print(user.name)
花子
このように、nameやageのようなプロパティが保存プロパティになります。実際に値が中に「保存」されているというイメージです。
3. Computed Property(計算プロパティ)とは?
計算プロパティ(computed property)は、値を保存せず、計算結果を返すプロパティです。
getを使って値を取得します。必要に応じてsetも書くことができます。
struct Rectangle {
var width: Int
var height: Int
var area: Int {
return width * height
}
}
let rect = Rectangle(width: 4, height: 5)
print(rect.area)
20
areaプロパティは保存しているわけではなく、毎回widthとheightをかけ算して結果を返しているだけです。これが計算プロパティの特徴です。
4. Lazy Stored Property(遅延保存プロパティ)とは?
遅延保存プロパティ(lazy property)は、最初にアクセスされるまで初期化されないプロパティです。最初から値を作らず、必要になるまで「待つ」スタイルです。
lazyキーワードを使って定義します。
struct DataLoader {
init() {
print("データを読み込みました!")
}
}
struct View {
lazy var loader = DataLoader()
}
var myView = View()
print("まだ読み込まれていません")
myView.loader
まだ読み込まれていません
データを読み込みました!
loaderはlazyなので、アクセスされるまで初期化されません。この機能は、重い処理を最初から実行したくない場合に便利です。
5. 各プロパティの使い分けポイント
それぞれのプロパティの使いどころをまとめると、以下のようになります。
- 保存プロパティ:基本的なデータをそのまま保存したいとき
- 計算プロパティ:保存せず、毎回計算した結果だけが必要なとき
- 遅延プロパティ:最初は不要だけど、後で使うときにだけ準備したいとき
たとえば、プロフィール画面を表示するアプリを考えたとき:
- ユーザーの名前 → 保存プロパティ
- 誕生日から計算する年齢 → 計算プロパティ
- 重たい画像データの読み込み → 遅延プロパティ
6. プロパティの動作に注意しよう
計算プロパティは呼び出すたびに毎回計算されるため、複雑な処理が含まれているとアプリが重くなることもあります。
また、lazyプロパティはvar(変数)としてしか使えません。let(定数)ではエラーになります。
プロパティの使い方をしっかり覚えておくと、Swiftでの開発がもっとスムーズになります。