バンクーバーのローカル企業でiOSエンジニアの面接を何度か受けたので、必要なだと思われる技術スキルをリストアップしてみました。iOSメインですが、アンドロイドにも共通してる部分はあると思います。
Swift ★★★★★
今のiOSアプリ開発では必須の言語。公式のSwiftの言語ガイドが全て網羅しています。バージョンもすでに5になり、進化を感じます。とてもモダンでパワフルな言語です。
UIKit ★★★★★
UIKitも必須で習得する物なのかなと思います。SwiftUIを使うにしても、SwiftUIで提供されていない物はUIKitでラップする必要があるので。
Git ★★★★
それぞれ企業の運用方法があると思いますが、基本的なブランチの運用(dev/master/release) PRの出し方、マージ、スカッシュ、チェリーピック等良く使う物は知っておいて良いと思います。
OOP ★★★★
技術面接で良く聞かれますので、面接で基本的なことを抑えるといいと思います。継承、ポリモーフィズム、カプセル化等。
設計パターン ★★★★
ここ数年で、いろんな設計パターンが出てきていますが、アップルドキュメントで推奨されているのは今だにMVCだったり、基本の設計パターンなので、どういったものか知っておく必要はあると思います。また、最低限MVVMは知っておいて損はないと思います。
SwiftUI ★★★
これから良く使われる、既に使われている技術ですが、まだリリースされて1,2年でSwiftUIの移行を検討しているが、UIKitを使って開発している企業はたくさんあると思われます。どちらも使えるようにしておいた方が吉です。公式で素晴らしいチュートリアルが公開されています。
デザインパターン ★★★
面接で聞かれることはあります。シングルトン、ファクトリメソッド、ファサードパターンなど良く使われるデザパタは予習、復讐しておいた方がいいかなと思います。
RestAPI ★★★
RestAPIに限った話ではないですが、RestAPIなどで、バックエンドとやりとりする場合はどういったリクエストを送って、どういったレスポンスが返ってくるのかが知る必要があります。適当なパブリックAPIでドキュメントを読んで、実際に実装してみて練習してみるのもいいと思います。
Test ★★★
スタートアップで要求されることは多くはないかもしれませんが、シンプルなユニットテストを書けるようにしておいた方がいいと思います。実際、技術面接の課題として、出題されました。
ReactivePrograming(RxSwift, Combine)★★★
MVVMなどの設計パターンを使う際に、リアクティブプログラミングが必要です。個人的には、学習コストが高い気がするので、少しづつ勉強しておいた方がいいと思います。RxSwift: Reactive Programming with Swiftがいいチュートリアルだと思います。
DI ★★★
必須ではありませんが、テスタブルなコードを書く時に必要です。面接でDIのことを聞かれることもあるので、どういったものか知っておくといいでしょう。
AutoLayout ★★★
IBを使うにしても、コードで書くにしてもAutoLayoutは良く使われると思います。実際にアプリをなどを作ってみて、練習してみるといいと思います。
アルゴリズム ★★★
スタートアップで難解なアルゴリズムを解けというのは少ないと思いますが、簡単なアルゴリズムは解けるようにしておいた方がいいと思います。日々のトレーニングとして取り組んでいれば、幾分かハードルは低くなると思います。
Interface Builder ★★
企業によっては、使う企業、使わない企業があります。チーム開発をする際にコンフリクトが発生した際、解決しづらいからです。僕が働いていた企業はほぼ使いませんでした。
ObjC ★★
古いプロジェクトだと、Swiftとミックスして開発しているプロジェクトがあります。また、Swiftは書けるけど、Objcは書けないエンジニアもいたりするので、どっちも出来ると重宝されるのではないかなと思います。
いくつかの自作アプリは就職ににとても役立つのでいくつか作ると良いと思います。アプリの機能も被らないようにカバーすると満遍なくiOSの機能を網羅できるので、面接の際に強力な武器になると思います。ios swift questions interview などでググって出てくる質問も良く質問されます。準備しておくと面接が楽になると思います。
Twitterやっているので他にも質問、フォローしたいなどあれば気軽にどうぞ :)))
Happy Coding :)