1分で分かる!ネイティブアプリエンジニア
A:ジャバード先生!ちょっと教えて~!
B:こんにちは、ことりん君!どうしたの??
A:この前、きつねさんが運営している「きつねの本屋さん」っていうECストアの話したの覚えてる?
B:覚えてるよ~!たしかデータベースのことをお話したよね。
A:そうそう!そのきつねさんなんだけど、「きつねの本屋さん」の「ねいてぃぶあぷり」ってやつをつくりたいらしいんだぁ。
B:そうなんだ!じゃあネイティブアプリエンジニアを探した方がいいよ!
A:「ねいてぃぶあぷり」ってそもそも何なの??
B:ことりん君さんはスマホ持ってたよね?
A:持ってるよ!
B:スマホで使うアプリはインストールしてるよね?
A:もちろん!
B:それがネイティブアプリってやつだよ!
A:え、そうなの??
B:うん。スマートフォンアプリは幾つかの種類に分けることができるんだ。ChromeとかSafariみたいなWebブラウザ上で動くアプリを「Webアプリ」って呼ぶんだ。そして、スマートフォンにインストールするようなアプリをネイティブアプリって呼ぶんだよ。
A:なるほど!じゃあ、ボクはもうネイティブアプリを使ってたんだね。でも、ネイティブアプリとWebアプリって何が違うの??
B:違いは色々あるんだけど、ネイティブアプリはインターネットが接続しない環境でも使うことができるんだ。あと、スマートフォンの機能とか性能をフル活用できるのもネイティブアプリならではだね。
A:ということは、そのネイティブアプリを開発しているのがネイティブアプリエンジニアってこと?
B:そのとおり!ネイティブアプリエンジニアは、iPhoneとかAndroidのネイティブアプリ開発を専門とするエンジニアだよ!
A:分かった気がする!ちょっとネイティブアプリエンジニア探してくる!!
B:いってらっしゃーい!
ネイティブアプリエンジニアの基礎知識
ネイティブアプリエンジニアの役割を説明するに当たって、まずスマートフォンアプリについての理解を進める必要があります。スマートフォンアプリは、主に以下の3つに分けられます。
- ネイティブアプリ
- Webアプリ
- ハイブリッドアプリ
前述したとおり、ネイティブアプリはスマートフォンにストア経由でインストールするアプリ、WebアプリはWebブラウザ上で動くアプリです。ハイブリッドアプリとは、Webアプリをベースにネイティブアプリのデバイス機能を使用できるメリットを取り入れたもので、ネイティブアプリとWebアプリの両者を合わせたようなアプリです。
ネイティブアプリエンジニアは、上記種類の中でネイティブアプリを開発するエンジニアです。
皆さんがご存じのスマートフォンと言えば、iPhoneとAndroidでしょう。現在、スマートフォンのシェアは、iPhoneとAndroidの2つでシェア全体の約98%を占めています。このiPhoneとAndroidですが、OSが異なるので、アプリ自体も全く異なります。
そのため、ネイティブアプリエンジニアと一言でいっても、専門分野は以下のように分かれるのです。
- iPhoneアプリ開発専門
- Androidアプリ開発専門
- どちらも対応可能
ネイティブアプリエンジニアとはどんな人か
スマートフォンが普及したのが、ここ十数年の間であるため、ネイティブアプリエンジニアも比較的年齢の若いエンジニアが多いです。
また、その一方で、技術の変遷も非常に速いのが特徴です。たとえば、数年前までにiPhoneアプリ開発のスタンダードだったObjective-Cというプログラミング言語があります。このObjective-Cですが、Apple社が2014年に発表したSwiftというプログラミング言語の登場により、現在では使用する場面が減少しているプログラミング言語になりつつあります。
このようなスマートフォンアプリ業界特有の背景からも分かるように、ネイティブアプリエンジニアは、変化に強い人、自己研鑽ができる人などが多いという特徴があります。
採用にあたって知っておいた方がよいポイント
求人のポイント
iPhone(iOS)アプリとAndroidアプリとどちらが専門かは重要な問題です。
前述したように、ネイティブアプリは主にiPhone(iOS)アプリとAndroidアプリに分けることができます。それぞれで開発に使用するプログラミング言語が異なります。
iPhoneアプリであれば、SwiftもしくはObjective-Cを使用します。(最近ではSwiftが主流です。)また、AndroidアプリはJavaやKotlinというプログラミング言語を使用するのが一般的です。
ネイティブアプリエンジニアは不足気味
ITエンジニア自体、需要に供給が追い付いていないと言われていますが、ネイティブアプリエンジニアも同様です。さらに、Webエンジニア等と比べると、ネイティブアプリエンジニアの絶対数はかなり少ないです。
ネイティブアプリエンジニアは、Webエンジニアと比較すると、身につけるべきスキルなども多く、KotlinやSwiftといったように比較的新しいプログラミング言語を必要とするという背景もあります。
候補者によく聞かれる質問
開発環境
iPhoneアプリだとXcode、AndroidアプリだとAndroid studioなどアプリによって開発環境が異なります。また、iPhoneもAndroidもどちらのアプリも作れるものもあります。
候補者にもどの環境で開発したことがあるか聞いておくのもよいでしょう。
テスト環境
開発が完了したら動作チェックのテストが必要になってきます。ネイティブアプリエンジニアはスマートフォンのアプリを開発しているので、スマートフォン(実機)でのテストが必要になりますが、最近では実機を使用しないでテストすることもあります。リモートワークが主流になった今、会社に出社してテストをする(テスト用のスマートフォンは会社保管することが多いので出社が必須になる)のではなく、自宅からテストできる環境を整えておくのも募集するにあたり重要なポイントになるかもしれません。
ネイティブアプリエンジニアの豆知識
ネイティブアプリエンジニアが恐れるリジェクト
ネイティブアプリエンジニアにとって一番怖いのは、エラーやバグとの戦いではありません。最も恐れるのは「リジェクト」です。ネイティブアプリをストア(AndroidであればGoogle Play、iOSであればApp Store)に公開するためには、Google社、またはApple社の審査をクリアする必要があります。この審査ですが、非常に厳しく、明確な審査内容も公開されていないのです。そのため、アプリのリリースを申請しても、思わぬ理由でリジェクト(却下)されることがあるのです。
リジェクトされたからといって、必ずしもストアでの公開がNGとなるわけではない(交渉の余地がある?)のですが、ここが最大の難関だというネイティブアプリエンジニアは少なくありません。
よりよいネイティブアプリエンジニア採用のために
ネイティブアプリエンジニアとして活躍するためには、以下のようなスキルが必要となります。
ネイティブアプリ開発のためのプログラミング言語に関するスキル
繰り返しになりますが、ネイティブアプリエンジニアとして活躍するためには、プログラミング言語のスキルは必須となります。具体的にはiOSアプリであればSwift、AndroidアプリであればJavaやKotlinです。
対象のOSに関する知識
開発対象のOSに関する知識も必須です。特にネイティブアプリの場合、端末の機能、性能を最大限に引き出すようなアプリが求められることが多いです。(逆に言うと、それらが必要ないのであればWebアプリで十分かもしれません。)
アプリ開発に幅広いスキル
やや抽象的な表現となってしまいますが、ネイティブアプリ開発に関する幅広いスキルが必要です。ネイティブアプリの開発は、あまり大人数で進めることはありません。少し古い記事となりますが、すでにアプリが数百万DLされていたメルカリでさえも、社内には10人のiOSエンジニアしかいなかったとのことです。
>社内には約10人のiOSエンジニアが在籍しているのですが、ゆくゆくは100人規模を目指しています。しかし、今の設計だと1つの画面を複数人で同時に開発することが難しいんです。
引用元:https://mercan.mercari.com/articles/2018-07-02-170000/
当然ながらWebエンジニアと比較すると1人ひとりに求めらえるスキルや知識も多くなりがちです。