【Swift】完全初心者が２ヶ月半でアプリをリリースした開発の流れ


# 対象者
・Swift初心者の方
・iOSアプリ開発に挑戦したいと思っている方


# はじめに
サービス業の仕事をしているプログラミング完全初心者の私が**２ヶ月半**でAppStoreにリリースすることができました。
これからiOSアプリを開発に挑戦したいという人の参考になればと思いリリースまでの流れ、大変だった点をまとめました。



# アプリ紹介

私が開発したのは筋トレ記録アプリ「**Workout Manager**」です。

日々のトレーニング記録をカレンダーにメモをするアプリです。
自分の努力の見返すことで「今月は頑張ったな」「先月サボったから頑張ろう」と思う。
継続してトレーニングに取り組めると思い制作しました。



<img width="414" alt="1057 PM.jpegpng.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588319/a6dbf813-00bf-1896-0c9c-839e901795ea.jpeg">

<img width="414" alt="DWYZ-KENDaaa-EYTHEA.jpeg" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588319/fd9d9ee3-29b9-84ea-4dd8-dc088b199d29.jpeg">


https://apps.apple.com/jp/app/workout-manager/id1504443937?mt=8

よかったら使ってみてください。

# 開発において意識したこと

### 期限を決めてやる
期限を決めてやることで**モチベーションアップ**につながりました。
やらないといけない状況に立つと自分を奮い立たせることができると思いました。


### 聞く環境を整える
私は独学での開発だったので周りに聞くひとがいませんでした。
メンターを雇い、ググってもわからない時にアドバイスをいただきました。
エラーに悩む時間は非常に重要ですが、同じぐらい環境構築も大事だと思います。
**効率と自走力、検索力をあげたい**という狙いがありました。

MENTAというサービスがオススメです。
https://menta.work/member/dash

### シンプルで使いやすいアプリにする
他の筋トレ記録アプリを使用していて、複雑で使いにくいなと思うことがあったので**シンプルな機能**、**デザイン**を意識しました。
本当はもっとスティーブジョブスが求める「シンプルで洗練されたデザイン」にしたかったです。
ジョブズには「初心者なりに精一杯の努力はしました。これからどんどん改善していく」と言い訳をしたいです。笑


# 開発期間

- 基礎学習　１ヶ月　
まずは動画、書籍で基礎学習

- 制作期間　１ヶ月

- AppStore申請　２週間弱

「**１ヶ月で基礎学習**、**１ヶ月でリリースする**」という目標を掲げていたのですが、申請などに手間取りました。
（ある程度時間がかかると想定しておくといいと思います）


# 企画
企画は「**XMind**」を使用しました。
「目標」「制作過程」「機能」などをザックリとまとめました。
こちらのサイトの開発までの手順を参考にさせていただきました。
[Webデザイナーだけど初めてのiPhoneアプリを7日間で開発した手順と制作ツール]
(http://websae.net/iphone-app-develop-20131105/)


![筋トレ記録アプリ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/588319/4d7ff57c-8266-8909-fad4-cd3735da1708.jpeg)



# デザイン
デザインは「**Sketch**」を使用しました。非デザイナーの自分でも簡単にできるおすすめのツールです。
自分でイメージしたデザインを見える化してみることでアプリ制作がスムーズにできました。

「AdobeXD」「Photoshop」などもいいと思います。


# Xcodeで実装
エラーが何度も発生して本当にたいへんでした。
それでも困難を乗り越えてリリースできた時は本当に嬉しかったです。


### 使用ライブラリ
・FSCalendar
・CalculateCalendarLogic
・Realm

**Realm**か**Firebase**で迷いましたが、他ユーザーとの共有がないアプリなので高速アクセスのできる**Realm**を使用しました。
非常に使いやすくおすすめです。


FSCalendar,CalculateCalendarLogicを使用することでスムーズにカレンダーの実装ができました。
CocoaPodsの使い方、コマンドの使い方の勉強にもなりました。

ただ、ライブラリを使用するメリット、デメリットがあるので吟味しながら使用した方がいいと思います。

https://qiita.com/zlia_7/items/e99b77372d8c0f38d98b


# AppStore申請
**意外とこの作業が大変**でした。この作業をなめていると痛い目にあいます。
こちらのサイトを参考にさせていただきました。非常にわかりやすくオススメです。

https://i-app-tec.com/ios/app-release.html


- 証明書の作成
英語の記述が多く大変でした。英語ができない人は**Google翻訳**を活用するといいと思います。
（Googleさんありがとう笑）


- Apple Developer Programに申請
こちらで３日ほど返信がなく心配しました。問い合わせたら承認のメールが届きました。
（営業日のみの連絡みたいで気長に待つか問い合わせてみるといいと思います）

https://satoriku.com/apple-developer-program-pending/

- AppStoreConnectにアプリ情報を登録
プライベートポリシー制作やアプリの詳細情報入力など大変でした。

https://qiita.com/Hiroki_Kawakami/items/94f012d20afdb692df20

- アイコン制作
こちらを参考にさせていただきました。
https://qiita.com/seihmd/items/25f2a42e20e88ea5d86f

- 審査提出
２日後リジェクトのメールが届きました。

- リジェクト対応
指摘内容を変更して再度提出。
翌日に審査合格のメールが届き念願のリリース


# 参考記事
・[Swift4 + Realmでカレンダーアプリを作ってみた](https://qiita.com/yanashi222/items/121b549852bedf391377)
・[【Swift/iOS】画面遷移時の値渡し】](https://capibara1969.com/1060/#toc12)
・[【Swift】コードを使った二つの画面遷移の方法](https://qiita.com/zlia_7/items/e99b77372d8c0f38d98b)

# 参考書籍・動画

・ドットインストール（iPhoneアプリを作ってみよう）
・[たった2日でマスターできるiPhoneアプリ開発集中講座 
Xcode 11　Swift 5対応 Kindle版](https://www.amazon.co.jp/dp/B081FG9J2V/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)

# 最後に

アプリ制作中の２ヶ月半は時間があれば基本的に制作に時間を費やしてました。
大変でしたが、AppStoreに自分のアプリが載った時はひとりでガッツポーズしてしまうほど**達成感**があります。
アプリ開発は**スキルも身につきます。**ぜひやってみてはいかがですか。
みなさんの参考になれば幸いです。