iOSエンジニアになりたい入門者向けのまとめ 

## 前置き
これからiOSエンジニアを目指す人向けにiOS開発における基礎的な知識とスキルを身につけるためのステップアップとしてまとめてみました。
UIKitなどの細かい話はApple公式のドキュメントが参考になると思います。

## Step
1. [Apple公式のチュートリアル](https://developer.apple.com/tutorials/app-dev-training)があるので、まずはこれでアプリ開発に慣れるのがいいと思います。Google翻訳でもちゃんとした日本語になります。


1. チュートリアルで雰囲気が掴めたら、[詳細！Swift iPhoneアプリ開発 入門ノート](https://www.amazon.co.jp/dp/B07JZ188FK/ref=cm_sw_r_tw_dp_U_x_uPCREbJ3XHW2K )を最後までやってみるといいと思います。

1. AutoLayoutについては[よくわかるAuto Layout](https://www.amazon.co.jp/dp/B01HG97S7K/ref=cm_sw_r_tw_dp_U_x_hQCREbND4G136)がおすすめです。丁寧に描かれてあるのでわかりやすいです
[英語版はApple公式があります](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/AutolayoutPG/index.html)

1. ここまでで一通りのアプリ開発には慣れてきてるでしょうから、オブジェクト指向やMVCについて理解を深めるには[iOSアプリ開発デザインパターン入門](https://www.amazon.co.jp/dp/B07DKT9YZX/ref=cm_sw_r_tw_dp_U_x_FSCREbXBXP2X6 )がおすすめです。

1. Swiftらしさについては[Apple Swift API Design Guidelines](https://swift.org/documentation/api-design-guidelines/)がおすすめです。

1. [Apple Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)にはさらっと目を通しておきましょう。

1. エンジニア初めての方向け。[リーダブルコード より良いコードを書くためのシンプルで実践的なテクニック](https://www.amazon.co.jp/dp/4873115655/ref=cm_sw_r_tw_dp_U_x_l9CREbQ5WSH0G )

1. API通信する際など、Webの概要を知っておくと何かと都合がいいので、[Webを支える技術](https://www.amazon.co.jp/dp/B07JK7FZH2/ref=cm_sw_r_tw_dp_U_x_Y9CREb95QFMCZ )が参考になります。

1. アーキテクチャや設計についてより深く学ぶのに最適な書籍です。[iOSアプリ設計パターン入門](https://peaks.cc/books/iOS_architecture)

1. ここまでで、一通りのことはなんとなくわかってきたのではないかと思います。これからは解決したい課題についてキーワードでぐぐったり、さっぱりわからなかったらApple Developer Documentationで体系的に深い知識を身につけたり、先ずは手を動かして後から振り返って書籍を読みなおしたりすると最初はよくわからなかったのがわかってくるようになると思います。

## Apple Developer Documentation
iOSでよく使われる機能について、抜粋しました。
[日本語版の最新はここから](https://developer.apple.com/jp/documentation/)見れるのですが、過去にPDF配されていたものがなくなっているので、古いドキュメントは[Programming Guideで検索するとおおよそ出てきます](https://developer.apple.com/library/archive/navigation/)
内容は古いですがベースのアーキテクチャは今とほとんど変わっていないので、Objective-CのコードはスルーかSwiftに置き換えて読むといいんじゃないかと思います。

- [iOS テクノロジーの概要]
- [iOS アプリケーション プログラミングガイド]
- [iOS View プログラミングガイド](https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40009503)
- [iOS Scroll View プログラミングガイド](https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/UIScrollView_pg/Introduction/Introduction.html#//apple_ref/doc/uid/TP40008179)
- [iOS Table View プログラミングガイド](https://developer.apple.com/library/archive/documentation/UserExperience/Conceptual/TableView_iPhone/TableViewStyles/TableViewCharacteristics.html#//apple_ref/doc/uid/TP40007451-CH3-SW1)
- [iOS View Controller プログラミングガイド](https://developer.apple.com/library/archive/featuredarticles/ViewControllerPGforiPhoneOS/index.html#//apple_ref/doc/uid/TP40007457)
- [Collection View プログラミングガイド](https://developer.apple.com/library/archive/documentation/WindowsViews/Conceptual/CollectionViewPGforIOS/Introduction/Introduction.html#//apple_ref/doc/uid/TP40012334)
- [Cocoa向け コーディングガイドライン]
- [Core Animationプログラミングガイド](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514)
- [アニメーションのタイプとタイミング](https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/Animation_Types_Timing/Introduction/Introduction.html#//apple_ref/doc/uid/TP40006166)
- [iOSイベント処理ガイド]
- [URLローディングシステム プログラミングガイド]
- [ファイルシステム プログラミングガイド](https://developer.apple.com/library/archive/documentation/Darwin/Conceptual/FSEvents_ProgGuide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40005289)
- [Instrumentsユーザガイド](https://help.apple.com/instruments/mac/current/#//apple_ref/doc/uid/TP40004652)

## 以下は開発しながら読むといい物
- 新装版 達人プログラマー 職人から名匠への道
- アジャイルプラクティス 達人プログラマに学ぶ現場開発者の習慣
- 情熱プログラマー ソフトウェア開発者の幸せな生き方
- SOFT SKILLS　ソフトウェア開発者の人生マニュアル
- 比較して学ぶRxSwift入門 (技術書典シリーズ（NextPublishing）)
  - [RxSwiftの公式](https://github.com/ReactiveX/RxSwift)からPlayground形式で各種挙動確認ができるのでおすすめです
-  [MVC,MVP,MVVM,Clean Architectureの実装例](https://medium.com/@rockname/clean-archirecture-7be37f34c943)
-  [Clean Architectureの詳細](https://qiita.com/mishimay/items/229913a1a0e980f45acc)
- [詳解 Swift 第5版](https://www.amazon.co.jp/dp/B081GK7636/ref=cm_sw_r_tw_dp_U_x_rVCREbQX07MMH )
- Swiftデザインパターン (Programmer's SELECTION)
- Clean Architecture　達人に学ぶソフトウェアの構造と設計 (アスキードワンゴ)
- iPhoneプログラミングUIKit詳解リファレンス
- ITエンジニア的論理思考テクニック！ 仕事ができる人になるための13の極意

## 参考リンク
- [mixi iOS Training](https://github.com/mixi-inc/iOSTraining)
- [iOSをMVC,MVP,MVVM,Clean Architectureで実装してみた](https://medium.com/@rockname/clean-archirecture-7be37f34c943)
- [アイスタイル的 iOS設計ベストプラクティス](https://qiita.com/mishimay/items/229913a1a0e980f45acc)