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
Xcode8 で開発はどうかわったのか
Search
Toshihiro Morimoto
November 20, 2016
Technology
10
5.9k
Xcode8 で開発はどうかわったのか
iOSオールスターズ2
https://eventdots.jp/event/602872
Toshihiro Morimoto
November 20, 2016
Tweet
Share
More Decks by Toshihiro Morimoto
See All by Toshihiro Morimoto
魅せるデバッグ技術
dealforest
4
1.5k
LLDB の世界からみた Swift
dealforest
4
5k
Xcode で快適なデバッグライフを追い求める
dealforest
29
22k
Intrducing debug in WWDC2016
dealforest
3
750
swift build と Xcode での Build の違い
dealforest
3
2k
RIP Xcode Plugin 🙏
dealforest
0
4.7k
Introducing Xcode Editor Extension
dealforest
2
4.5k
Introducing Anglerfish
dealforest
2
3.3k
音声ガイダンスを導入した話
dealforest
0
3.8k
Other Decks in Technology
See All in Technology
JAWS-UG20250116_iOSアプリエンジニアがAWSreInventに行ってきた(真面目編)
totokit4
0
130
カップ麺の待ち時間(3分)でわかるPartyRockアップデート
ryutakondo
0
130
KMP with Crashlytics
sansantech
PRO
0
240
#TRG24 / David Cuartielles / Post Open Source
tarugoconf
0
560
30分でわかるデータ分析者のためのディメンショナルモデリング #datatechjp / 20250120
kazaneya
PRO
22
4.7k
.NET AspireでAzure Functionsやクラウドリソースを統合する
tsubakimoto_s
0
180
【NGK2025S】動物園(PINTO_model_zoo)に遊びに行こう
kazuhitotakahashi
0
190
30分でわかる「リスクから学ぶKubernetesコンテナセキュリティ」/30min-k8s-container-sec
mochizuki875
3
430
Copilotの力を実感!3ヶ月間の生成AI研修の試行錯誤&成功事例をご紹介。果たして得たものとは・・?
ktc_shiori
0
330
SpiderPlus & Co. エンジニア向け会社紹介資料
spiderplus_cb
0
830
あなたの知らないクラフトビールの世界
miura55
0
110
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
570
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.4k
Making the Leap to Tech Lead
cromwellryan
133
9k
The MySQL Ecosystem @ GitHub 2015
samlambert
250
12k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
3
170
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Building Adaptive Systems
keathley
38
2.4k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
330
21k
Designing Experiences People Love
moore
139
23k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Transcript
2016/11/20 iOSΦʔϧελʔζ2 @dealforest Toshihiro Morimoto Xcode8 Ͱ։ൃͲ͏͔Θͬͨͷ͔
ࣗݾհ
Works
ຊͷΞδΣϯμ • Visual Debugging • App Signing • Xcode Plugin/Extension
• ͓·͚ - TSan and Static Analysis
ࠓ͠ͳ͍ • iOS • Storyboard • Swift • Xcode 7.3.1
-> Xcode 8 ͷҠߦ
Visual Debugging
Visual Debugging • View Debugging • FPS Performance Gauge •
Memory Graph Debugging
View Debugging
View Debugging • ϘλϯΛԡ͔ͯ͠Βͷ࣮ߦ͕ 70% ͘ͳͬͨ • transform, blur ͞Ε͍ͯͯਖ਼֬ʹϨϯμϦϯά͞ΕΔ
• ΫϥεఆٛʹඈΔ • ΞυϨεͰϑΟϧλϦϯάͰ͖Δ • ݱࡏͷ AutoLayout ͷ੍Λ֬ೝͰ͖Δ
࣮ࡍʹ༗ޮʹ AutoLayout ͷ֬ೝ͕ग़དྷΔ
FPS Performance Gauge
FPS Performance Gauge
Memory Graph Debugging
͜Ε͕ͱͯͭͳ͘ศརʂʂʂ
Memory Leak Λ ݟ͚ͭΔͱ͖ʹྗΛൃش͠·͢ʂ
͜Ε͚ͩͷͨΊʹ Xcode 8 ʹҠߦͨ͠ͱݴͬͯɹɹ աݴͰ͋Γ·ͤΜ
ͳʹΑΓோΊ͍ͯΔͱ ςϯγϣϯ͕͕͋Γ·͢
! Λλοϓ͢Ε leak ͍ͯ͠Δ object Λදࣔ
410 - Visual Debugging with Xcode
App Signing
Signing Certificate per Mac
ؾܰʹ Reset Λԡͯ͠͠·͏ͱ
͋Εʁʁ ϏϧυͰ͖ͳ͘ͳͬͨΜ͚ͩͲ…
((ƅЧƅ)); ŜƄŞŲƄſ
Signing Certificate per Mac
Signing Certificate per Mac
Signing in Xcode
Signing in Xcode
None
Signing in Xcode
Xcode 7
Xcode 8
Apple ͕ఏএ͢Δ Best Practice
Development • Use automatic • Add all developers to team
• Use the capabilities tab
Manual • Don’t set CODE_SIGN_IDENTITY • Use the new general
tab UI • Use the capabilities tab • Migrate to automatic
401 - What’s New in Xcode App Signing
͍͍͜ͱ͔ͬΓʹฉ͑͜Δʂʂ
·ɺͦΜͳΘ͚ͳ͍Ͱ͢ΑͶ
fastlane, Enterprise ͕ བྷΜͰ͘ΔͱΊΜͲ͍͘͞ʂʂ
ΊΜͲ͍͘͞ϙΠϯτ • Team ͕ҟͳΔ - Automatic Signing ͩͱෳνʔϜΛ·ͨ͛ͳ͍ • BUNDLE
IDENTIFIER ͕ҟͳΔ - Company ΞΧϯτͰ Automatic Signing Ͱɹ ϏϧυͰ͖Δ - Automatic Signing Ͱ archive ͕Ͱ͖ͳ͍
͔͠͠։ൃ࣌ Automatic Signing Λ͍͍ͨʂ
Ͳ͏͢Δͷ͔
Enterprise ରԠํ๏ -खಈϏϧυ- 1. ֘͢Δ Cert, Provisioning Profile ΛΠϯετʔϧ 2.
Customised Signing Λ͏ 3. ༻ͷ Configuration(scheme) ʹ Provisioning Profile Λબ 4. archive -> export
Enterprise ରԠํ๏ -fastlane- खಈϏϧυͱಉ͡Α͏ͳ͜ͱΛ͢Ε͍͍ 1. gym Ͱ࣮ߦ͢Δલʹ fastlane-plugin- update_project_codesigning Λͬͯ
Customised Signing ʹมߋ 2. Cert, Provisioning Profile ͷࢦఆΛ xcconfig ʹॻ͍ͯ ͓͘ 3. ༻ͷ Configuration ʹ xcconfig Λࢦఆ͓ͯ͘͠ 4. gym Ͱ࣮ߦ͢Δޙʹ Automatic Signing ʹมߋ
xcconfig ͷαϯϓϧ CODE_SIGN_IDENTITY = 1Q5231V7YW // CODE_SIGN_IDENTITY = iPhone Distribution:
dealforest (1Q5231V7YW) PROVISIONING_PROFILE_SPECIFIER = PROVISIONING_PROFILE_app = f3f8281b- a115-4529-8dnd-60e111d92fae PROVISIONING_PROFILE = $(PROVISIONING_PROFILE_$ (WRAPPER_EXTENSION))
͜ͷลΓ͏গ͠ݟ͕ͨ·Ε ϒϩάʹॻ͜͏͔ͳͱࢥ͏ͬͯ·͢
Xcode Plugin/Extension
Xcode Plugin • ඇެࣜͰ Xcode ͷ Plugin Λ࡞Δ͜ͱ͕Ͱ͖·ͨ͠ • Alcatraz
ͱ͍͏ Package Manager ͋Γ·ͨ͠ • Xcode 8 ʹͳ͔ͬͯΒެࣜͰ Xcode Extension ͕ αϙʔτ͞Ε͑ͳ͘ͳΓ·ͨ͠ (ؤுΕ͑Δ)
Xcode 8 Ͱ Xcode Plugin Λ ͏ํ๏
ࢍ൱྆͋Δͱࢥ͍·͕͢
Xcode ͕ Apple ʹΑͬͯॺ໊͞ΕΔ Α͏ʹͳͬͨͷͰॺ໊Λ֎͍͍ͤ
Xcode ͷॺ໊ͷ֎͠ํ • steakknife/unsign ΛͬͯࣗྗͰॺ໊Λ֎͢ https://gist.github.com/dealforest/ c5a5362005bce1a4280c34d18a5bc893 • fpg1503/MakeXcodeGr8Again Λ͏
྆ํͱ͍ͬͯΔ͜ͱಉ͡Ͱ ॺ໊Λ֎͍ͯ͠Δ͚ͩͰ͢
͋ͱ Xcode Plugin ʹ ͍͍ͨ Xcode ͷ UUID ΛՃ͢Δ
UUID ͷՃํ๏ $ find ~/Library/Application\ Support/Developer/ Shared/Xcode/Plug-ins -name Info.plist -maxdepth
3 | xargs -I{} defaults write {} DVTPlugInCompatibilityUUIDs -array-add `defaults read /Applications/Xcode.app/Contents/Info DVTPlugInCompatibilityUUID`
Xcode Extension • Xcode 8 ͔Βਖ਼ࣜʹαϙʔτ • ݱঢ় Plugin ͱҟͳΓͰ͖Δ͜ͱݶఆ͞Ε͍ͯΔ
• ΞϓϦؒΛ XPC Ͱ௨৴࣮͍ͯͯ͠͠Δ
Xcode 8 beta ͕ग़ͨ࣌ʹ গ͠Γ্͕͍͕ͬͯͨ...
ࠓ Xcode Extension ͷ͜ͱΛ ݴ͍ͬͯΔਓ୭͍ͳ͍
ͱ͍͏Θ͚Ͱ Xcode Extension ͷ ݱঢ়ʹ͍͓ͭͯ͠͠·͢
Ͳ͏͢Ε͑ΔΑ͏ʹͳΔͷ͔ • Xcode Extension ʹରԠ͍ͯ͠Δ Mac App ΛΠϯ ετʔϧ͢Ε͑ΔΑ͏ʹͳΔ •
App Store or GitHub or DMG Download
ͱ͍͏Θ͚Ͱ App Store ΛݟͯΈ·͠ΐ͏
App Store
(ͭд⊂)ŠƄŢŠƄŢ
App Store
App Store
ʢʀƅЧƅʣ …ʂʁ
ҧ͍͕ͳʹͳ͍ͩͱ…
Xcode Extension Ͱ͋Δ͜ͱ͕ Θ͔Βͳ͍…
ΧςΰϦ͕͋ΔΘ͚Ͱͳ͍͠…
ͭΒ͍…
Sierra ͩͱ͋Δͷ͔… ͱ୶͍ظΛͯ͠·͢
ͦΜͳ͋ͳͨͷͨΊʹ
tib/awesome-xcode-extensions
࣮ࡍʹಈ࡞Ͱ͖Δঢ়ଶʹ ͳ͍ͬͯΔ͔ͷ֬ೝ
System Preference -> Extensions
͓·͚ - TSan and Static Analysis
Thread Sanitizer
Diagnostics Ͱ༗ޮʹ͢Δ
Diagnostics Ͱ༗ޮʹ͢Δ
ͨͩ͑͠Δঢ়گݶΒΕ͍ͯ·͢
None
Static Analysis
Product -> Analyze
412 - Thread Sanitizer and Static Analysis
·ͱΊ Xcode 8 ʹͳ͔ͬͯΒՃ͞Εͨػೳͨ͘͞Μ͋Γ·͢ɻ ຊͦͷҰ෦Λհ͠·ͨ͠ɻ iOS 10 ͱҟͳΓࠓ͔ΒͰɺ͙͢ʹͰ͑Δͷ͕ͨ ͘͞Μ͋Γ·͢ɻ
গ͠ͰσόοάϥΠϑ͕ շదʹͳΕ͍Ͱ͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠