SlideShare a Scribd company logo
1 of 14
Copyright © DeNA Co.,Ltd. All Rights Reserved.
iOS Test Night #2
2017/01/19(Thu)
平田敏之@DeNA
バージョンアップの対応を
軽減するためのサービスの構築
Copyright © DeNA Co.,Ltd. All Rights Reserved.
自己紹介
 平田 敏之@DeNA
⁃ 経歴
• GWの開発 → ホムペサービスの開発、iOSアプリの開発 → SWET
⁃ SWET (Software Engineer in Test)
• 事業サポートチーム / テスト基盤チーム
• ミッション
⁃ DeNAサービス全般の品質向上
⁃ DeNAエンジニアの開発生産性向上
⁃ 私がやっていること(の一部)
• クライアントアプリ周りのテスト戦略、自動テストの開発
• CI/CD環境整備
• テスト基盤環境の開発
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今日の発表の流れ
 はじめに
 問題点:バージョンアップでありがちなこと
 バージョンアップにかかるコストの軽減
 システム構成
⁃ やっていること
 おわりに
 今後の予定
Copyright © DeNA Co.,Ltd. All Rights Reserved.
はじめに
 アプリを開発する上では様々なバージョンと共に生きていく必要がある
 アプリを開発する上で意識するバージョン
⁃ iOS
• 年に1回はメジャーアップデート
⁃ Xcode
• 年に1回はメジャーアップデート
⁃ 開発の関係上、iOSと同時ではあるがこの前一度ずれましたね..
⁃ ライブラリ
• CocoaPods
• Gem
⁃ アプリ
• 自分たちがコントロール
⁃ リリースのたびにincrementされている
Copyright © DeNA Co.,Ltd. All Rights Reserved.
問題点:バージョンアップでありがちなこと
 新バージョンへの移行時のコスト見積もりが難しい
⁃ Xcodeではビルドすら通らないこともある
• 関連するfastlane/gymなどでは…
⁃ セマンティックバージョニングとは限らない
• メジャーアップデートで後方互換制が無くなるとは限らないし、マイナー
アップデートで後方互換性が無くなることもあったり..
⁃ → 作業タイミングがなかなか難しい(しかしリミットがあったりする)
 バージョンの固定化!
⁃ → 気づいたら指定バージョンが使えなくなっていた
• (例)Apple側の改修により使用不可に (fastlane/spaceshipとか)
 いつバージョンがあがるか(あがったか)は分からない
⁃ バージョンアップに気づいたらの対応になりがち
⁃ 問題が起きたらバージョンアップとかになりがち
Copyright © DeNA Co.,Ltd. All Rights Reserved.
バージョンアップにかかるコストの軽減
 新バージョンが出たことを知りたい
⁃ → バージョンを定期的にチェックしslack(など)へ通知
 新バージョンを組み込んで問題無いかを知りたい
⁃ → 新バージョンを組み込んで動作確認をおこなう
• その実行結果を通知
Pull型からPush型に変更
最初の一手(簡単な動作確認)を自動でやってもらう
Copyright © DeNA Co.,Ltd. All Rights Reserved.
システム構成
サンプルアプリ
(Swift2.3)
バージョンチェック
システム
1) 新バージョン通知
1日1回チェック
CocoaPods
Gem
Xcode
Rundeck
2) ライブラリに応じて動作確認
3) 動作確認結果を通知
Copyright © DeNA Co.,Ltd. All Rights Reserved.
バージョンアップチェック対象と確認方法
 現時点でバージョンのチェックをおこなっているのは以下
⁃ Gem(の一部)
• チェック先:https://rubygems.org/gems
⁃ CocoaPods(の一部)
• チェック先:https://trunk.cocoapods.org/api/v1/pods
⁃ Xcode
• チェックはおこなって通知はしているが、自動でビルド環境にセットアッ
プし、動作確認をするまでは完成していない(近日対応予定)
• チェック方法:fastlane/spaceshipの利用
⁃ 変更予定
Copyright © DeNA Co.,Ltd. All Rights Reserved.
サンプルアプリの簡単な説明
 用途:
⁃ 各ライブラリの動作チェック用
⁃ テスティングフレームワークのテスト用
 言語:Swift 2.3
 ビルド周り:
⁃ fastlane
 自動テスト:
⁃ 現状はUIテストのみ(全て同じテストケースをおこなっている)
• XCUITest
• EarlGrey
• Appium
Copyright © DeNA Co.,Ltd. All Rights Reserved.
バージョンアップ時の動作確認のフロー
最新のバージョンで
動作確認
結果
1つ前のバージョンで
動作確認
最新のバージョンに
更新
成功
失敗
対象ライブラリに応じて
動作確認が変わる
失敗 → 原因を特定したい
前のバージョンで動作確認
成功
→ このバージョンアップに何かあるかもしれない
失敗
→ このバージョンアップとは別の原因があるかもしれない
Copyright © DeNA Co.,Ltd. All Rights Reserved.
動作確認の内容
 やっていること
⁃ バージョンアップしたライブラリに応じてやることが決まる
• ライブラリとおこなうべきアクション(fastlaneのlane)の定義書がある
⁃ 今の設定例
• Gem / fastlane
⁃ 1) アプリのビルド
⁃ 2) iTunesConnectのメタデータの更新
• Gem / spaceship
⁃ 1) iTunesConnectのメタデータの更新
• Gem / scan
⁃ 1) 自動テスト(w / XCTest)
• Pod / EarlGrey
⁃ 2) UIの自動テスト(w/ EarlGrey)
Copyright © DeNA Co.,Ltd. All Rights Reserved.
(現時点での)結果表示
slack
Jenkins
fastlane 2.8.0での動
作確認が終わった
ことの通知
fastlane 2.6.0が
問題なかったことの表示
行った
動作確認内容
Copyright © DeNA Co.,Ltd. All Rights Reserved.
さいごに
 バージョンアップで苦労した経験から(荒削りながら)作ってみました。
⁃ この手のことにかかるコストは少なくし、アプリのメインのところ
に力を入れていきたい。
 まだまだ課題はたくさんなので今後に期待!!
⁃ そして今後やることは..?
Copyright © DeNA Co.,Ltd. All Rights Reserved.
今後の予定(の一部)
 動作確認内容の拡大
⁃ 確認すること、利用するライブラリを増やしていく
 エラー時の処理の改良
⁃ 失敗したときの原因がどこにあるのかを更に調査しやすくする
⁃ ログ(エラー時に限らず)をうまいこと解析できないかを検討中
 versioneye導入
⁃ オープンソース化したこともあり組み合わせて利用する予定
 対応範囲の拡大
⁃ Android
⁃ Unity
 既存アプリへの利用
⁃ 自身のPodfile/Gemfileから推奨バージョンを教えてくれる等

More Related Content

What's hot

fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCIToshiyuki Hirata
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるToshiyuki Hirata
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフToshiyuki Hirata
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情Toshiyuki Hirata
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることKazuaki KURIU
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介Shunsuke Maeda
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたToshiyuki Hirata
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割Toshiyuki Hirata
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすShunsuke Maeda
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるShunsuke Maeda
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x AndroidToshiyuki Hirata
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercariVishal Banthia
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話司 知花
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションmirer
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜gree_tech
 

What's hot (20)

fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
 
バージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフバージョンアップ対応を軽減するサービス:マスティフ
バージョンアップ対応を軽減するサービス:マスティフ
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情2017年のiOSアプリ開発におけるCI事情
2017年のiOSアプリ開発におけるCI事情
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみた
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
 
Dangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らすDangerでpull requestレビューの指摘事項を減らす
Dangerでpull requestレビューの指摘事項を減らす
 
iOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進めるiOSにおけるコードレビューを一歩先へ進める
iOSにおけるコードレビューを一歩先へ進める
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話
 
JaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッションJaSST'16 Tokyo モバイルセッション
JaSST'16 Tokyo モバイルセッション
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 

Similar to バージョンアップの対応を軽減するためのサービスの構築

Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconDeNA
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~Yuki Ando
 
ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)伸夫 森本
 
DeNA QA Night#2 Game QA part
DeNA QA Night#2 Game QA partDeNA QA Night#2 Game QA part
DeNA QA Night#2 Game QA partYukihiro Yamamoto
 
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 智治 長沢
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストToshiyuki Hirata
 
ここが良かったDatadog
ここが良かったDatadogここが良かったDatadog
ここが良かったDatadogtyamane
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 
2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night Jenkins2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night JenkinsTakayuki Okazaki
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage PlatformMasaki Nakagawa
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告Masaki Nakagawa
 
サービスを成長させる為の開発について
サービスを成長させる為の開発についてサービスを成長させる為の開発について
サービスを成長させる為の開発についてtatsuya mazaki
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみたjustice_sm
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーションYuta Matsumura
 
チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発Satoshi Takano
 
AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』Ryohei Sogo
 
20221017_QiitaNight_ver2.pdf
20221017_QiitaNight_ver2.pdf20221017_QiitaNight_ver2.pdf
20221017_QiitaNight_ver2.pdfyuyayamaguchi6
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops裕貴 荒井
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2Yushi_Takagi
 

Similar to バージョンアップの対応を軽減するためのサービスの構築 (20)

Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechconMobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
Mobage/AndAppのSDK開発事例とSDKを作る際に知っておくべきこと #denatechcon
 
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
CODT2020 ビジネスプラットフォームを支えるCI/CDパイプライン ~エンタープライズのDevOpsを加速させる運用改善Tips~
 
ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)ノーツが日本を救う(2002/3/13)
ノーツが日本を救う(2002/3/13)
 
DeNA QA Night#2 Game QA part
DeNA QA Night#2 Game QA partDeNA QA Night#2 Game QA part
DeNA QA Night#2 Game QA part
 
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo 【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
【QCon】 Get Clean, Stay Clean 価値を向上し続けるための秘訣 #QConTokyo
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 
ここが良かったDatadog
ここが良かったDatadogここが良かったDatadog
ここが良かったDatadog
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night Jenkins2012 08-23 Mame Night Jenkins
2012 08-23 Mame Night Jenkins
 
2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform2014-04-22 Ques #4 Automation Testing of Mobage Platform
2014-04-22 Ques #4 Automation Testing of Mobage Platform
 
楽天エンジニアライフ
楽天エンジニアライフ楽天エンジニアライフ
楽天エンジニアライフ
 
5minQues - SWET近況報告
5minQues - SWET近況報告5minQues - SWET近況報告
5minQues - SWET近況報告
 
サービスを成長させる為の開発について
サービスを成長させる為の開発についてサービスを成長させる為の開発について
サービスを成長させる為の開発について
 
Open STF Plugin 作ってみた
Open STF Plugin 作ってみたOpen STF Plugin 作ってみた
Open STF Plugin 作ってみた
 
.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション.NET アプリを改善して実践する継続的インテグレーション
.NET アプリを改善して実践する継続的インテグレーション
 
チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発チラシルiOSでの広告枠開発
チラシルiOSでの広告枠開発
 
AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』AppPotモバイルアプリ開発『内製化』
AppPotモバイルアプリ開発『内製化』
 
20221017_QiitaNight_ver2.pdf
20221017_QiitaNight_ver2.pdf20221017_QiitaNight_ver2.pdf
20221017_QiitaNight_ver2.pdf
 
Ossを使ったazureでのdev ops
Ossを使ったazureでのdev opsOssを使ったazureでのdev ops
Ossを使ったazureでのdev ops
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
 

More from Toshiyuki Hirata

iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測Toshiyuki Hirata
 
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測Toshiyuki Hirata
 
iOSにおける自動テストの並列化
iOSにおける自動テストの並列化iOSにおける自動テストの並列化
iOSにおける自動テストの並列化Toshiyuki Hirata
 
UIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめるUIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめるToshiyuki Hirata
 
UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法Toshiyuki Hirata
 
我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有Toshiyuki Hirata
 
レビューのコストを削減するための施策
レビューのコストを削減するための施策レビューのコストを削減するための施策
レビューのコストを削減するための施策Toshiyuki Hirata
 

More from Toshiyuki Hirata (7)

iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
 
iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測iOSにおけるパフォーマンス計測
iOSにおけるパフォーマンス計測
 
iOSにおける自動テストの並列化
iOSにおける自動テストの並列化iOSにおける自動テストの並列化
iOSにおける自動テストの並列化
 
UIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめるUIテスト(Espresso)の高速化をさらにすすめる
UIテスト(Espresso)の高速化をさらにすすめる
 
UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法UIテストの実行時間を短縮させる方法
UIテストの実行時間を短縮させる方法
 
我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有我が家のLINEを中心とした情報共有
我が家のLINEを中心とした情報共有
 
レビューのコストを削減するための施策
レビューのコストを削減するための施策レビューのコストを削減するための施策
レビューのコストを削減するための施策
 

Recently uploaded

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Recently uploaded (9)

クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

バージョンアップの対応を軽減するためのサービスの構築

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. iOS Test Night #2 2017/01/19(Thu) 平田敏之@DeNA バージョンアップの対応を 軽減するためのサービスの構築
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介  平田 敏之@DeNA ⁃ 経歴 • GWの開発 → ホムペサービスの開発、iOSアプリの開発 → SWET ⁃ SWET (Software Engineer in Test) • 事業サポートチーム / テスト基盤チーム • ミッション ⁃ DeNAサービス全般の品質向上 ⁃ DeNAエンジニアの開発生産性向上 ⁃ 私がやっていること(の一部) • クライアントアプリ周りのテスト戦略、自動テストの開発 • CI/CD環境整備 • テスト基盤環境の開発
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日の発表の流れ  はじめに  問題点:バージョンアップでありがちなこと  バージョンアップにかかるコストの軽減  システム構成 ⁃ やっていること  おわりに  今後の予定
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. はじめに  アプリを開発する上では様々なバージョンと共に生きていく必要がある  アプリを開発する上で意識するバージョン ⁃ iOS • 年に1回はメジャーアップデート ⁃ Xcode • 年に1回はメジャーアップデート ⁃ 開発の関係上、iOSと同時ではあるがこの前一度ずれましたね.. ⁃ ライブラリ • CocoaPods • Gem ⁃ アプリ • 自分たちがコントロール ⁃ リリースのたびにincrementされている
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. 問題点:バージョンアップでありがちなこと  新バージョンへの移行時のコスト見積もりが難しい ⁃ Xcodeではビルドすら通らないこともある • 関連するfastlane/gymなどでは… ⁃ セマンティックバージョニングとは限らない • メジャーアップデートで後方互換制が無くなるとは限らないし、マイナー アップデートで後方互換性が無くなることもあったり.. ⁃ → 作業タイミングがなかなか難しい(しかしリミットがあったりする)  バージョンの固定化! ⁃ → 気づいたら指定バージョンが使えなくなっていた • (例)Apple側の改修により使用不可に (fastlane/spaceshipとか)  いつバージョンがあがるか(あがったか)は分からない ⁃ バージョンアップに気づいたらの対応になりがち ⁃ 問題が起きたらバージョンアップとかになりがち
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. バージョンアップにかかるコストの軽減  新バージョンが出たことを知りたい ⁃ → バージョンを定期的にチェックしslack(など)へ通知  新バージョンを組み込んで問題無いかを知りたい ⁃ → 新バージョンを組み込んで動作確認をおこなう • その実行結果を通知 Pull型からPush型に変更 最初の一手(簡単な動作確認)を自動でやってもらう
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. システム構成 サンプルアプリ (Swift2.3) バージョンチェック システム 1) 新バージョン通知 1日1回チェック CocoaPods Gem Xcode Rundeck 2) ライブラリに応じて動作確認 3) 動作確認結果を通知
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. バージョンアップチェック対象と確認方法  現時点でバージョンのチェックをおこなっているのは以下 ⁃ Gem(の一部) • チェック先:https://rubygems.org/gems ⁃ CocoaPods(の一部) • チェック先:https://trunk.cocoapods.org/api/v1/pods ⁃ Xcode • チェックはおこなって通知はしているが、自動でビルド環境にセットアッ プし、動作確認をするまでは完成していない(近日対応予定) • チェック方法:fastlane/spaceshipの利用 ⁃ 変更予定
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. サンプルアプリの簡単な説明  用途: ⁃ 各ライブラリの動作チェック用 ⁃ テスティングフレームワークのテスト用  言語:Swift 2.3  ビルド周り: ⁃ fastlane  自動テスト: ⁃ 現状はUIテストのみ(全て同じテストケースをおこなっている) • XCUITest • EarlGrey • Appium
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. バージョンアップ時の動作確認のフロー 最新のバージョンで 動作確認 結果 1つ前のバージョンで 動作確認 最新のバージョンに 更新 成功 失敗 対象ライブラリに応じて 動作確認が変わる 失敗 → 原因を特定したい 前のバージョンで動作確認 成功 → このバージョンアップに何かあるかもしれない 失敗 → このバージョンアップとは別の原因があるかもしれない
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. 動作確認の内容  やっていること ⁃ バージョンアップしたライブラリに応じてやることが決まる • ライブラリとおこなうべきアクション(fastlaneのlane)の定義書がある ⁃ 今の設定例 • Gem / fastlane ⁃ 1) アプリのビルド ⁃ 2) iTunesConnectのメタデータの更新 • Gem / spaceship ⁃ 1) iTunesConnectのメタデータの更新 • Gem / scan ⁃ 1) 自動テスト(w / XCTest) • Pod / EarlGrey ⁃ 2) UIの自動テスト(w/ EarlGrey)
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. (現時点での)結果表示 slack Jenkins fastlane 2.8.0での動 作確認が終わった ことの通知 fastlane 2.6.0が 問題なかったことの表示 行った 動作確認内容
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. さいごに  バージョンアップで苦労した経験から(荒削りながら)作ってみました。 ⁃ この手のことにかかるコストは少なくし、アプリのメインのところ に力を入れていきたい。  まだまだ課題はたくさんなので今後に期待!! ⁃ そして今後やることは..?
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今後の予定(の一部)  動作確認内容の拡大 ⁃ 確認すること、利用するライブラリを増やしていく  エラー時の処理の改良 ⁃ 失敗したときの原因がどこにあるのかを更に調査しやすくする ⁃ ログ(エラー時に限らず)をうまいこと解析できないかを検討中  versioneye導入 ⁃ オープンソース化したこともあり組み合わせて利用する予定  対応範囲の拡大 ⁃ Android ⁃ Unity  既存アプリへの利用 ⁃ 自身のPodfile/Gemfileから推奨バージョンを教えてくれる等