型 (Type) とは
型 = データの種類
変数と定数に何を入れられるかを決めるルールのこと。
主な型
数値系
| 型 | 説明 | 例 |
|---|---|---|
Int | 整数 | 42, -10, 0 |
Double | 小数 (高精度) | 3.14, 0.1 |
Float | 小数 (低精度) | 3.14 |
文字系
| 型 | 説明 | 例 |
|---|---|---|
String | 文字列 | "Hello", "Swift" |
Character | 1文字 | "A", "あ" |
論理系
| 型 | 説明 | 例 |
|---|---|---|
Bool | 真偽値 | true, false |
型安全 (Type Safety)
Swift は型安全な言語である。 間違った型を使おうとすると、コンパイル時にエラーで教えてくれる仕組みのこと。
let age: Int = 30
let message: String = "こんにちは"
let result = age + message // コンパイルエラー!
// 「整数と文字列は足せないよ」と教えてくれる
→ プログラムを実行する前にエラーが分かる!
型安全じゃない言語との比較
JavaScript (型安全じゃない):
let age = 30;
let message = "こんにちは";
let result = age + message; // "30こんにちは" になる (エラーにならない)
→ 実行してみないと変な結果になってることに気づかない
Swift (型安全):
let age = 30
let message = "こんにちは"
let result = age + message // コンパイル時点でエラー!
→ コードを書いてる段階でエラーが出る
メリット
- バグが減る → 変な型の組み合わせを防げる
- 安心できる → 実行前に問題が分かる
- 意図が明確 → 「この変数は整数だ」と分かる
型推論 (Type Inference)
型を書かなくても、Swift が自動で判断してくれる機能。
let age = 30 // Swift が「これは Int だな」と推論
let name = "Ken" // Swift が「これは String だな」と推論
コンパイラがコンパイル時に与えられた値を調べることで、式の型を自動で推論してくれる。
型推論は、特に初期値を伴って[[変数と定数|変数や定数]]を宣言するときに役立つ。
コードに直接出てくる 42 や 3.14 のようなリテラル値を代入する際によく機能する。
型注釈 (Type Annotation)
型推論に任せず、明示的に型を書くこともできる。
let age: Int = 30
let name: String = "Ken"
// ^^^^^^^^ これが型注釈
いつ型注釈を使う?
- 初期値がないとき (型推論できない)
var score: Int // 後で値を入れる
- 型を明確にしたいとき
let pi: Double = 3 // Int ではなく Double にしたい
- コードの意図を明確にしたいとき
let userID: String = "12345" // 数字だけど文字列として扱う
型安全と型推論の関係
型安全と型推論は両立する。
- 型安全: 全ての値と場所に型があり、不一致はエラーになる
- 型推論: 型を明示しなくても Swift が自動で判断する
Swift は型推論のおかげで、C 言語や Objective-C のような言語と比べて型を宣言する必要が少ない。
しかし全ての定数と変数には型があり、型チェックは常に行われる。
まとめ
| 概念 | 意味 |
|---|---|
| 型 | データの種類 |
| 型安全 | 型の間違いをコンパイル時にチェック |
| 型推論 | 値から自動で型を判断 |
| 型注釈 | 明示的に型を指定 |