Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Introducing import Framework
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Toshihiro Morimoto
May 16, 2015
Technology
2.4k
3
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Introducing import Framework
2015/05/16 yidev#19
Toshihiro Morimoto
May 16, 2015
More Decks by Toshihiro Morimoto
See All by Toshihiro Morimoto
Xcode8 で開発はどうかわったのか
dealforest
10
6.6k
魅せるデバッグ技術
dealforest
4
1.6k
LLDB の世界からみた Swift
dealforest
4
5.6k
Xcode で快適なデバッグライフを追い求める
dealforest
29
25k
Intrducing debug in WWDC2016
dealforest
3
840
swift build と Xcode での Build の違い
dealforest
3
2.2k
RIP Xcode Plugin 🙏
dealforest
0
4.9k
Introducing Xcode Editor Extension
dealforest
2
4.7k
Introducing Anglerfish
dealforest
2
3.6k
Other Decks in Technology
See All in Technology
ADKで始める業務改善 - AIエージェント開発時の考えと設計
harappa80
2
180
Genieを崇めよ
kameitomohiro
0
160
Claude Codeを「使うほど育つ」AI秘書にするノウハウ
minorun365
PRO
31
27k
映像変換サーバーなしで端末内でHLSを生成してライブ配信
hikarusato
0
120
Minecraft JavaのMODをSwiftで作る
1mash0
0
180
開発投資の期待値を上げるプロダクトロードマップづくり ~プロダクトエンジニアが越境して事業を伸ばす~
kekekenta
1
210
アクセスキーこわい やめかたと漏らさない工夫
sassssan68
1
390
What the customer really needed
kawaguti
PRO
3
210
EventBridge に「合流」はない ― サーバーレスのワークフローを育てるということ / No Join in EventBridge
yusukeshimizu
2
110
TinyGo 開発サイクルを高速化する:Go で作るエミュレータ入門
zozotech
PRO
1
750
事業課題から技術的負債に向き合う
sansantech
PRO
2
1.9k
登壇の自信を奪う3匹のオバケ / 3 Ghosts That Rob You of Your Confidence in Public Speaking
pauli
9
990
Featured
See All Featured
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
3k
Exploring anti-patterns in Rails
aemeredith
4
510
We Have a Design System, Now What?
morganepeng
55
8.3k
Side Projects
sachag
456
43k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
How to Ace a Technical Interview
jacobian
281
24k
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Fireside Chat
paigeccino
43
4k
The browser strikes back
jonoalderson
0
1.7k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Transcript
Introducing @import Framework 2015/05/16 yidev#19 @dealforest Toshihro Morimoto
ࣗݾհ
Crying DFTDebugScreenshot cocoapods-browser Tuna
https://github.com/dealforest/Tuna
by AlcatrazTour
ࠓ Xcode 6.3 ͔ΒՃ͞Εͨ ػೳʹ͍ͭͯͷ͓Ͱ͢
Xcode 6 Release Notes
Έͳ͞Μͬͯ·͔͢ʁ
͍ํ
(lldb) p @import Foundation (lldb) p @import UIKit
͜Ε·ͫͰศརͰ͢
Ͱ͖Δ͜ͱ • Framework Ͱఆٛ͞Εͨఆ Enum ΛࢀরͰ͖Δ • ؔఆ͔ٛΒ࣮ߦ࣌ʹ҉తʹΩϟε τͯ͘͠ΕΔ
(lldb) po [[NSString alloc] initWithData:data encoding:4]
(lldb) p @import Foundation (lldb) po [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]
͞Α͏ͳΒ ϚδοΫφϯόʔ
(lldb) po (CGRect)[self.view frame]
(lldb) p @import UIKit (lldb) po [self.view frame]
͞Α͏ͳΒ use of undeclared identifier 'CGRect'
͕ͩ ੈͷதͦΜͳʹ͘ͳ͔ͬͨ…
@import ͢Δͱ ࠶ىಈ͢Δ·Ͱ༗ޮ
Μʁʁʁ
͜͜Ͱצͷ͍͍ਓ ؾ͍ͮͨͰ͠ΐ͏
͜Ε… Run ͢Δʹຖճ ࣮ߦ͠ͳ͍ͱ͍͚ͳ͍ͷʁ
ͦ͏Ͱ͢ ͠ͳ͍ͱ͍͚ͳ͍ΜͰ͢
/(^o^)\ Φϫλ
ࠓͦΕΛ Ͳ͏ʹ͔͓ͨ͠Ͱ͢
(ॏཁࣄ߲) ྦͳ͠ͰޠΕͳ͍ͳ͍ͷͰ ௐ͍ͯͬͨϓϩηεΛશͯࡽ͠·͢
1. lldbinit Ͱ࣮ߦ͢Δ lldbinit ʹॻ͚ಡΈࠐ·ΕΔ λΠϛϯάͰ ධՁ͞ΕΔ͔Β͍͚Δͣ
~/.lldbinit p @import Foundation p @import UIKit
ͬͪΌμϝʂʂʂ ઈରʂʂʂʂ
Δͱޙչ͔͠͠·ͤΜʂ ॻ͍ͯΔਓଈࠁফ͠·͠ΐ͏ʂ
@import ͷಛੑΛࢥ͍ฦ͍ͯͩ͘͠͞ ͍͜ͰҰಡΈࠐ·ΕΔͱ ೋͱಡΈࠐ·ΕΔ͜ͱ͕ͳ͍Ͱ͢
lldbinit ͕ಡΈࠐ·Εͨ࣌ʹධՁͯ͠ ͠·͏ͱɺͦͷධՁ͞Εͨ༰ϒ ϨΠΫͨ͠ࡍʹҾ͖ܧ͛ͳ͍ (ڍಈ͔Βਪଌ͢Δͱ͜Μͳײ͡)
/(^o^)\ Φϫλ
2. LLDB ͷίϚϯυΛ࡞ͯ͠ Ԇ࣮ߦ͢Δ
lldbinit Ͱ python ͷίʔυΛ import ͯ͠ɺpython ଆͰԆධՁͯ͠Ε @import Ͱ͖ΔͷͰͳ͍͔
import_framework.py #!/usr/bin/env python import lldb import time import threading def
import_framework(): for framework in [ 'Foundation', 'UIKit' ]: lldb.debugger.HandleCommand('p @import ' + framework) def __lldb_init_module(debugger,internal_dict): threading.Timer(3, import_framework).start() time.sleep(5) print"load ok" .lldbinit command script import import_framework.py
ࢼͨ͠ݶΓ Timer ͕ൃՐ͠ͳ͍Ͱ͢ sleep ͯ͠ແࢹ͞ΕΔ
͜Ε (1) ͱಉ༷ʹ ͙ʹޙչͯ͠͠·͏ͷͰ Ίͨ΄͏͕͍͍Ͱ͢
/(^o^)\ Φϫλ
ͭ·Γ LLDB ͕࣮ߦͰ͖Δ ४උ͕ͬͨޙʹ @import Λ͠ ͳ͍ͱ͍͚ͳ͍ʂ
3. Xcode Plugin ͳΒ͍͚ΔͷͰ…
DebuggerLLDB.ideplugin ͱ͍͏ͷΛ ͍͚͑ͦ͏…
͜Εͱͯ ͭΒ͍ಓͷΓͰͨ͠
ۤͷʹΑ͏͘ LLDB ىಈ࣌ʹධՁ͢Δ͜ͱʹ ޭ͠·ͨ͠
Tuna v0.9.4 Ͱαϙʔτ͍ͯ͠ΔͷͰ Πϯετʔϧ͢Δͱ ຖճೖྗ͢Δඞཁ͕ͳ͘ͳΓ·͢
·ͱΊ Tuna v0.9.4 Λ͑ࣗಈతʹ Foundation ͱ UIKit ͕ import ͞Εͨ
LLDB ϥΠϑΛ͓͘ Δ͜ͱ͕Ͱ͖·͢ʂ
·ͱΊ LLDB ͷىಈޙʹίϚϯυΛ࣮ߦ͢Δͷ धཁ͕͋Γͦ͏ͳͷͰ(͓ͦΒ͘ศར)ɺผ Plugin ʹͯ͠ఏڙ͢Δ͔͠Ε·ͤΜ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠