「トランジション採用」でフリーランスの正社員転換を支援 他
- 隔週月曜更新!フリーランス・副業ニュース
iPhoneが日本で発売されてから14年が経ちました。
この14年間でスマホアプリの開発環境は大きく変わっており、アプリ開発からしばらく離れているエンジニアにとっては、何をすればいいか分からない人も多いのではないかと思います。
そこで、スマホアプリ開発実績の多い企業のヒアリングを元に、どのような開発案件が流行っているのかを調べました。これからアプリ開発の仕事を受けたい人にとって、どんな開発言語・開発環境を学ぶべきかを解説します。
※この記事はテックジム株式会社による寄稿です
テックジム創業者。ガラケーサイト制作、スマホアプリ開発を経て、「授業をしないプログラミングスクール」で3度目の起業。1.2万人が受講した「ゼロから始めるPython入門講座」を全都道府県で開催。(Twitter:@ikiben)
目次
iPhoneはiOSというAppleの独自OS(オペレーションシステム)が搭載されているのに対し、それ以外のスマートフォンはGoogleがライセンスフリーで提供しているAndroidが搭載されており、開発者はAndroid端末と呼んでいます。
なお、かつてはマイクロソフト提供のWindows Phoneもありましたが、2019年にサポートを終了し、スマホアプリはほぼiOSアプリとAndroidアプリだけになりました。
iPhoneアプリ(iOSアプリ)はApp Storeを、AndroidアプリはGoogle Playを通じてダウンロードをすることができます。したがって、開発者はこの2つのプラットフォームにDeveloper登録をして、スマホアプリを公開します。
なお、個人でもスマホアプリは提供が可能で、有料で販売したり、広告を貼って収入を得ることができます。個人で公開したアプリはポートフォリオにもなるので、まずは個人で公開してから、企業案件を受託するフリーランスエンジニアもいます。
前述の通り、iOSアプリはiPhoneだけのために開発する必要がありますが、iPhoneは普及率が高く、開発工数もAndroidアプリに比べて低いため、iOSアプリをまず公開してからAndroidの対応を検討をするアプリ提供会社が多い傾向にあります。
アプリの公開にはAppleの承認が必要で、「なかなか承認が通らない」という難点もあります。それはAppleが「iPhone利用者によいアプリを使ってもらいたい」という考え方を持っているから。良質なアプリを作ることを心がければ問題ないかと思います。
なお、一時期は日本で70%のシェアを誇っていたiPhoneですが、すでに44%まで下がったという調査データ(MMD研究所調べ)もあります。
世界のOSシェア率が70%を超える(2022年5月現在)というAndoroid。とくに開発途上国では、iPhoneが高価なため、Andoid普及率が高い傾向にあります。
世界で挑戦したい人や、海外案件ではAndroidアプリの開発が優先されます。
かつてのGoogle Playは、アプリ申請後に即公開していたため、ジャンクアプリも多く、一種の無法地帯と化していましたが、近年は審査も厳しくなっています。
ちょっと出来心で不正アプリにチャレンジしたり、そのような開発案件を受けるのは絶対に控えてください。
一般的に、企業案件は「すべての人に使ってもらいたい」という考え方があるので、両方のOSに対応する体制をとっておかなければなりません。
また、すでに開発済みのアプリのバージョンアップなどの案件では、すでに使用されている開発環境を指定されることもあります。しかし、場合によってはゼロから作り直したほうが工数が低い場合もあるので、下記にあげる5つの開発環境を経験しておけば、発注側への的確なアドバイスができることでしょう。
iPhone3Gが日本に初上陸したのは2008年。それ以前は、スマホアプリエンジニアはいなかったことになります。GoogleやAppleがSDK(ソフトウェア開発キット)を公開してから、エンジニアたちは独自で学習してアプリの公開まで漕ぎ着けました。
当時はスマホアプリについて学べるスクールがなかったので、企業はスマホアプリエンジニアを雇うすべがありません。そのため、AppStoreがスタートした当初は、個人による開発者が中心で、月収100万円を超える開発者もたくさんいました。
ところが、数年後には大手のIT企業が参入してきました。広告によってランキングを上げることが当たり前になってくると、個人アプリは埋もれてしまい、「一攫千金」のアプリ開発ブームは終わりました。
そうなると、個人でスマホアプリを公開する意欲が減り、アプリ開発経験者は少なくなります。さらに、マーケティングの下手な自社アプリ企業や、採用力のない小所帯の開発企業は、大手に負けてどんどん消えていきました。
また、アプリ開発経験があっても、しばらく現場から離れている人は、バージョンアップされているSDKをまたイチから学び直さなければいけないというジレンマがあります。
このような状況下にも関わらず、企業案件は一定数ありますから、スマホアプリエンジニアの取り合いが起こります。近年ではWEB開発とセットでスマホアプリ開発を受発注する企業が増えております。
私の周りでも、SES(エンジニア派遣会社)や受託開発会社から「スマホアプリエンジニアが入れば案件が取れたのに」という声が多く寄せられました。そこで、今回テックジムでは「スマホアプリ開発コース」を新設することにことにしました。
各スクールのスマホアプリ開発コースを見てみると、開発環境が1つに固定されているケースが多いことに気づきました。これは「とりあえずiPhoneアプリが作れればいい」とか「Androidアプリが作れればいい」という考え方の現れであり、これは危険かもしれないと思いました。
というのも、下記に紹介しますように、様々な開発要件が重なることで、「どのSDKを使うべきか」を適切に判断しなくてはならないからです。
「個人でスマホアプリを作りたい」のであれば「ご自由にどうぞ」でいいですが、企業案件ではそうはいきません。実際に現場で使っている開発環境で経験を積むことが重要なのです。
現場では「この案件はどの言語で開発しますか?」というような質問をよくされますが、最近では「開発ツール」や、「SDK」もしくは「フレームワーク」など、「開発環境」のことを聞いてくる傾向があります。
かつては「Java案件」や「PHP案件」など「開発言語」を指して表現することがありました。ところが、スマホ案件の場合は「SwiftUI案件」「Kotlin案件」のように「開発環境」を指して表現することが多いです。
今回は「開発環境」ごとに、そこで使われるプログラミング言語やツールなどを解説していきます。
▲出典:Flutter
「Flutter」はGoogleが提供しているフレームワークです。単一のコードで、Android、iOS、Linux、macOS、Windows、GoogleFuchsiaに対応したアプリケーションを開発することができます。
「Flutter」はフレームワークなので、「Android Studio」や「Visual Studio」、「Xcode」といった開発ツール(IDE:統合開発環境)にインストールして、実際にコーディングをします。
具体的には、開発ツールにて「Flutterプロジェクト」を生成してコーディングしていきます。
開発言語は「Dart」です。JavaScriptとよく似ている言語です。ゼロからはじめる人やJavaScriptに慣れた人は「Flutter」から手をつけるのがいいでしょう。
モバイルアプリ開発にGoogleのFlutterを使うべき8つの理由
Workship MAGAZINE
「Flutter」の使用メリットは、iOSとAndroirdのどちらにも対応できるところです。単純に開発時間が半分になるというインパクトがあります。
企業案件だと「iOSアプリは予算をかけてiPhoneに最適化させてきちんと作りたい」という場合もあるので、それよりは「両OS対応(クロスプラットフォーム)のアプリを個人でさくっと作って公開したい」という方にオススメです。
次に紹介する「React Native」もiOSとAndroirdのどちらにも対応できるのですが、近年、「Flutter」の人気が上がってきております。人気の理由に「慣れると爆速で開発できる」という意見が多いようです。
「React Native」に対し、後発の「Flutter」のほうが人気が高いということは、「両方試してみた結果、Flutterのほうがよい」と判断したエンジニアが多いからでしょう。
▲出典:React Native
「React Native」は、Mata(旧Facebook)が提供しているフレームワークです。Android、iOS、Web、Windowsのアプリ開発に対応できます。
こちらも「Android Studio」や「Visual Studio」、「Xcode」のいずれかの開発ツールを使い、「React Nativeプロジェクト」を生成してコーディングしていきます。
開発言語は「JavaScript」もしくは「TypeScript」です。「Flutter」よりも開発環境構築の工程が多いのが難点です。
React Nativeとは?映画『マトリックス』を例に、非エンジニアでもわかるネイティブアプリ解説
Workship MAGAZINE
まず「Flutter」と同様に、クロスプラットフォーム対応できる点が使用メリットです。
また、Flutterでは不可能な「OTAアップデート」ができる点は、「React Native」ならではの「メリット」といえるでしょう。。OTAアップデートとは、アプリの審査を通さずにアップデートする方法です。文言変更など、ちょっとした修正のために再審査にかける手間が省けるのです。
また「React Native」がスタートしたのは2015年で「Flutter」の2017年に先んじており、React Native案件が多い時期がありました。Googleも長らく「React Native」を採用してきた歴史があります。
つまり、その開発環境に慣れている会社も多くいるので、「React Native」は捨てきれない状況にあります。
また「React」に慣れた開発者であれば「React Native」の学習コストは低く、とっつきやすいという点があります。
ちなみに「React」はMetaが提供するJavaScriptライブラリで、エンジニアたちに絶大な支持があります。「オワコン」などと言われながらも、いまだにReact Nativeが活用されているのは、このような理由によるのかもしれません。
▲出典:Apple Developer
「Swift」とは、Appleが開発したプログラミング言語です。そして、「SwiftUI」とはiPhoneアプリやMacアプリのユーザーインターフェースを簡単に構築できるフレームワークです。
iPhone登場当初は、開発者は「UIKit」というフレームワークを使用し、言語は「Objective-C」でコーディングしていました。その後、2014年に「Swift」を発表、2019年に「SwiftUI」を発表したという歴史があります。
その度にiOSエンジニアは新しい学習を強いられてきましたが、結果的にはコードの記述数が圧倒的に少なくなり、開発スピードが向上しました。
開発ツールは、「Xcode」という開発ツールを使います。ただし、この「Xcode」は、Mac以外のパソコンでは使えません。そのため、「React Native」などの両OS対応の開発ツールがリリースされるまでは「iPhoneアプリを開発するにはMacを使うしかない」時期がありました。いまもなお、Swiftのコーディングをするためには「Xcode」が必要です。
少しマニアックな話をすると、Mac以外のPCでも、仮想化することで「Mac OS」をインストールして「Xcode」を実行することが可能です。
Swiftでできることとは?iPhoneアプリの開発ならこのプログラミング言語!
Workship MAGAZINE
まず、「Xdode」使用のメリットですが、これはiPhone独自の表現方法が簡単に書けることです。Androidにはない「iPhone独自の表現」が地味に多く、それをクライアントが強く求めるケースがあります。
そういう場合は、Xcodeを使い、従来の「Objective-C」か「Swift」でコーディングするしかありません。そして、その際には「Swift」を使うほうがコーディングのスピードが上がるでしょう。
「Swift」を使っている人も、「SwfitUI」の登場以前は、「Storyboard」や「Xib」というGUI(グラフィックユーザーインタフェース)を使ったり、「UIkit」を使っていたので、人によっては自分の慣れた環境で開発を続けているようです。こういったところがXcode遣いの厄介なところです。
とはいえ、これからiOSアプリを作りたい方は最終進化形の「SwfitUI」を使うのがいいかと思います。
▲出典:Kotlin
「Kotlin」はAndroidが使用を推奨している開発言語で、Androidデベロッパーの60%に使用されているそうです。Javaとの相互利用もでき、Javaよりもコード数が少なくて済むというメリットがあります。
開発ツールは多くの人が「Android Studio」を利用して「Kotlin」のコーディングをしています。というのも、Googleが「Android Studio」で開発することを推奨しているからです。
以上のことから、公式ツールで公式言語を使うというのが「安全」でしょう。
なお、Googleは2015年に「Eclipse」と「Ant」によるAndroid開発のサポートを打ち切りました。
Kotlinでできることとは?Googleが推奨する次世代Android用言語
Workship MAGAZINE
ずばり「Java」に慣れ親しんだ方には学習コストが低いということです。両iOS対応であれば「Flutter」や「React Native」を選ぶべきです。
iOSアプリを「Xcode」で開発する場合が多いので、「それではAndroid対応をどうするか」と考えたときに、はじめて選択肢にあがるのが「Ktolin」です。「flutter」や「React Native」のほうが慣れているということであれば、そちらを選ぶ開発者もいるでしょう。
このように書くとメリットが薄いと思うかもしれませんが、世の中にはJava開発者が多いのは事実です。彼らにとっては、Javaと親和性があってJavaよりもコード数が少なくなる「Kotlin」を使ってみようということになります。
かつて、ガラケー時代のアプリ開発はJavaベースで行われておりましたし、Android端末が登場した当初も、Androidアプリ開発者は「Javaで開発するのが当たり前だ」という時代がありました。開発者は慣れ親しんだ開発環境を選び易いので、その流れが脈々と続いているということなのでしょう。
▲出典:Unity
「Unity」は、ゲーム開発プラットフォームです。クロスプラットフォーム対応で、モバイルゲームやパソコンゲーム、ブラウザゲームなどの製作に用いられます。
開発言語は「C#」です。かつては「UnityScript」や「Boo」も使えましたが、現在は廃止されています。
また、「Unity」は開発環境の利用のみならず、アセットと呼ばれる「3Dオブジェクト(空間・物体)」を売買することができます。
かつて、「Cocos」などの他のゲーム開発ツールなどもありましたが、現在は「Unity」一強となりました。
Unityでできることとは?世界中のゲーム開発に使われるゲームエンジン
Workship MAGAZINE
前述のゲーム開発の他に、VR(仮想現実)やAR(拡張現実)プロジェクトの開発も可能で、アニメーション作成や、建築設計、医療分野、自動車分野など、多様な目的で使われています。
無料のアセットも非常に多く配布されており、リッチなコンテンツを容易に作ることができるのも魅力でしょう。また「Blender」を利用している3Dクリエイターも、アセットを販売したり、比較的簡単にアプリを作ることが可能です。
昨今、バズワードとなっている「メタバース」でも、Unityは注目の的です。VTuberのキャラクターやモーションなども制作できます。
すでに1500万台を出荷したVRゴーグル「Qest2」で提供されるアプリは「Android」で動いており、「Unity」で開発可能です。
今後、様々なプラットフォームが、VRゴーグルや、XR(クロスリアリティ)グラスに参入してくるため、3Dコンテンツ開発は、ますます需要があがってくるでしょう。
メタバースとは何か?もはや知らないとマズい、世界を一変させるトレンド
Workship MAGAZINE
実際の開発案件では、開発環境を指定してくる場合や、開発環境をこちらから提案することがあります。その際にこの5つをおさえておけば、大抵の案件はこなすことができます。
逆に言えば、「Kotlinの技術者が欲しい」などと、特定技術に長けたエンジニア人材を探すような採用の動きがあります。自分がどの分野でどのように活躍したいかを見極め、開発言語・開発環境をマスターしていく必要があります。
なお、テックジムではこの5つの開発環境を学べる「スマホアプリ開発コース」をご用意しております。スマホアプリエンジニア、あるいはメタバースクリエイターとして飛躍していきたい人は、ぜひチャレンジしてみてください!
(執筆&提供元:テックジム 編集:少年B)