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
Xcode Cloud事例紹介
Search
Yuya Hirayama
April 26, 2024
1
430
Xcode Cloud事例紹介
potatotips #87 2024.04.26
Yuya Hirayama
April 26, 2024
Tweet
Share
More Decks by Yuya Hirayama
See All by Yuya Hirayama
iOSアプリを安全にローカライズする
hiragram
1
400
iPhoneXのTrueDepthカメラでVRMを動かす
hiragram
2
14k
生きた仕様書としてのUIカタログアプリ運用 構想編
hiragram
1
1.4k
waiwai-swiftc-lazy.pdf
hiragram
0
240
Protocol Oriented WebAPI Abstraction
hiragram
0
340
Vapor cloud + Codegen
hiragram
0
59
VaporアプリからFCM経由でプッシュ通知を送る
hiragram
0
130
アプリ内でWebAPIを抽象化するためのフレームワークAbstractionKitの紹介
hiragram
1
3.6k
Firebase Realtime Databaseを良さげに抽象化する
hiragram
2
1.4k
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
132
33k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
28
2.2k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
180
Visualization
eitanlees
146
15k
The Power of CSS Pseudo Elements
geoffreycrofte
74
5.4k
Practical Orchestrator
shlominoach
186
10k
Making Projects Easy
brettharned
116
6k
Documentation Writing (for coders)
carmenintech
67
4.5k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
45
2.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Bash Introduction
62gerente
610
210k
Transcript
Xcode Cloudをチームに導入して 何がどうなったか 2024/04/26 potatotips #87 @hiragram
- @hiragram - iOSアプリエンジニア - 2024/02~ akippa株式会社 🆕 - 駐車場シェアリングサービスのアプリ開発
- 唯一の正社員iOS開発者 - あと1日で試用期間が終わる 自己紹介
社内向けビルドのTestFlightへの配信を自動化
社内向けビルドのTestFlightへの配信を自動化(1) - 従来は、開発者が手元でビルドしてDeployGateに配信していた。 - 事前にテスターの端末 IDを取得してプロファイルに追加しておく必要があり、新しいメンバーが入っ たときに作業が生じる - 手オペなので、ブランチ間違いとか未コミットの変更が混じるとか、そういうのを防ぎにくい /気づきに
くい - Xcode CloudはTestFlightとの連携が素晴らしく、post actionとして追加するだけで 簡単にテスターにアプリを配布できる - 以下のタイミングでXcode Cloudから社内向けビルドをTestFlightに配信するように した。 - mainブランチが更新されたとき (Branch changesトリガー) - featureブランチで開発者が手動で社内配信ジョブを実行したとき
社内向けビルドのTestFlightへの配信を自動化(2) - Xcode CloudからTestFlightに配信すると、ブランチ 名やタグ名でビルドグループが作られる。 - 複数のプロジェクトが並行して進む状況で、テスト対象のビル ドを見つけるのが簡単になっている。 - mainブランチにマージされる前に関係者が動作確認をする手
間が格段に減った
ストア申請用ビルドの自動化
ストア申請用ビルドの自動化 - 従来は、開発者の手元でリリース版をアーカイブしてAppStoreConnectにアップ ロードしていた。 - 手オペで間違いが起こらないよう、別のエンジニアやマネージャーが集まって画面共有しながらヨシ していた。 - v1.2.3-RC というフォーマットでタグを打つと、リリース版のジョブが起動して
AppStoreConnectのアップロードまで自動で済むようにした。 - RCはRelease Candidate。なんとなくXcodeに倣った。 - 審査落ちたら修正して v1.2.3-RC2, RC3, … と新しいタグが打たれていく。
これによってGitHub上でリリースを整理できる - タグ起点による申請フローを整備したことで、申請ごとに必ずタグが打たれることが 担保された。 - 従来はリリースしたあとに開発者が手でタグを打っていて、打ち間違えたり忘れたりすることが多 かった。 - リポジトリのRelease機能で、1つ前のバージョンのタグとの差分を自動で計算して リリースノートを生成する事ができる。
None
None
None
開発版を別アプリとしてインストールできるようにした
開発版を別アプリとしてインストールできるようにした(1) - 従来はすべてのビルドがストア版と同じバンドルIDで配信されており、常に上書きイ ンストールする形であった。 - 社内向けビルドのバンドルIDを変更し、ストア版とは別アプリという扱いにすること で、2つを同時にインストールして、動作を比べるような検証をしやすくした。
- ちなみに、従来は各環境(dev/stg/prod/…)ごとに configurationが分かれていて、アプリが変更されるたびにそ れぞれの環境向けのビルドをDeployGateに乗せていた。 - 接続先を切り替えられるデバッグ用メニューをアプリ内に設 け、社内向けビルドは全環境対応の1つで済むようにした。 開発版を別アプリとしてインストールできるようにした(2)
- ただし、バンドルIDがストア版と異なるため以下の制約がある - ストア版のバンドルIDしか想定していない現状の APIサーバーではプッシュ通知が届かない - アプリ内課金ができない - apple-app-site-associationに対応が必要 -
現状、これらに関わる開発要件はそこまで多くないため、必要に応じてストア版と同 じIDでデバッグメニューを持ったビルドの配信ジョブを手動でスタートする運用をし ている。 開発版を別アプリとしてインストールできるようにした(3)
おわり - akippaのiOS版のCIをXcode Cloud上に構築した。 - TestFlightとの組み合わせが素晴らしく、プロダクトに関わる多くの人の手間を削減 した。 - ついでに、CocoaPods/Carthageを廃止してSwiftPMに一本化できた。 -
Xcode Cloud上でスナップショットテストも実行できたらいいなと思う。Apple Silicon インスタンスとか出ないかな。