開発環境とそのバイナリサイズの確認と比較

iOS、Flutter、Ionic(Angular)それぞれのサンプルアプリケーションを、iOSネイティブアプリとしてリリースビルドして、実機のアプリサイズを確認してみました。

ソースコード は https://github.com/reinforce-lab/ios-ionic-flutter-helloworld-size-comparison にあります。

実機はiPhone Xs、ビルド環境は、Xcode 12 beta (12A6159), iOS14.0 (beta1)です。 それぞれリリースビルドで、実機にアプリを転送して、設定アプリのストレージから、アプリサイズを確認した。

  • iOS 新規作成プロジェクト hello world app: 197kB
  • Ionic 6.10.1: 93.5MB
  • Flutter 1.17.5: 66.4MB

マルチ/クロスプラットホーム開発環境は、実行に必要なライブラリやリソースファイルを全てアプリケーションにバンドする他ありません。 本来はここから、バンドルされているリソースの種類と大きさを列挙して、可能であれば使用していないリソースをバンドルさせないようにしてサイズの削減効果を評価すべきなのでしょう。 ですが、依存関係の解決は、ソフトウェア開発環境の基本的な仕組みであり、個別で末端のアプリでごちゃごちゃするようなものには思えません。 やる前から決めつけるのはどうかとは思いますが、やったとしても、結果が出るようなものでもなく、結果が出ても本家にそのビルド工夫をフィードバックしないと、新規アプリごとに同じ作業が発生するだけなど、どこまでもめんどくさいだけでしょう。

画面を1つ表示するだけのアプリケーションであっても、結構なサイズになるのだなと雑な感想を持ったくらいです。