iOSエンジニアのフリーランス案件で求められるスキルと経験
公開 2026-10-29 監修:株式会社エージェントベスト
iOSのフリーランス案件では、Swiftの並行処理(async/awaitやactor)を正しく扱えること、SwiftUIとUIKitで画面を作り分けられること、画面とデータの層を分ける設計の判断、そしてAppleの提出要件の変化に合わせてアプリを保てることが中心に見られます。機能を実装できるのは前提で、そのうえで「既存のアプリを壊さずに新しい仕組みへ移していけるか」が、参画できる案件の幅を分けます。
この記事では、iOSの案件で求められるスキルを分野ごとに整理し、スキルシートや面談での示し方を解説します。独立までの準備や、審査ガイドラインと個人開発アプリの扱いはiOSエンジニアがフリーランスになるにはにまとめています。
iOSの案件で見られるスキルの全体像
| 分野 | 案件側が確かめたいこと | 示し方の例 |
|---|---|---|
| Swiftと並行処理 | 非同期処理を安全に書けるか、データ競合を防げるか | async/awaitへの書き換え、Swift 6への対応 |
| 画面の実装 | SwiftUIとUIKitを状況に応じて使えるか | 混在した画面の構成、レイアウトの工夫 |
| 設計 | 画面・状態・通信の役割を分けられるか | 設計を見直した理由と効果 |
| データと通信 | APIの通信、保存、認証情報の扱い | キャッシュ、オフライン時の挙動 |
| リリースと要件 | Appleの要件変更に追従できるか | Xcodeの版上げ、プライバシーの対応 |
| 品質 | テスト、クラッシュの調査、配布の自動化 | 不具合を減らした取り組み |
Swiftの並行処理を扱う力
async/awaitとactorへの理解
運用中のアプリには、クロージャのコールバックや、従来のスレッドの扱いで書かれた非同期処理が多く残っています。これをasync/awaitで書き直し、画面の更新をメインスレッドで行うことを型で保証する、といった整理は、多くの現場で続いている作業です。
面談で見られやすいのは次の点です。
- コールバックで書かれた通信処理を、async/awaitに置き換えた範囲と進め方
- 共有するデータをactorで守り、複数の処理から同時に書き換えられないようにした経験
- 画面を閉じたときに、実行中の処理を取り消す(キャンセルする)設計
Swift 6の言語モードへの対応
Swift.orgの発表では、Swift 6で、並行処理のデータ競合を防ぐための新しい言語モードが用意され、データ競合のおそれがある箇所をコンパイルエラーとして報告するとされています。このモードは選んで有効にする(オプトイン)形です。
既存のアプリでこのモードを有効にすると、大量の警告やエラーが出ることがあります。モジュールごとに少しずつ有効にし、警告を減らしていった経験は、今後の案件で話題になりやすい実績です。対応の途中であっても、何をどの順で直したかを説明できれば十分に伝わります。
SwiftUIとUIKitでの画面実装
新しい画面はSwiftUIで作る現場が増えていますが、運用中のアプリではUIKitの画面と共存していることがほとんどです。両方を読めることの大切さは独立の記事で触れたとおりで、スキルとして見られるのは、その先の使い分けと橋渡しです。
- UIKitの画面の中にSwiftUIの部品を組み込む、またはその逆の構成を作った経験
- SwiftUIで表現しにくい細かな動きやスクロールの制御を、UIKitで補った判断
- 画面の状態をどこが持つか(画面側か、状態を管理するクラスか)の線引き
- 文字サイズの変更(Dynamic Type)や読み上げ(VoiceOver)など、アクセシビリティへの対応
「SwiftUIで何画面作ったか」より、「なぜその画面はUIKitのまま残したか」を説明できるほうが、設計を任せられる人として見てもらえます。
画面とデータを分ける設計の判断
iOSの案件では、MVVMなどの設計パターンが使われることが多いものの、現場ごとに分け方の流儀が違います。案件側が見ているのは、パターンの名前より、画面・状態・通信・保存の役割をどこで分けたかです。
- 画面のコードから通信や保存の処理を切り出し、テストできる形にした
- 機能ごとにモジュール(Swift Packageなど)を分け、ビルド時間や担当の分担を改善した
- 依存関係の向きを決め、画面のモジュールが通信の実装に直接依存しないようにした
設計を変えた理由と、変えた後に何が楽になったかを話せると、リードや上流の役割に近い案件にも応募しやすくなります。上流の仕事の考え方は上流工程の案件に入るために必要な経験にまとめています。
Appleの要件に追従する力
iOSアプリは、Appleが定める提出の要件を満たさないと、App Store Connectにアップロードできません。2026年10月時点のAppleの案内(Upcoming Requirements)では、次のような要件が示されています。
| 時期 | 内容 |
|---|---|
| 2024年5月1日から | 特定のAPIを使う場合、承認された理由を記載しないと新規・更新のアプリをアップロードできない(サードパーティのSDKを含む) |
| 2026年1月31日まで | 新しい年齢区分の質問への回答。回答しないと更新の提出が止まるおそれがある |
| 2026年4月28日から | App Store Connectへのアップロードは、Xcode 26以降とiOS 26などのSDKでビルドする必要がある |
こうした要件は毎年のように加わります。Xcodeの版上げに伴うビルドエラーの解消、プライバシーに関する記載の整備、組み込んでいるSDKの更新などを担った経験は、運用中のアプリに参画する案件で評価されやすい部分です。要件は変わるため、最新の内容はAppleの公式ページで確かめてください。
データ・通信・テストのスキル
ほかにも、iOSの案件でよく求められるスキルがあります。
- 通信とデータ:URLSessionとCodableによるAPIの通信、キャッシュ、オフライン時の挙動
- 保存:Core DataやSwiftDataなどでの保存、データ構造を変えたときの移行
- 認証情報:トークンをKeychainに保存するなど、端末上での秘密情報の扱い
- プッシュ通知・課金:通知の受け取りと画面遷移、アプリ内課金の実装と検証
- テストと配布:ユニットテスト、UIテスト、ビルドと配布の自動化、クラッシュ報告からの原因の特定
すべてに深い経験がなくても構いません。応募する案件の領域(EC、決済、動画、ヘルスケアなど)に近いものから整理しておきましょう。
スキルシートと面談での示し方
iOSのスキルシートでは、アプリごとに次の点を書くと、経験の中身が伝わります。
- アプリの種類と規模(利用者の規模は伏せられる範囲で)
- Swiftの版、SwiftUIとUIKitの比率、主な設計の方針
- 非同期処理の書き方(コールバック、Combine、async/awaitなど)
- 担当した機能と、設計・移行・リリースのどこに関わったか
- Appleの要件への対応や、品質を上げた取り組み
AndroidやFlutterの案件とあわせて検討している方は、Androidの案件で求められるスキルやFlutterの案件で求められるスキルと比べると、自分の強みが見えやすくなります。書き方の詳細はiOSのスキルシートの書き方、面談の質問への備え方は面談でよく聞かれる質問をご覧ください。
よくある質問
Swift 6の言語モードに対応した経験がないと不利ですか?
2026年10月時点では、運用中のアプリの多くは段階的に対応を進めている途中と考えられ、未経験でも参画できる案件は多くあります。ただ、async/awaitやactorの考え方を理解していることは求められやすいため、検証用のプロジェクトでモードを有効にし、出てくるエラーの種類を確かめておくと面談で説明しやすくなります。
Objective-Cの経験は今でも評価されますか?
古くから運用されているアプリにはObjective-Cのコードが残っていることがあり、読める人が求められる場面があります。Swiftへの移行やSwiftとの共存を担った経験があれば、強みとして伝えられます。ただ、新しい機能はSwiftで書くのが一般的なため、Swiftの経験とあわせて示すことが大切です。
サーバー側の知識も必要ですか?
画面だけを担う案件もありますが、APIの仕様をサーバー側の開発者と決める場面は多くあります。エラーの返し方やページ送りの仕組みなど、アプリから見て必要な仕様を提案できる程度の理解があると、設計に関わる案件で評価されます。
参考にした公的情報・資料
記事の内容は公開日時点の情報にもとづきます。制度や税率は変わることがあるため、手続きの前に必ず各機関の最新情報をご確認ください。