テンプレートからXcodeプロジェクトを作成した時点で、実は既にiPhoneアプリとして動作する状態になっています。そのため、そのまますぐにiOSシミュレーターや実機上で実行できます。
実行する前に、作成されたプログラムを少しだけのぞいてみましょう。アプリ起動後、初めに表示される画面を制御しているのは「ViewController.swift」というファイルの中に書かれているViewControllerクラスです。プロジェクトナビゲーターの中にある「ViewController.swift」をクリックしてください。エディタ領域にプログラムが表示されるはずです。
「.swift」という拡張子が付いているファイルが、Swiftで書かれたプログラムファイルです(Swiftファイル)。一つのSwiftファイルには複数のクラスを書くことができますが、通常、一つのSwiftファイルに一つのクラスを書きます。
ViewControllerクラスに書かれているプログラムを、一行ずつ見ていきましょう。
import UIKit
いきなり、なじみのない文法が出てきましたね。「import」から始まるプログラムは「インポート」と呼ばれる機能です。これは、あらかじめ用意されているフレームワークを、Swiftファイル内で使えるようにするためのプログラムです。
iPhoneアプリの画面をレイアウトしたり、管理したりするためのクラスは「UIKit」フレームワークに含まれています。そのため「ViewController.swift」では、「import」を使ってUIKitフレームワークを利用できるようにしています。
2.にはViewControllerクラスの定義が書かれています。ここでも、またもや見慣れない書き方が登場しています。
class ViewController: UIViewController { }
このクラスでは「継承」という機能を使っています。継承とは、既に存在するクラスの派生として、新しいクラスを定義することです。その名の通り、新しく定義するクラスに既に存在するクラスの機能(プロパティやメソッドなど)を受け継がせることができます。新しく定義したクラスでは、継承元のクラスに定義されたプロパティやメソッドを、自分のものとして使えます。なお、継承元のクラスは「スーパークラス」と呼びます。
クラスの名前の後に続いている「:」以降が継承の定義です。「:」の後にクラス名を書くことで、指定したクラスをスーパークラス(継承元のクラス)とすることができます。
class クラス名: スーパークラスの名前 { }
ViewControllerクラスは、UIViewControllerクラスを継承したクラスです。UIViewControllerクラスはUIKitフレームワークに含まれているクラスです。つまり、UIViewControllerクラスを使うために「import」を書いていたというわけです。
ViewControllerクラスの中に書かれている二つのメソッドは、いずれもスーパークラスであるUIViewControllerクラスから受け継いだメソッドです。これらのメソッドの初めでも、またもや見慣れない書き方をしています。
override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. }
メソッドを受け継ぐ場合、スーパークラスで決められていた動きを上書きすることができます。この機能のことを「オーバーライド(Override)」と言います。呼び出し方は同じにしておいて、呼び出されたときに実行する動きをスーパークラスのものからアレンジできます。
メソッドをスーパークラスからオーバーライドしたい場合は、メソッドの宣言である「func」の手前に「override」と書きます。メソッド名は、スーパークラスに定義されているメソッド名と同じ名前にします。
override func 継承元で定義されているメソッド名() { }
viewDidLoadメソッドは、アプリの画面上に表示されたときに自動的に呼び出されるメソッドです。このメソッドをオーバーライド(つまり、上書き)することで、画面上に表示されたときに好きな動きができます。
また、メソッド内に記述している「super.viewDidLoad()」は、スーパークラスの同名のメソッドを呼び出しているプログラムです。「super.メソッド名」の形式で、スーパークラスで定義されているメソッドを呼び出せます。よって、このメソッドではスーパークラスのviewDidLoadメソッドの処理に新しい処理を加えることができる状態になっています。
didReceiveMemoryWarningメソッドは、アプリがメモリ不足(アプリで扱っているデータの量が多過ぎて容量が足りなくなる状態)になったときに自動的に呼び出されるメソッドです。
override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. }
プログラムの内容は、viewDidLoadメソッドとほぼ同じです。メソッド内でスーパークラスのdidReceiveMemoryWarningメソッドを呼び出しているので、スーパークラスのdidReceiveMemoryWarningメソッドの処理に何かしらの処理を加えることができる状態になっています。
ViewControllerクラスの内容が理解できたところで、プログラムを追加してみましょう。viewDidLoadメソッドに、次のようなプログラムを書いてみてください。
override func viewDidLoad() { super.viewDidLoad() print("アプリが起動したよ!") }
「super.viewDidLoad()」の次の行に書かれていたコメント行を消し、新たに「print」関数を呼び出しています。Playgroundで「print」関数を呼び出していたときは結果が即座に表示されていましたが、アプリ作成ではそのようなことはありません。アプリをiOSシミュレーターまたは実機上で実行し、画面が表示されるようになったときに呼び出されるようになります。
Copyright © ITmedia, Inc. All Rights Reserved.