Nativeの両フレームワークの比較を行います。ビルドのパフォーマンス、アプリのパフォーマンス、利用できるデバッグ機能の点に特に注目します。Nativeとは?まずは各フレームワークの概要を説明します。Cordovaはモバイルアプリ開発向けのオープンソースフレームワークです。PhoneGapとして知られていました。このフレームワークを使用すれば、クロスプラットフォームに対応しハイブリッド性を持ち合わせたモバイルアプリを開発できます。開発にはHTML5、CSS3、JavaScriptなどのWeb標準技術を使用します。Cordovaは開発されてから10年ほど経っているため、インターネット上に豊富なリソースが公開されています。アプリの機能を補強するためのプラグインも多数存在します。アプリ開発環境「Monaca」のフレームワークとして採用されています。NativeはFacebookによって開発されました。こちらもオープンソースのフレームワークです。Cordovaと異なるところは「ネイティブな」クロスプラットフォーム対応のモバイルアプリを開発できる点です。Nativeアプリを構築するときにはReactのデザインパターンを使用するのが基本です。アプリのコンパイル時、ReactのUIコンポーネントは対象となるプラットフォームのネイティブUI要素へと変換されます。オブジェクトへと変換されます。Nativeは誕生してからまだ3年と日が浅いため、インターネット上で見つけられるリソースはCordovaと比べると少ないのが現状です。いってサポートが望めないということではありません。Nativeのコミュニティは着実に大きくなっており、コミュニティが主催しているDiscordサーバーから多くの情報とサポートを得ることができます。Cordovaの方が良いパフォーマンス結果が得られました。Cordovaの方が小さくなりました。Cordovaには2つのAPI層が存在し、WebViewとアプリ間の通信(レンダリング用)ならびにWebViewとCordovaプラグイン間の通信にそれぞれ使用される仕組みとなっています。Cordovaにおけるアプリの構造Cordovaアプリはコンパイル時に、開発者側で明示的に追加したプラグインのみが組み込まれます。この点がビルド時間とパッケージサイズに関して有利に働いています。Nativeではビルド時間が長くなりパッケージサイズも大きくなります。Nativeではカメラなどのネイティブ機能が標準で組み込まれます(Cordovaではネイティブ機能を組み込むにはプラグインを追加する必要があります)。Nativeアプリのビルド後のサイズが大きくなる理由の一つです。アプリのパフォーマンスなど他の点も考慮すると十分埋め合わせがされていると言えます。Cordovaの場合CordovaアプリはWebの標準技術を使用して書かれているので、実行時間とレンダリング時間がネイティブアプリのそれより常に長くなります。これはJavaScriptがインタプリタ型の言語のためです。アプリのレイアウトを描画するHTMLとCSSも(コンパイル型というよりは)インタプリタ型と言えます。上記のようなWeb標準技術の限界に起因するパフォーマンスの問題は最近の高スペックなスマートフォン端末であればさほど気にかけるほどではないでしょう。コンパイル型のネイティブアプリと比べると多少パフォーマンスは劣りますが、それでもCordovaであれば動作も滑らかでネイティブに近い性能を実現することができます。NativeのUIコンポーネントはネイティブUI側の各種ビューと紐づけされているため、Cordovaを含むWeb系フレームワークと比較してレンダリング時間が早くなります。Nativeではアプリのロジック自体はJavaScriptで書かれていますが、マルチスレッド技術を利用するため別スレッド上でJavaScriptが実行されます。この点がCordovaアプリとは異なります。JavaScriptの実行時間に関しては大きな違いはありませんが、ビュー側の制御をする必要がないためロード処理が軽くなります。VM側で読み込まれてパース処理され、バイトコードが出力されます。Cordovaの場合Cordovaではデバッグのための環境設定方法がドキュメントで詳しく解説されています。Cordovaでは独自のツール類を提供していませんが、既存のツールを使用してデバッグすることができます。ツールは多くの場合、次のいずれかとなるでしょう。DevTools(リモートデバッグ機能)これらのツールだけで、ネットワーク、JavaScript、UIに存在する不具合を容易に探し出すことができます。確認のたびにアプリを再ビルドする必要もありません。DevToolsでは次のような機能を使用できます。NativeのJavaScriptコードをリモートでデバッグすることができます。Toolsには欠けている点です。Tools(Chromeの拡張機能)ならコンポーネントの階層構造を表示する機能が備わっていることはご存知でしょう。Nativeプロジェクト向けにスタンドアローン型のアプリへと生まれ変わりました。Nativeアプリでは次のようなデバッグ用の機能が提供されています。代表的な機能は以下の通りです。各フレームワークに関しては賛否両論が常にあるかと思います。結論としては開発者の好みやアプリ側に実装させる機能に応じて選択することになるかと思います。両フレームワークともクロスプラットフォーム向けアプリの作成には有効な選択肢であることは間違いありません。Nativeが最良の選択肢となります。既存のWebアプリが手元にありコードを再利用したい場合や、サードパーティー製のWeb系ライブラリを活用したい場合はCordovaが最良の選択肢になるかと思います。Watabeフリーランスの翻訳家。インターネット・通信業界で10年ほど翻訳を経験したあと、2013年からフリーランスに。直訳ではない、わかりやすい翻訳を心がけています。Ellisアメリカ出身のエンジニアです。Monacaの開発チームに所属しています。ランニングが好きで、休日は社内のランニング部のみんなと一緒にマラソン大会に参加しています。両者の違いについて詳しくはこちらをご覧ください。(JavaScript基礎構文)iOS16から導入された「デベロッパモード」についてhtmx:JavaScriptなしでサーバーとの通信を実現する見やすい、メンテナンスしやすいJavaScriptのために。