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
36
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」だけではバグは見つからない ~テストに必要な「見つけるAI」を分離させる戦略~
mfunaki
0
140
自動化したのに回らない テスト運用の壁―AI時代の品質責任と生産性
mfunaki
0
390
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
1
150
202605-進化し続けるUIに追従.pdf
mfunaki
0
49
mablの要素選択を完全理解〜壊れないテストを作るための技術選択
mfunaki
0
74
知って得するmabl活用Tips〜「こんな時どうする?」実践機能ガイド
mfunaki
0
83
20260422-mablで変わるテスト自動化_品質_速さ_コストの三角形を崩す5つのアプローチ.pdf
mfunaki
0
130
手順(プロンプト)だけで テストを自動作成~テスト作成エージェントを使いこなすための 実践プロンプト術
mfunaki
0
200
「見た目」と「意味」をAIが判定 ~ビジュアルアサーションで変わる テストの守備範囲~
mfunaki
0
100
Other Decks in Technology
See All in Technology
LanceDB入門
mocobeta
9
660
Oracle MCP Servers Explained
thatjeffsmith
0
370
Flutter × BLE Centralを自前Pluginで実装する設計パターン - MethodChannel / EventChannelで作る双方向ブリッジの実践 / Building Custom Flutter BLE Central Plugins: Bidirectional Bridging with Method & Event Channels
bitkey
PRO
0
220
作って理解するCoding Agent 〜フレームワークに頼らないピュア Python での実装〜
takapy
3
940
AI開発に用いられるHPC技術について
gpuunite_official
0
240
2027年のMetricKit
kantacky
0
150
私がブラウザを自作したくなった理由
supurazako
1
280
強化学習「理論」入門
enakai00
3
3.6k
도구에서 동료까지: 10년차 AI 스타트업의 AI 적응기
inureyes
PRO
1
320
NANDでも描画したい!
nichica906
2
470
MulticaとPi Coding Agentで、小規模OSSを30本同時運用した流れ
eiei114
0
140
AI for Science時代を切り開く、政府の次世代HPC戦略の展望
gpuunite_official
0
190
Featured
See All Featured
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
3
470
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
Bridging the Design Gap: How Collaborative Modelling removes blockers to flow between stakeholders and teams @FastFlow conf
baasie
0
660
Typedesign – Prime Four
hannesfritz
42
3.1k
Side Projects
sachag
455
43k
It's Worth the Effort
3n
188
29k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
My Coaching Mixtape
mlcsv
0
260
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
Speed Design
sergeychernyshev
33
2k
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
250
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