カテゴリ: Swift 更新日: 2025/10/21

Swift構造体(struct)の基本とクラスとの違いをわかりやすく解説!初心者向けオブジェクト指向入門

Swift 構造体(struct)の基本とクラスとの違い
Swift 構造体(struct)の基本とクラスとの違い

先生と生徒の会話形式で理解しよう

生徒

「Swiftで“構造体”ってよく見かけますけど、クラスとどう違うんですか?」

先生

「とても大切なポイントですね!構造体はクラスと似ているけれど、動き方が少し違うんです。イメージしやすいように順番に説明していきましょう。」

生徒

「お願いします!基本から教えてください!」

先生

「それじゃあ、Swiftの構造体(struct)とクラスの違いを、簡単な例を使って学んでいきましょう!」

1. Swiftの構造体(struct)とは?

1. Swiftの構造体(struct)とは?
1. Swiftの構造体(struct)とは?

Swift(スウィフト)における構造体(struct)は、データをまとめて扱うための型です。たとえば、ひとりの「人」の情報をまとめたいときに、名前や年齢などを1つにまとめることができます。

構造体は「クラス」ととてもよく似ていて、プロパティ(情報)やメソッド(処理)を持たせることができます。

2. 実際に構造体を使ってみよう

2. 実際に構造体を使ってみよう
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. 構造体の特徴は「値型」

3. 構造体の特徴は「値型」
3. 構造体の特徴は「値型」

構造体(struct)の最大の特徴は「値型(あたいがた)」であることです。

値型とは、変数や定数に代入するときに「コピー」されるということです。コピーとは、同じデータをもう一つ別に作るという意味です。

つまり、ひとつの構造体を別の変数に代入しても、元のデータには影響が出ません。


var person1 = Person(name: "花子", age: 30)
var person2 = person1

person2.name = "さくら"

print(person1.name) // 花子
print(person2.name) // さくら

花子
さくら

このように、person2を変更しても、元のperson1には影響がありません。これが「値型」の特長です。

4. クラスとの違いを比べてみよう

4. クラスとの違いを比べてみよう
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. 構造体がよく使われる場面

5. 構造体がよく使われる場面
5. 構造体がよく使われる場面

Swiftでは、基本的なデータの表現には構造体を使うことが推奨されています。

たとえば、位置情報(xとyの座標)やサイズ、色、日付などのように、「値を表す」目的のときに構造体はとても向いています。

構造体は軽くて速いというメリットもあるので、データの受け渡しが多いアプリではパフォーマンス面でも効果的です。

6. 構造体とクラスの主な違いまとめ表

6. 構造体とクラスの主な違いまとめ表
6. 構造体とクラスの主な違いまとめ表

以下に、構造体とクラスの主な違いを簡単にまとめた表を載せておきます。

比較項目 構造体(struct) クラス(class)
型の種類 値型 参照型
継承(けいしょう) できない できる
イニシャライザ(初期化) 自動生成される 自分で書く必要がある
使用される場面 データの表現 振る舞いの共有

7. Swiftの構造体は便利で安全

7. Swiftの構造体は便利で安全
7. Swiftの構造体は便利で安全

構造体は、Swiftにおいてとても重要な役割を持っています。iOSアプリ開発でも、StringArrayDictionaryなどの多くが実は構造体として作られています。

「コピーされる」という動作により、安全にデータを扱うことができるため、初心者にも安心して使える機能なのです。

カテゴリの一覧へ
新着記事
Go言語の関数でエラーハンドリングする基本的な方法
Go言語のスライス・マップ・配列をまとめて比較してみよう!初心者でもわかる使い分けの基本
Go言語の条件分岐の見やすい書き方を徹底解説!初心者でもわかるif文の使い方
Go言語とは何か?初心者向けに特徴・できること・インストール手順までやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.2
Java&Spring記事人気No2
Go言語で条件式を1行で書くコツ!三項演算子の代替と短縮記法
No.3
Java&Spring記事人気No3
Swift開発環境の構築方法を徹底解説!Xcode・Windows・Linux対応
No.4
Java&Spring記事人気No4
Kotlinのデータクラス(data class)とは?便利な特徴と使い方を初心者向けにやさしく解説!