Swiftのクラスとは?初心者でもわかるオブジェクト指向の基本をやさしく解説
生徒
「Swiftの“クラス”ってなんですか?オブジェクト指向とか難しそうで…」
先生
「たしかに最初は難しく聞こえるけど、大丈夫。クラスは、モノの設計図のようなものと考えるとわかりやすいよ。」
生徒
「設計図?どういうことですか?」
先生
「それじゃあ、Swiftのクラスとオブジェクト指向について、基礎から見ていこう!」
1. Swiftのクラスとは?
Swift(スウィフト)で「クラス」とは、現実世界のモノや概念をプログラムの中で再現するための「設計図(せっけいず)」のようなものです。
たとえば「車」を作りたいとき、色やスピード、動かし方などを一つのまとまりとして定義できます。この「車の設計図」がクラスになります。
2. クラスとインスタンスの関係
クラスをもとにして作られる実体(じったい)のことを「インスタンス」と呼びます。
たとえば、「赤い車」「青い車」は、それぞれクラスから作られたインスタンス(実際の車)です。設計図は1つでも、作れる車は何台でもOKですよね。それと同じです。
3. 実際にSwiftでクラスを使ってみよう
Swiftでクラスを定義するには、classキーワードを使います。そして、そこからインスタンスを作って使います。
class Car {
var color: String = "白"
var speed: Int = 0
func drive() {
print("車が走り出しました。スピード: \(speed)km/h")
}
}
// インスタンスを作る
let myCar = Car()
myCar.color = "赤"
myCar.speed = 60
myCar.drive()
このコードでは、Carというクラスを作り、それをもとにmyCarというインスタンスを作成しています。
色を赤に、スピードを60に設定して、drive()メソッドを実行しています。
出力結果は以下のようになります。
車が走り出しました。スピード: 60km/h
4. プロパティとメソッドの意味
クラスの中には、「プロパティ」と「メソッド」という2つの要素があります。
- プロパティ:クラスが持つ「情報」のことです。上の例では
colorやspeedがそれにあたります。 - メソッド:クラスができる「動作」のことです。上の
drive()がその例です。
5. 初期化する方法:イニシャライザ(initializer)
Swiftのクラスでは、インスタンスを作るときに値を指定したい場合があります。そのときに使うのがinit(イニット)という特別な関数です。
class Car {
var color: String
var speed: Int
init(color: String, speed: Int) {
self.color = color
self.speed = speed
}
func drive() {
print("色は\(color)の車が\(speed)km/hで走っています。")
}
}
let blueCar = Car(color: "青", speed: 80)
blueCar.drive()
色は青の車が80km/hで走っています。
このようにinitを使うことで、インスタンスを作るときに必要な情報を渡せます。
6. クラスの便利なポイント:再利用しやすい
クラスを使うと、同じような処理を何回も書かずに済みます。設計図をもとに、いろいろなパターンのインスタンスを簡単に作れるので、プログラムの整理もしやすくなります。
また、後で新しい機能を追加したいときも、クラスにまとめてあると管理がラクです。
7. 構造体(Struct)との違い
Swiftにはクラスと似たものに構造体(Struct)もあります。
大きな違いは、「インスタンスをコピーしたときの動き」です。
- クラスは参照型:同じインスタンスを共有する
- 構造体は値型:コピーして別のものとして扱う
例えば、クラスで作ったインスタンスを別の変数に代入すると、元のインスタンスと同じものを指します。
class Dog {
var name: String = "ポチ"
}
let dog1 = Dog()
let dog2 = dog1
dog2.name = "タロウ"
print(dog1.name) // タロウ と表示される
これは、dog1とdog2が同じ「犬」を指しているからです。
8. クラスのキーワードと文法のおさらい
ここまでで登場した、Swiftのクラスに関連するキーワードをおさらいしましょう。
class:クラスを定義するvar:プロパティ(変数)を定義するfunc:メソッド(関数)を定義するinit:イニシャライザ(初期化のための特別な関数)self:自分自身のインスタンスを指すキーワード
これらを組み合わせて、オリジナルのクラスを作っていけるようになると、Swiftの開発がとても楽しくなります。
まとめ
Swiftのクラスについて学んできた内容を振り返ると、「クラス」という考え方が、現実世界のものごとをプログラムの中で表現するためのとても重要な仕組みであることがよくわかります。クラスは「設計図」、インスタンスは「実体」という関係を押さえることで、オブジェクト指向の基本が自然と理解できるようになります。また、クラスの中に含まれるプロパティは「情報」、メソッドは「動作」という役割を持ち、これらをひとつのまとまりとして扱えるのが大きな特徴です。Swiftではクラスを活用することで、より現実世界に近い構造を表現したり、複雑な処理をわかりやすく整理することができます。
さらに、クラスを学ぶ上で欠かせないのが「イニシャライザ」と「参照型」というふたつの重要なポイントです。イニシャライザ(init)はインスタンスを作るときに初期値を設定するための特別な関数で、Swiftのクラス設計では頻繁に登場します。これにより、インスタンス生成時に必要な情報を受け渡すことができ、利便性が大きく向上します。そして、クラスが「参照型」であるという性質は、複数の変数が同じインスタンスを共有する動きを理解するうえで非常に重要です。この性質を理解していないと意図しない値の書き換えが起きるため、オブジェクト指向の挙動を正しく把握する基礎となります。
一方で、Swiftにはクラスとよく似た「構造体(Struct)」もあり、値型として別々にコピーされるという明確な違いがあります。クラスと構造体の特性を使い分けることで、アプリの規模や用途に合わせて柔軟なデータ設計が可能になります。小さなデータのまとまりであれば値型の構造体、大きくて複雑な機能や状態を持つものは参照型のクラス、といった選び方ができるため、開発全体の設計の質も向上します。
ここまでの内容を踏まえて、クラスをしっかり使いこなすためのサンプルプログラムをまとめとして掲載します。基本的なクラス、プロパティ、メソッド、イニシャライザの流れをひとつにまとめてあるので、復習として活用してください。
まとめとしてのサンプルプログラム
class Animal {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func introduce() {
print("わたしの名前は\(name)で、年齢は\(age)さいです。")
}
}
let cat = Animal(name: "ミケ", age: 3)
cat.introduce()
class Student {
var studentName: String = "名無し"
var grade: Int = 1
func showStatus() {
print("\(studentName)さんは現在\(grade)年生です。")
}
}
let s = Student()
s.studentName = "たなか"
s.grade = 2
s.showStatus()
このコードには、初期化を伴うクラスと、初期化なしでプロパティに値を設定するクラスの両方をまとめています。クラスが持つ構造や書き方の違い、そしてデータと動作をひとつにまとめる利点が自然に理解できる構成になっています。とくに、initで値を受け取るパターンと、インスタンス生成後に値を変更するパターンの両方を学ぶことで、Swiftのクラスに対する理解がより深まります。また、参照型であるクラスを扱う際は、どの変数がどのインスタンスを指しているかを意識することが重要です。同じインスタンスを共有している場合、一方の値を変更すると他方にも影響が及ぶという特性をしっかり覚えておきましょう。
Swiftのクラスを学ぶことは、アプリ開発の基礎を固めるうえで欠かせないステップです。データを管理しながら整った構造を作れるようになると、コードの見通しが良くなり、保守性の高いプログラムを作ることができます。今回の内容を何度も読み返しつつ、実際に手を動かしてクラスを作ってみることで、自然とオブジェクト指向への理解が深まり、Swiftの扱いにも自信がついていきます。
生徒:「クラスって難しそうに感じてたけど、設計図って考えたらすごく理解しやすくなりました!」
先生:「その感覚はとても大切ですよ。クラスは“まとまり”を作るための道具なので、現実のものをイメージすると覚えやすくなります。」
生徒:「プロパティが情報で、メソッドが動作という説明もすごく納得しました。」
先生:「その理解ができれば、もうオブジェクト指向の基礎はばっちりです。クラスの初期化や参照型の特徴もぜひ覚えておいてくださいね。」
生徒:「構造体との違いも知れてよかったです。これからどちらを使うか考えながら書ける気がします!」
先生:「使い分けができるようになると、Swiftの設計力がぐっと上がりますよ。いろんなクラスを自分で作って試してみましょう。」
生徒:「さっそくアプリの中で使ってみます!」
先生:「大歓迎です。その調子でどんどん力をつけていきましょうね。」
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。
Windowsで実現する開発環境
【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。
【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。
この60分で得られる3つの理解
OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。
iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。
将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。
※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。
Windowsで始めるiPhoneアプリ開発入門