Loading... Search articles

Search for articles

Sorry, but we couldn't find any matches...

But perhaps we can interest you in one of our more popular articles?
Flutterのビルドは、M1マシンを利用する方が圧倒的に速いです:複数のVMの比較

Flutterのビルドは、M1マシンを利用する方が圧倒的に速いです:複数のVMの比較

May 24, 2022

TL;DR: M1マシンは驚愕の速度! iOSのビルド(キャッシュ利用)では、Mac Prosと比較して、ビルド時間が**最大50%**短縮されました。

M1マシンを利用したCI/CD

2020年11月、AppleはM1 MacBookを発表し、その1年後にはM1 Pro/Maxチップを発表しました。それ以来、私たちは皆、狂ったように性能が向上したことを伝えている文章を読んだり、そのような話を耳にしました。Jameson Williamsさん(Redditのスタッフソフトウェアエンジニア)によるツイートをすでにお読みになった方もいるかもしれません。

そこで、M1マシンが高速であることはわかりましたが、**パイプラインを高速化するためにCI/CDでそれらを使用するべきでしょうか?**その疑問に答えるために、CodemagicでのiOSとmacOSのビルド向けに、M1 mini、Mac Pro、Mac miniを比較いたしました。本記事では、アップグレードの価値があるかどうかを判断するためにご必要な事実と数字をお伝えいたします。

Flutterアプリのビルド、テスト、リリースパイプラインの自動化開始

本記事は、Nils Reichardtさんが執筆いたしました

比較の設定

では、この比較の設定について、次のような質問から考えてみましょう:

  • ビルドに使用されたアプリは?
  • プラットフォームは?
  • リリースモード、デバッグモード、それともプロファイリングモード?

アプリ

Flutterアプリのビルドを比較するために、2つのアプリを使用しました:

  • FlutterのデフォルトのCounterアプリ
  • Sharezoneオープンソースのスクールプランナーでは、生徒、保護者、教師の方々が一緒に利用して組織化できます。

Sharezoneは、30万人以上の登録ユーザーを持つ実際の製品アプリであるため、この比較ではSharezoneアプリに重点を置いています。これは、Firebase パッケージの多くや他のいくつかのパッケージのように、多くの依存関係を使用しています (Sharezoneはオープンソースです。すべての依存関係を こちら で見つけることができます)。そのため、非常に現実的なビルドタイムが表示されます。

プラットフォーム

私たちは以下に焦点を当てています:

  • iOS
  • macOS
  • 各種テスト(ユニットテスト、ウィジェットテスト)

システム

テストにはCodemagicの仮想マシンを使用しており、CI/CDに利用できます。これらのマシンは以下のような構成になっています:

  • Mac Mini: 2,3GHz Quad Core / 8 GB
  • Mac Pro: 3.7GHz Quad Core / 32 GB
  • M1 Mini: 3.2 Quad Core / 8 GB

Flutterの構成

使用したFlutterのバージョンは2.10.5です

より現実的な見解を得るために、すべてのビルドでFlutterのリリースモードを使用しました。

各テストには、flutter testコマンドを使っただけです。

依存関係キャッシュ

キャッシュを使用しない場合使用した場合を比較しました。キャッシュについては、以下のパスでキャッシュを行いました:

  • Dartキャッシュ:$FLUTTER_ROOT/.pub-cache
  • CocoaPodsキャッシュ:HOME/Library/Caches/CocoaPods

Codemagicのキャッシュの使い方については、依存関係キャッシュのドキュメントをご覧ください。

精度

すべてのビルドを3回実行し、平均値を算出しました。例えば、iOS Counterアプリの後半のビルド時間は、3回のビルドの平均時間です。

合計で、54回ビルドを実行しました。 また、このスプレッドシートには、すべての生データとビルドへのリンクが表示されているので、ご覧ください。

M1 MiniとMac ProとMac Miniの比較結果

いよいよ今回の記事の中心部分、つまり、結果についてです。CounterアプリとSharezoneアプリのビルド時間の差がいかに大きいか、おわかりいただけると思います。そのため、このような比較には実際のアプリを使うことが不可欠です。

ビルド時間はすべて秒単位で表示されます。

Counterアプリの結果

プラットフォーム Mac mini Mac Pro M1 mini
iOS 92 75 30
macOS 89 51 25

Sharezoneアプリの結果

iOS

キャッシュ Mac mini Mac Pro M1 mini
No 967 658 395
Yes 892 598 281

信じられないような結果が出ました! M1マシンは、Mac miniと比較してビルド時間を68%、Mac Proと比較して**53%**短縮しています(キャッシュを使用した場合)。

macOS

キャッシュ Mac mini Mac Pro M1 mini
No 479 466 433
Yes 501 401 333

macOSでは、iOSビルドと比較して驚愕するほどの改善率ではありませんが、それでも、M1ビルド(キャッシュを利用した場合)はMac miniビルドより34%、Mac Proビルドより17%高速化しました。

ユニットテストとウィジェットテスト

Mac mini Mac Pro M1 mini
84 90 95

ユニットテストとウィジェットテストの観点からマシンを比較すると、それらの間にほとんど違いは見られません。

余談ですが、Sharezoneには238個のユニットテストとウィジェットテストがあります。

全体

まとめ

結果をまとめると、M1マシンはMac Proマシンと比較して50%近く高速になり、特に統合テストに関しては興味深い結果が出ています。CIパイプラインの遅さは周知の事実です。しかし、M1マシンは統合テストのビルド時間を短縮するだけでなく、App StoreやPlay Storeでアプリを公開する場合にも有効な手段です。


本記事は、Android、iOS、ウェブ、macOSに対応し、30万人以上の登録ユーザーを持つ共同学校プランナー、Sharezoneの共同創設者であるNils Reichardtさんが執筆いたしました。Nilsさんは2018年3月の最初のベータ版リリース以来Flutterに惚れ込んでいます。TwitterGitHubLinkedIn でNilsさんを見つけることができます。

How did you like this article?

Oops, your feedback wasn't sent

Related articles

Latest articles

Show more posts