iOS,Android両OSのアプリを開発するための手法検討


概要

クロスプラットフォーム開発のまとめは色々な所にあるので改めてここでまとめる必要はないかもしれませんが、個人的に整理したかったのでまとめます。結局この手の話は結論(これがいい!)というのはなく、開発する人やその時の状況によって変わってくると思うのであくまで参考程度に。

開発手法

まとめ

手法 使用言語 特徴
ネイティブ iOS:Swift
Android:Kotlin
ネイティブアプリ
Cordova HTML,JS,CSS WebViewベース
Xamarin C# ネイティブアプリ
Unity C# ゲーム用
Cocos2d-x C++ ゲーム用
TitanumMobile JS WebViewベース
React Native JSX,JS,CSS ネイティブアプリ
Swift Swift ネイティブアプリ
Kotlin Kotlin ネイティブアプリ

トレンド


https://trends.google.co.jp/trends/explore?q=react%20native,Cordova,Xamarin,Titanum

ネイティブ

  • iOSをSwift(Objective-C)で、AndroidをKotlin(Java)で開発するパターン
  • リソースが十分にあるならこれが一番いいと思う
  • この後出てくるワンソースで両OSのアプリを開発できる手法でも必ずそれぞれのOSの知識は必要になってくると思うので複雑なアプリを作ろうとすればするほど逆にネイティブで書いた方が良いということはありそう

Cordova

  • WebViewベースでアプリ開発ができる
  • 基本はWebベースの技術でアプリを開発するため言語としてはHTML,JS,CSSを使う
  • Monacaを使った開発が一般的
    • MonacaとはCordovaアプリを開発するために特化した統合開発環境
  • Hello Worldくらいならすぐにできる(以下iOSの場合)
$ npm install -g cordova
$ cordova create MyApp
$ cd MyApp
$ cordova platform add ios
$ cordova run ios

Xamarin

  • XamarinはMicrosoftよりVisual Studioの一部として提供されている
  • C#で開発する
  • XamarinのAPIはネイティブのAPIを100%移植しておりロジックの共通化が可能
  • Xamarin.Formsを使うとUIの共通化もできるが一部しか提供されていない
  • そのため共通化としてはだいたい60%くらいが妥当のよう
  • 参考

Unity

Cocos2d-x

UnityとCocos2d-xではUnityの方がよく使われていそう

https://trends.google.co.jp/trends/explore?q=Unity,Cocos2d

TitanumMobile

  • WebViewベースでアプリ開発ができる
  • JSで開発できる
  • Cordovaとの違いはネイティブのUIコンポーネントをJSで扱えるところ
  • 2011年頃少し流行ったが現在はあまり積極的に使われているイメージがない(ReactNativeなどが出てきたためだと思われる)
  • 参考

React Native

  • JSX,JS,CSSを使って開発できる
  • WebViewではなくあくまでもJavaScriptランタイムでNativeのAPIを叩いて、Naitveによる描画を実現しています
  • 最近話題のライセンス問題ではReactの方はMITに変わったが、ReactNativeは未だBSDになっている
  • 参考

Swift

Kotlin

参考資料