Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

概要

本記事は、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が出てきた
  • 次期クロスプラットフォーム開発かもしれない

最後に

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

関連リンク

社内向け記事です。

参考リンク

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

tonionagauzzi
Android/iOSのアプリ開発をしています。株式会社ACCESSのSmart Device Specialistです。
https://nagauchi.net/
access
SDNからセンサ、家電、電子書籍まで。ACCESSはあらゆるレイヤのデバイス、サービスを「繋げて」いきます。
http://jp.access-company.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away