これは?
知識&経験ゼロから3ヶ月独学した後、iOSエンジニアとして実務を行うようになって半年の筆者が、
iOSエンジニア(Swift × Xcode前提)の実務になじむためにおさえておきたい項目をまとめた記事です。
※「項目」という言葉はこの記事では「iOSアプリ開発の実務で必要な観点」という意味で使います。
「iOSエンジニアになるために勉強しているけど、実務になじめるのだろうか...」
などと不安に思っている実務未経験者の方に向けて書いています。
筆者も実務に入る前は不安でしたが、この記事でまとめた項目リストをあらかじめおさえておくことで、
よりスムーズに実務になじめるのではないかと経験上考えています。
本題に入る前に
この記事ではあくまで、実務になじむために知っておいた方がいいことを項目レベルで挙げるまでにとどめ、
各項目の詳細については触れていません。
なぜかというと、必要な項目さえわかれば、それをキーワードに検索したりすることで、
その項目に関する情報はいくらでも手に入るからです。
この自分で調べて実装の方針や具体的手法などを見出す自走力は実務を進める上でもとても重要です。
一方で、項目そのものは誰かに聞かないと思いつかない場合も未経験では多いのではないかと思っています。
実際に筆者もそうで、手探りで勉強していました。
例えば、サッカーのことを全く知らない人が、「サッカーにはゴールキーパーという役割がある」
という観点を何もないところから思いつくのはほぼ不可能です。
しかし、その観点さえ知っていれば、「ゴールキーパー」を一つのキーワードとして調べることで、
ゴールキーパーの役割やサッカーへの理解をよりスムーズに深めることができると思います。
このような理由で、この記事では各項目の詳細には触れず、キーワードベースで項目を挙げるまでにとどめています。
実務になじむためにおさえておきたい項目リスト
まず、リストの構成ですが、筆者はUdemy動画The Complete iOS App Development Bootcampのシリーズを
メインの教材(実際に筆者が学習したのiOS12 × Swift4.2対応のもの)として独学に使ってきたので、
- 基礎:この動画に出てきた項目
- 応用:この動画には無いor不足していて、筆者が実務に入るまでに調べて補った項目
という構成で基礎と応用に分けてまとめています。
ちなみに、動画は英語ベースですが、一応日本語字幕もあります。
ただ、Apple公式ドキュメントなどが英語だったりするので英語に慣れておくというのはどのみち必要です。
また、動画を購入する際は、たまにある格安セールを狙って購入するのがいいかと思います。
それでは、以下項目リストです。
※順番に特に意味はないです。見づらくてすみません...
基礎
- 変数・定数の活用
- 繰り返し処理(for、while)の活用
- 条件分岐(if、switch)の活用
- 配列(多次元含む)の活用
- 辞書の活用
- 関数(引数・返り値のあり・なし)の活用
- オプショナル処理(アンラップなど)
- 様々なIBOutletを使ったUI実装
- 画面遷移の実装(UINavigationControllerなども含む)
- Timerの活用
- Dateの活用
- AutoLayoutの活用
- StackViewの活用
- plistの理解
- UI描画座標(originなど)の理解
- オブジェクト指向の理解
- クラスの活用
- 構造体の活用
- インスタンスの生成
- didSetとwillSetの活用
- getterとsetterの活用
- Delegateの活用
- アクセスレベルの理解
- 型変換の活用
- URLSessionでのHTTP通信
- Firebase APIなどでのサーバ通信
- 端末依存機能(位置情報など)の活用
- 端末保存機能の実装(User Defaults、Realmなど)
- アプリのライフサイクルの理解
- UIViewControllerのライフサイクルの理解
- ブレークポイントを使ったデバッグ
- Xcodeショートカットの活用
- Carthageでのライブラリ管理
- CocoaPodsでのライブラリ管理
- アーキテクチャ(MVC)の理解
応用
- ジェネリクスの活用
- クロージャーの活用
- プロトコルの活用
- Notificationの活用(Delegateと比較)
- enumの活用
- extensionの活用
- guard文の活用
- 高階関数(map、filterなど)の活用
- Codableを使ったJSONのモデル化とパース
- 同期処理と非同期処理の活用
- 適切なエラー処理
- 参照渡しと値渡しの理解
- 循環参照の回避
- メソッド・プロパティへの適切な命名
- 正規表現の理解
- UIView階層の理解
- xibを使ったUI実装
- コードベースのUI実装
- 環境変数の活用
- ビルドターゲットを分けた開発
- Gitのチーム運用の理解
- アーキテクチャ(MVP、MVVMなど)の理解
最後に
上記のリスト以外にも適宜追加していきたいと思います。
また、命名や端末依存の機能については、筆者の過去の記事もぜひご参考ください。
一人でも多くの未経験スタートiOSエンジニアが実務で活躍できることを願っています。