2014/02/14 デブサミ2014【14-D-5】iOSアプリケーションの継続的デリバリー ~エンタープライズ品質のiOSアプリケーションを目指して~ #devsumiD

Developers Summit 2014 Story http://event.shoeisha.jp/devsumi/20140213/ <講演概要> ビジネス向けのiOSアプリケーションを開発することになった場合、皆様なら何からどのように取り組むでしょうか。 続きを読む
1
Aki Tsukada 🌗 Japan @akitsukada

"クラウドをリリースする" というのはサーバサイドのシステム、プログラムをリリースするという意味でいいのかな?? #devsumiD

2014-02-14 15:26:13
hiro @hiro

1年で12回のリリースをやった。 #devsumiD

2014-02-14 15:27:15
Tsuyoshi MAEHANA @sandinist

iOSアプリのリリーススピード。審査に7日間かかる、ボトルネック。それでもクラウドと同様に継続的にデリバリーできる環境を作る必要がある。実績としては1年間で12回リリースした。リリースのリズムをつくるのが大切。ビジネスの主導権を得るのが目的。 #devsumiD

2014-02-14 15:27:54
Aki Tsukada 🌗 Japan @akitsukada

CDの本質、目的はビジネスの主導権を得ること #devsumiD

2014-02-14 15:28:02
Futti @futti_k

継続的デリバリーの目的は、「ビジネスの主導権を得る」こと #devsumiD

2014-02-14 15:28:33
Aki Tsukada 🌗 Japan @akitsukada

「コード品質のパイプライン」。ここでは何をもって品質といってるのかな と思ってたら話はじまた >JenkinsでSLOCCount, DRY, Warnings #devsumiD

2014-02-14 15:31:05
hiro @hiro

コード行数、重複コード、警告数を Jenkinsで可視化 #devsumiD

2014-02-14 15:31:06
Aki Tsukada 🌗 Japan @akitsukada

Xcodeでtreat warnings as errors をONしとくのオススメしたい #devsumiD

2014-02-14 15:31:35
Aki Tsukada 🌗 Japan @akitsukada

コード品質のパイプラインで壊れていないことを確認 #devsumiD

2014-02-14 15:32:31
Tsuyoshi MAEHANA @sandinist

コード品質の可視化 ①リリースビルド Installed Jenkins Plugins - Git, Xcode, SLOCCount, DRY, Warnings ②シュミレータにデプロイ、単体結合テスト GHUnit, カバレッジ, テスト集計 #devsumiD

2014-02-14 15:32:49
hiro @hiro

テストフレームワークを同梱してビルドすることで、実機で動かす #devsumiD

2014-02-14 15:33:44
Aki Tsukada 🌗 Japan @akitsukada

デプロイ:自動でipaファイル作成して、fruitstrapかinstrumentsで複数のデバイスに自動でインストール #devsumiD

2014-02-14 15:34:47
Aki Tsukada 🌗 Japan @akitsukada

テストフレームワークを同梱してビルドして、外からテストフレームワーク経由でアプリを操作 #devsumiD

2014-02-14 15:35:11
Aki Tsukada 🌗 Japan @akitsukada

「テストフレームワーク Frank。HTTPで外部から複数台のiOS端末を操作できる。素晴らしいですよつかってくださいね」 #devsumiD

2014-02-14 15:35:35
Tsuyoshi MAEHANA @sandinist

製品品質のパイプライン "iOS実機での自動テストについてのノウハウを惜しげも無く披露します" fruitstrap or instruments で複数デバイスに自動インストール #devsumiD

2014-02-14 15:35:55
hiro @hiro

Frankを同梱してビルドすると、httpでリモートで操作できるが、iOS7でFrankでのテストができなくなった #devsumiD

2014-02-14 15:35:55
Aki Tsukada 🌗 Japan @akitsukada

「でもiOS7からtouch等の操作API禁止になって実質Frank使ってテストできなくなった。Frankは使い続けたいのでiOS6専用に。」iOS7… #devsumiD

2014-02-14 15:36:24
hiro @hiro

Calabash iOSをiOS7用に使い始めた #devsumiD

2014-02-14 15:37:04
Aki Tsukada 🌗 Japan @akitsukada

「iOS7用にはCalabash iOSを使うようにした。Calabashはinstruments経由で操作。」「しかしinstrumentsは同時にビルドサーバ1台につき実機1台しか操作できない→ビルドサーバをVMで増やしVM間で操作コマンドやりとり」 #devsumiD

2014-02-14 15:38:13
Tsuyoshi MAEHANA @sandinist

FrankからiOS 7でのタッチ操作ができなくなった → iOS 6専用に。 Calabash iOS で 7の対応。が、instruments は1台にしかいれられない! 仮想マシンでマシンの方を増やし、VM間でアプリ操作コマンドのやりとりを独自実装した #devsumiD

2014-02-14 15:38:37
hiro @hiro

様々なネットワーク環境を想定して、ProxyやLow Bandwidthの環境でもテストしている #devsumiD

2014-02-14 15:39:40
Tsuyoshi MAEHANA @sandinist

24時間365日、テストは走り続ける。デバイス x OS x ネットワーク環境。ここまでやってエンタープライズ品質 #devsumiD

2014-02-14 15:40:22
Aki Tsukada 🌗 Japan @akitsukada

「空き端末を探してテストを並列実行する仕組みを独自開発」ふぇぇ #devsumiD

2014-02-14 15:41:04
hiro @hiro

テスト環境開発だけですごいコストかかってそう #devsumiD

2014-02-14 15:41:15