XamarinとUnityとCordova比較

iOS/Androidのアプリを同時に開発できるツールはいくつかあります。それぞれ、実現の手法や開発言語も異なりますので、一概にどれがベストとは判断しにくいものですので、それぞれ特徴を比較してみました。
(使った事があるものだけです)

Xamarin

【描画】ネイティブUIほか
【言語】C#
【提供元】Microsoft
Xamarinは主にツール系の開発に向いています。画面の描画にはOSネイティブのUIが使用されます。したがってiOSとAndroidではビジュアルが全く違います。共通化できる部分は共通化し、共通化できない箇所は個別に書きます。ただ、個別に書く際にもC#で書けるので、障壁は低いです。
結局はiOS/AndroidのOSの知識が必要になる上、XAMLというXMLでUIを構築しますので、ある程度のアプリを作れるようになるまで、学習コストがかかるのが欠点です。

Unity

【描画】OpenGL ES
【言語】C#
【提供元】ユニティ・テクノロジーズ
Unityは主にゲームやエンタメ系アプリに採用されています。画面の描画には3Dグラフィックス等を描画するAPIのOpenGL ESを使用しています。UIの描画にはUnityで共通実装されたuGUIというモジュールを使いますので、iOS/Androidで共通のビジュアルになります。iOS/Androidで全く同じコードが使えるのは一つのメリットです。
ゲーム開発が基本のため、Xamarinに比べると、描画においては少しオーバースペックで、CPUやメモリの負荷は多めになります。
GUIでUIの配置ができるので、uGUIは入り口はとっつきやすいです。
似たようなツールとして、Cocos2d、UnrealEngine、CoronaSDKなどがあります。

Cordova

【描画】WebView
【言語】JavaScript他
【提供元】Apache
Cordovaは主にツール系で採用されています。画面の描画は主にWebViewで行います。アプリの画面に見えて、実際にはブラウザが埋め込まれているだけなんですね。
HTML5ベースの描画とJavaScriptによるコーディングを行います。ネイティ部の機能の一部をJavaScriptから呼び出せるように工夫されています。
凝ったUIや複雑なロジックを実現しようとすると、途端に使い物にならなくなります。Cordovaで実装されていない機能を実現しようとすると、結局、ネイティブ部分では結局、SwiftとJavaで書くことになります。
ウェブの技術者が揃った環境で、シンプルなアプリの実装を低コストで行う場合には、悪くないかもしれません。

こんくるーじょん

Xamarinに偏った見解ではあります。厳しいコメントお待ちしています。

エンタップについて

エンタップは、Xamarinでのスマホアプリとか、ウェブサービスとか色々作ってます。

いいなと思ったら応援しよう!