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
スクショから始まるデバッグについて
Search
Toshihiro Morimoto
September 27, 2014
Technology
2
3.7k
スクショから始まるデバッグについて
yidev#16 の発表です
Toshihiro Morimoto
September 27, 2014
Tweet
Share
More Decks by Toshihiro Morimoto
See All by Toshihiro Morimoto
Xcode8 で開発はどうかわったのか
dealforest
10
6.2k
魅せるデバッグ技術
dealforest
4
1.5k
LLDB の世界からみた Swift
dealforest
4
5.2k
Xcode で快適なデバッグライフを追い求める
dealforest
29
23k
Intrducing debug in WWDC2016
dealforest
3
780
swift build と Xcode での Build の違い
dealforest
3
2.1k
RIP Xcode Plugin 🙏
dealforest
0
4.8k
Introducing Xcode Editor Extension
dealforest
2
4.6k
Introducing Anglerfish
dealforest
2
3.4k
Other Decks in Technology
See All in Technology
クラウドとリアルの融合により、製造業はどう変わるのか?〜クラスメソッドの製造業への取組と共に〜
hamadakoji
0
450
可観測性は開発環境から、開発環境にもオブザーバビリティ導入のススメ
layerx
PRO
4
1.7k
個人でデジタル庁の デザインシステムをVue.jsで 作っている話
nishiharatsubasa
3
5.2k
Dify on AWS 環境構築手順
yosse95ai
0
160
dbtとAIエージェントを組み合わせて見えたデータ調査の新しい形
10xinc
6
1.4k
CREが作る自己解決サイクルSlackワークフローに組み込んだAIによる社内ヘルプデスク改革 #cre_meetup
bengo4com
0
360
webpack依存からの脱却!快適フロントエンド開発をViteで実現する #vuefes
bengo4com
4
3.6k
AWS DMS で SQL Server を移行してみた/aws-dms-sql-server-migration
emiki
0
250
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
1.5k
デザインとエンジニアリングの架け橋を目指す OPTiMのデザインシステム「nucleus」の軌跡と広げ方
optim
0
120
Kubernetes self-healing of your workload
hwchiu
1
600
GraphRAG グラフDBを使ったLLM生成(自作漫画DBを用いた具体例を用いて)
seaturt1e
1
160
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
36
7k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Designing for humans not robots
tammielis
254
26k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
24k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Statistics for Hackers
jakevdp
799
220k
What's in a price? How to price your products and services
michaelherold
246
12k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.6k
How to Ace a Technical Interview
jacobian
280
24k
Designing for Performance
lara
610
69k
4 Signs Your Business is Dying
shpigford
186
22k
Transcript
εΫγϣ͔Β࢝·Δσόοάʹ͍ͭͯ 2014/09/27 yidev #16 @dealforest Toshihro Morimoto
ࣗݾհ http://about.me/dealforest ! ! iOS App / Web Application(perl, ruby)
@dealforest Toshihro Morimoto
ͦͦ σόοά͢Δ࣌ͲΜͳͱ͖ʁ
ҙਤͨ͠ڍಈͱҧ͏ͱ͖ʂʂ
։ൃͷαΠΫϧ 1. iPhone Simulator 2. ࣮ػ 3. CI 4. Adhock
Ͱ 5. TestFlight ͰϦϦʔεલʹΠϯετʔϧ 6. AppStore ͔ΒΠϯετʔϧ
։ൃͷαΠΫϧ 1. iPhone Simulator 2. ࣮ػ 3. CI 4. Adhock
Ͱ 5. TestFlight ͰϦϦʔεલʹΠϯετʔϧ 6. AppStore ͔ΒΠϯετʔϧ
։ൃͷαΠΫϧ 1. iPhone Simulator 2. ࣮ػ 3. CI 4. Adhock
Ͱ 5. TestFlight ͰϦϦʔεલʹΠϯετʔϧ 6. AppStore ͔ΒΠϯετʔϧ  қ
σόοάͷαΠΫϧ
σόοάͷαΠΫϧ 1. σόοάͷͨΊͷใΛݩʹͯ͠ όάͷݪҼΛਪଌ͢Δ
σόοάͷαΠΫϧ 1. σόοάͷͨΊͷใΛݩʹͯ͠ όάͷݪҼΛਪଌ͢Δ 2. όάΛ࠶ݱͤ͞Δ
σόοάͷαΠΫϧ 1. σόοάͷͨΊͷใΛݩʹͯ͠ όάͷݪҼΛਪଌ͢Δ 2. όάΛ࠶ݱͤ͞Δ 3. Let’s debug…debug…debug!!!
όάͷݪҼΛਪଌ͠Α͏ʹ ใ͕Կͳ͍ͱצͰௐΔ͔͠ͳ͍
Δؾ͕͓͖ͳ͍…
ͨ࣌͠ σόοάͷͨΊͷใ͕ ͞Βʹগͳ͍ʂʂʂ
ͨ࣌͠ͷσόοάͷΈ
ͨ࣌͠ͷσόοάͷΈ • print debug  break point ʹΑΔσόο ά͕΄΅ෆՄೳ
ͨ࣌͠ͷσόοάͷΈ • print debug  break point ʹΑΔσόο ά͕΄΅ෆՄೳ •
ใʹґଘ͍ͯ͠Δ߹ɺঢ়گΛ ਪଌͯ͠σόοά͠ͳ͍ͱ͍͚ͳ͍
ͨ࣌͠ͷσόοάͷΈ • print debug  break point ʹΑΔσόο ά͕΄΅ෆՄೳ •
ใʹґଘ͍ͯ͠Δ߹ɺঢ়گΛ ਪଌͯ͠σόοά͠ͳ͍ͱ͍͚ͳ͍ • όά͕࠶ݱՄೳͳͰσόοάͰ͖ ΔΘ͚Ͱͳ͍
ͭΒ͍…
ͱ͍͑ ใ͕গͳ͍͚Ͳόά͕ ࠶ݱͰ͖ΕͲ͏ʹ͔ͳΔʂ
ͨͩʹґଘͨ͠ΓͰ ࠶ݱ͠ͳ͔ͬͨΓ͢Δͷ͕ݱ࣮
ͨ͠ࡍʹͲ͏ͬͯ σόοάͷͨΊͷใΛऩू͢Δ͔
Crash Report ͷऩू
Crash Report ͷऩू • Crash Report ղੳαʔϏεΛָ͑ʹूΊΕΔ
Crash Report ͷऩू • Crash Report ղੳαʔϏεΛָ͑ʹूΊΕΔ • Clashlitics, Bugsnag
ͳͲ
Crash Report ͷऩू • Crash Report ղੳαʔϏεΛָ͑ʹूΊΕΔ • Clashlitics, Bugsnag
ͳͲ • ͱ͍͑ΞϓϦ͕ Crash ͠ͳ͍ͱू·Β͍ͷ͕ ։ൃऀͱͯ͠ Crash ͯ͠΄͘͠ͳ͍
iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू
iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework 
IAP Λར༻͍ͯ͠Δ߹ɺ ଆʹ͔͠ใ͕ͳ͍ͷͰ͋Εͱͯॿ͔Δ
iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework 
IAP Λར༻͍ͯ͠Δ߹ɺ ଆʹ͔͠ใ͕ͳ͍ͷͰ͋Εͱͯॿ͔Δ • Ͳͧ͜ͷ SDK ͕ Crash ͢ΔͷͰ Try-Catch ͯ͠ Crash ͠ͳ͍Α͏ʹͯ͠ใΛूΊΔ
iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework 
IAP Λར༻͍ͯ͠Δ߹ɺ ଆʹ͔͠ใ͕ͳ͍ͷͰ͋Εͱͯॿ͔Δ • Ͳͧ͜ͷ SDK ͕ Crash ͢ΔͷͰ Try-Catch ͯ͠ Crash ͠ͳ͍Α͏ʹͯ͠ใΛूΊΔ • Crash Report ղੳαʔϏεͰҙͷλΠϛϯάͰϨ ϙʔτΛૹ৴Ͱ͖Δػೳ͕͋Ε؆୯ʹूΊΕΔ
iOS ͷ Framework Ͱൃੜͨ͠ NSError, NSException ͷऩू • Social.framework 
IAP Λར༻͍ͯ͠Δ߹ɺ ଆʹ͔͠ใ͕ͳ͍ͷͰ͋Εͱͯॿ͔Δ • Ͳͧ͜ͷ SDK ͕ Crash ͢ΔͷͰ Try-Catch ͯ͠ Crash ͠ͳ͍Α͏ʹͯ͠ใΛूΊΔ • Crash Report ղੳαʔϏεͰҙͷλΠϛϯάͰϨ ϙʔτΛૹ৴Ͱ͖Δػೳ͕͋Ε؆୯ʹूΊΕΔ • ։ൃऀ͕໌ࣔతʹઃఆ͢ΔͷͰͲ͜ͰΤϥʔ͕ى͖ ͯΔ͔͕Ѳ͍͢͠
εΫγϣΛࡱͬͯڞ༗
εΫγϣΛࡱͬͯڞ༗ • σβΠφʔͷσβΠϯͱҧ͏
εΫγϣΛࡱͬͯڞ༗ • σβΠφʔͷσβΠϯͱҧ͏ • Ϣʔβʔ͕ҙਤͨ͠ڍಈͱζϨ͕ੜͯ͡Δ
εΫγϣΛࡱͬͯڞ༗ • σβΠφʔͷσβΠϯͱҧ͏ • Ϣʔβʔ͕ҙਤͨ͠ڍಈͱζϨ͕ੜͯ͡Δ • σʔλͷෆ߹͕ى͖ͯΔ
εΫγϣΛࡱͬͯڞ༗ • σβΠφʔͷσβΠϯͱҧ͏ • Ϣʔβʔ͕ҙਤͨ͠ڍಈͱζϨ͕ੜͯ͡Δ • σʔλͷෆ߹͕ى͖ͯΔ • Τϥʔϝοηʔδ(ίʔυ)ΛΈͤΔͨΊ
ͦͷଞ
ͦͷଞ • ࣾͰޱ಄νϟοτͰݴΘΕΔ
ͦͷଞ • ࣾͰޱ಄νϟοτͰݴΘΕΔ • Ϣʔβʔ͔Βͷ͍߹Θͤ(Helpshiftͱ͔)
ͦͷଞ • ࣾͰޱ಄νϟοτͰݴΘΕΔ • Ϣʔβʔ͔Βͷ͍߹Θͤ(Helpshiftͱ͔) • AppStore ͷϨϏϡʔ
ͦͷଞ • ࣾͰޱ಄νϟοτͰݴΘΕΔ • Ϣʔβʔ͔Βͷ͍߹Θͤ(Helpshiftͱ͔) • AppStore ͷϨϏϡʔ • SNS
ͰΤΰαʔν
ݱঢ়͜Μͳײ͔͡ͳͱ
ͯ͞ɺ͔͜͜Β͕ຊͰ͢
͋ͳͨ Twitter ࣾͰ ΞϓϦΛ࡞͍ͯ͠·͢
◦◦͕όάͬͯΜ͚ͩͲͬͯ ͜ΜͳεΫγϣΛૹΒΕ͖ͯ·ͨ͠
͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍
͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ)
͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ) • API ଆ͕ݪҼʁ ͦΕͱΞϓϦଆʁ
͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ) • API ଆ͕ݪҼʁ ͦΕͱΞϓϦଆʁ •
͍·Έ͑ͯΔ Cell Λߏஙͯ͠ Δσʔλ͕Έ͍ͨ
͜Ε͔Βਪଌ͠ͳ͍ͱ͍͚ͳ͍ • ͓·͑ɺͩΕʁ (Identifier తͳҙຯͰ) • API ଆ͕ݪҼʁ ͦΕͱΞϓϦଆʁ •
͍·Έ͑ͯΔ Cell Λߏஙͯ͠ Δσʔλ͕Έ͍ͨ • ͜Ε࠶ݱͰ͖Δ͔ͳ…
ਪଌͯ͠ใΛूΊͳ͍ͱ͍͚ͳ͍
ͭΒ͍…
ͦͦϢʔβʔͷͨΊʹ ද͍ࣔͯ͠Δը໘ͳΜ͔ͩΒ σόοάʹඞཁͳใ΄΅ͳ͍
σόοάͷαΠΫϧ 1. όάͷݪҼਪଌ 2. όάͷ࠶ݱ 3. debug…debug…debug!!!
σόοάͷαΠΫϧ 1. όάͷݪҼਪଌ͢ΔͨΊͷใΛը૾ ͔ΒಡऔΔ 2. όάͷݪҼਪଌ 3. όάͷ࠶ݱ 4. debug…debug…debug!!!
εΫγϣ͔ΒۭؾΛಡΜͰ Կσόοά͢Δ͕ ຊʹΊΜͲ͏͍͘͞ʂʂʂʂ
print debug  break point Λ ͑ΔͳΒ؆୯ʹ ใΛूΊΕΔͷʹ…
ʂʂʂʂʂʂʂʂʂʂʂʂʂʂʂ
ͦΕͳΒεΫγϣΛࡱͬͨ࣌ʹ σόοάʹඞཁͳใΛ Ұॹʹը૾ͱͯ͠ग़ྗ͢Ε͍͍ʂ
! DFTDebugScreenshot http://github.com/dealforest/DFTDebugScreenshot
Install pod ‘DFTDebugScreenshot’
Usage
DEMO
Ԡ༻
Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱͰ͖Δ
Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱͰ͖Δ •
UIWebView Ͱ࡞͍ͬͯΔΞϓϦͰɺjs ͷใ(ม , ϒϥβͷใ)Λग़ྗ͢Δ͜ͱͰ͖Δ
Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱͰ͖Δ •
UIWebView Ͱ࡞͍ͬͯΔΞϓϦͰɺjs ͷใ(ม , ϒϥβͷใ)Λग़ྗ͢Δ͜ͱͰ͖Δ • completionBlock ΛࠐΜͰ͓͘ͱεΫγϣΛࡱΔͱ εΫγϣͱσόοΫใΛ Slack  S3 ϝʔϧͰ ࣗಈతʹૹ৴͜ͱͰ͖Δ
Ԡ༻ • AutoLayout Ͱ UIView ʹઃఆ͍ͯ͠Δ Constraints Λ ग़ྗ͢Δ͜ͱͰ͖Δ •
UIWebView Ͱ࡞͍ͬͯΔΞϓϦͰɺjs ͷใ(ม , ϒϥβͷใ)Λग़ྗ͢Δ͜ͱͰ͖Δ • completionBlock ΛࠐΜͰ͓͘ͱεΫγϣΛࡱΔͱ εΫγϣͱσόοΫใΛ Slack  S3 ϝʔϧͰ ࣗಈతʹૹ৴͜ͱͰ͖Δ • ಛఆͷϢʔβʔ͚ͩσόοάใΛग़ྗ͢Δ͜ͱ Մೳ
TODO
TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰऔಘͰ͖ΔΑ͏ͳ interface ΛՃ͢ΔͭΓ
TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰऔಘͰ͖ΔΑ͏ͳ interface ΛՃ͢ΔͭΓ •
dealforest/DFTAwesomePrint Λ࡞͍ͬͯͯ debugObject Λ colorize ͯ͠ը૾ʹ͢ΔͭΓ
TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰऔಘͰ͖ΔΑ͏ͳ interface ΛՃ͢ΔͭΓ •
dealforest/DFTAwesomePrint Λ࡞͍ͬͯͯ debugObject Λ colorize ͯ͠ը૾ʹ͢ΔͭΓ • AccessToken  cookie Λग़ྗͨ࣌͠ͷͨΊʹ҉߸Խ ͍ͨ͠(QRίʔυͱ͔ʁ)
TODO • ݱࡏදࣔ͞Ε͍ͯΔ UIViewController ͷ debugObject Λ͍ͭͰऔಘͰ͖ΔΑ͏ͳ interface ΛՃ͢ΔͭΓ •
dealforest/DFTAwesomePrint Λ࡞͍ͬͯͯ debugObject Λ colorize ͯ͠ը૾ʹ͢ΔͭΓ • AccessToken  cookie Λग़ྗͨ࣌͠ͷͨΊʹ҉߸Խ ͍ͨ͠(QRίʔυͱ͔ʁ) • σόοΫ༻ը૾ͷσβΠϯ୭͔͍͍ײ͡ʹͯ͠w
·ͱΊ εΫγϣ͔Βσόοάʹ ඞཁͳใΛਪଌͤͣʹ ͙͢ʹݪҼಛఆʹͱΓ͔͔ΕΔ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠