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.9k
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
建設DXを支えるANDPAD: 2025年のセキュリティの取り組みと卒業したいセキュリティ
andpad
0
65
小規模 SRE チームで支える、 Atlantis で実現するインフラ管理のセルフサービス化
andpad
1
57
Go コードベースの構成と AI コンテキスト定義
andpad
1
210
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
1k
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
290
Building the Real World with Ruby
andpad
0
73
Catch Up: Go Style Guide Update
andpad
0
340
OSS開発者という働き方
andpad
5
1.9k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
200
Other Decks in Programming
See All in Programming
Agentic AI: Evolution oder Revolution
mobilelarson
PRO
0
190
go directiveを最新にしすぎないで欲しい話──あるいは、Go 1.26からgo mod initで作られるgo directiveの値が変わる話 / Go 1.26 リリースパーティ
arthur1
2
570
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1.1k
Ruby and LLM Ecosystem 2nd
koic
1
1.2k
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
800
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
1
190
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
8.2k
ふつうの Rubyist、ちいさなデバイス、大きな一年
bash0c7
0
1.1k
技術検証結果の整理と解析をAIに任せよう!
keisukeikeda
0
130
The free-lunch guide to idea circularity
hollycummins
0
290
nuget-server - あなたが必要だったNuGetサーバー
kekyo
PRO
0
280
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
150
Featured
See All Featured
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.2k
Un-Boring Meetings
codingconduct
0
230
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
95
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
160
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
67
37k
Done Done
chrislema
186
16k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
61k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
80
Navigating Weather and Climate Data
rabernat
0
140
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
140
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