Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
CIをGASで継続的に改善したら幸せになった
Search
ああうえ
February 21, 2019
Technology
2k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
CIをGASで継続的に改善したら幸せになった
ああうえ
February 21, 2019
More Decks by ああうえ
See All by ああうえ
メモリ不足との戦い〜大量データを扱うアプリでの実践例〜
kwzr
1
2.3k
iOS Apple Dev Tutorialsとpointfreeのモダン実装を比較する
kwzr
1
590
エンジニアとデザイナーがわかる iPadの画面サイズ対応入門
kwzr
0
210
react-reconcilerでオレオレReact Nativeを作ろう!
kwzr
1
3.2k
iOS・Androidで使える デザインシステムをどう実装するか
kwzr
3
5.9k
Apple Pencilと左利き対応
kwzr
5
2.7k
BitriseでUIの差分検出
kwzr
0
1.6k
Other Decks in Technology
See All in Technology
2026-09-26 Platform Engineering Kaigi 2026 インフラとアプリの境界線と委譲の設計 / Drawing the Infra and App Line
masasuzu
0
620
形式手法を使って仕様をコーディングしよう
mikanichinose
0
170
生成AIと進める探索的データ分析(2026.10.03 第122回Tokyo.R勉強会)
tatamiya
2
1.3k
[2026 Oracle Technical Deep Dive] オンプレミスDBのCloud移行アプローチ:移行計画に基づくメソッドとツールの選択 (2026年9月17日開催)
oracle4engineer
PRO
0
120
AI時代だからこそ推したい!Gitコマンド再入門
munakata
0
120
AI駆動開発、viviONの1年 ── うまくいったこと・いかなかったこと
vivion
0
150
ミイダス株式会社 テックチームのご紹介 / MIIDAS Tech Team
miidas
0
110
React Nativeでの OTA Updateって、 どう説明する?
ichiki1023
0
140
MCPゲートウェイを作って運用してわかったこと — Agent時代の権限管理の現在地
mtpooh
10
3k
HolmesGPTで始めるSREエージェント入門!プラットフォームの障害調査はAIにお任せ 〜
leveragestech
PRO
0
140
[2026 Oracle Technical Deep Dive] AI時代のデータベース基盤をどう選ぶ? Exadata Database Serviceの選択肢と使い分け (2026年9月17日開催)
oracle4engineer
PRO
0
210
オンラインゲームのシステム全体像 - コロプラ 2026年度 新卒研修
colopl
0
220
Featured
See All Featured
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Six Lessons from altMBA
skipperchong
29
4.5k
Being A Developer After 40
akosma
91
590k
Making the Leap to Tech Lead
cromwellryan
135
10k
Designing Powerful Visuals for Engaging Learning
tmiket
1
590
Highjacked: Video Game Concept Design
rkendrick25
PRO
1
470
Building AI with AI
inesmontani
PRO
1
1.3k
How to make the Groovebox
asonas
2
2.5k
Unsuck your backbone
ammeep
672
58k
Done Done
chrislema
187
17k
How Software Deployment tools have changed in the past 20 years
geshan
2
35k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Transcript
CIをGASで継続的に 改善したら幸せになった CI/CD Test Night #3 pixiv Inc. kwzr /
Kazumasa Kawazure 2019.02.21
2 自己紹介 • kwzr / Kazumasa Kawazure ◦ Twitter :
@_kwzr_ • ピクシブでpixiv Sketch iOSの開発 ◦ 以前はいろんなiOS・Androidアプリの開発 • 情熱大陸に映り込んだことがある ◦ オレは情熱大陸出たことあるけど、キミは ? kwzr モバイルアプリエンジニア
• 2018年1月からBitriseに移行 ◦ 社内ライブラリなどを含めて21個のアプリが登録 ◦ 毎週約300回以上のビルド ◦ Org Standard Plan(最大6並列ビルド)
◦ 社内配布方法の変更 • サーバーサイドやWebフロントのことはわかりません ◦ Circle CIとGitLab CIを使っているはず 3 ピクシブのモバイルCI事情について
• 2018年1月からBitriseに移行 ◦ 社内ライブラリなどを含めて21個のアプリが登録 ◦ 毎週約300回以上のビルド ← どうやって取っているの ◦ Org
Standard Plan(最大6並列ビルド) ← どうやって決めたの ◦ 社内配布方法の変更 ← なに • サーバーサイドやWebフロントのことはわかりません ◦ Circle CIとGitLab CIを使っているはず 4 話すこと
• Jenkinsの介護がつらく、CIサービスを探していた ◦ 新しいXcodeが出たらインストールが必要 ◦ VPNを繋がないと見れない。特にスマホからアクセスしたい時に面倒 ▪ 社員以外の人にCIの結果を見てもらうのが難しかった ◦ 自作の配布ページを作ってそこから社内配布していた
▪ メンテあまりされていない ▪ アプリによってはDeployGateを使っていた 5 Bitriseに移行した流れ
• 言わずと知れたモバイルアプリ向け CIサービス • GUIでワークフローやトリガーを操作できる。 UIがかわいい(重要) • 他CIサービスと比べても比較的安価 • アプリの配布機能もある(Deploy
to Bitrise.io) • とてもよい! 6 Bitriseとは
• 最初はOrg Standard Plan(最大3並列)を導入 • 弊社、アプリの数が多い ◦ 参考: モバイルアプリエンジニア約20人 :
iOS・Androidアプリ 13個 • アプリのフルビルド時間は10-20分くらい掛かってとても長い • 思い思いにビルドを走らせると、最大 3並列ビルドだと頻繁に詰まる!! • → プラン変えよう! 7 移行してわかってきた問題
• Google Apps Script(GAS)とBitrise.io API v0.1を使用 ◦ Bitrise.io APIはまだWIPらしいけど、だいたい動いてる •
始業時間前に前日のビルドを集計して、スプレッドシートに記録 ◦ ビルド回数・ホールド時間・ビルド時間等 ◦ https://github.com/kvvzr/bitrise-collect ◦ 2018年2月から取ってる 8 まずは計測しよ...
• 手軽にデプロイできる • WebHookからの起動や、スケジューリングができる • 計測したいので、SpreadSheetに書き出したい • 普段使っている、慣れているもので要件を満たしていたらなんでも良さそう 9 なぜGAS?
• 置かれている状況による ◦ 金の弾丸が使えるなら、良いやつを選べば良さそう (適当) ▪ おそらく、稟議の起案理由に妥当なことを書く必要 ◦ 計測した結果を使って、状況に合うコスパの良いプランを選ぶ •
1日の総ホールド時間を基準にすることにした ◦ ホールド時間 = ビルド開始時間 - ビルド実行(トリガー)時間 10 何を見てプランを決めるか?
11 総ホールド時間の推移(2018/08-2018/12)
12 総ホールド時間の推移(2018/08-2018/12) Org Elite Plan 最大3並列ビルド 2 week trial ホールド時間減ってる
• Org Elite Planはハイスペックなマシンが使えるプラン ◦ 毎ビルド5分以上早く終わるようになってすごい! ▪ しかし、まだそこそこ詰まる ◦ 値段がOrg
Standard Planの倍 ◦ スペック上げるより、並列数増やしたほうが良さそう 13 計測してわかったこと
14 総ホールド時間の推移(2018/08-2018/12) Org Standard Plan 最大6並列ビルド 導入 狙い通り、ホールド時間がほ ぼ0になった
• 何を減らしたいのか ◦ 待ってる時間の人件費換算? (でも待ってる間別の作業できるし ... • 気持ち!!!!!!!1(のすり減り) ◦ ホールド待ちは他のプロジェクトが原因なのでヘイトが溜まる
◦ 自分のプロジェクトのビルドが遅いのは、ある程度自分でなんとかできる • → 並列数を上げるだけで、コスパよく気持ちの良い開発ができるように! ◦ 金の弾丸があれば、Elite Planを湯水のごとく使おう 15 総ホールド時間を基準にした理由
16
• 「ビルドして」トリガー ◦ Bitriseは現状Pushしたときに発火するトリガーのみ ◦ 定期的にチームや社内向けにアプリを配布したい!けど ◦ 配布物を作るビルドは長いので、必要なときだけ走らせたい! ▪ ユニットテストだけPushで走らせる
▪ だいたい半分くらいの時間 • 社内配布アプリの一覧ページ(あまりうまく機能しなかった) 17 その他の取り組み事例
18 とても便利
• GitHubのPRにコメントしたら、ビルドが走るようにする ◦ ポイントはPRトリガーとして実行すること ▪ PRにコメントするステップでPRの番号が取れない ◦ GitHub Actions使いたい 19
トリガーをGASで自作 「ビルドして」だった らAPI叩く WebHook Pull Request 結果を通知 GAS Bitrise
20 https://gist.github.com/kvvzr/8be18b134b3da1828bf0905df2625d40
• comment-on-github-pull-request っていうコミュニティステップ作った ◦ https://github.com/kvvzr/bitrise-step-comment-on-github-pull-request • PRに配布物へのリンク(QRコード)が紐づくと、過去のあの変更でどうなったか、追いやす くて良い ◦ Slackだけに流すと探すのが大変
21 宣伝: GitHubにコメントするステップ
• Bitriseはいいぞ • 置かれている環境によって計測してプランを検討しよう ◦ 他社がどういうプラン使っているのか調べても出てこなくてつらかった ◦ ワークフローに無駄がある場合もある。計測すると気付ける • GASなどを使えば計測もトリガーも手軽に自作できる
• ステップも簡単に作れるので、秘伝のタレを持っていたらステップ化しよう! スライド中にあるBitriseの価格は2019年2月21日のものです 22 まとめ