【Swift】初心者のためのSwiftチートシート

Swiftの基本的な文法などをまとめました。

##内容
1. [ボタンに動きをつける](#1-ボタンに動きをつける)
2. [Storyboardの部品に名前をつける](#2-Storyboardの部品に名前をつける)
3. [基本的な変数の型と種類](#3-基本的な変数の型と種類)
4. [配列](#4-配列)
5. [演算子](#5-演算子)
6. [乱数](#6-乱数)
7. [条件分岐](#7-条件分岐)
8. [繰り返し](#8-繰り返し)
9. [開発時に便利なコマンド一覧](#9-開発時に便利なコマンド一覧)

##1. ボタンに動きをつける
**画面上のボタンが押された時に何かしらの処理を行いたい場合** は、 **`@IBAction`** を使います。

#####使用例
```Swift
@IBAction func hoge(){  //hogeは自分の好きな単語に変えてOK

  //ここに処理を書く

}
```

ここで、`@IBAction`の後に書いてある`hoge`の部分は自由に決めることができるので自分で好きな単語に変えて大丈夫です。

#####Tips:関連付け-1
せっかくボタンに動きをつけるための処理をプログラムに書いても、どのボタンが押された時にその処理が呼び出されるかを指定しなければ意味がありません。

`@IBAction`で処理を書いたら **関連付け** を忘れないようにしましょう。

##2. Storyboardの部品に名前をつける
**Storyboard上に配置したボタンやラベルなどの部品に名前をつけたい場合** は、 **`@IBOutlet`** を使います。

#####使用例
```Swift
@IBOutlet var label: UILabel!          //ラベル
@IBOutlet var button: UIButton!        //ボタン
@IBOutlet var imageView: UIImageView!  //イメージビュー
```

ここで、`@IBOutlet var`の後に書いてある`label`、`button`、`imageView`が **部品の名前** になります。
`var`の意味は下のセクション([基本的な変数の型と種類](#3-基本的な変数の型と種類))で説明します。

部品名は基本的に自分の好きな名前にして大丈夫ですが、 **どんな役割で使われているのかを意識して** 命名すると良いです。

`UILabel`、`UIButton`、`UIImageView`の部分が **名前をつけたい部品の種類** になります。

**部品の種類を間違えると関連付けを行うことができない** ので注意しましょう。

#####Tips:関連付け-2
`@IBAction`と同様に、`@IBOutlet`で部品の名前を宣言したら、どの部品がその名前であるのかを指定するための **関連付け** を忘れないようにしましょう。

##3. 基本的な変数の型と種類
####変数の宣言
```Swift
//hoge,honya,fugaは自分の好きな単語に変えてOK
var hoge: Int
var honya: Float
var fuga: String
```

変数の宣言は上のように行います。
`var`についての説明は[varとlet](#varとlet)のセクションで行うとして、`hoge`や`honya`、`fuga`の部分が **変数の名前** になります。

変数名は好きな単語などにして大丈夫ですが、 **後から見て役割がわかるような名前** にすると良いでしょう。

#####Tips:変数の初期化
```Swift
var hoge: Int = 0
var honya: Float = 0.0
var fuga: String = "abc"
```

上記のように変数の宣言と同時に初期値を代入することを **初期化** と言います。

変数の初期化をしないと変数の中身がどんな値になっているか分からない状態になってしまうため、 **変数を宣言したら一緒に初期化** を行う癖をつけましょう。

####変数の型
変数には様々な型があります。その中でもよく利用される基本的な **変数の型** をまとめました。

|型名|内容|
|:-:|:-:|
|Int|符号付き整数(プラスやマイナスが使える整数)|
|UInt|符号なし整数(プラスのみの整数)|
|Float|実数(小数点付きの数値)|
|Double|実数(Floatの2倍の大きさの数値まで格納できる)|
|String|文字列(複数の文字)|
|Character|文字(1文字のみ)|

####varとlet
```Swift
var hoge: Int
let fuga: Float
```
上記のように、 **変数には`var`と`let`の2種類** があります。

`var`と`let`の使い分けは以下のように行います。

| var | let |
|:---:|:---:|
|変数の中身を後から書き換えられる|変数の中身を後から書き換えられない|

##4. 配列
同じ型で関連のある複数のデータを扱いたい場合、いちいち変数の宣言をするとたくさん変数ができてしまって、データが扱いにくくなってしまいます。そのため、 **データをまとめて扱うことができる変数のようなもの** が必要になります。

そのような場合に用いられるのが **配列** です。

#####使用例
```Swift
//配列を使わない場合
var hoge1: Int = 0
var hoge2: Int = 0
var hoge3: Int = 0

hoge1 = 1
hoge2 = 2
hoge3 = 3

//配列を使う場合
var hoge: [Int] = [0,0,0]  //配列の宣言

hoge[0] = 1
hoge[1] = 2
hoge[2] = 3   //この場合、配列の中身は[1,2,3]となります
```

宣言の仕方は変数とあまり変わりませんが、 **名前の後の型の部分を`[ ]`で囲む** ことが特徴です。

配列は **変数がたくさん繋がったもの** とイメージすると良いでしょう。

中に入っている値を取り出したい場合、 **`hoge[0]`** のように **配列名の後に何番目の値を取り出したいかを数値で指定** します。

配列を使う際は、順番を数える時に **1からではなく0から数え始めなければいけない** ことに注意しなければいけません。

##5. 演算子
開発を行う時によく使う **演算子** を以下にまとめました。

|演算子|意味|
|:--:|:--:|
|+|足す|
|-|引く|
|*|かける|
|/|割る|
|%|割ったあまりを求める|
|=|代入|
|+=|足して代入|
|-=|引いて代入|
|*=|かけて代入|
|/=|割って代入|
|%=|余りを求めて代入|

if文([条件分岐のセクション](#7-条件分岐)で説明します)を使う際に条件を指定するための **条件演算子** は以下のようになります。

|条件演算子|意味|
|:--:|:--:|
|==|等しい|
|!=|等しくない|
|<|未満|
|<=|以下|
|>|より大きい|
|>=|以上|
|&&|かつ|
|&#124;&#124;|または|

##6. 乱数
**ランダムな値を使用したい場合** は、 **`arc4random()`関数** を使います。

#####使用例
```Swift
//範囲を指定しない場合
number = arc4random()

//範囲を指定して乱数を発生させる場合
number = arc4random_uniform(9)
//0~9の中で乱数を発生させる
```

範囲を指定して乱数を発生させたい場合は、 **`arc4random_uniform(9)`** のように **`( )`の中に最大値** を書きます。

##7. 条件分岐
####if文

**「もし〜なら...する。」という処理を行いたい場合** は **`if`** を使います。

#####使用例
```Swift
if  /*条件1*/ {

	//条件1が満たされた時に行う処理
  
}else if  /*条件2*/  {

	//条件1が満たされていない時に、条件2が満たされたら行う処理

}else{

	//条件1も2も満たされていない時に行う処理

}
```

**「もし〜なら...する。それ以外の場合でもし--なら~~する。」のようにいろいろなパターンを用意したい場合** は **`else if`** や **`else`** を使います。

`else if`や`else`の使い方は上の使用例に書いたとおりです。

#####Tips:条件式の書き方
```Swift
//基本編
hoge == 0      //hogeの値が0
moji == "abc"  //mojiの値が"abc"
honya <= 2     //honyaの値が2以下
fuga > 1       //fugaの値が1より大きい
funya != 1     //funyaが1ではない

//応用編
hoge-5 == 0        //hogeから5を引いた答えが0
hoge>0 && hoge<10  //hogeが0より大きく、かつ、10より小さい
hoge<0 || hoge>4   //hogeが0より小さい、もしくは、4より大きい
```
**`&&`で複数の条件をつなぐ** ことで、 **それら全ての条件を満たしている場合** という条件を指定することができます。

また、 **`||`で複数の条件をつなぐ** ことで、 **それらの条件のうちのどれかが満たされた場合** という条件を指定することができます。

####switch文
**変数の中身によって行う処理を分けたい場合** は **`switch`** を使います。

`if`でも同じことができますが、 **変数の中身だけで条件の判断をする場合は`switch`を使うことによってコードを簡潔に書くことができます。**

#####使用例
```Swift
switch hoge{
case /*値1*/:
	
	//hogeの中身が値1だった時の処理
		
case /*値2*/:
	
	//hogeの中身が値2だった時の処理
		
default:
	//hogeの中身が値1でも値2でもなかった時の処理
}
```
上の例では、`hoge`という名前の変数の中身によって行う処理を分けています。

##8. 繰り返し
**何度も同じ処理を繰り返したい場合** は、 **`for`** を使います。

#####使用例
```Swift
for i in 0..< 100 {

	//繰り返し行いたい処理

}
```
上の例の場合は、`i`という変数が0から100まで変化する間に処理を繰り返し行うという意味になります。

**処理が行われるたびに`i`が1づつ増え、`i`が100になったら繰り返しが終了** します。

##9. 開発に便利なコマンド一覧
**開発する時に使うと便利なコマンド** をまとめました。

|コマンド|意味|
|:----:|:--:|
|⌘ + C|コピー|
|⌘ + V| ペースト|
|⌘ + X|切り取り(コピーして消す)|
|⌘ + Z|戻る|
|⌘ + shift + Z|進む|
|⌘ + A|全選択|
|⌘ + /|選択している行のコメントアウト/解除|
|control + I|選択している行のコードフォーマット(インデントをそろえて見やすくする)|
|⌘ + shift + K|クリーン(コードが間違っていない場合にエラーが消えることがある)|
|⌘ + R|ビルドしてラン(シミュレータを起動してアプリの実行)|
|⌘ + F|ファイル内で単語の検索と置換|