現在はAndroidとiOS、この2つのプラットフォームに対応するのは基本と言えます。となるとSwiftとJavaを覚えなければならないのでしょうか。2つの言語でそれぞれのアプリを開発し、ユーザ体験を統一したり、更新を重ねていくのはとても大変です。
そこで1つのコードからマルチプラットフォームに対応できるフレームワーク、プログラミング言語を使って見ましょう。開発工数を下げたり、同じUI/UXでアプリを提供できるようになります。
- 主なマルチプラットフォーム対応フレームワーク/プログラミング言語
- Unity
- Xamarin
- React Native
- Cordova/Monaca/Ionic Framework
- Flutter
- Kotlin Multiplatform
- どのプラットフォームを選択するか
- NCMBのSDK対応状況
- まとめ
主なマルチプラットフォーム対応フレームワーク/プログラミング言語
2022年現在、主なフレームワークは次のようになります。
フレームワーク | プログラミング言語 |
---|---|
Unity | C# |
Xamarin | C# |
React Native | JavaScript |
Cordova/Monaca/Ionic Framework | JavaScript |
Flutter | Dart |
Kotlin Multiplatform | Kotlin |
他にTitanium SDK(2022年3月で終了)やアプリカン、RubyMotion、NativeScriptなどもあります。
Unity
2D/3Dゲームを開発するプラットフォームとして有名なのがUnityです。Unity自体はモバイルアプリに限らず、デスクトップやコンソールゲームなど幅広く対応しています。D&Dで多くのことが実現できますが、コードを書く際にはC#で行うのが基本です。
Xamarin
XamarinはC#を使ってiOS/Androidアプリが開発できるプラットフォームです。XamarinではネイティブのUIを使うことも、Xamarin.Formsという共通UI基盤を用いた開発も可能です。
Xamarin とは - Xamarin | Microsoft Docs
React Native
Facebook社が主導して開発しているフレームワークです。UIフレームワークとして有名なReactをスマートフォンアプリに対応したものになります。実行速度やメモリ消費量で若干不利な面があるとされていますが、ライブラリも豊富でスタートアップ中心に人気があります。Cordova/Monaca/Ionic Frameworkと違って、UIはネイティブコンポーネントを利用します。
React Native · Learn once, write anywhere
Cordova/Monaca/Ionic Framework
React Nativeと同じJavaScriptを使っていますが、React NativeがJavaScriptエンジンを使っているのに対して、Cordova/Monaca/Ionic FrameworkはWebブラウザを利用しています。そのため、UIはネイティブではなく、HTMLを使って構築します。かつては速度面で不利でしたが、Webの描画速度やJavaScriptの実行速度が向上し、特に遜色なく利用できます。
Cross-Platform Mobile App Development: Ionic Framework
Flutter
Googleが主導して開発しています。開発言語はDartを利用します。Flutter自体はモバイルアプリだけでなく、デスクトップやWebでも利用できます。React Nativeとよく比較されますが、メモリ消費量や実行速度の面で優位性があります。
Flutter - Build apps for any screen
Kotlin Multiplatform
Androidアプリの開発言語であるKotlinを幅広く利用できるようにするのがKotlin Multiplatformです。ロジックを共通化し、UIについては各ネイティブ言語(SwiftやKotlinなど)で実装します。
Multiplatform programming | Kotlin
どのプラットフォームを選択するか
多彩なプラットフォームがある中で、どれを選択するかは大きな問題です。その際に考えたいのが次の視点です。
- 何のアプリを作るのか
- どの言語なら使えるのか
例えばゲーム(特に3D)を作るのであれば、Unityを選択するのがベストな選択になるでしょう。他のプラットフォームでもできないことはありませんが、茨の道になりそうです。
後は自分がどの言語であれば使えるかという観点も必要です。もちろん新しいプログラミング言語を覚えるという気概をもって取り組むのも良いですが、すでに使い慣れている言語であれば開発もスムーズに進められるでしょう。その意味ではWebフロントエンドの開発経験がある方であればCordovaやMonacaが選択肢にあがりやすいですし、Kotlinを知っているからKotlin Multiplatformにチャレンジするという方もいるでしょう。
現在、多くのプラットフォームがコードでUIを書く方向にシフトしています。例えばSwiftUI、React Native、FlutterなどはコードでUIを構築します。CordovaやMonacaを使った場合も、Reactを利用する際にはコードでUIを書くことになります。この辺りは好き嫌いが分かれるところではありますが、トレンドはコードでUIを書く方向なので、飛び込んでしまった方が良いかもしれません。
NCMBのSDK対応状況
NCMBでは以下のプラットフォームに対して公式SDKを提供しています。
- Unity
- Monaca/JavaScript
Kotlin SDKもありますが、Kotlin Multiplatformへの対応は不明です。
また、コミュニティSDK(公式サポートの提供されていないSDK)は以下のプラットフォーム向けに提供しています。
- Flutter
- React Native
- Xamarin
ぜひこれらのフレームワークを使う際に、NCMBと組み合わせてください。
まとめ
マルチプラットフォームに対応したフレームワークの採用例が増えています。もしフレームワークを変更せざるを得なくなった場合にも、NCMBを使っていれば認証やデータは使い回せます。データを一元管理できるNCMBとともに、アプリ開発にチャレンジしてください。