CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
iOSアプリケーションの継続的デリバリー
-
Upload
naoki-umehara -
Category
Technology
-
view
5.664 -
download
1
description
Transcript of iOSアプリケーションの継続的デリバリー
![Page 1: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/1.jpg)
iOSアプリケーションの継続的デリバリー
〜エンタープライズ品質のiOSアプリケーションを目指して〜
梅原 直樹Naoki UMEHARA 14/2/2014
Developers Summit 2014 [14-D-5]
![Page 2: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/2.jpg)
僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては
ならない
![Page 3: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/3.jpg)
梅原 直樹うめはら なおき
Twitter:@numehahttp://numeha.hatenablog.com/
#devsumiD
![Page 4: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/4.jpg)
http://www.slideshare.net/numeha/ricoh-ucs-for-ipad
Developers Summit 2013
![Page 5: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/5.jpg)
![Page 6: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/6.jpg)
ACTION!
![Page 7: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/7.jpg)
一年間ネタを探しながら一生懸命働く
http://www.flickr.com/photos/davefayram/5909547615
![Page 8: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/8.jpg)
![Page 10: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/10.jpg)
ß
http://event.shoeisha.jp/devsumi
![Page 11: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/11.jpg)
株式会社 リコー
![Page 12: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/12.jpg)
新規事業を生み出すために
クラウド関連とiOS関連の
ソフトウェア開発をしています
![Page 13: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/13.jpg)
よろしくお願いします
![Page 14: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/14.jpg)
STORY!
![Page 15: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/15.jpg)
2012年6月とあるiOS開発プロジェクトL
に立候補
俺に任せろ
![Page 16: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/16.jpg)
http://free-pictograms.com/14-life/261-life.html
iOSの開発経験がない(利用経験もない。むしろAndroid派)
そもそもチームがいない
仕様もない
なぜかそこに納期だけがあった
![Page 17: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/17.jpg)
プレイングマネージャとして活動した約1年半
http://free-pictograms.com/14-life/261-life.html
何からどうやれば
![Page 18: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/18.jpg)
STORY!1. Background UCS & iOS & Enterprise
2. Practice 価値のあるソフトウェアを作るチーム形成 継続的デリバリーの取り組み 実機を利用した自動テストのテクニック
![Page 19: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/19.jpg)
RICOH UCS(Unified Communication System)
2011年8月22日ビデオ会議市場に新規参入
![Page 20: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/20.jpg)
簡単さ・使いやすさを追求した
少人数(約5名)向けの
ポータブル型のビデオ会議システム
P3000
http://www.ricoh.co.jp/ucs
![Page 21: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/21.jpg)
各拠点間
新たなビジネス・コミュニケーションを提供するiOSプロジェクト
![Page 22: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/22.jpg)
⚠当日はムービーを流しました
![Page 23: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/23.jpg)
iPad版
http://www.apple.com/ipad-mini/overview/
iPad版(2013/1/31 Release)
iPhone版(2013/9/10 Release)
![Page 24: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/24.jpg)
クラウド
iOSアプリにとってクラウドはなくてはならない存在
♥ クラウドをどう作る/使うのかどこにビジネス価値を与えるのか
![Page 25: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/25.jpg)
(M)BaaS等によりクラウド利用が身近に
http://www.kinvey.com/backend-as-a-service
![Page 26: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/26.jpg)
クラウド♥ビジネスに直結したコミュニケーション手段
お客様のビジネスを止めるようなことはあってはならない
品質を追求することによるビジネス価値
![Page 27: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/27.jpg)
それはお客様のビジネスに
なくてはならないものになっているか
このような状態に早く出来るのか。そしてその状態を維持できるのか
![Page 28: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/28.jpg)
iOSアプリケーションの継続的デリバリー
〜エンタープライズ品質のiOSアプリケーションを目指して〜
![Page 29: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/29.jpg)
僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては
ならない
![Page 30: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/30.jpg)
僕たちは
価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては
ならない
![Page 31: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/31.jpg)
http://www.flickr.com/photos/seanhobson/4272482225
ソフトウェアは、価値がある限り開発し続けなければならない
![Page 32: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/32.jpg)
価値のあるソフトウェアは人間しか作れない/わからない
![Page 33: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/33.jpg)
価値を生み出せるチーム(ワーク)が価値である
![Page 34: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/34.jpg)
DeveloperTest Engineer
Leader
Team
Test EngineerとDeveloperは別の職業製品の品質について責任を持つ コードの品質について責任を持つ
製品価値の高いものから開発する製品価値を考えながら、 受け入れテストを自動化する
![Page 35: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/35.jpg)
Developer
Test Engineer
協力する
役割は違うけれども向いているゴールは同じ
価値のあるソフトウェア
![Page 36: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/36.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
価値のあるソフトウェアを開発するパイプライン
![Page 37: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/37.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
価値のあるソフトウェアを考える
![Page 38: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/38.jpg)
僕たちは
最小限の機能で市場価値を生み出せるのか
いまやるべきなのか後でもいいのかを意識する
![Page 39: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/39.jpg)
MMFMinimum Marketable Feature
![Page 40: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/40.jpg)
Feature1
Feature2
Feature3
Feature4
Feature5
Feature6
Feature7
Feature8
これが
MMF
お客様に提供する価値の優先度
これだけで市場価値を生むことが出来るのか
![Page 41: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/41.jpg)
RICOH UCS for iOSのMMFモバイルユーザとして、
開催中のP3000 の会議に途中参加して映像と音声で相手とコミュニケーションしたい、
それは会議の開催場所でなくても参加したいからだ最初に書いたラフスケッチ
![Page 42: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/42.jpg)
お客様に聞いて価値を確かめる
![Page 43: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/43.jpg)
ここでダメならそこで終了
Feature1
Feature2
Feature3
Feature4
Feature5
Feature6
Feature7
Feature8
> 実装の優先度
どこで1st release
するかはビジネス判断
お客様に提供する価値の優先度
![Page 44: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/44.jpg)
小さく設計して小さく実装することで手戻りを最小化する
![Page 45: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/45.jpg)
大きく育てる大きく育てる
![Page 46: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/46.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
![Page 47: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/47.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
お客様に価値を与えるシナリオを自然言語で作る
実機で動くテストコードを書く
テストをしながら仕様を決める
![Page 48: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/48.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
1つのFeatureを実現する実装をする
受け入れテストでは実現できない内部ロジックのテスト
Featureを確認しながら実装する
![Page 49: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/49.jpg)
Background: Given the following contacts exist: | device | another_device | subscription | ask | | ios1 | ios2 | both | | And "ios1" go to contactlist view And "ios2" go to contactlist view
Scenario: "ios1" can join conference Given "ios3" go to contactlist view And the following accounts start conference: | device | | ios2 | | ios3 | Then "ios1" should see the presence of "meeting" within row of "ios2" When "ios1" touch the row of "ios2" Then "ios1" should be on video view And "ios1" should see 3 participants And "ios1" should not see the private meeting image
iOS1とiOS2の2台のデバイスが
コンタクトリスト画面にいる
iOS3のデバイスがコンタクトリスト画面
にいてiOS2とiOS3が会議を
始める
iOS1からiOS2は会議中にみえ
iOS1がiOS2をタッチすると会議に参加する
Featureシナリオ/ステップ
例
お客様への価値を自然言語で確認でき自動で動くコードにもなる
![Page 50: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/50.jpg)
⚠当日はムービーを流しました
![Page 51: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/51.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
仕様/テスト/実装を平行して行うことで正しい製品・コードに近づく
![Page 52: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/52.jpg)
1つのFeature開発が終わった時にリリース可能な状態になる
![Page 53: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/53.jpg)
僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては
ならない
![Page 54: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/54.jpg)
僕たちは価値のあるソフトウェアを
早く継続的にデリバリーしお客様を満足させなくては
ならない
![Page 55: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/55.jpg)
http://www.flickr.com/photos/seanhobson/4272482225
ソフトウェアは、価値がある限り開発し続けなければならない
![Page 56: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/56.jpg)
継続的改善で1secでも早く
![Page 57: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/57.jpg)
iOSアプリはどのくらいのスピードでリリース可能なのか
![Page 58: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/58.jpg)
XCodeor
Application LoaderiTunes Connect App Store
App Review
Ave:7daysPackageSubmit
iOS 最高でも
1ヶ月で約4回リリース
Cloud 無限大にリリース可能
クラウド
Install
![Page 59: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/59.jpg)
(App Reviewのボトルネックはあるが)
クラウドと同様に継続的にデリバリーが可能な
仕組みを作らなければならない
![Page 60: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/60.jpg)
★1.0.0
2013年 1 2 3 4 5 6 7 8 9 10 11 12
★1.0.1
★1.1.0
★1.1.1
★1.2.0
★1.3.0
★1.5.0
★2.0.0
★2.0.1
★2.1.0
★2.2.0
★2.3.0
RICOH UCS for iOSのリリース
(機能UP&不具合修正で)
1年間で12回のリリース
![Page 61: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/61.jpg)
これが多いか少ないかは置いておいて
http://www.flickr.com/photos/odolphie/2397582359
リリースのリズムを作る
![Page 62: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/62.jpg)
http://www.amazon.co.jp/gp/product/images/4048707876/ref=dp_image_text_0?ie=UTF8&n=465392&s=books
![Page 63: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/63.jpg)
ビジネスの主導権を得るために
http://www.allaboutagile.com/7-reasons-why-continuous-delivery-needs-to-be-a-business-initiative/
![Page 64: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/64.jpg)
http://www.flickr.com/photos/56155476@N08/6660135637
ユーザを早期に獲得し競争力あるプロダクトを早く実現する
![Page 65: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/65.jpg)
ビルド デプロイ テスト リリース
小さく繰り返す
リリースまでのパイプラインコードのコミットをしてからミスなく自動的に早くリリースしたい
お客様に価値を継続的にデリバリーする唯一の方法
自動化
![Page 66: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/66.jpg)
徹底的に自動化する(⚠App申請だけは手動)
http://cdn.morguefile.com/imageData/public/files/m/mconnors/preview/fldr_2003_06_18/file0002046882848.jpg
![Page 67: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/67.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリースコード品質のパイプライン
製品品質のパイプライン
継続的デリバリーするパイプライン繰り返しやることは全て自動化する
![Page 68: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/68.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリースコード品質のパイプラインコードの内部状態を徹底的に可視化する
製品品質のパイプライン
![Page 69: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/69.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
製品品質のパイプライン
Installed Jenkins Plugins1. コード取得 -> Git2. ビルド -> Xcode3. コード行数 -> SLOCCount4. 重複コード -> DRY5. 警告 -> Warnings
ビルドを壊していないか。コードは健全なのか
![Page 70: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/70.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
製品品質のパイプライン
1. テスト実行 (GHUnit) > ios-sim launch xxx.app --family {$DEVICE}
2. カバレッジ > gcovr {$BUILD_DIR}
cobertura plugin
3. テスト集計
書いたコードが正しくテストされているか
![Page 71: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/71.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース製品品質のパイプライン実機を利用した自動テストを重視する/徹底的に行う
![Page 72: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/72.jpg)
iOSアプリケーションの受け入れ自動テストの
テクニック
![Page 73: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/73.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリースApplication
Test Frameworkhttp
操作
テストフレームワークを同梱してビルド
![Page 74: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/74.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
自動でipaファイル作成複数のデバイスに自動でインストール
fruitstrapor
instruments
ビルドサーバ
![Page 75: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/75.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース実に奥が深い...
![Page 76: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/76.jpg)
Application
Frank
Application
Frank
Application
Frank
HTTPで外部から複数台のiOS端末を操作
![Page 77: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/77.jpg)
Application
Frank
Application
Frank
Application
Frank
しかしiOS7からTouch等の操作API禁止
![Page 78: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/78.jpg)
Application
Test FrameworkCalabash
iOSFrank
iOS7はinstruments経由
で操作iOS6はHTTP経由
⚠ビルドマシン一台につきiOS一台しか操作できない...
![Page 79: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/79.jpg)
Application
Test FrameworkCalabash
iOSFrank
Application
Test FrameworkCalabash
iOSFrank
Application
Test FrameworkCalabash
iOSFrank
VM1
VM2
VMを複数動かしVM間でアプリ操作コマンドのやりとりを独自実装
![Page 80: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/80.jpg)
Application
Frank
Application Application
CalabashiOS
Test Framework
FrankCalabashiOS
Test Framework
FrankCalabashiOS
Test Framework
iOS6でもiOS7でも複数台のiOS端末の操作を実現!!
![Page 81: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/81.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
異なるiOSデバイス、異なるOS、
異なるネットワーク環境で受け入れテストを常に実行
![Page 82: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/82.jpg)
×
iPad, iPhone, iPod Touch
×iOS6, iOS7
Proxy, Low Bandwidth, etc※ お客様の様々なネットワーク環境を想定する
24時間365日、テストは走り続ける〜ここまでやってエンタープライズ品質〜
デバイス
OS
ネットワーク環境
![Page 83: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/83.jpg)
ビルドサーバ
iPhone
iPod Touch
iPad
iOS6 & 7
![Page 84: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/84.jpg)
⚠当日はムービーを流しました
![Page 85: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/85.jpg)
しかし、テストはFeatureが増えるに
つれて必ず遅くなる
![Page 86: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/86.jpg)
空き端末を探して、テストを並列実行させる仕組みで高速化
増え続けるFeature
テスト振り分けProxy
![Page 87: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/87.jpg)
Calabash-iOS
0.9.162 -> 0.9.163October 27, 2013 January 7, 2014
Fantastic Speedup!!!
![Page 88: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/88.jpg)
継続的改善で1secでも早く
![Page 89: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/89.jpg)
僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては
ならない
![Page 90: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/90.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
価値のあるソフトウェアを開発するパイプライン
![Page 91: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/91.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリースコード品質のパイプライン
製品品質のパイプライン
継続的デリバリーするパイプライン繰り返しやることは全て自動化する
![Page 92: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/92.jpg)
受け入れビルド
デプロイon
iPhone/
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
価値のあるソフトウェアを
早く継続的にデリバリー
![Page 93: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/93.jpg)
http://www.flickr.com/photos/49547334@N02/4725090871
僕たちははじめにリリースまでのパイプラインを作った
![Page 94: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/94.jpg)
●プロジェクト
開始
★1.0.0
2012 2013 5 6 7 8 9 10 11 12 1 2 3 4 5 6 7 8 9 10 11 12
★1.0.1
★1.1.0
★1.1.1
★1.2.0
★1.3.0
★1.5.0
★2.0.0
★2.0.1
★2.1.0
★2.2.0
★2.3.0
プロジェクト開始時にものがなくても仕組みを作る
1stリリースまでパイプラインのテストがされ
アップデートのリズムができる
![Page 95: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/95.jpg)
受け入れビルド
デプロイon
iPhone/
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
価値のあるソフトウェアを
早く継続的にデリバリー
これを繰り返す
![Page 96: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/96.jpg)
0.1リリース
0.2リリース
0.3リリース
0.4リリース
![Page 97: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/97.jpg)
http://www.flickr.com/photos/seanhobson/4272482225
そのリズムが継続的なデリバリーを可能にする
![Page 98: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/98.jpg)
iOSアプリケーションの継続的デリバリー
は一日にしてならず
![Page 99: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/99.jpg)
まとめ
![Page 100: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/100.jpg)
僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては
ならない
![Page 101: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/101.jpg)
http://www.flickr.com/photos/seanhobson/4272482225
ソフトウェアは、価値がある限り開発し続けなければならない
![Page 102: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/102.jpg)
DeveloperTest Engineer
Leader
Team
Test EngineerとDeveloperは別の職業
製品の品質について責任を持つ製品価値を考えながら、 受け入れテストを自動化する
コードの品質について責任を持つ
製品価値の高いものから開発する
![Page 103: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/103.jpg)
Developer
Test Engineer
協力する
役割は違うけれども向いているゴールは同じ
価値のあるソフトウェア
![Page 104: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/104.jpg)
MMFMinimum Marketable Feature
![Page 105: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/105.jpg)
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
仕様/テスト/実装を平行して行うことで正しい製品・コードに近づく
![Page 106: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/106.jpg)
(App Reviewのボトルネックはあるが)
クラウドと同様に継続的にデリバリーが可能な
仕組みを作らなければならない
![Page 107: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/107.jpg)
http://www.flickr.com/photos/odolphie/2397582359
リリースのリズムを作る
![Page 108: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/108.jpg)
徹底的に自動化する(⚠App申請だけは手動)
http://cdn.morguefile.com/imageData/public/files/m/mconnors/preview/fldr_2003_06_18/file0002046882848.jpg
![Page 109: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/109.jpg)
受け入れビルド
デプロイon
iPhone/iPad
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリースコード品質のパイプライン
製品品質のパイプライン
継続的デリバリーするパイプライン繰り返しやることは全て自動化する
![Page 110: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/110.jpg)
Application
Frank
Application Application
CalabashiOS
Test Framework
FrankCalabashiOS
Test Framework
FrankCalabashiOS
Test Framework
iOS6でもiOS7でも複数台のiOS端末の操作を実現!!
![Page 111: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/111.jpg)
ビルドサーバ
iPhone
iPod Touch
iPad
iOS6 & 7
![Page 112: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/112.jpg)
×
iPad, iPhone, iPod Touch
×iOS6, iOS7
Proxy, Low Bandwidth, etc※ お客様の様々なネットワーク環境を想定する
24時間365日、テストは走り続ける〜ここまでやってエンタープライズ品質〜
デバイス
OS
ネットワーク環境
![Page 113: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/113.jpg)
継続的改善で1secでも早く
![Page 114: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/114.jpg)
受け入れビルド
デプロイon
iPhone/
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
価値のあるソフトウェアを
早く継続的にデリバリー
![Page 115: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/115.jpg)
http://www.flickr.com/photos/49547334@N02/4725090871
僕たちははじめにリリースまでのパイプラインを作った
![Page 116: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/116.jpg)
受け入れビルド
デプロイon
iPhone/
受け入れテスト
リリースビルド
デプロイon
Simulator
単体/結合テスト
リリース
Feature概要
Featureシナリオ/ステップ
受け入れテスト
Developer
Test Engineer
設計 実装開発者テスト
価値のあるソフトウェアを
早く継続的にデリバリー
これを繰り返す
![Page 117: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/117.jpg)
http://www.flickr.com/photos/seanhobson/4272482225
そのリズムが継続的なデリバリーを可能にする
![Page 118: iOSアプリケーションの継続的デリバリー](https://reader033.fdocuments.net/reader033/viewer/2022042606/5463cf59b4af9f623f8b46ce/html5/thumbnails/118.jpg)
iOSアプリケーションの継続的デリバリー
〜エンタープライズ品質のiOSアプリケーションを目指して〜
梅原 直樹Naoki UMEHARA 14/2/2014
Developers Summit 2014 [14-D-5]
ご 清 聴あ り が と う ご ざ い ま し た