モバイルアプリ開発では、開発フレームワークやプログラミング言語が多くて判断に迷いませんか?
この記事では、代表的な3つのモバイルアプリの開発手法を紹介します。そして、それぞれで採用されているプラットフォームとプログラミング言語の特徴を説明します。
言語を選ぶ前に!3つの開発手法を知ろう!
モバイルアプリの開発手法は実はいろいろあります!大きく分類すると3つに分けられるのでまずは、開発手法から考えましょう。
ネイティブアプリとは?
ネイティブアプリとは、AndroidやiOSでデフォルトで使われている開発手法です。AndroidやiOSが公式にサポートしているという点がメリットです。
高速に動作しますし、何よりARなどのAppleやGoogleが発表した最新機能をいち早く使えるというメリットがあります。BtoC向けでの採用が多いです。
ハイブリッドアプリとは?
ハイブリッドアプリとは、GoogleやAppleではなく、サードパーティーのMicrosoftやFacebookなどが推している開発手法です。
AndroidとiOS両方を1つのプロダクトとして開発できるのでコストパフォーマンスと開発速度に優れます。
ただし、フレームワークによっては、アプリサイズが大きかったり、遅かったりします。
社内向けのアプリで採用されることが多い印象です。
Webアプリとは?
Webアプリとは、モバイル対応されているWebサイトの事です。厳密にはアプリではないです。
AndroidとiOSを共通化できるだけでなくPC向けにもコードを流用できるメリットがあります。
時々、ハイブリットアプリの事をWebアプリと呼ぶ人もいます。要注意。ハイブリットアプリもHTMLを使うので、混乱しやすいのだと思います。
Webアプリと、モバイルアプリのどちらを作るべきかは、以前記事を書いたので参考にしてください。
ネイティブアプリ
Android(ネイティブ)
Kotlin
新規でAndroidアプリを作るのであればKotlin一択です。
2011年に登場した新しい言語です。
Javaをさらに簡潔・安全にしたような言語で、Javaと完全に互換性があります。

Java
Kotlinが登場する前までのAndroid界隈はJava一色でした。
1996年に登場した古い言語なので、書籍などでの情報が豊富にありますが、古い言語なので若干使いづらいです。
個人的には、最初に覚えた言語なので思い入れがあります。学んで損はないと思います。
C++
機械学習やARなどディープな世界に足を踏み入れている人だけが学べば良いと思います。
アプリが超高速になる可能性もありますし、バグのオンパレードになる可能性もある言語です。
1983年に登場したかなり古い言語でファンも多いのですが、Android端末で使うには、いささかハードルが高いです。

iOS(ネイティブ)
Swift
新規でiOSアプリを作るのであればSwift一択です。
Objectove-Cと互換性があります。モダンな言語でとても使いやすいです。
Swiftが登場したときのWWDCはとても盛り上がりました。
Objective-c
Swiftが登場する前まではiOS界隈はObjective-cでした。
スティーブジョブズはObjective-cが好きだったという話もあります。
正直、使いづらいです。文法がすごく、、独特です。
ハイブリッドアプリ
Flutter:Github Star 114Kの超人気フレームワーク
最近、流行りのハイブリッドアプリ用のアーキテクチャです。
Googleが作っているのでAndroidとの互換性はバッチリです。AndroidStudioという万能のIDEを使って開発できるので、開発効率も高いです。
ホットリロードという、コードを書いてすぐにUIに反映できる最新の機能を搭載していて、ドヤれます。でもアプリサイズが大きいというデメリットもあります。
最近は、Droid会議とかでFlutterの登壇者も増えてきて、徐々にハイブリットアプリ界隈での不動の地位を確率しつつあります。

Dart
FlutterがGoogle製であれば、言語であるDartもGoogle製です。
2011年生まれの新しい言語。JavaScriptの代替となる事を目指しています。2021年現在、まだJavaScriptの人気を上回ることはできていません。
React Native:Github Star 93.5Kの人気フレームワーク
Facebookが開発しているハイブリッドアプリ用のアーキテクチャです。
Reactという有名なJavaScriptライブラリと同じ思想で作られています。かなり高速に動作すると言われています。ちなみにReactという思想は理解するのが結構難しいです。
イケイケのベンチャー会社が作るハイブリッドアプリは、全部React Nativeみたいな雰囲気があります。ただし最近はFlutterに勢いを奪われがちです。
JavaScript
その名前の通りスクリプト言語。動的な型付け言語で自由度がすごく高いです。
かっちりした事はできない言語。逆に言えば、かっちりしていない人たちが使うと、本当のカオスを生み出します。

Ionic:Github Star 43.1Kの人気フレームワーク
100%無料でオープンソースのフレームワーク、MITライセンスと大規模な開発コミュニティに支えられています。
FacebookとかGoogleとか個別の企業ではなく、ユーザに支えられているというのが良いです。Angularなどのフレームワークと一緒に使用します。
コンシューマー向けのアプリではなく、社内向けのアプリで使われている印象です。コンシューマー向けは高速に動作するReactNativeとかが多く採用されている気がします。

TypeScript
その名前の通りスクリプト言語です。だけどTypeという名前が表す通り、型宣言があります。
JavaScriptと互換性のある言語で、コンパイルすると、JavaScriptになります。
かっちりした事もできるJavaScriptという感じで人気があります。
Apache Cordova:Phone Gapという製品版を持つフレームワーク
名前の通り、Apache財団が開発しているフレームワークです。
元々はAdobeがPhone Gapという名前で開発していましたが、その後、Apache財団に寄付されました。
JavaScript
前述の通りの、かっちりしない言語です。
Xamarin:Github Star 5.2K Microsoft開発フレームワーク
最近、オープンソースコミュニティと仲良くなりつつあるMicrosoft社のフレームワークです。
ちなみに、新型コロナウイルスの接触確認アプリはXamarin製です。
ハイブリッドアプリ界隈では、勢いがないですが、後ろ盾がMicrosoftなので、安定的に開発は続けてもらえそう安心感があります。
C#
Microsoftが開発している言語。.NET FrameworkなどWindows系の開発をしている人にはお馴染みの言語です。
私は触った事はないが、Windows系のツールとの相性がめっちゃ良いので、割と良いという噂を聞きます。

Webアプリ
モバイル対応Webサイト
JavaScript
前述の通りの、かっちりしない言語です。
まとめ
いかがでしたでしょうか。モバイルアプリ開発では、プラットフォームやプログラミング言語の特徴を理解することが重要です。 この記事を読んでシステム要件にあった開発手法を選んでみてください。