Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
モバイルアプリを継続的インテグレーションで継続的に機能強化
Search
Masahiko Funaki(舟木 将彦)
September 16, 2022
Technology
32
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
モバイルアプリを継続的インテグレーションで継続的に機能強化
Masahiko Funaki(舟木 将彦)
September 16, 2022
More Decks by Masahiko Funaki(舟木 将彦)
See All by Masahiko Funaki(舟木 将彦)
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
140
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
130
202605-進化し続けるUIに追従.pdf
mfunaki
0
44
mablの要素選択を完全理解〜壊れないテストを作るための技術選択
mfunaki
0
67
知って得するmabl活用Tips〜「こんな時どうする?」実践機能ガイド
mfunaki
0
77
20260422-mablで変わるテスト自動化_品質_速さ_コストの三角形を崩す5つのアプローチ.pdf
mfunaki
0
130
手順(プロンプト)だけで テストを自動作成~テスト作成エージェントを使いこなすための 実践プロンプト術
mfunaki
0
200
「見た目」と「意味」をAIが判定 ~ビジュアルアサーションで変わる テストの守備範囲~
mfunaki
0
95
イントラネットの社内アプリからローカル開発環境まで〜mabl Linkで実現する閉域網アプリケーションのセキュアなテスト実行
mfunaki
0
68
Other Decks in Technology
See All in Technology
【CEDEC2026】次世代デジタルカードゲームのサーバー設計と運用 〜『Shadowverse: Worlds Beyond』の舞台裏~
cygames
PRO
1
1.2k
【CEDEC2026】ゲームシナリオライターを支援するAIツール開発の実践 ― 設計とプロンプトの工夫 ―
cygames
PRO
1
790
【CEDEC2026】『GRANBLUE FANTASY: Relink - Endless Ragnarok』のバトル制作事例 ~最高のキャラゲーを目指して~
cygames
PRO
0
250
モノリス Rails でも日中に rails db:migrate を走らせたい! / Daytime rails db:migrate on Monolithic Rails!
euglena1215
4
580
【Google Cloud Next Tokyo'26】Gemini Enterprise と Oracle AI Database で実現する、業務データ活用を実現する AI エージェント実装
shisyu_gaku
0
240
Goでデータパイプラインを作ろう
sansantech
PRO
1
420
カートの信頼性を担保するWireMockを使ったe2eテスト
ykagano
0
200
LanceDB入門
mocobeta
7
380
Software Supply Chain Attackからクラウド環境を守るためにできること
lhazy
2
250
モダンフロントエンド 開発研修
recruitengineers
PRO
4
610
オートロックマンションなのに、各部屋は施錠なし!? 攻撃者が組織内ネットワークで大暴れする理由 / The Front Door Is Locked, but the Rooms Are Wide Open: Why Attackers Move Freely Inside Enterprise Networks
nttcom
1
1.6k
認知負荷をGemini で溶かす — GKE 基盤「Orbit」における AI エージェントの実践
sansantech
PRO
1
290
Featured
See All Featured
The Cost Of JavaScript in 2023
addyosmani
55
10k
KATA
mclloyd
PRO
35
15k
Optimizing for Happiness
mojombo
378
71k
Become a Pro
speakerdeck
PRO
31
6.2k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
66
57k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.8k
4 Signs Your Business is Dying
shpigford
187
22k
Statistics for Hackers
jakevdp
799
230k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Speed Design
sergeychernyshev
33
2k
Transcript
1 モバイルアプリを 継続的インテグレーションで 継続的に機能強化 CircleCI を導入する理由、メリット 舟木 将彦 (@mfunaki /
@CircleCIJapan ) Principal Developer Advocate
2 はじめに • 質問がある場合はいつでもQ&Aに記載を お願いします。時間が許す限りお答えします。
3 舟木 将彦(@mfunaki) CircleCI合同会社 Principal Developer Advocate ビジネスを支えるソフトウェアが お客様やマーケットに合わせて 継続して進化していくために不可欠な
・CI(継続的インテグレーション) ・CD(継続的デリバリ/デプロイ) の意義や価値、進め方を 技術、ビジネス、経営の言葉で お届けしています。 2000~ ◦ AppleのSiriの前身となるDejima社にて 特許出願を含む製品開発 (車載、家電での音声対話操作) 2003~ ◦ データベースベンダー(Sybase)による買収に伴い 自然言語でのデータベース検索や モバイル環境での対話型検索の開発 2013~ ◦ ERPベンダー(SAP)による買収に伴い ERPのモバイル対応や、 自動車関連(電装パーツ、タイヤ、自動車、 再生可能エネルギー)のイノベーション促進 2018~ ◦ 自動車や小売り、製造、金融といった業界に 対して、 アイデア~コード~プロト~製品/サービス 間の時間差を最小限に 2020~ • アイデア~エンジニアによる実装~アプリやサービス の間を自動化で結び、フィードバックループを高速に 回すため、CircleCI にて Developer Advocate に 自己紹介
4 Agenda CircleCI について + CI/CD について モバイルアプリ開発における CircleCI の特徴
iOS / Android / Flutter (クロスプラットフォーム) デモ よくいただくご質問 Q&A 1 2 3 4 5
5 ⒈CircleCI について + CI/CD について
CircleCIってどんな会社 • 世界最大規模のクラウドCI/CD(継続的インテグレーション/継続的デプロイ)サービス ◦ 22,000以上の組織の 100万以上の開発者が実行する 毎月7億以上のジョブを支えるサービス • ミッション: Manage
change So software teams can innovate faster • 2011年設立、サンフランシスコに本社 2021/05/11 にSeries Fで1億ドルを調達 (これまでに$315Mの投資、$1.7Bの企業価値) • 600+人の社員 (米国、日本、英国、オランダ、フランス+ リモートワーク)
7 CircleCI カスタマー(ソフトウェアに継続性を取り入れている)
8 ビジネスの成長や拡大に必要なのは? 1. LOOK - 現状やあるべき像を理解し 2. THINK - 次の打ち手を考え
3. DO - 行動(結果)を変える
9 ソフトウェアはモノからサービスに ビジネスの成長速度を支えるため、ソフトウェアも成長しつづける必要がある → かつて ソフトウェアはモノだったが、これからのソフトウェアはサービス • モノの品質(企業であれば5年償却) 買った時点が一番価値が高く、競合の出現や市場の進化により価値が低下 →
モデルチェンジやバージョンアップ 開発手法:ウォーターフォール • サービスの品質 常に最高のサービスを使い続ける → 魅力的品質を高めつづける (ペルソナ像やジャーニーを常に見直し ) 開発手法:アジャイル(要件→設計→実装→テストを小さく回す) ウォーターフォールが進化してもアジャイルにはならない
10 サービスとしてのソフトウェア開発のプロセス ソフトウェアの 機能拡張 新しくても (Opsしやすい) 安定的な ソフトウェア 利用者の増加 安定的で
(Devしやすい) 拡張性を備えた 責任範囲をオーバーラップさせる (サイロにしない)
11 継続するビジネスを支えるソフトウェア開発を標準化 プラン コード ビルド テスト リリース デプ ロイ 運用
監視 継続的インテグレーション (CI) 継続的 デプロイ (CD) 自動化できない 非正常系は 自動化できない 自動化できる→継続的であるために自動化すべき ビジネスが継続する限り、ソフトウェアの進化は続く コード追加・修正時は 常にビルド・テスト (最後にまとめてやらな い→早く失敗すれば 早く品質が安定する) サービス停止せず常に リリース/デプロイ (失敗時にはクイックに 修正 / 前バージョンに 戻せる)しくみ 人にしかできない ことは、 細分化した上で できる人が 手を挙げてやる →誰でも見える、 参加できる状態 共有 リポジトリ上 で 常に作業 自動化できる ことは 作業手順の 定義を行い 自動実行させる →依頼しない、 抜け漏れしない 運用・監視しやすい 品質をコードに反映 (必要なデータの取得、 スケーラビリティの 確保)
12 ⒉モバイルアプリ開発における CircleCI の特徴
13 CircleCIはマルチプラットフォーム 組織横断でCI/CDの ノウハウ共有・可視化・改善・ 管理が行える→部分最適ではなく全体最適
14 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • SSH デバッグ • Config as
Code(設定ファイルのコード化), Orb • iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
15 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • SSH デバッグ • Config as
Code(設定ファイルのコード化), Orb • iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
16 大規模なモバイル開発になると、、、 • 開発組織の拡大 • アプリケーションコードの増加 • テストコードの増加 ビルド・テスト実行時間の増加
17 CircleCI でモバイルのビルド・テストを高速化する手段 カスタムリソース 最適なパフォーマンスを発揮し、 スピードを向上するリソースを 選択できます。 (Docker, Linux, macOS,
Windows など) カスタムキャッシュ 制御可能なキーを使用して、実行される すべてのファイルをキャッシュし、ビルドを 高速化します。 並列ジョブ 柔軟で自動化されたプロビジョニングによ り、チームは並列実行を最大限に活用 し、ワークフローが完了するまで待機する ダウンタイムを 短縮できます。 テスト分割 複数のコンテナでテストを自動的に 分割し、RSpec、Cucumber、minitest、 Django、Node などの多くのテストを実行 できます
18 CircleCI でモバイルのビルド・テストを高速化する手段 カスタムリソース 最適なパフォーマンスを発揮し、 スピードを向上するリソースを 選択できます。 (Docker, Linux, macOS,
Windows など) カスタムキャッシュ 制御可能なキーを使用して、実行される すべてのファイルをキャッシュし、ビルドを 高速化します。 並列ジョブ 柔軟で自動化されたプロビジョニングによ り、チームは並列実行を最大限に活用 し、ワークフローが完了するまで待機する ダウンタイムを 短縮できます。 テスト分割 複数のコンテナでテストを自動的に 分割し、RSpec、Cucumber、minitest、 Django、Node などの多くのテストを実行 できます
19 カスタムリソース
20 カスタムリソース
21 カスタムリソース
22 CPU/RAM 使用率(現状 Docker Executor のみ)
23 並列ジョブ 柔軟で自動化されたプロビジョニングにより、チー ムは並列実行を最大限に活用し、ワークフローが 完了するまで待機するダウンタイムを短縮できま す。
24 テストの並列処理 25並列でテストを実行
25 テストの並列処理 1並列で処理した場合 4並列で処理した場合 (テストファイルは名前で分割) 4並列で処理した場合 (テストファイルは過去の動作時間で分割)
26 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • SSH デバッグ • Config as
Code(設定ファイルのコード化), Orbs • iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
27 SSH を使用したデバッグ 一番良いトラブルシューティングの方法は、ジョブの実行中に ジョブ環境にセキュアにアクセスして問題をデバッグすることで す。 ビルド環境に SSH で接続できない場合、開発者が取れる道は ひとつです。開発環境に
CI/CD 環境を再現して、アプリケーショ ン、スタック トレース、およびシステム ログだけを頼りに問題を 正確に特定し、解決しなければなりません。 このようなトラブルシューティングでは、開発者も SRE チームも 膨大な時間を浪費することになります。
28 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • SSH デバッグ • Config as
Code(設定ファイルのコード化), Orbs • iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
29 Config as Code > UI での設定 • 誰が何を変更したか追跡しやすい •
Pull Request などでレビューしやすい • ブランチ毎に環境を切り替えることができる ◦ main ブランチ: Xcode 12 ◦ Xcode 13アップグレード用ブランチ: Xcode 13 ◦ UI だと手動で切り替える必要がある • DRY に記述することができる
30 CircleCI Orbs を活用する
31
32 CircleCI Orb + モバイル https://circleci.com/ja/blog/react-native-cicd/
33 Ruby Orb(fastlane)
34 Android Orb
35 CircleCI Orb https://circleci.com/developer/ja/orbs
36 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • SSH デバッグ • Config as
Code(設定ファイルのコード化), Orbs • iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
37 iOS シミュレーター • macOS VM 上で iOS シミュレーターを起 動することが可能
• XCode UITest(XCUITest)やスナップ ショットテストなど、iOS シミュレーターを用 いたテストを実行することが可能 • 毎回クリーンな状態で起動・テスト 実行ができる
38 Android エミュレーター • Android VM 上で x86 Android エミュレーターを起動することが可能
• Espresso やスナップショットテストなど Android エミュレーターを用いたテストを 実行することが可能 • 毎回クリーンな状態で起動・テスト 実行ができる
39 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • SSH デバッグ • Config as
Code(設定ファイルのコード化), Orbs • iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
40 CircleCIはGitHub/Bitbucketのユーザー管理を利用
41 開発規模が大きくなっていくと、、、 誰かが不安定・時間がかかる テストを入れた いつの間にか開発スピードが遅い
42 開発スピードの課題・改善点を見つける(Insights)
43 開発スピードの課題・改善点を見つける(Insights)
44 Test Insights / Flaky Tests Detection • [GitHub] https://github.com/tadashi0713/circleci-demo-test-insights
• [Insights] https://app.circleci.com/insights/github/tadashi0713/circleci-demo-test-insights
45 Test Insights / Flaky Tests Detection • [GitHub] https://github.com/tadashi0713/circleci-demo-test-insights
• [Insights] https://app.circleci.com/insights/github/tadashi0713/circleci-demo-test-insights
46 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • SSH デバッグ • Config as
Code(設定ファイルのコード化), Orbs • iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
47 CircleCI サポート(support.circleci.com/hc/ja/)
48 モバイル開発でCircleCIが選ばれる理由 • ビルド・テストの高速化 • Config as Code(設定ファイルのコード化), Orbs •
iOS シミュレーター / Android エミュレーター • 管理・可視化のしやすさ(VCS連携・Insights) • 日本語・日本時間帯でのサポート
49 ⒊iOS / Android / Flutter デモ
50 Android デモ • https://github.com/tadashi0713/circleci-demo-android • リソースクラス(Docker, Linux VM) •
Orb ◦ Android Orb(Gradle キャッシュなど) ◦ Ruby Orb(fastlane インストール) • Android エミュレーターを使った Espresso テスト • Firebase App Distribution で配信 • Insights ダッシュボード、SSHデバッグ
51
52 iOS Demo • https://github.com/tadashi0713/circleci-demo-ios • macOS リソースクラス(large) • Orbs
◦ Ruby Orb(fastlane インストール) ◦ macOS Orb to preboot iOS Simulator • iOS シミュレーターを使った XCUITest • fastlane match & Firebase App Distribution で配信 • Insights ダッシュボード、SSH デバッグ
53
54 Flutter / React Native • Flutter ◦ https://github.com/tadashi0713/circleci_flutter_demo ◦
Flutter Orb(SDKインストール、キャッシュなど) ◦ UIテスト、fastlane match、Firebase App Distribution 配信 • React Native ◦ https://github.com/tadashi0713/circleci-reactnative-detox-demo ◦ React Native Orb(インストール、キャッシュなど) ◦ UIテスト、Firebase App Distribution 配信
55 https://circleci.com/ja/blog/flutter-cicd/ https://circleci.com/ja/blog/react-native-cicd/
56 ⒋よくいただくご質問
57 よくいただくご質問 • CircleCI ではシークレットを管理することができますか? • 可能です ◦ 環境変数(プロジェクト・リポジトリ毎) ◦
コンテクスト(プロジェクト横断) ▪ コンテクスト内にあるシークレットの利用者を制限する機能 もあります(制限付きコンテクスト) ◦ 全ては HashiCorp Vault で暗号化されています
58 よくいただくご質問 • Git push 以外にパイプラインをトリガーすることは 可能ですか? • 可能です ◦
Web UI からトリガー ◦ API からトリガー ◦ 定期実行
59 よくいただくご質問 • ワークフローの中で 手動での承認を追加 することは可能ですか? • 可能です ◦ Manual
Approval
60 よくいただくご質問 • デバッグ版などのアプリを配信する機能はありますか? • CircleCI 自体にはその機能はありません。App Store(Test Flight) /
Play Store にある配信機能や、下記サービスと 連携するのをお勧めします ◦ Firebase App Distribution ◦ DeployGate • fastlane, Gradle プラグインなどを利用して連携が可能です
61 よくいただくご質問 • fastlane match 以外の iOS コード署名は行えますか? • 技術的には可能です
◦ 証明書をbase64暗号化→環境変数に保存します ◦ https://m4rr.medium.com/circleci-2-0-and-the-ios-code-sig ning-df434d0086e2 ◦ 複雑になりがちなので、特殊なケースを除き fastlane match を おすすめしています ◦ CircleCI として動作保証・サポートしていないです
62 よくいただくご質問 • サポートされている Xcode バージョンはどれですか? • Xcode のアップデート頻度はどのくらいですか? •
こちらのドキュメントを参考にしてください ◦ https://circleci.com/docs/ja/2.0/xcode-policy/ • SLA のような形では決められていませんが(Xcode/macOSの変更 に大きく依存するため)、通常ベータ版含めXcodeリリースから3営 業日以内に対応されています。
63 よくいただくご質問 • Android 環境は Docker と Linux VM どちらを
使えばいいのですか? • Android エミュレーターを使いたい(Espresso など)場合には Linux VM をお使いください • それ以外に関しては、同じリソースクラス(medium, large)だと価格 やビルド時間はあまり変わらない印象です。 状況に合わせてお好きな方を選んでいただくと 良いと思います。
64 よくいただくご質問 • カスタマイズされた Docker イメージを利用して Android ビルドを行うことは可能ですか? • 可能です
◦ こちらのドキュメントを参考にしてください ▪ https://circleci.com/docs/ja/2.0/custom-images/ ◦ CircleCI では Docker レジストリを用意していないので、Docker Hub などを準備してもらう必要があります。
活用いただいているお客様+事例 https://discuss.circleci.com/t/advent-calendar-2021-circleci/42147
CircleCI を取り上げていただいた書籍や雑誌、同人誌 https://discuss.circleci.com/t/circleci-booth-peaks-2021-12-30/37388 https://discuss.circleci.com/t/circleci-2022-06-4/37369
CircleCIをもっと知りたい!なら 最新の情報なら @CircleCIJapan をフォロー! #CircleCIJp タグつけて情報共有! イベント、セミナー、勉強会の情報なら connpassのCircleCIグループから! https://circleci.connpass.com/ 動画でCircleCIについて学ぶなら
CircleCIチャンネルを登録! (日本語プレイリストもあり )
68 ⒌Q&A
Thank you. 69