mixi, Inc.
実施してきた改善 - Xcode, サポートOSのバージョンアップ
● Xcode 13.4.1
● iOS 13.0+
● 直近の導入実績
○ Diffable Data Source
○ Swift Concurrency →
https://speakerdeck.com/hicka04/swift-concurrencywodao-ru-suruniatatutejue-metakoto
Slide 16
Slide 16 text
実施してきた改善
Apple Silicon対応
Slide 17
Slide 17 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● WWDC2020にて発表
● iOS開発: シミュレーターのビルドがエラーに
○ x86_64 → arm64
● 背景
○ 今後発売されるMacはApple Siliconの端末が中心になっていくと予想
○ Apple Silicon端末の利用によるビルド速度向上に期待
● Rosettaは使わない
○ 環境構築の手間を減らす
○ Apple Siliconが持つ本来のパフォーマンスで開発したい
Slide 18
Slide 18 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● やることリスト
○ ① Carthageで生成するバイナリ .framework → .xcframework
○ ② 他社からいただいているバイナリ .framework → .xcframework
○ ③ ライブラリのアップデート (Apple Siliconに対応したバージョンへ)
Slide 19
Slide 19 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● やることリスト
○ ① Carthageで生成するバイナリ .framework → .xcframework
○ ② 他社からいただいているバイナリ .framework → .xcframework
○ ③ ライブラリのアップデート (Apple Siliconに対応したバージョンへ)
● すぐにすべて対応できなかったため、
iOSシミュレーターのアーキテクチャから arm64 を除外
→ Apple Silicon端末でシミュレータービルドができる状態になった
○ EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
Slide 20
Slide 20 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● やることリスト
○ ① Carthageで生成するバイナリ .framework → .xcframework
○ ② 他社からいただいているバイナリ .framework → .xcframework
○ ③ ライブラリのアップデート (Apple Siliconに対応したバージョンへ)
● すぐにすべて対応できなかったため、
iOSシミュレーターのアーキテクチャから arm64 を除外
→ Apple Silicon端末でシミュレータービルドができる状態になった
○ EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64
● Swift Package Managerを使うとビルドエラーになってしまう
Slide 21
Slide 21 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● ① Carthageで生成するバイナリ
● ② 他社からいただいているバイナリ
● ③ 依存ライブラリのアップデート
Slide 22
Slide 22 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● ① Carthageで生成するバイナリ
○ バイナリ生成時のコマンド引数に --use-xcframework オプションをつける
● ② 他社からいただいているバイナリ
● ③ 依存ライブラリのアップデート
Slide 23
Slide 23 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● ① Carthageで生成するバイナリ
○ バイナリ生成時のコマンド引数に --use-xcframework オプションをつける
● ② 他社からいただいているバイナリ
○ ライブラリ作成元の各社にApple Siliconに対応した .xcframework を作成依頼
→ すべて対応いただいた
● ③ 依存ライブラリのアップデート
Slide 24
Slide 24 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● ① Carthageで生成するバイナリ
○ バイナリ生成時のコマンド引数に --use-xcframework オプションをつける
● ② 他社からいただいているバイナリ
○ ライブラリ作成元の各社にApple Siliconに対応した .xcframework を作成依頼
→ すべて対応いただいた
● ③ 依存ライブラリのアップデート
○ 中でもRealm v3系 → v10系 への大幅なメジャーバージョンアップが鬼門
■ 過去にバージョンアップを試して、クラッシュやフリーズ等の問題が発生していた
■ 問題を再現させて着実に修正し、無事にアップデートできた
Slide 25
Slide 25 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● iOSシミュレーターのアーキテクチャから arm64 を除外する設定を削除
→ Rosettaを使わずにApple Silicon端末で開発できる環境を実現できた!
→ Swift Package Managerを使えるようになった!
Slide 26
Slide 26 text
mixi, Inc.
実施してきた改善 - Apple Silicon対応
● iOSシミュレーターのアーキテクチャから arm64 を除外する設定を削除
→ Rosettaを使わずにApple Silicon端末で開発できる環境を実現できた!
→ Swift Package Managerを使えるようになった!
● ビルド時間はIntelと比較して約1.5倍以上高速 ※1
○ 適宜Apple Silicon端末へのリプレイスを行って生産性向上
チップ フルビルド 差分ビルド
Intel ※2 300s 33.8s
Apple Silicon ※3 200s 19.3s
※1 ビルド3回実行時の平均値で比較
※2 MacBook Pro (16-inch, 2019) 32GBメモリ
※3 MacBook Air (M1, 2020) 16GBメモリ