iOSエンジニアになりたい人が読むと良いかもしれない話

# はじめに

[GameWith Advent Calendar 2018](https://qiita.com/advent-calendar/2018/gamewith) 22日目担当の[kyam](https://qiita.com/kyam_)です。
(投稿遅れてしまいすみません・・・ :cry:)

今回のテーマを選んだ理由ですが、GameWithに入社してからiOS開発を始めたいんだけど何から始めれば良いですかといった質問を何人かにされたので、自分の中での最短経路を改めてここに記そうと思います！
個人での開発やチーム開発など色々経験してきた中で、今回は<b>アプリを開発する際に、この流れで勉強するのがオススメという自分なりの学習方法を</b>簡単に紹介したいと思います。

簡単に自分の紹介をすると、Objective-C時代からかれこれ6年くらいiOS開発をしており、決済アプリ、位置情報アプリ、ニュースアプリ、カメラアプリ、女性向けダイエットアプリ、女性向けファッションアプリ、GIFアプリ、動画SNSアプリ、動画編集アプリ、生放送アプリ、ビデオ通話アプリ、動画配信アプリなど細かいものを含めると15-20くらいのリリースに関わったと思います。
初期の頃はツール系のアプリの開発が多かったのですが、後半は事業として展開しているアプリの0→1, 1→10に携わることができてアプリエンジニアに必要な開発スキルが一通り取得できました。

# まずはインプットとアウトプット

プログラミングの経験がある、なしに関わらず以下の順番が個人的にオススメです。

① 入門本を１冊読んでiOSの全体像を掴む
② [Swift Appretice](https://store.raywenderlich.com/products/swift-apprentice)でSwiftについて学ぶ（他の日本語の本でも良いです）
③ [iOS Appretice](https://store.raywenderlich.com/products/ios-apprentice) でアプリを写経しながら実際に開発する
（②と③は並行）
<img width="400" alt="スクリーンショット 2018-12-21 21.50.47.png" src="https://qiita-image-store.s3.amazonaws.com/0/66235/447a5ae0-89cc-c745-32c7-f9f03d66678d.png">

まずは１冊入門本を読んでXcodeなりSwiftなり、iOS開発の全体像についてふんわりで良いので触れるのが良いと思います。
絶対に挫折しないシリーズだったり、とりあえずメジャーな本を１冊読むと良いと思います。
ここも不安があれば聞いてください。

その後は③の`iOS Appretice`を②を並行しながら読んでほしいです。
`iOS Appretice`は4つのアプリを実際に作っていく書籍なのですが、各セクションでiOSアプリ開発に必要な実践的な知識が得られます。

第1章では、
- `Xcode`、`Interface Builder`の使い方
- `Swift`の基本的な書き方
- iOSアプリ開発の基本である`UIKit`の使い方

第2章では、
- `Storyboard`の使い方
- iOS開発の基本である`MVCパターン`について
- `UITableView`の使い方
- data model objectsの作り方
- リファクタリングの方法、リファクタリングの意義
- `UINavigationController`の使い方
- `UITextField`とキーボードの使い方
- `delegate` を使って二つの`UIViewController`間でデータのやり取りを行う方法
- データをアプリ内に保存する方法
- `NSUserDefaults` の使い方
- 配列と辞書の使い方
- `LocalNotification`を使ってアプリ内通知を送る方法

といった感じで学習が続き、第4章では
<img width="600" alt="スクリーンショット 2018-12-24 23.59.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/66235/cd83862a-6515-b11b-358c-02dbd3b203e3.png">

API通信を行い、こんな感じのアプリを作ることになります。
写真だけでもワクワクしませんか？
各章でアプリを作っていき、その中でiOSアプリ開発に必要なエッセンスを身に付けることができるので<b>この本は絶対に読んでほしい</b>です。

最後には実際にアプリの申請方法まで学習するので、これを読み終えた頃にはアプリを申請できます。
特に第二章で学ぶTO DOアプリはデザインや機能を少し自分流にアレンジしてあげればオリジナルのアプリを申請できるかと思います。

### 英語が読めないから辛い

Swiftの言語の勉強に関しては、
[Swift 実践入門](
https://www.amazon.co.jp/%EF%BC%BB%E6%94%B9%E8%A8%82%E6%96%B0%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/B07JWCXW4R/ref=pd_sim_351_1?_encoding=UTF8&pd_rd_i=B07JWCXW4R&pd_rd_r=caa33771-051f-11e9-a192-8ff15e5e6261&pd_rd_w=LcbcU&pd_rd_wg=NZdHh&pf_rd_p=b79503b3-46ea-4244-8b06-2f14c40a97b1&pf_rd_r=KXCX9J97BW8PKQ029Z2M&psc=1&refRID=KXCX9J97BW8PKQ029Z2M)だったり、[詳解Swift](https://www.amazon.co.jp/dp/B078ML9XZM/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1)だったり、他の日本語書籍でも良いですが、英語が苦手な方も、[iOS Appretice](https://store.raywenderlich.com/products/ios-apprentice)だけは実際に手を動かして我慢強く読んでほしいです。

特にiOS開発は、公式ドキュメントをAppleが提供しているため基本的に英語です。
勿論、Qiitaや開発者ブログなど日本語だけでも学べなくはないですが、英語が読めないアレルギーだと開発は正直つらいかと思うのでここは頑張りましょう。

# 上記の学習を終えたら

ここまでの学習をしっかり終えるとある程度のアプリは作れるだけの基盤はできていると思います。
ですが、まだまだiPhoneの理解が足りないと思います。

[human-interface-guidelines](https://developer.apple.com/design/human-interface-guidelines/ios/overview/themes/)などを読んでiPhoneについて知るのもとても大切ですが、まずは普段使っているアプリを触ってみて改めてここはこのパーツ（UITableView, UICollectionViewなど）で出来ているなど自分なりにパーツ名が言えるか試してみてください。またこういう感じに作っているのかな?など自分の持っている知識で実装のイメージができるか試してみてください。ある程度分かる自分がいることにビックリすると思います！

この後は自分で作りたいアプリを実際に作ってみるも良し、どこかの企業に応募してみるも良し、既にエンジニアの場合はiOSエンジニアにコンバートしてみるもよし、色々iOSエンジニアとしてのスタートは切れると思います。

また今回紹介した書籍以外にも[raywenderlich.com](https://store.raywenderlich.com/)では優良本をたくさん取り扱っています。
自分はここのシリーズが大好きで大体全部読みましたが、ここのサイトは開発記事も優良記事が多いので是非暇な時に読んで見てください！

# 終わりに

色々書きましたが、ただアプリを作ることに置いて言えば最短経路はもっと他にたくさんあると思います。
ただ必要な情報をググって一つのものを作る過程も大事ですが、まず体系的にしっかりと学習することが何だかんだ近道だなと自分は思います。
受験勉強みたいな考え方になってしまいますが、基礎がないと結局何をやってもまた調べ直しになって自分で考える力が損なわれてしまうので、まずは基礎を身につけましょう。

また学習していて楽しいという気持ちがないとなかなか学習が続かないかと思いますが、[iOS Appretice](https://store.raywenderlich.com/products/ios-apprentice)はどんどん実際にアプリが出来上がっていくので毎日楽しんで学習できると思います。

駆け足での紹介でしたがここまで読んで頂いてありがとうございました！
iOS開発はとても楽しいものなので興味があるけど踏み出せなかった人は是非！