概要
クロスプラットフォーム開発のまとめは色々な所にあるので改めてここでまとめる必要はないかもしれませんが、個人的に整理したかったのでまとめます。結局この手の話は結論(これがいい!)というのはなく、開発する人やその時の状況によって変わってくると思うのであくまで参考程度に。
開発手法
まとめ
手法 | 使用言語 | 特徴 |
---|---|---|
ネイティブ | 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
- ゲーム開発エンジン
- GUIでの開発ができる。必要に応じてコードを書く
- コードはC#で開発する。JSでの開発もできるがUnity用のJSになっている
- 参考
Cocos2d-x
- ゲーム開発フレームワーク
- C++で開発する
- 参考
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
- Swiftを使ってAndroidアプリも開発する
- Androidの簡単なプログラムであればSwiftで開発ができる
- 但し、まだ一般的な感じはせず実用性もあまり高くなさそう
- グーグルがKotlinを正式サポートする前はJavaのライセンス問題でOSSのSwiftを採用するのでは!?という噂も一部あった(あくまで噂..)
- 参考
Kotlin
- Kotlinを使ってiOSアプリも開発する
- Kotlin/Nativeを使ってKotlinをネイティブコードにコンパイルできる
- 参考