AppleのiOSとGoogleのAndroidにおけるモバイルアプリのクラッシュに関する調査では、iOSの方がAndroidよりもアプリのクラッシュ頻度が著しく高いことが示唆されました。しかし、開発者やアナリストは、その理由についていくつかの説明を提示しています。よくあることですが、数字の背後にあるストーリーは、些細なクリックベイトの見出しでは伝えられないほど、複雑で微妙なニュアンスを持っています。
単純化された統計の誤解を招く性質
約 1 年前、Blancco Technology Group は、モバイル デバイスの診断レポートの分析をまとめた 2017 年第 1 四半期レポートで、「iPhone でのアプリのクラッシュは Android デバイスよりも 3 倍近く多い」と記しています。
その発表は当時大きな話題となり、それは、Android ユーザーは iPhone 購入者よりも「忠実」であるという最近の記事の主張と同様でした。ただし、その記事を指導した情報源とサイト ( TechCrunch ) はどちらも、プラットフォームとしての Android が iOS にユーザーを奪われている割合が、その逆よりも高いことを認識しており、記事の最後でもそのように述べていました。
iOSアプリのクラッシュ事例は、同じ診断データから得られた別の統計とも類似しています。iPhoneの故障件数はiPhone 6以降増加し始めたのです。以前の記事で述べたように、これはiPhone 6が欠陥モデルだったからではなく、製品として成功したからこそです。故障件数のカウント方法によって、人気モデルは単に普及しているという理由だけで、統計に重みが付けられ、より問題が多いように見せかけられていました。
しかし、この統計の裏側を見ると、もっと興味深いことが分かります。販売台数では同じくらい人気があったにもかかわらず、iPhone の世代が進むにつれて故障件数が減り、品質が向上していることが示されています。
さらに、AppleのiPhoneの標準サイズとPlusサイズの製品構成は、ここ数年で徐々に大型のPlusサイズへと移行してきました。しかし、これらの新しいPlusサイズモデルでは、標準サイズのiPhoneに関連する故障が急激に減少しているのと対照的に、問題が増えているわけではありません。繰り返しますが、これは明らかにPlusサイズモデルの性能が向上しているためです。
Androidには標準モデルがないため、観察が困難です。メーカーやモデルによって品質は大きく異なります。しかし、Blanccoは四半期ごとにレポートを発行しており、2つのプラットフォームの違いに関する興味深い洞察を提供しています。
iOS アプリがクラッシュするのはなぜですか?
Blancco 自身が iOS アプリのクラッシュの原因として特定した主な理由の 1 つは、実際には Apple の頻繁な OS アップデートに関連しており、主要な iOS アップデートのリリース時にアプリのクラッシュが増加することを指摘しました。
iOSアプリがクラッシュする原因の一つ:Appleの頻繁で広く普及しているアップデートサイクル
OSの動作(および開発者が使用する基盤API)の変更は、アプリ開発者にとって問題を引き起こす可能性があります。Appleは、主要なソフトウェアアップデートや新機能を積極的にリリースしているだけでなく、これらの変更を急速に主流へと押し上げています。これらのOS変更に関連する新しいアップデートとアプリのクラッシュの間には、明確な相関関係があるようです。
一方、Androidは1~2年以上デバイスをサポートできないため、Android開発者は古いAPIプラットフォーム上で動作する可能性があることを考慮する必要があります。Googleからのアップデート(一部の新型モデルでのみサポート)が減少すれば、開発者へのプレッシャーは軽減されるかもしれませんが、サードパーティ開発者が新しい技術を採用する動機も弱まることになります。Googleが昨年5月に発表した20億台のアクティブなAndroidデバイスのうち、「ほぼ半数が2年前の旧式デバイス」です。
GoogleのAndroidソフトウェアアップデートに関する問題は悪化している。同社はAndroidの新バージョンをリリースし続けていますが、その展開ペースは鈍化している。
Dan Luu 氏の分析によると、「データを見なければ明らかではなかったが、新バージョンの普及が鈍化しているようだ」とのことです。
Googleが昨年5月に発表した20億台のアクティブなAndroid端末のうち、「ほぼ半数が2年前の古い端末だ」と彼は指摘した。つまり、サードパーティ製アプリが主要なソフトウェアアップデートに関連する問題でクラッシュする頻度は減っているかもしれないが、それは必ずしも喜ぶべきことではない。
優れたOSは、悪いアプリがクラッシュしないことを意味するわけではない
ブランコ社はまた、どのプラットフォームでもアプリのクラッシュは開発者の責任であることが多いと指摘しました。人気のスマートフォンモデルが普及率の高さゆえにテストの失敗と関連付けられたように、同社のiOSアプリのクラッシュリストでも、最も人気のあるアプリが上位にランクインしています。
FacebookとそのInstagram、そしてMessengerアプリは、クラッシュ頻度の高いアプリ上位4位のうち3位を占め、残りの1位はGoogleでした。残りの上位10位には、Snapchat、Pinterest、WhatsAppなど、人気が高く頻繁に利用されている様々なソーシャルネットワーキングアプリが含まれていました。
Facebook自体も頻繁にアップデートされています。iOS版は現在バージョン162です!Instagramなどの他のアプリも頻繁にアップデートされています。しかし、Instagramが2012年にAndroid対応を追加して以来、AppleのiOSプラットフォームの進化に追いついていないようです。Instagramのフィルターアーキテクチャは、Appleの最新のA7に最適化されたグラフィック用Metal APIではなく、パフォーマンスの低いOpenGL ESのみに基づいているようです。レガシー機能以外では、Androidとの機能の整合性を維持するためという可能性が最も高いでしょう。しかし、Appleの最新のグラフィックパフォーマンス最適化も受けていないようです。
Instagram の開発者は 2017 年に Wide Color (Android のインストールベース全体ではサポートされていない機能) のサポートを追加しましたが、iPhone 6s で導入された Live Photos、iPhone 7 Plus で導入されたズーム レンズやデュアル カメラのサポート、iPhone X の Depth API や TrueDepth カメラなど、iOS の主要な画像関連機能は未だに採用されていません。
実際、FacebookのInstagramアプリは、iPhone Xの発売後数ヶ月間、画面の見栄えが悪かった(下図)。複数の画像を合成するLayoutや動画クリップをアニメーション化するBoomerangといった連携ヘルパーアプリは、頻繁にクラッシュするだけでなく、ノッチの両側にある「耳」のような部分にナビゲーション要素が誤って描画され、場合によってはInstagramを強制終了するしか解決策がないほどだった。
InstagramはiPhone Xの正式サポートが遅れた
OSのアップデートと同様に、頻繁にアップデートされるアプリは安定性に様々な問題を引き起こします。しかし、頻繁なアップデートによって生じる問題よりも深刻なのは、頻度の低いアップデートに関連するより深刻な問題です。
Androidで最もクラッシュするアプリはGoogleのプラットフォームの一部である
iOSで実行されているアプリとAndroidアプリのクラッシュデータを比較すると、Androidで発生したクラッシュの多くは、一般的に使用されているサードパーティ製アプリによるものではないという点が明らかになりました。クラッシュの原因は、Androidの中核を成すGoogleサービスであることがほとんどでした。
Androidアプリのクラッシュ頻度は減少していると報告されていますが、実際に発生していたのはGoogleのIMSサービス(メッセージング)、アドレス帳、そしてAndroidの中でも頻繁にアップグレードされる可能性が高いGoogle Play開発者サービスです。クラッシュ発生率上位10位以内にランクインした他のコードは、Android自体の他のコンポーネント、つまり標準Android、メッセージ、モバイル転送です。YouTubeとGoogle検索アプリもクラッシュ発生率上位10位にランクインしました。
クラッシュの原因となるAndroidアプリのトップ10のうち、GoogleのコードではないのはSamsungのTouchWiz(Samsungのスマートフォンにしか搭載されていないにもかかわらず、Androidデバイスでは頻繁に表示される)と、もちろんFacebookの2つだけになりました。Instagram、Messenger、Snapchatといった、より一般的に使用されているサードパーティ製アプリは、Androidプラットフォーム自体のクラッシュ発生率が高いため、クラッシュの原因となるアプリのトップ10リストにさえ入りませんでした。
サードパーティ製タイトルのクラッシュ頻度が減ったため、Androidはアプリにとってより優れたプラットフォームであるという見出しの幻想とは裏腹に、現実はAndroid自体が頻繁にクラッシュしていたのです。また、ハードウェアの問題として、GoogleのカメラアプリもAndroidで頻繁に不具合が発生していることがデータから明らかになりました。
AndroidはCPU、RAM、メモリの消費量が多い
AndroidとiOSのクラッシュ統計の違いを指摘してから1年、Blanccoの最新の四半期レポートでは「アプリのクラッシュ」という用語すら使われていません。代わりに、「Androidスマートフォンは、CPU、RAM、メモリの消費量の増加、ソフトウェアバージョンの古さ、アプリの不具合など、パフォーマンス関連の問題が発生しています」と指摘しています。「Androidスマートフォンは、CPU、RAM、メモリの消費量の増加、ソフトウェアバージョンの古さ、アプリの不具合など、パフォーマンス関連の問題が発生しています」。
そのため、質の悪いサードパーティ製アプリに加えて、Google の Android プラットフォームは、CPU パフォーマンスとメモリ使用量の管理に関する根本的な問題も抱えています。
同社が行った推奨事項の1つは、「最新のAndroidソフトウェアリリースにアップデートすることで、顧客はパフォーマンスの問題の一部を回避できる可能性がある。同様に、バックグラウンドで実行されている余分なアプリをシャットダウンし、アプリのキャッシュをクリアし、ウィジェットを無効にすることでも回避できる」というものだ。
Android の差別化機能であるウィジェットをオフにすることは誰でもできますが、多くの Android ユーザーは、Google またはハードウェア メーカーが最新の Android ソフトウェア アップデートを提供していないため、インストールできません。
実際、Google 自身も、発売から 2 年が経過した自社の Nexus スマートフォンと、最後に残ったタブレットである Pixel C に対する、次期 Android P でのサポートを終了したばかりです。Android デバイスの大半では、最新のソフトウェア リリースを入手することはもはや選択肢ではなくなっており、Google は昨年導入した自社の Nexus モデルのハードウェア アップデートを延長するメカニズムさえもサポートしていません。
繰り返しになりますが、GoogleがGoogle Play開発者サービスレイヤーを通じて古いAndroid向けに提供しているアップデートコンポーネントは、Androidで最もクラッシュしやすいコードのリストの上位にランクされており、頻繁にアップデートされるOS機能のメリットはAndroidにとって最も少なく、デメリットは最も大きいと言えます。iOSのメジャーリリースはサードパーティ製アプリに初期問題を引き起こす可能性がありますが、頻繁で長期にわたる無料アップデートのメリットは、不便さをはるかに上回る傾向があります。
ブランコ社はまた、世界的に見てAndroid端末の苦情リストではOS関連のパフォーマンス問題が最も多く、一般的なハードウェア関連の問題はAndroidのOSの不具合に大きく後れを取っていると詳細に述べています。これは、Googleのソフトウェアは素晴らしいので、ライセンシーはそれをより適切に統合する(あるいはGoogleのPure Android構想を邪魔しないようにする)必要があるというメディアの報道は全く正確ではないことを示唆しています。
Android プラットフォームのパフォーマンスが優れているというだけではない。これは主に Google の責任である。