Swift未経験でIOSアプリをリリースするまでにしたこと

# はじめに
この記事は、タイトル通りSwiftを知らない状態からIOSアプリをリリースするまでの過程を記載しています。
これから学ぶ人に少しでも役に立てたら幸いです。
文章力がないので、分かりにくかったらご指摘いただけると嬉しいです。

**著者の前提**
 webエンジニア(Java)として2年半勤務。

# IOSアプリの全体像を学ぶ
プログラミング言語「Swift」を全く知らない状態だったので以下の教材で学びました。Javaと書き方が違うだけで概念は似ていたため、SwiftではJavaと違って、こう実装するのかと置き換えで学びました。

**個人的に超おすすめ**
Udemyの講座: [iOS 13 & Swift 5 - The Complete iOS App Development Bootcamp](https://www.udemy.com/course/ios-13-app-development-bootcamp)
上記の講座さえ学べばIOSアプリは何ができるのか、どのように実装するのかといった全体像を把握できます。
また、GitやXcodeの使い方、デザイン、マーケティングといったことも学べるのでおすすめです。
講座は英語ですが、字幕をgoogle翻訳してなんとかなりました。
~~定価は高いですが、セール(月1くらい)の時は千円台になるので安い時に買うのがおすすめです。~~

**その他に使ったもの**
書籍: [たった2日でマスターするiPhoneアプリ開発集中講座 Xcode 11 Swift 5対応 単行本](https://www.amazon.co.jp/%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-11-Swift-5%E5%AF%BE%E5%BF%9C-%E8%97%A4%E6%B2%BB%E4%BB%81-ebook/dp/B081FG9J2V/ref=sr_1_7?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=10BPGDGGNVOG&dchild=1&keywords=ios+swift&qid=1599035931&sprefix=IOS+sw%2Caps%2C243&sr=8-7)

アプリを作ろうと思って、一番最初に取り組んだ書籍です。サンプルアプリを写経して、アプリ作成を体験できます。
~~正直、当時の私の理解力が低いだけかもしれませんが、あまり個人アプリを作成するのには役に立たなかったです。~~

Udemyの講座: [【iOS13対応】未経験者がiPhoneアプリ開発者になるための全て iOS Boot Camp](https://www.udemy.com/course/ios13_swift5_iphone_ios_boot_camp/)
日本語のIOS講座です。英語がやだなと感じる人はこっちの方が良いかもです。
~~正直、こちらの講座をとるのならおすすめした奴の方が断然にいいです。（あくまで、おすすめのやつに比べてですので、この講座が良くないというわけでは全くありません。）~~

# アプリの企画を考える
ここが一番苦労しました。基本的には自分があったら便利だなという思考で、唯一無二のアイディアだと思っても、既にアプリとして大体が存在していました(自分が考えているより数倍いいものがあって落ち込みました)。
そこで、考え方を変えて、既存にあったとしてもそのアプリにはない機能やこっちの方が使いやすいだろうと感じられるものを作ろうとシフトチェンジしました。
そして、既存アプリと差別化できる機能の核をここで決めました。

# 画面デザインを考える
手書きで大体のデザインを作成した。以下のツールを使用して作成することもできます。
~~途中でめんどくさくなって、ツールを使わなかったです(笑)~~

**ツール**
モックアプリツール: [moqups](https://app.moqups.com/)
本当は上記を使って完成図を作成するべきだったと思います。

ペーパープロトタイピング用アプリ: [POP - Prototyping on Paper](https://apps.apple.com/jp/app/pop-prototyping-on-paper/id555647796?ign-mpt=uo%3D4)
手書きの画像でプロトタイプのアプリを作成することが可能なツール

# 実装
　画面デザインで決めたことをひたすら実装しました。わからないものは以下の書籍を見たり、ひたすら検索して、自分の環境で実験を行い実装していきました。
[詳解 Swift 第5版](https://www.amazon.co.jp/%E8%A9%B3%E8%A7%A3-Swift-%E7%AC%AC5%E7%89%88-%E8%8D%BB%E5%8E%9F-%E5%89%9B%E5%BF%97-ebook/dp/B081GK7636/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=swift&qid=1599049005&s=books&sr=1-3)
[iOSアプリ開発デザインパターン入門](https://www.amazon.co.jp/iOS%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%83%91%E3%82%BF%E3%83%BC%E3%83%B3%E5%85%A5%E9%96%80-%E6%8A%80%E8%A1%93%E6%9B%B8%E5%85%B8%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%EF%BC%88NextPublishing%EF%BC%89-%E5%8D%83%E8%91%89-%E5%A4%A7%E5%BF%97-ebook/dp/B07DKT9YZX/ref=sr_1_7?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=IOS&qid=1599049154&s=books&sr=1-7)
[iOSアプリ設計パターン入門](https://peaks.cc/books/iOS_architecture)

**画像生成ツール**
[canva](https://www.canva.com/)
無料のテンプレートを利用してオリジナルの画像を作成できます。
# テスト
　テストは以下の書籍を参考にして行いました。JavaのJunitやSeleniumに近い仕組みだったのであまり苦労せずに単体テストを実施できました。
[iOSアプリ開発自動テストの教科書 〜XCTestによる単体テスト・UIテストから，CI/CD，デバッグ技術まで](https://www.amazon.co.jp/iOS%E3%82%A2%E3%83%97%E3%83%AA%E9%96%8B%E7%99%BA%E8%87%AA%E5%8B%95%E3%83%86%E3%82%B9%E3%83%88%E3%81%AE%E6%95%99%E7%A7%91%E6%9B%B8-%E3%80%9CXCTest%E3%81%AB%E3%82%88%E3%82%8B%E5%8D%98%E4%BD%93%E3%83%86%E3%82%B9%E3%83%88%E3%83%BBUI%E3%83%86%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%EF%BC%8CCI-CD%EF%BC%8C%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E6%8A%80%E8%A1%93%E3%81%BE%E3%81%A7-%E5%B9%B3%E7%94%B0-%E6%95%8F%E4%B9%8B-ebook/dp/B07TF46F7T/ref=sr_1_3?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=IOS&qid=1599049154&s=books&sr=1-3)

# デベロッパー登録
Apple公式サイトで手順を確認し登録しました。個人だったので結構簡単でした。
申請して承認されるまで3日程度かかりました。(入力情報間違えてしまった影響もあります)
[公式サイト](https://developer.apple.com/jp/support/enrollment/)

# IOSアプリを申請
以下のサイトを参考にして、申請を行いました。
[参考サイト(申請)](https://qiita.com/kaneko77/items/ce918317e94c9f36441f)

**スクリーンショット作成ツール**
[参考サイト(スクリーンショット)](https://yaba-blog.com/app-store-screenshot/)
申請する際にスクリーンショットが必要なため、スクリーンショットを無料で自作する方法が紹介されています。

# 審査及びリリース
　2日程度で審査が終わるそうです。また、リリース日関しては、申請時に選択できます。
審査が一発OKだったため、リジェクトに関しては良くわからないため、今後追記していきます。

# 完成したもの
宣伝ではありますが、App StoreのURLを載せます。アプリの機能としてはポモドーロ・テクニックを利用したタイマーアプリです。（生産性向上のためのテクニックアプリ）
アプリのご意見・ご感想をいただけたら嬉しいです。
[ポモドーロタイマーアプリ](https://apps.apple.com/jp/app/id1529853211)

# まとめ
実装してる時にどんどんやりたいことが出来てきて進捗があまり良くなかったです。アプリの核となる部分は決めていたので、そこはブレなかったが、もう少し設計をしっかりやればよかったなと反省です。
リリースできなかった機能を実装できるようにどんどんアップデートしていこうと思います。