iosアプリケーションの継続的デリバリー ...

106
梅原 直樹 iOS EDC 2013: iOS Enterprise & Developers Conference 7/11/2013 Naoki UMEHARA iOSアプリケーションの 継続的デリバリー エンタープライズ品質のiOSアプリケーションを目指して〜

Upload: naoki-umehara

Post on 28-May-2015

2.306 views

Category:

Technology


7 download

DESCRIPTION

2013/11/7に行われたiOS Enterprise & Developers Conference 2013の資料です。 iOSアプリケーションの継続的デリバリー 〜エンタープライズ品質のiOSアプリケーションを目指して〜

TRANSCRIPT

Page 1: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

梅原 直樹iOS EDC 2013: iOS Enterprise & Developers Conference 7/11/2013

Naoki UMEHARA

iOSアプリケーションの継続的デリバリー

〜エンタープライズ品質のiOSアプリケーションを目指して〜

Page 2: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては

ならない

Page 3: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

梅原 直樹うめはら なおき

Twitter:@numehahttp://numeha.hatenablog.com/

#iosedc

Page 4: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Developers Summit 2013

http://www.slideshare.net/numeha/ricoh-ucs-for-ipad

Page 5: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜
Page 6: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

株式会社 リコー

Page 7: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

新規事業を生み出すために

クラウド関連とiOS関連の

ソフトウェア開発リーダとして活動しています

※ちなみにiOS歴は約1年半です

Page 8: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

よろしくお願いします

Page 9: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

RICOH UCS(Unified Communication System)

1.

Page 10: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

2011年8月22日ビデオ会議市場に新規参入

Page 11: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

クラウドやビデオチャット市場を含めると2020年8,000億円市場に

http://businessnetwork.jp/Detail/tabid/65/artid/1262/Default.aspx

Page 12: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

簡単さ・使いやすさを追求した

少人数(約5名)向けの

ポータブル型のテレビ会議システム

P3000

http://www.ricoh.co.jp/ucs

Page 13: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ポリコム

ソニーシスコ

パナソニック

リコーその他

ビデオ会議メーカシェア

http://www.seedplanning.co.jp/press/2013/2013032701.html

2012年

5位!!

Page 14: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

iPad版

http://www.apple.com/ipad-mini/overview/

iPad版(2013/1/31 Release)

iPhone版(2013/9/10 Release)

コミュニケーションの幅を拡大

Page 15: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

⚠当日は

ムービーを流しました

Page 16: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ビジュアル・コミュニケーション

各拠点間

外出先 自宅 移動中

Page 17: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

他にもメンタルヘルスの支援の一貫でiPadを利用

http://www.mitsubishicorp-foundation.org/reconstruction/case/file28.html

Page 18: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

お客様同士の横の繋がりによる導入

RICOH UCSいいらしいよ

よし導入しよう

エンタープライズの世界でネットワーク効果の兆候

Page 19: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

いずれにしてもお客様の

ビジネスに直結したコミュニケーション

手段として利用されている

近場の病院との情報共有研修医の育成のための会議本部+10拠点で定例会議

海外拠点との会議・・・・・

Page 20: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

エンタープライズでのコミュニケーションビジネス

↓お客様のビジネスを止めてはならない

ここにもビジネスチャンスがある

エンタープライズ品質

Page 21: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

2.iOSアプリケーションの

継続的デリバリー

Page 22: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

iOS

Page 23: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

iOS Apps : 900,000Store Accounts : 575,000,000

2013年6月現在

Page 24: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Apps will Automatically Updatein iOS7

〜常に最新版のアプリをユーザが利用可能〜

Page 28: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リーン・スタートアップによるライバルの増加

※ 大企業もやらないと死ぬhttp://thebln.com/wp-content/uploads/2011/09/Eric-Ries-The-Lean-Startup.jpg

Page 29: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

どこで戦うのか

Page 30: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

モバイルファースト×

クラウドファースト×

ビジネスモデル

Page 31: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

それはお客様の業務に

なくてはならないものになっているか

特にエンタープライズ市場ではこのような状態に早く出来るのかが鍵。そしてその状態を維持できるのか

Page 32: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

iOSアプリケーションの継続的デリバリー

〜エンタープライズ品質のiOSアプリケーションを目指して〜

Page 33: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては

ならない

Page 34: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちは価値のあるソフトウェアを

早く継続的にデリバリーしお客様を満足させなくては

ならない

Page 35: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

iOSアプリはどのくらいのスピードでリリース可能なのか

Page 36: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

XCode iTunes Connect App Store

App Review

Ave:7daysPackageSubmit

最高で1ヶ月で約4回

1年間で約50回アップデートが可能

Page 37: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

(実際にリリースするかは置いておいて)

このくらい継続的にデリバリーが可能な仕組みを作らなければならない

Page 38: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

(実際にやるかやらないかは置いておいて)このくらい継続的にデリバリーが可能な仕組みを作らなければならない

Me

Me

Me

Me

ただ、2ヶ月半

App審査にかかり全く継続的にリリースできないケースもありますw

Page 39: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

★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 40: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースのリズムを作る

これが多いか少ないかは置いておいて

http://www.flickr.com/photos/odolphie/2397582359

Page 42: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ビジネスの主導権を得るために

http://www.allaboutagile.com/7-reasons-why-continuous-delivery-needs-to-be-a-business-initiative/

Page 43: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ユーザを早期に獲得する競争力あるプロダクトを早く実現する

http://www.flickr.com/photos/56155476@N08/6660135637

Page 44: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ビルド・デプロイ・テスト・リリース

Page 45: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ビルド デプロイ テスト リリース

小さく繰り返す

リリースまでのパイプライン

コードのコミットをしてからミスなく自動的に頻繁にリリースしたい

お客様に価値を継続的にデリバリーする唯一の方法

自動化

Page 46: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

要するにとことん自動化する

(⚠App申請だけは手動)

http://morguefile.com/archive/display/4737http://cdn.morguefile.com/imageData/public/files/m/mconnors/preview/fldr_2003_06_18/file0002046882848.jpg

Page 47: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

•軌道修正

•不具合を減らす

•お客様、セールスの改善要求

•突然のApp審査ルール変更!!

小さく・早く・簡単にリリース

Page 48: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

いつパイプラインを作るか

Page 49: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

★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 50: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちははじめにリリースまでのパイプラインを作った

http://www.flickr.com/photos/49547334@N02/4725090871

Page 51: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

価値のあるソフトウェアを作る

〜協調性を重視する〜

早く継続的にデリバリー〜完全自動化する〜

Page 52: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちは

価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては

ならない

Page 53: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

Page 54: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Developer Test Engineer

Leader

Team

製品の品質について責任を持つお客様に提供する価値を考える受け入れテストを自動化する

コードの品質について責任を持つお客様に提供する価値の高い

ものから開発する

Page 55: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Developer

Test Engineer

協力する

価値のあるソフトウェアを作る

〜協調性を重視する〜

役割は違うけれども

のは同じ

Page 56: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

Page 57: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちは

価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては

ならない

これがFeature

Page 58: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

それはお客様の業務に

なくてはならないものになっているか

特にエンタープライズ市場ではこのような状態に早く出来るのかが鍵。そしてその状態を維持できるのか

再び...

Page 59: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちは

最小限の機能で市場価値を生み出せるのか

いまやるべきなのか後でもいいのか

Page 60: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

MMFMinimum Marketable Feature

Page 61: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Feature1

Feature2

Feature3

Feature4

Feature5

Feature6

Feature7

Feature8

これがMMF

お客様に提供する価値の優先度

これだけで市場価値を生むことが出来るのか

Page 62: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

RICOH UCS for iOSのMMFモバイルユーザとして、

開催中のP3000 の会議に途中参加して映像と音声で相手とコミュニケーションしたい、それは会議の開催場所でなくても参加したいからだ

最初に書いたラフスケッチ

Page 63: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

お客様に聞いてみた

結果:好感触

Page 64: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ここでダメならそこで終了

Feature1

Feature2

Feature3

Feature4

Feature5

Feature6

Feature7

Feature8

お客様に提供する価値の優先度

実装の優先度 < 顧客に提供する優先度

どこで1st release

するかはビジネス判断

Page 65: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

小さく作って

Page 66: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

大きく育てる

Page 67: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

Page 68: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Featureシナリオ/ステップ

Featureテストコード

はお客様視点を持って仕様を作りながらそれを受け入れるテストコードの自動化をするTest Engineer

一つのFeatureに対するお客様に価値を与えるシナリオを作る

それが実際に自動で動くコードを書く

繰り返しながら改善する

Page 69: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

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 70: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

自然言語は非開発者でも読めるので仕様書にもなって一石二鳥

どういう条件で、どういう時に、どうなるのか

https://speakerdeck.com/phodgson/beyond-uiautomation

Page 71: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Stepの部品化素人でもかけるテストを目指して

組み合わせるだけで新たなシナリオに

Page 72: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

⚠ただし、iOS7だと実機では動かない

http://www.testingwithfrank.com/

Page 73: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

FrankとCalabashを両方動かして良いとこどり

https://rubygems.org/gems/calabash-cucumber

Page 74: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

⚠当日は

ムービーを流しました

Page 75: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

KiwiGHUnitOCMock

etc

作りながら仕様を決める

Featureテストコードでは実現できない内部ロジックのテストをする

一つのFeatureを実現する設計をして、シナリオ/ステップを満たす実装をする

Page 76: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

仕様はあくまで仮説であってゴールするときに決まる

Page 77: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

最小単位のFeatureを動かしながら価値を確かめる

コードに問題があれば都度発見される

Page 78: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

Page 79: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Featureテストコード

開発者テスト

リリースビルド

受け入れビルド

一つのFeature一つのBug

毎にPull Request

人の世界

機械の世界

PUSHをトリガにコードをpull

そして継続的デリバリーへ

Developer

Test Engineer

何か問題があれば通知

Page 80: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

git pluginxcode plugin

最低限のビルドはこれだけでいける

※ 使えるプラグインは少ないのでこれ以上は自分でスクリプトを作る 単体テスト、カバレッジ、レポートファイル変換等

Page 81: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

設計 実装 開発者テスト

Developer

Test Engineer

製品品質を確保する

Page 82: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ビルドに成功すると自動でipaファイル作成そして自動で複数のデバイスに自動でインストール

fruitstrapで各端末のidentifierを指定してインストールor

instruments

受け入れビルド

Runon

Device

ビルドサーバ

Page 83: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

×

Devices iPad, iPhone, iPod Touch

OS×

iOS6, iOS7

Network Proxy, Low Bandwidth, etc

異なるiOSデバイス、異なるOS、異なるネットワーク環境で受け入れテストを常に実行

※ お客様の様々なネットワーク環境を想定する

ここまでやってエンタープライズ品質

Page 84: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ビルドサーバ

iPhone

iPod Touch

iPad

iOS6 & 7

Page 85: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

⚠当日は

ムービーを流しました

Page 86: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

iOS Simulator Limitation⚠

シミュレータでは動くけど、実機だとxxxは防ぐ

Page 87: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

コード品質を確保する

Page 88: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

テスト件数コード行数カバレッジ

警告数etc

コードの内部状態を徹底的に可視化

Page 89: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

価値のあるソフトウェアを作る

〜協調性を重視する〜

早く継続的にデリバリー〜完全自動化する〜

これを繰り返す

Page 90: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

0.1リリース

0.2リリース

0.3リリース

0.4リリース

Page 91: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

そのリズムが継続的なデリバリーを可能にする

http://www.flickr.com/photos/seanhobson/4272482225

Page 92: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

★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

●プロジェクト

開始

先をみた開発ができている

Page 93: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

iOSアプリケーションの継続的デリバリー は一日にしてならず

Page 94: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

まとめ

Page 95: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちは価値のあるソフトウェアを早く継続的にデリバリーしお客様を満足させなくては

ならない

Page 96: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースのリズムを作る

http://www.flickr.com/photos/odolphie/2397582359

Page 97: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

ユーザを早期に獲得する競争力あるプロダクトを早く実現する

http://www.flickr.com/photos/56155476@N08/6660135637

Page 98: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

要するにとことん自動化する

(⚠App申請だけは手動)

http://morguefile.com/archive/display/4737http://cdn.morguefile.com/imageData/public/files/m/mconnors/preview/fldr_2003_06_18/file0002046882848.jpg

Page 99: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

僕たちははじめにリリースまでのパイプラインを作った

http://www.flickr.com/photos/49547334@N02/4725090871

Page 100: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

リリースビルド

単体テスト

結合テスト

受け入れビルド

Runon

Device

受け入れテスト

リリース

Feature概要

Featureシナリオ/ステップ

Featureテストコード

Developer

Test Engineer

設計 実装 開発者テスト

価値のあるソフトウェアを作る

〜協調性を重視する〜

早く継続的にデリバリー〜完全自動化する〜

Page 101: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

Developer

Test Engineer

協力する

価値のあるソフトウェアを作る

〜協調性を重視する〜

役割は違うけれども

のは同じ

Page 102: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

MMFMinimum Marketable Feature

Page 103: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

最小単位のFeatureを動かしながら価値を確かめる

コードに問題があれば都度発見される

Page 104: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

×

Devices iPad, iPhone, iPod Touch

OS×

iOS6, iOS7

Network Proxy, Low Bandwidth, etc

異なるiOSデバイス、異なるOS、異なるネットワーク環境で受け入れテストを常に実行

※ お客様の様々なネットワーク環境を想定する

ここまでやってエンタープライズ品質

Page 105: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

そのリズムが継続的なデリバリーを可能にする

http://www.flickr.com/photos/seanhobson/4272482225

Page 106: iOSアプリケーションの継続的デリバリー   〜エンタープライズ品質のiOSアプリケーションを目指して〜

梅原 直樹iOS EDC 2013: iOS Enterprise & Developers Conference 7/11/2013

Naoki UMEHARA

iOSアプリケーションの継続的デリバリー

〜エンタープライズ品質のiOSアプリケーションを目指して〜ご清聴ありがとうございました