SlideShare a Scribd company logo
1 of 15
Copyright © DeNA Co.,Ltd. All Rights Reserved.
AKIBA.swift 1周年記念
iOS Test Night枠
2017/04/17(Mon)
平田敏之@DeNA
バージョンアップの対応を
軽減するためのサービス(マスティフ)の構築
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.
今日の発表の流れ
 はじめに
⁃ バージョンアップ対応の大変さについて
 マスティフの構築について
 システム構成
 iOSアプリにおける動作確認について
 おわりに
Copyright © DeNA Co.,Ltd. All Rights Reserved.
はじめに
 バージョンアップ対応で苦労した経験はありませんか?
⁃ Xcode、利用しているライブラリなど
 こんな経験はありませんか?
⁃ 新バージョンへの移行時のコスト見積もりが難しいので先延ばし
• バージョンアップしてみたらビルドすら通らなかった
⁃ バージョンを固定化していたのに動かなくなった
• fastlane/spaceshipとか使っているとあったり(Apple側の改修で..)
⁃ いつバージョンがあがるか(あがったか)は分からない
• 気づいたときにバージョンアップをしてみる
ここにかかるコストを減らしたい
Copyright © DeNA Co.,Ltd. All Rights Reserved.
バージョンアップの対応を軽減するためのサービスの構築
 やりたいこと
⁃ 利用ライブラリがバージョンアップしたら動作確認をする
• 対処が必要かを早めに分かるようにしたい
• ビルド時間、ファイルサイズなどの変化をしりたい
⁃ 既存ライブラリが問題なく動くことを定期的に動作確認する
• 使えなくなったことを早めに知りたい
• → dailyで動作確認を実行すれば良い
 バージョンアップ検知の対象(for iOS)
⁃ Gemfile
⁃ CocoaPods
⁃ Carthage
⁃ Xcode
マスティフ
Copyright © DeNA Co.,Ltd. All Rights Reserved.
本サービス名:マスティフ
 SWETで開発しているサービスは犬の名前がついています。
⁃ 本サービス名:マスティフ
⁃ 他のサービス:ポメラニアン
• テスト結果の集計と集計結果を使った機能をプラグイン的に追加できる
ツール
⁃ 利用例:テスト結果の整理とテストの並列実行の割り振り
• 今までのテスト結果を元にどのように並列して実行するかを決めてくれる
Copyright © DeNA Co.,Ltd. All Rights Reserved.
システム構成(おおまかに)
全体管理
バージョンチェック
動作確認
結果管理
digdag
Jenkins
slack
作成中
モバイルアプリ
(iOS / Android)
このバージョンで
動作確認してください
あなた自身(Xcodeとか)を
バージョンアップしてください
・ファイルサイズ
・ビルド時間
などを管理し公開する
Copyright © DeNA Co.,Ltd. All Rights Reserved.
マスティフの想定する利用のされ方
 1) SWETが用意したアプリによる動作確認の結果を確認
⁃ メリット
• 各ライブラリやXcodeのバージョンによる差異がわかる
⁃ ビルド時間の差、ファイルサイズの差
⁃ 該当バージョンのライブラリが問題なく利用できるかどうか
⁃ 不足点
• 自分たちが使っているライブラリが対応されているとは限らない
• ライブラリの使い方が同じとは限らない
 2) 自分たちのアプリに組み込む
⁃ 導入コストはかかるがやりたいことが出来る
Copyright © DeNA Co.,Ltd. All Rights Reserved.
iOSアプリにおける動作確認(1/2)
 サンプルアプリ(SWET製)
⁃ 言語:Swift 3
⁃ ビルド、テストの実行等
• fastlane
⁃ 機能(の一部)
• Firebase Realtimeを使った
チャット
• Realmを使ったフォーム画面
⁃ ライブラリ管理
• CocoaPods
• Carthage
⁃ 自動テスト
• UIテスト
⁃ XCUITest
⁃ EarlGrey
⁃ fastlane/snapshot
 マスティフ(太字が自分たちで用意するもの)
 action_mapping.yml
 ライブラリに対してどのlane
を実行するかの定義書
 versionファイル
 どのversionを使っているか
が書かれたファイル
 fastlane関係
 MastiffFastlane
 overrideと独自のlaneが
書かれている
 独自action(plugin化予定)
 Podfile/Gemfile/Cartha
ge/Carthage.privateの
更新
 実行するlaneを決定
Copyright © DeNA Co.,Ltd. All Rights Reserved.
iOSアプリにおける動作確認(2/2)
 fastlaneを活用
⁃ Fastfile周り
• 別のFastfileを読み込む事が可能(import / import_from_git)
⁃ import “./MastiffFastfile”
⁃ これによりマスティフに必要なlaneが追加される
• 既存laneのoverrideが可能
⁃ before_allの上書き
⁃ override_laneによるlaneの上書き
⁃ 独自action
• (1) ライブラリに応じて実行するlane(1以上)を決める
• (2) ライブラリのバージョン情報を更新する
参考:https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Advanced.md
既存アプリにも少ない工数で導入は可能
Copyright © DeNA Co.,Ltd. All Rights Reserved.
バージョンアップ時の動作確認のフロー
最新のバージョンで
動作確認
結果
1つ前のバージョンで
動作確認最新のバージョンに
更新
成功
失敗
対象ライブラリに応じて
動作確認が変わる
失敗 → 原因を特定したい
前のバージョンで動作確認
成功
→ このバージョンアップに何かあるかもしれない
失敗
→ このバージョンアップとは別の原因があるかもしれない
対象ライブラリの
バージョンアップ
ライブラリは
リポジトリ管理
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Xcodeのバージョンアップと動作確認
前提:
⁃ ビルドマシンとしてJenkinsを利用
• クラウドだと最新のXcodeがいつ使えるか不明のため
⁃ Application Detector Plugin(SWET製)を利用
• 複数バージョンのアプリケーションを扱うためのプラグイン
フロー:
 Xcodeのバージョンアップチェック
 Xcodeをビルドマシンにインストール
 ビルドマシンで動くJenkins(slave)を一旦切断
⁃ Pluginの仕様の関係
 (自動化対応中) 新しいXcodeで動作確認をおこなう
Copyright © DeNA Co.,Ltd. All Rights Reserved.
Application Detector Pluginとは?
 複数のXcodeバージョンの扱いを簡単にするplugin
⁃ インストールされているXcodeのバージョンに基づきlabelを付与
⁃ ビルドパラメータとしてXcodeのバージョンを指定可能
 Jenkinsの構成例
⁃ Master
⁃ slave1(mac) / label: Xcode8.1
• Xcode8.1
⁃ slave2(mac) / label: Xcode8.2 Xcode8.3.1
• Xcode8.2
• Xcode8.3.1
 実行
⁃ ビルドパラメータ:Xcode8.3.1と指定
⁃ slave2でjobが実行される
Copyright © DeNA Co.,Ltd. All Rights Reserved.
実行結果
Slack通知
動作確認内容
fastlaneのreport.xmlとして出力
毎日動く現行バージョンの動作確認 バージョンアップ時に動く新バージョンの動作確認
Copyright © DeNA Co.,Ltd. All Rights Reserved.
さいごに
 バージョンアップ(等)に伴う苦労を軽減するサービスを実装中です。
⁃ バージョンアップ時に必要な対策情報も随時公開していく予定。
⁃ 各機能(サービス)に関しては随時公開していく予定。
 In the Future Work(の一部)
⁃ 1. 端末のOSバージョンも対象へ
⁃ 2. エラーログの解析
⁃ 3. OSS化

More Related Content

What's hot

fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCIToshiyuki Hirata
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Toshiyuki Hirata
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境Toshiyuki Hirata
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -Toshiyuki Hirata
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介Shunsuke Maeda
 
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築Toshiyuki Hirata
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることKazuaki KURIU
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割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
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるToshiyuki Hirata
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたToshiyuki Hirata
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Toshiyuki Hirata
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -Toshiyuki Hirata
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜gree_tech
 
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックSEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックKouhei Sutou
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜gree_tech
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestMasaki Nakagawa
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話司 知花
 

What's hot (20)

fastlane x iOSアプリのCI
fastlane x iOSアプリのCIfastlane x iOSアプリのCI
fastlane x iOSアプリのCI
 
Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -Xcodeの管理を楽に - Jenkins編 -
Xcodeの管理を楽に - Jenkins編 -
 
iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境iOSアプリにおけるリリースフローとCI環境
iOSアプリにおけるリリースフローとCI環境
 
iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -iOSアプリ開発のCI環境 - Jenkins編 -
iOSアプリ開発のCI環境 - Jenkins編 -
 
iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介iOSで利用できるデバイスファームのメリット・デメリットの紹介
iOSで利用できるデバイスファームのメリット・デメリットの紹介
 
バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築バージョンアップの対応を軽減するためのサービスの構築
バージョンアップの対応を軽減するためのサービスの構築
 
スマホアプリディレクターが考えていること
スマホアプリディレクターが考えていることスマホアプリディレクターが考えていること
スマホアプリディレクターが考えていること
 
DeNAにおけるSWETの役割
DeNAにおけるSWETの役割DeNAにおけるSWETの役割
DeNAにおけるSWETの役割
 
コードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Androidコードレビューをより良くする Danger x Android
コードレビューをより良くする Danger x Android
 
DroidKaigi_devicefarm
DroidKaigi_devicefarmDroidKaigi_devicefarm
DroidKaigi_devicefarm
 
Android e2e testing at mercari
Android e2e testing at mercariAndroid e2e testing at mercari
Android e2e testing at mercari
 
Xcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえるXcode10での テスト周りの進化をふりかえる
Xcode10での テスト周りの進化をふりかえる
 
fastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみたfastlane snapshotの並列実行についてまとめてみた
fastlane snapshotの並列実行についてまとめてみた
 
Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境Androidアプリ開発のテスト環境
Androidアプリ開発のテスト環境
 
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
iOSアプリ開発のテスト環境 - テストをはじめる最初の一歩 -
 
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
CEDEC2015_スマホゲーム開発を支えろ!〜汗と涙のQAエンジニアリング〜
 
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバックSEゼミ2015 - OSS Hack 4 Beginners - フィードバック
SEゼミ2015 - OSS Hack 4 Beginners - フィードバック
 
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
DeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in TestDeNAが取り組む Software Engineer in Test
DeNAが取り組む Software Engineer in Test
 
OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話OpenSTFを ECSに乗せてみた話
OpenSTFを ECSに乗せてみた話
 

Similar to バージョンアップ対応を軽減するサービス:マスティフ

グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編Mitsuhiro Tanda
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App CenterTakeshi Fujimoto
 
Trac Plugin Developement with Jenkins
Trac Plugin Developement with JenkinsTrac Plugin Developement with Jenkins
Trac Plugin Developement with JenkinsTakahisa Wada
 
Cephベンチマーク kvm
Cephベンチマーク kvmCephベンチマーク kvm
Cephベンチマーク kvmToshimi Kawabata
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechconDeNA
 
XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!Atsushi Sato
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...Shinji Takao
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話Yahoo!デベロッパーネットワーク
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Takashi Kanai
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...Amazon Web Services Japan
 
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムOSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムsatsuki fukazu
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をAtsuhiro Kubo
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由Rakuten Group, Inc.
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2Yushi_Takagi
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツTomoya Hashimoto
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天Hiro Yoshioka
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Pathdynamis
 

Similar to バージョンアップ対応を軽減するサービス:マスティフ (20)

Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編グリーにおけるスマホアプリ開発~HTML5編
グリーにおけるスマホアプリ開発~HTML5編
 
Introduction to Visual Studio App Center
Introduction to Visual Studio App CenterIntroduction to Visual Studio App Center
Introduction to Visual Studio App Center
 
Trac Plugin Developement with Jenkins
Trac Plugin Developement with JenkinsTrac Plugin Developement with Jenkins
Trac Plugin Developement with Jenkins
 
Cephベンチマーク kvm
Cephベンチマーク kvmCephベンチマーク kvm
Cephベンチマーク kvm
 
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
快適・簡単・安心なアプリE2Eテストの実行環境 #stac2017
 
AndApp開発における全て #denatechcon
AndApp開発における全て #denatechconAndApp開発における全て #denatechcon
AndApp開発における全て #denatechcon
 
XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!XPagesDay 2014 - What's new in XPages NOW!
XPagesDay 2014 - What's new in XPages NOW!
 
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
 
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
JSUG 2018/02/05 SpringOnePlatform2017参加報告 プラットフォーム関連のお話
 
Chefで始めるWindows Server構築
Chefで始めるWindows Server構築Chefで始めるWindows Server構築
Chefで始めるWindows Server構築
 
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...20161027 hadoop summit  Generating Recommendations at Amazon Scale with Apach...
20161027 hadoop summit Generating Recommendations at Amazon Scale with Apach...
 
OSSで作るOpenStack監視システム
OSSで作るOpenStack監視システムOSSで作るOpenStack監視システム
OSSで作るOpenStack監視システム
 
MakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発をMakeGoodで快適なテスト駆動開発を
MakeGoodで快適なテスト駆動開発を
 
楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由楽天がCloud foundryを選んだ理由
楽天がCloud foundryを選んだ理由
 
devsami kansai 2012 #c2
devsami kansai 2012 #c2devsami kansai 2012 #c2
devsami kansai 2012 #c2
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツ
 
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
楽天インターネットスケーラブルコンピューティング;丸山先生レクチャーシリーズ2010第3回@楽天
 
Firefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own PathFirefox OS - Blaze Your Own Path
Firefox OS - Blaze Your Own Path
 
July techfesta2014 f30
July techfesta2014 f30July techfesta2014 f30
July techfesta2014 f30
 

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
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストToshiyuki Hirata
 

More from Toshiyuki Hirata (8)

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を中心とした情報共有
 
レビューのコストを削減するための施策
レビューのコストを削減するための施策レビューのコストを削減するための施策
レビューのコストを削減するための施策
 
STFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テストSTFとAppiumをもちいたAndroidアプリの自動テスト
STFとAppiumをもちいたAndroidアプリの自動テスト
 

Recently uploaded

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 

Recently uploaded (8)

論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 

バージョンアップ対応を軽減するサービス:マスティフ

  • 1. Copyright © DeNA Co.,Ltd. All Rights Reserved. AKIBA.swift 1周年記念 iOS Test Night枠 2017/04/17(Mon) 平田敏之@DeNA バージョンアップの対応を 軽減するためのサービス(マスティフ)の構築
  • 2. Copyright © DeNA Co.,Ltd. All Rights Reserved. 自己紹介  平田 敏之@DeNA ⁃ SWET (Software Engineer in Test) • 事業サポートチーム / テスト基盤チーム • ミッション ⁃ DeNAサービス全般の品質向上 ⁃ DeNAエンジニアの開発生産性向上 ⁃ 私がやっていること(の一部) • クライアントアプリ周りのテスト戦略、自動テストの開発 • CI/CD環境整備 • テスト基盤環境の開発 • iOS Test Nightの主催
  • 3. Copyright © DeNA Co.,Ltd. All Rights Reserved. 今日の発表の流れ  はじめに ⁃ バージョンアップ対応の大変さについて  マスティフの構築について  システム構成  iOSアプリにおける動作確認について  おわりに
  • 4. Copyright © DeNA Co.,Ltd. All Rights Reserved. はじめに  バージョンアップ対応で苦労した経験はありませんか? ⁃ Xcode、利用しているライブラリなど  こんな経験はありませんか? ⁃ 新バージョンへの移行時のコスト見積もりが難しいので先延ばし • バージョンアップしてみたらビルドすら通らなかった ⁃ バージョンを固定化していたのに動かなくなった • fastlane/spaceshipとか使っているとあったり(Apple側の改修で..) ⁃ いつバージョンがあがるか(あがったか)は分からない • 気づいたときにバージョンアップをしてみる ここにかかるコストを減らしたい
  • 5. Copyright © DeNA Co.,Ltd. All Rights Reserved. バージョンアップの対応を軽減するためのサービスの構築  やりたいこと ⁃ 利用ライブラリがバージョンアップしたら動作確認をする • 対処が必要かを早めに分かるようにしたい • ビルド時間、ファイルサイズなどの変化をしりたい ⁃ 既存ライブラリが問題なく動くことを定期的に動作確認する • 使えなくなったことを早めに知りたい • → dailyで動作確認を実行すれば良い  バージョンアップ検知の対象(for iOS) ⁃ Gemfile ⁃ CocoaPods ⁃ Carthage ⁃ Xcode マスティフ
  • 6. Copyright © DeNA Co.,Ltd. All Rights Reserved. 本サービス名:マスティフ  SWETで開発しているサービスは犬の名前がついています。 ⁃ 本サービス名:マスティフ ⁃ 他のサービス:ポメラニアン • テスト結果の集計と集計結果を使った機能をプラグイン的に追加できる ツール ⁃ 利用例:テスト結果の整理とテストの並列実行の割り振り • 今までのテスト結果を元にどのように並列して実行するかを決めてくれる
  • 7. Copyright © DeNA Co.,Ltd. All Rights Reserved. システム構成(おおまかに) 全体管理 バージョンチェック 動作確認 結果管理 digdag Jenkins slack 作成中 モバイルアプリ (iOS / Android) このバージョンで 動作確認してください あなた自身(Xcodeとか)を バージョンアップしてください ・ファイルサイズ ・ビルド時間 などを管理し公開する
  • 8. Copyright © DeNA Co.,Ltd. All Rights Reserved. マスティフの想定する利用のされ方  1) SWETが用意したアプリによる動作確認の結果を確認 ⁃ メリット • 各ライブラリやXcodeのバージョンによる差異がわかる ⁃ ビルド時間の差、ファイルサイズの差 ⁃ 該当バージョンのライブラリが問題なく利用できるかどうか ⁃ 不足点 • 自分たちが使っているライブラリが対応されているとは限らない • ライブラリの使い方が同じとは限らない  2) 自分たちのアプリに組み込む ⁃ 導入コストはかかるがやりたいことが出来る
  • 9. Copyright © DeNA Co.,Ltd. All Rights Reserved. iOSアプリにおける動作確認(1/2)  サンプルアプリ(SWET製) ⁃ 言語:Swift 3 ⁃ ビルド、テストの実行等 • fastlane ⁃ 機能(の一部) • Firebase Realtimeを使った チャット • Realmを使ったフォーム画面 ⁃ ライブラリ管理 • CocoaPods • Carthage ⁃ 自動テスト • UIテスト ⁃ XCUITest ⁃ EarlGrey ⁃ fastlane/snapshot  マスティフ(太字が自分たちで用意するもの)  action_mapping.yml  ライブラリに対してどのlane を実行するかの定義書  versionファイル  どのversionを使っているか が書かれたファイル  fastlane関係  MastiffFastlane  overrideと独自のlaneが 書かれている  独自action(plugin化予定)  Podfile/Gemfile/Cartha ge/Carthage.privateの 更新  実行するlaneを決定
  • 10. Copyright © DeNA Co.,Ltd. All Rights Reserved. iOSアプリにおける動作確認(2/2)  fastlaneを活用 ⁃ Fastfile周り • 別のFastfileを読み込む事が可能(import / import_from_git) ⁃ import “./MastiffFastfile” ⁃ これによりマスティフに必要なlaneが追加される • 既存laneのoverrideが可能 ⁃ before_allの上書き ⁃ override_laneによるlaneの上書き ⁃ 独自action • (1) ライブラリに応じて実行するlane(1以上)を決める • (2) ライブラリのバージョン情報を更新する 参考:https://github.com/fastlane/fastlane/blob/master/fastlane/docs/Advanced.md 既存アプリにも少ない工数で導入は可能
  • 11. Copyright © DeNA Co.,Ltd. All Rights Reserved. バージョンアップ時の動作確認のフロー 最新のバージョンで 動作確認 結果 1つ前のバージョンで 動作確認最新のバージョンに 更新 成功 失敗 対象ライブラリに応じて 動作確認が変わる 失敗 → 原因を特定したい 前のバージョンで動作確認 成功 → このバージョンアップに何かあるかもしれない 失敗 → このバージョンアップとは別の原因があるかもしれない 対象ライブラリの バージョンアップ ライブラリは リポジトリ管理
  • 12. Copyright © DeNA Co.,Ltd. All Rights Reserved. Xcodeのバージョンアップと動作確認 前提: ⁃ ビルドマシンとしてJenkinsを利用 • クラウドだと最新のXcodeがいつ使えるか不明のため ⁃ Application Detector Plugin(SWET製)を利用 • 複数バージョンのアプリケーションを扱うためのプラグイン フロー:  Xcodeのバージョンアップチェック  Xcodeをビルドマシンにインストール  ビルドマシンで動くJenkins(slave)を一旦切断 ⁃ Pluginの仕様の関係  (自動化対応中) 新しいXcodeで動作確認をおこなう
  • 13. Copyright © DeNA Co.,Ltd. All Rights Reserved. Application Detector Pluginとは?  複数のXcodeバージョンの扱いを簡単にするplugin ⁃ インストールされているXcodeのバージョンに基づきlabelを付与 ⁃ ビルドパラメータとしてXcodeのバージョンを指定可能  Jenkinsの構成例 ⁃ Master ⁃ slave1(mac) / label: Xcode8.1 • Xcode8.1 ⁃ slave2(mac) / label: Xcode8.2 Xcode8.3.1 • Xcode8.2 • Xcode8.3.1  実行 ⁃ ビルドパラメータ:Xcode8.3.1と指定 ⁃ slave2でjobが実行される
  • 14. Copyright © DeNA Co.,Ltd. All Rights Reserved. 実行結果 Slack通知 動作確認内容 fastlaneのreport.xmlとして出力 毎日動く現行バージョンの動作確認 バージョンアップ時に動く新バージョンの動作確認
  • 15. Copyright © DeNA Co.,Ltd. All Rights Reserved. さいごに  バージョンアップ(等)に伴う苦労を軽減するサービスを実装中です。 ⁃ バージョンアップ時に必要な対策情報も随時公開していく予定。 ⁃ 各機能(サービス)に関しては随時公開していく予定。  In the Future Work(の一部) ⁃ 1. 端末のOSバージョンも対象へ ⁃ 2. エラーログの解析 ⁃ 3. OSS化