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
480
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アプリ開発もLLMで自動運転する
hiragram
6
2.3k
iOSアプリの定期リリースとその自動化@potatotips#90
hiragram
1
430
iOSアプリを安全にローカライズする
hiragram
1
430
iPhoneXのTrueDepthカメラでVRMを動かす
hiragram
2
14k
生きた仕様書としてのUIカタログアプリ運用 構想編
hiragram
1
1.4k
waiwai-swiftc-lazy.pdf
hiragram
0
290
Protocol Oriented WebAPI Abstraction
hiragram
0
370
Vapor cloud + Codegen
hiragram
0
69
VaporアプリからFCM経由でプッシュ通知を送る
hiragram
0
150
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
349
20k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Into the Great Unknown - MozCon
thekraken
39
1.8k
Rails Girls Zürich Keynote
gr2m
94
14k
Designing for humans not robots
tammielis
253
25k
The Language of Interfaces
destraynor
158
25k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Git: the NoSQL Database
bkeepers
PRO
430
65k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
Agile that works and the tools we love
rasmusluckow
329
21k
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 インスタンスとか出ないかな。