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
510
Xcode Cloud事例紹介
potatotips #87 2024.04.26
Yuya Hirayama
April 26, 2024
Tweet
Share
More Decks by Yuya Hirayama
See All by Yuya Hirayama
わいわいClaude Code アイスブレイクLT iOSDC2025 Day2 アンカンファレンス
hiragram
0
130
LLMエージェント時代に適応した開発フロー
hiragram
2
690
Deep Dive into ~/.claude/projects
hiragram
14
21k
iOSアプリ開発もLLMで自動運転する
hiragram
7
2.7k
iOSアプリの定期リリースとその自動化@potatotips#90
hiragram
1
460
iOSアプリを安全にローカライズする
hiragram
1
460
iPhoneXのTrueDepthカメラでVRMを動かす
hiragram
2
14k
生きた仕様書としてのUIカタログアプリ運用 構想編
hiragram
1
1.4k
waiwai-swiftc-lazy.pdf
hiragram
0
310
Featured
See All Featured
Balancing Empowerment & Direction
lara
5
700
4 Signs Your Business is Dying
shpigford
185
22k
YesSQL, Process and Tooling at Scale
rocio
173
15k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.5k
Faster Mobile Websites
deanohume
310
31k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Context Engineering - Making Every Token Count
addyosmani
8
300
Designing Experiences People Love
moore
142
24k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
140
34k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
GraphQLとの向き合い方2022年版
quramy
49
14k
GitHub's CSS Performance
jonrohan
1032
470k
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 インスタンスとか出ないかな。