CONTINUOUS
INTEGRATION
iOS 9 Bootcamp #8
Classmethod, Inc
Yuki Suwa
YUKI SUWA
Mobile App Developer & Designer
Web App Engineer
CTO, underscore Inc.
THANKS FOR
YOUR COMING!
3
Agenda
CI と CD とは何か ?
Bots + Xcode 7 で始める CI
CI が導入できるようになる !
4
DO YOU KNOW CI ?
5
What is the CI ?
継続的インテグレーション
のこと
プロジェクトの成果物を
継続的に統合する習慣
統合、ビルド、テスト、
インスペクションを継続
的に行っていく
XPのプラクティスの1つ
6
What is the CD ?
継続的デリバリのこと
プロジェクトの成果物
を継続的に届ける習慣
CI と一緒に導入する
ことが多い
7
WHY DO YOU NEED ?
8
Extreme Programming における 5 つの価値
9
Simplicity Communication
Feedback
Respect Courage
Communication
Feedback
10
Delivery Feedback
CI / CD のメリット
継続的なフィードバックが得られる
ビルドの手間を削減できる
品質の向上活動を支える
11
HOW TO BUILD CI
12
CI / CD Flow
13
CI / CD Tools & Services
14
Bots Jenkins
15
Bots
Apple 純正の CI ツール
Xcode プロジェクトを継続的に統合
Bots モニター (Web) がかっこいい
16
What is the Bots ?
17
BUT,
BUILDING THE CI
IS TROUBLESOME
18
CI 環境構築は煩わしい !
iOS アプリならではの証明書問題
ビルドエラーが追いづらい (ハマる)
サービス同士の連携が絡むと複雑
19
PROGRESSIVE BUILD
20
21
BUILD BOT
22
Bot を作るまで
ビルドマシンを用意する
OS X Server をインストールする
開発マシンで Bot の作成を行う
23
1
2
3
ビルドマシンを用意する
24
1
OS X Server をインストールする
App Store で ¥2,400 で購入可能
https://itunes.apple.com/jp/app/os-x-server/id883878097
Apple Developer であれば無償
https://developer.apple.com/osx/download/
25
2
26
27
Xcode を選択
Xcode Serverを有効化
28
開発マシンで Bot を作成する
29
3
30
Schemeを共有
31
32
どのタイミングで実行するか
Manual 手動でのみ実行する
Periodically 定期的に実行する
OnCommit Pushされたら実行する
33
どのようなアクションを実行するか
Analyze ソースコードを解析する
Test テストを実行する
Archive アプリの作成を行う
34
プロジェクトをクリーンするか
Never クリーンしない
Always 毎回クリーンする
Onceaday 1日1回クリーンする
Onceaweek 1週間に1回クリーンする
35
個別に指定できる
36
統合の前に実行
統合の後に実行
37
38
SHARING
39
40
Monitor Bots from a Web Browser
https://ci-machine-ip/xcode/bots/latest
42
43
ログなどをダウンロード可能
ビルドをマーク
44
ADVANCE
45
COVERAGE
46
Code Coverage
コード網羅率のこと
ソースコードがテストされた割合の指標
網羅率が高いほどバグの検出率が上がる
品質を左右する指標とも言える
47
48
有効化する
49
テストコードの網羅率
ANALYZE
50
Analyze with Xcode
Xcode の Analyze 機能による

静的解析を実行可能
メモリリークや null ポインタへの

アクセスなど潜在的なバグを検出
51
52
有効化する
DELIVERY
53
継続的なデリバリ
Bots で iOS デバイスにインストール可能な
IPA を作成可能
iOS デバイスで直接インストール可能
54
55
チームを追加
56
有効化する
57
OTHER
58
59
統合の前に実行
統合の後に実行
例えば…
CocoaPods の利用
ビルド結果をチャットに通知
60
などなど…
自由に拡張可能です!!
Xcode CI Script Variables
https://gist.github.com/quellish/
f279f7b00c1bfd343468
SUMMARY
62
まとめ
CI / CD やろうよ
最初から全部はできないから、

できるところから始めた方が良いよ
総合的に考えると効率的だよ
機械的な作業を自動化し、

価値のある作業に集中しよう!
63
Xcode 7で始めるCI

Xcode 7で始めるCI