どうも。とがみんです。
現在セブ島のNexSeedというプログラミングと英語を勉強できる学校で、エンジニア留学卒業後、ティーチングアシスタントとして、インターンをしています。
今回はSwiftにおける「データ型」についてまとめたので、紹介していきます。
データ型とは
「データ型」とは、プログラムで使うデータの型をいくつかの種類に分類したものです。
そもそもデータとは何なのか。
この世界にはたくさんのデータでありふれています。
例えば、個人情報。
1 2 3 4 5 6 |
//とがみんのデータ 名前:とがみん 年齢:23 身長:167.5 |
名前は「文字列」
年齢は「整数」
身長は「少数」
のデータです。
このように、データには様々な種類があり、それらのことを「データ型」と言います。
Swiftで使う主な「データ型」
Swiftで使うデータ型は主に6つあります。
「文字列型」、「整数型」、「浮動小数点型」、「論理型」、「配列型」、「ディクショナリー型」です。
それらについて説明していきます。
文字列型:String
「文字列型」は文字列を表すデータ型で、Stringで指定し、以下のようにダブルクォーテーションで囲みます。
1 2 3 |
var name:String = "とがみん" |
整数型:Int
「整数型」は整数を表すデータ型で、Int型で指定します。
このInt型には、Int,Int8,Int16,Int32,Int64といくつか種類があります。
これは、整数型のデータを扱う際に、どれぐらいのメモリ領域を用意するかを表しています。
「Int8」はメモリ8ビットで表せる整数型で、すなわち「-128〜127」の範囲の数字を扱う際に使います。
「Int16」はメモリ16ビットで表せる整数型で、「-32,768〜32767」の範囲の数字を扱うことができます。
「Int64」はメモリ64ビットで表せる整数型で、「-9,223,372,036,854,775,808〜9,223,372,036,854,775,807」の領域を表すことができます。
1 2 |
var age:Int = 23 |
浮動少数点型:Double,Float
「浮動少数点型」は少数点を表すデータ型で、Double、もしくはFloatで指定します。
「Double」は64ビット、「Float」は32ビットのメモリを確保します。
桁数の大きな少数点を扱いたい場合は「Double型」を使います。
1 2 3 |
var tall:Float = 167.7 var pi:Double = 3.14159265358979323846 |
論理型:Bool
「論理型」は「真:true」か「偽:false」の2値を表すデータ型で、Boolで表します。
1 2 |
var button:Bool = true |
配列型:Array
「配列型」は、複数の要素のデータを並べた型で、以下のように表します。配列に入る型を中括弧[]で囲って宣言します。
配列の要素の番号は「0」から始まり、配列の中の要素を取り出す際はprint(animal[0])のように書きます。
1 2 3 4 5 |
var animal:[String] = ["ペンギン","ハリネズミ","猫","コアラ","犬"] //配列の要素の番号は0から始まる。 print(animal[0]) // 出力 = ペンギン |
ディクショナリー型
ディクショナリー型は「キー」と「値」がセットになった配列のデータ型です。データを取り出す際は、以下のように「キー」を用います。
1 2 3 4 5 6 7 |
//["キー":値] var user:[String:Any] = ["name":"togamin","age":23,"tall":167.7] print(user["neme"]) //出力 = Yuki print(user["age"]) //出力 = 23 |
なぜデータ型を指定するのか
なぜ、わざわざデータ型の指定をするのかについて説明します。
データの型を指定するメリットとして主に以下の3つあります。
- より安全なプログラムを書くことができる。
- 様々なデータを表すことができる。
- メモリを節約できる。
それぞれについて説明していきます。
より安全なプログラムを書くことができる。
型を指定することによって、プログラムを動作させた時の不具合を減らすことができます。
例えば、型を指定しなかっ場合、以下のようにデータを格納してもエラーが出ません。
1 2 3 4 5 |
//とがみんのデータ 名前:1111 年齢:"とがみん" 身長:true |
誤って、名前に整数のデータを入れてしまう、年齢に名前を入れてしまう、身長にBool型のデータが入ってしまうといったことが起こってしまった場合、アプリがクラッシュ(異常終了)してしまう可能性が高まります。
型を指定していれば、その型の値がちゃんと入っているかどうかを判別でき、もし、誤って入っていた場合にエラーとしてあらかじめ出力してくれるので、アプリのクラッシュを事前に防ぐことができます。
結果、より安全に動作するプログラムを書くことができます。
以下の例では、String型の変数に整数のデータを入れようとしているので、エラーが出力されます。
1 2 3 4 |
var name:String = 1111 // = エラー |
このように、データの型を指定することによって、予期しない値の代入を未然に防ぐことができます。
様々なデータを表すことができる
データの型を指定することによって様々なデータを表現することができます。
そもそもコンピュターは「0」、「1」の2値しか認識できないので、文字列、整数、少数と、あらゆるデータを「0」と「1」で表さないといけません。
文字をコンピューターに認識させるに当たって、文字コードと言うものが存在します。
文字コードとは、コンピュータ上で利用する文字と、各文字に割り当てたバイトで表した数字との対応関係を表したものです。
以下は文字コードの対応表で最も基礎となる「ASCII」コードです。

文字ごとにコードが割り当てられており、コンピュータはそのコードを元に、文字を表現します。
数字の「1」はコンピュータ上でただの「1」でも、文字列の「1」は10進数で「49」の数字が割り当てられています。
型を指定することによって、コンピュータ内で、そのデータ型にあった処理をしてくれます。
整数型は、整数型の処理、文字列型は文字列がた用の処理、浮動小数点がたは浮動小数点
型の処理といった感じです。
このように、データ型のおかけで、整数だけでなく、少数や文字列といったデータをコンピュータで表現できるようになります。
メモリを節約できる
型の指定の仕方によって、メモリを節約することができます。
Int8型は8ビットのメモリを使用し、「-128〜127」の整数を扱えます。
Int64型は64ビットのメモリを使用し、「-9,223,372,036,854,775,808〜9,223,372,036,854,775,807」の整数を扱うことができます。
もし、プログラムを書く上で、「1〜100」の数字を扱いたい場合、用意するメモリは8ビットで十分です。
なので、「1〜100」の数字しか使わない場合、Int64で型を指定してしまった場合、無駄にメモリを消費してしまいます。
このように、型の指定の仕方によって、メモリの使用の仕方を最適化することで、コンピューターのメモリの無駄を抑えることができます。
コードを書く際に気をつけること
コードを書く際に気をつける点として、異なるデータ型どうしの計算はできないことです。
型が違えば、メモリの処理のされ方が違うので、以下のように、文字列と整数の計算をしようとするとエラーが出力されます。
1 2 3 4 5 6 7 8 |
var mozi = "5" var suzi = 5 print(mozi + suzi) //出力 = エラー |
なので、違う型どうしの計算をする場合、型をどちらか一方に統一する必要があります。
以下が整数型に統一した場合と、文字列型に統一した場合です。
1 2 3 4 5 6 7 |
//整数型(Int型)に統一 print(Int(mozi) + suzi) //出力 = 10 //文字列型(String型)に統一 print(mozi + String(suzi)) //出力 = 55 |
整数型と文字列型で足し算のされ方が違う点も気をつけないといけない点です。
まとめ
今回はデータ型について説明しました。データ型の要点は以下です。
- Swiftで扱うデータ型は主に6つ。文字列型、整数型、浮動小数型、配列型、ディクショナリー型、論理型。
- データ型を指定する理由は主に3つ
- より安全なプログラムを書ける。
- 様々なデータを表現できる。
- メモリを節約することができる。
- 異なる型同士の計算はできない。
また、下記がインターンをしているNexSeedという「プログラミング×英語」の勉強ができるセブにある学校です。
起業志向の人や、フリーランスを目指す人等、意識の高い人が多く、自分も良い刺激をもらっています。
留学を考えているけど、英語だけじゃ物足りないと感じる人、起業やフリーランスとして働くことを見据えている人は是非見てみてください!
参考文献