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
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
小規模 SRE チームで支える、 Atlantis で実現するインフラ管理のセルフサービス化
andpad
1
48
Go コードベースの構成と AI コンテキスト定義
andpad
0
200
「もっと正確に、もっと効率的に」ANDPADの写真書き込み機能における、 現場の声を形にしたエンハンス
andpad
0
970
複数チーム並行開発下でのコード移行アプローチ ~手動 Codemod から「生成AI 活用」への進化
andpad
0
280
Building the Real World with Ruby
andpad
0
69
Catch Up: Go Style Guide Update
andpad
0
330
OSS開発者という働き方
andpad
5
1.9k
Vue・React マルチプロダクト開発を支える Vite
andpad
0
190
プロダクト開発を支えるデータ利活用:中央集権から「民主化」までの軌跡
andpad
0
280
Other Decks in Programming
See All in Programming
受け入れテスト駆動開発(ATDD)×AI駆動開発 AI時代のATDDの取り組み方を考える
kztakasaki
2
500
2026/02/04 AIキャラクター人格の実装論 口 調の模倣から、コンテキスト制御による 『思想』と『行動』の創発へ
sr2mg4
0
660
AIとペアプロして処理時間を97%削減した話 #pyconshizu
kashewnuts
1
180
登壇資料を作る時に意識していること #登壇資料_findy
konifar
4
2.1k
Oxlint JS plugins
kazupon
1
1.2k
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
340
今更考える「単一責任原則」 / Thinking about the Single Responsibility Principle
tooppoo
3
1.2k
TROCCOで実現するkintone+BigQueryによるオペレーション改善
ssxota
0
120
Claude Codeと2つの巻き戻し戦略 / Two Rewind Strategies with Claude Code
fruitriin
0
200
Agent Skills Workshop - AIへの頼み方を仕組み化する
gotalab555
13
7.6k
CDIの誤解しがちな仕様とその対処TIPS
futokiyo
0
140
SourceGeneratorのマーカー属性問題について
htkym
0
110
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
エンジニアに許された特別な時間の終わり
watany
106
240k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
460
The Language of Interfaces
destraynor
162
26k
How to train your dragon (web standard)
notwaldorf
97
6.5k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.3k
Building an army of robots
kneath
306
46k
Six Lessons from altMBA
skipperchong
29
4.2k
Bash Introduction
62gerente
615
210k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
60
42k
My Coaching Mixtape
mlcsv
0
63
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