知識0からのiPhoneアプリ開発（入門編）

#はじめに
娘が2歳半になり、私のiPhoneで遊ぶ事が多くなりました。[「タッチ！あそベビー」](https://waochi.wao.ne.jp/)や[「パンケーキタワー」](https://apps.apple.com/jp/app/%E3%83%91%E3%83%B3%E3%82%B1%E3%83%BC%E3%82%AD%E3%82%BF%E3%83%AF%E3%83%BC-%E5%AD%90%E4%BE%9B%E5%90%91%E3%81%91%E7%84%A1%E6%96%99%E3%82%B2%E3%83%BC%E3%83%A0/id541471195)など、子供向けのアプリが充実していて驚きました。

数年前からiPhoneを使っていますが、iPhoneアプリを作った事がなかったので、どうやれば作れるのか知りたくなり実際にやってみようと思いました。エンジニアなので仕事でプログラミングはやりますが、XcodeやSwiftは全く馴染みがありません。

知ってる人からしたら「何を今更、当たり前じゃん」と思われる内容かもしれませんが・・・温かい目で見てやってください。


#作ったもの
お勉強がてらこんなものを作りました。ボタンが押されたらテキストフィールドに文字列を表示するというシンプルなものです。
![画面収録-2019-09-24-23.31.28.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/77ce23ae-98c6-ea69-caf3-b54d4fa85d16.gif)


#作り方
##0. 環境準備
iPhoneアプリ開発は、[Xcode](https://developer.apple.com/jp/xcode/)というIDEを使って行います。XcodeはMacのAppStoreからダウンロードする事が出来るので簡単ですが、結構容量があるため時間がかかります。
私が今使っているMacは結構前に購入したもので高スペックではないため、Xcodeを動かしてると容量やスペックがかなりかつかつになりやばいです。

 - OS : macOS Mojave(10.14.6)
 - プロセッサ : 1.8 GHz Intel Core i5
 - メモリ : 4 GB 1600 MHz DDR3
 - ディスク : 128GB (外部ストレージ : 1TB)

ちなみに、最新のMacBookAirが欲しいなあと思い、[Appleのサイト](https://www.apple.com/jp/shop/buy-mac/macbook-air)で今のMacを下取り査定したところ8,000円でした・・・（安っ


##1. Xcodeを起動（プロジェクト作成）
まずは、プロジェクトを作成します。Xcodeを起動すると以下のような画面が表示されるので、2つ目の「Create a new Xcode project」を選択してください。

![スクリーンショット 2019-09-23 23.57.33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/08c9dba9-c6e9-4896-2b0f-96c2a330950a.png)

続いてプロジェクトのテンプレートを選択します。今回は「Single View App」を選択します。
![スクリーンショット 2019-09-24 0.03.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/f3003f73-8865-597a-16d8-002de3142b37.png)

続いてプロジェクトの情報を入力します。今回は初めてということもあり、パッと調べた感じ情報量が多そうという理由で、言語は「Swift」、User Interfaceを「Storyboard」を選択しています。

 - Product Name : （任意の値）
 - Team : None
 - Organization Name : （任意の値）
 - Organization Identifier : （任意の値）
 - Language : Swift
 - User Interface : Storyboard

![スクリーンショット 2019-09-24 0.09.07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/50963419-8927-0bc3-242f-384cb2218091.png)

作成するディレクトリを選択し「Create」ボタンを押すとXcodeが起動します。
![スクリーンショット 2019-09-24 0.16.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/38f6289f-8230-d1d1-6c18-db6033d47576.png)


##2. 画面を作る
画面を作っていきますが、部品を選択しドラッグ&ドロップしながら簡単に作れます。
左側のソース一覧から「Main.storyboard」を選択すると、右側にiPhoneっぽいシルエットの画面が出てきます。ここで「Command + Shift + L」のコマンド入力をすると、部品の選択画面が出てきます。

![スクリーンショット 2019-09-24 0.18.55.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/662e8b86-89cd-8180-6cc5-1072f37d9d69.png)

今回はシンプルにボタンとテキストフィールドだけを使いたいと思います。対象の部品を選択し、ドラッグしながらストーリーボードのUI画面上に移動させてドロップすると部品が配置されます。配置した後は、対象の要素を選択すると右側に属性が出てくるので、適当にフォントサイズなどを変更します。

![スクリーンショット 2019-09-24 0.26.34.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/59bab351-7cbf-5813-6769-96df02152b6a.png)


##3. ソースを書く
ボタンが押された時のアクションを記述していきます。冒頭のプロジェクト作成で選択した通り「Swift」という言語で書きます。先ほどのストーリーボードのUI画面からソースに部品を引っ張ってこれる機能があるのでそれを使います。

そのための準備として画面を２分割し、片方にストーリーボードのUI画面を、もう片方にはソース画面が表示されるようにします。もっとスマートなやり方があると思いますが、、以下のように泥臭くやりました。

 1. iPhoneっぽいシルエットの右上にプラスボタンが書かれたアイコンがあるのでこれをクリックする
 1. 左側のソース一覧から「Main.storyboard」を右クリックし、「Open As > Source Code」を選択する
 2. 両方ともソースコードが表示された状態になるので、左側の画面を選択する
 3. 左側のソース一覧から「Main.storyboard」を右クリックし、「Open As > interface Builder - Storyboard」を選択する

![スクリーンショット 2019-09-24 0.38.27.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/4768f033-d029-b421-240d-a558079cf23f.png)

続いて、ストーリーボードのUI画面からソースに部品を引っ張ってきます。
ストーリーボードのUI画面上でテキストフィールドを選択し、controlボタンを押しながらソースコード上にドラッグ＆ドロップします。以下のような小さな画面が表示されるので、Connectionに「Outlet」を選択し、Nameに任意の値を入力してConnectボタンを押してください。

![スクリーンショット 2019-09-24 0.47.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/c0addc77-62c1-8a57-9231-01debcb062ae.png)

すると、ソースコードに以下が追加されると思います。

```
    @IBOutlet weak var MyTextField: UITextField!
```


ボタンも同じように選択し、controlボタンを押しながらソースコード上にドラッグ＆ドロップします。小さな画面で表示されるので、Connectionに「Action」を選択し、Nameに任意の値を入力してConnectボタンを押してください。

![スクリーンショット 2019-09-24 0.51.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/9af38f6b-0052-fd97-f40a-0755d686f965.png)

すると、ソースコードに以下が追加されると思います。

```
    @IBAction func onTapEvent(_ sender: Any) {
    }
```

これではボタンが押された時に何も処理をしないので、中身を書きます。
今回はボタンが押されたらテキストフィールドの文字を表示します。

```
    @IBAction func onTapEvent(_ sender: Any) {
        MyTextField.text = "嫁がBLハマってる (*ﾟ∀ﾟ)=3ﾊｧﾊｧ"
    }
```

これで画面とソースが出来ました。


##4. ビルドする
画面とソースが出来たら、ビルドという操作を行います。具体的には「Command + B」をコマンド入力します。「Build Succeeded」というメッセージが表示されればOKです。


##5. アプリを実行する
アプリの実行にはシミュレータを使います。シミュレータを使うとMac上で擬似的なiPhoneの仮想環境が作られ、そこで作ったアプリの動作確認が出来ます。画面左上にある「再生ボタン」を押すと、シミュレータが起動します。こんな感じです。

![スクリーンショット 2019-09-24 1.01.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/3546e35b-25a2-5c4e-62d5-b60c25335cd6.png)

ボタンを押してみます。

![スクリーンショット 2019-09-24 1.01.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/206972/0daca84f-1518-ab8a-2b6e-8fdb44480eb4.png)

おぉ〜！無事メッセージが表示されましたね。

#今後
今回はものすごく基本的なアプリの作り方を試しただけなので、実際にリリースするまでの流れや、複雑な画面遷移、カメラなどを用いたより高度なアプリの作り方なども勉強してみたいです。

あわよくばiPhoneアプリで一発当てたいっ！


#参考サイト
内容的にはがっつりこちらを参考にさせて頂いております。

- [XcodeとSwiftを使ってアプリ開発を体験してみよう](https://www.webprofessional.jp/lesson/swift4designers/lesson01/)