どうも、とがみんです。
プログラミングをするにあたって、重要な「データ型」について、この記事で紹介していきます。
Contents
データ型とは
「データ型」とは、プログラムで使うデータの型をいくつかの種類に分類したものです。
データには、「整数」や「少数」、「文字列」等の種類がありますが、そう言ったデータの種類のことです。
そもそも、データの一例として、以下のようなものがあります。
1 2 3 4 | //とがみんのデータ 名前:とがみん 年齢:23 身長:167.5 |
「名前」は文字列型
「年齢」は整数型
「身長」は少数型
のデータです。
このように、データには様々な種類があり、それらのことをデータの型と言います。
Swiftで使う主な型
Swiftで扱う主なデータ型、「文字列型」、「整数型」、「浮動小数点型」、「配列型」、「ディクショナリー型」、「論理型」について紹介していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | //文字列型 var name:String = "とがみん" //整数型 var age:Int = 23 //浮動小数点型 var tall:Float = 167.7 var pi:Double = 3.14159265358979323846 //論理型 var button:Bool = true //配列型 var animal:[String] = ["ペンギン","ハリネズミ","猫","コアラ","犬"] //配列の要素の番号は0から始まる。 print(animal[0]) // 出力 = ペンギン //ディクショナリー型 ["キー":値] var user:[String:Any] = ["name":"togamin","age":23,"tall":167.7] print(user["neme"]) //出力 = Yuki print(user["age"]) //出力 = 23 |
文字列型:String
「文字列型」は、文字列を表すデータ型で、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」の領域を表すことができます。
浮動少数点型:Float,Double
「浮動少数点型」は、少数を表すデータ型で、Double,もしくはFloatで指定します。
Doubleは64ビット、Floatは32ビットのメモリを確保します。
桁数の大きな少数点を扱いたい場合は「Double型」を使います。
論理型:Bool
「論理型」は「真:true」か「偽:false」の2値を表すデータ型で、Boolで表します。
配列型:Array
「配列型」は、複数の要素を並べた型です。
上記のように、配列に入る型は、変数の横に、[String]のように型を指定します。
配列の要素の番号は「0」から始まるので、配列の中の要素を取り出す際はprint(animal[0])のように書きます。
ディクショナリー型
ディクショナリー型は「キー」と「値」がセットになった配列のデータ型です。データを取り出す際は、print(user[“neme”]) //出力 => Yukiのように「キー」を用いて取り出します。
なぜ、データ型を指定するのか
次に、なぜ、データ型を指定するのかについて説明していきます。
データ型を指定するメリットとして、主に、以下の3つがあります。
- より安全なプログラムを書くことができる。
- 様々なデータを表すことができる。
- メモリを節約できる。
それぞれについて説明していきます。
より安全なプログラムを書くことができる
型を指定することによって、プログラムを動作させた時の不具合を減らすことができます。
例えば、型がなかった場合、以下のようにデータを格納してもエラーが出ません。
1 2 3 4 | //とがみんのデータ 名前:1111 年齢:"とがみん" 身長:true |
型がなく、全ての変数が全てのデータを保持できた場合、誤って、名前に整数のデータを入れてしまう、年齢に名前を入れてしまう、身長にBool型のデータが入ってしまうといったことが起こってしまう可能性は十分あります。
プログラム上では問題のないプログラムですが、何かしらサービスを運用する上で、それが起こってしまった場合、何らかのミスであると推測できます。
このようなミスが起こらないように、あらかじめ変数にデータの型を指定しておき、「名前」には文字列型、「年齢」には整数型、「身長」には少数点型のデータしか入らないようにしておけば、そのミスにあらかじめ氣づくことができます。
このように、型を指定することによって、予期せぬデータの代入を防ぐことができます。
1 2 3 | var name:String = 1111 // => エラー |
様々なデータを表すことができる
データの型を指定することによって、様々なデータを表現することができます。
そもそも、コンピュータは「0」と「1」の2値しか認識することができないので、「文字列」、「整数」、「少数」と、あらゆるデータをその2値で表現しないといけません。
例えば、文字をコンピュータに認識させるにあたって、「文字コード」というものが存在します。
文字コードとは、コンピュータ上で利用する文字と、各文字に割り当てたバイトで表した数字との対応関係を表したものです。
以下は文字コードの対応表で最も基礎となる「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 | var mozi = "5" var suzi = 5 print(mozi + suzi) //出力 = エラー |
なので、違う型どうしの計算をする場合、型をどちらか一方に統一する必要があります。
以下が整数型に統一した場合と、文字列型に統一した場合です。
1 2 3 4 5 | //整数型(Int型)に統一 print(Int(mozi) + suzi) //出力 = 10 //文字列型(String型)に統一 print(mozi + String(suzi)) //出力 = 55 |
データの型によって、計算のされ型が違う点も氣をつけないといけない点です。
まとめ
今回はデータ型について説明しました。