LoginSignup
51
49

More than 3 years have passed since last update.

クロスプラットフォーム開発手法の比較(Xamarin、Flutter、React Native)

Last updated at Posted at 2018-12-16

概要

本記事は、AndroidとiOSのクロスプラットフォーム開発手法を比較したものです。
2018年12月に、
ACCESS Advent Calendar 2018の17日目の記事として一般公開しました。

本記事は2018年8〜9月頃に調査して社内勉強会で発表した内容なので、古い情報がありましたら教えてください。

比較

対応比較

手法 iOS Android Windows macOS Web Frontend
Xamarin
Flutter
React Native

機能比較

手法 主な開発環境 言語 API UIパーツ
Xamarin Visual Studio C# 独自API+
ラッパーAPI
ネイティブ
Flutter Intellij(Android Studio) Dart 独自API 独自レンダリング
React Native Atom Javascript 独自API ネイティブ
手法 アプリアーキテクチャ 主な採用/移行ターゲット
Xamarin MVVM C#が好きな人
Flutter Reactive オブジェクト指向言語の利用者
React Native Reactive JavaScriptが好きな人や、ReactでWebフロントエンド開発してた人
手法 強み 弱み
Xamarin ・UIはXamlかコードで選べる(Xamarin.Forms)
・Xamarin.NativeというラッパーAPIの存在
・通信やDB周りの共通化に向いている
・C#は歴史も長く、便利なライブラリが多い
・レンダラーを作る手間がかかる(Xamarin.Forms)
・UIは共通化できない(Xamarin.Native)
・検索結果にFormsとNativeが混ざる
・定期的にVisual Studioがバグる
・UIのカスタマイズをしずらい
・公式ドキュメントの中途半端な翻訳
・アプリの起動が遅い(改善Tipsあり
Flutter ・ホットリロードが爆速
・Widgetsの数が豊富
・標準パーツでそこそこ綺麗なアプリを作れる
・Intellij(Android Studio)を開発に使える
・フレームワークのバグが少なめ
・日本語の記事がまだ少ない
・dartのエンジニアが少ない
・Realm未対応プラグイン公開🎉)
・マテリアルデザイン以外のUI作成に弱い
React Native ・ホットリロードが早い
・Flux(Redux)を採用でき、理解して使うとバグが減る
・困ってもググれば解決策がすぐ見つかる(ただし、すぐ次の問題で困る)
・JSXはスクリプトの中にXML、その中にスクリプトということもよくあり、そういうの嫌う人は受け付けない
・Flux(Redux)の理解が難しい(Facebookが推奨する状態管理モデル、単方向データフロー)
・npmの理解が必要
・使えるライブラリを探すのに苦労する
・サードパーティライブラリに依存することが多い
・まだ0.61.5で正式リリースされておらず、今後どうなるか未定

社内で寄せられた質問と、それに対する回答

ネイティブAPIのサポート具合は?(Notificationなど)

ネイティブSDKのメジャーバージョンアップからのアップデートタイムラグはどれくらい?

ネイティブの追随の早さについては、確たる情報を得られなかったが、

その他の手法

Unity

  • やっぱりゲーム用
  • 昔はボタンを作るにも画像が必要だったが、最近変わった

Kotlin

  • Kotlin Nativeが出てきた
  • 次期クロスプラットフォーム開発かもしれない

最後に

今回、作成時間が圧倒的に足りず、後半はやっつけになってしまいました。
ご意見やより正確な/新しい情報を積極的にお待ちしています。

関連リンク

社内向け記事です。

参考リンク

各サイトの皆様に御礼申し上げます。

51
49
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
51
49