Swiftのデータ型とは、値が「どんな種類の情報か(整数・小数・文字列・真偽値など)」をコンパイラに伝えるための分類であり、Swiftでは型を厳密に区別する静的型付けを採用しているため、変数や定数を扱う前に必ずいずれかの型が決まります。
| この記事の要点 |
|---|
|
主な基本データ型の一覧
まずSwiftでよく使う基本データ型を整理します。それぞれ用途と扱う値の種類が決まっており、目的に応じて使い分けます。
| 型 | 扱う値 | 用途・例 |
|---|---|---|
| Int | 整数 | 個数・回数・添字など。例: 42、-7 |
| Double | 浮動小数点数(64ビット) | 小数を含む計算の標準。例: 3.14 |
| Float | 浮動小数点数(32ビット) | 精度より省メモリを優先する場面。例: 1.5 |
| Bool | 真偽値 | 条件分岐。true / false |
| String | 文字列 | 文章・名前など。例: "Hello" |
| Character | 1文字 | 1文字単位の処理。例: "A" |
小数を扱うときは、特別な理由が無ければDoubleを使うのが一般的です。Swiftでは小数リテラルの型をとくに指定しない場合、Doubleとして推論されます。
型推論と型注釈
Swiftでは、代入する値からコンパイラが型を自動で判断します。これを型推論と呼びます。たとえば整数を代入すればInt、文字列を代入すればStringになります。
let count = 5 // Int と推論される |
一方で、型を明示したいときは型注釈を使い、変数名のうしろに: 型名を書きます。値の型をはっきりさせたい場合や、初期値を後から代入する場合に役立ちます。
let x: Int = 5 |
なお、値を変更しない場合はlet(定数)、変更する場合はvar(変数)を使います。型推論を使っても型注釈を使っても、いったん決まった型は途中で別の型に変わることはありません。
Optionalとnilの考え方
Swiftの大きな特徴がOptional(オプショナル)です。通常の型は必ず値を持ちますが、「値が存在しないかもしれない」状態を表したいときは、型名のうしろに?を付けたOptional型を使います。値が無い状態はnilで表します。
var score: Int? = 80 // 値あり |
Optionalの中身を取り出すことをアンラップと呼びます。代表的な方法がif letによる安全な取り出しです。値があるときだけ処理を実行できます。
var score: Int? = 80 |
このしくみにより、「値が無いのに使おうとして起きる不具合」をコンパイル時点で防ぎやすくなっています。Optionalは、Swiftが安全性を重視していることを示す代表的な機能です。
コレクション型とTuple
複数の値をまとめて扱うための型も用意されています。代表的なものを挙げます。
| 型 | 特徴 | 用途 |
|---|---|---|
| Array | 順序を持つ並び | 同じ型の値を順番に並べる |
| Dictionary | キーと値の対応 | 名前から値を引く |
| Set | 重複しない集まり | 一意な値の管理 |
| Tuple | 複数の値の組 | 異なる型をまとめて返す |
let numbers = [1, 2, 3] // Array<Int> |
ArrayやDictionaryは中に入れる値の型が決まっており、たとえば[Int]には文字列を混在させられません。これも型を厳密に区別するSwiftの考え方によるものです。
値型(struct)が中心であること
Swiftの基本型であるInt・Double・Bool・String・Array・Dictionaryなどは、いずれも値型(struct)として設計されています。値型は代入や関数への受け渡しのときに値がコピーされ、コピー元とコピー先は互いに影響しません。
var a = 10 |
この性質により、知らないうちに別の場所の値が書き換わるといった事態が起きにくく、動作を予測しやすくなります。
型変換
Swiftは型を自動で変換しないため、別の型へ変えたいときは明示的に型変換を行います。多くの型は、変換先の型名を関数のように呼び出して変換します。
let n = Int("5") // String → Int?(変換できないとnil) |
とくにInt("5")のような文字列から数値への変換は、文字列が数値として解釈できないこともあるため、結果はOptional(Int?)になります。変換に失敗した場合はnilが返るので、前述のアンラップで安全に扱います。
つまずきやすいポイント
Swiftの型まわりで誤解されやすい点を整理します。いずれもSwiftが安全性と明確さを優先していることに由来します。
| 注意点 | 内容 |
|---|---|
| 暗黙の型変換が無い | 他言語のように自動で型がそろうことはなく、型が違えばそのまま計算できない。明示的な変換が必要。 |
| Int と Double の混在演算 | let r = 1 + 2.0 のような直接の混在演算はエラー。どちらかをそろえる必要がある。 |
| Optionalのアンラップ忘れ | Int? をそのまま Int として使うことはできない。if let などで取り出してから使う。 |
let a = 10 |
よくある質問(FAQ)
Q. 小数を扱うときはDoubleとFloatのどちらを使えばよいですか。
A. 特別な事情が無ければDoubleが推奨されます。Doubleの方が精度が高く、Swiftでも小数リテラルは標準でDoubleとして推論されます。省メモリが重要な場面に限ってFloatを検討します。
Q. letとvarはどう使い分けますか。
A. 値を変更しないものはlet(定数)、変更するものはvar(変数)にします。基本はletを使い、変更が必要なときだけvarにすると、意図しない書き換えを防ぎやすくなります。
Q. なぜOptionalがわざわざ用意されているのですか。
A. 「値が無い状態」を型のレベルで明示し、値が無いまま使ってしまう不具合をコンパイル時に防ぐためです。通常の型にはnilを入れられず、値が無いことを許す場所だけがOptionalになるため、安全に扱えます。
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38