最近、いくつかの興味深いインフォグラフィックがインターネットに登場し、人気のある電話アプリケーションが数年で12倍に成長したことを示しています。 このノートでは、モバイルアプリケーションのサイズが大きくなっている明白でない理由のいくつかを明らかにしようとしています。
元の記事のインフォグラフィック作成者は、この増加の2つの理由を強調しています。
- AppStoreアプリケーションの最大許容サイズを増やす
- 電話にメモリを追加する
私の意見では、これらの論文は前提条件にすぎず、「アプリケーションが大きくなっている理由 」 という質問に完全に答えているわけではありません。
もちろん、最初のことは新しい機能を追加することです。 アプリケーション機能を開発するには、より大きなサイズが必要です。
それはアプリケーションのサイズであり、機能とは異なり、10倍に成長しています。通常、この成長にはまったく異なる理由があります。 さらに、特定の例を含むさまざまなソースに基づいて、さまざまな理由を体系化しようとします。
アプリケーション内のリソースの追加コピー
どのように聞こえるかは関係ありませんが、アプリケーションでは、同じ内部リソース(画像、ライブラリなど)が複数のコピーに保存されることがよくあります。 これは、特定のプログラム機能を担当する複数の開発チームが大規模なアプリケーションを開発しているためです。 チームが別のモジュールと同じリソースを同じモジュールにドラッグすると、二重になります。
記事の 1つで、著者はiOSのFacebookアプリケーションの内部構造を半年で165メガバイトから253メガバイトに増やした後、詳細に分析することにしました。 彼は、アプリケーションに40メガバイトを超える冗長な重複データが含まれていることを発見しました。 これらはほとんど写真でしたが、まったく同じ内部プログラムファイルもありました。 したがって、単純に重複を削除すると、アプリケーションのサイズが15%削減されます。 ちなみに、その後Facebookはそうしました 。
A / Bテストと新機能の実装
アプリケーションを開発する際の一般的な方法は、新しい機能を追加し、デフォルトで無効にすることです。 これにより、将来的にテストグループまたはパイロットグループで徐々に有効にし、必要に応じて調整したり、再度無効にしたりできます。 ただし、長い時間を経ても、原則として、新しい機能を無効にして古い機能を復元する機能は削除されず 、念のため時間を節約するためにアプリケーションに残ります。
より快適なプログラミング言語への切り替え
iOSアプリケーションの場合、Objective-CからSwiftに切り替えると、コンパイルされたアプリケーションコードのサイズが3〜4倍になります。 これは、開発の利便性と速度のために、新しい言語が次のことができるという事実によるものです。
- より多くのスペースを占有する大きなデフォルトのデータ型を使用する
- コンパイル時にコードに追加のテストとチェックを導入する
- 関数の大きな標準ライブラリを使用する
これには、必要な多くのファイルを運ぶ新しいフレームワークへのアプリケーションの移行も含まれます。
標準オペレーティングシステムを置き換える独自の機能をプログラムに含める
いくつかのプラットフォームでのモバイル開発の傾向の1つは、特定のオペレーティングシステムへの依存を最小限に抑えることです。 このアプローチには利点があります。 まず、これにより、外部システムライブラリを変更するときに大量のコードを書き換えないようにできます。 第二に、これにより、ユーザーをアプリケーション内に保持し、より一貫したユーザーエクスペリエンスを提供できます(ただし、独自の実装は標準と視覚的に見分けがつかないことがよくあります)。
標準のOSツールに取って代わる最も人気のある「バイク」の中で、以下を区別できます。
- ブラウザ
- カメラで作業する
- テキスト入力とジェスチャー処理
- スペルチェッカー
高まるアプリケーション要件
電話が進化するにつれて、エコシステムの所有者(Apple、Google)は、より多くのスペースを必要とする電話の新しいシステム機能をサポートするためのプログラムの新しい要件を提示し始めています。
- Retinaの登場後、開発者はそれに応じてより詳細でサイズの大きい写真を追加する必要がありました。
- その後、iOSが32ビットから64ビットに移行したため、すべての開発者は正確に64ビットアプリケーションをリリースする必要がありました。
ちなみに、AppStoreでは、このような要件に応じてアプリケーションのサイズの増加に対処するために、 App Thinningテクノロジーが導入されました。これにより、アプリケーションの適合バージョンが、他のバージョンの電話用の過剰なリソースなしで特定の電話にダウンロードされます。