見出し画像

iOSエンジニアになるには何ができたらどれぐらい採用されやすいの?

これからiOSエンジニアを目指す人向けに、何が出来たらどれぐらい採用されやすいのか独断でまとめてみました。
いくつかのベンチャー企業で採用を担当している時は、これらを上からチェックしていって50%超えたあたりで将来性に期待して面接しようかなという感じでした。


App Storeにアプリを出したことがある

採用率 5%

まずは基本中の基本の登竜門です。
これをやったことがなければ採用率は0%です。
Appleの審査を潜り抜けなければいけないので最初が厳しいですが、まずはここからです。
20社ぐらい受けたらもしかしたら1社ぐらいはスマホアプリ開発専門会社で上場しだして海外進出も考えててこれからめちゃくちゃ人手を増やそうとしてて研修制度も自分のところで完備するぞというとこに引っかかるかもしれないので5%としました。

GitHubやQiitaなど何かの手段でソースコードが公開されている

採用率 10%

ブログやYoutubeやTwitterで働き方論や生き方論などの人生哲学をいくら載せても採用はされません。ソースコードが見たいです。
システムエンジニアとして募集してるのにソースコードを見せてくれないなんて、料理人の募集なのに料理を作って食べさせてくれないぐらい異常です。
Hello Worldができたからって採用されませんが、ソースコードが見せられなければHello Worldもできないレベルと判断されます。

iOS Deployment Targetをちゃんと意識して設定している

採用率 15%

キーボードで文字を入力して写真を撮って保存して地図を出したりするだけのアプリでターゲットが最新のままだと「ターゲットのことを何も知らないんじゃないのか?」と疑います。
一般ユーザは基本的にiOSを最新にしてくれません。そのためターゲットが新しければ新しいほど利用ユーザを減らす行為です。
セキュリティ的に問題があるから上げたとか、最新OSじゃないと使えない機能をアプリに取り入れたとかじゃない限り、気軽に変えていいものではないと意識しましょう。

バージョン管理をしている

採用率 20%

今時ならGitが扱えたらいいと思います。Excelやスプレッドシートでバージョン管理するような古の現場もあるようですがこれから学ぶ人はGitを使ってください。

複数の機種、複数のOSバージョン、通信できない場合など、様々な環境を考慮できている

採用率 25%

あなたが持ってるiPhoneは何ですか?最新のものを持ってますか?
僕は中古のiPhone12を使っています。
そんな感じで世界中の人間があなたと同じ端末を持ってるわけじゃないんですよね。

もちろんOSだってバラバラで、さきほど書いた通りみんなが一斉に最新OSにしてくれるわけじゃありません。OSが違うということはあなたのソフトウェアを動かす根本のプログラムが変わったということです。同じ挙動するわけないと思ってください。

他にも電波状況が悪い時、機内モードの時、サーバー側で通信障害が起きた時、完璧じゃないにしてもそういうことが起こることを想定したコードになってますか?

CocoaPods, Carthage, SwiftPackageManagerなどでライブラリの管理ができている

採用率 25%

全く使ってないのはパッケージ管理というもの自体を知らなさそうなので採用され辛いです。
だからって明らかに不要なパッケージを入れまくってチグハグなレイアウトとソースコードだと「色んな神機能を自分で実装できた気になれて気分が良かったんだろうなあ」ぐらいの感想で終わります。

Storyboard,XIB,ソースコードでレイアウト,などが適切に分離されて実装されている

採用率 30%

ソースコードを見てMain.storyboardに全部の画面が収まってたらそっ閉じされます。
このあたりが出来てるようなら、ようやくソースコードの中身をちゃんと見ようかなとなります。

適切に共通化されてマジックナンバーなども乱立しないように管理されたソースコードになっている

採用率 35%

var flg: Bool = true
if !flg == true, hoge > 145, str = "Swift" {
   print("条件を満たした")
   
}

書いてて吐き気してきました。

MVCでコードが書けている

採用率 40%

ViewやViewControllerはUIKitがそのままUIViewControllerとかの名前なのでいいのですが、Modelがひとつもなくて全部ViewControllerに押し込まれていたりすると厳しい。

認証を必要とするAPIとの連携ができる

採用率 45%

サーバーレスでアプリを作るにはFirebaseが便利ですが、現場のほとんどがサーバーレスじゃありません。Storeに出したアプリがサーバーレスなのはいいのですが、それならせめて別のAPI連携の練習プロジェクトをgithubにあげといてくれたりすると嬉しいですね。

改修に対応しやすいレイアウトが組めている

採用率 50%

Autolayoutがパズルみたいな入り乱れてませんか?
「ちょっとこのUILabelとUIImageViewの位置逆にしてよ」という改修があった時に制約エラーが出まくって取り返しのつかない事態になりませんか?
なるべくStackViewなど使って改修のしやすいソースコードにしてください。

RxSwiftなどを使ってリアクティブプログラミングを扱える

採用率 60%

このあたりからそろそろ僕も怪しいです、脱素人感が出てきます。それか僕もまだ素人なのかもしれません。

MVP, MVVM, VIPERなどMVC以外の設計で作れる

採用率 70%

使いこなせなくてもいいので勉強がてら試しに1画面だけMVVMを導入してみたとかでも良いかと思います。

テストコードが書ける

採用率 75%

サーバーサイドでは必須なテストコードもまだフロント側では必須とは言えないぐらいの印象です(知らんけど
導入するだけなら簡単なので試してみたら好印象な気がします。

CI環境などスマホアプリに関わる周辺技術やその環境が構築できる

採用率 80%

ここまで来るとほぼ完璧な気もしますが、あとは社風とか給料とかの問題もあって採用率100%というのはありえないので、この辺りが上限じゃないかと思います。

2023年5月28日追記

最初にこの記事を書いてからすでに3年が経過してiOSの状況も変化してきました
SwiftUIを採用するプロジェクトも少しずつ増えておりTwitterで定期的にアンケートを取っていたところ未経験者という点においても昔よりだいぶSwiftUIだけ勉強した人も採用されやすいようです
まだUIKitだけ勉強した方が採用されやすいのは事実ですが、来年には同じぐらいになっていてほしいなと思います

https://twitter.com/sakiyamaK/status/1655578842080112641

2023年11月5日追記

そしてついに業界未経験者でもSwiftUIを勉強した方がいいというアンケート結果になりました!
UIKitを勉強しても当然上記のことを学べば採用されるとは思いますが、SwiftUIの方が有利になってきたようです。

https://x.com/sakiyamaK/status/1720454569405333575?s=20

この記事が気に入ったらサポートをしてみませんか?