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
6k
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
リーダブルテストコード 〜メンテナンスしやすい テストコードを作成する方法を考える〜 #DevSumi #DevSumiB / Readable test code
nihonbuson
11
7.2k
株式会社EventHub・エンジニア採用資料
eventhub
0
4.3k
ビジネスモデリング道場 目的と背景
masuda220
PRO
9
520
利用終了したドメイン名の最強終活〜観測環境を育てて、分析・供養している件〜 / The Ultimate End-of-Life Preparation for Discontinued Domain Names
nttcom
2
190
現場で役立つAPIデザイン
nagix
33
12k
スタートアップ1人目QAエンジニアが QAチームを立ち上げ、“個”からチーム、 そして“組織”に成長するまで / How to set up QA team at reiwatravel
mii3king
2
1.5k
Data-centric AI入門第6章:Data-centric AIの実践例
x_ttyszk
1
400
Amazon S3 Tablesと外部分析基盤連携について / Amazon S3 Tables and External Data Analytics Platform
nttcom
0
130
全文検索+セマンティックランカー+LLMの自然文検索サ−ビスで得られた知見
segavvy
2
100
データの品質が低いと何が困るのか
kzykmyzw
6
1.1k
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
24
7.1k
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
100
18k
Automating Front-end Workflow
addyosmani
1368
200k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
Into the Great Unknown - MozCon
thekraken
35
1.6k
Building Applications with DynamoDB
mza
93
6.2k
Building a Modern Day E-commerce SEO Strategy
aleyda
38
7.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
28
9.3k
Mobile First: as difficult as doing things right
swwweet
223
9.3k
Building Your Own Lightsaber
phodgson
104
6.2k
KATA
mclloyd
29
14k
Building Adaptive Systems
keathley
40
2.4k
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 ͱҟͳΓࠓ͔ΒͰɺ͙͢ʹͰ͑Δͷ͕ͨ ͘͞Μ͋Γ·͢ɻ
গ͠ͰσόοάϥΠϑ͕ շదʹͳΕ͍Ͱ͢
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠