FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

1つのコードでマルチプラットフォームに対応できるアプリ開発言語まとめ

f:id:mbaasdevrel:20220111172046p:plain

現在はAndroidとiOS、この2つのプラットフォームに対応するのは基本と言えます。となるとSwiftとJavaを覚えなければならないのでしょうか。2つの言語でそれぞれのアプリを開発し、ユーザ体験を統一したり、更新を重ねていくのはとても大変です。

そこで1つのコードからマルチプラットフォームに対応できるフレームワーク、プログラミング言語を使って見ましょう。開発工数を下げたり、同じUI/UXでアプリを提供できるようになります。

主なマルチプラットフォーム対応フレームワーク/プログラミング言語

2022年現在、主なフレームワークは次のようになります。

フレームワーク プログラミング言語
Unity C#
Xamarin C#
React Native JavaScript
Cordova/Monaca/Ionic Framework JavaScript
Flutter Dart
Kotlin Multiplatform Kotlin

他にTitanium SDK(2022年3月で終了)やアプリカンRubyMotionNativeScriptなどもあります。

Unity

2D/3Dゲームを開発するプラットフォームとして有名なのがUnityです。Unity自体はモバイルアプリに限らず、デスクトップやコンソールゲームなど幅広く対応しています。D&Dで多くのことが実現できますが、コードを書く際にはC#で行うのが基本です。

Unity - Unity

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の実行速度が向上し、特に遜色なく利用できます。

Apache Cordova

Monaca - すべての人にアプリ開発を

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とともに、アプリ開発にチャレンジしてください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。