Copyright © DeNA Co.,Ltd. All Rights Reserved.
CAMPFIRE iOS #2
2017/06/12(Mon)
平田敏之@DeNA SWET
マスティフ: (for Xcode Beta)
バージョンアップ対応を軽減するためのサービス
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 平田 敏之@DeNA
⁃ SWET (Software Engineer in Test)
• 事業サポートチーム / テスト基盤チーム
• ミッション
⁃ DeNAサービス全般の品質向上
⁃ DeNAエンジニアの開発生産性向上
⁃ 私がやっていること(の一部)
• クライアントアプリ周りのテスト戦略、自動テストの開発
• CI/CD環境整備
• テスト基盤環境の開発
• iOS Test Nightの主催
Copyright © DeNA Co.,Ltd. All Rights Reserved.
はじめに
 CAMPFIRE iOS #2のテーマ
⁃ 「WWDC / 新iOSバージョン対応」
• WWDC2017
⁃ Xcode 9 / iOS 11
皆さんは発表に対してどのような感想を持ちましたか?
新機能に対してワクワクする・試してみたい
• ARKit!!
• XCode9!!
• テスト周りの改良!!
ワクワクすると同時に不安がありませんか?
• 新機能に対して「どのようにテストしようか」
• 既存アプリに対して影響ある新機能や改修がないか
Copyright © DeNA Co.,Ltd. All Rights Reserved.
WWDC2017の影響
 すでにリリースされているもの
⁃ 自動アップデート用の段階的リリース
⁃ アプリのサブタイトル(iOS11-)
⁃ プロモーション用テキスト(iOS11-)
 現在はβでそのうちリリースされるもの
⁃ Xcode 9
• What’s New in StoreKit / etc
⁃ iOS 11
• Introducing the New App Store / etc
・すでにリリース済みのものは影響がないかすぐにチェックしないといけない
・リリース前のものはβじゃなくなるまでにチェックをしないといけない
Copyright © DeNA Co.,Ltd. All Rights Reserved.
「マスティフ」:バージョンアップ対応軽減サービス
 マスティフのお仕事 / SWET特製サンプルアプリを利用
⁃ 対象ライブラリがバージョンアップしたら動作確認をする
• バージョンアップに対応が必要かがすぐに分かる
• ビルド時間、ファイルサイズなどの変化が分かる
⁃ 既存ライブラリが動くことを定期的に動作確認する
• 使えなくなったことを早めに知りたい
⁃ 1日1回動作確認を実行
 バージョンアップ検知の対象(for iOS)
⁃ Gemfile
⁃ CocoaPods
⁃ Carthage
⁃ Xcode(βも含む)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
システム構成(非常に簡単に)
全体管理
バージョンチェック
動作確認
結果管理
digdag
Jenkins
slack
モバイルアプリ
(iOS / Android)
このバージョンで
動作確認してください
あなた自身(Xcodeとか)を
バージョンアップしてください
・ファイルサイズ
・ビルド時間
などを管理し公開
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスティフの日常
 SWETの環境に生息中
⁃ 1日1回、現行バージョンの動作確認をする
• 現在の最新バージョンで動作確認
⁃ 監視対象がリリースされたら動作確認をする
• ビルドマシンに関係するもの(の例)
⁃ Xcode
• Xcode8.3.3がリリース → ビルドマシンに自動インストール
• 以降、Xcode8.3.3が動作確認で利用される
• アプリ自身が利用するもの(の例)
⁃ fastlane / gem
• 週1回以上のリリースがある(基本最新を使うのが良い)
⁃ Firebase / Pods
• ★4系になり名前が変更になり対応が必要になりました★
Copyright © DeNA Co.,Ltd. All Rights Reserved.
そんなマスティフの「WWDC2017」 初日の出来事
 iTunes Connectに新機能が追加
⁃ 定期実行でdeliverが動かないことが自動で判明
⁃ fastlaneの新バージョンがリリース(早い..)
⁃ 新バージョンでdeliverが動くことを自動で確認
私が出社する前に上記は全て終わっていました
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスティフとXcodeベータの生活(1/2)
 おさらい / ベータ版の流れ
1. ベータ版はn回リリースされる
• (Info.plist内の)バージョン番号は変わらない
• BuildNumberが変わる
1. ある日、
• ベータ最終版のGM(Gold Master)版がリリースされる
1. 正式版が出る
• (基本)GM版と一緒
• BuildNumberが異なるときがある
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスティフとXcodeベータの生活(2/2)
 マスティフにおけるベータ版のフロー(通常フローとは別で用意)
1. Xcodeベータの更新をBuildNumberの差異で検知
2. ビルドマシンにインストール
• 古いのは残さない
3. サンプルアプリを元に動作確認
• サンプルアプリは「既存」「新規対応」の2種類で確認
• 既存
• 新規機能を導入していない状態
• 新規対応
• 今回新たに追加・改良されたAPI(のうち一部)を導入
Copyright © DeNA Co.,Ltd. All Rights Reserved.
重点調査対象:テスト周り/CI周りの変化
 (我々のアプリでは)特にテスト周り/CI周りの変化に注力しています
⁃ ベータ版での調査は上記がメインになります
 アスティフで使っているアプリは以下の機能を有しています
⁃ UIテスト
• XCTest
⁃ ※新規・改修があった場合に対応する※
• EarlGrey
• Appium
⁃ CI周り
• ビルド → テスト → iTunesConnectへのデータ更新
⁃ fastlaneを元にチェック
※マスティフは他アプリで実行することも可能※
Copyright © DeNA Co.,Ltd. All Rights Reserved.
さいごに
 WWDC2017おつかれさまでした
⁃ GM版が出るまでが勝負なので楽しみましょう
⁃ バージョンアップ対応における不安とコストは極力下げて新機能を
楽しみましょう
• もっともっと下げられるはず
 In the future work
⁃ 新iOSへのバージョンアップも自動化出来ないかを検討中
• iOSのベータが出る → 端末を自動でアップデート → 動作確認
• AWS Device Farmでの利用を検討したがベータ版がない

マスティフ (for Xcode beta) - バージョンアップ対応を軽減するためのサービス

  • 1.
    Copyright © DeNACo.,Ltd. All Rights Reserved. CAMPFIRE iOS #2 2017/06/12(Mon) 平田敏之@DeNA SWET マスティフ: (for Xcode Beta) バージョンアップ対応を軽減するためのサービス
  • 2.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 自己紹介  平田 敏之@DeNA ⁃ SWET (Software Engineer in Test) • 事業サポートチーム / テスト基盤チーム • ミッション ⁃ DeNAサービス全般の品質向上 ⁃ DeNAエンジニアの開発生産性向上 ⁃ 私がやっていること(の一部) • クライアントアプリ周りのテスト戦略、自動テストの開発 • CI/CD環境整備 • テスト基盤環境の開発 • iOS Test Nightの主催
  • 3.
    Copyright © DeNACo.,Ltd. All Rights Reserved. はじめに  CAMPFIRE iOS #2のテーマ ⁃ 「WWDC / 新iOSバージョン対応」 • WWDC2017 ⁃ Xcode 9 / iOS 11 皆さんは発表に対してどのような感想を持ちましたか? 新機能に対してワクワクする・試してみたい • ARKit!! • XCode9!! • テスト周りの改良!! ワクワクすると同時に不安がありませんか? • 新機能に対して「どのようにテストしようか」 • 既存アプリに対して影響ある新機能や改修がないか
  • 4.
    Copyright © DeNACo.,Ltd. All Rights Reserved. WWDC2017の影響  すでにリリースされているもの ⁃ 自動アップデート用の段階的リリース ⁃ アプリのサブタイトル(iOS11-) ⁃ プロモーション用テキスト(iOS11-)  現在はβでそのうちリリースされるもの ⁃ Xcode 9 • What’s New in StoreKit / etc ⁃ iOS 11 • Introducing the New App Store / etc ・すでにリリース済みのものは影響がないかすぐにチェックしないといけない ・リリース前のものはβじゃなくなるまでにチェックをしないといけない
  • 5.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 「マスティフ」:バージョンアップ対応軽減サービス  マスティフのお仕事 / SWET特製サンプルアプリを利用 ⁃ 対象ライブラリがバージョンアップしたら動作確認をする • バージョンアップに対応が必要かがすぐに分かる • ビルド時間、ファイルサイズなどの変化が分かる ⁃ 既存ライブラリが動くことを定期的に動作確認する • 使えなくなったことを早めに知りたい ⁃ 1日1回動作確認を実行  バージョンアップ検知の対象(for iOS) ⁃ Gemfile ⁃ CocoaPods ⁃ Carthage ⁃ Xcode(βも含む)
  • 6.
    Copyright © DeNACo.,Ltd. All Rights Reserved. システム構成(非常に簡単に) 全体管理 バージョンチェック 動作確認 結果管理 digdag Jenkins slack モバイルアプリ (iOS / Android) このバージョンで 動作確認してください あなた自身(Xcodeとか)を バージョンアップしてください ・ファイルサイズ ・ビルド時間 などを管理し公開
  • 7.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マスティフの日常  SWETの環境に生息中 ⁃ 1日1回、現行バージョンの動作確認をする • 現在の最新バージョンで動作確認 ⁃ 監視対象がリリースされたら動作確認をする • ビルドマシンに関係するもの(の例) ⁃ Xcode • Xcode8.3.3がリリース → ビルドマシンに自動インストール • 以降、Xcode8.3.3が動作確認で利用される • アプリ自身が利用するもの(の例) ⁃ fastlane / gem • 週1回以上のリリースがある(基本最新を使うのが良い) ⁃ Firebase / Pods • ★4系になり名前が変更になり対応が必要になりました★
  • 8.
    Copyright © DeNACo.,Ltd. All Rights Reserved. そんなマスティフの「WWDC2017」 初日の出来事  iTunes Connectに新機能が追加 ⁃ 定期実行でdeliverが動かないことが自動で判明 ⁃ fastlaneの新バージョンがリリース(早い..) ⁃ 新バージョンでdeliverが動くことを自動で確認 私が出社する前に上記は全て終わっていました
  • 9.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マスティフとXcodeベータの生活(1/2)  おさらい / ベータ版の流れ 1. ベータ版はn回リリースされる • (Info.plist内の)バージョン番号は変わらない • BuildNumberが変わる 1. ある日、 • ベータ最終版のGM(Gold Master)版がリリースされる 1. 正式版が出る • (基本)GM版と一緒 • BuildNumberが異なるときがある
  • 10.
    Copyright © DeNACo.,Ltd. All Rights Reserved. マスティフとXcodeベータの生活(2/2)  マスティフにおけるベータ版のフロー(通常フローとは別で用意) 1. Xcodeベータの更新をBuildNumberの差異で検知 2. ビルドマシンにインストール • 古いのは残さない 3. サンプルアプリを元に動作確認 • サンプルアプリは「既存」「新規対応」の2種類で確認 • 既存 • 新規機能を導入していない状態 • 新規対応 • 今回新たに追加・改良されたAPI(のうち一部)を導入
  • 11.
    Copyright © DeNACo.,Ltd. All Rights Reserved. 重点調査対象:テスト周り/CI周りの変化  (我々のアプリでは)特にテスト周り/CI周りの変化に注力しています ⁃ ベータ版での調査は上記がメインになります  アスティフで使っているアプリは以下の機能を有しています ⁃ UIテスト • XCTest ⁃ ※新規・改修があった場合に対応する※ • EarlGrey • Appium ⁃ CI周り • ビルド → テスト → iTunesConnectへのデータ更新 ⁃ fastlaneを元にチェック ※マスティフは他アプリで実行することも可能※
  • 12.
    Copyright © DeNACo.,Ltd. All Rights Reserved. さいごに  WWDC2017おつかれさまでした ⁃ GM版が出るまでが勝負なので楽しみましょう ⁃ バージョンアップ対応における不安とコストは極力下げて新機能を 楽しみましょう • もっともっと下げられるはず  In the future work ⁃ 新iOSへのバージョンアップも自動化出来ないかを検討中 • iOSのベータが出る → 端末を自動でアップデート → 動作確認 • AWS Device Farmでの利用を検討したがベータ版がない