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
iOSアプリを社内配信する場合の工夫
Search
ANDPAD inc
March 24, 2021
Programming
1
2.4k
iOSアプリを社内配信する場合の工夫
2021/03/24 ANDPAD TechLive #8 iOS/AndroidアプリエンジニアTalk!!
ANDPAD inc
March 24, 2021
Tweet
Share
More Decks by ANDPAD inc
See All by ANDPAD inc
マルチプロダクト開発の現場でAWS Security Hubを1年以上運用して得た教訓
andpad
0
37
rails stats で紐解く ANDPAD のイマを支える技術たち
andpad
1
340
本編では話さない Zig の話
andpad
2
210
"noncopyable types" の使いどころについて考えてみた
andpad
0
330
ANDPAD黒板のオフラインモード機能 リリースまでの軌跡
andpad
0
200
アンドパッドのマルチプロダクト戦略を支える SRE
andpad
1
210
Introduction of Cybersecurity with OSS (RDRC2024)
andpad
1
66
開発チームとともに進めるインフラセキュリティの継続的な改善
andpad
2
93
ANDPAD and Ruby
andpad
1
730
Other Decks in Programming
See All in Programming
Fibonacci Function Gallery - Part 2
philipschwarz
PRO
0
210
20241217 競争力強化とビジネス価値創出への挑戦:モノタロウのシステムモダナイズ、開発組織の進化と今後の展望
monotaro
PRO
0
290
watsonx.ai Dojo #6 継続的なAIアプリ開発と展開
oniak3ibm
PRO
0
170
Jaspr Dart Web Framework 박제창 @Devfest 2024
itsmedreamwalker
0
150
php-conference-japan-2024
tasuku43
0
430
shadcn/uiを使ってReactでの開発を加速させよう!
lef237
0
300
オニオンアーキテクチャを使って、 Unityと.NETでコードを共有する
soi013
0
370
DevinとCursorから学ぶAIエージェントメモリーの設計とMoatの考え方
itarutomy
0
150
『改訂新版 良いコード/悪いコードで学ぶ設計入門』活用方法−爆速でスキルアップする!効果的な学習アプローチ / effective-learning-of-good-code
minodriven
28
4.2k
ある日突然あなたが管理しているサーバーにDDoSが来たらどうなるでしょう?知ってるようで何も知らなかったDDoS攻撃と対策 #phpcon.2024
akase244
2
7.7k
Androidアプリの One Experience リリース
nein37
0
1.2k
週次リリースを実現するための グローバルアプリ開発
tera_ny
1
1.2k
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
No one is an island. Learnings from fostering a developers community.
thoeni
19
3.1k
Statistics for Hackers
jakevdp
797
220k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
27
1.5k
Designing for humans not robots
tammielis
250
25k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
3
360
Building Your Own Lightsaber
phodgson
104
6.2k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
How GitHub (no longer) Works
holman
312
140k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
How STYLIGHT went responsive
nonsquared
96
5.3k
Scaling GitHub
holman
459
140k
Transcript
iOS アプリを 素早く社内配布するための⼯夫 株式会社ANDPAD ⼩林由佳 @yukkobay 2021-03-24 ANDPAD TechLive #8
Related keywords iOS TestFlight Firebase AppDistribution Fastlane 1
⾃⼰紹介 : Yuka Kobayashi ANDPAD iOS エンジニア ⼊社5 ヶ⽉くらい 元気です
2
この発表で話すこと 1 回のビルドでTestFlight, Firebase AppDistribution の両⽅にデプ ロイする⽅法 .xcarchive と .ipa
と .app の違い simulator ⽤のアプリを配布する⽅法 話さないこと ビルド時間を短くするための設定やコードの書き⽅ 3
リリース前に社内でたくさん触る is ⼤事 フィードバックサイクルを短くすることにより品質を⾼める 作りかけの状態でも気付けることはたくさんある 開発に直接関わってない⼈達にも触ってほしい 営業、カスタマーサクセス、etc... 気軽に配布・インストールできる環境がほしいッ 4
TestFlight vs Firebase AppDistribution TestFlight ( 内部テスター ) Firebase AppDistribution
端末台数制限 30 台/1user 年間100 台※ ユーザー数制限 100 ⼈ 制限なし デプロイにかかる時間 処理待ちがある 即時 Export Method app-store adhoc ※ ADP のAdHoc 配信上の制限 結論 : どっちにもデプロイしたい 5
ということは、 2 回ビルドする? 各配布⽅法ごとに.ipa が必要 ExportMethod が違うだけなら、ビルドは 1 回で⼤丈夫 1.
archive (ビルド)して .xcarchive を作成 2. method を指定してexport し、 .xcarchive から .ipa を作る × 2 回 export はビルドするより短い時間で実⾏可能 3. .ipa をそれぞれにアップロードする 6
.xcarchive/.ipa/.app の関係 .app = 実⾏可能なアプリ .xcarchive = .app + dSYM
.ipa = 配布可能なアプリ .app にCodeSign したもの(をzip に固め ている)
fastlane で export する⽅法 # Fastfile archive_path = build_ios_app( #
or gym skip_package_ipa: true # export を skip する ) xcodebuild( export_archive: true, archive_path: archive_path, export_path: ipa_path, # この path に出⼒される export_options_plist: "./exportOptions-testflight.plist" # !! これが重要 ) # export_options_plist を変えて再度 export する
exportOptionsPlist で設定できること ExportMethod (app-store, ad-hoc, development) ProvisioningProfile Bitcode, iCloud 接続先などの設定
詳しくはターミナルで xcodebuild -h を実⾏ できないこと BuildSettings の変更 Bundle ID の変更
Working from home! ⼿元に検証したい実機がないことも多い 画⾯サイズ、古いOS バージョン、iPad 、etc…… アプリエンジニア以外がsimulator でビルドするのは難しい
simulator 向けにアプリ配布してみよう simulator 向けにビルドされた .app ファイルはsimulator にインスト ールが可能 任意のsimulator にドラッグ&ドロップするだけ
GoogleDrive やSlack など、任意の場所にアップロードして受け渡し が簡単
fastlane で .app を作る⽅法 # Fastfile SCHEME = "MyApp" xcodebuild(
scheme: SCHEME, configuration: "Debug", sdk: "iphonesimulator", # !! ここが重要 derivedDataPath: derived_data_path # 指定したパスに出⼒されるので ) # DerivedData の中から .app を掘り出す app_path = "../#{derived_data_path}/Build/Products/Debug-iphonesimulator/#{SCHEME}.app"
さいごに 誰でも簡単にアプリを触れる環境は、プロダクトを育てる 最適なワークフローはまだまだ模索中 ユーザー理解、プロダクト理解を⼤事にする⽂化
Appendix: simulator 向けにうまくビルドできない場合 BuildSettings にアーキテクチャの設定が必要かも "EXCLUDED_ARCHS[sdk=iphonesimulator*]" = arm64; # Podfile
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings["EXCLUDED_ARCHS[sdk=iphonesimulator*]"] = "arm64" end end