TOEIC285学生のためのSwift Lv2

この記事は、**[TOEIC285学生のためのSwift Lv1](https://qiita.com/KonoLv1/items/ab766ab699cfbcee168b "TOEIC285学生のためのSwift Lv1")** の続きです。
**注意：自身の勉強のためにまとめた記事です。間違いがある可能性があるので目安程度にご覧ください。間違えがあればご指摘いただければ幸いです。**
#分からない部分を徹底的に無くす

おはようございます、こんにちは、こんばんは、今回は前回の記事の続きとなります。

```swift:ViewController.swift
//　←この行はコメントだということを表している
//  ViewController.swift　←Swiftのファイル名が自動挿入されている
//  tesutodayo　←プロジェクト名が自動挿入されている
//
//  Created by このしゅうかつせいれべる１ on 2019/02/20. ←製作者と制作日が自動挿入されている
//  Copyright © 2019 このしゅうかつせいれべる１. All rights reserved.　←著作権表記
//

import UIKit　←iOSのUIキットを読み込んでいる
```
前回は上記の内容を学習しました....覚えてない？人間は忘れることが出来る生き物だから仕方ない
むしろ忘れたと誇っても良い、そんなときは前回の記事をもう一度見直せばいいだけの話。
覚えてる人、覚えなおした人は**break（次へ）**、それ以外の人は**continue（前に戻る）**で。


```swift:ViewController.swift
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }


}
```
本日学習するプログラムは上記の通り、英語だらけでなるほど、全然分からない。
いや、上記が分からない人向けにこの記事を書いてあるのだから、上記が分からない人こそ
この記事を読んでいただく価値があるというもの。**（読むか読まないかは貴方の判断ですが）**

さて、まずは

```swift
class ViewController: UIViewController {
```
しらすすヴぃえこんてぃろれえあ....うい...じゃなくてユーアイヴぃぇこんてぃろれえあ....
違う違う。クラス、ビューコントローラー：ユーアイビューコントローラーと読みます。
**class クラスの名前：親クラスの名前**
大体の人がひっかかるのでここは慎重にやっていきましょう。

<h2>クラスとはなんぞや。</h2>

いろいろな例えはありますが、ひとまずDVDやブルーレイディスクみたいなものだと思ってください。

```swift
class ViewController: UIViewController {
class　コピーデータ：オリジナルデータ{
```
UIViewControllerというオリジナルがあって、それをコピーしてViewControllerというものを作ると考えてください。
正確にはコピーではなく継承と言います。
大本の骨組みであるオリジナルを継承という引き継ぎを行い、コピーデータで細かい部分を操作する感じですね。

UIViewControllerは、前回の記事で学んだUIKitというコンポーネントに含まれており、
UIKitをインポートしているのでそこから拾ってきます。

例えるなら、ノノタミナというアニメ制作会社が、エンジニア戦争というアニメを作っているとして
ノノタミナ が UIKit
エンジニア戦争 が UIViewController
それをコピーしたDVDが、ViewControllerということになります。
当然、ノノタミナ社はいくつかアニメを作っているので　UIKitの中には　UIViewController以外も存在します。

まあ、そんなわけでコピーデータであるViewControllerは、UIViewControllerを引き継いでいます。

```swift
class ViewController: UIViewController {
```

そして大事なのが最後についてある **{** このカッコ
これは、class ViewControllerがここから始まるということを表しています。
**始まるということはいつかは終わりを迎えるということ。**
終わりの **{** を探してみましょう。

```swift:ViewController.swift
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }


}
```

二つありますね。対になるカッコはこうなります。
![class.png](https://qiita-image-store.s3.amazonaws.com/0/364635/c98c1809-259a-1456-25ac-2d3aa86c27cd.png)
このカッコの始まりからカッコの終わりまでがその要素の適用範囲となります。
class ViewControllerの中に、**override func viewDidLoad()**と**super.viewDidLoad()**が入っている状態になっています。
おヴぇりいでふんくヴぃえでぃどろあど、すぺあヴぃえぅでぃろあど....
オーバーライド、ファンク（ション）ビューディドゥロード、スーパービューディドゥロード...
<h2>オーバーライドとはなんぞや。</h2>

```swift
override func viewDidLoad() {
```

オーバーライドとは、コピーしたUIViewControllerに対してデータを上書きできます。
上記画像の黄色のエリアに登場人物の名前を書き替えるプログラムを組み込めば
アニメ「エンジニア戦争」の主人公の名前を「すいふくといく」から「すいふとあつし」に出来ます。
オーバーライドとは、オリジナルからコピーしたプログラムに何らかの上書きを加えると思ってください。
<h2>スーパーとはなんぞや。</h2>

```swift
super.viewDidLoad()
```

まず、ここで記述するスーパーはリンゴとか刺身とか売ってるスーパーではない。
スーパーとは、オリジナルデータを呼び出すもので、
**viewDidLoad**というのは**ViewController**が初めて表示されたときのみ呼び出すというものです。
アプリを起動したときに１回だけ読み込まれるものになります。
これに対して、何回も読み込みを行いたいときは

```swift
super.viewWillAppear()
```
を使うと良いです。

<h2>で、結局このプログラムは何をしてるの？</h2>

```swift
//
//  ViewController.swift
//  tesutodayo
//
//  Created by このしゅうかつせいれべる１ on 2019/02/20.
//  Copyright © 2019 このしゅうかつせいれべる１. All rights reserved.
//

import UIKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }


}
```
アプリを起動して最初に読み込む画面を表示するプログラムです。

ＡＲやＧＰＳを用いたアプリ開発ができるように精進していきたいと思います。
ここまでお読みいただきありがとうございました。