【審査通りました！】【Swift UI編】初心者がApp StoreにiOS自作アプリを公開する過程

#審査通りました！(2021/3/20)

[ここからダウンロードページに飛べます](https://apps.apple.com/gb/app/atamaconcrete/id1559159284)

<img width="300" alt="output.gif" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010233/42ae0cbf-bac9-f357-d5d1-0854c740b063.gif">



#なぜ書くのか

初めて作るアプリのリリース過程を残すため。


#SwiftUIがめちゃめちゃ書きやすい

###なぜstoryboardからSwiftUIに切り替えたのか
私はアプリ開発全くの初心者なのですが、先月までSwiftのstoryboardを使ってアプリ開発を行っていました。

[【storyboard編：一旦頓挫】初心者がApp StoreにiOS自作アプリを公開する過程](https://qiita.com/atamakonkurii/items/6d5b1a491ff508680b02)
[【storyboard編：一旦頓挫】初心者が自作iOSアプリ審査に挑戦中](https://qiita.com/atamakonkurii/items/5aeb3a3030bb26077726)

SwiftUIの存在は知っていたのですが、「まだ新しい技術だから、フレームワーク依存のエラーが出がち」とか「情報が少ないからstoryboardでの学習がおすすめ」とか「現場ではstoryboardがまだまだ使われてる」等々、ググって仕入れた情報からstoryboardを選択しアプリ開発をしていました。

しかし、protocol?delegate?optional型？何それ的な感じに陥っていましたし、何よりUIを作るときのAuto rayoutがすごくめんどくさかったです。おそらくこれは、独学の初心者には到底扱えない、学習にめちゃめちゃ時間がかかるんだろうなと実感していました。
それでも、とにかくやってみようと手を動かしてアプリを作ってみましたが、Appleさんにこんなクソアプリリースさせねーよと言われてしまい、一から勉強し直そうと考えました。

プログラミング言語は進化のスピードが速いということで、書籍より動画の方がより最新の状況を反映しているだろうとの予想で「udemy」でひとつ動画を買って学習していましたが、全体をさらっとみるのには時間がかかりすぎ、あまり僕の学習スタイルにはあっていないとわかりました。元々僕は本をペラペラめくりながら勉強する方が好きなので、書籍での勉強に切り替えようと思いました。

書籍を選ぶ中でやはり気になるのはどれだけ新しいか、最新のxcodeのバージョンに対応しているかというところでした。その基準で本を選んでいるとやはりSwiftUIの書籍が新しく、最新のxcodeのバーションにも対応しているようでしたので、SwiftUIに切り替えました。

買った本たち

・[SwiftUI対応 たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 12/iOS 14対応](https://www.amazon.co.jp/SwiftUI%E5%AF%BE%E5%BF%9C-%E3%81%9F%E3%81%A3%E3%81%9F2%E6%97%A5%E3%81%A7%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%A7%E3%81%8D%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%9B%86%E4%B8%AD%E8%AC%9B%E5%BA%A7-Xcode-iOS-14%E5%AF%BE%E5%BF%9C-ebook/dp/B08VJJM3TN/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swiftui&qid=1616125307&sr=8-5)
・[詳細! SwiftUI iPhoneアプリ開発入門ノート[2020] iOS 14+Xcode 12対応](https://www.amazon.co.jp/SwiftUI-iPhone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80%E3%83%8E%E3%83%BC%E3%83%88-iOS-Xcode-12%E5%AF%BE%E5%BF%9C/dp/4800712793/ref=sr_1_4?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swiftui&qid=1616125307&sr=8-4)
・[［増補改訂第3版］Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus](https://www.amazon.co.jp/%EF%BC%BB%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%AC%AC3%E7%89%88%EF%BC%BDSwift%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-%E7%9B%B4%E6%84%9F%E7%9A%84%E3%81%AA%E6%96%87%E6%B3%95%E3%81%A8%E5%AE%89%E5%85%A8%E6%80%A7%E3%82%92%E5%85%BC%E3%81%AD%E5%82%99%E3%81%88%E3%81%9F%E8%A8%80%E8%AA%9E-WEB-PRESS-plus-ebook/dp/B086VVQ3DJ/ref=sr_1_22?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swiftui&qid=1616125307&sr=8-22)

###めちゃくちゃ書きやすい

[SwiftUI対応 たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 12/iOS 14対応](https://www.amazon.co.jp/SwiftUI%E5%AF%BE%E5%BF%9C-%E3%81%9F%E3%81%A3%E3%81%9F2%E6%97%A5%E3%81%A7%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%A7%E3%81%8D%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%9B%86%E4%B8%AD%E8%AC%9B%E5%BA%A7-Xcode-iOS-14%E5%AF%BE%E5%BF%9C-ebook/dp/B08VJJM3TN/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swiftui&qid=1616125307&sr=8-5)をとりあえず一周（15時間くらいでサラッと）したあとにアプリを作り始めました。そうするとstoryboardよりも体感２０倍くらいの速さでUIができて、感動しました。プレービュー機能のおかげでシミュレータを立ち上げる必要なく見た目の変化がわかるのがスピードが上がった要因かと思います。

UIを整えた後に機能を追加していきました。[SwiftUI対応 たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 12/iOS 14対応](https://www.amazon.co.jp/SwiftUI%E5%AF%BE%E5%BF%9C-%E3%81%9F%E3%81%A3%E3%81%9F2%E6%97%A5%E3%81%A7%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%E3%81%A7%E3%81%8D%E3%82%8BiPhone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E9%9B%86%E4%B8%AD%E8%AC%9B%E5%BA%A7-Xcode-iOS-14%E5%AF%BE%E5%BF%9C-ebook/dp/B08VJJM3TN/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swiftui&qid=1616125307&sr=8-5)を振り返りながら、[詳細! SwiftUI iPhoneアプリ開発入門ノート[2020] iOS 14+Xcode 12対応](https://www.amazon.co.jp/SwiftUI-iPhone%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80%E3%83%8E%E3%83%BC%E3%83%88-iOS-Xcode-12%E5%AF%BE%E5%BF%9C/dp/4800712793/ref=sr_1_4?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swiftui&qid=1616125307&sr=8-4)を参考書がわりにしながら（[［増補改訂第3版］Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 WEB+DB PRESS plus](https://www.amazon.co.jp/%EF%BC%BB%E5%A2%97%E8%A3%9C%E6%94%B9%E8%A8%82%E7%AC%AC3%E7%89%88%EF%BC%BDSwift%E5%AE%9F%E8%B7%B5%E5%85%A5%E9%96%80-%E7%9B%B4%E6%84%9F%E7%9A%84%E3%81%AA%E6%96%87%E6%B3%95%E3%81%A8%E5%AE%89%E5%85%A8%E6%80%A7%E3%82%92%E5%85%BC%E3%81%AD%E5%82%99%E3%81%88%E3%81%9F%E8%A8%80%E8%AA%9E-WEB-PRESS-plus-ebook/dp/B086VVQ3DJ/ref=sr_1_22?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swiftui&qid=1616125307&sr=8-22)はこれまでほとんど使っていません）、ググりながらやることで２週間程度で当初予定した機能を含むアプリができました。


#iOSアプリ審査

###審査1回目(2021/3/19)

[storyboardでのアプリ制作](https://qiita.com/atamakonkurii/items/6d5b1a491ff508680b02)のときにすでにアプリの審査提出は経験済みなので、今回も同じ手順で行いました。審査提出から1日以内にレビュワーさんからリジェクトの通知が来ました。今回は２つのリジェクト理由がありました。

####Guideline 2.1 - Information Needed

最初に審査に提出したアプリの学習画面の右上にスターアイコンを設置していました。これは次のアップデートでお気に入り機能を追加しようと考えていたためです。そこにレビュワーさんの指摘をもらい、「どこでお気に入りリストが見れるの？」と聞かれました。
次のアップデートでお気に入り機能は追加予定なので、スターアイコンは一旦消しますと返信しました。

![名称未設定 1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010233/b85fd725-b302-46a0-7945-8e6cfdf47aaf.png)


####Guideline 2.3.3 - Performance - Accurate Metadata

こちらは審査提出時のスクリーンショットについてiPadサイズのスクリーンショットがiPhoneUIになってるよという指摘でした。そもそも僕のアプリはiPadようには作っていなかったので、最初の審査提出ではなんでもいいのかなと思っていました。指摘もらいましたので、xcodeでシミュレータを起動しiPad用のサイズのスクリーンショットを提出しました。

###審査2回目(2021/3/20)

審査通りました！storyboradも含めて4回目でやっと通りました！

![スクリーンショット 2021-03-21 15.01.53.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1010233/9fe142f9-726a-702a-68d8-5e724c294563.png)


#まとめ

最初アプリを提出したときに絶望的なリジェクト理由（Minimum Functionality）を提示され、途方に暮れていました。
しかし、一から勉強し直すきっかけにもなり、Swiftの書き方にも慣れることができたので良い経験になったと思います。

このアプリについて、今のところ思い付いているやりたいことを以下に書いておきます。
・お気に入り機能追加
・プレイリスト機能追加（イメージはiPhoneのミュージックアプリ）
・例文リクエスト機能（ユーザーが追加して欲しい例文を僕に送ることができる機能）