Cordova アプリの実態調査
本記事は、6月10日の Apache Cordova スーパー勉強会で行った LT のサポート記事です。
LT スライドはこちら。
やったこと
PhoneGap 公式サイトに登録されているアプリや Google Play を調べて、実際に公開されている Cordova/PhoneGap アプリがどんな感じか見てみました。
動機
- 「ハイブリッドアプリは銀の弾丸ではない」と言われる。
- 実際やってみると、まぁまぁ大変だし、ハマりどころも多いらしい。
- では、どんなアプリがハイブリッドに向いているのか?
- 実際に公開されているアプリを見てみたら分かるかも。
1. 対象プラットフォームをみてみる
PhoneGap サイトに登録されているアプリ (http://phonegap.com/app/) には、以下のように各アプリの対象プラットフォームの情報があります。
この情報をもとに以下のようなグラフにしてみました。
PhoneGap サイトに登録された
アプリの対象プラットフォーム
実は、Android 単体、iOS 単体もけっこう多く、ハイブリッドアプリを採用する理由はクロスプラットフォームだけではないようです。
アプリのカテゴリ
次に、PhoneGap 公式サイトに登録されているアプリのうち、Android アプリの情報を Google Play から引っ張ってきて、カテゴリごとのアプリの個数をグラフにしてみました。
PhoneGap アプリのカテゴリごとのアプリ数
予想通り、ゲームは少な目です。
アプリの例
カテゴリ名だけでは雰囲気がつかめないので、上位カテゴリのアプリの情報を5個ずつ見てみます。 なんだかインドっぽいのがちらほら。
Google Play で Cordova アプリを探してみる
PhoneGap 公式サイトは海外アプリがほとんどのようです。日本の状況が知りたいので、Google Play で Cordova アプリを探してみました。以下のように探しました。
- 全 カテゴリのトップ 60 アプリの情報を取得。
- 重複を除く 個の apk を取得。
- apk をダウンロードできたのは 個。
- assets に cordova*.js*, phonegap*.js*, monaca*.js* を含むアプリを探す。
結果
- 個中 個の Cordova アプリが見つかりました。
- % が Cordova アプリでした。
- ※ なお、AppBrain の統計情報でも Cordova/PhoneGap の使用率が分かります。(参考: Android の Cordova アプリの比率)
見つかったアプリの一覧
(参考) monaca アプリの一覧
上で見つかったアプリのうち、monaca*.js* を含むアプリです。
(参考) HTML を含むアプリ
- assets フォルダに HTML ファイルを含むアプリは 個中 個でした。
- % のアプリがハイブリッド的な側面を持つ可能性があるということになります。
よく使われている Cordova Plugin
上述の、PhoneGap 公式サイトと Google Play で apk がダウンロードできたアプリのうち、Cordova 3.x 以降 (condova_plugin.js を含む) アプリ 個について、使用されているプラグインを調べてみました。
Cordova Core API プラグイン
- 上位5位までは状態確認やダイアログ等、デバイス機能へのアクセスと言うには控えめなものが集中している感じです。
- 6位の FileSystem API 以降が、本格的にデバイス機能を利用しているプラグインみたいです。
- 実際は、デバイス機能をあまり利用しないハイブリッドアプリもけっこう多いのかもしれません。
Cordova Core API 以外のプラグイン
- Cordova の Cora API 以外のプラグインです。
- 1アプリしか使用していないプラグインは省略しました。多くなり過ぎて見づらかったので。
- socialsharing はアプリ間で URL リンク等を共有する、共有機能のプラグインのようです。
- PushPlugin はプッシュ機能で、 Android の GCM, Apple の APNS, WP8 の Microsoft MPNS をサポートしているそうです。
- GAPlugin は Google Analytics です。
感想
- 見つかった Cordova アプリ、少ないような、こんなもののような。。。
- 実はトップから探しても見つかりにくいのかも。
- ハイブリッドの利点: 開発期間・開発コストを抑えてサクっと作れる。(対ネイティブ比)
- ハイブリッドに向かなそうなもの
- パフォーマンス的にシビア。UX の要求が高い。
- プラットフォーム固有機能の多用。
- 通知やプッシュ。
- バックグラウンド処理、他アプリとの連携。
- システム情報の取得。
- ...これらは Cordova Core API 外の機能。
- トップアプリは UX 要求が高く凝ったのが多そうなので、ネイティブ比率が高いかも。