背景

  • 初めてプログラミングされる方がiOSアプリに挑戦する場合につまづきがちなポイントの知見が溜まってきたので記事にします
  • 開発が楽しくなってくるまでに少しでもつまづく人が減れば幸いです

対象

  • プログラミングを学ぶこと自体初めての方
  • iOSアプリを作りながらプログラミングを学びたい方

最初に覚えておきたいこと

iOSをアプリを開発する上で覚えておきたいことは以下の二つです。

  • オブジェクト指向
  • イベント駆動

オブジェクト指向とは

オブジェクト指向とはプログラミングにおける考え方です。それはプログラムを処理手順のまとまりとしてみるのではなく

  • 実際にモノ(オブジェクト)の概念を定義する
  • 概念からモノを生成する
  • 生成されたモノ同士でやり取りをする

といった形でコーディングすることで、よりわかりやすくプログラミングをしようという考え方です。
(正確には他にもたくさんのメリットがありますが、正直考え方なのでざっくり雰囲気で理解すればオッケーです)

ただ用語を知ることは調べる上で不可欠なので、用語だけは覚えましょう。

ちょっと例を考えてみます。例えば神という概念を作り出してみましょう。
概念として定義する時、その概念をクラス(class)と呼びます。今回は神を概念として定義するので、
class God とプログラムします。

class God 

さて、神には名前が必要です。神という概念(class)に、名前の概念を追加しましょう。
この概念が持つ情報のことをプロパティと呼びます。以下のようにclass Godの後に{}を書き、
その中に記述することで定義できます。
var name : String で name という文字列(String)のプロパティを作ります。という意味になります。

class God {
    var name : String
}

ただこの名前、このままではつけてもつけなくても良いことになってしまいます。
実際に神が降臨する際には、必ず名前がつけられるようにルールを設定しましょう。

class God {
    var name : String
    init(name : String) {
        self.name = name
    }
}

init はイニシャライザと呼ばれて、この神が実際に作られる際に必ず呼ばなければなりません。
init (name : String) と記載することで、nameを設定しないと神が生成できなくなりました。
self.というのは「この神自身の」という意味になります。「self.name」で「この神自身の名前」を示すことができます。

この時点で概念の作成には成功したものの、実体はまだこの世に存在しておらずこの世に対して何も影響を与えられない存在です。
それでは一旦、地球に神を降臨させてみます。


class earthViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        var zeus = God(name: "Zeus")
    }
}

概念に対して、上記神のようにGod()とすると、実体を作成することができます。この実体をインスタンスと呼びます。
今、地球画面のロードが終わった後、神というクラスからゼウスというインスタンスを生成いたしました。
つまり今、ゼウスが地球画面に降臨したわけです。

ここでゼウス様、実は人間を作り出すことができました。まずは神と同様に人間の概念を作る必要がありますね。

class Human {
    var name : String
    var age : String
    init(name : String, age : String) {
        self.name = name
        self.age = age
    }
}

その次は神に人間を生み出す機能をつけましょう。何か処理する機能のことをメソッドと呼びます。

class God {
    var name : String
    init(name : String) {
        self.name = name
    }

    func birthHuman(name : String, age : String) -> Human {
        return Human(name: name, age: age)
    }
}

func "機能名"()とすることでメソッドを定義できます。
もし、メソッドを実行する際に値を決定したい場合は、()のなかにどんな値が必要かを記載することで実装できます。

-> Human

の部分は「この処理の結果、何が返ってくるか」を示すものです。今回の場合「Humanのインスタンスが返ってくるよ」、ということを示しています。

では早速地球上で人間を生成しましょう。

class earthViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        var zeus = God(name: "Zeus")
        var adam = zeus.birthHuman(name: "アダム", age: "15")
    }
}

これでゼウスがアダムを生み出すことができました。

このように概念を作り、概念から実体を生成して、メソッドを実行していくプログラミングの考え方がオブジェクト指向になります。iOSアプリを開発する際にはこのような方法でプログラミングしていくので、まずはこの考え方を覚えていきましょう!

オブジェクト指向のまとめ

クラス:プログラム上の概念。
インスタンス:クラスを実体化させたもの。
プロパティ:インスタンスが持つ情報。属性ともいう。
メソッド:インスタンスが実行できる処理。
イニシャライザ:インスタンス生成時に呼び出される処理。

次回はイベント駆動について記載します。

注意:本記事は本当に初めての人向けの記事です。オブジェクト指向に関して厳密には異なる内容(例:実体はまだこの世に存在しておらずこの世に対して何も影響を与えられない存在 など)が記載されていますが、理解が複雑になるためあえて省いています。ご了承ください。