Swift構造体(struct)の基本とクラスとの違いをわかりやすく解説!初心者向けオブジェクト指向入門
生徒
「Swiftで“構造体”ってよく見かけますけど、クラスとどう違うんですか?」
先生
「とても大切なポイントですね!構造体はクラスと似ているけれど、動き方が少し違うんです。イメージしやすいように順番に説明していきましょう。」
生徒
「お願いします!基本から教えてください!」
先生
「それじゃあ、Swiftの構造体(struct)とクラスの違いを、簡単な例を使って学んでいきましょう!」
1. Swiftの構造体(struct)とは?
Swift(スウィフト)における構造体(struct)は、データをまとめて扱うための型です。たとえば、ひとりの「人」の情報をまとめたいときに、名前や年齢などを1つにまとめることができます。
構造体は「クラス」ととてもよく似ていて、プロパティ(情報)やメソッド(処理)を持たせることができます。
2. 実際に構造体を使ってみよう
Swiftでは、structというキーワードを使って構造体を定義します。以下のコードを見てください。
struct Person {
var name: String
var age: Int
func greet() {
print("こんにちは、私は\(name)、\(age)歳です。")
}
}
let taro = Person(name: "太郎", age: 25)
taro.greet()
このコードでは、Personという構造体を定義し、その中に名前と年齢の情報、そしてあいさつをするメソッドを定義しています。
こんにちは、私は太郎、25歳です。
3. 構造体の特徴は「値型」
構造体(struct)の最大の特徴は「値型(あたいがた)」であることです。
値型とは、変数や定数に代入するときに「コピー」されるということです。コピーとは、同じデータをもう一つ別に作るという意味です。
つまり、ひとつの構造体を別の変数に代入しても、元のデータには影響が出ません。
var person1 = Person(name: "花子", age: 30)
var person2 = person1
person2.name = "さくら"
print(person1.name) // 花子
print(person2.name) // さくら
花子
さくら
このように、person2を変更しても、元のperson1には影響がありません。これが「値型」の特長です。
4. クラスとの違いを比べてみよう
では、構造体とクラスの違いを確認してみましょう。クラスは「参照型(さんしょうがた)」です。参照型とは、同じインスタンス(実体)を複数の変数が共有しているということです。
下のコードは、同じような内容をクラスで書いた例です。
class PersonClass {
var name: String
var age: Int
init(name: String, age: Int) {
self.name = name
self.age = age
}
func greet() {
print("こんにちは、私は\(name)、\(age)歳です。")
}
}
var personA = PersonClass(name: "一郎", age: 40)
var personB = personA
personB.name = "二郎"
print(personA.name) // 二郎
print(personB.name) // 二郎
二郎
二郎
このように、personBを変えるとpersonAも変わります。これは、同じデータを共有しているからです。これがクラスと構造体の動きの大きな違いです。
5. 構造体がよく使われる場面
Swiftでは、基本的なデータの表現には構造体を使うことが推奨されています。
たとえば、位置情報(xとyの座標)やサイズ、色、日付などのように、「値を表す」目的のときに構造体はとても向いています。
構造体は軽くて速いというメリットもあるので、データの受け渡しが多いアプリではパフォーマンス面でも効果的です。
6. 構造体とクラスの主な違いまとめ表
以下に、構造体とクラスの主な違いを簡単にまとめた表を載せておきます。
| 比較項目 | 構造体(struct) | クラス(class) |
|---|---|---|
| 型の種類 | 値型 | 参照型 |
| 継承(けいしょう) | できない | できる |
| イニシャライザ(初期化) | 自動生成される | 自分で書く必要がある |
| 使用される場面 | データの表現 | 振る舞いの共有 |
7. Swiftの構造体は便利で安全
構造体は、Swiftにおいてとても重要な役割を持っています。iOSアプリ開発でも、StringやArray、Dictionaryなどの多くが実は構造体として作られています。
「コピーされる」という動作により、安全にデータを扱うことができるため、初心者にも安心して使える機能なのです。
まとめ
Swiftの構造体(struct)は、初心者が最初に出会う大切な概念のひとつであり、値型という特長によってデータを安全に扱える点が大きな魅力です。この記事で学んできたように、構造体はプロパティやメソッドを持たせてひとまとまりの情報を扱うことができ、クラスと似た見た目を持ちながらも、内部ではまったく異なる動作をします。特に、コピーによるデータの独立性は、Swiftの安全性を支える大事な仕組みです。構造体を使うことで、意図せぬ値の書き換えを防ぎやすく、アプリの動作が予測しやすくなるというメリットがあります。
また、Swiftの標準ライブラリには、構造体で作られている型が多く存在します。たとえば、文字列を表すString、配列であるArray、辞書のDictionaryなど、ふだんよく使う型が値型で動作しています。これらの型と同じ性質を持つ構造体は、アプリ開発のあらゆる場面で安心して使えるため、初心者にも扱いやすく、Swiftらしい設計を自然と理解できるようになります。特に、アプリ内で座標やサイズ、ユーザー情報などをまとめて扱いたいときには、構造体を利用することでコードの見通しがよくなり、拡張性も高まります。
さらに、構造体とクラスの違いを明確に理解することは、Swiftでのオブジェクト指向設計を習得するうえで欠かせません。参照型のクラスは、同じインスタンスを共有するため、複数箇所から同じデータにアクセスするような複雑な処理に向いています。一方、構造体は値型であり、処理が明確に分離されるため、小さく安全なデータ管理に適しています。用途によってこれらを使い分ける力がつくと、アプリ開発における設計の幅が大きく広がり、効率的でミスの少ないコードを書くことにつながります。
実装例でもう一度理解しよう
以下では、構造体の値型としての特性をより深く理解できる簡単なサンプルを紹介します。実際のSwiftコードを通して、値がコピーされる様子や、クラスとの違いを改めて確認できます。
// 構造体(struct)の値コピーを確認する例
struct Book {
var title: String
var pages: Int
func info() {
print("この本のタイトルは\(title)、ページ数は\(pages)です。")
}
}
var book1 = Book(title: "物語集", pages: 200)
var book2 = book1
book2.title = "新しい物語集"
book1.info() // 物語集
book2.info() // 新しい物語集
ここでは、構造体が値型であるために、book1とbook2が独立して存在していることがよくわかります。同じ初期値を持ちながら、ひとつを変更してももう片方には影響が出ないため、安全に複数のデータを扱うことができます。アプリの状態管理では、このような特性が役立つ場面が多くあります。
構造体とクラスの使い分けのポイント
構造体は、値そのものを扱う「データ中心」の場面に向いています。一方、クラスは機能や振る舞いを複数の場所で共有したいときに適しています。データの変化が多く、複数箇所から更新されるようなケースではクラスを使い、小さく安全に管理したいデータには構造体を選ぶとよいでしょう。アプリ開発では両者を正しく理解して役割を分けることが大切であり、この判断ができるようになると設計がより柔軟になります。
生徒
「今日の構造体の話、とても分かりやすかったです!値型ってこういう動きなんだと実感できました。」
先生
「それはよかったです。値型と参照型の違いは、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アプリ開発入門