カテゴリ: Swift 更新日: 2025/12/26

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を書かなくても、初期値がある場合はそのまま使うことができます。

Swiftを基礎から実践レベルまで学びたい人や、 iOSアプリ開発を本格的に始めたい人には、 定番の入門+実践書がこちらです。

Swift実践入門をAmazonで見る

※ Amazon広告リンク

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を活用することでメンテナンスもしやすくなります。

まとめ

まとめ
まとめ

Swiftのinit(イニシャライザ)は、クラスや構造体を初期化するための大切な仕組みであり、プログラムの基盤となる部分を整える非常に重要な役割を持っています。今回の記事で学んだように、イニシャライザはプロパティに値をセットしたり、必要な準備を行ったりするための特別な関数で、オブジェクトの正しい状態を保証するために欠かせない要素です。クラスや構造体の設計において、どのような状態でインスタンスが生成されるべきなのかを明確にすることで、コード全体の見通しがよくなり、後から処理を追加したり保守したりする際にも役立ちます。 特にSwiftは型の安全性が高い言語であるため、すべてのプロパティが適切に初期化されていないとエラーにつながります。この特徴によって、プログラムの品質が保たれ、思わぬ不具合を未然に防ぐことができます。イニシャライザはその安全性を守る中心的な存在であり、開発者が安心してオブジェクトを扱えるようにしてくれます。イニシャライザの使い方を身につけることで、Swiftにおける基本的なオブジェクト指向の操作が自然と理解できるようになり、アプリ開発の幅が大きく広がるでしょう。 また、引数ラベルを省略する方法や、イニシャライザ内で値の計算を行うパターンなど、実務でも便利に使える知識が多く含まれていました。これらのテクニックを活用することで、より柔軟で表現力の高いコードを書くことができます。さらに、自動生成されるイニシャライザの仕組みや、クラスと構造体の違いなども理解することで、どの場面でどの型を使うべきかの判断もしやすくなります。 下記には復習用の簡単なサンプルコードを掲載していますので、もう一度イニシャライザの動きを確認しつつ、自分自身でも書き換えながら理解を深めていくとよいでしょう。

サンプルプログラム(復習用)


struct User {
    var username: String
    var score: Int

    init(username: String, score: Int) {
        self.username = username
        self.score = score
    }

    func showStatus() {
        print("ようこそ\(username)さん、現在のスコアは\(score)です。")
    }
}

let user = User(username: "花子", score: 85)
user.showStatus()

このサンプルでは、ユーザーの名前とスコアを初期化するイニシャライザを使っています。実際にインスタンスを生成する際に必要な情報を渡すことで、オブジェクトが適切な状態でスタートできます。このような明確な初期化は大規模なアプリでも非常に役立ち、データの整合性を保つ基盤となります。 イニシャライザの中で計算を行うことで、渡された情報をさらに加工したり、派生データを生成したりすることもでき、柔軟な設計が可能です。たとえば、スコアに応じて評価を決めたり、長さの違う文字列から特定の情報を抽出したりするなど、さまざまな応用が考えられます。こうした基礎をしっかり身につけておくことで、Swiftでの開発がもっと楽しく、もっと効率的に行えるようになるでしょう。 さらに、引数ラベルを省略する書き方や複数のイニシャライザを定義するパターン、クラスの継承時に必要となるイニシャライザの扱いなど、イニシャライザの世界はとても奥深いものです。これからSwiftに触れ続けるなかで、さまざまな場面で活用できるようになりますので、繰り返し書いて慣れていくことが大切です。

先生と生徒の振り返り会話

生徒:「先生、イニシャライザってただの初期化だと思っていたけれど、こんなに大事な役割があったんですね。」

先生:「そうなんです。オブジェクトの最初の状態をしっかり決めることはとても重要で、Swiftでは特に欠かせない仕組みなんですよ。」

生徒:「構造体は自動で作られるイニシャライザもあるけれど、自分で書いたほうが読みやすくなるんですね。」

先生:「ええ、明確にしておくことで、他の人が見ても分かりやすいコードになりますし、後から修正するときにも助かります。」

生徒:「アンダースコアを使って引数ラベルを省略できるのも便利でした。呼びやすくなりますね。」

先生:「その通りです。状況に合わせて使い分けることで自然なコードを書くことができます。これからもたくさん書いて、慣れていきましょうね。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Swiftのinit(イニシャライザ)は何のために使うのですか?

Swiftのinit(イニシャライザ)は、クラスや構造体のオブジェクトを生成するときに、初期値を設定するために使います。初期化を通して、すべてのプロパティに正しい値がセットされ、安全で安定したプログラムを実現できます。
カテゴリの一覧へ
新着記事
New1
Go言語
Go言語の構造体の初期化パターンとコンストラクタ的関数の書き方を徹底解説!初心者でもわかる基本と実用例
New2
Kotlin
Kotlinの例外処理とキャンセルの連携を完全ガイド!初心者でもわかるCoroutineExceptionHandlerの使い方
New3
Go言語
Go言語のクロージャとは?関数内関数の活用例と仕組み
New4
Swift
Swiftでエラー原因を可視化!ログとトレースのベストプラクティスを初心者向けに解説
人気記事
No.1
Java&Spring記事人気No1
Kotlin
KotlinのChannelでデータをやり取りする方法を完全ガイド!初心者にもわかる非同期通信の基本
No.2
Java&Spring記事人気No2
Go言語
Go言語でのDB接続情報を環境変数で管理する方法|初心者でも安全に設定
No.3
Java&Spring記事人気No3
Kotlin
Kotlinのビルド設定エラーと解決法まとめ!初心者向けGradleトラブル対処ガイド
No.4
Java&Spring記事人気No4
Kotlin
Android Studioのインストール手順と初期設定を初心者向けに完全解説!
No.5
Java&Spring記事人気No5
Kotlin
Gradleファイル(build.gradle.kts)の書き方と役割をやさしく解説!Kotlin初心者向け完全ガイド
No.6
Java&Spring記事人気No6
Kotlin
Kotlinでテキスト表示・編集!初心者でもわかるTextViewとEditTextの使い方
No.7
Java&Spring記事人気No7
Swift
Swift Playgroundの使い方を完全解説!初心者に最適な学習環境の始め方
No.8
Java&Spring記事人気No8
Go言語
Go言語のgo.modファイル完全ガイド!初心者でもわかる仕組みと書き方

💻 作業効率アップに

ノートPCを縦置きしてデスクを広く。
省スペースで片づく定番スタンド

UGREEN 縦型スタンドをAmazonで見る

※ Amazon広告リンク