iOSエンジニア求人から見る市場で求められているスキル 2024年


# 対象読者

* iOSエンジニア
* iOSエンジニア転職を考えている人
* 人事

# 求められているスキル

iOSDCスポンサーなどある程度積極的にiOS求人を出している会社から選出
MustやWantに上げられている経験やスキルを箇条書き

## Must

### iOSアプリ開発

- 3年以上のiOS開発・運用経験(Objective CおよびSwiftなどの利用)
- Swift・Objective-Cなどを利用したiOSアプリ開発経験（4年以上）
- Swiftを利用したiOSアプリの開発、運用経験
- iOSアプリエンジニアとして実務経験3年以上
- Swiftを利用したiOS向けネイティブアプリケーションの開発経験
- Swiftを利用したiOSアプリの開発経験
- SwiftによるiOS向けネイティブアプリケーションの設計、開発、および運用経験
- iOS向けネイティブアプリの開発経験
- iOSアプリの開発に携わる3年以上の実務経験
- iOS/iPadOS アプリの開発経験 (Swift)
- SwiftもしくはKotlinを用いたネイティブアプリ開発経験（3年以上目安）
- ネイティブアプリケーションに関連する基礎的な技術知識（標準ライブラリ・ビルドツール・IDE）
- Swiftに関する知識
- SwiftUI, UIKitに関する知識
- XCode、OSSといった基本的な周辺知識
- リアクティブプログラミングの経験/理解
- リアクティブプログラミングの実装経験
- RxSwfitなどリアクティブプログラミングの知識と、実務での利用経験
- RxSwiftやCombineなど、ストリーム型のデータホルダーを利用したリアクティブプログラミングの実践経験
- ヒューマンインタフェースガイドラインの理解
- Human Interface Guidelinesの理解
- App StoreへのiOSアプリケーションのリリースおよび運用経験

### チーム開発

- チーム開発での経験
- チーム開発の経験
- チームでのアプリケーション開発経験
- チームでの開発経験
- 複数人でのiOSアプリ開発の経験
- チームを牽引してプロジェクトを進行した経験
- 多様性のあるチームメンバーや関係者間における、日本語を使った円滑なコミュニケーションスキル
- チーム内外の人と円滑なコミュニケーションをとれるスキル

### Gitを用いたチーム開発経験

- Gitなどのバージョン管理ツールの利用経験
- Gitを用いたチーム開発経験
- Gitを用いたチーム開発の経験
- Git/GitHubを利用したチームでの開発経験

### アーキテクチャ

- iOSアプリの設計経験（MVVM、VIPER、Clean Architecture、Flux/Redux等）
- モバイルアプリケーションのアーキテクチャ設計の経験
- iOS/iPadOS アプリのアーキテクチャーの設計や選定の経験
- MVC、MVVM、デリゲートなどのデザインパターンの知識
- MVVMのような何らかの GUI アーキテクチャを用いた開発経験
- MVVM／MVPアーキテクチャに関する知識

### テストの経験

- Unitテスト、UIテストの経験
- 自動テストの経験、またはテスタビリティを考慮したコーディングができる
- ユニットテストによる自動テストの実装経験
- 自動テストの経験、またはテスタビリティを考慮したコーディングができる

### 設計・コードレビュー経験

- 設計レビューやコードレビューなどを通じた、チームでのソフトウェア開発経験
- コードレビューの実務経験
- コードレビューをする文化への理解

### 基礎知識

- コンピュータサイエンスに関する基礎知識（データ構造・アルゴリズム）
- 設計・アルゴリズム・データ構造などの基礎知識

### Webアプリ

- Web Server とのインタラクションを伴うアプリの開発経験
- Webアプリケーションと連動したネイティブアプリケーションの開発・運用経験
- ネットワーク通信を利用したアプリ開発経験

### 会社への理解系・その他

- ミッションとバリューへの共感
- 企業理念への理解
- 最新技術のキャッチアップ、勉強会への参加など自己研鑽に取り組んでいる
- 事業の領域への情熱
- サービスの運用及び改善業務の経験
- スクラムで開発をすることへの前向きな姿勢
- サービスの運用及び改善業務の経験
- ユーザーの視点に立ち、細部まで気をつかった UI や実装を検討できること
- マルチスレッド、ネットワーク、メモリ管理に関する知識
- 標準ライブラリやOSSを使用したiOSアプリ開発経験
- ソフトウェア開発ライフサイクルに関する理解
- プログラミング、デバッグ、およびテストのスキル
- セキュリティに関する基本知識
- 大規模開発においてコードベースやチーム開発全体を恒常的に改善した経験

## Want

### iOS開発の経験と知識
- MVC、MVVM（あるいは他のデザインパターン）の知識と経験
- iOSメモリ管理(ARC/MRC)の知識と経験
- agent, observer, block/closureを利用した開発経験
- プロトコル指向（POP）に関する知識と経験
- iOSフレームワーク（Foundation, UIKit, CoreLocation, UserNotifications Networking, Core Animation, Security, XCTest）の知識と経験
- Objective-Cの開発経験
- SwiftUI / Combine / Swift Concurrencyを用いたサービス開発経験
- リアクティブプログラミングの経験、知見
- SwiftUIやUIKitを用いたUI開発における深い知識
- 大規模ユーザーを持つネイティブアプリケーションの開発、運用経験
- テスト可能なコードを書くための豊富な知識
- 開発プロセスおよびリリースの自動化の経験
- iOS以外の分野（Android/サーバーサイド）での実務経験
- Objective-CからSwiftへの移行経験
- TCA（The Composable Architecture）の使用経験
- SwiftUIなど、宣言的UIのパラダイムを用いてGUIアプリケーションを設計、開発した経験
- iOSフレームワークにおける深い知識
- iOS/Androidアプリケーションの最新技術の知見、新規開発やアーキテクチャ選定経験

### ソフトウェア開発プロセスとツール
- CI/CDによるソフトウェア開発の自動化・効率化経験
- Atlassian系のコラボレーションツール(JIRA, Confluence等)の使用経験
- Appium, MagicPod, Autifyなどを用いたE2Eテストの設計、運用経験
- CI/CDツールを利用して、アプリの品質改善や業務改善をおこなった経験
- CIを使ったテスト・リリースの自動化経験
- GitHubやCIやテスト自動化の環境構築の経験

### チーム開発と管理経験
- 業務委託の管理経験
- チームのリード経験
- プロジェクトマネジメントスキル
- チームマネジメントの経験（採用、育成、目標設定・評価）
- チームメンバーや他のステークホルダーと円滑にコミュニケーションを取るスキル
- 英語でのコミュニケーション能力
- 少人数チームのテックリード / マネジメント経験
- プロジェクトやチームを俯瞰して課題を自ら発見し、オーナーシップを持って解決に向けて動くことが出来る

### ユーザー規模とアプリケーションアーキテクチャ
- 大規模のユーザ向けサービスの担当経験
- 大規模ネイティブアプリケーションアプリでの開発及び運用経験
- 要件定義や技術選定、アプリケーションアーキテクチャ検討などの設計経験
- 実績のある安定したオープンソースソフトウェアを利用したアプリケーション開発経験
- 単一プロダクトに対して2年以上開発に携わった経験
- 大規模サービスの開発・運用経験（20人月以上）
- 大規模サービスの企画、開発、運用の経験

### その他の開発経験と知識
- マイクロサービスアーキテクチャに関する知識と経験
- ミニアプリ（ミニプログラム）に関する知識と経験
- Fintech（主に決済）に関するシステムの開発経験
- テスト自動化の開発経験
- 大規模サービスの開発・運用経験
- サーバサイドの開発経験
- Web APIの開発経験
- GraphQLの知識
- GraphQL クライアント（Apollo iOS 等）を利用した開発経験
- Bluetooth 通信を利用するアプリケーションの開発経験
- モバイルアプリケーション向け SDK の開発経験
- RIBsアーキテクチャや Clean Architecture を利用した実装経験
- SwiftUI を利用した UI 構築経験
- 位置情報やGoogle Mapsを用いたアプリの開発経験
- Bazelビルドシステムを使った業務経験
- セキュリティー、パフォーマンス、スケーラビリティ等の高品質なコードの作成
- Human Interface Guidelinesに関する知識
- iOS/AndroidのUIガイドラインについての知識
- パフォーマンス改善に関する知識と経験
- XCTest/XCUITestなどのテストフレームワークに対する深い理解
- 高性能かつスケーラブルなソリューションの提供
- iOS／Android各OSに関する豊富な知見
- サーバーサイド開発の経験・基礎知識 (BFF、 GraphQL、 OpenAPI)

### ツールとフレームワーク
- XCTest/XCUITestなどのテストフレームワークに対する深い理解
- Figmaなどデザインツールの知識
- アプリケーション要件に基づいたアーキテクチャの設計、フレームワークの選定
- RIBsアーキテクチャや Clean Architecture を利用した実装経験
- Bazelビルドシステムを使った業務経験
- パフォーマンス改善に関する知識と経験

### アウトプット
- 外部発信や登壇など社外へのアウトプットに積極的に取り組んでいる
- 勉強会/カンファレンスなどでの発表・LTの経験
- OSSに対して貢献した経験
- OSSの公開、コントリビュートの経験
- 最新技術のキャッチアップ、勉強会への参加など自己研鑽に取り組んでいる

### その他
- DX(Developer Experience)の継続的改善ができる
- ユーザー価値を高めるために、定量・定性データに基づいた分析が出来る
- 開発効率改善への取り組み