はじめに
私はiOS Nativeの実務経験しかなく、ハイブリッドやクロスプラットフォーム開発の実務経験はありません。
そろそろ何かターゲットを決めて学習を始めねば…と考えて、調べたことを簡潔に整理してみました。
ご注意
- 私個人のネット記事観測に基づき独断でchoiceしました。
- この記事で取り上げている以外にも、たくさんのツール・フレームワーク・サービスがあります。
- 私の所属企業における立場、戦略、意見を代表するものではありません。
- この記事の情報は2019年7月時点です。
お気付きの点がありましたら、コメントをお願いします。
なお、PWAを含む、WebサイトをWebView(内部ブラウザ)で表示する形式のアプリは当記事の対象外です。
ハイブリッド系
名称 | 提供元 |
---|---|
PhoneGap/PhoneGap Build | アドビシステムズ |
Monaca | アシアル |
Ionic | Ionic |
共通の特徴
- UIはWebViewで表示します。
- HTMLとCSSでUIを構築し、ロジック実装はJavaScriptで行います。
- すなわち、Webフロントエンドの知識を活用できます。
- Native APIとの橋渡しをApache Cordovaが行います。
- PhoneGapはアドビシステムズによるApache Cordovaの製品版です。
- 上のようなフレームワークやサービスを使わないで、HTML+CSS+JS+Cordovaで開発する選択肢もあります。
- ニュースアプリなど情報表示主体のアプリに向いています。
- 一方、入力に対する反応速度や微細なアニメーションを求められるアプリには向きません。
PhoneGap BuildとMonacaの特徴
- クラウド上で開発ができる統合サービスで、コンセプトはよく似ています。
- いずれも、無料枠がありますが、制約があるので注意が必要です。
Ionicの特徴
- 上記2つはクラウドサービスの部類ですが、Ionicはフレームワークです。
- Angularをベースにしているため、TypeScriptの知識も必要となります。
良記事リンク集
Apache Cordovaで本格スマホアプリに挑戦しよう
MonacaとPhoneGap Buildを試してみる
Ionicでのアプリ開発の始め方
クロスプラットフォーム系
名称 | 提供元 |
---|---|
Xamarin | マイクロソフト |
React Native | |
Flutter | |
Kotlin/Native | JetBrains |
共通の特徴
- UIがNativeであるため、反応速度や画面描画に違和感がなく、ハイブリッド系が苦手なアプリ分野に強みがあります。
- 実現したい機能によっては、Native APIのラッパーを自作しなければならない場合もあり、その分の工数を見込まなければならない場合も。
- UIの作成方法はツール・フレームワークよってコンセプトが異なります。
Xamarinの特徴
- 開発言語はC#。
- Visual Studioに統合されています。
- Xamarin.iOS / Xamarin.Android
- UIはOSごとに書き、ロジックのみを共通化します。
- Xamarin.Forms
- C#もしくはXAMLでUIを記述でき、同じUIのコードをOSごとのUIコンポーネントにマッピングします。
React Nativeの特徴
- ReactはWeb UIフレームワークであり、ブラウザ上でのDOM制御を行う役割を担います。
- React Nativeは、ReactをiOS/Android Nativeで利用できるようにしたもの。
- 開発言語は、Reactと同様、JavaScriptと、JSXというマークアップ言語です。
Flutterの特徴
- 開発言語はDart。
- 2018年12月にVersion 1.0となり正式リリースとなりました。
- "Skia"という、GoogleがOSSとして開発している2Dグラフィックライブラリを用いて、UIを独自に描画します。
Kotlin/Nativeの特徴
- 開発言語はKotlin。
- iOSについては、まだUI部分を作ることはできません。(2019年7月時点)
- AndroidStudioで共通ロジックを書き、framework形式でexportして、Xcodeに組み込むことができます。
良記事リンク集
Xamarin(ザマリン) とはなんぞや
10分間で分かった気になれるXamarin概要
React Nativeとは何なのか
Flutterとは? エヌ次元が企業としてFlutter開発を採用する理由
Kotlin/Native を Android/iOS アプリ開発に導入しよう
クロスプラットフォームモバイルアプリ開発ツール総ざらい2019
Xamarin と React Native と Flutter の違いを正しく理解しよう