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

Swiftのinit(イニシャライザ)の使い方を完全ガイド!初心者でもわかる初期化の基本

Swift イニシャライザ(init)の使い方
Swift イニシャライザ(init)の使い方

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

生徒

「Swiftのinitって何のために使うんですか?見たことはあるけどよく分かりません…」

先生

initは“イニシャライザ”って呼ばれていて、オブジェクトを作るときに最初の状態を決めるための特別な関数なんです。」

生徒

「初期化っていうことですか?」

先生

「その通り!それじゃあSwiftのイニシャライザinitについて、やさしく解説していきますね。」

1. Swiftのinit(イニシャライザ)とは?

1. Swiftのinit(イニシャライザ)とは?
1. Swiftのinit(イニシャライザ)とは?

Swift(スウィフト)では、class(クラス)やstruct(構造体)を使ってデータをひとまとまりにすることができます。

そのときに「初期の値」を設定する役割を持つのがinit(イニシャライザ)です。

たとえば、人の名前や年齢をもつオブジェクトを作るとき、毎回同じ情報を設定するのは大変ですよね。initを使えば、最初から必要な情報を渡して自動的に準備できます。

2. イニシャライザの基本的な書き方

2. イニシャライザの基本的な書き方
2. イニシャライザの基本的な書き方

initは、クラスや構造体の中に書きます。下のように使います。


struct Person {
    var name: String
    var age: Int

    init(name: String, age: Int) {
        self.name = name
        self.age = age
    }

    func greet() {
        print("こんにちは、私は\(name)、\(age)歳です。")
    }
}

let person = Person(name: "太郎", age: 20)
person.greet()

こんにちは、私は太郎、20歳です。

initの中では、selfというキーワードを使って、自分自身のプロパティに値を入れています。

このself.name = nameという書き方は、「この構造体のnameプロパティに、引数で受け取ったnameの値を代入する」という意味になります。

3. イニシャライザがない場合はどうなる?

3. イニシャライザがない場合はどうなる?
3. イニシャライザがない場合はどうなる?

実は、構造体(struct)の場合は、すべてのプロパティに初期値が設定されていれば、Swiftが自動でイニシャライザを用意してくれます。


struct Animal {
    var type: String = "犬"
    var age: Int = 3
}

let a = Animal()
print(a.type)
print(a.age)

犬
3

このように、自分でinitを書かなくても、初期値がある場合はそのまま使うことができます。

4. クラスでもinitは同じように使える

4. クラスでもinitは同じように使える
4. クラスでもinitは同じように使える

クラス(class)の場合もinitを使います。ただし、構造体と違って、すべてのプロパティに初期値があっても、自動ではinitが作られないので、自分で書くのが一般的です。


class Car {
    var color: String
    var speed: Int

    init(color: String, speed: Int) {
        self.color = color
        self.speed = speed
    }

    func run() {
        print("色が\(color)の車が時速\(speed)kmで走っています。")
    }
}

let myCar = Car(color: "赤", speed: 100)
myCar.run()

色が赤の車が時速100kmで走っています。

このように、クラスでもイニシャライザを使うことで、オブジェクトを作るときに必要な情報を渡すことができます。

5. 引数の名前を省略するinitの書き方

5. 引数の名前を省略するinitの書き方
5. 引数の名前を省略するinitの書き方

Swiftでは、イニシャライザで引数のラベルを省略することもできます。省略したい場合は、_(アンダースコア)を使います。


struct Book {
    var title: String

    init(_ title: String) {
        self.title = title
    }
}

let book = Book("Swift入門")
print(book.title)

Swift入門

このようにすると、呼び出すときにtitle:と書かずに、値だけを渡すことができます。

6. イニシャライザの中で計算もできる

6. イニシャライザの中で計算もできる
6. イニシャライザの中で計算もできる

イニシャライザの中では、渡された情報を使って計算したり、条件分岐をしたりすることもできます。


struct Rectangle {
    var width: Int
    var height: Int
    var area: Int

    init(width: Int, height: Int) {
        self.width = width
        self.height = height
        self.area = width * height
    }
}

let rect = Rectangle(width: 5, height: 4)
print("面積は\(rect.area)です")

面積は20です

このように、イニシャライザの中で値を加工して新しいプロパティを作ることもできます。

7. Swiftのinitは安全で便利な機能

7. Swiftのinitは安全で便利な機能
7. Swiftのinitは安全で便利な機能

initを使うことで、Swiftのクラスや構造体のインスタンスを安全に、確実に初期化できます。

Swiftは型安全(がたあんぜん)な言語なので、すべてのプロパティに値が設定されていないとエラーになります。そのためinitはとても重要な仕組みです。

また、コードの見通しを良くするためにも、initを活用することでメンテナンスもしやすくなります。

カテゴリの一覧へ
新着記事
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)とは?便利な特徴と使い方を初心者向けにやさしく解説!