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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Masahiko Funaki(舟木 将彦)
September 16, 2022
Technology
30
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(舟木 将彦)
202605-進化し続けるUIに追従.pdf
mfunaki
0
22
mablの要素選択を完全理解〜壊れないテストを作るための技術選択
mfunaki
0
46
知って得するmabl活用Tips〜「こんな時どうする?」実践機能ガイド
mfunaki
0
58
20260422-mablで変わるテスト自動化_品質_速さ_コストの三角形を崩す5つのアプローチ.pdf
mfunaki
0
84
手順(プロンプト)だけで テストを自動作成~テスト作成エージェントを使いこなすための 実践プロンプト術
mfunaki
0
150
「見た目」と「意味」をAIが判定 ~ビジュアルアサーションで変わる テストの守備範囲~
mfunaki
0
68
イントラネットの社内アプリからローカル開発環境まで〜mabl Linkで実現する閉域網アプリケーションのセキュアなテスト実行
mfunaki
0
47
フルスタックQAへの第一歩。Web UIとAPIテストを統合した品質保証戦略
mfunaki
0
110
mabl新機能解説:プロンプトによるテスト生成とローカル/クラウド実行のシームレスな統合
mfunaki
0
110
Other Decks in Technology
See All in Technology
AIのReact習熟度を測る
uhyo
2
570
SONiCの統計情報を取得したい
sonic
0
170
2026 TECHFRESH 畢業分享會 - AI-Native 重塑軟體工程與虛擬講師
line_developers_tw
PRO
0
1k
20260619 私の日常業務での生成 AI 活用
masaruogura
1
210
MCP Appsを作ってみよう
iwamot
PRO
4
650
AIソロプレナー時代に2ヶ月で20人増員した事業創造会社の開発組織の話
miyatakoji
0
660
作って終わりにしない タイミーのセマンティックレイヤー育成の現在地
chanyou0311
4
2.4k
LayerXにおけるセキュリティ管理の現在地と次の一手
tosho
0
190
日本 Fintech 未来予測レポート 2027〜2028年(手動編集版)
8maki
0
2.3k
MUSUBI 田中裕一『AIと共に行う「しごとのリデザイン」- スモールバックオフィス編』AI Ops Lab #4
musubi
0
180
エンジニアリング戦略の作り方 / Crafting Engineering Strategy
iwashi86
21
6.9k
脆弱性対応、どこで線を引くか
rymiyamoto
1
390
Featured
See All Featured
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
210
Statistics for Hackers
jakevdp
799
230k
Designing for Performance
lara
611
70k
WCS-LA-2024
lcolladotor
0
630
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Optimising Largest Contentful Paint
csswizardry
37
3.7k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
170
Designing for humans not robots
tammielis
254
26k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
160
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