インフラエンジニアがiOSのサンプルアプリを作ってみた

# はじめに
こんにちは。
今年の7月にTRAILBLAZERにインフラエンジニアとしてジョインした@rimshotです。
インフラエンジニアとしてAWSなどのパブリッククラウドを使った案件に参画しています。

# なぜiOSアプリを作ることになったか
業務上でiOSアプリのCI/CD環境を考える中で、実際にテストをするときに自由に使えるiOSアプリがあればと思いました。今後、サンプルアプリがあればいろいろテストにも使えるかなと思ってます。

# そもそもどうやって作るの？
アプリケーションの開発はずっと昔にJavaで少し携わったくらいです。
iOSアプリを作成するにはMac上でXcodeを使って作ることと、SwiftやSwiftUIを言語として利用するということを改めて理解しました。

## 作ってからわかったこと
そして、後でわかりましたが、実際のiPhoneで動かすにはアプリの審査やApple Developer Programに加入しないといけないこともわかりました。メンバーシップには年間99米ドルも必要ということでこの時点では準備ができなかったのでXcodeでアプリを作ってみるところまでやってみました。

# 作っていきます！
## Xcodeのインストール
Xcodeは[AppStoreからインストール](https://apps.apple.com/us/app/xcode/id497799835?mt=12)する方法がありますが、最新版のXcodeしか使えないようでした。そのため、少し前のXcodeを使うためにAppleの開発者サイトからファイルをダウンロードしてインストールする方法を採用しました。[Apple Developer Webサイト](https://developer.apple.com/download/all/)からダウンロードできます。
※Apple Developer WebのサイトにログインするにはAppleアカウント登録が必要です。

インストールは簡単にできるので、ここではXcodeのインストールは割愛します。

## Xcodeの起動
インストールしてXcodeを起動します。メニューにある「Create New Project...」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/e5c2b210-b0b1-ddcc-2420-a00e14890783.png)

「Choose a template for your new project:」の画面が表示されます。タブの表示に「iOS」があるので選択してから、「App」を選んで画面下の「Next」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/c367be55-bc10-898f-54e8-0f461c45a389.png)

「Choose options for your new project:」の画面が表示されます。
本来はちゃんと入れないといけないですが、まずは動くアプリを作りたいので必要な項目を入れていきます。
「Project Name」は「demo-app」。「Team」でNoneが入っていましたが、Appleアカウントを紐づけていたのでリストから表示された(Personal Team)を選択しました。
「Organization Identifire」は本来世界で一意の設定、推奨としてドメインを逆にしたものを入力するようです。ここでは「com.example」と入れます。
それ以外の項目はデフォルトのままにしました。「Next」で次に進みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/498e6646-1322-b84e-dc0b-2c09c918c323.png)

プロジェクトを作成するフォルダを設定します。新たに「demo-app」というフォルダを作成して選択しました。この時に「Create Git repository on my Mac」は外しておきます。設定が終わったら「Create」をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/cd30cc3c-ac2e-0406-5085-c9603e3f68fd.png)

前の画面で「Create Git repository on my Mac」のチェックを入れていた場合、Git リポジトリの作成が失敗したメッセージが表示されます。Git設定は後でもできるので「Cancel」します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/de7f0c19-02c4-ef21-7b9d-35e0126af80e.png)

ここまで進めるとコードとシミュレータが起動します。テキスト表示をするだけであればこれだけで十分そうです。これだけだと面白くないので。せっかくiPhoneで操作するので、ボタンを押せるところまでやってみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/70d5aa05-3779-e554-bec8-15dc90d20308.png)

ボタンを押すと弊社のバリューである「西からいこか」を表示するようにします。
コードを修正します。
demo-app/ContentView.swiftのファイルを修正します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/e4d9f3db-560a-68c3-a9bf-db540f668980.png)

こちらが修正したContentView.swiftのコードです。
```
import SwiftUI

struct ContentView: View {
    @State var showText = false
    
    var body: some View {
        VStack {
            Button(action: {
                showText.toggle()
            }) {
                Text("押してね")
                    .font(.headline)
                    .foregroundColor(.white)
                    .padding()
                    .background(Color.blue)
                    .cornerRadius(20)
            }
            if showText {
                Text("西からいこか")
                    .font(.largeTitle)
                    .foregroundColor(.blue)
            }
        }
    }
}

struct ContentView_Previews: PreviewProvider{
    static var previews: some View {
        ContentView()
    }
}

```

ファイルを更新すると自動的にシミュレータも読み込まれるようです。さて、どうなるか。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/ee23e76d-6e17-ae16-329d-3d2c11a34179.png)

ボタンが出ました。押してみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/e1ca2444-dda8-ae49-6d63-b9e8075559e0.png)

出ました！「西からいこか」。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3956589/f7a7e751-d9c2-771b-bfa2-76bc3555107a.png)
ボタンを押すだけの簡単なアプリでしたが、初めてiPhoneアプリを作ってみたので嬉しいですね。サンプルアプリとしてもタッチ操作まで確認できるので、まずは使えそうかなと思います。

## さて、アプリ化してみようか
ここから作成してアプリをアーカイブしようとしましたが、アーカイブするには「Provisioning Profile」という署名ファイルが必要ということがわかりました。先にも記載しましたがApple Developer Programへの加入が必要であるために実際にiPhoneで動かすことはこの時点で断念しました。

## まとめ
実際にiPhoneでアプリを動かすにはApple Developer Programへの加入が必要になりますが、Xcodeを使うことでシミュレータベースで動作が確認できるiOSアプリを簡単に作ることができました。せっかく触ってみたので、もう少し凝ったアプリを作る機会があればもっと触ってみたいと思います。