2020年現在、スマートフォンアプリを開発しようと思ったら、そのターゲットとしてはAndroidとiOSの二択になるでしょう。この二つのプラットフォームさえ押さえておけば、他を考えることはまずないはずです。
逆にいうと、二つのプラットフォームへの対応は必須ともいえます。それぞれに開発してもいいですが、変化が速い現状では個別に開発している予算が下りなかったり、工数がかかりすぎてしまうという問題もあります。そこで、一つのコードでマルチプラットフォームに対応できるフレームワークや言語へのニーズが高くなります。
今回はそんなプログラミング言語、そしてフレームワークを紹介します。
JavaScript
まず言語として注目したいのがJavaScriptです。JavaScriptは元々Webブラウザ上でのみ実行されるプログラミング言語でしたが、その実行エンジンだけを取り出してNode.jsとしてサーバサイドで動くようになったり、iOSやAndroid上でも実行できるようになっています。
Cordova/Monaca/Ionic
CordovaはiOS/Android上でWebViewを表示します。WebViewなので、その上ではJavaScriptが実行可能です。WebブラウザはiOS/Androidどちらにも備わっており、UIはHTMLで開発できます。
MonacaやIonicはCordovaをより使いやすくするサービスになります。Web上で開発できる環境を提供したり、アプリ開発に便利なコンポーネントを提供します。Cordovaのままでも開発は可能ですが、より素早く、手軽にしてくれるでしょう。
ニフクラ mobile backendではJavaScript SDKやプッシュ通知用プラグインを提供しており、Cordova/Monaca/Ionicと組み合わせて利用できます。
React Native
React NativeはWebViewは用いず、JavaScriptエンジンを直接利用することでワンコードでアプリ開発できるようにします。UIはネイティブのものをReact Native経由で利用します。
React Nativeは元々Reactとして知られているJavaScriptフレームワークをスマートフォン向けに開発したものです。JSXと呼ばれる独自のUI記述構文を用います。FacebookやInstagramといった大型なアプリでも使われているので、信頼性は高いといえるでしょう。
ニフクラ mobile backendでは非公式ながらReact Native SDKを提供しています。React Native開発でよく使われるexpoでも使えます。
Dart/Flutter
開発言語はDartになります。Googleがメインで開発を行っているフレームワークになります。UIコンポーネントは独自のものになっています。iOS/Androidの他、Webやデスクトップアプリも開発できます。
ニフクラ mobile backendでは非公式ながらFlutter SDKを提供しています。プッシュ通知の機能などでiOS/Android依存になっており、Webでは利用できません。
C
Unity
スマートフォン向けにゲームアプリを開発しようと思うならば選択肢にあがるのがUnityでしょう。Unityではメイン言語としてC#を用います。そしてiOS/Androidアプリの他、Webやデスクトップ向けにもアプリをビルドできます。
ニフクラ mobile backendではUnity SDKを公式提供しています。
Xamarin
Xamarinは元々Xamarin社が開発していたスマートフォンアプリ開発用フレームワークです。2016年にMicrosoft社に買収されました。iOS向けの開発時にはmacOSが必要ですが、Android/iOS両OS向けの開発が可能です。Xamarin.FormsとネイティブUIのどちらかでUIを開発できます。
ニフクラ mobile backendでは残念ながらXamarin向けにはSDKを提供していません。
Delphi/RAD Studio
Delphiを使ってiOSやAndroid、macOS/Windowsなど多彩なアプリケーションを開発できるのがRAD Studioです。画面もビジュアルデザイナーを使って開発できます。
ニフクラ mobile backendでは残念ながらDephi向けにはSDKを提供していません。
Ruby/RubyMotion
スクリプト言語で知られるRubyを使ってiOS/Android、さらにmacOSアプリを作るならRubyMotionが利用できます。iOS13.2からAndroid 8.1まで対応し、watchOSやtvOSまで利用できます。
ニフクラ mobile backendでは非公式のRuby SDKがありますが、RubyMotionには非対応です。
まとめ
現在、多くのプログラミング言語でマルチプラットフォームに対応したアプリが開発できるようになっています。自分好みのプログラミング言語、そしてフレームワークを選択してください。
その多くにニフクラ mobile backendではSDKを提供していますので(一部非公式ですが)、ぜひ組み合わせて使ってみてください。