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

More than 1 year has passed since last update.


概要

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


開発手法


まとめ

手法
使用言語
特徴

ネイティブ
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
ネイティブアプリ


トレンド

スクリーンショット 2017-12-19 23.54.43.png

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の方がよく使われていそう

スクリーンショット 2017-12-24 17.14.59.png

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


参考資料