【第１回】Swiftアプリ開発チュートリアル -Food Tracker- のお供に（Build a Basic UI 編）

# はじめに

AppleのSwiftアプリ開発チュートリアルを進めていて出てきた関数やクラスなどについて、調べたことを残していきます。
チュートリアルを進めながら、**ざっくりと**どういうものかを把握するためのお供になればと思います。

初学者のため、間違い等あればご指摘ください。 :bow: 

第１回：Swiftアプリ開発チュートリアル -Food Tracker- のお供に（Build a Basic UI 編） ←今回はここ
第２回：[Swiftアプリ開発チュートリアル -Food Tracker- のお供に（Connect the UI to Code 編）](http://qiita.com/taji-taji/items/da3b800914fa3313d5a8)
第３回：[Swiftアプリ開発チュートリアル -Food Tracker- のお供に（Work with View Controllers 編）](http://qiita.com/taji-taji/items/a3a103b949bb7694c8b3)
第４回：[Swiftアプリ開発チュートリアル -Food Tracker- のお供に（Implement a Custom Control 編）](http://qiita.com/taji-taji/items/1ca474a4c2d2b4d779db)
第５回：[Swiftアプリ開発チュートリアル -Food Tracker- のお供に（Define Your Data Model 編）](http://qiita.com/taji-taji/items/2f2c4367752a839e8fb7)

# チュートリアルページ

https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/BuildABasicUI.html#//apple_ref/doc/uid/TP40015214-CH5-SW1

以下のような構成でレッスンが進んでいくので、それに沿って進めていきます。

- Building the UI
 - **Build a Basic UI**（今回はここ）
 - Connect the UI to Code
 - Work with View Controllers
 - Implement a Custom Control
 - Define Your Data Model
- Working with Table Views
 - Create a Table View
 - Implement Navigation
 - Implement Edit and Delete Behavior
 - Persist Data


# Build a Basic UI

今回はこのレッスンで出てきたものについて見ていきます。

https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/BuildABasicUI.html#//apple_ref/doc/uid/TP40015214-CH5-SW1


## ■ AppDelegate.swift

アプリをつくった段階でデフォルトでつくられるファイルのひとつ。
デフォルトで記載されている`AppDelegate`クラスは**アプリ全体のライフタイムイベントを管理**するためのクラス。


## ■ application

アプリの初期化が終わってストーリーボードの読み込みが終わった後に呼び出される。


### チュートリアルでの使用例

```swift:AppDelegate.swift
    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        return true
    }
```

### ドキュメント

- 公式

[application(_:didFinishLaunchingWithOptions:)](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622921-application)

- 参考
http://d.hatena.ne.jp/glass-_-onion/20120405/1333611664



## ■ applicationWillResignActive

アプリケーションがフォアグラウンド状態からバックグラウンド状態に変わる直前に呼ばれる。
ざっくり言うと**アプリが閉じそうな時に呼ばれる**。


### チュートリアルでの使用例

```swift:AppDelegate.swift
    func applicationWillResignActive(_ application: UIApplication) {
        // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
        // Use this method to pause ongoing tasks, disable timers, and invalidate graphics rendering callbacks. Games should use this method to pause the game.
    }
```

### ドキュメント

- 公式

[applicationWillResignActive(_:)](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622950-applicationwillresignactive)

- 参考
http://d.hatena.ne.jp/glass-_-onion/20120405/1333611664
http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3


## ■ applicationDidEnterBackground

アプリケーションがバックグラウンド状態になったら呼ばれる。
ざっくり言うと**アプリが閉じた時に呼ばれる**。


### チュートリアルでの使用例

```swift:AppDelegate.swift
    func applicationDidEnterBackground(_ application: UIApplication) {
        // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later.
        // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits.
    }
```

### ドキュメント

- 公式
[applicationDidEnterBackground(_:)](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622997-applicationdidenterbackground)

- 参考
http://d.hatena.ne.jp/glass-_-onion/20120405/1333611664
http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3


## ■ applicationWillEnterForeground

アプリケーションがバックグラウンド状態から復帰する直前に呼ばれる。
ざっくり言うと**アプリが開きそうな時に呼ばれる**。

### チュートリアルでの使用例

```swift:AppDelegate.swift
    func applicationWillEnterForeground(_ application: UIApplication) {
        // Called as part of the transition from the background to the active state; here you can undo many of the changes made on entering the background.
    }
```

### ドキュメント

- 公式
[applicationWillEnterForeground(_:)](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623076-applicationwillenterforeground)

- 参考
http://d.hatena.ne.jp/glass-_-onion/20120405/1333611664
http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3


## ■ applicationDidBecomeActive

アプリケーションがフォアグラウンド(前面実行)状態になったら呼ばれる。
ざっくり言うと**アプリが開いた時に呼ばれる**。


### チュートリアルでの使用例

```swift:AppDelegate.swift
    func applicationDidBecomeActive(_ application: UIApplication) {
        // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface.
    }
```

### ドキュメント

- 公式
[applicationDidBecomeActive(_:)](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1622956-applicationdidbecomeactive)

- 参考
http://d.hatena.ne.jp/glass-_-onion/20120405/1333611664
http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3


## ■ applicationWillTerminate

ざっくり言うと**フリックしてアプリを終了させる際に、アプリ終了の直前に呼ばれる**。

※アプリが完全に終了する直前であれば、フリック終了には限らない

### チュートリアルでの使用例

```swift:AppDelegate.swift
    func applicationWillTerminate(_ application: UIApplication) {
        // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:.
    }
```

### ドキュメント

- 公式
[applicationWillTerminate(_:)](https://developer.apple.com/documentation/uikit/uiapplicationdelegate/1623111-applicationwillterminate)

- 参考
http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3

---

# 参考サイト
http://qiita.com/SoyaTakahashi/items/cc8f48af792c353cd9f3
http://d.hatena.ne.jp/glass-_-onion/20120405/1333611664


# 次のレッスン

第２回：[Swiftアプリ開発チュートリアル -Food Tracker- のお供に（Connect the UI to Code 編）](http://qiita.com/taji-taji/items/da3b800914fa3313d5a8)

# 最後に
このレッスンではXcodeの使い方やストーリーボードを用いてのUI作成がメインだったので、あまり多くのコードは書いていないですね。
このような形で各レッスン毎に出てきた関数等をざっくり調べていき、チュートリアルを進めながら確認できるように残そうと思います。