Swiftを勉強してみた1 〜型〜

## はじめに
今日からとても軽い気持ちでSwiftを勉強します

新人エンジニアとして一年弱働いてきてきた僕ですが、
「_何か新しいことに挑戦してアウトプットしていきたい_」
という思いを抱きました。しかし肩を張っていては性格上続かないので、
「_楽しいことしたいな〜脱出ゲームでも作ろうかな〜_」という軽いノリでやります。
したがって、1とか言ってますが、連載感覚ではなく忘備録的に書くだけです。
初回だけは文章多めですが、次回からはあまり喋らないと思います。

説明や解説は最初に軽く書いたり書かなかったり。
あとはコード中のコメントで書くと思います。
コードの近くに解説を書きたいのです（ただめんどくさいだけ）
なので基本的にコードを書いてあげるだけになるかと思います。

アウトプットする以上は人が見ても理解できるよう最低限の努力はしますが、
__包括的にまとめて伝えることは目的としていない__ので、ご理解いただけると幸いです

## 進め方

特に決めてませんが、大体の流れとしては

1. 基本的な文法を学ぶ
2. 実際に簡単なアプリを作ってみる
3. 脱出ゲームアプリを作ろうとするが
4. もっと簡単そうなアプリをつくる

だと思っています。
本来ならば3でさらっと脱出ゲームを作りたいところですが、
「脱出ゲームって画像とロジックがめんどくさそう」
「1と2でだいたいどんなアプリが初心者に作れるかがわかるようになった」
「まぁ別に脱出ゲームにこだわりはないし、なんでもいいか」
と将来の自分が考えているであろうという目論見（というか経験則）があります。

とりあえず1と2までは、[作って学ぶSwift/iOSアプリ入門]様を
おおまかな軸として進め、色々と調べつつゆっくり進めていこうと思っています。

### おねがい
これ間違えてるよ！とか、こんなのが参考になるよ！とかがありましたら、
よろしければ教えてください。皆様に支えられて生きています。

## 型

それでは基本的な型を学びます。
表示の仕方を学ぶために未習のはずの制御構文使ってます。

### 今回学んだ型
- Int（整数型、8,16,32,64ビットの整数が利用可能）
- Float（32ビットの浮動小数点型、制度は6桁）
- Double（64ビットの浮動小数点型、精度は15桁）
- Bool（trueかfalse）
- String（文字列型）
- Array（配列型）
- Dictionary（appleはりんご、みたいに紐づけて使う。JavaのMapみたい）
- タプル型（既存の型を組み合わせて作る配列みたい）

### 今回学んだこと
- 宣言時、型を指定しなければ自動で判断してくれる
- でも結局型にうるさそうなので、可読性的にも宣言したらいいんじゃないかと思いました
- 変数宣言がvar、定数宣言がlet (letで宣言した定数に異なる値を代入しようとするとコンパイルエラー)
- println()はSwift2.0から廃止されてるみたい (print()に改行コードが含まれるようになった)
- 改行なしで文字列を出力するときは、~~`print("hoge", appendNewline: false)`~~←appendNewLineも廃止されたようです
- 改行なしで文字列を出力するときは、`print("hoge", terminator: "")`

### コード
```Swift:型を勉強しました

// String型（常に""が必要）
var hello = "こんにちわ"

// String型、型宣言するとこう
var helloWithType : String = "こんにちわ"

    print(hello)
    print(helloWithType)

// Int型（ビット数を指定しないと32ビットのInt＝Int32）
var int : Int = 100

// Int型（符号付きnビット）
var int16 : Int16 = 100

// Int型（符号なしnビット）
var point : UInt16 = 100

    // そのままでもprintできるが
    print(point)
    // 型変換しなきゃいけない時もあるだろうから、基本変換
    print(String(point))

// Bool型
let trueLet : Bool = true
let falseLet : Bool = false

    if trueLet == true {
        print("true")
    }
    if falseLet == false{
        print("false")
    }

// array型
var arrayOfNum : [Int] = [1, 2, 3, 4, 5]

    // 0からはじまる
    print(String(arrayOfNum[0]))

    // for inで全部表示？
    for int in arrayOfNum {
        print(int)
    }

// dictionary型（Javaで言うMap?）
var dict : [String:String] = [
    "apple": "りんご",
    "orange": "みかん"
]

    // キーからデータを取り出す
    print(dict["apple"])

    // 全要素取り出す
    for (key, value) in dict {
        print("dict key is \(key), value is \(value)")

// arrayとdictionaryを空で宣言
var emptyArray : [Int] = []
var emptyDict : [String:String] = [:]

// 既存の型を組み合わせて作るタプル型
let lang : (String, Int) = ("Swift", 0)

    print(lang.0)
    print(lang.1)

// タプル型は名前をつけることも可能
let langWithName : (name:String, age:Int) = (name:"Swift", age:0)

    print("名前は" + langWithName.name + "、年齢は" + String(langWithName.age) + "歳")
```

## おわりに
久々の趣味でのアウトプット楽しかったです。
そのうちコードの実行結果も追加で掲載したいと思います。

次回は制御構文、Optionalとやら、そしてnilとやらを勉強したいと思います。

#### 参考
- [作って学ぶSwift/iOSアプリ入門]
- [Swiftでの数値表現]
- [wiki-Swift(プログラミング言語)]
- [Swift 辞書データ(Dictionary)で要素をfor文で回して全部見る]
- [Swiftでprintfのような感じで数字をフォーマットする]

[作って学ぶSwift/iOSアプリ入門]:https://tech.camph.net/how-to-make-ios-app-with-swift/
[Swiftでの数値表現]:http://qiita.com/HaNoHito/items/ddbcf6e9f15fe8fae901
[wiki-Swift(プログラミング言語)]:https://ja.wikipedia.org/wiki/Swift_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E)#.E7.9C.9F.E5.81.BD.E5.80.A4
[Swift 辞書データ(Dictionary)で要素をfor文で回して全部見る]:http://code-examples-ja.hateblo.jp/entry/2015/02/08/Swift_%E8%BE%9E%E6%9B%B8%E3%83%87%E3%83%BC%E3%82%BF(Dictionary)%E3%81%A7%E8%A6%81%E7%B4%A0%E3%82%92for%E6%96%87%E3%81%A7%E5%9B%9E%E3%81%97%E3%81%A6%E5%85%A8%E9%83%A8%E8%A6%8B%E3%82%8B
[Swiftでprintfのような感じで数字をフォーマットする]:http://qiita.com/twipg/items/f4680002e8f01fbd4628